{"version":3,"file":"mermaid.esm.min.mjs","mappings":"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,EAAE,IAAIC,EAAI,CAAC,EAAE,IAAIC,EAAI,CAAC,EAAE,IAAIC,EAAI,CAAC,EAAE,IAAIC,EAAI,CAAC,EAAE,IAAIC,EAAI,CAAC,EAAE,IAAIC,EAAI,CAAC,EAAE,IAAIC,EAAI,CAAC,EAAE,IAAIC,EAAI,CAAC,EAAE,IAAIC,EAAI,CAAC,EAAE,IAAIC,EAAI,CAAC,EAAE,IAAIC,EAAI,CAAC,EAAE,IAAIC,EAAI,CAAC,EAAE,IAAIC,EAAI,CAAC,EAAE,IAAIC,EAAI,CAAC,EAAE,IAAIC,EAAI,CAAC,EAAE,IAAIC,EAAI,CAAC,EAAE,IAAIC,EAAI,CAAC,EAAE,IAAIC,EAAI,CAAC,EAAE,IAAIC,EAAI,CAAC,EAAE,IAAIC,EAAI,CAAC,EAAE,IAAIC,EAAI,CAAC,EAAE,IAAIC,EAAI,CAAC,EAAE,IAAIC,EAAI,CAAC,EAAE,IAAIC,EAAI,CAAC,EAAE,IAAIC,EAAI,CAAC,EAAE,IAAIC,EAAI,CAAC,EAAE,IAAIC,EAAI,CAAC,EAAE,IAAIyL,EAAI,CAAC,EAAE,IAAIC,EAAI,CAAC,EAAE,IAAIC,EAAI,CAAC,EAAE,IAAIC,EAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,EAAI,CAAC,EAAE,IAAIC,EAAI,CAAC,EAAE,IAAIC,EAAI,CAAC,EAAE,IAAIC,EAAI,CAAC,GAAG,GAAG,GAAG,GAAG,IAAIC,EAAI,CAAC,EAAE,IAAIC,EAAI,CAAC,EAAE,IAAIC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,IAAIC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,IAAIC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,GAAI,CAAC,EAAE,IAAIC,GAAI,CAAC,EAAE,KAAKC,GAAI,CAAC,EAAE,KAAKC,GAAI,CAAC,EAAE,KAAKC,GAAI,CAAC,EAAE,KAAKC,GAAI,CAAC,EAAE,KAAKC,GAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAIC,GAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAIC,GAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAI,CAAC,GAAG,GAAG,IAAIC,GAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,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G,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAA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,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG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","sources":["webpack://mermaid/./src/diagrams/class/parser/classDiagram.jison","webpack://mermaid/./src/diagrams/er/parser/erDiagram.jison","webpack://mermaid/./src/diagrams/flowchart/parser/flow.jison","webpack://mermaid/./src/diagrams/gantt/parser/gantt.jison","webpack://mermaid/./src/diagrams/git/parser/gitGraph.jison","webpack://mermaid/./src/diagrams/info/parser/info.jison","webpack://mermaid/./src/diagrams/pie/parser/pie.jison","webpack://mermaid/./src/diagrams/requirement/parser/requirementDiagram.jison","webpack://mermaid/./src/diagrams/sequence/parser/sequenceDiagram.jison","webpack://mermaid/./src/diagrams/state/parser/stateDiagram.jison","webpack://mermaid/./src/diagrams/user-journey/parser/journey.jison","webpack://mermaid/./node_modules/@braintree/sanitize-url/dist/index.js","webpack://mermaid/./src/dagre-wrapper/intersect/intersect-node.js","webpack://mermaid/./src/logger.js","webpack://mermaid/./node_modules/d3/node_modules/d3-array/src/max.js","webpack://mermaid/./node_modules/d3/node_modules/d3-array/src/min.js","webpack://mermaid/./node_modules/d3-axis/src/identity.js","webpack://mermaid/./node_modules/d3-axis/src/axis.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selector.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/array.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selectorAll.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/matcher.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selection/selectChild.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selection/selectChildren.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selection/sparse.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selection/enter.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/constant.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selection/data.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selection/sort.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/namespaces.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/namespace.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selection/attr.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/window.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selection/style.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selection/property.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selection/classed.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selection/text.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selection/html.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selection/raise.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selection/lower.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/creator.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selection/insert.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selection/remove.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selection/clone.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selection/on.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selection/dispatch.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selection/index.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selection/select.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selection/selectAll.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selection/filter.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selection/exit.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selection/join.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selection/merge.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selection/order.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selection/call.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selection/nodes.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selection/node.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selection/size.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selection/empty.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selection/each.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selection/append.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selection/datum.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selection/iterator.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-dispatch/src/dispatch.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-timer/src/timer.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-timer/src/timeout.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-transition/src/transition/schedule.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-interpolate/src/number.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-interpolate/src/transform/decompose.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-interpolate/src/transform/parse.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-interpolate/src/transform/index.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-transition/src/transition/tween.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-color/src/define.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-color/src/color.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-interpolate/src/basis.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-interpolate/src/constant.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-interpolate/src/color.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-interpolate/src/rgb.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-interpolate/src/basisClosed.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-interpolate/src/string.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-transition/src/transition/interpolate.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-transition/src/transition/attr.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-transition/src/transition/attrTween.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-transition/src/transition/delay.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-transition/src/transition/duration.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-transition/src/transition/ease.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-transition/src/transition/on.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-transition/src/transition/selection.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-transition/src/transition/style.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-transition/src/transition/styleTween.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-transition/src/transition/textTween.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-transition/src/transition/index.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-transition/src/transition/select.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-transition/src/transition/selectAll.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-transition/src/transition/filter.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-transition/src/transition/merge.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-transition/src/transition/transition.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-transition/src/transition/text.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-transition/src/transition/remove.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-transition/src/transition/easeVarying.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-transition/src/transition/end.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-transition/src/selection/transition.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-ease/src/cubic.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-transition/src/selection/index.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-transition/src/selection/interrupt.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-transition/src/interrupt.js","webpack://mermaid/./node_modules/d3-brush/src/brush.js","webpack://mermaid/./node_modules/d3/node_modules/d3-color/src/define.js","webpack://mermaid/./node_modules/d3/node_modules/d3-color/src/color.js","webpack://mermaid/./node_modules/d3/node_modules/d3-color/src/math.js","webpack://mermaid/./node_modules/d3/node_modules/d3-color/src/lab.js","webpack://mermaid/./node_modules/d3/node_modules/d3-interpolate/src/constant.js","webpack://mermaid/./node_modules/d3/node_modules/d3-interpolate/src/color.js","webpack://mermaid/./node_modules/d3/node_modules/d3-interpolate/src/hcl.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-array/src/ticks.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-array/src/ascending.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-array/src/bisector.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-array/src/bisect.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-array/src/number.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-color/src/define.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-color/src/color.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-interpolate/src/basis.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-interpolate/src/constant.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-interpolate/src/color.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-interpolate/src/rgb.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-interpolate/src/array.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-interpolate/src/date.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-interpolate/src/number.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-interpolate/src/object.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-interpolate/src/basisClosed.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-interpolate/src/string.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-interpolate/src/numberArray.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-interpolate/src/value.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-interpolate/src/round.js","webpack://mermaid/./node_modules/d3-scale/src/number.js","webpack://mermaid/./node_modules/d3-scale/src/continuous.js","webpack://mermaid/./node_modules/d3-scale/src/constant.js","webpack://mermaid/./node_modules/d3-scale/src/init.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-format/src/formatSpecifier.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-format/src/formatPrefixAuto.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-format/src/formatDecimal.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-format/src/exponent.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-format/src/formatRounded.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-format/src/formatTypes.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-format/src/identity.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-format/src/locale.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-format/src/defaultLocale.js","webpack://mermaid/./node_modules/d3-scale/src/linear.js","webpack://mermaid/./node_modules/d3-scale/src/tickFormat.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-format/src/precisionPrefix.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-format/src/precisionRound.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-format/src/precisionFixed.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-format/src/formatGroup.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-format/src/formatNumerals.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-format/src/formatTrim.js","webpack://mermaid/./node_modules/internmap/src/index.js","webpack://mermaid/./node_modules/d3-scale/src/ordinal.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-time/src/duration.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-time/src/interval.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-time/src/millisecond.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-time/src/second.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-time/src/minute.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-time/src/hour.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-time/src/day.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-time/src/week.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-time/src/month.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-time/src/year.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-time/src/utcMinute.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-time/src/utcHour.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-time/src/utcDay.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-time/src/utcWeek.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-time/src/utcMonth.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-time/src/utcYear.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-time/src/ticks.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-time-format/src/locale.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-time-format/src/defaultLocale.js","webpack://mermaid/./node_modules/d3-scale/src/time.js","webpack://mermaid/./node_modules/d3-scale/src/nice.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selector.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/array.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selectorAll.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/matcher.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selection/selectChild.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selection/selectChildren.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selection/sparse.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selection/enter.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/constant.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selection/data.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selection/sort.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/namespaces.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/namespace.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selection/attr.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/window.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selection/style.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selection/property.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selection/classed.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selection/text.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selection/html.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selection/raise.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selection/lower.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/creator.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selection/insert.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selection/remove.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selection/clone.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selection/on.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selection/dispatch.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selection/index.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selection/select.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selection/selectAll.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selection/filter.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selection/exit.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selection/join.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selection/merge.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selection/order.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selection/call.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selection/nodes.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selection/node.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selection/size.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selection/empty.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selection/each.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selection/append.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selection/datum.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selection/iterator.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/select.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selectAll.js","webpack://mermaid/./node_modules/d3-shape/node_modules/d3-path/src/path.js","webpack://mermaid/./node_modules/d3-shape/src/constant.js","webpack://mermaid/./node_modules/d3-shape/src/math.js","webpack://mermaid/./node_modules/d3-shape/src/arc.js","webpack://mermaid/./node_modules/d3-shape/src/array.js","webpack://mermaid/./node_modules/d3-shape/src/curve/linear.js","webpack://mermaid/./node_modules/d3-shape/src/point.js","webpack://mermaid/./node_modules/d3-shape/src/line.js","webpack://mermaid/./node_modules/d3-shape/src/descending.js","webpack://mermaid/./node_modules/d3-shape/src/identity.js","webpack://mermaid/./node_modules/d3-shape/src/noop.js","webpack://mermaid/./node_modules/d3-shape/src/curve/basis.js","webpack://mermaid/./node_modules/d3-shape/src/curve/basisClosed.js","webpack://mermaid/./node_modules/d3-shape/src/curve/basisOpen.js","webpack://mermaid/./node_modules/d3-shape/src/curve/linearClosed.js","webpack://mermaid/./node_modules/d3-shape/src/curve/monotone.js","webpack://mermaid/./node_modules/d3-shape/src/curve/natural.js","webpack://mermaid/./node_modules/d3-shape/src/curve/step.js","webpack://mermaid/./node_modules/d3/node_modules/d3-time/src/interval.js","webpack://mermaid/./node_modules/d3/node_modules/d3-time/src/duration.js","webpack://mermaid/./node_modules/d3/node_modules/d3-time/src/utcWeek.js","webpack://mermaid/./node_modules/d3/node_modules/d3-time/src/utcDay.js","webpack://mermaid/./node_modules/d3/node_modules/d3-time/src/week.js","webpack://mermaid/./node_modules/d3/node_modules/d3-time/src/day.js","webpack://mermaid/./node_modules/d3/node_modules/d3-time/src/year.js","webpack://mermaid/./node_modules/d3/node_modules/d3-time/src/utcYear.js","webpack://mermaid/./node_modules/d3/node_modules/d3-time-format/src/locale.js","webpack://mermaid/./node_modules/d3/node_modules/d3-time-format/src/defaultLocale.js","webpack://mermaid/./node_modules/d3/node_modules/d3-dispatch/src/dispatch.js","webpack://mermaid/./node_modules/d3/node_modules/d3-timer/src/timer.js","webpack://mermaid/./node_modules/d3/node_modules/d3-timer/src/timeout.js","webpack://mermaid/./node_modules/d3/node_modules/d3-transition/src/transition/schedule.js","webpack://mermaid/./node_modules/d3/node_modules/d3-interpolate/src/number.js","webpack://mermaid/./node_modules/d3/node_modules/d3-interpolate/src/transform/decompose.js","webpack://mermaid/./node_modules/d3/node_modules/d3-interpolate/src/transform/parse.js","webpack://mermaid/./node_modules/d3/node_modules/d3-interpolate/src/transform/index.js","webpack://mermaid/./node_modules/d3/node_modules/d3-transition/src/transition/tween.js","webpack://mermaid/./node_modules/d3/node_modules/d3-interpolate/src/basis.js","webpack://mermaid/./node_modules/d3/node_modules/d3-interpolate/src/rgb.js","webpack://mermaid/./node_modules/d3/node_modules/d3-interpolate/src/basisClosed.js","webpack://mermaid/./node_modules/d3/node_modules/d3-interpolate/src/string.js","webpack://mermaid/./node_modules/d3/node_modules/d3-transition/src/transition/interpolate.js","webpack://mermaid/./node_modules/d3/node_modules/d3-transition/src/transition/attr.js","webpack://mermaid/./node_modules/d3/node_modules/d3-transition/src/transition/attrTween.js","webpack://mermaid/./node_modules/d3/node_modules/d3-transition/src/transition/delay.js","webpack://mermaid/./node_modules/d3/node_modules/d3-transition/src/transition/duration.js","webpack://mermaid/./node_modules/d3/node_modules/d3-transition/src/transition/ease.js","webpack://mermaid/./node_modules/d3/node_modules/d3-transition/src/transition/on.js","webpack://mermaid/./node_modules/d3/node_modules/d3-transition/src/transition/selection.js","webpack://mermaid/./node_modules/d3/node_modules/d3-transition/src/transition/style.js","webpack://mermaid/./node_modules/d3/node_modules/d3-transition/src/transition/styleTween.js","webpack://mermaid/./node_modules/d3/node_modules/d3-transition/src/transition/textTween.js","webpack://mermaid/./node_modules/d3/node_modules/d3-transition/src/transition/index.js","webpack://mermaid/./node_modules/d3/node_modules/d3-transition/src/transition/select.js","webpack://mermaid/./node_modules/d3/node_modules/d3-transition/src/transition/selectAll.js","webpack://mermaid/./node_modules/d3/node_modules/d3-transition/src/transition/filter.js","webpack://mermaid/./node_modules/d3/node_modules/d3-transition/src/transition/merge.js","webpack://mermaid/./node_modules/d3/node_modules/d3-transition/src/transition/transition.js","webpack://mermaid/./node_modules/d3/node_modules/d3-transition/src/transition/text.js","webpack://mermaid/./node_modules/d3/node_modules/d3-transition/src/transition/remove.js","webpack://mermaid/./node_modules/d3/node_modules/d3-transition/src/transition/easeVarying.js","webpack://mermaid/./node_modules/d3/node_modules/d3-transition/src/transition/end.js","webpack://mermaid/./node_modules/d3/node_modules/d3-transition/src/selection/transition.js","webpack://mermaid/./node_modules/d3/node_modules/d3-ease/src/cubic.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selector.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/array.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selectorAll.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/matcher.js","webpack://mermaid/./node_modules/d3/node_modules/d3-transition/src/selection/index.js","webpack://mermaid/./node_modules/d3/node_modules/d3-transition/src/selection/interrupt.js","webpack://mermaid/./node_modules/d3/node_modules/d3-transition/src/interrupt.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selection/selectChild.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selection/selectChildren.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selection/sparse.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selection/enter.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/constant.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selection/data.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selection/sort.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/namespaces.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/namespace.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selection/attr.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/window.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selection/style.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selection/property.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selection/classed.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selection/text.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selection/html.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selection/raise.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selection/lower.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/creator.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selection/insert.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selection/remove.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selection/clone.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selection/on.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selection/dispatch.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selection/index.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selection/select.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selection/selectAll.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selection/filter.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selection/exit.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selection/join.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selection/merge.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selection/order.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selection/call.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selection/nodes.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selection/node.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selection/size.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selection/empty.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selection/each.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selection/append.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selection/datum.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selection/iterator.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-dispatch/src/dispatch.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-timer/src/timer.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-timer/src/timeout.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-transition/src/transition/schedule.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-interpolate/src/number.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-interpolate/src/transform/decompose.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-interpolate/src/transform/parse.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-interpolate/src/transform/index.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-transition/src/transition/tween.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-color/src/define.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-color/src/color.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-interpolate/src/basis.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-interpolate/src/constant.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-interpolate/src/color.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-interpolate/src/rgb.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-interpolate/src/basisClosed.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-interpolate/src/string.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-transition/src/transition/interpolate.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-transition/src/transition/attr.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-transition/src/transition/attrTween.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-transition/src/transition/delay.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-transition/src/transition/duration.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-transition/src/transition/ease.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-transition/src/transition/on.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-transition/src/transition/selection.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-transition/src/transition/style.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-transition/src/transition/styleTween.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-transition/src/transition/textTween.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-transition/src/transition/index.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-transition/src/transition/select.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-transition/src/transition/selectAll.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-transition/src/transition/filter.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-transition/src/transition/merge.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-transition/src/transition/transition.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-transition/src/transition/text.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-transition/src/transition/remove.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-transition/src/transition/easeVarying.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-transition/src/transition/end.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-transition/src/selection/transition.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-ease/src/cubic.js","webpack://mermaid/./node_modules/d3-zoom/src/transform.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-transition/src/selection/index.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-transition/src/selection/interrupt.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-transition/src/interrupt.js","webpack://mermaid/./node_modules/stylis/src/Enum.js","webpack://mermaid/./node_modules/stylis/src/Utility.js","webpack://mermaid/./node_modules/stylis/src/Serializer.js","webpack://mermaid/./node_modules/stylis/src/Tokenizer.js","webpack://mermaid/./node_modules/stylis/src/Parser.js","webpack://mermaid/./src/diagrams/common/common.js","webpack://mermaid/./src/themes/theme-helpers.js","webpack://mermaid/./src/themes/theme-base.js","webpack://mermaid/./src/themes/theme-dark.js","webpack://mermaid/./src/themes/theme-default.js","webpack://mermaid/./src/themes/theme-forest.js","webpack://mermaid/./src/themes/theme-neutral.js","webpack://mermaid/./src/themes/index.js","webpack://mermaid/./src/defaultConfig.js","webpack://mermaid/./src/utils.js","webpack://mermaid/./src/config.js","webpack://mermaid/./src/diagrams/class/classDb.js","webpack://mermaid/./src/diagrams/class/svgDraw.js","webpack://mermaid/./src/diagrams/class/classRenderer.js","webpack://mermaid/./src/dagre-wrapper/markers.js","webpack://mermaid/./src/dagre-wrapper/createLabel.js","webpack://mermaid/./src/dagre-wrapper/shapes/util.js","webpack://mermaid/./src/dagre-wrapper/mermaid-graphlib.js","webpack://mermaid/./src/dagre-wrapper/intersect/intersect-ellipse.js","webpack://mermaid/./src/dagre-wrapper/intersect/intersect-line.js","webpack://mermaid/./src/dagre-wrapper/intersect/intersect-rect.js","webpack://mermaid/./src/dagre-wrapper/intersect/index.js","webpack://mermaid/./src/dagre-wrapper/intersect/intersect-circle.js","webpack://mermaid/./src/dagre-wrapper/intersect/intersect-polygon.js","webpack://mermaid/./src/dagre-wrapper/nodes.js","webpack://mermaid/./src/dagre-wrapper/shapes/note.js","webpack://mermaid/./src/dagre-wrapper/clusters.js","webpack://mermaid/./src/dagre-wrapper/edges.js","webpack://mermaid/./src/dagre-wrapper/index.js","webpack://mermaid/./src/diagrams/class/classRenderer-v2.js","webpack://mermaid/./src/diagrams/er/erDb.js","webpack://mermaid/./src/diagrams/er/erMarkers.js","webpack://mermaid/./src/accessibility.js","webpack://mermaid/./src/diagrams/er/erRenderer.js","webpack://mermaid/./src/diagrams/flowchart/flowDb.js","webpack://mermaid/./src/diagrams/flowchart/flowChartShapes.js","webpack://mermaid/./src/diagrams/flowchart/flowRenderer.js","webpack://mermaid/./src/diagrams/flowchart/flowRenderer-v2.js","webpack://mermaid/./src/diagrams/gantt/ganttDb.js","webpack://mermaid/./src/diagrams/gantt/ganttRenderer.js","webpack://mermaid/./src/diagrams/git/gitGraphAst.js","webpack://mermaid/./src/diagrams/git/gitGraphRenderer.js","webpack://mermaid/./src/diagrams/info/infoDb.js","webpack://mermaid/./src/diagrams/info/infoRenderer.js","webpack://mermaid/./src/diagrams/pie/pieDb.js","webpack://mermaid/./src/diagrams/pie/pieRenderer.js","webpack://mermaid/./node_modules/d3-shape/src/pie.js","webpack://mermaid/./src/diagrams/requirement/requirementDb.js","webpack://mermaid/./src/diagrams/requirement/requirementMarkers.js","webpack://mermaid/./src/diagrams/requirement/requirementRenderer.js","webpack://mermaid/./src/diagrams/sequence/sequenceDb.js","webpack://mermaid/./src/interactionDb.js","webpack://mermaid/./src/diagrams/sequence/svgDraw.js","webpack://mermaid/./src/diagrams/sequence/sequenceRenderer.js","webpack://mermaid/./src/diagrams/state/stateDb.js","webpack://mermaid/./src/diagrams/state/id-cache.js","webpack://mermaid/./src/diagrams/state/shapes.js","webpack://mermaid/./src/diagrams/state/stateRenderer.js","webpack://mermaid/./src/diagrams/state/stateRenderer-v2.js","webpack://mermaid/./src/diagrams/user-journey/journeyDb.js","webpack://mermaid/./src/diagrams/user-journey/svgDraw.js","webpack://mermaid/./src/diagrams/user-journey/journeyRenderer.js","webpack://mermaid/./src/errorRenderer.js","webpack://mermaid/./src/diagrams/class/styles.js","webpack://mermaid/./src/diagrams/flowchart/styles.js","webpack://mermaid/./src/diagrams/state/styles.js","webpack://mermaid/./src/styles.js","webpack://mermaid/./src/diagrams/sequence/styles.js","webpack://mermaid/./src/diagrams/gantt/styles.js","webpack://mermaid/./src/diagrams/git/styles.js","webpack://mermaid/./src/diagrams/info/styles.js","webpack://mermaid/./src/diagrams/pie/styles.js","webpack://mermaid/./src/diagrams/er/styles.js","webpack://mermaid/./src/diagrams/user-journey/styles.js","webpack://mermaid/./src/diagrams/requirement/styles.js","webpack://mermaid/./src/mermaidAPI.js","webpack://mermaid/./src/mermaid.js","webpack://mermaid/./node_modules/dagre-d3/index.js","webpack://mermaid/./node_modules/dagre-d3/lib/arrows.js","webpack://mermaid/./node_modules/dagre-d3/lib/create-clusters.js","webpack://mermaid/./node_modules/dagre-d3/lib/create-edge-labels.js","webpack://mermaid/./node_modules/dagre-d3/lib/create-edge-paths.js","webpack://mermaid/./node_modules/dagre-d3/lib/create-nodes.js","webpack://mermaid/./node_modules/dagre-d3/lib/d3.js","webpack://mermaid/./node_modules/dagre-d3/lib/dagre.js","webpack://mermaid/./node_modules/dagre-d3/lib/graphlib.js","webpack://mermaid/./node_modules/dagre-d3/lib/intersect/index.js","webpack://mermaid/./node_modules/dagre-d3/lib/intersect/intersect-circle.js","webpack://mermaid/./node_modules/dagre-d3/lib/intersect/intersect-ellipse.js","webpack://mermaid/./node_modules/dagre-d3/lib/intersect/intersect-line.js","webpack://mermaid/./node_modules/dagre-d3/lib/intersect/intersect-node.js","webpack://mermaid/./node_modules/dagre-d3/lib/intersect/intersect-polygon.js","webpack://mermaid/./node_modules/dagre-d3/lib/intersect/intersect-rect.js","webpack://mermaid/./node_modules/dagre-d3/lib/label/add-html-label.js","webpack://mermaid/./node_modules/dagre-d3/lib/label/add-label.js","webpack://mermaid/./node_modules/dagre-d3/lib/label/add-svg-label.js","webpack://mermaid/./node_modules/dagre-d3/lib/label/add-text-label.js","webpack://mermaid/./node_modules/dagre-d3/lib/lodash.js","webpack://mermaid/./node_modules/dagre-d3/lib/position-clusters.js","webpack://mermaid/./node_modules/dagre-d3/lib/position-edge-labels.js","webpack://mermaid/./node_modules/dagre-d3/lib/position-nodes.js","webpack://mermaid/./node_modules/dagre-d3/lib/render.js","webpack://mermaid/./node_modules/dagre-d3/lib/shapes.js","webpack://mermaid/./node_modules/dagre-d3/lib/util.js","webpack://mermaid/./node_modules/dagre-d3/lib/version.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3/dist/package.js","webpack://mermaid/./node_modules/d3-array/src/ascending.js","webpack://mermaid/./node_modules/d3-array/src/bisector.js","webpack://mermaid/./node_modules/d3-array/src/bisect.js","webpack://mermaid/./node_modules/d3-array/src/pairs.js","webpack://mermaid/./node_modules/d3-array/src/cross.js","webpack://mermaid/./node_modules/d3-array/src/descending.js","webpack://mermaid/./node_modules/d3-array/src/number.js","webpack://mermaid/./node_modules/d3-array/src/variance.js","webpack://mermaid/./node_modules/d3-array/src/deviation.js","webpack://mermaid/./node_modules/d3-array/src/extent.js","webpack://mermaid/./node_modules/d3-array/src/array.js","webpack://mermaid/./node_modules/d3-array/src/constant.js","webpack://mermaid/./node_modules/d3-array/src/identity.js","webpack://mermaid/./node_modules/d3-array/src/range.js","webpack://mermaid/./node_modules/d3-array/src/ticks.js","webpack://mermaid/./node_modules/d3-array/src/threshold/sturges.js","webpack://mermaid/./node_modules/d3-array/src/histogram.js","webpack://mermaid/./node_modules/d3-array/src/quantile.js","webpack://mermaid/./node_modules/d3-array/src/threshold/freedmanDiaconis.js","webpack://mermaid/./node_modules/d3-array/src/threshold/scott.js","webpack://mermaid/./node_modules/d3-array/src/max.js","webpack://mermaid/./node_modules/d3-array/src/mean.js","webpack://mermaid/./node_modules/d3-array/src/median.js","webpack://mermaid/./node_modules/d3-array/src/merge.js","webpack://mermaid/./node_modules/d3-array/src/min.js","webpack://mermaid/./node_modules/d3-array/src/permute.js","webpack://mermaid/./node_modules/d3-array/src/scan.js","webpack://mermaid/./node_modules/d3-array/src/shuffle.js","webpack://mermaid/./node_modules/d3-array/src/sum.js","webpack://mermaid/./node_modules/d3-array/src/transpose.js","webpack://mermaid/./node_modules/d3-array/src/zip.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-axis/src/array.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-axis/src/identity.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-axis/src/axis.js","webpack://mermaid/./node_modules/d3-dispatch/src/dispatch.js","webpack://mermaid/./node_modules/d3-selection/src/selector.js","webpack://mermaid/./node_modules/d3-selection/src/selectorAll.js","webpack://mermaid/./node_modules/d3-selection/src/matcher.js","webpack://mermaid/./node_modules/d3-selection/src/selection/sparse.js","webpack://mermaid/./node_modules/d3-selection/src/selection/enter.js","webpack://mermaid/./node_modules/d3-selection/src/selection/data.js","webpack://mermaid/./node_modules/d3-selection/src/selection/sort.js","webpack://mermaid/./node_modules/d3-selection/src/namespaces.js","webpack://mermaid/./node_modules/d3-selection/src/namespace.js","webpack://mermaid/./node_modules/d3-selection/src/selection/attr.js","webpack://mermaid/./node_modules/d3-selection/src/window.js","webpack://mermaid/./node_modules/d3-selection/src/selection/style.js","webpack://mermaid/./node_modules/d3-selection/src/selection/property.js","webpack://mermaid/./node_modules/d3-selection/src/selection/classed.js","webpack://mermaid/./node_modules/d3-selection/src/selection/text.js","webpack://mermaid/./node_modules/d3-selection/src/selection/html.js","webpack://mermaid/./node_modules/d3-selection/src/selection/raise.js","webpack://mermaid/./node_modules/d3-selection/src/selection/lower.js","webpack://mermaid/./node_modules/d3-selection/src/creator.js","webpack://mermaid/./node_modules/d3-selection/src/selection/insert.js","webpack://mermaid/./node_modules/d3-selection/src/selection/remove.js","webpack://mermaid/./node_modules/d3-selection/src/selection/clone.js","webpack://mermaid/./node_modules/d3-selection/src/selection/on.js","webpack://mermaid/./node_modules/d3-selection/src/selection/dispatch.js","webpack://mermaid/./node_modules/d3-selection/src/selection/index.js","webpack://mermaid/./node_modules/d3-selection/src/selection/select.js","webpack://mermaid/./node_modules/d3-selection/src/selection/selectAll.js","webpack://mermaid/./node_modules/d3-selection/src/selection/filter.js","webpack://mermaid/./node_modules/d3-selection/src/constant.js","webpack://mermaid/./node_modules/d3-selection/src/selection/exit.js","webpack://mermaid/./node_modules/d3-selection/src/selection/join.js","webpack://mermaid/./node_modules/d3-selection/src/selection/merge.js","webpack://mermaid/./node_modules/d3-selection/src/selection/order.js","webpack://mermaid/./node_modules/d3-selection/src/selection/call.js","webpack://mermaid/./node_modules/d3-selection/src/selection/nodes.js","webpack://mermaid/./node_modules/d3-selection/src/selection/node.js","webpack://mermaid/./node_modules/d3-selection/src/selection/size.js","webpack://mermaid/./node_modules/d3-selection/src/selection/empty.js","webpack://mermaid/./node_modules/d3-selection/src/selection/each.js","webpack://mermaid/./node_modules/d3-selection/src/selection/append.js","webpack://mermaid/./node_modules/d3-selection/src/selection/datum.js","webpack://mermaid/./node_modules/d3-selection/src/select.js","webpack://mermaid/./node_modules/d3-drag/src/noevent.js","webpack://mermaid/./node_modules/d3-drag/src/nodrag.js","webpack://mermaid/./node_modules/d3-color/src/define.js","webpack://mermaid/./node_modules/d3-color/src/color.js","webpack://mermaid/./node_modules/d3-interpolate/src/basis.js","webpack://mermaid/./node_modules/d3-interpolate/src/basisClosed.js","webpack://mermaid/./node_modules/d3-interpolate/src/constant.js","webpack://mermaid/./node_modules/d3-interpolate/src/color.js","webpack://mermaid/./node_modules/d3-interpolate/src/rgb.js","webpack://mermaid/./node_modules/d3-interpolate/src/numberArray.js","webpack://mermaid/./node_modules/d3-interpolate/src/array.js","webpack://mermaid/./node_modules/d3-interpolate/src/date.js","webpack://mermaid/./node_modules/d3-interpolate/src/number.js","webpack://mermaid/./node_modules/d3-interpolate/src/object.js","webpack://mermaid/./node_modules/d3-interpolate/src/string.js","webpack://mermaid/./node_modules/d3-interpolate/src/value.js","webpack://mermaid/./node_modules/d3-selection/src/sourceEvent.js","webpack://mermaid/./node_modules/d3-selection/src/point.js","webpack://mermaid/./node_modules/d3-selection/src/touch.js","webpack://mermaid/./node_modules/d3-selection/src/mouse.js","webpack://mermaid/./node_modules/d3-timer/src/timer.js","webpack://mermaid/./node_modules/d3-timer/src/timeout.js","webpack://mermaid/./node_modules/d3-transition/src/transition/schedule.js","webpack://mermaid/./node_modules/d3-transition/src/interrupt.js","webpack://mermaid/./node_modules/d3-interpolate/src/transform/decompose.js","webpack://mermaid/./node_modules/d3-interpolate/src/transform/parse.js","webpack://mermaid/./node_modules/d3-interpolate/src/transform/index.js","webpack://mermaid/./node_modules/d3-transition/src/transition/tween.js","webpack://mermaid/./node_modules/d3-transition/src/transition/interpolate.js","webpack://mermaid/./node_modules/d3-transition/src/transition/attr.js","webpack://mermaid/./node_modules/d3-transition/src/transition/attrTween.js","webpack://mermaid/./node_modules/d3-transition/src/transition/delay.js","webpack://mermaid/./node_modules/d3-transition/src/transition/duration.js","webpack://mermaid/./node_modules/d3-transition/src/transition/ease.js","webpack://mermaid/./node_modules/d3-transition/src/transition/on.js","webpack://mermaid/./node_modules/d3-transition/src/transition/selection.js","webpack://mermaid/./node_modules/d3-transition/src/transition/style.js","webpack://mermaid/./node_modules/d3-transition/src/transition/styleTween.js","webpack://mermaid/./node_modules/d3-transition/src/transition/textTween.js","webpack://mermaid/./node_modules/d3-transition/src/transition/index.js","webpack://mermaid/./node_modules/d3-ease/src/cubic.js","webpack://mermaid/./node_modules/d3-transition/src/transition/select.js","webpack://mermaid/./node_modules/d3-transition/src/transition/selectAll.js","webpack://mermaid/./node_modules/d3-transition/src/transition/filter.js","webpack://mermaid/./node_modules/d3-transition/src/transition/merge.js","webpack://mermaid/./node_modules/d3-transition/src/transition/transition.js","webpack://mermaid/./node_modules/d3-transition/src/transition/text.js","webpack://mermaid/./node_modules/d3-transition/src/transition/remove.js","webpack://mermaid/./node_modules/d3-transition/src/transition/end.js","webpack://mermaid/./node_modules/d3-transition/src/selection/transition.js","webpack://mermaid/./node_modules/d3-transition/src/selection/index.js","webpack://mermaid/./node_modules/d3-transition/src/selection/interrupt.js","webpack://mermaid/./node_modules/d3-transition/src/active.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-brush/src/constant.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-brush/src/event.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-brush/src/noevent.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-brush/src/brush.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-chord/src/math.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-chord/src/chord.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-chord/src/array.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-chord/src/constant.js","webpack://mermaid/./node_modules/d3-path/src/path.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-chord/src/ribbon.js","webpack://mermaid/./node_modules/d3-collection/src/map.js","webpack://mermaid/./node_modules/d3-collection/src/nest.js","webpack://mermaid/./node_modules/d3-collection/src/set.js","webpack://mermaid/./node_modules/d3-collection/src/keys.js","webpack://mermaid/./node_modules/d3-collection/src/values.js","webpack://mermaid/./node_modules/d3-collection/src/entries.js","webpack://mermaid/./node_modules/d3-color/src/math.js","webpack://mermaid/./node_modules/d3-color/src/lab.js","webpack://mermaid/./node_modules/d3-color/src/cubehelix.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-contour/src/array.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-contour/src/ascending.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-contour/src/constant.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-contour/src/contains.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-contour/src/noop.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-contour/src/contours.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-contour/src/area.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-contour/src/blur.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-contour/src/density.js","webpack://mermaid/./node_modules/d3-drag/src/constant.js","webpack://mermaid/./node_modules/d3-drag/src/event.js","webpack://mermaid/./node_modules/d3-drag/src/drag.js","webpack://mermaid/./node_modules/d3-dsv/src/dsv.js","webpack://mermaid/./node_modules/d3-dsv/src/csv.js","webpack://mermaid/./node_modules/d3-dsv/src/tsv.js","webpack://mermaid/./node_modules/d3-dsv/src/autoType.js","webpack://mermaid/./node_modules/d3-ease/src/linear.js","webpack://mermaid/./node_modules/d3-ease/src/quad.js","webpack://mermaid/./node_modules/d3-ease/src/poly.js","webpack://mermaid/./node_modules/d3-ease/src/sin.js","webpack://mermaid/./node_modules/d3-ease/src/math.js","webpack://mermaid/./node_modules/d3-ease/src/exp.js","webpack://mermaid/./node_modules/d3-ease/src/circle.js","webpack://mermaid/./node_modules/d3-ease/src/bounce.js","webpack://mermaid/./node_modules/d3-ease/src/back.js","webpack://mermaid/./node_modules/d3-ease/src/elastic.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-fetch/src/blob.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-fetch/src/buffer.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-fetch/src/text.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-fetch/src/dsv.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-fetch/src/image.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-fetch/src/json.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-fetch/src/xml.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-force/src/center.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-force/src/constant.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-force/src/jiggle.js","webpack://mermaid/./node_modules/d3-quadtree/src/add.js","webpack://mermaid/./node_modules/d3-quadtree/src/quad.js","webpack://mermaid/./node_modules/d3-quadtree/src/x.js","webpack://mermaid/./node_modules/d3-quadtree/src/y.js","webpack://mermaid/./node_modules/d3-quadtree/src/quadtree.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-force/src/collide.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-force/src/link.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-force/src/simulation.js","webpack://mermaid/./node_modules/d3-quadtree/src/cover.js","webpack://mermaid/./node_modules/d3-quadtree/src/data.js","webpack://mermaid/./node_modules/d3-quadtree/src/extent.js","webpack://mermaid/./node_modules/d3-quadtree/src/find.js","webpack://mermaid/./node_modules/d3-quadtree/src/remove.js","webpack://mermaid/./node_modules/d3-quadtree/src/root.js","webpack://mermaid/./node_modules/d3-quadtree/src/size.js","webpack://mermaid/./node_modules/d3-quadtree/src/visit.js","webpack://mermaid/./node_modules/d3-quadtree/src/visitAfter.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-force/src/manyBody.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-force/src/radial.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-force/src/x.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-force/src/y.js","webpack://mermaid/./node_modules/d3-format/src/formatDecimal.js","webpack://mermaid/./node_modules/d3-format/src/exponent.js","webpack://mermaid/./node_modules/d3-format/src/formatSpecifier.js","webpack://mermaid/./node_modules/d3-format/src/formatPrefixAuto.js","webpack://mermaid/./node_modules/d3-format/src/formatRounded.js","webpack://mermaid/./node_modules/d3-format/src/formatTypes.js","webpack://mermaid/./node_modules/d3-format/src/identity.js","webpack://mermaid/./node_modules/d3-format/src/locale.js","webpack://mermaid/./node_modules/d3-format/src/defaultLocale.js","webpack://mermaid/./node_modules/d3-format/src/formatGroup.js","webpack://mermaid/./node_modules/d3-format/src/formatNumerals.js","webpack://mermaid/./node_modules/d3-format/src/formatTrim.js","webpack://mermaid/./node_modules/d3-format/src/precisionFixed.js","webpack://mermaid/./node_modules/d3-format/src/precisionPrefix.js","webpack://mermaid/./node_modules/d3-format/src/precisionRound.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/adder.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/math.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/noop.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/stream.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/area.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/cartesian.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/bounds.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/centroid.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/constant.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/compose.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/rotation.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/circle.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/clip/buffer.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/pointEqual.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/clip/rejoin.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/polygonContains.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/clip/index.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/clip/antimeridian.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/clip/circle.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/clip/rectangle.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/clip/line.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/clip/extent.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/length.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/distance.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/contains.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/graticule.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/interpolate.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/identity.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/path/area.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/path/bounds.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/path/centroid.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/path/context.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/path/measure.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/path/string.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/path/index.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/transform.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/projection/fit.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/projection/resample.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/projection/index.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/projection/conic.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/projection/conicEqualArea.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/projection/cylindricalEqualArea.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/projection/albers.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/projection/albersUsa.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/projection/azimuthal.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/projection/azimuthalEqualArea.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/projection/azimuthalEquidistant.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/projection/mercator.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/projection/conicConformal.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/projection/equirectangular.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/projection/conicEquidistant.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/projection/equalEarth.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/projection/gnomonic.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/projection/identity.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/projection/naturalEarth1.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/projection/orthographic.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/projection/stereographic.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/projection/transverseMercator.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-hierarchy/src/cluster.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-hierarchy/src/hierarchy/count.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-hierarchy/src/hierarchy/index.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-hierarchy/src/hierarchy/each.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-hierarchy/src/hierarchy/eachAfter.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-hierarchy/src/hierarchy/eachBefore.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-hierarchy/src/hierarchy/sum.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-hierarchy/src/hierarchy/sort.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-hierarchy/src/hierarchy/path.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-hierarchy/src/hierarchy/ancestors.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-hierarchy/src/hierarchy/descendants.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-hierarchy/src/hierarchy/leaves.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-hierarchy/src/hierarchy/links.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-hierarchy/src/array.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-hierarchy/src/pack/enclose.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-hierarchy/src/pack/siblings.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-hierarchy/src/accessors.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-hierarchy/src/constant.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-hierarchy/src/pack/index.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-hierarchy/src/treemap/round.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-hierarchy/src/treemap/dice.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-hierarchy/src/partition.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-hierarchy/src/stratify.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-hierarchy/src/tree.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-hierarchy/src/treemap/slice.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-hierarchy/src/treemap/squarify.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-hierarchy/src/treemap/index.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-hierarchy/src/treemap/binary.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-hierarchy/src/treemap/sliceDice.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-hierarchy/src/treemap/resquarify.js","webpack://mermaid/./node_modules/d3-interpolate/src/discrete.js","webpack://mermaid/./node_modules/d3-interpolate/src/hue.js","webpack://mermaid/./node_modules/d3-interpolate/src/round.js","webpack://mermaid/./node_modules/d3-interpolate/src/zoom.js","webpack://mermaid/./node_modules/d3-interpolate/src/hsl.js","webpack://mermaid/./node_modules/d3-interpolate/src/lab.js","webpack://mermaid/./node_modules/d3-interpolate/src/hcl.js","webpack://mermaid/./node_modules/d3-interpolate/src/cubehelix.js","webpack://mermaid/./node_modules/d3-interpolate/src/piecewise.js","webpack://mermaid/./node_modules/d3-interpolate/src/quantize.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-polygon/src/area.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-polygon/src/centroid.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-polygon/src/cross.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-polygon/src/hull.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-polygon/src/contains.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-polygon/src/length.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-random/src/defaultSource.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-random/src/uniform.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-random/src/normal.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-random/src/logNormal.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-random/src/irwinHall.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-random/src/bates.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-random/src/exponential.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale/src/init.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale/src/array.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale/src/ordinal.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale/src/band.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale/src/number.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale/src/continuous.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale/src/constant.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale/src/tickFormat.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale/src/linear.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale/src/identity.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale/src/nice.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale/src/log.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale/src/symlog.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale/src/pow.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale/src/quantile.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale/src/quantize.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale/src/threshold.js","webpack://mermaid/./node_modules/d3-time/src/interval.js","webpack://mermaid/./node_modules/d3-time/src/year.js","webpack://mermaid/./node_modules/d3-time/src/month.js","webpack://mermaid/./node_modules/d3-time/src/duration.js","webpack://mermaid/./node_modules/d3-time/src/week.js","webpack://mermaid/./node_modules/d3-time/src/day.js","webpack://mermaid/./node_modules/d3-time/src/hour.js","webpack://mermaid/./node_modules/d3-time/src/minute.js","webpack://mermaid/./node_modules/d3-time/src/second.js","webpack://mermaid/./node_modules/d3-time/src/millisecond.js","webpack://mermaid/./node_modules/d3-time/src/utcWeek.js","webpack://mermaid/./node_modules/d3-time/src/utcDay.js","webpack://mermaid/./node_modules/d3-time/src/utcYear.js","webpack://mermaid/./node_modules/d3-time-format/src/locale.js","webpack://mermaid/./node_modules/d3-time-format/src/defaultLocale.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale/src/time.js","webpack://mermaid/./node_modules/d3-time/src/utcMonth.js","webpack://mermaid/./node_modules/d3-time/src/utcHour.js","webpack://mermaid/./node_modules/d3-time/src/utcMinute.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale/src/utcTime.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale/src/sequential.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale/src/sequentialQuantile.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale/src/diverging.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/colors.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/categorical/category10.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/categorical/Accent.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/categorical/Dark2.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/categorical/Paired.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/categorical/Pastel1.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/categorical/Pastel2.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/categorical/Set1.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/categorical/Set2.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/categorical/Set3.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/categorical/Tableau10.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/ramp.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/diverging/BrBG.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/diverging/PRGn.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/diverging/PiYG.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/diverging/PuOr.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/diverging/RdBu.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/diverging/RdGy.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/diverging/RdYlBu.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/diverging/RdYlGn.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/diverging/Spectral.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/sequential-multi/BuGn.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/sequential-multi/BuPu.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/sequential-multi/GnBu.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/sequential-multi/OrRd.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/sequential-multi/PuBuGn.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/sequential-multi/PuBu.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/sequential-multi/PuRd.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/sequential-multi/RdPu.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/sequential-multi/YlGnBu.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/sequential-multi/YlGn.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/sequential-multi/YlOrBr.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/sequential-multi/YlOrRd.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/sequential-single/Blues.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/sequential-single/Greens.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/sequential-single/Greys.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/sequential-single/Purples.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/sequential-single/Reds.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/sequential-single/Oranges.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/sequential-multi/cividis.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/sequential-multi/cubehelix.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/sequential-multi/rainbow.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/sequential-multi/sinebow.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/sequential-multi/turbo.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/sequential-multi/viridis.js","webpack://mermaid/./node_modules/d3-selection/src/create.js","webpack://mermaid/./node_modules/d3-selection/src/local.js","webpack://mermaid/./node_modules/d3-selection/src/selectAll.js","webpack://mermaid/./node_modules/d3-selection/src/touches.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/constant.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/math.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/arc.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/curve/linear.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/point.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/line.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/area.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/descending.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/identity.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/pie.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/curve/radial.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/lineRadial.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/areaRadial.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/pointRadial.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/array.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/link/index.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/symbol/circle.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/symbol/cross.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/symbol/diamond.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/symbol/star.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/symbol/square.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/symbol/triangle.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/symbol/wye.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/symbol.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/noop.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/curve/basis.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/curve/basisClosed.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/curve/basisOpen.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/curve/bundle.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/curve/cardinal.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/curve/cardinalClosed.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/curve/cardinalOpen.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/curve/catmullRom.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/curve/catmullRomClosed.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/curve/catmullRomOpen.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/curve/linearClosed.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/curve/monotone.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/curve/natural.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/curve/step.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/offset/none.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/order/none.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/stack.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/offset/expand.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/offset/diverging.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/offset/silhouette.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/offset/wiggle.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/order/appearance.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/order/ascending.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/order/descending.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/order/insideOut.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/order/reverse.js","webpack://mermaid/./node_modules/d3-time-format/src/isoFormat.js","webpack://mermaid/./node_modules/d3-time-format/src/isoParse.js","webpack://mermaid/./node_modules/d3-timer/src/interval.js","webpack://mermaid/./node_modules/d3-voronoi/src/constant.js","webpack://mermaid/./node_modules/d3-voronoi/src/point.js","webpack://mermaid/./node_modules/d3-voronoi/src/RedBlackTree.js","webpack://mermaid/./node_modules/d3-voronoi/src/Edge.js","webpack://mermaid/./node_modules/d3-voronoi/src/Cell.js","webpack://mermaid/./node_modules/d3-voronoi/src/Circle.js","webpack://mermaid/./node_modules/d3-voronoi/src/Beach.js","webpack://mermaid/./node_modules/d3-voronoi/src/Diagram.js","webpack://mermaid/./node_modules/d3-voronoi/src/voronoi.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-zoom/src/constant.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-zoom/src/event.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-zoom/src/transform.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-zoom/src/noevent.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-zoom/src/zoom.js","webpack://mermaid/./node_modules/dagre/index.js","webpack://mermaid/./node_modules/dagre/lib/acyclic.js","webpack://mermaid/./node_modules/dagre/lib/add-border-segments.js","webpack://mermaid/./node_modules/dagre/lib/coordinate-system.js","webpack://mermaid/./node_modules/dagre/lib/data/list.js","webpack://mermaid/./node_modules/dagre/lib/debug.js","webpack://mermaid/./node_modules/dagre/lib/graphlib.js","webpack://mermaid/./node_modules/dagre/lib/greedy-fas.js","webpack://mermaid/./node_modules/dagre/lib/layout.js","webpack://mermaid/./node_modules/dagre/lib/lodash.js","webpack://mermaid/./node_modules/dagre/lib/nesting-graph.js","webpack://mermaid/./node_modules/dagre/lib/normalize.js","webpack://mermaid/./node_modules/dagre/lib/order/add-subgraph-constraints.js","webpack://mermaid/./node_modules/dagre/lib/order/barycenter.js","webpack://mermaid/./node_modules/dagre/lib/order/build-layer-graph.js","webpack://mermaid/./node_modules/dagre/lib/order/cross-count.js","webpack://mermaid/./node_modules/dagre/lib/order/index.js","webpack://mermaid/./node_modules/dagre/lib/order/init-order.js","webpack://mermaid/./node_modules/dagre/lib/order/resolve-conflicts.js","webpack://mermaid/./node_modules/dagre/lib/order/sort-subgraph.js","webpack://mermaid/./node_modules/dagre/lib/order/sort.js","webpack://mermaid/./node_modules/dagre/lib/parent-dummy-chains.js","webpack://mermaid/./node_modules/dagre/lib/position/bk.js","webpack://mermaid/./node_modules/dagre/lib/position/index.js","webpack://mermaid/./node_modules/dagre/lib/rank/feasible-tree.js","webpack://mermaid/./node_modules/dagre/lib/rank/index.js","webpack://mermaid/./node_modules/dagre/lib/rank/network-simplex.js","webpack://mermaid/./node_modules/dagre/lib/rank/util.js","webpack://mermaid/./node_modules/dagre/lib/util.js","webpack://mermaid/./node_modules/dagre/lib/version.js","webpack://mermaid/./node_modules/dompurify/dist/purify.js","webpack://mermaid/./node_modules/graphlib/index.js","webpack://mermaid/./node_modules/graphlib/lib/alg/components.js","webpack://mermaid/./node_modules/graphlib/lib/alg/dfs.js","webpack://mermaid/./node_modules/graphlib/lib/alg/dijkstra-all.js","webpack://mermaid/./node_modules/graphlib/lib/alg/dijkstra.js","webpack://mermaid/./node_modules/graphlib/lib/alg/find-cycles.js","webpack://mermaid/./node_modules/graphlib/lib/alg/floyd-warshall.js","webpack://mermaid/./node_modules/graphlib/lib/alg/index.js","webpack://mermaid/./node_modules/graphlib/lib/alg/is-acyclic.js","webpack://mermaid/./node_modules/graphlib/lib/alg/postorder.js","webpack://mermaid/./node_modules/graphlib/lib/alg/preorder.js","webpack://mermaid/./node_modules/graphlib/lib/alg/prim.js","webpack://mermaid/./node_modules/graphlib/lib/alg/tarjan.js","webpack://mermaid/./node_modules/graphlib/lib/alg/topsort.js","webpack://mermaid/./node_modules/graphlib/lib/data/priority-queue.js","webpack://mermaid/./node_modules/graphlib/lib/graph.js","webpack://mermaid/./node_modules/graphlib/lib/index.js","webpack://mermaid/./node_modules/graphlib/lib/json.js","webpack://mermaid/./node_modules/graphlib/lib/lodash.js","webpack://mermaid/./node_modules/graphlib/lib/version.js","webpack://mermaid/./node_modules/khroma/dist/channels/index.js","webpack://mermaid/./node_modules/khroma/dist/channels/reusable.js","webpack://mermaid/./node_modules/khroma/dist/channels/type.js","webpack://mermaid/./node_modules/khroma/dist/color/hex.js","webpack://mermaid/./node_modules/khroma/dist/color/hsl.js","webpack://mermaid/./node_modules/khroma/dist/color/index.js","webpack://mermaid/./node_modules/khroma/dist/color/keyword.js","webpack://mermaid/./node_modules/khroma/dist/color/rgb.js","webpack://mermaid/./node_modules/khroma/dist/consts.js","webpack://mermaid/./node_modules/khroma/dist/index.js","webpack://mermaid/./node_modules/khroma/dist/methods/adjust.js","webpack://mermaid/./node_modules/khroma/dist/methods/adjust_channel.js","webpack://mermaid/./node_modules/khroma/dist/methods/alpha.js","webpack://mermaid/./node_modules/khroma/dist/methods/blue.js","webpack://mermaid/./node_modules/khroma/dist/methods/change.js","webpack://mermaid/./node_modules/khroma/dist/methods/channel.js","webpack://mermaid/./node_modules/khroma/dist/methods/complement.js","webpack://mermaid/./node_modules/khroma/dist/methods/contrast.js","webpack://mermaid/./node_modules/khroma/dist/methods/darken.js","webpack://mermaid/./node_modules/khroma/dist/methods/desaturate.js","webpack://mermaid/./node_modules/khroma/dist/methods/grayscale.js","webpack://mermaid/./node_modules/khroma/dist/methods/green.js","webpack://mermaid/./node_modules/khroma/dist/methods/hsla.js","webpack://mermaid/./node_modules/khroma/dist/methods/hue.js","webpack://mermaid/./node_modules/khroma/dist/methods/index.js","webpack://mermaid/./node_modules/khroma/dist/methods/invert.js","webpack://mermaid/./node_modules/khroma/dist/methods/is_dark.js","webpack://mermaid/./node_modules/khroma/dist/methods/is_light.js","webpack://mermaid/./node_modules/khroma/dist/methods/is_valid.js","webpack://mermaid/./node_modules/khroma/dist/methods/lighten.js","webpack://mermaid/./node_modules/khroma/dist/methods/lightness.js","webpack://mermaid/./node_modules/khroma/dist/methods/luminance.js","webpack://mermaid/./node_modules/khroma/dist/methods/mix.js","webpack://mermaid/./node_modules/khroma/dist/methods/opacify.js","webpack://mermaid/./node_modules/khroma/dist/methods/red.js","webpack://mermaid/./node_modules/khroma/dist/methods/rgba.js","webpack://mermaid/./node_modules/khroma/dist/methods/saturate.js","webpack://mermaid/./node_modules/khroma/dist/methods/saturation.js","webpack://mermaid/./node_modules/khroma/dist/methods/scale.js","webpack://mermaid/./node_modules/khroma/dist/methods/to_hex.js","webpack://mermaid/./node_modules/khroma/dist/methods/to_hsla.js","webpack://mermaid/./node_modules/khroma/dist/methods/to_keyword.js","webpack://mermaid/./node_modules/khroma/dist/methods/to_rgba.js","webpack://mermaid/./node_modules/khroma/dist/methods/transparentize.js","webpack://mermaid/./node_modules/khroma/dist/utils/channel.js","webpack://mermaid/./node_modules/khroma/dist/utils/index.js","webpack://mermaid/./node_modules/khroma/dist/utils/lang.js","webpack://mermaid/./node_modules/khroma/dist/utils/unit.js","webpack://mermaid/./node_modules/lodash/_DataView.js","webpack://mermaid/./node_modules/lodash/_Hash.js","webpack://mermaid/./node_modules/lodash/_ListCache.js","webpack://mermaid/./node_modules/lodash/_Map.js","webpack://mermaid/./node_modules/lodash/_MapCache.js","webpack://mermaid/./node_modules/lodash/_Promise.js","webpack://mermaid/./node_modules/lodash/_Set.js","webpack://mermaid/./node_modules/lodash/_SetCache.js","webpack://mermaid/./node_modules/lodash/_Stack.js","webpack://mermaid/./node_modules/lodash/_Symbol.js","webpack://mermaid/./node_modules/lodash/_Uint8Array.js","webpack://mermaid/./node_modules/lodash/_WeakMap.js","webpack://mermaid/./node_modules/lodash/_apply.js","webpack://mermaid/./node_modules/lodash/_arrayEach.js","webpack://mermaid/./node_modules/lodash/_arrayFilter.js","webpack://mermaid/./node_modules/lodash/_arrayIncludes.js","webpack://mermaid/./node_modules/lodash/_arrayIncludesWith.js","webpack://mermaid/./node_modules/lodash/_arrayLikeKeys.js","webpack://mermaid/./node_modules/lodash/_arrayMap.js","webpack://mermaid/./node_modules/lodash/_arrayPush.js","webpack://mermaid/./node_modules/lodash/_arrayReduce.js","webpack://mermaid/./node_modules/lodash/_arraySome.js","webpack://mermaid/./node_modules/lodash/_asciiSize.js","webpack://mermaid/./node_modules/lodash/_assignMergeValue.js","webpack://mermaid/./node_modules/lodash/_assignValue.js","webpack://mermaid/./node_modules/lodash/_assocIndexOf.js","webpack://mermaid/./node_modules/lodash/_baseAssign.js","webpack://mermaid/./node_modules/lodash/_baseAssignIn.js","webpack://mermaid/./node_modules/lodash/_baseAssignValue.js","webpack://mermaid/./node_modules/lodash/_baseClone.js","webpack://mermaid/./node_modules/lodash/_baseCreate.js","webpack://mermaid/./node_modules/lodash/_baseEach.js","webpack://mermaid/./node_modules/lodash/_baseExtremum.js","webpack://mermaid/./node_modules/lodash/_baseFilter.js","webpack://mermaid/./node_modules/lodash/_baseFindIndex.js","webpack://mermaid/./node_modules/lodash/_baseFlatten.js","webpack://mermaid/./node_modules/lodash/_baseFor.js","webpack://mermaid/./node_modules/lodash/_baseForOwn.js","webpack://mermaid/./node_modules/lodash/_baseGet.js","webpack://mermaid/./node_modules/lodash/_baseGetAllKeys.js","webpack://mermaid/./node_modules/lodash/_baseGetTag.js","webpack://mermaid/./node_modules/lodash/_baseGt.js","webpack://mermaid/./node_modules/lodash/_baseHas.js","webpack://mermaid/./node_modules/lodash/_baseHasIn.js","webpack://mermaid/./node_modules/lodash/_baseIndexOf.js","webpack://mermaid/./node_modules/lodash/_baseIsArguments.js","webpack://mermaid/./node_modules/lodash/_baseIsEqual.js","webpack://mermaid/./node_modules/lodash/_baseIsEqualDeep.js","webpack://mermaid/./node_modules/lodash/_baseIsMap.js","webpack://mermaid/./node_modules/lodash/_baseIsMatch.js","webpack://mermaid/./node_modules/lodash/_baseIsNaN.js","webpack://mermaid/./node_modules/lodash/_baseIsNative.js","webpack://mermaid/./node_modules/lodash/_baseIsSet.js","webpack://mermaid/./node_modules/lodash/_baseIsTypedArray.js","webpack://mermaid/./node_modules/lodash/_baseIteratee.js","webpack://mermaid/./node_modules/lodash/_baseKeys.js","webpack://mermaid/./node_modules/lodash/_baseKeysIn.js","webpack://mermaid/./node_modules/lodash/_baseLt.js","webpack://mermaid/./node_modules/lodash/_baseMap.js","webpack://mermaid/./node_modules/lodash/_baseMatches.js","webpack://mermaid/./node_modules/lodash/_baseMatchesProperty.js","webpack://mermaid/./node_modules/lodash/_baseMerge.js","webpack://mermaid/./node_modules/lodash/_baseMergeDeep.js","webpack://mermaid/./node_modules/lodash/_baseOrderBy.js","webpack://mermaid/./node_modules/lodash/_basePick.js","webpack://mermaid/./node_modules/lodash/_basePickBy.js","webpack://mermaid/./node_modules/lodash/_baseProperty.js","webpack://mermaid/./node_modules/lodash/_basePropertyDeep.js","webpack://mermaid/./node_modules/lodash/_baseRange.js","webpack://mermaid/./node_modules/lodash/_baseReduce.js","webpack://mermaid/./node_modules/lodash/_baseRest.js","webpack://mermaid/./node_modules/lodash/_baseSet.js","webpack://mermaid/./node_modules/lodash/_baseSetToString.js","webpack://mermaid/./node_modules/lodash/_baseSortBy.js","webpack://mermaid/./node_modules/lodash/_baseTimes.js","webpack://mermaid/./node_modules/lodash/_baseToString.js","webpack://mermaid/./node_modules/lodash/_baseTrim.js","webpack://mermaid/./node_modules/lodash/_baseUnary.js","webpack://mermaid/./node_modules/lodash/_baseUniq.js","webpack://mermaid/./node_modules/lodash/_baseValues.js","webpack://mermaid/./node_modules/lodash/_baseZipObject.js","webpack://mermaid/./node_modules/lodash/_cacheHas.js","webpack://mermaid/./node_modules/lodash/_castFunction.js","webpack://mermaid/./node_modules/lodash/_castPath.js","webpack://mermaid/./node_modules/lodash/_cloneArrayBuffer.js","webpack://mermaid/./node_modules/lodash/_cloneBuffer.js","webpack://mermaid/./node_modules/lodash/_cloneDataView.js","webpack://mermaid/./node_modules/lodash/_cloneRegExp.js","webpack://mermaid/./node_modules/lodash/_cloneSymbol.js","webpack://mermaid/./node_modules/lodash/_cloneTypedArray.js","webpack://mermaid/./node_modules/lodash/_compareAscending.js","webpack://mermaid/./node_modules/lodash/_compareMultiple.js","webpack://mermaid/./node_modules/lodash/_copyArray.js","webpack://mermaid/./node_modules/lodash/_copyObject.js","webpack://mermaid/./node_modules/lodash/_copySymbols.js","webpack://mermaid/./node_modules/lodash/_copySymbolsIn.js","webpack://mermaid/./node_modules/lodash/_coreJsData.js","webpack://mermaid/./node_modules/lodash/_createAssigner.js","webpack://mermaid/./node_modules/lodash/_createBaseEach.js","webpack://mermaid/./node_modules/lodash/_createBaseFor.js","webpack://mermaid/./node_modules/lodash/_createFind.js","webpack://mermaid/./node_modules/lodash/_createRange.js","webpack://mermaid/./node_modules/lodash/_createSet.js","webpack://mermaid/./node_modules/lodash/_defineProperty.js","webpack://mermaid/./node_modules/lodash/_equalArrays.js","webpack://mermaid/./node_modules/lodash/_equalByTag.js","webpack://mermaid/./node_modules/lodash/_equalObjects.js","webpack://mermaid/./node_modules/lodash/_flatRest.js","webpack://mermaid/./node_modules/lodash/_freeGlobal.js","webpack://mermaid/./node_modules/lodash/_getAllKeys.js","webpack://mermaid/./node_modules/lodash/_getAllKeysIn.js","webpack://mermaid/./node_modules/lodash/_getMapData.js","webpack://mermaid/./node_modules/lodash/_getMatchData.js","webpack://mermaid/./node_modules/lodash/_getNative.js","webpack://mermaid/./node_modules/lodash/_getPrototype.js","webpack://mermaid/./node_modules/lodash/_getRawTag.js","webpack://mermaid/./node_modules/lodash/_getSymbols.js","webpack://mermaid/./node_modules/lodash/_getSymbolsIn.js","webpack://mermaid/./node_modules/lodash/_getTag.js","webpack://mermaid/./node_modules/lodash/_getValue.js","webpack://mermaid/./node_modules/lodash/_hasPath.js","webpack://mermaid/./node_modules/lodash/_hasUnicode.js","webpack://mermaid/./node_modules/lodash/_hashClear.js","webpack://mermaid/./node_modules/lodash/_hashDelete.js","webpack://mermaid/./node_modules/lodash/_hashGet.js","webpack://mermaid/./node_modules/lodash/_hashHas.js","webpack://mermaid/./node_modules/lodash/_hashSet.js","webpack://mermaid/./node_modules/lodash/_initCloneArray.js","webpack://mermaid/./node_modules/lodash/_initCloneByTag.js","webpack://mermaid/./node_modules/lodash/_initCloneObject.js","webpack://mermaid/./node_modules/lodash/_isFlattenable.js","webpack://mermaid/./node_modules/lodash/_isIndex.js","webpack://mermaid/./node_modules/lodash/_isIterateeCall.js","webpack://mermaid/./node_modules/lodash/_isKey.js","webpack://mermaid/./node_modules/lodash/_isKeyable.js","webpack://mermaid/./node_modules/lodash/_isMasked.js","webpack://mermaid/./node_modules/lodash/_isPrototype.js","webpack://mermaid/./node_modules/lodash/_isStrictComparable.js","webpack://mermaid/./node_modules/lodash/_listCacheClear.js","webpack://mermaid/./node_modules/lodash/_listCacheDelete.js","webpack://mermaid/./node_modules/lodash/_listCacheGet.js","webpack://mermaid/./node_modules/lodash/_listCacheHas.js","webpack://mermaid/./node_modules/lodash/_listCacheSet.js","webpack://mermaid/./node_modules/lodash/_mapCacheClear.js","webpack://mermaid/./node_modules/lodash/_mapCacheDelete.js","webpack://mermaid/./node_modules/lodash/_mapCacheGet.js","webpack://mermaid/./node_modules/lodash/_mapCacheHas.js","webpack://mermaid/./node_modules/lodash/_mapCacheSet.js","webpack://mermaid/./node_modules/lodash/_mapToArray.js","webpack://mermaid/./node_modules/lodash/_matchesStrictComparable.js","webpack://mermaid/./node_modules/lodash/_memoizeCapped.js","webpack://mermaid/./node_modules/lodash/_nativeCreate.js","webpack://mermaid/./node_modules/lodash/_nativeKeys.js","webpack://mermaid/./node_modules/lodash/_nativeKeysIn.js","webpack://mermaid/./node_modules/lodash/_nodeUtil.js","webpack://mermaid/./node_modules/lodash/_objectToString.js","webpack://mermaid/./node_modules/lodash/_overArg.js","webpack://mermaid/./node_modules/lodash/_overRest.js","webpack://mermaid/./node_modules/lodash/_root.js","webpack://mermaid/./node_modules/lodash/_safeGet.js","webpack://mermaid/./node_modules/lodash/_setCacheAdd.js","webpack://mermaid/./node_modules/lodash/_setCacheHas.js","webpack://mermaid/./node_modules/lodash/_setToArray.js","webpack://mermaid/./node_modules/lodash/_setToString.js","webpack://mermaid/./node_modules/lodash/_shortOut.js","webpack://mermaid/./node_modules/lodash/_stackClear.js","webpack://mermaid/./node_modules/lodash/_stackDelete.js","webpack://mermaid/./node_modules/lodash/_stackGet.js","webpack://mermaid/./node_modules/lodash/_stackHas.js","webpack://mermaid/./node_modules/lodash/_stackSet.js","webpack://mermaid/./node_modules/lodash/_strictIndexOf.js","webpack://mermaid/./node_modules/lodash/_stringSize.js","webpack://mermaid/./node_modules/lodash/_stringToPath.js","webpack://mermaid/./node_modules/lodash/_toKey.js","webpack://mermaid/./node_modules/lodash/_toSource.js","webpack://mermaid/./node_modules/lodash/_trimmedEndIndex.js","webpack://mermaid/./node_modules/lodash/_unicodeSize.js","webpack://mermaid/./node_modules/lodash/clone.js","webpack://mermaid/./node_modules/lodash/cloneDeep.js","webpack://mermaid/./node_modules/lodash/constant.js","webpack://mermaid/./node_modules/lodash/defaults.js","webpack://mermaid/./node_modules/lodash/each.js","webpack://mermaid/./node_modules/lodash/eq.js","webpack://mermaid/./node_modules/lodash/filter.js","webpack://mermaid/./node_modules/lodash/find.js","webpack://mermaid/./node_modules/lodash/findIndex.js","webpack://mermaid/./node_modules/lodash/flatten.js","webpack://mermaid/./node_modules/lodash/forEach.js","webpack://mermaid/./node_modules/lodash/forIn.js","webpack://mermaid/./node_modules/lodash/get.js","webpack://mermaid/./node_modules/lodash/has.js","webpack://mermaid/./node_modules/lodash/hasIn.js","webpack://mermaid/./node_modules/lodash/identity.js","webpack://mermaid/./node_modules/lodash/isArguments.js","webpack://mermaid/./node_modules/lodash/isArray.js","webpack://mermaid/./node_modules/lodash/isArrayLike.js","webpack://mermaid/./node_modules/lodash/isArrayLikeObject.js","webpack://mermaid/./node_modules/lodash/isBuffer.js","webpack://mermaid/./node_modules/lodash/isEmpty.js","webpack://mermaid/./node_modules/lodash/isFunction.js","webpack://mermaid/./node_modules/lodash/isLength.js","webpack://mermaid/./node_modules/lodash/isMap.js","webpack://mermaid/./node_modules/lodash/isObject.js","webpack://mermaid/./node_modules/lodash/isObjectLike.js","webpack://mermaid/./node_modules/lodash/isPlainObject.js","webpack://mermaid/./node_modules/lodash/isSet.js","webpack://mermaid/./node_modules/lodash/isString.js","webpack://mermaid/./node_modules/lodash/isSymbol.js","webpack://mermaid/./node_modules/lodash/isTypedArray.js","webpack://mermaid/./node_modules/lodash/isUndefined.js","webpack://mermaid/./node_modules/lodash/keys.js","webpack://mermaid/./node_modules/lodash/keysIn.js","webpack://mermaid/./node_modules/lodash/last.js","webpack://mermaid/./node_modules/lodash/map.js","webpack://mermaid/./node_modules/lodash/mapValues.js","webpack://mermaid/./node_modules/lodash/max.js","webpack://mermaid/./node_modules/lodash/memoize.js","webpack://mermaid/./node_modules/lodash/merge.js","webpack://mermaid/./node_modules/lodash/min.js","webpack://mermaid/./node_modules/lodash/minBy.js","webpack://mermaid/./node_modules/lodash/noop.js","webpack://mermaid/./node_modules/lodash/now.js","webpack://mermaid/./node_modules/lodash/pick.js","webpack://mermaid/./node_modules/lodash/property.js","webpack://mermaid/./node_modules/lodash/range.js","webpack://mermaid/./node_modules/lodash/reduce.js","webpack://mermaid/./node_modules/lodash/size.js","webpack://mermaid/./node_modules/lodash/sortBy.js","webpack://mermaid/./node_modules/lodash/stubArray.js","webpack://mermaid/./node_modules/lodash/stubFalse.js","webpack://mermaid/./node_modules/lodash/toFinite.js","webpack://mermaid/./node_modules/lodash/toInteger.js","webpack://mermaid/./node_modules/lodash/toNumber.js","webpack://mermaid/./node_modules/lodash/toPlainObject.js","webpack://mermaid/./node_modules/lodash/toString.js","webpack://mermaid/./node_modules/lodash/transform.js","webpack://mermaid/./node_modules/lodash/union.js","webpack://mermaid/./node_modules/lodash/uniqueId.js","webpack://mermaid/./node_modules/lodash/values.js","webpack://mermaid/./node_modules/lodash/zipObject.js","webpack://mermaid//Users/ashishj/projects/mermaid/node_modules/moment-mini/locale|sync|/^\\.\\/.*$/","webpack://mermaid/./node_modules/moment-mini/moment.min.js","webpack://mermaid/./node_modules/path-browserify/index.js","webpack://mermaid/webpack/bootstrap","webpack://mermaid/webpack/runtime/compat get default export","webpack://mermaid/webpack/runtime/define property getters","webpack://mermaid/webpack/runtime/global","webpack://mermaid/webpack/runtime/hasOwnProperty shorthand","webpack://mermaid/webpack/runtime/make namespace object","webpack://mermaid/webpack/runtime/node module decorator","webpack://mermaid/webpack/startup"],"sourcesContent":["/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,6],$V1=[1,7],$V2=[1,8],$V3=[1,9],$V4=[1,12],$V5=[1,11],$V6=[1,15,24],$V7=[1,19],$V8=[1,31],$V9=[1,34],$Va=[1,32],$Vb=[1,33],$Vc=[1,35],$Vd=[1,36],$Ve=[1,37],$Vf=[1,38],$Vg=[1,41],$Vh=[1,42],$Vi=[1,43],$Vj=[1,44],$Vk=[15,24],$Vl=[1,56],$Vm=[1,57],$Vn=[1,58],$Vo=[1,59],$Vp=[1,60],$Vq=[1,61],$Vr=[15,24,31,38,39,47,50,51,52,53,54,55,60,62],$Vs=[15,24,29,31,38,39,43,47,50,51,52,53,54,55,60,62,77,78,79,80],$Vt=[7,8,9,10,15,18,22,24],$Vu=[47,77,78,79,80],$Vv=[47,54,55,77,78,79,80],$Vw=[47,50,51,52,53,77,78,79,80],$Vx=[15,24,31],$Vy=[1,93];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"mermaidDoc\":4,\"direction\":5,\"directive\":6,\"direction_tb\":7,\"direction_bt\":8,\"direction_rl\":9,\"direction_lr\":10,\"graphConfig\":11,\"openDirective\":12,\"typeDirective\":13,\"closeDirective\":14,\"NEWLINE\":15,\":\":16,\"argDirective\":17,\"open_directive\":18,\"type_directive\":19,\"arg_directive\":20,\"close_directive\":21,\"CLASS_DIAGRAM\":22,\"statements\":23,\"EOF\":24,\"statement\":25,\"className\":26,\"alphaNumToken\":27,\"classLiteralName\":28,\"GENERICTYPE\":29,\"relationStatement\":30,\"LABEL\":31,\"classStatement\":32,\"methodStatement\":33,\"annotationStatement\":34,\"clickStatement\":35,\"cssClassStatement\":36,\"CLASS\":37,\"STYLE_SEPARATOR\":38,\"STRUCT_START\":39,\"members\":40,\"STRUCT_STOP\":41,\"ANNOTATION_START\":42,\"ANNOTATION_END\":43,\"MEMBER\":44,\"SEPARATOR\":45,\"relation\":46,\"STR\":47,\"relationType\":48,\"lineType\":49,\"AGGREGATION\":50,\"EXTENSION\":51,\"COMPOSITION\":52,\"DEPENDENCY\":53,\"LINE\":54,\"DOTTED_LINE\":55,\"CALLBACK\":56,\"LINK\":57,\"LINK_TARGET\":58,\"CLICK\":59,\"CALLBACK_NAME\":60,\"CALLBACK_ARGS\":61,\"HREF\":62,\"CSSCLASS\":63,\"commentToken\":64,\"textToken\":65,\"graphCodeTokens\":66,\"textNoTagsToken\":67,\"TAGSTART\":68,\"TAGEND\":69,\"==\":70,\"--\":71,\"PCT\":72,\"DEFAULT\":73,\"SPACE\":74,\"MINUS\":75,\"keywords\":76,\"UNICODE_TEXT\":77,\"NUM\":78,\"ALPHA\":79,\"BQUOTE_STR\":80,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",7:\"direction_tb\",8:\"direction_bt\",9:\"direction_rl\",10:\"direction_lr\",15:\"NEWLINE\",16:\":\",18:\"open_directive\",19:\"type_directive\",20:\"arg_directive\",21:\"close_directive\",22:\"CLASS_DIAGRAM\",24:\"EOF\",29:\"GENERICTYPE\",31:\"LABEL\",37:\"CLASS\",38:\"STYLE_SEPARATOR\",39:\"STRUCT_START\",41:\"STRUCT_STOP\",42:\"ANNOTATION_START\",43:\"ANNOTATION_END\",44:\"MEMBER\",45:\"SEPARATOR\",47:\"STR\",50:\"AGGREGATION\",51:\"EXTENSION\",52:\"COMPOSITION\",53:\"DEPENDENCY\",54:\"LINE\",55:\"DOTTED_LINE\",56:\"CALLBACK\",57:\"LINK\",58:\"LINK_TARGET\",59:\"CLICK\",60:\"CALLBACK_NAME\",61:\"CALLBACK_ARGS\",62:\"HREF\",63:\"CSSCLASS\",66:\"graphCodeTokens\",68:\"TAGSTART\",69:\"TAGEND\",70:\"==\",71:\"--\",72:\"PCT\",73:\"DEFAULT\",74:\"SPACE\",75:\"MINUS\",76:\"keywords\",77:\"UNICODE_TEXT\",78:\"NUM\",79:\"ALPHA\",80:\"BQUOTE_STR\"},\nproductions_: [0,[3,1],[3,1],[3,2],[5,1],[5,1],[5,1],[5,1],[4,1],[6,4],[6,6],[12,1],[13,1],[17,1],[14,1],[11,4],[23,1],[23,2],[23,3],[26,1],[26,1],[26,2],[26,2],[26,2],[25,1],[25,2],[25,1],[25,1],[25,1],[25,1],[25,1],[25,1],[25,1],[32,2],[32,4],[32,5],[32,7],[34,4],[40,1],[40,2],[33,1],[33,2],[33,1],[33,1],[30,3],[30,4],[30,4],[30,5],[46,3],[46,2],[46,2],[46,1],[48,1],[48,1],[48,1],[48,1],[49,1],[49,1],[35,3],[35,4],[35,3],[35,4],[35,4],[35,5],[35,3],[35,4],[35,4],[35,5],[35,3],[35,4],[35,4],[35,5],[36,3],[64,1],[64,1],[65,1],[65,1],[65,1],[65,1],[65,1],[65,1],[65,1],[67,1],[67,1],[67,1],[67,1],[27,1],[27,1],[27,1],[28,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 4:\n yy.setDirection('TB');\nbreak;\ncase 5:\n yy.setDirection('BT');\nbreak;\ncase 6:\n yy.setDirection('RL');\nbreak;\ncase 7:\n yy.setDirection('LR');\nbreak;\ncase 11:\n yy.parseDirective('%%{', 'open_directive'); \nbreak;\ncase 12:\n yy.parseDirective($$[$0], 'type_directive'); \nbreak;\ncase 13:\n $$[$0] = $$[$0].trim().replace(/'/g, '\"'); yy.parseDirective($$[$0], 'arg_directive'); \nbreak;\ncase 14:\n yy.parseDirective('}%%', 'close_directive', 'class'); \nbreak;\ncase 19: case 20:\n this.$=$$[$0]; \nbreak;\ncase 21:\n this.$=$$[$0-1]+$$[$0]; \nbreak;\ncase 22: case 23:\n this.$=$$[$0-1]+'~'+$$[$0]; \nbreak;\ncase 24:\n yy.addRelation($$[$0]); \nbreak;\ncase 25:\n $$[$0-1].title = yy.cleanupLabel($$[$0]); yy.addRelation($$[$0-1]); \nbreak;\ncase 33:\nyy.addClass($$[$0]);\nbreak;\ncase 34:\nyy.addClass($$[$0-2]);yy.setCssClass($$[$0-2], $$[$0]);\nbreak;\ncase 35:\n/*console.log($$[$0-3],JSON.stringify($$[$0-1]));*/yy.addClass($$[$0-3]);yy.addMembers($$[$0-3],$$[$0-1]);\nbreak;\ncase 36:\nyy.addClass($$[$0-5]);yy.setCssClass($$[$0-5], $$[$0-3]);yy.addMembers($$[$0-5],$$[$0-1]);\nbreak;\ncase 37:\n yy.addAnnotation($$[$0],$$[$0-2]); \nbreak;\ncase 38:\n this.$ = [$$[$0]]; \nbreak;\ncase 39:\n $$[$0].push($$[$0-1]);this.$=$$[$0];\nbreak;\ncase 40:\n/*console.log('Rel found',$$[$0]);*/\nbreak;\ncase 41:\nyy.addMember($$[$0-1],yy.cleanupLabel($$[$0]));\nbreak;\ncase 42:\n/*console.warn('Member',$$[$0]);*/\nbreak;\ncase 43:\n/*console.log('sep found',$$[$0]);*/\nbreak;\ncase 44:\n this.$ = {'id1':$$[$0-2],'id2':$$[$0], relation:$$[$0-1], relationTitle1:'none', relationTitle2:'none'}; \nbreak;\ncase 45:\n this.$ = {id1:$$[$0-3], id2:$$[$0], relation:$$[$0-1], relationTitle1:$$[$0-2], relationTitle2:'none'}\nbreak;\ncase 46:\n this.$ = {id1:$$[$0-3], id2:$$[$0], relation:$$[$0-2], relationTitle1:'none', relationTitle2:$$[$0-1]}; \nbreak;\ncase 47:\n this.$ = {id1:$$[$0-4], id2:$$[$0], relation:$$[$0-2], relationTitle1:$$[$0-3], relationTitle2:$$[$0-1]} \nbreak;\ncase 48:\n this.$={type1:$$[$0-2],type2:$$[$0],lineType:$$[$0-1]}; \nbreak;\ncase 49:\n this.$={type1:'none',type2:$$[$0],lineType:$$[$0-1]}; \nbreak;\ncase 50:\n this.$={type1:$$[$0-1],type2:'none',lineType:$$[$0]}; \nbreak;\ncase 51:\n this.$={type1:'none',type2:'none',lineType:$$[$0]}; \nbreak;\ncase 52:\n this.$=yy.relationType.AGGREGATION;\nbreak;\ncase 53:\n this.$=yy.relationType.EXTENSION;\nbreak;\ncase 54:\n this.$=yy.relationType.COMPOSITION;\nbreak;\ncase 55:\n this.$=yy.relationType.DEPENDENCY;\nbreak;\ncase 56:\nthis.$=yy.lineType.LINE;\nbreak;\ncase 57:\nthis.$=yy.lineType.DOTTED_LINE;\nbreak;\ncase 58: case 64:\nthis.$ = $$[$0-2];yy.setClickEvent($$[$0-1], $$[$0]);\nbreak;\ncase 59: case 65:\nthis.$ = $$[$0-3];yy.setClickEvent($$[$0-2], $$[$0-1]);yy.setTooltip($$[$0-2], $$[$0]);\nbreak;\ncase 60: case 68:\nthis.$ = $$[$0-2];yy.setLink($$[$0-1], $$[$0]);\nbreak;\ncase 61:\nthis.$ = $$[$0-3];yy.setLink($$[$0-2], $$[$0-1],$$[$0]);\nbreak;\ncase 62: case 70:\nthis.$ = $$[$0-3];yy.setLink($$[$0-2], $$[$0-1]);yy.setTooltip($$[$0-2], $$[$0]);\nbreak;\ncase 63: case 71:\nthis.$ = $$[$0-4];yy.setLink($$[$0-3], $$[$0-2], $$[$0]);yy.setTooltip($$[$0-3], $$[$0-1]);\nbreak;\ncase 66:\nthis.$ = $$[$0-3];yy.setClickEvent($$[$0-2], $$[$0-1], $$[$0]);\nbreak;\ncase 67:\nthis.$ = $$[$0-4];yy.setClickEvent($$[$0-3], $$[$0-2], $$[$0-1]);yy.setTooltip($$[$0-3], $$[$0]);\nbreak;\ncase 69:\nthis.$ = $$[$0-3];yy.setLink($$[$0-2], $$[$0-1], $$[$0]);\nbreak;\ncase 72:\nyy.setCssClass($$[$0-1], $$[$0]);\nbreak;\n}\n},\ntable: [{3:1,4:2,5:3,6:4,7:$V0,8:$V1,9:$V2,10:$V3,11:5,12:10,18:$V4,22:$V5},{1:[3]},{1:[2,1]},{1:[2,2]},{3:13,4:2,5:3,6:4,7:$V0,8:$V1,9:$V2,10:$V3,11:5,12:10,18:$V4,22:$V5},{1:[2,8]},o($V6,[2,4]),o($V6,[2,5]),o($V6,[2,6]),o($V6,[2,7]),{13:14,19:[1,15]},{15:[1,16]},{19:[2,11]},{1:[2,3]},{14:17,16:[1,18],21:$V7},o([16,21],[2,12]),{5:29,6:28,7:$V0,8:$V1,9:$V2,10:$V3,12:10,18:$V4,23:20,25:21,26:30,27:39,28:40,30:22,32:23,33:24,34:25,35:26,36:27,37:$V8,42:$V9,44:$Va,45:$Vb,56:$Vc,57:$Vd,59:$Ve,63:$Vf,77:$Vg,78:$Vh,79:$Vi,80:$Vj},{15:[1,45]},{17:46,20:[1,47]},{15:[2,14]},{24:[1,48]},{15:[1,49],24:[2,16]},o($Vk,[2,24],{31:[1,50]}),o($Vk,[2,26]),o($Vk,[2,27]),o($Vk,[2,28]),o($Vk,[2,29]),o($Vk,[2,30]),o($Vk,[2,31]),o($Vk,[2,32]),o($Vk,[2,40],{46:51,48:54,49:55,31:[1,53],47:[1,52],50:$Vl,51:$Vm,52:$Vn,53:$Vo,54:$Vp,55:$Vq}),{26:62,27:39,28:40,77:$Vg,78:$Vh,79:$Vi,80:$Vj},o($Vk,[2,42]),o($Vk,[2,43]),{27:63,77:$Vg,78:$Vh,79:$Vi},{26:64,27:39,28:40,77:$Vg,78:$Vh,79:$Vi,80:$Vj},{26:65,27:39,28:40,77:$Vg,78:$Vh,79:$Vi,80:$Vj},{26:66,27:39,28:40,77:$Vg,78:$Vh,79:$Vi,80:$Vj},{47:[1,67]},o($Vr,[2,19],{27:39,28:40,26:68,29:[1,69],77:$Vg,78:$Vh,79:$Vi,80:$Vj}),o($Vr,[2,20],{29:[1,70]}),o($Vs,[2,86]),o($Vs,[2,87]),o($Vs,[2,88]),o([15,24,29,31,38,39,47,50,51,52,53,54,55,60,62],[2,89]),o($Vt,[2,9]),{14:71,21:$V7},{21:[2,13]},{1:[2,15]},{5:29,6:28,7:$V0,8:$V1,9:$V2,10:$V3,12:10,18:$V4,23:72,24:[2,17],25:21,26:30,27:39,28:40,30:22,32:23,33:24,34:25,35:26,36:27,37:$V8,42:$V9,44:$Va,45:$Vb,56:$Vc,57:$Vd,59:$Ve,63:$Vf,77:$Vg,78:$Vh,79:$Vi,80:$Vj},o($Vk,[2,25]),{26:73,27:39,28:40,47:[1,74],77:$Vg,78:$Vh,79:$Vi,80:$Vj},{46:75,48:54,49:55,50:$Vl,51:$Vm,52:$Vn,53:$Vo,54:$Vp,55:$Vq},o($Vk,[2,41]),{49:76,54:$Vp,55:$Vq},o($Vu,[2,51],{48:77,50:$Vl,51:$Vm,52:$Vn,53:$Vo}),o($Vv,[2,52]),o($Vv,[2,53]),o($Vv,[2,54]),o($Vv,[2,55]),o($Vw,[2,56]),o($Vw,[2,57]),o($Vk,[2,33],{38:[1,78],39:[1,79]}),{43:[1,80]},{47:[1,81]},{47:[1,82]},{60:[1,83],62:[1,84]},{27:85,77:$Vg,78:$Vh,79:$Vi},o($Vr,[2,21]),o($Vr,[2,22]),o($Vr,[2,23]),{15:[1,86]},{24:[2,18]},o($Vx,[2,44]),{26:87,27:39,28:40,77:$Vg,78:$Vh,79:$Vi,80:$Vj},{26:88,27:39,28:40,47:[1,89],77:$Vg,78:$Vh,79:$Vi,80:$Vj},o($Vu,[2,50],{48:90,50:$Vl,51:$Vm,52:$Vn,53:$Vo}),o($Vu,[2,49]),{27:91,77:$Vg,78:$Vh,79:$Vi},{40:92,44:$Vy},{26:94,27:39,28:40,77:$Vg,78:$Vh,79:$Vi,80:$Vj},o($Vk,[2,58],{47:[1,95]}),o($Vk,[2,60],{47:[1,97],58:[1,96]}),o($Vk,[2,64],{47:[1,98],61:[1,99]}),o($Vk,[2,68],{47:[1,101],58:[1,100]}),o($Vk,[2,72]),o($Vt,[2,10]),o($Vx,[2,46]),o($Vx,[2,45]),{26:102,27:39,28:40,77:$Vg,78:$Vh,79:$Vi,80:$Vj},o($Vu,[2,48]),o($Vk,[2,34],{39:[1,103]}),{41:[1,104]},{40:105,41:[2,38],44:$Vy},o($Vk,[2,37]),o($Vk,[2,59]),o($Vk,[2,61]),o($Vk,[2,62],{58:[1,106]}),o($Vk,[2,65]),o($Vk,[2,66],{47:[1,107]}),o($Vk,[2,69]),o($Vk,[2,70],{58:[1,108]}),o($Vx,[2,47]),{40:109,44:$Vy},o($Vk,[2,35]),{41:[2,39]},o($Vk,[2,63]),o($Vk,[2,67]),o($Vk,[2,71]),{41:[1,110]},o($Vk,[2,36])],\ndefaultActions: {2:[2,1],3:[2,2],5:[2,8],12:[2,11],13:[2,3],19:[2,14],47:[2,13],48:[2,15],72:[2,18],105:[2,39]},\nparseError: function parseError (str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer.lex() || EOF;\n if (typeof token !== 'number') {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0: this.begin('open_directive'); return 18; \nbreak;\ncase 1:return 7;\nbreak;\ncase 2:return 8;\nbreak;\ncase 3:return 9;\nbreak;\ncase 4:return 10;\nbreak;\ncase 5: this.begin('type_directive'); return 19; \nbreak;\ncase 6: this.popState(); this.begin('arg_directive'); return 16; \nbreak;\ncase 7: this.popState(); this.popState(); return 21; \nbreak;\ncase 8:return 20;\nbreak;\ncase 9:/* skip comments */\nbreak;\ncase 10:/* skip comments */\nbreak;\ncase 11:return 15;\nbreak;\ncase 12:/* skip whitespace */\nbreak;\ncase 13:return 22;\nbreak;\ncase 14:return 22;\nbreak;\ncase 15: this.begin(\"struct\"); /*console.log('Starting struct');*/ return 39;\nbreak;\ncase 16:return \"EOF_IN_STRUCT\";\nbreak;\ncase 17:return \"OPEN_IN_STRUCT\";\nbreak;\ncase 18: /*console.log('Ending struct');*/this.popState(); return 41;\nbreak;\ncase 19:/* nothing */\nbreak;\ncase 20: /*console.log('lex-member: ' + yy_.yytext);*/ return \"MEMBER\";\nbreak;\ncase 21:return 37;\nbreak;\ncase 22:return 63;\nbreak;\ncase 23:return 56;\nbreak;\ncase 24:return 57;\nbreak;\ncase 25:return 59;\nbreak;\ncase 26:return 42;\nbreak;\ncase 27:return 43;\nbreak;\ncase 28:this.begin(\"generic\");\nbreak;\ncase 29:this.popState();\nbreak;\ncase 30:return \"GENERICTYPE\";\nbreak;\ncase 31:this.begin(\"string\");\nbreak;\ncase 32:this.popState();\nbreak;\ncase 33:return \"STR\";\nbreak;\ncase 34:this.begin(\"bqstring\");\nbreak;\ncase 35:this.popState();\nbreak;\ncase 36:return \"BQUOTE_STR\";\nbreak;\ncase 37:this.begin(\"href\");\nbreak;\ncase 38:this.popState();\nbreak;\ncase 39:return 62;\nbreak;\ncase 40:this.begin(\"callback_name\");\nbreak;\ncase 41:this.popState();\nbreak;\ncase 42:this.popState(); this.begin(\"callback_args\");\nbreak;\ncase 43:return 60;\nbreak;\ncase 44:this.popState();\nbreak;\ncase 45:return 61;\nbreak;\ncase 46:return 58;\nbreak;\ncase 47:return 58;\nbreak;\ncase 48:return 58;\nbreak;\ncase 49:return 58;\nbreak;\ncase 50:return 51;\nbreak;\ncase 51:return 51;\nbreak;\ncase 52:return 53;\nbreak;\ncase 53:return 53;\nbreak;\ncase 54:return 52;\nbreak;\ncase 55:return 50;\nbreak;\ncase 56:return 54;\nbreak;\ncase 57:return 55;\nbreak;\ncase 58:return 31;\nbreak;\ncase 59:return 38;\nbreak;\ncase 60:return 75;\nbreak;\ncase 61:return 'DOT';\nbreak;\ncase 62:return 'PLUS';\nbreak;\ncase 63:return 72;\nbreak;\ncase 64:return 'EQUALS';\nbreak;\ncase 65:return 'EQUALS';\nbreak;\ncase 66:return 79;\nbreak;\ncase 67:return 'PUNCTUATION';\nbreak;\ncase 68:return 78;\nbreak;\ncase 69:return 77;\nbreak;\ncase 70:return 74;\nbreak;\ncase 71:return 24;\nbreak;\n}\n},\nrules: [/^(?:%%\\{)/,/^(?:.*direction\\s+TB[^\\n]*)/,/^(?:.*direction\\s+BT[^\\n]*)/,/^(?:.*direction\\s+RL[^\\n]*)/,/^(?:.*direction\\s+LR[^\\n]*)/,/^(?:((?:(?!\\}%%)[^:.])*))/,/^(?::)/,/^(?:\\}%%)/,/^(?:((?:(?!\\}%%).|\\n)*))/,/^(?:%%(?!\\{)*[^\\n]*(\\r?\\n?)+)/,/^(?:%%[^\\n]*(\\r?\\n)*)/,/^(?:\\s*(\\r?\\n)+)/,/^(?:\\s+)/,/^(?:classDiagram-v2\\b)/,/^(?:classDiagram\\b)/,/^(?:[{])/,/^(?:$)/,/^(?:[{])/,/^(?:[}])/,/^(?:[\\n])/,/^(?:[^{}\\n]*)/,/^(?:class\\b)/,/^(?:cssClass\\b)/,/^(?:callback\\b)/,/^(?:link\\b)/,/^(?:click\\b)/,/^(?:<<)/,/^(?:>>)/,/^(?:[~])/,/^(?:[~])/,/^(?:[^~]*)/,/^(?:[\"])/,/^(?:[\"])/,/^(?:[^\"]*)/,/^(?:[`])/,/^(?:[`])/,/^(?:[^`]+)/,/^(?:href[\\s]+[\"])/,/^(?:[\"])/,/^(?:[^\"]*)/,/^(?:call[\\s]+)/,/^(?:\\([\\s]*\\))/,/^(?:\\()/,/^(?:[^(]*)/,/^(?:\\))/,/^(?:[^)]*)/,/^(?:_self\\b)/,/^(?:_blank\\b)/,/^(?:_parent\\b)/,/^(?:_top\\b)/,/^(?:\\s*<\\|)/,/^(?:\\s*\\|>)/,/^(?:\\s*>)/,/^(?:\\s*<)/,/^(?:\\s*\\*)/,/^(?:\\s*o\\b)/,/^(?:--)/,/^(?:\\.\\.)/,/^(?::{1}[^:\\n;]+)/,/^(?::{3})/,/^(?:-)/,/^(?:\\.)/,/^(?:\\+)/,/^(?:%)/,/^(?:=)/,/^(?:=)/,/^(?:\\w+)/,/^(?:[!\"#$%&'*+,-.`?\\\\/])/,/^(?:[0-9]+)/,/^(?:[\\u00AA\\u00B5\\u00BA\\u00C0-\\u00D6\\u00D8-\\u00F6]|[\\u00F8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377]|[\\u037A-\\u037D\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5]|[\\u03F7-\\u0481\\u048A-\\u0527\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA]|[\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE]|[\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA]|[\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0]|[\\u08A2-\\u08AC\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0977]|[\\u0979-\\u097F\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2]|[\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A]|[\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39]|[\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8]|[\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C]|[\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C]|[\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99]|[\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0]|[\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C33\\u0C35-\\u0C39\\u0C3D]|[\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3]|[\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10]|[\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1]|[\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81]|[\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3]|[\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6]|[\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A]|[\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081]|[\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D]|[\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0]|[\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310]|[\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C]|[\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u1700-\\u170C\\u170E-\\u1711]|[\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7]|[\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191C]|[\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16]|[\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF]|[\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC]|[\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D]|[\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D]|[\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3]|[\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F]|[\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128]|[\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184]|[\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3]|[\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6]|[\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE]|[\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C]|[\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D]|[\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC]|[\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B]|[\\uA640-\\uA66E\\uA67F-\\uA697\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788]|[\\uA78B-\\uA78E\\uA790-\\uA793\\uA7A0-\\uA7AA\\uA7F8-\\uA801\\uA803-\\uA805]|[\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB]|[\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uAA00-\\uAA28]|[\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA80-\\uAAAF\\uAAB1\\uAAB5]|[\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4]|[\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E]|[\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D]|[\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36]|[\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D]|[\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC]|[\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF]|[\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC])/,/^(?:\\s)/,/^(?:$)/],\nconditions: {\"arg_directive\":{\"rules\":[7,8],\"inclusive\":false},\"type_directive\":{\"rules\":[6,7],\"inclusive\":false},\"open_directive\":{\"rules\":[5],\"inclusive\":false},\"callback_args\":{\"rules\":[44,45],\"inclusive\":false},\"callback_name\":{\"rules\":[41,42,43],\"inclusive\":false},\"href\":{\"rules\":[38,39],\"inclusive\":false},\"struct\":{\"rules\":[16,17,18,19,20],\"inclusive\":false},\"generic\":{\"rules\":[29,30],\"inclusive\":false},\"bqstring\":{\"rules\":[35,36],\"inclusive\":false},\"string\":{\"rules\":[32,33],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,1,2,3,4,9,10,11,12,13,14,15,21,22,23,24,25,26,27,28,31,34,37,40,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain (args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}","/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,2],$V1=[1,5],$V2=[6,9,11,23,25,27,45],$V3=[1,17],$V4=[1,18],$V5=[1,19],$V6=[1,22],$V7=[1,27],$V8=[1,28],$V9=[1,29],$Va=[1,30],$Vb=[1,41],$Vc=[27,42,43],$Vd=[4,6,9,11,23,25,27,45],$Ve=[38,39,40,41],$Vf=[22,33],$Vg=[1,59];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"ER_DIAGRAM\":4,\"document\":5,\"EOF\":6,\"directive\":7,\"line\":8,\"SPACE\":9,\"statement\":10,\"NEWLINE\":11,\"openDirective\":12,\"typeDirective\":13,\"closeDirective\":14,\":\":15,\"argDirective\":16,\"entityName\":17,\"relSpec\":18,\"role\":19,\"BLOCK_START\":20,\"attributes\":21,\"BLOCK_STOP\":22,\"title\":23,\"title_value\":24,\"accDescription\":25,\"description_value\":26,\"ALPHANUM\":27,\"attribute\":28,\"attributeType\":29,\"attributeName\":30,\"attributeKeyType\":31,\"attributeComment\":32,\"ATTRIBUTE_WORD\":33,\"ATTRIBUTE_KEY\":34,\"COMMENT\":35,\"cardinality\":36,\"relType\":37,\"ZERO_OR_ONE\":38,\"ZERO_OR_MORE\":39,\"ONE_OR_MORE\":40,\"ONLY_ONE\":41,\"NON_IDENTIFYING\":42,\"IDENTIFYING\":43,\"WORD\":44,\"open_directive\":45,\"type_directive\":46,\"arg_directive\":47,\"close_directive\":48,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",4:\"ER_DIAGRAM\",6:\"EOF\",9:\"SPACE\",11:\"NEWLINE\",15:\":\",20:\"BLOCK_START\",22:\"BLOCK_STOP\",23:\"title\",24:\"title_value\",25:\"accDescription\",26:\"description_value\",27:\"ALPHANUM\",33:\"ATTRIBUTE_WORD\",34:\"ATTRIBUTE_KEY\",35:\"COMMENT\",38:\"ZERO_OR_ONE\",39:\"ZERO_OR_MORE\",40:\"ONE_OR_MORE\",41:\"ONLY_ONE\",42:\"NON_IDENTIFYING\",43:\"IDENTIFYING\",44:\"WORD\",45:\"open_directive\",46:\"type_directive\",47:\"arg_directive\",48:\"close_directive\"},\nproductions_: [0,[3,3],[3,2],[5,0],[5,2],[8,2],[8,1],[8,1],[8,1],[7,4],[7,6],[10,1],[10,5],[10,4],[10,3],[10,1],[10,2],[10,2],[17,1],[21,1],[21,2],[28,2],[28,3],[28,3],[28,4],[29,1],[30,1],[31,1],[32,1],[18,3],[36,1],[36,1],[36,1],[36,1],[37,1],[37,1],[19,1],[19,1],[12,1],[13,1],[16,1],[14,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 1:\n /*console.log('finished parsing');*/ \nbreak;\ncase 3:\n this.$ = [] \nbreak;\ncase 4:\n$$[$0-1].push($$[$0]);this.$ = $$[$0-1]\nbreak;\ncase 5: case 6:\n this.$ = $$[$0] \nbreak;\ncase 7: case 8:\n this.$=[];\nbreak;\ncase 12:\n\n yy.addEntity($$[$0-4]);\n yy.addEntity($$[$0-2]);\n yy.addRelationship($$[$0-4], $$[$0], $$[$0-2], $$[$0-3]);\n /*console.log($$[$0-4] + $$[$0-3] + $$[$0-2] + ':' + $$[$0]);*/\n \nbreak;\ncase 13:\n\n /* console.log('detected block'); */\n yy.addEntity($$[$0-3]);\n yy.addAttributes($$[$0-3], $$[$0-1]);\n /* console.log('handled block'); */\n \nbreak;\ncase 14:\n yy.addEntity($$[$0-2]); \nbreak;\ncase 15:\n yy.addEntity($$[$0]); \nbreak;\ncase 16:\n this.$=$$[$0].trim();yy.setTitle(this.$); \nbreak;\ncase 17:\n this.$=$$[$0].trim();yy.setAccDescription(this.$); \nbreak;\ncase 18:\n this.$ = $$[$0]; /*console.log('Entity: ' + $$[$0]);*/ \nbreak;\ncase 19:\n this.$ = [$$[$0]]; \nbreak;\ncase 20:\n $$[$0].push($$[$0-1]); this.$=$$[$0]; \nbreak;\ncase 21:\n this.$ = { attributeType: $$[$0-1], attributeName: $$[$0] }; \nbreak;\ncase 22:\n this.$ = { attributeType: $$[$0-2], attributeName: $$[$0-1], attributeKeyType: $$[$0] }; \nbreak;\ncase 23:\n this.$ = { attributeType: $$[$0-2], attributeName: $$[$0-1], attributeComment: $$[$0] }; \nbreak;\ncase 24:\n this.$ = { attributeType: $$[$0-3], attributeName: $$[$0-2], attributeKeyType: $$[$0-1], attributeComment: $$[$0] }; \nbreak;\ncase 25: case 26: case 27:\n this.$=$$[$0]; \nbreak;\ncase 28:\n this.$=$$[$0].replace(/\"/g, ''); \nbreak;\ncase 29:\n\n this.$ = { cardA: $$[$0], relType: $$[$0-1], cardB: $$[$0-2] };\n /*console.log('relSpec: ' + $$[$0] + $$[$0-1] + $$[$0-2]);*/\n \nbreak;\ncase 30:\n this.$ = yy.Cardinality.ZERO_OR_ONE; \nbreak;\ncase 31:\n this.$ = yy.Cardinality.ZERO_OR_MORE; \nbreak;\ncase 32:\n this.$ = yy.Cardinality.ONE_OR_MORE; \nbreak;\ncase 33:\n this.$ = yy.Cardinality.ONLY_ONE; \nbreak;\ncase 34:\n this.$ = yy.Identification.NON_IDENTIFYING; \nbreak;\ncase 35:\n this.$ = yy.Identification.IDENTIFYING; \nbreak;\ncase 36:\n this.$ = $$[$0].replace(/\"/g, ''); \nbreak;\ncase 37:\n this.$ = $$[$0]; \nbreak;\ncase 38:\n yy.parseDirective('%%{', 'open_directive'); \nbreak;\ncase 39:\n yy.parseDirective($$[$0], 'type_directive'); \nbreak;\ncase 40:\n $$[$0] = $$[$0].trim().replace(/'/g, '\"'); yy.parseDirective($$[$0], 'arg_directive'); \nbreak;\ncase 41:\n yy.parseDirective('}%%', 'close_directive', 'er'); \nbreak;\n}\n},\ntable: [{3:1,4:$V0,7:3,12:4,45:$V1},{1:[3]},o($V2,[2,3],{5:6}),{3:7,4:$V0,7:3,12:4,45:$V1},{13:8,46:[1,9]},{46:[2,38]},{6:[1,10],7:15,8:11,9:[1,12],10:13,11:[1,14],12:4,17:16,23:$V3,25:$V4,27:$V5,45:$V1},{1:[2,2]},{14:20,15:[1,21],48:$V6},o([15,48],[2,39]),o($V2,[2,8],{1:[2,1]}),o($V2,[2,4]),{7:15,10:23,12:4,17:16,23:$V3,25:$V4,27:$V5,45:$V1},o($V2,[2,6]),o($V2,[2,7]),o($V2,[2,11]),o($V2,[2,15],{18:24,36:26,20:[1,25],38:$V7,39:$V8,40:$V9,41:$Va}),{24:[1,31]},{26:[1,32]},o([6,9,11,15,20,23,25,27,38,39,40,41,45],[2,18]),{11:[1,33]},{16:34,47:[1,35]},{11:[2,41]},o($V2,[2,5]),{17:36,27:$V5},{21:37,22:[1,38],28:39,29:40,33:$Vb},{37:42,42:[1,43],43:[1,44]},o($Vc,[2,30]),o($Vc,[2,31]),o($Vc,[2,32]),o($Vc,[2,33]),o($V2,[2,16]),o($V2,[2,17]),o($Vd,[2,9]),{14:45,48:$V6},{48:[2,40]},{15:[1,46]},{22:[1,47]},o($V2,[2,14]),{21:48,22:[2,19],28:39,29:40,33:$Vb},{30:49,33:[1,50]},{33:[2,25]},{36:51,38:$V7,39:$V8,40:$V9,41:$Va},o($Ve,[2,34]),o($Ve,[2,35]),{11:[1,52]},{19:53,27:[1,55],44:[1,54]},o($V2,[2,13]),{22:[2,20]},o($Vf,[2,21],{31:56,32:57,34:[1,58],35:$Vg}),o([22,33,34,35],[2,26]),{27:[2,29]},o($Vd,[2,10]),o($V2,[2,12]),o($V2,[2,36]),o($V2,[2,37]),o($Vf,[2,22],{32:60,35:$Vg}),o($Vf,[2,23]),o([22,33,35],[2,27]),o($Vf,[2,28]),o($Vf,[2,24])],\ndefaultActions: {5:[2,38],7:[2,2],22:[2,41],35:[2,40],41:[2,25],48:[2,20],51:[2,29]},\nparseError: function parseError (str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer.lex() || EOF;\n if (typeof token !== 'number') {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {\"case-insensitive\":true},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0: this.begin(\"title\");return 23; \nbreak;\ncase 1: this.popState(); return \"title_value\"; \nbreak;\ncase 2: this.begin(\"accDescription\");return 25; \nbreak;\ncase 3: this.popState(); return \"description_value\"; \nbreak;\ncase 4: this.begin('open_directive'); return 45; \nbreak;\ncase 5: this.begin('type_directive'); return 46; \nbreak;\ncase 6: this.popState(); this.begin('arg_directive'); return 15; \nbreak;\ncase 7: this.popState(); this.popState(); return 48; \nbreak;\ncase 8:return 47;\nbreak;\ncase 9:/* skip comments */\nbreak;\ncase 10:/* skip comments */\nbreak;\ncase 11:return 11;\nbreak;\ncase 12:/* skip whitespace */\nbreak;\ncase 13:return 9;\nbreak;\ncase 14:return 44;\nbreak;\ncase 15:return 4;\nbreak;\ncase 16: this.begin(\"block\"); return 20; \nbreak;\ncase 17:/* skip whitespace in block */\nbreak;\ncase 18:return 34\nbreak;\ncase 19:return 33\nbreak;\ncase 20:return 35;\nbreak;\ncase 21:/* nothing */\nbreak;\ncase 22: this.popState(); return 22; \nbreak;\ncase 23:return yy_.yytext[0];\nbreak;\ncase 24:return 38;\nbreak;\ncase 25:return 39;\nbreak;\ncase 26:return 40;\nbreak;\ncase 27:return 41;\nbreak;\ncase 28:return 38;\nbreak;\ncase 29:return 39;\nbreak;\ncase 30:return 40;\nbreak;\ncase 31:return 42;\nbreak;\ncase 32:return 43;\nbreak;\ncase 33:return 42;\nbreak;\ncase 34:return 42;\nbreak;\ncase 35:return 27;\nbreak;\ncase 36:return yy_.yytext[0];\nbreak;\ncase 37:return 6;\nbreak;\n}\n},\nrules: [/^(?:title\\b)/i,/^(?:(?!\\n||)*[^\\n]*)/i,/^(?:accDescription\\b)/i,/^(?:(?!\\n||)*[^\\n]*)/i,/^(?:%%\\{)/i,/^(?:((?:(?!\\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\\}%%)/i,/^(?:((?:(?!\\}%%).|\\n)*))/i,/^(?:%(?!\\{)[^\\n]*)/i,/^(?:[^\\}]%%[^\\n]*)/i,/^(?:[\\n]+)/i,/^(?:\\s+)/i,/^(?:[\\s]+)/i,/^(?:\"[^\"]*\")/i,/^(?:erDiagram\\b)/i,/^(?:\\{)/i,/^(?:\\s+)/i,/^(?:(?:PK)|(?:FK))/i,/^(?:[A-Za-z][A-Za-z0-9\\-_]*)/i,/^(?:\"[^\"]*\")/i,/^(?:[\\n]+)/i,/^(?:\\})/i,/^(?:.)/i,/^(?:\\|o\\b)/i,/^(?:\\}o\\b)/i,/^(?:\\}\\|)/i,/^(?:\\|\\|)/i,/^(?:o\\|)/i,/^(?:o\\{)/i,/^(?:\\|\\{)/i,/^(?:\\.\\.)/i,/^(?:--)/i,/^(?:\\.-)/i,/^(?:-\\.)/i,/^(?:[A-Za-z][A-Za-z0-9\\-_]*)/i,/^(?:.)/i,/^(?:$)/i],\nconditions: {\"accDescription\":{\"rules\":[3],\"inclusive\":false},\"title\":{\"rules\":[1],\"inclusive\":false},\"open_directive\":{\"rules\":[5],\"inclusive\":false},\"type_directive\":{\"rules\":[6,7],\"inclusive\":false},\"arg_directive\":{\"rules\":[7,8],\"inclusive\":false},\"block\":{\"rules\":[17,18,19,20,21,22,23],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,2,4,9,10,11,12,13,14,15,16,24,25,26,27,28,29,30,31,32,33,34,35,36,37],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain (args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}","/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,9],$V1=[1,7],$V2=[1,6],$V3=[1,8],$V4=[1,20,21,22,23,38,47,61,62,81,82,83,84,85,86,90,100,101,104,106,107,113,114,115,116,117,118,119,120,121,122],$V5=[2,10],$V6=[1,20],$V7=[1,21],$V8=[1,22],$V9=[1,23],$Va=[1,30],$Vb=[1,59],$Vc=[1,45],$Vd=[1,49],$Ve=[1,33],$Vf=[1,34],$Vg=[1,35],$Vh=[1,36],$Vi=[1,37],$Vj=[1,53],$Vk=[1,60],$Vl=[1,48],$Vm=[1,50],$Vn=[1,52],$Vo=[1,56],$Vp=[1,57],$Vq=[1,38],$Vr=[1,39],$Vs=[1,40],$Vt=[1,41],$Vu=[1,58],$Vv=[1,47],$Vw=[1,51],$Vx=[1,54],$Vy=[1,55],$Vz=[1,46],$VA=[1,63],$VB=[1,68],$VC=[1,20,21,22,23,38,42,47,61,62,81,82,83,84,85,86,90,100,101,104,106,107,113,114,115,116,117,118,119,120,121,122],$VD=[1,72],$VE=[1,71],$VF=[1,73],$VG=[20,21,23,76,77],$VH=[1,94],$VI=[1,99],$VJ=[1,102],$VK=[1,103],$VL=[1,96],$VM=[1,101],$VN=[1,104],$VO=[1,97],$VP=[1,109],$VQ=[1,108],$VR=[1,98],$VS=[1,100],$VT=[1,105],$VU=[1,106],$VV=[1,107],$VW=[1,110],$VX=[20,21,22,23,76,77],$VY=[20,21,22,23,48,76,77],$VZ=[20,21,22,23,40,47,48,50,52,54,56,58,60,61,62,64,66,68,69,71,76,77,86,90,100,101,104,106,107,117,118,119,120,121,122],$V_=[20,21,23],$V$=[20,21,23,47,61,62,76,77,86,90,100,101,104,106,107,117,118,119,120,121,122],$V01=[1,12,20,21,22,23,24,38,42,47,61,62,81,82,83,84,85,86,90,100,101,104,106,107,113,114,115,116,117,118,119,120,121,122],$V11=[47,61,62,86,90,100,101,104,106,107,117,118,119,120,121,122],$V21=[1,144],$V31=[1,152],$V41=[1,153],$V51=[1,154],$V61=[1,155],$V71=[1,139],$V81=[1,140],$V91=[1,136],$Va1=[1,147],$Vb1=[1,148],$Vc1=[1,149],$Vd1=[1,150],$Ve1=[1,151],$Vf1=[1,156],$Vg1=[1,157],$Vh1=[1,142],$Vi1=[1,145],$Vj1=[1,141],$Vk1=[1,138],$Vl1=[20,21,22,23,38,42,47,61,62,81,82,83,84,85,86,90,100,101,104,106,107,113,114,115,116,117,118,119,120,121,122],$Vm1=[1,160],$Vn1=[20,21,22,23,26,47,61,62,86,100,101,104,106,107,117,118,119,120,121,122],$Vo1=[20,21,22,23,24,26,38,40,41,42,47,51,53,55,57,59,61,62,63,65,67,68,70,72,76,77,81,82,83,84,85,86,87,90,100,101,104,106,107,108,109,117,118,119,120,121,122],$Vp1=[12,21,22,24],$Vq1=[22,101],$Vr1=[1,245],$Vs1=[1,240],$Vt1=[1,241],$Vu1=[1,249],$Vv1=[1,246],$Vw1=[1,243],$Vx1=[1,242],$Vy1=[1,244],$Vz1=[1,247],$VA1=[1,248],$VB1=[1,250],$VC1=[1,268],$VD1=[20,21,23,101],$VE1=[20,21,22,23,61,62,81,97,100,101,104,105,106,107,108];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"mermaidDoc\":4,\"directive\":5,\"openDirective\":6,\"typeDirective\":7,\"closeDirective\":8,\"separator\":9,\":\":10,\"argDirective\":11,\"open_directive\":12,\"type_directive\":13,\"arg_directive\":14,\"close_directive\":15,\"graphConfig\":16,\"document\":17,\"line\":18,\"statement\":19,\"SEMI\":20,\"NEWLINE\":21,\"SPACE\":22,\"EOF\":23,\"GRAPH\":24,\"NODIR\":25,\"DIR\":26,\"FirstStmtSeperator\":27,\"ending\":28,\"endToken\":29,\"spaceList\":30,\"spaceListNewline\":31,\"verticeStatement\":32,\"styleStatement\":33,\"linkStyleStatement\":34,\"classDefStatement\":35,\"classStatement\":36,\"clickStatement\":37,\"subgraph\":38,\"text\":39,\"SQS\":40,\"SQE\":41,\"end\":42,\"direction\":43,\"link\":44,\"node\":45,\"vertex\":46,\"AMP\":47,\"STYLE_SEPARATOR\":48,\"idString\":49,\"DOUBLECIRCLESTART\":50,\"DOUBLECIRCLEEND\":51,\"PS\":52,\"PE\":53,\"(-\":54,\"-)\":55,\"STADIUMSTART\":56,\"STADIUMEND\":57,\"SUBROUTINESTART\":58,\"SUBROUTINEEND\":59,\"VERTEX_WITH_PROPS_START\":60,\"ALPHA\":61,\"COLON\":62,\"PIPE\":63,\"CYLINDERSTART\":64,\"CYLINDEREND\":65,\"DIAMOND_START\":66,\"DIAMOND_STOP\":67,\"TAGEND\":68,\"TRAPSTART\":69,\"TRAPEND\":70,\"INVTRAPSTART\":71,\"INVTRAPEND\":72,\"linkStatement\":73,\"arrowText\":74,\"TESTSTR\":75,\"START_LINK\":76,\"LINK\":77,\"textToken\":78,\"STR\":79,\"keywords\":80,\"STYLE\":81,\"LINKSTYLE\":82,\"CLASSDEF\":83,\"CLASS\":84,\"CLICK\":85,\"DOWN\":86,\"UP\":87,\"textNoTags\":88,\"textNoTagsToken\":89,\"DEFAULT\":90,\"stylesOpt\":91,\"alphaNum\":92,\"CALLBACKNAME\":93,\"CALLBACKARGS\":94,\"HREF\":95,\"LINK_TARGET\":96,\"HEX\":97,\"numList\":98,\"INTERPOLATE\":99,\"NUM\":100,\"COMMA\":101,\"style\":102,\"styleComponent\":103,\"MINUS\":104,\"UNIT\":105,\"BRKT\":106,\"DOT\":107,\"PCT\":108,\"TAGSTART\":109,\"alphaNumToken\":110,\"idStringToken\":111,\"alphaNumStatement\":112,\"direction_tb\":113,\"direction_bt\":114,\"direction_rl\":115,\"direction_lr\":116,\"PUNCTUATION\":117,\"UNICODE_TEXT\":118,\"PLUS\":119,\"EQUALS\":120,\"MULT\":121,\"UNDERSCORE\":122,\"graphCodeTokens\":123,\"ARROW_CROSS\":124,\"ARROW_POINT\":125,\"ARROW_CIRCLE\":126,\"ARROW_OPEN\":127,\"QUOTE\":128,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",10:\":\",12:\"open_directive\",13:\"type_directive\",14:\"arg_directive\",15:\"close_directive\",20:\"SEMI\",21:\"NEWLINE\",22:\"SPACE\",23:\"EOF\",24:\"GRAPH\",25:\"NODIR\",26:\"DIR\",38:\"subgraph\",40:\"SQS\",41:\"SQE\",42:\"end\",47:\"AMP\",48:\"STYLE_SEPARATOR\",50:\"DOUBLECIRCLESTART\",51:\"DOUBLECIRCLEEND\",52:\"PS\",53:\"PE\",54:\"(-\",55:\"-)\",56:\"STADIUMSTART\",57:\"STADIUMEND\",58:\"SUBROUTINESTART\",59:\"SUBROUTINEEND\",60:\"VERTEX_WITH_PROPS_START\",61:\"ALPHA\",62:\"COLON\",63:\"PIPE\",64:\"CYLINDERSTART\",65:\"CYLINDEREND\",66:\"DIAMOND_START\",67:\"DIAMOND_STOP\",68:\"TAGEND\",69:\"TRAPSTART\",70:\"TRAPEND\",71:\"INVTRAPSTART\",72:\"INVTRAPEND\",75:\"TESTSTR\",76:\"START_LINK\",77:\"LINK\",79:\"STR\",81:\"STYLE\",82:\"LINKSTYLE\",83:\"CLASSDEF\",84:\"CLASS\",85:\"CLICK\",86:\"DOWN\",87:\"UP\",90:\"DEFAULT\",93:\"CALLBACKNAME\",94:\"CALLBACKARGS\",95:\"HREF\",96:\"LINK_TARGET\",97:\"HEX\",99:\"INTERPOLATE\",100:\"NUM\",101:\"COMMA\",104:\"MINUS\",105:\"UNIT\",106:\"BRKT\",107:\"DOT\",108:\"PCT\",109:\"TAGSTART\",113:\"direction_tb\",114:\"direction_bt\",115:\"direction_rl\",116:\"direction_lr\",117:\"PUNCTUATION\",118:\"UNICODE_TEXT\",119:\"PLUS\",120:\"EQUALS\",121:\"MULT\",122:\"UNDERSCORE\",124:\"ARROW_CROSS\",125:\"ARROW_POINT\",126:\"ARROW_CIRCLE\",127:\"ARROW_OPEN\",128:\"QUOTE\"},\nproductions_: [0,[3,1],[3,2],[5,4],[5,6],[6,1],[7,1],[11,1],[8,1],[4,2],[17,0],[17,2],[18,1],[18,1],[18,1],[18,1],[18,1],[16,2],[16,2],[16,2],[16,3],[28,2],[28,1],[29,1],[29,1],[29,1],[27,1],[27,1],[27,2],[31,2],[31,2],[31,1],[31,1],[30,2],[30,1],[19,2],[19,2],[19,2],[19,2],[19,2],[19,2],[19,9],[19,6],[19,4],[19,1],[9,1],[9,1],[9,1],[32,3],[32,4],[32,2],[32,1],[45,1],[45,5],[45,3],[46,4],[46,4],[46,6],[46,4],[46,4],[46,4],[46,8],[46,4],[46,4],[46,4],[46,6],[46,4],[46,4],[46,4],[46,4],[46,4],[46,1],[44,2],[44,3],[44,3],[44,1],[44,3],[73,1],[74,3],[39,1],[39,2],[39,1],[80,1],[80,1],[80,1],[80,1],[80,1],[80,1],[80,1],[80,1],[80,1],[80,1],[80,1],[88,1],[88,2],[35,5],[35,5],[36,5],[37,2],[37,4],[37,3],[37,5],[37,2],[37,4],[37,4],[37,6],[37,2],[37,4],[37,2],[37,4],[37,4],[37,6],[33,5],[33,5],[34,5],[34,5],[34,9],[34,9],[34,7],[34,7],[98,1],[98,3],[91,1],[91,3],[102,1],[102,2],[103,1],[103,1],[103,1],[103,1],[103,1],[103,1],[103,1],[103,1],[103,1],[103,1],[103,1],[78,1],[78,1],[78,1],[78,1],[78,1],[78,1],[89,1],[89,1],[89,1],[89,1],[49,1],[49,2],[92,1],[92,2],[112,1],[112,1],[112,1],[112,1],[43,1],[43,1],[43,1],[43,1],[110,1],[110,1],[110,1],[110,1],[110,1],[110,1],[110,1],[110,1],[110,1],[110,1],[110,1],[110,1],[110,1],[111,1],[111,1],[111,1],[111,1],[111,1],[111,1],[111,1],[111,1],[111,1],[111,1],[111,1],[111,1],[111,1],[111,1],[111,1],[111,1],[123,1],[123,1],[123,1],[123,1],[123,1],[123,1],[123,1],[123,1],[123,1],[123,1],[123,1],[123,1],[123,1],[123,1],[123,1],[123,1],[123,1],[123,1],[123,1],[123,1],[123,1],[123,1],[123,1],[123,1],[123,1],[123,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 5:\n yy.parseDirective('%%{', 'open_directive'); \nbreak;\ncase 6:\n yy.parseDirective($$[$0], 'type_directive'); \nbreak;\ncase 7:\n $$[$0] = $$[$0].trim().replace(/'/g, '\"'); yy.parseDirective($$[$0], 'arg_directive'); \nbreak;\ncase 8:\n yy.parseDirective('}%%', 'close_directive', 'flowchart'); \nbreak;\ncase 10:\n this.$ = [];\nbreak;\ncase 11:\n\n\t if($$[$0] !== []){\n\t $$[$0-1].push($$[$0]);\n\t }\n\t this.$=$$[$0-1];\nbreak;\ncase 12: case 79: case 81: case 93: case 149: case 151: case 152:\nthis.$=$$[$0];\nbreak;\ncase 19:\n yy.setDirection('TB');this.$ = 'TB';\nbreak;\ncase 20:\n yy.setDirection($$[$0-1]);this.$ = $$[$0-1];\nbreak;\ncase 35:\n /* console.warn('finat vs', $$[$0-1].nodes); */ this.$=$$[$0-1].nodes\nbreak;\ncase 36: case 37: case 38: case 39: case 40:\nthis.$=[];\nbreak;\ncase 41:\nthis.$=yy.addSubGraph($$[$0-6],$$[$0-1],$$[$0-4]);\nbreak;\ncase 42:\nthis.$=yy.addSubGraph($$[$0-3],$$[$0-1],$$[$0-3]);\nbreak;\ncase 43:\nthis.$=yy.addSubGraph(undefined,$$[$0-1],undefined);\nbreak;\ncase 48:\n /* console.warn('vs',$$[$0-2].stmt,$$[$0]); */ yy.addLink($$[$0-2].stmt,$$[$0],$$[$0-1]); this.$ = { stmt: $$[$0], nodes: $$[$0].concat($$[$0-2].nodes) } \nbreak;\ncase 49:\n /* console.warn('vs',$$[$0-3].stmt,$$[$0-1]); */ yy.addLink($$[$0-3].stmt,$$[$0-1],$$[$0-2]); this.$ = { stmt: $$[$0-1], nodes: $$[$0-1].concat($$[$0-3].nodes) } \nbreak;\ncase 50:\n/*console.warn('noda', $$[$0-1]);*/ this.$ = {stmt: $$[$0-1], nodes:$$[$0-1] }\nbreak;\ncase 51:\n /*console.warn('noda', $$[$0]);*/ this.$ = {stmt: $$[$0], nodes:$$[$0] }\nbreak;\ncase 52:\n /* console.warn('nod', $$[$0]); */ this.$ = [$$[$0]];\nbreak;\ncase 53:\n this.$ = $$[$0-4].concat($$[$0]); /* console.warn('pip', $$[$0-4][0], $$[$0], this.$); */ \nbreak;\ncase 54:\nthis.$ = [$$[$0-2]];yy.setClass($$[$0-2],$$[$0])\nbreak;\ncase 55:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'square');\nbreak;\ncase 56:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'doublecircle');\nbreak;\ncase 57:\nthis.$ = $$[$0-5];yy.addVertex($$[$0-5],$$[$0-2],'circle');\nbreak;\ncase 58:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'ellipse');\nbreak;\ncase 59:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'stadium');\nbreak;\ncase 60:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'subroutine');\nbreak;\ncase 61:\nthis.$ = $$[$0-7];yy.addVertex($$[$0-7],$$[$0-1],'rect',undefined,undefined,undefined, Object.fromEntries([[$$[$0-5], $$[$0-3]]]));\nbreak;\ncase 62:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'cylinder');\nbreak;\ncase 63:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'round');\nbreak;\ncase 64:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'diamond');\nbreak;\ncase 65:\nthis.$ = $$[$0-5];yy.addVertex($$[$0-5],$$[$0-2],'hexagon');\nbreak;\ncase 66:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'odd');\nbreak;\ncase 67:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'trapezoid');\nbreak;\ncase 68:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'inv_trapezoid');\nbreak;\ncase 69:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'lean_right');\nbreak;\ncase 70:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'lean_left');\nbreak;\ncase 71:\n /*console.warn('h: ', $$[$0]);*/this.$ = $$[$0];yy.addVertex($$[$0]);\nbreak;\ncase 72:\n$$[$0-1].text = $$[$0];this.$ = $$[$0-1];\nbreak;\ncase 73: case 74:\n$$[$0-2].text = $$[$0-1];this.$ = $$[$0-2];\nbreak;\ncase 75:\nthis.$ = $$[$0];\nbreak;\ncase 76:\nvar inf = yy.destructLink($$[$0], $$[$0-2]); this.$ = {\"type\":inf.type,\"stroke\":inf.stroke,\"length\":inf.length,\"text\":$$[$0-1]};\nbreak;\ncase 77:\nvar inf = yy.destructLink($$[$0]);this.$ = {\"type\":inf.type,\"stroke\":inf.stroke,\"length\":inf.length};\nbreak;\ncase 78:\nthis.$ = $$[$0-1];\nbreak;\ncase 80: case 94: case 150:\nthis.$=$$[$0-1]+''+$$[$0];\nbreak;\ncase 95: case 96:\nthis.$ = $$[$0-4];yy.addClass($$[$0-2],$$[$0]);\nbreak;\ncase 97:\nthis.$ = $$[$0-4];yy.setClass($$[$0-2], $$[$0]);\nbreak;\ncase 98: case 106:\nthis.$ = $$[$0-1];yy.setClickEvent($$[$0-1], $$[$0]);\nbreak;\ncase 99: case 107:\nthis.$ = $$[$0-3];yy.setClickEvent($$[$0-3], $$[$0-2]);yy.setTooltip($$[$0-3], $$[$0]);\nbreak;\ncase 100:\nthis.$ = $$[$0-2];yy.setClickEvent($$[$0-2], $$[$0-1], $$[$0]);\nbreak;\ncase 101:\nthis.$ = $$[$0-4];yy.setClickEvent($$[$0-4], $$[$0-3], $$[$0-2]);yy.setTooltip($$[$0-4], $$[$0]);\nbreak;\ncase 102: case 108:\nthis.$ = $$[$0-1];yy.setLink($$[$0-1], $$[$0]);\nbreak;\ncase 103: case 109:\nthis.$ = $$[$0-3];yy.setLink($$[$0-3], $$[$0-2]);yy.setTooltip($$[$0-3], $$[$0]);\nbreak;\ncase 104: case 110:\nthis.$ = $$[$0-3];yy.setLink($$[$0-3], $$[$0-2], $$[$0]);\nbreak;\ncase 105: case 111:\nthis.$ = $$[$0-5];yy.setLink($$[$0-5], $$[$0-4], $$[$0]);yy.setTooltip($$[$0-5], $$[$0-2]);\nbreak;\ncase 112:\nthis.$ = $$[$0-4];yy.addVertex($$[$0-2],undefined,undefined,$$[$0]);\nbreak;\ncase 113: case 115:\nthis.$ = $$[$0-4];yy.updateLink($$[$0-2],$$[$0]);\nbreak;\ncase 114:\nthis.$ = $$[$0-4];yy.updateLink([$$[$0-2]],$$[$0]);\nbreak;\ncase 116:\nthis.$ = $$[$0-8];yy.updateLinkInterpolate([$$[$0-6]],$$[$0-2]);yy.updateLink([$$[$0-6]],$$[$0]);\nbreak;\ncase 117:\nthis.$ = $$[$0-8];yy.updateLinkInterpolate($$[$0-6],$$[$0-2]);yy.updateLink($$[$0-6],$$[$0]);\nbreak;\ncase 118:\nthis.$ = $$[$0-6];yy.updateLinkInterpolate([$$[$0-4]],$$[$0]);\nbreak;\ncase 119:\nthis.$ = $$[$0-6];yy.updateLinkInterpolate($$[$0-4],$$[$0]);\nbreak;\ncase 120: case 122:\nthis.$ = [$$[$0]]\nbreak;\ncase 121: case 123:\n$$[$0-2].push($$[$0]);this.$ = $$[$0-2];\nbreak;\ncase 125:\nthis.$ = $$[$0-1] + $$[$0];\nbreak;\ncase 147:\nthis.$=$$[$0]\nbreak;\ncase 148:\nthis.$=$$[$0-1]+''+$$[$0]\nbreak;\ncase 153:\nthis.$='v';\nbreak;\ncase 154:\nthis.$='-';\nbreak;\ncase 155:\n this.$={stmt:'dir', value:'TB'};\nbreak;\ncase 156:\n this.$={stmt:'dir', value:'BT'};\nbreak;\ncase 157:\n this.$={stmt:'dir', value:'RL'};\nbreak;\ncase 158:\n this.$={stmt:'dir', value:'LR'};\nbreak;\n}\n},\ntable: [{3:1,4:2,5:3,6:5,12:$V0,16:4,21:$V1,22:$V2,24:$V3},{1:[3]},{1:[2,1]},{3:10,4:2,5:3,6:5,12:$V0,16:4,21:$V1,22:$V2,24:$V3},o($V4,$V5,{17:11}),{7:12,13:[1,13]},{16:14,21:$V1,22:$V2,24:$V3},{16:15,21:$V1,22:$V2,24:$V3},{25:[1,16],26:[1,17]},{13:[2,5]},{1:[2,2]},{1:[2,9],18:18,19:19,20:$V6,21:$V7,22:$V8,23:$V9,32:24,33:25,34:26,35:27,36:28,37:29,38:$Va,43:31,45:32,46:42,47:$Vb,49:43,61:$Vc,62:$Vd,81:$Ve,82:$Vf,83:$Vg,84:$Vh,85:$Vi,86:$Vj,90:$Vk,100:$Vl,101:$Vm,104:$Vn,106:$Vo,107:$Vp,111:44,113:$Vq,114:$Vr,115:$Vs,116:$Vt,117:$Vu,118:$Vv,119:$Vw,120:$Vx,121:$Vy,122:$Vz},{8:61,10:[1,62],15:$VA},o([10,15],[2,6]),o($V4,[2,17]),o($V4,[2,18]),o($V4,[2,19]),{20:[1,65],21:[1,66],22:$VB,27:64,30:67},o($VC,[2,11]),o($VC,[2,12]),o($VC,[2,13]),o($VC,[2,14]),o($VC,[2,15]),o($VC,[2,16]),{9:69,20:$VD,21:$VE,23:$VF,44:70,73:74,76:[1,75],77:[1,76]},{9:77,20:$VD,21:$VE,23:$VF},{9:78,20:$VD,21:$VE,23:$VF},{9:79,20:$VD,21:$VE,23:$VF},{9:80,20:$VD,21:$VE,23:$VF},{9:81,20:$VD,21:$VE,23:$VF},{9:83,20:$VD,21:$VE,22:[1,82],23:$VF},o($VC,[2,44]),o($VG,[2,51],{30:84,22:$VB}),{22:[1,85]},{22:[1,86]},{22:[1,87]},{22:[1,88]},{26:$VH,47:$VI,61:$VJ,62:$VK,79:[1,92],86:$VL,92:91,93:[1,89],95:[1,90],100:$VM,101:$VN,104:$VO,106:$VP,107:$VQ,110:95,112:93,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},o($VC,[2,155]),o($VC,[2,156]),o($VC,[2,157]),o($VC,[2,158]),o($VX,[2,52],{48:[1,111]}),o($VY,[2,71],{111:124,40:[1,112],47:$Vb,50:[1,113],52:[1,114],54:[1,115],56:[1,116],58:[1,117],60:[1,118],61:$Vc,62:$Vd,64:[1,119],66:[1,120],68:[1,121],69:[1,122],71:[1,123],86:$Vj,90:$Vk,100:$Vl,101:$Vm,104:$Vn,106:$Vo,107:$Vp,117:$Vu,118:$Vv,119:$Vw,120:$Vx,121:$Vy,122:$Vz}),o($VZ,[2,147]),o($VZ,[2,172]),o($VZ,[2,173]),o($VZ,[2,174]),o($VZ,[2,175]),o($VZ,[2,176]),o($VZ,[2,177]),o($VZ,[2,178]),o($VZ,[2,179]),o($VZ,[2,180]),o($VZ,[2,181]),o($VZ,[2,182]),o($VZ,[2,183]),o($VZ,[2,184]),o($VZ,[2,185]),o($VZ,[2,186]),o($VZ,[2,187]),{9:125,20:$VD,21:$VE,23:$VF},{11:126,14:[1,127]},o($V_,[2,8]),o($V4,[2,20]),o($V4,[2,26]),o($V4,[2,27]),{21:[1,128]},o($V$,[2,34],{30:129,22:$VB}),o($VC,[2,35]),{45:130,46:42,47:$Vb,49:43,61:$Vc,62:$Vd,86:$Vj,90:$Vk,100:$Vl,101:$Vm,104:$Vn,106:$Vo,107:$Vp,111:44,117:$Vu,118:$Vv,119:$Vw,120:$Vx,121:$Vy,122:$Vz},o($V01,[2,45]),o($V01,[2,46]),o($V01,[2,47]),o($V11,[2,75],{74:131,63:[1,133],75:[1,132]}),{22:$V21,24:$V31,26:$V41,38:$V51,39:134,42:$V61,47:$VI,61:$VJ,62:$VK,68:$V71,76:$V81,78:135,79:$V91,80:146,81:$Va1,82:$Vb1,83:$Vc1,84:$Vd1,85:$Ve1,86:$Vf1,87:$Vg1,89:137,90:$Vh1,100:$VM,101:$VN,104:$Vi1,106:$VP,107:$VQ,108:$Vj1,109:$Vk1,110:143,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},o([47,61,62,63,75,86,90,100,101,104,106,107,117,118,119,120,121,122],[2,77]),o($VC,[2,36]),o($VC,[2,37]),o($VC,[2,38]),o($VC,[2,39]),o($VC,[2,40]),{22:$V21,24:$V31,26:$V41,38:$V51,39:158,42:$V61,47:$VI,61:$VJ,62:$VK,68:$V71,76:$V81,78:135,79:$V91,80:146,81:$Va1,82:$Vb1,83:$Vc1,84:$Vd1,85:$Ve1,86:$Vf1,87:$Vg1,89:137,90:$Vh1,100:$VM,101:$VN,104:$Vi1,106:$VP,107:$VQ,108:$Vj1,109:$Vk1,110:143,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},o($Vl1,$V5,{17:159}),o($VG,[2,50],{47:$Vm1}),{26:$VH,47:$VI,61:$VJ,62:$VK,86:$VL,92:161,97:[1,162],100:$VM,101:$VN,104:$VO,106:$VP,107:$VQ,110:95,112:93,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},{90:[1,163],98:164,100:[1,165]},{26:$VH,47:$VI,61:$VJ,62:$VK,86:$VL,90:[1,166],92:167,100:$VM,101:$VN,104:$VO,106:$VP,107:$VQ,110:95,112:93,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},{26:$VH,47:$VI,61:$VJ,62:$VK,86:$VL,92:168,100:$VM,101:$VN,104:$VO,106:$VP,107:$VQ,110:95,112:93,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},o($V_,[2,98],{22:[1,169],94:[1,170]}),o($V_,[2,102],{22:[1,171]}),o($V_,[2,106],{110:95,112:173,22:[1,172],26:$VH,47:$VI,61:$VJ,62:$VK,86:$VL,100:$VM,101:$VN,104:$VO,106:$VP,107:$VQ,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW}),o($V_,[2,108],{22:[1,174]}),o($Vn1,[2,149]),o($Vn1,[2,151]),o($Vn1,[2,152]),o($Vn1,[2,153]),o($Vn1,[2,154]),o($Vo1,[2,159]),o($Vo1,[2,160]),o($Vo1,[2,161]),o($Vo1,[2,162]),o($Vo1,[2,163]),o($Vo1,[2,164]),o($Vo1,[2,165]),o($Vo1,[2,166]),o($Vo1,[2,167]),o($Vo1,[2,168]),o($Vo1,[2,169]),o($Vo1,[2,170]),o($Vo1,[2,171]),{47:$Vb,49:175,61:$Vc,62:$Vd,86:$Vj,90:$Vk,100:$Vl,101:$Vm,104:$Vn,106:$Vo,107:$Vp,111:44,117:$Vu,118:$Vv,119:$Vw,120:$Vx,121:$Vy,122:$Vz},{22:$V21,24:$V31,26:$V41,38:$V51,39:176,42:$V61,47:$VI,61:$VJ,62:$VK,68:$V71,76:$V81,78:135,79:$V91,80:146,81:$Va1,82:$Vb1,83:$Vc1,84:$Vd1,85:$Ve1,86:$Vf1,87:$Vg1,89:137,90:$Vh1,100:$VM,101:$VN,104:$Vi1,106:$VP,107:$VQ,108:$Vj1,109:$Vk1,110:143,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},{22:$V21,24:$V31,26:$V41,38:$V51,39:177,42:$V61,47:$VI,61:$VJ,62:$VK,68:$V71,76:$V81,78:135,79:$V91,80:146,81:$Va1,82:$Vb1,83:$Vc1,84:$Vd1,85:$Ve1,86:$Vf1,87:$Vg1,89:137,90:$Vh1,100:$VM,101:$VN,104:$Vi1,106:$VP,107:$VQ,108:$Vj1,109:$Vk1,110:143,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},{22:$V21,24:$V31,26:$V41,38:$V51,39:179,42:$V61,47:$VI,52:[1,178],61:$VJ,62:$VK,68:$V71,76:$V81,78:135,79:$V91,80:146,81:$Va1,82:$Vb1,83:$Vc1,84:$Vd1,85:$Ve1,86:$Vf1,87:$Vg1,89:137,90:$Vh1,100:$VM,101:$VN,104:$Vi1,106:$VP,107:$VQ,108:$Vj1,109:$Vk1,110:143,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},{22:$V21,24:$V31,26:$V41,38:$V51,39:180,42:$V61,47:$VI,61:$VJ,62:$VK,68:$V71,76:$V81,78:135,79:$V91,80:146,81:$Va1,82:$Vb1,83:$Vc1,84:$Vd1,85:$Ve1,86:$Vf1,87:$Vg1,89:137,90:$Vh1,100:$VM,101:$VN,104:$Vi1,106:$VP,107:$VQ,108:$Vj1,109:$Vk1,110:143,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},{22:$V21,24:$V31,26:$V41,38:$V51,39:181,42:$V61,47:$VI,61:$VJ,62:$VK,68:$V71,76:$V81,78:135,79:$V91,80:146,81:$Va1,82:$Vb1,83:$Vc1,84:$Vd1,85:$Ve1,86:$Vf1,87:$Vg1,89:137,90:$Vh1,100:$VM,101:$VN,104:$Vi1,106:$VP,107:$VQ,108:$Vj1,109:$Vk1,110:143,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},{22:$V21,24:$V31,26:$V41,38:$V51,39:182,42:$V61,47:$VI,61:$VJ,62:$VK,68:$V71,76:$V81,78:135,79:$V91,80:146,81:$Va1,82:$Vb1,83:$Vc1,84:$Vd1,85:$Ve1,86:$Vf1,87:$Vg1,89:137,90:$Vh1,100:$VM,101:$VN,104:$Vi1,106:$VP,107:$VQ,108:$Vj1,109:$Vk1,110:143,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},{61:[1,183]},{22:$V21,24:$V31,26:$V41,38:$V51,39:184,42:$V61,47:$VI,61:$VJ,62:$VK,68:$V71,76:$V81,78:135,79:$V91,80:146,81:$Va1,82:$Vb1,83:$Vc1,84:$Vd1,85:$Ve1,86:$Vf1,87:$Vg1,89:137,90:$Vh1,100:$VM,101:$VN,104:$Vi1,106:$VP,107:$VQ,108:$Vj1,109:$Vk1,110:143,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},{22:$V21,24:$V31,26:$V41,38:$V51,39:185,42:$V61,47:$VI,61:$VJ,62:$VK,66:[1,186],68:$V71,76:$V81,78:135,79:$V91,80:146,81:$Va1,82:$Vb1,83:$Vc1,84:$Vd1,85:$Ve1,86:$Vf1,87:$Vg1,89:137,90:$Vh1,100:$VM,101:$VN,104:$Vi1,106:$VP,107:$VQ,108:$Vj1,109:$Vk1,110:143,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},{22:$V21,24:$V31,26:$V41,38:$V51,39:187,42:$V61,47:$VI,61:$VJ,62:$VK,68:$V71,76:$V81,78:135,79:$V91,80:146,81:$Va1,82:$Vb1,83:$Vc1,84:$Vd1,85:$Ve1,86:$Vf1,87:$Vg1,89:137,90:$Vh1,100:$VM,101:$VN,104:$Vi1,106:$VP,107:$VQ,108:$Vj1,109:$Vk1,110:143,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},{22:$V21,24:$V31,26:$V41,38:$V51,39:188,42:$V61,47:$VI,61:$VJ,62:$VK,68:$V71,76:$V81,78:135,79:$V91,80:146,81:$Va1,82:$Vb1,83:$Vc1,84:$Vd1,85:$Ve1,86:$Vf1,87:$Vg1,89:137,90:$Vh1,100:$VM,101:$VN,104:$Vi1,106:$VP,107:$VQ,108:$Vj1,109:$Vk1,110:143,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},{22:$V21,24:$V31,26:$V41,38:$V51,39:189,42:$V61,47:$VI,61:$VJ,62:$VK,68:$V71,76:$V81,78:135,79:$V91,80:146,81:$Va1,82:$Vb1,83:$Vc1,84:$Vd1,85:$Ve1,86:$Vf1,87:$Vg1,89:137,90:$Vh1,100:$VM,101:$VN,104:$Vi1,106:$VP,107:$VQ,108:$Vj1,109:$Vk1,110:143,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},o($VZ,[2,148]),o($Vp1,[2,3]),{8:190,15:$VA},{15:[2,7]},o($V4,[2,28]),o($V$,[2,33]),o($VG,[2,48],{30:191,22:$VB}),o($V11,[2,72],{22:[1,192]}),{22:[1,193]},{22:$V21,24:$V31,26:$V41,38:$V51,39:194,42:$V61,47:$VI,61:$VJ,62:$VK,68:$V71,76:$V81,78:135,79:$V91,80:146,81:$Va1,82:$Vb1,83:$Vc1,84:$Vd1,85:$Ve1,86:$Vf1,87:$Vg1,89:137,90:$Vh1,100:$VM,101:$VN,104:$Vi1,106:$VP,107:$VQ,108:$Vj1,109:$Vk1,110:143,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},{22:$V21,24:$V31,26:$V41,38:$V51,42:$V61,47:$VI,61:$VJ,62:$VK,68:$V71,76:$V81,77:[1,195],78:196,80:146,81:$Va1,82:$Vb1,83:$Vc1,84:$Vd1,85:$Ve1,86:$Vf1,87:$Vg1,89:137,90:$Vh1,100:$VM,101:$VN,104:$Vi1,106:$VP,107:$VQ,108:$Vj1,109:$Vk1,110:143,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},o($Vo1,[2,79]),o($Vo1,[2,81]),o($Vo1,[2,137]),o($Vo1,[2,138]),o($Vo1,[2,139]),o($Vo1,[2,140]),o($Vo1,[2,141]),o($Vo1,[2,142]),o($Vo1,[2,143]),o($Vo1,[2,144]),o($Vo1,[2,145]),o($Vo1,[2,146]),o($Vo1,[2,82]),o($Vo1,[2,83]),o($Vo1,[2,84]),o($Vo1,[2,85]),o($Vo1,[2,86]),o($Vo1,[2,87]),o($Vo1,[2,88]),o($Vo1,[2,89]),o($Vo1,[2,90]),o($Vo1,[2,91]),o($Vo1,[2,92]),{9:198,20:$VD,21:$VE,22:$V21,23:$VF,24:$V31,26:$V41,38:$V51,40:[1,197],42:$V61,47:$VI,61:$VJ,62:$VK,68:$V71,76:$V81,78:196,80:146,81:$Va1,82:$Vb1,83:$Vc1,84:$Vd1,85:$Ve1,86:$Vf1,87:$Vg1,89:137,90:$Vh1,100:$VM,101:$VN,104:$Vi1,106:$VP,107:$VQ,108:$Vj1,109:$Vk1,110:143,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},{18:18,19:19,20:$V6,21:$V7,22:$V8,23:$V9,32:24,33:25,34:26,35:27,36:28,37:29,38:$Va,42:[1,199],43:31,45:32,46:42,47:$Vb,49:43,61:$Vc,62:$Vd,81:$Ve,82:$Vf,83:$Vg,84:$Vh,85:$Vi,86:$Vj,90:$Vk,100:$Vl,101:$Vm,104:$Vn,106:$Vo,107:$Vp,111:44,113:$Vq,114:$Vr,115:$Vs,116:$Vt,117:$Vu,118:$Vv,119:$Vw,120:$Vx,121:$Vy,122:$Vz},{22:$VB,30:200},{22:[1,201],26:$VH,47:$VI,61:$VJ,62:$VK,86:$VL,100:$VM,101:$VN,104:$VO,106:$VP,107:$VQ,110:95,112:173,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},{22:[1,202]},{22:[1,203]},{22:[1,204],101:[1,205]},o($Vq1,[2,120]),{22:[1,206]},{22:[1,207],26:$VH,47:$VI,61:$VJ,62:$VK,86:$VL,100:$VM,101:$VN,104:$VO,106:$VP,107:$VQ,110:95,112:173,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},{22:[1,208],26:$VH,47:$VI,61:$VJ,62:$VK,86:$VL,100:$VM,101:$VN,104:$VO,106:$VP,107:$VQ,110:95,112:173,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},{79:[1,209]},o($V_,[2,100],{22:[1,210]}),{79:[1,211],96:[1,212]},{79:[1,213]},o($Vn1,[2,150]),{79:[1,214],96:[1,215]},o($VX,[2,54],{111:124,47:$Vb,61:$Vc,62:$Vd,86:$Vj,90:$Vk,100:$Vl,101:$Vm,104:$Vn,106:$Vo,107:$Vp,117:$Vu,118:$Vv,119:$Vw,120:$Vx,121:$Vy,122:$Vz}),{22:$V21,24:$V31,26:$V41,38:$V51,41:[1,216],42:$V61,47:$VI,61:$VJ,62:$VK,68:$V71,76:$V81,78:196,80:146,81:$Va1,82:$Vb1,83:$Vc1,84:$Vd1,85:$Ve1,86:$Vf1,87:$Vg1,89:137,90:$Vh1,100:$VM,101:$VN,104:$Vi1,106:$VP,107:$VQ,108:$Vj1,109:$Vk1,110:143,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},{22:$V21,24:$V31,26:$V41,38:$V51,42:$V61,47:$VI,51:[1,217],61:$VJ,62:$VK,68:$V71,76:$V81,78:196,80:146,81:$Va1,82:$Vb1,83:$Vc1,84:$Vd1,85:$Ve1,86:$Vf1,87:$Vg1,89:137,90:$Vh1,100:$VM,101:$VN,104:$Vi1,106:$VP,107:$VQ,108:$Vj1,109:$Vk1,110:143,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},{22:$V21,24:$V31,26:$V41,38:$V51,39:218,42:$V61,47:$VI,61:$VJ,62:$VK,68:$V71,76:$V81,78:135,79:$V91,80:146,81:$Va1,82:$Vb1,83:$Vc1,84:$Vd1,85:$Ve1,86:$Vf1,87:$Vg1,89:137,90:$Vh1,100:$VM,101:$VN,104:$Vi1,106:$VP,107:$VQ,108:$Vj1,109:$Vk1,110:143,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},{22:$V21,24:$V31,26:$V41,38:$V51,42:$V61,47:$VI,53:[1,219],61:$VJ,62:$VK,68:$V71,76:$V81,78:196,80:146,81:$Va1,82:$Vb1,83:$Vc1,84:$Vd1,85:$Ve1,86:$Vf1,87:$Vg1,89:137,90:$Vh1,100:$VM,101:$VN,104:$Vi1,106:$VP,107:$VQ,108:$Vj1,109:$Vk1,110:143,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},{22:$V21,24:$V31,26:$V41,38:$V51,42:$V61,47:$VI,55:[1,220],61:$VJ,62:$VK,68:$V71,76:$V81,78:196,80:146,81:$Va1,82:$Vb1,83:$Vc1,84:$Vd1,85:$Ve1,86:$Vf1,87:$Vg1,89:137,90:$Vh1,100:$VM,101:$VN,104:$Vi1,106:$VP,107:$VQ,108:$Vj1,109:$Vk1,110:143,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},{22:$V21,24:$V31,26:$V41,38:$V51,42:$V61,47:$VI,57:[1,221],61:$VJ,62:$VK,68:$V71,76:$V81,78:196,80:146,81:$Va1,82:$Vb1,83:$Vc1,84:$Vd1,85:$Ve1,86:$Vf1,87:$Vg1,89:137,90:$Vh1,100:$VM,101:$VN,104:$Vi1,106:$VP,107:$VQ,108:$Vj1,109:$Vk1,110:143,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},{22:$V21,24:$V31,26:$V41,38:$V51,42:$V61,47:$VI,59:[1,222],61:$VJ,62:$VK,68:$V71,76:$V81,78:196,80:146,81:$Va1,82:$Vb1,83:$Vc1,84:$Vd1,85:$Ve1,86:$Vf1,87:$Vg1,89:137,90:$Vh1,100:$VM,101:$VN,104:$Vi1,106:$VP,107:$VQ,108:$Vj1,109:$Vk1,110:143,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},{62:[1,223]},{22:$V21,24:$V31,26:$V41,38:$V51,42:$V61,47:$VI,61:$VJ,62:$VK,65:[1,224],68:$V71,76:$V81,78:196,80:146,81:$Va1,82:$Vb1,83:$Vc1,84:$Vd1,85:$Ve1,86:$Vf1,87:$Vg1,89:137,90:$Vh1,100:$VM,101:$VN,104:$Vi1,106:$VP,107:$VQ,108:$Vj1,109:$Vk1,110:143,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},{22:$V21,24:$V31,26:$V41,38:$V51,42:$V61,47:$VI,61:$VJ,62:$VK,67:[1,225],68:$V71,76:$V81,78:196,80:146,81:$Va1,82:$Vb1,83:$Vc1,84:$Vd1,85:$Ve1,86:$Vf1,87:$Vg1,89:137,90:$Vh1,100:$VM,101:$VN,104:$Vi1,106:$VP,107:$VQ,108:$Vj1,109:$Vk1,110:143,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},{22:$V21,24:$V31,26:$V41,38:$V51,39:226,42:$V61,47:$VI,61:$VJ,62:$VK,68:$V71,76:$V81,78:135,79:$V91,80:146,81:$Va1,82:$Vb1,83:$Vc1,84:$Vd1,85:$Ve1,86:$Vf1,87:$Vg1,89:137,90:$Vh1,100:$VM,101:$VN,104:$Vi1,106:$VP,107:$VQ,108:$Vj1,109:$Vk1,110:143,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},{22:$V21,24:$V31,26:$V41,38:$V51,41:[1,227],42:$V61,47:$VI,61:$VJ,62:$VK,68:$V71,76:$V81,78:196,80:146,81:$Va1,82:$Vb1,83:$Vc1,84:$Vd1,85:$Ve1,86:$Vf1,87:$Vg1,89:137,90:$Vh1,100:$VM,101:$VN,104:$Vi1,106:$VP,107:$VQ,108:$Vj1,109:$Vk1,110:143,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},{22:$V21,24:$V31,26:$V41,38:$V51,42:$V61,47:$VI,61:$VJ,62:$VK,68:$V71,70:[1,228],72:[1,229],76:$V81,78:196,80:146,81:$Va1,82:$Vb1,83:$Vc1,84:$Vd1,85:$Ve1,86:$Vf1,87:$Vg1,89:137,90:$Vh1,100:$VM,101:$VN,104:$Vi1,106:$VP,107:$VQ,108:$Vj1,109:$Vk1,110:143,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},{22:$V21,24:$V31,26:$V41,38:$V51,42:$V61,47:$VI,61:$VJ,62:$VK,68:$V71,70:[1,231],72:[1,230],76:$V81,78:196,80:146,81:$Va1,82:$Vb1,83:$Vc1,84:$Vd1,85:$Ve1,86:$Vf1,87:$Vg1,89:137,90:$Vh1,100:$VM,101:$VN,104:$Vi1,106:$VP,107:$VQ,108:$Vj1,109:$Vk1,110:143,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},{9:232,20:$VD,21:$VE,23:$VF},o($VG,[2,49],{47:$Vm1}),o($V11,[2,74]),o($V11,[2,73]),{22:$V21,24:$V31,26:$V41,38:$V51,42:$V61,47:$VI,61:$VJ,62:$VK,63:[1,233],68:$V71,76:$V81,78:196,80:146,81:$Va1,82:$Vb1,83:$Vc1,84:$Vd1,85:$Ve1,86:$Vf1,87:$Vg1,89:137,90:$Vh1,100:$VM,101:$VN,104:$Vi1,106:$VP,107:$VQ,108:$Vj1,109:$Vk1,110:143,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},o($V11,[2,76]),o($Vo1,[2,80]),{22:$V21,24:$V31,26:$V41,38:$V51,39:234,42:$V61,47:$VI,61:$VJ,62:$VK,68:$V71,76:$V81,78:135,79:$V91,80:146,81:$Va1,82:$Vb1,83:$Vc1,84:$Vd1,85:$Ve1,86:$Vf1,87:$Vg1,89:137,90:$Vh1,100:$VM,101:$VN,104:$Vi1,106:$VP,107:$VQ,108:$Vj1,109:$Vk1,110:143,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},o($Vl1,$V5,{17:235}),o($VC,[2,43]),{46:236,47:$Vb,49:43,61:$Vc,62:$Vd,86:$Vj,90:$Vk,100:$Vl,101:$Vm,104:$Vn,106:$Vo,107:$Vp,111:44,117:$Vu,118:$Vv,119:$Vw,120:$Vx,121:$Vy,122:$Vz},{22:$Vr1,61:$Vs1,62:$Vt1,81:$Vu1,91:237,97:$Vv1,100:$Vw1,102:238,103:239,104:$Vx1,105:$Vy1,106:$Vz1,107:$VA1,108:$VB1},{22:$Vr1,61:$Vs1,62:$Vt1,81:$Vu1,91:251,97:$Vv1,100:$Vw1,102:238,103:239,104:$Vx1,105:$Vy1,106:$Vz1,107:$VA1,108:$VB1},{22:$Vr1,61:$Vs1,62:$Vt1,81:$Vu1,91:252,97:$Vv1,99:[1,253],100:$Vw1,102:238,103:239,104:$Vx1,105:$Vy1,106:$Vz1,107:$VA1,108:$VB1},{22:$Vr1,61:$Vs1,62:$Vt1,81:$Vu1,91:254,97:$Vv1,99:[1,255],100:$Vw1,102:238,103:239,104:$Vx1,105:$Vy1,106:$Vz1,107:$VA1,108:$VB1},{100:[1,256]},{22:$Vr1,61:$Vs1,62:$Vt1,81:$Vu1,91:257,97:$Vv1,100:$Vw1,102:238,103:239,104:$Vx1,105:$Vy1,106:$Vz1,107:$VA1,108:$VB1},{22:$Vr1,61:$Vs1,62:$Vt1,81:$Vu1,91:258,97:$Vv1,100:$Vw1,102:238,103:239,104:$Vx1,105:$Vy1,106:$Vz1,107:$VA1,108:$VB1},{26:$VH,47:$VI,61:$VJ,62:$VK,86:$VL,92:259,100:$VM,101:$VN,104:$VO,106:$VP,107:$VQ,110:95,112:93,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},o($V_,[2,99]),{79:[1,260]},o($V_,[2,103],{22:[1,261]}),o($V_,[2,104]),o($V_,[2,107]),o($V_,[2,109],{22:[1,262]}),o($V_,[2,110]),o($VY,[2,55]),o($VY,[2,56]),{22:$V21,24:$V31,26:$V41,38:$V51,42:$V61,47:$VI,53:[1,263],61:$VJ,62:$VK,68:$V71,76:$V81,78:196,80:146,81:$Va1,82:$Vb1,83:$Vc1,84:$Vd1,85:$Ve1,86:$Vf1,87:$Vg1,89:137,90:$Vh1,100:$VM,101:$VN,104:$Vi1,106:$VP,107:$VQ,108:$Vj1,109:$Vk1,110:143,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},o($VY,[2,63]),o($VY,[2,58]),o($VY,[2,59]),o($VY,[2,60]),{61:[1,264]},o($VY,[2,62]),o($VY,[2,64]),{22:$V21,24:$V31,26:$V41,38:$V51,42:$V61,47:$VI,61:$VJ,62:$VK,67:[1,265],68:$V71,76:$V81,78:196,80:146,81:$Va1,82:$Vb1,83:$Vc1,84:$Vd1,85:$Ve1,86:$Vf1,87:$Vg1,89:137,90:$Vh1,100:$VM,101:$VN,104:$Vi1,106:$VP,107:$VQ,108:$Vj1,109:$Vk1,110:143,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},o($VY,[2,66]),o($VY,[2,67]),o($VY,[2,69]),o($VY,[2,68]),o($VY,[2,70]),o($Vp1,[2,4]),o([22,47,61,62,86,90,100,101,104,106,107,117,118,119,120,121,122],[2,78]),{22:$V21,24:$V31,26:$V41,38:$V51,41:[1,266],42:$V61,47:$VI,61:$VJ,62:$VK,68:$V71,76:$V81,78:196,80:146,81:$Va1,82:$Vb1,83:$Vc1,84:$Vd1,85:$Ve1,86:$Vf1,87:$Vg1,89:137,90:$Vh1,100:$VM,101:$VN,104:$Vi1,106:$VP,107:$VQ,108:$Vj1,109:$Vk1,110:143,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},{18:18,19:19,20:$V6,21:$V7,22:$V8,23:$V9,32:24,33:25,34:26,35:27,36:28,37:29,38:$Va,42:[1,267],43:31,45:32,46:42,47:$Vb,49:43,61:$Vc,62:$Vd,81:$Ve,82:$Vf,83:$Vg,84:$Vh,85:$Vi,86:$Vj,90:$Vk,100:$Vl,101:$Vm,104:$Vn,106:$Vo,107:$Vp,111:44,113:$Vq,114:$Vr,115:$Vs,116:$Vt,117:$Vu,118:$Vv,119:$Vw,120:$Vx,121:$Vy,122:$Vz},o($VX,[2,53]),o($V_,[2,112],{101:$VC1}),o($VD1,[2,122],{103:269,22:$Vr1,61:$Vs1,62:$Vt1,81:$Vu1,97:$Vv1,100:$Vw1,104:$Vx1,105:$Vy1,106:$Vz1,107:$VA1,108:$VB1}),o($VE1,[2,124]),o($VE1,[2,126]),o($VE1,[2,127]),o($VE1,[2,128]),o($VE1,[2,129]),o($VE1,[2,130]),o($VE1,[2,131]),o($VE1,[2,132]),o($VE1,[2,133]),o($VE1,[2,134]),o($VE1,[2,135]),o($VE1,[2,136]),o($V_,[2,113],{101:$VC1}),o($V_,[2,114],{101:$VC1}),{22:[1,270]},o($V_,[2,115],{101:$VC1}),{22:[1,271]},o($Vq1,[2,121]),o($V_,[2,95],{101:$VC1}),o($V_,[2,96],{101:$VC1}),o($V_,[2,97],{110:95,112:173,26:$VH,47:$VI,61:$VJ,62:$VK,86:$VL,100:$VM,101:$VN,104:$VO,106:$VP,107:$VQ,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW}),o($V_,[2,101]),{96:[1,272]},{96:[1,273]},{53:[1,274]},{63:[1,275]},{67:[1,276]},{9:277,20:$VD,21:$VE,23:$VF},o($VC,[2,42]),{22:$Vr1,61:$Vs1,62:$Vt1,81:$Vu1,97:$Vv1,100:$Vw1,102:278,103:239,104:$Vx1,105:$Vy1,106:$Vz1,107:$VA1,108:$VB1},o($VE1,[2,125]),{26:$VH,47:$VI,61:$VJ,62:$VK,86:$VL,92:279,100:$VM,101:$VN,104:$VO,106:$VP,107:$VQ,110:95,112:93,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},{26:$VH,47:$VI,61:$VJ,62:$VK,86:$VL,92:280,100:$VM,101:$VN,104:$VO,106:$VP,107:$VQ,110:95,112:93,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},o($V_,[2,105]),o($V_,[2,111]),o($VY,[2,57]),{22:$V21,24:$V31,26:$V41,38:$V51,39:281,42:$V61,47:$VI,61:$VJ,62:$VK,68:$V71,76:$V81,78:135,79:$V91,80:146,81:$Va1,82:$Vb1,83:$Vc1,84:$Vd1,85:$Ve1,86:$Vf1,87:$Vg1,89:137,90:$Vh1,100:$VM,101:$VN,104:$Vi1,106:$VP,107:$VQ,108:$Vj1,109:$Vk1,110:143,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},o($VY,[2,65]),o($Vl1,$V5,{17:282}),o($VD1,[2,123],{103:269,22:$Vr1,61:$Vs1,62:$Vt1,81:$Vu1,97:$Vv1,100:$Vw1,104:$Vx1,105:$Vy1,106:$Vz1,107:$VA1,108:$VB1}),o($V_,[2,118],{110:95,112:173,22:[1,283],26:$VH,47:$VI,61:$VJ,62:$VK,86:$VL,100:$VM,101:$VN,104:$VO,106:$VP,107:$VQ,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW}),o($V_,[2,119],{110:95,112:173,22:[1,284],26:$VH,47:$VI,61:$VJ,62:$VK,86:$VL,100:$VM,101:$VN,104:$VO,106:$VP,107:$VQ,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW}),{22:$V21,24:$V31,26:$V41,38:$V51,41:[1,285],42:$V61,47:$VI,61:$VJ,62:$VK,68:$V71,76:$V81,78:196,80:146,81:$Va1,82:$Vb1,83:$Vc1,84:$Vd1,85:$Ve1,86:$Vf1,87:$Vg1,89:137,90:$Vh1,100:$VM,101:$VN,104:$Vi1,106:$VP,107:$VQ,108:$Vj1,109:$Vk1,110:143,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},{18:18,19:19,20:$V6,21:$V7,22:$V8,23:$V9,32:24,33:25,34:26,35:27,36:28,37:29,38:$Va,42:[1,286],43:31,45:32,46:42,47:$Vb,49:43,61:$Vc,62:$Vd,81:$Ve,82:$Vf,83:$Vg,84:$Vh,85:$Vi,86:$Vj,90:$Vk,100:$Vl,101:$Vm,104:$Vn,106:$Vo,107:$Vp,111:44,113:$Vq,114:$Vr,115:$Vs,116:$Vt,117:$Vu,118:$Vv,119:$Vw,120:$Vx,121:$Vy,122:$Vz},{22:$Vr1,61:$Vs1,62:$Vt1,81:$Vu1,91:287,97:$Vv1,100:$Vw1,102:238,103:239,104:$Vx1,105:$Vy1,106:$Vz1,107:$VA1,108:$VB1},{22:$Vr1,61:$Vs1,62:$Vt1,81:$Vu1,91:288,97:$Vv1,100:$Vw1,102:238,103:239,104:$Vx1,105:$Vy1,106:$Vz1,107:$VA1,108:$VB1},o($VY,[2,61]),o($VC,[2,41]),o($V_,[2,116],{101:$VC1}),o($V_,[2,117],{101:$VC1})],\ndefaultActions: {2:[2,1],9:[2,5],10:[2,2],127:[2,7]},\nparseError: function parseError (str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer.lex() || EOF;\n if (typeof token !== 'number') {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0: this.begin('open_directive'); return 12; \nbreak;\ncase 1: this.begin('type_directive'); return 13; \nbreak;\ncase 2: this.popState(); this.begin('arg_directive'); return 10; \nbreak;\ncase 3: this.popState(); this.popState(); return 15; \nbreak;\ncase 4:return 14;\nbreak;\ncase 5:/* skip comments */\nbreak;\ncase 6:/* skip comments */\nbreak;\ncase 7:this.begin(\"string\");\nbreak;\ncase 8:this.popState();\nbreak;\ncase 9:return \"STR\";\nbreak;\ncase 10:return 81;\nbreak;\ncase 11:return 90;\nbreak;\ncase 12:return 82;\nbreak;\ncase 13:return 99;\nbreak;\ncase 14:return 83;\nbreak;\ncase 15:return 84;\nbreak;\ncase 16:this.begin(\"href\");\nbreak;\ncase 17:this.popState();\nbreak;\ncase 18:return 95;\nbreak;\ncase 19:this.begin(\"callbackname\");\nbreak;\ncase 20:this.popState();\nbreak;\ncase 21:this.popState(); this.begin(\"callbackargs\");\nbreak;\ncase 22:return 93;\nbreak;\ncase 23:this.popState();\nbreak;\ncase 24:return 94;\nbreak;\ncase 25:this.begin(\"click\");\nbreak;\ncase 26:this.popState();\nbreak;\ncase 27:return 85;\nbreak;\ncase 28:if(yy.lex.firstGraph()){this.begin(\"dir\");} return 24;\nbreak;\ncase 29:if(yy.lex.firstGraph()){this.begin(\"dir\");} return 24;\nbreak;\ncase 30:return 38;\nbreak;\ncase 31:return 42;\nbreak;\ncase 32:return 96;\nbreak;\ncase 33:return 96;\nbreak;\ncase 34:return 96;\nbreak;\ncase 35:return 96;\nbreak;\ncase 36: this.popState(); return 25; \nbreak;\ncase 37: this.popState(); return 26; \nbreak;\ncase 38: this.popState(); return 26; \nbreak;\ncase 39: this.popState(); return 26; \nbreak;\ncase 40: this.popState(); return 26; \nbreak;\ncase 41: this.popState(); return 26; \nbreak;\ncase 42: this.popState(); return 26; \nbreak;\ncase 43: this.popState(); return 26; \nbreak;\ncase 44: this.popState(); return 26; \nbreak;\ncase 45: this.popState(); return 26; \nbreak;\ncase 46: this.popState(); return 26; \nbreak;\ncase 47:return 113;\nbreak;\ncase 48:return 114;\nbreak;\ncase 49:return 115;\nbreak;\ncase 50:return 116;\nbreak;\ncase 51: return 100;\nbreak;\ncase 52:return 106;\nbreak;\ncase 53:return 48;\nbreak;\ncase 54:return 62;\nbreak;\ncase 55:return 47;\nbreak;\ncase 56:return 20;\nbreak;\ncase 57:return 101;\nbreak;\ncase 58:return 121;\nbreak;\ncase 59:return 77;\nbreak;\ncase 60:return 77;\nbreak;\ncase 61:return 77;\nbreak;\ncase 62:return 76;\nbreak;\ncase 63:return 76;\nbreak;\ncase 64:return 76;\nbreak;\ncase 65:return 54;\nbreak;\ncase 66:return 55;\nbreak;\ncase 67:return 56;\nbreak;\ncase 68:return 57;\nbreak;\ncase 69:return 58;\nbreak;\ncase 70:return 59;\nbreak;\ncase 71:return 60;\nbreak;\ncase 72:return 64;\nbreak;\ncase 73:return 65;\nbreak;\ncase 74:return 50;\nbreak;\ncase 75:return 51;\nbreak;\ncase 76:return 104;\nbreak;\ncase 77:return 107;\nbreak;\ncase 78:return 122;\nbreak;\ncase 79:return 119;\nbreak;\ncase 80:return 108;\nbreak;\ncase 81:return 120;\nbreak;\ncase 82:return 120;\nbreak;\ncase 83:return 109;\nbreak;\ncase 84:return 68;\nbreak;\ncase 85:return 87;\nbreak;\ncase 86:return 'SEP';\nbreak;\ncase 87:return 86;\nbreak;\ncase 88:return 61;\nbreak;\ncase 89:return 70;\nbreak;\ncase 90:return 69;\nbreak;\ncase 91:return 72;\nbreak;\ncase 92:return 71;\nbreak;\ncase 93:return 117;\nbreak;\ncase 94:return 118;\nbreak;\ncase 95:return 63;\nbreak;\ncase 96:return 52;\nbreak;\ncase 97:return 53;\nbreak;\ncase 98:return 40;\nbreak;\ncase 99:return 41;\nbreak;\ncase 100:return 66\nbreak;\ncase 101:return 67\nbreak;\ncase 102:return 128;\nbreak;\ncase 103:return 21;\nbreak;\ncase 104:return 22;\nbreak;\ncase 105:return 23;\nbreak;\n}\n},\nrules: [/^(?:%%\\{)/,/^(?:((?:(?!\\}%%)[^:.])*))/,/^(?::)/,/^(?:\\}%%)/,/^(?:((?:(?!\\}%%).|\\n)*))/,/^(?:%%(?!\\{)[^\\n]*)/,/^(?:[^\\}]%%[^\\n]*)/,/^(?:[\"])/,/^(?:[\"])/,/^(?:[^\"]*)/,/^(?:style\\b)/,/^(?:default\\b)/,/^(?:linkStyle\\b)/,/^(?:interpolate\\b)/,/^(?:classDef\\b)/,/^(?:class\\b)/,/^(?:href[\\s]+[\"])/,/^(?:[\"])/,/^(?:[^\"]*)/,/^(?:call[\\s]+)/,/^(?:\\([\\s]*\\))/,/^(?:\\()/,/^(?:[^(]*)/,/^(?:\\))/,/^(?:[^)]*)/,/^(?:click[\\s]+)/,/^(?:[\\s\\n])/,/^(?:[^\\s\\n]*)/,/^(?:graph\\b)/,/^(?:flowchart\\b)/,/^(?:subgraph\\b)/,/^(?:end\\b\\s*)/,/^(?:_self\\b)/,/^(?:_blank\\b)/,/^(?:_parent\\b)/,/^(?:_top\\b)/,/^(?:(\\r?\\n)*\\s*\\n)/,/^(?:\\s*LR\\b)/,/^(?:\\s*RL\\b)/,/^(?:\\s*TB\\b)/,/^(?:\\s*BT\\b)/,/^(?:\\s*TD\\b)/,/^(?:\\s*BR\\b)/,/^(?:\\s*<)/,/^(?:\\s*>)/,/^(?:\\s*\\^)/,/^(?:\\s*v\\b)/,/^(?:.*direction\\s+TB[^\\n]*)/,/^(?:.*direction\\s+BT[^\\n]*)/,/^(?:.*direction\\s+RL[^\\n]*)/,/^(?:.*direction\\s+LR[^\\n]*)/,/^(?:[0-9]+)/,/^(?:#)/,/^(?::::)/,/^(?::)/,/^(?:&)/,/^(?:;)/,/^(?:,)/,/^(?:\\*)/,/^(?:\\s*[xo<]?--+[-xo>]\\s*)/,/^(?:\\s*[xo<]?==+[=xo>]\\s*)/,/^(?:\\s*[xo<]?-?\\.+-[xo>]?\\s*)/,/^(?:\\s*[xo<]?--\\s*)/,/^(?:\\s*[xo<]?==\\s*)/,/^(?:\\s*[xo<]?-\\.\\s*)/,/^(?:\\(-)/,/^(?:-\\))/,/^(?:\\(\\[)/,/^(?:\\]\\))/,/^(?:\\[\\[)/,/^(?:\\]\\])/,/^(?:\\[\\|)/,/^(?:\\[\\()/,/^(?:\\)\\])/,/^(?:\\(\\(\\()/,/^(?:\\)\\)\\))/,/^(?:-)/,/^(?:\\.)/,/^(?:[\\_])/,/^(?:\\+)/,/^(?:%)/,/^(?:=)/,/^(?:=)/,/^(?:<)/,/^(?:>)/,/^(?:\\^)/,/^(?:\\\\\\|)/,/^(?:v\\b)/,/^(?:[A-Za-z]+)/,/^(?:\\\\\\])/,/^(?:\\[\\/)/,/^(?:\\/\\])/,/^(?:\\[\\\\)/,/^(?:[!\"#$%&'*+,-.`?\\\\_/])/,/^(?:[\\u00AA\\u00B5\\u00BA\\u00C0-\\u00D6\\u00D8-\\u00F6]|[\\u00F8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377]|[\\u037A-\\u037D\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5]|[\\u03F7-\\u0481\\u048A-\\u0527\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA]|[\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE]|[\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA]|[\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0]|[\\u08A2-\\u08AC\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0977]|[\\u0979-\\u097F\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2]|[\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A]|[\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39]|[\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8]|[\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C]|[\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C]|[\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99]|[\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0]|[\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C33\\u0C35-\\u0C39\\u0C3D]|[\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3]|[\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10]|[\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1]|[\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81]|[\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3]|[\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6]|[\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A]|[\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081]|[\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D]|[\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0]|[\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310]|[\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C]|[\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u1700-\\u170C\\u170E-\\u1711]|[\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7]|[\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191C]|[\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16]|[\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF]|[\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC]|[\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D]|[\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D]|[\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3]|[\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F]|[\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128]|[\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184]|[\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3]|[\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6]|[\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE]|[\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C]|[\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D]|[\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC]|[\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B]|[\\uA640-\\uA66E\\uA67F-\\uA697\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788]|[\\uA78B-\\uA78E\\uA790-\\uA793\\uA7A0-\\uA7AA\\uA7F8-\\uA801\\uA803-\\uA805]|[\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB]|[\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uAA00-\\uAA28]|[\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA80-\\uAAAF\\uAAB1\\uAAB5]|[\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4]|[\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E]|[\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D]|[\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36]|[\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D]|[\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC]|[\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF]|[\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC])/,/^(?:\\|)/,/^(?:\\()/,/^(?:\\))/,/^(?:\\[)/,/^(?:\\])/,/^(?:\\{)/,/^(?:\\})/,/^(?:\")/,/^(?:(\\r?\\n)+)/,/^(?:\\s)/,/^(?:$)/],\nconditions: {\"close_directive\":{\"rules\":[],\"inclusive\":false},\"arg_directive\":{\"rules\":[3,4],\"inclusive\":false},\"type_directive\":{\"rules\":[2,3],\"inclusive\":false},\"open_directive\":{\"rules\":[1],\"inclusive\":false},\"callbackargs\":{\"rules\":[23,24],\"inclusive\":false},\"callbackname\":{\"rules\":[20,21,22],\"inclusive\":false},\"href\":{\"rules\":[17,18],\"inclusive\":false},\"click\":{\"rules\":[26,27],\"inclusive\":false},\"vertex\":{\"rules\":[],\"inclusive\":false},\"dir\":{\"rules\":[36,37,38,39,40,41,42,43,44,45,46],\"inclusive\":false},\"string\":{\"rules\":[8,9],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,5,6,7,10,11,12,13,14,15,16,19,25,28,29,30,31,32,33,34,35,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain (args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}","/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,3],$V1=[1,5],$V2=[7,9,11,12,13,14,15,16,17,18,19,20,22,29,34],$V3=[1,15],$V4=[1,16],$V5=[1,17],$V6=[1,18],$V7=[1,19],$V8=[1,20],$V9=[1,21],$Va=[1,22],$Vb=[1,23],$Vc=[1,25],$Vd=[1,27],$Ve=[1,30],$Vf=[5,7,9,11,12,13,14,15,16,17,18,19,20,22,29,34];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"directive\":4,\"gantt\":5,\"document\":6,\"EOF\":7,\"line\":8,\"SPACE\":9,\"statement\":10,\"NL\":11,\"dateFormat\":12,\"inclusiveEndDates\":13,\"topAxis\":14,\"axisFormat\":15,\"excludes\":16,\"includes\":17,\"todayMarker\":18,\"title\":19,\"section\":20,\"clickStatement\":21,\"taskTxt\":22,\"taskData\":23,\"openDirective\":24,\"typeDirective\":25,\"closeDirective\":26,\":\":27,\"argDirective\":28,\"click\":29,\"callbackname\":30,\"callbackargs\":31,\"href\":32,\"clickStatementDebug\":33,\"open_directive\":34,\"type_directive\":35,\"arg_directive\":36,\"close_directive\":37,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",5:\"gantt\",7:\"EOF\",9:\"SPACE\",11:\"NL\",12:\"dateFormat\",13:\"inclusiveEndDates\",14:\"topAxis\",15:\"axisFormat\",16:\"excludes\",17:\"includes\",18:\"todayMarker\",19:\"title\",20:\"section\",22:\"taskTxt\",23:\"taskData\",27:\":\",29:\"click\",30:\"callbackname\",31:\"callbackargs\",32:\"href\",34:\"open_directive\",35:\"type_directive\",36:\"arg_directive\",37:\"close_directive\"},\nproductions_: [0,[3,2],[3,3],[6,0],[6,2],[8,2],[8,1],[8,1],[8,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,2],[10,1],[4,4],[4,6],[21,2],[21,3],[21,3],[21,4],[21,3],[21,4],[21,2],[33,2],[33,3],[33,3],[33,4],[33,3],[33,4],[33,2],[24,1],[25,1],[28,1],[26,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 2:\n return $$[$0-1]; \nbreak;\ncase 3:\n this.$ = [] \nbreak;\ncase 4:\n$$[$0-1].push($$[$0]);this.$ = $$[$0-1]\nbreak;\ncase 5: case 6:\n this.$ = $$[$0] \nbreak;\ncase 7: case 8:\n this.$=[];\nbreak;\ncase 9:\nyy.setDateFormat($$[$0].substr(11));this.$=$$[$0].substr(11);\nbreak;\ncase 10:\nyy.enableInclusiveEndDates();this.$=$$[$0].substr(18);\nbreak;\ncase 11:\nyy.TopAxis();this.$=$$[$0].substr(8);\nbreak;\ncase 12:\nyy.setAxisFormat($$[$0].substr(11));this.$=$$[$0].substr(11);\nbreak;\ncase 13:\nyy.setExcludes($$[$0].substr(9));this.$=$$[$0].substr(9);\nbreak;\ncase 14:\nyy.setIncludes($$[$0].substr(9));this.$=$$[$0].substr(9);\nbreak;\ncase 15:\nyy.setTodayMarker($$[$0].substr(12));this.$=$$[$0].substr(12);\nbreak;\ncase 16:\nyy.setTitle($$[$0].substr(6));this.$=$$[$0].substr(6);\nbreak;\ncase 17:\nyy.addSection($$[$0].substr(8));this.$=$$[$0].substr(8);\nbreak;\ncase 19:\nyy.addTask($$[$0-1],$$[$0]);this.$='task';\nbreak;\ncase 23:\nthis.$ = $$[$0-1];yy.setClickEvent($$[$0-1], $$[$0], null);\nbreak;\ncase 24:\nthis.$ = $$[$0-2];yy.setClickEvent($$[$0-2], $$[$0-1], $$[$0]);\nbreak;\ncase 25:\nthis.$ = $$[$0-2];yy.setClickEvent($$[$0-2], $$[$0-1], null);yy.setLink($$[$0-2],$$[$0]);\nbreak;\ncase 26:\nthis.$ = $$[$0-3];yy.setClickEvent($$[$0-3], $$[$0-2], $$[$0-1]);yy.setLink($$[$0-3],$$[$0]);\nbreak;\ncase 27:\nthis.$ = $$[$0-2];yy.setClickEvent($$[$0-2], $$[$0], null);yy.setLink($$[$0-2],$$[$0-1]);\nbreak;\ncase 28:\nthis.$ = $$[$0-3];yy.setClickEvent($$[$0-3], $$[$0-1], $$[$0]);yy.setLink($$[$0-3],$$[$0-2]);\nbreak;\ncase 29:\nthis.$ = $$[$0-1];yy.setLink($$[$0-1], $$[$0]);\nbreak;\ncase 30: case 36:\nthis.$=$$[$0-1] + ' ' + $$[$0];\nbreak;\ncase 31: case 32: case 34:\nthis.$=$$[$0-2] + ' ' + $$[$0-1] + ' ' + $$[$0];\nbreak;\ncase 33: case 35:\nthis.$=$$[$0-3] + ' ' + $$[$0-2] + ' ' + $$[$0-1] + ' ' + $$[$0];\nbreak;\ncase 37:\n yy.parseDirective('%%{', 'open_directive'); \nbreak;\ncase 38:\n yy.parseDirective($$[$0], 'type_directive'); \nbreak;\ncase 39:\n $$[$0] = $$[$0].trim().replace(/'/g, '\"'); yy.parseDirective($$[$0], 'arg_directive'); \nbreak;\ncase 40:\n yy.parseDirective('}%%', 'close_directive', 'gantt'); \nbreak;\n}\n},\ntable: [{3:1,4:2,5:$V0,24:4,34:$V1},{1:[3]},{3:6,4:2,5:$V0,24:4,34:$V1},o($V2,[2,3],{6:7}),{25:8,35:[1,9]},{35:[2,37]},{1:[2,1]},{4:26,7:[1,10],8:11,9:[1,12],10:13,11:[1,14],12:$V3,13:$V4,14:$V5,15:$V6,16:$V7,17:$V8,18:$V9,19:$Va,20:$Vb,21:24,22:$Vc,24:4,29:$Vd,34:$V1},{26:28,27:[1,29],37:$Ve},o([27,37],[2,38]),o($V2,[2,8],{1:[2,2]}),o($V2,[2,4]),{4:26,10:31,12:$V3,13:$V4,14:$V5,15:$V6,16:$V7,17:$V8,18:$V9,19:$Va,20:$Vb,21:24,22:$Vc,24:4,29:$Vd,34:$V1},o($V2,[2,6]),o($V2,[2,7]),o($V2,[2,9]),o($V2,[2,10]),o($V2,[2,11]),o($V2,[2,12]),o($V2,[2,13]),o($V2,[2,14]),o($V2,[2,15]),o($V2,[2,16]),o($V2,[2,17]),o($V2,[2,18]),{23:[1,32]},o($V2,[2,20]),{30:[1,33],32:[1,34]},{11:[1,35]},{28:36,36:[1,37]},{11:[2,40]},o($V2,[2,5]),o($V2,[2,19]),o($V2,[2,23],{31:[1,38],32:[1,39]}),o($V2,[2,29],{30:[1,40]}),o($Vf,[2,21]),{26:41,37:$Ve},{37:[2,39]},o($V2,[2,24],{32:[1,42]}),o($V2,[2,25]),o($V2,[2,27],{31:[1,43]}),{11:[1,44]},o($V2,[2,26]),o($V2,[2,28]),o($Vf,[2,22])],\ndefaultActions: {5:[2,37],6:[2,1],30:[2,40],37:[2,39]},\nparseError: function parseError (str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer.lex() || EOF;\n if (typeof token !== 'number') {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {\"case-insensitive\":true},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0: this.begin('open_directive'); return 34; \nbreak;\ncase 1: this.begin('type_directive'); return 35; \nbreak;\ncase 2: this.popState(); this.begin('arg_directive'); return 27; \nbreak;\ncase 3: this.popState(); this.popState(); return 37; \nbreak;\ncase 4:return 36;\nbreak;\ncase 5:/* skip comments */\nbreak;\ncase 6:/* skip comments */\nbreak;\ncase 7:/* do nothing */\nbreak;\ncase 8:return 11;\nbreak;\ncase 9:/* skip whitespace */\nbreak;\ncase 10:/* skip comments */\nbreak;\ncase 11:/* skip comments */\nbreak;\ncase 12:this.begin(\"href\");\nbreak;\ncase 13:this.popState();\nbreak;\ncase 14:return 32;\nbreak;\ncase 15:this.begin(\"callbackname\");\nbreak;\ncase 16:this.popState();\nbreak;\ncase 17:this.popState(); this.begin(\"callbackargs\");\nbreak;\ncase 18:return 30;\nbreak;\ncase 19:this.popState();\nbreak;\ncase 20:return 31;\nbreak;\ncase 21:this.begin(\"click\");\nbreak;\ncase 22:this.popState();\nbreak;\ncase 23:return 29;\nbreak;\ncase 24:return 5;\nbreak;\ncase 25:return 12;\nbreak;\ncase 26:return 13;\nbreak;\ncase 27:return 14;\nbreak;\ncase 28:return 15;\nbreak;\ncase 29:return 17;\nbreak;\ncase 30:return 16;\nbreak;\ncase 31:return 18;\nbreak;\ncase 32:return 'date';\nbreak;\ncase 33:return 19;\nbreak;\ncase 34:return 20;\nbreak;\ncase 35:return 22;\nbreak;\ncase 36:return 23;\nbreak;\ncase 37:return 27;\nbreak;\ncase 38:return 7;\nbreak;\ncase 39:return 'INVALID';\nbreak;\n}\n},\nrules: [/^(?:%%\\{)/i,/^(?:((?:(?!\\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\\}%%)/i,/^(?:((?:(?!\\}%%).|\\n)*))/i,/^(?:%%(?!\\{)*[^\\n]*)/i,/^(?:[^\\}]%%*[^\\n]*)/i,/^(?:%%*[^\\n]*[\\n]*)/i,/^(?:[\\n]+)/i,/^(?:\\s+)/i,/^(?:#[^\\n]*)/i,/^(?:%[^\\n]*)/i,/^(?:href[\\s]+[\"])/i,/^(?:[\"])/i,/^(?:[^\"]*)/i,/^(?:call[\\s]+)/i,/^(?:\\([\\s]*\\))/i,/^(?:\\()/i,/^(?:[^(]*)/i,/^(?:\\))/i,/^(?:[^)]*)/i,/^(?:click[\\s]+)/i,/^(?:[\\s\\n])/i,/^(?:[^\\s\\n]*)/i,/^(?:gantt\\b)/i,/^(?:dateFormat\\s[^#\\n;]+)/i,/^(?:inclusiveEndDates\\b)/i,/^(?:topAxis\\b)/i,/^(?:axisFormat\\s[^#\\n;]+)/i,/^(?:includes\\s[^#\\n;]+)/i,/^(?:excludes\\s[^#\\n;]+)/i,/^(?:todayMarker\\s[^\\n;]+)/i,/^(?:\\d\\d\\d\\d-\\d\\d-\\d\\d\\b)/i,/^(?:title\\s[^#\\n;]+)/i,/^(?:section\\s[^#:\\n;]+)/i,/^(?:[^#:\\n;]+)/i,/^(?::[^#\\n;]+)/i,/^(?::)/i,/^(?:$)/i,/^(?:.)/i],\nconditions: {\"close_directive\":{\"rules\":[],\"inclusive\":false},\"arg_directive\":{\"rules\":[3,4],\"inclusive\":false},\"type_directive\":{\"rules\":[2,3],\"inclusive\":false},\"open_directive\":{\"rules\":[1],\"inclusive\":false},\"callbackargs\":{\"rules\":[19,20],\"inclusive\":false},\"callbackname\":{\"rules\":[16,17,18],\"inclusive\":false},\"href\":{\"rules\":[13,14],\"inclusive\":false},\"click\":{\"rules\":[22,23],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,5,6,7,8,9,10,11,12,15,21,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain (args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}","/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,4],$V1=[1,7],$V2=[1,5],$V3=[1,9],$V4=[1,6],$V5=[2,6],$V6=[1,16],$V7=[6,8,14,18,20,21,22,37,41],$V8=[8,14,18,20,21,22],$V9=[8,13,14,18,20,21,22],$Va=[1,26],$Vb=[6,8,14,37,41],$Vc=[8,14,41],$Vd=[1,53],$Ve=[1,54],$Vf=[1,55],$Vg=[8,14,24,28,29,41];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"eol\":4,\"directive\":5,\"GG\":6,\"document\":7,\"EOF\":8,\":\":9,\"DIR\":10,\"options\":11,\"body\":12,\"OPT\":13,\"NL\":14,\"line\":15,\"statement\":16,\"commitStatement\":17,\"BRANCH\":18,\"ID\":19,\"CHECKOUT\":20,\"MERGE\":21,\"COMMIT\":22,\"commit_arg\":23,\"COMMIT_TAG\":24,\"STR\":25,\"COMMIT_TYPE\":26,\"commitType\":27,\"COMMIT_ID\":28,\"COMMIT_MSG\":29,\"NORMAL\":30,\"REVERSE\":31,\"HIGHLIGHT\":32,\"openDirective\":33,\"typeDirective\":34,\"closeDirective\":35,\"argDirective\":36,\"open_directive\":37,\"type_directive\":38,\"arg_directive\":39,\"close_directive\":40,\";\":41,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",6:\"GG\",8:\"EOF\",9:\":\",10:\"DIR\",13:\"OPT\",14:\"NL\",18:\"BRANCH\",19:\"ID\",20:\"CHECKOUT\",21:\"MERGE\",22:\"COMMIT\",24:\"COMMIT_TAG\",25:\"STR\",26:\"COMMIT_TYPE\",28:\"COMMIT_ID\",29:\"COMMIT_MSG\",30:\"NORMAL\",31:\"REVERSE\",32:\"HIGHLIGHT\",37:\"open_directive\",38:\"type_directive\",39:\"arg_directive\",40:\"close_directive\",41:\";\"},\nproductions_: [0,[3,2],[3,2],[3,3],[3,4],[3,5],[7,0],[7,2],[11,2],[11,1],[12,0],[12,2],[15,2],[15,1],[16,1],[16,2],[16,2],[16,2],[17,2],[17,3],[17,3],[17,5],[17,5],[17,3],[17,5],[17,5],[17,5],[17,5],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,3],[17,5],[17,5],[17,5],[17,5],[17,5],[17,5],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[23,0],[23,1],[27,1],[27,1],[27,1],[5,3],[5,5],[33,1],[34,1],[36,1],[35,1],[4,1],[4,1],[4,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 3:\n return $$[$0]; \nbreak;\ncase 4:\n return $$[$0-1]; \nbreak;\ncase 5:\nyy.setDirection($$[$0-3]); return $$[$0-1];\nbreak;\ncase 7:\n yy.setOptions($$[$0-1]); this.$ = $$[$0]\nbreak;\ncase 8:\n$$[$0-1] +=$$[$0]; this.$=$$[$0-1]\nbreak;\ncase 10:\nthis.$ = []\nbreak;\ncase 11:\n$$[$0-1].push($$[$0]); this.$=$$[$0-1];\nbreak;\ncase 12:\nthis.$ =$$[$0-1]\nbreak;\ncase 15:\nyy.branch($$[$0])\nbreak;\ncase 16:\nyy.checkout($$[$0])\nbreak;\ncase 17:\nyy.merge($$[$0])\nbreak;\ncase 18:\nyy.commit($$[$0])\nbreak;\ncase 19:\nyy.commit('','',yy.commitType.NORMAL,$$[$0])\nbreak;\ncase 20:\nyy.commit('','',$$[$0],'')\nbreak;\ncase 21:\nyy.commit('','',$$[$0],$$[$0-2])\nbreak;\ncase 22:\nyy.commit('','',$$[$0-2],$$[$0])\nbreak;\ncase 23:\nyy.commit('',$$[$0],yy.commitType.NORMAL,'')\nbreak;\ncase 24:\nyy.commit('',$$[$0-2],yy.commitType.NORMAL,$$[$0])\nbreak;\ncase 25:\nyy.commit('',$$[$0],yy.commitType.NORMAL,$$[$0-2])\nbreak;\ncase 26:\nyy.commit('',$$[$0-2],$$[$0],'')\nbreak;\ncase 27:\nyy.commit('',$$[$0],$$[$0-2],'')\nbreak;\ncase 28:\nyy.commit('',$$[$0-4],$$[$0-2],$$[$0])\nbreak;\ncase 29:\nyy.commit('',$$[$0-4],$$[$0],$$[$0-2])\nbreak;\ncase 30:\nyy.commit('',$$[$0-2],$$[$0-4],$$[$0])\nbreak;\ncase 31:\nyy.commit('',$$[$0],$$[$0-4],$$[$0-2])\nbreak;\ncase 32:\nyy.commit('',$$[$0],$$[$0-2],$$[$0-4])\nbreak;\ncase 33:\nyy.commit('',$$[$0-2],$$[$0],$$[$0-4])\nbreak;\ncase 34:\nyy.commit($$[$0],'',yy.commitType.NORMAL,'')\nbreak;\ncase 35:\nyy.commit($$[$0],'',yy.commitType.NORMAL,$$[$0-2])\nbreak;\ncase 36:\nyy.commit($$[$0-2],'',yy.commitType.NORMAL,$$[$0])\nbreak;\ncase 37:\nyy.commit($$[$0-2],'',$$[$0],'')\nbreak;\ncase 38:\nyy.commit($$[$0],'',$$[$0-2],'')\nbreak;\ncase 39:\nyy.commit($$[$0],$$[$0-2],yy.commitType.NORMAL,'')\nbreak;\ncase 40:\nyy.commit($$[$0-2],$$[$0],yy.commitType.NORMAL,'')\nbreak;\ncase 41:\nyy.commit($$[$0-4],'',$$[$0-2],$$[$0])\nbreak;\ncase 42:\nyy.commit($$[$0-4],'',$$[$0],$$[$0-2])\nbreak;\ncase 43:\nyy.commit($$[$0-2],'',$$[$0-4],$$[$0])\nbreak;\ncase 44:\nyy.commit($$[$0],'',$$[$0-4],$$[$0-2])\nbreak;\ncase 45:\nyy.commit($$[$0],'',$$[$0-2],$$[$0-4])\nbreak;\ncase 46:\nyy.commit($$[$0-2],'',$$[$0],$$[$0-4])\nbreak;\ncase 47:\nyy.commit($$[$0-4],$$[$0],$$[$0-2],'')\nbreak;\ncase 48:\nyy.commit($$[$0-4],$$[$0-2],$$[$0],'')\nbreak;\ncase 49:\nyy.commit($$[$0-2],$$[$0],$$[$0-4],'')\nbreak;\ncase 50:\nyy.commit($$[$0],$$[$0-2],$$[$0-4],'')\nbreak;\ncase 51:\nyy.commit($$[$0],$$[$0-4],$$[$0-2],'')\nbreak;\ncase 52:\nyy.commit($$[$0-2],$$[$0-4],$$[$0],'')\nbreak;\ncase 53:\nyy.commit($$[$0-4],$$[$0],yy.commitType.NORMAL,$$[$0-2])\nbreak;\ncase 54:\nyy.commit($$[$0-4],$$[$0-2],yy.commitType.NORMAL,$$[$0])\nbreak;\ncase 55:\nyy.commit($$[$0-2],$$[$0],yy.commitType.NORMAL,$$[$0-4])\nbreak;\ncase 56:\nyy.commit($$[$0],$$[$0-2],yy.commitType.NORMAL,$$[$0-4])\nbreak;\ncase 57:\nyy.commit($$[$0],$$[$0-4],yy.commitType.NORMAL,$$[$0-2])\nbreak;\ncase 58:\nyy.commit($$[$0-2],$$[$0-4],yy.commitType.NORMAL,$$[$0])\nbreak;\ncase 59:\nyy.commit($$[$0-6],$$[$0-4],$$[$0-2],$$[$0])\nbreak;\ncase 60:\nyy.commit($$[$0-6],$$[$0-4],$$[$0],$$[$0-2])\nbreak;\ncase 61:\nyy.commit($$[$0-6],$$[$0-2],$$[$0-4],$$[$0])\nbreak;\ncase 62:\nyy.commit($$[$0-6],$$[$0],$$[$0-4],$$[$0-2])\nbreak;\ncase 63:\nyy.commit($$[$0-6],$$[$0-2],$$[$0],$$[$0-4])\nbreak;\ncase 64:\nyy.commit($$[$0-6],$$[$0],$$[$0-2],$$[$0-4])\nbreak;\ncase 65:\nyy.commit($$[$0-4],$$[$0-6],$$[$0-2],$$[$0])\nbreak;\ncase 66:\nyy.commit($$[$0-4],$$[$0-6],$$[$0],$$[$0-2])\nbreak;\ncase 67:\nyy.commit($$[$0-2],$$[$0-6],$$[$0-4],$$[$0])\nbreak;\ncase 68:\nyy.commit($$[$0],$$[$0-6],$$[$0-4],$$[$0-2])\nbreak;\ncase 69:\nyy.commit($$[$0-2],$$[$0-6],$$[$0],$$[$0-4])\nbreak;\ncase 70:\nyy.commit($$[$0],$$[$0-6],$$[$0-2],$$[$0-4])\nbreak;\ncase 71:\nyy.commit($$[$0],$$[$0-4],$$[$0-2],$$[$0-6])\nbreak;\ncase 72:\nyy.commit($$[$0-2],$$[$0-4],$$[$0],$$[$0-6])\nbreak;\ncase 73:\nyy.commit($$[$0],$$[$0-2],$$[$0-4],$$[$0-6])\nbreak;\ncase 74:\nyy.commit($$[$0-2],$$[$0],$$[$0-4],$$[$0-6])\nbreak;\ncase 75:\nyy.commit($$[$0-4],$$[$0-2],$$[$0],$$[$0-6])\nbreak;\ncase 76:\nyy.commit($$[$0-4],$$[$0],$$[$0-2],$$[$0-6])\nbreak;\ncase 77:\nyy.commit($$[$0-2],$$[$0-4],$$[$0-6],$$[$0])\nbreak;\ncase 78:\nyy.commit($$[$0],$$[$0-4],$$[$0-6],$$[$0-2])\nbreak;\ncase 79:\nyy.commit($$[$0-2],$$[$0],$$[$0-6],$$[$0-4])\nbreak;\ncase 80:\nyy.commit($$[$0],$$[$0-2],$$[$0-6],$$[$0-4])\nbreak;\ncase 81:\nyy.commit($$[$0-4],$$[$0-2],$$[$0-6],$$[$0])\nbreak;\ncase 82:\nyy.commit($$[$0-4],$$[$0],$$[$0-6],$$[$0-2])\nbreak;\ncase 83:\nthis.$ = \"\"\nbreak;\ncase 84:\nthis.$=$$[$0]\nbreak;\ncase 85:\n this.$=yy.commitType.NORMAL;\nbreak;\ncase 86:\n this.$=yy.commitType.REVERSE;\nbreak;\ncase 87:\n this.$=yy.commitType.HIGHLIGHT;\nbreak;\ncase 90:\n yy.parseDirective('%%{', 'open_directive'); \nbreak;\ncase 91:\n yy.parseDirective($$[$0], 'type_directive'); \nbreak;\ncase 92:\n $$[$0] = $$[$0].trim().replace(/'/g, '\"'); yy.parseDirective($$[$0], 'arg_directive'); \nbreak;\ncase 93:\n yy.parseDirective('}%%', 'close_directive', 'gitGraph'); \nbreak;\n}\n},\ntable: [{3:1,4:2,5:3,6:$V0,8:$V1,14:$V2,33:8,37:$V3,41:$V4},{1:[3]},{3:10,4:2,5:3,6:$V0,8:$V1,14:$V2,33:8,37:$V3,41:$V4},{3:11,4:2,5:3,6:$V0,8:$V1,14:$V2,33:8,37:$V3,41:$V4},{7:12,8:$V5,9:[1,13],10:[1,14],11:15,14:$V6},o($V7,[2,94]),o($V7,[2,95]),o($V7,[2,96]),{34:17,38:[1,18]},{38:[2,90]},{1:[2,1]},{1:[2,2]},{8:[1,19]},{7:20,8:$V5,11:15,14:$V6},{9:[1,21]},o($V8,[2,10],{12:22,13:[1,23]}),o($V9,[2,9]),{9:[1,25],35:24,40:$Va},o([9,40],[2,91]),{1:[2,3]},{8:[1,27]},{7:28,8:$V5,11:15,14:$V6},{8:[2,7],14:[1,31],15:29,16:30,17:32,18:[1,33],20:[1,34],21:[1,35],22:[1,36]},o($V9,[2,8]),o($Vb,[2,88]),{36:37,39:[1,38]},o($Vb,[2,93]),{1:[2,4]},{8:[1,39]},o($V8,[2,11]),{4:40,8:$V1,14:$V2,41:$V4},o($V8,[2,13]),o($Vc,[2,14]),{19:[1,41]},{19:[1,42]},{19:[1,43]},o($Vc,[2,83],{23:44,24:[1,45],25:[1,49],26:[1,46],28:[1,47],29:[1,48]}),{35:50,40:$Va},{40:[2,92]},{1:[2,5]},o($V8,[2,12]),o($Vc,[2,15]),o($Vc,[2,16]),o($Vc,[2,17]),o($Vc,[2,18]),{25:[1,51]},{27:52,30:$Vd,31:$Ve,32:$Vf},{25:[1,56]},{25:[1,57]},o($Vc,[2,84]),o($Vb,[2,89]),o($Vc,[2,19],{26:[1,58],28:[1,59],29:[1,60]}),o($Vc,[2,20],{24:[1,61],28:[1,62],29:[1,63]}),o($Vg,[2,85]),o($Vg,[2,86]),o($Vg,[2,87]),o($Vc,[2,23],{24:[1,64],26:[1,65],29:[1,66]}),o($Vc,[2,34],{24:[1,67],26:[1,68],28:[1,69]}),{27:70,30:$Vd,31:$Ve,32:$Vf},{25:[1,71]},{25:[1,72]},{25:[1,73]},{25:[1,74]},{25:[1,75]},{25:[1,76]},{27:77,30:$Vd,31:$Ve,32:$Vf},{25:[1,78]},{25:[1,79]},{27:80,30:$Vd,31:$Ve,32:$Vf},{25:[1,81]},o($Vc,[2,21],{28:[1,82],29:[1,83]}),o($Vc,[2,25],{26:[1,84],29:[1,85]}),o($Vc,[2,35],{26:[1,86],28:[1,87]}),o($Vc,[2,22],{28:[1,88],29:[1,89]}),o($Vc,[2,27],{24:[1,90],29:[1,91]}),o($Vc,[2,38],{24:[1,92],28:[1,93]}),o($Vc,[2,24],{26:[1,94],29:[1,95]}),o($Vc,[2,26],{24:[1,96],29:[1,97]}),o($Vc,[2,39],{24:[1,99],26:[1,98]}),o($Vc,[2,36],{26:[1,100],28:[1,101]}),o($Vc,[2,37],{24:[1,102],28:[1,103]}),o($Vc,[2,40],{24:[1,105],26:[1,104]}),{25:[1,106]},{25:[1,107]},{27:108,30:$Vd,31:$Ve,32:$Vf},{25:[1,109]},{27:110,30:$Vd,31:$Ve,32:$Vf},{25:[1,111]},{25:[1,112]},{25:[1,113]},{25:[1,114]},{25:[1,115]},{25:[1,116]},{25:[1,117]},{27:118,30:$Vd,31:$Ve,32:$Vf},{25:[1,119]},{25:[1,120]},{25:[1,121]},{27:122,30:$Vd,31:$Ve,32:$Vf},{25:[1,123]},{27:124,30:$Vd,31:$Ve,32:$Vf},{25:[1,125]},{25:[1,126]},{25:[1,127]},{27:128,30:$Vd,31:$Ve,32:$Vf},{25:[1,129]},o($Vc,[2,32],{29:[1,130]}),o($Vc,[2,45],{28:[1,131]}),o($Vc,[2,33],{29:[1,132]}),o($Vc,[2,56],{26:[1,133]}),o($Vc,[2,46],{28:[1,134]}),o($Vc,[2,55],{26:[1,135]}),o($Vc,[2,31],{29:[1,136]}),o($Vc,[2,44],{28:[1,137]}),o($Vc,[2,30],{29:[1,138]}),o($Vc,[2,50],{24:[1,139]}),o($Vc,[2,43],{28:[1,140]}),o($Vc,[2,49],{24:[1,141]}),o($Vc,[2,29],{29:[1,142]}),o($Vc,[2,57],{26:[1,143]}),o($Vc,[2,28],{29:[1,144]}),o($Vc,[2,51],{24:[1,145]}),o($Vc,[2,52],{24:[1,146]}),o($Vc,[2,58],{26:[1,147]}),o($Vc,[2,42],{28:[1,148]}),o($Vc,[2,53],{26:[1,149]}),o($Vc,[2,41],{28:[1,150]}),o($Vc,[2,47],{24:[1,151]}),o($Vc,[2,48],{24:[1,152]}),o($Vc,[2,54],{26:[1,153]}),{25:[1,154]},{25:[1,155]},{25:[1,156]},{27:157,30:$Vd,31:$Ve,32:$Vf},{25:[1,158]},{27:159,30:$Vd,31:$Ve,32:$Vf},{25:[1,160]},{25:[1,161]},{25:[1,162]},{25:[1,163]},{25:[1,164]},{25:[1,165]},{25:[1,166]},{27:167,30:$Vd,31:$Ve,32:$Vf},{25:[1,168]},{25:[1,169]},{25:[1,170]},{27:171,30:$Vd,31:$Ve,32:$Vf},{25:[1,172]},{27:173,30:$Vd,31:$Ve,32:$Vf},{25:[1,174]},{25:[1,175]},{25:[1,176]},{27:177,30:$Vd,31:$Ve,32:$Vf},o($Vc,[2,73]),o($Vc,[2,74]),o($Vc,[2,71]),o($Vc,[2,72]),o($Vc,[2,76]),o($Vc,[2,75]),o($Vc,[2,80]),o($Vc,[2,79]),o($Vc,[2,78]),o($Vc,[2,77]),o($Vc,[2,82]),o($Vc,[2,81]),o($Vc,[2,70]),o($Vc,[2,69]),o($Vc,[2,68]),o($Vc,[2,67]),o($Vc,[2,65]),o($Vc,[2,66]),o($Vc,[2,64]),o($Vc,[2,63]),o($Vc,[2,62]),o($Vc,[2,61]),o($Vc,[2,59]),o($Vc,[2,60])],\ndefaultActions: {9:[2,90],10:[2,1],11:[2,2],19:[2,3],27:[2,4],38:[2,92],39:[2,5]},\nparseError: function parseError (str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer.lex() || EOF;\n if (typeof token !== 'number') {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {\"case-insensitive\":true},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0: this.begin('open_directive'); return 37; \nbreak;\ncase 1: this.begin('type_directive'); return 38; \nbreak;\ncase 2: this.popState(); this.begin('arg_directive'); return 9; \nbreak;\ncase 3: this.popState(); this.popState(); return 40; \nbreak;\ncase 4:return 39;\nbreak;\ncase 5:/*{console.log('New line');return 14;}*/ return 14;\nbreak;\ncase 6:/* skip all whitespace */\nbreak;\ncase 7:/* skip comments */\nbreak;\ncase 8:/* skip comments */\nbreak;\ncase 9:return 6;\nbreak;\ncase 10:return 22;\nbreak;\ncase 11:return 28;\nbreak;\ncase 12:return 26;\nbreak;\ncase 13:return 29;\nbreak;\ncase 14:return 30;\nbreak;\ncase 15:return 31;\nbreak;\ncase 16:return 32;\nbreak;\ncase 17:return 24;\nbreak;\ncase 18:return 18;\nbreak;\ncase 19:return 21;\nbreak;\ncase 20:return 20;\nbreak;\ncase 21:return 10;\nbreak;\ncase 22:return 10;\nbreak;\ncase 23:return 9;\nbreak;\ncase 24:return 'CARET'\nbreak;\ncase 25:this.begin(\"options\");\nbreak;\ncase 26:this.popState();\nbreak;\ncase 27:return 13;\nbreak;\ncase 28:this.begin(\"string\");\nbreak;\ncase 29:this.popState();\nbreak;\ncase 30:return 25;\nbreak;\ncase 31:return 19;\nbreak;\ncase 32:return 8;\nbreak;\n}\n},\nrules: [/^(?:%%\\{)/i,/^(?:((?:(?!\\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\\}%%)/i,/^(?:((?:(?!\\}%%).|\\n)*))/i,/^(?:(\\r?\\n)+)/i,/^(?:\\s+)/i,/^(?:#[^\\n]*)/i,/^(?:%[^\\n]*)/i,/^(?:gitGraph\\b)/i,/^(?:commit\\b)/i,/^(?:id:)/i,/^(?:type:)/i,/^(?:msg:)/i,/^(?:NORMAL\\b)/i,/^(?:REVERSE\\b)/i,/^(?:HIGHLIGHT\\b)/i,/^(?:tag:)/i,/^(?:branch\\b)/i,/^(?:merge\\b)/i,/^(?:checkout\\b)/i,/^(?:LR\\b)/i,/^(?:BT\\b)/i,/^(?::)/i,/^(?:\\^)/i,/^(?:options\\r?\\n)/i,/^(?:end\\r?\\n)/i,/^(?:[^\\n]+\\r?\\n)/i,/^(?:[\"])/i,/^(?:[\"])/i,/^(?:[^\"]*)/i,/^(?:[a-zA-Z][-_\\.a-zA-Z0-9]*[-_a-zA-Z0-9])/i,/^(?:$)/i],\nconditions: {\"close_directive\":{\"rules\":[],\"inclusive\":false},\"arg_directive\":{\"rules\":[3,4],\"inclusive\":false},\"type_directive\":{\"rules\":[2,3],\"inclusive\":false},\"open_directive\":{\"rules\":[1],\"inclusive\":false},\"options\":{\"rules\":[26,27],\"inclusive\":false},\"string\":{\"rules\":[29,30],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,28,31,32],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain (args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}","/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[6,9,10];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"info\":4,\"document\":5,\"EOF\":6,\"line\":7,\"statement\":8,\"NL\":9,\"showInfo\":10,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",4:\"info\",6:\"EOF\",9:\"NL\",10:\"showInfo\"},\nproductions_: [0,[3,3],[5,0],[5,2],[7,1],[7,1],[8,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 1:\n return yy; \nbreak;\ncase 4:\n \nbreak;\ncase 6:\n yy.setInfo(true); \nbreak;\n}\n},\ntable: [{3:1,4:[1,2]},{1:[3]},o($V0,[2,2],{5:3}),{6:[1,4],7:5,8:6,9:[1,7],10:[1,8]},{1:[2,1]},o($V0,[2,3]),o($V0,[2,4]),o($V0,[2,5]),o($V0,[2,6])],\ndefaultActions: {4:[2,1]},\nparseError: function parseError (str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer.lex() || EOF;\n if (typeof token !== 'number') {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n\r\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {\"case-insensitive\":true},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\r\n\t// Pre-lexer code can go here\r\n\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0:return 4 ;\nbreak;\ncase 1:return 9 ;\nbreak;\ncase 2:return 'space';\nbreak;\ncase 3:return 10;\nbreak;\ncase 4:return 6 ;\nbreak;\ncase 5:return 'TXT' ;\nbreak;\n}\n},\nrules: [/^(?:info\\b)/i,/^(?:[\\s\\n\\r]+)/i,/^(?:[\\s]+)/i,/^(?:showInfo\\b)/i,/^(?:$)/i,/^(?:.)/i],\nconditions: {\"INITIAL\":{\"rules\":[0,1,2,3,4,5],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain (args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}","/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,4],$V1=[1,5],$V2=[1,6],$V3=[1,7],$V4=[1,9],$V5=[1,11,13,15,22,23,24,25],$V6=[2,5],$V7=[1,6,11,13,15,22,23,24,25],$V8=[22,23,24],$V9=[2,8],$Va=[1,18],$Vb=[1,19],$Vc=[1,20],$Vd=[1,25],$Ve=[6,22,23,24,25];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"eol\":4,\"directive\":5,\"PIE\":6,\"document\":7,\"showData\":8,\"line\":9,\"statement\":10,\"txt\":11,\"value\":12,\"title\":13,\"title_value\":14,\"accDescription\":15,\"description_value\":16,\"openDirective\":17,\"typeDirective\":18,\"closeDirective\":19,\":\":20,\"argDirective\":21,\"NEWLINE\":22,\";\":23,\"EOF\":24,\"open_directive\":25,\"type_directive\":26,\"arg_directive\":27,\"close_directive\":28,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",6:\"PIE\",8:\"showData\",11:\"txt\",12:\"value\",13:\"title\",14:\"title_value\",15:\"accDescription\",16:\"description_value\",20:\":\",22:\"NEWLINE\",23:\";\",24:\"EOF\",25:\"open_directive\",26:\"type_directive\",27:\"arg_directive\",28:\"close_directive\"},\nproductions_: [0,[3,2],[3,2],[3,2],[3,3],[7,0],[7,2],[9,2],[10,0],[10,2],[10,2],[10,2],[10,1],[5,3],[5,5],[4,1],[4,1],[4,1],[17,1],[18,1],[21,1],[19,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 4:\nyy.setShowData(true);\nbreak;\ncase 7:\n this.$ = $$[$0-1] \nbreak;\ncase 9:\n yy.addSection($$[$0-1],yy.cleanupValue($$[$0])); \nbreak;\ncase 10:\n this.$=$$[$0].trim();yy.setTitle(this.$); \nbreak;\ncase 11:\n this.$=$$[$0].trim();yy.setAccDescription(this.$); \nbreak;\ncase 18:\n yy.parseDirective('%%{', 'open_directive'); \nbreak;\ncase 19:\n yy.parseDirective($$[$0], 'type_directive'); \nbreak;\ncase 20:\n $$[$0] = $$[$0].trim().replace(/'/g, '\"'); yy.parseDirective($$[$0], 'arg_directive'); \nbreak;\ncase 21:\n yy.parseDirective('}%%', 'close_directive', 'pie'); \nbreak;\n}\n},\ntable: [{3:1,4:2,5:3,6:$V0,17:8,22:$V1,23:$V2,24:$V3,25:$V4},{1:[3]},{3:10,4:2,5:3,6:$V0,17:8,22:$V1,23:$V2,24:$V3,25:$V4},{3:11,4:2,5:3,6:$V0,17:8,22:$V1,23:$V2,24:$V3,25:$V4},o($V5,$V6,{7:12,8:[1,13]}),o($V7,[2,15]),o($V7,[2,16]),o($V7,[2,17]),{18:14,26:[1,15]},{26:[2,18]},{1:[2,1]},{1:[2,2]},o($V8,$V9,{17:8,9:16,10:17,5:21,1:[2,3],11:$Va,13:$Vb,15:$Vc,25:$V4}),o($V5,$V6,{7:22}),{19:23,20:[1,24],28:$Vd},o([20,28],[2,19]),o($V5,[2,6]),{4:26,22:$V1,23:$V2,24:$V3},{12:[1,27]},{14:[1,28]},{16:[1,29]},o($V8,[2,12]),o($V8,$V9,{17:8,9:16,10:17,5:21,1:[2,4],11:$Va,13:$Vb,15:$Vc,25:$V4}),o($Ve,[2,13]),{21:30,27:[1,31]},o($Ve,[2,21]),o($V5,[2,7]),o($V8,[2,9]),o($V8,[2,10]),o($V8,[2,11]),{19:32,28:$Vd},{28:[2,20]},o($Ve,[2,14])],\ndefaultActions: {9:[2,18],10:[2,1],11:[2,2],31:[2,20]},\nparseError: function parseError (str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer.lex() || EOF;\n if (typeof token !== 'number') {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {\"case-insensitive\":true},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0: this.begin('open_directive'); return 25; \nbreak;\ncase 1: this.begin('type_directive'); return 26; \nbreak;\ncase 2: this.popState(); this.begin('arg_directive'); return 20; \nbreak;\ncase 3: this.popState(); this.popState(); return 28; \nbreak;\ncase 4:return 27;\nbreak;\ncase 5:/* skip comments */\nbreak;\ncase 6:/* skip comments */{ /*console.log('');*/ }\nbreak;\ncase 7:return 22;\nbreak;\ncase 8:/* do nothing */\nbreak;\ncase 9:/* ignore */\nbreak;\ncase 10: this.begin(\"title\");return 13; \nbreak;\ncase 11: this.popState(); return \"title_value\"; \nbreak;\ncase 12: this.begin(\"accDescription\");return 15; \nbreak;\ncase 13: this.popState(); return \"description_value\"; \nbreak;\ncase 14: this.begin(\"string\"); \nbreak;\ncase 15: this.popState(); \nbreak;\ncase 16: return \"txt\"; \nbreak;\ncase 17:return 6;\nbreak;\ncase 18:return 8;\nbreak;\ncase 19:return \"value\";\nbreak;\ncase 20:return 24;\nbreak;\n}\n},\nrules: [/^(?:%%\\{)/i,/^(?:((?:(?!\\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\\}%%)/i,/^(?:((?:(?!\\}%%).|\\n)*))/i,/^(?:%%(?!\\{)[^\\n]*)/i,/^(?:[^\\}]%%[^\\n]*)/i,/^(?:[\\n\\r]+)/i,/^(?:%%[^\\n]*)/i,/^(?:[\\s]+)/i,/^(?:title\\b)/i,/^(?:(?!\\n||)*[^\\n]*)/i,/^(?:accDescription\\b)/i,/^(?:(?!\\n||)*[^\\n]*)/i,/^(?:[\"])/i,/^(?:[\"])/i,/^(?:[^\"]*)/i,/^(?:pie\\b)/i,/^(?:showData\\b)/i,/^(?::[\\s]*[\\d]+(?:\\.[\\d]+)?)/i,/^(?:$)/i],\nconditions: {\"close_directive\":{\"rules\":[],\"inclusive\":false},\"arg_directive\":{\"rules\":[3,4],\"inclusive\":false},\"type_directive\":{\"rules\":[2,3],\"inclusive\":false},\"open_directive\":{\"rules\":[1],\"inclusive\":false},\"accDescription\":{\"rules\":[13],\"inclusive\":false},\"title\":{\"rules\":[11],\"inclusive\":false},\"string\":{\"rules\":[15,16],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,5,6,7,8,9,10,12,14,17,18,19,20],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain (args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}","/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,3],$V1=[1,5],$V2=[1,17],$V3=[2,10],$V4=[1,21],$V5=[1,22],$V6=[1,23],$V7=[1,24],$V8=[1,25],$V9=[1,26],$Va=[1,19],$Vb=[1,27],$Vc=[1,28],$Vd=[1,31],$Ve=[66,67],$Vf=[5,8,14,35,36,37,38,39,40,48,55,57,66,67],$Vg=[5,6,8,14,35,36,37,38,39,40,48,66,67],$Vh=[1,51],$Vi=[1,52],$Vj=[1,53],$Vk=[1,54],$Vl=[1,55],$Vm=[1,56],$Vn=[1,57],$Vo=[57,58],$Vp=[1,69],$Vq=[1,65],$Vr=[1,66],$Vs=[1,67],$Vt=[1,68],$Vu=[1,70],$Vv=[1,74],$Vw=[1,75],$Vx=[1,72],$Vy=[1,73],$Vz=[5,8,14,35,36,37,38,39,40,48,66,67];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"directive\":4,\"NEWLINE\":5,\"RD\":6,\"diagram\":7,\"EOF\":8,\"openDirective\":9,\"typeDirective\":10,\"closeDirective\":11,\":\":12,\"argDirective\":13,\"open_directive\":14,\"type_directive\":15,\"arg_directive\":16,\"close_directive\":17,\"requirementDef\":18,\"elementDef\":19,\"relationshipDef\":20,\"requirementType\":21,\"requirementName\":22,\"STRUCT_START\":23,\"requirementBody\":24,\"ID\":25,\"COLONSEP\":26,\"id\":27,\"TEXT\":28,\"text\":29,\"RISK\":30,\"riskLevel\":31,\"VERIFYMTHD\":32,\"verifyType\":33,\"STRUCT_STOP\":34,\"REQUIREMENT\":35,\"FUNCTIONAL_REQUIREMENT\":36,\"INTERFACE_REQUIREMENT\":37,\"PERFORMANCE_REQUIREMENT\":38,\"PHYSICAL_REQUIREMENT\":39,\"DESIGN_CONSTRAINT\":40,\"LOW_RISK\":41,\"MED_RISK\":42,\"HIGH_RISK\":43,\"VERIFY_ANALYSIS\":44,\"VERIFY_DEMONSTRATION\":45,\"VERIFY_INSPECTION\":46,\"VERIFY_TEST\":47,\"ELEMENT\":48,\"elementName\":49,\"elementBody\":50,\"TYPE\":51,\"type\":52,\"DOCREF\":53,\"ref\":54,\"END_ARROW_L\":55,\"relationship\":56,\"LINE\":57,\"END_ARROW_R\":58,\"CONTAINS\":59,\"COPIES\":60,\"DERIVES\":61,\"SATISFIES\":62,\"VERIFIES\":63,\"REFINES\":64,\"TRACES\":65,\"unqString\":66,\"qString\":67,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",5:\"NEWLINE\",6:\"RD\",8:\"EOF\",12:\":\",14:\"open_directive\",15:\"type_directive\",16:\"arg_directive\",17:\"close_directive\",23:\"STRUCT_START\",25:\"ID\",26:\"COLONSEP\",28:\"TEXT\",30:\"RISK\",32:\"VERIFYMTHD\",34:\"STRUCT_STOP\",35:\"REQUIREMENT\",36:\"FUNCTIONAL_REQUIREMENT\",37:\"INTERFACE_REQUIREMENT\",38:\"PERFORMANCE_REQUIREMENT\",39:\"PHYSICAL_REQUIREMENT\",40:\"DESIGN_CONSTRAINT\",41:\"LOW_RISK\",42:\"MED_RISK\",43:\"HIGH_RISK\",44:\"VERIFY_ANALYSIS\",45:\"VERIFY_DEMONSTRATION\",46:\"VERIFY_INSPECTION\",47:\"VERIFY_TEST\",48:\"ELEMENT\",51:\"TYPE\",53:\"DOCREF\",55:\"END_ARROW_L\",57:\"LINE\",58:\"END_ARROW_R\",59:\"CONTAINS\",60:\"COPIES\",61:\"DERIVES\",62:\"SATISFIES\",63:\"VERIFIES\",64:\"REFINES\",65:\"TRACES\",66:\"unqString\",67:\"qString\"},\nproductions_: [0,[3,3],[3,2],[3,4],[4,3],[4,5],[9,1],[10,1],[13,1],[11,1],[7,0],[7,2],[7,2],[7,2],[7,2],[7,2],[18,5],[24,5],[24,5],[24,5],[24,5],[24,2],[24,1],[21,1],[21,1],[21,1],[21,1],[21,1],[21,1],[31,1],[31,1],[31,1],[33,1],[33,1],[33,1],[33,1],[19,5],[50,5],[50,5],[50,2],[50,1],[20,5],[20,5],[56,1],[56,1],[56,1],[56,1],[56,1],[56,1],[56,1],[22,1],[22,1],[27,1],[27,1],[29,1],[29,1],[49,1],[49,1],[52,1],[52,1],[54,1],[54,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 6:\n yy.parseDirective('%%{', 'open_directive'); \nbreak;\ncase 7:\n yy.parseDirective($$[$0], 'type_directive'); \nbreak;\ncase 8:\n $$[$0] = $$[$0].trim().replace(/'/g, '\"'); yy.parseDirective($$[$0], 'arg_directive'); \nbreak;\ncase 9:\n yy.parseDirective('}%%', 'close_directive', 'pie'); \nbreak;\ncase 10:\n this.$ = [] \nbreak;\ncase 16:\n yy.addRequirement($$[$0-3], $$[$0-4]) \nbreak;\ncase 17:\n yy.setNewReqId($$[$0-2]); \nbreak;\ncase 18:\n yy.setNewReqText($$[$0-2]); \nbreak;\ncase 19:\n yy.setNewReqRisk($$[$0-2]); \nbreak;\ncase 20:\n yy.setNewReqVerifyMethod($$[$0-2]); \nbreak;\ncase 23:\n this.$=yy.RequirementType.REQUIREMENT;\nbreak;\ncase 24:\n this.$=yy.RequirementType.FUNCTIONAL_REQUIREMENT;\nbreak;\ncase 25:\n this.$=yy.RequirementType.INTERFACE_REQUIREMENT;\nbreak;\ncase 26:\n this.$=yy.RequirementType.PERFORMANCE_REQUIREMENT;\nbreak;\ncase 27:\n this.$=yy.RequirementType.PHYSICAL_REQUIREMENT;\nbreak;\ncase 28:\n this.$=yy.RequirementType.DESIGN_CONSTRAINT;\nbreak;\ncase 29:\n this.$=yy.RiskLevel.LOW_RISK;\nbreak;\ncase 30:\n this.$=yy.RiskLevel.MED_RISK;\nbreak;\ncase 31:\n this.$=yy.RiskLevel.HIGH_RISK;\nbreak;\ncase 32:\n this.$=yy.VerifyType.VERIFY_ANALYSIS;\nbreak;\ncase 33:\n this.$=yy.VerifyType.VERIFY_DEMONSTRATION;\nbreak;\ncase 34:\n this.$=yy.VerifyType.VERIFY_INSPECTION;\nbreak;\ncase 35:\n this.$=yy.VerifyType.VERIFY_TEST;\nbreak;\ncase 36:\n yy.addElement($$[$0-3]) \nbreak;\ncase 37:\n yy.setNewElementType($$[$0-2]); \nbreak;\ncase 38:\n yy.setNewElementDocRef($$[$0-2]); \nbreak;\ncase 41:\n yy.addRelationship($$[$0-2], $$[$0], $$[$0-4]) \nbreak;\ncase 42:\n yy.addRelationship($$[$0-2], $$[$0-4], $$[$0]) \nbreak;\ncase 43:\n this.$=yy.Relationships.CONTAINS;\nbreak;\ncase 44:\n this.$=yy.Relationships.COPIES;\nbreak;\ncase 45:\n this.$=yy.Relationships.DERIVES;\nbreak;\ncase 46:\n this.$=yy.Relationships.SATISFIES;\nbreak;\ncase 47:\n this.$=yy.Relationships.VERIFIES;\nbreak;\ncase 48:\n this.$=yy.Relationships.REFINES;\nbreak;\ncase 49:\n this.$=yy.Relationships.TRACES;\nbreak;\n}\n},\ntable: [{3:1,4:2,6:$V0,9:4,14:$V1},{1:[3]},{3:7,4:2,5:[1,6],6:$V0,9:4,14:$V1},{5:[1,8]},{10:9,15:[1,10]},{15:[2,6]},{3:11,4:2,6:$V0,9:4,14:$V1},{1:[2,2]},{4:16,5:$V2,7:12,8:$V3,9:4,14:$V1,18:13,19:14,20:15,21:18,27:20,35:$V4,36:$V5,37:$V6,38:$V7,39:$V8,40:$V9,48:$Va,66:$Vb,67:$Vc},{11:29,12:[1,30],17:$Vd},o([12,17],[2,7]),{1:[2,1]},{8:[1,32]},{4:16,5:$V2,7:33,8:$V3,9:4,14:$V1,18:13,19:14,20:15,21:18,27:20,35:$V4,36:$V5,37:$V6,38:$V7,39:$V8,40:$V9,48:$Va,66:$Vb,67:$Vc},{4:16,5:$V2,7:34,8:$V3,9:4,14:$V1,18:13,19:14,20:15,21:18,27:20,35:$V4,36:$V5,37:$V6,38:$V7,39:$V8,40:$V9,48:$Va,66:$Vb,67:$Vc},{4:16,5:$V2,7:35,8:$V3,9:4,14:$V1,18:13,19:14,20:15,21:18,27:20,35:$V4,36:$V5,37:$V6,38:$V7,39:$V8,40:$V9,48:$Va,66:$Vb,67:$Vc},{4:16,5:$V2,7:36,8:$V3,9:4,14:$V1,18:13,19:14,20:15,21:18,27:20,35:$V4,36:$V5,37:$V6,38:$V7,39:$V8,40:$V9,48:$Va,66:$Vb,67:$Vc},{4:16,5:$V2,7:37,8:$V3,9:4,14:$V1,18:13,19:14,20:15,21:18,27:20,35:$V4,36:$V5,37:$V6,38:$V7,39:$V8,40:$V9,48:$Va,66:$Vb,67:$Vc},{22:38,66:[1,39],67:[1,40]},{49:41,66:[1,42],67:[1,43]},{55:[1,44],57:[1,45]},o($Ve,[2,23]),o($Ve,[2,24]),o($Ve,[2,25]),o($Ve,[2,26]),o($Ve,[2,27]),o($Ve,[2,28]),o($Vf,[2,52]),o($Vf,[2,53]),o($Vg,[2,4]),{13:46,16:[1,47]},o($Vg,[2,9]),{1:[2,3]},{8:[2,11]},{8:[2,12]},{8:[2,13]},{8:[2,14]},{8:[2,15]},{23:[1,48]},{23:[2,50]},{23:[2,51]},{23:[1,49]},{23:[2,56]},{23:[2,57]},{56:50,59:$Vh,60:$Vi,61:$Vj,62:$Vk,63:$Vl,64:$Vm,65:$Vn},{56:58,59:$Vh,60:$Vi,61:$Vj,62:$Vk,63:$Vl,64:$Vm,65:$Vn},{11:59,17:$Vd},{17:[2,8]},{5:[1,60]},{5:[1,61]},{57:[1,62]},o($Vo,[2,43]),o($Vo,[2,44]),o($Vo,[2,45]),o($Vo,[2,46]),o($Vo,[2,47]),o($Vo,[2,48]),o($Vo,[2,49]),{58:[1,63]},o($Vg,[2,5]),{5:$Vp,24:64,25:$Vq,28:$Vr,30:$Vs,32:$Vt,34:$Vu},{5:$Vv,34:$Vw,50:71,51:$Vx,53:$Vy},{27:76,66:$Vb,67:$Vc},{27:77,66:$Vb,67:$Vc},o($Vz,[2,16]),{26:[1,78]},{26:[1,79]},{26:[1,80]},{26:[1,81]},{5:$Vp,24:82,25:$Vq,28:$Vr,30:$Vs,32:$Vt,34:$Vu},o($Vz,[2,22]),o($Vz,[2,36]),{26:[1,83]},{26:[1,84]},{5:$Vv,34:$Vw,50:85,51:$Vx,53:$Vy},o($Vz,[2,40]),o($Vz,[2,41]),o($Vz,[2,42]),{27:86,66:$Vb,67:$Vc},{29:87,66:[1,88],67:[1,89]},{31:90,41:[1,91],42:[1,92],43:[1,93]},{33:94,44:[1,95],45:[1,96],46:[1,97],47:[1,98]},o($Vz,[2,21]),{52:99,66:[1,100],67:[1,101]},{54:102,66:[1,103],67:[1,104]},o($Vz,[2,39]),{5:[1,105]},{5:[1,106]},{5:[2,54]},{5:[2,55]},{5:[1,107]},{5:[2,29]},{5:[2,30]},{5:[2,31]},{5:[1,108]},{5:[2,32]},{5:[2,33]},{5:[2,34]},{5:[2,35]},{5:[1,109]},{5:[2,58]},{5:[2,59]},{5:[1,110]},{5:[2,60]},{5:[2,61]},{5:$Vp,24:111,25:$Vq,28:$Vr,30:$Vs,32:$Vt,34:$Vu},{5:$Vp,24:112,25:$Vq,28:$Vr,30:$Vs,32:$Vt,34:$Vu},{5:$Vp,24:113,25:$Vq,28:$Vr,30:$Vs,32:$Vt,34:$Vu},{5:$Vp,24:114,25:$Vq,28:$Vr,30:$Vs,32:$Vt,34:$Vu},{5:$Vv,34:$Vw,50:115,51:$Vx,53:$Vy},{5:$Vv,34:$Vw,50:116,51:$Vx,53:$Vy},o($Vz,[2,17]),o($Vz,[2,18]),o($Vz,[2,19]),o($Vz,[2,20]),o($Vz,[2,37]),o($Vz,[2,38])],\ndefaultActions: {5:[2,6],7:[2,2],11:[2,1],32:[2,3],33:[2,11],34:[2,12],35:[2,13],36:[2,14],37:[2,15],39:[2,50],40:[2,51],42:[2,56],43:[2,57],47:[2,8],88:[2,54],89:[2,55],91:[2,29],92:[2,30],93:[2,31],95:[2,32],96:[2,33],97:[2,34],98:[2,35],100:[2,58],101:[2,59],103:[2,60],104:[2,61]},\nparseError: function parseError (str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer.lex() || EOF;\n if (typeof token !== 'number') {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {\"case-insensitive\":true},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0: this.begin('open_directive'); return 14; \nbreak;\ncase 1: this.begin('type_directive'); return 15; \nbreak;\ncase 2: this.popState(); this.begin('arg_directive'); return 12; \nbreak;\ncase 3: this.popState(); this.popState(); return 17; \nbreak;\ncase 4:return 16;\nbreak;\ncase 5:return 5;\nbreak;\ncase 6:/* skip all whitespace */\nbreak;\ncase 7:/* skip comments */\nbreak;\ncase 8:/* skip comments */\nbreak;\ncase 9:return 8;\nbreak;\ncase 10:return 6;\nbreak;\ncase 11:return 23;\nbreak;\ncase 12:return 34;\nbreak;\ncase 13:return 26;\nbreak;\ncase 14:return 25;\nbreak;\ncase 15:return 28;\nbreak;\ncase 16:return 30;\nbreak;\ncase 17:return 32;\nbreak;\ncase 18:return 35;\nbreak;\ncase 19:return 36;\nbreak;\ncase 20:return 37;\nbreak;\ncase 21:return 38;\nbreak;\ncase 22:return 39;\nbreak;\ncase 23:return 40;\nbreak;\ncase 24:return 41;\nbreak;\ncase 25:return 42;\nbreak;\ncase 26:return 43;\nbreak;\ncase 27:return 44;\nbreak;\ncase 28:return 45;\nbreak;\ncase 29:return 46;\nbreak;\ncase 30:return 47;\nbreak;\ncase 31:return 48;\nbreak;\ncase 32:return 59;\nbreak;\ncase 33:return 60;\nbreak;\ncase 34:return 61;\nbreak;\ncase 35:return 62;\nbreak;\ncase 36:return 63;\nbreak;\ncase 37:return 64;\nbreak;\ncase 38:return 65;\nbreak;\ncase 39:return 51;\nbreak;\ncase 40:return 53;\nbreak;\ncase 41:return 55;\nbreak;\ncase 42:return 58;\nbreak;\ncase 43:return 57;\nbreak;\ncase 44: this.begin(\"string\"); \nbreak;\ncase 45: this.popState(); \nbreak;\ncase 46: return \"qString\"; \nbreak;\ncase 47: yy_.yytext = yy_.yytext.trim(); return 66;\nbreak;\n}\n},\nrules: [/^(?:%%\\{)/i,/^(?:((?:(?!\\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\\}%%)/i,/^(?:((?:(?!\\}%%).|\\n)*))/i,/^(?:(\\r?\\n)+)/i,/^(?:\\s+)/i,/^(?:#[^\\n]*)/i,/^(?:%[^\\n]*)/i,/^(?:$)/i,/^(?:requirementDiagram\\b)/i,/^(?:\\{)/i,/^(?:\\})/i,/^(?::)/i,/^(?:id\\b)/i,/^(?:text\\b)/i,/^(?:risk\\b)/i,/^(?:verifyMethod\\b)/i,/^(?:requirement\\b)/i,/^(?:functionalRequirement\\b)/i,/^(?:interfaceRequirement\\b)/i,/^(?:performanceRequirement\\b)/i,/^(?:physicalRequirement\\b)/i,/^(?:designConstraint\\b)/i,/^(?:low\\b)/i,/^(?:medium\\b)/i,/^(?:high\\b)/i,/^(?:analysis\\b)/i,/^(?:demonstration\\b)/i,/^(?:inspection\\b)/i,/^(?:test\\b)/i,/^(?:element\\b)/i,/^(?:contains\\b)/i,/^(?:copies\\b)/i,/^(?:derives\\b)/i,/^(?:satisfies\\b)/i,/^(?:verifies\\b)/i,/^(?:refines\\b)/i,/^(?:traces\\b)/i,/^(?:type\\b)/i,/^(?:docref\\b)/i,/^(?:<-)/i,/^(?:->)/i,/^(?:-)/i,/^(?:[\"])/i,/^(?:[\"])/i,/^(?:[^\"]*)/i,/^(?:[\\w][^\\r\\n\\{\\<\\>\\-\\=]*)/i],\nconditions: {\"close_directive\":{\"rules\":[],\"inclusive\":false},\"arg_directive\":{\"rules\":[3,4],\"inclusive\":false},\"type_directive\":{\"rules\":[2,3],\"inclusive\":false},\"open_directive\":{\"rules\":[1],\"inclusive\":false},\"unqString\":{\"rules\":[],\"inclusive\":false},\"token\":{\"rules\":[],\"inclusive\":false},\"string\":{\"rules\":[45,46],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,47],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain (args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}","/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,2],$V1=[1,3],$V2=[1,5],$V3=[1,7],$V4=[2,5],$V5=[1,15],$V6=[1,17],$V7=[1,18],$V8=[1,19],$V9=[1,21],$Va=[1,22],$Vb=[1,23],$Vc=[1,29],$Vd=[1,30],$Ve=[1,31],$Vf=[1,32],$Vg=[1,33],$Vh=[1,34],$Vi=[1,35],$Vj=[1,36],$Vk=[1,39],$Vl=[1,40],$Vm=[1,41],$Vn=[1,42],$Vo=[1,43],$Vp=[1,44],$Vq=[1,47],$Vr=[1,4,5,16,20,22,23,24,30,31,32,33,34,35,36,37,39,41,42,43,48,49,50,51,59,69],$Vs=[4,5,16,20,22,23,24,30,31,32,33,34,35,36,37,39,43,48,49,50,51,59,69],$Vt=[4,5,16,20,22,23,24,30,31,32,33,34,35,36,37,39,42,43,48,49,50,51,59,69],$Vu=[4,5,16,20,22,23,24,30,31,32,33,34,35,36,37,39,41,43,48,49,50,51,59,69],$Vv=[57,58,59],$Vw=[1,104],$Vx=[1,4,5,7,16,20,22,23,24,30,31,32,33,34,35,36,37,39,41,42,43,48,49,50,51,59,69];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"SPACE\":4,\"NEWLINE\":5,\"directive\":6,\"SD\":7,\"document\":8,\"line\":9,\"statement\":10,\"openDirective\":11,\"typeDirective\":12,\"closeDirective\":13,\":\":14,\"argDirective\":15,\"participant\":16,\"actor\":17,\"AS\":18,\"restOfLine\":19,\"participant_actor\":20,\"signal\":21,\"autonumber\":22,\"activate\":23,\"deactivate\":24,\"note_statement\":25,\"links_statement\":26,\"link_statement\":27,\"properties_statement\":28,\"details_statement\":29,\"title\":30,\"legacy_title\":31,\"accDescription\":32,\"loop\":33,\"end\":34,\"rect\":35,\"opt\":36,\"alt\":37,\"else_sections\":38,\"par\":39,\"par_sections\":40,\"and\":41,\"else\":42,\"note\":43,\"placement\":44,\"text2\":45,\"over\":46,\"actor_pair\":47,\"links\":48,\"link\":49,\"properties\":50,\"details\":51,\"spaceList\":52,\",\":53,\"left_of\":54,\"right_of\":55,\"signaltype\":56,\"+\":57,\"-\":58,\"ACTOR\":59,\"SOLID_OPEN_ARROW\":60,\"DOTTED_OPEN_ARROW\":61,\"SOLID_ARROW\":62,\"DOTTED_ARROW\":63,\"SOLID_CROSS\":64,\"DOTTED_CROSS\":65,\"SOLID_POINT\":66,\"DOTTED_POINT\":67,\"TXT\":68,\"open_directive\":69,\"type_directive\":70,\"arg_directive\":71,\"close_directive\":72,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",4:\"SPACE\",5:\"NEWLINE\",7:\"SD\",14:\":\",16:\"participant\",18:\"AS\",19:\"restOfLine\",20:\"participant_actor\",22:\"autonumber\",23:\"activate\",24:\"deactivate\",30:\"title\",31:\"legacy_title\",32:\"accDescription\",33:\"loop\",34:\"end\",35:\"rect\",36:\"opt\",37:\"alt\",39:\"par\",41:\"and\",42:\"else\",43:\"note\",46:\"over\",48:\"links\",49:\"link\",50:\"properties\",51:\"details\",53:\",\",54:\"left_of\",55:\"right_of\",57:\"+\",58:\"-\",59:\"ACTOR\",60:\"SOLID_OPEN_ARROW\",61:\"DOTTED_OPEN_ARROW\",62:\"SOLID_ARROW\",63:\"DOTTED_ARROW\",64:\"SOLID_CROSS\",65:\"DOTTED_CROSS\",66:\"SOLID_POINT\",67:\"DOTTED_POINT\",68:\"TXT\",69:\"open_directive\",70:\"type_directive\",71:\"arg_directive\",72:\"close_directive\"},\nproductions_: [0,[3,2],[3,2],[3,2],[3,2],[8,0],[8,2],[9,2],[9,1],[9,1],[6,4],[6,6],[10,5],[10,3],[10,5],[10,3],[10,2],[10,1],[10,3],[10,3],[10,2],[10,2],[10,2],[10,2],[10,2],[10,1],[10,1],[10,1],[10,4],[10,4],[10,4],[10,4],[10,4],[10,1],[40,1],[40,4],[38,1],[38,4],[25,4],[25,4],[26,3],[27,3],[28,3],[29,3],[52,2],[52,1],[47,3],[47,1],[44,1],[44,1],[21,5],[21,5],[21,4],[17,1],[56,1],[56,1],[56,1],[56,1],[56,1],[56,1],[56,1],[56,1],[45,1],[11,1],[12,1],[15,1],[13,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 4:\n yy.apply($$[$0]);return $$[$0]; \nbreak;\ncase 5:\n this.$ = [] \nbreak;\ncase 6:\n$$[$0-1].push($$[$0]);this.$ = $$[$0-1]\nbreak;\ncase 7: case 8:\n this.$ = $$[$0] \nbreak;\ncase 9:\n this.$=[]; \nbreak;\ncase 12:\n$$[$0-3].type='addParticipant';$$[$0-3].description=yy.parseMessage($$[$0-1]); this.$=$$[$0-3];\nbreak;\ncase 13:\n$$[$0-1].type='addParticipant';this.$=$$[$0-1];\nbreak;\ncase 14:\n$$[$0-3].type='addActor';$$[$0-3].description=yy.parseMessage($$[$0-1]); this.$=$$[$0-3];\nbreak;\ncase 15:\n$$[$0-1].type='addActor'; this.$=$$[$0-1];\nbreak;\ncase 17:\nyy.enableSequenceNumbers()\nbreak;\ncase 18:\nthis.$={type: 'activeStart', signalType: yy.LINETYPE.ACTIVE_START, actor: $$[$0-1]};\nbreak;\ncase 19:\nthis.$={type: 'activeEnd', signalType: yy.LINETYPE.ACTIVE_END, actor: $$[$0-1]};\nbreak;\ncase 25:\nyy.setTitle($$[$0].substring(6));this.$=$$[$0].substring(6);\nbreak;\ncase 26:\nyy.setTitle($$[$0].substring(7));this.$=$$[$0].substring(7);\nbreak;\ncase 27:\nyy.setAccDescription($$[$0].substring(15));this.$=$$[$0].substring(15);\nbreak;\ncase 28:\n\n\t\t$$[$0-1].unshift({type: 'loopStart', loopText:yy.parseMessage($$[$0-2]), signalType: yy.LINETYPE.LOOP_START});\n\t\t$$[$0-1].push({type: 'loopEnd', loopText:$$[$0-2], signalType: yy.LINETYPE.LOOP_END});\n\t\tthis.$=$$[$0-1];\nbreak;\ncase 29:\n\n\t\t$$[$0-1].unshift({type: 'rectStart', color:yy.parseMessage($$[$0-2]), signalType: yy.LINETYPE.RECT_START });\n\t\t$$[$0-1].push({type: 'rectEnd', color:yy.parseMessage($$[$0-2]), signalType: yy.LINETYPE.RECT_END });\n\t\tthis.$=$$[$0-1];\nbreak;\ncase 30:\n\n\t\t$$[$0-1].unshift({type: 'optStart', optText:yy.parseMessage($$[$0-2]), signalType: yy.LINETYPE.OPT_START});\n\t\t$$[$0-1].push({type: 'optEnd', optText:yy.parseMessage($$[$0-2]), signalType: yy.LINETYPE.OPT_END});\n\t\tthis.$=$$[$0-1];\nbreak;\ncase 31:\n\n\t\t// Alt start\n\t\t$$[$0-1].unshift({type: 'altStart', altText:yy.parseMessage($$[$0-2]), signalType: yy.LINETYPE.ALT_START});\n\t\t// Content in alt is already in $$[$0-1]\n\t\t// End\n\t\t$$[$0-1].push({type: 'altEnd', signalType: yy.LINETYPE.ALT_END});\n\t\tthis.$=$$[$0-1];\nbreak;\ncase 32:\n\n\t\t// Parallel start\n\t\t$$[$0-1].unshift({type: 'parStart', parText:yy.parseMessage($$[$0-2]), signalType: yy.LINETYPE.PAR_START});\n\t\t// Content in par is already in $$[$0-1]\n\t\t// End\n\t\t$$[$0-1].push({type: 'parEnd', signalType: yy.LINETYPE.PAR_END});\n\t\tthis.$=$$[$0-1];\nbreak;\ncase 35:\n this.$ = $$[$0-3].concat([{type: 'and', parText:yy.parseMessage($$[$0-1]), signalType: yy.LINETYPE.PAR_AND}, $$[$0]]); \nbreak;\ncase 37:\n this.$ = $$[$0-3].concat([{type: 'else', altText:yy.parseMessage($$[$0-1]), signalType: yy.LINETYPE.ALT_ELSE}, $$[$0]]); \nbreak;\ncase 38:\n\n\t\tthis.$ = [$$[$0-1], {type:'addNote', placement:$$[$0-2], actor:$$[$0-1].actor, text:$$[$0]}];\nbreak;\ncase 39:\n\n\t\t// Coerce actor_pair into a [to, from, ...] array\n\t\t$$[$0-2] = [].concat($$[$0-1], $$[$0-1]).slice(0, 2);\n\t\t$$[$0-2][0] = $$[$0-2][0].actor;\n\t\t$$[$0-2][1] = $$[$0-2][1].actor;\n\t\tthis.$ = [$$[$0-1], {type:'addNote', placement:yy.PLACEMENT.OVER, actor:$$[$0-2].slice(0, 2), text:$$[$0]}];\nbreak;\ncase 40:\n\n\t\tthis.$ = [$$[$0-1], {type:'addLinks', actor:$$[$0-1].actor, text:$$[$0]}];\n \nbreak;\ncase 41:\n\n\t\tthis.$ = [$$[$0-1], {type:'addALink', actor:$$[$0-1].actor, text:$$[$0]}];\n \nbreak;\ncase 42:\n\n\t\tthis.$ = [$$[$0-1], {type:'addProperties', actor:$$[$0-1].actor, text:$$[$0]}];\n \nbreak;\ncase 43:\n\n\t\tthis.$ = [$$[$0-1], {type:'addDetails', actor:$$[$0-1].actor, text:$$[$0]}];\n \nbreak;\ncase 46:\n this.$ = [$$[$0-2], $$[$0]]; \nbreak;\ncase 47:\n this.$ = $$[$0]; \nbreak;\ncase 48:\n this.$ = yy.PLACEMENT.LEFTOF; \nbreak;\ncase 49:\n this.$ = yy.PLACEMENT.RIGHTOF; \nbreak;\ncase 50:\n this.$ = [$$[$0-4],$$[$0-1],{type: 'addMessage', from:$$[$0-4].actor, to:$$[$0-1].actor, signalType:$$[$0-3], msg:$$[$0]},\n\t {type: 'activeStart', signalType: yy.LINETYPE.ACTIVE_START, actor: $$[$0-1]}\n\t ]\nbreak;\ncase 51:\n this.$ = [$$[$0-4],$$[$0-1],{type: 'addMessage', from:$$[$0-4].actor, to:$$[$0-1].actor, signalType:$$[$0-3], msg:$$[$0]},\n\t {type: 'activeEnd', signalType: yy.LINETYPE.ACTIVE_END, actor: $$[$0-4]}\n\t ]\nbreak;\ncase 52:\n this.$ = [$$[$0-3],$$[$0-1],{type: 'addMessage', from:$$[$0-3].actor, to:$$[$0-1].actor, signalType:$$[$0-2], msg:$$[$0]}]\nbreak;\ncase 53:\nthis.$={ type: 'addParticipant', actor:$$[$0]}\nbreak;\ncase 54:\n this.$ = yy.LINETYPE.SOLID_OPEN; \nbreak;\ncase 55:\n this.$ = yy.LINETYPE.DOTTED_OPEN; \nbreak;\ncase 56:\n this.$ = yy.LINETYPE.SOLID; \nbreak;\ncase 57:\n this.$ = yy.LINETYPE.DOTTED; \nbreak;\ncase 58:\n this.$ = yy.LINETYPE.SOLID_CROSS; \nbreak;\ncase 59:\n this.$ = yy.LINETYPE.DOTTED_CROSS; \nbreak;\ncase 60:\n this.$ = yy.LINETYPE.SOLID_POINT; \nbreak;\ncase 61:\n this.$ = yy.LINETYPE.DOTTED_POINT; \nbreak;\ncase 62:\nthis.$ = yy.parseMessage($$[$0].trim().substring(1)) \nbreak;\ncase 63:\n yy.parseDirective('%%{', 'open_directive'); \nbreak;\ncase 64:\n yy.parseDirective($$[$0], 'type_directive'); \nbreak;\ncase 65:\n $$[$0] = $$[$0].trim().replace(/'/g, '\"'); yy.parseDirective($$[$0], 'arg_directive'); \nbreak;\ncase 66:\n yy.parseDirective('}%%', 'close_directive', 'sequence'); \nbreak;\n}\n},\ntable: [{3:1,4:$V0,5:$V1,6:4,7:$V2,11:6,69:$V3},{1:[3]},{3:8,4:$V0,5:$V1,6:4,7:$V2,11:6,69:$V3},{3:9,4:$V0,5:$V1,6:4,7:$V2,11:6,69:$V3},{3:10,4:$V0,5:$V1,6:4,7:$V2,11:6,69:$V3},o([1,4,5,16,20,22,23,24,30,31,32,33,35,36,37,39,43,48,49,50,51,59,69],$V4,{8:11}),{12:12,70:[1,13]},{70:[2,63]},{1:[2,1]},{1:[2,2]},{1:[2,3]},{1:[2,4],4:$V5,5:$V6,6:37,9:14,10:16,11:6,16:$V7,17:38,20:$V8,21:20,22:$V9,23:$Va,24:$Vb,25:24,26:25,27:26,28:27,29:28,30:$Vc,31:$Vd,32:$Ve,33:$Vf,35:$Vg,36:$Vh,37:$Vi,39:$Vj,43:$Vk,48:$Vl,49:$Vm,50:$Vn,51:$Vo,59:$Vp,69:$V3},{13:45,14:[1,46],72:$Vq},o([14,72],[2,64]),o($Vr,[2,6]),{6:37,10:48,11:6,16:$V7,17:38,20:$V8,21:20,22:$V9,23:$Va,24:$Vb,25:24,26:25,27:26,28:27,29:28,30:$Vc,31:$Vd,32:$Ve,33:$Vf,35:$Vg,36:$Vh,37:$Vi,39:$Vj,43:$Vk,48:$Vl,49:$Vm,50:$Vn,51:$Vo,59:$Vp,69:$V3},o($Vr,[2,8]),o($Vr,[2,9]),{17:49,59:$Vp},{17:50,59:$Vp},{5:[1,51]},o($Vr,[2,17]),{17:52,59:$Vp},{17:53,59:$Vp},{5:[1,54]},{5:[1,55]},{5:[1,56]},{5:[1,57]},{5:[1,58]},o($Vr,[2,25]),o($Vr,[2,26]),o($Vr,[2,27]),{19:[1,59]},{19:[1,60]},{19:[1,61]},{19:[1,62]},{19:[1,63]},o($Vr,[2,33]),{56:64,60:[1,65],61:[1,66],62:[1,67],63:[1,68],64:[1,69],65:[1,70],66:[1,71],67:[1,72]},{44:73,46:[1,74],54:[1,75],55:[1,76]},{17:77,59:$Vp},{17:78,59:$Vp},{17:79,59:$Vp},{17:80,59:$Vp},o([5,18,53,60,61,62,63,64,65,66,67,68],[2,53]),{5:[1,81]},{15:82,71:[1,83]},{5:[2,66]},o($Vr,[2,7]),{5:[1,85],18:[1,84]},{5:[1,87],18:[1,86]},o($Vr,[2,16]),{5:[1,88]},{5:[1,89]},o($Vr,[2,20]),o($Vr,[2,21]),o($Vr,[2,22]),o($Vr,[2,23]),o($Vr,[2,24]),o($Vs,$V4,{8:90}),o($Vs,$V4,{8:91}),o($Vs,$V4,{8:92}),o($Vt,$V4,{38:93,8:94}),o($Vu,$V4,{40:95,8:96}),{17:99,57:[1,97],58:[1,98],59:$Vp},o($Vv,[2,54]),o($Vv,[2,55]),o($Vv,[2,56]),o($Vv,[2,57]),o($Vv,[2,58]),o($Vv,[2,59]),o($Vv,[2,60]),o($Vv,[2,61]),{17:100,59:$Vp},{17:102,47:101,59:$Vp},{59:[2,48]},{59:[2,49]},{45:103,68:$Vw},{45:105,68:$Vw},{45:106,68:$Vw},{45:107,68:$Vw},o($Vx,[2,10]),{13:108,72:$Vq},{72:[2,65]},{19:[1,109]},o($Vr,[2,13]),{19:[1,110]},o($Vr,[2,15]),o($Vr,[2,18]),o($Vr,[2,19]),{4:$V5,5:$V6,6:37,9:14,10:16,11:6,16:$V7,17:38,20:$V8,21:20,22:$V9,23:$Va,24:$Vb,25:24,26:25,27:26,28:27,29:28,30:$Vc,31:$Vd,32:$Ve,33:$Vf,34:[1,111],35:$Vg,36:$Vh,37:$Vi,39:$Vj,43:$Vk,48:$Vl,49:$Vm,50:$Vn,51:$Vo,59:$Vp,69:$V3},{4:$V5,5:$V6,6:37,9:14,10:16,11:6,16:$V7,17:38,20:$V8,21:20,22:$V9,23:$Va,24:$Vb,25:24,26:25,27:26,28:27,29:28,30:$Vc,31:$Vd,32:$Ve,33:$Vf,34:[1,112],35:$Vg,36:$Vh,37:$Vi,39:$Vj,43:$Vk,48:$Vl,49:$Vm,50:$Vn,51:$Vo,59:$Vp,69:$V3},{4:$V5,5:$V6,6:37,9:14,10:16,11:6,16:$V7,17:38,20:$V8,21:20,22:$V9,23:$Va,24:$Vb,25:24,26:25,27:26,28:27,29:28,30:$Vc,31:$Vd,32:$Ve,33:$Vf,34:[1,113],35:$Vg,36:$Vh,37:$Vi,39:$Vj,43:$Vk,48:$Vl,49:$Vm,50:$Vn,51:$Vo,59:$Vp,69:$V3},{34:[1,114]},{4:$V5,5:$V6,6:37,9:14,10:16,11:6,16:$V7,17:38,20:$V8,21:20,22:$V9,23:$Va,24:$Vb,25:24,26:25,27:26,28:27,29:28,30:$Vc,31:$Vd,32:$Ve,33:$Vf,34:[2,36],35:$Vg,36:$Vh,37:$Vi,39:$Vj,42:[1,115],43:$Vk,48:$Vl,49:$Vm,50:$Vn,51:$Vo,59:$Vp,69:$V3},{34:[1,116]},{4:$V5,5:$V6,6:37,9:14,10:16,11:6,16:$V7,17:38,20:$V8,21:20,22:$V9,23:$Va,24:$Vb,25:24,26:25,27:26,28:27,29:28,30:$Vc,31:$Vd,32:$Ve,33:$Vf,34:[2,34],35:$Vg,36:$Vh,37:$Vi,39:$Vj,41:[1,117],43:$Vk,48:$Vl,49:$Vm,50:$Vn,51:$Vo,59:$Vp,69:$V3},{17:118,59:$Vp},{17:119,59:$Vp},{45:120,68:$Vw},{45:121,68:$Vw},{45:122,68:$Vw},{53:[1,123],68:[2,47]},{5:[2,40]},{5:[2,62]},{5:[2,41]},{5:[2,42]},{5:[2,43]},{5:[1,124]},{5:[1,125]},{5:[1,126]},o($Vr,[2,28]),o($Vr,[2,29]),o($Vr,[2,30]),o($Vr,[2,31]),{19:[1,127]},o($Vr,[2,32]),{19:[1,128]},{45:129,68:$Vw},{45:130,68:$Vw},{5:[2,52]},{5:[2,38]},{5:[2,39]},{17:131,59:$Vp},o($Vx,[2,11]),o($Vr,[2,12]),o($Vr,[2,14]),o($Vt,$V4,{8:94,38:132}),o($Vu,$V4,{8:96,40:133}),{5:[2,50]},{5:[2,51]},{68:[2,46]},{34:[2,37]},{34:[2,35]}],\ndefaultActions: {7:[2,63],8:[2,1],9:[2,2],10:[2,3],47:[2,66],75:[2,48],76:[2,49],83:[2,65],103:[2,40],104:[2,62],105:[2,41],106:[2,42],107:[2,43],120:[2,52],121:[2,38],122:[2,39],129:[2,50],130:[2,51],131:[2,46],132:[2,37],133:[2,35]},\nparseError: function parseError (str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer.lex() || EOF;\n if (typeof token !== 'number') {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {\"case-insensitive\":true},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0: this.begin('open_directive'); return 69; \nbreak;\ncase 1: this.begin('type_directive'); return 70; \nbreak;\ncase 2: this.popState(); this.begin('arg_directive'); return 14; \nbreak;\ncase 3: this.popState(); this.popState(); return 72; \nbreak;\ncase 4:return 71;\nbreak;\ncase 5:return 5;\nbreak;\ncase 6:/* skip all whitespace */\nbreak;\ncase 7:/* skip same-line whitespace */\nbreak;\ncase 8:/* skip comments */\nbreak;\ncase 9:/* skip comments */\nbreak;\ncase 10:/* skip comments */\nbreak;\ncase 11: this.begin('ID'); return 16; \nbreak;\ncase 12: this.begin('ID'); return 20; \nbreak;\ncase 13: yy_.yytext = yy_.yytext.trim(); this.begin('ALIAS'); return 59; \nbreak;\ncase 14: this.popState(); this.popState(); this.begin('LINE'); return 18; \nbreak;\ncase 15: this.popState(); this.popState(); return 5; \nbreak;\ncase 16: this.begin('LINE'); return 33; \nbreak;\ncase 17: this.begin('LINE'); return 35; \nbreak;\ncase 18: this.begin('LINE'); return 36; \nbreak;\ncase 19: this.begin('LINE'); return 37; \nbreak;\ncase 20: this.begin('LINE'); return 42; \nbreak;\ncase 21: this.begin('LINE'); return 39; \nbreak;\ncase 22: this.begin('LINE'); return 41; \nbreak;\ncase 23: this.popState(); return 19; \nbreak;\ncase 24:return 34;\nbreak;\ncase 25:return 54;\nbreak;\ncase 26:return 55;\nbreak;\ncase 27:return 48;\nbreak;\ncase 28:return 49;\nbreak;\ncase 29:return 50;\nbreak;\ncase 30:return 51;\nbreak;\ncase 31:return 46;\nbreak;\ncase 32:return 43;\nbreak;\ncase 33: this.begin('ID'); return 23; \nbreak;\ncase 34: this.begin('ID'); return 24; \nbreak;\ncase 35:return 30;\nbreak;\ncase 36:return 31;\nbreak;\ncase 37:return 32;\nbreak;\ncase 38:return 7;\nbreak;\ncase 39:return 22;\nbreak;\ncase 40:return 53;\nbreak;\ncase 41:return 5;\nbreak;\ncase 42: yy_.yytext = yy_.yytext.trim(); return 59; \nbreak;\ncase 43:return 62;\nbreak;\ncase 44:return 63;\nbreak;\ncase 45:return 60;\nbreak;\ncase 46:return 61;\nbreak;\ncase 47:return 64;\nbreak;\ncase 48:return 65;\nbreak;\ncase 49:return 66;\nbreak;\ncase 50:return 67;\nbreak;\ncase 51:return 68;\nbreak;\ncase 52:return 57;\nbreak;\ncase 53:return 58;\nbreak;\ncase 54:return 5;\nbreak;\ncase 55:return 'INVALID';\nbreak;\n}\n},\nrules: [/^(?:%%\\{)/i,/^(?:((?:(?!\\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\\}%%)/i,/^(?:((?:(?!\\}%%).|\\n)*))/i,/^(?:[\\n]+)/i,/^(?:\\s+)/i,/^(?:((?!\\n)\\s)+)/i,/^(?:#[^\\n]*)/i,/^(?:%(?!\\{)[^\\n]*)/i,/^(?:[^\\}]%%[^\\n]*)/i,/^(?:participant\\b)/i,/^(?:actor\\b)/i,/^(?:[^\\->:\\n,;]+?(?=((?!\\n)\\s)+as(?!\\n)\\s|[#\\n;]|$))/i,/^(?:as\\b)/i,/^(?:(?:))/i,/^(?:loop\\b)/i,/^(?:rect\\b)/i,/^(?:opt\\b)/i,/^(?:alt\\b)/i,/^(?:else\\b)/i,/^(?:par\\b)/i,/^(?:and\\b)/i,/^(?:(?:[:]?(?:no)?wrap)?[^#\\n;]*)/i,/^(?:end\\b)/i,/^(?:left of\\b)/i,/^(?:right of\\b)/i,/^(?:links\\b)/i,/^(?:link\\b)/i,/^(?:properties\\b)/i,/^(?:details\\b)/i,/^(?:over\\b)/i,/^(?:note\\b)/i,/^(?:activate\\b)/i,/^(?:deactivate\\b)/i,/^(?:title\\s[^#\\n;]+)/i,/^(?:title:\\s[^#\\n;]+)/i,/^(?:accDescription\\s[^#\\n;]+)/i,/^(?:sequenceDiagram\\b)/i,/^(?:autonumber\\b)/i,/^(?:,)/i,/^(?:;)/i,/^(?:[^\\+\\->:\\n,;]+((?!(-x|--x|-\\)|--\\)))[\\-]*[^\\+\\->:\\n,;]+)*)/i,/^(?:->>)/i,/^(?:-->>)/i,/^(?:->)/i,/^(?:-->)/i,/^(?:-[x])/i,/^(?:--[x])/i,/^(?:-[\\)])/i,/^(?:--[\\)])/i,/^(?::(?:(?:no)?wrap)?[^#\\n;]+)/i,/^(?:\\+)/i,/^(?:-)/i,/^(?:$)/i,/^(?:.)/i],\nconditions: {\"open_directive\":{\"rules\":[1,8],\"inclusive\":false},\"type_directive\":{\"rules\":[2,3,8],\"inclusive\":false},\"arg_directive\":{\"rules\":[3,4,8],\"inclusive\":false},\"ID\":{\"rules\":[7,8,13],\"inclusive\":false},\"ALIAS\":{\"rules\":[7,8,14,15],\"inclusive\":false},\"LINE\":{\"rules\":[7,8,23],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,5,6,8,9,10,11,12,16,17,18,19,20,21,22,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain (args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}","/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,2],$V1=[1,3],$V2=[1,5],$V3=[1,7],$V4=[2,5],$V5=[1,15],$V6=[1,17],$V7=[1,19],$V8=[1,20],$V9=[1,21],$Va=[1,22],$Vb=[1,30],$Vc=[1,23],$Vd=[1,24],$Ve=[1,25],$Vf=[1,26],$Vg=[1,27],$Vh=[1,32],$Vi=[1,33],$Vj=[1,34],$Vk=[1,35],$Vl=[1,31],$Vm=[1,38],$Vn=[1,4,5,14,15,17,19,20,22,23,24,25,26,27,36,37,38,39,42,45],$Vo=[1,4,5,12,13,14,15,17,19,20,22,23,24,25,26,27,36,37,38,39,42,45],$Vp=[1,4,5,7,14,15,17,19,20,22,23,24,25,26,27,36,37,38,39,42,45],$Vq=[4,5,14,15,17,19,20,22,23,24,25,26,27,36,37,38,39,42,45];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"SPACE\":4,\"NL\":5,\"directive\":6,\"SD\":7,\"document\":8,\"line\":9,\"statement\":10,\"idStatement\":11,\"DESCR\":12,\"-->\":13,\"HIDE_EMPTY\":14,\"scale\":15,\"WIDTH\":16,\"COMPOSIT_STATE\":17,\"STRUCT_START\":18,\"STRUCT_STOP\":19,\"STATE_DESCR\":20,\"AS\":21,\"ID\":22,\"FORK\":23,\"JOIN\":24,\"CHOICE\":25,\"CONCURRENT\":26,\"note\":27,\"notePosition\":28,\"NOTE_TEXT\":29,\"direction\":30,\"openDirective\":31,\"typeDirective\":32,\"closeDirective\":33,\":\":34,\"argDirective\":35,\"direction_tb\":36,\"direction_bt\":37,\"direction_rl\":38,\"direction_lr\":39,\"eol\":40,\";\":41,\"EDGE_STATE\":42,\"left_of\":43,\"right_of\":44,\"open_directive\":45,\"type_directive\":46,\"arg_directive\":47,\"close_directive\":48,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",4:\"SPACE\",5:\"NL\",7:\"SD\",12:\"DESCR\",13:\"-->\",14:\"HIDE_EMPTY\",15:\"scale\",16:\"WIDTH\",17:\"COMPOSIT_STATE\",18:\"STRUCT_START\",19:\"STRUCT_STOP\",20:\"STATE_DESCR\",21:\"AS\",22:\"ID\",23:\"FORK\",24:\"JOIN\",25:\"CHOICE\",26:\"CONCURRENT\",27:\"note\",29:\"NOTE_TEXT\",34:\":\",36:\"direction_tb\",37:\"direction_bt\",38:\"direction_rl\",39:\"direction_lr\",41:\";\",42:\"EDGE_STATE\",43:\"left_of\",44:\"right_of\",45:\"open_directive\",46:\"type_directive\",47:\"arg_directive\",48:\"close_directive\"},\nproductions_: [0,[3,2],[3,2],[3,2],[3,2],[8,0],[8,2],[9,2],[9,1],[9,1],[10,1],[10,2],[10,3],[10,4],[10,1],[10,2],[10,1],[10,4],[10,3],[10,6],[10,1],[10,1],[10,1],[10,1],[10,4],[10,4],[10,1],[10,1],[6,3],[6,5],[30,1],[30,1],[30,1],[30,1],[40,1],[40,1],[11,1],[11,1],[28,1],[28,1],[31,1],[32,1],[35,1],[33,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 4:\n /*console.warn('Root document', $$[$0]);*/ yy.setRootDoc($$[$0]);return $$[$0]; \nbreak;\ncase 5:\n this.$ = [] \nbreak;\ncase 6:\n\n if($$[$0]!='nl'){\n $$[$0-1].push($$[$0]);this.$ = $$[$0-1]\n }\n // console.warn('Got document',$$[$0-1], $$[$0]);\n \nbreak;\ncase 7: case 8:\n this.$ = $$[$0] \nbreak;\ncase 9:\n this.$='nl';\nbreak;\ncase 10:\n /*console.warn('got id and descr', $$[$0]);*/this.$={ stmt: 'state', id: $$[$0], type: 'default', description: ''};\nbreak;\ncase 11:\n /*console.warn('got id and descr', $$[$0-1], $$[$0].trim());*/this.$={ stmt: 'state', id: $$[$0-1], type: 'default', description: yy.trimColon($$[$0])};\nbreak;\ncase 12:\n\n /*console.warn('got id', $$[$0-2]);yy.addRelation($$[$0-2], $$[$0]);*/\n this.$={ stmt: 'relation', state1: { stmt: 'state', id: $$[$0-2], type: 'default', description: '' }, state2:{ stmt: 'state', id: $$[$0] ,type: 'default', description: ''}};\n \nbreak;\ncase 13:\n\n /*yy.addRelation($$[$0-3], $$[$0-1], $$[$0].substr(1).trim());*/\n this.$={ stmt: 'relation', state1: { stmt: 'state', id: $$[$0-3], type: 'default', description: '' }, state2:{ stmt: 'state', id: $$[$0-1] ,type: 'default', description: ''}, description: $$[$0].substr(1).trim()};\n \nbreak;\ncase 17:\n\n /* console.warn('Adding document for state without id ', $$[$0-3]);*/\n this.$={ stmt: 'state', id: $$[$0-3], type: 'default', description: '', doc: $$[$0-1] }\n \nbreak;\ncase 18:\n\n var id=$$[$0];\n var description = $$[$0-2].trim();\n if($$[$0].match(':')){\n var parts = $$[$0].split(':');\n id=parts[0];\n description = [description, parts[1]];\n }\n this.$={stmt: 'state', id: id, type: 'default', description: description};\n\n \nbreak;\ncase 19:\n\n // console.warn('Adding document for state with id zxzx', $$[$0-3], $$[$0-2], yy.getDirection()); yy.addDocument($$[$0-3]);\n this.$={ stmt: 'state', id: $$[$0-3], type: 'default', description: $$[$0-5], doc: $$[$0-1] }\n \nbreak;\ncase 20:\n\n this.$={ stmt: 'state', id: $$[$0], type: 'fork' }\n \nbreak;\ncase 21:\n\n this.$={ stmt: 'state', id: $$[$0], type: 'join' }\n \nbreak;\ncase 22:\n\n this.$={ stmt: 'state', id: $$[$0], type: 'choice' }\n \nbreak;\ncase 23:\n\n this.$={ stmt: 'state', id: yy.getDividerId(), type: 'divider' }\n \nbreak;\ncase 24:\n\n /* console.warn('got NOTE, position: ', $$[$0-2].trim(), 'id = ', $$[$0-1].trim(), 'note: ', $$[$0]);*/\n this.$={ stmt: 'state', id: $$[$0-1].trim(), note:{position: $$[$0-2].trim(), text: $$[$0].trim()}};\n \nbreak;\ncase 30:\n yy.setDirection('TB');this.$={stmt:'dir', value:'TB'};\nbreak;\ncase 31:\n yy.setDirection('BT');this.$={stmt:'dir', value:'BT'};\nbreak;\ncase 32:\n yy.setDirection('RL'); this.$={stmt:'dir', value:'RL'};\nbreak;\ncase 33:\n yy.setDirection('LR');this.$={stmt:'dir', value:'LR'};\nbreak;\ncase 36: case 37:\nthis.$=$$[$0];\nbreak;\ncase 40:\n yy.parseDirective('%%{', 'open_directive'); \nbreak;\ncase 41:\n yy.parseDirective($$[$0], 'type_directive'); \nbreak;\ncase 42:\n $$[$0] = $$[$0].trim().replace(/'/g, '\"'); yy.parseDirective($$[$0], 'arg_directive'); \nbreak;\ncase 43:\n yy.parseDirective('}%%', 'close_directive', 'state'); \nbreak;\n}\n},\ntable: [{3:1,4:$V0,5:$V1,6:4,7:$V2,31:6,45:$V3},{1:[3]},{3:8,4:$V0,5:$V1,6:4,7:$V2,31:6,45:$V3},{3:9,4:$V0,5:$V1,6:4,7:$V2,31:6,45:$V3},{3:10,4:$V0,5:$V1,6:4,7:$V2,31:6,45:$V3},o([1,4,5,14,15,17,20,22,23,24,25,26,27,36,37,38,39,42,45],$V4,{8:11}),{32:12,46:[1,13]},{46:[2,40]},{1:[2,1]},{1:[2,2]},{1:[2,3]},{1:[2,4],4:$V5,5:$V6,6:28,9:14,10:16,11:18,14:$V7,15:$V8,17:$V9,20:$Va,22:$Vb,23:$Vc,24:$Vd,25:$Ve,26:$Vf,27:$Vg,30:29,31:6,36:$Vh,37:$Vi,38:$Vj,39:$Vk,42:$Vl,45:$V3},{33:36,34:[1,37],48:$Vm},o([34,48],[2,41]),o($Vn,[2,6]),{6:28,10:39,11:18,14:$V7,15:$V8,17:$V9,20:$Va,22:$Vb,23:$Vc,24:$Vd,25:$Ve,26:$Vf,27:$Vg,30:29,31:6,36:$Vh,37:$Vi,38:$Vj,39:$Vk,42:$Vl,45:$V3},o($Vn,[2,8]),o($Vn,[2,9]),o($Vn,[2,10],{12:[1,40],13:[1,41]}),o($Vn,[2,14]),{16:[1,42]},o($Vn,[2,16],{18:[1,43]}),{21:[1,44]},o($Vn,[2,20]),o($Vn,[2,21]),o($Vn,[2,22]),o($Vn,[2,23]),{28:45,29:[1,46],43:[1,47],44:[1,48]},o($Vn,[2,26]),o($Vn,[2,27]),o($Vo,[2,36]),o($Vo,[2,37]),o($Vn,[2,30]),o($Vn,[2,31]),o($Vn,[2,32]),o($Vn,[2,33]),o($Vp,[2,28]),{35:49,47:[1,50]},o($Vp,[2,43]),o($Vn,[2,7]),o($Vn,[2,11]),{11:51,22:$Vb,42:$Vl},o($Vn,[2,15]),o($Vq,$V4,{8:52}),{22:[1,53]},{22:[1,54]},{21:[1,55]},{22:[2,38]},{22:[2,39]},{33:56,48:$Vm},{48:[2,42]},o($Vn,[2,12],{12:[1,57]}),{4:$V5,5:$V6,6:28,9:14,10:16,11:18,14:$V7,15:$V8,17:$V9,19:[1,58],20:$Va,22:$Vb,23:$Vc,24:$Vd,25:$Ve,26:$Vf,27:$Vg,30:29,31:6,36:$Vh,37:$Vi,38:$Vj,39:$Vk,42:$Vl,45:$V3},o($Vn,[2,18],{18:[1,59]}),{29:[1,60]},{22:[1,61]},o($Vp,[2,29]),o($Vn,[2,13]),o($Vn,[2,17]),o($Vq,$V4,{8:62}),o($Vn,[2,24]),o($Vn,[2,25]),{4:$V5,5:$V6,6:28,9:14,10:16,11:18,14:$V7,15:$V8,17:$V9,19:[1,63],20:$Va,22:$Vb,23:$Vc,24:$Vd,25:$Ve,26:$Vf,27:$Vg,30:29,31:6,36:$Vh,37:$Vi,38:$Vj,39:$Vk,42:$Vl,45:$V3},o($Vn,[2,19])],\ndefaultActions: {7:[2,40],8:[2,1],9:[2,2],10:[2,3],47:[2,38],48:[2,39],50:[2,42]},\nparseError: function parseError (str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer.lex() || EOF;\n if (typeof token !== 'number') {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {\"case-insensitive\":true},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0:return 36;\nbreak;\ncase 1:return 37;\nbreak;\ncase 2:return 38;\nbreak;\ncase 3:return 39;\nbreak;\ncase 4: this.begin('open_directive'); return 45; \nbreak;\ncase 5: this.begin('type_directive'); return 46; \nbreak;\ncase 6: this.popState(); this.begin('arg_directive'); return 34; \nbreak;\ncase 7: this.popState(); this.popState(); return 48; \nbreak;\ncase 8:return 47;\nbreak;\ncase 9:/* skip comments */\nbreak;\ncase 10:/* skip comments */{ /*console.log('Crap after close');*/ }\nbreak;\ncase 11:return 5;\nbreak;\ncase 12:/* skip all whitespace */\nbreak;\ncase 13:/* skip same-line whitespace */\nbreak;\ncase 14:/* skip comments */\nbreak;\ncase 15:/* skip comments */\nbreak;\ncase 16: this.pushState('SCALE'); /* console.log('Got scale', yy_.yytext);*/ return 15; \nbreak;\ncase 17:return 16;\nbreak;\ncase 18:this.popState();\nbreak;\ncase 19: /*console.log('Starting STATE zxzx'+yy.getDirection());*/this.pushState('STATE'); \nbreak;\ncase 20:this.popState();yy_.yytext=yy_.yytext.slice(0,-8).trim(); /*console.warn('Fork Fork: ',yy_.yytext);*/return 23;\nbreak;\ncase 21:this.popState();yy_.yytext=yy_.yytext.slice(0,-8).trim();/*console.warn('Fork Join: ',yy_.yytext);*/return 24;\nbreak;\ncase 22:this.popState();yy_.yytext=yy_.yytext.slice(0,-10).trim();/*console.warn('Fork Join: ',yy_.yytext);*/return 25;\nbreak;\ncase 23:this.popState();yy_.yytext=yy_.yytext.slice(0,-8).trim();/*console.warn('Fork Fork: ',yy_.yytext);*/return 23;\nbreak;\ncase 24:this.popState();yy_.yytext=yy_.yytext.slice(0,-8).trim();/*console.warn('Fork Join: ',yy_.yytext);*/return 24;\nbreak;\ncase 25:this.popState();yy_.yytext=yy_.yytext.slice(0,-10).trim();/*console.warn('Fork Join: ',yy_.yytext);*/return 25;\nbreak;\ncase 26: return 36;\nbreak;\ncase 27: return 37;\nbreak;\ncase 28: return 38;\nbreak;\ncase 29: return 39;\nbreak;\ncase 30: /*console.log('Starting STATE_STRING zxzx');*/this.begin(\"STATE_STRING\");\nbreak;\ncase 31:this.popState();this.pushState('STATE_ID');return \"AS\";\nbreak;\ncase 32:this.popState();/* console.log('STATE_ID', yy_.yytext);*/return \"ID\";\nbreak;\ncase 33:this.popState();\nbreak;\ncase 34: /*console.log('Long description:', yy_.yytext);*/return \"STATE_DESCR\";\nbreak;\ncase 35:/*console.log('COMPOSIT_STATE', yy_.yytext);*/return 17;\nbreak;\ncase 36:this.popState();\nbreak;\ncase 37:this.popState();this.pushState('struct'); /*console.log('begin struct', yy_.yytext);*/return 18;\nbreak;\ncase 38: /*console.log('Ending struct');*/ this.popState(); return 19;\nbreak;\ncase 39:/* nothing */\nbreak;\ncase 40: this.begin('NOTE'); return 27; \nbreak;\ncase 41: this.popState();this.pushState('NOTE_ID');return 43;\nbreak;\ncase 42: this.popState();this.pushState('NOTE_ID');return 44;\nbreak;\ncase 43: this.popState();this.pushState('FLOATING_NOTE');\nbreak;\ncase 44:this.popState();this.pushState('FLOATING_NOTE_ID');return \"AS\";\nbreak;\ncase 45:/**/\nbreak;\ncase 46: /*console.log('Floating note text: ', yy_.yytext);*/return \"NOTE_TEXT\";\nbreak;\ncase 47:this.popState();/*console.log('Floating note ID', yy_.yytext);*/return \"ID\";\nbreak;\ncase 48: this.popState();this.pushState('NOTE_TEXT');/*console.log('Got ID for note', yy_.yytext);*/return 22;\nbreak;\ncase 49: this.popState();/*console.log('Got NOTE_TEXT for note',yy_.yytext);*/yy_.yytext = yy_.yytext.substr(2).trim();return 29;\nbreak;\ncase 50: this.popState();/*console.log('Got NOTE_TEXT for note',yy_.yytext);*/yy_.yytext = yy_.yytext.slice(0,-8).trim();return 29;\nbreak;\ncase 51: /*console.log('Got state diagram', yy_.yytext,'#');*/return 7; \nbreak;\ncase 52: /*console.log('Got state diagram', yy_.yytext,'#');*/return 7; \nbreak;\ncase 53: /*console.log('HIDE_EMPTY', yy_.yytext,'#');*/return 14; \nbreak;\ncase 54: /*console.log('EDGE_STATE=',yy_.yytext);*/ return 42;\nbreak;\ncase 55: /*console.log('=>ID=',yy_.yytext);*/ return 22;\nbreak;\ncase 56: yy_.yytext = yy_.yytext.trim(); /*console.log('Descr = ', yy_.yytext);*/ return 12; \nbreak;\ncase 57:return 13;\nbreak;\ncase 58:return 26;\nbreak;\ncase 59:return 5;\nbreak;\ncase 60:return 'INVALID';\nbreak;\n}\n},\nrules: [/^(?:.*direction\\s+TB[^\\n]*)/i,/^(?:.*direction\\s+BT[^\\n]*)/i,/^(?:.*direction\\s+RL[^\\n]*)/i,/^(?:.*direction\\s+LR[^\\n]*)/i,/^(?:%%\\{)/i,/^(?:((?:(?!\\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\\}%%)/i,/^(?:((?:(?!\\}%%).|\\n)*))/i,/^(?:%%(?!\\{)[^\\n]*)/i,/^(?:[^\\}]%%[^\\n]*)/i,/^(?:[\\n]+)/i,/^(?:[\\s]+)/i,/^(?:((?!\\n)\\s)+)/i,/^(?:#[^\\n]*)/i,/^(?:%[^\\n]*)/i,/^(?:scale\\s+)/i,/^(?:\\d+)/i,/^(?:\\s+width\\b)/i,/^(?:state\\s+)/i,/^(?:.*<>)/i,/^(?:.*<>)/i,/^(?:.*<>)/i,/^(?:.*\\[\\[fork\\]\\])/i,/^(?:.*\\[\\[join\\]\\])/i,/^(?:.*\\[\\[choice\\]\\])/i,/^(?:.*direction\\s+TB[^\\n]*)/i,/^(?:.*direction\\s+BT[^\\n]*)/i,/^(?:.*direction\\s+RL[^\\n]*)/i,/^(?:.*direction\\s+LR[^\\n]*)/i,/^(?:[\"])/i,/^(?:\\s*as\\s+)/i,/^(?:[^\\n\\{]*)/i,/^(?:[\"])/i,/^(?:[^\"]*)/i,/^(?:[^\\n\\s\\{]+)/i,/^(?:\\n)/i,/^(?:\\{)/i,/^(?:\\})/i,/^(?:[\\n])/i,/^(?:note\\s+)/i,/^(?:left of\\b)/i,/^(?:right of\\b)/i,/^(?:\")/i,/^(?:\\s*as\\s*)/i,/^(?:[\"])/i,/^(?:[^\"]*)/i,/^(?:[^\\n]*)/i,/^(?:\\s*[^:\\n\\s\\-]+)/i,/^(?:\\s*:[^:\\n;]+)/i,/^(?:[\\s\\S]*?end note\\b)/i,/^(?:stateDiagram\\s+)/i,/^(?:stateDiagram-v2\\s+)/i,/^(?:hide empty description\\b)/i,/^(?:\\[\\*\\])/i,/^(?:[^:\\n\\s\\-\\{]+)/i,/^(?:\\s*:[^:\\n;]+)/i,/^(?:-->)/i,/^(?:--)/i,/^(?:$)/i,/^(?:.)/i],\nconditions: {\"LINE\":{\"rules\":[13,14],\"inclusive\":false},\"close_directive\":{\"rules\":[13,14],\"inclusive\":false},\"arg_directive\":{\"rules\":[7,8,13,14],\"inclusive\":false},\"type_directive\":{\"rules\":[6,7,13,14],\"inclusive\":false},\"open_directive\":{\"rules\":[5,13,14],\"inclusive\":false},\"struct\":{\"rules\":[13,14,19,26,27,28,29,38,39,40,54,55,56,57,58],\"inclusive\":false},\"FLOATING_NOTE_ID\":{\"rules\":[47],\"inclusive\":false},\"FLOATING_NOTE\":{\"rules\":[44,45,46],\"inclusive\":false},\"NOTE_TEXT\":{\"rules\":[49,50],\"inclusive\":false},\"NOTE_ID\":{\"rules\":[48],\"inclusive\":false},\"NOTE\":{\"rules\":[41,42,43],\"inclusive\":false},\"SCALE\":{\"rules\":[17,18],\"inclusive\":false},\"ALIAS\":{\"rules\":[],\"inclusive\":false},\"STATE_ID\":{\"rules\":[32],\"inclusive\":false},\"STATE_STRING\":{\"rules\":[33,34],\"inclusive\":false},\"FORK_STATE\":{\"rules\":[],\"inclusive\":false},\"STATE\":{\"rules\":[13,14,20,21,22,23,24,25,30,31,35,36,37],\"inclusive\":false},\"ID\":{\"rules\":[13,14],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,1,2,3,4,9,10,11,12,14,15,16,19,37,40,51,52,53,54,55,56,57,59,60],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain (args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}","/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,2],$V1=[1,5],$V2=[6,9,11,17,18,19,21],$V3=[1,15],$V4=[1,16],$V5=[1,17],$V6=[1,21],$V7=[4,6,9,11,17,18,19,21];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"journey\":4,\"document\":5,\"EOF\":6,\"directive\":7,\"line\":8,\"SPACE\":9,\"statement\":10,\"NEWLINE\":11,\"openDirective\":12,\"typeDirective\":13,\"closeDirective\":14,\":\":15,\"argDirective\":16,\"title\":17,\"section\":18,\"taskName\":19,\"taskData\":20,\"open_directive\":21,\"type_directive\":22,\"arg_directive\":23,\"close_directive\":24,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",4:\"journey\",6:\"EOF\",9:\"SPACE\",11:\"NEWLINE\",15:\":\",17:\"title\",18:\"section\",19:\"taskName\",20:\"taskData\",21:\"open_directive\",22:\"type_directive\",23:\"arg_directive\",24:\"close_directive\"},\nproductions_: [0,[3,3],[3,2],[5,0],[5,2],[8,2],[8,1],[8,1],[8,1],[7,4],[7,6],[10,1],[10,1],[10,2],[10,1],[12,1],[13,1],[16,1],[14,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 1:\n return $$[$0-1]; \nbreak;\ncase 3:\n this.$ = [] \nbreak;\ncase 4:\n$$[$0-1].push($$[$0]);this.$ = $$[$0-1]\nbreak;\ncase 5: case 6:\n this.$ = $$[$0] \nbreak;\ncase 7: case 8:\n this.$=[];\nbreak;\ncase 11:\nyy.setTitle($$[$0].substr(6));this.$=$$[$0].substr(6);\nbreak;\ncase 12:\nyy.addSection($$[$0].substr(8));this.$=$$[$0].substr(8);\nbreak;\ncase 13:\nyy.addTask($$[$0-1], $$[$0]);this.$='task';\nbreak;\ncase 15:\n yy.parseDirective('%%{', 'open_directive'); \nbreak;\ncase 16:\n yy.parseDirective($$[$0], 'type_directive'); \nbreak;\ncase 17:\n $$[$0] = $$[$0].trim().replace(/'/g, '\"'); yy.parseDirective($$[$0], 'arg_directive'); \nbreak;\ncase 18:\n yy.parseDirective('}%%', 'close_directive', 'journey'); \nbreak;\n}\n},\ntable: [{3:1,4:$V0,7:3,12:4,21:$V1},{1:[3]},o($V2,[2,3],{5:6}),{3:7,4:$V0,7:3,12:4,21:$V1},{13:8,22:[1,9]},{22:[2,15]},{6:[1,10],7:18,8:11,9:[1,12],10:13,11:[1,14],12:4,17:$V3,18:$V4,19:$V5,21:$V1},{1:[2,2]},{14:19,15:[1,20],24:$V6},o([15,24],[2,16]),o($V2,[2,8],{1:[2,1]}),o($V2,[2,4]),{7:18,10:22,12:4,17:$V3,18:$V4,19:$V5,21:$V1},o($V2,[2,6]),o($V2,[2,7]),o($V2,[2,11]),o($V2,[2,12]),{20:[1,23]},o($V2,[2,14]),{11:[1,24]},{16:25,23:[1,26]},{11:[2,18]},o($V2,[2,5]),o($V2,[2,13]),o($V7,[2,9]),{14:27,24:$V6},{24:[2,17]},{11:[1,28]},o($V7,[2,10])],\ndefaultActions: {5:[2,15],7:[2,2],21:[2,18],26:[2,17]},\nparseError: function parseError (str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer.lex() || EOF;\n if (typeof token !== 'number') {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n\r\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {\"case-insensitive\":true},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0: this.begin('open_directive'); return 21; \nbreak;\ncase 1: this.begin('type_directive'); return 22; \nbreak;\ncase 2: this.popState(); this.begin('arg_directive'); return 15; \nbreak;\ncase 3: this.popState(); this.popState(); return 24; \nbreak;\ncase 4:return 23;\nbreak;\ncase 5:/* skip comments */\nbreak;\ncase 6:/* skip comments */\nbreak;\ncase 7:return 11;\nbreak;\ncase 8:/* skip whitespace */\nbreak;\ncase 9:/* skip comments */\nbreak;\ncase 10:return 4;\nbreak;\ncase 11:return 17;\nbreak;\ncase 12:return 18;\nbreak;\ncase 13:return 19;\nbreak;\ncase 14:return 20;\nbreak;\ncase 15:return 15;\nbreak;\ncase 16:return 6;\nbreak;\ncase 17:return 'INVALID';\nbreak;\n}\n},\nrules: [/^(?:%%\\{)/i,/^(?:((?:(?!\\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\\}%%)/i,/^(?:((?:(?!\\}%%).|\\n)*))/i,/^(?:%(?!\\{)[^\\n]*)/i,/^(?:[^\\}]%%[^\\n]*)/i,/^(?:[\\n]+)/i,/^(?:\\s+)/i,/^(?:#[^\\n]*)/i,/^(?:journey\\b)/i,/^(?:title\\s[^#\\n;]+)/i,/^(?:section\\s[^#:\\n;]+)/i,/^(?:[^#:\\n;]+)/i,/^(?::[^#\\n;]+)/i,/^(?::)/i,/^(?:$)/i,/^(?:.)/i],\nconditions: {\"open_directive\":{\"rules\":[1],\"inclusive\":false},\"type_directive\":{\"rules\":[2,3],\"inclusive\":false},\"arg_directive\":{\"rules\":[3,4],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,5,6,7,8,9,10,11,12,13,14,15,16,17],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain (args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.sanitizeUrl = void 0;\nvar invalidProtocolRegex = /^([^\\w]*)(javascript|data|vbscript)/im;\nvar htmlEntitiesRegex = /&#(\\w+)(^\\w|;)?/g;\nvar ctrlCharactersRegex = /[\\u0000-\\u001F\\u007F-\\u009F\\u2000-\\u200D\\uFEFF]/gim;\nvar urlSchemeRegex = /^([^:]+):/gm;\nvar relativeFirstCharacters = [\".\", \"/\"];\nfunction isRelativeUrlWithoutProtocol(url) {\n return relativeFirstCharacters.indexOf(url[0]) > -1;\n}\n// adapted from https://stackoverflow.com/a/29824550/2601552\nfunction decodeHtmlCharacters(str) {\n return str.replace(htmlEntitiesRegex, function (match, dec) {\n return String.fromCharCode(dec);\n });\n}\nfunction sanitizeUrl(url) {\n var sanitizedUrl = decodeHtmlCharacters(url || \"\")\n .replace(ctrlCharactersRegex, \"\")\n .trim();\n if (!sanitizedUrl) {\n return \"about:blank\";\n }\n if (isRelativeUrlWithoutProtocol(sanitizedUrl)) {\n return sanitizedUrl;\n }\n var urlSchemeParseResults = sanitizedUrl.match(urlSchemeRegex);\n if (!urlSchemeParseResults) {\n return sanitizedUrl;\n }\n var urlScheme = urlSchemeParseResults[0];\n if (invalidProtocolRegex.test(urlScheme)) {\n return \"about:blank\";\n }\n return sanitizedUrl;\n}\nexports.sanitizeUrl = sanitizeUrl;\n","module.exports = intersectNode;\n\n/**\n * @param node\n * @param point\n */\nfunction intersectNode(node, point) {\n // console.info('Intersect Node');\n return node.intersect(point);\n}\n","import moment from 'moment-mini';\n\n/** @typedef {'debug' | 'info' | 'warn' | 'error' | 'fatal'} LogLevel A log level */\n\n/** @type {Object} */\nexport const LEVELS = {\n debug: 1,\n info: 2,\n warn: 3,\n error: 4,\n fatal: 5,\n};\n\nexport const log = {\n debug: () => {},\n info: () => {},\n warn: () => {},\n error: () => {},\n fatal: () => {},\n};\n\n/**\n * Sets a log level\n *\n * @param {LogLevel} [level=\"fatal\"] The level to set the logging to. Default is `\"fatal\"`\n */\nexport const setLogLevel = function (level = 'fatal') {\n if (isNaN(level)) {\n level = level.toLowerCase();\n if (LEVELS[level] !== undefined) {\n level = LEVELS[level];\n }\n }\n log.trace = () => {};\n log.debug = () => {};\n log.info = () => {};\n log.warn = () => {};\n log.error = () => {};\n log.fatal = () => {};\n if (level <= LEVELS.fatal) {\n log.fatal = console.error\n ? console.error.bind(console, format('FATAL'), 'color: orange')\n : console.log.bind(console, '\\x1b[35m', format('FATAL'));\n }\n if (level <= LEVELS.error) {\n log.error = console.error\n ? console.error.bind(console, format('ERROR'), 'color: orange')\n : console.log.bind(console, '\\x1b[31m', format('ERROR'));\n }\n if (level <= LEVELS.warn) {\n log.warn = console.warn\n ? console.warn.bind(console, format('WARN'), 'color: orange')\n : console.log.bind(console, `\\x1b[33m`, format('WARN'));\n }\n if (level <= LEVELS.info) {\n log.info = console.info // ? console.info.bind(console, '\\x1b[34m', format('INFO'), 'color: blue')\n ? console.info.bind(console, format('INFO'), 'color: lightblue')\n : console.log.bind(console, '\\x1b[34m', format('INFO'));\n }\n if (level <= LEVELS.debug) {\n log.debug = console.debug\n ? console.debug.bind(console, format('DEBUG'), 'color: lightgreen')\n : console.log.bind(console, '\\x1b[32m', format('DEBUG'));\n }\n};\n\n/**\n * Returns a format with the timestamp and the log level\n *\n * @param {LogLevel} level The level for the log format\n * @returns {string} The format with the timestamp and log level\n */\nconst format = (level) => {\n const time = moment().format('ss.SSS');\n return `%c${time} : ${level} : `;\n};\n","export default function max(values, valueof) {\n let max;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null\n && (max < value || (max === undefined && value >= value))) {\n max = value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (max < value || (max === undefined && value >= value))) {\n max = value;\n }\n }\n }\n return max;\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","export default function(x) {\n return x;\n}\n","import identity from \"./identity.js\";\n\nvar top = 1,\n right = 2,\n bottom = 3,\n left = 4,\n epsilon = 1e-6;\n\nfunction translateX(x) {\n return \"translate(\" + x + \",0)\";\n}\n\nfunction translateY(y) {\n return \"translate(0,\" + y + \")\";\n}\n\nfunction number(scale) {\n return d => +scale(d);\n}\n\nfunction center(scale, offset) {\n offset = Math.max(0, scale.bandwidth() - offset * 2) / 2;\n if (scale.round()) offset = Math.round(offset);\n return d => +scale(d) + offset;\n}\n\nfunction entering() {\n return !this.__axis;\n}\n\nfunction axis(orient, scale) {\n var tickArguments = [],\n tickValues = null,\n tickFormat = null,\n tickSizeInner = 6,\n tickSizeOuter = 6,\n tickPadding = 3,\n offset = typeof window !== \"undefined\" && window.devicePixelRatio > 1 ? 0 : 0.5,\n k = orient === top || orient === left ? -1 : 1,\n x = orient === left || orient === right ? \"x\" : \"y\",\n transform = orient === top || orient === bottom ? translateX : translateY;\n\n function axis(context) {\n var values = tickValues == null ? (scale.ticks ? scale.ticks.apply(scale, tickArguments) : scale.domain()) : tickValues,\n format = tickFormat == null ? (scale.tickFormat ? scale.tickFormat.apply(scale, tickArguments) : identity) : tickFormat,\n spacing = Math.max(tickSizeInner, 0) + tickPadding,\n range = scale.range(),\n range0 = +range[0] + offset,\n range1 = +range[range.length - 1] + offset,\n position = (scale.bandwidth ? center : number)(scale.copy(), offset),\n selection = context.selection ? context.selection() : context,\n path = selection.selectAll(\".domain\").data([null]),\n tick = selection.selectAll(\".tick\").data(values, scale).order(),\n tickExit = tick.exit(),\n tickEnter = tick.enter().append(\"g\").attr(\"class\", \"tick\"),\n line = tick.select(\"line\"),\n text = tick.select(\"text\");\n\n path = path.merge(path.enter().insert(\"path\", \".tick\")\n .attr(\"class\", \"domain\")\n .attr(\"stroke\", \"currentColor\"));\n\n tick = tick.merge(tickEnter);\n\n line = line.merge(tickEnter.append(\"line\")\n .attr(\"stroke\", \"currentColor\")\n .attr(x + \"2\", k * tickSizeInner));\n\n text = text.merge(tickEnter.append(\"text\")\n .attr(\"fill\", \"currentColor\")\n .attr(x, k * spacing)\n .attr(\"dy\", orient === top ? \"0em\" : orient === bottom ? \"0.71em\" : \"0.32em\"));\n\n if (context !== selection) {\n path = path.transition(context);\n tick = tick.transition(context);\n line = line.transition(context);\n text = text.transition(context);\n\n tickExit = tickExit.transition(context)\n .attr(\"opacity\", epsilon)\n .attr(\"transform\", function(d) { return isFinite(d = position(d)) ? transform(d + offset) : this.getAttribute(\"transform\"); });\n\n tickEnter\n .attr(\"opacity\", epsilon)\n .attr(\"transform\", function(d) { var p = this.parentNode.__axis; return transform((p && isFinite(p = p(d)) ? p : position(d)) + offset); });\n }\n\n tickExit.remove();\n\n path\n .attr(\"d\", orient === left || orient === right\n ? (tickSizeOuter ? \"M\" + k * tickSizeOuter + \",\" + range0 + \"H\" + offset + \"V\" + range1 + \"H\" + k * tickSizeOuter : \"M\" + offset + \",\" + range0 + \"V\" + range1)\n : (tickSizeOuter ? \"M\" + range0 + \",\" + k * tickSizeOuter + \"V\" + offset + \"H\" + range1 + \"V\" + k * tickSizeOuter : \"M\" + range0 + \",\" + offset + \"H\" + range1));\n\n tick\n .attr(\"opacity\", 1)\n .attr(\"transform\", function(d) { return transform(position(d) + offset); });\n\n line\n .attr(x + \"2\", k * tickSizeInner);\n\n text\n .attr(x, k * spacing)\n .text(format);\n\n selection.filter(entering)\n .attr(\"fill\", \"none\")\n .attr(\"font-size\", 10)\n .attr(\"font-family\", \"sans-serif\")\n .attr(\"text-anchor\", orient === right ? \"start\" : orient === left ? \"end\" : \"middle\");\n\n selection\n .each(function() { this.__axis = position; });\n }\n\n axis.scale = function(_) {\n return arguments.length ? (scale = _, axis) : scale;\n };\n\n axis.ticks = function() {\n return tickArguments = Array.from(arguments), axis;\n };\n\n axis.tickArguments = function(_) {\n return arguments.length ? (tickArguments = _ == null ? [] : Array.from(_), axis) : tickArguments.slice();\n };\n\n axis.tickValues = function(_) {\n return arguments.length ? (tickValues = _ == null ? null : Array.from(_), axis) : tickValues && tickValues.slice();\n };\n\n axis.tickFormat = function(_) {\n return arguments.length ? (tickFormat = _, axis) : tickFormat;\n };\n\n axis.tickSize = function(_) {\n return arguments.length ? (tickSizeInner = tickSizeOuter = +_, axis) : tickSizeInner;\n };\n\n axis.tickSizeInner = function(_) {\n return arguments.length ? (tickSizeInner = +_, axis) : tickSizeInner;\n };\n\n axis.tickSizeOuter = function(_) {\n return arguments.length ? (tickSizeOuter = +_, axis) : tickSizeOuter;\n };\n\n axis.tickPadding = function(_) {\n return arguments.length ? (tickPadding = +_, axis) : tickPadding;\n };\n\n axis.offset = function(_) {\n return arguments.length ? (offset = +_, axis) : offset;\n };\n\n return axis;\n}\n\nexport function axisTop(scale) {\n return axis(top, scale);\n}\n\nexport function axisRight(scale) {\n return axis(right, scale);\n}\n\nexport function axisBottom(scale) {\n return axis(bottom, scale);\n}\n\nexport function axisLeft(scale) {\n return axis(left, scale);\n}\n","function none() {}\n\nexport default function(selector) {\n return selector == null ? none : function() {\n return this.querySelector(selector);\n };\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","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","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 {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 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\";\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","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","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} from \"./index.js\";\nimport selector from \"../selector.js\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","import {Selection} from \"./index.js\";\nimport array from \"../array.js\";\nimport selectorAll from \"../selectorAll.js\";\n\nfunction arrayAll(select) {\n return function() {\n 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","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","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","export default function() {\n var callback = arguments[0];\n arguments[0] = this;\n callback.apply(null, arguments);\n return this;\n}\n","export default function() {\n return Array.from(this);\n}\n","export default function() {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n var node = group[i];\n if (node) return node;\n }\n }\n\n return null;\n}\n","export default function() {\n let size = 0;\n for (const node of this) ++size; // eslint-disable-line no-unused-vars\n return size;\n}\n","export default function() {\n return !this.node();\n}\n","export default function(callback) {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) callback.call(node, node.__data__, i, group);\n }\n }\n\n return this;\n}\n","import 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","export default function(value) {\n return arguments.length\n ? this.property(\"__data__\", value)\n : this.node().__data__;\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","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","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 {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","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return a * (1 - t) + b * t;\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 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 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","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(\"^rgb\\\\(\" + [reI, reI, reI] + \"\\\\)$\"),\n reRgbPercent = new RegExp(\"^rgb\\\\(\" + [reP, reP, reP] + \"\\\\)$\"),\n reRgbaInteger = new RegExp(\"^rgba\\\\(\" + [reI, reI, reI, reN] + \"\\\\)$\"),\n reRgbaPercent = new RegExp(\"^rgba\\\\(\" + [reP, reP, reP, reN] + \"\\\\)$\"),\n reHslPercent = new RegExp(\"^hsl\\\\(\" + [reN, reP, reP] + \"\\\\)$\"),\n reHslaPercent = new RegExp(\"^hsla\\\\(\" + [reN, reP, reP, reN] + \"\\\\)$\");\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy: function(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable: function() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb: function() {\n return this;\n },\n displayable: function() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return \"#\" + hex(this.r) + hex(this.g) + hex(this.b);\n}\n\nfunction rgb_formatRgb() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"rgb(\" : \"rgba(\")\n + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.b) || 0))\n + (a === 1 ? \")\" : \", \" + a + \")\");\n}\n\nfunction hex(value) {\n value = Math.max(0, Math.min(255, Math.round(value) || 0));\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n displayable: function() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl: function() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"hsl(\" : \"hsla(\")\n + (this.h || 0) + \", \"\n + (this.s || 0) * 100 + \"%, \"\n + (this.l || 0) * 100 + \"%\"\n + (a === 1 ? \")\" : \", \" + a + \")\");\n }\n}));\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","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","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","import {basis} from \"./basis.js\";\n\nexport default function(values) {\n var n = values.length;\n return function(t) {\n var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n v0 = values[(i + n - 1) % n],\n v1 = values[i % n],\n v2 = values[(i + 1) % n],\n v3 = values[(i + 2) % n];\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n","import {color} from \"d3-color\";\nimport {interpolateNumber, interpolateRgb, interpolateString} from \"d3-interpolate\";\n\nexport default function(a, b) {\n var c;\n return (typeof b === \"number\" ? interpolateNumber\n : b instanceof color ? interpolateRgb\n : (c = color(b)) ? (b = c, interpolateRgb)\n : interpolateString)(a, b);\n}\n","import {interpolateTransformSvg as interpolateTransform} from \"d3-interpolate\";\nimport {namespace} from \"d3-selection\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttribute(name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrConstantNS(fullname, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttributeNS(fullname.space, fullname.local);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttribute(name);\n string0 = this.getAttribute(name);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction attrFunctionNS(fullname, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);\n string0 = this.getAttributeNS(fullname.space, fullname.local);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name), i = fullname === \"transform\" ? interpolateTransform : interpolate;\n return this.attrTween(name, typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, \"attr.\" + name, value))\n : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname)\n : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value));\n}\n","import {namespace} from \"d3-selection\";\n\nfunction attrInterpolate(name, i) {\n return function(t) {\n this.setAttribute(name, i.call(this, t));\n };\n}\n\nfunction attrInterpolateNS(fullname, i) {\n return function(t) {\n this.setAttributeNS(fullname.space, fullname.local, i.call(this, t));\n };\n}\n\nfunction attrTweenNS(fullname, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolateNS(fullname, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nfunction attrTween(name, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolate(name, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value) {\n var key = \"attr.\" + name;\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n var fullname = namespace(name);\n return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n}\n","import {get, init} from \"./schedule.js\";\n\nfunction delayFunction(id, value) {\n return function() {\n init(this, id).delay = +value.apply(this, arguments);\n };\n}\n\nfunction delayConstant(id, value) {\n return value = +value, function() {\n init(this, id).delay = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? delayFunction\n : delayConstant)(id, value))\n : get(this.node(), id).delay;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction durationFunction(id, value) {\n return function() {\n set(this, id).duration = +value.apply(this, arguments);\n };\n}\n\nfunction durationConstant(id, value) {\n return value = +value, function() {\n set(this, id).duration = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? durationFunction\n : durationConstant)(id, value))\n : get(this.node(), id).duration;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction easeConstant(id, value) {\n if (typeof value !== \"function\") throw new Error;\n return function() {\n set(this, id).ease = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each(easeConstant(id, value))\n : get(this.node(), id).ease;\n}\n","import {get, set, init} from \"./schedule.js\";\n\nfunction start(name) {\n return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n var i = t.indexOf(\".\");\n if (i >= 0) t = t.slice(0, i);\n return !t || t === \"start\";\n });\n}\n\nfunction onFunction(id, name, listener) {\n var on0, on1, sit = start(name) ? init : set;\n return function() {\n var schedule = sit(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, listener) {\n var id = this._id;\n\n return arguments.length < 2\n ? get(this.node(), id).on.on(name)\n : this.each(onFunction(id, name, listener));\n}\n","import {selection} from \"d3-selection\";\n\nvar Selection = selection.prototype.constructor;\n\nexport default function() {\n return new Selection(this._groups, this._parents);\n}\n","import {interpolateTransformCss as interpolateTransform} from \"d3-interpolate\";\nimport {style} from \"d3-selection\";\nimport {set} from \"./schedule.js\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction styleNull(name, interpolate) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n string1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, string10 = string1);\n };\n}\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = style(this, name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction styleFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n value1 = value(this),\n string1 = value1 + \"\";\n if (value1 == null) string1 = value1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction styleMaybeRemove(id, name) {\n var on0, on1, listener0, key = \"style.\" + name, event = \"end.\" + key, remove;\n return function() {\n var schedule = set(this, id),\n on = schedule.on,\n listener = schedule.value[key] == null ? remove || (remove = styleRemove(name)) : undefined;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, value, priority) {\n var i = (name += \"\") === \"transform\" ? interpolateTransform : interpolate;\n return value == null ? this\n .styleTween(name, styleNull(name, i))\n .on(\"end.style.\" + name, styleRemove(name))\n : typeof value === \"function\" ? this\n .styleTween(name, styleFunction(name, i, tweenValue(this, \"style.\" + name, value)))\n .each(styleMaybeRemove(this._id, name))\n : this\n .styleTween(name, styleConstant(name, i, value), priority)\n .on(\"end.style.\" + name, null);\n}\n","function styleInterpolate(name, i, priority) {\n return function(t) {\n this.style.setProperty(name, i.call(this, t), priority);\n };\n}\n\nfunction styleTween(name, value, priority) {\n var t, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority);\n return t;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value, priority) {\n var key = \"style.\" + (name += \"\");\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n}\n","function textInterpolate(i) {\n return function(t) {\n this.textContent = i.call(this, t);\n };\n}\n\nfunction textTween(value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && textInterpolate(i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(value) {\n var key = \"text\";\n if (arguments.length < 1) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, textTween(value));\n}\n","import {selection} from \"d3-selection\";\nimport transition_attr from \"./attr.js\";\nimport transition_attrTween from \"./attrTween.js\";\nimport transition_delay from \"./delay.js\";\nimport transition_duration from \"./duration.js\";\nimport transition_ease from \"./ease.js\";\nimport transition_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","import {selector} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n schedule(subgroup[i], name, id, i, subgroup, get(node, id));\n }\n }\n }\n\n return new Transition(subgroups, this._parents, name, id);\n}\n","import {selectorAll} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n for (var children = select.call(node, node.__data__, i, group), child, inherit = get(node, id), k = 0, l = children.length; k < l; ++k) {\n if (child = children[k]) {\n schedule(child, name, id, k, children, inherit);\n }\n }\n subgroups.push(children);\n parents.push(node);\n }\n }\n }\n\n return new Transition(subgroups, parents, name, id);\n}\n","import {matcher} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Transition(subgroups, this._parents, this._name, this._id);\n}\n","import {Transition} from \"./index.js\";\n\nexport default function(transition) {\n if (transition._id !== this._id) throw new Error;\n\n for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Transition(merges, this._parents, this._name, this._id);\n}\n","import {Transition, newId} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function() {\n var name = this._name,\n id0 = this._id,\n id1 = newId();\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n var inherit = get(node, id0);\n schedule(node, name, id1, i, group, {\n time: inherit.time + inherit.delay + inherit.duration,\n delay: 0,\n duration: inherit.duration,\n ease: inherit.ease\n });\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id1);\n}\n","import {tweenValue} from \"./tween.js\";\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var value1 = value(this);\n this.textContent = value1 == null ? \"\" : value1;\n };\n}\n\nexport default function(value) {\n return this.tween(\"text\", typeof value === \"function\"\n ? textFunction(tweenValue(this, \"text\", value))\n : textConstant(value == null ? \"\" : value + \"\"));\n}\n","function removeFunction(id) {\n return function() {\n var parent = this.parentNode;\n for (var i in this.__transition) if (+i !== id) return;\n if (parent) parent.removeChild(this);\n };\n}\n\nexport default function() {\n return this.on(\"end.remove\", removeFunction(this._id));\n}\n","import {set} from \"./schedule.js\";\n\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 {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 {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","export function cubicIn(t) {\n return t * t * t;\n}\n\nexport function cubicOut(t) {\n return --t * t * t + 1;\n}\n\nexport function cubicInOut(t) {\n return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n","import {selection} from \"d3-selection\";\nimport selection_interrupt from \"./interrupt.js\";\nimport selection_transition from \"./transition.js\";\n\nselection.prototype.interrupt = selection_interrupt;\nselection.prototype.transition = selection_transition;\n","import interrupt from \"../interrupt.js\";\n\nexport default function(name) {\n return this.each(function() {\n interrupt(this, name);\n });\n}\n","import {STARTING, ENDING, ENDED} from \"./transition/schedule.js\";\n\nexport default function(node, name) {\n var schedules = node.__transition,\n schedule,\n active,\n empty = true,\n i;\n\n if (!schedules) return;\n\n name = name == null ? null : name + \"\";\n\n for (i in schedules) {\n if ((schedule = schedules[i]).name !== name) { empty = false; continue; }\n active = schedule.state > STARTING && schedule.state < ENDING;\n schedule.state = ENDED;\n schedule.timer.stop();\n schedule.on.call(active ? \"interrupt\" : \"cancel\", node, node.__data__, schedule.index, schedule.group);\n delete schedules[i];\n }\n\n if (empty) delete node.__transition;\n}\n","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","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(\"^rgb\\\\(\" + [reI, reI, reI] + \"\\\\)$\"),\n reRgbPercent = new RegExp(\"^rgb\\\\(\" + [reP, reP, reP] + \"\\\\)$\"),\n reRgbaInteger = new RegExp(\"^rgba\\\\(\" + [reI, reI, reI, reN] + \"\\\\)$\"),\n reRgbaPercent = new RegExp(\"^rgba\\\\(\" + [reP, reP, reP, reN] + \"\\\\)$\"),\n reHslPercent = new RegExp(\"^hsl\\\\(\" + [reN, reP, reP] + \"\\\\)$\"),\n reHslaPercent = new RegExp(\"^hsla\\\\(\" + [reN, reP, reP, reN] + \"\\\\)$\");\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy: function(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable: function() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb: function() {\n return this;\n },\n displayable: function() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return \"#\" + hex(this.r) + hex(this.g) + hex(this.b);\n}\n\nfunction rgb_formatRgb() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"rgb(\" : \"rgba(\")\n + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.b) || 0))\n + (a === 1 ? \")\" : \", \" + a + \")\");\n}\n\nfunction hex(value) {\n value = Math.max(0, Math.min(255, Math.round(value) || 0));\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n displayable: function() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl: function() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"hsl(\" : \"hsla(\")\n + (this.h || 0) + \", \"\n + (this.s || 0) * 100 + \"%, \"\n + (this.l || 0) * 100 + \"%\"\n + (a === 1 ? \")\" : \", \" + a + \")\");\n }\n}));\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","export const radians = Math.PI / 180;\nexport const degrees = 180 / Math.PI;\n","import define, {extend} from \"./define.js\";\nimport {Color, rgbConvert, Rgb} from \"./color.js\";\nimport {degrees, radians} from \"./math.js\";\n\n// https://observablehq.com/@mbostock/lab-and-rgb\nconst K = 18,\n Xn = 0.96422,\n Yn = 1,\n Zn = 0.82521,\n t0 = 4 / 29,\n t1 = 6 / 29,\n t2 = 3 * t1 * t1,\n t3 = t1 * t1 * t1;\n\nfunction labConvert(o) {\n if (o instanceof Lab) return new Lab(o.l, o.a, o.b, o.opacity);\n if (o instanceof Hcl) return hcl2lab(o);\n if (!(o instanceof Rgb)) o = rgbConvert(o);\n var r = rgb2lrgb(o.r),\n g = rgb2lrgb(o.g),\n b = rgb2lrgb(o.b),\n y = xyz2lab((0.2225045 * r + 0.7168786 * g + 0.0606169 * b) / Yn), x, z;\n if (r === g && g === b) x = z = y; else {\n x = xyz2lab((0.4360747 * r + 0.3850649 * g + 0.1430804 * b) / Xn);\n z = xyz2lab((0.0139322 * r + 0.0971045 * g + 0.7141733 * b) / Zn);\n }\n return new Lab(116 * y - 16, 500 * (x - y), 200 * (y - z), o.opacity);\n}\n\nexport function gray(l, opacity) {\n return new Lab(l, 0, 0, opacity == null ? 1 : opacity);\n}\n\nexport default function lab(l, a, b, opacity) {\n return arguments.length === 1 ? labConvert(l) : new Lab(l, a, b, opacity == null ? 1 : opacity);\n}\n\nexport function Lab(l, a, b, opacity) {\n this.l = +l;\n this.a = +a;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Lab, lab, extend(Color, {\n brighter: function(k) {\n return new Lab(this.l + K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n darker: function(k) {\n return new Lab(this.l - K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n rgb: function() {\n var y = (this.l + 16) / 116,\n x = isNaN(this.a) ? y : y + this.a / 500,\n z = isNaN(this.b) ? y : y - this.b / 200;\n x = Xn * lab2xyz(x);\n y = Yn * lab2xyz(y);\n z = Zn * lab2xyz(z);\n return new Rgb(\n lrgb2rgb( 3.1338561 * x - 1.6168667 * y - 0.4906146 * z),\n lrgb2rgb(-0.9787684 * x + 1.9161415 * y + 0.0334540 * z),\n lrgb2rgb( 0.0719453 * x - 0.2289914 * y + 1.4052427 * z),\n this.opacity\n );\n }\n}));\n\nfunction xyz2lab(t) {\n return t > t3 ? Math.pow(t, 1 / 3) : t / t2 + t0;\n}\n\nfunction lab2xyz(t) {\n return t > t1 ? t * t * t : t2 * (t - t0);\n}\n\nfunction lrgb2rgb(x) {\n return 255 * (x <= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055);\n}\n\nfunction rgb2lrgb(x) {\n return (x /= 255) <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);\n}\n\nfunction hclConvert(o) {\n if (o instanceof Hcl) return new Hcl(o.h, o.c, o.l, o.opacity);\n if (!(o instanceof Lab)) o = labConvert(o);\n if (o.a === 0 && o.b === 0) return new Hcl(NaN, 0 < o.l && o.l < 100 ? 0 : NaN, o.l, o.opacity);\n var h = Math.atan2(o.b, o.a) * degrees;\n return new Hcl(h < 0 ? h + 360 : h, Math.sqrt(o.a * o.a + o.b * o.b), o.l, o.opacity);\n}\n\nexport function lch(l, c, h, opacity) {\n return arguments.length === 1 ? hclConvert(l) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function hcl(h, c, l, opacity) {\n return arguments.length === 1 ? hclConvert(h) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function Hcl(h, c, l, opacity) {\n this.h = +h;\n this.c = +c;\n this.l = +l;\n this.opacity = +opacity;\n}\n\nfunction hcl2lab(o) {\n if (isNaN(o.h)) return new Lab(o.l, 0, 0, o.opacity);\n var h = o.h * radians;\n return new Lab(o.l, Math.cos(h) * o.c, Math.sin(h) * o.c, o.opacity);\n}\n\ndefine(Hcl, hcl, extend(Color, {\n brighter: function(k) {\n return new Hcl(this.h, this.c, this.l + K * (k == null ? 1 : k), this.opacity);\n },\n darker: function(k) {\n return new Hcl(this.h, this.c, this.l - K * (k == null ? 1 : k), this.opacity);\n },\n rgb: function() {\n return hcl2lab(this).rgb();\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 {hcl as colorHcl} from \"d3-color\";\nimport color, {hue} from \"./color.js\";\n\nfunction hcl(hue) {\n return function(start, end) {\n var h = hue((start = colorHcl(start)).h, (end = colorHcl(end)).h),\n c = color(start.c, end.c),\n l = color(start.l, end.l),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.c = c(t);\n start.l = l(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n}\n\nexport default hcl(hue);\nexport var hclLong = hcl(color);\n","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","import ascending from \"./ascending.js\";\n\nexport default function bisector(f) {\n let delta = f;\n let compare1 = f;\n let compare2 = f;\n\n if (f.length !== 2) {\n delta = (d, x) => f(d) - x;\n compare1 = ascending;\n compare2 = (d, x) => ascending(f(d), x);\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","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 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","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(\"^rgb\\\\(\" + [reI, reI, reI] + \"\\\\)$\"),\n reRgbPercent = new RegExp(\"^rgb\\\\(\" + [reP, reP, reP] + \"\\\\)$\"),\n reRgbaInteger = new RegExp(\"^rgba\\\\(\" + [reI, reI, reI, reN] + \"\\\\)$\"),\n reRgbaPercent = new RegExp(\"^rgba\\\\(\" + [reP, reP, reP, reN] + \"\\\\)$\"),\n reHslPercent = new RegExp(\"^hsl\\\\(\" + [reN, reP, reP] + \"\\\\)$\"),\n reHslaPercent = new RegExp(\"^hsla\\\\(\" + [reN, reP, reP, reN] + \"\\\\)$\");\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy: function(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable: function() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb: function() {\n return this;\n },\n displayable: function() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return \"#\" + hex(this.r) + hex(this.g) + hex(this.b);\n}\n\nfunction rgb_formatRgb() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"rgb(\" : \"rgba(\")\n + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.b) || 0))\n + (a === 1 ? \")\" : \", \" + a + \")\");\n}\n\nfunction hex(value) {\n value = Math.max(0, Math.min(255, Math.round(value) || 0));\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n displayable: function() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl: function() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"hsl(\" : \"hsla(\")\n + (this.h || 0) + \", \"\n + (this.s || 0) * 100 + \"%, \"\n + (this.l || 0) * 100 + \"%\"\n + (a === 1 ? \")\" : \", \" + a + \")\");\n }\n}));\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","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","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","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 {basis} from \"./basis.js\";\n\nexport default function(values) {\n var n = values.length;\n return function(t) {\n var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n v0 = values[(i + n - 1) % n],\n v1 = values[i % n],\n v2 = values[(i + 1) % n],\n v3 = values[(i + 2) % n];\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n","export default function(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 {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","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 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 default function constants(x) {\n return function() {\n return x;\n };\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","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","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 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 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 {ticks, tickIncrement} from \"d3-array\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport tickFormat from \"./tickFormat.js\";\n\nexport function linearish(scale) {\n var domain = scale.domain;\n\n scale.ticks = function(count) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], count == null ? 10 : count);\n };\n\n scale.tickFormat = function(count, specifier) {\n var d = domain();\n return tickFormat(d[0], d[d.length - 1], count == null ? 10 : count, specifier);\n };\n\n scale.nice = function(count) {\n if (count == null) count = 10;\n\n var d = domain();\n var i0 = 0;\n var i1 = d.length - 1;\n var start = d[i0];\n var stop = d[i1];\n var prestep;\n var step;\n var maxIter = 10;\n\n if (stop < start) {\n step = start, start = stop, stop = step;\n step = i0, i0 = i1, i1 = step;\n }\n \n while (maxIter-- > 0) {\n step = tickIncrement(start, stop, count);\n if (step === prestep) {\n d[i0] = start\n d[i1] = stop\n return domain(d);\n } else if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n } else {\n break;\n }\n prestep = step;\n }\n\n return scale;\n };\n\n return scale;\n}\n\nexport default function linear() {\n var scale = continuous();\n\n scale.copy = function() {\n return copy(scale, linear());\n };\n\n initRange.apply(scale, arguments);\n\n return linearish(scale);\n}\n","import {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 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","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","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","export class InternMap extends Map {\n constructor(entries, key = keyof) {\n super();\n Object.defineProperties(this, {_intern: {value: new Map()}, _key: {value: key}});\n if (entries != null) for (const [key, value] of entries) this.set(key, value);\n }\n get(key) {\n return super.get(intern_get(this, key));\n }\n has(key) {\n return super.has(intern_get(this, key));\n }\n set(key, value) {\n return super.set(intern_set(this, key), value);\n }\n delete(key) {\n return super.delete(intern_delete(this, key));\n }\n}\n\nexport class InternSet extends Set {\n constructor(values, key = keyof) {\n super();\n Object.defineProperties(this, {_intern: {value: new Map()}, _key: {value: key}});\n if (values != null) for (const value of values) this.add(value);\n }\n has(value) {\n return super.has(intern_get(this, value));\n }\n add(value) {\n return super.add(intern_set(this, value));\n }\n delete(value) {\n return super.delete(intern_delete(this, value));\n }\n}\n\nfunction intern_get({_intern, _key}, value) {\n const key = _key(value);\n return _intern.has(key) ? _intern.get(key) : value;\n}\n\nfunction intern_set({_intern, _key}, value) {\n const key = _key(value);\n if (_intern.has(key)) return _intern.get(key);\n _intern.set(key, value);\n return value;\n}\n\nfunction intern_delete({_intern, _key}, value) {\n const key = _key(value);\n if (_intern.has(key)) {\n value = _intern.get(key);\n _intern.delete(key);\n }\n return value;\n}\n\nfunction keyof(value) {\n return value !== null && typeof value === \"object\" ? value.valueOf() : value;\n}\n","import {InternMap} from \"d3-array\";\nimport {initRange} from \"./init.js\";\n\nexport const implicit = Symbol(\"implicit\");\n\nexport default function ordinal() {\n var index = new InternMap(),\n domain = [],\n range = [],\n unknown = implicit;\n\n function scale(d) {\n let i = index.get(d);\n if (i === undefined) {\n if (unknown !== implicit) return unknown;\n index.set(d, i = domain.push(d) - 1);\n }\n return range[i % range.length];\n }\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [], index = new InternMap();\n for (const value of _) {\n if (index.has(value)) continue;\n index.set(value, domain.push(value) - 1);\n }\n return scale;\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), scale) : range.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return ordinal(domain, range).unknown(unknown);\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n","export const durationSecond = 1000;\nexport const durationMinute = durationSecond * 60;\nexport const durationHour = durationMinute * 60;\nexport const durationDay = durationHour * 24;\nexport const durationWeek = durationDay * 7;\nexport const durationMonth = durationDay * 30;\nexport const durationYear = durationDay * 365;\n","var t0 = new Date,\n t1 = new Date;\n\nexport default function newInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date;\n }\n\n interval.floor = function(date) {\n return floori(date = new Date(+date)), date;\n };\n\n interval.ceil = function(date) {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = function(date) {\n var d0 = interval(date),\n d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = function(date, step) {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = function(start, stop, step) {\n var range = [], previous;\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n while (previous < start && start < stop);\n return range;\n };\n\n interval.filter = function(test) {\n return newInterval(function(date) {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, function(date, step) {\n if (date >= date) {\n if (step < 0) while (++step <= 0) {\n while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n } else while (--step >= 0) {\n while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n }\n }\n });\n };\n\n if (count) {\n interval.count = function(start, end) {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = function(step) {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? function(d) { return field(d) % step === 0; }\n : function(d) { return interval.count(0, d) % step === 0; });\n };\n }\n\n return interval;\n}\n","import interval from \"./interval.js\";\n\nvar millisecond = interval(function() {\n // noop\n}, function(date, step) {\n date.setTime(+date + step);\n}, function(start, end) {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = function(k) {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return interval(function(date) {\n date.setTime(Math.floor(date / k) * k);\n }, function(date, step) {\n date.setTime(+date + step * k);\n }, function(start, end) {\n return (end - start) / k;\n });\n};\n\nexport default millisecond;\nexport var milliseconds = millisecond.range;\n","import interval from \"./interval.js\";\nimport {durationSecond} from \"./duration.js\";\n\nvar second = interval(function(date) {\n date.setTime(date - date.getMilliseconds());\n}, function(date, step) {\n date.setTime(+date + step * durationSecond);\n}, function(start, end) {\n return (end - start) / durationSecond;\n}, function(date) {\n return date.getUTCSeconds();\n});\n\nexport default second;\nexport var seconds = second.range;\n","import interval from \"./interval.js\";\nimport {durationMinute, durationSecond} from \"./duration.js\";\n\nvar minute = interval(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getMinutes();\n});\n\nexport default minute;\nexport var minutes = minute.range;\n","import interval from \"./interval.js\";\nimport {durationHour, durationMinute, durationSecond} from \"./duration.js\";\n\nvar hour = interval(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getHours();\n});\n\nexport default hour;\nexport var hours = hour.range;\n","import interval from \"./interval.js\";\nimport {durationDay, durationMinute} from \"./duration.js\";\n\nvar day = interval(\n date => date.setHours(0, 0, 0, 0),\n (date, step) => date.setDate(date.getDate() + step),\n (start, end) => (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay,\n date => date.getDate() - 1\n);\n\nexport default day;\nexport var days = day.range;\n","import interval from \"./interval.js\";\nimport {durationMinute, durationWeek} from \"./duration.js\";\n\nfunction weekday(i) {\n return interval(function(date) {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setDate(date.getDate() + step * 7);\n }, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport var sunday = weekday(0);\nexport var monday = weekday(1);\nexport var tuesday = weekday(2);\nexport var wednesday = weekday(3);\nexport var thursday = weekday(4);\nexport var friday = weekday(5);\nexport var saturday = weekday(6);\n\nexport var sundays = sunday.range;\nexport var mondays = monday.range;\nexport var tuesdays = tuesday.range;\nexport var wednesdays = wednesday.range;\nexport var thursdays = thursday.range;\nexport var fridays = friday.range;\nexport var saturdays = saturday.range;\n","import interval from \"./interval.js\";\n\nvar month = interval(function(date) {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setMonth(date.getMonth() + step);\n}, function(start, end) {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, function(date) {\n return date.getMonth();\n});\n\nexport default month;\nexport var months = month.range;\n","import interval from \"./interval.js\";\n\nvar year = interval(function(date) {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setFullYear(date.getFullYear() + step);\n}, function(start, end) {\n return end.getFullYear() - start.getFullYear();\n}, function(date) {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\nyear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport default year;\nexport var years = year.range;\n","import interval from \"./interval.js\";\nimport {durationMinute} from \"./duration.js\";\n\nvar utcMinute = interval(function(date) {\n date.setUTCSeconds(0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getUTCMinutes();\n});\n\nexport default utcMinute;\nexport var utcMinutes = utcMinute.range;\n","import interval from \"./interval.js\";\nimport {durationHour} from \"./duration.js\";\n\nvar utcHour = interval(function(date) {\n date.setUTCMinutes(0, 0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getUTCHours();\n});\n\nexport default utcHour;\nexport var utcHours = utcHour.range;\n","import interval from \"./interval.js\";\nimport {durationDay} from \"./duration.js\";\n\nvar utcDay = interval(function(date) {\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step);\n}, function(start, end) {\n return (end - start) / durationDay;\n}, function(date) {\n return date.getUTCDate() - 1;\n});\n\nexport default utcDay;\nexport var utcDays = utcDay.range;\n","import interval from \"./interval.js\";\nimport {durationWeek} from \"./duration.js\";\n\nfunction utcWeekday(i) {\n return interval(function(date) {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, function(start, end) {\n return (end - start) / durationWeek;\n });\n}\n\nexport var utcSunday = utcWeekday(0);\nexport var utcMonday = utcWeekday(1);\nexport var utcTuesday = utcWeekday(2);\nexport var utcWednesday = utcWeekday(3);\nexport var utcThursday = utcWeekday(4);\nexport var utcFriday = utcWeekday(5);\nexport var utcSaturday = utcWeekday(6);\n\nexport var utcSundays = utcSunday.range;\nexport var utcMondays = utcMonday.range;\nexport var utcTuesdays = utcTuesday.range;\nexport var utcWednesdays = utcWednesday.range;\nexport var utcThursdays = utcThursday.range;\nexport var utcFridays = utcFriday.range;\nexport var utcSaturdays = utcSaturday.range;\n","import interval from \"./interval.js\";\n\nvar utcMonth = interval(function(date) {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, function(start, end) {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, function(date) {\n return date.getUTCMonth();\n});\n\nexport default utcMonth;\nexport var utcMonths = utcMonth.range;\n","import interval from \"./interval.js\";\n\nvar utcYear = interval(function(date) {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, function(start, end) {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, function(date) {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport default utcYear;\nexport var utcYears = utcYear.range;\n","import {bisector, tickStep} from \"d3-array\";\nimport {durationDay, durationHour, durationMinute, durationMonth, durationSecond, durationWeek, durationYear} from \"./duration.js\";\nimport millisecond from \"./millisecond.js\";\nimport second from \"./second.js\";\nimport minute from \"./minute.js\";\nimport hour from \"./hour.js\";\nimport day from \"./day.js\";\nimport {sunday as week} from \"./week.js\";\nimport month from \"./month.js\";\nimport year from \"./year.js\";\nimport utcMinute from \"./utcMinute.js\";\nimport utcHour from \"./utcHour.js\";\nimport utcDay from \"./utcDay.js\";\nimport {utcSunday as utcWeek} from \"./utcWeek.js\";\nimport utcMonth from \"./utcMonth.js\";\nimport utcYear from \"./utcYear.js\";\n\nfunction ticker(year, month, week, day, hour, minute) {\n\n const tickIntervals = [\n [second, 1, durationSecond],\n [second, 5, 5 * durationSecond],\n [second, 15, 15 * durationSecond],\n [second, 30, 30 * durationSecond],\n [minute, 1, durationMinute],\n [minute, 5, 5 * durationMinute],\n [minute, 15, 15 * durationMinute],\n [minute, 30, 30 * durationMinute],\n [ hour, 1, durationHour ],\n [ hour, 3, 3 * durationHour ],\n [ hour, 6, 6 * durationHour ],\n [ hour, 12, 12 * durationHour ],\n [ day, 1, durationDay ],\n [ day, 2, 2 * durationDay ],\n [ week, 1, durationWeek ],\n [ month, 1, durationMonth ],\n [ month, 3, 3 * durationMonth ],\n [ year, 1, durationYear ]\n ];\n\n function ticks(start, stop, count) {\n const reverse = stop < start;\n if (reverse) [start, stop] = [stop, start];\n const interval = count && typeof count.range === \"function\" ? count : tickInterval(start, stop, count);\n const ticks = interval ? interval.range(start, +stop + 1) : []; // inclusive stop\n return reverse ? ticks.reverse() : ticks;\n }\n\n function tickInterval(start, stop, count) {\n const target = Math.abs(stop - start) / count;\n const i = bisector(([,, step]) => step).right(tickIntervals, target);\n if (i === tickIntervals.length) return year.every(tickStep(start / durationYear, stop / durationYear, count));\n if (i === 0) return millisecond.every(Math.max(tickStep(start, stop, count), 1));\n const [t, step] = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];\n return t.every(step);\n }\n\n return [ticks, tickInterval];\n}\n\nconst [utcTicks, utcTickInterval] = ticker(utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute);\nconst [timeTicks, timeTickInterval] = ticker(year, month, week, day, hour, minute);\n\nexport {utcTicks, utcTickInterval, timeTicks, timeTickInterval};\n","import {\n timeDay,\n timeSunday,\n timeMonday,\n timeThursday,\n timeYear,\n utcDay,\n utcSunday,\n utcMonday,\n utcThursday,\n utcYear\n} from \"d3-time\";\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newDate(y, m, d) {\n return {y: y, m: m, d: d, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"f\": formatMicroseconds,\n \"g\": formatYearISO,\n \"G\": formatFullYearISO,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"q\": formatQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatSeconds,\n \"u\": formatWeekdayNumberMonday,\n \"U\": formatWeekNumberSunday,\n \"V\": formatWeekNumberISO,\n \"w\": formatWeekdayNumberSunday,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"f\": formatUTCMicroseconds,\n \"g\": formatUTCYearISO,\n \"G\": formatUTCFullYearISO,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"q\": formatUTCQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatUTCSeconds,\n \"u\": formatUTCWeekdayNumberMonday,\n \"U\": formatUTCWeekNumberSunday,\n \"V\": formatUTCWeekNumberISO,\n \"w\": formatUTCWeekdayNumberSunday,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"f\": parseMicroseconds,\n \"g\": parseYear,\n \"G\": parseFullYear,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"q\": parseQuarter,\n \"Q\": parseUnixTimestamp,\n \"s\": parseUnixTimestampSeconds,\n \"S\": parseSeconds,\n \"u\": parseWeekdayNumberMonday,\n \"U\": parseWeekNumberSunday,\n \"V\": parseWeekNumberISO,\n \"w\": parseWeekdayNumberSunday,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function(date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, Z) {\n return function(string) {\n var d = newDate(1900, undefined, 1),\n i = parseSpecifier(d, specifier, string += \"\", 0),\n week, day;\n if (i != string.length) return null;\n\n // If a UNIX timestamp is specified, return it.\n if (\"Q\" in d) return new Date(d.Q);\n if (\"s\" in d) return new Date(d.s * 1000 + (\"L\" in d ? d.L : 0));\n\n // If this is utcParse, never use the local timezone.\n if (Z && !(\"Z\" in d)) d.Z = 0;\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // If the month was not specified, inherit from the quarter.\n if (d.m === undefined) d.m = \"q\" in d ? d.q : 0;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"V\" in d) {\n if (d.V < 1 || d.V > 53) return null;\n if (!(\"w\" in d)) d.w = 1;\n if (\"Z\" in d) {\n week = utcDate(newDate(d.y, 0, 1)), day = week.getUTCDay();\n week = day > 4 || day === 0 ? utcMonday.ceil(week) : utcMonday(week);\n week = utcDay.offset(week, (d.V - 1) * 7);\n d.y = week.getUTCFullYear();\n d.m = week.getUTCMonth();\n d.d = week.getUTCDate() + (d.w + 6) % 7;\n } else {\n week = localDate(newDate(d.y, 0, 1)), day = week.getDay();\n week = day > 4 || day === 0 ? timeMonday.ceil(week) : timeMonday(week);\n week = timeDay.offset(week, (d.V - 1) * 7);\n d.y = week.getFullYear();\n d.m = week.getMonth();\n d.d = week.getDate() + (d.w + 6) % 7;\n }\n } else if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n day = \"Z\" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return localDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatQuarter(d) {\n return 1 + ~~(d.getMonth() / 3);\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n function formatUTCQuarter(d) {\n return 1 + ~~(d.getUTCMonth() / 3);\n }\n\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function() { return specifier; };\n return f;\n },\n parse: function(specifier) {\n var p = newParse(specifier += \"\", false);\n p.toString = function() { return specifier; };\n return p;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function() { return specifier; };\n return f;\n },\n utcParse: function(specifier) {\n var p = newParse(specifier += \"\", true);\n p.toString = function() { return specifier; };\n return p;\n }\n };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n numberRe = /^\\s*\\d+/, // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n return new Map(names.map((name, i) => [name.toLowerCase(), i]));\n}\n\nfunction parseWeekdayNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekdayNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberISO(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseQuarter(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMicroseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 6));\n return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\n\nfunction parseUnixTimestamp(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseUnixTimestampSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.s = +n[0], i + n[0].length) : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMicroseconds(d, p) {\n return formatMilliseconds(d, p) + \"000\";\n}\n\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekdayNumberMonday(d) {\n var day = d.getDay();\n return day === 0 ? 7 : day;\n}\n\nfunction formatWeekNumberSunday(d, p) {\n return pad(timeSunday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction dISO(d) {\n var day = d.getDay();\n return (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n}\n\nfunction formatWeekNumberISO(d, p) {\n d = dISO(d);\n return pad(timeThursday.count(timeYear(d), d) + (timeYear(d).getDay() === 4), p, 2);\n}\n\nfunction formatWeekdayNumberSunday(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatYearISO(d, p) {\n d = dISO(d);\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatFullYearISO(d, p) {\n var day = d.getDay();\n d = (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMicroseconds(d, p) {\n return formatUTCMilliseconds(d, p) + \"000\";\n}\n\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekdayNumberMonday(d) {\n var dow = d.getUTCDay();\n return dow === 0 ? 7 : dow;\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction UTCdISO(d) {\n var day = d.getUTCDay();\n return (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n}\n\nfunction formatUTCWeekNumberISO(d, p) {\n d = UTCdISO(d);\n return pad(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2);\n}\n\nfunction formatUTCWeekdayNumberSunday(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCYearISO(d, p) {\n d = UTCdISO(d);\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCFullYearISO(d, p) {\n var day = d.getUTCDay();\n d = (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n\nfunction formatUnixTimestamp(d) {\n return +d;\n}\n\nfunction formatUnixTimestampSeconds(d) {\n return Math.floor(+d / 1000);\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}\n","import {timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeTicks, timeTickInterval} from \"d3-time\";\nimport {timeFormat} from \"d3-time-format\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport nice from \"./nice.js\";\n\nfunction date(t) {\n return new Date(t);\n}\n\nfunction number(t) {\n return t instanceof Date ? +t : +new Date(+t);\n}\n\nexport function calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format) {\n var scale = continuous(),\n invert = scale.invert,\n domain = scale.domain;\n\n var formatMillisecond = format(\".%L\"),\n formatSecond = format(\":%S\"),\n formatMinute = format(\"%I:%M\"),\n formatHour = format(\"%I %p\"),\n formatDay = format(\"%a %d\"),\n formatWeek = format(\"%b %d\"),\n formatMonth = format(\"%B\"),\n formatYear = format(\"%Y\");\n\n function tickFormat(date) {\n return (second(date) < date ? formatMillisecond\n : minute(date) < date ? formatSecond\n : hour(date) < date ? formatMinute\n : day(date) < date ? formatHour\n : month(date) < date ? (week(date) < date ? formatDay : formatWeek)\n : year(date) < date ? formatMonth\n : formatYear)(date);\n }\n\n scale.invert = function(y) {\n return new Date(invert(y));\n };\n\n scale.domain = function(_) {\n return arguments.length ? domain(Array.from(_, number)) : domain().map(date);\n };\n\n scale.ticks = function(interval) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], interval == null ? 10 : interval);\n };\n\n scale.tickFormat = function(count, specifier) {\n return specifier == null ? tickFormat : format(specifier);\n };\n\n scale.nice = function(interval) {\n var d = domain();\n if (!interval || typeof interval.range !== \"function\") interval = tickInterval(d[0], d[d.length - 1], interval == null ? 10 : interval);\n return interval ? domain(nice(d, interval)) : scale;\n };\n\n scale.copy = function() {\n return copy(scale, calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format));\n };\n\n return scale;\n}\n\nexport default function time() {\n return initRange.apply(calendar(timeTicks, timeTickInterval, timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]), arguments);\n}\n","export default function nice(domain, interval) {\n domain = domain.slice();\n\n var i0 = 0,\n i1 = domain.length - 1,\n x0 = domain[i0],\n x1 = domain[i1],\n t;\n\n if (x1 < x0) {\n t = i0, i0 = i1, i1 = t;\n t = x0, x0 = x1, x1 = t;\n }\n\n domain[i0] = interval.floor(x0);\n domain[i1] = interval.ceil(x1);\n return domain;\n}\n","function none() {}\n\nexport default function(selector) {\n return selector == null ? none : function() {\n return this.querySelector(selector);\n };\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","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","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 {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 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\";\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","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","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} from \"./index.js\";\nimport selector from \"../selector.js\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","import {Selection} from \"./index.js\";\nimport array from \"../array.js\";\nimport selectorAll from \"../selectorAll.js\";\n\nfunction arrayAll(select) {\n return function() {\n 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","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","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","export default function() {\n var callback = arguments[0];\n arguments[0] = this;\n callback.apply(null, arguments);\n return this;\n}\n","export default function() {\n return Array.from(this);\n}\n","export default function() {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n var node = group[i];\n if (node) return node;\n }\n }\n\n return null;\n}\n","export default function() {\n let size = 0;\n for (const node of this) ++size; // eslint-disable-line no-unused-vars\n return size;\n}\n","export default function() {\n return !this.node();\n}\n","export default function(callback) {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) callback.call(node, node.__data__, i, group);\n }\n }\n\n return this;\n}\n","import 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","export default function(value) {\n return arguments.length\n ? this.property(\"__data__\", value)\n : this.node().__data__;\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, 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","import array from \"./array.js\";\nimport {Selection, root} from \"./selection/index.js\";\n\nexport default function(selector) {\n return typeof selector === \"string\"\n ? new Selection([document.querySelectorAll(selector)], [document.documentElement])\n : new Selection([array(selector)], root);\n}\n","const pi = Math.PI,\n tau = 2 * pi,\n epsilon = 1e-6,\n tauEpsilon = tau - epsilon;\n\nfunction Path() {\n this._x0 = this._y0 = // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n}\n\nfunction path() {\n return new Path;\n}\n\nPath.prototype = path.prototype = {\n constructor: Path,\n moveTo: function(x, y) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y);\n },\n closePath: function() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._ += \"Z\";\n }\n },\n lineTo: function(x, y) {\n this._ += \"L\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n quadraticCurveTo: function(x1, y1, x, y) {\n this._ += \"Q\" + (+x1) + \",\" + (+y1) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) {\n this._ += \"C\" + (+x1) + \",\" + (+y1) + \",\" + (+x2) + \",\" + (+y2) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n arcTo: function(x1, y1, x2, y2, r) {\n x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n var x0 = this._x1,\n y0 = this._y1,\n x21 = x2 - x1,\n y21 = y2 - y1,\n x01 = x0 - x1,\n y01 = y0 - y1,\n l01_2 = x01 * x01 + y01 * y01;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x1,y1).\n if (this._x1 === null) {\n this._ += \"M\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n else if (!(l01_2 > epsilon));\n\n // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n // Equivalently, is (x1,y1) coincident with (x2,y2)?\n // Or, is the radius zero? Line to (x1,y1).\n else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n this._ += \"L\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Otherwise, draw an arc!\n else {\n var x20 = x2 - x0,\n y20 = y2 - y0,\n l21_2 = x21 * x21 + y21 * y21,\n l20_2 = x20 * x20 + y20 * y20,\n l21 = Math.sqrt(l21_2),\n l01 = Math.sqrt(l01_2),\n l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n t01 = l / l01,\n t21 = l / l21;\n\n // If the start tangent is not coincident with (x0,y0), line to.\n if (Math.abs(t01 - 1) > epsilon) {\n this._ += \"L\" + (x1 + t01 * x01) + \",\" + (y1 + t01 * y01);\n }\n\n this._ += \"A\" + r + \",\" + r + \",0,0,\" + (+(y01 * x20 > x01 * y20)) + \",\" + (this._x1 = x1 + t21 * x21) + \",\" + (this._y1 = y1 + t21 * y21);\n }\n },\n arc: function(x, y, r, a0, a1, ccw) {\n x = +x, y = +y, r = +r, ccw = !!ccw;\n var dx = r * Math.cos(a0),\n dy = r * Math.sin(a0),\n x0 = x + dx,\n y0 = y + dy,\n cw = 1 ^ ccw,\n da = ccw ? a0 - a1 : a1 - a0;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x0,y0).\n if (this._x1 === null) {\n this._ += \"M\" + x0 + \",\" + y0;\n }\n\n // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n this._ += \"L\" + x0 + \",\" + y0;\n }\n\n // Is this arc empty? We’re done.\n if (!r) return;\n\n // Does the angle go the wrong way? Flip the direction.\n if (da < 0) da = da % tau + tau;\n\n // Is this a complete circle? Draw two arcs to complete the circle.\n if (da > tauEpsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (x - dx) + \",\" + (y - dy) + \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (this._x1 = x0) + \",\" + (this._y1 = y0);\n }\n\n // Is this arc non-empty? Draw an arc!\n else if (da > epsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,\" + (+(da >= pi)) + \",\" + cw + \",\" + (this._x1 = x + r * Math.cos(a1)) + \",\" + (this._y1 = y + r * Math.sin(a1));\n }\n },\n rect: function(x, y, w, h) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y) + \"h\" + (+w) + \"v\" + (+h) + \"h\" + (-w) + \"Z\";\n },\n toString: function() {\n return this._;\n }\n};\n\nexport default path;\n","export default function(x) {\n return function constant() {\n return x;\n };\n}\n","export var abs = Math.abs;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var max = Math.max;\nexport var min = Math.min;\nexport var sin = Math.sin;\nexport var sqrt = Math.sqrt;\n\nexport var epsilon = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var tau = 2 * pi;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x);\n}\n","import {path} from \"d3-path\";\nimport constant from \"./constant.js\";\nimport {abs, acos, asin, atan2, cos, epsilon, halfPi, max, min, pi, sin, sqrt, tau} from \"./math.js\";\n\nfunction arcInnerRadius(d) {\n return d.innerRadius;\n}\n\nfunction arcOuterRadius(d) {\n return d.outerRadius;\n}\n\nfunction arcStartAngle(d) {\n return d.startAngle;\n}\n\nfunction arcEndAngle(d) {\n return d.endAngle;\n}\n\nfunction arcPadAngle(d) {\n return d && d.padAngle; // Note: optional!\n}\n\nfunction intersect(x0, y0, x1, y1, x2, y2, x3, y3) {\n var x10 = x1 - x0, y10 = y1 - y0,\n x32 = x3 - x2, y32 = y3 - y2,\n t = y32 * x10 - x32 * y10;\n if (t * t < epsilon) return;\n t = (x32 * (y0 - y2) - y32 * (x0 - x2)) / t;\n return [x0 + t * x10, y0 + t * y10];\n}\n\n// Compute perpendicular offset line of length rc.\n// http://mathworld.wolfram.com/Circle-LineIntersection.html\nfunction cornerTangents(x0, y0, x1, y1, r1, rc, cw) {\n var x01 = x0 - x1,\n y01 = y0 - y1,\n lo = (cw ? rc : -rc) / sqrt(x01 * x01 + y01 * y01),\n ox = lo * y01,\n oy = -lo * x01,\n x11 = x0 + ox,\n y11 = y0 + oy,\n x10 = x1 + ox,\n y10 = y1 + oy,\n x00 = (x11 + x10) / 2,\n y00 = (y11 + y10) / 2,\n dx = x10 - x11,\n dy = y10 - y11,\n d2 = dx * dx + dy * dy,\n r = r1 - rc,\n D = x11 * y10 - x10 * y11,\n d = (dy < 0 ? -1 : 1) * sqrt(max(0, r * r * d2 - D * D)),\n cx0 = (D * dy - dx * d) / d2,\n cy0 = (-D * dx - dy * d) / d2,\n cx1 = (D * dy + dx * d) / d2,\n cy1 = (-D * dx + dy * d) / d2,\n dx0 = cx0 - x00,\n dy0 = cy0 - y00,\n dx1 = cx1 - x00,\n dy1 = cy1 - y00;\n\n // Pick the closer of the two intersection points.\n // TODO Is there a faster way to determine which intersection to use?\n if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;\n\n return {\n cx: cx0,\n cy: cy0,\n x01: -ox,\n y01: -oy,\n x11: cx0 * (r1 / r - 1),\n y11: cy0 * (r1 / r - 1)\n };\n}\n\nexport default function() {\n var innerRadius = arcInnerRadius,\n outerRadius = arcOuterRadius,\n cornerRadius = constant(0),\n padRadius = null,\n startAngle = arcStartAngle,\n endAngle = arcEndAngle,\n padAngle = arcPadAngle,\n context = null;\n\n function arc() {\n var buffer,\n r,\n r0 = +innerRadius.apply(this, arguments),\n r1 = +outerRadius.apply(this, arguments),\n a0 = startAngle.apply(this, arguments) - halfPi,\n a1 = endAngle.apply(this, arguments) - halfPi,\n da = abs(a1 - a0),\n cw = a1 > a0;\n\n if (!context) context = buffer = path();\n\n // Ensure that the outer radius is always larger than the inner radius.\n if (r1 < r0) r = r1, r1 = r0, r0 = r;\n\n // Is it a point?\n if (!(r1 > epsilon)) context.moveTo(0, 0);\n\n // Or is it a circle or annulus?\n else if (da > tau - epsilon) {\n context.moveTo(r1 * cos(a0), r1 * sin(a0));\n context.arc(0, 0, r1, a0, a1, !cw);\n if (r0 > epsilon) {\n context.moveTo(r0 * cos(a1), r0 * sin(a1));\n context.arc(0, 0, r0, a1, a0, cw);\n }\n }\n\n // Or is it a circular or annular sector?\n else {\n var a01 = a0,\n a11 = a1,\n a00 = a0,\n a10 = a1,\n da0 = da,\n da1 = da,\n ap = padAngle.apply(this, arguments) / 2,\n rp = (ap > epsilon) && (padRadius ? +padRadius.apply(this, arguments) : sqrt(r0 * r0 + r1 * r1)),\n rc = min(abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments)),\n rc0 = rc,\n rc1 = rc,\n t0,\n t1;\n\n // Apply padding? Note that since r1 ≥ r0, da1 ≥ da0.\n if (rp > epsilon) {\n var p0 = asin(rp / r0 * sin(ap)),\n p1 = asin(rp / r1 * sin(ap));\n if ((da0 -= p0 * 2) > epsilon) p0 *= (cw ? 1 : -1), a00 += p0, a10 -= p0;\n else da0 = 0, a00 = a10 = (a0 + a1) / 2;\n if ((da1 -= p1 * 2) > epsilon) p1 *= (cw ? 1 : -1), a01 += p1, a11 -= p1;\n else da1 = 0, a01 = a11 = (a0 + a1) / 2;\n }\n\n var x01 = r1 * cos(a01),\n y01 = r1 * sin(a01),\n x10 = r0 * cos(a10),\n y10 = r0 * sin(a10);\n\n // Apply rounded corners?\n if (rc > epsilon) {\n var x11 = r1 * cos(a11),\n y11 = r1 * sin(a11),\n x00 = r0 * cos(a00),\n y00 = r0 * sin(a00),\n oc;\n\n // Restrict the corner radius according to the sector angle.\n if (da < pi && (oc = intersect(x01, y01, x00, y00, x11, y11, x10, y10))) {\n var ax = x01 - oc[0],\n ay = y01 - oc[1],\n bx = x11 - oc[0],\n by = y11 - oc[1],\n kc = 1 / sin(acos((ax * bx + ay * by) / (sqrt(ax * ax + ay * ay) * sqrt(bx * bx + by * by))) / 2),\n lc = sqrt(oc[0] * oc[0] + oc[1] * oc[1]);\n rc0 = min(rc, (r0 - lc) / (kc - 1));\n rc1 = min(rc, (r1 - lc) / (kc + 1));\n }\n }\n\n // Is the sector collapsed to a line?\n if (!(da1 > epsilon)) context.moveTo(x01, y01);\n\n // Does the sector’s outer ring have rounded corners?\n else if (rc1 > epsilon) {\n t0 = cornerTangents(x00, y00, x01, y01, r1, rc1, cw);\n t1 = cornerTangents(x11, y11, x10, y10, r1, rc1, cw);\n\n context.moveTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc1 < rc) context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r1, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), !cw);\n context.arc(t1.cx, t1.cy, rc1, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the outer ring just a circular arc?\n else context.moveTo(x01, y01), context.arc(0, 0, r1, a01, a11, !cw);\n\n // Is there no inner ring, and it’s a circular sector?\n // Or perhaps it’s an annular sector collapsed due to padding?\n if (!(r0 > epsilon) || !(da0 > epsilon)) context.lineTo(x10, y10);\n\n // Does the sector’s inner ring (or point) have rounded corners?\n else if (rc0 > epsilon) {\n t0 = cornerTangents(x10, y10, x11, y11, r0, -rc0, cw);\n t1 = cornerTangents(x01, y01, x00, y00, r0, -rc0, cw);\n\n context.lineTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc0 < rc) context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r0, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), cw);\n context.arc(t1.cx, t1.cy, rc0, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the inner ring just a circular arc?\n else context.arc(0, 0, r0, a10, a00, cw);\n }\n\n context.closePath();\n\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n arc.centroid = function() {\n var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2,\n a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - pi / 2;\n return [cos(a) * r, sin(a) * r];\n };\n\n arc.innerRadius = function(_) {\n return arguments.length ? (innerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : innerRadius;\n };\n\n arc.outerRadius = function(_) {\n return arguments.length ? (outerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : outerRadius;\n };\n\n arc.cornerRadius = function(_) {\n return arguments.length ? (cornerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : cornerRadius;\n };\n\n arc.padRadius = function(_) {\n return arguments.length ? (padRadius = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), arc) : padRadius;\n };\n\n arc.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : startAngle;\n };\n\n arc.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : endAngle;\n };\n\n arc.padAngle = function(_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : padAngle;\n };\n\n arc.context = function(_) {\n return arguments.length ? ((context = _ == null ? null : _), arc) : context;\n };\n\n return arc;\n}\n","export var slice = Array.prototype.slice;\n\nexport default function(x) {\n return typeof x === \"object\" && \"length\" in x\n ? x // Array, TypedArray, NodeList, array-like\n : Array.from(x); // Map, Set, iterable, string, or anything else\n}\n","function Linear(context) {\n this._context = context;\n}\n\nLinear.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // falls through\n default: this._context.lineTo(x, y); break;\n }\n }\n};\n\nexport default function(context) {\n return new Linear(context);\n}\n","export function x(p) {\n return p[0];\n}\n\nexport function y(p) {\n return p[1];\n}\n","import {path} from \"d3-path\";\nimport array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function(x, y) {\n var defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null;\n\n x = typeof x === \"function\" ? x : (x === undefined) ? pointX : constant(x);\n y = typeof y === \"function\" ? y : (y === undefined) ? pointY : constant(y);\n\n function line(data) {\n var i,\n n = (data = array(data)).length,\n d,\n defined0 = false,\n buffer;\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) output.lineStart();\n else output.lineEnd();\n }\n if (defined0) output.point(+x(d, i, data), +y(d, i, data));\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n line.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), line) : x;\n };\n\n line.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), line) : y;\n };\n\n line.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), line) : defined;\n };\n\n line.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve;\n };\n\n line.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context;\n };\n\n return line;\n}\n","export default function(a, b) {\n return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n}\n","export default function(d) {\n return d;\n}\n","export default function() {}\n","export function point(that, x, y) {\n that._context.bezierCurveTo(\n (2 * that._x0 + that._x1) / 3,\n (2 * that._y0 + that._y1) / 3,\n (that._x0 + 2 * that._x1) / 3,\n (that._y0 + 2 * that._y1) / 3,\n (that._x0 + 4 * that._x1 + x) / 6,\n (that._y0 + 4 * that._y1 + y) / 6\n );\n}\n\nexport function Basis(context) {\n this._context = context;\n}\n\nBasis.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 3: point(this, this._x1, this._y1); // falls through\n case 2: this._context.lineTo(this._x1, this._y1); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._context.lineTo((5 * this._x0 + this._x1) / 6, (5 * this._y0 + this._y1) / 6); // falls through\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new Basis(context);\n}\n","import noop from \"../noop.js\";\nimport {point} from \"./basis.js\";\n\nfunction BasisClosed(context) {\n this._context = context;\n}\n\nBasisClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x2, this._y2);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.moveTo((this._x2 + 2 * this._x3) / 3, (this._y2 + 2 * this._y3) / 3);\n this._context.lineTo((this._x3 + 2 * this._x2) / 3, (this._y3 + 2 * this._y2) / 3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x2, this._y2);\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._x2 = x, this._y2 = y; break;\n case 1: this._point = 2; this._x3 = x, this._y3 = y; break;\n case 2: this._point = 3; this._x4 = x, this._y4 = y; this._context.moveTo((this._x0 + 4 * this._x1 + x) / 6, (this._y0 + 4 * this._y1 + y) / 6); break;\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new BasisClosed(context);\n}\n","import {point} from \"./basis.js\";\n\nfunction BasisOpen(context) {\n this._context = context;\n}\n\nBasisOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; var x0 = (this._x0 + 4 * this._x1 + x) / 6, y0 = (this._y0 + 4 * this._y1 + y) / 6; this._line ? this._context.lineTo(x0, y0) : this._context.moveTo(x0, y0); break;\n case 3: this._point = 4; // falls through\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new BasisOpen(context);\n}\n","import noop from \"../noop.js\";\n\nfunction LinearClosed(context) {\n this._context = context;\n}\n\nLinearClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._point) this._context.closePath();\n },\n point: function(x, y) {\n x = +x, y = +y;\n if (this._point) this._context.lineTo(x, y);\n else this._point = 1, this._context.moveTo(x, y);\n }\n};\n\nexport default function(context) {\n return new LinearClosed(context);\n}\n","function sign(x) {\n return x < 0 ? -1 : 1;\n}\n\n// Calculate the slopes of the tangents (Hermite-type interpolation) based on\n// the following paper: Steffen, M. 1990. A Simple Method for Monotonic\n// Interpolation in One Dimension. Astronomy and Astrophysics, Vol. 239, NO.\n// NOV(II), P. 443, 1990.\nfunction slope3(that, x2, y2) {\n var h0 = that._x1 - that._x0,\n h1 = x2 - that._x1,\n s0 = (that._y1 - that._y0) / (h0 || h1 < 0 && -0),\n s1 = (y2 - that._y1) / (h1 || h0 < 0 && -0),\n p = (s0 * h1 + s1 * h0) / (h0 + h1);\n return (sign(s0) + sign(s1)) * Math.min(Math.abs(s0), Math.abs(s1), 0.5 * Math.abs(p)) || 0;\n}\n\n// Calculate a one-sided slope.\nfunction slope2(that, t) {\n var h = that._x1 - that._x0;\n return h ? (3 * (that._y1 - that._y0) / h - t) / 2 : t;\n}\n\n// According to https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Representations\n// \"you can express cubic Hermite interpolation in terms of cubic Bézier curves\n// with respect to the four values p0, p0 + m0 / 3, p1 - m1 / 3, p1\".\nfunction point(that, t0, t1) {\n var x0 = that._x0,\n y0 = that._y0,\n x1 = that._x1,\n y1 = that._y1,\n dx = (x1 - x0) / 3;\n that._context.bezierCurveTo(x0 + dx, y0 + dx * t0, x1 - dx, y1 - dx * t1, x1, y1);\n}\n\nfunction MonotoneX(context) {\n this._context = context;\n}\n\nMonotoneX.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 =\n this._t0 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x1, this._y1); break;\n case 3: point(this, this._t0, slope2(this, this._t0)); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n var t1 = NaN;\n\n x = +x, y = +y;\n if (x === this._x1 && y === this._y1) return; // Ignore coincident points.\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; point(this, slope2(this, t1 = slope3(this, x, y)), t1); break;\n default: point(this, this._t0, t1 = slope3(this, x, y)); break;\n }\n\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n this._t0 = t1;\n }\n}\n\nfunction MonotoneY(context) {\n this._context = new ReflectContext(context);\n}\n\n(MonotoneY.prototype = Object.create(MonotoneX.prototype)).point = function(x, y) {\n MonotoneX.prototype.point.call(this, y, x);\n};\n\nfunction ReflectContext(context) {\n this._context = context;\n}\n\nReflectContext.prototype = {\n moveTo: function(x, y) { this._context.moveTo(y, x); },\n closePath: function() { this._context.closePath(); },\n lineTo: function(x, y) { this._context.lineTo(y, x); },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) { this._context.bezierCurveTo(y1, x1, y2, x2, y, x); }\n};\n\nexport function monotoneX(context) {\n return new MonotoneX(context);\n}\n\nexport function monotoneY(context) {\n return new MonotoneY(context);\n}\n","function Natural(context) {\n this._context = context;\n}\n\nNatural.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x = [];\n this._y = [];\n },\n lineEnd: function() {\n var x = this._x,\n y = this._y,\n n = x.length;\n\n if (n) {\n this._line ? this._context.lineTo(x[0], y[0]) : this._context.moveTo(x[0], y[0]);\n if (n === 2) {\n this._context.lineTo(x[1], y[1]);\n } else {\n var px = controlPoints(x),\n py = controlPoints(y);\n for (var i0 = 0, i1 = 1; i1 < n; ++i0, ++i1) {\n this._context.bezierCurveTo(px[0][i0], py[0][i0], px[1][i0], py[1][i0], x[i1], y[i1]);\n }\n }\n }\n\n if (this._line || (this._line !== 0 && n === 1)) this._context.closePath();\n this._line = 1 - this._line;\n this._x = this._y = null;\n },\n point: function(x, y) {\n this._x.push(+x);\n this._y.push(+y);\n }\n};\n\n// See https://www.particleincell.com/2012/bezier-splines/ for derivation.\nfunction controlPoints(x) {\n var i,\n n = x.length - 1,\n m,\n a = new Array(n),\n b = new Array(n),\n r = new Array(n);\n a[0] = 0, b[0] = 2, r[0] = x[0] + 2 * x[1];\n for (i = 1; i < n - 1; ++i) a[i] = 1, b[i] = 4, r[i] = 4 * x[i] + 2 * x[i + 1];\n a[n - 1] = 2, b[n - 1] = 7, r[n - 1] = 8 * x[n - 1] + x[n];\n for (i = 1; i < n; ++i) m = a[i] / b[i - 1], b[i] -= m, r[i] -= m * r[i - 1];\n a[n - 1] = r[n - 1] / b[n - 1];\n for (i = n - 2; i >= 0; --i) a[i] = (r[i] - a[i + 1]) / b[i];\n b[n - 1] = (x[n] + a[n - 1]) / 2;\n for (i = 0; i < n - 1; ++i) b[i] = 2 * x[i + 1] - a[i + 1];\n return [a, b];\n}\n\nexport default function(context) {\n return new Natural(context);\n}\n","function Step(context, t) {\n this._context = context;\n this._t = t;\n}\n\nStep.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x = this._y = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (0 < this._t && this._t < 1 && this._point === 2) this._context.lineTo(this._x, this._y);\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n if (this._line >= 0) this._t = 1 - this._t, this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // falls through\n default: {\n if (this._t <= 0) {\n this._context.lineTo(this._x, y);\n this._context.lineTo(x, y);\n } else {\n var x1 = this._x * (1 - this._t) + x * this._t;\n this._context.lineTo(x1, this._y);\n this._context.lineTo(x1, y);\n }\n break;\n }\n }\n this._x = x, this._y = y;\n }\n};\n\nexport default function(context) {\n return new Step(context, 0.5);\n}\n\nexport function stepBefore(context) {\n return new Step(context, 0);\n}\n\nexport function stepAfter(context) {\n return new Step(context, 1);\n}\n","var t0 = new Date,\n t1 = new Date;\n\nexport default function newInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date;\n }\n\n interval.floor = function(date) {\n return floori(date = new Date(+date)), date;\n };\n\n interval.ceil = function(date) {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = function(date) {\n var d0 = interval(date),\n d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = function(date, step) {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = function(start, stop, step) {\n var range = [], previous;\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n while (previous < start && start < stop);\n return range;\n };\n\n interval.filter = function(test) {\n return newInterval(function(date) {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, function(date, step) {\n if (date >= date) {\n if (step < 0) while (++step <= 0) {\n while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n } else while (--step >= 0) {\n while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n }\n }\n });\n };\n\n if (count) {\n interval.count = function(start, end) {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = function(step) {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? function(d) { return field(d) % step === 0; }\n : function(d) { return interval.count(0, d) % step === 0; });\n };\n }\n\n return interval;\n}\n","export const durationSecond = 1000;\nexport const durationMinute = durationSecond * 60;\nexport const durationHour = durationMinute * 60;\nexport const durationDay = durationHour * 24;\nexport const durationWeek = durationDay * 7;\nexport const durationMonth = durationDay * 30;\nexport const durationYear = durationDay * 365;\n","import interval from \"./interval.js\";\nimport {durationWeek} from \"./duration.js\";\n\nfunction utcWeekday(i) {\n return interval(function(date) {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, function(start, end) {\n return (end - start) / durationWeek;\n });\n}\n\nexport var utcSunday = utcWeekday(0);\nexport var utcMonday = utcWeekday(1);\nexport var utcTuesday = utcWeekday(2);\nexport var utcWednesday = utcWeekday(3);\nexport var utcThursday = utcWeekday(4);\nexport var utcFriday = utcWeekday(5);\nexport var utcSaturday = utcWeekday(6);\n\nexport var utcSundays = utcSunday.range;\nexport var utcMondays = utcMonday.range;\nexport var utcTuesdays = utcTuesday.range;\nexport var utcWednesdays = utcWednesday.range;\nexport var utcThursdays = utcThursday.range;\nexport var utcFridays = utcFriday.range;\nexport var utcSaturdays = utcSaturday.range;\n","import interval from \"./interval.js\";\nimport {durationDay} from \"./duration.js\";\n\nvar utcDay = interval(function(date) {\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step);\n}, function(start, end) {\n return (end - start) / durationDay;\n}, function(date) {\n return date.getUTCDate() - 1;\n});\n\nexport default utcDay;\nexport var utcDays = utcDay.range;\n","import interval from \"./interval.js\";\nimport {durationMinute, durationWeek} from \"./duration.js\";\n\nfunction weekday(i) {\n return interval(function(date) {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setDate(date.getDate() + step * 7);\n }, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport var sunday = weekday(0);\nexport var monday = weekday(1);\nexport var tuesday = weekday(2);\nexport var wednesday = weekday(3);\nexport var thursday = weekday(4);\nexport var friday = weekday(5);\nexport var saturday = weekday(6);\n\nexport var sundays = sunday.range;\nexport var mondays = monday.range;\nexport var tuesdays = tuesday.range;\nexport var wednesdays = wednesday.range;\nexport var thursdays = thursday.range;\nexport var fridays = friday.range;\nexport var saturdays = saturday.range;\n","import interval from \"./interval.js\";\nimport {durationDay, durationMinute} from \"./duration.js\";\n\nvar day = interval(\n date => date.setHours(0, 0, 0, 0),\n (date, step) => date.setDate(date.getDate() + step),\n (start, end) => (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay,\n date => date.getDate() - 1\n);\n\nexport default day;\nexport var days = day.range;\n","import interval from \"./interval.js\";\n\nvar year = interval(function(date) {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setFullYear(date.getFullYear() + step);\n}, function(start, end) {\n return end.getFullYear() - start.getFullYear();\n}, function(date) {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\nyear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport default year;\nexport var years = year.range;\n","import interval from \"./interval.js\";\n\nvar utcYear = interval(function(date) {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, function(start, end) {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, function(date) {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport default utcYear;\nexport var utcYears = utcYear.range;\n","import {\n timeDay,\n timeSunday,\n timeMonday,\n timeThursday,\n timeYear,\n utcDay,\n utcSunday,\n utcMonday,\n utcThursday,\n utcYear\n} from \"d3-time\";\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newDate(y, m, d) {\n return {y: y, m: m, d: d, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"f\": formatMicroseconds,\n \"g\": formatYearISO,\n \"G\": formatFullYearISO,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"q\": formatQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatSeconds,\n \"u\": formatWeekdayNumberMonday,\n \"U\": formatWeekNumberSunday,\n \"V\": formatWeekNumberISO,\n \"w\": formatWeekdayNumberSunday,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"f\": formatUTCMicroseconds,\n \"g\": formatUTCYearISO,\n \"G\": formatUTCFullYearISO,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"q\": formatUTCQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatUTCSeconds,\n \"u\": formatUTCWeekdayNumberMonday,\n \"U\": formatUTCWeekNumberSunday,\n \"V\": formatUTCWeekNumberISO,\n \"w\": formatUTCWeekdayNumberSunday,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"f\": parseMicroseconds,\n \"g\": parseYear,\n \"G\": parseFullYear,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"q\": parseQuarter,\n \"Q\": parseUnixTimestamp,\n \"s\": parseUnixTimestampSeconds,\n \"S\": parseSeconds,\n \"u\": parseWeekdayNumberMonday,\n \"U\": parseWeekNumberSunday,\n \"V\": parseWeekNumberISO,\n \"w\": parseWeekdayNumberSunday,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function(date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, Z) {\n return function(string) {\n var d = newDate(1900, undefined, 1),\n i = parseSpecifier(d, specifier, string += \"\", 0),\n week, day;\n if (i != string.length) return null;\n\n // If a UNIX timestamp is specified, return it.\n if (\"Q\" in d) return new Date(d.Q);\n if (\"s\" in d) return new Date(d.s * 1000 + (\"L\" in d ? d.L : 0));\n\n // If this is utcParse, never use the local timezone.\n if (Z && !(\"Z\" in d)) d.Z = 0;\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // If the month was not specified, inherit from the quarter.\n if (d.m === undefined) d.m = \"q\" in d ? d.q : 0;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"V\" in d) {\n if (d.V < 1 || d.V > 53) return null;\n if (!(\"w\" in d)) d.w = 1;\n if (\"Z\" in d) {\n week = utcDate(newDate(d.y, 0, 1)), day = week.getUTCDay();\n week = day > 4 || day === 0 ? utcMonday.ceil(week) : utcMonday(week);\n week = utcDay.offset(week, (d.V - 1) * 7);\n d.y = week.getUTCFullYear();\n d.m = week.getUTCMonth();\n d.d = week.getUTCDate() + (d.w + 6) % 7;\n } else {\n week = localDate(newDate(d.y, 0, 1)), day = week.getDay();\n week = day > 4 || day === 0 ? timeMonday.ceil(week) : timeMonday(week);\n week = timeDay.offset(week, (d.V - 1) * 7);\n d.y = week.getFullYear();\n d.m = week.getMonth();\n d.d = week.getDate() + (d.w + 6) % 7;\n }\n } else if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n day = \"Z\" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return localDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatQuarter(d) {\n return 1 + ~~(d.getMonth() / 3);\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n function formatUTCQuarter(d) {\n return 1 + ~~(d.getUTCMonth() / 3);\n }\n\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function() { return specifier; };\n return f;\n },\n parse: function(specifier) {\n var p = newParse(specifier += \"\", false);\n p.toString = function() { return specifier; };\n return p;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function() { return specifier; };\n return f;\n },\n utcParse: function(specifier) {\n var p = newParse(specifier += \"\", true);\n p.toString = function() { return specifier; };\n return p;\n }\n };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n numberRe = /^\\s*\\d+/, // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n return new Map(names.map((name, i) => [name.toLowerCase(), i]));\n}\n\nfunction parseWeekdayNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekdayNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberISO(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseQuarter(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMicroseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 6));\n return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\n\nfunction parseUnixTimestamp(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseUnixTimestampSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.s = +n[0], i + n[0].length) : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMicroseconds(d, p) {\n return formatMilliseconds(d, p) + \"000\";\n}\n\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekdayNumberMonday(d) {\n var day = d.getDay();\n return day === 0 ? 7 : day;\n}\n\nfunction formatWeekNumberSunday(d, p) {\n return pad(timeSunday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction dISO(d) {\n var day = d.getDay();\n return (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n}\n\nfunction formatWeekNumberISO(d, p) {\n d = dISO(d);\n return pad(timeThursday.count(timeYear(d), d) + (timeYear(d).getDay() === 4), p, 2);\n}\n\nfunction formatWeekdayNumberSunday(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatYearISO(d, p) {\n d = dISO(d);\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatFullYearISO(d, p) {\n var day = d.getDay();\n d = (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMicroseconds(d, p) {\n return formatUTCMilliseconds(d, p) + \"000\";\n}\n\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekdayNumberMonday(d) {\n var dow = d.getUTCDay();\n return dow === 0 ? 7 : dow;\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction UTCdISO(d) {\n var day = d.getUTCDay();\n return (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n}\n\nfunction formatUTCWeekNumberISO(d, p) {\n d = UTCdISO(d);\n return pad(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2);\n}\n\nfunction formatUTCWeekdayNumberSunday(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCYearISO(d, p) {\n d = UTCdISO(d);\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCFullYearISO(d, p) {\n var day = d.getUTCDay();\n d = (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n\nfunction formatUnixTimestamp(d) {\n return +d;\n}\n\nfunction formatUnixTimestampSeconds(d) {\n return Math.floor(+d / 1000);\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\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","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 {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","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return a * (1 - t) + b * t;\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 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 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","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 {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","import {basis} from \"./basis.js\";\n\nexport default function(values) {\n var n = values.length;\n return function(t) {\n var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n v0 = values[(i + n - 1) % n],\n v1 = values[i % n],\n v2 = values[(i + 1) % n],\n v3 = values[(i + 2) % n];\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n","import {color} from \"d3-color\";\nimport {interpolateNumber, interpolateRgb, interpolateString} from \"d3-interpolate\";\n\nexport default function(a, b) {\n var c;\n return (typeof b === \"number\" ? interpolateNumber\n : b instanceof color ? interpolateRgb\n : (c = color(b)) ? (b = c, interpolateRgb)\n : interpolateString)(a, b);\n}\n","import {interpolateTransformSvg as interpolateTransform} from \"d3-interpolate\";\nimport {namespace} from \"d3-selection\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttribute(name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrConstantNS(fullname, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttributeNS(fullname.space, fullname.local);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttribute(name);\n string0 = this.getAttribute(name);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction attrFunctionNS(fullname, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);\n string0 = this.getAttributeNS(fullname.space, fullname.local);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name), i = fullname === \"transform\" ? interpolateTransform : interpolate;\n return this.attrTween(name, typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, \"attr.\" + name, value))\n : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname)\n : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value));\n}\n","import {namespace} from \"d3-selection\";\n\nfunction attrInterpolate(name, i) {\n return function(t) {\n this.setAttribute(name, i.call(this, t));\n };\n}\n\nfunction attrInterpolateNS(fullname, i) {\n return function(t) {\n this.setAttributeNS(fullname.space, fullname.local, i.call(this, t));\n };\n}\n\nfunction attrTweenNS(fullname, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolateNS(fullname, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nfunction attrTween(name, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolate(name, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value) {\n var key = \"attr.\" + name;\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n var fullname = namespace(name);\n return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n}\n","import {get, init} from \"./schedule.js\";\n\nfunction delayFunction(id, value) {\n return function() {\n init(this, id).delay = +value.apply(this, arguments);\n };\n}\n\nfunction delayConstant(id, value) {\n return value = +value, function() {\n init(this, id).delay = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? delayFunction\n : delayConstant)(id, value))\n : get(this.node(), id).delay;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction durationFunction(id, value) {\n return function() {\n set(this, id).duration = +value.apply(this, arguments);\n };\n}\n\nfunction durationConstant(id, value) {\n return value = +value, function() {\n set(this, id).duration = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? durationFunction\n : durationConstant)(id, value))\n : get(this.node(), id).duration;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction easeConstant(id, value) {\n if (typeof value !== \"function\") throw new Error;\n return function() {\n set(this, id).ease = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each(easeConstant(id, value))\n : get(this.node(), id).ease;\n}\n","import {get, set, init} from \"./schedule.js\";\n\nfunction start(name) {\n return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n var i = t.indexOf(\".\");\n if (i >= 0) t = t.slice(0, i);\n return !t || t === \"start\";\n });\n}\n\nfunction onFunction(id, name, listener) {\n var on0, on1, sit = start(name) ? init : set;\n return function() {\n var schedule = sit(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, listener) {\n var id = this._id;\n\n return arguments.length < 2\n ? get(this.node(), id).on.on(name)\n : this.each(onFunction(id, name, listener));\n}\n","import {selection} from \"d3-selection\";\n\nvar Selection = selection.prototype.constructor;\n\nexport default function() {\n return new Selection(this._groups, this._parents);\n}\n","import {interpolateTransformCss as interpolateTransform} from \"d3-interpolate\";\nimport {style} from \"d3-selection\";\nimport {set} from \"./schedule.js\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction styleNull(name, interpolate) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n string1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, string10 = string1);\n };\n}\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = style(this, name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction styleFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n value1 = value(this),\n string1 = value1 + \"\";\n if (value1 == null) string1 = value1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction styleMaybeRemove(id, name) {\n var on0, on1, listener0, key = \"style.\" + name, event = \"end.\" + key, remove;\n return function() {\n var schedule = set(this, id),\n on = schedule.on,\n listener = schedule.value[key] == null ? remove || (remove = styleRemove(name)) : undefined;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, value, priority) {\n var i = (name += \"\") === \"transform\" ? interpolateTransform : interpolate;\n return value == null ? this\n .styleTween(name, styleNull(name, i))\n .on(\"end.style.\" + name, styleRemove(name))\n : typeof value === \"function\" ? this\n .styleTween(name, styleFunction(name, i, tweenValue(this, \"style.\" + name, value)))\n .each(styleMaybeRemove(this._id, name))\n : this\n .styleTween(name, styleConstant(name, i, value), priority)\n .on(\"end.style.\" + name, null);\n}\n","function styleInterpolate(name, i, priority) {\n return function(t) {\n this.style.setProperty(name, i.call(this, t), priority);\n };\n}\n\nfunction styleTween(name, value, priority) {\n var t, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority);\n return t;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value, priority) {\n var key = \"style.\" + (name += \"\");\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n}\n","function textInterpolate(i) {\n return function(t) {\n this.textContent = i.call(this, t);\n };\n}\n\nfunction textTween(value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && textInterpolate(i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(value) {\n var key = \"text\";\n if (arguments.length < 1) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, textTween(value));\n}\n","import {selection} from \"d3-selection\";\nimport transition_attr from \"./attr.js\";\nimport transition_attrTween from \"./attrTween.js\";\nimport transition_delay from \"./delay.js\";\nimport transition_duration from \"./duration.js\";\nimport transition_ease from \"./ease.js\";\nimport transition_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","import {selector} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n schedule(subgroup[i], name, id, i, subgroup, get(node, id));\n }\n }\n }\n\n return new Transition(subgroups, this._parents, name, id);\n}\n","import {selectorAll} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n for (var children = select.call(node, node.__data__, i, group), child, inherit = get(node, id), k = 0, l = children.length; k < l; ++k) {\n if (child = children[k]) {\n schedule(child, name, id, k, children, inherit);\n }\n }\n subgroups.push(children);\n parents.push(node);\n }\n }\n }\n\n return new Transition(subgroups, parents, name, id);\n}\n","import {matcher} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Transition(subgroups, this._parents, this._name, this._id);\n}\n","import {Transition} from \"./index.js\";\n\nexport default function(transition) {\n if (transition._id !== this._id) throw new Error;\n\n for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Transition(merges, this._parents, this._name, this._id);\n}\n","import {Transition, newId} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function() {\n var name = this._name,\n id0 = this._id,\n id1 = newId();\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n var inherit = get(node, id0);\n schedule(node, name, id1, i, group, {\n time: inherit.time + inherit.delay + inherit.duration,\n delay: 0,\n duration: inherit.duration,\n ease: inherit.ease\n });\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id1);\n}\n","import {tweenValue} from \"./tween.js\";\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var value1 = value(this);\n this.textContent = value1 == null ? \"\" : value1;\n };\n}\n\nexport default function(value) {\n return this.tween(\"text\", typeof value === \"function\"\n ? textFunction(tweenValue(this, \"text\", value))\n : textConstant(value == null ? \"\" : value + \"\"));\n}\n","function removeFunction(id) {\n return function() {\n var parent = this.parentNode;\n for (var i in this.__transition) if (+i !== id) return;\n if (parent) parent.removeChild(this);\n };\n}\n\nexport default function() {\n return this.on(\"end.remove\", removeFunction(this._id));\n}\n","import {set} from \"./schedule.js\";\n\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 {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 {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","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","function none() {}\n\nexport default function(selector) {\n return selector == null ? none : function() {\n return this.querySelector(selector);\n };\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","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 {selection} from \"d3-selection\";\nimport selection_interrupt from \"./interrupt.js\";\nimport selection_transition from \"./transition.js\";\n\nselection.prototype.interrupt = selection_interrupt;\nselection.prototype.transition = selection_transition;\n","import interrupt from \"../interrupt.js\";\n\nexport default function(name) {\n return this.each(function() {\n interrupt(this, name);\n });\n}\n","import {STARTING, ENDING, ENDED} from \"./transition/schedule.js\";\n\nexport default function(node, name) {\n var schedules = node.__transition,\n schedule,\n active,\n empty = true,\n i;\n\n if (!schedules) return;\n\n name = name == null ? null : name + \"\";\n\n for (i in schedules) {\n if ((schedule = schedules[i]).name !== name) { empty = false; continue; }\n active = schedule.state > STARTING && schedule.state < ENDING;\n schedule.state = ENDED;\n schedule.timer.stop();\n schedule.on.call(active ? \"interrupt\" : \"cancel\", node, node.__data__, schedule.index, schedule.group);\n delete schedules[i];\n }\n\n if (empty) delete node.__transition;\n}\n","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","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 {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 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\";\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","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","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} from \"./index.js\";\nimport selector from \"../selector.js\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","import {Selection} from \"./index.js\";\nimport array from \"../array.js\";\nimport selectorAll from \"../selectorAll.js\";\n\nfunction arrayAll(select) {\n return function() {\n 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","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","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","export default function() {\n var callback = arguments[0];\n arguments[0] = this;\n callback.apply(null, arguments);\n return this;\n}\n","export default function() {\n return Array.from(this);\n}\n","export default function() {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n var node = group[i];\n if (node) return node;\n }\n }\n\n return null;\n}\n","export default function() {\n let size = 0;\n for (const node of this) ++size; // eslint-disable-line no-unused-vars\n return size;\n}\n","export default function() {\n return !this.node();\n}\n","export default function(callback) {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) callback.call(node, node.__data__, i, group);\n }\n }\n\n return this;\n}\n","import 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","export default function(value) {\n return arguments.length\n ? this.property(\"__data__\", value)\n : this.node().__data__;\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","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","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 {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","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return a * (1 - t) + b * t;\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 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 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","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(\"^rgb\\\\(\" + [reI, reI, reI] + \"\\\\)$\"),\n reRgbPercent = new RegExp(\"^rgb\\\\(\" + [reP, reP, reP] + \"\\\\)$\"),\n reRgbaInteger = new RegExp(\"^rgba\\\\(\" + [reI, reI, reI, reN] + \"\\\\)$\"),\n reRgbaPercent = new RegExp(\"^rgba\\\\(\" + [reP, reP, reP, reN] + \"\\\\)$\"),\n reHslPercent = new RegExp(\"^hsl\\\\(\" + [reN, reP, reP] + \"\\\\)$\"),\n reHslaPercent = new RegExp(\"^hsla\\\\(\" + [reN, reP, reP, reN] + \"\\\\)$\");\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy: function(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable: function() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb: function() {\n return this;\n },\n displayable: function() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return \"#\" + hex(this.r) + hex(this.g) + hex(this.b);\n}\n\nfunction rgb_formatRgb() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"rgb(\" : \"rgba(\")\n + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.b) || 0))\n + (a === 1 ? \")\" : \", \" + a + \")\");\n}\n\nfunction hex(value) {\n value = Math.max(0, Math.min(255, Math.round(value) || 0));\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n displayable: function() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl: function() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"hsl(\" : \"hsla(\")\n + (this.h || 0) + \", \"\n + (this.s || 0) * 100 + \"%, \"\n + (this.l || 0) * 100 + \"%\"\n + (a === 1 ? \")\" : \", \" + a + \")\");\n }\n}));\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","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","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","import {basis} from \"./basis.js\";\n\nexport default function(values) {\n var n = values.length;\n return function(t) {\n var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n v0 = values[(i + n - 1) % n],\n v1 = values[i % n],\n v2 = values[(i + 1) % n],\n v3 = values[(i + 2) % n];\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n","import {color} from \"d3-color\";\nimport {interpolateNumber, interpolateRgb, interpolateString} from \"d3-interpolate\";\n\nexport default function(a, b) {\n var c;\n return (typeof b === \"number\" ? interpolateNumber\n : b instanceof color ? interpolateRgb\n : (c = color(b)) ? (b = c, interpolateRgb)\n : interpolateString)(a, b);\n}\n","import {interpolateTransformSvg as interpolateTransform} from \"d3-interpolate\";\nimport {namespace} from \"d3-selection\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttribute(name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrConstantNS(fullname, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttributeNS(fullname.space, fullname.local);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttribute(name);\n string0 = this.getAttribute(name);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction attrFunctionNS(fullname, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);\n string0 = this.getAttributeNS(fullname.space, fullname.local);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name), i = fullname === \"transform\" ? interpolateTransform : interpolate;\n return this.attrTween(name, typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, \"attr.\" + name, value))\n : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname)\n : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value));\n}\n","import {namespace} from \"d3-selection\";\n\nfunction attrInterpolate(name, i) {\n return function(t) {\n this.setAttribute(name, i.call(this, t));\n };\n}\n\nfunction attrInterpolateNS(fullname, i) {\n return function(t) {\n this.setAttributeNS(fullname.space, fullname.local, i.call(this, t));\n };\n}\n\nfunction attrTweenNS(fullname, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolateNS(fullname, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nfunction attrTween(name, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolate(name, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value) {\n var key = \"attr.\" + name;\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n var fullname = namespace(name);\n return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n}\n","import {get, init} from \"./schedule.js\";\n\nfunction delayFunction(id, value) {\n return function() {\n init(this, id).delay = +value.apply(this, arguments);\n };\n}\n\nfunction delayConstant(id, value) {\n return value = +value, function() {\n init(this, id).delay = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? delayFunction\n : delayConstant)(id, value))\n : get(this.node(), id).delay;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction durationFunction(id, value) {\n return function() {\n set(this, id).duration = +value.apply(this, arguments);\n };\n}\n\nfunction durationConstant(id, value) {\n return value = +value, function() {\n set(this, id).duration = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? durationFunction\n : durationConstant)(id, value))\n : get(this.node(), id).duration;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction easeConstant(id, value) {\n if (typeof value !== \"function\") throw new Error;\n return function() {\n set(this, id).ease = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each(easeConstant(id, value))\n : get(this.node(), id).ease;\n}\n","import {get, set, init} from \"./schedule.js\";\n\nfunction start(name) {\n return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n var i = t.indexOf(\".\");\n if (i >= 0) t = t.slice(0, i);\n return !t || t === \"start\";\n });\n}\n\nfunction onFunction(id, name, listener) {\n var on0, on1, sit = start(name) ? init : set;\n return function() {\n var schedule = sit(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, listener) {\n var id = this._id;\n\n return arguments.length < 2\n ? get(this.node(), id).on.on(name)\n : this.each(onFunction(id, name, listener));\n}\n","import {selection} from \"d3-selection\";\n\nvar Selection = selection.prototype.constructor;\n\nexport default function() {\n return new Selection(this._groups, this._parents);\n}\n","import {interpolateTransformCss as interpolateTransform} from \"d3-interpolate\";\nimport {style} from \"d3-selection\";\nimport {set} from \"./schedule.js\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction styleNull(name, interpolate) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n string1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, string10 = string1);\n };\n}\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = style(this, name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction styleFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n value1 = value(this),\n string1 = value1 + \"\";\n if (value1 == null) string1 = value1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction styleMaybeRemove(id, name) {\n var on0, on1, listener0, key = \"style.\" + name, event = \"end.\" + key, remove;\n return function() {\n var schedule = set(this, id),\n on = schedule.on,\n listener = schedule.value[key] == null ? remove || (remove = styleRemove(name)) : undefined;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, value, priority) {\n var i = (name += \"\") === \"transform\" ? interpolateTransform : interpolate;\n return value == null ? this\n .styleTween(name, styleNull(name, i))\n .on(\"end.style.\" + name, styleRemove(name))\n : typeof value === \"function\" ? this\n .styleTween(name, styleFunction(name, i, tweenValue(this, \"style.\" + name, value)))\n .each(styleMaybeRemove(this._id, name))\n : this\n .styleTween(name, styleConstant(name, i, value), priority)\n .on(\"end.style.\" + name, null);\n}\n","function styleInterpolate(name, i, priority) {\n return function(t) {\n this.style.setProperty(name, i.call(this, t), priority);\n };\n}\n\nfunction styleTween(name, value, priority) {\n var t, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority);\n return t;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value, priority) {\n var key = \"style.\" + (name += \"\");\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n}\n","function textInterpolate(i) {\n return function(t) {\n this.textContent = i.call(this, t);\n };\n}\n\nfunction textTween(value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && textInterpolate(i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(value) {\n var key = \"text\";\n if (arguments.length < 1) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, textTween(value));\n}\n","import {selection} from \"d3-selection\";\nimport transition_attr from \"./attr.js\";\nimport transition_attrTween from \"./attrTween.js\";\nimport transition_delay from \"./delay.js\";\nimport transition_duration from \"./duration.js\";\nimport transition_ease from \"./ease.js\";\nimport transition_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","import {selector} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n schedule(subgroup[i], name, id, i, subgroup, get(node, id));\n }\n }\n }\n\n return new Transition(subgroups, this._parents, name, id);\n}\n","import {selectorAll} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n for (var children = select.call(node, node.__data__, i, group), child, inherit = get(node, id), k = 0, l = children.length; k < l; ++k) {\n if (child = children[k]) {\n schedule(child, name, id, k, children, inherit);\n }\n }\n subgroups.push(children);\n parents.push(node);\n }\n }\n }\n\n return new Transition(subgroups, parents, name, id);\n}\n","import {matcher} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Transition(subgroups, this._parents, this._name, this._id);\n}\n","import {Transition} from \"./index.js\";\n\nexport default function(transition) {\n if (transition._id !== this._id) throw new Error;\n\n for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Transition(merges, this._parents, this._name, this._id);\n}\n","import {Transition, newId} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function() {\n var name = this._name,\n id0 = this._id,\n id1 = newId();\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n var inherit = get(node, id0);\n schedule(node, name, id1, i, group, {\n time: inherit.time + inherit.delay + inherit.duration,\n delay: 0,\n duration: inherit.duration,\n ease: inherit.ease\n });\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id1);\n}\n","import {tweenValue} from \"./tween.js\";\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var value1 = value(this);\n this.textContent = value1 == null ? \"\" : value1;\n };\n}\n\nexport default function(value) {\n return this.tween(\"text\", typeof value === \"function\"\n ? textFunction(tweenValue(this, \"text\", value))\n : textConstant(value == null ? \"\" : value + \"\"));\n}\n","function removeFunction(id) {\n return function() {\n var parent = this.parentNode;\n for (var i in this.__transition) if (+i !== id) return;\n if (parent) parent.removeChild(this);\n };\n}\n\nexport default function() {\n return this.on(\"end.remove\", removeFunction(this._id));\n}\n","import {set} from \"./schedule.js\";\n\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 {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 {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","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","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","import {selection} from \"d3-selection\";\nimport selection_interrupt from \"./interrupt.js\";\nimport selection_transition from \"./transition.js\";\n\nselection.prototype.interrupt = selection_interrupt;\nselection.prototype.transition = selection_transition;\n","import interrupt from \"../interrupt.js\";\n\nexport default function(name) {\n return this.each(function() {\n interrupt(this, name);\n });\n}\n","import {STARTING, ENDING, ENDED} from \"./transition/schedule.js\";\n\nexport default function(node, name) {\n var schedules = node.__transition,\n schedule,\n active,\n empty = true,\n i;\n\n if (!schedules) return;\n\n name = name == null ? null : name + \"\";\n\n for (i in schedules) {\n if ((schedule = schedules[i]).name !== name) { empty = false; continue; }\n active = schedule.state > STARTING && schedule.state < ENDING;\n schedule.state = ENDED;\n schedule.timer.stop();\n schedule.on.call(active ? \"interrupt\" : \"cancel\", node, node.__data__, schedule.index, schedule.group);\n delete schedules[i];\n }\n\n if (empty) delete node.__transition;\n}\n","export var MS = '-ms-'\nexport var MOZ = '-moz-'\nexport var WEBKIT = '-webkit-'\n\nexport var COMMENT = 'comm'\nexport var RULESET = 'rule'\nexport var DECLARATION = 'decl'\n\nexport var PAGE = '@page'\nexport var MEDIA = '@media'\nexport var IMPORT = '@import'\nexport var CHARSET = '@charset'\nexport var VIEWPORT = '@viewport'\nexport var SUPPORTS = '@supports'\nexport var DOCUMENT = '@document'\nexport var NAMESPACE = '@namespace'\nexport var KEYFRAMES = '@keyframes'\nexport var FONT_FACE = '@font-face'\nexport var COUNTER_STYLE = '@counter-style'\nexport var FONT_FEATURE_VALUES = '@font-feature-values'\n","/**\n * @param {number}\n * @return {number}\n */\nexport var abs = Math.abs\n\n/**\n * @param {number}\n * @return {string}\n */\nexport var from = String.fromCharCode\n\n/**\n * @param {object}\n * @return {object}\n */\nexport var assign = Object.assign\n\n/**\n * @param {string} value\n * @param {number} length\n * @return {number}\n */\nexport function hash (value, length) {\n\treturn (((((((length << 2) ^ charat(value, 0)) << 2) ^ charat(value, 1)) << 2) ^ charat(value, 2)) << 2) ^ charat(value, 3)\n}\n\n/**\n * @param {string} value\n * @return {string}\n */\nexport function trim (value) {\n\treturn value.trim()\n}\n\n/**\n * @param {string} value\n * @param {RegExp} pattern\n * @return {string?}\n */\nexport function match (value, pattern) {\n\treturn (value = pattern.exec(value)) ? value[0] : value\n}\n\n/**\n * @param {string} value\n * @param {(string|RegExp)} pattern\n * @param {string} replacement\n * @return {string}\n */\nexport function replace (value, pattern, replacement) {\n\treturn value.replace(pattern, replacement)\n}\n\n/**\n * @param {string} value\n * @param {string} search\n * @return {number}\n */\nexport function indexof (value, search) {\n\treturn value.indexOf(search)\n}\n\n/**\n * @param {string} value\n * @param {number} index\n * @return {number}\n */\nexport function charat (value, index) {\n\treturn value.charCodeAt(index) | 0\n}\n\n/**\n * @param {string} value\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function substr (value, begin, end) {\n\treturn value.slice(begin, end)\n}\n\n/**\n * @param {string} value\n * @return {number}\n */\nexport function strlen (value) {\n\treturn value.length\n}\n\n/**\n * @param {any[]} value\n * @return {number}\n */\nexport function sizeof (value) {\n\treturn value.length\n}\n\n/**\n * @param {any} value\n * @param {any[]} array\n * @return {any}\n */\nexport function append (value, array) {\n\treturn array.push(value), value\n}\n\n/**\n * @param {string[]} array\n * @param {function} callback\n * @return {string}\n */\nexport function combine (array, callback) {\n\treturn array.map(callback).join('')\n}\n","import {IMPORT, COMMENT, RULESET, DECLARATION, KEYFRAMES} from './Enum.js'\nimport {strlen, sizeof} from './Utility.js'\n\n/**\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function serialize (children, callback) {\n\tvar output = ''\n\tvar length = sizeof(children)\n\n\tfor (var i = 0; i < length; i++)\n\t\toutput += callback(children[i], i, children, callback) || ''\n\n\treturn output\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function stringify (element, index, children, callback) {\n\tswitch (element.type) {\n\t\tcase IMPORT: case DECLARATION: return element.return = element.return || element.value\n\t\tcase COMMENT: return ''\n\t\tcase KEYFRAMES: return element.return = element.value + '{' + serialize(element.children, callback) + '}'\n\t\tcase RULESET: element.value = element.props.join(',')\n\t}\n\n\treturn strlen(children = serialize(element.children, callback)) ? element.return = element.value + '{' + children + '}' : ''\n}\n","import {from, trim, charat, strlen, substr, append, assign} from './Utility.js'\n\nexport var line = 1\nexport var column = 1\nexport var length = 0\nexport var position = 0\nexport var character = 0\nexport var characters = ''\n\n/**\n * @param {string} value\n * @param {object | null} root\n * @param {object | null} parent\n * @param {string} type\n * @param {string[] | string} props\n * @param {object[] | string} children\n * @param {number} length\n */\nexport function node (value, root, parent, type, props, children, length) {\n\treturn {value: value, root: root, parent: parent, type: type, props: props, children: children, line: line, column: column, length: length, return: ''}\n}\n\n/**\n * @param {object} root\n * @param {object} props\n * @return {object}\n */\nexport function copy (root, props) {\n\treturn assign(node('', null, null, '', null, null, 0), root, {length: -root.length}, props)\n}\n\n/**\n * @return {number}\n */\nexport function char () {\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function prev () {\n\tcharacter = position > 0 ? charat(characters, --position) : 0\n\n\tif (column--, character === 10)\n\t\tcolumn = 1, line--\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function next () {\n\tcharacter = position < length ? charat(characters, position++) : 0\n\n\tif (column++, character === 10)\n\t\tcolumn = 1, line++\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function peek () {\n\treturn charat(characters, position)\n}\n\n/**\n * @return {number}\n */\nexport function caret () {\n\treturn position\n}\n\n/**\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function slice (begin, end) {\n\treturn substr(characters, begin, end)\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function token (type) {\n\tswitch (type) {\n\t\t// \\0 \\t \\n \\r \\s whitespace token\n\t\tcase 0: case 9: case 10: case 13: case 32:\n\t\t\treturn 5\n\t\t// ! + , / > @ ~ isolate token\n\t\tcase 33: case 43: case 44: case 47: case 62: case 64: case 126:\n\t\t// ; { } breakpoint token\n\t\tcase 59: case 123: case 125:\n\t\t\treturn 4\n\t\t// : accompanied token\n\t\tcase 58:\n\t\t\treturn 3\n\t\t// \" ' ( [ opening delimit token\n\t\tcase 34: case 39: case 40: case 91:\n\t\t\treturn 2\n\t\t// ) ] closing delimit token\n\t\tcase 41: case 93:\n\t\t\treturn 1\n\t}\n\n\treturn 0\n}\n\n/**\n * @param {string} value\n * @return {any[]}\n */\nexport function alloc (value) {\n\treturn line = column = 1, length = strlen(characters = value), position = 0, []\n}\n\n/**\n * @param {any} value\n * @return {any}\n */\nexport function dealloc (value) {\n\treturn characters = '', value\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function delimit (type) {\n\treturn trim(slice(position - 1, delimiter(type === 91 ? type + 2 : type === 40 ? type + 1 : type)))\n}\n\n/**\n * @param {string} value\n * @return {string[]}\n */\nexport function tokenize (value) {\n\treturn dealloc(tokenizer(alloc(value)))\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function whitespace (type) {\n\twhile (character = peek())\n\t\tif (character < 33)\n\t\t\tnext()\n\t\telse\n\t\t\tbreak\n\n\treturn token(type) > 2 || token(character) > 3 ? '' : ' '\n}\n\n/**\n * @param {string[]} children\n * @return {string[]}\n */\nexport function tokenizer (children) {\n\twhile (next())\n\t\tswitch (token(character)) {\n\t\t\tcase 0: append(identifier(position - 1), children)\n\t\t\t\tbreak\n\t\t\tcase 2: append(delimit(character), children)\n\t\t\t\tbreak\n\t\t\tdefault: append(from(character), children)\n\t\t}\n\n\treturn children\n}\n\n/**\n * @param {number} index\n * @param {number} count\n * @return {string}\n */\nexport function escaping (index, count) {\n\twhile (--count && next())\n\t\t// not 0-9 A-F a-f\n\t\tif (character < 48 || character > 102 || (character > 57 && character < 65) || (character > 70 && character < 97))\n\t\t\tbreak\n\n\treturn slice(index, caret() + (count < 6 && peek() == 32 && next() == 32))\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function delimiter (type) {\n\twhile (next())\n\t\tswitch (character) {\n\t\t\t// ] ) \" '\n\t\t\tcase type:\n\t\t\t\treturn position\n\t\t\t// \" '\n\t\t\tcase 34: case 39:\n\t\t\t\tif (type !== 34 && type !== 39)\n\t\t\t\t\tdelimiter(character)\n\t\t\t\tbreak\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (type === 41)\n\t\t\t\t\tdelimiter(type)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tnext()\n\t\t\t\tbreak\n\t\t}\n\n\treturn position\n}\n\n/**\n * @param {number} type\n * @param {number} index\n * @return {number}\n */\nexport function commenter (type, index) {\n\twhile (next())\n\t\t// //\n\t\tif (type + character === 47 + 10)\n\t\t\tbreak\n\t\t// /*\n\t\telse if (type + character === 42 + 42 && peek() === 47)\n\t\t\tbreak\n\n\treturn '/*' + slice(index, position - 1) + '*' + from(type === 47 ? type : next())\n}\n\n/**\n * @param {number} index\n * @return {string}\n */\nexport function identifier (index) {\n\twhile (!token(peek()))\n\t\tnext()\n\n\treturn slice(index, position)\n}\n","import {COMMENT, RULESET, DECLARATION} from './Enum.js'\nimport {abs, trim, from, sizeof, strlen, substr, append, replace, indexof} from './Utility.js'\nimport {node, char, prev, next, peek, caret, alloc, dealloc, delimit, whitespace, escaping, identifier, commenter} from './Tokenizer.js'\n\n/**\n * @param {string} value\n * @return {object[]}\n */\nexport function compile (value) {\n\treturn dealloc(parse('', null, null, null, [''], value = alloc(value), 0, [0], value))\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {string[]} rule\n * @param {string[]} rules\n * @param {string[]} rulesets\n * @param {number[]} pseudo\n * @param {number[]} points\n * @param {string[]} declarations\n * @return {object}\n */\nexport function parse (value, root, parent, rule, rules, rulesets, pseudo, points, declarations) {\n\tvar index = 0\n\tvar offset = 0\n\tvar length = pseudo\n\tvar atrule = 0\n\tvar property = 0\n\tvar previous = 0\n\tvar variable = 1\n\tvar scanning = 1\n\tvar ampersand = 1\n\tvar character = 0\n\tvar type = ''\n\tvar props = rules\n\tvar children = rulesets\n\tvar reference = rule\n\tvar characters = type\n\n\twhile (scanning)\n\t\tswitch (previous = character, character = next()) {\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (previous != 108 && characters.charCodeAt(length - 1) == 58) {\n\t\t\t\t\tif (indexof(characters += replace(delimit(character), '&', '&\\f'), '&\\f') != -1)\n\t\t\t\t\t\tampersand = -1\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t// \" ' [\n\t\t\tcase 34: case 39: case 91:\n\t\t\t\tcharacters += delimit(character)\n\t\t\t\tbreak\n\t\t\t// \\t \\n \\r \\s\n\t\t\tcase 9: case 10: case 13: case 32:\n\t\t\t\tcharacters += whitespace(previous)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tcharacters += escaping(caret() - 1, 7)\n\t\t\t\tcontinue\n\t\t\t// /\n\t\t\tcase 47:\n\t\t\t\tswitch (peek()) {\n\t\t\t\t\tcase 42: case 47:\n\t\t\t\t\t\tappend(comment(commenter(next(), caret()), root, parent), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tcharacters += '/'\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t// {\n\t\t\tcase 123 * variable:\n\t\t\t\tpoints[index++] = strlen(characters) * ampersand\n\t\t\t// } ; \\0\n\t\t\tcase 125 * variable: case 59: case 0:\n\t\t\t\tswitch (character) {\n\t\t\t\t\t// \\0 }\n\t\t\t\t\tcase 0: case 125: scanning = 0\n\t\t\t\t\t// ;\n\t\t\t\t\tcase 59 + offset:\n\t\t\t\t\t\tif (property > 0 && (strlen(characters) - length))\n\t\t\t\t\t\t\tappend(property > 32 ? declaration(characters + ';', rule, parent, length - 1) : declaration(replace(characters, ' ', '') + ';', rule, parent, length - 2), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @ ;\n\t\t\t\t\tcase 59: characters += ';'\n\t\t\t\t\t// { rule/at-rule\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tappend(reference = ruleset(characters, root, parent, index, offset, rules, points, type, props = [], children = [], length), rulesets)\n\n\t\t\t\t\t\tif (character === 123)\n\t\t\t\t\t\t\tif (offset === 0)\n\t\t\t\t\t\t\t\tparse(characters, root, reference, reference, props, rulesets, length, points, children)\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\tswitch (atrule) {\n\t\t\t\t\t\t\t\t\t// d m s\n\t\t\t\t\t\t\t\t\tcase 100: case 109: case 115:\n\t\t\t\t\t\t\t\t\t\tparse(value, reference, reference, rule && append(ruleset(value, reference, reference, 0, 0, rules, points, type, rules, props = [], length), children), rules, children, length, points, rule ? props : children)\n\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\tparse(characters, reference, reference, reference, [''], children, 0, points, children)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tindex = offset = property = 0, variable = ampersand = 1, type = characters = '', length = pseudo\n\t\t\t\tbreak\n\t\t\t// :\n\t\t\tcase 58:\n\t\t\t\tlength = 1 + strlen(characters), property = previous\n\t\t\tdefault:\n\t\t\t\tif (variable < 1)\n\t\t\t\t\tif (character == 123)\n\t\t\t\t\t\t--variable\n\t\t\t\t\telse if (character == 125 && variable++ == 0 && prev() == 125)\n\t\t\t\t\t\tcontinue\n\n\t\t\t\tswitch (characters += from(character), character * variable) {\n\t\t\t\t\t// &\n\t\t\t\t\tcase 38:\n\t\t\t\t\t\tampersand = offset > 0 ? 1 : (characters += '\\f', -1)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// ,\n\t\t\t\t\tcase 44:\n\t\t\t\t\t\tpoints[index++] = (strlen(characters) - 1) * ampersand, ampersand = 1\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @\n\t\t\t\t\tcase 64:\n\t\t\t\t\t\t// -\n\t\t\t\t\t\tif (peek() === 45)\n\t\t\t\t\t\t\tcharacters += delimit(next())\n\n\t\t\t\t\t\tatrule = peek(), offset = length = strlen(type = characters += identifier(caret())), character++\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// -\n\t\t\t\t\tcase 45:\n\t\t\t\t\t\tif (previous === 45 && strlen(characters) == 2)\n\t\t\t\t\t\t\tvariable = 0\n\t\t\t\t}\n\t\t}\n\n\treturn rulesets\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} index\n * @param {number} offset\n * @param {string[]} rules\n * @param {number[]} points\n * @param {string} type\n * @param {string[]} props\n * @param {string[]} children\n * @param {number} length\n * @return {object}\n */\nexport function ruleset (value, root, parent, index, offset, rules, points, type, props, children, length) {\n\tvar post = offset - 1\n\tvar rule = offset === 0 ? rules : ['']\n\tvar size = sizeof(rule)\n\n\tfor (var i = 0, j = 0, k = 0; i < index; ++i)\n\t\tfor (var x = 0, y = substr(value, post + 1, post = abs(j = points[i])), z = value; x < size; ++x)\n\t\t\tif (z = trim(j > 0 ? rule[x] + ' ' + y : replace(y, /&\\f/g, rule[x])))\n\t\t\t\tprops[k++] = z\n\n\treturn node(value, root, parent, offset === 0 ? RULESET : type, props, children, length)\n}\n\n/**\n * @param {number} value\n * @param {object} root\n * @param {object?} parent\n * @return {object}\n */\nexport function comment (value, root, parent) {\n\treturn node(value, root, parent, COMMENT, from(char()), substr(value, 2, -2), 0)\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} length\n * @return {object}\n */\nexport function declaration (value, root, parent, length) {\n\treturn node(value, root, parent, DECLARATION, substr(value, 0, length), substr(value, length + 1, -1), length)\n}\n","import DOMPurify from 'dompurify';\n\n/**\n * Gets the number of lines in a string\n *\n * @param {string | undefined} s The string to check the lines for\n * @returns {number} The number of lines in that string\n */\nexport const getRows = (s) => {\n if (!s) return 1;\n let str = breakToPlaceholder(s);\n str = str.replace(/\\\\n/g, '#br#');\n return str.split('#br#');\n};\n\nexport const removeEscapes = (text) => {\n let newStr = text.replace(/\\\\u[\\dA-F]{4}/gi, function (match) {\n return String.fromCharCode(parseInt(match.replace(/\\\\u/g, ''), 16));\n });\n\n newStr = newStr.replace(/\\\\x([0-9a-f]{2})/gi, (_, c) => String.fromCharCode(parseInt(c, 16)));\n newStr = newStr.replace(/\\\\[\\d\\d\\d]{3}/gi, function (match) {\n return String.fromCharCode(parseInt(match.replace(/\\\\/g, ''), 8));\n });\n newStr = newStr.replace(/\\\\[\\d\\d\\d]{2}/gi, function (match) {\n return String.fromCharCode(parseInt(match.replace(/\\\\/g, ''), 8));\n });\n\n return newStr;\n};\n\n/**\n * Removes script tags from a text\n *\n * @param {string} txt The text to sanitize\n * @returns {string} The safer text\n */\nexport const removeScript = (txt) => {\n var rs = '';\n var idx = 0;\n\n while (idx >= 0) {\n idx = txt.indexOf('= 0) {\n rs += txt.substr(0, idx);\n txt = txt.substr(idx + 1);\n\n idx = txt.indexOf('');\n if (idx >= 0) {\n idx += 9;\n txt = txt.substr(idx);\n }\n } else {\n rs += txt;\n idx = -1;\n break;\n }\n }\n let decodedText = removeEscapes(rs);\n decodedText = decodedText.replace(/script>/gi, '#');\n decodedText = decodedText.replace(/javascript:/gi, '#');\n decodedText = decodedText.replace(/javascript&colon/gi, '#');\n decodedText = decodedText.replace(/onerror=/gi, 'onerror:');\n decodedText = decodedText.replace(/`;\n } else {\n if (cnf.securityLevel !== 'loose') {\n svgCode = DOMPurify.sanitize(svgCode, {\n ADD_TAGS: ['foreignobject'],\n ADD_ATTR: ['dominant-baseline'],\n });\n }\n }\n\n if (typeof cb !== 'undefined') {\n switch (graphType) {\n case 'flowchart':\n case 'flowchart-v2':\n cb(svgCode, flowDb.bindFunctions);\n break;\n case 'gantt':\n cb(svgCode, ganttDb.bindFunctions);\n break;\n case 'class':\n case 'classDiagram':\n cb(svgCode, classDb.bindFunctions);\n break;\n default:\n cb(svgCode);\n }\n } else {\n log.debug('CB = undefined!');\n }\n attachFunctions();\n\n const tmpElementSelector = cnf.securityLevel === 'sandbox' ? '#i' + id : '#d' + id;\n const node = select(tmpElementSelector).node();\n if (node !== null && typeof node.remove === 'function') {\n select(tmpElementSelector).node().remove();\n }\n\n return svgCode;\n};\n\nlet currentDirective = {};\n\nconst parseDirective = function (p, statement, context, type) {\n try {\n if (statement !== undefined) {\n statement = statement.trim();\n switch (context) {\n case 'open_directive':\n currentDirective = {};\n break;\n case 'type_directive':\n currentDirective.type = statement.toLowerCase();\n break;\n case 'arg_directive':\n currentDirective.args = JSON.parse(statement);\n break;\n case 'close_directive':\n handleDirective(p, currentDirective, type);\n currentDirective = null;\n break;\n }\n }\n } catch (error) {\n log.error(\n `Error while rendering sequenceDiagram directive: ${statement} jison context: ${context}`\n );\n log.error(error.message);\n }\n};\n\nconst handleDirective = function (p, directive, type) {\n log.debug(`Directive type=${directive.type} with args:`, directive.args);\n switch (directive.type) {\n case 'init':\n case 'initialize': {\n ['config'].forEach((prop) => {\n if (typeof directive.args[prop] !== 'undefined') {\n if (type === 'flowchart-v2') {\n type = 'flowchart';\n }\n directive.args[type] = directive.args[prop];\n delete directive.args[prop];\n }\n });\n log.debug('sanitize in handleDirective', directive.args);\n directiveSanitizer(directive.args);\n log.debug('sanitize in handleDirective (done)', directive.args);\n reinitialize(directive.args);\n configApi.addDirective(directive.args);\n break;\n }\n case 'wrap':\n case 'nowrap':\n if (p && p['setWrap']) {\n p.setWrap(directive.type === 'wrap');\n }\n break;\n case 'themeCss':\n log.warn('themeCss encountered');\n break;\n default:\n log.warn(\n `Unhandled directive: source: '%%{${directive.type}: ${JSON.stringify(\n directive.args ? directive.args : {}\n )}}%%`,\n directive\n );\n break;\n }\n};\n\n/** @param {any} conf */\nfunction updateRendererConfigs(conf) {\n // Todo remove, all diagrams should get config on demoand from the config object, no need for this\n\n // gitGraphRenderer.setConf(conf.git); // Todo Remove all of these\n flowRenderer.setConf(conf.flowchart);\n flowRendererV2.setConf(conf.flowchart);\n if (typeof conf['sequenceDiagram'] !== 'undefined') {\n sequenceRenderer.setConf(assignWithDepth(conf.sequence, conf['sequenceDiagram']));\n }\n sequenceRenderer.setConf(conf.sequence);\n ganttRenderer.setConf(conf.gantt);\n classRenderer.setConf(conf.class);\n stateRenderer.setConf(conf.state);\n stateRendererV2.setConf(conf.state);\n infoRenderer.setConf(conf.class);\n // pieRenderer.setConf(conf.class);\n erRenderer.setConf(conf.er);\n journeyRenderer.setConf(conf.journey);\n requirementRenderer.setConf(conf.requirement);\n errorRenderer.setConf(conf.class);\n}\n\n/** To be removed */\nfunction reinitialize() {\n // `mermaidAPI.reinitialize: v${pkg.version}`,\n // JSON.stringify(options),\n // options.themeVariables.primaryColor;\n // // if (options.theme && theme[options.theme]) {\n // // options.themeVariables = theme[options.theme].getThemeVariables(options.themeVariables);\n // // }\n // // Set default options\n // const config =\n // typeof options === 'object' ? configApi.setConfig(options) : configApi.getSiteConfig();\n // updateRendererConfigs(config);\n // setLogLevel(config.logLevel);\n // log.debug('mermaidAPI.reinitialize: ', config);\n}\n\n/** @param {any} options */\nfunction initialize(options) {\n // console.warn(`mermaidAPI.initialize: v${pkg.version} `, options);\n\n // Handle legacy location of font-family configuration\n if (options && options.fontFamily) {\n if (!options.themeVariables) {\n options.themeVariables = { fontFamily: options.fontFamily };\n } else {\n if (!options.themeVariables.fontFamily) {\n options.themeVariables = { fontFamily: options.fontFamily };\n }\n }\n }\n // Set default options\n configApi.saveConfigFromInitilize(options);\n\n if (options && options.theme && theme[options.theme]) {\n // Todo merge with user options\n options.themeVariables = theme[options.theme].getThemeVariables(options.themeVariables);\n } else {\n if (options) options.themeVariables = theme.default.getThemeVariables(options.themeVariables);\n }\n\n const config =\n typeof options === 'object' ? configApi.setSiteConfig(options) : configApi.getSiteConfig();\n\n updateRendererConfigs(config);\n setLogLevel(config.logLevel);\n // log.debug('mermaidAPI.initialize: ', config);\n}\n\nconst mermaidAPI = Object.freeze({\n render,\n parse,\n parseDirective,\n initialize,\n reinitialize,\n getConfig: configApi.getConfig,\n setConfig: configApi.setConfig,\n getSiteConfig: configApi.getSiteConfig,\n updateSiteConfig: configApi.updateSiteConfig,\n reset: () => {\n // console.warn('reset');\n configApi.reset();\n // const siteConfig = configApi.getSiteConfig();\n // updateRendererConfigs(siteConfig);\n },\n globalReset: () => {\n configApi.reset(configApi.defaultConfig);\n updateRendererConfigs(configApi.getConfig());\n },\n defaultConfig: configApi.defaultConfig,\n});\n\nsetLogLevel(configApi.getConfig().logLevel);\nconfigApi.reset(configApi.getConfig());\n\nexport default mermaidAPI;\n/**\n * ## mermaidAPI configuration defaults\n *\n * ```html\n * \n * ```\n */\n","/**\n * Web page integration module for the mermaid framework. It uses the mermaidAPI for mermaid\n * functionality and to render the diagrams to svg code.\n */\nimport { log } from './logger';\nimport mermaidAPI from './mermaidAPI';\nimport utils from './utils';\n\n/**\n * ## init\n *\n * Function that goes through the document to find the chart definitions in there and render them.\n *\n * The function tags the processed attributes with the attribute data-processed and ignores found\n * elements with the attribute already set. This way the init function can be triggered several times.\n *\n * Optionally, `init` can accept in the second argument one of the following:\n *\n * - A DOM Node\n * - An array of DOM nodes (as would come from a jQuery selector)\n * - A W3C selector, a la `.mermaid`\n *\n * ```mermaid\n * graph LR;\n * a(Find elements)-->b{Processed}\n * b-->|Yes|c(Leave element)\n * b-->|No |d(Transform)\n * ```\n *\n * Renders the mermaid diagrams\n */\nconst init = function () {\n const conf = mermaidAPI.getConfig();\n // console.log('Starting rendering diagrams (init) - mermaid.init', conf);\n let nodes;\n if (arguments.length >= 2) {\n /*! sequence config was passed as #1 */\n if (typeof arguments[0] !== 'undefined') {\n mermaid.sequenceConfig = arguments[0];\n }\n\n nodes = arguments[1];\n } else {\n nodes = arguments[0];\n }\n\n // if last argument is a function this is the callback function\n let callback;\n if (typeof arguments[arguments.length - 1] === 'function') {\n callback = arguments[arguments.length - 1];\n log.debug('Callback function found');\n } else {\n if (typeof conf.mermaid !== 'undefined') {\n if (typeof conf.mermaid.callback === 'function') {\n callback = conf.mermaid.callback;\n log.debug('Callback function found');\n } else {\n log.debug('No Callback function found');\n }\n }\n }\n nodes =\n nodes === undefined\n ? document.querySelectorAll('.mermaid')\n : typeof nodes === 'string'\n ? document.querySelectorAll(nodes)\n : nodes instanceof window.Node\n ? [nodes]\n : nodes; // Last case - sequence config was passed pick next\n\n log.debug('Start On Load before: ' + mermaid.startOnLoad);\n if (typeof mermaid.startOnLoad !== 'undefined') {\n log.debug('Start On Load inner: ' + mermaid.startOnLoad);\n mermaidAPI.updateSiteConfig({ startOnLoad: mermaid.startOnLoad });\n }\n\n if (typeof mermaid.ganttConfig !== 'undefined') {\n mermaidAPI.updateSiteConfig({ gantt: mermaid.ganttConfig });\n }\n\n const idGeneratior = new utils.initIdGeneratior(conf.deterministicIds, conf.deterministicIDSeed);\n\n let txt;\n\n for (let i = 0; i < nodes.length; i++) {\n // element is the current div with mermaid class\n const element = nodes[i];\n\n /*! Check if previously processed */\n if (!element.getAttribute('data-processed')) {\n element.setAttribute('data-processed', true);\n } else {\n continue;\n }\n\n const id = `mermaid-${idGeneratior.next()}`;\n\n // Fetch the graph definition including tags\n txt = element.innerHTML;\n\n // transforms the html to pure text\n txt = utils\n .entityDecode(txt)\n .trim()\n .replace(//gi, '
');\n\n const init = utils.detectInit(txt);\n if (init) {\n log.debug('Detected early reinit: ', init);\n }\n\n try {\n mermaidAPI.render(\n id,\n txt,\n (svgCode, bindFunctions) => {\n element.innerHTML = svgCode;\n if (typeof callback !== 'undefined') {\n callback(id);\n }\n if (bindFunctions) bindFunctions(element);\n },\n element\n );\n } catch (e) {\n log.warn('Syntax Error rendering');\n log.warn(e);\n if (this.parseError) {\n this.parseError(e);\n }\n }\n }\n};\n\nconst initialize = function (config) {\n // mermaidAPI.reset();\n if (typeof config.mermaid !== 'undefined') {\n if (typeof config.mermaid.startOnLoad !== 'undefined') {\n mermaid.startOnLoad = config.mermaid.startOnLoad;\n }\n if (typeof config.mermaid.htmlLabels !== 'undefined') {\n mermaid.htmlLabels =\n config.mermaid.htmlLabels === 'false' || config.mermaid.htmlLabels === false ? false : true;\n }\n }\n mermaidAPI.initialize(config);\n // mermaidAPI.reset();\n};\n\n/**\n * ##contentLoaded Callback function that is called when page is loaded. This functions fetches\n * configuration for mermaid rendering and calls init for rendering the mermaid diagrams on the page.\n */\nconst contentLoaded = function () {\n let config;\n\n if (mermaid.startOnLoad) {\n // No config found, do check API config\n config = mermaidAPI.getConfig();\n if (config.startOnLoad) {\n mermaid.init();\n }\n } else {\n if (typeof mermaid.startOnLoad === 'undefined') {\n log.debug('In start, no config');\n config = mermaidAPI.getConfig();\n if (config.startOnLoad) {\n mermaid.init();\n }\n }\n }\n};\n\nif (typeof document !== 'undefined') {\n /*!\n * Wait for document loaded before starting the execution\n */\n window.addEventListener(\n 'load',\n function () {\n contentLoaded();\n },\n false\n );\n}\n\nconst mermaid = {\n startOnLoad: true,\n htmlLabels: true,\n\n mermaidAPI,\n parse: mermaidAPI.parse,\n render: mermaidAPI.render,\n\n init,\n initialize,\n\n contentLoaded,\n};\n\nexport default mermaid;\n","/**\n * @license\n * Copyright (c) 2012-2013 Chris Pettitt\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\nmodule.exports = {\n graphlib: require(\"./lib/graphlib\"),\n dagre: require(\"./lib/dagre\"),\n intersect: require(\"./lib/intersect\"),\n render: require(\"./lib/render\"),\n util: require(\"./lib/util\"),\n version: require(\"./lib/version\")\n};\n","var util = require(\"./util\");\n\nmodule.exports = {\n \"default\": normal,\n \"normal\": normal,\n \"vee\": vee,\n \"undirected\": undirected\n};\n\nfunction normal(parent, id, edge, type) {\n var marker = parent.append(\"marker\")\n .attr(\"id\", id)\n .attr(\"viewBox\", \"0 0 10 10\")\n .attr(\"refX\", 9)\n .attr(\"refY\", 5)\n .attr(\"markerUnits\", \"strokeWidth\")\n .attr(\"markerWidth\", 8)\n .attr(\"markerHeight\", 6)\n .attr(\"orient\", \"auto\");\n\n var path = marker.append(\"path\")\n .attr(\"d\", \"M 0 0 L 10 5 L 0 10 z\")\n .style(\"stroke-width\", 1)\n .style(\"stroke-dasharray\", \"1,0\");\n util.applyStyle(path, edge[type + \"Style\"]);\n if (edge[type + \"Class\"]) {\n path.attr(\"class\", edge[type + \"Class\"]);\n }\n}\n\nfunction vee(parent, id, edge, type) {\n var marker = parent.append(\"marker\")\n .attr(\"id\", id)\n .attr(\"viewBox\", \"0 0 10 10\")\n .attr(\"refX\", 9)\n .attr(\"refY\", 5)\n .attr(\"markerUnits\", \"strokeWidth\")\n .attr(\"markerWidth\", 8)\n .attr(\"markerHeight\", 6)\n .attr(\"orient\", \"auto\");\n\n var path = marker.append(\"path\")\n .attr(\"d\", \"M 0 0 L 10 5 L 0 10 L 4 5 z\")\n .style(\"stroke-width\", 1)\n .style(\"stroke-dasharray\", \"1,0\");\n util.applyStyle(path, edge[type + \"Style\"]);\n if (edge[type + \"Class\"]) {\n path.attr(\"class\", edge[type + \"Class\"]);\n }\n}\n\nfunction undirected(parent, id, edge, type) {\n var marker = parent.append(\"marker\")\n .attr(\"id\", id)\n .attr(\"viewBox\", \"0 0 10 10\")\n .attr(\"refX\", 9)\n .attr(\"refY\", 5)\n .attr(\"markerUnits\", \"strokeWidth\")\n .attr(\"markerWidth\", 8)\n .attr(\"markerHeight\", 6)\n .attr(\"orient\", \"auto\");\n\n var path = marker.append(\"path\")\n .attr(\"d\", \"M 0 5 L 10 5\")\n .style(\"stroke-width\", 1)\n .style(\"stroke-dasharray\", \"1,0\");\n util.applyStyle(path, edge[type + \"Style\"]);\n if (edge[type + \"Class\"]) {\n path.attr(\"class\", edge[type + \"Class\"]);\n }\n}\n","var util = require(\"./util\");\nvar d3 = require(\"./d3\");\nvar addLabel = require(\"./label/add-label\");\n\nmodule.exports = createClusters;\n\nfunction createClusters(selection, g) {\n var clusters = g.nodes().filter(function(v) { return util.isSubgraph(g, v); });\n var svgClusters = selection.selectAll(\"g.cluster\")\n .data(clusters, function(v) { return v; });\n\n svgClusters.selectAll(\"*\").remove();\n svgClusters.enter().append(\"g\")\n .attr(\"class\", \"cluster\")\n .attr(\"id\",function(v){\n var node = g.node(v);\n return node.id;\n })\n .style(\"opacity\", 0);\n \n svgClusters = selection.selectAll(\"g.cluster\");\n\n util.applyTransition(svgClusters, g)\n .style(\"opacity\", 1);\n\n svgClusters.each(function(v) {\n var node = g.node(v);\n var thisGroup = d3.select(this);\n d3.select(this).append(\"rect\");\n var labelGroup = thisGroup.append(\"g\").attr(\"class\", \"label\");\n addLabel(labelGroup, node, node.clusterLabelPos);\n });\n\n svgClusters.selectAll(\"rect\").each(function(c) {\n var node = g.node(c);\n var domCluster = d3.select(this);\n util.applyStyle(domCluster, node.style);\n });\n\n var exitSelection;\n\n if (svgClusters.exit) {\n exitSelection = svgClusters.exit();\n } else {\n exitSelection = svgClusters.selectAll(null); // empty selection\n }\n\n util.applyTransition(exitSelection, g)\n .style(\"opacity\", 0)\n .remove();\n\n return svgClusters;\n}\n","\"use strict\";\n\nvar _ = require(\"./lodash\");\nvar addLabel = require(\"./label/add-label\");\nvar util = require(\"./util\");\nvar d3 = require(\"./d3\");\n\nmodule.exports = createEdgeLabels;\n\nfunction createEdgeLabels(selection, g) {\n var svgEdgeLabels = selection.selectAll(\"g.edgeLabel\")\n .data(g.edges(), function(e) { return util.edgeToId(e); })\n .classed(\"update\", true);\n\n svgEdgeLabels.exit().remove();\n svgEdgeLabels.enter().append(\"g\")\n .classed(\"edgeLabel\", true)\n .style(\"opacity\", 0);\n\n svgEdgeLabels = selection.selectAll(\"g.edgeLabel\");\n\n svgEdgeLabels.each(function(e) {\n var root = d3.select(this);\n root.select(\".label\").remove();\n var edge = g.edge(e);\n var label = addLabel(root, g.edge(e), 0, 0).classed(\"label\", true);\n var bbox = label.node().getBBox();\n\n if (edge.labelId) { label.attr(\"id\", edge.labelId); }\n if (!_.has(edge, \"width\")) { edge.width = bbox.width; }\n if (!_.has(edge, \"height\")) { edge.height = bbox.height; }\n });\n\n var exitSelection;\n\n if (svgEdgeLabels.exit) {\n exitSelection = svgEdgeLabels.exit();\n } else {\n exitSelection = svgEdgeLabels.selectAll(null); // empty selection\n }\n\n util.applyTransition(exitSelection, g)\n .style(\"opacity\", 0)\n .remove();\n\n return svgEdgeLabels;\n}\n","\"use strict\";\n\nvar _ = require(\"./lodash\");\nvar intersectNode = require(\"./intersect/intersect-node\");\nvar util = require(\"./util\");\nvar d3 = require(\"./d3\");\nmodule.exports = createEdgePaths;\n\nfunction createEdgePaths(selection, g, arrows) {\n var previousPaths = selection.selectAll(\"g.edgePath\")\n .data(g.edges(), function(e) { return util.edgeToId(e); })\n .classed(\"update\", true);\n\n var newPaths = enter(previousPaths, g);\n exit(previousPaths, g);\n\n var svgPaths = previousPaths.merge !== undefined ? previousPaths.merge(newPaths) : previousPaths;\n util.applyTransition(svgPaths, g)\n .style(\"opacity\", 1);\n\n // Save DOM element in the path group, and set ID and class\n svgPaths.each(function(e) {\n var domEdge = d3.select(this);\n var edge = g.edge(e);\n edge.elem = this;\n\n if (edge.id) {\n domEdge.attr(\"id\", edge.id);\n }\n\n util.applyClass(domEdge, edge[\"class\"],\n (domEdge.classed(\"update\") ? \"update \" : \"\") + \"edgePath\");\n });\n\n svgPaths.selectAll(\"path.path\")\n .each(function(e) {\n var edge = g.edge(e);\n edge.arrowheadId = _.uniqueId(\"arrowhead\");\n\n var domEdge = d3.select(this)\n .attr(\"marker-end\", function() {\n return \"url(\" + makeFragmentRef(location.href, edge.arrowheadId) + \")\";\n })\n .style(\"fill\", \"none\");\n\n util.applyTransition(domEdge, g)\n .attr(\"d\", function(e) { return calcPoints(g, e); });\n\n util.applyStyle(domEdge, edge.style);\n });\n\n svgPaths.selectAll(\"defs *\").remove();\n svgPaths.selectAll(\"defs\")\n .each(function(e) {\n var edge = g.edge(e);\n var arrowhead = arrows[edge.arrowhead];\n arrowhead(d3.select(this), edge.arrowheadId, edge, \"arrowhead\");\n });\n\n return svgPaths;\n}\n\nfunction makeFragmentRef(url, fragmentId) {\n var baseUrl = url.split(\"#\")[0];\n return baseUrl + \"#\" + fragmentId;\n}\n\nfunction calcPoints(g, e) {\n var edge = g.edge(e);\n var tail = g.node(e.v);\n var head = g.node(e.w);\n var points = edge.points.slice(1, edge.points.length - 1);\n points.unshift(intersectNode(tail, points[0]));\n points.push(intersectNode(head, points[points.length - 1]));\n\n return createLine(edge, points);\n}\n\nfunction createLine(edge, points) {\n var line = (d3.line || d3.svg.line)()\n .x(function(d) { return d.x; })\n .y(function(d) { return d.y; });\n \n (line.curve || line.interpolate)(edge.curve);\n\n return line(points);\n}\n\nfunction getCoords(elem) {\n var bbox = elem.getBBox();\n var matrix = elem.ownerSVGElement.getScreenCTM()\n .inverse()\n .multiply(elem.getScreenCTM())\n .translate(bbox.width / 2, bbox.height / 2);\n return { x: matrix.e, y: matrix.f };\n}\n\nfunction enter(svgPaths, g) {\n var svgPathsEnter = svgPaths.enter().append(\"g\")\n .attr(\"class\", \"edgePath\")\n .style(\"opacity\", 0);\n svgPathsEnter.append(\"path\")\n .attr(\"class\", \"path\")\n .attr(\"d\", function(e) {\n var edge = g.edge(e);\n var sourceElem = g.node(e.v).elem;\n var points = _.range(edge.points.length).map(function() { return getCoords(sourceElem); });\n return createLine(edge, points);\n });\n svgPathsEnter.append(\"defs\");\n return svgPathsEnter;\n}\n\nfunction exit(svgPaths, g) {\n var svgPathExit = svgPaths.exit();\n util.applyTransition(svgPathExit, g)\n .style(\"opacity\", 0)\n .remove();\n}\n","\"use strict\";\n\nvar _ = require(\"./lodash\");\nvar addLabel = require(\"./label/add-label\");\nvar util = require(\"./util\");\nvar d3 = require(\"./d3\");\n\nmodule.exports = createNodes;\n\nfunction createNodes(selection, g, shapes) {\n var simpleNodes = g.nodes().filter(function(v) { return !util.isSubgraph(g, v); });\n var svgNodes = selection.selectAll(\"g.node\")\n .data(simpleNodes, function(v) { return v; })\n .classed(\"update\", true);\n\n svgNodes.exit().remove();\n\n svgNodes.enter().append(\"g\")\n .attr(\"class\", \"node\")\n .style(\"opacity\", 0);\n\n svgNodes = selection.selectAll(\"g.node\"); \n\n svgNodes.each(function(v) {\n var node = g.node(v);\n var thisGroup = d3.select(this);\n util.applyClass(thisGroup, node[\"class\"],\n (thisGroup.classed(\"update\") ? \"update \" : \"\") + \"node\");\n\n thisGroup.select(\"g.label\").remove();\n var labelGroup = thisGroup.append(\"g\").attr(\"class\", \"label\");\n var labelDom = addLabel(labelGroup, node);\n var shape = shapes[node.shape];\n var bbox = _.pick(labelDom.node().getBBox(), \"width\", \"height\");\n\n node.elem = this;\n\n if (node.id) { thisGroup.attr(\"id\", node.id); }\n if (node.labelId) { labelGroup.attr(\"id\", node.labelId); }\n\n if (_.has(node, \"width\")) { bbox.width = node.width; }\n if (_.has(node, \"height\")) { bbox.height = node.height; }\n\n bbox.width += node.paddingLeft + node.paddingRight;\n bbox.height += node.paddingTop + node.paddingBottom;\n labelGroup.attr(\"transform\", \"translate(\" +\n ((node.paddingLeft - node.paddingRight) / 2) + \",\" +\n ((node.paddingTop - node.paddingBottom) / 2) + \")\");\n\n var root = d3.select(this);\n root.select(\".label-container\").remove();\n var shapeSvg = shape(root, bbox, node).classed(\"label-container\", true);\n util.applyStyle(shapeSvg, node.style);\n\n var shapeBBox = shapeSvg.node().getBBox();\n node.width = shapeBBox.width;\n node.height = shapeBBox.height;\n });\n\n var exitSelection;\n\n if (svgNodes.exit) {\n exitSelection = svgNodes.exit();\n } else {\n exitSelection = svgNodes.selectAll(null); // empty selection\n }\n\n util.applyTransition(exitSelection, g)\n .style(\"opacity\", 0)\n .remove();\n\n return svgNodes;\n}\n","// Stub to get D3 either via NPM or from the global object\nvar d3;\n\nif (!d3) {\n if (typeof require === \"function\") {\n try {\n d3 = require(\"d3\");\n }\n catch (e) {\n // continue regardless of error\n }\n }\n}\n\nif (!d3) {\n d3 = window.d3;\n}\n\nmodule.exports = d3;\n","/* global window */\n\nvar dagre;\n\nif (typeof require === \"function\") {\n try {\n dagre = require(\"dagre\");\n } catch (e) {\n // continue regardless of error\n }\n}\n\nif (!dagre) {\n dagre = window.dagre;\n}\n\nmodule.exports = dagre;\n","/* global window */\n\nvar graphlib;\n\nif (typeof require === \"function\") {\n try {\n graphlib = require(\"graphlib\");\n }\n catch (e) {\n // continue regardless of error\n }\n}\n\nif (!graphlib) {\n graphlib = window.graphlib;\n}\n\nmodule.exports = graphlib;\n","module.exports = {\n node: require(\"./intersect-node\"),\n circle: require(\"./intersect-circle\"),\n ellipse: require(\"./intersect-ellipse\"),\n polygon: require(\"./intersect-polygon\"),\n rect: require(\"./intersect-rect\")\n};\n","var intersectEllipse = require(\"./intersect-ellipse\");\n\nmodule.exports = intersectCircle;\n\nfunction intersectCircle(node, rx, point) {\n return intersectEllipse(node, rx, rx, point);\n}\n","module.exports = intersectEllipse;\n\nfunction intersectEllipse(node, rx, ry, point) {\n // Formulae from: http://mathworld.wolfram.com/Ellipse-LineIntersection.html\n\n var cx = node.x;\n var cy = node.y;\n\n var px = cx - point.x;\n var py = cy - point.y;\n\n var det = Math.sqrt(rx * rx * py * py + ry * ry * px * px);\n\n var dx = Math.abs(rx * ry * px / det);\n if (point.x < cx) {\n dx = -dx;\n }\n var dy = Math.abs(rx * ry * py / det);\n if (point.y < cy) {\n dy = -dy;\n }\n\n return {x: cx + dx, y: cy + dy};\n}\n\n","module.exports = intersectLine;\n\n/*\n * Returns the point at which two lines, p and q, intersect or returns\n * undefined if they do not intersect.\n */\nfunction intersectLine(p1, p2, q1, q2) {\n // Algorithm from J. Avro, (ed.) Graphics Gems, No 2, Morgan Kaufmann, 1994,\n // p7 and p473.\n\n var a1, a2, b1, b2, c1, c2;\n var r1, r2 , r3, r4;\n var denom, offset, num;\n var x, y;\n\n // Compute a1, b1, c1, where line joining points 1 and 2 is F(x,y) = a1 x +\n // b1 y + c1 = 0.\n a1 = p2.y - p1.y;\n b1 = p1.x - p2.x;\n c1 = (p2.x * p1.y) - (p1.x * p2.y);\n\n // Compute r3 and r4.\n r3 = ((a1 * q1.x) + (b1 * q1.y) + c1);\n r4 = ((a1 * q2.x) + (b1 * q2.y) + c1);\n\n // Check signs of r3 and r4. If both point 3 and point 4 lie on\n // same side of line 1, the line segments do not intersect.\n if ((r3 !== 0) && (r4 !== 0) && sameSign(r3, r4)) {\n return /*DONT_INTERSECT*/;\n }\n\n // Compute a2, b2, c2 where line joining points 3 and 4 is G(x,y) = a2 x + b2 y + c2 = 0\n a2 = q2.y - q1.y;\n b2 = q1.x - q2.x;\n c2 = (q2.x * q1.y) - (q1.x * q2.y);\n\n // Compute r1 and r2\n r1 = (a2 * p1.x) + (b2 * p1.y) + c2;\n r2 = (a2 * p2.x) + (b2 * p2.y) + c2;\n\n // Check signs of r1 and r2. If both point 1 and point 2 lie\n // on same side of second line segment, the line segments do\n // not intersect.\n if ((r1 !== 0) && (r2 !== 0) && (sameSign(r1, r2))) {\n return /*DONT_INTERSECT*/;\n }\n\n // Line segments intersect: compute intersection point.\n denom = (a1 * b2) - (a2 * b1);\n if (denom === 0) {\n return /*COLLINEAR*/;\n }\n\n offset = Math.abs(denom / 2);\n\n // The denom/2 is to get rounding instead of truncating. It\n // is added or subtracted to the numerator, depending upon the\n // sign of the numerator.\n num = (b1 * c2) - (b2 * c1);\n x = (num < 0) ? ((num - offset) / denom) : ((num + offset) / denom);\n\n num = (a2 * c1) - (a1 * c2);\n y = (num < 0) ? ((num - offset) / denom) : ((num + offset) / denom);\n\n return { x: x, y: y };\n}\n\nfunction sameSign(r1, r2) {\n return r1 * r2 > 0;\n}\n","module.exports = intersectNode;\n\nfunction intersectNode(node, point) {\n return node.intersect(point);\n}\n","/* eslint \"no-console\": off */\n\nvar intersectLine = require(\"./intersect-line\");\n\nmodule.exports = intersectPolygon;\n\n/*\n * Returns the point ({x, y}) at which the point argument intersects with the\n * node argument assuming that it has the shape specified by polygon.\n */\nfunction intersectPolygon(node, polyPoints, point) {\n var x1 = node.x;\n var y1 = node.y;\n\n var intersections = [];\n\n var minX = Number.POSITIVE_INFINITY;\n var minY = Number.POSITIVE_INFINITY;\n polyPoints.forEach(function(entry) {\n minX = Math.min(minX, entry.x);\n minY = Math.min(minY, entry.y);\n });\n\n var left = x1 - node.width / 2 - minX;\n var top = y1 - node.height / 2 - minY;\n\n for (var i = 0; i < polyPoints.length; i++) {\n var p1 = polyPoints[i];\n var p2 = polyPoints[i < polyPoints.length - 1 ? i + 1 : 0];\n var intersect = intersectLine(node, point,\n {x: left + p1.x, y: top + p1.y}, {x: left + p2.x, y: top + p2.y});\n if (intersect) {\n intersections.push(intersect);\n }\n }\n\n if (!intersections.length) {\n console.log(\"NO INTERSECTION FOUND, RETURN NODE CENTER\", node);\n return node;\n }\n\n if (intersections.length > 1) {\n // More intersections, find the one nearest to edge end point\n intersections.sort(function(p, q) {\n var pdx = p.x - point.x;\n var pdy = p.y - point.y;\n var distp = Math.sqrt(pdx * pdx + pdy * pdy);\n\n var qdx = q.x - point.x;\n var qdy = q.y - point.y;\n var distq = Math.sqrt(qdx * qdx + qdy * qdy);\n\n return (distp < distq) ? -1 : (distp === distq ? 0 : 1);\n });\n }\n return intersections[0];\n}\n","module.exports = intersectRect;\n\nfunction intersectRect(node, point) {\n var x = node.x;\n var y = node.y;\n\n // Rectangle intersection algorithm from:\n // http://math.stackexchange.com/questions/108113/find-edge-between-two-boxes\n var dx = point.x - x;\n var dy = point.y - y;\n var w = node.width / 2;\n var h = node.height / 2;\n\n var sx, sy;\n if (Math.abs(dy) * w > Math.abs(dx) * h) {\n // Intersection is top or bottom of rect.\n if (dy < 0) {\n h = -h;\n }\n sx = dy === 0 ? 0 : h * dx / dy;\n sy = h;\n } else {\n // Intersection is left or right of rect.\n if (dx < 0) {\n w = -w;\n }\n sx = w;\n sy = dx === 0 ? 0 : w * dy / dx;\n }\n\n return {x: x + sx, y: y + sy};\n}\n","var util = require(\"../util\");\n\nmodule.exports = addHtmlLabel;\n\nfunction addHtmlLabel(root, node) {\n var fo = root\n .append(\"foreignObject\")\n .attr(\"width\", \"100000\");\n\n var div = fo\n .append(\"xhtml:div\");\n div.attr(\"xmlns\", \"http://www.w3.org/1999/xhtml\");\n\n var label = node.label;\n switch(typeof label) {\n case \"function\":\n div.insert(label);\n break;\n case \"object\":\n // Currently we assume this is a DOM object.\n div.insert(function() { return label; });\n break;\n default: div.html(label);\n }\n\n util.applyStyle(div, node.labelStyle);\n div.style(\"display\", \"inline-block\");\n // Fix for firefox\n div.style(\"white-space\", \"nowrap\");\n\n var client = div.node().getBoundingClientRect();\n fo\n .attr(\"width\", client.width)\n .attr(\"height\", client.height); \n\n return fo;\n}\n","var addTextLabel = require(\"./add-text-label\");\nvar addHtmlLabel = require(\"./add-html-label\");\nvar addSVGLabel = require(\"./add-svg-label\");\n\nmodule.exports = addLabel;\n\nfunction addLabel(root, node, location) {\n var label = node.label;\n var labelSvg = root.append(\"g\");\n\n // Allow the label to be a string, a function that returns a DOM element, or\n // a DOM element itself.\n if (node.labelType === \"svg\") {\n addSVGLabel(labelSvg, node);\n } else if (typeof label !== \"string\" || node.labelType === \"html\") {\n addHtmlLabel(labelSvg, node);\n } else {\n addTextLabel(labelSvg, node);\n }\n\n var labelBBox = labelSvg.node().getBBox();\n var y;\n switch(location) {\n case \"top\":\n y = (-node.height / 2);\n break;\n case \"bottom\":\n y = (node.height / 2) - labelBBox.height;\n break;\n default:\n y = (-labelBBox.height / 2);\n }\n labelSvg.attr(\n \"transform\",\n \"translate(\" + (-labelBBox.width / 2) + \",\" + y + \")\");\n\n return labelSvg;\n}\n","var util = require(\"../util\");\n\nmodule.exports = addSVGLabel;\n\nfunction addSVGLabel(root, node) {\n var domNode = root;\n\n domNode.node().appendChild(node.label);\n\n util.applyStyle(domNode, node.labelStyle);\n\n return domNode;\n}\n","var util = require(\"../util\");\n\nmodule.exports = addTextLabel;\n\n/*\n * Attaches a text label to the specified root. Handles escape sequences.\n */\nfunction addTextLabel(root, node) {\n var domNode = root.append(\"text\");\n\n var lines = processEscapeSequences(node.label).split(\"\\n\");\n for (var i = 0; i < lines.length; i++) {\n domNode.append(\"tspan\")\n .attr(\"xml:space\", \"preserve\")\n .attr(\"dy\", \"1em\")\n .attr(\"x\", \"1\")\n .text(lines[i]);\n }\n\n util.applyStyle(domNode, node.labelStyle);\n\n return domNode;\n}\n\nfunction processEscapeSequences(text) {\n var newText = \"\";\n var escaped = false;\n var ch;\n for (var i = 0; i < text.length; ++i) {\n ch = text[i];\n if (escaped) {\n switch(ch) {\n case \"n\": newText += \"\\n\"; break;\n default: newText += ch;\n }\n escaped = false;\n } else if (ch === \"\\\\\") {\n escaped = true;\n } else {\n newText += ch;\n }\n }\n return newText;\n}\n","/* global window */\n\nvar lodash;\n\nif (typeof require === \"function\") {\n try {\n lodash = {\n defaults: require(\"lodash/defaults\"),\n each: require(\"lodash/each\"),\n isFunction: require(\"lodash/isFunction\"),\n isPlainObject: require(\"lodash/isPlainObject\"),\n pick: require(\"lodash/pick\"),\n has: require(\"lodash/has\"),\n range: require(\"lodash/range\"),\n uniqueId: require(\"lodash/uniqueId\")\n };\n }\n catch (e) {\n // continue regardless of error\n }\n}\n\nif (!lodash) {\n lodash = window._;\n}\n\nmodule.exports = lodash;\n","\"use strict\";\n\nvar util = require(\"./util\");\nvar d3 = require(\"./d3\");\n\nmodule.exports = positionClusters;\n\nfunction positionClusters(selection, g) {\n var created = selection.filter(function() { return !d3.select(this).classed(\"update\"); });\n\n function translate(v) {\n var node = g.node(v);\n return \"translate(\" + node.x + \",\" + node.y + \")\";\n }\n\n created.attr(\"transform\", translate);\n\n util.applyTransition(selection, g)\n .style(\"opacity\", 1)\n .attr(\"transform\", translate);\n\n util.applyTransition(created.selectAll(\"rect\"), g)\n .attr(\"width\", function(v) { return g.node(v).width; })\n .attr(\"height\", function(v) { return g.node(v).height; })\n .attr(\"x\", function(v) {\n var node = g.node(v);\n return -node.width / 2;\n })\n .attr(\"y\", function(v) {\n var node = g.node(v);\n return -node.height / 2;\n });\n}\n","\"use strict\";\n\nvar util = require(\"./util\");\nvar d3 = require(\"./d3\");\nvar _ = require(\"./lodash\");\n\nmodule.exports = positionEdgeLabels;\n\nfunction positionEdgeLabels(selection, g) {\n var created = selection.filter(function() { return !d3.select(this).classed(\"update\"); });\n\n function translate(e) {\n var edge = g.edge(e);\n return _.has(edge, \"x\") ? \"translate(\" + edge.x + \",\" + edge.y + \")\" : \"\";\n }\n\n created.attr(\"transform\", translate);\n\n util.applyTransition(selection, g)\n .style(\"opacity\", 1)\n .attr(\"transform\", translate);\n}\n","\"use strict\";\n\nvar util = require(\"./util\");\nvar d3 = require(\"./d3\");\n\nmodule.exports = positionNodes;\n\nfunction positionNodes(selection, g) {\n var created = selection.filter(function() { return !d3.select(this).classed(\"update\"); });\n\n function translate(v) {\n var node = g.node(v);\n return \"translate(\" + node.x + \",\" + node.y + \")\";\n }\n\n created.attr(\"transform\", translate);\n\n util.applyTransition(selection, g)\n .style(\"opacity\", 1)\n .attr(\"transform\", translate);\n}\n","var _ = require(\"./lodash\");\nvar d3 = require(\"./d3\");\nvar layout = require(\"./dagre\").layout;\n\nmodule.exports = render;\n\n// This design is based on http://bost.ocks.org/mike/chart/.\nfunction render() {\n var createNodes = require(\"./create-nodes\");\n var createClusters = require(\"./create-clusters\");\n var createEdgeLabels = require(\"./create-edge-labels\");\n var createEdgePaths = require(\"./create-edge-paths\");\n var positionNodes = require(\"./position-nodes\");\n var positionEdgeLabels = require(\"./position-edge-labels\");\n var positionClusters = require(\"./position-clusters\");\n var shapes = require(\"./shapes\");\n var arrows = require(\"./arrows\");\n\n var fn = function(svg, g) {\n preProcessGraph(g);\n\n var outputGroup = createOrSelectGroup(svg, \"output\");\n var clustersGroup = createOrSelectGroup(outputGroup, \"clusters\");\n var edgePathsGroup = createOrSelectGroup(outputGroup, \"edgePaths\");\n var edgeLabels = createEdgeLabels(createOrSelectGroup(outputGroup, \"edgeLabels\"), g);\n var nodes = createNodes(createOrSelectGroup(outputGroup, \"nodes\"), g, shapes);\n\n layout(g);\n\n positionNodes(nodes, g);\n positionEdgeLabels(edgeLabels, g);\n createEdgePaths(edgePathsGroup, g, arrows);\n\n var clusters = createClusters(clustersGroup, g);\n positionClusters(clusters, g);\n\n postProcessGraph(g);\n };\n\n fn.createNodes = function(value) {\n if (!arguments.length) return createNodes;\n createNodes = value;\n return fn;\n };\n\n fn.createClusters = function(value) {\n if (!arguments.length) return createClusters;\n createClusters = value;\n return fn;\n };\n\n fn.createEdgeLabels = function(value) {\n if (!arguments.length) return createEdgeLabels;\n createEdgeLabels = value;\n return fn;\n };\n\n fn.createEdgePaths = function(value) {\n if (!arguments.length) return createEdgePaths;\n createEdgePaths = value;\n return fn;\n };\n\n fn.shapes = function(value) {\n if (!arguments.length) return shapes;\n shapes = value;\n return fn;\n };\n\n fn.arrows = function(value) {\n if (!arguments.length) return arrows;\n arrows = value;\n return fn;\n };\n\n return fn;\n}\n\nvar NODE_DEFAULT_ATTRS = {\n paddingLeft: 10,\n paddingRight: 10,\n paddingTop: 10,\n paddingBottom: 10,\n rx: 0,\n ry: 0,\n shape: \"rect\"\n};\n\nvar EDGE_DEFAULT_ATTRS = {\n arrowhead: \"normal\",\n curve: d3.curveLinear\n};\n\nfunction preProcessGraph(g) {\n g.nodes().forEach(function(v) {\n var node = g.node(v);\n if (!_.has(node, \"label\") && !g.children(v).length) { node.label = v; }\n\n if (_.has(node, \"paddingX\")) {\n _.defaults(node, {\n paddingLeft: node.paddingX,\n paddingRight: node.paddingX\n });\n }\n\n if (_.has(node, \"paddingY\")) {\n _.defaults(node, {\n paddingTop: node.paddingY,\n paddingBottom: node.paddingY\n });\n }\n\n if (_.has(node, \"padding\")) {\n _.defaults(node, {\n paddingLeft: node.padding,\n paddingRight: node.padding,\n paddingTop: node.padding,\n paddingBottom: node.padding\n });\n }\n\n _.defaults(node, NODE_DEFAULT_ATTRS);\n\n _.each([\"paddingLeft\", \"paddingRight\", \"paddingTop\", \"paddingBottom\"], function(k) {\n node[k] = Number(node[k]);\n });\n\n // Save dimensions for restore during post-processing\n if (_.has(node, \"width\")) { node._prevWidth = node.width; }\n if (_.has(node, \"height\")) { node._prevHeight = node.height; }\n });\n\n g.edges().forEach(function(e) {\n var edge = g.edge(e);\n if (!_.has(edge, \"label\")) { edge.label = \"\"; }\n _.defaults(edge, EDGE_DEFAULT_ATTRS);\n });\n}\n\nfunction postProcessGraph(g) {\n _.each(g.nodes(), function(v) {\n var node = g.node(v);\n\n // Restore original dimensions\n if (_.has(node, \"_prevWidth\")) {\n node.width = node._prevWidth;\n } else {\n delete node.width;\n }\n\n if (_.has(node, \"_prevHeight\")) {\n node.height = node._prevHeight;\n } else {\n delete node.height;\n }\n\n delete node._prevWidth;\n delete node._prevHeight;\n });\n}\n\nfunction createOrSelectGroup(root, name) {\n var selection = root.select(\"g.\" + name);\n if (selection.empty()) {\n selection = root.append(\"g\").attr(\"class\", name);\n }\n return selection;\n}\n","\"use strict\";\n\nvar intersectRect = require(\"./intersect/intersect-rect\");\nvar intersectEllipse = require(\"./intersect/intersect-ellipse\");\nvar intersectCircle = require(\"./intersect/intersect-circle\");\nvar intersectPolygon = require(\"./intersect/intersect-polygon\");\n\nmodule.exports = {\n rect: rect,\n ellipse: ellipse,\n circle: circle,\n diamond: diamond\n};\n\nfunction rect(parent, bbox, node) {\n var shapeSvg = parent.insert(\"rect\", \":first-child\")\n .attr(\"rx\", node.rx)\n .attr(\"ry\", node.ry)\n .attr(\"x\", -bbox.width / 2)\n .attr(\"y\", -bbox.height / 2)\n .attr(\"width\", bbox.width)\n .attr(\"height\", bbox.height);\n\n node.intersect = function(point) {\n return intersectRect(node, point);\n };\n\n return shapeSvg;\n}\n\nfunction ellipse(parent, bbox, node) {\n var rx = bbox.width / 2;\n var ry = bbox.height / 2;\n var shapeSvg = parent.insert(\"ellipse\", \":first-child\")\n .attr(\"x\", -bbox.width / 2)\n .attr(\"y\", -bbox.height / 2)\n .attr(\"rx\", rx)\n .attr(\"ry\", ry);\n\n node.intersect = function(point) {\n return intersectEllipse(node, rx, ry, point);\n };\n\n return shapeSvg;\n}\n\nfunction circle(parent, bbox, node) {\n var r = Math.max(bbox.width, bbox.height) / 2;\n var shapeSvg = parent.insert(\"circle\", \":first-child\")\n .attr(\"x\", -bbox.width / 2)\n .attr(\"y\", -bbox.height / 2)\n .attr(\"r\", r);\n\n node.intersect = function(point) {\n return intersectCircle(node, r, point);\n };\n\n return shapeSvg;\n}\n\n// Circumscribe an ellipse for the bounding box with a diamond shape. I derived\n// the function to calculate the diamond shape from:\n// http://mathforum.org/kb/message.jspa?messageID=3750236\nfunction diamond(parent, bbox, node) {\n var w = (bbox.width * Math.SQRT2) / 2;\n var h = (bbox.height * Math.SQRT2) / 2;\n var points = [\n { x: 0, y: -h },\n { x: -w, y: 0 },\n { x: 0, y: h },\n { x: w, y: 0 }\n ];\n var shapeSvg = parent.insert(\"polygon\", \":first-child\")\n .attr(\"points\", points.map(function(p) { return p.x + \",\" + p.y; }).join(\" \"));\n\n node.intersect = function(p) {\n return intersectPolygon(node, points, p);\n };\n\n return shapeSvg;\n}\n","var _ = require(\"./lodash\");\n\n// Public utility functions\nmodule.exports = {\n isSubgraph: isSubgraph,\n edgeToId: edgeToId,\n applyStyle: applyStyle,\n applyClass: applyClass,\n applyTransition: applyTransition\n};\n\n/*\n * Returns true if the specified node in the graph is a subgraph node. A\n * subgraph node is one that contains other nodes.\n */\nfunction isSubgraph(g, v) {\n return !!g.children(v).length;\n}\n\nfunction edgeToId(e) {\n return escapeId(e.v) + \":\" + escapeId(e.w) + \":\" + escapeId(e.name);\n}\n\nvar ID_DELIM = /:/g;\nfunction escapeId(str) {\n return str ? String(str).replace(ID_DELIM, \"\\\\:\") : \"\";\n}\n\nfunction applyStyle(dom, styleFn) {\n if (styleFn) {\n dom.attr(\"style\", styleFn);\n }\n}\n\nfunction applyClass(dom, classFn, otherClasses) {\n if (classFn) {\n dom\n .attr(\"class\", classFn)\n .attr(\"class\", otherClasses + \" \" + dom.attr(\"class\"));\n }\n}\n\nfunction applyTransition(selection, g) {\n var graph = g.graph();\n\n if (_.isPlainObject(graph)) {\n var transition = graph.transition;\n if (_.isFunction(transition)) {\n return transition(selection);\n }\n }\n\n return selection;\n}\n","module.exports = \"0.6.4\";\n","export var name = \"d3\";\nexport var version = \"5.16.0\";\nexport var description = \"Data-Driven Documents\";\nexport var keywords = [\"dom\",\"visualization\",\"svg\",\"animation\",\"canvas\"];\nexport var homepage = \"https://d3js.org\";\nexport var license = \"BSD-3-Clause\";\nexport var author = {\"name\":\"Mike Bostock\",\"url\":\"https://bost.ocks.org/mike\"};\nexport var main = \"dist/d3.node.js\";\nexport var unpkg = \"dist/d3.min.js\";\nexport var jsdelivr = \"dist/d3.min.js\";\nexport var module = \"index.js\";\nexport var repository = {\"type\":\"git\",\"url\":\"https://github.com/d3/d3.git\"};\nexport var files = [\"dist/**/*.js\",\"index.js\"];\nexport var scripts = {\"pretest\":\"rimraf dist && mkdir dist && json2module package.json > dist/package.js && rollup -c\",\"test\":\"tape 'test/**/*-test.js'\",\"prepublishOnly\":\"yarn test\",\"postpublish\":\"git push && git push --tags && cd ../d3.github.com && git pull && cp ../d3/dist/d3.js d3.v5.js && cp ../d3/dist/d3.min.js d3.v5.min.js && git add d3.v5.js d3.v5.min.js && git commit -m \\\"d3 ${npm_package_version}\\\" && git push && cd - && cd ../d3-bower && git pull && cp ../d3/LICENSE ../d3/README.md ../d3/dist/d3.js ../d3/dist/d3.min.js . && git add -- LICENSE README.md d3.js d3.min.js && git commit -m \\\"${npm_package_version}\\\" && git tag -am \\\"${npm_package_version}\\\" v${npm_package_version} && git push && git push --tags && cd - && zip -j dist/d3.zip -- LICENSE README.md API.md CHANGES.md dist/d3.js dist/d3.min.js\"};\nexport var devDependencies = {\"json2module\":\"0.0\",\"rimraf\":\"2\",\"rollup\":\"1\",\"rollup-plugin-ascii\":\"0.0\",\"rollup-plugin-node-resolve\":\"3\",\"rollup-plugin-terser\":\"5\",\"tape\":\"4\"};\nexport var dependencies = {\"d3-array\":\"1\",\"d3-axis\":\"1\",\"d3-brush\":\"1\",\"d3-chord\":\"1\",\"d3-collection\":\"1\",\"d3-color\":\"1\",\"d3-contour\":\"1\",\"d3-dispatch\":\"1\",\"d3-drag\":\"1\",\"d3-dsv\":\"1\",\"d3-ease\":\"1\",\"d3-fetch\":\"1\",\"d3-force\":\"1\",\"d3-format\":\"1\",\"d3-geo\":\"1\",\"d3-hierarchy\":\"1\",\"d3-interpolate\":\"1\",\"d3-path\":\"1\",\"d3-polygon\":\"1\",\"d3-quadtree\":\"1\",\"d3-random\":\"1\",\"d3-scale\":\"2\",\"d3-scale-chromatic\":\"1\",\"d3-selection\":\"1\",\"d3-shape\":\"1\",\"d3-time\":\"1\",\"d3-time-format\":\"2\",\"d3-timer\":\"1\",\"d3-transition\":\"1\",\"d3-voronoi\":\"1\",\"d3-zoom\":\"1\"};\n","export default function(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","import ascending from \"./ascending\";\n\nexport default function(compare) {\n if (compare.length === 1) compare = ascendingComparator(compare);\n return {\n left: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n }\n return lo;\n },\n right: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) > 0) hi = mid;\n else lo = mid + 1;\n }\n return lo;\n }\n };\n}\n\nfunction ascendingComparator(f) {\n return function(d, x) {\n return ascending(f(d), x);\n };\n}\n","import ascending from \"./ascending\";\nimport bisector from \"./bisector\";\n\nvar ascendingBisect = bisector(ascending);\nexport var bisectRight = ascendingBisect.right;\nexport var bisectLeft = ascendingBisect.left;\nexport default bisectRight;\n","export default function(array, f) {\n if (f == null) f = pair;\n var i = 0, n = array.length - 1, p = array[0], pairs = new Array(n < 0 ? 0 : n);\n while (i < n) pairs[i] = f(p, p = array[++i]);\n return pairs;\n}\n\nexport function pair(a, b) {\n return [a, b];\n}\n","import {pair} from \"./pairs\";\n\nexport default function(values0, values1, reduce) {\n var n0 = values0.length,\n n1 = values1.length,\n values = new Array(n0 * n1),\n i0,\n i1,\n i,\n value0;\n\n if (reduce == null) reduce = pair;\n\n for (i0 = i = 0; i0 < n0; ++i0) {\n for (value0 = values0[i0], i1 = 0; i1 < n1; ++i1, ++i) {\n values[i] = reduce(value0, values1[i1]);\n }\n }\n\n return values;\n}\n","export default function(a, b) {\n return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n}\n","export default function(x) {\n return x === null ? NaN : +x;\n}\n","import number from \"./number\";\n\nexport default function(values, valueof) {\n var n = values.length,\n m = 0,\n i = -1,\n mean = 0,\n value,\n delta,\n sum = 0;\n\n if (valueof == null) {\n while (++i < n) {\n if (!isNaN(value = number(values[i]))) {\n delta = value - mean;\n mean += delta / ++m;\n sum += delta * (value - mean);\n }\n }\n }\n\n else {\n while (++i < n) {\n if (!isNaN(value = number(valueof(values[i], i, values)))) {\n delta = value - mean;\n mean += delta / ++m;\n sum += delta * (value - mean);\n }\n }\n }\n\n if (m > 1) return sum / (m - 1);\n}\n","import variance from \"./variance\";\n\nexport default function(array, f) {\n var v = variance(array, f);\n return v ? Math.sqrt(v) : v;\n}\n","export default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n min,\n max;\n\n if (valueof == null) {\n while (++i < n) { // Find the first comparable value.\n if ((value = values[i]) != null && value >= value) {\n min = max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = values[i]) != null) {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n }\n }\n\n else {\n while (++i < n) { // Find the first comparable value.\n if ((value = valueof(values[i], i, values)) != null && value >= value) {\n min = max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = valueof(values[i], i, values)) != null) {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n }\n }\n\n return [min, max];\n}\n","var array = Array.prototype;\n\nexport var slice = array.slice;\nexport var map = array.map;\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(x) {\n return x;\n}\n","export default function(start, stop, step) {\n start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n\n var i = -1,\n n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n range = new Array(n);\n\n while (++i < n) {\n range[i] = start + i * step;\n }\n\n return range;\n}\n","var e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\n\nexport default function(start, stop, count) {\n var reverse,\n i = -1,\n n,\n ticks,\n step;\n\n stop = +stop, start = +start, count = +count;\n if (start === stop && count > 0) return [start];\n if (reverse = stop < start) n = start, start = stop, stop = n;\n if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) return [];\n\n if (step > 0) {\n start = Math.ceil(start / step);\n stop = Math.floor(stop / step);\n ticks = new Array(n = Math.ceil(stop - start + 1));\n while (++i < n) ticks[i] = (start + i) * step;\n } else {\n start = Math.floor(start * step);\n stop = Math.ceil(stop * step);\n ticks = new Array(n = Math.ceil(start - stop + 1));\n while (++i < n) ticks[i] = (start - i) / step;\n }\n\n if (reverse) ticks.reverse();\n\n return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n var step = (stop - start) / Math.max(0, count),\n power = Math.floor(Math.log(step) / Math.LN10),\n error = step / Math.pow(10, power);\n return power >= 0\n ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power)\n : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);\n}\n\nexport function tickStep(start, stop, count) {\n var step0 = Math.abs(stop - start) / Math.max(0, count),\n step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)),\n error = step0 / step1;\n if (error >= e10) step1 *= 10;\n else if (error >= e5) step1 *= 5;\n else if (error >= e2) step1 *= 2;\n return stop < start ? -step1 : step1;\n}\n","export default function(values) {\n return Math.ceil(Math.log(values.length) / Math.LN2) + 1;\n}\n","import {slice} from \"./array\";\nimport bisect from \"./bisect\";\nimport constant from \"./constant\";\nimport extent from \"./extent\";\nimport identity from \"./identity\";\nimport range from \"./range\";\nimport {tickStep} from \"./ticks\";\nimport sturges from \"./threshold/sturges\";\n\nexport default function() {\n var value = identity,\n domain = extent,\n threshold = sturges;\n\n function histogram(data) {\n var i,\n n = data.length,\n x,\n values = new Array(n);\n\n for (i = 0; i < n; ++i) {\n values[i] = value(data[i], i, data);\n }\n\n var xz = domain(values),\n x0 = xz[0],\n x1 = xz[1],\n tz = threshold(values, x0, x1);\n\n // Convert number of thresholds into uniform thresholds.\n if (!Array.isArray(tz)) {\n tz = tickStep(x0, x1, tz);\n tz = range(Math.ceil(x0 / tz) * tz, x1, tz); // exclusive\n }\n\n // Remove any thresholds outside the domain.\n var m = tz.length;\n while (tz[0] <= x0) tz.shift(), --m;\n while (tz[m - 1] > x1) tz.pop(), --m;\n\n var bins = new Array(m + 1),\n bin;\n\n // Initialize bins.\n for (i = 0; i <= m; ++i) {\n bin = bins[i] = [];\n bin.x0 = i > 0 ? tz[i - 1] : x0;\n bin.x1 = i < m ? tz[i] : x1;\n }\n\n // Assign data to bins by value, ignoring any outside the domain.\n for (i = 0; i < n; ++i) {\n x = values[i];\n if (x0 <= x && x <= x1) {\n bins[bisect(tz, x, 0, m)].push(data[i]);\n }\n }\n\n return bins;\n }\n\n histogram.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(_), histogram) : value;\n };\n\n histogram.domain = function(_) {\n return arguments.length ? (domain = typeof _ === \"function\" ? _ : constant([_[0], _[1]]), histogram) : domain;\n };\n\n histogram.thresholds = function(_) {\n return arguments.length ? (threshold = typeof _ === \"function\" ? _ : Array.isArray(_) ? constant(slice.call(_)) : constant(_), histogram) : threshold;\n };\n\n return histogram;\n}\n","import number from \"./number\";\n\nexport default function(values, p, valueof) {\n if (valueof == null) valueof = number;\n if (!(n = values.length)) return;\n if ((p = +p) <= 0 || n < 2) return +valueof(values[0], 0, values);\n if (p >= 1) return +valueof(values[n - 1], n - 1, values);\n var n,\n i = (n - 1) * p,\n i0 = Math.floor(i),\n value0 = +valueof(values[i0], i0, values),\n value1 = +valueof(values[i0 + 1], i0 + 1, values);\n return value0 + (value1 - value0) * (i - i0);\n}\n","import {map} from \"../array\";\nimport ascending from \"../ascending\";\nimport number from \"../number\";\nimport quantile from \"../quantile\";\n\nexport default function(values, min, max) {\n values = map.call(values, number).sort(ascending);\n return Math.ceil((max - min) / (2 * (quantile(values, 0.75) - quantile(values, 0.25)) * Math.pow(values.length, -1 / 3)));\n}\n","import deviation from \"../deviation\";\n\nexport default function(values, min, max) {\n return Math.ceil((max - min) / (3.5 * deviation(values) * Math.pow(values.length, -1 / 3)));\n}\n","export default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n max;\n\n if (valueof == null) {\n while (++i < n) { // Find the first comparable value.\n if ((value = values[i]) != null && value >= value) {\n max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = values[i]) != null && value > max) {\n max = value;\n }\n }\n }\n }\n }\n\n else {\n while (++i < n) { // Find the first comparable value.\n if ((value = valueof(values[i], i, values)) != null && value >= value) {\n max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = valueof(values[i], i, values)) != null && value > max) {\n max = value;\n }\n }\n }\n }\n }\n\n return max;\n}\n","import number from \"./number\";\n\nexport default function(values, valueof) {\n var n = values.length,\n m = n,\n i = -1,\n value,\n sum = 0;\n\n if (valueof == null) {\n while (++i < n) {\n if (!isNaN(value = number(values[i]))) sum += value;\n else --m;\n }\n }\n\n else {\n while (++i < n) {\n if (!isNaN(value = number(valueof(values[i], i, values)))) sum += value;\n else --m;\n }\n }\n\n if (m) return sum / m;\n}\n","import ascending from \"./ascending\";\nimport number from \"./number\";\nimport quantile from \"./quantile\";\n\nexport default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n numbers = [];\n\n if (valueof == null) {\n while (++i < n) {\n if (!isNaN(value = number(values[i]))) {\n numbers.push(value);\n }\n }\n }\n\n else {\n while (++i < n) {\n if (!isNaN(value = number(valueof(values[i], i, values)))) {\n numbers.push(value);\n }\n }\n }\n\n return quantile(numbers.sort(ascending), 0.5);\n}\n","export default function(arrays) {\n var n = arrays.length,\n m,\n i = -1,\n j = 0,\n merged,\n array;\n\n while (++i < n) j += arrays[i].length;\n merged = new Array(j);\n\n while (--n >= 0) {\n array = arrays[n];\n m = array.length;\n while (--m >= 0) {\n merged[--j] = array[m];\n }\n }\n\n return merged;\n}\n","export default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n min;\n\n if (valueof == null) {\n while (++i < n) { // Find the first comparable value.\n if ((value = values[i]) != null && value >= value) {\n min = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = values[i]) != null && min > value) {\n min = value;\n }\n }\n }\n }\n }\n\n else {\n while (++i < n) { // Find the first comparable value.\n if ((value = valueof(values[i], i, values)) != null && value >= value) {\n min = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = valueof(values[i], i, values)) != null && min > value) {\n min = value;\n }\n }\n }\n }\n }\n\n return min;\n}\n","export default function(array, indexes) {\n var i = indexes.length, permutes = new Array(i);\n while (i--) permutes[i] = array[indexes[i]];\n return permutes;\n}\n","import ascending from \"./ascending\";\n\nexport default function(values, compare) {\n if (!(n = values.length)) return;\n var n,\n i = 0,\n j = 0,\n xi,\n xj = values[j];\n\n if (compare == null) compare = ascending;\n\n while (++i < n) {\n if (compare(xi = values[i], xj) < 0 || compare(xj, xj) !== 0) {\n xj = xi, j = i;\n }\n }\n\n if (compare(xj, xj) === 0) return j;\n}\n","export default function(array, i0, i1) {\n var m = (i1 == null ? array.length : i1) - (i0 = i0 == null ? 0 : +i0),\n t,\n i;\n\n while (m) {\n i = Math.random() * m-- | 0;\n t = array[m + i0];\n array[m + i0] = array[i + i0];\n array[i + i0] = t;\n }\n\n return array;\n}\n","export default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n sum = 0;\n\n if (valueof == null) {\n while (++i < n) {\n if (value = +values[i]) sum += value; // Note: zero and null are equivalent.\n }\n }\n\n else {\n while (++i < n) {\n if (value = +valueof(values[i], i, values)) sum += value;\n }\n }\n\n return sum;\n}\n","import min from \"./min\";\n\nexport default function(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\";\n\nexport default function() {\n return transpose(arguments);\n}\n","export var slice = Array.prototype.slice;\n","export default function(x) {\n return x;\n}\n","import {slice} from \"./array\";\nimport identity from \"./identity\";\n\nvar top = 1,\n right = 2,\n bottom = 3,\n left = 4,\n epsilon = 1e-6;\n\nfunction translateX(x) {\n return \"translate(\" + (x + 0.5) + \",0)\";\n}\n\nfunction translateY(y) {\n return \"translate(0,\" + (y + 0.5) + \")\";\n}\n\nfunction number(scale) {\n return function(d) {\n return +scale(d);\n };\n}\n\nfunction center(scale) {\n var offset = Math.max(0, scale.bandwidth() - 1) / 2; // Adjust for 0.5px offset.\n if (scale.round()) offset = Math.round(offset);\n return function(d) {\n return +scale(d) + offset;\n };\n}\n\nfunction entering() {\n return !this.__axis;\n}\n\nfunction axis(orient, scale) {\n var tickArguments = [],\n tickValues = null,\n tickFormat = null,\n tickSizeInner = 6,\n tickSizeOuter = 6,\n tickPadding = 3,\n k = orient === top || orient === left ? -1 : 1,\n x = orient === left || orient === right ? \"x\" : \"y\",\n transform = orient === top || orient === bottom ? translateX : translateY;\n\n function axis(context) {\n var values = tickValues == null ? (scale.ticks ? scale.ticks.apply(scale, tickArguments) : scale.domain()) : tickValues,\n format = tickFormat == null ? (scale.tickFormat ? scale.tickFormat.apply(scale, tickArguments) : identity) : tickFormat,\n spacing = Math.max(tickSizeInner, 0) + tickPadding,\n range = scale.range(),\n range0 = +range[0] + 0.5,\n range1 = +range[range.length - 1] + 0.5,\n position = (scale.bandwidth ? center : number)(scale.copy()),\n selection = context.selection ? context.selection() : context,\n path = selection.selectAll(\".domain\").data([null]),\n tick = selection.selectAll(\".tick\").data(values, scale).order(),\n tickExit = tick.exit(),\n tickEnter = tick.enter().append(\"g\").attr(\"class\", \"tick\"),\n line = tick.select(\"line\"),\n text = tick.select(\"text\");\n\n path = path.merge(path.enter().insert(\"path\", \".tick\")\n .attr(\"class\", \"domain\")\n .attr(\"stroke\", \"currentColor\"));\n\n tick = tick.merge(tickEnter);\n\n line = line.merge(tickEnter.append(\"line\")\n .attr(\"stroke\", \"currentColor\")\n .attr(x + \"2\", k * tickSizeInner));\n\n text = text.merge(tickEnter.append(\"text\")\n .attr(\"fill\", \"currentColor\")\n .attr(x, k * spacing)\n .attr(\"dy\", orient === top ? \"0em\" : orient === bottom ? \"0.71em\" : \"0.32em\"));\n\n if (context !== selection) {\n path = path.transition(context);\n tick = tick.transition(context);\n line = line.transition(context);\n text = text.transition(context);\n\n tickExit = tickExit.transition(context)\n .attr(\"opacity\", epsilon)\n .attr(\"transform\", function(d) { return isFinite(d = position(d)) ? transform(d) : this.getAttribute(\"transform\"); });\n\n tickEnter\n .attr(\"opacity\", epsilon)\n .attr(\"transform\", function(d) { var p = this.parentNode.__axis; return transform(p && isFinite(p = p(d)) ? p : position(d)); });\n }\n\n tickExit.remove();\n\n path\n .attr(\"d\", orient === left || orient == right\n ? (tickSizeOuter ? \"M\" + k * tickSizeOuter + \",\" + range0 + \"H0.5V\" + range1 + \"H\" + k * tickSizeOuter : \"M0.5,\" + range0 + \"V\" + range1)\n : (tickSizeOuter ? \"M\" + range0 + \",\" + k * tickSizeOuter + \"V0.5H\" + range1 + \"V\" + k * tickSizeOuter : \"M\" + range0 + \",0.5H\" + range1));\n\n tick\n .attr(\"opacity\", 1)\n .attr(\"transform\", function(d) { return transform(position(d)); });\n\n line\n .attr(x + \"2\", k * tickSizeInner);\n\n text\n .attr(x, k * spacing)\n .text(format);\n\n selection.filter(entering)\n .attr(\"fill\", \"none\")\n .attr(\"font-size\", 10)\n .attr(\"font-family\", \"sans-serif\")\n .attr(\"text-anchor\", orient === right ? \"start\" : orient === left ? \"end\" : \"middle\");\n\n selection\n .each(function() { this.__axis = position; });\n }\n\n axis.scale = function(_) {\n return arguments.length ? (scale = _, axis) : scale;\n };\n\n axis.ticks = function() {\n return tickArguments = slice.call(arguments), axis;\n };\n\n axis.tickArguments = function(_) {\n return arguments.length ? (tickArguments = _ == null ? [] : slice.call(_), axis) : tickArguments.slice();\n };\n\n axis.tickValues = function(_) {\n return arguments.length ? (tickValues = _ == null ? null : slice.call(_), axis) : tickValues && tickValues.slice();\n };\n\n axis.tickFormat = function(_) {\n return arguments.length ? (tickFormat = _, axis) : tickFormat;\n };\n\n axis.tickSize = function(_) {\n return arguments.length ? (tickSizeInner = tickSizeOuter = +_, axis) : tickSizeInner;\n };\n\n axis.tickSizeInner = function(_) {\n return arguments.length ? (tickSizeInner = +_, axis) : tickSizeInner;\n };\n\n axis.tickSizeOuter = function(_) {\n return arguments.length ? (tickSizeOuter = +_, axis) : tickSizeOuter;\n };\n\n axis.tickPadding = function(_) {\n return arguments.length ? (tickPadding = +_, axis) : tickPadding;\n };\n\n return axis;\n}\n\nexport function axisTop(scale) {\n return axis(top, scale);\n}\n\nexport function axisRight(scale) {\n return axis(right, scale);\n}\n\nexport function axisBottom(scale) {\n return axis(bottom, scale);\n}\n\nexport function axisLeft(scale) {\n return axis(left, scale);\n}\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","function none() {}\n\nexport default function(selector) {\n return selector == null ? none : function() {\n return this.querySelector(selector);\n };\n}\n","function empty() {\n return [];\n}\n\nexport default function(selector) {\n return selector == null ? empty : function() {\n return this.querySelectorAll(selector);\n };\n}\n","export default function(selector) {\n return function() {\n return this.matches(selector);\n };\n}\n","export default function(update) {\n return new Array(update.length);\n}\n","import sparse from \"./sparse\";\nimport {Selection} from \"./index\";\n\nexport default function() {\n return new Selection(this._enter || this._groups.map(sparse), this._parents);\n}\n\nexport function EnterNode(parent, datum) {\n this.ownerDocument = parent.ownerDocument;\n this.namespaceURI = parent.namespaceURI;\n this._next = null;\n this._parent = parent;\n this.__data__ = datum;\n}\n\nEnterNode.prototype = {\n constructor: EnterNode,\n appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n querySelector: function(selector) { return this._parent.querySelector(selector); },\n querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n};\n","import {Selection} from \"./index\";\nimport {EnterNode} from \"./enter\";\nimport constant from \"../constant\";\n\nvar keyPrefix = \"$\"; // Protect against keys like “__proto__”.\n\nfunction bindIndex(parent, group, enter, update, exit, data) {\n var i = 0,\n node,\n groupLength = group.length,\n dataLength = data.length;\n\n // Put any non-null nodes that fit into update.\n // Put any null nodes into enter.\n // Put any remaining data into enter.\n for (; i < dataLength; ++i) {\n if (node = group[i]) {\n node.__data__ = data[i];\n update[i] = node;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Put any non-null nodes that don’t fit into exit.\n for (; i < groupLength; ++i) {\n if (node = group[i]) {\n exit[i] = node;\n }\n }\n}\n\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n var i,\n node,\n nodeByKeyValue = {},\n groupLength = group.length,\n dataLength = data.length,\n keyValues = new Array(groupLength),\n keyValue;\n\n // Compute the key for each node.\n // If multiple nodes have the same key, the duplicates are added to exit.\n for (i = 0; i < groupLength; ++i) {\n if (node = group[i]) {\n keyValues[i] = keyValue = keyPrefix + key.call(node, node.__data__, i, group);\n if (keyValue in nodeByKeyValue) {\n exit[i] = node;\n } else {\n nodeByKeyValue[keyValue] = node;\n }\n }\n }\n\n // Compute the key for each datum.\n // If there a node associated with this key, join and add it to update.\n // If there is not (or the key is a duplicate), add it to enter.\n for (i = 0; i < dataLength; ++i) {\n keyValue = keyPrefix + key.call(parent, data[i], i, data);\n if (node = nodeByKeyValue[keyValue]) {\n update[i] = node;\n node.__data__ = data[i];\n nodeByKeyValue[keyValue] = null;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Add any remaining nodes that were not bound to data to exit.\n for (i = 0; i < groupLength; ++i) {\n if ((node = group[i]) && (nodeByKeyValue[keyValues[i]] === node)) {\n exit[i] = node;\n }\n }\n}\n\nexport default function(value, key) {\n if (!value) {\n data = new Array(this.size()), j = -1;\n this.each(function(d) { data[++j] = d; });\n return data;\n }\n\n var bind = key ? bindKey : bindIndex,\n parents = this._parents,\n groups = this._groups;\n\n if (typeof value !== \"function\") value = constant(value);\n\n for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n var parent = parents[j],\n group = groups[j],\n groupLength = group.length,\n data = value.call(parent, parent && parent.__data__, j, parents),\n dataLength = data.length,\n enterGroup = enter[j] = new Array(dataLength),\n updateGroup = update[j] = new Array(dataLength),\n exitGroup = exit[j] = new Array(groupLength);\n\n bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\n // Now connect the enter nodes to their following update node, such that\n // appendChild can insert the materialized enter node before this node,\n // rather than at the end of the parent node.\n for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n if (previous = enterGroup[i0]) {\n if (i0 >= i1) i1 = i0 + 1;\n while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n previous._next = next || null;\n }\n }\n }\n\n update = new Selection(update, parents);\n update._enter = enter;\n update._exit = exit;\n return update;\n}\n","import {Selection} from \"./index\";\n\nexport default function(compare) {\n if (!compare) compare = ascending;\n\n function compareNode(a, b) {\n return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n }\n\n for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n sortgroup[i] = node;\n }\n }\n sortgroup.sort(compareNode);\n }\n\n return new Selection(sortgroups, this._parents).order();\n}\n\nfunction ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","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\";\n\nexport default function(name) {\n var prefix = name += \"\", i = prefix.indexOf(\":\");\n if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name;\n}\n","import namespace from \"../namespace\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, value) {\n return function() {\n this.setAttribute(name, value);\n };\n}\n\nfunction attrConstantNS(fullname, value) {\n return function() {\n this.setAttributeNS(fullname.space, fullname.local, value);\n };\n}\n\nfunction attrFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttribute(name);\n else this.setAttribute(name, v);\n };\n}\n\nfunction attrFunctionNS(fullname, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttributeNS(fullname.space, fullname.local);\n else this.setAttributeNS(fullname.space, fullname.local, v);\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name);\n\n if (arguments.length < 2) {\n var node = this.node();\n return fullname.local\n ? node.getAttributeNS(fullname.space, fullname.local)\n : node.getAttribute(fullname);\n }\n\n return this.each((value == null\n ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)\n : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));\n}\n","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\";\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\";\nimport {xhtml} from \"./namespaces\";\n\nfunction creatorInherit(name) {\n return function() {\n var document = this.ownerDocument,\n uri = this.namespaceURI;\n return uri === xhtml && document.documentElement.namespaceURI === xhtml\n ? document.createElement(name)\n : document.createElementNS(uri, name);\n };\n}\n\nfunction creatorFixed(fullname) {\n return function() {\n return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n };\n}\n\nexport default function(name) {\n var fullname = namespace(name);\n return (fullname.local\n ? creatorFixed\n : creatorInherit)(fullname);\n}\n","import creator from \"../creator\";\nimport selector from \"../selector\";\n\nfunction constantNull() {\n return null;\n}\n\nexport default function(name, before) {\n var create = typeof name === \"function\" ? name : creator(name),\n select = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n return this.select(function() {\n return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n });\n}\n","function remove() {\n var parent = this.parentNode;\n if (parent) parent.removeChild(this);\n}\n\nexport default function() {\n return this.each(remove);\n}\n","function selection_cloneShallow() {\n var clone = this.cloneNode(false), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nfunction selection_cloneDeep() {\n var clone = this.cloneNode(true), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nexport default function(deep) {\n return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n","var filterEvents = {};\n\nexport var event = null;\n\nif (typeof document !== \"undefined\") {\n var element = document.documentElement;\n if (!(\"onmouseenter\" in element)) {\n filterEvents = {mouseenter: \"mouseover\", mouseleave: \"mouseout\"};\n }\n}\n\nfunction filterContextListener(listener, index, group) {\n listener = contextListener(listener, index, group);\n return function(event) {\n var related = event.relatedTarget;\n if (!related || (related !== this && !(related.compareDocumentPosition(this) & 8))) {\n listener.call(this, event);\n }\n };\n}\n\nfunction contextListener(listener, index, group) {\n return function(event1) {\n var event0 = event; // Events can be reentrant (e.g., focus).\n event = event1;\n try {\n listener.call(this, this.__data__, index, group);\n } finally {\n event = event0;\n }\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.capture);\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, capture) {\n var wrap = filterEvents.hasOwnProperty(typename.type) ? filterContextListener : contextListener;\n return function(d, i, group) {\n var on = this.__on, o, listener = wrap(value, i, group);\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.capture);\n this.addEventListener(o.type, o.listener = listener, o.capture = capture);\n o.value = value;\n return;\n }\n }\n this.addEventListener(typename.type, listener, capture);\n o = {type: typename.type, name: typename.name, value: value, listener: listener, capture: capture};\n if (!on) this.__on = [o];\n else on.push(o);\n };\n}\n\nexport default function(typename, value, capture) {\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 if (capture == null) capture = false;\n for (i = 0; i < n; ++i) this.each(on(typenames[i], value, capture));\n return this;\n}\n\nexport function customEvent(event1, listener, that, args) {\n var event0 = event;\n event1.sourceEvent = event;\n event = event1;\n try {\n return listener.apply(that, args);\n } finally {\n event = event0;\n }\n}\n","import defaultView from \"../window\";\n\nfunction dispatchEvent(node, type, params) {\n var window = defaultView(node),\n event = window.CustomEvent;\n\n if (typeof event === \"function\") {\n event = new event(type, params);\n } else {\n event = window.document.createEvent(\"Event\");\n if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n else event.initEvent(type, false, false);\n }\n\n node.dispatchEvent(event);\n}\n\nfunction dispatchConstant(type, params) {\n return function() {\n return dispatchEvent(this, type, params);\n };\n}\n\nfunction dispatchFunction(type, params) {\n return function() {\n return dispatchEvent(this, type, params.apply(this, arguments));\n };\n}\n\nexport default function(type, params) {\n return this.each((typeof params === \"function\"\n ? dispatchFunction\n : dispatchConstant)(type, params));\n}\n","import selection_select from \"./select\";\nimport selection_selectAll from \"./selectAll\";\nimport selection_filter from \"./filter\";\nimport selection_data from \"./data\";\nimport selection_enter from \"./enter\";\nimport selection_exit from \"./exit\";\nimport selection_join from \"./join\";\nimport selection_merge from \"./merge\";\nimport selection_order from \"./order\";\nimport selection_sort from \"./sort\";\nimport selection_call from \"./call\";\nimport selection_nodes from \"./nodes\";\nimport selection_node from \"./node\";\nimport selection_size from \"./size\";\nimport selection_empty from \"./empty\";\nimport selection_each from \"./each\";\nimport selection_attr from \"./attr\";\nimport selection_style from \"./style\";\nimport selection_property from \"./property\";\nimport selection_classed from \"./classed\";\nimport selection_text from \"./text\";\nimport selection_html from \"./html\";\nimport selection_raise from \"./raise\";\nimport selection_lower from \"./lower\";\nimport selection_append from \"./append\";\nimport selection_insert from \"./insert\";\nimport selection_remove from \"./remove\";\nimport selection_clone from \"./clone\";\nimport selection_datum from \"./datum\";\nimport selection_on from \"./on\";\nimport selection_dispatch from \"./dispatch\";\n\nexport var root = [null];\n\nexport function Selection(groups, parents) {\n this._groups = groups;\n this._parents = parents;\n}\n\nfunction selection() {\n return new Selection([[document.documentElement]], root);\n}\n\nSelection.prototype = selection.prototype = {\n constructor: Selection,\n select: selection_select,\n selectAll: selection_selectAll,\n filter: selection_filter,\n data: selection_data,\n enter: selection_enter,\n exit: selection_exit,\n join: selection_join,\n merge: selection_merge,\n order: selection_order,\n sort: selection_sort,\n call: selection_call,\n nodes: selection_nodes,\n node: selection_node,\n size: selection_size,\n empty: selection_empty,\n each: selection_each,\n attr: selection_attr,\n style: selection_style,\n property: selection_property,\n classed: selection_classed,\n text: selection_text,\n html: selection_html,\n raise: selection_raise,\n lower: selection_lower,\n append: selection_append,\n insert: selection_insert,\n remove: selection_remove,\n clone: selection_clone,\n datum: selection_datum,\n on: selection_on,\n dispatch: selection_dispatch\n};\n\nexport default selection;\n","import {Selection} from \"./index\";\nimport selector from \"../selector\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","import {Selection} from \"./index\";\nimport selectorAll from \"../selectorAll\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n subgroups.push(select.call(node, node.__data__, i, group));\n parents.push(node);\n }\n }\n }\n\n return new Selection(subgroups, parents);\n}\n","import {Selection} from \"./index\";\nimport matcher from \"../matcher\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import sparse from \"./sparse\";\nimport {Selection} from \"./index\";\n\nexport default function() {\n return new Selection(this._exit || this._groups.map(sparse), this._parents);\n}\n","export default function(onenter, onupdate, onexit) {\n var enter = this.enter(), update = this, exit = this.exit();\n enter = typeof onenter === \"function\" ? onenter(enter) : enter.append(onenter + \"\");\n if (onupdate != null) update = onupdate(update);\n if (onexit == null) exit.remove(); else onexit(exit);\n return enter && update ? enter.merge(update).order() : update;\n}\n","import {Selection} from \"./index\";\n\nexport default function(selection) {\n\n for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Selection(merges, this._parents);\n}\n","export default function() {\n\n for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {\n for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n if (node = group[i]) {\n if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next);\n next = node;\n }\n }\n }\n\n return this;\n}\n","export default function() {\n var callback = arguments[0];\n arguments[0] = this;\n callback.apply(null, arguments);\n return this;\n}\n","export default function() {\n var nodes = new Array(this.size()), i = -1;\n this.each(function() { nodes[++i] = this; });\n return nodes;\n}\n","export default function() {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n var node = group[i];\n if (node) return node;\n }\n }\n\n return null;\n}\n","export default function() {\n var size = 0;\n this.each(function() { ++size; });\n return size;\n}\n","export default function() {\n return !this.node();\n}\n","export default function(callback) {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) callback.call(node, node.__data__, i, group);\n }\n }\n\n return this;\n}\n","import creator from \"../creator\";\n\nexport default function(name) {\n var create = typeof name === \"function\" ? name : creator(name);\n return this.select(function() {\n return this.appendChild(create.apply(this, arguments));\n });\n}\n","export default function(value) {\n return arguments.length\n ? this.property(\"__data__\", value)\n : this.node().__data__;\n}\n","import {Selection, root} from \"./selection/index\";\n\nexport default function(selector) {\n return typeof selector === \"string\"\n ? new Selection([[document.querySelector(selector)]], [document.documentElement])\n : new Selection([[selector]], root);\n}\n","import {event} from \"d3-selection\";\n\nexport function nopropagation() {\n event.stopImmediatePropagation();\n}\n\nexport default function() {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n","import {select} from \"d3-selection\";\nimport noevent from \"./noevent.js\";\n\nexport default function(view) {\n var root = view.document.documentElement,\n selection = select(view).on(\"dragstart.drag\", noevent, true);\n if (\"onselectstart\" in root) {\n selection.on(\"selectstart.drag\", noevent, true);\n } else {\n root.__noselect = root.style.MozUserSelect;\n root.style.MozUserSelect = \"none\";\n }\n}\n\nexport function yesdrag(view, noclick) {\n var root = view.document.documentElement,\n selection = select(view).on(\"dragstart.drag\", null);\n if (noclick) {\n selection.on(\"click.drag\", noevent, true);\n setTimeout(function() { selection.on(\"click.drag\", null); }, 0);\n }\n if (\"onselectstart\" in root) {\n selection.on(\"selectstart.drag\", null);\n } else {\n root.style.MozUserSelect = root.__noselect;\n delete root.__noselect;\n }\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: function(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable: function() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb: function() {\n return this;\n },\n displayable: function() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return \"#\" + hex(this.r) + hex(this.g) + hex(this.b);\n}\n\nfunction rgb_formatRgb() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"rgb(\" : \"rgba(\")\n + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.b) || 0))\n + (a === 1 ? \")\" : \", \" + a + \")\");\n}\n\nfunction hex(value) {\n value = Math.max(0, Math.min(255, Math.round(value) || 0));\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n displayable: function() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl: function() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"hsl(\" : \"hsla(\")\n + (this.h || 0) + \", \"\n + (this.s || 0) * 100 + \"%, \"\n + (this.l || 0) * 100 + \"%\"\n + (a === 1 ? \")\" : \", \" + a + \")\");\n }\n}));\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","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 function(x) {\n return function() {\n return x;\n };\n}\n","import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","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","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 {event} from \"./selection/on\";\n\nexport default function() {\n var current = event, source;\n while (source = current.sourceEvent) current = source;\n return current;\n}\n","export default function(node, event) {\n var svg = node.ownerSVGElement || node;\n\n if (svg.createSVGPoint) {\n var point = svg.createSVGPoint();\n point.x = event.clientX, point.y = event.clientY;\n point = point.matrixTransform(node.getScreenCTM().inverse());\n return [point.x, point.y];\n }\n\n var rect = node.getBoundingClientRect();\n return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop];\n}\n","import sourceEvent from \"./sourceEvent\";\nimport point from \"./point\";\n\nexport default function(node, touches, identifier) {\n if (arguments.length < 3) identifier = touches, touches = sourceEvent().changedTouches;\n\n for (var i = 0, n = touches ? touches.length : 0, touch; i < n; ++i) {\n if ((touch = touches[i]).identifier === identifier) {\n return point(node, touch);\n }\n }\n\n return null;\n}\n","import sourceEvent from \"./sourceEvent\";\nimport point from \"./point\";\n\nexport default function(node) {\n var event = sourceEvent();\n if (event.changedTouches) event = event.changedTouches[0];\n return point(node, event);\n}\n","var frame = 0, // is an animation frame pending?\n timeout = 0, // is a timeout pending?\n interval = 0, // are any timers active?\n pokeDelay = 1000, // how frequently we check for clock skew\n taskHead,\n taskTail,\n clockLast = 0,\n clockNow = 0,\n clockSkew = 0,\n clock = typeof performance === \"object\" && performance.now ? performance : Date,\n setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n clockNow = 0;\n}\n\nexport function Timer() {\n this._call =\n this._time =\n this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function(callback, delay, time) {\n if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail) taskTail._next = this;\n else taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\n\nexport function timer(callback, delay, time) {\n var t = new Timer;\n t.restart(callback, delay, time);\n return t;\n}\n\nexport function timerFlush() {\n now(); // Get the current time, if not already set.\n ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n var t = taskHead, e;\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(null, e);\n t = t._next;\n }\n --frame;\n}\n\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\n\nfunction poke() {\n var now = clock.now(), delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n var t0, t1 = taskHead, t2, time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\n\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\n","import {Timer} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n var t = new Timer;\n delay = delay == null ? 0 : +delay;\n t.restart(function(elapsed) {\n t.stop();\n callback(elapsed + delay);\n }, delay, time);\n return t;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {timer, timeout} from \"d3-timer\";\n\nvar emptyOn = dispatch(\"start\", \"end\", \"cancel\", \"interrupt\");\nvar emptyTween = [];\n\nexport var CREATED = 0;\nexport var SCHEDULED = 1;\nexport var STARTING = 2;\nexport var STARTED = 3;\nexport var RUNNING = 4;\nexport var ENDING = 5;\nexport var ENDED = 6;\n\nexport default function(node, name, id, index, group, timing) {\n var schedules = node.__transition;\n if (!schedules) node.__transition = {};\n else if (id in schedules) return;\n create(node, id, {\n name: name,\n index: index, // For context during callback.\n group: group, // For context during callback.\n on: emptyOn,\n tween: emptyTween,\n time: timing.time,\n delay: timing.delay,\n duration: timing.duration,\n ease: timing.ease,\n timer: null,\n state: CREATED\n });\n}\n\nexport function init(node, id) {\n var schedule = get(node, id);\n if (schedule.state > CREATED) throw new Error(\"too late; already scheduled\");\n return schedule;\n}\n\nexport function set(node, id) {\n var schedule = get(node, id);\n if (schedule.state > STARTED) throw new Error(\"too late; already running\");\n return schedule;\n}\n\nexport function get(node, id) {\n var schedule = node.__transition;\n if (!schedule || !(schedule = schedule[id])) throw new Error(\"transition not found\");\n return schedule;\n}\n\nfunction create(node, id, self) {\n var schedules = node.__transition,\n tween;\n\n // Initialize the self timer when the transition is created.\n // Note the actual delay is not known until the first callback!\n schedules[id] = self;\n self.timer = timer(schedule, 0, self.time);\n\n function schedule(elapsed) {\n self.state = SCHEDULED;\n self.timer.restart(start, self.delay, self.time);\n\n // If the elapsed delay is less than our first sleep, start immediately.\n if (self.delay <= elapsed) start(elapsed - self.delay);\n }\n\n function start(elapsed) {\n var i, j, n, o;\n\n // If the state is not SCHEDULED, then we previously errored on start.\n if (self.state !== SCHEDULED) return stop();\n\n for (i in schedules) {\n o = schedules[i];\n if (o.name !== self.name) continue;\n\n // While this element already has a starting transition during this frame,\n // defer starting an interrupting transition until that transition has a\n // chance to tick (and possibly end); see d3/d3-transition#54!\n if (o.state === STARTED) return timeout(start);\n\n // Interrupt the active transition, if any.\n if (o.state === RUNNING) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"interrupt\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n\n // Cancel any pre-empted transitions.\n else if (+i < id) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"cancel\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n }\n\n // Defer the first tick to end of the current frame; see d3/d3#1576.\n // Note the transition may be canceled after start and before the first tick!\n // Note this must be scheduled before the start event; see d3/d3-transition#16!\n // Assuming this is successful, subsequent callbacks go straight to tick.\n timeout(function() {\n if (self.state === STARTED) {\n self.state = RUNNING;\n self.timer.restart(tick, self.delay, self.time);\n tick(elapsed);\n }\n });\n\n // Dispatch the start event.\n // Note this must be done before the tween are initialized.\n self.state = STARTING;\n self.on.call(\"start\", node, node.__data__, self.index, self.group);\n if (self.state !== STARTING) return; // interrupted\n self.state = STARTED;\n\n // Initialize the tween, deleting null tween.\n tween = new Array(n = self.tween.length);\n for (i = 0, j = -1; i < n; ++i) {\n if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {\n tween[++j] = o;\n }\n }\n tween.length = j + 1;\n }\n\n function tick(elapsed) {\n var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1),\n i = -1,\n n = tween.length;\n\n while (++i < n) {\n tween[i].call(node, t);\n }\n\n // Dispatch the end event.\n if (self.state === ENDING) {\n self.on.call(\"end\", node, node.__data__, self.index, self.group);\n stop();\n }\n }\n\n function stop() {\n self.state = ENDED;\n self.timer.stop();\n delete schedules[id];\n for (var i in schedules) return; // eslint-disable-line no-unused-vars\n delete node.__transition;\n }\n}\n","import {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","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 decompose, {identity} from \"./decompose.js\";\n\nvar cssNode,\n cssRoot,\n cssView,\n svgNode;\n\nexport function parseCss(value) {\n if (value === \"none\") return identity;\n if (!cssNode) cssNode = document.createElement(\"DIV\"), cssRoot = document.documentElement, cssView = document.defaultView;\n cssNode.style.transform = value;\n value = cssView.getComputedStyle(cssRoot.appendChild(cssNode), null).getPropertyValue(\"transform\");\n cssRoot.removeChild(cssNode);\n value = value.slice(7, -1).split(\",\");\n return decompose(+value[0], +value[1], +value[2], +value[3], +value[4], +value[5]);\n}\n\nexport function parseSvg(value) {\n if (value == null) return identity;\n if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n svgNode.setAttribute(\"transform\", value);\n if (!(value = svgNode.transform.baseVal.consolidate())) return identity;\n value = value.matrix;\n return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n}\n","import number from \"../number.js\";\nimport {parseCss, parseSvg} from \"./parse.js\";\n\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n\n function pop(s) {\n return s.length ? s.pop() + \" \" : \"\";\n }\n\n function translate(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb || yb) {\n s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n }\n }\n\n function rotate(a, b, s, q) {\n if (a !== b) {\n if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path\n q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"rotate(\" + b + degParen);\n }\n }\n\n function skewX(a, b, s, q) {\n if (a !== b) {\n q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"skewX(\" + b + degParen);\n }\n }\n\n function scale(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb !== 1 || yb !== 1) {\n s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n }\n }\n\n return function(a, b) {\n var s = [], // string constants and placeholders\n q = []; // number interpolators\n a = parse(a), b = parse(b);\n translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n rotate(a.rotate, b.rotate, s, q);\n skewX(a.skewX, b.skewX, s, q);\n scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n a = b = null; // gc\n return function(t) {\n var i = -1, n = q.length, o;\n while (++i < n) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n };\n };\n}\n\nexport var interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nexport var interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\n","import {get, set} from \"./schedule.js\";\n\nfunction tweenRemove(id, name) {\n var tween0, tween1;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = tween0 = tween;\n for (var i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1 = tween1.slice();\n tween1.splice(i, 1);\n break;\n }\n }\n }\n\n schedule.tween = tween1;\n };\n}\n\nfunction tweenFunction(id, name, value) {\n var tween0, tween1;\n if (typeof value !== \"function\") throw new Error;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = (tween0 = tween).slice();\n for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1[i] = t;\n break;\n }\n }\n if (i === n) tween1.push(t);\n }\n\n schedule.tween = tween1;\n };\n}\n\nexport default function(name, value) {\n var id = this._id;\n\n name += \"\";\n\n if (arguments.length < 2) {\n var tween = get(this.node(), id).tween;\n for (var i = 0, n = tween.length, t; i < n; ++i) {\n if ((t = tween[i]).name === name) {\n return t.value;\n }\n }\n return null;\n }\n\n return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value));\n}\n\nexport function tweenValue(transition, name, value) {\n var id = transition._id;\n\n transition.each(function() {\n var schedule = set(this, id);\n (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);\n });\n\n return function(node) {\n return get(node, id).value[name];\n };\n}\n","import {color} from \"d3-color\";\nimport {interpolateNumber, interpolateRgb, interpolateString} from \"d3-interpolate\";\n\nexport default function(a, b) {\n var c;\n return (typeof b === \"number\" ? interpolateNumber\n : b instanceof color ? interpolateRgb\n : (c = color(b)) ? (b = c, interpolateRgb)\n : interpolateString)(a, b);\n}\n","import {interpolateTransformSvg as interpolateTransform} from \"d3-interpolate\";\nimport {namespace} from \"d3-selection\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttribute(name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrConstantNS(fullname, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttributeNS(fullname.space, fullname.local);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttribute(name);\n string0 = this.getAttribute(name);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction attrFunctionNS(fullname, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);\n string0 = this.getAttributeNS(fullname.space, fullname.local);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name), i = fullname === \"transform\" ? interpolateTransform : interpolate;\n return this.attrTween(name, typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, \"attr.\" + name, value))\n : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname)\n : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value));\n}\n","import {namespace} from \"d3-selection\";\n\nfunction attrInterpolate(name, i) {\n return function(t) {\n this.setAttribute(name, i.call(this, t));\n };\n}\n\nfunction attrInterpolateNS(fullname, i) {\n return function(t) {\n this.setAttributeNS(fullname.space, fullname.local, i.call(this, t));\n };\n}\n\nfunction attrTweenNS(fullname, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolateNS(fullname, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nfunction attrTween(name, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolate(name, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value) {\n var key = \"attr.\" + name;\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n var fullname = namespace(name);\n return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n}\n","import {get, init} from \"./schedule.js\";\n\nfunction delayFunction(id, value) {\n return function() {\n init(this, id).delay = +value.apply(this, arguments);\n };\n}\n\nfunction delayConstant(id, value) {\n return value = +value, function() {\n init(this, id).delay = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? delayFunction\n : delayConstant)(id, value))\n : get(this.node(), id).delay;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction durationFunction(id, value) {\n return function() {\n set(this, id).duration = +value.apply(this, arguments);\n };\n}\n\nfunction durationConstant(id, value) {\n return value = +value, function() {\n set(this, id).duration = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? durationFunction\n : durationConstant)(id, value))\n : get(this.node(), id).duration;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction easeConstant(id, value) {\n if (typeof value !== \"function\") throw new Error;\n return function() {\n set(this, id).ease = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each(easeConstant(id, value))\n : get(this.node(), id).ease;\n}\n","import {get, set, init} from \"./schedule.js\";\n\nfunction start(name) {\n return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n var i = t.indexOf(\".\");\n if (i >= 0) t = t.slice(0, i);\n return !t || t === \"start\";\n });\n}\n\nfunction onFunction(id, name, listener) {\n var on0, on1, sit = start(name) ? init : set;\n return function() {\n var schedule = sit(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, listener) {\n var id = this._id;\n\n return arguments.length < 2\n ? get(this.node(), id).on.on(name)\n : this.each(onFunction(id, name, listener));\n}\n","import {selection} from \"d3-selection\";\n\nvar Selection = selection.prototype.constructor;\n\nexport default function() {\n return new Selection(this._groups, this._parents);\n}\n","import {interpolateTransformCss as interpolateTransform} from \"d3-interpolate\";\nimport {style} from \"d3-selection\";\nimport {set} from \"./schedule.js\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction styleNull(name, interpolate) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n string1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, string10 = string1);\n };\n}\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = style(this, name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction styleFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n value1 = value(this),\n string1 = value1 + \"\";\n if (value1 == null) string1 = value1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction styleMaybeRemove(id, name) {\n var on0, on1, listener0, key = \"style.\" + name, event = \"end.\" + key, remove;\n return function() {\n var schedule = set(this, id),\n on = schedule.on,\n listener = schedule.value[key] == null ? remove || (remove = styleRemove(name)) : undefined;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, value, priority) {\n var i = (name += \"\") === \"transform\" ? interpolateTransform : interpolate;\n return value == null ? this\n .styleTween(name, styleNull(name, i))\n .on(\"end.style.\" + name, styleRemove(name))\n : typeof value === \"function\" ? this\n .styleTween(name, styleFunction(name, i, tweenValue(this, \"style.\" + name, value)))\n .each(styleMaybeRemove(this._id, name))\n : this\n .styleTween(name, styleConstant(name, i, value), priority)\n .on(\"end.style.\" + name, null);\n}\n","function styleInterpolate(name, i, priority) {\n return function(t) {\n this.style.setProperty(name, i.call(this, t), priority);\n };\n}\n\nfunction styleTween(name, value, priority) {\n var t, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority);\n return t;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value, priority) {\n var key = \"style.\" + (name += \"\");\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n}\n","function textInterpolate(i) {\n return function(t) {\n this.textContent = i.call(this, t);\n };\n}\n\nfunction textTween(value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && textInterpolate(i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(value) {\n var key = \"text\";\n if (arguments.length < 1) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, textTween(value));\n}\n","import {selection} from \"d3-selection\";\nimport transition_attr from \"./attr.js\";\nimport transition_attrTween from \"./attrTween.js\";\nimport transition_delay from \"./delay.js\";\nimport transition_duration from \"./duration.js\";\nimport transition_ease from \"./ease.js\";\nimport transition_filter from \"./filter.js\";\nimport transition_merge from \"./merge.js\";\nimport transition_on from \"./on.js\";\nimport transition_remove from \"./remove.js\";\nimport transition_select from \"./select.js\";\nimport transition_selectAll from \"./selectAll.js\";\nimport transition_selection from \"./selection.js\";\nimport transition_style from \"./style.js\";\nimport transition_styleTween from \"./styleTween.js\";\nimport transition_text from \"./text.js\";\nimport transition_textTween from \"./textTween.js\";\nimport transition_transition from \"./transition.js\";\nimport transition_tween from \"./tween.js\";\nimport transition_end from \"./end.js\";\n\nvar id = 0;\n\nexport function Transition(groups, parents, name, id) {\n this._groups = groups;\n this._parents = parents;\n this._name = name;\n this._id = id;\n}\n\nexport default function transition(name) {\n return selection().transition(name);\n}\n\nexport function newId() {\n return ++id;\n}\n\nvar selection_prototype = selection.prototype;\n\nTransition.prototype = transition.prototype = {\n constructor: Transition,\n select: transition_select,\n selectAll: transition_selectAll,\n filter: transition_filter,\n merge: transition_merge,\n selection: transition_selection,\n transition: transition_transition,\n call: selection_prototype.call,\n nodes: selection_prototype.nodes,\n node: selection_prototype.node,\n size: selection_prototype.size,\n empty: selection_prototype.empty,\n each: selection_prototype.each,\n on: transition_on,\n attr: transition_attr,\n attrTween: transition_attrTween,\n style: transition_style,\n styleTween: transition_styleTween,\n text: transition_text,\n textTween: transition_textTween,\n remove: transition_remove,\n tween: transition_tween,\n delay: transition_delay,\n duration: transition_duration,\n ease: transition_ease,\n end: transition_end\n};\n","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 {selector} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n schedule(subgroup[i], name, id, i, subgroup, get(node, id));\n }\n }\n }\n\n return new Transition(subgroups, this._parents, name, id);\n}\n","import {selectorAll} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n for (var children = select.call(node, node.__data__, i, group), child, inherit = get(node, id), k = 0, l = children.length; k < l; ++k) {\n if (child = children[k]) {\n schedule(child, name, id, k, children, inherit);\n }\n }\n subgroups.push(children);\n parents.push(node);\n }\n }\n }\n\n return new Transition(subgroups, parents, name, id);\n}\n","import {matcher} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Transition(subgroups, this._parents, this._name, this._id);\n}\n","import {Transition} from \"./index.js\";\n\nexport default function(transition) {\n if (transition._id !== this._id) throw new Error;\n\n for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Transition(merges, this._parents, this._name, this._id);\n}\n","import {Transition, newId} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function() {\n var name = this._name,\n id0 = this._id,\n id1 = newId();\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n var inherit = get(node, id0);\n schedule(node, name, id1, i, group, {\n time: inherit.time + inherit.delay + inherit.duration,\n delay: 0,\n duration: inherit.duration,\n ease: inherit.ease\n });\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id1);\n}\n","import {tweenValue} from \"./tween.js\";\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var value1 = value(this);\n this.textContent = value1 == null ? \"\" : value1;\n };\n}\n\nexport default function(value) {\n return this.tween(\"text\", typeof value === \"function\"\n ? textFunction(tweenValue(this, \"text\", value))\n : textConstant(value == null ? \"\" : value + \"\"));\n}\n","function removeFunction(id) {\n return function() {\n var parent = this.parentNode;\n for (var i in this.__transition) if (+i !== id) return;\n if (parent) parent.removeChild(this);\n };\n}\n\nexport default function() {\n return this.on(\"end.remove\", removeFunction(this._id));\n}\n","import {set} from \"./schedule.js\";\n\nexport default function() {\n var on0, on1, that = this, id = that._id, size = that.size();\n return new Promise(function(resolve, reject) {\n var cancel = {value: reject},\n end = {value: function() { if (--size === 0) resolve(); }};\n\n that.each(function() {\n var schedule = set(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) {\n on1 = (on0 = on).copy();\n on1._.cancel.push(cancel);\n on1._.interrupt.push(cancel);\n on1._.end.push(end);\n }\n\n schedule.on = on1;\n });\n });\n}\n","import {Transition, newId} from \"../transition/index.js\";\nimport schedule from \"../transition/schedule.js\";\nimport {easeCubicInOut} from \"d3-ease\";\nimport {now} from \"d3-timer\";\n\nvar defaultTiming = {\n time: null, // Set on use.\n delay: 0,\n duration: 250,\n ease: easeCubicInOut\n};\n\nfunction inherit(node, id) {\n var timing;\n while (!(timing = node.__transition) || !(timing = timing[id])) {\n if (!(node = node.parentNode)) {\n return defaultTiming.time = now(), defaultTiming;\n }\n }\n return timing;\n}\n\nexport default function(name) {\n var id,\n timing;\n\n if (name instanceof Transition) {\n id = name._id, name = name._name;\n } else {\n id = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + \"\";\n }\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n schedule(node, name, id, i, group, timing || inherit(node, id));\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id);\n}\n","import {selection} from \"d3-selection\";\nimport selection_interrupt from \"./interrupt.js\";\nimport selection_transition from \"./transition.js\";\n\nselection.prototype.interrupt = selection_interrupt;\nselection.prototype.transition = selection_transition;\n","import interrupt from \"../interrupt.js\";\n\nexport default function(name) {\n return this.each(function() {\n interrupt(this, name);\n });\n}\n","import {Transition} from \"./transition/index.js\";\nimport {SCHEDULED} from \"./transition/schedule.js\";\n\nvar root = [null];\n\nexport default function(node, name) {\n var schedules = node.__transition,\n schedule,\n i;\n\n if (schedules) {\n name = name == null ? null : name + \"\";\n for (i in schedules) {\n if ((schedule = schedules[i]).state > SCHEDULED && schedule.name === name) {\n return new Transition([[node]], root, name, +i);\n }\n }\n }\n\n return null;\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(target, type, selection) {\n this.target = target;\n this.type = type;\n this.selection = selection;\n}\n","import {event} from \"d3-selection\";\n\nexport function nopropagation() {\n event.stopImmediatePropagation();\n}\n\nexport default function() {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolate} from \"d3-interpolate\";\nimport {customEvent, event, touch, mouse, select} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant.js\";\nimport BrushEvent from \"./event.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\n\nvar MODE_DRAG = {name: \"drag\"},\n MODE_SPACE = {name: \"space\"},\n MODE_HANDLE = {name: \"handle\"},\n MODE_CENTER = {name: \"center\"};\n\nfunction number1(e) {\n return [+e[0], +e[1]];\n}\n\nfunction number2(e) {\n return [number1(e[0]), number1(e[1])];\n}\n\nfunction toucher(identifier) {\n return function(target) {\n return touch(target, event.touches, identifier);\n };\n}\n\nvar X = {\n name: \"x\",\n handles: [\"w\", \"e\"].map(type),\n input: function(x, e) { return x == null ? null : [[+x[0], e[0][1]], [+x[1], e[1][1]]]; },\n output: function(xy) { return xy && [xy[0][0], xy[1][0]]; }\n};\n\nvar Y = {\n name: \"y\",\n handles: [\"n\", \"s\"].map(type),\n input: function(y, e) { return y == null ? null : [[e[0][0], +y[0]], [e[1][0], +y[1]]]; },\n output: function(xy) { return xy && [xy[0][1], xy[1][1]]; }\n};\n\nvar XY = {\n name: \"xy\",\n handles: [\"n\", \"w\", \"e\", \"s\", \"nw\", \"ne\", \"sw\", \"se\"].map(type),\n input: function(xy) { return xy == null ? null : number2(xy); },\n output: function(xy) { return xy; }\n};\n\nvar cursors = {\n overlay: \"crosshair\",\n selection: \"move\",\n n: \"ns-resize\",\n e: \"ew-resize\",\n s: \"ns-resize\",\n w: \"ew-resize\",\n nw: \"nwse-resize\",\n ne: \"nesw-resize\",\n se: \"nwse-resize\",\n sw: \"nesw-resize\"\n};\n\nvar flipX = {\n e: \"w\",\n w: \"e\",\n nw: \"ne\",\n ne: \"nw\",\n se: \"sw\",\n sw: \"se\"\n};\n\nvar flipY = {\n n: \"s\",\n s: \"n\",\n nw: \"sw\",\n ne: \"se\",\n se: \"ne\",\n sw: \"nw\"\n};\n\nvar signsX = {\n overlay: +1,\n selection: +1,\n n: null,\n e: +1,\n s: null,\n w: -1,\n nw: -1,\n ne: +1,\n se: +1,\n sw: -1\n};\n\nvar signsY = {\n overlay: +1,\n selection: +1,\n n: -1,\n e: null,\n s: +1,\n w: null,\n nw: -1,\n ne: -1,\n se: +1,\n sw: +1\n};\n\nfunction type(t) {\n return {type: t};\n}\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter() {\n return !event.ctrlKey && !event.button;\n}\n\nfunction defaultExtent() {\n var svg = this.ownerSVGElement || this;\n if (svg.hasAttribute(\"viewBox\")) {\n svg = svg.viewBox.baseVal;\n return [[svg.x, svg.y], [svg.x + svg.width, svg.y + svg.height]];\n }\n return [[0, 0], [svg.width.baseVal.value, svg.height.baseVal.value]];\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\n// Like d3.local, but with the name “__brush” rather than auto-generated.\nfunction local(node) {\n while (!node.__brush) if (!(node = node.parentNode)) return;\n return node.__brush;\n}\n\nfunction empty(extent) {\n return extent[0][0] === extent[1][0]\n || extent[0][1] === extent[1][1];\n}\n\nexport function brushSelection(node) {\n var state = node.__brush;\n return state ? state.dim.output(state.selection) : null;\n}\n\nexport function brushX() {\n return brush(X);\n}\n\nexport function brushY() {\n return brush(Y);\n}\n\nexport default function() {\n return brush(XY);\n}\n\nfunction brush(dim) {\n var extent = defaultExtent,\n filter = defaultFilter,\n touchable = defaultTouchable,\n keys = true,\n listeners = dispatch(\"start\", \"brush\", \"end\"),\n handleSize = 6,\n touchending;\n\n function brush(group) {\n var overlay = group\n .property(\"__brush\", initialize)\n .selectAll(\".overlay\")\n .data([type(\"overlay\")]);\n\n overlay.enter().append(\"rect\")\n .attr(\"class\", \"overlay\")\n .attr(\"pointer-events\", \"all\")\n .attr(\"cursor\", cursors.overlay)\n .merge(overlay)\n .each(function() {\n var extent = local(this).extent;\n select(this)\n .attr(\"x\", extent[0][0])\n .attr(\"y\", extent[0][1])\n .attr(\"width\", extent[1][0] - extent[0][0])\n .attr(\"height\", extent[1][1] - extent[0][1]);\n });\n\n group.selectAll(\".selection\")\n .data([type(\"selection\")])\n .enter().append(\"rect\")\n .attr(\"class\", \"selection\")\n .attr(\"cursor\", cursors.selection)\n .attr(\"fill\", \"#777\")\n .attr(\"fill-opacity\", 0.3)\n .attr(\"stroke\", \"#fff\")\n .attr(\"shape-rendering\", \"crispEdges\");\n\n var handle = group.selectAll(\".handle\")\n .data(dim.handles, function(d) { return d.type; });\n\n handle.exit().remove();\n\n handle.enter().append(\"rect\")\n .attr(\"class\", function(d) { return \"handle handle--\" + d.type; })\n .attr(\"cursor\", function(d) { return cursors[d.type]; });\n\n group\n .each(redraw)\n .attr(\"fill\", \"none\")\n .attr(\"pointer-events\", \"all\")\n .on(\"mousedown.brush\", started)\n .filter(touchable)\n .on(\"touchstart.brush\", started)\n .on(\"touchmove.brush\", touchmoved)\n .on(\"touchend.brush touchcancel.brush\", touchended)\n .style(\"touch-action\", \"none\")\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n brush.move = function(group, selection) {\n if (group.selection) {\n group\n .on(\"start.brush\", function() { emitter(this, arguments).beforestart().start(); })\n .on(\"interrupt.brush end.brush\", function() { emitter(this, arguments).end(); })\n .tween(\"brush\", function() {\n var that = this,\n state = that.__brush,\n emit = emitter(that, arguments),\n selection0 = state.selection,\n selection1 = dim.input(typeof selection === \"function\" ? selection.apply(this, arguments) : selection, state.extent),\n i = interpolate(selection0, selection1);\n\n function tween(t) {\n state.selection = t === 1 && selection1 === null ? null : i(t);\n redraw.call(that);\n emit.brush();\n }\n\n return selection0 !== null && selection1 !== null ? tween : tween(1);\n });\n } else {\n group\n .each(function() {\n var that = this,\n args = arguments,\n state = that.__brush,\n selection1 = dim.input(typeof selection === \"function\" ? selection.apply(that, args) : selection, state.extent),\n emit = emitter(that, args).beforestart();\n\n interrupt(that);\n state.selection = selection1 === null ? null : selection1;\n redraw.call(that);\n emit.start().brush().end();\n });\n }\n };\n\n brush.clear = function(group) {\n brush.move(group, null);\n };\n\n function redraw() {\n var group = select(this),\n selection = local(this).selection;\n\n if (selection) {\n group.selectAll(\".selection\")\n .style(\"display\", null)\n .attr(\"x\", selection[0][0])\n .attr(\"y\", selection[0][1])\n .attr(\"width\", selection[1][0] - selection[0][0])\n .attr(\"height\", selection[1][1] - selection[0][1]);\n\n group.selectAll(\".handle\")\n .style(\"display\", null)\n .attr(\"x\", function(d) { return d.type[d.type.length - 1] === \"e\" ? selection[1][0] - handleSize / 2 : selection[0][0] - handleSize / 2; })\n .attr(\"y\", function(d) { return d.type[0] === \"s\" ? selection[1][1] - handleSize / 2 : selection[0][1] - handleSize / 2; })\n .attr(\"width\", function(d) { return d.type === \"n\" || d.type === \"s\" ? selection[1][0] - selection[0][0] + handleSize : handleSize; })\n .attr(\"height\", function(d) { return d.type === \"e\" || d.type === \"w\" ? selection[1][1] - selection[0][1] + handleSize : handleSize; });\n }\n\n else {\n group.selectAll(\".selection,.handle\")\n .style(\"display\", \"none\")\n .attr(\"x\", null)\n .attr(\"y\", null)\n .attr(\"width\", null)\n .attr(\"height\", null);\n }\n }\n\n function emitter(that, args, clean) {\n var emit = that.__brush.emitter;\n return emit && (!clean || !emit.clean) ? emit : new Emitter(that, args, clean);\n }\n\n function Emitter(that, args, clean) {\n this.that = that;\n this.args = args;\n this.state = that.__brush;\n this.active = 0;\n this.clean = clean;\n }\n\n Emitter.prototype = {\n beforestart: function() {\n if (++this.active === 1) this.state.emitter = this, this.starting = true;\n return this;\n },\n start: function() {\n if (this.starting) this.starting = false, this.emit(\"start\");\n else this.emit(\"brush\");\n return this;\n },\n brush: function() {\n this.emit(\"brush\");\n return this;\n },\n end: function() {\n if (--this.active === 0) delete this.state.emitter, this.emit(\"end\");\n return this;\n },\n emit: function(type) {\n customEvent(new BrushEvent(brush, type, dim.output(this.state.selection)), listeners.apply, listeners, [type, this.that, this.args]);\n }\n };\n\n function started() {\n if (touchending && !event.touches) return;\n if (!filter.apply(this, arguments)) return;\n\n var that = this,\n type = event.target.__data__.type,\n mode = (keys && event.metaKey ? type = \"overlay\" : type) === \"selection\" ? MODE_DRAG : (keys && event.altKey ? MODE_CENTER : MODE_HANDLE),\n signX = dim === Y ? null : signsX[type],\n signY = dim === X ? null : signsY[type],\n state = local(that),\n extent = state.extent,\n selection = state.selection,\n W = extent[0][0], w0, w1,\n N = extent[0][1], n0, n1,\n E = extent[1][0], e0, e1,\n S = extent[1][1], s0, s1,\n dx = 0,\n dy = 0,\n moving,\n shifting = signX && signY && keys && event.shiftKey,\n lockX,\n lockY,\n pointer = event.touches ? toucher(event.changedTouches[0].identifier) : mouse,\n point0 = pointer(that),\n point = point0,\n emit = emitter(that, arguments, true).beforestart();\n\n if (type === \"overlay\") {\n if (selection) moving = true;\n state.selection = selection = [\n [w0 = dim === Y ? W : point0[0], n0 = dim === X ? N : point0[1]],\n [e0 = dim === Y ? E : w0, s0 = dim === X ? S : n0]\n ];\n } else {\n w0 = selection[0][0];\n n0 = selection[0][1];\n e0 = selection[1][0];\n s0 = selection[1][1];\n }\n\n w1 = w0;\n n1 = n0;\n e1 = e0;\n s1 = s0;\n\n var group = select(that)\n .attr(\"pointer-events\", \"none\");\n\n var overlay = group.selectAll(\".overlay\")\n .attr(\"cursor\", cursors[type]);\n\n if (event.touches) {\n emit.moved = moved;\n emit.ended = ended;\n } else {\n var view = select(event.view)\n .on(\"mousemove.brush\", moved, true)\n .on(\"mouseup.brush\", ended, true);\n if (keys) view\n .on(\"keydown.brush\", keydowned, true)\n .on(\"keyup.brush\", keyupped, true)\n\n dragDisable(event.view);\n }\n\n nopropagation();\n interrupt(that);\n redraw.call(that);\n emit.start();\n\n function moved() {\n var point1 = pointer(that);\n if (shifting && !lockX && !lockY) {\n if (Math.abs(point1[0] - point[0]) > Math.abs(point1[1] - point[1])) lockY = true;\n else lockX = true;\n }\n point = point1;\n moving = true;\n noevent();\n move();\n }\n\n function move() {\n var t;\n\n dx = point[0] - point0[0];\n dy = point[1] - point0[1];\n\n switch (mode) {\n case MODE_SPACE:\n case MODE_DRAG: {\n if (signX) dx = Math.max(W - w0, Math.min(E - e0, dx)), w1 = w0 + dx, e1 = e0 + dx;\n if (signY) dy = Math.max(N - n0, Math.min(S - s0, dy)), n1 = n0 + dy, s1 = s0 + dy;\n break;\n }\n case MODE_HANDLE: {\n if (signX < 0) dx = Math.max(W - w0, Math.min(E - w0, dx)), w1 = w0 + dx, e1 = e0;\n else if (signX > 0) dx = Math.max(W - e0, Math.min(E - e0, dx)), w1 = w0, e1 = e0 + dx;\n if (signY < 0) dy = Math.max(N - n0, Math.min(S - n0, dy)), n1 = n0 + dy, s1 = s0;\n else if (signY > 0) dy = Math.max(N - s0, Math.min(S - s0, dy)), n1 = n0, s1 = s0 + dy;\n break;\n }\n case MODE_CENTER: {\n if (signX) w1 = Math.max(W, Math.min(E, w0 - dx * signX)), e1 = Math.max(W, Math.min(E, e0 + dx * signX));\n if (signY) n1 = Math.max(N, Math.min(S, n0 - dy * signY)), s1 = Math.max(N, Math.min(S, s0 + dy * signY));\n break;\n }\n }\n\n if (e1 < w1) {\n signX *= -1;\n t = w0, w0 = e0, e0 = t;\n t = w1, w1 = e1, e1 = t;\n if (type in flipX) overlay.attr(\"cursor\", cursors[type = flipX[type]]);\n }\n\n if (s1 < n1) {\n signY *= -1;\n t = n0, n0 = s0, s0 = t;\n t = n1, n1 = s1, s1 = t;\n if (type in flipY) overlay.attr(\"cursor\", cursors[type = flipY[type]]);\n }\n\n if (state.selection) selection = state.selection; // May be set by brush.move!\n if (lockX) w1 = selection[0][0], e1 = selection[1][0];\n if (lockY) n1 = selection[0][1], s1 = selection[1][1];\n\n if (selection[0][0] !== w1\n || selection[0][1] !== n1\n || selection[1][0] !== e1\n || selection[1][1] !== s1) {\n state.selection = [[w1, n1], [e1, s1]];\n redraw.call(that);\n emit.brush();\n }\n }\n\n function ended() {\n nopropagation();\n if (event.touches) {\n if (event.touches.length) return;\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!\n } else {\n dragEnable(event.view, moving);\n view.on(\"keydown.brush keyup.brush mousemove.brush mouseup.brush\", null);\n }\n group.attr(\"pointer-events\", \"all\");\n overlay.attr(\"cursor\", cursors.overlay);\n if (state.selection) selection = state.selection; // May be set by brush.move (on start)!\n if (empty(selection)) state.selection = null, redraw.call(that);\n emit.end();\n }\n\n function keydowned() {\n switch (event.keyCode) {\n case 16: { // SHIFT\n shifting = signX && signY;\n break;\n }\n case 18: { // ALT\n if (mode === MODE_HANDLE) {\n if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n mode = MODE_CENTER;\n move();\n }\n break;\n }\n case 32: { // SPACE; takes priority over ALT\n if (mode === MODE_HANDLE || mode === MODE_CENTER) {\n if (signX < 0) e0 = e1 - dx; else if (signX > 0) w0 = w1 - dx;\n if (signY < 0) s0 = s1 - dy; else if (signY > 0) n0 = n1 - dy;\n mode = MODE_SPACE;\n overlay.attr(\"cursor\", cursors.selection);\n move();\n }\n break;\n }\n default: return;\n }\n noevent();\n }\n\n function keyupped() {\n switch (event.keyCode) {\n case 16: { // SHIFT\n if (shifting) {\n lockX = lockY = shifting = false;\n move();\n }\n break;\n }\n case 18: { // ALT\n if (mode === MODE_CENTER) {\n if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n mode = MODE_HANDLE;\n move();\n }\n break;\n }\n case 32: { // SPACE\n if (mode === MODE_SPACE) {\n if (event.altKey) {\n if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n mode = MODE_CENTER;\n } else {\n if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n mode = MODE_HANDLE;\n }\n overlay.attr(\"cursor\", cursors[type]);\n move();\n }\n break;\n }\n default: return;\n }\n noevent();\n }\n }\n\n function touchmoved() {\n emitter(this, arguments).moved();\n }\n\n function touchended() {\n emitter(this, arguments).ended();\n }\n\n function initialize() {\n var state = this.__brush || {selection: null};\n state.extent = number2(extent.apply(this, arguments));\n state.dim = dim;\n return state;\n }\n\n brush.extent = function(_) {\n return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant(number2(_)), brush) : extent;\n };\n\n brush.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), brush) : filter;\n };\n\n brush.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), brush) : touchable;\n };\n\n brush.handleSize = function(_) {\n return arguments.length ? (handleSize = +_, brush) : handleSize;\n };\n\n brush.keyModifiers = function(_) {\n return arguments.length ? (keys = !!_, brush) : keys;\n };\n\n brush.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? brush : value;\n };\n\n return brush;\n}\n","export var cos = Math.cos;\nexport var sin = Math.sin;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var tau = pi * 2;\nexport var max = Math.max;\n","import {range} from \"d3-array\";\nimport {max, tau} from \"./math\";\n\nfunction compareValue(compare) {\n return function(a, b) {\n return compare(\n a.source.value + a.target.value,\n b.source.value + b.target.value\n );\n };\n}\n\nexport default function() {\n var padAngle = 0,\n sortGroups = null,\n sortSubgroups = null,\n sortChords = null;\n\n function chord(matrix) {\n var n = matrix.length,\n groupSums = [],\n groupIndex = range(n),\n subgroupIndex = [],\n chords = [],\n groups = chords.groups = new Array(n),\n subgroups = new Array(n * n),\n k,\n x,\n x0,\n dx,\n i,\n j;\n\n // Compute the sum.\n k = 0, i = -1; while (++i < n) {\n x = 0, j = -1; while (++j < n) {\n x += matrix[i][j];\n }\n groupSums.push(x);\n subgroupIndex.push(range(n));\n k += x;\n }\n\n // Sort groups…\n if (sortGroups) groupIndex.sort(function(a, b) {\n return sortGroups(groupSums[a], groupSums[b]);\n });\n\n // Sort subgroups…\n if (sortSubgroups) subgroupIndex.forEach(function(d, i) {\n d.sort(function(a, b) {\n return sortSubgroups(matrix[i][a], matrix[i][b]);\n });\n });\n\n // Convert the sum to scaling factor for [0, 2pi].\n // TODO Allow start and end angle to be specified?\n // TODO Allow padding to be specified as percentage?\n k = max(0, tau - padAngle * n) / k;\n dx = k ? padAngle : tau / n;\n\n // Compute the start and end angle for each group and subgroup.\n // Note: Opera has a bug reordering object literal properties!\n x = 0, i = -1; while (++i < n) {\n x0 = x, j = -1; while (++j < n) {\n var di = groupIndex[i],\n dj = subgroupIndex[di][j],\n v = matrix[di][dj],\n a0 = x,\n a1 = x += v * k;\n subgroups[dj * n + di] = {\n index: di,\n subindex: dj,\n startAngle: a0,\n endAngle: a1,\n value: v\n };\n }\n groups[di] = {\n index: di,\n startAngle: x0,\n endAngle: x,\n value: groupSums[di]\n };\n x += dx;\n }\n\n // Generate chords for each (non-empty) subgroup-subgroup link.\n i = -1; while (++i < n) {\n j = i - 1; while (++j < n) {\n var source = subgroups[j * n + i],\n target = subgroups[i * n + j];\n if (source.value || target.value) {\n chords.push(source.value < target.value\n ? {source: target, target: source}\n : {source: source, target: target});\n }\n }\n }\n\n return sortChords ? chords.sort(sortChords) : chords;\n }\n\n chord.padAngle = function(_) {\n return arguments.length ? (padAngle = max(0, _), chord) : padAngle;\n };\n\n chord.sortGroups = function(_) {\n return arguments.length ? (sortGroups = _, chord) : sortGroups;\n };\n\n chord.sortSubgroups = function(_) {\n return arguments.length ? (sortSubgroups = _, chord) : sortSubgroups;\n };\n\n chord.sortChords = function(_) {\n return arguments.length ? (_ == null ? sortChords = null : (sortChords = compareValue(_))._ = _, chord) : sortChords && sortChords._;\n };\n\n return chord;\n}\n","export var slice = Array.prototype.slice;\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","var pi = Math.PI,\n tau = 2 * pi,\n epsilon = 1e-6,\n tauEpsilon = tau - epsilon;\n\nfunction Path() {\n this._x0 = this._y0 = // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n}\n\nfunction path() {\n return new Path;\n}\n\nPath.prototype = path.prototype = {\n constructor: Path,\n moveTo: function(x, y) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y);\n },\n closePath: function() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._ += \"Z\";\n }\n },\n lineTo: function(x, y) {\n this._ += \"L\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n quadraticCurveTo: function(x1, y1, x, y) {\n this._ += \"Q\" + (+x1) + \",\" + (+y1) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) {\n this._ += \"C\" + (+x1) + \",\" + (+y1) + \",\" + (+x2) + \",\" + (+y2) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n arcTo: function(x1, y1, x2, y2, r) {\n x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n var x0 = this._x1,\n y0 = this._y1,\n x21 = x2 - x1,\n y21 = y2 - y1,\n x01 = x0 - x1,\n y01 = y0 - y1,\n l01_2 = x01 * x01 + y01 * y01;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x1,y1).\n if (this._x1 === null) {\n this._ += \"M\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n else if (!(l01_2 > epsilon));\n\n // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n // Equivalently, is (x1,y1) coincident with (x2,y2)?\n // Or, is the radius zero? Line to (x1,y1).\n else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n this._ += \"L\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Otherwise, draw an arc!\n else {\n var x20 = x2 - x0,\n y20 = y2 - y0,\n l21_2 = x21 * x21 + y21 * y21,\n l20_2 = x20 * x20 + y20 * y20,\n l21 = Math.sqrt(l21_2),\n l01 = Math.sqrt(l01_2),\n l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n t01 = l / l01,\n t21 = l / l21;\n\n // If the start tangent is not coincident with (x0,y0), line to.\n if (Math.abs(t01 - 1) > epsilon) {\n this._ += \"L\" + (x1 + t01 * x01) + \",\" + (y1 + t01 * y01);\n }\n\n this._ += \"A\" + r + \",\" + r + \",0,0,\" + (+(y01 * x20 > x01 * y20)) + \",\" + (this._x1 = x1 + t21 * x21) + \",\" + (this._y1 = y1 + t21 * y21);\n }\n },\n arc: function(x, y, r, a0, a1, ccw) {\n x = +x, y = +y, r = +r, ccw = !!ccw;\n var dx = r * Math.cos(a0),\n dy = r * Math.sin(a0),\n x0 = x + dx,\n y0 = y + dy,\n cw = 1 ^ ccw,\n da = ccw ? a0 - a1 : a1 - a0;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x0,y0).\n if (this._x1 === null) {\n this._ += \"M\" + x0 + \",\" + y0;\n }\n\n // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n this._ += \"L\" + x0 + \",\" + y0;\n }\n\n // Is this arc empty? We’re done.\n if (!r) return;\n\n // Does the angle go the wrong way? Flip the direction.\n if (da < 0) da = da % tau + tau;\n\n // Is this a complete circle? Draw two arcs to complete the circle.\n if (da > tauEpsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (x - dx) + \",\" + (y - dy) + \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (this._x1 = x0) + \",\" + (this._y1 = y0);\n }\n\n // Is this arc non-empty? Draw an arc!\n else if (da > epsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,\" + (+(da >= pi)) + \",\" + cw + \",\" + (this._x1 = x + r * Math.cos(a1)) + \",\" + (this._y1 = y + r * Math.sin(a1));\n }\n },\n rect: function(x, y, w, h) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y) + \"h\" + (+w) + \"v\" + (+h) + \"h\" + (-w) + \"Z\";\n },\n toString: function() {\n return this._;\n }\n};\n\nexport default path;\n","import {slice} from \"./array\";\nimport constant from \"./constant\";\nimport {cos, halfPi, sin} from \"./math\";\nimport {path} from \"d3-path\";\n\nfunction defaultSource(d) {\n return d.source;\n}\n\nfunction defaultTarget(d) {\n return d.target;\n}\n\nfunction defaultRadius(d) {\n return d.radius;\n}\n\nfunction defaultStartAngle(d) {\n return d.startAngle;\n}\n\nfunction defaultEndAngle(d) {\n return d.endAngle;\n}\n\nexport default function() {\n var source = defaultSource,\n target = defaultTarget,\n radius = defaultRadius,\n startAngle = defaultStartAngle,\n endAngle = defaultEndAngle,\n context = null;\n\n function ribbon() {\n var buffer,\n argv = slice.call(arguments),\n s = source.apply(this, argv),\n t = target.apply(this, argv),\n sr = +radius.apply(this, (argv[0] = s, argv)),\n sa0 = startAngle.apply(this, argv) - halfPi,\n sa1 = endAngle.apply(this, argv) - halfPi,\n sx0 = sr * cos(sa0),\n sy0 = sr * sin(sa0),\n tr = +radius.apply(this, (argv[0] = t, argv)),\n ta0 = startAngle.apply(this, argv) - halfPi,\n ta1 = endAngle.apply(this, argv) - halfPi;\n\n if (!context) context = buffer = path();\n\n context.moveTo(sx0, sy0);\n context.arc(0, 0, sr, sa0, sa1);\n if (sa0 !== ta0 || sa1 !== ta1) { // TODO sr !== tr?\n context.quadraticCurveTo(0, 0, tr * cos(ta0), tr * sin(ta0));\n context.arc(0, 0, tr, ta0, ta1);\n }\n context.quadraticCurveTo(0, 0, sx0, sy0);\n context.closePath();\n\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n ribbon.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), ribbon) : radius;\n };\n\n ribbon.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), ribbon) : startAngle;\n };\n\n ribbon.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), ribbon) : endAngle;\n };\n\n ribbon.source = function(_) {\n return arguments.length ? (source = _, ribbon) : source;\n };\n\n ribbon.target = function(_) {\n return arguments.length ? (target = _, ribbon) : target;\n };\n\n ribbon.context = function(_) {\n return arguments.length ? ((context = _ == null ? null : _), ribbon) : context;\n };\n\n return ribbon;\n}\n","export var prefix = \"$\";\n\nfunction Map() {}\n\nMap.prototype = map.prototype = {\n constructor: Map,\n has: function(key) {\n return (prefix + key) in this;\n },\n get: function(key) {\n return this[prefix + key];\n },\n set: function(key, value) {\n this[prefix + key] = value;\n return this;\n },\n remove: function(key) {\n var property = prefix + key;\n return property in this && delete this[property];\n },\n clear: function() {\n for (var property in this) if (property[0] === prefix) delete this[property];\n },\n keys: function() {\n var keys = [];\n for (var property in this) if (property[0] === prefix) keys.push(property.slice(1));\n return keys;\n },\n values: function() {\n var values = [];\n for (var property in this) if (property[0] === prefix) values.push(this[property]);\n return values;\n },\n entries: function() {\n var entries = [];\n for (var property in this) if (property[0] === prefix) entries.push({key: property.slice(1), value: this[property]});\n return entries;\n },\n size: function() {\n var size = 0;\n for (var property in this) if (property[0] === prefix) ++size;\n return size;\n },\n empty: function() {\n for (var property in this) if (property[0] === prefix) return false;\n return true;\n },\n each: function(f) {\n for (var property in this) if (property[0] === prefix) f(this[property], property.slice(1), this);\n }\n};\n\nfunction map(object, f) {\n var map = new Map;\n\n // Copy constructor.\n if (object instanceof Map) object.each(function(value, key) { map.set(key, value); });\n\n // Index array by numeric index or specified key function.\n else if (Array.isArray(object)) {\n var i = -1,\n n = object.length,\n o;\n\n if (f == null) while (++i < n) map.set(i, object[i]);\n else while (++i < n) map.set(f(o = object[i], i, object), o);\n }\n\n // Convert object to map.\n else if (object) for (var key in object) map.set(key, object[key]);\n\n return map;\n}\n\nexport default map;\n","import map from \"./map\";\n\nexport default function() {\n var keys = [],\n sortKeys = [],\n sortValues,\n rollup,\n nest;\n\n function apply(array, depth, createResult, setResult) {\n if (depth >= keys.length) {\n if (sortValues != null) array.sort(sortValues);\n return rollup != null ? rollup(array) : array;\n }\n\n var i = -1,\n n = array.length,\n key = keys[depth++],\n keyValue,\n value,\n valuesByKey = map(),\n values,\n result = createResult();\n\n while (++i < n) {\n if (values = valuesByKey.get(keyValue = key(value = array[i]) + \"\")) {\n values.push(value);\n } else {\n valuesByKey.set(keyValue, [value]);\n }\n }\n\n valuesByKey.each(function(values, key) {\n setResult(result, key, apply(values, depth, createResult, setResult));\n });\n\n return result;\n }\n\n function entries(map, depth) {\n if (++depth > keys.length) return map;\n var array, sortKey = sortKeys[depth - 1];\n if (rollup != null && depth >= keys.length) array = map.entries();\n else array = [], map.each(function(v, k) { array.push({key: k, values: entries(v, depth)}); });\n return sortKey != null ? array.sort(function(a, b) { return sortKey(a.key, b.key); }) : array;\n }\n\n return nest = {\n object: function(array) { return apply(array, 0, createObject, setObject); },\n map: function(array) { return apply(array, 0, createMap, setMap); },\n entries: function(array) { return entries(apply(array, 0, createMap, setMap), 0); },\n key: function(d) { keys.push(d); return nest; },\n sortKeys: function(order) { sortKeys[keys.length - 1] = order; return nest; },\n sortValues: function(order) { sortValues = order; return nest; },\n rollup: function(f) { rollup = f; return nest; }\n };\n}\n\nfunction createObject() {\n return {};\n}\n\nfunction setObject(object, key, value) {\n object[key] = value;\n}\n\nfunction createMap() {\n return map();\n}\n\nfunction setMap(map, key, value) {\n map.set(key, value);\n}\n","import {default as map, prefix} from \"./map\";\n\nfunction Set() {}\n\nvar proto = map.prototype;\n\nSet.prototype = set.prototype = {\n constructor: Set,\n has: proto.has,\n add: function(value) {\n value += \"\";\n this[prefix + value] = value;\n return this;\n },\n remove: proto.remove,\n clear: proto.clear,\n values: proto.keys,\n size: proto.size,\n empty: proto.empty,\n each: proto.each\n};\n\nfunction set(object, f) {\n var set = new Set;\n\n // Copy constructor.\n if (object instanceof Set) object.each(function(value) { set.add(value); });\n\n // Otherwise, assume it’s an array.\n else if (object) {\n var i = -1, n = object.length;\n if (f == null) while (++i < n) set.add(object[i]);\n else while (++i < n) set.add(f(object[i], i, object));\n }\n\n return set;\n}\n\nexport default set;\n","export default function(map) {\n var keys = [];\n for (var key in map) keys.push(key);\n return keys;\n}\n","export default function(map) {\n var values = [];\n for (var key in map) values.push(map[key]);\n return values;\n}\n","export default function(map) {\n var entries = [];\n for (var key in map) entries.push({key: key, value: map[key]});\n return entries;\n}\n","export var deg2rad = Math.PI / 180;\nexport var rad2deg = 180 / Math.PI;\n","import define, {extend} from \"./define.js\";\nimport {Color, rgbConvert, Rgb} from \"./color.js\";\nimport {deg2rad, rad2deg} from \"./math.js\";\n\n// https://observablehq.com/@mbostock/lab-and-rgb\nvar K = 18,\n Xn = 0.96422,\n Yn = 1,\n Zn = 0.82521,\n t0 = 4 / 29,\n t1 = 6 / 29,\n t2 = 3 * t1 * t1,\n t3 = t1 * t1 * t1;\n\nfunction labConvert(o) {\n if (o instanceof Lab) return new Lab(o.l, o.a, o.b, o.opacity);\n if (o instanceof Hcl) return hcl2lab(o);\n if (!(o instanceof Rgb)) o = rgbConvert(o);\n var r = rgb2lrgb(o.r),\n g = rgb2lrgb(o.g),\n b = rgb2lrgb(o.b),\n y = xyz2lab((0.2225045 * r + 0.7168786 * g + 0.0606169 * b) / Yn), x, z;\n if (r === g && g === b) x = z = y; else {\n x = xyz2lab((0.4360747 * r + 0.3850649 * g + 0.1430804 * b) / Xn);\n z = xyz2lab((0.0139322 * r + 0.0971045 * g + 0.7141733 * b) / Zn);\n }\n return new Lab(116 * y - 16, 500 * (x - y), 200 * (y - z), o.opacity);\n}\n\nexport function gray(l, opacity) {\n return new Lab(l, 0, 0, opacity == null ? 1 : opacity);\n}\n\nexport default function lab(l, a, b, opacity) {\n return arguments.length === 1 ? labConvert(l) : new Lab(l, a, b, opacity == null ? 1 : opacity);\n}\n\nexport function Lab(l, a, b, opacity) {\n this.l = +l;\n this.a = +a;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Lab, lab, extend(Color, {\n brighter: function(k) {\n return new Lab(this.l + K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n darker: function(k) {\n return new Lab(this.l - K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n rgb: function() {\n var y = (this.l + 16) / 116,\n x = isNaN(this.a) ? y : y + this.a / 500,\n z = isNaN(this.b) ? y : y - this.b / 200;\n x = Xn * lab2xyz(x);\n y = Yn * lab2xyz(y);\n z = Zn * lab2xyz(z);\n return new Rgb(\n lrgb2rgb( 3.1338561 * x - 1.6168667 * y - 0.4906146 * z),\n lrgb2rgb(-0.9787684 * x + 1.9161415 * y + 0.0334540 * z),\n lrgb2rgb( 0.0719453 * x - 0.2289914 * y + 1.4052427 * z),\n this.opacity\n );\n }\n}));\n\nfunction xyz2lab(t) {\n return t > t3 ? Math.pow(t, 1 / 3) : t / t2 + t0;\n}\n\nfunction lab2xyz(t) {\n return t > t1 ? t * t * t : t2 * (t - t0);\n}\n\nfunction lrgb2rgb(x) {\n return 255 * (x <= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055);\n}\n\nfunction rgb2lrgb(x) {\n return (x /= 255) <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);\n}\n\nfunction hclConvert(o) {\n if (o instanceof Hcl) return new Hcl(o.h, o.c, o.l, o.opacity);\n if (!(o instanceof Lab)) o = labConvert(o);\n if (o.a === 0 && o.b === 0) return new Hcl(NaN, 0 < o.l && o.l < 100 ? 0 : NaN, o.l, o.opacity);\n var h = Math.atan2(o.b, o.a) * rad2deg;\n return new Hcl(h < 0 ? h + 360 : h, Math.sqrt(o.a * o.a + o.b * o.b), o.l, o.opacity);\n}\n\nexport function lch(l, c, h, opacity) {\n return arguments.length === 1 ? hclConvert(l) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function hcl(h, c, l, opacity) {\n return arguments.length === 1 ? hclConvert(h) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function Hcl(h, c, l, opacity) {\n this.h = +h;\n this.c = +c;\n this.l = +l;\n this.opacity = +opacity;\n}\n\nfunction hcl2lab(o) {\n if (isNaN(o.h)) return new Lab(o.l, 0, 0, o.opacity);\n var h = o.h * deg2rad;\n return new Lab(o.l, Math.cos(h) * o.c, Math.sin(h) * o.c, o.opacity);\n}\n\ndefine(Hcl, hcl, extend(Color, {\n brighter: function(k) {\n return new Hcl(this.h, this.c, this.l + K * (k == null ? 1 : k), this.opacity);\n },\n darker: function(k) {\n return new Hcl(this.h, this.c, this.l - K * (k == null ? 1 : k), this.opacity);\n },\n rgb: function() {\n return hcl2lab(this).rgb();\n }\n}));\n","import define, {extend} from \"./define.js\";\nimport {Color, rgbConvert, Rgb, darker, brighter} from \"./color.js\";\nimport {deg2rad, rad2deg} from \"./math.js\";\n\nvar A = -0.14861,\n B = +1.78277,\n C = -0.29227,\n D = -0.90649,\n E = +1.97294,\n ED = E * D,\n EB = E * B,\n BC_DA = B * C - D * A;\n\nfunction cubehelixConvert(o) {\n if (o instanceof Cubehelix) return new Cubehelix(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Rgb)) o = rgbConvert(o);\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n l = (BC_DA * b + ED * r - EB * g) / (BC_DA + ED - EB),\n bl = b - l,\n k = (E * (g - l) - C * bl) / D,\n s = Math.sqrt(k * k + bl * bl) / (E * l * (1 - l)), // NaN if l=0 or l=1\n h = s ? Math.atan2(k, bl) * rad2deg - 120 : NaN;\n return new Cubehelix(h < 0 ? h + 360 : h, s, l, o.opacity);\n}\n\nexport default function cubehelix(h, s, l, opacity) {\n return arguments.length === 1 ? cubehelixConvert(h) : new Cubehelix(h, s, l, opacity == null ? 1 : opacity);\n}\n\nexport function Cubehelix(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Cubehelix, cubehelix, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function() {\n var h = isNaN(this.h) ? 0 : (this.h + 120) * deg2rad,\n l = +this.l,\n a = isNaN(this.s) ? 0 : this.s * l * (1 - l),\n cosh = Math.cos(h),\n sinh = Math.sin(h);\n return new Rgb(\n 255 * (l + a * (A * cosh + B * sinh)),\n 255 * (l + a * (C * cosh + D * sinh)),\n 255 * (l + a * (E * cosh)),\n this.opacity\n );\n }\n}));\n","var array = Array.prototype;\n\nexport var slice = array.slice;\n","export default function(a, b) {\n return a - b;\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(ring, hole) {\n var i = -1, n = hole.length, c;\n while (++i < n) if (c = ringContains(ring, hole[i])) return c;\n return 0;\n}\n\nfunction ringContains(ring, point) {\n var x = point[0], y = point[1], contains = -1;\n for (var i = 0, n = ring.length, j = n - 1; i < n; j = i++) {\n var pi = ring[i], xi = pi[0], yi = pi[1], pj = ring[j], xj = pj[0], yj = pj[1];\n if (segmentContains(pi, pj, point)) return 0;\n if (((yi > y) !== (yj > y)) && ((x < (xj - xi) * (y - yi) / (yj - yi) + xi))) contains = -contains;\n }\n return contains;\n}\n\nfunction segmentContains(a, b, c) {\n var i; return collinear(a, b, c) && within(a[i = +(a[0] === b[0])], c[i], b[i]);\n}\n\nfunction collinear(a, b, c) {\n return (b[0] - a[0]) * (c[1] - a[1]) === (c[0] - a[0]) * (b[1] - a[1]);\n}\n\nfunction within(p, q, r) {\n return p <= q && q <= r || r <= q && q <= p;\n}\n","export default function() {}\n","import {extent, thresholdSturges, tickStep, range} from \"d3-array\";\nimport {slice} from \"./array\";\nimport ascending from \"./ascending\";\nimport area from \"./area\";\nimport constant from \"./constant\";\nimport contains from \"./contains\";\nimport noop from \"./noop\";\n\nvar cases = [\n [],\n [[[1.0, 1.5], [0.5, 1.0]]],\n [[[1.5, 1.0], [1.0, 1.5]]],\n [[[1.5, 1.0], [0.5, 1.0]]],\n [[[1.0, 0.5], [1.5, 1.0]]],\n [[[1.0, 1.5], [0.5, 1.0]], [[1.0, 0.5], [1.5, 1.0]]],\n [[[1.0, 0.5], [1.0, 1.5]]],\n [[[1.0, 0.5], [0.5, 1.0]]],\n [[[0.5, 1.0], [1.0, 0.5]]],\n [[[1.0, 1.5], [1.0, 0.5]]],\n [[[0.5, 1.0], [1.0, 0.5]], [[1.5, 1.0], [1.0, 1.5]]],\n [[[1.5, 1.0], [1.0, 0.5]]],\n [[[0.5, 1.0], [1.5, 1.0]]],\n [[[1.0, 1.5], [1.5, 1.0]]],\n [[[0.5, 1.0], [1.0, 1.5]]],\n []\n];\n\nexport default function() {\n var dx = 1,\n dy = 1,\n threshold = thresholdSturges,\n smooth = smoothLinear;\n\n function contours(values) {\n var tz = threshold(values);\n\n // Convert number of thresholds into uniform thresholds.\n if (!Array.isArray(tz)) {\n var domain = extent(values), start = domain[0], stop = domain[1];\n tz = tickStep(start, stop, tz);\n tz = range(Math.floor(start / tz) * tz, Math.floor(stop / tz) * tz, tz);\n } else {\n tz = tz.slice().sort(ascending);\n }\n\n return tz.map(function(value) {\n return contour(values, value);\n });\n }\n\n // Accumulate, smooth contour rings, assign holes to exterior rings.\n // Based on https://github.com/mbostock/shapefile/blob/v0.6.2/shp/polygon.js\n function contour(values, value) {\n var polygons = [],\n holes = [];\n\n isorings(values, value, function(ring) {\n smooth(ring, values, value);\n if (area(ring) > 0) polygons.push([ring]);\n else holes.push(ring);\n });\n\n holes.forEach(function(hole) {\n for (var i = 0, n = polygons.length, polygon; i < n; ++i) {\n if (contains((polygon = polygons[i])[0], hole) !== -1) {\n polygon.push(hole);\n return;\n }\n }\n });\n\n return {\n type: \"MultiPolygon\",\n value: value,\n coordinates: polygons\n };\n }\n\n // Marching squares with isolines stitched into rings.\n // Based on https://github.com/topojson/topojson-client/blob/v3.0.0/src/stitch.js\n function isorings(values, value, callback) {\n var fragmentByStart = new Array,\n fragmentByEnd = new Array,\n x, y, t0, t1, t2, t3;\n\n // Special case for the first row (y = -1, t2 = t3 = 0).\n x = y = -1;\n t1 = values[0] >= value;\n cases[t1 << 1].forEach(stitch);\n while (++x < dx - 1) {\n t0 = t1, t1 = values[x + 1] >= value;\n cases[t0 | t1 << 1].forEach(stitch);\n }\n cases[t1 << 0].forEach(stitch);\n\n // General case for the intermediate rows.\n while (++y < dy - 1) {\n x = -1;\n t1 = values[y * dx + dx] >= value;\n t2 = values[y * dx] >= value;\n cases[t1 << 1 | t2 << 2].forEach(stitch);\n while (++x < dx - 1) {\n t0 = t1, t1 = values[y * dx + dx + x + 1] >= value;\n t3 = t2, t2 = values[y * dx + x + 1] >= value;\n cases[t0 | t1 << 1 | t2 << 2 | t3 << 3].forEach(stitch);\n }\n cases[t1 | t2 << 3].forEach(stitch);\n }\n\n // Special case for the last row (y = dy - 1, t0 = t1 = 0).\n x = -1;\n t2 = values[y * dx] >= value;\n cases[t2 << 2].forEach(stitch);\n while (++x < dx - 1) {\n t3 = t2, t2 = values[y * dx + x + 1] >= value;\n cases[t2 << 2 | t3 << 3].forEach(stitch);\n }\n cases[t2 << 3].forEach(stitch);\n\n function stitch(line) {\n var start = [line[0][0] + x, line[0][1] + y],\n end = [line[1][0] + x, line[1][1] + y],\n startIndex = index(start),\n endIndex = index(end),\n f, g;\n if (f = fragmentByEnd[startIndex]) {\n if (g = fragmentByStart[endIndex]) {\n delete fragmentByEnd[f.end];\n delete fragmentByStart[g.start];\n if (f === g) {\n f.ring.push(end);\n callback(f.ring);\n } else {\n fragmentByStart[f.start] = fragmentByEnd[g.end] = {start: f.start, end: g.end, ring: f.ring.concat(g.ring)};\n }\n } else {\n delete fragmentByEnd[f.end];\n f.ring.push(end);\n fragmentByEnd[f.end = endIndex] = f;\n }\n } else if (f = fragmentByStart[endIndex]) {\n if (g = fragmentByEnd[startIndex]) {\n delete fragmentByStart[f.start];\n delete fragmentByEnd[g.end];\n if (f === g) {\n f.ring.push(end);\n callback(f.ring);\n } else {\n fragmentByStart[g.start] = fragmentByEnd[f.end] = {start: g.start, end: f.end, ring: g.ring.concat(f.ring)};\n }\n } else {\n delete fragmentByStart[f.start];\n f.ring.unshift(start);\n fragmentByStart[f.start = startIndex] = f;\n }\n } else {\n fragmentByStart[startIndex] = fragmentByEnd[endIndex] = {start: startIndex, end: endIndex, ring: [start, end]};\n }\n }\n }\n\n function index(point) {\n return point[0] * 2 + point[1] * (dx + 1) * 4;\n }\n\n function smoothLinear(ring, values, value) {\n ring.forEach(function(point) {\n var x = point[0],\n y = point[1],\n xt = x | 0,\n yt = y | 0,\n v0,\n v1 = values[yt * dx + xt];\n if (x > 0 && x < dx && xt === x) {\n v0 = values[yt * dx + xt - 1];\n point[0] = x + (value - v0) / (v1 - v0) - 0.5;\n }\n if (y > 0 && y < dy && yt === y) {\n v0 = values[(yt - 1) * dx + xt];\n point[1] = y + (value - v0) / (v1 - v0) - 0.5;\n }\n });\n }\n\n contours.contour = contour;\n\n contours.size = function(_) {\n if (!arguments.length) return [dx, dy];\n var _0 = Math.ceil(_[0]), _1 = Math.ceil(_[1]);\n if (!(_0 > 0) || !(_1 > 0)) throw new Error(\"invalid size\");\n return dx = _0, dy = _1, contours;\n };\n\n contours.thresholds = function(_) {\n return arguments.length ? (threshold = typeof _ === \"function\" ? _ : Array.isArray(_) ? constant(slice.call(_)) : constant(_), contours) : threshold;\n };\n\n contours.smooth = function(_) {\n return arguments.length ? (smooth = _ ? smoothLinear : noop, contours) : smooth === smoothLinear;\n };\n\n return contours;\n}\n","export default function(ring) {\n var i = 0, n = ring.length, area = ring[n - 1][1] * ring[0][0] - ring[n - 1][0] * ring[0][1];\n while (++i < n) area += ring[i - 1][1] * ring[i][0] - ring[i - 1][0] * ring[i][1];\n return area;\n}\n","// TODO Optimize edge cases.\n// TODO Optimize index calculation.\n// TODO Optimize arguments.\nexport function blurX(source, target, r) {\n var n = source.width,\n m = source.height,\n w = (r << 1) + 1;\n for (var j = 0; j < m; ++j) {\n for (var i = 0, sr = 0; i < n + r; ++i) {\n if (i < n) {\n sr += source.data[i + j * n];\n }\n if (i >= r) {\n if (i >= w) {\n sr -= source.data[i - w + j * n];\n }\n target.data[i - r + j * n] = sr / Math.min(i + 1, n - 1 + w - i, w);\n }\n }\n }\n}\n\n// TODO Optimize edge cases.\n// TODO Optimize index calculation.\n// TODO Optimize arguments.\nexport function blurY(source, target, r) {\n var n = source.width,\n m = source.height,\n w = (r << 1) + 1;\n for (var i = 0; i < n; ++i) {\n for (var j = 0, sr = 0; j < m + r; ++j) {\n if (j < m) {\n sr += source.data[i + j * n];\n }\n if (j >= r) {\n if (j >= w) {\n sr -= source.data[i + (j - w) * n];\n }\n target.data[i + (j - r) * n] = sr / Math.min(j + 1, m - 1 + w - j, w);\n }\n }\n }\n}\n","import {max, range, tickStep} from \"d3-array\";\nimport {slice} from \"./array\";\nimport {blurX, blurY} from \"./blur\";\nimport constant from \"./constant\";\nimport contours from \"./contours\";\n\nfunction defaultX(d) {\n return d[0];\n}\n\nfunction defaultY(d) {\n return d[1];\n}\n\nfunction defaultWeight() {\n return 1;\n}\n\nexport default function() {\n var x = defaultX,\n y = defaultY,\n weight = defaultWeight,\n dx = 960,\n dy = 500,\n r = 20, // blur radius\n k = 2, // log2(grid cell size)\n o = r * 3, // grid offset, to pad for blur\n n = (dx + o * 2) >> k, // grid width\n m = (dy + o * 2) >> k, // grid height\n threshold = constant(20);\n\n function density(data) {\n var values0 = new Float32Array(n * m),\n values1 = new Float32Array(n * m);\n\n data.forEach(function(d, i, data) {\n var xi = (+x(d, i, data) + o) >> k,\n yi = (+y(d, i, data) + o) >> k,\n wi = +weight(d, i, data);\n if (xi >= 0 && xi < n && yi >= 0 && yi < m) {\n values0[xi + yi * n] += wi;\n }\n });\n\n // TODO Optimize.\n blurX({width: n, height: m, data: values0}, {width: n, height: m, data: values1}, r >> k);\n blurY({width: n, height: m, data: values1}, {width: n, height: m, data: values0}, r >> k);\n blurX({width: n, height: m, data: values0}, {width: n, height: m, data: values1}, r >> k);\n blurY({width: n, height: m, data: values1}, {width: n, height: m, data: values0}, r >> k);\n blurX({width: n, height: m, data: values0}, {width: n, height: m, data: values1}, r >> k);\n blurY({width: n, height: m, data: values1}, {width: n, height: m, data: values0}, r >> k);\n\n var tz = threshold(values0);\n\n // Convert number of thresholds into uniform thresholds.\n if (!Array.isArray(tz)) {\n var stop = max(values0);\n tz = tickStep(0, stop, tz);\n tz = range(0, Math.floor(stop / tz) * tz, tz);\n tz.shift();\n }\n\n return contours()\n .thresholds(tz)\n .size([n, m])\n (values0)\n .map(transform);\n }\n\n function transform(geometry) {\n geometry.value *= Math.pow(2, -2 * k); // Density in points per square pixel.\n geometry.coordinates.forEach(transformPolygon);\n return geometry;\n }\n\n function transformPolygon(coordinates) {\n coordinates.forEach(transformRing);\n }\n\n function transformRing(coordinates) {\n coordinates.forEach(transformPoint);\n }\n\n // TODO Optimize.\n function transformPoint(coordinates) {\n coordinates[0] = coordinates[0] * Math.pow(2, k) - o;\n coordinates[1] = coordinates[1] * Math.pow(2, k) - o;\n }\n\n function resize() {\n o = r * 3;\n n = (dx + o * 2) >> k;\n m = (dy + o * 2) >> k;\n return density;\n }\n\n density.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), density) : x;\n };\n\n density.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), density) : y;\n };\n\n density.weight = function(_) {\n return arguments.length ? (weight = typeof _ === \"function\" ? _ : constant(+_), density) : weight;\n };\n\n density.size = function(_) {\n if (!arguments.length) return [dx, dy];\n var _0 = Math.ceil(_[0]), _1 = Math.ceil(_[1]);\n if (!(_0 >= 0) && !(_0 >= 0)) throw new Error(\"invalid size\");\n return dx = _0, dy = _1, resize();\n };\n\n density.cellSize = function(_) {\n if (!arguments.length) return 1 << k;\n if (!((_ = +_) >= 1)) throw new Error(\"invalid cell size\");\n return k = Math.floor(Math.log(_) / Math.LN2), resize();\n };\n\n density.thresholds = function(_) {\n return arguments.length ? (threshold = typeof _ === \"function\" ? _ : Array.isArray(_) ? constant(slice.call(_)) : constant(_), density) : threshold;\n };\n\n density.bandwidth = function(_) {\n if (!arguments.length) return Math.sqrt(r * (r + 1));\n if (!((_ = +_) >= 0)) throw new Error(\"invalid bandwidth\");\n return r = Math.round((Math.sqrt(4 * _ * _ + 1) - 1) / 2), resize();\n };\n\n return density;\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function DragEvent(target, type, subject, id, active, x, y, dx, dy, dispatch) {\n this.target = target;\n this.type = type;\n this.subject = subject;\n this.identifier = id;\n this.active = active;\n this.x = x;\n this.y = y;\n this.dx = dx;\n this.dy = dy;\n this._ = dispatch;\n}\n\nDragEvent.prototype.on = function() {\n var value = this._.on.apply(this._, arguments);\n return value === this._ ? this : value;\n};\n","import {dispatch} from \"d3-dispatch\";\nimport {event, customEvent, select, mouse, touch} from \"d3-selection\";\nimport nodrag, {yesdrag} from \"./nodrag.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\nimport constant from \"./constant.js\";\nimport DragEvent from \"./event.js\";\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter() {\n return !event.ctrlKey && !event.button;\n}\n\nfunction defaultContainer() {\n return this.parentNode;\n}\n\nfunction defaultSubject(d) {\n return d == null ? {x: event.x, y: event.y} : d;\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\nexport default function() {\n var filter = defaultFilter,\n container = defaultContainer,\n subject = defaultSubject,\n touchable = defaultTouchable,\n gestures = {},\n listeners = dispatch(\"start\", \"drag\", \"end\"),\n active = 0,\n mousedownx,\n mousedowny,\n mousemoving,\n touchending,\n clickDistance2 = 0;\n\n function drag(selection) {\n selection\n .on(\"mousedown.drag\", mousedowned)\n .filter(touchable)\n .on(\"touchstart.drag\", touchstarted)\n .on(\"touchmove.drag\", touchmoved)\n .on(\"touchend.drag touchcancel.drag\", touchended)\n .style(\"touch-action\", \"none\")\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n function mousedowned() {\n if (touchending || !filter.apply(this, arguments)) return;\n var gesture = beforestart(\"mouse\", container.apply(this, arguments), mouse, this, arguments);\n if (!gesture) return;\n select(event.view).on(\"mousemove.drag\", mousemoved, true).on(\"mouseup.drag\", mouseupped, true);\n nodrag(event.view);\n nopropagation();\n mousemoving = false;\n mousedownx = event.clientX;\n mousedowny = event.clientY;\n gesture(\"start\");\n }\n\n function mousemoved() {\n noevent();\n if (!mousemoving) {\n var dx = event.clientX - mousedownx, dy = event.clientY - mousedowny;\n mousemoving = dx * dx + dy * dy > clickDistance2;\n }\n gestures.mouse(\"drag\");\n }\n\n function mouseupped() {\n select(event.view).on(\"mousemove.drag mouseup.drag\", null);\n yesdrag(event.view, mousemoving);\n noevent();\n gestures.mouse(\"end\");\n }\n\n function touchstarted() {\n if (!filter.apply(this, arguments)) return;\n var touches = event.changedTouches,\n c = container.apply(this, arguments),\n n = touches.length, i, gesture;\n\n for (i = 0; i < n; ++i) {\n if (gesture = beforestart(touches[i].identifier, c, touch, this, arguments)) {\n nopropagation();\n gesture(\"start\");\n }\n }\n }\n\n function touchmoved() {\n var touches = event.changedTouches,\n n = touches.length, i, gesture;\n\n for (i = 0; i < n; ++i) {\n if (gesture = gestures[touches[i].identifier]) {\n noevent();\n gesture(\"drag\");\n }\n }\n }\n\n function touchended() {\n var touches = event.changedTouches,\n n = touches.length, i, gesture;\n\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!\n for (i = 0; i < n; ++i) {\n if (gesture = gestures[touches[i].identifier]) {\n nopropagation();\n gesture(\"end\");\n }\n }\n }\n\n function beforestart(id, container, point, that, args) {\n var p = point(container, id), s, dx, dy,\n sublisteners = listeners.copy();\n\n if (!customEvent(new DragEvent(drag, \"beforestart\", s, id, active, p[0], p[1], 0, 0, sublisteners), function() {\n if ((event.subject = s = subject.apply(that, args)) == null) return false;\n dx = s.x - p[0] || 0;\n dy = s.y - p[1] || 0;\n return true;\n })) return;\n\n return function gesture(type) {\n var p0 = p, n;\n switch (type) {\n case \"start\": gestures[id] = gesture, n = active++; break;\n case \"end\": delete gestures[id], --active; // nobreak\n case \"drag\": p = point(container, id), n = active; break;\n }\n customEvent(new DragEvent(drag, type, s, id, n, p[0] + dx, p[1] + dy, p[0] - p0[0], p[1] - p0[1], sublisteners), sublisteners.apply, sublisteners, [type, that, args]);\n };\n }\n\n drag.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), drag) : filter;\n };\n\n drag.container = function(_) {\n return arguments.length ? (container = typeof _ === \"function\" ? _ : constant(_), drag) : container;\n };\n\n drag.subject = function(_) {\n return arguments.length ? (subject = typeof _ === \"function\" ? _ : constant(_), drag) : subject;\n };\n\n drag.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), drag) : touchable;\n };\n\n drag.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? drag : value;\n };\n\n drag.clickDistance = function(_) {\n return arguments.length ? (clickDistance2 = (_ = +_) * _, drag) : Math.sqrt(clickDistance2);\n };\n\n return drag;\n}\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\nfunction pad(value, width) {\n var s = value + \"\", length = s.length;\n return length < width ? new Array(width - length + 1).join(0) + s : s;\n}\n\nfunction formatYear(year) {\n return year < 0 ? \"-\" + pad(-year, 6)\n : year > 9999 ? \"+\" + pad(year, 6)\n : pad(year, 4);\n}\n\nfunction formatDate(date) {\n var hours = date.getUTCHours(),\n minutes = date.getUTCMinutes(),\n seconds = date.getUTCSeconds(),\n milliseconds = date.getUTCMilliseconds();\n return isNaN(date) ? \"Invalid Date\"\n : formatYear(date.getUTCFullYear(), 4) + \"-\" + pad(date.getUTCMonth() + 1, 2) + \"-\" + pad(date.getUTCDate(), 2)\n + (milliseconds ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \":\" + pad(seconds, 2) + \".\" + pad(milliseconds, 3) + \"Z\"\n : seconds ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \":\" + pad(seconds, 2) + \"Z\"\n : minutes || hours ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \"Z\"\n : \"\");\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 preformatBody(rows, columns) {\n return rows.map(function(row) {\n return columns.map(function(column) {\n return formatValue(row[column]);\n }).join(delimiter);\n });\n }\n\n function format(rows, columns) {\n if (columns == null) columns = inferColumns(rows);\n return [columns.map(formatValue).join(delimiter)].concat(preformatBody(rows, columns)).join(\"\\n\");\n }\n\n function formatBody(rows, columns) {\n if (columns == null) columns = inferColumns(rows);\n return preformatBody(rows, columns).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(value) {\n return value == null ? \"\"\n : value instanceof Date ? formatDate(value)\n : reFormat.test(value += \"\") ? \"\\\"\" + value.replace(/\"/g, \"\\\"\\\"\") + \"\\\"\"\n : value;\n }\n\n return {\n parse: parse,\n parseRows: parseRows,\n format: format,\n formatBody: formatBody,\n formatRows: formatRows,\n formatRow: formatRow,\n formatValue: formatValue\n };\n}\n","import dsv from \"./dsv.js\";\n\nvar csv = dsv(\",\");\n\nexport var csvParse = csv.parse;\nexport var csvParseRows = csv.parseRows;\nexport var csvFormat = csv.format;\nexport var csvFormatBody = csv.formatBody;\nexport var csvFormatRows = csv.formatRows;\nexport var csvFormatRow = csv.formatRow;\nexport var csvFormatValue = csv.formatValue;\n","import dsv from \"./dsv.js\";\n\nvar tsv = dsv(\"\\t\");\n\nexport var tsvParse = tsv.parse;\nexport var tsvParseRows = tsv.parseRows;\nexport var tsvFormat = tsv.format;\nexport var tsvFormatBody = tsv.formatBody;\nexport var tsvFormatRows = tsv.formatRows;\nexport var tsvFormatRow = tsv.formatRow;\nexport var tsvFormatValue = tsv.formatValue;\n","export default function autoType(object) {\n for (var key in object) {\n var value = object[key].trim(), number, m;\n if (!value) value = null;\n else if (value === \"true\") value = true;\n else if (value === \"false\") value = false;\n else if (value === \"NaN\") value = NaN;\n else if (!isNaN(number = +value)) value = number;\n else if (m = value.match(/^([-+]\\d{2})?\\d{4}(-\\d{2}(-\\d{2})?)?(T\\d{2}:\\d{2}(:\\d{2}(\\.\\d{3})?)?(Z|[-+]\\d{2}:\\d{2})?)?$/)) {\n if (fixtz && !!m[4] && !m[7]) value = value.replace(/-/g, \"/\").replace(/T/, \" \");\n value = new Date(value);\n }\n else continue;\n object[key] = value;\n }\n return object;\n}\n\n// https://github.com/d3/d3-dsv/issues/45\nvar fixtz = new Date(\"2019-01-01T00:00\").getHours() || new Date(\"2019-07-01T00:00\").getHours();","export function linear(t) {\n return +t;\n}\n","export function quadIn(t) {\n return t * t;\n}\n\nexport function quadOut(t) {\n return t * (2 - t);\n}\n\nexport function quadInOut(t) {\n return ((t *= 2) <= 1 ? t * t : --t * (2 - t) + 1) / 2;\n}\n","var exponent = 3;\n\nexport var polyIn = (function custom(e) {\n e = +e;\n\n function polyIn(t) {\n return Math.pow(t, e);\n }\n\n polyIn.exponent = custom;\n\n return polyIn;\n})(exponent);\n\nexport var polyOut = (function custom(e) {\n e = +e;\n\n function polyOut(t) {\n return 1 - Math.pow(1 - t, e);\n }\n\n polyOut.exponent = custom;\n\n return polyOut;\n})(exponent);\n\nexport var polyInOut = (function custom(e) {\n e = +e;\n\n function polyInOut(t) {\n return ((t *= 2) <= 1 ? Math.pow(t, e) : 2 - Math.pow(2 - t, e)) / 2;\n }\n\n polyInOut.exponent = custom;\n\n return polyInOut;\n})(exponent);\n","var pi = Math.PI,\n halfPi = pi / 2;\n\nexport function sinIn(t) {\n return (+t === 1) ? 1 : 1 - Math.cos(t * halfPi);\n}\n\nexport function sinOut(t) {\n return Math.sin(t * halfPi);\n}\n\nexport function sinInOut(t) {\n return (1 - Math.cos(pi * t)) / 2;\n}\n","// tpmt is two power minus ten times t scaled to [0,1]\nexport function tpmt(x) {\n return (Math.pow(2, -10 * x) - 0.0009765625) * 1.0009775171065494;\n}\n","import {tpmt} from \"./math.js\";\n\nexport function expIn(t) {\n return tpmt(1 - +t);\n}\n\nexport function expOut(t) {\n return 1 - tpmt(t);\n}\n\nexport function expInOut(t) {\n return ((t *= 2) <= 1 ? tpmt(1 - t) : 2 - tpmt(t - 1)) / 2;\n}\n","export function circleIn(t) {\n return 1 - Math.sqrt(1 - t * t);\n}\n\nexport function circleOut(t) {\n return Math.sqrt(1 - --t * t);\n}\n\nexport function circleInOut(t) {\n return ((t *= 2) <= 1 ? 1 - Math.sqrt(1 - t * t) : Math.sqrt(1 - (t -= 2) * t) + 1) / 2;\n}\n","var b1 = 4 / 11,\n b2 = 6 / 11,\n b3 = 8 / 11,\n b4 = 3 / 4,\n b5 = 9 / 11,\n b6 = 10 / 11,\n b7 = 15 / 16,\n b8 = 21 / 22,\n b9 = 63 / 64,\n b0 = 1 / b1 / b1;\n\nexport function bounceIn(t) {\n return 1 - bounceOut(1 - t);\n}\n\nexport function bounceOut(t) {\n return (t = +t) < b1 ? b0 * t * t : t < b3 ? b0 * (t -= b2) * t + b4 : t < b6 ? b0 * (t -= b5) * t + b7 : b0 * (t -= b8) * t + b9;\n}\n\nexport function bounceInOut(t) {\n return ((t *= 2) <= 1 ? 1 - bounceOut(1 - t) : bounceOut(t - 1) + 1) / 2;\n}\n","var overshoot = 1.70158;\n\nexport var backIn = (function custom(s) {\n s = +s;\n\n function backIn(t) {\n return (t = +t) * t * (s * (t - 1) + t);\n }\n\n backIn.overshoot = custom;\n\n return backIn;\n})(overshoot);\n\nexport var backOut = (function custom(s) {\n s = +s;\n\n function backOut(t) {\n return --t * t * ((t + 1) * s + t) + 1;\n }\n\n backOut.overshoot = custom;\n\n return backOut;\n})(overshoot);\n\nexport var backInOut = (function custom(s) {\n s = +s;\n\n function backInOut(t) {\n return ((t *= 2) < 1 ? t * t * ((s + 1) * t - s) : (t -= 2) * t * ((s + 1) * t + s) + 2) / 2;\n }\n\n backInOut.overshoot = custom;\n\n return backInOut;\n})(overshoot);\n","import {tpmt} from \"./math.js\";\n\nvar tau = 2 * Math.PI,\n amplitude = 1,\n period = 0.3;\n\nexport var elasticIn = (function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n function elasticIn(t) {\n return a * tpmt(-(--t)) * Math.sin((s - t) / p);\n }\n\n elasticIn.amplitude = function(a) { return custom(a, p * tau); };\n elasticIn.period = function(p) { return custom(a, p); };\n\n return elasticIn;\n})(amplitude, period);\n\nexport var elasticOut = (function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n function elasticOut(t) {\n return 1 - a * tpmt(t = +t) * Math.sin((t + s) / p);\n }\n\n elasticOut.amplitude = function(a) { return custom(a, p * tau); };\n elasticOut.period = function(p) { return custom(a, p); };\n\n return elasticOut;\n})(amplitude, period);\n\nexport var elasticInOut = (function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n function elasticInOut(t) {\n return ((t = t * 2 - 1) < 0\n ? a * tpmt(-t) * Math.sin((s - t) / p)\n : 2 - a * tpmt(t) * Math.sin((s + t) / p)) / 2;\n }\n\n elasticInOut.amplitude = function(a) { return custom(a, p * tau); };\n elasticInOut.period = function(p) { return custom(a, p); };\n\n return elasticInOut;\n})(amplitude, period);\n","function responseBlob(response) {\n if (!response.ok) throw new Error(response.status + \" \" + response.statusText);\n return response.blob();\n}\n\nexport default function(input, init) {\n return fetch(input, init).then(responseBlob);\n}\n","function responseArrayBuffer(response) {\n if (!response.ok) throw new Error(response.status + \" \" + response.statusText);\n return response.arrayBuffer();\n}\n\nexport default function(input, init) {\n return fetch(input, init).then(responseArrayBuffer);\n}\n","function responseText(response) {\n if (!response.ok) throw new Error(response.status + \" \" + response.statusText);\n return response.text();\n}\n\nexport default function(input, init) {\n return fetch(input, init).then(responseText);\n}\n","import {csvParse, dsvFormat, tsvParse} from \"d3-dsv\";\nimport text from \"./text.js\";\n\nfunction dsvParse(parse) {\n return function(input, init, row) {\n if (arguments.length === 2 && typeof init === \"function\") row = init, init = undefined;\n return text(input, init).then(function(response) {\n return parse(response, row);\n });\n };\n}\n\nexport default function dsv(delimiter, input, init, row) {\n if (arguments.length === 3 && typeof init === \"function\") row = init, init = undefined;\n var format = dsvFormat(delimiter);\n return text(input, init).then(function(response) {\n return format.parse(response, row);\n });\n}\n\nexport var csv = dsvParse(csvParse);\nexport var tsv = dsvParse(tsvParse);\n","export default function(input, init) {\n return new Promise(function(resolve, reject) {\n var image = new Image;\n for (var key in init) image[key] = init[key];\n image.onerror = reject;\n image.onload = function() { resolve(image); };\n image.src = input;\n });\n}\n","function responseJson(response) {\n if (!response.ok) throw new Error(response.status + \" \" + response.statusText);\n if (response.status === 204 || response.status === 205) return;\n return response.json();\n}\n\nexport default function(input, init) {\n return fetch(input, init).then(responseJson);\n}\n","import text from \"./text.js\";\n\nfunction parser(type) {\n return function(input, init) {\n return text(input, init).then(function(text) {\n return (new DOMParser).parseFromString(text, type);\n });\n };\n}\n\nexport default parser(\"application/xml\");\n\nexport var html = parser(\"text/html\");\n\nexport var svg = parser(\"image/svg+xml\");\n","export default function(x, y) {\n var nodes;\n\n if (x == null) x = 0;\n if (y == null) y = 0;\n\n function force() {\n var i,\n n = nodes.length,\n node,\n sx = 0,\n sy = 0;\n\n for (i = 0; i < n; ++i) {\n node = nodes[i], sx += node.x, sy += node.y;\n }\n\n for (sx = sx / n - x, sy = sy / n - y, i = 0; i < n; ++i) {\n node = nodes[i], node.x -= sx, node.y -= sy;\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n };\n\n force.x = function(_) {\n return arguments.length ? (x = +_, force) : x;\n };\n\n force.y = function(_) {\n return arguments.length ? (y = +_, force) : y;\n };\n\n return force;\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function() {\n return (Math.random() - 0.5) * 1e-6;\n}\n","export default function(d) {\n var x = +this._x.call(null, d),\n y = +this._y.call(null, d);\n return add(this.cover(x, y), x, y, d);\n}\n\nfunction add(tree, x, y, d) {\n if (isNaN(x) || isNaN(y)) return tree; // ignore invalid points\n\n var parent,\n node = tree._root,\n leaf = {data: d},\n x0 = tree._x0,\n y0 = tree._y0,\n x1 = tree._x1,\n y1 = tree._y1,\n xm,\n ym,\n xp,\n yp,\n right,\n bottom,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return tree._root = leaf, tree;\n\n // Find the existing leaf for the new point, or add it.\n while (node.length) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n if (parent = node, !(node = node[i = bottom << 1 | right])) return parent[i] = leaf, tree;\n }\n\n // Is the new point is exactly coincident with the existing point?\n xp = +tree._x.call(null, node.data);\n yp = +tree._y.call(null, node.data);\n if (x === xp && y === yp) return leaf.next = node, parent ? parent[i] = leaf : tree._root = leaf, tree;\n\n // Otherwise, split the leaf node until the old and new point are separated.\n do {\n parent = parent ? parent[i] = new Array(4) : tree._root = new Array(4);\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n } while ((i = bottom << 1 | right) === (j = (yp >= ym) << 1 | (xp >= xm)));\n return parent[j] = node, parent[i] = leaf, tree;\n}\n\nexport function addAll(data) {\n var d, i, n = data.length,\n x,\n y,\n xz = new Array(n),\n yz = new Array(n),\n x0 = Infinity,\n y0 = Infinity,\n x1 = -Infinity,\n y1 = -Infinity;\n\n // Compute the points and their extent.\n for (i = 0; i < n; ++i) {\n if (isNaN(x = +this._x.call(null, d = data[i])) || isNaN(y = +this._y.call(null, d))) continue;\n xz[i] = x;\n yz[i] = y;\n if (x < x0) x0 = x;\n if (x > x1) x1 = x;\n if (y < y0) y0 = y;\n if (y > y1) y1 = y;\n }\n\n // If there were no (valid) points, abort.\n if (x0 > x1 || y0 > y1) return this;\n\n // Expand the tree to cover the new points.\n this.cover(x0, y0).cover(x1, y1);\n\n // Add the new points.\n for (i = 0; i < n; ++i) {\n add(this, xz[i], yz[i], data[i]);\n }\n\n return this;\n}\n","export default function(node, x0, y0, x1, y1) {\n this.node = node;\n this.x0 = x0;\n this.y0 = y0;\n this.x1 = x1;\n this.y1 = y1;\n}\n","export function defaultX(d) {\n return d[0];\n}\n\nexport default function(_) {\n return arguments.length ? (this._x = _, this) : this._x;\n}\n","export function defaultY(d) {\n return d[1];\n}\n\nexport default function(_) {\n return arguments.length ? (this._y = _, this) : this._y;\n}\n","import tree_add, {addAll as tree_addAll} from \"./add.js\";\nimport tree_cover from \"./cover.js\";\nimport tree_data from \"./data.js\";\nimport tree_extent from \"./extent.js\";\nimport tree_find from \"./find.js\";\nimport tree_remove, {removeAll as tree_removeAll} from \"./remove.js\";\nimport tree_root from \"./root.js\";\nimport tree_size from \"./size.js\";\nimport tree_visit from \"./visit.js\";\nimport tree_visitAfter from \"./visitAfter.js\";\nimport tree_x, {defaultX} from \"./x.js\";\nimport tree_y, {defaultY} from \"./y.js\";\n\nexport default function quadtree(nodes, x, y) {\n var tree = new Quadtree(x == null ? defaultX : x, y == null ? defaultY : y, NaN, NaN, NaN, NaN);\n return nodes == null ? tree : tree.addAll(nodes);\n}\n\nfunction Quadtree(x, y, x0, y0, x1, y1) {\n this._x = x;\n this._y = y;\n this._x0 = x0;\n this._y0 = y0;\n this._x1 = x1;\n this._y1 = y1;\n this._root = undefined;\n}\n\nfunction leaf_copy(leaf) {\n var copy = {data: leaf.data}, next = copy;\n while (leaf = leaf.next) next = next.next = {data: leaf.data};\n return copy;\n}\n\nvar treeProto = quadtree.prototype = Quadtree.prototype;\n\ntreeProto.copy = function() {\n var copy = new Quadtree(this._x, this._y, this._x0, this._y0, this._x1, this._y1),\n node = this._root,\n nodes,\n child;\n\n if (!node) return copy;\n\n if (!node.length) return copy._root = leaf_copy(node), copy;\n\n nodes = [{source: node, target: copy._root = new Array(4)}];\n while (node = nodes.pop()) {\n for (var i = 0; i < 4; ++i) {\n if (child = node.source[i]) {\n if (child.length) nodes.push({source: child, target: node.target[i] = new Array(4)});\n else node.target[i] = leaf_copy(child);\n }\n }\n }\n\n return copy;\n};\n\ntreeProto.add = tree_add;\ntreeProto.addAll = tree_addAll;\ntreeProto.cover = tree_cover;\ntreeProto.data = tree_data;\ntreeProto.extent = tree_extent;\ntreeProto.find = tree_find;\ntreeProto.remove = tree_remove;\ntreeProto.removeAll = tree_removeAll;\ntreeProto.root = tree_root;\ntreeProto.size = tree_size;\ntreeProto.visit = tree_visit;\ntreeProto.visitAfter = tree_visitAfter;\ntreeProto.x = tree_x;\ntreeProto.y = tree_y;\n","import constant from \"./constant\";\nimport jiggle from \"./jiggle\";\nimport {quadtree} from \"d3-quadtree\";\n\nfunction x(d) {\n return d.x + d.vx;\n}\n\nfunction y(d) {\n return d.y + d.vy;\n}\n\nexport default function(radius) {\n var nodes,\n radii,\n strength = 1,\n iterations = 1;\n\n if (typeof radius !== \"function\") radius = constant(radius == null ? 1 : +radius);\n\n function force() {\n var i, n = nodes.length,\n tree,\n node,\n xi,\n yi,\n ri,\n ri2;\n\n for (var k = 0; k < iterations; ++k) {\n tree = quadtree(nodes, x, y).visitAfter(prepare);\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n ri = radii[node.index], ri2 = ri * ri;\n xi = node.x + node.vx;\n yi = node.y + node.vy;\n tree.visit(apply);\n }\n }\n\n function apply(quad, x0, y0, x1, y1) {\n var data = quad.data, rj = quad.r, r = ri + rj;\n if (data) {\n if (data.index > node.index) {\n var x = xi - data.x - data.vx,\n y = yi - data.y - data.vy,\n l = x * x + y * y;\n if (l < r * r) {\n if (x === 0) x = jiggle(), l += x * x;\n if (y === 0) y = jiggle(), l += y * y;\n l = (r - (l = Math.sqrt(l))) / l * strength;\n node.vx += (x *= l) * (r = (rj *= rj) / (ri2 + rj));\n node.vy += (y *= l) * r;\n data.vx -= x * (r = 1 - r);\n data.vy -= y * r;\n }\n }\n return;\n }\n return x0 > xi + r || x1 < xi - r || y0 > yi + r || y1 < yi - r;\n }\n }\n\n function prepare(quad) {\n if (quad.data) return quad.r = radii[quad.data.index];\n for (var i = quad.r = 0; i < 4; ++i) {\n if (quad[i] && quad[i].r > quad.r) {\n quad.r = quad[i].r;\n }\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length, node;\n radii = new Array(n);\n for (i = 0; i < n; ++i) node = nodes[i], radii[node.index] = +radius(node, i, nodes);\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.iterations = function(_) {\n return arguments.length ? (iterations = +_, force) : iterations;\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = +_, force) : strength;\n };\n\n force.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : radius;\n };\n\n return force;\n}\n","import constant from \"./constant\";\nimport jiggle from \"./jiggle\";\nimport {map} from \"d3-collection\";\n\nfunction index(d) {\n return d.index;\n}\n\nfunction find(nodeById, nodeId) {\n var node = nodeById.get(nodeId);\n if (!node) throw new Error(\"missing: \" + nodeId);\n return node;\n}\n\nexport default function(links) {\n var id = index,\n strength = defaultStrength,\n strengths,\n distance = constant(30),\n distances,\n nodes,\n count,\n bias,\n iterations = 1;\n\n if (links == null) links = [];\n\n function defaultStrength(link) {\n return 1 / Math.min(count[link.source.index], count[link.target.index]);\n }\n\n function force(alpha) {\n for (var k = 0, n = links.length; k < iterations; ++k) {\n for (var i = 0, link, source, target, x, y, l, b; i < n; ++i) {\n link = links[i], source = link.source, target = link.target;\n x = target.x + target.vx - source.x - source.vx || jiggle();\n y = target.y + target.vy - source.y - source.vy || jiggle();\n l = Math.sqrt(x * x + y * y);\n l = (l - distances[i]) / l * alpha * strengths[i];\n x *= l, y *= l;\n target.vx -= x * (b = bias[i]);\n target.vy -= y * b;\n source.vx += x * (b = 1 - b);\n source.vy += y * b;\n }\n }\n }\n\n function initialize() {\n if (!nodes) return;\n\n var i,\n n = nodes.length,\n m = links.length,\n nodeById = map(nodes, id),\n link;\n\n for (i = 0, count = new Array(n); i < m; ++i) {\n link = links[i], link.index = i;\n if (typeof link.source !== \"object\") link.source = find(nodeById, link.source);\n if (typeof link.target !== \"object\") link.target = find(nodeById, link.target);\n count[link.source.index] = (count[link.source.index] || 0) + 1;\n count[link.target.index] = (count[link.target.index] || 0) + 1;\n }\n\n for (i = 0, bias = new Array(m); i < m; ++i) {\n link = links[i], bias[i] = count[link.source.index] / (count[link.source.index] + count[link.target.index]);\n }\n\n strengths = new Array(m), initializeStrength();\n distances = new Array(m), initializeDistance();\n }\n\n function initializeStrength() {\n if (!nodes) return;\n\n for (var i = 0, n = links.length; i < n; ++i) {\n strengths[i] = +strength(links[i], i, links);\n }\n }\n\n function initializeDistance() {\n if (!nodes) return;\n\n for (var i = 0, n = links.length; i < n; ++i) {\n distances[i] = +distance(links[i], i, links);\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.links = function(_) {\n return arguments.length ? (links = _, initialize(), force) : links;\n };\n\n force.id = function(_) {\n return arguments.length ? (id = _, force) : id;\n };\n\n force.iterations = function(_) {\n return arguments.length ? (iterations = +_, force) : iterations;\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initializeStrength(), force) : strength;\n };\n\n force.distance = function(_) {\n return arguments.length ? (distance = typeof _ === \"function\" ? _ : constant(+_), initializeDistance(), force) : distance;\n };\n\n return force;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {map} from \"d3-collection\";\nimport {timer} from \"d3-timer\";\n\nexport function x(d) {\n return d.x;\n}\n\nexport function y(d) {\n return d.y;\n}\n\nvar initialRadius = 10,\n initialAngle = Math.PI * (3 - Math.sqrt(5));\n\nexport default function(nodes) {\n var simulation,\n alpha = 1,\n alphaMin = 0.001,\n alphaDecay = 1 - Math.pow(alphaMin, 1 / 300),\n alphaTarget = 0,\n velocityDecay = 0.6,\n forces = map(),\n stepper = timer(step),\n event = dispatch(\"tick\", \"end\");\n\n if (nodes == null) nodes = [];\n\n function step() {\n tick();\n event.call(\"tick\", simulation);\n if (alpha < alphaMin) {\n stepper.stop();\n event.call(\"end\", simulation);\n }\n }\n\n function tick(iterations) {\n var i, n = nodes.length, node;\n\n if (iterations === undefined) iterations = 1;\n\n for (var k = 0; k < iterations; ++k) {\n alpha += (alphaTarget - alpha) * alphaDecay;\n\n forces.each(function (force) {\n force(alpha);\n });\n\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n if (node.fx == null) node.x += node.vx *= velocityDecay;\n else node.x = node.fx, node.vx = 0;\n if (node.fy == null) node.y += node.vy *= velocityDecay;\n else node.y = node.fy, node.vy = 0;\n }\n }\n\n return simulation;\n }\n\n function initializeNodes() {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.index = i;\n if (node.fx != null) node.x = node.fx;\n if (node.fy != null) node.y = node.fy;\n if (isNaN(node.x) || isNaN(node.y)) {\n var radius = initialRadius * Math.sqrt(i), angle = i * initialAngle;\n node.x = radius * Math.cos(angle);\n node.y = radius * Math.sin(angle);\n }\n if (isNaN(node.vx) || isNaN(node.vy)) {\n node.vx = node.vy = 0;\n }\n }\n }\n\n function initializeForce(force) {\n if (force.initialize) force.initialize(nodes);\n return force;\n }\n\n initializeNodes();\n\n return simulation = {\n tick: tick,\n\n restart: function() {\n return stepper.restart(step), simulation;\n },\n\n stop: function() {\n return stepper.stop(), simulation;\n },\n\n nodes: function(_) {\n return arguments.length ? (nodes = _, initializeNodes(), forces.each(initializeForce), simulation) : nodes;\n },\n\n alpha: function(_) {\n return arguments.length ? (alpha = +_, simulation) : alpha;\n },\n\n alphaMin: function(_) {\n return arguments.length ? (alphaMin = +_, simulation) : alphaMin;\n },\n\n alphaDecay: function(_) {\n return arguments.length ? (alphaDecay = +_, simulation) : +alphaDecay;\n },\n\n alphaTarget: function(_) {\n return arguments.length ? (alphaTarget = +_, simulation) : alphaTarget;\n },\n\n velocityDecay: function(_) {\n return arguments.length ? (velocityDecay = 1 - _, simulation) : 1 - velocityDecay;\n },\n\n force: function(name, _) {\n return arguments.length > 1 ? ((_ == null ? forces.remove(name) : forces.set(name, initializeForce(_))), simulation) : forces.get(name);\n },\n\n find: function(x, y, radius) {\n var i = 0,\n n = nodes.length,\n dx,\n dy,\n d2,\n node,\n closest;\n\n if (radius == null) radius = Infinity;\n else radius *= radius;\n\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n dx = x - node.x;\n dy = y - node.y;\n d2 = dx * dx + dy * dy;\n if (d2 < radius) closest = node, radius = d2;\n }\n\n return closest;\n },\n\n on: function(name, _) {\n return arguments.length > 1 ? (event.on(name, _), simulation) : event.on(name);\n }\n };\n}\n","export default function(x, y) {\n if (isNaN(x = +x) || isNaN(y = +y)) return this; // ignore invalid points\n\n var x0 = this._x0,\n y0 = this._y0,\n x1 = this._x1,\n y1 = this._y1;\n\n // If the quadtree has no extent, initialize them.\n // Integer extent are necessary so that if we later double the extent,\n // the existing quadrant boundaries don’t change due to floating point error!\n if (isNaN(x0)) {\n x1 = (x0 = Math.floor(x)) + 1;\n y1 = (y0 = Math.floor(y)) + 1;\n }\n\n // Otherwise, double repeatedly to cover.\n else {\n var z = x1 - x0,\n node = this._root,\n parent,\n i;\n\n while (x0 > x || x >= x1 || y0 > y || y >= y1) {\n i = (y < y0) << 1 | (x < x0);\n parent = new Array(4), parent[i] = node, node = parent, z *= 2;\n switch (i) {\n case 0: x1 = x0 + z, y1 = y0 + z; break;\n case 1: x0 = x1 - z, y1 = y0 + z; break;\n case 2: x1 = x0 + z, y0 = y1 - z; break;\n case 3: x0 = x1 - z, y0 = y1 - z; break;\n }\n }\n\n if (this._root && this._root.length) this._root = node;\n }\n\n this._x0 = x0;\n this._y0 = y0;\n this._x1 = x1;\n this._y1 = y1;\n return this;\n}\n","export default function() {\n var data = [];\n this.visit(function(node) {\n if (!node.length) do data.push(node.data); while (node = node.next)\n });\n return data;\n}\n","export default function(_) {\n return arguments.length\n ? this.cover(+_[0][0], +_[0][1]).cover(+_[1][0], +_[1][1])\n : isNaN(this._x0) ? undefined : [[this._x0, this._y0], [this._x1, this._y1]];\n}\n","import Quad from \"./quad.js\";\n\nexport default function(x, y, radius) {\n var data,\n x0 = this._x0,\n y0 = this._y0,\n x1,\n y1,\n x2,\n y2,\n x3 = this._x1,\n y3 = this._y1,\n quads = [],\n node = this._root,\n q,\n i;\n\n if (node) quads.push(new Quad(node, x0, y0, x3, y3));\n if (radius == null) radius = Infinity;\n else {\n x0 = x - radius, y0 = y - radius;\n x3 = x + radius, y3 = y + radius;\n radius *= radius;\n }\n\n while (q = quads.pop()) {\n\n // Stop searching if this quadrant can’t contain a closer node.\n if (!(node = q.node)\n || (x1 = q.x0) > x3\n || (y1 = q.y0) > y3\n || (x2 = q.x1) < x0\n || (y2 = q.y1) < y0) continue;\n\n // Bisect the current quadrant.\n if (node.length) {\n var xm = (x1 + x2) / 2,\n ym = (y1 + y2) / 2;\n\n quads.push(\n new Quad(node[3], xm, ym, x2, y2),\n new Quad(node[2], x1, ym, xm, y2),\n new Quad(node[1], xm, y1, x2, ym),\n new Quad(node[0], x1, y1, xm, ym)\n );\n\n // Visit the closest quadrant first.\n if (i = (y >= ym) << 1 | (x >= xm)) {\n q = quads[quads.length - 1];\n quads[quads.length - 1] = quads[quads.length - 1 - i];\n quads[quads.length - 1 - i] = q;\n }\n }\n\n // Visit this point. (Visiting coincident points isn’t necessary!)\n else {\n var dx = x - +this._x.call(null, node.data),\n dy = y - +this._y.call(null, node.data),\n d2 = dx * dx + dy * dy;\n if (d2 < radius) {\n var d = Math.sqrt(radius = d2);\n x0 = x - d, y0 = y - d;\n x3 = x + d, y3 = y + d;\n data = node.data;\n }\n }\n }\n\n return data;\n}\n","export default function(d) {\n if (isNaN(x = +this._x.call(null, d)) || isNaN(y = +this._y.call(null, d))) return this; // ignore invalid points\n\n var parent,\n node = this._root,\n retainer,\n previous,\n next,\n x0 = this._x0,\n y0 = this._y0,\n x1 = this._x1,\n y1 = this._y1,\n x,\n y,\n xm,\n ym,\n right,\n bottom,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return this;\n\n // Find the leaf node for the point.\n // While descending, also retain the deepest parent with a non-removed sibling.\n if (node.length) while (true) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n if (!(parent = node, node = node[i = bottom << 1 | right])) return this;\n if (!node.length) break;\n if (parent[(i + 1) & 3] || parent[(i + 2) & 3] || parent[(i + 3) & 3]) retainer = parent, j = i;\n }\n\n // Find the point to remove.\n while (node.data !== d) if (!(previous = node, node = node.next)) return this;\n if (next = node.next) delete node.next;\n\n // If there are multiple coincident points, remove just the point.\n if (previous) return (next ? previous.next = next : delete previous.next), this;\n\n // If this is the root point, remove it.\n if (!parent) return this._root = next, this;\n\n // Remove this leaf.\n next ? parent[i] = next : delete parent[i];\n\n // If the parent now contains exactly one leaf, collapse superfluous parents.\n if ((node = parent[0] || parent[1] || parent[2] || parent[3])\n && node === (parent[3] || parent[2] || parent[1] || parent[0])\n && !node.length) {\n if (retainer) retainer[j] = node;\n else this._root = node;\n }\n\n return this;\n}\n\nexport function removeAll(data) {\n for (var i = 0, n = data.length; i < n; ++i) this.remove(data[i]);\n return this;\n}\n","export default function() {\n return this._root;\n}\n","export default function() {\n var size = 0;\n this.visit(function(node) {\n if (!node.length) do ++size; while (node = node.next)\n });\n return size;\n}\n","import Quad from \"./quad.js\";\n\nexport default function(callback) {\n var quads = [], q, node = this._root, child, x0, y0, x1, y1;\n if (node) quads.push(new Quad(node, this._x0, this._y0, this._x1, this._y1));\n while (q = quads.pop()) {\n if (!callback(node = q.node, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1) && node.length) {\n var xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n }\n }\n return this;\n}\n","import Quad from \"./quad.js\";\n\nexport default function(callback) {\n var quads = [], next = [], q;\n if (this._root) quads.push(new Quad(this._root, this._x0, this._y0, this._x1, this._y1));\n while (q = quads.pop()) {\n var node = q.node;\n if (node.length) {\n var child, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1, xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n }\n next.push(q);\n }\n while (q = next.pop()) {\n callback(q.node, q.x0, q.y0, q.x1, q.y1);\n }\n return this;\n}\n","import constant from \"./constant\";\nimport jiggle from \"./jiggle\";\nimport {quadtree} from \"d3-quadtree\";\nimport {x, y} from \"./simulation\";\n\nexport default function() {\n var nodes,\n node,\n alpha,\n strength = constant(-30),\n strengths,\n distanceMin2 = 1,\n distanceMax2 = Infinity,\n theta2 = 0.81;\n\n function force(_) {\n var i, n = nodes.length, tree = quadtree(nodes, x, y).visitAfter(accumulate);\n for (alpha = _, i = 0; i < n; ++i) node = nodes[i], tree.visit(apply);\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length, node;\n strengths = new Array(n);\n for (i = 0; i < n; ++i) node = nodes[i], strengths[node.index] = +strength(node, i, nodes);\n }\n\n function accumulate(quad) {\n var strength = 0, q, c, weight = 0, x, y, i;\n\n // For internal nodes, accumulate forces from child quadrants.\n if (quad.length) {\n for (x = y = i = 0; i < 4; ++i) {\n if ((q = quad[i]) && (c = Math.abs(q.value))) {\n strength += q.value, weight += c, x += c * q.x, y += c * q.y;\n }\n }\n quad.x = x / weight;\n quad.y = y / weight;\n }\n\n // For leaf nodes, accumulate forces from coincident quadrants.\n else {\n q = quad;\n q.x = q.data.x;\n q.y = q.data.y;\n do strength += strengths[q.data.index];\n while (q = q.next);\n }\n\n quad.value = strength;\n }\n\n function apply(quad, x1, _, x2) {\n if (!quad.value) return true;\n\n var x = quad.x - node.x,\n y = quad.y - node.y,\n w = x2 - x1,\n l = x * x + y * y;\n\n // Apply the Barnes-Hut approximation if possible.\n // Limit forces for very close nodes; randomize direction if coincident.\n if (w * w / theta2 < l) {\n if (l < distanceMax2) {\n if (x === 0) x = jiggle(), l += x * x;\n if (y === 0) y = jiggle(), l += y * y;\n if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);\n node.vx += x * quad.value * alpha / l;\n node.vy += y * quad.value * alpha / l;\n }\n return true;\n }\n\n // Otherwise, process points directly.\n else if (quad.length || l >= distanceMax2) return;\n\n // Limit forces for very close nodes; randomize direction if coincident.\n if (quad.data !== node || quad.next) {\n if (x === 0) x = jiggle(), l += x * x;\n if (y === 0) y = jiggle(), l += y * y;\n if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);\n }\n\n do if (quad.data !== node) {\n w = strengths[quad.data.index] * alpha / l;\n node.vx += x * w;\n node.vy += y * w;\n } while (quad = quad.next);\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.distanceMin = function(_) {\n return arguments.length ? (distanceMin2 = _ * _, force) : Math.sqrt(distanceMin2);\n };\n\n force.distanceMax = function(_) {\n return arguments.length ? (distanceMax2 = _ * _, force) : Math.sqrt(distanceMax2);\n };\n\n force.theta = function(_) {\n return arguments.length ? (theta2 = _ * _, force) : Math.sqrt(theta2);\n };\n\n return force;\n}\n","import constant from \"./constant\";\n\nexport default function(radius, x, y) {\n var nodes,\n strength = constant(0.1),\n strengths,\n radiuses;\n\n if (typeof radius !== \"function\") radius = constant(+radius);\n if (x == null) x = 0;\n if (y == null) y = 0;\n\n function force(alpha) {\n for (var i = 0, n = nodes.length; i < n; ++i) {\n var node = nodes[i],\n dx = node.x - x || 1e-6,\n dy = node.y - y || 1e-6,\n r = Math.sqrt(dx * dx + dy * dy),\n k = (radiuses[i] - r) * strengths[i] * alpha / r;\n node.vx += dx * k;\n node.vy += dy * k;\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length;\n strengths = new Array(n);\n radiuses = new Array(n);\n for (i = 0; i < n; ++i) {\n radiuses[i] = +radius(nodes[i], i, nodes);\n strengths[i] = isNaN(radiuses[i]) ? 0 : +strength(nodes[i], i, nodes);\n }\n }\n\n force.initialize = function(_) {\n nodes = _, initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : radius;\n };\n\n force.x = function(_) {\n return arguments.length ? (x = +_, force) : x;\n };\n\n force.y = function(_) {\n return arguments.length ? (y = +_, force) : y;\n };\n\n return force;\n}\n","import constant from \"./constant\";\n\nexport default function(x) {\n var strength = constant(0.1),\n nodes,\n strengths,\n xz;\n\n if (typeof x !== \"function\") x = constant(x == null ? 0 : +x);\n\n function force(alpha) {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.vx += (xz[i] - node.x) * strengths[i] * alpha;\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length;\n strengths = new Array(n);\n xz = new Array(n);\n for (i = 0; i < n; ++i) {\n strengths[i] = isNaN(xz[i] = +x(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes);\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : x;\n };\n\n return force;\n}\n","import constant from \"./constant\";\n\nexport default function(y) {\n var strength = constant(0.1),\n nodes,\n strengths,\n yz;\n\n if (typeof y !== \"function\") y = constant(y == null ? 0 : +y);\n\n function force(alpha) {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.vy += (yz[i] - node.y) * strengths[i] * alpha;\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length;\n strengths = new Array(n);\n yz = new Array(n);\n for (i = 0; i < n; ++i) {\n strengths[i] = isNaN(yz[i] = +y(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes);\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : y;\n };\n\n return force;\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","// [[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","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 {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 \"%\": function(x, p) { return (x * 100).toFixed(p); },\n \"b\": function(x) { return Math.round(x).toString(2); },\n \"c\": function(x) { return x + \"\"; },\n \"d\": formatDecimal,\n \"e\": function(x, p) { return x.toExponential(p); },\n \"f\": function(x, p) { return x.toFixed(p); },\n \"g\": function(x, p) { return x.toPrecision(p); },\n \"o\": function(x) { return Math.round(x).toString(8); },\n \"p\": function(x, p) { return formatRounded(x * 100, p); },\n \"r\": formatRounded,\n \"s\": formatPrefixAuto,\n \"X\": function(x) { return Math.round(x).toString(16).toUpperCase(); },\n \"x\": function(x) { return 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 formatLocale from \"./locale.js\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n decimal: \".\",\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"],\n minus: \"-\"\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n format = locale.format;\n formatPrefix = locale.formatPrefix;\n return locale;\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 exponent from \"./exponent.js\";\n\nexport default function(step) {\n return Math.max(0, -exponent(Math.abs(step)));\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","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","// Adds floating point numbers with twice the normal precision.\n// Reference: J. R. Shewchuk, Adaptive Precision Floating-Point Arithmetic and\n// Fast Robust Geometric Predicates, Discrete & Computational Geometry 18(3)\n// 305–363 (1997).\n// Code adapted from GeographicLib by Charles F. F. Karney,\n// http://geographiclib.sourceforge.net/\n\nexport default function() {\n return new Adder;\n}\n\nfunction Adder() {\n this.reset();\n}\n\nAdder.prototype = {\n constructor: Adder,\n reset: function() {\n this.s = // rounded value\n this.t = 0; // exact error\n },\n add: function(y) {\n add(temp, y, this.t);\n add(this, temp.s, this.s);\n if (this.s) this.t += temp.t;\n else this.s = temp.t;\n },\n valueOf: function() {\n return this.s;\n }\n};\n\nvar temp = new Adder;\n\nfunction add(adder, a, b) {\n var x = adder.s = a + b,\n bv = x - a,\n av = x - bv;\n adder.t = (a - av) + (b - bv);\n}\n","export var epsilon = 1e-6;\nexport var epsilon2 = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var quarterPi = pi / 4;\nexport var tau = pi * 2;\n\nexport var degrees = 180 / pi;\nexport var radians = pi / 180;\n\nexport var abs = Math.abs;\nexport var atan = Math.atan;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var ceil = Math.ceil;\nexport var exp = Math.exp;\nexport var floor = Math.floor;\nexport var log = Math.log;\nexport var pow = Math.pow;\nexport var sin = Math.sin;\nexport var sign = Math.sign || function(x) { return x > 0 ? 1 : x < 0 ? -1 : 0; };\nexport var sqrt = Math.sqrt;\nexport var tan = Math.tan;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x > 1 ? halfPi : x < -1 ? -halfPi : Math.asin(x);\n}\n\nexport function haversin(x) {\n return (x = sin(x / 2)) * x;\n}\n","export default function noop() {}\n","function streamGeometry(geometry, stream) {\n if (geometry && streamGeometryType.hasOwnProperty(geometry.type)) {\n streamGeometryType[geometry.type](geometry, stream);\n }\n}\n\nvar streamObjectType = {\n Feature: function(object, stream) {\n streamGeometry(object.geometry, stream);\n },\n FeatureCollection: function(object, stream) {\n var features = object.features, i = -1, n = features.length;\n while (++i < n) streamGeometry(features[i].geometry, stream);\n }\n};\n\nvar streamGeometryType = {\n Sphere: function(object, stream) {\n stream.sphere();\n },\n Point: function(object, stream) {\n object = object.coordinates;\n stream.point(object[0], object[1], object[2]);\n },\n MultiPoint: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) object = coordinates[i], stream.point(object[0], object[1], object[2]);\n },\n LineString: function(object, stream) {\n streamLine(object.coordinates, stream, 0);\n },\n MultiLineString: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) streamLine(coordinates[i], stream, 0);\n },\n Polygon: function(object, stream) {\n streamPolygon(object.coordinates, stream);\n },\n MultiPolygon: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) streamPolygon(coordinates[i], stream);\n },\n GeometryCollection: function(object, stream) {\n var geometries = object.geometries, i = -1, n = geometries.length;\n while (++i < n) streamGeometry(geometries[i], stream);\n }\n};\n\nfunction streamLine(coordinates, stream, closed) {\n var i = -1, n = coordinates.length - closed, coordinate;\n stream.lineStart();\n while (++i < n) coordinate = coordinates[i], stream.point(coordinate[0], coordinate[1], coordinate[2]);\n stream.lineEnd();\n}\n\nfunction streamPolygon(coordinates, stream) {\n var i = -1, n = coordinates.length;\n stream.polygonStart();\n while (++i < n) streamLine(coordinates[i], stream, 1);\n stream.polygonEnd();\n}\n\nexport default function(object, stream) {\n if (object && streamObjectType.hasOwnProperty(object.type)) {\n streamObjectType[object.type](object, stream);\n } else {\n streamGeometry(object, stream);\n }\n}\n","import adder from \"./adder.js\";\nimport {atan2, cos, quarterPi, radians, sin, tau} from \"./math.js\";\nimport noop from \"./noop.js\";\nimport stream from \"./stream.js\";\n\nexport var areaRingSum = adder();\n\nvar areaSum = adder(),\n lambda00,\n phi00,\n lambda0,\n cosPhi0,\n sinPhi0;\n\nexport var areaStream = {\n point: noop,\n lineStart: noop,\n lineEnd: noop,\n polygonStart: function() {\n areaRingSum.reset();\n areaStream.lineStart = areaRingStart;\n areaStream.lineEnd = areaRingEnd;\n },\n polygonEnd: function() {\n var areaRing = +areaRingSum;\n areaSum.add(areaRing < 0 ? tau + areaRing : areaRing);\n this.lineStart = this.lineEnd = this.point = noop;\n },\n sphere: function() {\n areaSum.add(tau);\n }\n};\n\nfunction areaRingStart() {\n areaStream.point = areaPointFirst;\n}\n\nfunction areaRingEnd() {\n areaPoint(lambda00, phi00);\n}\n\nfunction areaPointFirst(lambda, phi) {\n areaStream.point = areaPoint;\n lambda00 = lambda, phi00 = phi;\n lambda *= radians, phi *= radians;\n lambda0 = lambda, cosPhi0 = cos(phi = phi / 2 + quarterPi), sinPhi0 = sin(phi);\n}\n\nfunction areaPoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n phi = phi / 2 + quarterPi; // half the angular distance from south pole\n\n // Spherical excess E for a spherical triangle with vertices: south pole,\n // previous point, current point. Uses a formula derived from Cagnoli’s\n // theorem. See Todhunter, Spherical Trig. (1871), Sec. 103, Eq. (2).\n var dLambda = lambda - lambda0,\n sdLambda = dLambda >= 0 ? 1 : -1,\n adLambda = sdLambda * dLambda,\n cosPhi = cos(phi),\n sinPhi = sin(phi),\n k = sinPhi0 * sinPhi,\n u = cosPhi0 * cosPhi + k * cos(adLambda),\n v = k * sdLambda * sin(adLambda);\n areaRingSum.add(atan2(v, u));\n\n // Advance the previous points.\n lambda0 = lambda, cosPhi0 = cosPhi, sinPhi0 = sinPhi;\n}\n\nexport default function(object) {\n areaSum.reset();\n stream(object, areaStream);\n return areaSum * 2;\n}\n","import {asin, atan2, cos, sin, sqrt} from \"./math.js\";\n\nexport function spherical(cartesian) {\n return [atan2(cartesian[1], cartesian[0]), asin(cartesian[2])];\n}\n\nexport function cartesian(spherical) {\n var lambda = spherical[0], phi = spherical[1], cosPhi = cos(phi);\n return [cosPhi * cos(lambda), cosPhi * sin(lambda), sin(phi)];\n}\n\nexport function cartesianDot(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n}\n\nexport function cartesianCross(a, b) {\n return [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]];\n}\n\n// TODO return a\nexport function cartesianAddInPlace(a, b) {\n a[0] += b[0], a[1] += b[1], a[2] += b[2];\n}\n\nexport function cartesianScale(vector, k) {\n return [vector[0] * k, vector[1] * k, vector[2] * k];\n}\n\n// TODO return d\nexport function cartesianNormalizeInPlace(d) {\n var l = sqrt(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]);\n d[0] /= l, d[1] /= l, d[2] /= l;\n}\n","import adder from \"./adder.js\";\nimport {areaStream, areaRingSum} from \"./area.js\";\nimport {cartesian, cartesianCross, cartesianNormalizeInPlace, spherical} from \"./cartesian.js\";\nimport {abs, degrees, epsilon, radians} from \"./math.js\";\nimport stream from \"./stream.js\";\n\nvar lambda0, phi0, lambda1, phi1, // bounds\n lambda2, // previous lambda-coordinate\n lambda00, phi00, // first point\n p0, // previous 3D point\n deltaSum = adder(),\n ranges,\n range;\n\nvar boundsStream = {\n point: boundsPoint,\n lineStart: boundsLineStart,\n lineEnd: boundsLineEnd,\n polygonStart: function() {\n boundsStream.point = boundsRingPoint;\n boundsStream.lineStart = boundsRingStart;\n boundsStream.lineEnd = boundsRingEnd;\n deltaSum.reset();\n areaStream.polygonStart();\n },\n polygonEnd: function() {\n areaStream.polygonEnd();\n boundsStream.point = boundsPoint;\n boundsStream.lineStart = boundsLineStart;\n boundsStream.lineEnd = boundsLineEnd;\n if (areaRingSum < 0) lambda0 = -(lambda1 = 180), phi0 = -(phi1 = 90);\n else if (deltaSum > epsilon) phi1 = 90;\n else if (deltaSum < -epsilon) phi0 = -90;\n range[0] = lambda0, range[1] = lambda1;\n },\n sphere: function() {\n lambda0 = -(lambda1 = 180), phi0 = -(phi1 = 90);\n }\n};\n\nfunction boundsPoint(lambda, phi) {\n ranges.push(range = [lambda0 = lambda, lambda1 = lambda]);\n if (phi < phi0) phi0 = phi;\n if (phi > phi1) phi1 = phi;\n}\n\nfunction linePoint(lambda, phi) {\n var p = cartesian([lambda * radians, phi * radians]);\n if (p0) {\n var normal = cartesianCross(p0, p),\n equatorial = [normal[1], -normal[0], 0],\n inflection = cartesianCross(equatorial, normal);\n cartesianNormalizeInPlace(inflection);\n inflection = spherical(inflection);\n var delta = lambda - lambda2,\n sign = delta > 0 ? 1 : -1,\n lambdai = inflection[0] * degrees * sign,\n phii,\n antimeridian = abs(delta) > 180;\n if (antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) {\n phii = inflection[1] * degrees;\n if (phii > phi1) phi1 = phii;\n } else if (lambdai = (lambdai + 360) % 360 - 180, antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) {\n phii = -inflection[1] * degrees;\n if (phii < phi0) phi0 = phii;\n } else {\n if (phi < phi0) phi0 = phi;\n if (phi > phi1) phi1 = phi;\n }\n if (antimeridian) {\n if (lambda < lambda2) {\n if (angle(lambda0, lambda) > angle(lambda0, lambda1)) lambda1 = lambda;\n } else {\n if (angle(lambda, lambda1) > angle(lambda0, lambda1)) lambda0 = lambda;\n }\n } else {\n if (lambda1 >= lambda0) {\n if (lambda < lambda0) lambda0 = lambda;\n if (lambda > lambda1) lambda1 = lambda;\n } else {\n if (lambda > lambda2) {\n if (angle(lambda0, lambda) > angle(lambda0, lambda1)) lambda1 = lambda;\n } else {\n if (angle(lambda, lambda1) > angle(lambda0, lambda1)) lambda0 = lambda;\n }\n }\n }\n } else {\n ranges.push(range = [lambda0 = lambda, lambda1 = lambda]);\n }\n if (phi < phi0) phi0 = phi;\n if (phi > phi1) phi1 = phi;\n p0 = p, lambda2 = lambda;\n}\n\nfunction boundsLineStart() {\n boundsStream.point = linePoint;\n}\n\nfunction boundsLineEnd() {\n range[0] = lambda0, range[1] = lambda1;\n boundsStream.point = boundsPoint;\n p0 = null;\n}\n\nfunction boundsRingPoint(lambda, phi) {\n if (p0) {\n var delta = lambda - lambda2;\n deltaSum.add(abs(delta) > 180 ? delta + (delta > 0 ? 360 : -360) : delta);\n } else {\n lambda00 = lambda, phi00 = phi;\n }\n areaStream.point(lambda, phi);\n linePoint(lambda, phi);\n}\n\nfunction boundsRingStart() {\n areaStream.lineStart();\n}\n\nfunction boundsRingEnd() {\n boundsRingPoint(lambda00, phi00);\n areaStream.lineEnd();\n if (abs(deltaSum) > epsilon) lambda0 = -(lambda1 = 180);\n range[0] = lambda0, range[1] = lambda1;\n p0 = null;\n}\n\n// Finds the left-right distance between two longitudes.\n// This is almost the same as (lambda1 - lambda0 + 360°) % 360°, except that we want\n// the distance between ±180° to be 360°.\nfunction angle(lambda0, lambda1) {\n return (lambda1 -= lambda0) < 0 ? lambda1 + 360 : lambda1;\n}\n\nfunction rangeCompare(a, b) {\n return a[0] - b[0];\n}\n\nfunction rangeContains(range, x) {\n return range[0] <= range[1] ? range[0] <= x && x <= range[1] : x < range[0] || range[1] < x;\n}\n\nexport default function(feature) {\n var i, n, a, b, merged, deltaMax, delta;\n\n phi1 = lambda1 = -(lambda0 = phi0 = Infinity);\n ranges = [];\n stream(feature, boundsStream);\n\n // First, sort ranges by their minimum longitudes.\n if (n = ranges.length) {\n ranges.sort(rangeCompare);\n\n // Then, merge any ranges that overlap.\n for (i = 1, a = ranges[0], merged = [a]; i < n; ++i) {\n b = ranges[i];\n if (rangeContains(a, b[0]) || rangeContains(a, b[1])) {\n if (angle(a[0], b[1]) > angle(a[0], a[1])) a[1] = b[1];\n if (angle(b[0], a[1]) > angle(a[0], a[1])) a[0] = b[0];\n } else {\n merged.push(a = b);\n }\n }\n\n // Finally, find the largest gap between the merged ranges.\n // The final bounding box will be the inverse of this gap.\n for (deltaMax = -Infinity, n = merged.length - 1, i = 0, a = merged[n]; i <= n; a = b, ++i) {\n b = merged[i];\n if ((delta = angle(a[1], b[0])) > deltaMax) deltaMax = delta, lambda0 = b[0], lambda1 = a[1];\n }\n }\n\n ranges = range = null;\n\n return lambda0 === Infinity || phi0 === Infinity\n ? [[NaN, NaN], [NaN, NaN]]\n : [[lambda0, phi0], [lambda1, phi1]];\n}\n","import {asin, atan2, cos, degrees, epsilon, epsilon2, radians, sin, sqrt} from \"./math.js\";\nimport noop from \"./noop.js\";\nimport stream from \"./stream.js\";\n\nvar W0, W1,\n X0, Y0, Z0,\n X1, Y1, Z1,\n X2, Y2, Z2,\n lambda00, phi00, // first point\n x0, y0, z0; // previous point\n\nvar centroidStream = {\n sphere: noop,\n point: centroidPoint,\n lineStart: centroidLineStart,\n lineEnd: centroidLineEnd,\n polygonStart: function() {\n centroidStream.lineStart = centroidRingStart;\n centroidStream.lineEnd = centroidRingEnd;\n },\n polygonEnd: function() {\n centroidStream.lineStart = centroidLineStart;\n centroidStream.lineEnd = centroidLineEnd;\n }\n};\n\n// Arithmetic mean of Cartesian vectors.\nfunction centroidPoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n var cosPhi = cos(phi);\n centroidPointCartesian(cosPhi * cos(lambda), cosPhi * sin(lambda), sin(phi));\n}\n\nfunction centroidPointCartesian(x, y, z) {\n ++W0;\n X0 += (x - X0) / W0;\n Y0 += (y - Y0) / W0;\n Z0 += (z - Z0) / W0;\n}\n\nfunction centroidLineStart() {\n centroidStream.point = centroidLinePointFirst;\n}\n\nfunction centroidLinePointFirst(lambda, phi) {\n lambda *= radians, phi *= radians;\n var cosPhi = cos(phi);\n x0 = cosPhi * cos(lambda);\n y0 = cosPhi * sin(lambda);\n z0 = sin(phi);\n centroidStream.point = centroidLinePoint;\n centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidLinePoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n var cosPhi = cos(phi),\n x = cosPhi * cos(lambda),\n y = cosPhi * sin(lambda),\n z = sin(phi),\n w = atan2(sqrt((w = y0 * z - z0 * y) * w + (w = z0 * x - x0 * z) * w + (w = x0 * y - y0 * x) * w), x0 * x + y0 * y + z0 * z);\n W1 += w;\n X1 += w * (x0 + (x0 = x));\n Y1 += w * (y0 + (y0 = y));\n Z1 += w * (z0 + (z0 = z));\n centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidLineEnd() {\n centroidStream.point = centroidPoint;\n}\n\n// See J. E. Brock, The Inertia Tensor for a Spherical Triangle,\n// J. Applied Mechanics 42, 239 (1975).\nfunction centroidRingStart() {\n centroidStream.point = centroidRingPointFirst;\n}\n\nfunction centroidRingEnd() {\n centroidRingPoint(lambda00, phi00);\n centroidStream.point = centroidPoint;\n}\n\nfunction centroidRingPointFirst(lambda, phi) {\n lambda00 = lambda, phi00 = phi;\n lambda *= radians, phi *= radians;\n centroidStream.point = centroidRingPoint;\n var cosPhi = cos(phi);\n x0 = cosPhi * cos(lambda);\n y0 = cosPhi * sin(lambda);\n z0 = sin(phi);\n centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidRingPoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n var cosPhi = cos(phi),\n x = cosPhi * cos(lambda),\n y = cosPhi * sin(lambda),\n z = sin(phi),\n cx = y0 * z - z0 * y,\n cy = z0 * x - x0 * z,\n cz = x0 * y - y0 * x,\n m = sqrt(cx * cx + cy * cy + cz * cz),\n w = asin(m), // line weight = angle\n v = m && -w / m; // area weight multiplier\n X2 += v * cx;\n Y2 += v * cy;\n Z2 += v * cz;\n W1 += w;\n X1 += w * (x0 + (x0 = x));\n Y1 += w * (y0 + (y0 = y));\n Z1 += w * (z0 + (z0 = z));\n centroidPointCartesian(x0, y0, z0);\n}\n\nexport default function(object) {\n W0 = W1 =\n X0 = Y0 = Z0 =\n X1 = Y1 = Z1 =\n X2 = Y2 = Z2 = 0;\n stream(object, centroidStream);\n\n var x = X2,\n y = Y2,\n z = Z2,\n m = x * x + y * y + z * z;\n\n // If the area-weighted ccentroid is undefined, fall back to length-weighted ccentroid.\n if (m < epsilon2) {\n x = X1, y = Y1, z = Z1;\n // If the feature has zero length, fall back to arithmetic mean of point vectors.\n if (W1 < epsilon) x = X0, y = Y0, z = Z0;\n m = x * x + y * y + z * z;\n // If the feature still has an undefined ccentroid, then return.\n if (m < epsilon2) return [NaN, NaN];\n }\n\n return [atan2(y, x) * degrees, asin(z / sqrt(m)) * degrees];\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(a, b) {\n\n function compose(x, y) {\n return x = a(x, y), b(x[0], x[1]);\n }\n\n if (a.invert && b.invert) compose.invert = function(x, y) {\n return x = b.invert(x, y), x && a.invert(x[0], x[1]);\n };\n\n return compose;\n}\n","import compose from \"./compose.js\";\nimport {abs, asin, atan2, cos, degrees, pi, radians, sin, tau} from \"./math.js\";\n\nfunction rotationIdentity(lambda, phi) {\n return [abs(lambda) > pi ? lambda + Math.round(-lambda / tau) * tau : lambda, phi];\n}\n\nrotationIdentity.invert = rotationIdentity;\n\nexport function rotateRadians(deltaLambda, deltaPhi, deltaGamma) {\n return (deltaLambda %= tau) ? (deltaPhi || deltaGamma ? compose(rotationLambda(deltaLambda), rotationPhiGamma(deltaPhi, deltaGamma))\n : rotationLambda(deltaLambda))\n : (deltaPhi || deltaGamma ? rotationPhiGamma(deltaPhi, deltaGamma)\n : rotationIdentity);\n}\n\nfunction forwardRotationLambda(deltaLambda) {\n return function(lambda, phi) {\n return lambda += deltaLambda, [lambda > pi ? lambda - tau : lambda < -pi ? lambda + tau : lambda, phi];\n };\n}\n\nfunction rotationLambda(deltaLambda) {\n var rotation = forwardRotationLambda(deltaLambda);\n rotation.invert = forwardRotationLambda(-deltaLambda);\n return rotation;\n}\n\nfunction rotationPhiGamma(deltaPhi, deltaGamma) {\n var cosDeltaPhi = cos(deltaPhi),\n sinDeltaPhi = sin(deltaPhi),\n cosDeltaGamma = cos(deltaGamma),\n sinDeltaGamma = sin(deltaGamma);\n\n function rotation(lambda, phi) {\n var cosPhi = cos(phi),\n x = cos(lambda) * cosPhi,\n y = sin(lambda) * cosPhi,\n z = sin(phi),\n k = z * cosDeltaPhi + x * sinDeltaPhi;\n return [\n atan2(y * cosDeltaGamma - k * sinDeltaGamma, x * cosDeltaPhi - z * sinDeltaPhi),\n asin(k * cosDeltaGamma + y * sinDeltaGamma)\n ];\n }\n\n rotation.invert = function(lambda, phi) {\n var cosPhi = cos(phi),\n x = cos(lambda) * cosPhi,\n y = sin(lambda) * cosPhi,\n z = sin(phi),\n k = z * cosDeltaGamma - y * sinDeltaGamma;\n return [\n atan2(y * cosDeltaGamma + z * sinDeltaGamma, x * cosDeltaPhi + k * sinDeltaPhi),\n asin(k * cosDeltaPhi - x * sinDeltaPhi)\n ];\n };\n\n return rotation;\n}\n\nexport default function(rotate) {\n rotate = rotateRadians(rotate[0] * radians, rotate[1] * radians, rotate.length > 2 ? rotate[2] * radians : 0);\n\n function forward(coordinates) {\n coordinates = rotate(coordinates[0] * radians, coordinates[1] * radians);\n return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates;\n }\n\n forward.invert = function(coordinates) {\n coordinates = rotate.invert(coordinates[0] * radians, coordinates[1] * radians);\n return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates;\n };\n\n return forward;\n}\n","import {cartesian, cartesianNormalizeInPlace, spherical} from \"./cartesian.js\";\nimport constant from \"./constant.js\";\nimport {acos, cos, degrees, epsilon, radians, sin, tau} from \"./math.js\";\nimport {rotateRadians} from \"./rotation.js\";\n\n// Generates a circle centered at [0°, 0°], with a given radius and precision.\nexport function circleStream(stream, radius, delta, direction, t0, t1) {\n if (!delta) return;\n var cosRadius = cos(radius),\n sinRadius = sin(radius),\n step = direction * delta;\n if (t0 == null) {\n t0 = radius + direction * tau;\n t1 = radius - step / 2;\n } else {\n t0 = circleRadius(cosRadius, t0);\n t1 = circleRadius(cosRadius, t1);\n if (direction > 0 ? t0 < t1 : t0 > t1) t0 += direction * tau;\n }\n for (var point, t = t0; direction > 0 ? t > t1 : t < t1; t -= step) {\n point = spherical([cosRadius, -sinRadius * cos(t), -sinRadius * sin(t)]);\n stream.point(point[0], point[1]);\n }\n}\n\n// Returns the signed angle of a cartesian point relative to [cosRadius, 0, 0].\nfunction circleRadius(cosRadius, point) {\n point = cartesian(point), point[0] -= cosRadius;\n cartesianNormalizeInPlace(point);\n var radius = acos(-point[1]);\n return ((-point[2] < 0 ? -radius : radius) + tau - epsilon) % tau;\n}\n\nexport default function() {\n var center = constant([0, 0]),\n radius = constant(90),\n precision = constant(6),\n ring,\n rotate,\n stream = {point: point};\n\n function point(x, y) {\n ring.push(x = rotate(x, y));\n x[0] *= degrees, x[1] *= degrees;\n }\n\n function circle() {\n var c = center.apply(this, arguments),\n r = radius.apply(this, arguments) * radians,\n p = precision.apply(this, arguments) * radians;\n ring = [];\n rotate = rotateRadians(-c[0] * radians, -c[1] * radians, 0).invert;\n circleStream(stream, r, p, 1);\n c = {type: \"Polygon\", coordinates: [ring]};\n ring = rotate = null;\n return c;\n }\n\n circle.center = function(_) {\n return arguments.length ? (center = typeof _ === \"function\" ? _ : constant([+_[0], +_[1]]), circle) : center;\n };\n\n circle.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), circle) : radius;\n };\n\n circle.precision = function(_) {\n return arguments.length ? (precision = typeof _ === \"function\" ? _ : constant(+_), circle) : precision;\n };\n\n return circle;\n}\n","import noop from \"../noop.js\";\n\nexport default function() {\n var lines = [],\n line;\n return {\n point: function(x, y, m) {\n line.push([x, y, m]);\n },\n lineStart: function() {\n lines.push(line = []);\n },\n lineEnd: noop,\n rejoin: function() {\n if (lines.length > 1) lines.push(lines.pop().concat(lines.shift()));\n },\n result: function() {\n var result = lines;\n lines = [];\n line = null;\n return result;\n }\n };\n}\n","import {abs, epsilon} from \"./math.js\";\n\nexport default function(a, b) {\n return abs(a[0] - b[0]) < epsilon && abs(a[1] - b[1]) < epsilon;\n}\n","import pointEqual from \"../pointEqual.js\";\nimport {epsilon} from \"../math.js\";\n\nfunction Intersection(point, points, other, entry) {\n this.x = point;\n this.z = points;\n this.o = other; // another intersection\n this.e = entry; // is an entry?\n this.v = false; // visited\n this.n = this.p = null; // next & previous\n}\n\n// A generalized polygon clipping algorithm: given a polygon that has been cut\n// into its visible line segments, and rejoins the segments by interpolating\n// along the clip edge.\nexport default function(segments, compareIntersection, startInside, interpolate, stream) {\n var subject = [],\n clip = [],\n i,\n n;\n\n segments.forEach(function(segment) {\n if ((n = segment.length - 1) <= 0) return;\n var n, p0 = segment[0], p1 = segment[n], x;\n\n if (pointEqual(p0, p1)) {\n if (!p0[2] && !p1[2]) {\n stream.lineStart();\n for (i = 0; i < n; ++i) stream.point((p0 = segment[i])[0], p0[1]);\n stream.lineEnd();\n return;\n }\n // handle degenerate cases by moving the point\n p1[0] += 2 * epsilon;\n }\n\n subject.push(x = new Intersection(p0, segment, null, true));\n clip.push(x.o = new Intersection(p0, null, x, false));\n subject.push(x = new Intersection(p1, segment, null, false));\n clip.push(x.o = new Intersection(p1, null, x, true));\n });\n\n if (!subject.length) return;\n\n clip.sort(compareIntersection);\n link(subject);\n link(clip);\n\n for (i = 0, n = clip.length; i < n; ++i) {\n clip[i].e = startInside = !startInside;\n }\n\n var start = subject[0],\n points,\n point;\n\n while (1) {\n // Find first unvisited intersection.\n var current = start,\n isSubject = true;\n while (current.v) if ((current = current.n) === start) return;\n points = current.z;\n stream.lineStart();\n do {\n current.v = current.o.v = true;\n if (current.e) {\n if (isSubject) {\n for (i = 0, n = points.length; i < n; ++i) stream.point((point = points[i])[0], point[1]);\n } else {\n interpolate(current.x, current.n.x, 1, stream);\n }\n current = current.n;\n } else {\n if (isSubject) {\n points = current.p.z;\n for (i = points.length - 1; i >= 0; --i) stream.point((point = points[i])[0], point[1]);\n } else {\n interpolate(current.x, current.p.x, -1, stream);\n }\n current = current.p;\n }\n current = current.o;\n points = current.z;\n isSubject = !isSubject;\n } while (!current.v);\n stream.lineEnd();\n }\n}\n\nfunction link(array) {\n if (!(n = array.length)) return;\n var n,\n i = 0,\n a = array[0],\n b;\n while (++i < n) {\n a.n = b = array[i];\n b.p = a;\n a = b;\n }\n a.n = b = array[0];\n b.p = a;\n}\n","import adder from \"./adder.js\";\nimport {cartesian, cartesianCross, cartesianNormalizeInPlace} from \"./cartesian.js\";\nimport {abs, asin, atan2, cos, epsilon, halfPi, pi, quarterPi, sign, sin, tau} from \"./math.js\";\n\nvar sum = adder();\n\nfunction longitude(point) {\n if (abs(point[0]) <= pi)\n return point[0];\n else\n return sign(point[0]) * ((abs(point[0]) + pi) % tau - pi);\n}\n\nexport default function(polygon, point) {\n var lambda = longitude(point),\n phi = point[1],\n sinPhi = sin(phi),\n normal = [sin(lambda), -cos(lambda), 0],\n angle = 0,\n winding = 0;\n\n sum.reset();\n\n if (sinPhi === 1) phi = halfPi + epsilon;\n else if (sinPhi === -1) phi = -halfPi - epsilon;\n\n for (var i = 0, n = polygon.length; i < n; ++i) {\n if (!(m = (ring = polygon[i]).length)) continue;\n var ring,\n m,\n point0 = ring[m - 1],\n lambda0 = longitude(point0),\n phi0 = point0[1] / 2 + quarterPi,\n sinPhi0 = sin(phi0),\n cosPhi0 = cos(phi0);\n\n for (var j = 0; j < m; ++j, lambda0 = lambda1, sinPhi0 = sinPhi1, cosPhi0 = cosPhi1, point0 = point1) {\n var point1 = ring[j],\n lambda1 = longitude(point1),\n phi1 = point1[1] / 2 + quarterPi,\n sinPhi1 = sin(phi1),\n cosPhi1 = cos(phi1),\n delta = lambda1 - lambda0,\n sign = delta >= 0 ? 1 : -1,\n absDelta = sign * delta,\n antimeridian = absDelta > pi,\n k = sinPhi0 * sinPhi1;\n\n sum.add(atan2(k * sign * sin(absDelta), cosPhi0 * cosPhi1 + k * cos(absDelta)));\n angle += antimeridian ? delta + sign * tau : delta;\n\n // Are the longitudes either side of the point’s meridian (lambda),\n // and are the latitudes smaller than the parallel (phi)?\n if (antimeridian ^ lambda0 >= lambda ^ lambda1 >= lambda) {\n var arc = cartesianCross(cartesian(point0), cartesian(point1));\n cartesianNormalizeInPlace(arc);\n var intersection = cartesianCross(normal, arc);\n cartesianNormalizeInPlace(intersection);\n var phiArc = (antimeridian ^ delta >= 0 ? -1 : 1) * asin(intersection[2]);\n if (phi > phiArc || phi === phiArc && (arc[0] || arc[1])) {\n winding += antimeridian ^ delta >= 0 ? 1 : -1;\n }\n }\n }\n }\n\n // First, determine whether the South pole is inside or outside:\n //\n // It is inside if:\n // * the polygon winds around it in a clockwise direction.\n // * the polygon does not (cumulatively) wind around it, but has a negative\n // (counter-clockwise) area.\n //\n // Second, count the (signed) number of times a segment crosses a lambda\n // from the point to the South pole. If it is zero, then the point is the\n // same side as the South pole.\n\n return (angle < -epsilon || angle < epsilon && sum < -epsilon) ^ (winding & 1);\n}\n","import clipBuffer from \"./buffer.js\";\nimport clipRejoin from \"./rejoin.js\";\nimport {epsilon, halfPi} from \"../math.js\";\nimport polygonContains from \"../polygonContains.js\";\nimport {merge} from \"d3-array\";\n\nexport default function(pointVisible, clipLine, interpolate, start) {\n return function(sink) {\n var line = clipLine(sink),\n ringBuffer = clipBuffer(),\n ringSink = clipLine(ringBuffer),\n polygonStarted = false,\n polygon,\n segments,\n ring;\n\n var clip = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function() {\n clip.point = pointRing;\n clip.lineStart = ringStart;\n clip.lineEnd = ringEnd;\n segments = [];\n polygon = [];\n },\n polygonEnd: function() {\n clip.point = point;\n clip.lineStart = lineStart;\n clip.lineEnd = lineEnd;\n segments = merge(segments);\n var startInside = polygonContains(polygon, start);\n if (segments.length) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n clipRejoin(segments, compareIntersection, startInside, interpolate, sink);\n } else if (startInside) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n sink.lineStart();\n interpolate(null, null, 1, sink);\n sink.lineEnd();\n }\n if (polygonStarted) sink.polygonEnd(), polygonStarted = false;\n segments = polygon = null;\n },\n sphere: function() {\n sink.polygonStart();\n sink.lineStart();\n interpolate(null, null, 1, sink);\n sink.lineEnd();\n sink.polygonEnd();\n }\n };\n\n function point(lambda, phi) {\n if (pointVisible(lambda, phi)) sink.point(lambda, phi);\n }\n\n function pointLine(lambda, phi) {\n line.point(lambda, phi);\n }\n\n function lineStart() {\n clip.point = pointLine;\n line.lineStart();\n }\n\n function lineEnd() {\n clip.point = point;\n line.lineEnd();\n }\n\n function pointRing(lambda, phi) {\n ring.push([lambda, phi]);\n ringSink.point(lambda, phi);\n }\n\n function ringStart() {\n ringSink.lineStart();\n ring = [];\n }\n\n function ringEnd() {\n pointRing(ring[0][0], ring[0][1]);\n ringSink.lineEnd();\n\n var clean = ringSink.clean(),\n ringSegments = ringBuffer.result(),\n i, n = ringSegments.length, m,\n segment,\n point;\n\n ring.pop();\n polygon.push(ring);\n ring = null;\n\n if (!n) return;\n\n // No intersections.\n if (clean & 1) {\n segment = ringSegments[0];\n if ((m = segment.length - 1) > 0) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n sink.lineStart();\n for (i = 0; i < m; ++i) sink.point((point = segment[i])[0], point[1]);\n sink.lineEnd();\n }\n return;\n }\n\n // Rejoin connected segments.\n // TODO reuse ringBuffer.rejoin()?\n if (n > 1 && clean & 2) ringSegments.push(ringSegments.pop().concat(ringSegments.shift()));\n\n segments.push(ringSegments.filter(validSegment));\n }\n\n return clip;\n };\n}\n\nfunction validSegment(segment) {\n return segment.length > 1;\n}\n\n// Intersections are sorted along the clip edge. For both antimeridian cutting\n// and circle clipping, the same comparison is used.\nfunction compareIntersection(a, b) {\n return ((a = a.x)[0] < 0 ? a[1] - halfPi - epsilon : halfPi - a[1])\n - ((b = b.x)[0] < 0 ? b[1] - halfPi - epsilon : halfPi - b[1]);\n}\n","import clip from \"./index.js\";\nimport {abs, atan, cos, epsilon, halfPi, pi, sin} from \"../math.js\";\n\nexport default clip(\n function() { return true; },\n clipAntimeridianLine,\n clipAntimeridianInterpolate,\n [-pi, -halfPi]\n);\n\n// Takes a line and cuts into visible segments. Return values: 0 - there were\n// intersections or the line was empty; 1 - no intersections; 2 - there were\n// intersections, and the first and last segments should be rejoined.\nfunction clipAntimeridianLine(stream) {\n var lambda0 = NaN,\n phi0 = NaN,\n sign0 = NaN,\n clean; // no intersections\n\n return {\n lineStart: function() {\n stream.lineStart();\n clean = 1;\n },\n point: function(lambda1, phi1) {\n var sign1 = lambda1 > 0 ? pi : -pi,\n delta = abs(lambda1 - lambda0);\n if (abs(delta - pi) < epsilon) { // line crosses a pole\n stream.point(lambda0, phi0 = (phi0 + phi1) / 2 > 0 ? halfPi : -halfPi);\n stream.point(sign0, phi0);\n stream.lineEnd();\n stream.lineStart();\n stream.point(sign1, phi0);\n stream.point(lambda1, phi0);\n clean = 0;\n } else if (sign0 !== sign1 && delta >= pi) { // line crosses antimeridian\n if (abs(lambda0 - sign0) < epsilon) lambda0 -= sign0 * epsilon; // handle degeneracies\n if (abs(lambda1 - sign1) < epsilon) lambda1 -= sign1 * epsilon;\n phi0 = clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1);\n stream.point(sign0, phi0);\n stream.lineEnd();\n stream.lineStart();\n stream.point(sign1, phi0);\n clean = 0;\n }\n stream.point(lambda0 = lambda1, phi0 = phi1);\n sign0 = sign1;\n },\n lineEnd: function() {\n stream.lineEnd();\n lambda0 = phi0 = NaN;\n },\n clean: function() {\n return 2 - clean; // if intersections, rejoin first and last segments\n }\n };\n}\n\nfunction clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1) {\n var cosPhi0,\n cosPhi1,\n sinLambda0Lambda1 = sin(lambda0 - lambda1);\n return abs(sinLambda0Lambda1) > epsilon\n ? atan((sin(phi0) * (cosPhi1 = cos(phi1)) * sin(lambda1)\n - sin(phi1) * (cosPhi0 = cos(phi0)) * sin(lambda0))\n / (cosPhi0 * cosPhi1 * sinLambda0Lambda1))\n : (phi0 + phi1) / 2;\n}\n\nfunction clipAntimeridianInterpolate(from, to, direction, stream) {\n var phi;\n if (from == null) {\n phi = direction * halfPi;\n stream.point(-pi, phi);\n stream.point(0, phi);\n stream.point(pi, phi);\n stream.point(pi, 0);\n stream.point(pi, -phi);\n stream.point(0, -phi);\n stream.point(-pi, -phi);\n stream.point(-pi, 0);\n stream.point(-pi, phi);\n } else if (abs(from[0] - to[0]) > epsilon) {\n var lambda = from[0] < to[0] ? pi : -pi;\n phi = direction * lambda / 2;\n stream.point(-lambda, phi);\n stream.point(0, phi);\n stream.point(lambda, phi);\n } else {\n stream.point(to[0], to[1]);\n }\n}\n","import {cartesian, cartesianAddInPlace, cartesianCross, cartesianDot, cartesianScale, spherical} from \"../cartesian.js\";\nimport {circleStream} from \"../circle.js\";\nimport {abs, cos, epsilon, pi, radians, sqrt} from \"../math.js\";\nimport pointEqual from \"../pointEqual.js\";\nimport clip from \"./index.js\";\n\nexport default function(radius) {\n var cr = cos(radius),\n delta = 6 * radians,\n smallRadius = cr > 0,\n notHemisphere = abs(cr) > epsilon; // TODO optimise for this common case\n\n function interpolate(from, to, direction, stream) {\n circleStream(stream, radius, delta, direction, from, to);\n }\n\n function visible(lambda, phi) {\n return cos(lambda) * cos(phi) > cr;\n }\n\n // Takes a line and cuts into visible segments. Return values used for polygon\n // clipping: 0 - there were intersections or the line was empty; 1 - no\n // intersections 2 - there were intersections, and the first and last segments\n // should be rejoined.\n function clipLine(stream) {\n var point0, // previous point\n c0, // code for previous point\n v0, // visibility of previous point\n v00, // visibility of first point\n clean; // no intersections\n return {\n lineStart: function() {\n v00 = v0 = false;\n clean = 1;\n },\n point: function(lambda, phi) {\n var point1 = [lambda, phi],\n point2,\n v = visible(lambda, phi),\n c = smallRadius\n ? v ? 0 : code(lambda, phi)\n : v ? code(lambda + (lambda < 0 ? pi : -pi), phi) : 0;\n if (!point0 && (v00 = v0 = v)) stream.lineStart();\n if (v !== v0) {\n point2 = intersect(point0, point1);\n if (!point2 || pointEqual(point0, point2) || pointEqual(point1, point2))\n point1[2] = 1;\n }\n if (v !== v0) {\n clean = 0;\n if (v) {\n // outside going in\n stream.lineStart();\n point2 = intersect(point1, point0);\n stream.point(point2[0], point2[1]);\n } else {\n // inside going out\n point2 = intersect(point0, point1);\n stream.point(point2[0], point2[1], 2);\n stream.lineEnd();\n }\n point0 = point2;\n } else if (notHemisphere && point0 && smallRadius ^ v) {\n var t;\n // If the codes for two points are different, or are both zero,\n // and there this segment intersects with the small circle.\n if (!(c & c0) && (t = intersect(point1, point0, true))) {\n clean = 0;\n if (smallRadius) {\n stream.lineStart();\n stream.point(t[0][0], t[0][1]);\n stream.point(t[1][0], t[1][1]);\n stream.lineEnd();\n } else {\n stream.point(t[1][0], t[1][1]);\n stream.lineEnd();\n stream.lineStart();\n stream.point(t[0][0], t[0][1], 3);\n }\n }\n }\n if (v && (!point0 || !pointEqual(point0, point1))) {\n stream.point(point1[0], point1[1]);\n }\n point0 = point1, v0 = v, c0 = c;\n },\n lineEnd: function() {\n if (v0) stream.lineEnd();\n point0 = null;\n },\n // Rejoin first and last segments if there were intersections and the first\n // and last points were visible.\n clean: function() {\n return clean | ((v00 && v0) << 1);\n }\n };\n }\n\n // Intersects the great circle between a and b with the clip circle.\n function intersect(a, b, two) {\n var pa = cartesian(a),\n pb = cartesian(b);\n\n // We have two planes, n1.p = d1 and n2.p = d2.\n // Find intersection line p(t) = c1 n1 + c2 n2 + t (n1 ⨯ n2).\n var n1 = [1, 0, 0], // normal\n n2 = cartesianCross(pa, pb),\n n2n2 = cartesianDot(n2, n2),\n n1n2 = n2[0], // cartesianDot(n1, n2),\n determinant = n2n2 - n1n2 * n1n2;\n\n // Two polar points.\n if (!determinant) return !two && a;\n\n var c1 = cr * n2n2 / determinant,\n c2 = -cr * n1n2 / determinant,\n n1xn2 = cartesianCross(n1, n2),\n A = cartesianScale(n1, c1),\n B = cartesianScale(n2, c2);\n cartesianAddInPlace(A, B);\n\n // Solve |p(t)|^2 = 1.\n var u = n1xn2,\n w = cartesianDot(A, u),\n uu = cartesianDot(u, u),\n t2 = w * w - uu * (cartesianDot(A, A) - 1);\n\n if (t2 < 0) return;\n\n var t = sqrt(t2),\n q = cartesianScale(u, (-w - t) / uu);\n cartesianAddInPlace(q, A);\n q = spherical(q);\n\n if (!two) return q;\n\n // Two intersection points.\n var lambda0 = a[0],\n lambda1 = b[0],\n phi0 = a[1],\n phi1 = b[1],\n z;\n\n if (lambda1 < lambda0) z = lambda0, lambda0 = lambda1, lambda1 = z;\n\n var delta = lambda1 - lambda0,\n polar = abs(delta - pi) < epsilon,\n meridian = polar || delta < epsilon;\n\n if (!polar && phi1 < phi0) z = phi0, phi0 = phi1, phi1 = z;\n\n // Check that the first point is between a and b.\n if (meridian\n ? polar\n ? phi0 + phi1 > 0 ^ q[1] < (abs(q[0] - lambda0) < epsilon ? phi0 : phi1)\n : phi0 <= q[1] && q[1] <= phi1\n : delta > pi ^ (lambda0 <= q[0] && q[0] <= lambda1)) {\n var q1 = cartesianScale(u, (-w + t) / uu);\n cartesianAddInPlace(q1, A);\n return [q, spherical(q1)];\n }\n }\n\n // Generates a 4-bit vector representing the location of a point relative to\n // the small circle's bounding box.\n function code(lambda, phi) {\n var r = smallRadius ? radius : pi - radius,\n code = 0;\n if (lambda < -r) code |= 1; // left\n else if (lambda > r) code |= 2; // right\n if (phi < -r) code |= 4; // below\n else if (phi > r) code |= 8; // above\n return code;\n }\n\n return clip(visible, clipLine, interpolate, smallRadius ? [0, -radius] : [-pi, radius - pi]);\n}\n","import {abs, epsilon} from \"../math.js\";\nimport clipBuffer from \"./buffer.js\";\nimport clipLine from \"./line.js\";\nimport clipRejoin from \"./rejoin.js\";\nimport {merge} from \"d3-array\";\n\nvar clipMax = 1e9, clipMin = -clipMax;\n\n// TODO Use d3-polygon’s polygonContains here for the ring check?\n// TODO Eliminate duplicate buffering in clipBuffer and polygon.push?\n\nexport default function clipRectangle(x0, y0, x1, y1) {\n\n function visible(x, y) {\n return x0 <= x && x <= x1 && y0 <= y && y <= y1;\n }\n\n function interpolate(from, to, direction, stream) {\n var a = 0, a1 = 0;\n if (from == null\n || (a = corner(from, direction)) !== (a1 = corner(to, direction))\n || comparePoint(from, to) < 0 ^ direction > 0) {\n do stream.point(a === 0 || a === 3 ? x0 : x1, a > 1 ? y1 : y0);\n while ((a = (a + direction + 4) % 4) !== a1);\n } else {\n stream.point(to[0], to[1]);\n }\n }\n\n function corner(p, direction) {\n return abs(p[0] - x0) < epsilon ? direction > 0 ? 0 : 3\n : abs(p[0] - x1) < epsilon ? direction > 0 ? 2 : 1\n : abs(p[1] - y0) < epsilon ? direction > 0 ? 1 : 0\n : direction > 0 ? 3 : 2; // abs(p[1] - y1) < epsilon\n }\n\n function compareIntersection(a, b) {\n return comparePoint(a.x, b.x);\n }\n\n function comparePoint(a, b) {\n var ca = corner(a, 1),\n cb = corner(b, 1);\n return ca !== cb ? ca - cb\n : ca === 0 ? b[1] - a[1]\n : ca === 1 ? a[0] - b[0]\n : ca === 2 ? a[1] - b[1]\n : b[0] - a[0];\n }\n\n return function(stream) {\n var activeStream = stream,\n bufferStream = clipBuffer(),\n segments,\n polygon,\n ring,\n x__, y__, v__, // first point\n x_, y_, v_, // previous point\n first,\n clean;\n\n var clipStream = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: polygonStart,\n polygonEnd: polygonEnd\n };\n\n function point(x, y) {\n if (visible(x, y)) activeStream.point(x, y);\n }\n\n function polygonInside() {\n var winding = 0;\n\n for (var i = 0, n = polygon.length; i < n; ++i) {\n for (var ring = polygon[i], j = 1, m = ring.length, point = ring[0], a0, a1, b0 = point[0], b1 = point[1]; j < m; ++j) {\n a0 = b0, a1 = b1, point = ring[j], b0 = point[0], b1 = point[1];\n if (a1 <= y1) { if (b1 > y1 && (b0 - a0) * (y1 - a1) > (b1 - a1) * (x0 - a0)) ++winding; }\n else { if (b1 <= y1 && (b0 - a0) * (y1 - a1) < (b1 - a1) * (x0 - a0)) --winding; }\n }\n }\n\n return winding;\n }\n\n // Buffer geometry within a polygon and then clip it en masse.\n function polygonStart() {\n activeStream = bufferStream, segments = [], polygon = [], clean = true;\n }\n\n function polygonEnd() {\n var startInside = polygonInside(),\n cleanInside = clean && startInside,\n visible = (segments = merge(segments)).length;\n if (cleanInside || visible) {\n stream.polygonStart();\n if (cleanInside) {\n stream.lineStart();\n interpolate(null, null, 1, stream);\n stream.lineEnd();\n }\n if (visible) {\n clipRejoin(segments, compareIntersection, startInside, interpolate, stream);\n }\n stream.polygonEnd();\n }\n activeStream = stream, segments = polygon = ring = null;\n }\n\n function lineStart() {\n clipStream.point = linePoint;\n if (polygon) polygon.push(ring = []);\n first = true;\n v_ = false;\n x_ = y_ = NaN;\n }\n\n // TODO rather than special-case polygons, simply handle them separately.\n // Ideally, coincident intersection points should be jittered to avoid\n // clipping issues.\n function lineEnd() {\n if (segments) {\n linePoint(x__, y__);\n if (v__ && v_) bufferStream.rejoin();\n segments.push(bufferStream.result());\n }\n clipStream.point = point;\n if (v_) activeStream.lineEnd();\n }\n\n function linePoint(x, y) {\n var v = visible(x, y);\n if (polygon) ring.push([x, y]);\n if (first) {\n x__ = x, y__ = y, v__ = v;\n first = false;\n if (v) {\n activeStream.lineStart();\n activeStream.point(x, y);\n }\n } else {\n if (v && v_) activeStream.point(x, y);\n else {\n var a = [x_ = Math.max(clipMin, Math.min(clipMax, x_)), y_ = Math.max(clipMin, Math.min(clipMax, y_))],\n b = [x = Math.max(clipMin, Math.min(clipMax, x)), y = Math.max(clipMin, Math.min(clipMax, y))];\n if (clipLine(a, b, x0, y0, x1, y1)) {\n if (!v_) {\n activeStream.lineStart();\n activeStream.point(a[0], a[1]);\n }\n activeStream.point(b[0], b[1]);\n if (!v) activeStream.lineEnd();\n clean = false;\n } else if (v) {\n activeStream.lineStart();\n activeStream.point(x, y);\n clean = false;\n }\n }\n }\n x_ = x, y_ = y, v_ = v;\n }\n\n return clipStream;\n };\n}\n","export default function(a, b, x0, y0, x1, y1) {\n var ax = a[0],\n ay = a[1],\n bx = b[0],\n by = b[1],\n t0 = 0,\n t1 = 1,\n dx = bx - ax,\n dy = by - ay,\n r;\n\n r = x0 - ax;\n if (!dx && r > 0) return;\n r /= dx;\n if (dx < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dx > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = x1 - ax;\n if (!dx && r < 0) return;\n r /= dx;\n if (dx < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dx > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n r = y0 - ay;\n if (!dy && r > 0) return;\n r /= dy;\n if (dy < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dy > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = y1 - ay;\n if (!dy && r < 0) return;\n r /= dy;\n if (dy < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dy > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n if (t0 > 0) a[0] = ax + t0 * dx, a[1] = ay + t0 * dy;\n if (t1 < 1) b[0] = ax + t1 * dx, b[1] = ay + t1 * dy;\n return true;\n}\n","import clipRectangle from \"./rectangle.js\";\n\nexport default function() {\n var x0 = 0,\n y0 = 0,\n x1 = 960,\n y1 = 500,\n cache,\n cacheStream,\n clip;\n\n return clip = {\n stream: function(stream) {\n return cache && cacheStream === stream ? cache : cache = clipRectangle(x0, y0, x1, y1)(cacheStream = stream);\n },\n extent: function(_) {\n return arguments.length ? (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1], cache = cacheStream = null, clip) : [[x0, y0], [x1, y1]];\n }\n };\n}\n","import adder from \"./adder.js\";\nimport {abs, atan2, cos, radians, sin, sqrt} from \"./math.js\";\nimport noop from \"./noop.js\";\nimport stream from \"./stream.js\";\n\nvar lengthSum = adder(),\n lambda0,\n sinPhi0,\n cosPhi0;\n\nvar lengthStream = {\n sphere: noop,\n point: noop,\n lineStart: lengthLineStart,\n lineEnd: noop,\n polygonStart: noop,\n polygonEnd: noop\n};\n\nfunction lengthLineStart() {\n lengthStream.point = lengthPointFirst;\n lengthStream.lineEnd = lengthLineEnd;\n}\n\nfunction lengthLineEnd() {\n lengthStream.point = lengthStream.lineEnd = noop;\n}\n\nfunction lengthPointFirst(lambda, phi) {\n lambda *= radians, phi *= radians;\n lambda0 = lambda, sinPhi0 = sin(phi), cosPhi0 = cos(phi);\n lengthStream.point = lengthPoint;\n}\n\nfunction lengthPoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n var sinPhi = sin(phi),\n cosPhi = cos(phi),\n delta = abs(lambda - lambda0),\n cosDelta = cos(delta),\n sinDelta = sin(delta),\n x = cosPhi * sinDelta,\n y = cosPhi0 * sinPhi - sinPhi0 * cosPhi * cosDelta,\n z = sinPhi0 * sinPhi + cosPhi0 * cosPhi * cosDelta;\n lengthSum.add(atan2(sqrt(x * x + y * y), z));\n lambda0 = lambda, sinPhi0 = sinPhi, cosPhi0 = cosPhi;\n}\n\nexport default function(object) {\n lengthSum.reset();\n stream(object, lengthStream);\n return +lengthSum;\n}\n","import length from \"./length.js\";\n\nvar coordinates = [null, null],\n object = {type: \"LineString\", coordinates: coordinates};\n\nexport default function(a, b) {\n coordinates[0] = a;\n coordinates[1] = b;\n return length(object);\n}\n","import {default as polygonContains} from \"./polygonContains.js\";\nimport {default as distance} from \"./distance.js\";\nimport {epsilon2, radians} from \"./math.js\";\n\nvar containsObjectType = {\n Feature: function(object, point) {\n return containsGeometry(object.geometry, point);\n },\n FeatureCollection: function(object, point) {\n var features = object.features, i = -1, n = features.length;\n while (++i < n) if (containsGeometry(features[i].geometry, point)) return true;\n return false;\n }\n};\n\nvar containsGeometryType = {\n Sphere: function() {\n return true;\n },\n Point: function(object, point) {\n return containsPoint(object.coordinates, point);\n },\n MultiPoint: function(object, point) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) if (containsPoint(coordinates[i], point)) return true;\n return false;\n },\n LineString: function(object, point) {\n return containsLine(object.coordinates, point);\n },\n MultiLineString: function(object, point) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) if (containsLine(coordinates[i], point)) return true;\n return false;\n },\n Polygon: function(object, point) {\n return containsPolygon(object.coordinates, point);\n },\n MultiPolygon: function(object, point) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) if (containsPolygon(coordinates[i], point)) return true;\n return false;\n },\n GeometryCollection: function(object, point) {\n var geometries = object.geometries, i = -1, n = geometries.length;\n while (++i < n) if (containsGeometry(geometries[i], point)) return true;\n return false;\n }\n};\n\nfunction containsGeometry(geometry, point) {\n return geometry && containsGeometryType.hasOwnProperty(geometry.type)\n ? containsGeometryType[geometry.type](geometry, point)\n : false;\n}\n\nfunction containsPoint(coordinates, point) {\n return distance(coordinates, point) === 0;\n}\n\nfunction containsLine(coordinates, point) {\n var ao, bo, ab;\n for (var i = 0, n = coordinates.length; i < n; i++) {\n bo = distance(coordinates[i], point);\n if (bo === 0) return true;\n if (i > 0) {\n ab = distance(coordinates[i], coordinates[i - 1]);\n if (\n ab > 0 &&\n ao <= ab &&\n bo <= ab &&\n (ao + bo - ab) * (1 - Math.pow((ao - bo) / ab, 2)) < epsilon2 * ab\n )\n return true;\n }\n ao = bo;\n }\n return false;\n}\n\nfunction containsPolygon(coordinates, point) {\n return !!polygonContains(coordinates.map(ringRadians), pointRadians(point));\n}\n\nfunction ringRadians(ring) {\n return ring = ring.map(pointRadians), ring.pop(), ring;\n}\n\nfunction pointRadians(point) {\n return [point[0] * radians, point[1] * radians];\n}\n\nexport default function(object, point) {\n return (object && containsObjectType.hasOwnProperty(object.type)\n ? containsObjectType[object.type]\n : containsGeometry)(object, point);\n}\n","import {range} from \"d3-array\";\nimport {abs, ceil, epsilon} from \"./math.js\";\n\nfunction graticuleX(y0, y1, dy) {\n var y = range(y0, y1 - epsilon, dy).concat(y1);\n return function(x) { return y.map(function(y) { return [x, y]; }); };\n}\n\nfunction graticuleY(x0, x1, dx) {\n var x = range(x0, x1 - epsilon, dx).concat(x1);\n return function(y) { return x.map(function(x) { return [x, y]; }); };\n}\n\nexport default function graticule() {\n var x1, x0, X1, X0,\n y1, y0, Y1, Y0,\n dx = 10, dy = dx, DX = 90, DY = 360,\n x, y, X, Y,\n precision = 2.5;\n\n function graticule() {\n return {type: \"MultiLineString\", coordinates: lines()};\n }\n\n function lines() {\n return range(ceil(X0 / DX) * DX, X1, DX).map(X)\n .concat(range(ceil(Y0 / DY) * DY, Y1, DY).map(Y))\n .concat(range(ceil(x0 / dx) * dx, x1, dx).filter(function(x) { return abs(x % DX) > epsilon; }).map(x))\n .concat(range(ceil(y0 / dy) * dy, y1, dy).filter(function(y) { return abs(y % DY) > epsilon; }).map(y));\n }\n\n graticule.lines = function() {\n return lines().map(function(coordinates) { return {type: \"LineString\", coordinates: coordinates}; });\n };\n\n graticule.outline = function() {\n return {\n type: \"Polygon\",\n coordinates: [\n X(X0).concat(\n Y(Y1).slice(1),\n X(X1).reverse().slice(1),\n Y(Y0).reverse().slice(1))\n ]\n };\n };\n\n graticule.extent = function(_) {\n if (!arguments.length) return graticule.extentMinor();\n return graticule.extentMajor(_).extentMinor(_);\n };\n\n graticule.extentMajor = function(_) {\n if (!arguments.length) return [[X0, Y0], [X1, Y1]];\n X0 = +_[0][0], X1 = +_[1][0];\n Y0 = +_[0][1], Y1 = +_[1][1];\n if (X0 > X1) _ = X0, X0 = X1, X1 = _;\n if (Y0 > Y1) _ = Y0, Y0 = Y1, Y1 = _;\n return graticule.precision(precision);\n };\n\n graticule.extentMinor = function(_) {\n if (!arguments.length) return [[x0, y0], [x1, y1]];\n x0 = +_[0][0], x1 = +_[1][0];\n y0 = +_[0][1], y1 = +_[1][1];\n if (x0 > x1) _ = x0, x0 = x1, x1 = _;\n if (y0 > y1) _ = y0, y0 = y1, y1 = _;\n return graticule.precision(precision);\n };\n\n graticule.step = function(_) {\n if (!arguments.length) return graticule.stepMinor();\n return graticule.stepMajor(_).stepMinor(_);\n };\n\n graticule.stepMajor = function(_) {\n if (!arguments.length) return [DX, DY];\n DX = +_[0], DY = +_[1];\n return graticule;\n };\n\n graticule.stepMinor = function(_) {\n if (!arguments.length) return [dx, dy];\n dx = +_[0], dy = +_[1];\n return graticule;\n };\n\n graticule.precision = function(_) {\n if (!arguments.length) return precision;\n precision = +_;\n x = graticuleX(y0, y1, 90);\n y = graticuleY(x0, x1, precision);\n X = graticuleX(Y0, Y1, 90);\n Y = graticuleY(X0, X1, precision);\n return graticule;\n };\n\n return graticule\n .extentMajor([[-180, -90 + epsilon], [180, 90 - epsilon]])\n .extentMinor([[-180, -80 - epsilon], [180, 80 + epsilon]]);\n}\n\nexport function graticule10() {\n return graticule()();\n}\n","import {asin, atan2, cos, degrees, haversin, radians, sin, sqrt} from \"./math.js\";\n\nexport default function(a, b) {\n var x0 = a[0] * radians,\n y0 = a[1] * radians,\n x1 = b[0] * radians,\n y1 = b[1] * radians,\n cy0 = cos(y0),\n sy0 = sin(y0),\n cy1 = cos(y1),\n sy1 = sin(y1),\n kx0 = cy0 * cos(x0),\n ky0 = cy0 * sin(x0),\n kx1 = cy1 * cos(x1),\n ky1 = cy1 * sin(x1),\n d = 2 * asin(sqrt(haversin(y1 - y0) + cy0 * cy1 * haversin(x1 - x0))),\n k = sin(d);\n\n var interpolate = d ? function(t) {\n var B = sin(t *= d) / k,\n A = sin(d - t) / k,\n x = A * kx0 + B * kx1,\n y = A * ky0 + B * ky1,\n z = A * sy0 + B * sy1;\n return [\n atan2(y, x) * degrees,\n atan2(z, sqrt(x * x + y * y)) * degrees\n ];\n } : function() {\n return [x0 * degrees, y0 * degrees];\n };\n\n interpolate.distance = d;\n\n return interpolate;\n}\n","export default function(x) {\n return x;\n}\n","import adder from \"../adder.js\";\nimport {abs} from \"../math.js\";\nimport noop from \"../noop.js\";\n\nvar areaSum = adder(),\n areaRingSum = adder(),\n x00,\n y00,\n x0,\n y0;\n\nvar areaStream = {\n point: noop,\n lineStart: noop,\n lineEnd: noop,\n polygonStart: function() {\n areaStream.lineStart = areaRingStart;\n areaStream.lineEnd = areaRingEnd;\n },\n polygonEnd: function() {\n areaStream.lineStart = areaStream.lineEnd = areaStream.point = noop;\n areaSum.add(abs(areaRingSum));\n areaRingSum.reset();\n },\n result: function() {\n var area = areaSum / 2;\n areaSum.reset();\n return area;\n }\n};\n\nfunction areaRingStart() {\n areaStream.point = areaPointFirst;\n}\n\nfunction areaPointFirst(x, y) {\n areaStream.point = areaPoint;\n x00 = x0 = x, y00 = y0 = y;\n}\n\nfunction areaPoint(x, y) {\n areaRingSum.add(y0 * x - x0 * y);\n x0 = x, y0 = y;\n}\n\nfunction areaRingEnd() {\n areaPoint(x00, y00);\n}\n\nexport default areaStream;\n","import noop from \"../noop.js\";\n\nvar x0 = Infinity,\n y0 = x0,\n x1 = -x0,\n y1 = x1;\n\nvar boundsStream = {\n point: boundsPoint,\n lineStart: noop,\n lineEnd: noop,\n polygonStart: noop,\n polygonEnd: noop,\n result: function() {\n var bounds = [[x0, y0], [x1, y1]];\n x1 = y1 = -(y0 = x0 = Infinity);\n return bounds;\n }\n};\n\nfunction boundsPoint(x, y) {\n if (x < x0) x0 = x;\n if (x > x1) x1 = x;\n if (y < y0) y0 = y;\n if (y > y1) y1 = y;\n}\n\nexport default boundsStream;\n","import {sqrt} from \"../math.js\";\n\n// TODO Enforce positive area for exterior, negative area for interior?\n\nvar X0 = 0,\n Y0 = 0,\n Z0 = 0,\n X1 = 0,\n Y1 = 0,\n Z1 = 0,\n X2 = 0,\n Y2 = 0,\n Z2 = 0,\n x00,\n y00,\n x0,\n y0;\n\nvar centroidStream = {\n point: centroidPoint,\n lineStart: centroidLineStart,\n lineEnd: centroidLineEnd,\n polygonStart: function() {\n centroidStream.lineStart = centroidRingStart;\n centroidStream.lineEnd = centroidRingEnd;\n },\n polygonEnd: function() {\n centroidStream.point = centroidPoint;\n centroidStream.lineStart = centroidLineStart;\n centroidStream.lineEnd = centroidLineEnd;\n },\n result: function() {\n var centroid = Z2 ? [X2 / Z2, Y2 / Z2]\n : Z1 ? [X1 / Z1, Y1 / Z1]\n : Z0 ? [X0 / Z0, Y0 / Z0]\n : [NaN, NaN];\n X0 = Y0 = Z0 =\n X1 = Y1 = Z1 =\n X2 = Y2 = Z2 = 0;\n return centroid;\n }\n};\n\nfunction centroidPoint(x, y) {\n X0 += x;\n Y0 += y;\n ++Z0;\n}\n\nfunction centroidLineStart() {\n centroidStream.point = centroidPointFirstLine;\n}\n\nfunction centroidPointFirstLine(x, y) {\n centroidStream.point = centroidPointLine;\n centroidPoint(x0 = x, y0 = y);\n}\n\nfunction centroidPointLine(x, y) {\n var dx = x - x0, dy = y - y0, z = sqrt(dx * dx + dy * dy);\n X1 += z * (x0 + x) / 2;\n Y1 += z * (y0 + y) / 2;\n Z1 += z;\n centroidPoint(x0 = x, y0 = y);\n}\n\nfunction centroidLineEnd() {\n centroidStream.point = centroidPoint;\n}\n\nfunction centroidRingStart() {\n centroidStream.point = centroidPointFirstRing;\n}\n\nfunction centroidRingEnd() {\n centroidPointRing(x00, y00);\n}\n\nfunction centroidPointFirstRing(x, y) {\n centroidStream.point = centroidPointRing;\n centroidPoint(x00 = x0 = x, y00 = y0 = y);\n}\n\nfunction centroidPointRing(x, y) {\n var dx = x - x0,\n dy = y - y0,\n z = sqrt(dx * dx + dy * dy);\n\n X1 += z * (x0 + x) / 2;\n Y1 += z * (y0 + y) / 2;\n Z1 += z;\n\n z = y0 * x - x0 * y;\n X2 += z * (x0 + x);\n Y2 += z * (y0 + y);\n Z2 += z * 3;\n centroidPoint(x0 = x, y0 = y);\n}\n\nexport default centroidStream;\n","import {tau} from \"../math.js\";\nimport noop from \"../noop.js\";\n\nexport default function PathContext(context) {\n this._context = context;\n}\n\nPathContext.prototype = {\n _radius: 4.5,\n pointRadius: function(_) {\n return this._radius = _, this;\n },\n polygonStart: function() {\n this._line = 0;\n },\n polygonEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line === 0) this._context.closePath();\n this._point = NaN;\n },\n point: function(x, y) {\n switch (this._point) {\n case 0: {\n this._context.moveTo(x, y);\n this._point = 1;\n break;\n }\n case 1: {\n this._context.lineTo(x, y);\n break;\n }\n default: {\n this._context.moveTo(x + this._radius, y);\n this._context.arc(x, y, this._radius, 0, tau);\n break;\n }\n }\n },\n result: noop\n};\n","import adder from \"../adder.js\";\nimport {sqrt} from \"../math.js\";\nimport noop from \"../noop.js\";\n\nvar lengthSum = adder(),\n lengthRing,\n x00,\n y00,\n x0,\n y0;\n\nvar lengthStream = {\n point: noop,\n lineStart: function() {\n lengthStream.point = lengthPointFirst;\n },\n lineEnd: function() {\n if (lengthRing) lengthPoint(x00, y00);\n lengthStream.point = noop;\n },\n polygonStart: function() {\n lengthRing = true;\n },\n polygonEnd: function() {\n lengthRing = null;\n },\n result: function() {\n var length = +lengthSum;\n lengthSum.reset();\n return length;\n }\n};\n\nfunction lengthPointFirst(x, y) {\n lengthStream.point = lengthPoint;\n x00 = x0 = x, y00 = y0 = y;\n}\n\nfunction lengthPoint(x, y) {\n x0 -= x, y0 -= y;\n lengthSum.add(sqrt(x0 * x0 + y0 * y0));\n x0 = x, y0 = y;\n}\n\nexport default lengthStream;\n","export default function PathString() {\n this._string = [];\n}\n\nPathString.prototype = {\n _radius: 4.5,\n _circle: circle(4.5),\n pointRadius: function(_) {\n if ((_ = +_) !== this._radius) this._radius = _, this._circle = null;\n return this;\n },\n polygonStart: function() {\n this._line = 0;\n },\n polygonEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line === 0) this._string.push(\"Z\");\n this._point = NaN;\n },\n point: function(x, y) {\n switch (this._point) {\n case 0: {\n this._string.push(\"M\", x, \",\", y);\n this._point = 1;\n break;\n }\n case 1: {\n this._string.push(\"L\", x, \",\", y);\n break;\n }\n default: {\n if (this._circle == null) this._circle = circle(this._radius);\n this._string.push(\"M\", x, \",\", y, this._circle);\n break;\n }\n }\n },\n result: function() {\n if (this._string.length) {\n var result = this._string.join(\"\");\n this._string = [];\n return result;\n } else {\n return null;\n }\n }\n};\n\nfunction circle(radius) {\n return \"m0,\" + radius\n + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + -2 * radius\n + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + 2 * radius\n + \"z\";\n}\n","import identity from \"../identity.js\";\nimport stream from \"../stream.js\";\nimport pathArea from \"./area.js\";\nimport pathBounds from \"./bounds.js\";\nimport pathCentroid from \"./centroid.js\";\nimport PathContext from \"./context.js\";\nimport pathMeasure from \"./measure.js\";\nimport PathString from \"./string.js\";\n\nexport default function(projection, context) {\n var pointRadius = 4.5,\n projectionStream,\n contextStream;\n\n function path(object) {\n if (object) {\n if (typeof pointRadius === \"function\") contextStream.pointRadius(+pointRadius.apply(this, arguments));\n stream(object, projectionStream(contextStream));\n }\n return contextStream.result();\n }\n\n path.area = function(object) {\n stream(object, projectionStream(pathArea));\n return pathArea.result();\n };\n\n path.measure = function(object) {\n stream(object, projectionStream(pathMeasure));\n return pathMeasure.result();\n };\n\n path.bounds = function(object) {\n stream(object, projectionStream(pathBounds));\n return pathBounds.result();\n };\n\n path.centroid = function(object) {\n stream(object, projectionStream(pathCentroid));\n return pathCentroid.result();\n };\n\n path.projection = function(_) {\n return arguments.length ? (projectionStream = _ == null ? (projection = null, identity) : (projection = _).stream, path) : projection;\n };\n\n path.context = function(_) {\n if (!arguments.length) return context;\n contextStream = _ == null ? (context = null, new PathString) : new PathContext(context = _);\n if (typeof pointRadius !== \"function\") contextStream.pointRadius(pointRadius);\n return path;\n };\n\n path.pointRadius = function(_) {\n if (!arguments.length) return pointRadius;\n pointRadius = typeof _ === \"function\" ? _ : (contextStream.pointRadius(+_), +_);\n return path;\n };\n\n return path.projection(projection).context(context);\n}\n","export default function(methods) {\n return {\n stream: transformer(methods)\n };\n}\n\nexport function transformer(methods) {\n return function(stream) {\n var s = new TransformStream;\n for (var key in methods) s[key] = methods[key];\n s.stream = stream;\n return s;\n };\n}\n\nfunction TransformStream() {}\n\nTransformStream.prototype = {\n constructor: TransformStream,\n point: function(x, y) { this.stream.point(x, y); },\n sphere: function() { this.stream.sphere(); },\n lineStart: function() { this.stream.lineStart(); },\n lineEnd: function() { this.stream.lineEnd(); },\n polygonStart: function() { this.stream.polygonStart(); },\n polygonEnd: function() { this.stream.polygonEnd(); }\n};\n","import {default as geoStream} from \"../stream.js\";\nimport boundsStream from \"../path/bounds.js\";\n\nfunction fit(projection, fitBounds, object) {\n var clip = projection.clipExtent && projection.clipExtent();\n projection.scale(150).translate([0, 0]);\n if (clip != null) projection.clipExtent(null);\n geoStream(object, projection.stream(boundsStream));\n fitBounds(boundsStream.result());\n if (clip != null) projection.clipExtent(clip);\n return projection;\n}\n\nexport function fitExtent(projection, extent, object) {\n return fit(projection, function(b) {\n var w = extent[1][0] - extent[0][0],\n h = extent[1][1] - extent[0][1],\n k = Math.min(w / (b[1][0] - b[0][0]), h / (b[1][1] - b[0][1])),\n x = +extent[0][0] + (w - k * (b[1][0] + b[0][0])) / 2,\n y = +extent[0][1] + (h - k * (b[1][1] + b[0][1])) / 2;\n projection.scale(150 * k).translate([x, y]);\n }, object);\n}\n\nexport function fitSize(projection, size, object) {\n return fitExtent(projection, [[0, 0], size], object);\n}\n\nexport function fitWidth(projection, width, object) {\n return fit(projection, function(b) {\n var w = +width,\n k = w / (b[1][0] - b[0][0]),\n x = (w - k * (b[1][0] + b[0][0])) / 2,\n y = -k * b[0][1];\n projection.scale(150 * k).translate([x, y]);\n }, object);\n}\n\nexport function fitHeight(projection, height, object) {\n return fit(projection, function(b) {\n var h = +height,\n k = h / (b[1][1] - b[0][1]),\n x = -k * b[0][0],\n y = (h - k * (b[1][1] + b[0][1])) / 2;\n projection.scale(150 * k).translate([x, y]);\n }, object);\n}\n","import {cartesian} from \"../cartesian.js\";\nimport {abs, asin, atan2, cos, epsilon, radians, sqrt} from \"../math.js\";\nimport {transformer} from \"../transform.js\";\n\nvar maxDepth = 16, // maximum depth of subdivision\n cosMinDistance = cos(30 * radians); // cos(minimum angular distance)\n\nexport default function(project, delta2) {\n return +delta2 ? resample(project, delta2) : resampleNone(project);\n}\n\nfunction resampleNone(project) {\n return transformer({\n point: function(x, y) {\n x = project(x, y);\n this.stream.point(x[0], x[1]);\n }\n });\n}\n\nfunction resample(project, delta2) {\n\n function resampleLineTo(x0, y0, lambda0, a0, b0, c0, x1, y1, lambda1, a1, b1, c1, depth, stream) {\n var dx = x1 - x0,\n dy = y1 - y0,\n d2 = dx * dx + dy * dy;\n if (d2 > 4 * delta2 && depth--) {\n var a = a0 + a1,\n b = b0 + b1,\n c = c0 + c1,\n m = sqrt(a * a + b * b + c * c),\n phi2 = asin(c /= m),\n lambda2 = abs(abs(c) - 1) < epsilon || abs(lambda0 - lambda1) < epsilon ? (lambda0 + lambda1) / 2 : atan2(b, a),\n p = project(lambda2, phi2),\n x2 = p[0],\n y2 = p[1],\n dx2 = x2 - x0,\n dy2 = y2 - y0,\n dz = dy * dx2 - dx * dy2;\n if (dz * dz / d2 > delta2 // perpendicular projected distance\n || abs((dx * dx2 + dy * dy2) / d2 - 0.5) > 0.3 // midpoint close to an end\n || a0 * a1 + b0 * b1 + c0 * c1 < cosMinDistance) { // angular distance\n resampleLineTo(x0, y0, lambda0, a0, b0, c0, x2, y2, lambda2, a /= m, b /= m, c, depth, stream);\n stream.point(x2, y2);\n resampleLineTo(x2, y2, lambda2, a, b, c, x1, y1, lambda1, a1, b1, c1, depth, stream);\n }\n }\n }\n return function(stream) {\n var lambda00, x00, y00, a00, b00, c00, // first point\n lambda0, x0, y0, a0, b0, c0; // previous point\n\n var resampleStream = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function() { stream.polygonStart(); resampleStream.lineStart = ringStart; },\n polygonEnd: function() { stream.polygonEnd(); resampleStream.lineStart = lineStart; }\n };\n\n function point(x, y) {\n x = project(x, y);\n stream.point(x[0], x[1]);\n }\n\n function lineStart() {\n x0 = NaN;\n resampleStream.point = linePoint;\n stream.lineStart();\n }\n\n function linePoint(lambda, phi) {\n var c = cartesian([lambda, phi]), p = project(lambda, phi);\n resampleLineTo(x0, y0, lambda0, a0, b0, c0, x0 = p[0], y0 = p[1], lambda0 = lambda, a0 = c[0], b0 = c[1], c0 = c[2], maxDepth, stream);\n stream.point(x0, y0);\n }\n\n function lineEnd() {\n resampleStream.point = point;\n stream.lineEnd();\n }\n\n function ringStart() {\n lineStart();\n resampleStream.point = ringPoint;\n resampleStream.lineEnd = ringEnd;\n }\n\n function ringPoint(lambda, phi) {\n linePoint(lambda00 = lambda, phi), x00 = x0, y00 = y0, a00 = a0, b00 = b0, c00 = c0;\n resampleStream.point = linePoint;\n }\n\n function ringEnd() {\n resampleLineTo(x0, y0, lambda0, a0, b0, c0, x00, y00, lambda00, a00, b00, c00, maxDepth, stream);\n resampleStream.lineEnd = lineEnd;\n lineEnd();\n }\n\n return resampleStream;\n };\n}\n","import clipAntimeridian from \"../clip/antimeridian.js\";\nimport clipCircle from \"../clip/circle.js\";\nimport clipRectangle from \"../clip/rectangle.js\";\nimport compose from \"../compose.js\";\nimport identity from \"../identity.js\";\nimport {cos, degrees, radians, sin, sqrt} from \"../math.js\";\nimport {rotateRadians} from \"../rotation.js\";\nimport {transformer} from \"../transform.js\";\nimport {fitExtent, fitSize, fitWidth, fitHeight} from \"./fit.js\";\nimport resample from \"./resample.js\";\n\nvar transformRadians = transformer({\n point: function(x, y) {\n this.stream.point(x * radians, y * radians);\n }\n});\n\nfunction transformRotate(rotate) {\n return transformer({\n point: function(x, y) {\n var r = rotate(x, y);\n return this.stream.point(r[0], r[1]);\n }\n });\n}\n\nfunction scaleTranslate(k, dx, dy, sx, sy) {\n function transform(x, y) {\n x *= sx; y *= sy;\n return [dx + k * x, dy - k * y];\n }\n transform.invert = function(x, y) {\n return [(x - dx) / k * sx, (dy - y) / k * sy];\n };\n return transform;\n}\n\nfunction scaleTranslateRotate(k, dx, dy, sx, sy, alpha) {\n var cosAlpha = cos(alpha),\n sinAlpha = sin(alpha),\n a = cosAlpha * k,\n b = sinAlpha * k,\n ai = cosAlpha / k,\n bi = sinAlpha / k,\n ci = (sinAlpha * dy - cosAlpha * dx) / k,\n fi = (sinAlpha * dx + cosAlpha * dy) / k;\n function transform(x, y) {\n x *= sx; y *= sy;\n return [a * x - b * y + dx, dy - b * x - a * y];\n }\n transform.invert = function(x, y) {\n return [sx * (ai * x - bi * y + ci), sy * (fi - bi * x - ai * y)];\n };\n return transform;\n}\n\nexport default function projection(project) {\n return projectionMutator(function() { return project; })();\n}\n\nexport function projectionMutator(projectAt) {\n var project,\n k = 150, // scale\n x = 480, y = 250, // translate\n lambda = 0, phi = 0, // center\n deltaLambda = 0, deltaPhi = 0, deltaGamma = 0, rotate, // pre-rotate\n alpha = 0, // post-rotate angle\n sx = 1, // reflectX\n sy = 1, // reflectX\n theta = null, preclip = clipAntimeridian, // pre-clip angle\n x0 = null, y0, x1, y1, postclip = identity, // post-clip extent\n delta2 = 0.5, // precision\n projectResample,\n projectTransform,\n projectRotateTransform,\n cache,\n cacheStream;\n\n function projection(point) {\n return projectRotateTransform(point[0] * radians, point[1] * radians);\n }\n\n function invert(point) {\n point = projectRotateTransform.invert(point[0], point[1]);\n return point && [point[0] * degrees, point[1] * degrees];\n }\n\n projection.stream = function(stream) {\n return cache && cacheStream === stream ? cache : cache = transformRadians(transformRotate(rotate)(preclip(projectResample(postclip(cacheStream = stream)))));\n };\n\n projection.preclip = function(_) {\n return arguments.length ? (preclip = _, theta = undefined, reset()) : preclip;\n };\n\n projection.postclip = function(_) {\n return arguments.length ? (postclip = _, x0 = y0 = x1 = y1 = null, reset()) : postclip;\n };\n\n projection.clipAngle = function(_) {\n return arguments.length ? (preclip = +_ ? clipCircle(theta = _ * radians) : (theta = null, clipAntimeridian), reset()) : theta * degrees;\n };\n\n projection.clipExtent = function(_) {\n return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, identity) : clipRectangle(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n };\n\n projection.scale = function(_) {\n return arguments.length ? (k = +_, recenter()) : k;\n };\n\n projection.translate = function(_) {\n return arguments.length ? (x = +_[0], y = +_[1], recenter()) : [x, y];\n };\n\n projection.center = function(_) {\n return arguments.length ? (lambda = _[0] % 360 * radians, phi = _[1] % 360 * radians, recenter()) : [lambda * degrees, phi * degrees];\n };\n\n projection.rotate = function(_) {\n return arguments.length ? (deltaLambda = _[0] % 360 * radians, deltaPhi = _[1] % 360 * radians, deltaGamma = _.length > 2 ? _[2] % 360 * radians : 0, recenter()) : [deltaLambda * degrees, deltaPhi * degrees, deltaGamma * degrees];\n };\n\n projection.angle = function(_) {\n return arguments.length ? (alpha = _ % 360 * radians, recenter()) : alpha * degrees;\n };\n\n projection.reflectX = function(_) {\n return arguments.length ? (sx = _ ? -1 : 1, recenter()) : sx < 0;\n };\n\n projection.reflectY = function(_) {\n return arguments.length ? (sy = _ ? -1 : 1, recenter()) : sy < 0;\n };\n\n projection.precision = function(_) {\n return arguments.length ? (projectResample = resample(projectTransform, delta2 = _ * _), reset()) : sqrt(delta2);\n };\n\n projection.fitExtent = function(extent, object) {\n return fitExtent(projection, extent, object);\n };\n\n projection.fitSize = function(size, object) {\n return fitSize(projection, size, object);\n };\n\n projection.fitWidth = function(width, object) {\n return fitWidth(projection, width, object);\n };\n\n projection.fitHeight = function(height, object) {\n return fitHeight(projection, height, object);\n };\n\n function recenter() {\n var center = scaleTranslateRotate(k, 0, 0, sx, sy, alpha).apply(null, project(lambda, phi)),\n transform = (alpha ? scaleTranslateRotate : scaleTranslate)(k, x - center[0], y - center[1], sx, sy, alpha);\n rotate = rotateRadians(deltaLambda, deltaPhi, deltaGamma);\n projectTransform = compose(project, transform);\n projectRotateTransform = compose(rotate, projectTransform);\n projectResample = resample(projectTransform, delta2);\n return reset();\n }\n\n function reset() {\n cache = cacheStream = null;\n return projection;\n }\n\n return function() {\n project = projectAt.apply(this, arguments);\n projection.invert = project.invert && invert;\n return recenter();\n };\n}\n","import {degrees, pi, radians} from \"../math.js\";\nimport {projectionMutator} from \"./index.js\";\n\nexport function conicProjection(projectAt) {\n var phi0 = 0,\n phi1 = pi / 3,\n m = projectionMutator(projectAt),\n p = m(phi0, phi1);\n\n p.parallels = function(_) {\n return arguments.length ? m(phi0 = _[0] * radians, phi1 = _[1] * radians) : [phi0 * degrees, phi1 * degrees];\n };\n\n return p;\n}\n","import {abs, asin, atan2, cos, epsilon, pi, sign, sin, sqrt} from \"../math.js\";\nimport {conicProjection} from \"./conic.js\";\nimport {cylindricalEqualAreaRaw} from \"./cylindricalEqualArea.js\";\n\nexport function conicEqualAreaRaw(y0, y1) {\n var sy0 = sin(y0), n = (sy0 + sin(y1)) / 2;\n\n // Are the parallels symmetrical around the Equator?\n if (abs(n) < epsilon) return cylindricalEqualAreaRaw(y0);\n\n var c = 1 + sy0 * (2 * n - sy0), r0 = sqrt(c) / n;\n\n function project(x, y) {\n var r = sqrt(c - 2 * n * sin(y)) / n;\n return [r * sin(x *= n), r0 - r * cos(x)];\n }\n\n project.invert = function(x, y) {\n var r0y = r0 - y,\n l = atan2(x, abs(r0y)) * sign(r0y);\n if (r0y * n < 0)\n l -= pi * sign(x) * sign(r0y);\n return [l / n, asin((c - (x * x + r0y * r0y) * n * n) / (2 * n))];\n };\n\n return project;\n}\n\nexport default function() {\n return conicProjection(conicEqualAreaRaw)\n .scale(155.424)\n .center([0, 33.6442]);\n}\n","import {asin, cos, sin} from \"../math.js\";\n\nexport function cylindricalEqualAreaRaw(phi0) {\n var cosPhi0 = cos(phi0);\n\n function forward(lambda, phi) {\n return [lambda * cosPhi0, sin(phi) / cosPhi0];\n }\n\n forward.invert = function(x, y) {\n return [x / cosPhi0, asin(y * cosPhi0)];\n };\n\n return forward;\n}\n","import conicEqualArea from \"./conicEqualArea.js\";\n\nexport default function() {\n return conicEqualArea()\n .parallels([29.5, 45.5])\n .scale(1070)\n .translate([480, 250])\n .rotate([96, 0])\n .center([-0.6, 38.7]);\n}\n","import {epsilon} from \"../math.js\";\nimport albers from \"./albers.js\";\nimport conicEqualArea from \"./conicEqualArea.js\";\nimport {fitExtent, fitSize, fitWidth, fitHeight} from \"./fit.js\";\n\n// The projections must have mutually exclusive clip regions on the sphere,\n// as this will avoid emitting interleaving lines and polygons.\nfunction multiplex(streams) {\n var n = streams.length;\n return {\n point: function(x, y) { var i = -1; while (++i < n) streams[i].point(x, y); },\n sphere: function() { var i = -1; while (++i < n) streams[i].sphere(); },\n lineStart: function() { var i = -1; while (++i < n) streams[i].lineStart(); },\n lineEnd: function() { var i = -1; while (++i < n) streams[i].lineEnd(); },\n polygonStart: function() { var i = -1; while (++i < n) streams[i].polygonStart(); },\n polygonEnd: function() { var i = -1; while (++i < n) streams[i].polygonEnd(); }\n };\n}\n\n// A composite projection for the United States, configured by default for\n// 960×500. The projection also works quite well at 960×600 if you change the\n// scale to 1285 and adjust the translate accordingly. The set of standard\n// parallels for each region comes from USGS, which is published here:\n// http://egsc.usgs.gov/isb/pubs/MapProjections/projections.html#albers\nexport default function() {\n var cache,\n cacheStream,\n lower48 = albers(), lower48Point,\n alaska = conicEqualArea().rotate([154, 0]).center([-2, 58.5]).parallels([55, 65]), alaskaPoint, // EPSG:3338\n hawaii = conicEqualArea().rotate([157, 0]).center([-3, 19.9]).parallels([8, 18]), hawaiiPoint, // ESRI:102007\n point, pointStream = {point: function(x, y) { point = [x, y]; }};\n\n function albersUsa(coordinates) {\n var x = coordinates[0], y = coordinates[1];\n return point = null,\n (lower48Point.point(x, y), point)\n || (alaskaPoint.point(x, y), point)\n || (hawaiiPoint.point(x, y), point);\n }\n\n albersUsa.invert = function(coordinates) {\n var k = lower48.scale(),\n t = lower48.translate(),\n x = (coordinates[0] - t[0]) / k,\n y = (coordinates[1] - t[1]) / k;\n return (y >= 0.120 && y < 0.234 && x >= -0.425 && x < -0.214 ? alaska\n : y >= 0.166 && y < 0.234 && x >= -0.214 && x < -0.115 ? hawaii\n : lower48).invert(coordinates);\n };\n\n albersUsa.stream = function(stream) {\n return cache && cacheStream === stream ? cache : cache = multiplex([lower48.stream(cacheStream = stream), alaska.stream(stream), hawaii.stream(stream)]);\n };\n\n albersUsa.precision = function(_) {\n if (!arguments.length) return lower48.precision();\n lower48.precision(_), alaska.precision(_), hawaii.precision(_);\n return reset();\n };\n\n albersUsa.scale = function(_) {\n if (!arguments.length) return lower48.scale();\n lower48.scale(_), alaska.scale(_ * 0.35), hawaii.scale(_);\n return albersUsa.translate(lower48.translate());\n };\n\n albersUsa.translate = function(_) {\n if (!arguments.length) return lower48.translate();\n var k = lower48.scale(), x = +_[0], y = +_[1];\n\n lower48Point = lower48\n .translate(_)\n .clipExtent([[x - 0.455 * k, y - 0.238 * k], [x + 0.455 * k, y + 0.238 * k]])\n .stream(pointStream);\n\n alaskaPoint = alaska\n .translate([x - 0.307 * k, y + 0.201 * k])\n .clipExtent([[x - 0.425 * k + epsilon, y + 0.120 * k + epsilon], [x - 0.214 * k - epsilon, y + 0.234 * k - epsilon]])\n .stream(pointStream);\n\n hawaiiPoint = hawaii\n .translate([x - 0.205 * k, y + 0.212 * k])\n .clipExtent([[x - 0.214 * k + epsilon, y + 0.166 * k + epsilon], [x - 0.115 * k - epsilon, y + 0.234 * k - epsilon]])\n .stream(pointStream);\n\n return reset();\n };\n\n albersUsa.fitExtent = function(extent, object) {\n return fitExtent(albersUsa, extent, object);\n };\n\n albersUsa.fitSize = function(size, object) {\n return fitSize(albersUsa, size, object);\n };\n\n albersUsa.fitWidth = function(width, object) {\n return fitWidth(albersUsa, width, object);\n };\n\n albersUsa.fitHeight = function(height, object) {\n return fitHeight(albersUsa, height, object);\n };\n\n function reset() {\n cache = cacheStream = null;\n return albersUsa;\n }\n\n return albersUsa.scale(1070);\n}\n","import {asin, atan2, cos, sin, sqrt} from \"../math.js\";\n\nexport function azimuthalRaw(scale) {\n return function(x, y) {\n var cx = cos(x),\n cy = cos(y),\n k = scale(cx * cy);\n return [\n k * cy * sin(x),\n k * sin(y)\n ];\n }\n}\n\nexport function azimuthalInvert(angle) {\n return function(x, y) {\n var z = sqrt(x * x + y * y),\n c = angle(z),\n sc = sin(c),\n cc = cos(c);\n return [\n atan2(x * sc, z * cc),\n asin(z && y * sc / z)\n ];\n }\n}\n","import {asin, sqrt} from \"../math.js\";\nimport {azimuthalRaw, azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport var azimuthalEqualAreaRaw = azimuthalRaw(function(cxcy) {\n return sqrt(2 / (1 + cxcy));\n});\n\nazimuthalEqualAreaRaw.invert = azimuthalInvert(function(z) {\n return 2 * asin(z / 2);\n});\n\nexport default function() {\n return projection(azimuthalEqualAreaRaw)\n .scale(124.75)\n .clipAngle(180 - 1e-3);\n}\n","import {acos, sin} from \"../math.js\";\nimport {azimuthalRaw, azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport var azimuthalEquidistantRaw = azimuthalRaw(function(c) {\n return (c = acos(c)) && c / sin(c);\n});\n\nazimuthalEquidistantRaw.invert = azimuthalInvert(function(z) {\n return z;\n});\n\nexport default function() {\n return projection(azimuthalEquidistantRaw)\n .scale(79.4188)\n .clipAngle(180 - 1e-3);\n}\n","import {atan, exp, halfPi, log, pi, tan, tau} from \"../math.js\";\nimport rotation from \"../rotation.js\";\nimport projection from \"./index.js\";\n\nexport function mercatorRaw(lambda, phi) {\n return [lambda, log(tan((halfPi + phi) / 2))];\n}\n\nmercatorRaw.invert = function(x, y) {\n return [x, 2 * atan(exp(y)) - halfPi];\n};\n\nexport default function() {\n return mercatorProjection(mercatorRaw)\n .scale(961 / tau);\n}\n\nexport function mercatorProjection(project) {\n var m = projection(project),\n center = m.center,\n scale = m.scale,\n translate = m.translate,\n clipExtent = m.clipExtent,\n x0 = null, y0, x1, y1; // clip extent\n\n m.scale = function(_) {\n return arguments.length ? (scale(_), reclip()) : scale();\n };\n\n m.translate = function(_) {\n return arguments.length ? (translate(_), reclip()) : translate();\n };\n\n m.center = function(_) {\n return arguments.length ? (center(_), reclip()) : center();\n };\n\n m.clipExtent = function(_) {\n return arguments.length ? ((_ == null ? x0 = y0 = x1 = y1 = null : (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1])), reclip()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n };\n\n function reclip() {\n var k = pi * scale(),\n t = m(rotation(m.rotate()).invert([0, 0]));\n return clipExtent(x0 == null\n ? [[t[0] - k, t[1] - k], [t[0] + k, t[1] + k]] : project === mercatorRaw\n ? [[Math.max(t[0] - k, x0), y0], [Math.min(t[0] + k, x1), y1]]\n : [[x0, Math.max(t[1] - k, y0)], [x1, Math.min(t[1] + k, y1)]]);\n }\n\n return reclip();\n}\n","import {abs, atan, atan2, cos, epsilon, halfPi, log, pi, pow, sign, sin, sqrt, tan} from \"../math.js\";\nimport {conicProjection} from \"./conic.js\";\nimport {mercatorRaw} from \"./mercator.js\";\n\nfunction tany(y) {\n return tan((halfPi + y) / 2);\n}\n\nexport function conicConformalRaw(y0, y1) {\n var cy0 = cos(y0),\n n = y0 === y1 ? sin(y0) : log(cy0 / cos(y1)) / log(tany(y1) / tany(y0)),\n f = cy0 * pow(tany(y0), n) / n;\n\n if (!n) return mercatorRaw;\n\n function project(x, y) {\n if (f > 0) { if (y < -halfPi + epsilon) y = -halfPi + epsilon; }\n else { if (y > halfPi - epsilon) y = halfPi - epsilon; }\n var r = f / pow(tany(y), n);\n return [r * sin(n * x), f - r * cos(n * x)];\n }\n\n project.invert = function(x, y) {\n var fy = f - y, r = sign(n) * sqrt(x * x + fy * fy),\n l = atan2(x, abs(fy)) * sign(fy);\n if (fy * n < 0)\n l -= pi * sign(x) * sign(fy);\n return [l / n, 2 * atan(pow(f / r, 1 / n)) - halfPi];\n };\n\n return project;\n}\n\nexport default function() {\n return conicProjection(conicConformalRaw)\n .scale(109.5)\n .parallels([30, 30]);\n}\n","import projection from \"./index.js\";\n\nexport function equirectangularRaw(lambda, phi) {\n return [lambda, phi];\n}\n\nequirectangularRaw.invert = equirectangularRaw;\n\nexport default function() {\n return projection(equirectangularRaw)\n .scale(152.63);\n}\n","import {abs, atan2, cos, epsilon, pi, sign, sin, sqrt} from \"../math.js\";\nimport {conicProjection} from \"./conic.js\";\nimport {equirectangularRaw} from \"./equirectangular.js\";\n\nexport function conicEquidistantRaw(y0, y1) {\n var cy0 = cos(y0),\n n = y0 === y1 ? sin(y0) : (cy0 - cos(y1)) / (y1 - y0),\n g = cy0 / n + y0;\n\n if (abs(n) < epsilon) return equirectangularRaw;\n\n function project(x, y) {\n var gy = g - y, nx = n * x;\n return [gy * sin(nx), g - gy * cos(nx)];\n }\n\n project.invert = function(x, y) {\n var gy = g - y,\n l = atan2(x, abs(gy)) * sign(gy);\n if (gy * n < 0)\n l -= pi * sign(x) * sign(gy);\n return [l / n, g - sign(n) * sqrt(x * x + gy * gy)];\n };\n\n return project;\n}\n\nexport default function() {\n return conicProjection(conicEquidistantRaw)\n .scale(131.154)\n .center([0, 13.9389]);\n}\n","import projection from \"./index.js\";\nimport {abs, asin, cos, epsilon2, sin, sqrt} from \"../math.js\";\n\nvar A1 = 1.340264,\n A2 = -0.081106,\n A3 = 0.000893,\n A4 = 0.003796,\n M = sqrt(3) / 2,\n iterations = 12;\n\nexport function equalEarthRaw(lambda, phi) {\n var l = asin(M * sin(phi)), l2 = l * l, l6 = l2 * l2 * l2;\n return [\n lambda * cos(l) / (M * (A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2))),\n l * (A1 + A2 * l2 + l6 * (A3 + A4 * l2))\n ];\n}\n\nequalEarthRaw.invert = function(x, y) {\n var l = y, l2 = l * l, l6 = l2 * l2 * l2;\n for (var i = 0, delta, fy, fpy; i < iterations; ++i) {\n fy = l * (A1 + A2 * l2 + l6 * (A3 + A4 * l2)) - y;\n fpy = A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2);\n l -= delta = fy / fpy, l2 = l * l, l6 = l2 * l2 * l2;\n if (abs(delta) < epsilon2) break;\n }\n return [\n M * x * (A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2)) / cos(l),\n asin(sin(l) / M)\n ];\n};\n\nexport default function() {\n return projection(equalEarthRaw)\n .scale(177.158);\n}\n","import {atan, cos, sin} from \"../math.js\";\nimport {azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport function gnomonicRaw(x, y) {\n var cy = cos(y), k = cos(x) * cy;\n return [cy * sin(x) / k, sin(y) / k];\n}\n\ngnomonicRaw.invert = azimuthalInvert(atan);\n\nexport default function() {\n return projection(gnomonicRaw)\n .scale(144.049)\n .clipAngle(60);\n}\n","import clipRectangle from \"../clip/rectangle.js\";\nimport identity from \"../identity.js\";\nimport {transformer} from \"../transform.js\";\nimport {fitExtent, fitSize, fitWidth, fitHeight} from \"./fit.js\";\nimport {cos, degrees, radians, sin} from \"../math.js\";\n\nexport default function() {\n var k = 1, tx = 0, ty = 0, sx = 1, sy = 1, // scale, translate and reflect\n alpha = 0, ca, sa, // angle\n x0 = null, y0, x1, y1, // clip extent\n kx = 1, ky = 1,\n transform = transformer({\n point: function(x, y) {\n var p = projection([x, y])\n this.stream.point(p[0], p[1]);\n }\n }),\n postclip = identity,\n cache,\n cacheStream;\n\n function reset() {\n kx = k * sx;\n ky = k * sy;\n cache = cacheStream = null;\n return projection;\n }\n\n function projection (p) {\n var x = p[0] * kx, y = p[1] * ky;\n if (alpha) {\n var t = y * ca - x * sa;\n x = x * ca + y * sa;\n y = t;\n } \n return [x + tx, y + ty];\n }\n projection.invert = function(p) {\n var x = p[0] - tx, y = p[1] - ty;\n if (alpha) {\n var t = y * ca + x * sa;\n x = x * ca - y * sa;\n y = t;\n }\n return [x / kx, y / ky];\n };\n projection.stream = function(stream) {\n return cache && cacheStream === stream ? cache : cache = transform(postclip(cacheStream = stream));\n };\n projection.postclip = function(_) {\n return arguments.length ? (postclip = _, x0 = y0 = x1 = y1 = null, reset()) : postclip;\n };\n projection.clipExtent = function(_) {\n return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, identity) : clipRectangle(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n };\n projection.scale = function(_) {\n return arguments.length ? (k = +_, reset()) : k;\n };\n projection.translate = function(_) {\n return arguments.length ? (tx = +_[0], ty = +_[1], reset()) : [tx, ty];\n }\n projection.angle = function(_) {\n return arguments.length ? (alpha = _ % 360 * radians, sa = sin(alpha), ca = cos(alpha), reset()) : alpha * degrees;\n };\n projection.reflectX = function(_) {\n return arguments.length ? (sx = _ ? -1 : 1, reset()) : sx < 0;\n };\n projection.reflectY = function(_) {\n return arguments.length ? (sy = _ ? -1 : 1, reset()) : sy < 0;\n };\n projection.fitExtent = function(extent, object) {\n return fitExtent(projection, extent, object);\n };\n projection.fitSize = function(size, object) {\n return fitSize(projection, size, object);\n };\n projection.fitWidth = function(width, object) {\n return fitWidth(projection, width, object);\n };\n projection.fitHeight = function(height, object) {\n return fitHeight(projection, height, object);\n };\n\n return projection;\n}\n","import projection from \"./index.js\";\nimport {abs, epsilon} from \"../math.js\";\n\nexport function naturalEarth1Raw(lambda, phi) {\n var phi2 = phi * phi, phi4 = phi2 * phi2;\n return [\n lambda * (0.8707 - 0.131979 * phi2 + phi4 * (-0.013791 + phi4 * (0.003971 * phi2 - 0.001529 * phi4))),\n phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4)))\n ];\n}\n\nnaturalEarth1Raw.invert = function(x, y) {\n var phi = y, i = 25, delta;\n do {\n var phi2 = phi * phi, phi4 = phi2 * phi2;\n phi -= delta = (phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4))) - y) /\n (1.007226 + phi2 * (0.015085 * 3 + phi4 * (-0.044475 * 7 + 0.028874 * 9 * phi2 - 0.005916 * 11 * phi4)));\n } while (abs(delta) > epsilon && --i > 0);\n return [\n x / (0.8707 + (phi2 = phi * phi) * (-0.131979 + phi2 * (-0.013791 + phi2 * phi2 * phi2 * (0.003971 - 0.001529 * phi2)))),\n phi\n ];\n};\n\nexport default function() {\n return projection(naturalEarth1Raw)\n .scale(175.295);\n}\n","import {asin, cos, epsilon, sin} from \"../math.js\";\nimport {azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport function orthographicRaw(x, y) {\n return [cos(y) * sin(x), sin(y)];\n}\n\northographicRaw.invert = azimuthalInvert(asin);\n\nexport default function() {\n return projection(orthographicRaw)\n .scale(249.5)\n .clipAngle(90 + epsilon);\n}\n","import {atan, cos, sin} from \"../math.js\";\nimport {azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport function stereographicRaw(x, y) {\n var cy = cos(y), k = 1 + cos(x) * cy;\n return [cy * sin(x) / k, sin(y) / k];\n}\n\nstereographicRaw.invert = azimuthalInvert(function(z) {\n return 2 * atan(z);\n});\n\nexport default function() {\n return projection(stereographicRaw)\n .scale(250)\n .clipAngle(142);\n}\n","import {atan, exp, halfPi, log, tan} from \"../math.js\";\nimport {mercatorProjection} from \"./mercator.js\";\n\nexport function transverseMercatorRaw(lambda, phi) {\n return [log(tan((halfPi + phi) / 2)), -lambda];\n}\n\ntransverseMercatorRaw.invert = function(x, y) {\n return [-y, 2 * atan(exp(x)) - halfPi];\n};\n\nexport default function() {\n var m = mercatorProjection(transverseMercatorRaw),\n center = m.center,\n rotate = m.rotate;\n\n m.center = function(_) {\n return arguments.length ? center([-_[1], _[0]]) : (_ = center(), [_[1], -_[0]]);\n };\n\n m.rotate = function(_) {\n return arguments.length ? rotate([_[0], _[1], _.length > 2 ? _[2] + 90 : 90]) : (_ = rotate(), [_[0], _[1], _[2] - 90]);\n };\n\n return rotate([0, 0, 90])\n .scale(159.155);\n}\n","function defaultSeparation(a, b) {\n return a.parent === b.parent ? 1 : 2;\n}\n\nfunction meanX(children) {\n return children.reduce(meanXReduce, 0) / children.length;\n}\n\nfunction meanXReduce(x, c) {\n return x + c.x;\n}\n\nfunction maxY(children) {\n return 1 + children.reduce(maxYReduce, 0);\n}\n\nfunction maxYReduce(y, c) {\n return Math.max(y, c.y);\n}\n\nfunction leafLeft(node) {\n var children;\n while (children = node.children) node = children[0];\n return node;\n}\n\nfunction leafRight(node) {\n var children;\n while (children = node.children) node = children[children.length - 1];\n return node;\n}\n\nexport default function() {\n var separation = defaultSeparation,\n dx = 1,\n dy = 1,\n nodeSize = false;\n\n function cluster(root) {\n var previousNode,\n x = 0;\n\n // First walk, computing the initial x & y values.\n root.eachAfter(function(node) {\n var children = node.children;\n if (children) {\n node.x = meanX(children);\n node.y = maxY(children);\n } else {\n node.x = previousNode ? x += separation(node, previousNode) : 0;\n node.y = 0;\n previousNode = node;\n }\n });\n\n var left = leafLeft(root),\n right = leafRight(root),\n x0 = left.x - separation(left, right) / 2,\n x1 = right.x + separation(right, left) / 2;\n\n // Second walk, normalizing x & y to the desired size.\n return root.eachAfter(nodeSize ? function(node) {\n node.x = (node.x - root.x) * dx;\n node.y = (root.y - node.y) * dy;\n } : function(node) {\n node.x = (node.x - x0) / (x1 - x0) * dx;\n node.y = (1 - (root.y ? node.y / root.y : 1)) * dy;\n });\n }\n\n cluster.separation = function(x) {\n return arguments.length ? (separation = x, cluster) : separation;\n };\n\n cluster.size = function(x) {\n return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], cluster) : (nodeSize ? null : [dx, dy]);\n };\n\n cluster.nodeSize = function(x) {\n return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], cluster) : (nodeSize ? [dx, dy] : null);\n };\n\n return cluster;\n}\n","function count(node) {\n var sum = 0,\n children = node.children,\n i = children && children.length;\n if (!i) sum = 1;\n else while (--i >= 0) sum += children[i].value;\n node.value = sum;\n}\n\nexport default function() {\n return this.eachAfter(count);\n}\n","import node_count from \"./count.js\";\nimport node_each from \"./each.js\";\nimport node_eachBefore from \"./eachBefore.js\";\nimport node_eachAfter from \"./eachAfter.js\";\nimport node_sum from \"./sum.js\";\nimport node_sort from \"./sort.js\";\nimport node_path from \"./path.js\";\nimport node_ancestors from \"./ancestors.js\";\nimport node_descendants from \"./descendants.js\";\nimport node_leaves from \"./leaves.js\";\nimport node_links from \"./links.js\";\n\nexport default function hierarchy(data, children) {\n var root = new Node(data),\n valued = +data.value && (root.value = data.value),\n node,\n nodes = [root],\n child,\n childs,\n i,\n n;\n\n if (children == null) children = defaultChildren;\n\n while (node = nodes.pop()) {\n if (valued) node.value = +node.data.value;\n if ((childs = children(node.data)) && (n = childs.length)) {\n node.children = new Array(n);\n for (i = n - 1; i >= 0; --i) {\n nodes.push(child = node.children[i] = new Node(childs[i]));\n child.parent = node;\n child.depth = node.depth + 1;\n }\n }\n }\n\n return root.eachBefore(computeHeight);\n}\n\nfunction node_copy() {\n return hierarchy(this).eachBefore(copyData);\n}\n\nfunction defaultChildren(d) {\n return d.children;\n}\n\nfunction copyData(node) {\n node.data = node.data.data;\n}\n\nexport function computeHeight(node) {\n var height = 0;\n do node.height = height;\n while ((node = node.parent) && (node.height < ++height));\n}\n\nexport function Node(data) {\n this.data = data;\n this.depth =\n this.height = 0;\n this.parent = null;\n}\n\nNode.prototype = hierarchy.prototype = {\n constructor: Node,\n count: node_count,\n each: node_each,\n eachAfter: node_eachAfter,\n eachBefore: node_eachBefore,\n sum: node_sum,\n sort: node_sort,\n path: node_path,\n ancestors: node_ancestors,\n descendants: node_descendants,\n leaves: node_leaves,\n links: node_links,\n copy: node_copy\n};\n","export default function(callback) {\n var node = this, current, next = [node], children, i, n;\n do {\n current = next.reverse(), next = [];\n while (node = current.pop()) {\n callback(node), children = node.children;\n if (children) for (i = 0, n = children.length; i < n; ++i) {\n next.push(children[i]);\n }\n }\n } while (next.length);\n return this;\n}\n","export default function(callback) {\n var node = this, nodes = [node], next = [], children, i, n;\n while (node = nodes.pop()) {\n next.push(node), children = node.children;\n if (children) for (i = 0, n = children.length; i < n; ++i) {\n nodes.push(children[i]);\n }\n }\n while (node = next.pop()) {\n callback(node);\n }\n return this;\n}\n","export default function(callback) {\n var node = this, nodes = [node], children, i;\n while (node = nodes.pop()) {\n callback(node), children = node.children;\n if (children) for (i = children.length - 1; i >= 0; --i) {\n nodes.push(children[i]);\n }\n }\n return this;\n}\n","export default function(value) {\n return this.eachAfter(function(node) {\n var sum = +value(node.data) || 0,\n children = node.children,\n i = children && children.length;\n while (--i >= 0) sum += children[i].value;\n node.value = sum;\n });\n}\n","export default function(compare) {\n return this.eachBefore(function(node) {\n if (node.children) {\n node.children.sort(compare);\n }\n });\n}\n","export default function(end) {\n var start = this,\n ancestor = leastCommonAncestor(start, end),\n nodes = [start];\n while (start !== ancestor) {\n start = start.parent;\n nodes.push(start);\n }\n var k = nodes.length;\n while (end !== ancestor) {\n nodes.splice(k, 0, end);\n end = end.parent;\n }\n return nodes;\n}\n\nfunction leastCommonAncestor(a, b) {\n if (a === b) return a;\n var aNodes = a.ancestors(),\n bNodes = b.ancestors(),\n c = null;\n a = aNodes.pop();\n b = bNodes.pop();\n while (a === b) {\n c = a;\n a = aNodes.pop();\n b = bNodes.pop();\n }\n return c;\n}\n","export default function() {\n var node = this, nodes = [node];\n while (node = node.parent) {\n nodes.push(node);\n }\n return nodes;\n}\n","export default function() {\n var nodes = [];\n this.each(function(node) {\n nodes.push(node);\n });\n return nodes;\n}\n","export default function() {\n var leaves = [];\n this.eachBefore(function(node) {\n if (!node.children) {\n leaves.push(node);\n }\n });\n return leaves;\n}\n","export default function() {\n var root = this, links = [];\n root.each(function(node) {\n if (node !== root) { // Don’t include the root’s parent, if any.\n links.push({source: node.parent, target: node});\n }\n });\n return links;\n}\n","export var slice = Array.prototype.slice;\n\nexport function shuffle(array) {\n var m = array.length,\n t,\n i;\n\n while (m) {\n i = Math.random() * m-- | 0;\n t = array[m];\n array[m] = array[i];\n array[i] = t;\n }\n\n return array;\n}\n","import {shuffle, slice} from \"../array.js\";\n\nexport default function(circles) {\n var i = 0, n = (circles = shuffle(slice.call(circles))).length, B = [], p, e;\n\n while (i < n) {\n p = circles[i];\n if (e && enclosesWeak(e, p)) ++i;\n else e = encloseBasis(B = extendBasis(B, p)), i = 0;\n }\n\n return e;\n}\n\nfunction extendBasis(B, p) {\n var i, j;\n\n if (enclosesWeakAll(p, B)) return [p];\n\n // If we get here then B must have at least one element.\n for (i = 0; i < B.length; ++i) {\n if (enclosesNot(p, B[i])\n && enclosesWeakAll(encloseBasis2(B[i], p), B)) {\n return [B[i], p];\n }\n }\n\n // If we get here then B must have at least two elements.\n for (i = 0; i < B.length - 1; ++i) {\n for (j = i + 1; j < B.length; ++j) {\n if (enclosesNot(encloseBasis2(B[i], B[j]), p)\n && enclosesNot(encloseBasis2(B[i], p), B[j])\n && enclosesNot(encloseBasis2(B[j], p), B[i])\n && enclosesWeakAll(encloseBasis3(B[i], B[j], p), B)) {\n return [B[i], B[j], p];\n }\n }\n }\n\n // If we get here then something is very wrong.\n throw new Error;\n}\n\nfunction enclosesNot(a, b) {\n var dr = a.r - b.r, dx = b.x - a.x, dy = b.y - a.y;\n return dr < 0 || dr * dr < dx * dx + dy * dy;\n}\n\nfunction enclosesWeak(a, b) {\n var dr = a.r - b.r + 1e-6, dx = b.x - a.x, dy = b.y - a.y;\n return dr > 0 && dr * dr > dx * dx + dy * dy;\n}\n\nfunction enclosesWeakAll(a, B) {\n for (var i = 0; i < B.length; ++i) {\n if (!enclosesWeak(a, B[i])) {\n return false;\n }\n }\n return true;\n}\n\nfunction encloseBasis(B) {\n switch (B.length) {\n case 1: return encloseBasis1(B[0]);\n case 2: return encloseBasis2(B[0], B[1]);\n case 3: return encloseBasis3(B[0], B[1], B[2]);\n }\n}\n\nfunction encloseBasis1(a) {\n return {\n x: a.x,\n y: a.y,\n r: a.r\n };\n}\n\nfunction encloseBasis2(a, b) {\n var x1 = a.x, y1 = a.y, r1 = a.r,\n x2 = b.x, y2 = b.y, r2 = b.r,\n x21 = x2 - x1, y21 = y2 - y1, r21 = r2 - r1,\n l = Math.sqrt(x21 * x21 + y21 * y21);\n return {\n x: (x1 + x2 + x21 / l * r21) / 2,\n y: (y1 + y2 + y21 / l * r21) / 2,\n r: (l + r1 + r2) / 2\n };\n}\n\nfunction encloseBasis3(a, b, c) {\n var x1 = a.x, y1 = a.y, r1 = a.r,\n x2 = b.x, y2 = b.y, r2 = b.r,\n x3 = c.x, y3 = c.y, r3 = c.r,\n a2 = x1 - x2,\n a3 = x1 - x3,\n b2 = y1 - y2,\n b3 = y1 - y3,\n c2 = r2 - r1,\n c3 = r3 - r1,\n d1 = x1 * x1 + y1 * y1 - r1 * r1,\n d2 = d1 - x2 * x2 - y2 * y2 + r2 * r2,\n d3 = d1 - x3 * x3 - y3 * y3 + r3 * r3,\n ab = a3 * b2 - a2 * b3,\n xa = (b2 * d3 - b3 * d2) / (ab * 2) - x1,\n xb = (b3 * c2 - b2 * c3) / ab,\n ya = (a3 * d2 - a2 * d3) / (ab * 2) - y1,\n yb = (a2 * c3 - a3 * c2) / ab,\n A = xb * xb + yb * yb - 1,\n B = 2 * (r1 + xa * xb + ya * yb),\n C = xa * xa + ya * ya - r1 * r1,\n r = -(A ? (B + Math.sqrt(B * B - 4 * A * C)) / (2 * A) : C / B);\n return {\n x: x1 + xa + xb * r,\n y: y1 + ya + yb * r,\n r: r\n };\n}\n","import enclose from \"./enclose.js\";\n\nfunction place(b, a, c) {\n var dx = b.x - a.x, x, a2,\n dy = b.y - a.y, y, b2,\n d2 = dx * dx + dy * dy;\n if (d2) {\n a2 = a.r + c.r, a2 *= a2;\n b2 = b.r + c.r, b2 *= b2;\n if (a2 > b2) {\n x = (d2 + b2 - a2) / (2 * d2);\n y = Math.sqrt(Math.max(0, b2 / d2 - x * x));\n c.x = b.x - x * dx - y * dy;\n c.y = b.y - x * dy + y * dx;\n } else {\n x = (d2 + a2 - b2) / (2 * d2);\n y = Math.sqrt(Math.max(0, a2 / d2 - x * x));\n c.x = a.x + x * dx - y * dy;\n c.y = a.y + x * dy + y * dx;\n }\n } else {\n c.x = a.x + c.r;\n c.y = a.y;\n }\n}\n\nfunction intersects(a, b) {\n var dr = a.r + b.r - 1e-6, dx = b.x - a.x, dy = b.y - a.y;\n return dr > 0 && dr * dr > dx * dx + dy * dy;\n}\n\nfunction score(node) {\n var a = node._,\n b = node.next._,\n ab = a.r + b.r,\n dx = (a.x * b.r + b.x * a.r) / ab,\n dy = (a.y * b.r + b.y * a.r) / ab;\n return dx * dx + dy * dy;\n}\n\nfunction Node(circle) {\n this._ = circle;\n this.next = null;\n this.previous = null;\n}\n\nexport function packEnclose(circles) {\n if (!(n = circles.length)) return 0;\n\n var a, b, c, n, aa, ca, i, j, k, sj, sk;\n\n // Place the first circle.\n a = circles[0], a.x = 0, a.y = 0;\n if (!(n > 1)) return a.r;\n\n // Place the second circle.\n b = circles[1], a.x = -b.r, b.x = a.r, b.y = 0;\n if (!(n > 2)) return a.r + b.r;\n\n // Place the third circle.\n place(b, a, c = circles[2]);\n\n // Initialize the front-chain using the first three circles a, b and c.\n a = new Node(a), b = new Node(b), c = new Node(c);\n a.next = c.previous = b;\n b.next = a.previous = c;\n c.next = b.previous = a;\n\n // Attempt to place each remaining circle…\n pack: for (i = 3; i < n; ++i) {\n place(a._, b._, c = circles[i]), c = new Node(c);\n\n // Find the closest intersecting circle on the front-chain, if any.\n // “Closeness” is determined by linear distance along the front-chain.\n // “Ahead” or “behind” is likewise determined by linear distance.\n j = b.next, k = a.previous, sj = b._.r, sk = a._.r;\n do {\n if (sj <= sk) {\n if (intersects(j._, c._)) {\n b = j, a.next = b, b.previous = a, --i;\n continue pack;\n }\n sj += j._.r, j = j.next;\n } else {\n if (intersects(k._, c._)) {\n a = k, a.next = b, b.previous = a, --i;\n continue pack;\n }\n sk += k._.r, k = k.previous;\n }\n } while (j !== k.next);\n\n // Success! Insert the new circle c between a and b.\n c.previous = a, c.next = b, a.next = b.previous = b = c;\n\n // Compute the new closest circle pair to the centroid.\n aa = score(a);\n while ((c = c.next) !== b) {\n if ((ca = score(c)) < aa) {\n a = c, aa = ca;\n }\n }\n b = a.next;\n }\n\n // Compute the enclosing circle of the front chain.\n a = [b._], c = b; while ((c = c.next) !== b) a.push(c._); c = enclose(a);\n\n // Translate the circles to put the enclosing circle around the origin.\n for (i = 0; i < n; ++i) a = circles[i], a.x -= c.x, a.y -= c.y;\n\n return c.r;\n}\n\nexport default function(circles) {\n packEnclose(circles);\n return circles;\n}\n","export function optional(f) {\n return f == null ? null : required(f);\n}\n\nexport function required(f) {\n if (typeof f !== \"function\") throw new Error;\n return f;\n}\n","export function constantZero() {\n return 0;\n}\n\nexport default function(x) {\n return function() {\n return x;\n };\n}\n","import {packEnclose} from \"./siblings.js\";\nimport {optional} from \"../accessors.js\";\nimport constant, {constantZero} from \"../constant.js\";\n\nfunction defaultRadius(d) {\n return Math.sqrt(d.value);\n}\n\nexport default function() {\n var radius = null,\n dx = 1,\n dy = 1,\n padding = constantZero;\n\n function pack(root) {\n root.x = dx / 2, root.y = dy / 2;\n if (radius) {\n root.eachBefore(radiusLeaf(radius))\n .eachAfter(packChildren(padding, 0.5))\n .eachBefore(translateChild(1));\n } else {\n root.eachBefore(radiusLeaf(defaultRadius))\n .eachAfter(packChildren(constantZero, 1))\n .eachAfter(packChildren(padding, root.r / Math.min(dx, dy)))\n .eachBefore(translateChild(Math.min(dx, dy) / (2 * root.r)));\n }\n return root;\n }\n\n pack.radius = function(x) {\n return arguments.length ? (radius = optional(x), pack) : radius;\n };\n\n pack.size = function(x) {\n return arguments.length ? (dx = +x[0], dy = +x[1], pack) : [dx, dy];\n };\n\n pack.padding = function(x) {\n return arguments.length ? (padding = typeof x === \"function\" ? x : constant(+x), pack) : padding;\n };\n\n return pack;\n}\n\nfunction radiusLeaf(radius) {\n return function(node) {\n if (!node.children) {\n node.r = Math.max(0, +radius(node) || 0);\n }\n };\n}\n\nfunction packChildren(padding, k) {\n return function(node) {\n if (children = node.children) {\n var children,\n i,\n n = children.length,\n r = padding(node) * k || 0,\n e;\n\n if (r) for (i = 0; i < n; ++i) children[i].r += r;\n e = packEnclose(children);\n if (r) for (i = 0; i < n; ++i) children[i].r -= r;\n node.r = e + r;\n }\n };\n}\n\nfunction translateChild(k) {\n return function(node) {\n var parent = node.parent;\n node.r *= k;\n if (parent) {\n node.x = parent.x + k * node.x;\n node.y = parent.y + k * node.y;\n }\n };\n}\n","export default function(node) {\n node.x0 = Math.round(node.x0);\n node.y0 = Math.round(node.y0);\n node.x1 = Math.round(node.x1);\n node.y1 = Math.round(node.y1);\n}\n","export default function(parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n node,\n i = -1,\n n = nodes.length,\n k = parent.value && (x1 - x0) / parent.value;\n\n while (++i < n) {\n node = nodes[i], node.y0 = y0, node.y1 = y1;\n node.x0 = x0, node.x1 = x0 += node.value * k;\n }\n}\n","import roundNode from \"./treemap/round.js\";\nimport treemapDice from \"./treemap/dice.js\";\n\nexport default function() {\n var dx = 1,\n dy = 1,\n padding = 0,\n round = false;\n\n function partition(root) {\n var n = root.height + 1;\n root.x0 =\n root.y0 = padding;\n root.x1 = dx;\n root.y1 = dy / n;\n root.eachBefore(positionNode(dy, n));\n if (round) root.eachBefore(roundNode);\n return root;\n }\n\n function positionNode(dy, n) {\n return function(node) {\n if (node.children) {\n treemapDice(node, node.x0, dy * (node.depth + 1) / n, node.x1, dy * (node.depth + 2) / n);\n }\n var x0 = node.x0,\n y0 = node.y0,\n x1 = node.x1 - padding,\n y1 = node.y1 - padding;\n if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n node.x0 = x0;\n node.y0 = y0;\n node.x1 = x1;\n node.y1 = y1;\n };\n }\n\n partition.round = function(x) {\n return arguments.length ? (round = !!x, partition) : round;\n };\n\n partition.size = function(x) {\n return arguments.length ? (dx = +x[0], dy = +x[1], partition) : [dx, dy];\n };\n\n partition.padding = function(x) {\n return arguments.length ? (padding = +x, partition) : padding;\n };\n\n return partition;\n}\n","import {required} from \"./accessors.js\";\nimport {Node, computeHeight} from \"./hierarchy/index.js\";\n\nvar keyPrefix = \"$\", // Protect against keys like “__proto__”.\n preroot = {depth: -1},\n ambiguous = {};\n\nfunction defaultId(d) {\n return d.id;\n}\n\nfunction defaultParentId(d) {\n return d.parentId;\n}\n\nexport default function() {\n var id = defaultId,\n parentId = defaultParentId;\n\n function stratify(data) {\n var d,\n i,\n n = data.length,\n root,\n parent,\n node,\n nodes = new Array(n),\n nodeId,\n nodeKey,\n nodeByKey = {};\n\n for (i = 0; i < n; ++i) {\n d = data[i], node = nodes[i] = new Node(d);\n if ((nodeId = id(d, i, data)) != null && (nodeId += \"\")) {\n nodeKey = keyPrefix + (node.id = nodeId);\n nodeByKey[nodeKey] = nodeKey in nodeByKey ? ambiguous : node;\n }\n }\n\n for (i = 0; i < n; ++i) {\n node = nodes[i], nodeId = parentId(data[i], i, data);\n if (nodeId == null || !(nodeId += \"\")) {\n if (root) throw new Error(\"multiple roots\");\n root = node;\n } else {\n parent = nodeByKey[keyPrefix + nodeId];\n if (!parent) throw new Error(\"missing: \" + nodeId);\n if (parent === ambiguous) throw new Error(\"ambiguous: \" + nodeId);\n if (parent.children) parent.children.push(node);\n else parent.children = [node];\n node.parent = parent;\n }\n }\n\n if (!root) throw new Error(\"no root\");\n root.parent = preroot;\n root.eachBefore(function(node) { node.depth = node.parent.depth + 1; --n; }).eachBefore(computeHeight);\n root.parent = null;\n if (n > 0) throw new Error(\"cycle\");\n\n return root;\n }\n\n stratify.id = function(x) {\n return arguments.length ? (id = required(x), stratify) : id;\n };\n\n stratify.parentId = function(x) {\n return arguments.length ? (parentId = required(x), stratify) : parentId;\n };\n\n return stratify;\n}\n","import {Node} from \"./hierarchy/index.js\";\n\nfunction defaultSeparation(a, b) {\n return a.parent === b.parent ? 1 : 2;\n}\n\n// function radialSeparation(a, b) {\n// return (a.parent === b.parent ? 1 : 2) / a.depth;\n// }\n\n// This function is used to traverse the left contour of a subtree (or\n// subforest). It returns the successor of v on this contour. This successor is\n// either given by the leftmost child of v or by the thread of v. The function\n// returns null if and only if v is on the highest level of its subtree.\nfunction nextLeft(v) {\n var children = v.children;\n return children ? children[0] : v.t;\n}\n\n// This function works analogously to nextLeft.\nfunction nextRight(v) {\n var children = v.children;\n return children ? children[children.length - 1] : v.t;\n}\n\n// Shifts the current subtree rooted at w+. This is done by increasing\n// prelim(w+) and mod(w+) by shift.\nfunction moveSubtree(wm, wp, shift) {\n var change = shift / (wp.i - wm.i);\n wp.c -= change;\n wp.s += shift;\n wm.c += change;\n wp.z += shift;\n wp.m += shift;\n}\n\n// All other shifts, applied to the smaller subtrees between w- and w+, are\n// performed by this function. To prepare the shifts, we have to adjust\n// change(w+), shift(w+), and change(w-).\nfunction executeShifts(v) {\n var shift = 0,\n change = 0,\n children = v.children,\n i = children.length,\n w;\n while (--i >= 0) {\n w = children[i];\n w.z += shift;\n w.m += shift;\n shift += w.s + (change += w.c);\n }\n}\n\n// If vi-’s ancestor is a sibling of v, returns vi-’s ancestor. Otherwise,\n// returns the specified (default) ancestor.\nfunction nextAncestor(vim, v, ancestor) {\n return vim.a.parent === v.parent ? vim.a : ancestor;\n}\n\nfunction TreeNode(node, i) {\n this._ = node;\n this.parent = null;\n this.children = null;\n this.A = null; // default ancestor\n this.a = this; // ancestor\n this.z = 0; // prelim\n this.m = 0; // mod\n this.c = 0; // change\n this.s = 0; // shift\n this.t = null; // thread\n this.i = i; // number\n}\n\nTreeNode.prototype = Object.create(Node.prototype);\n\nfunction treeRoot(root) {\n var tree = new TreeNode(root, 0),\n node,\n nodes = [tree],\n child,\n children,\n i,\n n;\n\n while (node = nodes.pop()) {\n if (children = node._.children) {\n node.children = new Array(n = children.length);\n for (i = n - 1; i >= 0; --i) {\n nodes.push(child = node.children[i] = new TreeNode(children[i], i));\n child.parent = node;\n }\n }\n }\n\n (tree.parent = new TreeNode(null, 0)).children = [tree];\n return tree;\n}\n\n// Node-link tree diagram using the Reingold-Tilford \"tidy\" algorithm\nexport default function() {\n var separation = defaultSeparation,\n dx = 1,\n dy = 1,\n nodeSize = null;\n\n function tree(root) {\n var t = treeRoot(root);\n\n // Compute the layout using Buchheim et al.’s algorithm.\n t.eachAfter(firstWalk), t.parent.m = -t.z;\n t.eachBefore(secondWalk);\n\n // If a fixed node size is specified, scale x and y.\n if (nodeSize) root.eachBefore(sizeNode);\n\n // If a fixed tree size is specified, scale x and y based on the extent.\n // Compute the left-most, right-most, and depth-most nodes for extents.\n else {\n var left = root,\n right = root,\n bottom = root;\n root.eachBefore(function(node) {\n if (node.x < left.x) left = node;\n if (node.x > right.x) right = node;\n if (node.depth > bottom.depth) bottom = node;\n });\n var s = left === right ? 1 : separation(left, right) / 2,\n tx = s - left.x,\n kx = dx / (right.x + s + tx),\n ky = dy / (bottom.depth || 1);\n root.eachBefore(function(node) {\n node.x = (node.x + tx) * kx;\n node.y = node.depth * ky;\n });\n }\n\n return root;\n }\n\n // Computes a preliminary x-coordinate for v. Before that, FIRST WALK is\n // applied recursively to the children of v, as well as the function\n // APPORTION. After spacing out the children by calling EXECUTE SHIFTS, the\n // node v is placed to the midpoint of its outermost children.\n function firstWalk(v) {\n var children = v.children,\n siblings = v.parent.children,\n w = v.i ? siblings[v.i - 1] : null;\n if (children) {\n executeShifts(v);\n var midpoint = (children[0].z + children[children.length - 1].z) / 2;\n if (w) {\n v.z = w.z + separation(v._, w._);\n v.m = v.z - midpoint;\n } else {\n v.z = midpoint;\n }\n } else if (w) {\n v.z = w.z + separation(v._, w._);\n }\n v.parent.A = apportion(v, w, v.parent.A || siblings[0]);\n }\n\n // Computes all real x-coordinates by summing up the modifiers recursively.\n function secondWalk(v) {\n v._.x = v.z + v.parent.m;\n v.m += v.parent.m;\n }\n\n // The core of the algorithm. Here, a new subtree is combined with the\n // previous subtrees. Threads are used to traverse the inside and outside\n // contours of the left and right subtree up to the highest common level. The\n // vertices used for the traversals are vi+, vi-, vo-, and vo+, where the\n // superscript o means outside and i means inside, the subscript - means left\n // subtree and + means right subtree. For summing up the modifiers along the\n // contour, we use respective variables si+, si-, so-, and so+. Whenever two\n // nodes of the inside contours conflict, we compute the left one of the\n // greatest uncommon ancestors using the function ANCESTOR and call MOVE\n // SUBTREE to shift the subtree and prepare the shifts of smaller subtrees.\n // Finally, we add a new thread (if necessary).\n function apportion(v, w, ancestor) {\n if (w) {\n var vip = v,\n vop = v,\n vim = w,\n vom = vip.parent.children[0],\n sip = vip.m,\n sop = vop.m,\n sim = vim.m,\n som = vom.m,\n shift;\n while (vim = nextRight(vim), vip = nextLeft(vip), vim && vip) {\n vom = nextLeft(vom);\n vop = nextRight(vop);\n vop.a = v;\n shift = vim.z + sim - vip.z - sip + separation(vim._, vip._);\n if (shift > 0) {\n moveSubtree(nextAncestor(vim, v, ancestor), v, shift);\n sip += shift;\n sop += shift;\n }\n sim += vim.m;\n sip += vip.m;\n som += vom.m;\n sop += vop.m;\n }\n if (vim && !nextRight(vop)) {\n vop.t = vim;\n vop.m += sim - sop;\n }\n if (vip && !nextLeft(vom)) {\n vom.t = vip;\n vom.m += sip - som;\n ancestor = v;\n }\n }\n return ancestor;\n }\n\n function sizeNode(node) {\n node.x *= dx;\n node.y = node.depth * dy;\n }\n\n tree.separation = function(x) {\n return arguments.length ? (separation = x, tree) : separation;\n };\n\n tree.size = function(x) {\n return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], tree) : (nodeSize ? null : [dx, dy]);\n };\n\n tree.nodeSize = function(x) {\n return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], tree) : (nodeSize ? [dx, dy] : null);\n };\n\n return tree;\n}\n","export default function(parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n node,\n i = -1,\n n = nodes.length,\n k = parent.value && (y1 - y0) / parent.value;\n\n while (++i < n) {\n node = nodes[i], node.x0 = x0, node.x1 = x1;\n node.y0 = y0, node.y1 = y0 += node.value * k;\n }\n}\n","import treemapDice from \"./dice.js\";\nimport treemapSlice from \"./slice.js\";\n\nexport var phi = (1 + Math.sqrt(5)) / 2;\n\nexport function squarifyRatio(ratio, parent, x0, y0, x1, y1) {\n var rows = [],\n nodes = parent.children,\n row,\n nodeValue,\n i0 = 0,\n i1 = 0,\n n = nodes.length,\n dx, dy,\n value = parent.value,\n sumValue,\n minValue,\n maxValue,\n newRatio,\n minRatio,\n alpha,\n beta;\n\n while (i0 < n) {\n dx = x1 - x0, dy = y1 - y0;\n\n // Find the next non-empty node.\n do sumValue = nodes[i1++].value; while (!sumValue && i1 < n);\n minValue = maxValue = sumValue;\n alpha = Math.max(dy / dx, dx / dy) / (value * ratio);\n beta = sumValue * sumValue * alpha;\n minRatio = Math.max(maxValue / beta, beta / minValue);\n\n // Keep adding nodes while the aspect ratio maintains or improves.\n for (; i1 < n; ++i1) {\n sumValue += nodeValue = nodes[i1].value;\n if (nodeValue < minValue) minValue = nodeValue;\n if (nodeValue > maxValue) maxValue = nodeValue;\n beta = sumValue * sumValue * alpha;\n newRatio = Math.max(maxValue / beta, beta / minValue);\n if (newRatio > minRatio) { sumValue -= nodeValue; break; }\n minRatio = newRatio;\n }\n\n // Position and record the row orientation.\n rows.push(row = {value: sumValue, dice: dx < dy, children: nodes.slice(i0, i1)});\n if (row.dice) treemapDice(row, x0, y0, x1, value ? y0 += dy * sumValue / value : y1);\n else treemapSlice(row, x0, y0, value ? x0 += dx * sumValue / value : x1, y1);\n value -= sumValue, i0 = i1;\n }\n\n return rows;\n}\n\nexport default (function custom(ratio) {\n\n function squarify(parent, x0, y0, x1, y1) {\n squarifyRatio(ratio, parent, x0, y0, x1, y1);\n }\n\n squarify.ratio = function(x) {\n return custom((x = +x) > 1 ? x : 1);\n };\n\n return squarify;\n})(phi);\n","import roundNode from \"./round.js\";\nimport squarify from \"./squarify.js\";\nimport {required} from \"../accessors.js\";\nimport constant, {constantZero} from \"../constant.js\";\n\nexport default function() {\n var tile = squarify,\n round = false,\n dx = 1,\n dy = 1,\n paddingStack = [0],\n paddingInner = constantZero,\n paddingTop = constantZero,\n paddingRight = constantZero,\n paddingBottom = constantZero,\n paddingLeft = constantZero;\n\n function treemap(root) {\n root.x0 =\n root.y0 = 0;\n root.x1 = dx;\n root.y1 = dy;\n root.eachBefore(positionNode);\n paddingStack = [0];\n if (round) root.eachBefore(roundNode);\n return root;\n }\n\n function positionNode(node) {\n var p = paddingStack[node.depth],\n x0 = node.x0 + p,\n y0 = node.y0 + p,\n x1 = node.x1 - p,\n y1 = node.y1 - p;\n if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n node.x0 = x0;\n node.y0 = y0;\n node.x1 = x1;\n node.y1 = y1;\n if (node.children) {\n p = paddingStack[node.depth + 1] = paddingInner(node) / 2;\n x0 += paddingLeft(node) - p;\n y0 += paddingTop(node) - p;\n x1 -= paddingRight(node) - p;\n y1 -= paddingBottom(node) - p;\n if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n tile(node, x0, y0, x1, y1);\n }\n }\n\n treemap.round = function(x) {\n return arguments.length ? (round = !!x, treemap) : round;\n };\n\n treemap.size = function(x) {\n return arguments.length ? (dx = +x[0], dy = +x[1], treemap) : [dx, dy];\n };\n\n treemap.tile = function(x) {\n return arguments.length ? (tile = required(x), treemap) : tile;\n };\n\n treemap.padding = function(x) {\n return arguments.length ? treemap.paddingInner(x).paddingOuter(x) : treemap.paddingInner();\n };\n\n treemap.paddingInner = function(x) {\n return arguments.length ? (paddingInner = typeof x === \"function\" ? x : constant(+x), treemap) : paddingInner;\n };\n\n treemap.paddingOuter = function(x) {\n return arguments.length ? treemap.paddingTop(x).paddingRight(x).paddingBottom(x).paddingLeft(x) : treemap.paddingTop();\n };\n\n treemap.paddingTop = function(x) {\n return arguments.length ? (paddingTop = typeof x === \"function\" ? x : constant(+x), treemap) : paddingTop;\n };\n\n treemap.paddingRight = function(x) {\n return arguments.length ? (paddingRight = typeof x === \"function\" ? x : constant(+x), treemap) : paddingRight;\n };\n\n treemap.paddingBottom = function(x) {\n return arguments.length ? (paddingBottom = typeof x === \"function\" ? x : constant(+x), treemap) : paddingBottom;\n };\n\n treemap.paddingLeft = function(x) {\n return arguments.length ? (paddingLeft = typeof x === \"function\" ? x : constant(+x), treemap) : paddingLeft;\n };\n\n return treemap;\n}\n","export default function(parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n i, n = nodes.length,\n sum, sums = new Array(n + 1);\n\n for (sums[0] = sum = i = 0; i < n; ++i) {\n sums[i + 1] = sum += nodes[i].value;\n }\n\n partition(0, n, parent.value, x0, y0, x1, y1);\n\n function partition(i, j, value, x0, y0, x1, y1) {\n if (i >= j - 1) {\n var node = nodes[i];\n node.x0 = x0, node.y0 = y0;\n node.x1 = x1, node.y1 = y1;\n return;\n }\n\n var valueOffset = sums[i],\n valueTarget = (value / 2) + valueOffset,\n k = i + 1,\n hi = j - 1;\n\n while (k < hi) {\n var mid = k + hi >>> 1;\n if (sums[mid] < valueTarget) k = mid + 1;\n else hi = mid;\n }\n\n if ((valueTarget - sums[k - 1]) < (sums[k] - valueTarget) && i + 1 < k) --k;\n\n var valueLeft = sums[k] - valueOffset,\n valueRight = value - valueLeft;\n\n if ((x1 - x0) > (y1 - y0)) {\n var xk = (x0 * valueRight + x1 * valueLeft) / value;\n partition(i, k, valueLeft, x0, y0, xk, y1);\n partition(k, j, valueRight, xk, y0, x1, y1);\n } else {\n var yk = (y0 * valueRight + y1 * valueLeft) / value;\n partition(i, k, valueLeft, x0, y0, x1, yk);\n partition(k, j, valueRight, x0, yk, x1, y1);\n }\n }\n}\n","import dice from \"./dice.js\";\nimport slice from \"./slice.js\";\n\nexport default function(parent, x0, y0, x1, y1) {\n (parent.depth & 1 ? slice : dice)(parent, x0, y0, x1, y1);\n}\n","import treemapDice from \"./dice.js\";\nimport treemapSlice from \"./slice.js\";\nimport {phi, squarifyRatio} from \"./squarify.js\";\n\nexport default (function custom(ratio) {\n\n function resquarify(parent, x0, y0, x1, y1) {\n if ((rows = parent._squarify) && (rows.ratio === ratio)) {\n var rows,\n row,\n nodes,\n i,\n j = -1,\n n,\n m = rows.length,\n value = parent.value;\n\n while (++j < m) {\n row = rows[j], nodes = row.children;\n for (i = row.value = 0, n = nodes.length; i < n; ++i) row.value += nodes[i].value;\n if (row.dice) treemapDice(row, x0, y0, x1, y0 += (y1 - y0) * row.value / value);\n else treemapSlice(row, x0, y0, x0 += (x1 - x0) * row.value / value, y1);\n value -= row.value;\n }\n } else {\n parent._squarify = rows = squarifyRatio(ratio, parent, x0, y0, x1, y1);\n rows.ratio = ratio;\n }\n }\n\n resquarify.ratio = function(x) {\n return custom((x = +x) > 1 ? x : 1);\n };\n\n return resquarify;\n})(phi);\n","export default function(range) {\n var n = range.length;\n return function(t) {\n return range[Math.max(0, Math.min(n - 1, Math.floor(t * n)))];\n };\n}\n","import {hue} from \"./color.js\";\n\nexport default function(a, b) {\n var i = hue(+a, +b);\n return function(t) {\n var x = i(t);\n return x - 360 * Math.floor(x / 360);\n };\n}\n","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","var rho = Math.SQRT2,\n rho2 = 2,\n rho4 = 4,\n 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\n// p0 = [ux0, uy0, w0]\n// p1 = [ux1, uy1, w1]\nexport default function(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;\n\n return i;\n}\n","import {hsl as colorHsl} from \"d3-color\";\nimport color, {hue} from \"./color.js\";\n\nfunction hsl(hue) {\n return function(start, end) {\n var h = hue((start = colorHsl(start)).h, (end = colorHsl(end)).h),\n s = color(start.s, end.s),\n l = color(start.l, end.l),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.s = s(t);\n start.l = l(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n}\n\nexport default hsl(hue);\nexport var hslLong = hsl(color);\n","import {lab as colorLab} from \"d3-color\";\nimport color from \"./color.js\";\n\nexport default function lab(start, end) {\n var l = color((start = colorLab(start)).l, (end = colorLab(end)).l),\n a = color(start.a, end.a),\n b = color(start.b, end.b),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.l = l(t);\n start.a = a(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n}\n","import {hcl as colorHcl} from \"d3-color\";\nimport color, {hue} from \"./color.js\";\n\nfunction hcl(hue) {\n return function(start, end) {\n var h = hue((start = colorHcl(start)).h, (end = colorHcl(end)).h),\n c = color(start.c, end.c),\n l = color(start.l, end.l),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.c = c(t);\n start.l = l(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n}\n\nexport default hcl(hue);\nexport var hclLong = hcl(color);\n","import {cubehelix as colorCubehelix} from \"d3-color\";\nimport color, {hue} from \"./color.js\";\n\nfunction cubehelix(hue) {\n return (function cubehelixGamma(y) {\n y = +y;\n\n function cubehelix(start, end) {\n var h = hue((start = colorCubehelix(start)).h, (end = colorCubehelix(end)).h),\n s = color(start.s, end.s),\n l = color(start.l, end.l),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.s = s(t);\n start.l = l(Math.pow(t, y));\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n cubehelix.gamma = cubehelixGamma;\n\n return cubehelix;\n })(1);\n}\n\nexport default cubehelix(hue);\nexport var cubehelixLong = cubehelix(color);\n","export default function piecewise(interpolate, values) {\n var i = 0, n = values.length - 1, v = values[0], I = new Array(n < 0 ? 0 : n);\n while (i < n) I[i] = interpolate(v, v = values[++i]);\n return function(t) {\n var i = Math.max(0, Math.min(n - 1, Math.floor(t *= n)));\n return I[i](t - i);\n };\n}\n","export default function(interpolator, n) {\n var samples = new Array(n);\n for (var i = 0; i < n; ++i) samples[i] = interpolator(i / (n - 1));\n return samples;\n}\n","export default function(polygon) {\n var i = -1,\n n = polygon.length,\n a,\n b = polygon[n - 1],\n area = 0;\n\n while (++i < n) {\n a = b;\n b = polygon[i];\n area += a[1] * b[0] - a[0] * b[1];\n }\n\n return area / 2;\n}\n","export default function(polygon) {\n var i = -1,\n n = polygon.length,\n x = 0,\n y = 0,\n a,\n b = polygon[n - 1],\n c,\n k = 0;\n\n while (++i < n) {\n a = b;\n b = polygon[i];\n k += c = a[0] * b[1] - b[0] * a[1];\n x += (a[0] + b[0]) * c;\n y += (a[1] + b[1]) * c;\n }\n\n return k *= 3, [x / k, y / k];\n}\n","// Returns the 2D cross product of AB and AC vectors, i.e., the z-component of\n// the 3D cross product in a quadrant I Cartesian coordinate system (+x is\n// right, +y is up). Returns a positive value if ABC is counter-clockwise,\n// negative if clockwise, and zero if the points are collinear.\nexport default function(a, b, c) {\n return (b[0] - a[0]) * (c[1] - a[1]) - (b[1] - a[1]) * (c[0] - a[0]);\n}\n","import cross from \"./cross.js\";\n\nfunction lexicographicOrder(a, b) {\n return a[0] - b[0] || a[1] - b[1];\n}\n\n// Computes the upper convex hull per the monotone chain algorithm.\n// Assumes points.length >= 3, is sorted by x, unique in y.\n// Returns an array of indices into points in left-to-right order.\nfunction computeUpperHullIndexes(points) {\n var n = points.length,\n indexes = [0, 1],\n size = 2;\n\n for (var i = 2; i < n; ++i) {\n while (size > 1 && cross(points[indexes[size - 2]], points[indexes[size - 1]], points[i]) <= 0) --size;\n indexes[size++] = i;\n }\n\n return indexes.slice(0, size); // remove popped points\n}\n\nexport default function(points) {\n if ((n = points.length) < 3) return null;\n\n var i,\n n,\n sortedPoints = new Array(n),\n flippedPoints = new Array(n);\n\n for (i = 0; i < n; ++i) sortedPoints[i] = [+points[i][0], +points[i][1], i];\n sortedPoints.sort(lexicographicOrder);\n for (i = 0; i < n; ++i) flippedPoints[i] = [sortedPoints[i][0], -sortedPoints[i][1]];\n\n var upperIndexes = computeUpperHullIndexes(sortedPoints),\n lowerIndexes = computeUpperHullIndexes(flippedPoints);\n\n // Construct the hull polygon, removing possible duplicate endpoints.\n var skipLeft = lowerIndexes[0] === upperIndexes[0],\n skipRight = lowerIndexes[lowerIndexes.length - 1] === upperIndexes[upperIndexes.length - 1],\n hull = [];\n\n // Add upper hull in right-to-l order.\n // Then add lower hull in left-to-right order.\n for (i = upperIndexes.length - 1; i >= 0; --i) hull.push(points[sortedPoints[upperIndexes[i]][2]]);\n for (i = +skipLeft; i < lowerIndexes.length - skipRight; ++i) hull.push(points[sortedPoints[lowerIndexes[i]][2]]);\n\n return hull;\n}\n","export default function(polygon, point) {\n var n = polygon.length,\n p = polygon[n - 1],\n x = point[0], y = point[1],\n x0 = p[0], y0 = p[1],\n x1, y1,\n inside = false;\n\n for (var i = 0; i < n; ++i) {\n p = polygon[i], x1 = p[0], y1 = p[1];\n if (((y1 > y) !== (y0 > y)) && (x < (x0 - x1) * (y - y1) / (y0 - y1) + x1)) inside = !inside;\n x0 = x1, y0 = y1;\n }\n\n return inside;\n}\n","export default function(polygon) {\n var i = -1,\n n = polygon.length,\n b = polygon[n - 1],\n xa,\n ya,\n xb = b[0],\n yb = b[1],\n perimeter = 0;\n\n while (++i < n) {\n xa = xb;\n ya = yb;\n b = polygon[i];\n xb = b[0];\n yb = b[1];\n xa -= xb;\n ya -= yb;\n perimeter += Math.sqrt(xa * xa + ya * ya);\n }\n\n return perimeter;\n}\n","export default function() {\n return Math.random();\n}\n","import defaultSource from \"./defaultSource\";\n\nexport default (function sourceRandomUniform(source) {\n function randomUniform(min, max) {\n min = min == null ? 0 : +min;\n max = max == null ? 1 : +max;\n if (arguments.length === 1) max = min, min = 0;\n else max -= min;\n return function() {\n return source() * max + min;\n };\n }\n\n randomUniform.source = sourceRandomUniform;\n\n return randomUniform;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\n\nexport default (function sourceRandomNormal(source) {\n function randomNormal(mu, sigma) {\n var x, r;\n mu = mu == null ? 0 : +mu;\n sigma = sigma == null ? 1 : +sigma;\n return function() {\n var y;\n\n // If available, use the second previously-generated uniform random.\n if (x != null) y = x, x = null;\n\n // Otherwise, generate a new x and y.\n else do {\n x = source() * 2 - 1;\n y = source() * 2 - 1;\n r = x * x + y * y;\n } while (!r || r > 1);\n\n return mu + sigma * y * Math.sqrt(-2 * Math.log(r) / r);\n };\n }\n\n randomNormal.source = sourceRandomNormal;\n\n return randomNormal;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\nimport normal from \"./normal\";\n\nexport default (function sourceRandomLogNormal(source) {\n function randomLogNormal() {\n var randomNormal = normal.source(source).apply(this, arguments);\n return function() {\n return Math.exp(randomNormal());\n };\n }\n\n randomLogNormal.source = sourceRandomLogNormal;\n\n return randomLogNormal;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\n\nexport default (function sourceRandomIrwinHall(source) {\n function randomIrwinHall(n) {\n return function() {\n for (var sum = 0, i = 0; i < n; ++i) sum += source();\n return sum;\n };\n }\n\n randomIrwinHall.source = sourceRandomIrwinHall;\n\n return randomIrwinHall;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\nimport irwinHall from \"./irwinHall\";\n\nexport default (function sourceRandomBates(source) {\n function randomBates(n) {\n var randomIrwinHall = irwinHall.source(source)(n);\n return function() {\n return randomIrwinHall() / n;\n };\n }\n\n randomBates.source = sourceRandomBates;\n\n return randomBates;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\n\nexport default (function sourceRandomExponential(source) {\n function randomExponential(lambda) {\n return function() {\n return -Math.log(1 - source()) / lambda;\n };\n }\n\n randomExponential.source = sourceRandomExponential;\n\n return randomExponential;\n})(defaultSource);\n","export 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: this.interpolator(domain); break;\n default: this.interpolator(interpolator).domain(domain); break;\n }\n return this;\n}\n","var array = Array.prototype;\n\nexport var map = array.map;\nexport var slice = array.slice;\n","import {map} from \"d3-collection\";\nimport {slice} from \"./array\";\nimport {initRange} from \"./init\";\n\nexport var implicit = {name: \"implicit\"};\n\nexport default function ordinal() {\n var index = map(),\n domain = [],\n range = [],\n unknown = implicit;\n\n function scale(d) {\n var key = d + \"\", i = index.get(key);\n if (!i) {\n if (unknown !== implicit) return unknown;\n index.set(key, i = domain.push(d));\n }\n return range[(i - 1) % range.length];\n }\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [], index = map();\n var i = -1, n = _.length, d, key;\n while (++i < n) if (!index.has(key = (d = _[i]) + \"\")) index.set(key, domain.push(d));\n return scale;\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = slice.call(_), scale) : range.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return ordinal(domain, range).unknown(unknown);\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n","import {range as sequence} from \"d3-array\";\nimport {initRange} from \"./init\";\nimport ordinal from \"./ordinal\";\n\nexport default function band() {\n var scale = ordinal().unknown(undefined),\n domain = scale.domain,\n ordinalRange = scale.range,\n range = [0, 1],\n step,\n bandwidth,\n round = false,\n paddingInner = 0,\n paddingOuter = 0,\n align = 0.5;\n\n delete scale.unknown;\n\n function rescale() {\n var n = domain().length,\n reverse = range[1] < range[0],\n start = range[reverse - 0],\n stop = range[1 - reverse];\n step = (stop - start) / Math.max(1, n - paddingInner + paddingOuter * 2);\n if (round) step = Math.floor(step);\n start += (stop - start - step * (n - paddingInner)) * align;\n bandwidth = step * (1 - paddingInner);\n if (round) start = Math.round(start), bandwidth = Math.round(bandwidth);\n var values = sequence(n).map(function(i) { return start + step * i; });\n return ordinalRange(reverse ? values.reverse() : values);\n }\n\n scale.domain = function(_) {\n return arguments.length ? (domain(_), rescale()) : domain();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = [+_[0], +_[1]], rescale()) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return range = [+_[0], +_[1]], round = true, rescale();\n };\n\n scale.bandwidth = function() {\n return bandwidth;\n };\n\n scale.step = function() {\n return step;\n };\n\n scale.round = function(_) {\n return arguments.length ? (round = !!_, rescale()) : round;\n };\n\n scale.padding = function(_) {\n return arguments.length ? (paddingInner = Math.min(1, paddingOuter = +_), rescale()) : paddingInner;\n };\n\n scale.paddingInner = function(_) {\n return arguments.length ? (paddingInner = Math.min(1, _), rescale()) : paddingInner;\n };\n\n scale.paddingOuter = function(_) {\n return arguments.length ? (paddingOuter = +_, rescale()) : paddingOuter;\n };\n\n scale.align = function(_) {\n return arguments.length ? (align = Math.max(0, Math.min(1, _)), rescale()) : align;\n };\n\n scale.copy = function() {\n return band(domain(), range)\n .round(round)\n .paddingInner(paddingInner)\n .paddingOuter(paddingOuter)\n .align(align);\n };\n\n return initRange.apply(rescale(), arguments);\n}\n\nfunction pointish(scale) {\n var copy = scale.copy;\n\n scale.padding = scale.paddingOuter;\n delete scale.paddingInner;\n delete scale.paddingOuter;\n\n scale.copy = function() {\n return pointish(copy());\n };\n\n return scale;\n}\n\nexport function point() {\n return pointish(band.apply(null, arguments).paddingInner(1));\n}\n","export default function(x) {\n return +x;\n}\n","import {bisect} from \"d3-array\";\nimport {interpolate as interpolateValue, interpolateNumber, interpolateRound} from \"d3-interpolate\";\nimport {map, slice} from \"./array\";\nimport constant from \"./constant\";\nimport number from \"./number\";\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(domain) {\n var a = domain[0], b = domain[domain.length - 1], 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 piecewise = Math.min(domain.length, range.length) > 2 ? polymap : bimap;\n output = input = null;\n return scale;\n }\n\n function scale(x) {\n return 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 = map.call(_, number), clamp === identity || (clamp = clamper(domain)), rescale()) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = slice.call(_), rescale()) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return range = slice.call(_), interpolate = interpolateRound, rescale();\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = _ ? clamper(domain) : identity, scale) : 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(transform, untransform) {\n return transformer()(transform, untransform);\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import {tickStep} from \"d3-array\";\nimport {format, formatPrefix, formatSpecifier, precisionFixed, precisionPrefix, precisionRound} from \"d3-format\";\n\nexport default function(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, identity} from \"./continuous\";\nimport {initRange} from \"./init\";\nimport tickFormat from \"./tickFormat\";\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 i0 = 0,\n i1 = d.length - 1,\n start = d[i0],\n stop = d[i1],\n step;\n\n if (stop < start) {\n step = start, start = stop, stop = step;\n step = i0, i0 = i1, i1 = step;\n }\n\n step = tickIncrement(start, stop, count);\n\n if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n step = tickIncrement(start, stop, count);\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n step = tickIncrement(start, stop, count);\n }\n\n if (step > 0) {\n d[i0] = Math.floor(start / step) * step;\n d[i1] = Math.ceil(stop / step) * step;\n domain(d);\n } else if (step < 0) {\n d[i0] = Math.ceil(start * step) / step;\n d[i1] = Math.floor(stop * step) / step;\n domain(d);\n }\n\n return scale;\n };\n\n return scale;\n}\n\nexport default function linear() {\n var scale = continuous(identity, identity);\n\n scale.copy = function() {\n return copy(scale, linear());\n };\n\n initRange.apply(scale, arguments);\n\n return linearish(scale);\n}\n","import {map} from \"./array\";\nimport {linearish} from \"./linear\";\nimport number from \"./number\";\n\nexport default function identity(domain) {\n var unknown;\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : x;\n }\n\n scale.invert = scale;\n\n scale.domain = scale.range = function(_) {\n return arguments.length ? (domain = map.call(_, number), scale) : domain.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return identity(domain).unknown(unknown);\n };\n\n domain = arguments.length ? map.call(domain, number) : [0, 1];\n\n return linearish(scale);\n}\n","export default function(domain, interval) {\n domain = domain.slice();\n\n var i0 = 0,\n i1 = domain.length - 1,\n x0 = domain[i0],\n x1 = domain[i1],\n t;\n\n if (x1 < x0) {\n t = i0, i0 = i1, i1 = t;\n t = x0, x0 = x1, x1 = t;\n }\n\n domain[i0] = interval.floor(x0);\n domain[i1] = interval.ceil(x1);\n return domain;\n}\n","import {ticks} from \"d3-array\";\nimport {format} from \"d3-format\";\nimport nice from \"./nice\";\nimport {copy, transformer} from \"./continuous\";\nimport {initRange} from \"./init\";\n\nfunction transformLog(x) {\n return Math.log(x);\n}\n\nfunction transformExp(x) {\n return Math.exp(x);\n}\n\nfunction transformLogn(x) {\n return -Math.log(-x);\n}\n\nfunction transformExpn(x) {\n return -Math.exp(-x);\n}\n\nfunction pow10(x) {\n return isFinite(x) ? +(\"1e\" + x) : x < 0 ? 0 : x;\n}\n\nfunction powp(base) {\n return base === 10 ? pow10\n : base === Math.E ? Math.exp\n : function(x) { return Math.pow(base, x); };\n}\n\nfunction logp(base) {\n return base === Math.E ? Math.log\n : base === 10 && Math.log10\n || base === 2 && Math.log2\n || (base = Math.log(base), function(x) { return Math.log(x) / base; });\n}\n\nfunction reflect(f) {\n return function(x) {\n return -f(-x);\n };\n}\n\nexport function loggish(transform) {\n var scale = transform(transformLog, transformExp),\n domain = scale.domain,\n base = 10,\n logs,\n pows;\n\n function rescale() {\n logs = logp(base), pows = powp(base);\n if (domain()[0] < 0) {\n logs = reflect(logs), pows = reflect(pows);\n transform(transformLogn, transformExpn);\n } else {\n transform(transformLog, transformExp);\n }\n return scale;\n }\n\n scale.base = function(_) {\n return arguments.length ? (base = +_, rescale()) : base;\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain(_), rescale()) : domain();\n };\n\n scale.ticks = function(count) {\n var d = domain(),\n u = d[0],\n v = d[d.length - 1],\n r;\n\n if (r = v < u) i = u, u = v, v = i;\n\n var i = logs(u),\n j = logs(v),\n p,\n k,\n t,\n n = count == null ? 10 : +count,\n z = [];\n\n if (!(base % 1) && j - i < n) {\n i = Math.round(i) - 1, j = Math.round(j) + 1;\n if (u > 0) for (; i < j; ++i) {\n for (k = 1, p = pows(i); k < base; ++k) {\n t = p * k;\n if (t < u) continue;\n if (t > v) break;\n z.push(t);\n }\n } else for (; i < j; ++i) {\n for (k = base - 1, p = pows(i); k >= 1; --k) {\n t = p * k;\n if (t < u) continue;\n if (t > v) break;\n z.push(t);\n }\n }\n } else {\n z = ticks(i, j, Math.min(j - i, n)).map(pows);\n }\n\n return r ? z.reverse() : z;\n };\n\n scale.tickFormat = function(count, specifier) {\n if (specifier == null) specifier = base === 10 ? \".0e\" : \",\";\n if (typeof specifier !== \"function\") specifier = format(specifier);\n if (count === Infinity) return specifier;\n if (count == null) count = 10;\n var k = Math.max(1, base * count / scale.ticks().length); // TODO fast estimate?\n return function(d) {\n var i = d / pows(Math.round(logs(d)));\n if (i * base < base - 0.5) i *= base;\n return i <= k ? specifier(d) : \"\";\n };\n };\n\n scale.nice = function() {\n return domain(nice(domain(), {\n floor: function(x) { return pows(Math.floor(logs(x))); },\n ceil: function(x) { return pows(Math.ceil(logs(x))); }\n }));\n };\n\n return scale;\n}\n\nexport default function log() {\n var scale = loggish(transformer()).domain([1, 10]);\n\n scale.copy = function() {\n return copy(scale, log()).base(scale.base());\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n","import {linearish} from \"./linear\";\nimport {copy, transformer} from \"./continuous\";\nimport {initRange} from \"./init\";\n\nfunction transformSymlog(c) {\n return function(x) {\n return Math.sign(x) * Math.log1p(Math.abs(x / c));\n };\n}\n\nfunction transformSymexp(c) {\n return function(x) {\n return Math.sign(x) * Math.expm1(Math.abs(x)) * c;\n };\n}\n\nexport function symlogish(transform) {\n var c = 1, scale = transform(transformSymlog(c), transformSymexp(c));\n\n scale.constant = function(_) {\n return arguments.length ? transform(transformSymlog(c = +_), transformSymexp(c)) : c;\n };\n\n return linearish(scale);\n}\n\nexport default function symlog() {\n var scale = symlogish(transformer());\n\n scale.copy = function() {\n return copy(scale, symlog()).constant(scale.constant());\n };\n\n return initRange.apply(scale, arguments);\n}\n","import {linearish} from \"./linear\";\nimport {copy, identity, transformer} from \"./continuous\";\nimport {initRange} from \"./init\";\n\nfunction transformPow(exponent) {\n return function(x) {\n return x < 0 ? -Math.pow(-x, exponent) : Math.pow(x, exponent);\n };\n}\n\nfunction transformSqrt(x) {\n return x < 0 ? -Math.sqrt(-x) : Math.sqrt(x);\n}\n\nfunction transformSquare(x) {\n return x < 0 ? -x * x : x * x;\n}\n\nexport function powish(transform) {\n var scale = transform(identity, identity),\n exponent = 1;\n\n function rescale() {\n return exponent === 1 ? transform(identity, identity)\n : exponent === 0.5 ? transform(transformSqrt, transformSquare)\n : transform(transformPow(exponent), transformPow(1 / exponent));\n }\n\n scale.exponent = function(_) {\n return arguments.length ? (exponent = +_, rescale()) : exponent;\n };\n\n return linearish(scale);\n}\n\nexport default function pow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, pow()).exponent(scale.exponent());\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n\nexport function sqrt() {\n return pow.apply(null, arguments).exponent(0.5);\n}\n","import {ascending, bisect, quantile as threshold} from \"d3-array\";\nimport {slice} from \"./array\";\nimport {initRange} from \"./init\";\n\nexport default function quantile() {\n var domain = [],\n range = [],\n thresholds = [],\n unknown;\n\n function rescale() {\n var i = 0, n = Math.max(1, range.length);\n thresholds = new Array(n - 1);\n while (++i < n) thresholds[i - 1] = threshold(domain, i / n);\n return scale;\n }\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : range[bisect(thresholds, x)];\n }\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return i < 0 ? [NaN, NaN] : [\n i > 0 ? thresholds[i - 1] : domain[0],\n i < thresholds.length ? thresholds[i] : domain[domain.length - 1]\n ];\n };\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [];\n for (var i = 0, n = _.length, d; i < n; ++i) if (d = _[i], d != null && !isNaN(d = +d)) domain.push(d);\n domain.sort(ascending);\n return rescale();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = slice.call(_), rescale()) : range.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.quantiles = function() {\n return thresholds.slice();\n };\n\n scale.copy = function() {\n return quantile()\n .domain(domain)\n .range(range)\n .unknown(unknown);\n };\n\n return initRange.apply(scale, arguments);\n}\n","import {bisect} from \"d3-array\";\nimport {slice} from \"./array\";\nimport {linearish} from \"./linear\";\nimport {initRange} from \"./init\";\n\nexport default function quantize() {\n var x0 = 0,\n x1 = 1,\n n = 1,\n domain = [0.5],\n range = [0, 1],\n unknown;\n\n function scale(x) {\n return x <= x ? range[bisect(domain, x, 0, n)] : unknown;\n }\n\n function rescale() {\n var i = -1;\n domain = new Array(n);\n while (++i < n) domain[i] = ((i + 1) * x1 - (i - n) * x0) / (n + 1);\n return scale;\n }\n\n scale.domain = function(_) {\n return arguments.length ? (x0 = +_[0], x1 = +_[1], rescale()) : [x0, x1];\n };\n\n scale.range = function(_) {\n return arguments.length ? (n = (range = slice.call(_)).length - 1, rescale()) : range.slice();\n };\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return i < 0 ? [NaN, NaN]\n : i < 1 ? [x0, domain[0]]\n : i >= n ? [domain[n - 1], x1]\n : [domain[i - 1], domain[i]];\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : scale;\n };\n\n scale.thresholds = function() {\n return domain.slice();\n };\n\n scale.copy = function() {\n return quantize()\n .domain([x0, x1])\n .range(range)\n .unknown(unknown);\n };\n\n return initRange.apply(linearish(scale), arguments);\n}\n","import {bisect} from \"d3-array\";\nimport {slice} from \"./array\";\nimport {initRange} from \"./init\";\n\nexport default function threshold() {\n var domain = [0.5],\n range = [0, 1],\n unknown,\n n = 1;\n\n function scale(x) {\n return x <= x ? range[bisect(domain, x, 0, n)] : unknown;\n }\n\n scale.domain = function(_) {\n return arguments.length ? (domain = slice.call(_), n = Math.min(domain.length, range.length - 1), scale) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = slice.call(_), n = Math.min(domain.length, range.length - 1), scale) : range.slice();\n };\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return [domain[i - 1], domain[i]];\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return threshold()\n .domain(domain)\n .range(range)\n .unknown(unknown);\n };\n\n return initRange.apply(scale, arguments);\n}\n","var t0 = new Date,\n t1 = new Date;\n\nexport default function newInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date;\n }\n\n interval.floor = function(date) {\n return floori(date = new Date(+date)), date;\n };\n\n interval.ceil = function(date) {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = function(date) {\n var d0 = interval(date),\n d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = function(date, step) {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = function(start, stop, step) {\n var range = [], previous;\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n while (previous < start && start < stop);\n return range;\n };\n\n interval.filter = function(test) {\n return newInterval(function(date) {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, function(date, step) {\n if (date >= date) {\n if (step < 0) while (++step <= 0) {\n while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n } else while (--step >= 0) {\n while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n }\n }\n });\n };\n\n if (count) {\n interval.count = function(start, end) {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = function(step) {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? function(d) { return field(d) % step === 0; }\n : function(d) { return interval.count(0, d) % step === 0; });\n };\n }\n\n return interval;\n}\n","import interval from \"./interval.js\";\n\nvar year = interval(function(date) {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setFullYear(date.getFullYear() + step);\n}, function(start, end) {\n return end.getFullYear() - start.getFullYear();\n}, function(date) {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\nyear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport default year;\nexport var years = year.range;\n","import interval from \"./interval.js\";\n\nvar month = interval(function(date) {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setMonth(date.getMonth() + step);\n}, function(start, end) {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, function(date) {\n return date.getMonth();\n});\n\nexport default month;\nexport var months = month.range;\n","export var durationSecond = 1e3;\nexport var durationMinute = 6e4;\nexport var durationHour = 36e5;\nexport var durationDay = 864e5;\nexport var durationWeek = 6048e5;\n","import interval from \"./interval.js\";\nimport {durationMinute, durationWeek} from \"./duration.js\";\n\nfunction weekday(i) {\n return interval(function(date) {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setDate(date.getDate() + step * 7);\n }, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport var sunday = weekday(0);\nexport var monday = weekday(1);\nexport var tuesday = weekday(2);\nexport var wednesday = weekday(3);\nexport var thursday = weekday(4);\nexport var friday = weekday(5);\nexport var saturday = weekday(6);\n\nexport var sundays = sunday.range;\nexport var mondays = monday.range;\nexport var tuesdays = tuesday.range;\nexport var wednesdays = wednesday.range;\nexport var thursdays = thursday.range;\nexport var fridays = friday.range;\nexport var saturdays = saturday.range;\n","import interval from \"./interval.js\";\nimport {durationDay, durationMinute} from \"./duration.js\";\n\nvar day = interval(function(date) {\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setDate(date.getDate() + step);\n}, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay;\n}, function(date) {\n return date.getDate() - 1;\n});\n\nexport default day;\nexport var days = day.range;\n","import interval from \"./interval.js\";\nimport {durationHour, durationMinute, durationSecond} from \"./duration.js\";\n\nvar hour = interval(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getHours();\n});\n\nexport default hour;\nexport var hours = hour.range;\n","import interval from \"./interval.js\";\nimport {durationMinute, durationSecond} from \"./duration.js\";\n\nvar minute = interval(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getMinutes();\n});\n\nexport default minute;\nexport var minutes = minute.range;\n","import interval from \"./interval.js\";\nimport {durationSecond} from \"./duration.js\";\n\nvar second = interval(function(date) {\n date.setTime(date - date.getMilliseconds());\n}, function(date, step) {\n date.setTime(+date + step * durationSecond);\n}, function(start, end) {\n return (end - start) / durationSecond;\n}, function(date) {\n return date.getUTCSeconds();\n});\n\nexport default second;\nexport var seconds = second.range;\n","import interval from \"./interval.js\";\n\nvar millisecond = interval(function() {\n // noop\n}, function(date, step) {\n date.setTime(+date + step);\n}, function(start, end) {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = function(k) {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return interval(function(date) {\n date.setTime(Math.floor(date / k) * k);\n }, function(date, step) {\n date.setTime(+date + step * k);\n }, function(start, end) {\n return (end - start) / k;\n });\n};\n\nexport default millisecond;\nexport var milliseconds = millisecond.range;\n","import interval from \"./interval.js\";\nimport {durationWeek} from \"./duration.js\";\n\nfunction utcWeekday(i) {\n return interval(function(date) {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, function(start, end) {\n return (end - start) / durationWeek;\n });\n}\n\nexport var utcSunday = utcWeekday(0);\nexport var utcMonday = utcWeekday(1);\nexport var utcTuesday = utcWeekday(2);\nexport var utcWednesday = utcWeekday(3);\nexport var utcThursday = utcWeekday(4);\nexport var utcFriday = utcWeekday(5);\nexport var utcSaturday = utcWeekday(6);\n\nexport var utcSundays = utcSunday.range;\nexport var utcMondays = utcMonday.range;\nexport var utcTuesdays = utcTuesday.range;\nexport var utcWednesdays = utcWednesday.range;\nexport var utcThursdays = utcThursday.range;\nexport var utcFridays = utcFriday.range;\nexport var utcSaturdays = utcSaturday.range;\n","import interval from \"./interval.js\";\nimport {durationDay} from \"./duration.js\";\n\nvar utcDay = interval(function(date) {\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step);\n}, function(start, end) {\n return (end - start) / durationDay;\n}, function(date) {\n return date.getUTCDate() - 1;\n});\n\nexport default utcDay;\nexport var utcDays = utcDay.range;\n","import interval from \"./interval.js\";\n\nvar utcYear = interval(function(date) {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, function(start, end) {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, function(date) {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport default utcYear;\nexport var utcYears = utcYear.range;\n","import {\n timeDay,\n timeSunday,\n timeMonday,\n timeThursday,\n timeYear,\n utcDay,\n utcSunday,\n utcMonday,\n utcThursday,\n utcYear\n} from \"d3-time\";\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newDate(y, m, d) {\n return {y: y, m: m, d: d, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"f\": formatMicroseconds,\n \"g\": formatYearISO,\n \"G\": formatFullYearISO,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"q\": formatQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatSeconds,\n \"u\": formatWeekdayNumberMonday,\n \"U\": formatWeekNumberSunday,\n \"V\": formatWeekNumberISO,\n \"w\": formatWeekdayNumberSunday,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"f\": formatUTCMicroseconds,\n \"g\": formatUTCYearISO,\n \"G\": formatUTCFullYearISO,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"q\": formatUTCQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatUTCSeconds,\n \"u\": formatUTCWeekdayNumberMonday,\n \"U\": formatUTCWeekNumberSunday,\n \"V\": formatUTCWeekNumberISO,\n \"w\": formatUTCWeekdayNumberSunday,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"f\": parseMicroseconds,\n \"g\": parseYear,\n \"G\": parseFullYear,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"q\": parseQuarter,\n \"Q\": parseUnixTimestamp,\n \"s\": parseUnixTimestampSeconds,\n \"S\": parseSeconds,\n \"u\": parseWeekdayNumberMonday,\n \"U\": parseWeekNumberSunday,\n \"V\": parseWeekNumberISO,\n \"w\": parseWeekdayNumberSunday,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function(date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, Z) {\n return function(string) {\n var d = newDate(1900, undefined, 1),\n i = parseSpecifier(d, specifier, string += \"\", 0),\n week, day;\n if (i != string.length) return null;\n\n // If a UNIX timestamp is specified, return it.\n if (\"Q\" in d) return new Date(d.Q);\n if (\"s\" in d) return new Date(d.s * 1000 + (\"L\" in d ? d.L : 0));\n\n // If this is utcParse, never use the local timezone.\n if (Z && !(\"Z\" in d)) d.Z = 0;\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // If the month was not specified, inherit from the quarter.\n if (d.m === undefined) d.m = \"q\" in d ? d.q : 0;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"V\" in d) {\n if (d.V < 1 || d.V > 53) return null;\n if (!(\"w\" in d)) d.w = 1;\n if (\"Z\" in d) {\n week = utcDate(newDate(d.y, 0, 1)), day = week.getUTCDay();\n week = day > 4 || day === 0 ? utcMonday.ceil(week) : utcMonday(week);\n week = utcDay.offset(week, (d.V - 1) * 7);\n d.y = week.getUTCFullYear();\n d.m = week.getUTCMonth();\n d.d = week.getUTCDate() + (d.w + 6) % 7;\n } else {\n week = localDate(newDate(d.y, 0, 1)), day = week.getDay();\n week = day > 4 || day === 0 ? timeMonday.ceil(week) : timeMonday(week);\n week = timeDay.offset(week, (d.V - 1) * 7);\n d.y = week.getFullYear();\n d.m = week.getMonth();\n d.d = week.getDate() + (d.w + 6) % 7;\n }\n } else if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n day = \"Z\" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return localDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatQuarter(d) {\n return 1 + ~~(d.getMonth() / 3);\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n function formatUTCQuarter(d) {\n return 1 + ~~(d.getUTCMonth() / 3);\n }\n\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function() { return specifier; };\n return f;\n },\n parse: function(specifier) {\n var p = newParse(specifier += \"\", false);\n p.toString = function() { return specifier; };\n return p;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function() { return specifier; };\n return f;\n },\n utcParse: function(specifier) {\n var p = newParse(specifier += \"\", true);\n p.toString = function() { return specifier; };\n return p;\n }\n };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n numberRe = /^\\s*\\d+/, // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n var map = {}, i = -1, n = names.length;\n while (++i < n) map[names[i].toLowerCase()] = i;\n return map;\n}\n\nfunction parseWeekdayNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekdayNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberISO(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseQuarter(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMicroseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 6));\n return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\n\nfunction parseUnixTimestamp(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseUnixTimestampSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.s = +n[0], i + n[0].length) : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMicroseconds(d, p) {\n return formatMilliseconds(d, p) + \"000\";\n}\n\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekdayNumberMonday(d) {\n var day = d.getDay();\n return day === 0 ? 7 : day;\n}\n\nfunction formatWeekNumberSunday(d, p) {\n return pad(timeSunday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction dISO(d) {\n var day = d.getDay();\n return (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n}\n\nfunction formatWeekNumberISO(d, p) {\n d = dISO(d);\n return pad(timeThursday.count(timeYear(d), d) + (timeYear(d).getDay() === 4), p, 2);\n}\n\nfunction formatWeekdayNumberSunday(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatYearISO(d, p) {\n d = dISO(d);\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatFullYearISO(d, p) {\n var day = d.getDay();\n d = (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMicroseconds(d, p) {\n return formatUTCMilliseconds(d, p) + \"000\";\n}\n\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekdayNumberMonday(d) {\n var dow = d.getUTCDay();\n return dow === 0 ? 7 : dow;\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction UTCdISO(d) {\n var day = d.getUTCDay();\n return (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n}\n\nfunction formatUTCWeekNumberISO(d, p) {\n d = UTCdISO(d);\n return pad(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2);\n}\n\nfunction formatUTCWeekdayNumberSunday(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCYearISO(d, p) {\n d = UTCdISO(d);\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCFullYearISO(d, p) {\n var day = d.getUTCDay();\n d = (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n\nfunction formatUnixTimestamp(d) {\n return +d;\n}\n\nfunction formatUnixTimestampSeconds(d) {\n return Math.floor(+d / 1000);\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}\n","import {bisector, tickStep} from \"d3-array\";\nimport {timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeMillisecond} from \"d3-time\";\nimport {timeFormat} from \"d3-time-format\";\nimport {map} from \"./array\";\nimport continuous, {copy, identity} from \"./continuous\";\nimport {initRange} from \"./init\";\nimport nice from \"./nice\";\n\nvar durationSecond = 1000,\n durationMinute = durationSecond * 60,\n durationHour = durationMinute * 60,\n durationDay = durationHour * 24,\n durationWeek = durationDay * 7,\n durationMonth = durationDay * 30,\n durationYear = durationDay * 365;\n\nfunction date(t) {\n return new Date(t);\n}\n\nfunction number(t) {\n return t instanceof Date ? +t : +new Date(+t);\n}\n\nexport function calendar(year, month, week, day, hour, minute, second, millisecond, format) {\n var scale = continuous(identity, identity),\n invert = scale.invert,\n domain = scale.domain;\n\n var formatMillisecond = format(\".%L\"),\n formatSecond = format(\":%S\"),\n formatMinute = format(\"%I:%M\"),\n formatHour = format(\"%I %p\"),\n formatDay = format(\"%a %d\"),\n formatWeek = format(\"%b %d\"),\n formatMonth = format(\"%B\"),\n formatYear = format(\"%Y\");\n\n var tickIntervals = [\n [second, 1, durationSecond],\n [second, 5, 5 * durationSecond],\n [second, 15, 15 * durationSecond],\n [second, 30, 30 * durationSecond],\n [minute, 1, durationMinute],\n [minute, 5, 5 * durationMinute],\n [minute, 15, 15 * durationMinute],\n [minute, 30, 30 * durationMinute],\n [ hour, 1, durationHour ],\n [ hour, 3, 3 * durationHour ],\n [ hour, 6, 6 * durationHour ],\n [ hour, 12, 12 * durationHour ],\n [ day, 1, durationDay ],\n [ day, 2, 2 * durationDay ],\n [ week, 1, durationWeek ],\n [ month, 1, durationMonth ],\n [ month, 3, 3 * durationMonth ],\n [ year, 1, durationYear ]\n ];\n\n function tickFormat(date) {\n return (second(date) < date ? formatMillisecond\n : minute(date) < date ? formatSecond\n : hour(date) < date ? formatMinute\n : day(date) < date ? formatHour\n : month(date) < date ? (week(date) < date ? formatDay : formatWeek)\n : year(date) < date ? formatMonth\n : formatYear)(date);\n }\n\n function tickInterval(interval, start, stop, step) {\n if (interval == null) interval = 10;\n\n // If a desired tick count is specified, pick a reasonable tick interval\n // based on the extent of the domain and a rough estimate of tick size.\n // Otherwise, assume interval is already a time interval and use it.\n if (typeof interval === \"number\") {\n var target = Math.abs(stop - start) / interval,\n i = bisector(function(i) { return i[2]; }).right(tickIntervals, target);\n if (i === tickIntervals.length) {\n step = tickStep(start / durationYear, stop / durationYear, interval);\n interval = year;\n } else if (i) {\n i = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];\n step = i[1];\n interval = i[0];\n } else {\n step = Math.max(tickStep(start, stop, interval), 1);\n interval = millisecond;\n }\n }\n\n return step == null ? interval : interval.every(step);\n }\n\n scale.invert = function(y) {\n return new Date(invert(y));\n };\n\n scale.domain = function(_) {\n return arguments.length ? domain(map.call(_, number)) : domain().map(date);\n };\n\n scale.ticks = function(interval, step) {\n var d = domain(),\n t0 = d[0],\n t1 = d[d.length - 1],\n r = t1 < t0,\n t;\n if (r) t = t0, t0 = t1, t1 = t;\n t = tickInterval(interval, t0, t1, step);\n t = t ? t.range(t0, t1 + 1) : []; // inclusive stop\n return r ? t.reverse() : t;\n };\n\n scale.tickFormat = function(count, specifier) {\n return specifier == null ? tickFormat : format(specifier);\n };\n\n scale.nice = function(interval, step) {\n var d = domain();\n return (interval = tickInterval(interval, d[0], d[d.length - 1], step))\n ? domain(nice(d, interval))\n : scale;\n };\n\n scale.copy = function() {\n return copy(scale, calendar(year, month, week, day, hour, minute, second, millisecond, format));\n };\n\n return scale;\n}\n\nexport default function() {\n return initRange.apply(calendar(timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeMillisecond, timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]), arguments);\n}\n","import interval from \"./interval.js\";\n\nvar utcMonth = interval(function(date) {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, function(start, end) {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, function(date) {\n return date.getUTCMonth();\n});\n\nexport default utcMonth;\nexport var utcMonths = utcMonth.range;\n","import interval from \"./interval.js\";\nimport {durationHour} from \"./duration.js\";\n\nvar utcHour = interval(function(date) {\n date.setUTCMinutes(0, 0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getUTCHours();\n});\n\nexport default utcHour;\nexport var utcHours = utcHour.range;\n","import interval from \"./interval.js\";\nimport {durationMinute} from \"./duration.js\";\n\nvar utcMinute = interval(function(date) {\n date.setUTCSeconds(0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getUTCMinutes();\n});\n\nexport default utcMinute;\nexport var utcMinutes = utcMinute.range;\n","import {calendar} from \"./time\";\nimport {utcFormat} from \"d3-time-format\";\nimport {utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcMillisecond} from \"d3-time\";\nimport {initRange} from \"./init\";\n\nexport default function() {\n return initRange.apply(calendar(utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcMillisecond, utcFormat).domain([Date.UTC(2000, 0, 1), Date.UTC(2000, 0, 2)]), arguments);\n}\n","import {identity} from \"./continuous\";\nimport {initInterpolator} from \"./init\";\nimport {linearish} from \"./linear\";\nimport {loggish} from \"./log\";\nimport {symlogish} from \"./symlog\";\nimport {powish} from \"./pow\";\n\nfunction transformer() {\n var x0 = 0,\n x1 = 1,\n t0,\n t1,\n k10,\n transform,\n interpolator = identity,\n clamp = false,\n unknown;\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : interpolator(k10 === 0 ? 0.5 : (x = (transform(x) - t0) * k10, clamp ? Math.max(0, Math.min(1, x)) : x));\n }\n\n scale.domain = function(_) {\n return arguments.length ? (t0 = transform(x0 = +_[0]), t1 = transform(x1 = +_[1]), k10 = t0 === t1 ? 0 : 1 / (t1 - t0), scale) : [x0, x1];\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = !!_, scale) : clamp;\n };\n\n scale.interpolator = function(_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t) {\n transform = t, t0 = t(x0), t1 = t(x1), k10 = t0 === t1 ? 0 : 1 / (t1 - t0);\n return scale;\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .interpolator(source.interpolator())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nexport default function sequential() {\n var scale = linearish(transformer()(identity));\n\n scale.copy = function() {\n return copy(scale, sequential());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialLog() {\n var scale = loggish(transformer()).domain([1, 10]);\n\n scale.copy = function() {\n return copy(scale, sequentialLog()).base(scale.base());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialSymlog() {\n var scale = symlogish(transformer());\n\n scale.copy = function() {\n return copy(scale, sequentialSymlog()).constant(scale.constant());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialPow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, sequentialPow()).exponent(scale.exponent());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialSqrt() {\n return sequentialPow.apply(null, arguments).exponent(0.5);\n}\n","import {ascending, bisect} from \"d3-array\";\nimport {identity} from \"./continuous\";\nimport {initInterpolator} from \"./init\";\n\nexport default function sequentialQuantile() {\n var domain = [],\n interpolator = identity;\n\n function scale(x) {\n if (!isNaN(x = +x)) return interpolator((bisect(domain, x) - 1) / (domain.length - 1));\n }\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [];\n for (var i = 0, n = _.length, d; i < n; ++i) if (d = _[i], d != null && !isNaN(d = +d)) domain.push(d);\n domain.sort(ascending);\n return scale;\n };\n\n scale.interpolator = function(_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n scale.copy = function() {\n return sequentialQuantile(interpolator).domain(domain);\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n","import {identity} from \"./continuous\";\nimport {initInterpolator} from \"./init\";\nimport {linearish} from \"./linear\";\nimport {loggish} from \"./log\";\nimport {copy} from \"./sequential\";\nimport {symlogish} from \"./symlog\";\nimport {powish} from \"./pow\";\n\nfunction transformer() {\n var x0 = 0,\n x1 = 0.5,\n x2 = 1,\n t0,\n t1,\n t2,\n k10,\n k21,\n interpolator = identity,\n transform,\n clamp = false,\n unknown;\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : (x = 0.5 + ((x = +transform(x)) - t1) * (x < t1 ? k10 : k21), interpolator(clamp ? Math.max(0, Math.min(1, x)) : x));\n }\n\n scale.domain = function(_) {\n return arguments.length ? (t0 = transform(x0 = +_[0]), t1 = transform(x1 = +_[1]), t2 = transform(x2 = +_[2]), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1), scale) : [x0, x1, x2];\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = !!_, scale) : clamp;\n };\n\n scale.interpolator = function(_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t) {\n transform = t, t0 = t(x0), t1 = t(x1), t2 = t(x2), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1);\n return scale;\n };\n}\n\nexport default function diverging() {\n var scale = linearish(transformer()(identity));\n\n scale.copy = function() {\n return copy(scale, diverging());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingLog() {\n var scale = loggish(transformer()).domain([0.1, 1, 10]);\n\n scale.copy = function() {\n return copy(scale, divergingLog()).base(scale.base());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingSymlog() {\n var scale = symlogish(transformer());\n\n scale.copy = function() {\n return copy(scale, divergingSymlog()).constant(scale.constant());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingPow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, divergingPow()).exponent(scale.exponent());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingSqrt() {\n return divergingPow.apply(null, arguments).exponent(0.5);\n}\n","export default function(specifier) {\n var n = specifier.length / 6 | 0, colors = new Array(n), i = 0;\n while (i < n) colors[i] = \"#\" + specifier.slice(i * 6, ++i * 6);\n return colors;\n}\n","import colors from \"../colors.js\";\n\nexport default colors(\"1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"7fc97fbeaed4fdc086ffff99386cb0f0027fbf5b17666666\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"1b9e77d95f027570b3e7298a66a61ee6ab02a6761d666666\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"fbb4aeb3cde3ccebc5decbe4fed9a6ffffcce5d8bdfddaecf2f2f2\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"b3e2cdfdcdaccbd5e8f4cae4e6f5c9fff2aef1e2cccccccc\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"e41a1c377eb84daf4a984ea3ff7f00ffff33a65628f781bf999999\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"66c2a5fc8d628da0cbe78ac3a6d854ffd92fe5c494b3b3b3\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9bc80bdccebc5ffed6f\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"4e79a7f28e2ce1575976b7b259a14fedc949af7aa1ff9da79c755fbab0ab\");\n","import {interpolateRgbBasis} from \"d3-interpolate\";\n\nexport default function(scheme) {\n return interpolateRgbBasis(scheme[scheme.length - 1]);\n}\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"d8b365f5f5f55ab4ac\",\n \"a6611adfc27d80cdc1018571\",\n \"a6611adfc27df5f5f580cdc1018571\",\n \"8c510ad8b365f6e8c3c7eae55ab4ac01665e\",\n \"8c510ad8b365f6e8c3f5f5f5c7eae55ab4ac01665e\",\n \"8c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e\",\n \"8c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e\",\n \"5430058c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e003c30\",\n \"5430058c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e003c30\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"af8dc3f7f7f77fbf7b\",\n \"7b3294c2a5cfa6dba0008837\",\n \"7b3294c2a5cff7f7f7a6dba0008837\",\n \"762a83af8dc3e7d4e8d9f0d37fbf7b1b7837\",\n \"762a83af8dc3e7d4e8f7f7f7d9f0d37fbf7b1b7837\",\n \"762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b7837\",\n \"762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b7837\",\n \"40004b762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b783700441b\",\n \"40004b762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b783700441b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e9a3c9f7f7f7a1d76a\",\n \"d01c8bf1b6dab8e1864dac26\",\n \"d01c8bf1b6daf7f7f7b8e1864dac26\",\n \"c51b7de9a3c9fde0efe6f5d0a1d76a4d9221\",\n \"c51b7de9a3c9fde0eff7f7f7e6f5d0a1d76a4d9221\",\n \"c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221\",\n \"c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221\",\n \"8e0152c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221276419\",\n \"8e0152c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221276419\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"998ec3f7f7f7f1a340\",\n \"5e3c99b2abd2fdb863e66101\",\n \"5e3c99b2abd2f7f7f7fdb863e66101\",\n \"542788998ec3d8daebfee0b6f1a340b35806\",\n \"542788998ec3d8daebf7f7f7fee0b6f1a340b35806\",\n \"5427888073acb2abd2d8daebfee0b6fdb863e08214b35806\",\n \"5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b35806\",\n \"2d004b5427888073acb2abd2d8daebfee0b6fdb863e08214b358067f3b08\",\n \"2d004b5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b358067f3b08\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"ef8a62f7f7f767a9cf\",\n \"ca0020f4a58292c5de0571b0\",\n \"ca0020f4a582f7f7f792c5de0571b0\",\n \"b2182bef8a62fddbc7d1e5f067a9cf2166ac\",\n \"b2182bef8a62fddbc7f7f7f7d1e5f067a9cf2166ac\",\n \"b2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac\",\n \"b2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac\",\n \"67001fb2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac053061\",\n \"67001fb2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac053061\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"ef8a62ffffff999999\",\n \"ca0020f4a582bababa404040\",\n \"ca0020f4a582ffffffbababa404040\",\n \"b2182bef8a62fddbc7e0e0e09999994d4d4d\",\n \"b2182bef8a62fddbc7ffffffe0e0e09999994d4d4d\",\n \"b2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d\",\n \"b2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d\",\n \"67001fb2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d1a1a1a\",\n \"67001fb2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d1a1a1a\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fc8d59ffffbf91bfdb\",\n \"d7191cfdae61abd9e92c7bb6\",\n \"d7191cfdae61ffffbfabd9e92c7bb6\",\n \"d73027fc8d59fee090e0f3f891bfdb4575b4\",\n \"d73027fc8d59fee090ffffbfe0f3f891bfdb4575b4\",\n \"d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4\",\n \"d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4\",\n \"a50026d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4313695\",\n \"a50026d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4313695\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fc8d59ffffbf91cf60\",\n \"d7191cfdae61a6d96a1a9641\",\n \"d7191cfdae61ffffbfa6d96a1a9641\",\n \"d73027fc8d59fee08bd9ef8b91cf601a9850\",\n \"d73027fc8d59fee08bffffbfd9ef8b91cf601a9850\",\n \"d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850\",\n \"d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850\",\n \"a50026d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850006837\",\n \"a50026d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850006837\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fc8d59ffffbf99d594\",\n \"d7191cfdae61abdda42b83ba\",\n \"d7191cfdae61ffffbfabdda42b83ba\",\n \"d53e4ffc8d59fee08be6f59899d5943288bd\",\n \"d53e4ffc8d59fee08bffffbfe6f59899d5943288bd\",\n \"d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd\",\n \"d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd\",\n \"9e0142d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd5e4fa2\",\n \"9e0142d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd5e4fa2\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e5f5f999d8c92ca25f\",\n \"edf8fbb2e2e266c2a4238b45\",\n \"edf8fbb2e2e266c2a42ca25f006d2c\",\n \"edf8fbccece699d8c966c2a42ca25f006d2c\",\n \"edf8fbccece699d8c966c2a441ae76238b45005824\",\n \"f7fcfde5f5f9ccece699d8c966c2a441ae76238b45005824\",\n \"f7fcfde5f5f9ccece699d8c966c2a441ae76238b45006d2c00441b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e0ecf49ebcda8856a7\",\n \"edf8fbb3cde38c96c688419d\",\n \"edf8fbb3cde38c96c68856a7810f7c\",\n \"edf8fbbfd3e69ebcda8c96c68856a7810f7c\",\n \"edf8fbbfd3e69ebcda8c96c68c6bb188419d6e016b\",\n \"f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d6e016b\",\n \"f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d810f7c4d004b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e0f3dba8ddb543a2ca\",\n \"f0f9e8bae4bc7bccc42b8cbe\",\n \"f0f9e8bae4bc7bccc443a2ca0868ac\",\n \"f0f9e8ccebc5a8ddb57bccc443a2ca0868ac\",\n \"f0f9e8ccebc5a8ddb57bccc44eb3d32b8cbe08589e\",\n \"f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe08589e\",\n \"f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe0868ac084081\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fee8c8fdbb84e34a33\",\n \"fef0d9fdcc8afc8d59d7301f\",\n \"fef0d9fdcc8afc8d59e34a33b30000\",\n \"fef0d9fdd49efdbb84fc8d59e34a33b30000\",\n \"fef0d9fdd49efdbb84fc8d59ef6548d7301f990000\",\n \"fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301f990000\",\n \"fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301fb300007f0000\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"ece2f0a6bddb1c9099\",\n \"f6eff7bdc9e167a9cf02818a\",\n \"f6eff7bdc9e167a9cf1c9099016c59\",\n \"f6eff7d0d1e6a6bddb67a9cf1c9099016c59\",\n \"f6eff7d0d1e6a6bddb67a9cf3690c002818a016450\",\n \"fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016450\",\n \"fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016c59014636\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"ece7f2a6bddb2b8cbe\",\n \"f1eef6bdc9e174a9cf0570b0\",\n \"f1eef6bdc9e174a9cf2b8cbe045a8d\",\n \"f1eef6d0d1e6a6bddb74a9cf2b8cbe045a8d\",\n \"f1eef6d0d1e6a6bddb74a9cf3690c00570b0034e7b\",\n \"fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0034e7b\",\n \"fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0045a8d023858\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e7e1efc994c7dd1c77\",\n \"f1eef6d7b5d8df65b0ce1256\",\n \"f1eef6d7b5d8df65b0dd1c77980043\",\n \"f1eef6d4b9dac994c7df65b0dd1c77980043\",\n \"f1eef6d4b9dac994c7df65b0e7298ace125691003f\",\n \"f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125691003f\",\n \"f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125698004367001f\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fde0ddfa9fb5c51b8a\",\n \"feebe2fbb4b9f768a1ae017e\",\n \"feebe2fbb4b9f768a1c51b8a7a0177\",\n \"feebe2fcc5c0fa9fb5f768a1c51b8a7a0177\",\n \"feebe2fcc5c0fa9fb5f768a1dd3497ae017e7a0177\",\n \"fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a0177\",\n \"fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a017749006a\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"edf8b17fcdbb2c7fb8\",\n \"ffffcca1dab441b6c4225ea8\",\n \"ffffcca1dab441b6c42c7fb8253494\",\n \"ffffccc7e9b47fcdbb41b6c42c7fb8253494\",\n \"ffffccc7e9b47fcdbb41b6c41d91c0225ea80c2c84\",\n \"ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea80c2c84\",\n \"ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea8253494081d58\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"f7fcb9addd8e31a354\",\n \"ffffccc2e69978c679238443\",\n \"ffffccc2e69978c67931a354006837\",\n \"ffffccd9f0a3addd8e78c67931a354006837\",\n \"ffffccd9f0a3addd8e78c67941ab5d238443005a32\",\n \"ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443005a32\",\n \"ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443006837004529\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fff7bcfec44fd95f0e\",\n \"ffffd4fed98efe9929cc4c02\",\n \"ffffd4fed98efe9929d95f0e993404\",\n \"ffffd4fee391fec44ffe9929d95f0e993404\",\n \"ffffd4fee391fec44ffe9929ec7014cc4c028c2d04\",\n \"ffffe5fff7bcfee391fec44ffe9929ec7014cc4c028c2d04\",\n \"ffffe5fff7bcfee391fec44ffe9929ec7014cc4c02993404662506\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"ffeda0feb24cf03b20\",\n \"ffffb2fecc5cfd8d3ce31a1c\",\n \"ffffb2fecc5cfd8d3cf03b20bd0026\",\n \"ffffb2fed976feb24cfd8d3cf03b20bd0026\",\n \"ffffb2fed976feb24cfd8d3cfc4e2ae31a1cb10026\",\n \"ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cb10026\",\n \"ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cbd0026800026\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"deebf79ecae13182bd\",\n \"eff3ffbdd7e76baed62171b5\",\n \"eff3ffbdd7e76baed63182bd08519c\",\n \"eff3ffc6dbef9ecae16baed63182bd08519c\",\n \"eff3ffc6dbef9ecae16baed64292c62171b5084594\",\n \"f7fbffdeebf7c6dbef9ecae16baed64292c62171b5084594\",\n \"f7fbffdeebf7c6dbef9ecae16baed64292c62171b508519c08306b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e5f5e0a1d99b31a354\",\n \"edf8e9bae4b374c476238b45\",\n \"edf8e9bae4b374c47631a354006d2c\",\n \"edf8e9c7e9c0a1d99b74c47631a354006d2c\",\n \"edf8e9c7e9c0a1d99b74c47641ab5d238b45005a32\",\n \"f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45005a32\",\n \"f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45006d2c00441b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"f0f0f0bdbdbd636363\",\n \"f7f7f7cccccc969696525252\",\n \"f7f7f7cccccc969696636363252525\",\n \"f7f7f7d9d9d9bdbdbd969696636363252525\",\n \"f7f7f7d9d9d9bdbdbd969696737373525252252525\",\n \"fffffff0f0f0d9d9d9bdbdbd969696737373525252252525\",\n \"fffffff0f0f0d9d9d9bdbdbd969696737373525252252525000000\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"efedf5bcbddc756bb1\",\n \"f2f0f7cbc9e29e9ac86a51a3\",\n \"f2f0f7cbc9e29e9ac8756bb154278f\",\n \"f2f0f7dadaebbcbddc9e9ac8756bb154278f\",\n \"f2f0f7dadaebbcbddc9e9ac8807dba6a51a34a1486\",\n \"fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a34a1486\",\n \"fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a354278f3f007d\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fee0d2fc9272de2d26\",\n \"fee5d9fcae91fb6a4acb181d\",\n \"fee5d9fcae91fb6a4ade2d26a50f15\",\n \"fee5d9fcbba1fc9272fb6a4ade2d26a50f15\",\n \"fee5d9fcbba1fc9272fb6a4aef3b2ccb181d99000d\",\n \"fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181d99000d\",\n \"fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181da50f1567000d\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fee6cefdae6be6550d\",\n \"feeddefdbe85fd8d3cd94701\",\n \"feeddefdbe85fd8d3ce6550da63603\",\n \"feeddefdd0a2fdae6bfd8d3ce6550da63603\",\n \"feeddefdd0a2fdae6bfd8d3cf16913d948018c2d04\",\n \"fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d948018c2d04\",\n \"fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d94801a636037f2704\"\n).map(colors);\n\nexport default ramp(scheme);\n","export default function(t) {\n t = Math.max(0, Math.min(1, t));\n return \"rgb(\"\n + Math.max(0, Math.min(255, Math.round(-4.54 - t * (35.34 - t * (2381.73 - t * (6402.7 - t * (7024.72 - t * 2710.57))))))) + \", \"\n + Math.max(0, Math.min(255, Math.round(32.49 + t * (170.73 + t * (52.82 - t * (131.46 - t * (176.58 - t * 67.37))))))) + \", \"\n + Math.max(0, Math.min(255, Math.round(81.24 + t * (442.36 - t * (2482.43 - t * (6167.24 - t * (6614.94 - t * 2475.67)))))))\n + \")\";\n}\n","import {cubehelix} from \"d3-color\";\nimport {interpolateCubehelixLong} from \"d3-interpolate\";\n\nexport default interpolateCubehelixLong(cubehelix(300, 0.5, 0.0), cubehelix(-240, 0.5, 1.0));\n","import {cubehelix} from \"d3-color\";\nimport {interpolateCubehelixLong} from \"d3-interpolate\";\n\nexport var warm = interpolateCubehelixLong(cubehelix(-100, 0.75, 0.35), cubehelix(80, 1.50, 0.8));\n\nexport var cool = interpolateCubehelixLong(cubehelix(260, 0.75, 0.35), cubehelix(80, 1.50, 0.8));\n\nvar c = cubehelix();\n\nexport default function(t) {\n if (t < 0 || t > 1) t -= Math.floor(t);\n var ts = Math.abs(t - 0.5);\n c.h = 360 * t - 100;\n c.s = 1.5 - 1.5 * ts;\n c.l = 0.8 - 0.9 * ts;\n return c + \"\";\n}\n","import {rgb} from \"d3-color\";\n\nvar c = rgb(),\n pi_1_3 = Math.PI / 3,\n pi_2_3 = Math.PI * 2 / 3;\n\nexport default function(t) {\n var x;\n t = (0.5 - t) * Math.PI;\n c.r = 255 * (x = Math.sin(t)) * x;\n c.g = 255 * (x = Math.sin(t + pi_1_3)) * x;\n c.b = 255 * (x = Math.sin(t + pi_2_3)) * x;\n return c + \"\";\n}\n","export default function(t) {\n t = Math.max(0, Math.min(1, t));\n return \"rgb(\"\n + Math.max(0, Math.min(255, Math.round(34.61 + t * (1172.33 - t * (10793.56 - t * (33300.12 - t * (38394.49 - t * 14825.05))))))) + \", \"\n + Math.max(0, Math.min(255, Math.round(23.31 + t * (557.33 + t * (1225.33 - t * (3574.96 - t * (1073.77 + t * 707.56))))))) + \", \"\n + Math.max(0, Math.min(255, Math.round(27.2 + t * (3211.1 - t * (15327.97 - t * (27814 - t * (22569.18 - t * 6838.66)))))))\n + \")\";\n}\n","import colors from \"../colors.js\";\n\nfunction ramp(range) {\n var n = range.length;\n return function(t) {\n return range[Math.max(0, Math.min(n - 1, Math.floor(t * n)))];\n };\n}\n\nexport default ramp(colors(\"44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725\"));\n\nexport var magma = ramp(colors(\"00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf\"));\n\nexport var inferno = ramp(colors(\"00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4\"));\n\nexport var plasma = ramp(colors(\"0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d43039e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a45901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a29511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a62098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d04d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5de66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3afba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffdb42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc827fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1f525f0f724f0f921\"));\n","import creator from \"./creator\";\nimport select from \"./select\";\n\nexport default function(name) {\n return select(creator(name).call(document.documentElement));\n}\n","var nextId = 0;\n\nexport default function local() {\n return new Local;\n}\n\nfunction Local() {\n this._ = \"@\" + (++nextId).toString(36);\n}\n\nLocal.prototype = local.prototype = {\n constructor: Local,\n get: function(node) {\n var id = this._;\n while (!(id in node)) if (!(node = node.parentNode)) return;\n return node[id];\n },\n set: function(node, value) {\n return node[this._] = value;\n },\n remove: function(node) {\n return this._ in node && delete node[this._];\n },\n toString: function() {\n return this._;\n }\n};\n","import {Selection, root} from \"./selection/index\";\n\nexport default function(selector) {\n return typeof selector === \"string\"\n ? new Selection([document.querySelectorAll(selector)], [document.documentElement])\n : new Selection([selector == null ? [] : selector], root);\n}\n","import sourceEvent from \"./sourceEvent\";\nimport point from \"./point\";\n\nexport default function(node, touches) {\n if (touches == null) touches = sourceEvent().touches;\n\n for (var i = 0, n = touches ? touches.length : 0, points = new Array(n); i < n; ++i) {\n points[i] = point(node, touches[i]);\n }\n\n return points;\n}\n","export default function(x) {\n return function constant() {\n return x;\n };\n}\n","export var abs = Math.abs;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var max = Math.max;\nexport var min = Math.min;\nexport var sin = Math.sin;\nexport var sqrt = Math.sqrt;\n\nexport var epsilon = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var tau = 2 * pi;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x);\n}\n","import {path} from \"d3-path\";\nimport constant from \"./constant.js\";\nimport {abs, acos, asin, atan2, cos, epsilon, halfPi, max, min, pi, sin, sqrt, tau} from \"./math.js\";\n\nfunction arcInnerRadius(d) {\n return d.innerRadius;\n}\n\nfunction arcOuterRadius(d) {\n return d.outerRadius;\n}\n\nfunction arcStartAngle(d) {\n return d.startAngle;\n}\n\nfunction arcEndAngle(d) {\n return d.endAngle;\n}\n\nfunction arcPadAngle(d) {\n return d && d.padAngle; // Note: optional!\n}\n\nfunction intersect(x0, y0, x1, y1, x2, y2, x3, y3) {\n var x10 = x1 - x0, y10 = y1 - y0,\n x32 = x3 - x2, y32 = y3 - y2,\n t = y32 * x10 - x32 * y10;\n if (t * t < epsilon) return;\n t = (x32 * (y0 - y2) - y32 * (x0 - x2)) / t;\n return [x0 + t * x10, y0 + t * y10];\n}\n\n// Compute perpendicular offset line of length rc.\n// http://mathworld.wolfram.com/Circle-LineIntersection.html\nfunction cornerTangents(x0, y0, x1, y1, r1, rc, cw) {\n var x01 = x0 - x1,\n y01 = y0 - y1,\n lo = (cw ? rc : -rc) / sqrt(x01 * x01 + y01 * y01),\n ox = lo * y01,\n oy = -lo * x01,\n x11 = x0 + ox,\n y11 = y0 + oy,\n x10 = x1 + ox,\n y10 = y1 + oy,\n x00 = (x11 + x10) / 2,\n y00 = (y11 + y10) / 2,\n dx = x10 - x11,\n dy = y10 - y11,\n d2 = dx * dx + dy * dy,\n r = r1 - rc,\n D = x11 * y10 - x10 * y11,\n d = (dy < 0 ? -1 : 1) * sqrt(max(0, r * r * d2 - D * D)),\n cx0 = (D * dy - dx * d) / d2,\n cy0 = (-D * dx - dy * d) / d2,\n cx1 = (D * dy + dx * d) / d2,\n cy1 = (-D * dx + dy * d) / d2,\n dx0 = cx0 - x00,\n dy0 = cy0 - y00,\n dx1 = cx1 - x00,\n dy1 = cy1 - y00;\n\n // Pick the closer of the two intersection points.\n // TODO Is there a faster way to determine which intersection to use?\n if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;\n\n return {\n cx: cx0,\n cy: cy0,\n x01: -ox,\n y01: -oy,\n x11: cx0 * (r1 / r - 1),\n y11: cy0 * (r1 / r - 1)\n };\n}\n\nexport default function() {\n var innerRadius = arcInnerRadius,\n outerRadius = arcOuterRadius,\n cornerRadius = constant(0),\n padRadius = null,\n startAngle = arcStartAngle,\n endAngle = arcEndAngle,\n padAngle = arcPadAngle,\n context = null;\n\n function arc() {\n var buffer,\n r,\n r0 = +innerRadius.apply(this, arguments),\n r1 = +outerRadius.apply(this, arguments),\n a0 = startAngle.apply(this, arguments) - halfPi,\n a1 = endAngle.apply(this, arguments) - halfPi,\n da = abs(a1 - a0),\n cw = a1 > a0;\n\n if (!context) context = buffer = path();\n\n // Ensure that the outer radius is always larger than the inner radius.\n if (r1 < r0) r = r1, r1 = r0, r0 = r;\n\n // Is it a point?\n if (!(r1 > epsilon)) context.moveTo(0, 0);\n\n // Or is it a circle or annulus?\n else if (da > tau - epsilon) {\n context.moveTo(r1 * cos(a0), r1 * sin(a0));\n context.arc(0, 0, r1, a0, a1, !cw);\n if (r0 > epsilon) {\n context.moveTo(r0 * cos(a1), r0 * sin(a1));\n context.arc(0, 0, r0, a1, a0, cw);\n }\n }\n\n // Or is it a circular or annular sector?\n else {\n var a01 = a0,\n a11 = a1,\n a00 = a0,\n a10 = a1,\n da0 = da,\n da1 = da,\n ap = padAngle.apply(this, arguments) / 2,\n rp = (ap > epsilon) && (padRadius ? +padRadius.apply(this, arguments) : sqrt(r0 * r0 + r1 * r1)),\n rc = min(abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments)),\n rc0 = rc,\n rc1 = rc,\n t0,\n t1;\n\n // Apply padding? Note that since r1 ≥ r0, da1 ≥ da0.\n if (rp > epsilon) {\n var p0 = asin(rp / r0 * sin(ap)),\n p1 = asin(rp / r1 * sin(ap));\n if ((da0 -= p0 * 2) > epsilon) p0 *= (cw ? 1 : -1), a00 += p0, a10 -= p0;\n else da0 = 0, a00 = a10 = (a0 + a1) / 2;\n if ((da1 -= p1 * 2) > epsilon) p1 *= (cw ? 1 : -1), a01 += p1, a11 -= p1;\n else da1 = 0, a01 = a11 = (a0 + a1) / 2;\n }\n\n var x01 = r1 * cos(a01),\n y01 = r1 * sin(a01),\n x10 = r0 * cos(a10),\n y10 = r0 * sin(a10);\n\n // Apply rounded corners?\n if (rc > epsilon) {\n var x11 = r1 * cos(a11),\n y11 = r1 * sin(a11),\n x00 = r0 * cos(a00),\n y00 = r0 * sin(a00),\n oc;\n\n // Restrict the corner radius according to the sector angle.\n if (da < pi && (oc = intersect(x01, y01, x00, y00, x11, y11, x10, y10))) {\n var ax = x01 - oc[0],\n ay = y01 - oc[1],\n bx = x11 - oc[0],\n by = y11 - oc[1],\n kc = 1 / sin(acos((ax * bx + ay * by) / (sqrt(ax * ax + ay * ay) * sqrt(bx * bx + by * by))) / 2),\n lc = sqrt(oc[0] * oc[0] + oc[1] * oc[1]);\n rc0 = min(rc, (r0 - lc) / (kc - 1));\n rc1 = min(rc, (r1 - lc) / (kc + 1));\n }\n }\n\n // Is the sector collapsed to a line?\n if (!(da1 > epsilon)) context.moveTo(x01, y01);\n\n // Does the sector’s outer ring have rounded corners?\n else if (rc1 > epsilon) {\n t0 = cornerTangents(x00, y00, x01, y01, r1, rc1, cw);\n t1 = cornerTangents(x11, y11, x10, y10, r1, rc1, cw);\n\n context.moveTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc1 < rc) context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r1, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), !cw);\n context.arc(t1.cx, t1.cy, rc1, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the outer ring just a circular arc?\n else context.moveTo(x01, y01), context.arc(0, 0, r1, a01, a11, !cw);\n\n // Is there no inner ring, and it’s a circular sector?\n // Or perhaps it’s an annular sector collapsed due to padding?\n if (!(r0 > epsilon) || !(da0 > epsilon)) context.lineTo(x10, y10);\n\n // Does the sector’s inner ring (or point) have rounded corners?\n else if (rc0 > epsilon) {\n t0 = cornerTangents(x10, y10, x11, y11, r0, -rc0, cw);\n t1 = cornerTangents(x01, y01, x00, y00, r0, -rc0, cw);\n\n context.lineTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc0 < rc) context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r0, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), cw);\n context.arc(t1.cx, t1.cy, rc0, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the inner ring just a circular arc?\n else context.arc(0, 0, r0, a10, a00, cw);\n }\n\n context.closePath();\n\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n arc.centroid = function() {\n var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2,\n a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - pi / 2;\n return [cos(a) * r, sin(a) * r];\n };\n\n arc.innerRadius = function(_) {\n return arguments.length ? (innerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : innerRadius;\n };\n\n arc.outerRadius = function(_) {\n return arguments.length ? (outerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : outerRadius;\n };\n\n arc.cornerRadius = function(_) {\n return arguments.length ? (cornerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : cornerRadius;\n };\n\n arc.padRadius = function(_) {\n return arguments.length ? (padRadius = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), arc) : padRadius;\n };\n\n arc.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : startAngle;\n };\n\n arc.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : endAngle;\n };\n\n arc.padAngle = function(_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : padAngle;\n };\n\n arc.context = function(_) {\n return arguments.length ? ((context = _ == null ? null : _), arc) : context;\n };\n\n return arc;\n}\n","function Linear(context) {\n this._context = context;\n}\n\nLinear.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // proceed\n default: this._context.lineTo(x, y); break;\n }\n }\n};\n\nexport default function(context) {\n return new Linear(context);\n}\n","export function x(p) {\n return p[0];\n}\n\nexport function y(p) {\n return p[1];\n}\n","import {path} from \"d3-path\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function() {\n var x = pointX,\n y = pointY,\n defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null;\n\n function line(data) {\n var i,\n n = data.length,\n d,\n defined0 = false,\n buffer;\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) output.lineStart();\n else output.lineEnd();\n }\n if (defined0) output.point(+x(d, i, data), +y(d, i, data));\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n line.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), line) : x;\n };\n\n line.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), line) : y;\n };\n\n line.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), line) : defined;\n };\n\n line.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve;\n };\n\n line.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context;\n };\n\n return line;\n}\n","import {path} from \"d3-path\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport line from \"./line.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function() {\n var x0 = pointX,\n x1 = null,\n y0 = constant(0),\n y1 = pointY,\n defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null;\n\n function area(data) {\n var i,\n j,\n k,\n n = data.length,\n d,\n defined0 = false,\n buffer,\n x0z = new Array(n),\n y0z = new Array(n);\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) {\n j = i;\n output.areaStart();\n output.lineStart();\n } else {\n output.lineEnd();\n output.lineStart();\n for (k = i - 1; k >= j; --k) {\n output.point(x0z[k], y0z[k]);\n }\n output.lineEnd();\n output.areaEnd();\n }\n }\n if (defined0) {\n x0z[i] = +x0(d, i, data), y0z[i] = +y0(d, i, data);\n output.point(x1 ? +x1(d, i, data) : x0z[i], y1 ? +y1(d, i, data) : y0z[i]);\n }\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n function arealine() {\n return line().defined(defined).curve(curve).context(context);\n }\n\n area.x = function(_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), x1 = null, area) : x0;\n };\n\n area.x0 = function(_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), area) : x0;\n };\n\n area.x1 = function(_) {\n return arguments.length ? (x1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : x1;\n };\n\n area.y = function(_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), y1 = null, area) : y0;\n };\n\n area.y0 = function(_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), area) : y0;\n };\n\n area.y1 = function(_) {\n return arguments.length ? (y1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : y1;\n };\n\n area.lineX0 =\n area.lineY0 = function() {\n return arealine().x(x0).y(y0);\n };\n\n area.lineY1 = function() {\n return arealine().x(x0).y(y1);\n };\n\n area.lineX1 = function() {\n return arealine().x(x1).y(y0);\n };\n\n area.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), area) : defined;\n };\n\n area.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), area) : curve;\n };\n\n area.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), area) : context;\n };\n\n return area;\n}\n","export default function(a, b) {\n return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n}\n","export default function(d) {\n return d;\n}\n","import constant from \"./constant.js\";\nimport descending from \"./descending.js\";\nimport identity from \"./identity.js\";\nimport {tau} from \"./math.js\";\n\nexport default function() {\n var value = identity,\n sortValues = descending,\n sort = null,\n startAngle = constant(0),\n endAngle = constant(tau),\n padAngle = constant(0);\n\n function pie(data) {\n var i,\n n = data.length,\n j,\n k,\n sum = 0,\n index = new Array(n),\n arcs = new Array(n),\n a0 = +startAngle.apply(this, arguments),\n da = Math.min(tau, Math.max(-tau, endAngle.apply(this, arguments) - a0)),\n a1,\n p = Math.min(Math.abs(da) / n, padAngle.apply(this, arguments)),\n pa = p * (da < 0 ? -1 : 1),\n v;\n\n for (i = 0; i < n; ++i) {\n if ((v = arcs[index[i] = i] = +value(data[i], i, data)) > 0) {\n sum += v;\n }\n }\n\n // Optionally sort the arcs by previously-computed values or by data.\n if (sortValues != null) index.sort(function(i, j) { return sortValues(arcs[i], arcs[j]); });\n else if (sort != null) index.sort(function(i, j) { return sort(data[i], data[j]); });\n\n // Compute the arcs! They are stored in the original data's order.\n for (i = 0, k = sum ? (da - n * pa) / sum : 0; i < n; ++i, a0 = a1) {\n j = index[i], v = arcs[j], a1 = a0 + (v > 0 ? v * k : 0) + pa, arcs[j] = {\n data: data[j],\n index: i,\n value: v,\n startAngle: a0,\n endAngle: a1,\n padAngle: p\n };\n }\n\n return arcs;\n }\n\n pie.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(+_), pie) : value;\n };\n\n pie.sortValues = function(_) {\n return arguments.length ? (sortValues = _, sort = null, pie) : sortValues;\n };\n\n pie.sort = function(_) {\n return arguments.length ? (sort = _, sortValues = null, pie) : sort;\n };\n\n pie.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : startAngle;\n };\n\n pie.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : endAngle;\n };\n\n pie.padAngle = function(_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : padAngle;\n };\n\n return pie;\n}\n","import curveLinear from \"./linear.js\";\n\nexport var curveRadialLinear = curveRadial(curveLinear);\n\nfunction Radial(curve) {\n this._curve = curve;\n}\n\nRadial.prototype = {\n areaStart: function() {\n this._curve.areaStart();\n },\n areaEnd: function() {\n this._curve.areaEnd();\n },\n lineStart: function() {\n this._curve.lineStart();\n },\n lineEnd: function() {\n this._curve.lineEnd();\n },\n point: function(a, r) {\n this._curve.point(r * Math.sin(a), r * -Math.cos(a));\n }\n};\n\nexport default function curveRadial(curve) {\n\n function radial(context) {\n return new Radial(curve(context));\n }\n\n radial._curve = curve;\n\n return radial;\n}\n","import curveRadial, {curveRadialLinear} from \"./curve/radial.js\";\nimport line from \"./line.js\";\n\nexport function lineRadial(l) {\n var c = l.curve;\n\n l.angle = l.x, delete l.x;\n l.radius = l.y, delete l.y;\n\n l.curve = function(_) {\n return arguments.length ? c(curveRadial(_)) : c()._curve;\n };\n\n return l;\n}\n\nexport default function() {\n return lineRadial(line().curve(curveRadialLinear));\n}\n","import curveRadial, {curveRadialLinear} from \"./curve/radial.js\";\nimport area from \"./area.js\";\nimport {lineRadial} from \"./lineRadial.js\";\n\nexport default function() {\n var a = area().curve(curveRadialLinear),\n c = a.curve,\n x0 = a.lineX0,\n x1 = a.lineX1,\n y0 = a.lineY0,\n y1 = a.lineY1;\n\n a.angle = a.x, delete a.x;\n a.startAngle = a.x0, delete a.x0;\n a.endAngle = a.x1, delete a.x1;\n a.radius = a.y, delete a.y;\n a.innerRadius = a.y0, delete a.y0;\n a.outerRadius = a.y1, delete a.y1;\n a.lineStartAngle = function() { return lineRadial(x0()); }, delete a.lineX0;\n a.lineEndAngle = function() { return lineRadial(x1()); }, delete a.lineX1;\n a.lineInnerRadius = function() { return lineRadial(y0()); }, delete a.lineY0;\n a.lineOuterRadius = function() { return lineRadial(y1()); }, delete a.lineY1;\n\n a.curve = function(_) {\n return arguments.length ? c(curveRadial(_)) : c()._curve;\n };\n\n return a;\n}\n","export default function(x, y) {\n return [(y = +y) * Math.cos(x -= Math.PI / 2), y * Math.sin(x)];\n}\n","export var slice = Array.prototype.slice;\n","import {path} from \"d3-path\";\nimport {slice} from \"../array.js\";\nimport constant from \"../constant.js\";\nimport {x as pointX, y as pointY} from \"../point.js\";\nimport pointRadial from \"../pointRadial.js\";\n\nfunction linkSource(d) {\n return d.source;\n}\n\nfunction linkTarget(d) {\n return d.target;\n}\n\nfunction link(curve) {\n var source = linkSource,\n target = linkTarget,\n x = pointX,\n y = pointY,\n context = null;\n\n function link() {\n var buffer, argv = slice.call(arguments), s = source.apply(this, argv), t = target.apply(this, argv);\n if (!context) context = buffer = path();\n curve(context, +x.apply(this, (argv[0] = s, argv)), +y.apply(this, argv), +x.apply(this, (argv[0] = t, argv)), +y.apply(this, argv));\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n link.source = function(_) {\n return arguments.length ? (source = _, link) : source;\n };\n\n link.target = function(_) {\n return arguments.length ? (target = _, link) : target;\n };\n\n link.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), link) : x;\n };\n\n link.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), link) : y;\n };\n\n link.context = function(_) {\n return arguments.length ? ((context = _ == null ? null : _), link) : context;\n };\n\n return link;\n}\n\nfunction curveHorizontal(context, x0, y0, x1, y1) {\n context.moveTo(x0, y0);\n context.bezierCurveTo(x0 = (x0 + x1) / 2, y0, x0, y1, x1, y1);\n}\n\nfunction curveVertical(context, x0, y0, x1, y1) {\n context.moveTo(x0, y0);\n context.bezierCurveTo(x0, y0 = (y0 + y1) / 2, x1, y0, x1, y1);\n}\n\nfunction curveRadial(context, x0, y0, x1, y1) {\n var p0 = pointRadial(x0, y0),\n p1 = pointRadial(x0, y0 = (y0 + y1) / 2),\n p2 = pointRadial(x1, y0),\n p3 = pointRadial(x1, y1);\n context.moveTo(p0[0], p0[1]);\n context.bezierCurveTo(p1[0], p1[1], p2[0], p2[1], p3[0], p3[1]);\n}\n\nexport function linkHorizontal() {\n return link(curveHorizontal);\n}\n\nexport function linkVertical() {\n return link(curveVertical);\n}\n\nexport function linkRadial() {\n var l = link(curveRadial);\n l.angle = l.x, delete l.x;\n l.radius = l.y, delete l.y;\n return l;\n}\n","import {pi, tau} from \"../math.js\";\n\nexport default {\n draw: function(context, size) {\n var r = Math.sqrt(size / pi);\n context.moveTo(r, 0);\n context.arc(0, 0, r, 0, tau);\n }\n};\n","export default {\n draw: function(context, size) {\n var r = Math.sqrt(size / 5) / 2;\n context.moveTo(-3 * r, -r);\n context.lineTo(-r, -r);\n context.lineTo(-r, -3 * r);\n context.lineTo(r, -3 * r);\n context.lineTo(r, -r);\n context.lineTo(3 * r, -r);\n context.lineTo(3 * r, r);\n context.lineTo(r, r);\n context.lineTo(r, 3 * r);\n context.lineTo(-r, 3 * r);\n context.lineTo(-r, r);\n context.lineTo(-3 * r, r);\n context.closePath();\n }\n};\n","var tan30 = Math.sqrt(1 / 3),\n tan30_2 = tan30 * 2;\n\nexport default {\n draw: function(context, size) {\n var y = Math.sqrt(size / tan30_2),\n x = y * tan30;\n context.moveTo(0, -y);\n context.lineTo(x, 0);\n context.lineTo(0, y);\n context.lineTo(-x, 0);\n context.closePath();\n }\n};\n","import {pi, tau} from \"../math.js\";\n\nvar ka = 0.89081309152928522810,\n kr = Math.sin(pi / 10) / Math.sin(7 * pi / 10),\n kx = Math.sin(tau / 10) * kr,\n ky = -Math.cos(tau / 10) * kr;\n\nexport default {\n draw: function(context, size) {\n var r = Math.sqrt(size * ka),\n x = kx * r,\n y = ky * r;\n context.moveTo(0, -r);\n context.lineTo(x, y);\n for (var i = 1; i < 5; ++i) {\n var a = tau * i / 5,\n c = Math.cos(a),\n s = Math.sin(a);\n context.lineTo(s * r, -c * r);\n context.lineTo(c * x - s * y, s * x + c * y);\n }\n context.closePath();\n }\n};\n","export default {\n draw: function(context, size) {\n var w = Math.sqrt(size),\n x = -w / 2;\n context.rect(x, x, w, w);\n }\n};\n","var sqrt3 = Math.sqrt(3);\n\nexport default {\n draw: function(context, size) {\n var y = -Math.sqrt(size / (sqrt3 * 3));\n context.moveTo(0, y * 2);\n context.lineTo(-sqrt3 * y, -y);\n context.lineTo(sqrt3 * y, -y);\n context.closePath();\n }\n};\n","var c = -0.5,\n s = Math.sqrt(3) / 2,\n k = 1 / Math.sqrt(12),\n a = (k / 2 + 1) * 3;\n\nexport default {\n draw: function(context, size) {\n var r = Math.sqrt(size / a),\n x0 = r / 2,\n y0 = r * k,\n x1 = x0,\n y1 = r * k + r,\n x2 = -x1,\n y2 = y1;\n context.moveTo(x0, y0);\n context.lineTo(x1, y1);\n context.lineTo(x2, y2);\n context.lineTo(c * x0 - s * y0, s * x0 + c * y0);\n context.lineTo(c * x1 - s * y1, s * x1 + c * y1);\n context.lineTo(c * x2 - s * y2, s * x2 + c * y2);\n context.lineTo(c * x0 + s * y0, c * y0 - s * x0);\n context.lineTo(c * x1 + s * y1, c * y1 - s * x1);\n context.lineTo(c * x2 + s * y2, c * y2 - s * x2);\n context.closePath();\n }\n};\n","import {path} from \"d3-path\";\nimport circle from \"./symbol/circle.js\";\nimport cross from \"./symbol/cross.js\";\nimport diamond from \"./symbol/diamond.js\";\nimport star from \"./symbol/star.js\";\nimport square from \"./symbol/square.js\";\nimport triangle from \"./symbol/triangle.js\";\nimport wye from \"./symbol/wye.js\";\nimport constant from \"./constant.js\";\n\nexport var symbols = [\n circle,\n cross,\n diamond,\n square,\n star,\n triangle,\n wye\n];\n\nexport default function() {\n var type = constant(circle),\n size = constant(64),\n context = null;\n\n function symbol() {\n var buffer;\n if (!context) context = buffer = path();\n type.apply(this, arguments).draw(context, +size.apply(this, arguments));\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n symbol.type = function(_) {\n return arguments.length ? (type = typeof _ === \"function\" ? _ : constant(_), symbol) : type;\n };\n\n symbol.size = function(_) {\n return arguments.length ? (size = typeof _ === \"function\" ? _ : constant(+_), symbol) : size;\n };\n\n symbol.context = function(_) {\n return arguments.length ? (context = _ == null ? null : _, symbol) : context;\n };\n\n return symbol;\n}\n","export default function() {}\n","export function point(that, x, y) {\n that._context.bezierCurveTo(\n (2 * that._x0 + that._x1) / 3,\n (2 * that._y0 + that._y1) / 3,\n (that._x0 + 2 * that._x1) / 3,\n (that._y0 + 2 * that._y1) / 3,\n (that._x0 + 4 * that._x1 + x) / 6,\n (that._y0 + 4 * that._y1 + y) / 6\n );\n}\n\nexport function Basis(context) {\n this._context = context;\n}\n\nBasis.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 3: point(this, this._x1, this._y1); // proceed\n case 2: this._context.lineTo(this._x1, this._y1); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._context.lineTo((5 * this._x0 + this._x1) / 6, (5 * this._y0 + this._y1) / 6); // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new Basis(context);\n}\n","import noop from \"../noop.js\";\nimport {point} from \"./basis.js\";\n\nfunction BasisClosed(context) {\n this._context = context;\n}\n\nBasisClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x2, this._y2);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.moveTo((this._x2 + 2 * this._x3) / 3, (this._y2 + 2 * this._y3) / 3);\n this._context.lineTo((this._x3 + 2 * this._x2) / 3, (this._y3 + 2 * this._y2) / 3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x2, this._y2);\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._x2 = x, this._y2 = y; break;\n case 1: this._point = 2; this._x3 = x, this._y3 = y; break;\n case 2: this._point = 3; this._x4 = x, this._y4 = y; this._context.moveTo((this._x0 + 4 * this._x1 + x) / 6, (this._y0 + 4 * this._y1 + y) / 6); break;\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new BasisClosed(context);\n}\n","import {point} from \"./basis.js\";\n\nfunction BasisOpen(context) {\n this._context = context;\n}\n\nBasisOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; var x0 = (this._x0 + 4 * this._x1 + x) / 6, y0 = (this._y0 + 4 * this._y1 + y) / 6; this._line ? this._context.lineTo(x0, y0) : this._context.moveTo(x0, y0); break;\n case 3: this._point = 4; // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new BasisOpen(context);\n}\n","import {Basis} from \"./basis.js\";\n\nfunction Bundle(context, beta) {\n this._basis = new Basis(context);\n this._beta = beta;\n}\n\nBundle.prototype = {\n lineStart: function() {\n this._x = [];\n this._y = [];\n this._basis.lineStart();\n },\n lineEnd: function() {\n var x = this._x,\n y = this._y,\n j = x.length - 1;\n\n if (j > 0) {\n var x0 = x[0],\n y0 = y[0],\n dx = x[j] - x0,\n dy = y[j] - y0,\n i = -1,\n t;\n\n while (++i <= j) {\n t = i / j;\n this._basis.point(\n this._beta * x[i] + (1 - this._beta) * (x0 + t * dx),\n this._beta * y[i] + (1 - this._beta) * (y0 + t * dy)\n );\n }\n }\n\n this._x = this._y = null;\n this._basis.lineEnd();\n },\n point: function(x, y) {\n this._x.push(+x);\n this._y.push(+y);\n }\n};\n\nexport default (function custom(beta) {\n\n function bundle(context) {\n return beta === 1 ? new Basis(context) : new Bundle(context, beta);\n }\n\n bundle.beta = function(beta) {\n return custom(+beta);\n };\n\n return bundle;\n})(0.85);\n","export function point(that, x, y) {\n that._context.bezierCurveTo(\n that._x1 + that._k * (that._x2 - that._x0),\n that._y1 + that._k * (that._y2 - that._y0),\n that._x2 + that._k * (that._x1 - x),\n that._y2 + that._k * (that._y1 - y),\n that._x2,\n that._y2\n );\n}\n\nexport function Cardinal(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinal.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x2, this._y2); break;\n case 3: point(this, this._x1, this._y1); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; this._x1 = x, this._y1 = y; break;\n case 2: this._point = 3; // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new Cardinal(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n","import noop from \"../noop.js\";\nimport {point} from \"./cardinal.js\";\n\nexport function CardinalClosed(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinalClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.lineTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n this.point(this._x5, this._y5);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._x3 = x, this._y3 = y; break;\n case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break;\n case 2: this._point = 3; this._x5 = x, this._y5 = y; break;\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new CardinalClosed(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n","import {point} from \"./cardinal.js\";\n\nexport function CardinalOpen(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinalOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break;\n case 3: this._point = 4; // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new CardinalOpen(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n","import {epsilon} from \"../math.js\";\nimport {Cardinal} from \"./cardinal.js\";\n\nexport function point(that, x, y) {\n var x1 = that._x1,\n y1 = that._y1,\n x2 = that._x2,\n y2 = that._y2;\n\n if (that._l01_a > epsilon) {\n var a = 2 * that._l01_2a + 3 * that._l01_a * that._l12_a + that._l12_2a,\n n = 3 * that._l01_a * (that._l01_a + that._l12_a);\n x1 = (x1 * a - that._x0 * that._l12_2a + that._x2 * that._l01_2a) / n;\n y1 = (y1 * a - that._y0 * that._l12_2a + that._y2 * that._l01_2a) / n;\n }\n\n if (that._l23_a > epsilon) {\n var b = 2 * that._l23_2a + 3 * that._l23_a * that._l12_a + that._l12_2a,\n m = 3 * that._l23_a * (that._l23_a + that._l12_a);\n x2 = (x2 * b + that._x1 * that._l23_2a - x * that._l12_2a) / m;\n y2 = (y2 * b + that._y1 * that._l23_2a - y * that._l12_2a) / m;\n }\n\n that._context.bezierCurveTo(x1, y1, x2, y2, that._x2, that._y2);\n}\n\nfunction CatmullRom(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRom.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x2, this._y2); break;\n case 3: this.point(this._x2, this._y2); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; // proceed\n default: point(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRom(context, alpha) : new Cardinal(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n})(0.5);\n","import {CardinalClosed} from \"./cardinalClosed.js\";\nimport noop from \"../noop.js\";\nimport {point} from \"./catmullRom.js\";\n\nfunction CatmullRomClosed(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRomClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.lineTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n this.point(this._x5, this._y5);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; this._x3 = x, this._y3 = y; break;\n case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break;\n case 2: this._point = 3; this._x5 = x, this._y5 = y; break;\n default: point(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRomClosed(context, alpha) : new CardinalClosed(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n})(0.5);\n","import {CardinalOpen} from \"./cardinalOpen.js\";\nimport {point} from \"./catmullRom.js\";\n\nfunction CatmullRomOpen(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRomOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break;\n case 3: this._point = 4; // proceed\n default: point(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRomOpen(context, alpha) : new CardinalOpen(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n})(0.5);\n","import noop from \"../noop.js\";\n\nfunction LinearClosed(context) {\n this._context = context;\n}\n\nLinearClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._point) this._context.closePath();\n },\n point: function(x, y) {\n x = +x, y = +y;\n if (this._point) this._context.lineTo(x, y);\n else this._point = 1, this._context.moveTo(x, y);\n }\n};\n\nexport default function(context) {\n return new LinearClosed(context);\n}\n","function sign(x) {\n return x < 0 ? -1 : 1;\n}\n\n// Calculate the slopes of the tangents (Hermite-type interpolation) based on\n// the following paper: Steffen, M. 1990. A Simple Method for Monotonic\n// Interpolation in One Dimension. Astronomy and Astrophysics, Vol. 239, NO.\n// NOV(II), P. 443, 1990.\nfunction slope3(that, x2, y2) {\n var h0 = that._x1 - that._x0,\n h1 = x2 - that._x1,\n s0 = (that._y1 - that._y0) / (h0 || h1 < 0 && -0),\n s1 = (y2 - that._y1) / (h1 || h0 < 0 && -0),\n p = (s0 * h1 + s1 * h0) / (h0 + h1);\n return (sign(s0) + sign(s1)) * Math.min(Math.abs(s0), Math.abs(s1), 0.5 * Math.abs(p)) || 0;\n}\n\n// Calculate a one-sided slope.\nfunction slope2(that, t) {\n var h = that._x1 - that._x0;\n return h ? (3 * (that._y1 - that._y0) / h - t) / 2 : t;\n}\n\n// According to https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Representations\n// \"you can express cubic Hermite interpolation in terms of cubic Bézier curves\n// with respect to the four values p0, p0 + m0 / 3, p1 - m1 / 3, p1\".\nfunction point(that, t0, t1) {\n var x0 = that._x0,\n y0 = that._y0,\n x1 = that._x1,\n y1 = that._y1,\n dx = (x1 - x0) / 3;\n that._context.bezierCurveTo(x0 + dx, y0 + dx * t0, x1 - dx, y1 - dx * t1, x1, y1);\n}\n\nfunction MonotoneX(context) {\n this._context = context;\n}\n\nMonotoneX.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 =\n this._t0 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x1, this._y1); break;\n case 3: point(this, this._t0, slope2(this, this._t0)); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n var t1 = NaN;\n\n x = +x, y = +y;\n if (x === this._x1 && y === this._y1) return; // Ignore coincident points.\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; point(this, slope2(this, t1 = slope3(this, x, y)), t1); break;\n default: point(this, this._t0, t1 = slope3(this, x, y)); break;\n }\n\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n this._t0 = t1;\n }\n}\n\nfunction MonotoneY(context) {\n this._context = new ReflectContext(context);\n}\n\n(MonotoneY.prototype = Object.create(MonotoneX.prototype)).point = function(x, y) {\n MonotoneX.prototype.point.call(this, y, x);\n};\n\nfunction ReflectContext(context) {\n this._context = context;\n}\n\nReflectContext.prototype = {\n moveTo: function(x, y) { this._context.moveTo(y, x); },\n closePath: function() { this._context.closePath(); },\n lineTo: function(x, y) { this._context.lineTo(y, x); },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) { this._context.bezierCurveTo(y1, x1, y2, x2, y, x); }\n};\n\nexport function monotoneX(context) {\n return new MonotoneX(context);\n}\n\nexport function monotoneY(context) {\n return new MonotoneY(context);\n}\n","function Natural(context) {\n this._context = context;\n}\n\nNatural.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x = [];\n this._y = [];\n },\n lineEnd: function() {\n var x = this._x,\n y = this._y,\n n = x.length;\n\n if (n) {\n this._line ? this._context.lineTo(x[0], y[0]) : this._context.moveTo(x[0], y[0]);\n if (n === 2) {\n this._context.lineTo(x[1], y[1]);\n } else {\n var px = controlPoints(x),\n py = controlPoints(y);\n for (var i0 = 0, i1 = 1; i1 < n; ++i0, ++i1) {\n this._context.bezierCurveTo(px[0][i0], py[0][i0], px[1][i0], py[1][i0], x[i1], y[i1]);\n }\n }\n }\n\n if (this._line || (this._line !== 0 && n === 1)) this._context.closePath();\n this._line = 1 - this._line;\n this._x = this._y = null;\n },\n point: function(x, y) {\n this._x.push(+x);\n this._y.push(+y);\n }\n};\n\n// See https://www.particleincell.com/2012/bezier-splines/ for derivation.\nfunction controlPoints(x) {\n var i,\n n = x.length - 1,\n m,\n a = new Array(n),\n b = new Array(n),\n r = new Array(n);\n a[0] = 0, b[0] = 2, r[0] = x[0] + 2 * x[1];\n for (i = 1; i < n - 1; ++i) a[i] = 1, b[i] = 4, r[i] = 4 * x[i] + 2 * x[i + 1];\n a[n - 1] = 2, b[n - 1] = 7, r[n - 1] = 8 * x[n - 1] + x[n];\n for (i = 1; i < n; ++i) m = a[i] / b[i - 1], b[i] -= m, r[i] -= m * r[i - 1];\n a[n - 1] = r[n - 1] / b[n - 1];\n for (i = n - 2; i >= 0; --i) a[i] = (r[i] - a[i + 1]) / b[i];\n b[n - 1] = (x[n] + a[n - 1]) / 2;\n for (i = 0; i < n - 1; ++i) b[i] = 2 * x[i + 1] - a[i + 1];\n return [a, b];\n}\n\nexport default function(context) {\n return new Natural(context);\n}\n","function Step(context, t) {\n this._context = context;\n this._t = t;\n}\n\nStep.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x = this._y = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (0 < this._t && this._t < 1 && this._point === 2) this._context.lineTo(this._x, this._y);\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n if (this._line >= 0) this._t = 1 - this._t, this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // proceed\n default: {\n if (this._t <= 0) {\n this._context.lineTo(this._x, y);\n this._context.lineTo(x, y);\n } else {\n var x1 = this._x * (1 - this._t) + x * this._t;\n this._context.lineTo(x1, this._y);\n this._context.lineTo(x1, y);\n }\n break;\n }\n }\n this._x = x, this._y = y;\n }\n};\n\nexport default function(context) {\n return new Step(context, 0.5);\n}\n\nexport function stepBefore(context) {\n return new Step(context, 0);\n}\n\nexport function stepAfter(context) {\n return new Step(context, 1);\n}\n","export default function(series, order) {\n if (!((n = series.length) > 1)) return;\n for (var i = 1, j, s0, s1 = series[order[0]], n, m = s1.length; i < n; ++i) {\n s0 = s1, s1 = series[order[i]];\n for (j = 0; j < m; ++j) {\n s1[j][1] += s1[j][0] = isNaN(s0[j][1]) ? s0[j][0] : s0[j][1];\n }\n }\n}\n","export default function(series) {\n var n = series.length, o = new Array(n);\n while (--n >= 0) o[n] = n;\n return o;\n}\n","import {slice} from \"./array.js\";\nimport constant from \"./constant.js\";\nimport offsetNone from \"./offset/none.js\";\nimport orderNone from \"./order/none.js\";\n\nfunction stackValue(d, key) {\n return d[key];\n}\n\nexport default function() {\n var keys = constant([]),\n order = orderNone,\n offset = offsetNone,\n value = stackValue;\n\n function stack(data) {\n var kz = keys.apply(this, arguments),\n i,\n m = data.length,\n n = kz.length,\n sz = new Array(n),\n oz;\n\n for (i = 0; i < n; ++i) {\n for (var ki = kz[i], si = sz[i] = new Array(m), j = 0, sij; j < m; ++j) {\n si[j] = sij = [0, +value(data[j], ki, j, data)];\n sij.data = data[j];\n }\n si.key = ki;\n }\n\n for (i = 0, oz = order(sz); i < n; ++i) {\n sz[oz[i]].index = i;\n }\n\n offset(sz, oz);\n return sz;\n }\n\n stack.keys = function(_) {\n return arguments.length ? (keys = typeof _ === \"function\" ? _ : constant(slice.call(_)), stack) : keys;\n };\n\n stack.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(+_), stack) : value;\n };\n\n stack.order = function(_) {\n return arguments.length ? (order = _ == null ? orderNone : typeof _ === \"function\" ? _ : constant(slice.call(_)), stack) : order;\n };\n\n stack.offset = function(_) {\n return arguments.length ? (offset = _ == null ? offsetNone : _, stack) : offset;\n };\n\n return stack;\n}\n","import none from \"./none.js\";\n\nexport default function(series, order) {\n if (!((n = series.length) > 0)) return;\n for (var i, n, j = 0, m = series[0].length, y; j < m; ++j) {\n for (y = i = 0; i < n; ++i) y += series[i][j][1] || 0;\n if (y) for (i = 0; i < n; ++i) series[i][j][1] /= y;\n }\n none(series, order);\n}\n","export default function(series, order) {\n if (!((n = series.length) > 0)) return;\n for (var i, j = 0, d, dy, yp, yn, n, m = series[order[0]].length; j < m; ++j) {\n for (yp = yn = 0, i = 0; i < n; ++i) {\n if ((dy = (d = series[order[i]][j])[1] - d[0]) > 0) {\n d[0] = yp, d[1] = yp += dy;\n } else if (dy < 0) {\n d[1] = yn, d[0] = yn += dy;\n } else {\n d[0] = 0, d[1] = dy;\n }\n }\n }\n}\n","import none from \"./none.js\";\n\nexport default function(series, order) {\n if (!((n = series.length) > 0)) return;\n for (var j = 0, s0 = series[order[0]], n, m = s0.length; j < m; ++j) {\n for (var i = 0, y = 0; i < n; ++i) y += series[i][j][1] || 0;\n s0[j][1] += s0[j][0] = -y / 2;\n }\n none(series, order);\n}\n","import none from \"./none.js\";\n\nexport default function(series, order) {\n if (!((n = series.length) > 0) || !((m = (s0 = series[order[0]]).length) > 0)) return;\n for (var y = 0, j = 1, s0, m, n; j < m; ++j) {\n for (var i = 0, s1 = 0, s2 = 0; i < n; ++i) {\n var si = series[order[i]],\n sij0 = si[j][1] || 0,\n sij1 = si[j - 1][1] || 0,\n s3 = (sij0 - sij1) / 2;\n for (var k = 0; k < i; ++k) {\n var sk = series[order[k]],\n skj0 = sk[j][1] || 0,\n skj1 = sk[j - 1][1] || 0;\n s3 += skj0 - skj1;\n }\n s1 += sij0, s2 += s3 * sij0;\n }\n s0[j - 1][1] += s0[j - 1][0] = y;\n if (s1) y -= s2 / s1;\n }\n s0[j - 1][1] += s0[j - 1][0] = y;\n none(series, order);\n}\n","import none from \"./none.js\";\n\nexport default function(series) {\n var peaks = series.map(peak);\n return none(series).sort(function(a, b) { return peaks[a] - peaks[b]; });\n}\n\nfunction peak(series) {\n var i = -1, j = 0, n = series.length, vi, vj = -Infinity;\n while (++i < n) if ((vi = +series[i][1]) > vj) vj = vi, j = i;\n return j;\n}\n","import none from \"./none.js\";\n\nexport default function(series) {\n var sums = series.map(sum);\n return none(series).sort(function(a, b) { return sums[a] - sums[b]; });\n}\n\nexport function sum(series) {\n var s = 0, i = -1, n = series.length, v;\n while (++i < n) if (v = +series[i][1]) s += v;\n return s;\n}\n","import ascending from \"./ascending.js\";\n\nexport default function(series) {\n return ascending(series).reverse();\n}\n","import appearance from \"./appearance.js\";\nimport {sum} from \"./ascending.js\";\n\nexport default function(series) {\n var n = series.length,\n i,\n j,\n sums = series.map(sum),\n order = appearance(series),\n top = 0,\n bottom = 0,\n tops = [],\n bottoms = [];\n\n for (i = 0; i < n; ++i) {\n j = order[i];\n if (top < bottom) {\n top += sums[j];\n tops.push(j);\n } else {\n bottom += sums[j];\n bottoms.push(j);\n }\n }\n\n return bottoms.reverse().concat(tops);\n}\n","import none from \"./none.js\";\n\nexport default function(series) {\n return none(series).reverse();\n}\n","import {utcFormat} from \"./defaultLocale.js\";\n\nexport var isoSpecifier = \"%Y-%m-%dT%H:%M:%S.%LZ\";\n\nfunction formatIsoNative(date) {\n return date.toISOString();\n}\n\nvar formatIso = Date.prototype.toISOString\n ? formatIsoNative\n : utcFormat(isoSpecifier);\n\nexport default formatIso;\n","import {isoSpecifier} from \"./isoFormat.js\";\nimport {utcParse} from \"./defaultLocale.js\";\n\nfunction parseIsoNative(string) {\n var date = new Date(string);\n return isNaN(date) ? null : date;\n}\n\nvar parseIso = +new Date(\"2000-01-01T00:00:00.000Z\")\n ? parseIsoNative\n : utcParse(isoSpecifier);\n\nexport default parseIso;\n","import {Timer, now} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n var t = new Timer, total = delay;\n if (delay == null) return t.restart(callback, delay, time), t;\n delay = +delay, time = time == null ? now() : +time;\n t.restart(function tick(elapsed) {\n elapsed += total;\n t.restart(tick, total += delay, time);\n callback(elapsed);\n }, delay, time);\n return t;\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export function x(d) {\n return d[0];\n}\n\nexport function y(d) {\n return d[1];\n}\n","function RedBlackTree() {\n this._ = null; // root node\n}\n\nexport function RedBlackNode(node) {\n node.U = // parent node\n node.C = // color - true for red, false for black\n node.L = // left node\n node.R = // right node\n node.P = // previous node\n node.N = null; // next node\n}\n\nRedBlackTree.prototype = {\n constructor: RedBlackTree,\n\n insert: function(after, node) {\n var parent, grandpa, uncle;\n\n if (after) {\n node.P = after;\n node.N = after.N;\n if (after.N) after.N.P = node;\n after.N = node;\n if (after.R) {\n after = after.R;\n while (after.L) after = after.L;\n after.L = node;\n } else {\n after.R = node;\n }\n parent = after;\n } else if (this._) {\n after = RedBlackFirst(this._);\n node.P = null;\n node.N = after;\n after.P = after.L = node;\n parent = after;\n } else {\n node.P = node.N = null;\n this._ = node;\n parent = null;\n }\n node.L = node.R = null;\n node.U = parent;\n node.C = true;\n\n after = node;\n while (parent && parent.C) {\n grandpa = parent.U;\n if (parent === grandpa.L) {\n uncle = grandpa.R;\n if (uncle && uncle.C) {\n parent.C = uncle.C = false;\n grandpa.C = true;\n after = grandpa;\n } else {\n if (after === parent.R) {\n RedBlackRotateLeft(this, parent);\n after = parent;\n parent = after.U;\n }\n parent.C = false;\n grandpa.C = true;\n RedBlackRotateRight(this, grandpa);\n }\n } else {\n uncle = grandpa.L;\n if (uncle && uncle.C) {\n parent.C = uncle.C = false;\n grandpa.C = true;\n after = grandpa;\n } else {\n if (after === parent.L) {\n RedBlackRotateRight(this, parent);\n after = parent;\n parent = after.U;\n }\n parent.C = false;\n grandpa.C = true;\n RedBlackRotateLeft(this, grandpa);\n }\n }\n parent = after.U;\n }\n this._.C = false;\n },\n\n remove: function(node) {\n if (node.N) node.N.P = node.P;\n if (node.P) node.P.N = node.N;\n node.N = node.P = null;\n\n var parent = node.U,\n sibling,\n left = node.L,\n right = node.R,\n next,\n red;\n\n if (!left) next = right;\n else if (!right) next = left;\n else next = RedBlackFirst(right);\n\n if (parent) {\n if (parent.L === node) parent.L = next;\n else parent.R = next;\n } else {\n this._ = next;\n }\n\n if (left && right) {\n red = next.C;\n next.C = node.C;\n next.L = left;\n left.U = next;\n if (next !== right) {\n parent = next.U;\n next.U = node.U;\n node = next.R;\n parent.L = node;\n next.R = right;\n right.U = next;\n } else {\n next.U = parent;\n parent = next;\n node = next.R;\n }\n } else {\n red = node.C;\n node = next;\n }\n\n if (node) node.U = parent;\n if (red) return;\n if (node && node.C) { node.C = false; return; }\n\n do {\n if (node === this._) break;\n if (node === parent.L) {\n sibling = parent.R;\n if (sibling.C) {\n sibling.C = false;\n parent.C = true;\n RedBlackRotateLeft(this, parent);\n sibling = parent.R;\n }\n if ((sibling.L && sibling.L.C)\n || (sibling.R && sibling.R.C)) {\n if (!sibling.R || !sibling.R.C) {\n sibling.L.C = false;\n sibling.C = true;\n RedBlackRotateRight(this, sibling);\n sibling = parent.R;\n }\n sibling.C = parent.C;\n parent.C = sibling.R.C = false;\n RedBlackRotateLeft(this, parent);\n node = this._;\n break;\n }\n } else {\n sibling = parent.L;\n if (sibling.C) {\n sibling.C = false;\n parent.C = true;\n RedBlackRotateRight(this, parent);\n sibling = parent.L;\n }\n if ((sibling.L && sibling.L.C)\n || (sibling.R && sibling.R.C)) {\n if (!sibling.L || !sibling.L.C) {\n sibling.R.C = false;\n sibling.C = true;\n RedBlackRotateLeft(this, sibling);\n sibling = parent.L;\n }\n sibling.C = parent.C;\n parent.C = sibling.L.C = false;\n RedBlackRotateRight(this, parent);\n node = this._;\n break;\n }\n }\n sibling.C = true;\n node = parent;\n parent = parent.U;\n } while (!node.C);\n\n if (node) node.C = false;\n }\n};\n\nfunction RedBlackRotateLeft(tree, node) {\n var p = node,\n q = node.R,\n parent = p.U;\n\n if (parent) {\n if (parent.L === p) parent.L = q;\n else parent.R = q;\n } else {\n tree._ = q;\n }\n\n q.U = parent;\n p.U = q;\n p.R = q.L;\n if (p.R) p.R.U = p;\n q.L = p;\n}\n\nfunction RedBlackRotateRight(tree, node) {\n var p = node,\n q = node.L,\n parent = p.U;\n\n if (parent) {\n if (parent.L === p) parent.L = q;\n else parent.R = q;\n } else {\n tree._ = q;\n }\n\n q.U = parent;\n p.U = q;\n p.L = q.R;\n if (p.L) p.L.U = p;\n q.R = p;\n}\n\nfunction RedBlackFirst(node) {\n while (node.L) node = node.L;\n return node;\n}\n\nexport default RedBlackTree;\n","import {cells, edges, epsilon} from \"./Diagram\";\n\nexport function createEdge(left, right, v0, v1) {\n var edge = [null, null],\n index = edges.push(edge) - 1;\n edge.left = left;\n edge.right = right;\n if (v0) setEdgeEnd(edge, left, right, v0);\n if (v1) setEdgeEnd(edge, right, left, v1);\n cells[left.index].halfedges.push(index);\n cells[right.index].halfedges.push(index);\n return edge;\n}\n\nexport function createBorderEdge(left, v0, v1) {\n var edge = [v0, v1];\n edge.left = left;\n return edge;\n}\n\nexport function setEdgeEnd(edge, left, right, vertex) {\n if (!edge[0] && !edge[1]) {\n edge[0] = vertex;\n edge.left = left;\n edge.right = right;\n } else if (edge.left === right) {\n edge[1] = vertex;\n } else {\n edge[0] = vertex;\n }\n}\n\n// Liang–Barsky line clipping.\nfunction clipEdge(edge, x0, y0, x1, y1) {\n var a = edge[0],\n b = edge[1],\n ax = a[0],\n ay = a[1],\n bx = b[0],\n by = b[1],\n t0 = 0,\n t1 = 1,\n dx = bx - ax,\n dy = by - ay,\n r;\n\n r = x0 - ax;\n if (!dx && r > 0) return;\n r /= dx;\n if (dx < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dx > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = x1 - ax;\n if (!dx && r < 0) return;\n r /= dx;\n if (dx < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dx > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n r = y0 - ay;\n if (!dy && r > 0) return;\n r /= dy;\n if (dy < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dy > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = y1 - ay;\n if (!dy && r < 0) return;\n r /= dy;\n if (dy < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dy > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n if (!(t0 > 0) && !(t1 < 1)) return true; // TODO Better check?\n\n if (t0 > 0) edge[0] = [ax + t0 * dx, ay + t0 * dy];\n if (t1 < 1) edge[1] = [ax + t1 * dx, ay + t1 * dy];\n return true;\n}\n\nfunction connectEdge(edge, x0, y0, x1, y1) {\n var v1 = edge[1];\n if (v1) return true;\n\n var v0 = edge[0],\n left = edge.left,\n right = edge.right,\n lx = left[0],\n ly = left[1],\n rx = right[0],\n ry = right[1],\n fx = (lx + rx) / 2,\n fy = (ly + ry) / 2,\n fm,\n fb;\n\n if (ry === ly) {\n if (fx < x0 || fx >= x1) return;\n if (lx > rx) {\n if (!v0) v0 = [fx, y0];\n else if (v0[1] >= y1) return;\n v1 = [fx, y1];\n } else {\n if (!v0) v0 = [fx, y1];\n else if (v0[1] < y0) return;\n v1 = [fx, y0];\n }\n } else {\n fm = (lx - rx) / (ry - ly);\n fb = fy - fm * fx;\n if (fm < -1 || fm > 1) {\n if (lx > rx) {\n if (!v0) v0 = [(y0 - fb) / fm, y0];\n else if (v0[1] >= y1) return;\n v1 = [(y1 - fb) / fm, y1];\n } else {\n if (!v0) v0 = [(y1 - fb) / fm, y1];\n else if (v0[1] < y0) return;\n v1 = [(y0 - fb) / fm, y0];\n }\n } else {\n if (ly < ry) {\n if (!v0) v0 = [x0, fm * x0 + fb];\n else if (v0[0] >= x1) return;\n v1 = [x1, fm * x1 + fb];\n } else {\n if (!v0) v0 = [x1, fm * x1 + fb];\n else if (v0[0] < x0) return;\n v1 = [x0, fm * x0 + fb];\n }\n }\n }\n\n edge[0] = v0;\n edge[1] = v1;\n return true;\n}\n\nexport function clipEdges(x0, y0, x1, y1) {\n var i = edges.length,\n edge;\n\n while (i--) {\n if (!connectEdge(edge = edges[i], x0, y0, x1, y1)\n || !clipEdge(edge, x0, y0, x1, y1)\n || !(Math.abs(edge[0][0] - edge[1][0]) > epsilon\n || Math.abs(edge[0][1] - edge[1][1]) > epsilon)) {\n delete edges[i];\n }\n }\n}\n","import {createBorderEdge} from \"./Edge\";\nimport {cells, edges, epsilon} from \"./Diagram\";\n\nexport function createCell(site) {\n return cells[site.index] = {\n site: site,\n halfedges: []\n };\n}\n\nfunction cellHalfedgeAngle(cell, edge) {\n var site = cell.site,\n va = edge.left,\n vb = edge.right;\n if (site === vb) vb = va, va = site;\n if (vb) return Math.atan2(vb[1] - va[1], vb[0] - va[0]);\n if (site === va) va = edge[1], vb = edge[0];\n else va = edge[0], vb = edge[1];\n return Math.atan2(va[0] - vb[0], vb[1] - va[1]);\n}\n\nexport function cellHalfedgeStart(cell, edge) {\n return edge[+(edge.left !== cell.site)];\n}\n\nexport function cellHalfedgeEnd(cell, edge) {\n return edge[+(edge.left === cell.site)];\n}\n\nexport function sortCellHalfedges() {\n for (var i = 0, n = cells.length, cell, halfedges, j, m; i < n; ++i) {\n if ((cell = cells[i]) && (m = (halfedges = cell.halfedges).length)) {\n var index = new Array(m),\n array = new Array(m);\n for (j = 0; j < m; ++j) index[j] = j, array[j] = cellHalfedgeAngle(cell, edges[halfedges[j]]);\n index.sort(function(i, j) { return array[j] - array[i]; });\n for (j = 0; j < m; ++j) array[j] = halfedges[index[j]];\n for (j = 0; j < m; ++j) halfedges[j] = array[j];\n }\n }\n}\n\nexport function clipCells(x0, y0, x1, y1) {\n var nCells = cells.length,\n iCell,\n cell,\n site,\n iHalfedge,\n halfedges,\n nHalfedges,\n start,\n startX,\n startY,\n end,\n endX,\n endY,\n cover = true;\n\n for (iCell = 0; iCell < nCells; ++iCell) {\n if (cell = cells[iCell]) {\n site = cell.site;\n halfedges = cell.halfedges;\n iHalfedge = halfedges.length;\n\n // Remove any dangling clipped edges.\n while (iHalfedge--) {\n if (!edges[halfedges[iHalfedge]]) {\n halfedges.splice(iHalfedge, 1);\n }\n }\n\n // Insert any border edges as necessary.\n iHalfedge = 0, nHalfedges = halfedges.length;\n while (iHalfedge < nHalfedges) {\n end = cellHalfedgeEnd(cell, edges[halfedges[iHalfedge]]), endX = end[0], endY = end[1];\n start = cellHalfedgeStart(cell, edges[halfedges[++iHalfedge % nHalfedges]]), startX = start[0], startY = start[1];\n if (Math.abs(endX - startX) > epsilon || Math.abs(endY - startY) > epsilon) {\n halfedges.splice(iHalfedge, 0, edges.push(createBorderEdge(site, end,\n Math.abs(endX - x0) < epsilon && y1 - endY > epsilon ? [x0, Math.abs(startX - x0) < epsilon ? startY : y1]\n : Math.abs(endY - y1) < epsilon && x1 - endX > epsilon ? [Math.abs(startY - y1) < epsilon ? startX : x1, y1]\n : Math.abs(endX - x1) < epsilon && endY - y0 > epsilon ? [x1, Math.abs(startX - x1) < epsilon ? startY : y0]\n : Math.abs(endY - y0) < epsilon && endX - x0 > epsilon ? [Math.abs(startY - y0) < epsilon ? startX : x0, y0]\n : null)) - 1);\n ++nHalfedges;\n }\n }\n\n if (nHalfedges) cover = false;\n }\n }\n\n // If there weren’t any edges, have the closest site cover the extent.\n // It doesn’t matter which corner of the extent we measure!\n if (cover) {\n var dx, dy, d2, dc = Infinity;\n\n for (iCell = 0, cover = null; iCell < nCells; ++iCell) {\n if (cell = cells[iCell]) {\n site = cell.site;\n dx = site[0] - x0;\n dy = site[1] - y0;\n d2 = dx * dx + dy * dy;\n if (d2 < dc) dc = d2, cover = cell;\n }\n }\n\n if (cover) {\n var v00 = [x0, y0], v01 = [x0, y1], v11 = [x1, y1], v10 = [x1, y0];\n cover.halfedges.push(\n edges.push(createBorderEdge(site = cover.site, v00, v01)) - 1,\n edges.push(createBorderEdge(site, v01, v11)) - 1,\n edges.push(createBorderEdge(site, v11, v10)) - 1,\n edges.push(createBorderEdge(site, v10, v00)) - 1\n );\n }\n }\n\n // Lastly delete any cells with no edges; these were entirely clipped.\n for (iCell = 0; iCell < nCells; ++iCell) {\n if (cell = cells[iCell]) {\n if (!cell.halfedges.length) {\n delete cells[iCell];\n }\n }\n }\n}\n","import {RedBlackNode} from \"./RedBlackTree\";\nimport {circles, epsilon2} from \"./Diagram\";\n\nvar circlePool = [];\n\nexport var firstCircle;\n\nfunction Circle() {\n RedBlackNode(this);\n this.x =\n this.y =\n this.arc =\n this.site =\n this.cy = null;\n}\n\nexport function attachCircle(arc) {\n var lArc = arc.P,\n rArc = arc.N;\n\n if (!lArc || !rArc) return;\n\n var lSite = lArc.site,\n cSite = arc.site,\n rSite = rArc.site;\n\n if (lSite === rSite) return;\n\n var bx = cSite[0],\n by = cSite[1],\n ax = lSite[0] - bx,\n ay = lSite[1] - by,\n cx = rSite[0] - bx,\n cy = rSite[1] - by;\n\n var d = 2 * (ax * cy - ay * cx);\n if (d >= -epsilon2) return;\n\n var ha = ax * ax + ay * ay,\n hc = cx * cx + cy * cy,\n x = (cy * ha - ay * hc) / d,\n y = (ax * hc - cx * ha) / d;\n\n var circle = circlePool.pop() || new Circle;\n circle.arc = arc;\n circle.site = cSite;\n circle.x = x + bx;\n circle.y = (circle.cy = y + by) + Math.sqrt(x * x + y * y); // y bottom\n\n arc.circle = circle;\n\n var before = null,\n node = circles._;\n\n while (node) {\n if (circle.y < node.y || (circle.y === node.y && circle.x <= node.x)) {\n if (node.L) node = node.L;\n else { before = node.P; break; }\n } else {\n if (node.R) node = node.R;\n else { before = node; break; }\n }\n }\n\n circles.insert(before, circle);\n if (!before) firstCircle = circle;\n}\n\nexport function detachCircle(arc) {\n var circle = arc.circle;\n if (circle) {\n if (!circle.P) firstCircle = circle.N;\n circles.remove(circle);\n circlePool.push(circle);\n RedBlackNode(circle);\n arc.circle = null;\n }\n}\n","import {RedBlackNode} from \"./RedBlackTree\";\nimport {createCell} from \"./Cell\";\nimport {attachCircle, detachCircle} from \"./Circle\";\nimport {createEdge, setEdgeEnd} from \"./Edge\";\nimport {beaches, epsilon} from \"./Diagram\";\n\nvar beachPool = [];\n\nfunction Beach() {\n RedBlackNode(this);\n this.edge =\n this.site =\n this.circle = null;\n}\n\nfunction createBeach(site) {\n var beach = beachPool.pop() || new Beach;\n beach.site = site;\n return beach;\n}\n\nfunction detachBeach(beach) {\n detachCircle(beach);\n beaches.remove(beach);\n beachPool.push(beach);\n RedBlackNode(beach);\n}\n\nexport function removeBeach(beach) {\n var circle = beach.circle,\n x = circle.x,\n y = circle.cy,\n vertex = [x, y],\n previous = beach.P,\n next = beach.N,\n disappearing = [beach];\n\n detachBeach(beach);\n\n var lArc = previous;\n while (lArc.circle\n && Math.abs(x - lArc.circle.x) < epsilon\n && Math.abs(y - lArc.circle.cy) < epsilon) {\n previous = lArc.P;\n disappearing.unshift(lArc);\n detachBeach(lArc);\n lArc = previous;\n }\n\n disappearing.unshift(lArc);\n detachCircle(lArc);\n\n var rArc = next;\n while (rArc.circle\n && Math.abs(x - rArc.circle.x) < epsilon\n && Math.abs(y - rArc.circle.cy) < epsilon) {\n next = rArc.N;\n disappearing.push(rArc);\n detachBeach(rArc);\n rArc = next;\n }\n\n disappearing.push(rArc);\n detachCircle(rArc);\n\n var nArcs = disappearing.length,\n iArc;\n for (iArc = 1; iArc < nArcs; ++iArc) {\n rArc = disappearing[iArc];\n lArc = disappearing[iArc - 1];\n setEdgeEnd(rArc.edge, lArc.site, rArc.site, vertex);\n }\n\n lArc = disappearing[0];\n rArc = disappearing[nArcs - 1];\n rArc.edge = createEdge(lArc.site, rArc.site, null, vertex);\n\n attachCircle(lArc);\n attachCircle(rArc);\n}\n\nexport function addBeach(site) {\n var x = site[0],\n directrix = site[1],\n lArc,\n rArc,\n dxl,\n dxr,\n node = beaches._;\n\n while (node) {\n dxl = leftBreakPoint(node, directrix) - x;\n if (dxl > epsilon) node = node.L; else {\n dxr = x - rightBreakPoint(node, directrix);\n if (dxr > epsilon) {\n if (!node.R) {\n lArc = node;\n break;\n }\n node = node.R;\n } else {\n if (dxl > -epsilon) {\n lArc = node.P;\n rArc = node;\n } else if (dxr > -epsilon) {\n lArc = node;\n rArc = node.N;\n } else {\n lArc = rArc = node;\n }\n break;\n }\n }\n }\n\n createCell(site);\n var newArc = createBeach(site);\n beaches.insert(lArc, newArc);\n\n if (!lArc && !rArc) return;\n\n if (lArc === rArc) {\n detachCircle(lArc);\n rArc = createBeach(lArc.site);\n beaches.insert(newArc, rArc);\n newArc.edge = rArc.edge = createEdge(lArc.site, newArc.site);\n attachCircle(lArc);\n attachCircle(rArc);\n return;\n }\n\n if (!rArc) { // && lArc\n newArc.edge = createEdge(lArc.site, newArc.site);\n return;\n }\n\n // else lArc !== rArc\n detachCircle(lArc);\n detachCircle(rArc);\n\n var lSite = lArc.site,\n ax = lSite[0],\n ay = lSite[1],\n bx = site[0] - ax,\n by = site[1] - ay,\n rSite = rArc.site,\n cx = rSite[0] - ax,\n cy = rSite[1] - ay,\n d = 2 * (bx * cy - by * cx),\n hb = bx * bx + by * by,\n hc = cx * cx + cy * cy,\n vertex = [(cy * hb - by * hc) / d + ax, (bx * hc - cx * hb) / d + ay];\n\n setEdgeEnd(rArc.edge, lSite, rSite, vertex);\n newArc.edge = createEdge(lSite, site, null, vertex);\n rArc.edge = createEdge(site, rSite, null, vertex);\n attachCircle(lArc);\n attachCircle(rArc);\n}\n\nfunction leftBreakPoint(arc, directrix) {\n var site = arc.site,\n rfocx = site[0],\n rfocy = site[1],\n pby2 = rfocy - directrix;\n\n if (!pby2) return rfocx;\n\n var lArc = arc.P;\n if (!lArc) return -Infinity;\n\n site = lArc.site;\n var lfocx = site[0],\n lfocy = site[1],\n plby2 = lfocy - directrix;\n\n if (!plby2) return lfocx;\n\n var hl = lfocx - rfocx,\n aby2 = 1 / pby2 - 1 / plby2,\n b = hl / plby2;\n\n if (aby2) return (-b + Math.sqrt(b * b - 2 * aby2 * (hl * hl / (-2 * plby2) - lfocy + plby2 / 2 + rfocy - pby2 / 2))) / aby2 + rfocx;\n\n return (rfocx + lfocx) / 2;\n}\n\nfunction rightBreakPoint(arc, directrix) {\n var rArc = arc.N;\n if (rArc) return leftBreakPoint(rArc, directrix);\n var site = arc.site;\n return site[1] === directrix ? site[0] : Infinity;\n}\n","import {addBeach, removeBeach} from \"./Beach\";\nimport {sortCellHalfedges, cellHalfedgeStart, clipCells} from \"./Cell\";\nimport {firstCircle} from \"./Circle\";\nimport {clipEdges} from \"./Edge\";\nimport RedBlackTree from \"./RedBlackTree\";\n\nexport var epsilon = 1e-6;\nexport var epsilon2 = 1e-12;\nexport var beaches;\nexport var cells;\nexport var circles;\nexport var edges;\n\nfunction triangleArea(a, b, c) {\n return (a[0] - c[0]) * (b[1] - a[1]) - (a[0] - b[0]) * (c[1] - a[1]);\n}\n\nfunction lexicographic(a, b) {\n return b[1] - a[1]\n || b[0] - a[0];\n}\n\nexport default function Diagram(sites, extent) {\n var site = sites.sort(lexicographic).pop(),\n x,\n y,\n circle;\n\n edges = [];\n cells = new Array(sites.length);\n beaches = new RedBlackTree;\n circles = new RedBlackTree;\n\n while (true) {\n circle = firstCircle;\n if (site && (!circle || site[1] < circle.y || (site[1] === circle.y && site[0] < circle.x))) {\n if (site[0] !== x || site[1] !== y) {\n addBeach(site);\n x = site[0], y = site[1];\n }\n site = sites.pop();\n } else if (circle) {\n removeBeach(circle.arc);\n } else {\n break;\n }\n }\n\n sortCellHalfedges();\n\n if (extent) {\n var x0 = +extent[0][0],\n y0 = +extent[0][1],\n x1 = +extent[1][0],\n y1 = +extent[1][1];\n clipEdges(x0, y0, x1, y1);\n clipCells(x0, y0, x1, y1);\n }\n\n this.edges = edges;\n this.cells = cells;\n\n beaches =\n circles =\n edges =\n cells = null;\n}\n\nDiagram.prototype = {\n constructor: Diagram,\n\n polygons: function() {\n var edges = this.edges;\n\n return this.cells.map(function(cell) {\n var polygon = cell.halfedges.map(function(i) { return cellHalfedgeStart(cell, edges[i]); });\n polygon.data = cell.site.data;\n return polygon;\n });\n },\n\n triangles: function() {\n var triangles = [],\n edges = this.edges;\n\n this.cells.forEach(function(cell, i) {\n if (!(m = (halfedges = cell.halfedges).length)) return;\n var site = cell.site,\n halfedges,\n j = -1,\n m,\n s0,\n e1 = edges[halfedges[m - 1]],\n s1 = e1.left === site ? e1.right : e1.left;\n\n while (++j < m) {\n s0 = s1;\n e1 = edges[halfedges[j]];\n s1 = e1.left === site ? e1.right : e1.left;\n if (s0 && s1 && i < s0.index && i < s1.index && triangleArea(site, s0, s1) < 0) {\n triangles.push([site.data, s0.data, s1.data]);\n }\n }\n });\n\n return triangles;\n },\n\n links: function() {\n return this.edges.filter(function(edge) {\n return edge.right;\n }).map(function(edge) {\n return {\n source: edge.left.data,\n target: edge.right.data\n };\n });\n },\n\n find: function(x, y, radius) {\n var that = this, i0, i1 = that._found || 0, n = that.cells.length, cell;\n\n // Use the previously-found cell, or start with an arbitrary one.\n while (!(cell = that.cells[i1])) if (++i1 >= n) return null;\n var dx = x - cell.site[0], dy = y - cell.site[1], d2 = dx * dx + dy * dy;\n\n // Traverse the half-edges to find a closer cell, if any.\n do {\n cell = that.cells[i0 = i1], i1 = null;\n cell.halfedges.forEach(function(e) {\n var edge = that.edges[e], v = edge.left;\n if ((v === cell.site || !v) && !(v = edge.right)) return;\n var vx = x - v[0], vy = y - v[1], v2 = vx * vx + vy * vy;\n if (v2 < d2) d2 = v2, i1 = v.index;\n });\n } while (i1 !== null);\n\n that._found = i0;\n\n return radius == null || d2 <= radius * radius ? cell.site : null;\n }\n}\n","import constant from \"./constant\";\nimport {x as pointX, y as pointY} from \"./point\";\nimport Diagram, {epsilon} from \"./Diagram\";\n\nexport default function() {\n var x = pointX,\n y = pointY,\n extent = null;\n\n function voronoi(data) {\n return new Diagram(data.map(function(d, i) {\n var s = [Math.round(x(d, i, data) / epsilon) * epsilon, Math.round(y(d, i, data) / epsilon) * epsilon];\n s.index = i;\n s.data = d;\n return s;\n }), extent);\n }\n\n voronoi.polygons = function(data) {\n return voronoi(data).polygons();\n };\n\n voronoi.links = function(data) {\n return voronoi(data).links();\n };\n\n voronoi.triangles = function(data) {\n return voronoi(data).triangles();\n };\n\n voronoi.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), voronoi) : x;\n };\n\n voronoi.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), voronoi) : y;\n };\n\n voronoi.extent = function(_) {\n return arguments.length ? (extent = _ == null ? null : [[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]], voronoi) : extent && [[extent[0][0], extent[0][1]], [extent[1][0], extent[1][1]]];\n };\n\n voronoi.size = function(_) {\n return arguments.length ? (extent = _ == null ? null : [[0, 0], [+_[0], +_[1]]], voronoi) : extent && [extent[1][0] - extent[0][0], extent[1][1] - extent[0][1]];\n };\n\n return voronoi;\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function ZoomEvent(target, type, transform) {\n this.target = target;\n this.type = type;\n this.transform = transform;\n}\n","export function Transform(k, x, y) {\n this.k = k;\n this.x = x;\n this.y = y;\n}\n\nTransform.prototype = {\n constructor: Transform,\n scale: function(k) {\n return k === 1 ? this : new Transform(this.k * k, this.x, this.y);\n },\n translate: function(x, y) {\n return x === 0 & y === 0 ? this : new Transform(this.k, this.x + this.k * x, this.y + this.k * y);\n },\n apply: function(point) {\n return [point[0] * this.k + this.x, point[1] * this.k + this.y];\n },\n applyX: function(x) {\n return x * this.k + this.x;\n },\n applyY: function(y) {\n return y * this.k + this.y;\n },\n invert: function(location) {\n return [(location[0] - this.x) / this.k, (location[1] - this.y) / this.k];\n },\n invertX: function(x) {\n return (x - this.x) / this.k;\n },\n invertY: function(y) {\n return (y - this.y) / this.k;\n },\n rescaleX: function(x) {\n return x.copy().domain(x.range().map(this.invertX, this).map(x.invert, x));\n },\n rescaleY: function(y) {\n return y.copy().domain(y.range().map(this.invertY, this).map(y.invert, y));\n },\n toString: function() {\n return \"translate(\" + this.x + \",\" + this.y + \") scale(\" + this.k + \")\";\n }\n};\n\nexport var identity = new Transform(1, 0, 0);\n\ntransform.prototype = Transform.prototype;\n\nexport default function transform(node) {\n while (!node.__zoom) if (!(node = node.parentNode)) return identity;\n return node.__zoom;\n}\n","import {event} from \"d3-selection\";\n\nexport function nopropagation() {\n event.stopImmediatePropagation();\n}\n\nexport default function() {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolateZoom} from \"d3-interpolate\";\nimport {event, customEvent, select, mouse, touch} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant.js\";\nimport ZoomEvent from \"./event.js\";\nimport {Transform, identity} from \"./transform.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter() {\n return !event.ctrlKey && !event.button;\n}\n\nfunction defaultExtent() {\n var e = this;\n if (e instanceof SVGElement) {\n e = e.ownerSVGElement || e;\n if (e.hasAttribute(\"viewBox\")) {\n e = e.viewBox.baseVal;\n return [[e.x, e.y], [e.x + e.width, e.y + e.height]];\n }\n return [[0, 0], [e.width.baseVal.value, e.height.baseVal.value]];\n }\n return [[0, 0], [e.clientWidth, e.clientHeight]];\n}\n\nfunction defaultTransform() {\n return this.__zoom || identity;\n}\n\nfunction defaultWheelDelta() {\n return -event.deltaY * (event.deltaMode === 1 ? 0.05 : event.deltaMode ? 1 : 0.002);\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\nfunction defaultConstrain(transform, extent, translateExtent) {\n var dx0 = transform.invertX(extent[0][0]) - translateExtent[0][0],\n dx1 = transform.invertX(extent[1][0]) - translateExtent[1][0],\n dy0 = transform.invertY(extent[0][1]) - translateExtent[0][1],\n dy1 = transform.invertY(extent[1][1]) - translateExtent[1][1];\n return transform.translate(\n dx1 > dx0 ? (dx0 + dx1) / 2 : Math.min(0, dx0) || Math.max(0, dx1),\n dy1 > dy0 ? (dy0 + dy1) / 2 : Math.min(0, dy0) || Math.max(0, dy1)\n );\n}\n\nexport default function() {\n var filter = defaultFilter,\n extent = defaultExtent,\n constrain = defaultConstrain,\n wheelDelta = defaultWheelDelta,\n touchable = defaultTouchable,\n scaleExtent = [0, Infinity],\n translateExtent = [[-Infinity, -Infinity], [Infinity, Infinity]],\n duration = 250,\n interpolate = interpolateZoom,\n listeners = dispatch(\"start\", \"zoom\", \"end\"),\n touchstarting,\n touchending,\n touchDelay = 500,\n wheelDelay = 150,\n clickDistance2 = 0;\n\n function zoom(selection) {\n selection\n .property(\"__zoom\", defaultTransform)\n .on(\"wheel.zoom\", wheeled)\n .on(\"mousedown.zoom\", mousedowned)\n .on(\"dblclick.zoom\", dblclicked)\n .filter(touchable)\n .on(\"touchstart.zoom\", touchstarted)\n .on(\"touchmove.zoom\", touchmoved)\n .on(\"touchend.zoom touchcancel.zoom\", touchended)\n .style(\"touch-action\", \"none\")\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n zoom.transform = function(collection, transform, point) {\n var selection = collection.selection ? collection.selection() : collection;\n selection.property(\"__zoom\", defaultTransform);\n if (collection !== selection) {\n schedule(collection, transform, point);\n } else {\n selection.interrupt().each(function() {\n gesture(this, arguments)\n .start()\n .zoom(null, typeof transform === \"function\" ? transform.apply(this, arguments) : transform)\n .end();\n });\n }\n };\n\n zoom.scaleBy = function(selection, k, p) {\n zoom.scaleTo(selection, function() {\n var k0 = this.__zoom.k,\n k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n return k0 * k1;\n }, p);\n };\n\n zoom.scaleTo = function(selection, k, p) {\n zoom.transform(selection, function() {\n var e = extent.apply(this, arguments),\n t0 = this.__zoom,\n p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p,\n p1 = t0.invert(p0),\n k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n return constrain(translate(scale(t0, k1), p0, p1), e, translateExtent);\n }, p);\n };\n\n zoom.translateBy = function(selection, x, y) {\n zoom.transform(selection, function() {\n return constrain(this.__zoom.translate(\n typeof x === \"function\" ? x.apply(this, arguments) : x,\n typeof y === \"function\" ? y.apply(this, arguments) : y\n ), extent.apply(this, arguments), translateExtent);\n });\n };\n\n zoom.translateTo = function(selection, x, y, p) {\n zoom.transform(selection, function() {\n var e = extent.apply(this, arguments),\n t = this.__zoom,\n p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p;\n return constrain(identity.translate(p0[0], p0[1]).scale(t.k).translate(\n typeof x === \"function\" ? -x.apply(this, arguments) : -x,\n typeof y === \"function\" ? -y.apply(this, arguments) : -y\n ), e, translateExtent);\n }, p);\n };\n\n function scale(transform, k) {\n k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], k));\n return k === transform.k ? transform : new Transform(k, transform.x, transform.y);\n }\n\n function translate(transform, p0, p1) {\n var x = p0[0] - p1[0] * transform.k, y = p0[1] - p1[1] * transform.k;\n return x === transform.x && y === transform.y ? transform : new Transform(transform.k, x, y);\n }\n\n function centroid(extent) {\n return [(+extent[0][0] + +extent[1][0]) / 2, (+extent[0][1] + +extent[1][1]) / 2];\n }\n\n function schedule(transition, transform, point) {\n transition\n .on(\"start.zoom\", function() { gesture(this, arguments).start(); })\n .on(\"interrupt.zoom end.zoom\", function() { gesture(this, arguments).end(); })\n .tween(\"zoom\", function() {\n var that = this,\n args = arguments,\n g = gesture(that, args),\n e = extent.apply(that, args),\n p = point == null ? centroid(e) : typeof point === \"function\" ? point.apply(that, args) : point,\n w = Math.max(e[1][0] - e[0][0], e[1][1] - e[0][1]),\n a = that.__zoom,\n b = typeof transform === \"function\" ? transform.apply(that, args) : transform,\n i = interpolate(a.invert(p).concat(w / a.k), b.invert(p).concat(w / b.k));\n return function(t) {\n if (t === 1) t = b; // Avoid rounding error on end.\n else { var l = i(t), k = w / l[2]; t = new Transform(k, p[0] - l[0] * k, p[1] - l[1] * k); }\n g.zoom(null, t);\n };\n });\n }\n\n function gesture(that, args, clean) {\n return (!clean && that.__zooming) || new Gesture(that, args);\n }\n\n function Gesture(that, args) {\n this.that = that;\n this.args = args;\n this.active = 0;\n this.extent = extent.apply(that, args);\n this.taps = 0;\n }\n\n Gesture.prototype = {\n start: function() {\n if (++this.active === 1) {\n this.that.__zooming = this;\n this.emit(\"start\");\n }\n return this;\n },\n zoom: function(key, transform) {\n if (this.mouse && key !== \"mouse\") this.mouse[1] = transform.invert(this.mouse[0]);\n if (this.touch0 && key !== \"touch\") this.touch0[1] = transform.invert(this.touch0[0]);\n if (this.touch1 && key !== \"touch\") this.touch1[1] = transform.invert(this.touch1[0]);\n this.that.__zoom = transform;\n this.emit(\"zoom\");\n return this;\n },\n end: function() {\n if (--this.active === 0) {\n delete this.that.__zooming;\n this.emit(\"end\");\n }\n return this;\n },\n emit: function(type) {\n customEvent(new ZoomEvent(zoom, type, this.that.__zoom), listeners.apply, listeners, [type, this.that, this.args]);\n }\n };\n\n function wheeled() {\n if (!filter.apply(this, arguments)) return;\n var g = gesture(this, arguments),\n t = this.__zoom,\n k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], t.k * Math.pow(2, wheelDelta.apply(this, arguments)))),\n p = mouse(this);\n\n // If the mouse is in the same location as before, reuse it.\n // If there were recent wheel events, reset the wheel idle timeout.\n if (g.wheel) {\n if (g.mouse[0][0] !== p[0] || g.mouse[0][1] !== p[1]) {\n g.mouse[1] = t.invert(g.mouse[0] = p);\n }\n clearTimeout(g.wheel);\n }\n\n // If this wheel event won’t trigger a transform change, ignore it.\n else if (t.k === k) return;\n\n // Otherwise, capture the mouse point and location at the start.\n else {\n g.mouse = [p, t.invert(p)];\n interrupt(this);\n g.start();\n }\n\n noevent();\n g.wheel = setTimeout(wheelidled, wheelDelay);\n g.zoom(\"mouse\", constrain(translate(scale(t, k), g.mouse[0], g.mouse[1]), g.extent, translateExtent));\n\n function wheelidled() {\n g.wheel = null;\n g.end();\n }\n }\n\n function mousedowned() {\n if (touchending || !filter.apply(this, arguments)) return;\n var g = gesture(this, arguments, true),\n v = select(event.view).on(\"mousemove.zoom\", mousemoved, true).on(\"mouseup.zoom\", mouseupped, true),\n p = mouse(this),\n x0 = event.clientX,\n y0 = event.clientY;\n\n dragDisable(event.view);\n nopropagation();\n g.mouse = [p, this.__zoom.invert(p)];\n interrupt(this);\n g.start();\n\n function mousemoved() {\n noevent();\n if (!g.moved) {\n var dx = event.clientX - x0, dy = event.clientY - y0;\n g.moved = dx * dx + dy * dy > clickDistance2;\n }\n g.zoom(\"mouse\", constrain(translate(g.that.__zoom, g.mouse[0] = mouse(g.that), g.mouse[1]), g.extent, translateExtent));\n }\n\n function mouseupped() {\n v.on(\"mousemove.zoom mouseup.zoom\", null);\n dragEnable(event.view, g.moved);\n noevent();\n g.end();\n }\n }\n\n function dblclicked() {\n if (!filter.apply(this, arguments)) return;\n var t0 = this.__zoom,\n p0 = mouse(this),\n p1 = t0.invert(p0),\n k1 = t0.k * (event.shiftKey ? 0.5 : 2),\n t1 = constrain(translate(scale(t0, k1), p0, p1), extent.apply(this, arguments), translateExtent);\n\n noevent();\n if (duration > 0) select(this).transition().duration(duration).call(schedule, t1, p0);\n else select(this).call(zoom.transform, t1);\n }\n\n function touchstarted() {\n if (!filter.apply(this, arguments)) return;\n var touches = event.touches,\n n = touches.length,\n g = gesture(this, arguments, event.changedTouches.length === n),\n started, i, t, p;\n\n nopropagation();\n for (i = 0; i < n; ++i) {\n t = touches[i], p = touch(this, touches, t.identifier);\n p = [p, this.__zoom.invert(p), t.identifier];\n if (!g.touch0) g.touch0 = p, started = true, g.taps = 1 + !!touchstarting;\n else if (!g.touch1 && g.touch0[2] !== p[2]) g.touch1 = p, g.taps = 0;\n }\n\n if (touchstarting) touchstarting = clearTimeout(touchstarting);\n\n if (started) {\n if (g.taps < 2) touchstarting = setTimeout(function() { touchstarting = null; }, touchDelay);\n interrupt(this);\n g.start();\n }\n }\n\n function touchmoved() {\n if (!this.__zooming) return;\n var g = gesture(this, arguments),\n touches = event.changedTouches,\n n = touches.length, i, t, p, l;\n\n noevent();\n if (touchstarting) touchstarting = clearTimeout(touchstarting);\n g.taps = 0;\n for (i = 0; i < n; ++i) {\n t = touches[i], p = touch(this, touches, t.identifier);\n if (g.touch0 && g.touch0[2] === t.identifier) g.touch0[0] = p;\n else if (g.touch1 && g.touch1[2] === t.identifier) g.touch1[0] = p;\n }\n t = g.that.__zoom;\n if (g.touch1) {\n var p0 = g.touch0[0], l0 = g.touch0[1],\n p1 = g.touch1[0], l1 = g.touch1[1],\n dp = (dp = p1[0] - p0[0]) * dp + (dp = p1[1] - p0[1]) * dp,\n dl = (dl = l1[0] - l0[0]) * dl + (dl = l1[1] - l0[1]) * dl;\n t = scale(t, Math.sqrt(dp / dl));\n p = [(p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2];\n l = [(l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2];\n }\n else if (g.touch0) p = g.touch0[0], l = g.touch0[1];\n else return;\n g.zoom(\"touch\", constrain(translate(t, p, l), g.extent, translateExtent));\n }\n\n function touchended() {\n if (!this.__zooming) return;\n var g = gesture(this, arguments),\n touches = event.changedTouches,\n n = touches.length, i, t;\n\n nopropagation();\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, touchDelay);\n for (i = 0; i < n; ++i) {\n t = touches[i];\n if (g.touch0 && g.touch0[2] === t.identifier) delete g.touch0;\n else if (g.touch1 && g.touch1[2] === t.identifier) delete g.touch1;\n }\n if (g.touch1 && !g.touch0) g.touch0 = g.touch1, delete g.touch1;\n if (g.touch0) g.touch0[1] = this.__zoom.invert(g.touch0[0]);\n else {\n g.end();\n // If this was a dbltap, reroute to the (optional) dblclick.zoom handler.\n if (g.taps === 2) {\n var p = select(this).on(\"dblclick.zoom\");\n if (p) p.apply(this, arguments);\n }\n }\n }\n\n zoom.wheelDelta = function(_) {\n return arguments.length ? (wheelDelta = typeof _ === \"function\" ? _ : constant(+_), zoom) : wheelDelta;\n };\n\n zoom.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), zoom) : filter;\n };\n\n zoom.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), zoom) : touchable;\n };\n\n zoom.extent = function(_) {\n return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant([[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]]), zoom) : extent;\n };\n\n zoom.scaleExtent = function(_) {\n return arguments.length ? (scaleExtent[0] = +_[0], scaleExtent[1] = +_[1], zoom) : [scaleExtent[0], scaleExtent[1]];\n };\n\n zoom.translateExtent = function(_) {\n return arguments.length ? (translateExtent[0][0] = +_[0][0], translateExtent[1][0] = +_[1][0], translateExtent[0][1] = +_[0][1], translateExtent[1][1] = +_[1][1], zoom) : [[translateExtent[0][0], translateExtent[0][1]], [translateExtent[1][0], translateExtent[1][1]]];\n };\n\n zoom.constrain = function(_) {\n return arguments.length ? (constrain = _, zoom) : constrain;\n };\n\n zoom.duration = function(_) {\n return arguments.length ? (duration = +_, zoom) : duration;\n };\n\n zoom.interpolate = function(_) {\n return arguments.length ? (interpolate = _, zoom) : interpolate;\n };\n\n zoom.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? zoom : value;\n };\n\n zoom.clickDistance = function(_) {\n return arguments.length ? (clickDistance2 = (_ = +_) * _, zoom) : Math.sqrt(clickDistance2);\n };\n\n return zoom;\n}\n","/*\nCopyright (c) 2012-2014 Chris Pettitt\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n*/\n\nmodule.exports = {\n graphlib: require(\"./lib/graphlib\"),\n\n layout: require(\"./lib/layout\"),\n debug: require(\"./lib/debug\"),\n util: {\n time: require(\"./lib/util\").time,\n notime: require(\"./lib/util\").notime\n },\n version: require(\"./lib/version\")\n};\n","\"use strict\";\n\nvar _ = require(\"./lodash\");\nvar greedyFAS = require(\"./greedy-fas\");\n\nmodule.exports = {\n run: run,\n undo: undo\n};\n\nfunction run(g) {\n var fas = (g.graph().acyclicer === \"greedy\"\n ? greedyFAS(g, weightFn(g))\n : dfsFAS(g));\n _.forEach(fas, function(e) {\n var label = g.edge(e);\n g.removeEdge(e);\n label.forwardName = e.name;\n label.reversed = true;\n g.setEdge(e.w, e.v, label, _.uniqueId(\"rev\"));\n });\n\n function weightFn(g) {\n return function(e) {\n return g.edge(e).weight;\n };\n }\n}\n\nfunction dfsFAS(g) {\n var fas = [];\n var stack = {};\n var visited = {};\n\n function dfs(v) {\n if (_.has(visited, v)) {\n return;\n }\n visited[v] = true;\n stack[v] = true;\n _.forEach(g.outEdges(v), function(e) {\n if (_.has(stack, e.w)) {\n fas.push(e);\n } else {\n dfs(e.w);\n }\n });\n delete stack[v];\n }\n\n _.forEach(g.nodes(), dfs);\n return fas;\n}\n\nfunction undo(g) {\n _.forEach(g.edges(), function(e) {\n var label = g.edge(e);\n if (label.reversed) {\n g.removeEdge(e);\n\n var forwardName = label.forwardName;\n delete label.reversed;\n delete label.forwardName;\n g.setEdge(e.w, e.v, label, forwardName);\n }\n });\n}\n","var _ = require(\"./lodash\");\nvar util = require(\"./util\");\n\nmodule.exports = addBorderSegments;\n\nfunction addBorderSegments(g) {\n function dfs(v) {\n var children = g.children(v);\n var node = g.node(v);\n if (children.length) {\n _.forEach(children, dfs);\n }\n\n if (_.has(node, \"minRank\")) {\n node.borderLeft = [];\n node.borderRight = [];\n for (var rank = node.minRank, maxRank = node.maxRank + 1;\n rank < maxRank;\n ++rank) {\n addBorderNode(g, \"borderLeft\", \"_bl\", v, node, rank);\n addBorderNode(g, \"borderRight\", \"_br\", v, node, rank);\n }\n }\n }\n\n _.forEach(g.children(), dfs);\n}\n\nfunction addBorderNode(g, prop, prefix, sg, sgNode, rank) {\n var label = { width: 0, height: 0, rank: rank, borderType: prop };\n var prev = sgNode[prop][rank - 1];\n var curr = util.addDummyNode(g, \"border\", label, prefix);\n sgNode[prop][rank] = curr;\n g.setParent(curr, sg);\n if (prev) {\n g.setEdge(prev, curr, { weight: 1 });\n }\n}\n","\"use strict\";\n\nvar _ = require(\"./lodash\");\n\nmodule.exports = {\n adjust: adjust,\n undo: undo\n};\n\nfunction adjust(g) {\n var rankDir = g.graph().rankdir.toLowerCase();\n if (rankDir === \"lr\" || rankDir === \"rl\") {\n swapWidthHeight(g);\n }\n}\n\nfunction undo(g) {\n var rankDir = g.graph().rankdir.toLowerCase();\n if (rankDir === \"bt\" || rankDir === \"rl\") {\n reverseY(g);\n }\n\n if (rankDir === \"lr\" || rankDir === \"rl\") {\n swapXY(g);\n swapWidthHeight(g);\n }\n}\n\nfunction swapWidthHeight(g) {\n _.forEach(g.nodes(), function(v) { swapWidthHeightOne(g.node(v)); });\n _.forEach(g.edges(), function(e) { swapWidthHeightOne(g.edge(e)); });\n}\n\nfunction swapWidthHeightOne(attrs) {\n var w = attrs.width;\n attrs.width = attrs.height;\n attrs.height = w;\n}\n\nfunction reverseY(g) {\n _.forEach(g.nodes(), function(v) { reverseYOne(g.node(v)); });\n\n _.forEach(g.edges(), function(e) {\n var edge = g.edge(e);\n _.forEach(edge.points, reverseYOne);\n if (_.has(edge, \"y\")) {\n reverseYOne(edge);\n }\n });\n}\n\nfunction reverseYOne(attrs) {\n attrs.y = -attrs.y;\n}\n\nfunction swapXY(g) {\n _.forEach(g.nodes(), function(v) { swapXYOne(g.node(v)); });\n\n _.forEach(g.edges(), function(e) {\n var edge = g.edge(e);\n _.forEach(edge.points, swapXYOne);\n if (_.has(edge, \"x\")) {\n swapXYOne(edge);\n }\n });\n}\n\nfunction swapXYOne(attrs) {\n var x = attrs.x;\n attrs.x = attrs.y;\n attrs.y = x;\n}\n","/*\n * Simple doubly linked list implementation derived from Cormen, et al.,\n * \"Introduction to Algorithms\".\n */\n\nmodule.exports = List;\n\nfunction List() {\n var sentinel = {};\n sentinel._next = sentinel._prev = sentinel;\n this._sentinel = sentinel;\n}\n\nList.prototype.dequeue = function() {\n var sentinel = this._sentinel;\n var entry = sentinel._prev;\n if (entry !== sentinel) {\n unlink(entry);\n return entry;\n }\n};\n\nList.prototype.enqueue = function(entry) {\n var sentinel = this._sentinel;\n if (entry._prev && entry._next) {\n unlink(entry);\n }\n entry._next = sentinel._next;\n sentinel._next._prev = entry;\n sentinel._next = entry;\n entry._prev = sentinel;\n};\n\nList.prototype.toString = function() {\n var strs = [];\n var sentinel = this._sentinel;\n var curr = sentinel._prev;\n while (curr !== sentinel) {\n strs.push(JSON.stringify(curr, filterOutLinks));\n curr = curr._prev;\n }\n return \"[\" + strs.join(\", \") + \"]\";\n};\n\nfunction unlink(entry) {\n entry._prev._next = entry._next;\n entry._next._prev = entry._prev;\n delete entry._next;\n delete entry._prev;\n}\n\nfunction filterOutLinks(k, v) {\n if (k !== \"_next\" && k !== \"_prev\") {\n return v;\n }\n}\n","var _ = require(\"./lodash\");\nvar util = require(\"./util\");\nvar Graph = require(\"./graphlib\").Graph;\n\nmodule.exports = {\n debugOrdering: debugOrdering\n};\n\n/* istanbul ignore next */\nfunction debugOrdering(g) {\n var layerMatrix = util.buildLayerMatrix(g);\n\n var h = new Graph({ compound: true, multigraph: true }).setGraph({});\n\n _.forEach(g.nodes(), function(v) {\n h.setNode(v, { label: v });\n h.setParent(v, \"layer\" + g.node(v).rank);\n });\n\n _.forEach(g.edges(), function(e) {\n h.setEdge(e.v, e.w, {}, e.name);\n });\n\n _.forEach(layerMatrix, function(layer, i) {\n var layerV = \"layer\" + i;\n h.setNode(layerV, { rank: \"same\" });\n _.reduce(layer, function(u, v) {\n h.setEdge(u, v, { style: \"invis\" });\n return v;\n });\n });\n\n return h;\n}\n","/* global window */\n\nvar graphlib;\n\nif (typeof require === \"function\") {\n try {\n graphlib = require(\"graphlib\");\n } catch (e) {\n // continue regardless of error\n }\n}\n\nif (!graphlib) {\n graphlib = window.graphlib;\n}\n\nmodule.exports = graphlib;\n","var _ = require(\"./lodash\");\nvar Graph = require(\"./graphlib\").Graph;\nvar List = require(\"./data/list\");\n\n/*\n * A greedy heuristic for finding a feedback arc set for a graph. A feedback\n * arc set is a set of edges that can be removed to make a graph acyclic.\n * The algorithm comes from: P. Eades, X. Lin, and W. F. Smyth, \"A fast and\n * effective heuristic for the feedback arc set problem.\" This implementation\n * adjusts that from the paper to allow for weighted edges.\n */\nmodule.exports = greedyFAS;\n\nvar DEFAULT_WEIGHT_FN = _.constant(1);\n\nfunction greedyFAS(g, weightFn) {\n if (g.nodeCount() <= 1) {\n return [];\n }\n var state = buildState(g, weightFn || DEFAULT_WEIGHT_FN);\n var results = doGreedyFAS(state.graph, state.buckets, state.zeroIdx);\n\n // Expand multi-edges\n return _.flatten(_.map(results, function(e) {\n return g.outEdges(e.v, e.w);\n }), true);\n}\n\nfunction doGreedyFAS(g, buckets, zeroIdx) {\n var results = [];\n var sources = buckets[buckets.length - 1];\n var sinks = buckets[0];\n\n var entry;\n while (g.nodeCount()) {\n while ((entry = sinks.dequeue())) { removeNode(g, buckets, zeroIdx, entry); }\n while ((entry = sources.dequeue())) { removeNode(g, buckets, zeroIdx, entry); }\n if (g.nodeCount()) {\n for (var i = buckets.length - 2; i > 0; --i) {\n entry = buckets[i].dequeue();\n if (entry) {\n results = results.concat(removeNode(g, buckets, zeroIdx, entry, true));\n break;\n }\n }\n }\n }\n\n return results;\n}\n\nfunction removeNode(g, buckets, zeroIdx, entry, collectPredecessors) {\n var results = collectPredecessors ? [] : undefined;\n\n _.forEach(g.inEdges(entry.v), function(edge) {\n var weight = g.edge(edge);\n var uEntry = g.node(edge.v);\n\n if (collectPredecessors) {\n results.push({ v: edge.v, w: edge.w });\n }\n\n uEntry.out -= weight;\n assignBucket(buckets, zeroIdx, uEntry);\n });\n\n _.forEach(g.outEdges(entry.v), function(edge) {\n var weight = g.edge(edge);\n var w = edge.w;\n var wEntry = g.node(w);\n wEntry[\"in\"] -= weight;\n assignBucket(buckets, zeroIdx, wEntry);\n });\n\n g.removeNode(entry.v);\n\n return results;\n}\n\nfunction buildState(g, weightFn) {\n var fasGraph = new Graph();\n var maxIn = 0;\n var maxOut = 0;\n\n _.forEach(g.nodes(), function(v) {\n fasGraph.setNode(v, { v: v, \"in\": 0, out: 0 });\n });\n\n // Aggregate weights on nodes, but also sum the weights across multi-edges\n // into a single edge for the fasGraph.\n _.forEach(g.edges(), function(e) {\n var prevWeight = fasGraph.edge(e.v, e.w) || 0;\n var weight = weightFn(e);\n var edgeWeight = prevWeight + weight;\n fasGraph.setEdge(e.v, e.w, edgeWeight);\n maxOut = Math.max(maxOut, fasGraph.node(e.v).out += weight);\n maxIn = Math.max(maxIn, fasGraph.node(e.w)[\"in\"] += weight);\n });\n\n var buckets = _.range(maxOut + maxIn + 3).map(function() { return new List(); });\n var zeroIdx = maxIn + 1;\n\n _.forEach(fasGraph.nodes(), function(v) {\n assignBucket(buckets, zeroIdx, fasGraph.node(v));\n });\n\n return { graph: fasGraph, buckets: buckets, zeroIdx: zeroIdx };\n}\n\nfunction assignBucket(buckets, zeroIdx, entry) {\n if (!entry.out) {\n buckets[0].enqueue(entry);\n } else if (!entry[\"in\"]) {\n buckets[buckets.length - 1].enqueue(entry);\n } else {\n buckets[entry.out - entry[\"in\"] + zeroIdx].enqueue(entry);\n }\n}\n","\"use strict\";\n\nvar _ = require(\"./lodash\");\nvar acyclic = require(\"./acyclic\");\nvar normalize = require(\"./normalize\");\nvar rank = require(\"./rank\");\nvar normalizeRanks = require(\"./util\").normalizeRanks;\nvar parentDummyChains = require(\"./parent-dummy-chains\");\nvar removeEmptyRanks = require(\"./util\").removeEmptyRanks;\nvar nestingGraph = require(\"./nesting-graph\");\nvar addBorderSegments = require(\"./add-border-segments\");\nvar coordinateSystem = require(\"./coordinate-system\");\nvar order = require(\"./order\");\nvar position = require(\"./position\");\nvar util = require(\"./util\");\nvar Graph = require(\"./graphlib\").Graph;\n\nmodule.exports = layout;\n\nfunction layout(g, opts) {\n var time = opts && opts.debugTiming ? util.time : util.notime;\n time(\"layout\", function() {\n var layoutGraph = \n time(\" buildLayoutGraph\", function() { return buildLayoutGraph(g); });\n time(\" runLayout\", function() { runLayout(layoutGraph, time); });\n time(\" updateInputGraph\", function() { updateInputGraph(g, layoutGraph); });\n });\n}\n\nfunction runLayout(g, time) {\n time(\" makeSpaceForEdgeLabels\", function() { makeSpaceForEdgeLabels(g); });\n time(\" removeSelfEdges\", function() { removeSelfEdges(g); });\n time(\" acyclic\", function() { acyclic.run(g); });\n time(\" nestingGraph.run\", function() { nestingGraph.run(g); });\n time(\" rank\", function() { rank(util.asNonCompoundGraph(g)); });\n time(\" injectEdgeLabelProxies\", function() { injectEdgeLabelProxies(g); });\n time(\" removeEmptyRanks\", function() { removeEmptyRanks(g); });\n time(\" nestingGraph.cleanup\", function() { nestingGraph.cleanup(g); });\n time(\" normalizeRanks\", function() { normalizeRanks(g); });\n time(\" assignRankMinMax\", function() { assignRankMinMax(g); });\n time(\" removeEdgeLabelProxies\", function() { removeEdgeLabelProxies(g); });\n time(\" normalize.run\", function() { normalize.run(g); });\n time(\" parentDummyChains\", function() { parentDummyChains(g); });\n time(\" addBorderSegments\", function() { addBorderSegments(g); });\n time(\" order\", function() { order(g); });\n time(\" insertSelfEdges\", function() { insertSelfEdges(g); });\n time(\" adjustCoordinateSystem\", function() { coordinateSystem.adjust(g); });\n time(\" position\", function() { position(g); });\n time(\" positionSelfEdges\", function() { positionSelfEdges(g); });\n time(\" removeBorderNodes\", function() { removeBorderNodes(g); });\n time(\" normalize.undo\", function() { normalize.undo(g); });\n time(\" fixupEdgeLabelCoords\", function() { fixupEdgeLabelCoords(g); });\n time(\" undoCoordinateSystem\", function() { coordinateSystem.undo(g); });\n time(\" translateGraph\", function() { translateGraph(g); });\n time(\" assignNodeIntersects\", function() { assignNodeIntersects(g); });\n time(\" reversePoints\", function() { reversePointsForReversedEdges(g); });\n time(\" acyclic.undo\", function() { acyclic.undo(g); });\n}\n\n/*\n * Copies final layout information from the layout graph back to the input\n * graph. This process only copies whitelisted attributes from the layout graph\n * to the input graph, so it serves as a good place to determine what\n * attributes can influence layout.\n */\nfunction updateInputGraph(inputGraph, layoutGraph) {\n _.forEach(inputGraph.nodes(), function(v) {\n var inputLabel = inputGraph.node(v);\n var layoutLabel = layoutGraph.node(v);\n\n if (inputLabel) {\n inputLabel.x = layoutLabel.x;\n inputLabel.y = layoutLabel.y;\n\n if (layoutGraph.children(v).length) {\n inputLabel.width = layoutLabel.width;\n inputLabel.height = layoutLabel.height;\n }\n }\n });\n\n _.forEach(inputGraph.edges(), function(e) {\n var inputLabel = inputGraph.edge(e);\n var layoutLabel = layoutGraph.edge(e);\n\n inputLabel.points = layoutLabel.points;\n if (_.has(layoutLabel, \"x\")) {\n inputLabel.x = layoutLabel.x;\n inputLabel.y = layoutLabel.y;\n }\n });\n\n inputGraph.graph().width = layoutGraph.graph().width;\n inputGraph.graph().height = layoutGraph.graph().height;\n}\n\nvar graphNumAttrs = [\"nodesep\", \"edgesep\", \"ranksep\", \"marginx\", \"marginy\"];\nvar graphDefaults = { ranksep: 50, edgesep: 20, nodesep: 50, rankdir: \"tb\" };\nvar graphAttrs = [\"acyclicer\", \"ranker\", \"rankdir\", \"align\"];\nvar nodeNumAttrs = [\"width\", \"height\"];\nvar nodeDefaults = { width: 0, height: 0 };\nvar edgeNumAttrs = [\"minlen\", \"weight\", \"width\", \"height\", \"labeloffset\"];\nvar edgeDefaults = {\n minlen: 1, weight: 1, width: 0, height: 0,\n labeloffset: 10, labelpos: \"r\"\n};\nvar edgeAttrs = [\"labelpos\"];\n\n/*\n * Constructs a new graph from the input graph, which can be used for layout.\n * This process copies only whitelisted attributes from the input graph to the\n * layout graph. Thus this function serves as a good place to determine what\n * attributes can influence layout.\n */\nfunction buildLayoutGraph(inputGraph) {\n var g = new Graph({ multigraph: true, compound: true });\n var graph = canonicalize(inputGraph.graph());\n\n g.setGraph(_.merge({},\n graphDefaults,\n selectNumberAttrs(graph, graphNumAttrs),\n _.pick(graph, graphAttrs)));\n\n _.forEach(inputGraph.nodes(), function(v) {\n var node = canonicalize(inputGraph.node(v));\n g.setNode(v, _.defaults(selectNumberAttrs(node, nodeNumAttrs), nodeDefaults));\n g.setParent(v, inputGraph.parent(v));\n });\n\n _.forEach(inputGraph.edges(), function(e) {\n var edge = canonicalize(inputGraph.edge(e));\n g.setEdge(e, _.merge({},\n edgeDefaults,\n selectNumberAttrs(edge, edgeNumAttrs),\n _.pick(edge, edgeAttrs)));\n });\n\n return g;\n}\n\n/*\n * This idea comes from the Gansner paper: to account for edge labels in our\n * layout we split each rank in half by doubling minlen and halving ranksep.\n * Then we can place labels at these mid-points between nodes.\n *\n * We also add some minimal padding to the width to push the label for the edge\n * away from the edge itself a bit.\n */\nfunction makeSpaceForEdgeLabels(g) {\n var graph = g.graph();\n graph.ranksep /= 2;\n _.forEach(g.edges(), function(e) {\n var edge = g.edge(e);\n edge.minlen *= 2;\n if (edge.labelpos.toLowerCase() !== \"c\") {\n if (graph.rankdir === \"TB\" || graph.rankdir === \"BT\") {\n edge.width += edge.labeloffset;\n } else {\n edge.height += edge.labeloffset;\n }\n }\n });\n}\n\n/*\n * Creates temporary dummy nodes that capture the rank in which each edge's\n * label is going to, if it has one of non-zero width and height. We do this\n * so that we can safely remove empty ranks while preserving balance for the\n * label's position.\n */\nfunction injectEdgeLabelProxies(g) {\n _.forEach(g.edges(), function(e) {\n var edge = g.edge(e);\n if (edge.width && edge.height) {\n var v = g.node(e.v);\n var w = g.node(e.w);\n var label = { rank: (w.rank - v.rank) / 2 + v.rank, e: e };\n util.addDummyNode(g, \"edge-proxy\", label, \"_ep\");\n }\n });\n}\n\nfunction assignRankMinMax(g) {\n var maxRank = 0;\n _.forEach(g.nodes(), function(v) {\n var node = g.node(v);\n if (node.borderTop) {\n node.minRank = g.node(node.borderTop).rank;\n node.maxRank = g.node(node.borderBottom).rank;\n maxRank = _.max(maxRank, node.maxRank);\n }\n });\n g.graph().maxRank = maxRank;\n}\n\nfunction removeEdgeLabelProxies(g) {\n _.forEach(g.nodes(), function(v) {\n var node = g.node(v);\n if (node.dummy === \"edge-proxy\") {\n g.edge(node.e).labelRank = node.rank;\n g.removeNode(v);\n }\n });\n}\n\nfunction translateGraph(g) {\n var minX = Number.POSITIVE_INFINITY;\n var maxX = 0;\n var minY = Number.POSITIVE_INFINITY;\n var maxY = 0;\n var graphLabel = g.graph();\n var marginX = graphLabel.marginx || 0;\n var marginY = graphLabel.marginy || 0;\n\n function getExtremes(attrs) {\n var x = attrs.x;\n var y = attrs.y;\n var w = attrs.width;\n var h = attrs.height;\n minX = Math.min(minX, x - w / 2);\n maxX = Math.max(maxX, x + w / 2);\n minY = Math.min(minY, y - h / 2);\n maxY = Math.max(maxY, y + h / 2);\n }\n\n _.forEach(g.nodes(), function(v) { getExtremes(g.node(v)); });\n _.forEach(g.edges(), function(e) {\n var edge = g.edge(e);\n if (_.has(edge, \"x\")) {\n getExtremes(edge);\n }\n });\n\n minX -= marginX;\n minY -= marginY;\n\n _.forEach(g.nodes(), function(v) {\n var node = g.node(v);\n node.x -= minX;\n node.y -= minY;\n });\n\n _.forEach(g.edges(), function(e) {\n var edge = g.edge(e);\n _.forEach(edge.points, function(p) {\n p.x -= minX;\n p.y -= minY;\n });\n if (_.has(edge, \"x\")) { edge.x -= minX; }\n if (_.has(edge, \"y\")) { edge.y -= minY; }\n });\n\n graphLabel.width = maxX - minX + marginX;\n graphLabel.height = maxY - minY + marginY;\n}\n\nfunction assignNodeIntersects(g) {\n _.forEach(g.edges(), function(e) {\n var edge = g.edge(e);\n var nodeV = g.node(e.v);\n var nodeW = g.node(e.w);\n var p1, p2;\n if (!edge.points) {\n edge.points = [];\n p1 = nodeW;\n p2 = nodeV;\n } else {\n p1 = edge.points[0];\n p2 = edge.points[edge.points.length - 1];\n }\n edge.points.unshift(util.intersectRect(nodeV, p1));\n edge.points.push(util.intersectRect(nodeW, p2));\n });\n}\n\nfunction fixupEdgeLabelCoords(g) {\n _.forEach(g.edges(), function(e) {\n var edge = g.edge(e);\n if (_.has(edge, \"x\")) {\n if (edge.labelpos === \"l\" || edge.labelpos === \"r\") {\n edge.width -= edge.labeloffset;\n }\n switch (edge.labelpos) {\n case \"l\": edge.x -= edge.width / 2 + edge.labeloffset; break;\n case \"r\": edge.x += edge.width / 2 + edge.labeloffset; break;\n }\n }\n });\n}\n\nfunction reversePointsForReversedEdges(g) {\n _.forEach(g.edges(), function(e) {\n var edge = g.edge(e);\n if (edge.reversed) {\n edge.points.reverse();\n }\n });\n}\n\nfunction removeBorderNodes(g) {\n _.forEach(g.nodes(), function(v) {\n if (g.children(v).length) {\n var node = g.node(v);\n var t = g.node(node.borderTop);\n var b = g.node(node.borderBottom);\n var l = g.node(_.last(node.borderLeft));\n var r = g.node(_.last(node.borderRight));\n\n node.width = Math.abs(r.x - l.x);\n node.height = Math.abs(b.y - t.y);\n node.x = l.x + node.width / 2;\n node.y = t.y + node.height / 2;\n }\n });\n\n _.forEach(g.nodes(), function(v) {\n if (g.node(v).dummy === \"border\") {\n g.removeNode(v);\n }\n });\n}\n\nfunction removeSelfEdges(g) {\n _.forEach(g.edges(), function(e) {\n if (e.v === e.w) {\n var node = g.node(e.v);\n if (!node.selfEdges) {\n node.selfEdges = [];\n }\n node.selfEdges.push({ e: e, label: g.edge(e) });\n g.removeEdge(e);\n }\n });\n}\n\nfunction insertSelfEdges(g) {\n var layers = util.buildLayerMatrix(g);\n _.forEach(layers, function(layer) {\n var orderShift = 0;\n _.forEach(layer, function(v, i) {\n var node = g.node(v);\n node.order = i + orderShift;\n _.forEach(node.selfEdges, function(selfEdge) {\n util.addDummyNode(g, \"selfedge\", {\n width: selfEdge.label.width,\n height: selfEdge.label.height,\n rank: node.rank,\n order: i + (++orderShift),\n e: selfEdge.e,\n label: selfEdge.label\n }, \"_se\");\n });\n delete node.selfEdges;\n });\n });\n}\n\nfunction positionSelfEdges(g) {\n _.forEach(g.nodes(), function(v) {\n var node = g.node(v);\n if (node.dummy === \"selfedge\") {\n var selfNode = g.node(node.e.v);\n var x = selfNode.x + selfNode.width / 2;\n var y = selfNode.y;\n var dx = node.x - x;\n var dy = selfNode.height / 2;\n g.setEdge(node.e, node.label);\n g.removeNode(v);\n node.label.points = [\n { x: x + 2 * dx / 3, y: y - dy },\n { x: x + 5 * dx / 6, y: y - dy },\n { x: x + dx , y: y },\n { x: x + 5 * dx / 6, y: y + dy },\n { x: x + 2 * dx / 3, y: y + dy }\n ];\n node.label.x = node.x;\n node.label.y = node.y;\n }\n });\n}\n\nfunction selectNumberAttrs(obj, attrs) {\n return _.mapValues(_.pick(obj, attrs), Number);\n}\n\nfunction canonicalize(attrs) {\n var newAttrs = {};\n _.forEach(attrs, function(v, k) {\n newAttrs[k.toLowerCase()] = v;\n });\n return newAttrs;\n}\n","/* global window */\n\nvar lodash;\n\nif (typeof require === \"function\") {\n try {\n lodash = {\n cloneDeep: require(\"lodash/cloneDeep\"),\n constant: require(\"lodash/constant\"),\n defaults: require(\"lodash/defaults\"),\n each: require(\"lodash/each\"),\n filter: require(\"lodash/filter\"),\n find: require(\"lodash/find\"),\n flatten: require(\"lodash/flatten\"),\n forEach: require(\"lodash/forEach\"),\n forIn: require(\"lodash/forIn\"),\n has: require(\"lodash/has\"),\n isUndefined: require(\"lodash/isUndefined\"),\n last: require(\"lodash/last\"),\n map: require(\"lodash/map\"),\n mapValues: require(\"lodash/mapValues\"),\n max: require(\"lodash/max\"),\n merge: require(\"lodash/merge\"),\n min: require(\"lodash/min\"),\n minBy: require(\"lodash/minBy\"),\n now: require(\"lodash/now\"),\n pick: require(\"lodash/pick\"),\n range: require(\"lodash/range\"),\n reduce: require(\"lodash/reduce\"),\n sortBy: require(\"lodash/sortBy\"),\n uniqueId: require(\"lodash/uniqueId\"),\n values: require(\"lodash/values\"),\n zipObject: require(\"lodash/zipObject\"),\n };\n } catch (e) {\n // continue regardless of error\n }\n}\n\nif (!lodash) {\n lodash = window._;\n}\n\nmodule.exports = lodash;\n","var _ = require(\"./lodash\");\nvar util = require(\"./util\");\n\nmodule.exports = {\n run: run,\n cleanup: cleanup\n};\n\n/*\n * A nesting graph creates dummy nodes for the tops and bottoms of subgraphs,\n * adds appropriate edges to ensure that all cluster nodes are placed between\n * these boundries, and ensures that the graph is connected.\n *\n * In addition we ensure, through the use of the minlen property, that nodes\n * and subgraph border nodes to not end up on the same rank.\n *\n * Preconditions:\n *\n * 1. Input graph is a DAG\n * 2. Nodes in the input graph has a minlen attribute\n *\n * Postconditions:\n *\n * 1. Input graph is connected.\n * 2. Dummy nodes are added for the tops and bottoms of subgraphs.\n * 3. The minlen attribute for nodes is adjusted to ensure nodes do not\n * get placed on the same rank as subgraph border nodes.\n *\n * The nesting graph idea comes from Sander, \"Layout of Compound Directed\n * Graphs.\"\n */\nfunction run(g) {\n var root = util.addDummyNode(g, \"root\", {}, \"_root\");\n var depths = treeDepths(g);\n var height = _.max(_.values(depths)) - 1; // Note: depths is an Object not an array\n var nodeSep = 2 * height + 1;\n\n g.graph().nestingRoot = root;\n\n // Multiply minlen by nodeSep to align nodes on non-border ranks.\n _.forEach(g.edges(), function(e) { g.edge(e).minlen *= nodeSep; });\n\n // Calculate a weight that is sufficient to keep subgraphs vertically compact\n var weight = sumWeights(g) + 1;\n\n // Create border nodes and link them up\n _.forEach(g.children(), function(child) {\n dfs(g, root, nodeSep, weight, height, depths, child);\n });\n\n // Save the multiplier for node layers for later removal of empty border\n // layers.\n g.graph().nodeRankFactor = nodeSep;\n}\n\nfunction dfs(g, root, nodeSep, weight, height, depths, v) {\n var children = g.children(v);\n if (!children.length) {\n if (v !== root) {\n g.setEdge(root, v, { weight: 0, minlen: nodeSep });\n }\n return;\n }\n\n var top = util.addBorderNode(g, \"_bt\");\n var bottom = util.addBorderNode(g, \"_bb\");\n var label = g.node(v);\n\n g.setParent(top, v);\n label.borderTop = top;\n g.setParent(bottom, v);\n label.borderBottom = bottom;\n\n _.forEach(children, function(child) {\n dfs(g, root, nodeSep, weight, height, depths, child);\n\n var childNode = g.node(child);\n var childTop = childNode.borderTop ? childNode.borderTop : child;\n var childBottom = childNode.borderBottom ? childNode.borderBottom : child;\n var thisWeight = childNode.borderTop ? weight : 2 * weight;\n var minlen = childTop !== childBottom ? 1 : height - depths[v] + 1;\n\n g.setEdge(top, childTop, {\n weight: thisWeight,\n minlen: minlen,\n nestingEdge: true\n });\n\n g.setEdge(childBottom, bottom, {\n weight: thisWeight,\n minlen: minlen,\n nestingEdge: true\n });\n });\n\n if (!g.parent(v)) {\n g.setEdge(root, top, { weight: 0, minlen: height + depths[v] });\n }\n}\n\nfunction treeDepths(g) {\n var depths = {};\n function dfs(v, depth) {\n var children = g.children(v);\n if (children && children.length) {\n _.forEach(children, function(child) {\n dfs(child, depth + 1);\n });\n }\n depths[v] = depth;\n }\n _.forEach(g.children(), function(v) { dfs(v, 1); });\n return depths;\n}\n\nfunction sumWeights(g) {\n return _.reduce(g.edges(), function(acc, e) {\n return acc + g.edge(e).weight;\n }, 0);\n}\n\nfunction cleanup(g) {\n var graphLabel = g.graph();\n g.removeNode(graphLabel.nestingRoot);\n delete graphLabel.nestingRoot;\n _.forEach(g.edges(), function(e) {\n var edge = g.edge(e);\n if (edge.nestingEdge) {\n g.removeEdge(e);\n }\n });\n}\n","\"use strict\";\n\nvar _ = require(\"./lodash\");\nvar util = require(\"./util\");\n\nmodule.exports = {\n run: run,\n undo: undo\n};\n\n/*\n * Breaks any long edges in the graph into short segments that span 1 layer\n * each. This operation is undoable with the denormalize function.\n *\n * Pre-conditions:\n *\n * 1. The input graph is a DAG.\n * 2. Each node in the graph has a \"rank\" property.\n *\n * Post-condition:\n *\n * 1. All edges in the graph have a length of 1.\n * 2. Dummy nodes are added where edges have been split into segments.\n * 3. The graph is augmented with a \"dummyChains\" attribute which contains\n * the first dummy in each chain of dummy nodes produced.\n */\nfunction run(g) {\n g.graph().dummyChains = [];\n _.forEach(g.edges(), function(edge) { normalizeEdge(g, edge); });\n}\n\nfunction normalizeEdge(g, e) {\n var v = e.v;\n var vRank = g.node(v).rank;\n var w = e.w;\n var wRank = g.node(w).rank;\n var name = e.name;\n var edgeLabel = g.edge(e);\n var labelRank = edgeLabel.labelRank;\n\n if (wRank === vRank + 1) return;\n\n g.removeEdge(e);\n\n var dummy, attrs, i;\n for (i = 0, ++vRank; vRank < wRank; ++i, ++vRank) {\n edgeLabel.points = [];\n attrs = {\n width: 0, height: 0,\n edgeLabel: edgeLabel, edgeObj: e,\n rank: vRank\n };\n dummy = util.addDummyNode(g, \"edge\", attrs, \"_d\");\n if (vRank === labelRank) {\n attrs.width = edgeLabel.width;\n attrs.height = edgeLabel.height;\n attrs.dummy = \"edge-label\";\n attrs.labelpos = edgeLabel.labelpos;\n }\n g.setEdge(v, dummy, { weight: edgeLabel.weight }, name);\n if (i === 0) {\n g.graph().dummyChains.push(dummy);\n }\n v = dummy;\n }\n\n g.setEdge(v, w, { weight: edgeLabel.weight }, name);\n}\n\nfunction undo(g) {\n _.forEach(g.graph().dummyChains, function(v) {\n var node = g.node(v);\n var origLabel = node.edgeLabel;\n var w;\n g.setEdge(node.edgeObj, origLabel);\n while (node.dummy) {\n w = g.successors(v)[0];\n g.removeNode(v);\n origLabel.points.push({ x: node.x, y: node.y });\n if (node.dummy === \"edge-label\") {\n origLabel.x = node.x;\n origLabel.y = node.y;\n origLabel.width = node.width;\n origLabel.height = node.height;\n }\n v = w;\n node = g.node(v);\n }\n });\n}\n","var _ = require(\"../lodash\");\n\nmodule.exports = addSubgraphConstraints;\n\nfunction addSubgraphConstraints(g, cg, vs) {\n var prev = {},\n rootPrev;\n\n _.forEach(vs, function(v) {\n var child = g.parent(v),\n parent,\n prevChild;\n while (child) {\n parent = g.parent(child);\n if (parent) {\n prevChild = prev[parent];\n prev[parent] = child;\n } else {\n prevChild = rootPrev;\n rootPrev = child;\n }\n if (prevChild && prevChild !== child) {\n cg.setEdge(prevChild, child);\n return;\n }\n child = parent;\n }\n });\n\n /*\n function dfs(v) {\n var children = v ? g.children(v) : g.children();\n if (children.length) {\n var min = Number.POSITIVE_INFINITY,\n subgraphs = [];\n _.each(children, function(child) {\n var childMin = dfs(child);\n if (g.children(child).length) {\n subgraphs.push({ v: child, order: childMin });\n }\n min = Math.min(min, childMin);\n });\n _.reduce(_.sortBy(subgraphs, \"order\"), function(prev, curr) {\n cg.setEdge(prev.v, curr.v);\n return curr;\n });\n return min;\n }\n return g.node(v).order;\n }\n dfs(undefined);\n */\n}\n","var _ = require(\"../lodash\");\n\nmodule.exports = barycenter;\n\nfunction barycenter(g, movable) {\n return _.map(movable, function(v) {\n var inV = g.inEdges(v);\n if (!inV.length) {\n return { v: v };\n } else {\n var result = _.reduce(inV, function(acc, e) {\n var edge = g.edge(e),\n nodeU = g.node(e.v);\n return {\n sum: acc.sum + (edge.weight * nodeU.order),\n weight: acc.weight + edge.weight\n };\n }, { sum: 0, weight: 0 });\n\n return {\n v: v,\n barycenter: result.sum / result.weight,\n weight: result.weight\n };\n }\n });\n}\n\n","var _ = require(\"../lodash\");\nvar Graph = require(\"../graphlib\").Graph;\n\nmodule.exports = buildLayerGraph;\n\n/*\n * Constructs a graph that can be used to sort a layer of nodes. The graph will\n * contain all base and subgraph nodes from the request layer in their original\n * hierarchy and any edges that are incident on these nodes and are of the type\n * requested by the \"relationship\" parameter.\n *\n * Nodes from the requested rank that do not have parents are assigned a root\n * node in the output graph, which is set in the root graph attribute. This\n * makes it easy to walk the hierarchy of movable nodes during ordering.\n *\n * Pre-conditions:\n *\n * 1. Input graph is a DAG\n * 2. Base nodes in the input graph have a rank attribute\n * 3. Subgraph nodes in the input graph has minRank and maxRank attributes\n * 4. Edges have an assigned weight\n *\n * Post-conditions:\n *\n * 1. Output graph has all nodes in the movable rank with preserved\n * hierarchy.\n * 2. Root nodes in the movable layer are made children of the node\n * indicated by the root attribute of the graph.\n * 3. Non-movable nodes incident on movable nodes, selected by the\n * relationship parameter, are included in the graph (without hierarchy).\n * 4. Edges incident on movable nodes, selected by the relationship\n * parameter, are added to the output graph.\n * 5. The weights for copied edges are aggregated as need, since the output\n * graph is not a multi-graph.\n */\nfunction buildLayerGraph(g, rank, relationship) {\n var root = createRootNode(g),\n result = new Graph({ compound: true }).setGraph({ root: root })\n .setDefaultNodeLabel(function(v) { return g.node(v); });\n\n _.forEach(g.nodes(), function(v) {\n var node = g.node(v),\n parent = g.parent(v);\n\n if (node.rank === rank || node.minRank <= rank && rank <= node.maxRank) {\n result.setNode(v);\n result.setParent(v, parent || root);\n\n // This assumes we have only short edges!\n _.forEach(g[relationship](v), function(e) {\n var u = e.v === v ? e.w : e.v,\n edge = result.edge(u, v),\n weight = !_.isUndefined(edge) ? edge.weight : 0;\n result.setEdge(u, v, { weight: g.edge(e).weight + weight });\n });\n\n if (_.has(node, \"minRank\")) {\n result.setNode(v, {\n borderLeft: node.borderLeft[rank],\n borderRight: node.borderRight[rank]\n });\n }\n }\n });\n\n return result;\n}\n\nfunction createRootNode(g) {\n var v;\n while (g.hasNode((v = _.uniqueId(\"_root\"))));\n return v;\n}\n","\"use strict\";\n\nvar _ = require(\"../lodash\");\n\nmodule.exports = crossCount;\n\n/*\n * A function that takes a layering (an array of layers, each with an array of\n * ordererd nodes) and a graph and returns a weighted crossing count.\n *\n * Pre-conditions:\n *\n * 1. Input graph must be simple (not a multigraph), directed, and include\n * only simple edges.\n * 2. Edges in the input graph must have assigned weights.\n *\n * Post-conditions:\n *\n * 1. The graph and layering matrix are left unchanged.\n *\n * This algorithm is derived from Barth, et al., \"Bilayer Cross Counting.\"\n */\nfunction crossCount(g, layering) {\n var cc = 0;\n for (var i = 1; i < layering.length; ++i) {\n cc += twoLayerCrossCount(g, layering[i-1], layering[i]);\n }\n return cc;\n}\n\nfunction twoLayerCrossCount(g, northLayer, southLayer) {\n // Sort all of the edges between the north and south layers by their position\n // in the north layer and then the south. Map these edges to the position of\n // their head in the south layer.\n var southPos = _.zipObject(southLayer,\n _.map(southLayer, function (v, i) { return i; }));\n var southEntries = _.flatten(_.map(northLayer, function(v) {\n return _.sortBy(_.map(g.outEdges(v), function(e) {\n return { pos: southPos[e.w], weight: g.edge(e).weight };\n }), \"pos\");\n }), true);\n\n // Build the accumulator tree\n var firstIndex = 1;\n while (firstIndex < southLayer.length) firstIndex <<= 1;\n var treeSize = 2 * firstIndex - 1;\n firstIndex -= 1;\n var tree = _.map(new Array(treeSize), function() { return 0; });\n\n // Calculate the weighted crossings\n var cc = 0;\n _.forEach(southEntries.forEach(function(entry) {\n var index = entry.pos + firstIndex;\n tree[index] += entry.weight;\n var weightSum = 0;\n while (index > 0) {\n if (index % 2) {\n weightSum += tree[index + 1];\n }\n index = (index - 1) >> 1;\n tree[index] += entry.weight;\n }\n cc += entry.weight * weightSum;\n }));\n\n return cc;\n}\n","\"use strict\";\n\nvar _ = require(\"../lodash\");\nvar initOrder = require(\"./init-order\");\nvar crossCount = require(\"./cross-count\");\nvar sortSubgraph = require(\"./sort-subgraph\");\nvar buildLayerGraph = require(\"./build-layer-graph\");\nvar addSubgraphConstraints = require(\"./add-subgraph-constraints\");\nvar Graph = require(\"../graphlib\").Graph;\nvar util = require(\"../util\");\n\nmodule.exports = order;\n\n/*\n * Applies heuristics to minimize edge crossings in the graph and sets the best\n * order solution as an order attribute on each node.\n *\n * Pre-conditions:\n *\n * 1. Graph must be DAG\n * 2. Graph nodes must be objects with a \"rank\" attribute\n * 3. Graph edges must have the \"weight\" attribute\n *\n * Post-conditions:\n *\n * 1. Graph nodes will have an \"order\" attribute based on the results of the\n * algorithm.\n */\nfunction order(g) {\n var maxRank = util.maxRank(g),\n downLayerGraphs = buildLayerGraphs(g, _.range(1, maxRank + 1), \"inEdges\"),\n upLayerGraphs = buildLayerGraphs(g, _.range(maxRank - 1, -1, -1), \"outEdges\");\n\n var layering = initOrder(g);\n assignOrder(g, layering);\n\n var bestCC = Number.POSITIVE_INFINITY,\n best;\n\n for (var i = 0, lastBest = 0; lastBest < 4; ++i, ++lastBest) {\n sweepLayerGraphs(i % 2 ? downLayerGraphs : upLayerGraphs, i % 4 >= 2);\n\n layering = util.buildLayerMatrix(g);\n var cc = crossCount(g, layering);\n if (cc < bestCC) {\n lastBest = 0;\n best = _.cloneDeep(layering);\n bestCC = cc;\n }\n }\n\n assignOrder(g, best);\n}\n\nfunction buildLayerGraphs(g, ranks, relationship) {\n return _.map(ranks, function(rank) {\n return buildLayerGraph(g, rank, relationship);\n });\n}\n\nfunction sweepLayerGraphs(layerGraphs, biasRight) {\n var cg = new Graph();\n _.forEach(layerGraphs, function(lg) {\n var root = lg.graph().root;\n var sorted = sortSubgraph(lg, root, cg, biasRight);\n _.forEach(sorted.vs, function(v, i) {\n lg.node(v).order = i;\n });\n addSubgraphConstraints(lg, cg, sorted.vs);\n });\n}\n\nfunction assignOrder(g, layering) {\n _.forEach(layering, function(layer) {\n _.forEach(layer, function(v, i) {\n g.node(v).order = i;\n });\n });\n}\n","\"use strict\";\n\nvar _ = require(\"../lodash\");\n\nmodule.exports = initOrder;\n\n/*\n * Assigns an initial order value for each node by performing a DFS search\n * starting from nodes in the first rank. Nodes are assigned an order in their\n * rank as they are first visited.\n *\n * This approach comes from Gansner, et al., \"A Technique for Drawing Directed\n * Graphs.\"\n *\n * Returns a layering matrix with an array per layer and each layer sorted by\n * the order of its nodes.\n */\nfunction initOrder(g) {\n var visited = {};\n var simpleNodes = _.filter(g.nodes(), function(v) {\n return !g.children(v).length;\n });\n var maxRank = _.max(_.map(simpleNodes, function(v) { return g.node(v).rank; }));\n var layers = _.map(_.range(maxRank + 1), function() { return []; });\n\n function dfs(v) {\n if (_.has(visited, v)) return;\n visited[v] = true;\n var node = g.node(v);\n layers[node.rank].push(v);\n _.forEach(g.successors(v), dfs);\n }\n\n var orderedVs = _.sortBy(simpleNodes, function(v) { return g.node(v).rank; });\n _.forEach(orderedVs, dfs);\n\n return layers;\n}\n","\"use strict\";\n\nvar _ = require(\"../lodash\");\n\nmodule.exports = resolveConflicts;\n\n/*\n * Given a list of entries of the form {v, barycenter, weight} and a\n * constraint graph this function will resolve any conflicts between the\n * constraint graph and the barycenters for the entries. If the barycenters for\n * an entry would violate a constraint in the constraint graph then we coalesce\n * the nodes in the conflict into a new node that respects the contraint and\n * aggregates barycenter and weight information.\n *\n * This implementation is based on the description in Forster, \"A Fast and\n * Simple Hueristic for Constrained Two-Level Crossing Reduction,\" thought it\n * differs in some specific details.\n *\n * Pre-conditions:\n *\n * 1. Each entry has the form {v, barycenter, weight}, or if the node has\n * no barycenter, then {v}.\n *\n * Returns:\n *\n * A new list of entries of the form {vs, i, barycenter, weight}. The list\n * `vs` may either be a singleton or it may be an aggregation of nodes\n * ordered such that they do not violate constraints from the constraint\n * graph. The property `i` is the lowest original index of any of the\n * elements in `vs`.\n */\nfunction resolveConflicts(entries, cg) {\n var mappedEntries = {};\n _.forEach(entries, function(entry, i) {\n var tmp = mappedEntries[entry.v] = {\n indegree: 0,\n \"in\": [],\n out: [],\n vs: [entry.v],\n i: i\n };\n if (!_.isUndefined(entry.barycenter)) {\n tmp.barycenter = entry.barycenter;\n tmp.weight = entry.weight;\n }\n });\n\n _.forEach(cg.edges(), function(e) {\n var entryV = mappedEntries[e.v];\n var entryW = mappedEntries[e.w];\n if (!_.isUndefined(entryV) && !_.isUndefined(entryW)) {\n entryW.indegree++;\n entryV.out.push(mappedEntries[e.w]);\n }\n });\n\n var sourceSet = _.filter(mappedEntries, function(entry) {\n return !entry.indegree;\n });\n\n return doResolveConflicts(sourceSet);\n}\n\nfunction doResolveConflicts(sourceSet) {\n var entries = [];\n\n function handleIn(vEntry) {\n return function(uEntry) {\n if (uEntry.merged) {\n return;\n }\n if (_.isUndefined(uEntry.barycenter) ||\n _.isUndefined(vEntry.barycenter) ||\n uEntry.barycenter >= vEntry.barycenter) {\n mergeEntries(vEntry, uEntry);\n }\n };\n }\n\n function handleOut(vEntry) {\n return function(wEntry) {\n wEntry[\"in\"].push(vEntry);\n if (--wEntry.indegree === 0) {\n sourceSet.push(wEntry);\n }\n };\n }\n\n while (sourceSet.length) {\n var entry = sourceSet.pop();\n entries.push(entry);\n _.forEach(entry[\"in\"].reverse(), handleIn(entry));\n _.forEach(entry.out, handleOut(entry));\n }\n\n return _.map(_.filter(entries, function(entry) { return !entry.merged; }),\n function(entry) {\n return _.pick(entry, [\"vs\", \"i\", \"barycenter\", \"weight\"]);\n });\n\n}\n\nfunction mergeEntries(target, source) {\n var sum = 0;\n var weight = 0;\n\n if (target.weight) {\n sum += target.barycenter * target.weight;\n weight += target.weight;\n }\n\n if (source.weight) {\n sum += source.barycenter * source.weight;\n weight += source.weight;\n }\n\n target.vs = source.vs.concat(target.vs);\n target.barycenter = sum / weight;\n target.weight = weight;\n target.i = Math.min(source.i, target.i);\n source.merged = true;\n}\n","var _ = require(\"../lodash\");\nvar barycenter = require(\"./barycenter\");\nvar resolveConflicts = require(\"./resolve-conflicts\");\nvar sort = require(\"./sort\");\n\nmodule.exports = sortSubgraph;\n\nfunction sortSubgraph(g, v, cg, biasRight) {\n var movable = g.children(v);\n var node = g.node(v);\n var bl = node ? node.borderLeft : undefined;\n var br = node ? node.borderRight: undefined;\n var subgraphs = {};\n\n if (bl) {\n movable = _.filter(movable, function(w) {\n return w !== bl && w !== br;\n });\n }\n\n var barycenters = barycenter(g, movable);\n _.forEach(barycenters, function(entry) {\n if (g.children(entry.v).length) {\n var subgraphResult = sortSubgraph(g, entry.v, cg, biasRight);\n subgraphs[entry.v] = subgraphResult;\n if (_.has(subgraphResult, \"barycenter\")) {\n mergeBarycenters(entry, subgraphResult);\n }\n }\n });\n\n var entries = resolveConflicts(barycenters, cg);\n expandSubgraphs(entries, subgraphs);\n\n var result = sort(entries, biasRight);\n\n if (bl) {\n result.vs = _.flatten([bl, result.vs, br], true);\n if (g.predecessors(bl).length) {\n var blPred = g.node(g.predecessors(bl)[0]),\n brPred = g.node(g.predecessors(br)[0]);\n if (!_.has(result, \"barycenter\")) {\n result.barycenter = 0;\n result.weight = 0;\n }\n result.barycenter = (result.barycenter * result.weight +\n blPred.order + brPred.order) / (result.weight + 2);\n result.weight += 2;\n }\n }\n\n return result;\n}\n\nfunction expandSubgraphs(entries, subgraphs) {\n _.forEach(entries, function(entry) {\n entry.vs = _.flatten(entry.vs.map(function(v) {\n if (subgraphs[v]) {\n return subgraphs[v].vs;\n }\n return v;\n }), true);\n });\n}\n\nfunction mergeBarycenters(target, other) {\n if (!_.isUndefined(target.barycenter)) {\n target.barycenter = (target.barycenter * target.weight +\n other.barycenter * other.weight) /\n (target.weight + other.weight);\n target.weight += other.weight;\n } else {\n target.barycenter = other.barycenter;\n target.weight = other.weight;\n }\n}\n","var _ = require(\"../lodash\");\nvar util = require(\"../util\");\n\nmodule.exports = sort;\n\nfunction sort(entries, biasRight) {\n var parts = util.partition(entries, function(entry) {\n return _.has(entry, \"barycenter\");\n });\n var sortable = parts.lhs,\n unsortable = _.sortBy(parts.rhs, function(entry) { return -entry.i; }),\n vs = [],\n sum = 0,\n weight = 0,\n vsIndex = 0;\n\n sortable.sort(compareWithBias(!!biasRight));\n\n vsIndex = consumeUnsortable(vs, unsortable, vsIndex);\n\n _.forEach(sortable, function (entry) {\n vsIndex += entry.vs.length;\n vs.push(entry.vs);\n sum += entry.barycenter * entry.weight;\n weight += entry.weight;\n vsIndex = consumeUnsortable(vs, unsortable, vsIndex);\n });\n\n var result = { vs: _.flatten(vs, true) };\n if (weight) {\n result.barycenter = sum / weight;\n result.weight = weight;\n }\n return result;\n}\n\nfunction consumeUnsortable(vs, unsortable, index) {\n var last;\n while (unsortable.length && (last = _.last(unsortable)).i <= index) {\n unsortable.pop();\n vs.push(last.vs);\n index++;\n }\n return index;\n}\n\nfunction compareWithBias(bias) {\n return function(entryV, entryW) {\n if (entryV.barycenter < entryW.barycenter) {\n return -1;\n } else if (entryV.barycenter > entryW.barycenter) {\n return 1;\n }\n\n return !bias ? entryV.i - entryW.i : entryW.i - entryV.i;\n };\n}\n","var _ = require(\"./lodash\");\n\nmodule.exports = parentDummyChains;\n\nfunction parentDummyChains(g) {\n var postorderNums = postorder(g);\n\n _.forEach(g.graph().dummyChains, function(v) {\n var node = g.node(v);\n var edgeObj = node.edgeObj;\n var pathData = findPath(g, postorderNums, edgeObj.v, edgeObj.w);\n var path = pathData.path;\n var lca = pathData.lca;\n var pathIdx = 0;\n var pathV = path[pathIdx];\n var ascending = true;\n\n while (v !== edgeObj.w) {\n node = g.node(v);\n\n if (ascending) {\n while ((pathV = path[pathIdx]) !== lca &&\n g.node(pathV).maxRank < node.rank) {\n pathIdx++;\n }\n\n if (pathV === lca) {\n ascending = false;\n }\n }\n\n if (!ascending) {\n while (pathIdx < path.length - 1 &&\n g.node(pathV = path[pathIdx + 1]).minRank <= node.rank) {\n pathIdx++;\n }\n pathV = path[pathIdx];\n }\n\n g.setParent(v, pathV);\n v = g.successors(v)[0];\n }\n });\n}\n\n// Find a path from v to w through the lowest common ancestor (LCA). Return the\n// full path and the LCA.\nfunction findPath(g, postorderNums, v, w) {\n var vPath = [];\n var wPath = [];\n var low = Math.min(postorderNums[v].low, postorderNums[w].low);\n var lim = Math.max(postorderNums[v].lim, postorderNums[w].lim);\n var parent;\n var lca;\n\n // Traverse up from v to find the LCA\n parent = v;\n do {\n parent = g.parent(parent);\n vPath.push(parent);\n } while (parent &&\n (postorderNums[parent].low > low || lim > postorderNums[parent].lim));\n lca = parent;\n\n // Traverse from w to LCA\n parent = w;\n while ((parent = g.parent(parent)) !== lca) {\n wPath.push(parent);\n }\n\n return { path: vPath.concat(wPath.reverse()), lca: lca };\n}\n\nfunction postorder(g) {\n var result = {};\n var lim = 0;\n\n function dfs(v) {\n var low = lim;\n _.forEach(g.children(v), dfs);\n result[v] = { low: low, lim: lim++ };\n }\n _.forEach(g.children(), dfs);\n\n return result;\n}\n","\"use strict\";\n\nvar _ = require(\"../lodash\");\nvar Graph = require(\"../graphlib\").Graph;\nvar util = require(\"../util\");\n\n/*\n * This module provides coordinate assignment based on Brandes and Köpf, \"Fast\n * and Simple Horizontal Coordinate Assignment.\"\n */\n\nmodule.exports = {\n positionX: positionX,\n findType1Conflicts: findType1Conflicts,\n findType2Conflicts: findType2Conflicts,\n addConflict: addConflict,\n hasConflict: hasConflict,\n verticalAlignment: verticalAlignment,\n horizontalCompaction: horizontalCompaction,\n alignCoordinates: alignCoordinates,\n findSmallestWidthAlignment: findSmallestWidthAlignment,\n balance: balance\n};\n\n/*\n * Marks all edges in the graph with a type-1 conflict with the \"type1Conflict\"\n * property. A type-1 conflict is one where a non-inner segment crosses an\n * inner segment. An inner segment is an edge with both incident nodes marked\n * with the \"dummy\" property.\n *\n * This algorithm scans layer by layer, starting with the second, for type-1\n * conflicts between the current layer and the previous layer. For each layer\n * it scans the nodes from left to right until it reaches one that is incident\n * on an inner segment. It then scans predecessors to determine if they have\n * edges that cross that inner segment. At the end a final scan is done for all\n * nodes on the current rank to see if they cross the last visited inner\n * segment.\n *\n * This algorithm (safely) assumes that a dummy node will only be incident on a\n * single node in the layers being scanned.\n */\nfunction findType1Conflicts(g, layering) {\n var conflicts = {};\n\n function visitLayer(prevLayer, layer) {\n var\n // last visited node in the previous layer that is incident on an inner\n // segment.\n k0 = 0,\n // Tracks the last node in this layer scanned for crossings with a type-1\n // segment.\n scanPos = 0,\n prevLayerLength = prevLayer.length,\n lastNode = _.last(layer);\n\n _.forEach(layer, function(v, i) {\n var w = findOtherInnerSegmentNode(g, v),\n k1 = w ? g.node(w).order : prevLayerLength;\n\n if (w || v === lastNode) {\n _.forEach(layer.slice(scanPos, i +1), function(scanNode) {\n _.forEach(g.predecessors(scanNode), function(u) {\n var uLabel = g.node(u),\n uPos = uLabel.order;\n if ((uPos < k0 || k1 < uPos) &&\n !(uLabel.dummy && g.node(scanNode).dummy)) {\n addConflict(conflicts, u, scanNode);\n }\n });\n });\n scanPos = i + 1;\n k0 = k1;\n }\n });\n\n return layer;\n }\n\n _.reduce(layering, visitLayer);\n return conflicts;\n}\n\nfunction findType2Conflicts(g, layering) {\n var conflicts = {};\n\n function scan(south, southPos, southEnd, prevNorthBorder, nextNorthBorder) {\n var v;\n _.forEach(_.range(southPos, southEnd), function(i) {\n v = south[i];\n if (g.node(v).dummy) {\n _.forEach(g.predecessors(v), function(u) {\n var uNode = g.node(u);\n if (uNode.dummy &&\n (uNode.order < prevNorthBorder || uNode.order > nextNorthBorder)) {\n addConflict(conflicts, u, v);\n }\n });\n }\n });\n }\n\n\n function visitLayer(north, south) {\n var prevNorthPos = -1,\n nextNorthPos,\n southPos = 0;\n\n _.forEach(south, function(v, southLookahead) {\n if (g.node(v).dummy === \"border\") {\n var predecessors = g.predecessors(v);\n if (predecessors.length) {\n nextNorthPos = g.node(predecessors[0]).order;\n scan(south, southPos, southLookahead, prevNorthPos, nextNorthPos);\n southPos = southLookahead;\n prevNorthPos = nextNorthPos;\n }\n }\n scan(south, southPos, south.length, nextNorthPos, north.length);\n });\n\n return south;\n }\n\n _.reduce(layering, visitLayer);\n return conflicts;\n}\n\nfunction findOtherInnerSegmentNode(g, v) {\n if (g.node(v).dummy) {\n return _.find(g.predecessors(v), function(u) {\n return g.node(u).dummy;\n });\n }\n}\n\nfunction addConflict(conflicts, v, w) {\n if (v > w) {\n var tmp = v;\n v = w;\n w = tmp;\n }\n\n var conflictsV = conflicts[v];\n if (!conflictsV) {\n conflicts[v] = conflictsV = {};\n }\n conflictsV[w] = true;\n}\n\nfunction hasConflict(conflicts, v, w) {\n if (v > w) {\n var tmp = v;\n v = w;\n w = tmp;\n }\n return _.has(conflicts[v], w);\n}\n\n/*\n * Try to align nodes into vertical \"blocks\" where possible. This algorithm\n * attempts to align a node with one of its median neighbors. If the edge\n * connecting a neighbor is a type-1 conflict then we ignore that possibility.\n * If a previous node has already formed a block with a node after the node\n * we're trying to form a block with, we also ignore that possibility - our\n * blocks would be split in that scenario.\n */\nfunction verticalAlignment(g, layering, conflicts, neighborFn) {\n var root = {},\n align = {},\n pos = {};\n\n // We cache the position here based on the layering because the graph and\n // layering may be out of sync. The layering matrix is manipulated to\n // generate different extreme alignments.\n _.forEach(layering, function(layer) {\n _.forEach(layer, function(v, order) {\n root[v] = v;\n align[v] = v;\n pos[v] = order;\n });\n });\n\n _.forEach(layering, function(layer) {\n var prevIdx = -1;\n _.forEach(layer, function(v) {\n var ws = neighborFn(v);\n if (ws.length) {\n ws = _.sortBy(ws, function(w) { return pos[w]; });\n var mp = (ws.length - 1) / 2;\n for (var i = Math.floor(mp), il = Math.ceil(mp); i <= il; ++i) {\n var w = ws[i];\n if (align[v] === v &&\n prevIdx < pos[w] &&\n !hasConflict(conflicts, v, w)) {\n align[w] = v;\n align[v] = root[v] = root[w];\n prevIdx = pos[w];\n }\n }\n }\n });\n });\n\n return { root: root, align: align };\n}\n\nfunction horizontalCompaction(g, layering, root, align, reverseSep) {\n // This portion of the algorithm differs from BK due to a number of problems.\n // Instead of their algorithm we construct a new block graph and do two\n // sweeps. The first sweep places blocks with the smallest possible\n // coordinates. The second sweep removes unused space by moving blocks to the\n // greatest coordinates without violating separation.\n var xs = {},\n blockG = buildBlockGraph(g, layering, root, reverseSep),\n borderType = reverseSep ? \"borderLeft\" : \"borderRight\";\n\n function iterate(setXsFunc, nextNodesFunc) {\n var stack = blockG.nodes();\n var elem = stack.pop();\n var visited = {};\n while (elem) {\n if (visited[elem]) {\n setXsFunc(elem);\n } else {\n visited[elem] = true;\n stack.push(elem);\n stack = stack.concat(nextNodesFunc(elem));\n }\n\n elem = stack.pop();\n }\n }\n\n // First pass, assign smallest coordinates\n function pass1(elem) {\n xs[elem] = blockG.inEdges(elem).reduce(function(acc, e) {\n return Math.max(acc, xs[e.v] + blockG.edge(e));\n }, 0);\n }\n\n // Second pass, assign greatest coordinates\n function pass2(elem) {\n var min = blockG.outEdges(elem).reduce(function(acc, e) {\n return Math.min(acc, xs[e.w] - blockG.edge(e));\n }, Number.POSITIVE_INFINITY);\n\n var node = g.node(elem);\n if (min !== Number.POSITIVE_INFINITY && node.borderType !== borderType) {\n xs[elem] = Math.max(xs[elem], min);\n }\n }\n\n iterate(pass1, blockG.predecessors.bind(blockG));\n iterate(pass2, blockG.successors.bind(blockG));\n\n // Assign x coordinates to all nodes\n _.forEach(align, function(v) {\n xs[v] = xs[root[v]];\n });\n\n return xs;\n}\n\n\nfunction buildBlockGraph(g, layering, root, reverseSep) {\n var blockGraph = new Graph(),\n graphLabel = g.graph(),\n sepFn = sep(graphLabel.nodesep, graphLabel.edgesep, reverseSep);\n\n _.forEach(layering, function(layer) {\n var u;\n _.forEach(layer, function(v) {\n var vRoot = root[v];\n blockGraph.setNode(vRoot);\n if (u) {\n var uRoot = root[u],\n prevMax = blockGraph.edge(uRoot, vRoot);\n blockGraph.setEdge(uRoot, vRoot, Math.max(sepFn(g, v, u), prevMax || 0));\n }\n u = v;\n });\n });\n\n return blockGraph;\n}\n\n/*\n * Returns the alignment that has the smallest width of the given alignments.\n */\nfunction findSmallestWidthAlignment(g, xss) {\n return _.minBy(_.values(xss), function (xs) {\n var max = Number.NEGATIVE_INFINITY;\n var min = Number.POSITIVE_INFINITY;\n\n _.forIn(xs, function (x, v) {\n var halfWidth = width(g, v) / 2;\n\n max = Math.max(x + halfWidth, max);\n min = Math.min(x - halfWidth, min);\n });\n\n return max - min;\n });\n}\n\n/*\n * Align the coordinates of each of the layout alignments such that\n * left-biased alignments have their minimum coordinate at the same point as\n * the minimum coordinate of the smallest width alignment and right-biased\n * alignments have their maximum coordinate at the same point as the maximum\n * coordinate of the smallest width alignment.\n */\nfunction alignCoordinates(xss, alignTo) {\n var alignToVals = _.values(alignTo),\n alignToMin = _.min(alignToVals),\n alignToMax = _.max(alignToVals);\n\n _.forEach([\"u\", \"d\"], function(vert) {\n _.forEach([\"l\", \"r\"], function(horiz) {\n var alignment = vert + horiz,\n xs = xss[alignment],\n delta;\n if (xs === alignTo) return;\n\n var xsVals = _.values(xs);\n delta = horiz === \"l\" ? alignToMin - _.min(xsVals) : alignToMax - _.max(xsVals);\n\n if (delta) {\n xss[alignment] = _.mapValues(xs, function(x) { return x + delta; });\n }\n });\n });\n}\n\nfunction balance(xss, align) {\n return _.mapValues(xss.ul, function(ignore, v) {\n if (align) {\n return xss[align.toLowerCase()][v];\n } else {\n var xs = _.sortBy(_.map(xss, v));\n return (xs[1] + xs[2]) / 2;\n }\n });\n}\n\nfunction positionX(g) {\n var layering = util.buildLayerMatrix(g);\n var conflicts = _.merge(\n findType1Conflicts(g, layering),\n findType2Conflicts(g, layering));\n\n var xss = {};\n var adjustedLayering;\n _.forEach([\"u\", \"d\"], function(vert) {\n adjustedLayering = vert === \"u\" ? layering : _.values(layering).reverse();\n _.forEach([\"l\", \"r\"], function(horiz) {\n if (horiz === \"r\") {\n adjustedLayering = _.map(adjustedLayering, function(inner) {\n return _.values(inner).reverse();\n });\n }\n\n var neighborFn = (vert === \"u\" ? g.predecessors : g.successors).bind(g);\n var align = verticalAlignment(g, adjustedLayering, conflicts, neighborFn);\n var xs = horizontalCompaction(g, adjustedLayering,\n align.root, align.align, horiz === \"r\");\n if (horiz === \"r\") {\n xs = _.mapValues(xs, function(x) { return -x; });\n }\n xss[vert + horiz] = xs;\n });\n });\n\n var smallestWidth = findSmallestWidthAlignment(g, xss);\n alignCoordinates(xss, smallestWidth);\n return balance(xss, g.graph().align);\n}\n\nfunction sep(nodeSep, edgeSep, reverseSep) {\n return function(g, v, w) {\n var vLabel = g.node(v);\n var wLabel = g.node(w);\n var sum = 0;\n var delta;\n\n sum += vLabel.width / 2;\n if (_.has(vLabel, \"labelpos\")) {\n switch (vLabel.labelpos.toLowerCase()) {\n case \"l\": delta = -vLabel.width / 2; break;\n case \"r\": delta = vLabel.width / 2; break;\n }\n }\n if (delta) {\n sum += reverseSep ? delta : -delta;\n }\n delta = 0;\n\n sum += (vLabel.dummy ? edgeSep : nodeSep) / 2;\n sum += (wLabel.dummy ? edgeSep : nodeSep) / 2;\n\n sum += wLabel.width / 2;\n if (_.has(wLabel, \"labelpos\")) {\n switch (wLabel.labelpos.toLowerCase()) {\n case \"l\": delta = wLabel.width / 2; break;\n case \"r\": delta = -wLabel.width / 2; break;\n }\n }\n if (delta) {\n sum += reverseSep ? delta : -delta;\n }\n delta = 0;\n\n return sum;\n };\n}\n\nfunction width(g, v) {\n return g.node(v).width;\n}\n","\"use strict\";\n\nvar _ = require(\"../lodash\");\nvar util = require(\"../util\");\nvar positionX = require(\"./bk\").positionX;\n\nmodule.exports = position;\n\nfunction position(g) {\n g = util.asNonCompoundGraph(g);\n\n positionY(g);\n _.forEach(positionX(g), function(x, v) {\n g.node(v).x = x;\n });\n}\n\nfunction positionY(g) {\n var layering = util.buildLayerMatrix(g);\n var rankSep = g.graph().ranksep;\n var prevY = 0;\n _.forEach(layering, function(layer) {\n var maxHeight = _.max(_.map(layer, function(v) { return g.node(v).height; }));\n _.forEach(layer, function(v) {\n g.node(v).y = prevY + maxHeight / 2;\n });\n prevY += maxHeight + rankSep;\n });\n}\n\n","\"use strict\";\n\nvar _ = require(\"../lodash\");\nvar Graph = require(\"../graphlib\").Graph;\nvar slack = require(\"./util\").slack;\n\nmodule.exports = feasibleTree;\n\n/*\n * Constructs a spanning tree with tight edges and adjusted the input node's\n * ranks to achieve this. A tight edge is one that is has a length that matches\n * its \"minlen\" attribute.\n *\n * The basic structure for this function is derived from Gansner, et al., \"A\n * Technique for Drawing Directed Graphs.\"\n *\n * Pre-conditions:\n *\n * 1. Graph must be a DAG.\n * 2. Graph must be connected.\n * 3. Graph must have at least one node.\n * 5. Graph nodes must have been previously assigned a \"rank\" property that\n * respects the \"minlen\" property of incident edges.\n * 6. Graph edges must have a \"minlen\" property.\n *\n * Post-conditions:\n *\n * - Graph nodes will have their rank adjusted to ensure that all edges are\n * tight.\n *\n * Returns a tree (undirected graph) that is constructed using only \"tight\"\n * edges.\n */\nfunction feasibleTree(g) {\n var t = new Graph({ directed: false });\n\n // Choose arbitrary node from which to start our tree\n var start = g.nodes()[0];\n var size = g.nodeCount();\n t.setNode(start, {});\n\n var edge, delta;\n while (tightTree(t, g) < size) {\n edge = findMinSlackEdge(t, g);\n delta = t.hasNode(edge.v) ? slack(g, edge) : -slack(g, edge);\n shiftRanks(t, g, delta);\n }\n\n return t;\n}\n\n/*\n * Finds a maximal tree of tight edges and returns the number of nodes in the\n * tree.\n */\nfunction tightTree(t, g) {\n function dfs(v) {\n _.forEach(g.nodeEdges(v), function(e) {\n var edgeV = e.v,\n w = (v === edgeV) ? e.w : edgeV;\n if (!t.hasNode(w) && !slack(g, e)) {\n t.setNode(w, {});\n t.setEdge(v, w, {});\n dfs(w);\n }\n });\n }\n\n _.forEach(t.nodes(), dfs);\n return t.nodeCount();\n}\n\n/*\n * Finds the edge with the smallest slack that is incident on tree and returns\n * it.\n */\nfunction findMinSlackEdge(t, g) {\n return _.minBy(g.edges(), function(e) {\n if (t.hasNode(e.v) !== t.hasNode(e.w)) {\n return slack(g, e);\n }\n });\n}\n\nfunction shiftRanks(t, g, delta) {\n _.forEach(t.nodes(), function(v) {\n g.node(v).rank += delta;\n });\n}\n","\"use strict\";\n\nvar rankUtil = require(\"./util\");\nvar longestPath = rankUtil.longestPath;\nvar feasibleTree = require(\"./feasible-tree\");\nvar networkSimplex = require(\"./network-simplex\");\n\nmodule.exports = rank;\n\n/*\n * Assigns a rank to each node in the input graph that respects the \"minlen\"\n * constraint specified on edges between nodes.\n *\n * This basic structure is derived from Gansner, et al., \"A Technique for\n * Drawing Directed Graphs.\"\n *\n * Pre-conditions:\n *\n * 1. Graph must be a connected DAG\n * 2. Graph nodes must be objects\n * 3. Graph edges must have \"weight\" and \"minlen\" attributes\n *\n * Post-conditions:\n *\n * 1. Graph nodes will have a \"rank\" attribute based on the results of the\n * algorithm. Ranks can start at any index (including negative), we'll\n * fix them up later.\n */\nfunction rank(g) {\n switch(g.graph().ranker) {\n case \"network-simplex\": networkSimplexRanker(g); break;\n case \"tight-tree\": tightTreeRanker(g); break;\n case \"longest-path\": longestPathRanker(g); break;\n default: networkSimplexRanker(g);\n }\n}\n\n// A fast and simple ranker, but results are far from optimal.\nvar longestPathRanker = longestPath;\n\nfunction tightTreeRanker(g) {\n longestPath(g);\n feasibleTree(g);\n}\n\nfunction networkSimplexRanker(g) {\n networkSimplex(g);\n}\n","\"use strict\";\n\nvar _ = require(\"../lodash\");\nvar feasibleTree = require(\"./feasible-tree\");\nvar slack = require(\"./util\").slack;\nvar initRank = require(\"./util\").longestPath;\nvar preorder = require(\"../graphlib\").alg.preorder;\nvar postorder = require(\"../graphlib\").alg.postorder;\nvar simplify = require(\"../util\").simplify;\n\nmodule.exports = networkSimplex;\n\n// Expose some internals for testing purposes\nnetworkSimplex.initLowLimValues = initLowLimValues;\nnetworkSimplex.initCutValues = initCutValues;\nnetworkSimplex.calcCutValue = calcCutValue;\nnetworkSimplex.leaveEdge = leaveEdge;\nnetworkSimplex.enterEdge = enterEdge;\nnetworkSimplex.exchangeEdges = exchangeEdges;\n\n/*\n * The network simplex algorithm assigns ranks to each node in the input graph\n * and iteratively improves the ranking to reduce the length of edges.\n *\n * Preconditions:\n *\n * 1. The input graph must be a DAG.\n * 2. All nodes in the graph must have an object value.\n * 3. All edges in the graph must have \"minlen\" and \"weight\" attributes.\n *\n * Postconditions:\n *\n * 1. All nodes in the graph will have an assigned \"rank\" attribute that has\n * been optimized by the network simplex algorithm. Ranks start at 0.\n *\n *\n * A rough sketch of the algorithm is as follows:\n *\n * 1. Assign initial ranks to each node. We use the longest path algorithm,\n * which assigns ranks to the lowest position possible. In general this\n * leads to very wide bottom ranks and unnecessarily long edges.\n * 2. Construct a feasible tight tree. A tight tree is one such that all\n * edges in the tree have no slack (difference between length of edge\n * and minlen for the edge). This by itself greatly improves the assigned\n * rankings by shorting edges.\n * 3. Iteratively find edges that have negative cut values. Generally a\n * negative cut value indicates that the edge could be removed and a new\n * tree edge could be added to produce a more compact graph.\n *\n * Much of the algorithms here are derived from Gansner, et al., \"A Technique\n * for Drawing Directed Graphs.\" The structure of the file roughly follows the\n * structure of the overall algorithm.\n */\nfunction networkSimplex(g) {\n g = simplify(g);\n initRank(g);\n var t = feasibleTree(g);\n initLowLimValues(t);\n initCutValues(t, g);\n\n var e, f;\n while ((e = leaveEdge(t))) {\n f = enterEdge(t, g, e);\n exchangeEdges(t, g, e, f);\n }\n}\n\n/*\n * Initializes cut values for all edges in the tree.\n */\nfunction initCutValues(t, g) {\n var vs = postorder(t, t.nodes());\n vs = vs.slice(0, vs.length - 1);\n _.forEach(vs, function(v) {\n assignCutValue(t, g, v);\n });\n}\n\nfunction assignCutValue(t, g, child) {\n var childLab = t.node(child);\n var parent = childLab.parent;\n t.edge(child, parent).cutvalue = calcCutValue(t, g, child);\n}\n\n/*\n * Given the tight tree, its graph, and a child in the graph calculate and\n * return the cut value for the edge between the child and its parent.\n */\nfunction calcCutValue(t, g, child) {\n var childLab = t.node(child);\n var parent = childLab.parent;\n // True if the child is on the tail end of the edge in the directed graph\n var childIsTail = true;\n // The graph's view of the tree edge we're inspecting\n var graphEdge = g.edge(child, parent);\n // The accumulated cut value for the edge between this node and its parent\n var cutValue = 0;\n\n if (!graphEdge) {\n childIsTail = false;\n graphEdge = g.edge(parent, child);\n }\n\n cutValue = graphEdge.weight;\n\n _.forEach(g.nodeEdges(child), function(e) {\n var isOutEdge = e.v === child,\n other = isOutEdge ? e.w : e.v;\n\n if (other !== parent) {\n var pointsToHead = isOutEdge === childIsTail,\n otherWeight = g.edge(e).weight;\n\n cutValue += pointsToHead ? otherWeight : -otherWeight;\n if (isTreeEdge(t, child, other)) {\n var otherCutValue = t.edge(child, other).cutvalue;\n cutValue += pointsToHead ? -otherCutValue : otherCutValue;\n }\n }\n });\n\n return cutValue;\n}\n\nfunction initLowLimValues(tree, root) {\n if (arguments.length < 2) {\n root = tree.nodes()[0];\n }\n dfsAssignLowLim(tree, {}, 1, root);\n}\n\nfunction dfsAssignLowLim(tree, visited, nextLim, v, parent) {\n var low = nextLim;\n var label = tree.node(v);\n\n visited[v] = true;\n _.forEach(tree.neighbors(v), function(w) {\n if (!_.has(visited, w)) {\n nextLim = dfsAssignLowLim(tree, visited, nextLim, w, v);\n }\n });\n\n label.low = low;\n label.lim = nextLim++;\n if (parent) {\n label.parent = parent;\n } else {\n // TODO should be able to remove this when we incrementally update low lim\n delete label.parent;\n }\n\n return nextLim;\n}\n\nfunction leaveEdge(tree) {\n return _.find(tree.edges(), function(e) {\n return tree.edge(e).cutvalue < 0;\n });\n}\n\nfunction enterEdge(t, g, edge) {\n var v = edge.v;\n var w = edge.w;\n\n // For the rest of this function we assume that v is the tail and w is the\n // head, so if we don't have this edge in the graph we should flip it to\n // match the correct orientation.\n if (!g.hasEdge(v, w)) {\n v = edge.w;\n w = edge.v;\n }\n\n var vLabel = t.node(v);\n var wLabel = t.node(w);\n var tailLabel = vLabel;\n var flip = false;\n\n // If the root is in the tail of the edge then we need to flip the logic that\n // checks for the head and tail nodes in the candidates function below.\n if (vLabel.lim > wLabel.lim) {\n tailLabel = wLabel;\n flip = true;\n }\n\n var candidates = _.filter(g.edges(), function(edge) {\n return flip === isDescendant(t, t.node(edge.v), tailLabel) &&\n flip !== isDescendant(t, t.node(edge.w), tailLabel);\n });\n\n return _.minBy(candidates, function(edge) { return slack(g, edge); });\n}\n\nfunction exchangeEdges(t, g, e, f) {\n var v = e.v;\n var w = e.w;\n t.removeEdge(v, w);\n t.setEdge(f.v, f.w, {});\n initLowLimValues(t);\n initCutValues(t, g);\n updateRanks(t, g);\n}\n\nfunction updateRanks(t, g) {\n var root = _.find(t.nodes(), function(v) { return !g.node(v).parent; });\n var vs = preorder(t, root);\n vs = vs.slice(1);\n _.forEach(vs, function(v) {\n var parent = t.node(v).parent,\n edge = g.edge(v, parent),\n flipped = false;\n\n if (!edge) {\n edge = g.edge(parent, v);\n flipped = true;\n }\n\n g.node(v).rank = g.node(parent).rank + (flipped ? edge.minlen : -edge.minlen);\n });\n}\n\n/*\n * Returns true if the edge is in the tree.\n */\nfunction isTreeEdge(tree, u, v) {\n return tree.hasEdge(u, v);\n}\n\n/*\n * Returns true if the specified node is descendant of the root node per the\n * assigned low and lim attributes in the tree.\n */\nfunction isDescendant(tree, vLabel, rootLabel) {\n return rootLabel.low <= vLabel.lim && vLabel.lim <= rootLabel.lim;\n}\n","\"use strict\";\n\nvar _ = require(\"../lodash\");\n\nmodule.exports = {\n longestPath: longestPath,\n slack: slack\n};\n\n/*\n * Initializes ranks for the input graph using the longest path algorithm. This\n * algorithm scales well and is fast in practice, it yields rather poor\n * solutions. Nodes are pushed to the lowest layer possible, leaving the bottom\n * ranks wide and leaving edges longer than necessary. However, due to its\n * speed, this algorithm is good for getting an initial ranking that can be fed\n * into other algorithms.\n *\n * This algorithm does not normalize layers because it will be used by other\n * algorithms in most cases. If using this algorithm directly, be sure to\n * run normalize at the end.\n *\n * Pre-conditions:\n *\n * 1. Input graph is a DAG.\n * 2. Input graph node labels can be assigned properties.\n *\n * Post-conditions:\n *\n * 1. Each node will be assign an (unnormalized) \"rank\" property.\n */\nfunction longestPath(g) {\n var visited = {};\n\n function dfs(v) {\n var label = g.node(v);\n if (_.has(visited, v)) {\n return label.rank;\n }\n visited[v] = true;\n\n var rank = _.min(_.map(g.outEdges(v), function(e) {\n return dfs(e.w) - g.edge(e).minlen;\n }));\n\n if (rank === Number.POSITIVE_INFINITY || // return value of _.map([]) for Lodash 3\n rank === undefined || // return value of _.map([]) for Lodash 4\n rank === null) { // return value of _.map([null])\n rank = 0;\n }\n\n return (label.rank = rank);\n }\n\n _.forEach(g.sources(), dfs);\n}\n\n/*\n * Returns the amount of slack for the given edge. The slack is defined as the\n * difference between the length of the edge and its minimum length.\n */\nfunction slack(g, e) {\n return g.node(e.w).rank - g.node(e.v).rank - g.edge(e).minlen;\n}\n","/* eslint \"no-console\": off */\n\n\"use strict\";\n\nvar _ = require(\"./lodash\");\nvar Graph = require(\"./graphlib\").Graph;\n\nmodule.exports = {\n addDummyNode: addDummyNode,\n simplify: simplify,\n asNonCompoundGraph: asNonCompoundGraph,\n successorWeights: successorWeights,\n predecessorWeights: predecessorWeights,\n intersectRect: intersectRect,\n buildLayerMatrix: buildLayerMatrix,\n normalizeRanks: normalizeRanks,\n removeEmptyRanks: removeEmptyRanks,\n addBorderNode: addBorderNode,\n maxRank: maxRank,\n partition: partition,\n time: time,\n notime: notime\n};\n\n/*\n * Adds a dummy node to the graph and return v.\n */\nfunction addDummyNode(g, type, attrs, name) {\n var v;\n do {\n v = _.uniqueId(name);\n } while (g.hasNode(v));\n\n attrs.dummy = type;\n g.setNode(v, attrs);\n return v;\n}\n\n/*\n * Returns a new graph with only simple edges. Handles aggregation of data\n * associated with multi-edges.\n */\nfunction simplify(g) {\n var simplified = new Graph().setGraph(g.graph());\n _.forEach(g.nodes(), function(v) { simplified.setNode(v, g.node(v)); });\n _.forEach(g.edges(), function(e) {\n var simpleLabel = simplified.edge(e.v, e.w) || { weight: 0, minlen: 1 };\n var label = g.edge(e);\n simplified.setEdge(e.v, e.w, {\n weight: simpleLabel.weight + label.weight,\n minlen: Math.max(simpleLabel.minlen, label.minlen)\n });\n });\n return simplified;\n}\n\nfunction asNonCompoundGraph(g) {\n var simplified = new Graph({ multigraph: g.isMultigraph() }).setGraph(g.graph());\n _.forEach(g.nodes(), function(v) {\n if (!g.children(v).length) {\n simplified.setNode(v, g.node(v));\n }\n });\n _.forEach(g.edges(), function(e) {\n simplified.setEdge(e, g.edge(e));\n });\n return simplified;\n}\n\nfunction successorWeights(g) {\n var weightMap = _.map(g.nodes(), function(v) {\n var sucs = {};\n _.forEach(g.outEdges(v), function(e) {\n sucs[e.w] = (sucs[e.w] || 0) + g.edge(e).weight;\n });\n return sucs;\n });\n return _.zipObject(g.nodes(), weightMap);\n}\n\nfunction predecessorWeights(g) {\n var weightMap = _.map(g.nodes(), function(v) {\n var preds = {};\n _.forEach(g.inEdges(v), function(e) {\n preds[e.v] = (preds[e.v] || 0) + g.edge(e).weight;\n });\n return preds;\n });\n return _.zipObject(g.nodes(), weightMap);\n}\n\n/*\n * Finds where a line starting at point ({x, y}) would intersect a rectangle\n * ({x, y, width, height}) if it were pointing at the rectangle's center.\n */\nfunction intersectRect(rect, point) {\n var x = rect.x;\n var y = rect.y;\n\n // Rectangle intersection algorithm from:\n // http://math.stackexchange.com/questions/108113/find-edge-between-two-boxes\n var dx = point.x - x;\n var dy = point.y - y;\n var w = rect.width / 2;\n var h = rect.height / 2;\n\n if (!dx && !dy) {\n throw new Error(\"Not possible to find intersection inside of the rectangle\");\n }\n\n var sx, sy;\n if (Math.abs(dy) * w > Math.abs(dx) * h) {\n // Intersection is top or bottom of rect.\n if (dy < 0) {\n h = -h;\n }\n sx = h * dx / dy;\n sy = h;\n } else {\n // Intersection is left or right of rect.\n if (dx < 0) {\n w = -w;\n }\n sx = w;\n sy = w * dy / dx;\n }\n\n return { x: x + sx, y: y + sy };\n}\n\n/*\n * Given a DAG with each node assigned \"rank\" and \"order\" properties, this\n * function will produce a matrix with the ids of each node.\n */\nfunction buildLayerMatrix(g) {\n var layering = _.map(_.range(maxRank(g) + 1), function() { return []; });\n _.forEach(g.nodes(), function(v) {\n var node = g.node(v);\n var rank = node.rank;\n if (!_.isUndefined(rank)) {\n layering[rank][node.order] = v;\n }\n });\n return layering;\n}\n\n/*\n * Adjusts the ranks for all nodes in the graph such that all nodes v have\n * rank(v) >= 0 and at least one node w has rank(w) = 0.\n */\nfunction normalizeRanks(g) {\n var min = _.min(_.map(g.nodes(), function(v) { return g.node(v).rank; }));\n _.forEach(g.nodes(), function(v) {\n var node = g.node(v);\n if (_.has(node, \"rank\")) {\n node.rank -= min;\n }\n });\n}\n\nfunction removeEmptyRanks(g) {\n // Ranks may not start at 0, so we need to offset them\n var offset = _.min(_.map(g.nodes(), function(v) { return g.node(v).rank; }));\n\n var layers = [];\n _.forEach(g.nodes(), function(v) {\n var rank = g.node(v).rank - offset;\n if (!layers[rank]) {\n layers[rank] = [];\n }\n layers[rank].push(v);\n });\n\n var delta = 0;\n var nodeRankFactor = g.graph().nodeRankFactor;\n _.forEach(layers, function(vs, i) {\n if (_.isUndefined(vs) && i % nodeRankFactor !== 0) {\n --delta;\n } else if (delta) {\n _.forEach(vs, function(v) { g.node(v).rank += delta; });\n }\n });\n}\n\nfunction addBorderNode(g, prefix, rank, order) {\n var node = {\n width: 0,\n height: 0\n };\n if (arguments.length >= 4) {\n node.rank = rank;\n node.order = order;\n }\n return addDummyNode(g, \"border\", node, prefix);\n}\n\nfunction maxRank(g) {\n return _.max(_.map(g.nodes(), function(v) {\n var rank = g.node(v).rank;\n if (!_.isUndefined(rank)) {\n return rank;\n }\n }));\n}\n\n/*\n * Partition a collection into two groups: `lhs` and `rhs`. If the supplied\n * function returns true for an entry it goes into `lhs`. Otherwise it goes\n * into `rhs.\n */\nfunction partition(collection, fn) {\n var result = { lhs: [], rhs: [] };\n _.forEach(collection, function(value) {\n if (fn(value)) {\n result.lhs.push(value);\n } else {\n result.rhs.push(value);\n }\n });\n return result;\n}\n\n/*\n * Returns a new function that wraps `fn` with a timer. The wrapper logs the\n * time it takes to execute the function.\n */\nfunction time(name, fn) {\n var start = _.now();\n try {\n return fn();\n } finally {\n console.log(name + \" time: \" + (_.now() - start) + \"ms\");\n }\n}\n\nfunction notime(name, fn) {\n return fn();\n}\n","module.exports = \"0.8.5\";\n","/*! @license DOMPurify 2.3.6 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/2.3.6/LICENSE */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = global || self, global.DOMPurify = factory());\n}(this, function () { 'use strict';\n\n function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\n var hasOwnProperty = Object.hasOwnProperty,\n setPrototypeOf = Object.setPrototypeOf,\n isFrozen = Object.isFrozen,\n getPrototypeOf = Object.getPrototypeOf,\n getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n var freeze = Object.freeze,\n seal = Object.seal,\n create = Object.create; // eslint-disable-line import/no-mutable-exports\n\n var _ref = typeof Reflect !== 'undefined' && Reflect,\n apply = _ref.apply,\n construct = _ref.construct;\n\n if (!apply) {\n apply = function apply(fun, thisValue, args) {\n return fun.apply(thisValue, args);\n };\n }\n\n if (!freeze) {\n freeze = function freeze(x) {\n return x;\n };\n }\n\n if (!seal) {\n seal = function seal(x) {\n return x;\n };\n }\n\n if (!construct) {\n construct = function construct(Func, args) {\n return new (Function.prototype.bind.apply(Func, [null].concat(_toConsumableArray(args))))();\n };\n }\n\n var arrayForEach = unapply(Array.prototype.forEach);\n var arrayPop = unapply(Array.prototype.pop);\n var arrayPush = unapply(Array.prototype.push);\n\n var stringToLowerCase = unapply(String.prototype.toLowerCase);\n var stringMatch = unapply(String.prototype.match);\n var stringReplace = unapply(String.prototype.replace);\n var stringIndexOf = unapply(String.prototype.indexOf);\n var stringTrim = unapply(String.prototype.trim);\n\n var regExpTest = unapply(RegExp.prototype.test);\n\n var typeErrorCreate = unconstruct(TypeError);\n\n function unapply(func) {\n return function (thisArg) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return apply(func, thisArg, args);\n };\n }\n\n function unconstruct(func) {\n return function () {\n for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return construct(func, args);\n };\n }\n\n /* Add properties to a lookup table */\n function addToSet(set, array) {\n if (setPrototypeOf) {\n // Make 'in' and truthy checks like Boolean(set.constructor)\n // independent of any properties defined on Object.prototype.\n // Prevent prototype setters from intercepting set as a this value.\n setPrototypeOf(set, null);\n }\n\n var l = array.length;\n while (l--) {\n var element = array[l];\n if (typeof element === 'string') {\n var lcElement = stringToLowerCase(element);\n if (lcElement !== element) {\n // Config presets (e.g. tags.js, attrs.js) are immutable.\n if (!isFrozen(array)) {\n array[l] = lcElement;\n }\n\n element = lcElement;\n }\n }\n\n set[element] = true;\n }\n\n return set;\n }\n\n /* Shallow clone an object */\n function clone(object) {\n var newObject = create(null);\n\n var property = void 0;\n for (property in object) {\n if (apply(hasOwnProperty, object, [property])) {\n newObject[property] = object[property];\n }\n }\n\n return newObject;\n }\n\n /* IE10 doesn't support __lookupGetter__ so lets'\n * simulate it. It also automatically checks\n * if the prop is function or getter and behaves\n * accordingly. */\n function lookupGetter(object, prop) {\n while (object !== null) {\n var desc = getOwnPropertyDescriptor(object, prop);\n if (desc) {\n if (desc.get) {\n return unapply(desc.get);\n }\n\n if (typeof desc.value === 'function') {\n return unapply(desc.value);\n }\n }\n\n object = getPrototypeOf(object);\n }\n\n function fallbackValue(element) {\n console.warn('fallback value for', element);\n return null;\n }\n\n return fallbackValue;\n }\n\n var html = freeze(['a', 'abbr', 'acronym', 'address', 'area', 'article', 'aside', 'audio', 'b', 'bdi', 'bdo', 'big', 'blink', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'center', 'cite', 'code', 'col', 'colgroup', 'content', 'data', 'datalist', 'dd', 'decorator', 'del', 'details', 'dfn', 'dialog', 'dir', 'div', 'dl', 'dt', 'element', 'em', 'fieldset', 'figcaption', 'figure', 'font', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'img', 'input', 'ins', 'kbd', 'label', 'legend', 'li', 'main', 'map', 'mark', 'marquee', 'menu', 'menuitem', 'meter', 'nav', 'nobr', 'ol', 'optgroup', 'option', 'output', 'p', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'section', 'select', 'shadow', 'small', 'source', 'spacer', 'span', 'strike', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'template', 'textarea', 'tfoot', 'th', 'thead', 'time', 'tr', 'track', 'tt', 'u', 'ul', 'var', 'video', 'wbr']);\n\n // SVG\n var svg = freeze(['svg', 'a', 'altglyph', 'altglyphdef', 'altglyphitem', 'animatecolor', 'animatemotion', 'animatetransform', 'circle', 'clippath', 'defs', 'desc', 'ellipse', 'filter', 'font', 'g', 'glyph', 'glyphref', 'hkern', 'image', 'line', 'lineargradient', 'marker', 'mask', 'metadata', 'mpath', 'path', 'pattern', 'polygon', 'polyline', 'radialgradient', 'rect', 'stop', 'style', 'switch', 'symbol', 'text', 'textpath', 'title', 'tref', 'tspan', 'view', 'vkern']);\n\n var svgFilters = freeze(['feBlend', 'feColorMatrix', 'feComponentTransfer', 'feComposite', 'feConvolveMatrix', 'feDiffuseLighting', 'feDisplacementMap', 'feDistantLight', 'feFlood', 'feFuncA', 'feFuncB', 'feFuncG', 'feFuncR', 'feGaussianBlur', 'feImage', 'feMerge', 'feMergeNode', 'feMorphology', 'feOffset', 'fePointLight', 'feSpecularLighting', 'feSpotLight', 'feTile', 'feTurbulence']);\n\n // List of SVG elements that are disallowed by default.\n // We still need to know them so that we can do namespace\n // checks properly in case one wants to add them to\n // allow-list.\n var svgDisallowed = freeze(['animate', 'color-profile', 'cursor', 'discard', 'fedropshadow', 'font-face', 'font-face-format', 'font-face-name', 'font-face-src', 'font-face-uri', 'foreignobject', 'hatch', 'hatchpath', 'mesh', 'meshgradient', 'meshpatch', 'meshrow', 'missing-glyph', 'script', 'set', 'solidcolor', 'unknown', 'use']);\n\n var mathMl = freeze(['math', 'menclose', 'merror', 'mfenced', 'mfrac', 'mglyph', 'mi', 'mlabeledtr', 'mmultiscripts', 'mn', 'mo', 'mover', 'mpadded', 'mphantom', 'mroot', 'mrow', 'ms', 'mspace', 'msqrt', 'mstyle', 'msub', 'msup', 'msubsup', 'mtable', 'mtd', 'mtext', 'mtr', 'munder', 'munderover']);\n\n // Similarly to SVG, we want to know all MathML elements,\n // even those that we disallow by default.\n var mathMlDisallowed = freeze(['maction', 'maligngroup', 'malignmark', 'mlongdiv', 'mscarries', 'mscarry', 'msgroup', 'mstack', 'msline', 'msrow', 'semantics', 'annotation', 'annotation-xml', 'mprescripts', 'none']);\n\n var text = freeze(['#text']);\n\n var html$1 = freeze(['accept', 'action', 'align', 'alt', 'autocapitalize', 'autocomplete', 'autopictureinpicture', 'autoplay', 'background', 'bgcolor', 'border', 'capture', 'cellpadding', 'cellspacing', 'checked', 'cite', 'class', 'clear', 'color', 'cols', 'colspan', 'controls', 'controlslist', 'coords', 'crossorigin', 'datetime', 'decoding', 'default', 'dir', 'disabled', 'disablepictureinpicture', 'disableremoteplayback', 'download', 'draggable', 'enctype', 'enterkeyhint', 'face', 'for', 'headers', 'height', 'hidden', 'high', 'href', 'hreflang', 'id', 'inputmode', 'integrity', 'ismap', 'kind', 'label', 'lang', 'list', 'loading', 'loop', 'low', 'max', 'maxlength', 'media', 'method', 'min', 'minlength', 'multiple', 'muted', 'name', 'nonce', 'noshade', 'novalidate', 'nowrap', 'open', 'optimum', 'pattern', 'placeholder', 'playsinline', 'poster', 'preload', 'pubdate', 'radiogroup', 'readonly', 'rel', 'required', 'rev', 'reversed', 'role', 'rows', 'rowspan', 'spellcheck', 'scope', 'selected', 'shape', 'size', 'sizes', 'span', 'srclang', 'start', 'src', 'srcset', 'step', 'style', 'summary', 'tabindex', 'title', 'translate', 'type', 'usemap', 'valign', 'value', 'width', 'xmlns', 'slot']);\n\n var svg$1 = freeze(['accent-height', 'accumulate', 'additive', 'alignment-baseline', 'ascent', 'attributename', 'attributetype', 'azimuth', 'basefrequency', 'baseline-shift', 'begin', 'bias', 'by', 'class', 'clip', 'clippathunits', 'clip-path', 'clip-rule', 'color', 'color-interpolation', 'color-interpolation-filters', 'color-profile', 'color-rendering', 'cx', 'cy', 'd', 'dx', 'dy', 'diffuseconstant', 'direction', 'display', 'divisor', 'dur', 'edgemode', 'elevation', 'end', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'filterunits', 'flood-color', 'flood-opacity', 'font-family', 'font-size', 'font-size-adjust', 'font-stretch', 'font-style', 'font-variant', 'font-weight', 'fx', 'fy', 'g1', 'g2', 'glyph-name', 'glyphref', 'gradientunits', 'gradienttransform', 'height', 'href', 'id', 'image-rendering', 'in', 'in2', 'k', 'k1', 'k2', 'k3', 'k4', 'kerning', 'keypoints', 'keysplines', 'keytimes', 'lang', 'lengthadjust', 'letter-spacing', 'kernelmatrix', 'kernelunitlength', 'lighting-color', 'local', 'marker-end', 'marker-mid', 'marker-start', 'markerheight', 'markerunits', 'markerwidth', 'maskcontentunits', 'maskunits', 'max', 'mask', 'media', 'method', 'mode', 'min', 'name', 'numoctaves', 'offset', 'operator', 'opacity', 'order', 'orient', 'orientation', 'origin', 'overflow', 'paint-order', 'path', 'pathlength', 'patterncontentunits', 'patterntransform', 'patternunits', 'points', 'preservealpha', 'preserveaspectratio', 'primitiveunits', 'r', 'rx', 'ry', 'radius', 'refx', 'refy', 'repeatcount', 'repeatdur', 'restart', 'result', 'rotate', 'scale', 'seed', 'shape-rendering', 'specularconstant', 'specularexponent', 'spreadmethod', 'startoffset', 'stddeviation', 'stitchtiles', 'stop-color', 'stop-opacity', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke', 'stroke-width', 'style', 'surfacescale', 'systemlanguage', 'tabindex', 'targetx', 'targety', 'transform', 'transform-origin', 'text-anchor', 'text-decoration', 'text-rendering', 'textlength', 'type', 'u1', 'u2', 'unicode', 'values', 'viewbox', 'visibility', 'version', 'vert-adv-y', 'vert-origin-x', 'vert-origin-y', 'width', 'word-spacing', 'wrap', 'writing-mode', 'xchannelselector', 'ychannelselector', 'x', 'x1', 'x2', 'xmlns', 'y', 'y1', 'y2', 'z', 'zoomandpan']);\n\n var mathMl$1 = freeze(['accent', 'accentunder', 'align', 'bevelled', 'close', 'columnsalign', 'columnlines', 'columnspan', 'denomalign', 'depth', 'dir', 'display', 'displaystyle', 'encoding', 'fence', 'frame', 'height', 'href', 'id', 'largeop', 'length', 'linethickness', 'lspace', 'lquote', 'mathbackground', 'mathcolor', 'mathsize', 'mathvariant', 'maxsize', 'minsize', 'movablelimits', 'notation', 'numalign', 'open', 'rowalign', 'rowlines', 'rowspacing', 'rowspan', 'rspace', 'rquote', 'scriptlevel', 'scriptminsize', 'scriptsizemultiplier', 'selection', 'separator', 'separators', 'stretchy', 'subscriptshift', 'supscriptshift', 'symmetric', 'voffset', 'width', 'xmlns']);\n\n var xml = freeze(['xlink:href', 'xml:id', 'xlink:title', 'xml:space', 'xmlns:xlink']);\n\n // eslint-disable-next-line unicorn/better-regex\n var MUSTACHE_EXPR = seal(/\\{\\{[\\s\\S]*|[\\s\\S]*\\}\\}/gm); // Specify template detection regex for SAFE_FOR_TEMPLATES mode\n var ERB_EXPR = seal(/<%[\\s\\S]*|[\\s\\S]*%>/gm);\n var DATA_ATTR = seal(/^data-[\\-\\w.\\u00B7-\\uFFFF]/); // eslint-disable-line no-useless-escape\n var ARIA_ATTR = seal(/^aria-[\\-\\w]+$/); // eslint-disable-line no-useless-escape\n var IS_ALLOWED_URI = seal(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i // eslint-disable-line no-useless-escape\n );\n var IS_SCRIPT_OR_DATA = seal(/^(?:\\w+script|data):/i);\n var ATTR_WHITESPACE = seal(/[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205F\\u3000]/g // eslint-disable-line no-control-regex\n );\n var DOCTYPE_NAME = seal(/^html$/i);\n\n var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n function _toConsumableArray$1(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\n var getGlobal = function getGlobal() {\n return typeof window === 'undefined' ? null : window;\n };\n\n /**\n * Creates a no-op policy for internal use only.\n * Don't export this function outside this module!\n * @param {?TrustedTypePolicyFactory} trustedTypes The policy factory.\n * @param {Document} document The document object (to determine policy name suffix)\n * @return {?TrustedTypePolicy} The policy created (or null, if Trusted Types\n * are not supported).\n */\n var _createTrustedTypesPolicy = function _createTrustedTypesPolicy(trustedTypes, document) {\n if ((typeof trustedTypes === 'undefined' ? 'undefined' : _typeof(trustedTypes)) !== 'object' || typeof trustedTypes.createPolicy !== 'function') {\n return null;\n }\n\n // Allow the callers to control the unique policy name\n // by adding a data-tt-policy-suffix to the script element with the DOMPurify.\n // Policy creation with duplicate names throws in Trusted Types.\n var suffix = null;\n var ATTR_NAME = 'data-tt-policy-suffix';\n if (document.currentScript && document.currentScript.hasAttribute(ATTR_NAME)) {\n suffix = document.currentScript.getAttribute(ATTR_NAME);\n }\n\n var policyName = 'dompurify' + (suffix ? '#' + suffix : '');\n\n try {\n return trustedTypes.createPolicy(policyName, {\n createHTML: function createHTML(html$$1) {\n return html$$1;\n }\n });\n } catch (_) {\n // Policy creation failed (most likely another DOMPurify script has\n // already run). Skip creating the policy, as this will only cause errors\n // if TT are enforced.\n console.warn('TrustedTypes policy ' + policyName + ' could not be created.');\n return null;\n }\n };\n\n function createDOMPurify() {\n var window = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getGlobal();\n\n var DOMPurify = function DOMPurify(root) {\n return createDOMPurify(root);\n };\n\n /**\n * Version label, exposed for easier checks\n * if DOMPurify is up to date or not\n */\n DOMPurify.version = '2.3.6';\n\n /**\n * Array of elements that DOMPurify removed during sanitation.\n * Empty if nothing was removed.\n */\n DOMPurify.removed = [];\n\n if (!window || !window.document || window.document.nodeType !== 9) {\n // Not running in a browser, provide a factory function\n // so that you can pass your own Window\n DOMPurify.isSupported = false;\n\n return DOMPurify;\n }\n\n var originalDocument = window.document;\n\n var document = window.document;\n var DocumentFragment = window.DocumentFragment,\n HTMLTemplateElement = window.HTMLTemplateElement,\n Node = window.Node,\n Element = window.Element,\n NodeFilter = window.NodeFilter,\n _window$NamedNodeMap = window.NamedNodeMap,\n NamedNodeMap = _window$NamedNodeMap === undefined ? window.NamedNodeMap || window.MozNamedAttrMap : _window$NamedNodeMap,\n HTMLFormElement = window.HTMLFormElement,\n DOMParser = window.DOMParser,\n trustedTypes = window.trustedTypes;\n\n\n var ElementPrototype = Element.prototype;\n\n var cloneNode = lookupGetter(ElementPrototype, 'cloneNode');\n var getNextSibling = lookupGetter(ElementPrototype, 'nextSibling');\n var getChildNodes = lookupGetter(ElementPrototype, 'childNodes');\n var getParentNode = lookupGetter(ElementPrototype, 'parentNode');\n\n // As per issue #47, the web-components registry is inherited by a\n // new document created via createHTMLDocument. As per the spec\n // (http://w3c.github.io/webcomponents/spec/custom/#creating-and-passing-registries)\n // a new empty registry is used when creating a template contents owner\n // document, so we use that as our parent document to ensure nothing\n // is inherited.\n if (typeof HTMLTemplateElement === 'function') {\n var template = document.createElement('template');\n if (template.content && template.content.ownerDocument) {\n document = template.content.ownerDocument;\n }\n }\n\n var trustedTypesPolicy = _createTrustedTypesPolicy(trustedTypes, originalDocument);\n var emptyHTML = trustedTypesPolicy ? trustedTypesPolicy.createHTML('') : '';\n\n var _document = document,\n implementation = _document.implementation,\n createNodeIterator = _document.createNodeIterator,\n createDocumentFragment = _document.createDocumentFragment,\n getElementsByTagName = _document.getElementsByTagName;\n var importNode = originalDocument.importNode;\n\n\n var documentMode = {};\n try {\n documentMode = clone(document).documentMode ? document.documentMode : {};\n } catch (_) {}\n\n var hooks = {};\n\n /**\n * Expose whether this browser supports running the full DOMPurify.\n */\n DOMPurify.isSupported = typeof getParentNode === 'function' && implementation && typeof implementation.createHTMLDocument !== 'undefined' && documentMode !== 9;\n\n var MUSTACHE_EXPR$$1 = MUSTACHE_EXPR,\n ERB_EXPR$$1 = ERB_EXPR,\n DATA_ATTR$$1 = DATA_ATTR,\n ARIA_ATTR$$1 = ARIA_ATTR,\n IS_SCRIPT_OR_DATA$$1 = IS_SCRIPT_OR_DATA,\n ATTR_WHITESPACE$$1 = ATTR_WHITESPACE;\n var IS_ALLOWED_URI$$1 = IS_ALLOWED_URI;\n\n /**\n * We consider the elements and attributes below to be safe. Ideally\n * don't add any new ones but feel free to remove unwanted ones.\n */\n\n /* allowed element names */\n\n var ALLOWED_TAGS = null;\n var DEFAULT_ALLOWED_TAGS = addToSet({}, [].concat(_toConsumableArray$1(html), _toConsumableArray$1(svg), _toConsumableArray$1(svgFilters), _toConsumableArray$1(mathMl), _toConsumableArray$1(text)));\n\n /* Allowed attribute names */\n var ALLOWED_ATTR = null;\n var DEFAULT_ALLOWED_ATTR = addToSet({}, [].concat(_toConsumableArray$1(html$1), _toConsumableArray$1(svg$1), _toConsumableArray$1(mathMl$1), _toConsumableArray$1(xml)));\n\n /*\n * Configure how DOMPUrify should handle custom elements and their attributes as well as customized built-in elements.\n * @property {RegExp|Function|null} tagNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any custom elements)\n * @property {RegExp|Function|null} attributeNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any attributes not on the allow list)\n * @property {boolean} allowCustomizedBuiltInElements allow custom elements derived from built-ins if they pass CUSTOM_ELEMENT_HANDLING.tagNameCheck. Default: `false`.\n */\n var CUSTOM_ELEMENT_HANDLING = Object.seal(Object.create(null, {\n tagNameCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null\n },\n attributeNameCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null\n },\n allowCustomizedBuiltInElements: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: false\n }\n }));\n\n /* Explicitly forbidden tags (overrides ALLOWED_TAGS/ADD_TAGS) */\n var FORBID_TAGS = null;\n\n /* Explicitly forbidden attributes (overrides ALLOWED_ATTR/ADD_ATTR) */\n var FORBID_ATTR = null;\n\n /* Decide if ARIA attributes are okay */\n var ALLOW_ARIA_ATTR = true;\n\n /* Decide if custom data attributes are okay */\n var ALLOW_DATA_ATTR = true;\n\n /* Decide if unknown protocols are okay */\n var ALLOW_UNKNOWN_PROTOCOLS = false;\n\n /* Output should be safe for common template engines.\n * This means, DOMPurify removes data attributes, mustaches and ERB\n */\n var SAFE_FOR_TEMPLATES = false;\n\n /* Decide if document with ... should be returned */\n var WHOLE_DOCUMENT = false;\n\n /* Track whether config is already set on this instance of DOMPurify. */\n var SET_CONFIG = false;\n\n /* Decide if all elements (e.g. style, script) must be children of\n * document.body. By default, browsers might move them to document.head */\n var FORCE_BODY = false;\n\n /* Decide if a DOM `HTMLBodyElement` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported).\n * If `WHOLE_DOCUMENT` is enabled a `HTMLHtmlElement` will be returned instead\n */\n var RETURN_DOM = false;\n\n /* Decide if a DOM `DocumentFragment` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported) */\n var RETURN_DOM_FRAGMENT = false;\n\n /* Try to return a Trusted Type object instead of a string, return a string in\n * case Trusted Types are not supported */\n var RETURN_TRUSTED_TYPE = false;\n\n /* Output should be free from DOM clobbering attacks? */\n var SANITIZE_DOM = true;\n\n /* Keep element content when removing element? */\n var KEEP_CONTENT = true;\n\n /* If a `Node` is passed to sanitize(), then performs sanitization in-place instead\n * of importing it into a new Document and returning a sanitized copy */\n var IN_PLACE = false;\n\n /* Allow usage of profiles like html, svg and mathMl */\n var USE_PROFILES = {};\n\n /* Tags to ignore content of when KEEP_CONTENT is true */\n var FORBID_CONTENTS = null;\n var DEFAULT_FORBID_CONTENTS = addToSet({}, ['annotation-xml', 'audio', 'colgroup', 'desc', 'foreignobject', 'head', 'iframe', 'math', 'mi', 'mn', 'mo', 'ms', 'mtext', 'noembed', 'noframes', 'noscript', 'plaintext', 'script', 'style', 'svg', 'template', 'thead', 'title', 'video', 'xmp']);\n\n /* Tags that are safe for data: URIs */\n var DATA_URI_TAGS = null;\n var DEFAULT_DATA_URI_TAGS = addToSet({}, ['audio', 'video', 'img', 'source', 'image', 'track']);\n\n /* Attributes safe for values like \"javascript:\" */\n var URI_SAFE_ATTRIBUTES = null;\n var DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, ['alt', 'class', 'for', 'id', 'label', 'name', 'pattern', 'placeholder', 'role', 'summary', 'title', 'value', 'style', 'xmlns']);\n\n var MATHML_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';\n var SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\n var HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\n /* Document namespace */\n var NAMESPACE = HTML_NAMESPACE;\n var IS_EMPTY_INPUT = false;\n\n /* Parsing of strict XHTML documents */\n var PARSER_MEDIA_TYPE = void 0;\n var SUPPORTED_PARSER_MEDIA_TYPES = ['application/xhtml+xml', 'text/html'];\n var DEFAULT_PARSER_MEDIA_TYPE = 'text/html';\n var transformCaseFunc = void 0;\n\n /* Keep a reference to config to pass to hooks */\n var CONFIG = null;\n\n /* Ideally, do not touch anything below this line */\n /* ______________________________________________ */\n\n var formElement = document.createElement('form');\n\n var isRegexOrFunction = function isRegexOrFunction(testValue) {\n return testValue instanceof RegExp || testValue instanceof Function;\n };\n\n /**\n * _parseConfig\n *\n * @param {Object} cfg optional config literal\n */\n // eslint-disable-next-line complexity\n var _parseConfig = function _parseConfig(cfg) {\n if (CONFIG && CONFIG === cfg) {\n return;\n }\n\n /* Shield configuration object from tampering */\n if (!cfg || (typeof cfg === 'undefined' ? 'undefined' : _typeof(cfg)) !== 'object') {\n cfg = {};\n }\n\n /* Shield configuration object from prototype pollution */\n cfg = clone(cfg);\n\n /* Set configuration parameters */\n ALLOWED_TAGS = 'ALLOWED_TAGS' in cfg ? addToSet({}, cfg.ALLOWED_TAGS) : DEFAULT_ALLOWED_TAGS;\n ALLOWED_ATTR = 'ALLOWED_ATTR' in cfg ? addToSet({}, cfg.ALLOWED_ATTR) : DEFAULT_ALLOWED_ATTR;\n URI_SAFE_ATTRIBUTES = 'ADD_URI_SAFE_ATTR' in cfg ? addToSet(clone(DEFAULT_URI_SAFE_ATTRIBUTES), cfg.ADD_URI_SAFE_ATTR) : DEFAULT_URI_SAFE_ATTRIBUTES;\n DATA_URI_TAGS = 'ADD_DATA_URI_TAGS' in cfg ? addToSet(clone(DEFAULT_DATA_URI_TAGS), cfg.ADD_DATA_URI_TAGS) : DEFAULT_DATA_URI_TAGS;\n FORBID_CONTENTS = 'FORBID_CONTENTS' in cfg ? addToSet({}, cfg.FORBID_CONTENTS) : DEFAULT_FORBID_CONTENTS;\n FORBID_TAGS = 'FORBID_TAGS' in cfg ? addToSet({}, cfg.FORBID_TAGS) : {};\n FORBID_ATTR = 'FORBID_ATTR' in cfg ? addToSet({}, cfg.FORBID_ATTR) : {};\n USE_PROFILES = 'USE_PROFILES' in cfg ? cfg.USE_PROFILES : false;\n ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false; // Default true\n ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false; // Default true\n ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false; // Default false\n SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false; // Default false\n WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false; // Default false\n RETURN_DOM = cfg.RETURN_DOM || false; // Default false\n RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false; // Default false\n RETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false; // Default false\n FORCE_BODY = cfg.FORCE_BODY || false; // Default false\n SANITIZE_DOM = cfg.SANITIZE_DOM !== false; // Default true\n KEEP_CONTENT = cfg.KEEP_CONTENT !== false; // Default true\n IN_PLACE = cfg.IN_PLACE || false; // Default false\n IS_ALLOWED_URI$$1 = cfg.ALLOWED_URI_REGEXP || IS_ALLOWED_URI$$1;\n NAMESPACE = cfg.NAMESPACE || HTML_NAMESPACE;\n if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck)) {\n CUSTOM_ELEMENT_HANDLING.tagNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck;\n }\n\n if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)) {\n CUSTOM_ELEMENT_HANDLING.attributeNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck;\n }\n\n if (cfg.CUSTOM_ELEMENT_HANDLING && typeof cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements === 'boolean') {\n CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements = cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements;\n }\n\n PARSER_MEDIA_TYPE =\n // eslint-disable-next-line unicorn/prefer-includes\n SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1 ? PARSER_MEDIA_TYPE = DEFAULT_PARSER_MEDIA_TYPE : PARSER_MEDIA_TYPE = cfg.PARSER_MEDIA_TYPE;\n\n // HTML tags and attributes are not case-sensitive, converting to lowercase. Keeping XHTML as is.\n transformCaseFunc = PARSER_MEDIA_TYPE === 'application/xhtml+xml' ? function (x) {\n return x;\n } : stringToLowerCase;\n\n if (SAFE_FOR_TEMPLATES) {\n ALLOW_DATA_ATTR = false;\n }\n\n if (RETURN_DOM_FRAGMENT) {\n RETURN_DOM = true;\n }\n\n /* Parse profile info */\n if (USE_PROFILES) {\n ALLOWED_TAGS = addToSet({}, [].concat(_toConsumableArray$1(text)));\n ALLOWED_ATTR = [];\n if (USE_PROFILES.html === true) {\n addToSet(ALLOWED_TAGS, html);\n addToSet(ALLOWED_ATTR, html$1);\n }\n\n if (USE_PROFILES.svg === true) {\n addToSet(ALLOWED_TAGS, svg);\n addToSet(ALLOWED_ATTR, svg$1);\n addToSet(ALLOWED_ATTR, xml);\n }\n\n if (USE_PROFILES.svgFilters === true) {\n addToSet(ALLOWED_TAGS, svgFilters);\n addToSet(ALLOWED_ATTR, svg$1);\n addToSet(ALLOWED_ATTR, xml);\n }\n\n if (USE_PROFILES.mathMl === true) {\n addToSet(ALLOWED_TAGS, mathMl);\n addToSet(ALLOWED_ATTR, mathMl$1);\n addToSet(ALLOWED_ATTR, xml);\n }\n }\n\n /* Merge configuration parameters */\n if (cfg.ADD_TAGS) {\n if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {\n ALLOWED_TAGS = clone(ALLOWED_TAGS);\n }\n\n addToSet(ALLOWED_TAGS, cfg.ADD_TAGS);\n }\n\n if (cfg.ADD_ATTR) {\n if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) {\n ALLOWED_ATTR = clone(ALLOWED_ATTR);\n }\n\n addToSet(ALLOWED_ATTR, cfg.ADD_ATTR);\n }\n\n if (cfg.ADD_URI_SAFE_ATTR) {\n addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR);\n }\n\n if (cfg.FORBID_CONTENTS) {\n if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {\n FORBID_CONTENTS = clone(FORBID_CONTENTS);\n }\n\n addToSet(FORBID_CONTENTS, cfg.FORBID_CONTENTS);\n }\n\n /* Add #text in case KEEP_CONTENT is set to true */\n if (KEEP_CONTENT) {\n ALLOWED_TAGS['#text'] = true;\n }\n\n /* Add html, head and body to ALLOWED_TAGS in case WHOLE_DOCUMENT is true */\n if (WHOLE_DOCUMENT) {\n addToSet(ALLOWED_TAGS, ['html', 'head', 'body']);\n }\n\n /* Add tbody to ALLOWED_TAGS in case tables are permitted, see #286, #365 */\n if (ALLOWED_TAGS.table) {\n addToSet(ALLOWED_TAGS, ['tbody']);\n delete FORBID_TAGS.tbody;\n }\n\n // Prevent further manipulation of configuration.\n // Not available in IE8, Safari 5, etc.\n if (freeze) {\n freeze(cfg);\n }\n\n CONFIG = cfg;\n };\n\n var MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, ['mi', 'mo', 'mn', 'ms', 'mtext']);\n\n var HTML_INTEGRATION_POINTS = addToSet({}, ['foreignobject', 'desc', 'title', 'annotation-xml']);\n\n /* Keep track of all possible SVG and MathML tags\n * so that we can perform the namespace checks\n * correctly. */\n var ALL_SVG_TAGS = addToSet({}, svg);\n addToSet(ALL_SVG_TAGS, svgFilters);\n addToSet(ALL_SVG_TAGS, svgDisallowed);\n\n var ALL_MATHML_TAGS = addToSet({}, mathMl);\n addToSet(ALL_MATHML_TAGS, mathMlDisallowed);\n\n /**\n *\n *\n * @param {Element} element a DOM element whose namespace is being checked\n * @returns {boolean} Return false if the element has a\n * namespace that a spec-compliant parser would never\n * return. Return true otherwise.\n */\n var _checkValidNamespace = function _checkValidNamespace(element) {\n var parent = getParentNode(element);\n\n // In JSDOM, if we're inside shadow DOM, then parentNode\n // can be null. We just simulate parent in this case.\n if (!parent || !parent.tagName) {\n parent = {\n namespaceURI: HTML_NAMESPACE,\n tagName: 'template'\n };\n }\n\n var tagName = stringToLowerCase(element.tagName);\n var parentTagName = stringToLowerCase(parent.tagName);\n\n if (element.namespaceURI === SVG_NAMESPACE) {\n // The only way to switch from HTML namespace to SVG\n // is via . If it happens via any other tag, then\n // it should be killed.\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === 'svg';\n }\n\n // The only way to switch from MathML to SVG is via\n // svg if parent is either or MathML\n // text integration points.\n if (parent.namespaceURI === MATHML_NAMESPACE) {\n return tagName === 'svg' && (parentTagName === 'annotation-xml' || MATHML_TEXT_INTEGRATION_POINTS[parentTagName]);\n }\n\n // We only allow elements that are defined in SVG\n // spec. All others are disallowed in SVG namespace.\n return Boolean(ALL_SVG_TAGS[tagName]);\n }\n\n if (element.namespaceURI === MATHML_NAMESPACE) {\n // The only way to switch from HTML namespace to MathML\n // is via . If it happens via any other tag, then\n // it should be killed.\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === 'math';\n }\n\n // The only way to switch from SVG to MathML is via\n // and HTML integration points\n if (parent.namespaceURI === SVG_NAMESPACE) {\n return tagName === 'math' && HTML_INTEGRATION_POINTS[parentTagName];\n }\n\n // We only allow elements that are defined in MathML\n // spec. All others are disallowed in MathML namespace.\n return Boolean(ALL_MATHML_TAGS[tagName]);\n }\n\n if (element.namespaceURI === HTML_NAMESPACE) {\n // The only way to switch from SVG to HTML is via\n // HTML integration points, and from MathML to HTML\n // is via MathML text integration points\n if (parent.namespaceURI === SVG_NAMESPACE && !HTML_INTEGRATION_POINTS[parentTagName]) {\n return false;\n }\n\n if (parent.namespaceURI === MATHML_NAMESPACE && !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]) {\n return false;\n }\n\n // Certain elements are allowed in both SVG and HTML\n // namespace. We need to specify them explicitly\n // so that they don't get erronously deleted from\n // HTML namespace.\n var commonSvgAndHTMLElements = addToSet({}, ['title', 'style', 'font', 'a', 'script']);\n\n // We disallow tags that are specific for MathML\n // or SVG and should never appear in HTML namespace\n return !ALL_MATHML_TAGS[tagName] && (commonSvgAndHTMLElements[tagName] || !ALL_SVG_TAGS[tagName]);\n }\n\n // The code should never reach this place (this means\n // that the element somehow got namespace that is not\n // HTML, SVG or MathML). Return false just in case.\n return false;\n };\n\n /**\n * _forceRemove\n *\n * @param {Node} node a DOM node\n */\n var _forceRemove = function _forceRemove(node) {\n arrayPush(DOMPurify.removed, { element: node });\n try {\n // eslint-disable-next-line unicorn/prefer-dom-node-remove\n node.parentNode.removeChild(node);\n } catch (_) {\n try {\n node.outerHTML = emptyHTML;\n } catch (_) {\n node.remove();\n }\n }\n };\n\n /**\n * _removeAttribute\n *\n * @param {String} name an Attribute name\n * @param {Node} node a DOM node\n */\n var _removeAttribute = function _removeAttribute(name, node) {\n try {\n arrayPush(DOMPurify.removed, {\n attribute: node.getAttributeNode(name),\n from: node\n });\n } catch (_) {\n arrayPush(DOMPurify.removed, {\n attribute: null,\n from: node\n });\n }\n\n node.removeAttribute(name);\n\n // We void attribute values for unremovable \"is\"\" attributes\n if (name === 'is' && !ALLOWED_ATTR[name]) {\n if (RETURN_DOM || RETURN_DOM_FRAGMENT) {\n try {\n _forceRemove(node);\n } catch (_) {}\n } else {\n try {\n node.setAttribute(name, '');\n } catch (_) {}\n }\n }\n };\n\n /**\n * _initDocument\n *\n * @param {String} dirty a string of dirty markup\n * @return {Document} a DOM, filled with the dirty markup\n */\n var _initDocument = function _initDocument(dirty) {\n /* Create a HTML document */\n var doc = void 0;\n var leadingWhitespace = void 0;\n\n if (FORCE_BODY) {\n dirty = '' + dirty;\n } else {\n /* If FORCE_BODY isn't used, leading whitespace needs to be preserved manually */\n var matches = stringMatch(dirty, /^[\\r\\n\\t ]+/);\n leadingWhitespace = matches && matches[0];\n }\n\n if (PARSER_MEDIA_TYPE === 'application/xhtml+xml') {\n // Root of XHTML doc must contain xmlns declaration (see https://www.w3.org/TR/xhtml1/normative.html#strict)\n dirty = '' + dirty + '';\n }\n\n var dirtyPayload = trustedTypesPolicy ? trustedTypesPolicy.createHTML(dirty) : dirty;\n /*\n * Use the DOMParser API by default, fallback later if needs be\n * DOMParser not work for svg when has multiple root element.\n */\n if (NAMESPACE === HTML_NAMESPACE) {\n try {\n doc = new DOMParser().parseFromString(dirtyPayload, PARSER_MEDIA_TYPE);\n } catch (_) {}\n }\n\n /* Use createHTMLDocument in case DOMParser is not available */\n if (!doc || !doc.documentElement) {\n doc = implementation.createDocument(NAMESPACE, 'template', null);\n try {\n doc.documentElement.innerHTML = IS_EMPTY_INPUT ? '' : dirtyPayload;\n } catch (_) {\n // Syntax error if dirtyPayload is invalid xml\n }\n }\n\n var body = doc.body || doc.documentElement;\n\n if (dirty && leadingWhitespace) {\n body.insertBefore(document.createTextNode(leadingWhitespace), body.childNodes[0] || null);\n }\n\n /* Work on whole document or just its body */\n if (NAMESPACE === HTML_NAMESPACE) {\n return getElementsByTagName.call(doc, WHOLE_DOCUMENT ? 'html' : 'body')[0];\n }\n\n return WHOLE_DOCUMENT ? doc.documentElement : body;\n };\n\n /**\n * _createIterator\n *\n * @param {Document} root document/fragment to create iterator for\n * @return {Iterator} iterator instance\n */\n var _createIterator = function _createIterator(root) {\n return createNodeIterator.call(root.ownerDocument || root, root,\n // eslint-disable-next-line no-bitwise\n NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT, null, false);\n };\n\n /**\n * _isClobbered\n *\n * @param {Node} elm element to check for clobbering attacks\n * @return {Boolean} true if clobbered, false if safe\n */\n var _isClobbered = function _isClobbered(elm) {\n return elm instanceof HTMLFormElement && (typeof elm.nodeName !== 'string' || typeof elm.textContent !== 'string' || typeof elm.removeChild !== 'function' || !(elm.attributes instanceof NamedNodeMap) || typeof elm.removeAttribute !== 'function' || typeof elm.setAttribute !== 'function' || typeof elm.namespaceURI !== 'string' || typeof elm.insertBefore !== 'function');\n };\n\n /**\n * _isNode\n *\n * @param {Node} obj object to check whether it's a DOM node\n * @return {Boolean} true is object is a DOM node\n */\n var _isNode = function _isNode(object) {\n return (typeof Node === 'undefined' ? 'undefined' : _typeof(Node)) === 'object' ? object instanceof Node : object && (typeof object === 'undefined' ? 'undefined' : _typeof(object)) === 'object' && typeof object.nodeType === 'number' && typeof object.nodeName === 'string';\n };\n\n /**\n * _executeHook\n * Execute user configurable hooks\n *\n * @param {String} entryPoint Name of the hook's entry point\n * @param {Node} currentNode node to work on with the hook\n * @param {Object} data additional hook parameters\n */\n var _executeHook = function _executeHook(entryPoint, currentNode, data) {\n if (!hooks[entryPoint]) {\n return;\n }\n\n arrayForEach(hooks[entryPoint], function (hook) {\n hook.call(DOMPurify, currentNode, data, CONFIG);\n });\n };\n\n /**\n * _sanitizeElements\n *\n * @protect nodeName\n * @protect textContent\n * @protect removeChild\n *\n * @param {Node} currentNode to check for permission to exist\n * @return {Boolean} true if node was killed, false if left alive\n */\n var _sanitizeElements = function _sanitizeElements(currentNode) {\n var content = void 0;\n\n /* Execute a hook if present */\n _executeHook('beforeSanitizeElements', currentNode, null);\n\n /* Check if element is clobbered or can clobber */\n if (_isClobbered(currentNode)) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Check if tagname contains Unicode */\n if (stringMatch(currentNode.nodeName, /[\\u0080-\\uFFFF]/)) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Now let's check the element's type and name */\n var tagName = transformCaseFunc(currentNode.nodeName);\n\n /* Execute a hook if present */\n _executeHook('uponSanitizeElement', currentNode, {\n tagName: tagName,\n allowedTags: ALLOWED_TAGS\n });\n\n /* Detect mXSS attempts abusing namespace confusion */\n if (!_isNode(currentNode.firstElementChild) && (!_isNode(currentNode.content) || !_isNode(currentNode.content.firstElementChild)) && regExpTest(/<[/\\w]/g, currentNode.innerHTML) && regExpTest(/<[/\\w]/g, currentNode.textContent)) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Mitigate a problem with templates inside select */\n if (tagName === 'select' && regExpTest(/