diff --git a/README.md b/README.md index 2583d14..f53b962 100644 --- a/README.md +++ b/README.md @@ -5,6 +5,8 @@ A visualizer of iKnow entities for IntersSystems iKnow on 2016.2+ platforms. Preview ------- +### [SEE DEMO HERE](https://intersystems-ru.github.io/iknow-entity-browser) + ![2017-03-24_235057](https://cloud.githubusercontent.com/assets/4989256/24314970/11139e7e-10ed-11e7-913b-e156c253c820.png) ![2017-03-24_234839](https://cloud.githubusercontent.com/assets/4989256/24314971/112bbd2e-10ed-11e7-8dfb-66daafb6d430.png)

@@ -30,6 +32,10 @@ iKnow-enabled namespace, and manually set up web application (for example, you c application as well in this case. Currently we are working under possibility to change the namespace from the UI interface. +If you installed iKnow Entity Browser on the server and made the web application public, you +can connect to this server from any front-end, for example, even +from [this demo application](https://intersystems-ru.github.io/iknow-entity-browser). + Usage ----- diff --git a/docs/css/index.css b/docs/css/index.css new file mode 100644 index 0000000..ee52b5a --- /dev/null +++ b/docs/css/index.css @@ -0,0 +1 @@ +@charset "UTF-8";#windows,body,html{position:relative;overflow:hidden}button,input[type=button],table th{background-color:#02ad8b;color:#fff}#windows,.central,body,html{width:100%;height:100%}#graph .nodes .node,#tabular th,#tabular tr,button,input[type=button],input[type=checkbox],label,select{cursor:pointer}body,html{margin:0;padding:0;font-family:monospace}input[type=number],input[type=text],select{background:0 0;color:inherit;font:inherit;text-shadow:inherit}#windows{top:0;-webkit-transition:all .3s ease;-moz-transition:all .3s ease;-ms-transition:all .3s ease;-o-transition:all .3s ease;transition:all .3s ease}#windows.offScreen{top:100%;overflow:visible}table{border-spacing:0;border-radius:3px;overflow:hidden;box-shadow:0 0 2px gray}table td,table th{padding:1px 2px}table td:not(:last-child),table th:not(:last-child){border-right:1px solid #ddd}table tr:nth-child(2n){background-color:#eee}table th{text-shadow:0 1px 1px #000}input[type=number],input[type=text]{border:0;border-bottom:1px solid gray}select{border:0}[class*=" icon-"]:before,[class^=icon-]:before,[data-icon]:before{font-family:iknowentitybrowsericons!important;font-style:normal!important;font-weight:400!important;font-variant:normal!important;text-transform:none!important;speak:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}select option{color:#000}button,input[type=button]{text-shadow:0 1px 1px #000;border:0;border-radius:12px;padding:5px;margin:2px;transition:all .3s ease;box-shadow:0 1px 1px gray}button:hover,input[type=button]:hover{color:#fff5a1;box-shadow:0 2px 5px gray}.central{position:absolute;left:0;top:0;display:table}.central>div{display:table-cell;vertical-align:middle;text-align:center}.central>div>div{display:inline-block}h1,h2,h3,h4,h5,h6{margin:.3em 0}.loading{background:rgba(255,255,255,.8);z-index:201}.loading .loader{position:fixed;top:calc(50% - 32px);left:calc(50% - 32px);width:64px;height:64px;border-radius:50%;perspective:800px}#graph,#table>.wrapper table{width:100%}.loading .loader>.inner{position:absolute;box-sizing:border-box;width:100%;height:100%;border-radius:50%;box-shadow:0 0 3px #02ad8b}.loading .loader>.inner.one{left:0;top:0;animation:rotate-one 1s linear infinite;border-bottom:3px solid #e08f00;box-shadow:0 0 3px #e08f00}.loading .loader>.inner.two{right:0;top:0;animation:rotate-two 1s linear infinite;border-right:3px solid #4c79c1;box-shadow:0 0 3px #4c79c1}.loading .loader>.inner.three{right:0;bottom:0;animation:rotate-three 1s linear infinite;border-top:3px solid #02ad8b}#tabular-hidden tr:first-child td,#tabular-others tr:first-child td{border-top:1px solid #000}@-webkit-keyframes rotate-one{0%{transform:rotateX(35deg) rotateY(-45deg) rotateZ(0)}100%{transform:rotateX(35deg) rotateY(-45deg) rotateZ(360deg)}}@-moz-keyframes rotate-one{0%{transform:rotateX(35deg) rotateY(-45deg) rotateZ(0)}100%{transform:rotateX(35deg) rotateY(-45deg) rotateZ(360deg)}}@-o-keyframes rotate-one{0%{transform:rotateX(35deg) rotateY(-45deg) rotateZ(0)}100%{transform:rotateX(35deg) rotateY(-45deg) rotateZ(360deg)}}@keyframes rotate-one{0%{transform:rotateX(35deg) rotateY(-45deg) rotateZ(0)}100%{transform:rotateX(35deg) rotateY(-45deg) rotateZ(360deg)}}@-webkit-keyframes rotate-two{0%{transform:rotateX(50deg) rotateY(10deg) rotateZ(0)}100%{transform:rotateX(50deg) rotateY(10deg) rotateZ(360deg)}}@-moz-keyframes rotate-two{0%{transform:rotateX(50deg) rotateY(10deg) rotateZ(0)}100%{transform:rotateX(50deg) rotateY(10deg) rotateZ(360deg)}}@-o-keyframes rotate-two{0%{transform:rotateX(50deg) rotateY(10deg) rotateZ(0)}100%{transform:rotateX(50deg) rotateY(10deg) rotateZ(360deg)}}@keyframes rotate-two{0%{transform:rotateX(50deg) rotateY(10deg) rotateZ(0)}100%{transform:rotateX(50deg) rotateY(10deg) rotateZ(360deg)}}@-webkit-keyframes rotate-three{0%{transform:rotateX(35deg) rotateY(55deg) rotateZ(0)}100%{transform:rotateX(35deg) rotateY(55deg) rotateZ(360deg)}}@-moz-keyframes rotate-three{0%{transform:rotateX(35deg) rotateY(55deg) rotateZ(0)}100%{transform:rotateX(35deg) rotateY(55deg) rotateZ(360deg)}}@-o-keyframes rotate-three{0%{transform:rotateX(35deg) rotateY(55deg) rotateZ(0)}100%{transform:rotateX(35deg) rotateY(55deg) rotateZ(360deg)}}@keyframes rotate-three{0%{transform:rotateX(35deg) rotateY(55deg) rotateZ(0)}100%{transform:rotateX(35deg) rotateY(55deg) rotateZ(360deg)}}[class*=icon-]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-transition:all .3s ease;-moz-transition:all .3s ease;-ms-transition:all .3s ease;-o-transition:all .3s ease;transition:all .3s ease;position:relative;display:inline-block;cursor:pointer}[class*=icon-].ui{font-size:28px}[class*=icon-]:hover{color:#02ad8b}[class*=icon-].toggled{color:#ff554b}[class*=icon-].toggled:hover{color:#02ad8b}[class*=icon-].disabled,[class*=icon-].disabled:hover{color:gray}.uiIconGroup{position:fixed}#graph,#table{position:absolute;height:100%}.uiIconGroup.topRight{top:5px;right:5px}@font-face{font-family:iknowentitybrowsericons;src:url(../fonts/iknowentitybrowsericons.eot);src:url(../fonts/iknowentitybrowsericons.eot?#iefix) format("embedded-opentype"),url(../fonts/iknowentitybrowsericons.woff) format("woff"),url(../fonts/iknowentitybrowsericons.ttf) format("truetype"),url(../fonts/iknowentitybrowsericons.svg#iknowentitybrowsericons) format("svg");font-weight:400;font-style:normal}[data-icon]:before{content:attr(data-icon)}.icon-list:before{content:"\61"}.icon-zoom-in:before{content:"\63"}.icon-zoom-out:before{content:"\64"}.icon-search:before{content:"\65"}.icon-outline:before{content:"\66"}.icon-filled:before{content:"\67"}.icon-th-list:before{content:"\68"}.icon-check-circle:before{content:"\69"}.icon-circle:before{content:"\6a"}.icon-config:before{content:"\6b"}.icon-settings:before{content:"\6c"}.icon-filter:before{content:"\6d"}.icon-wrench:before{content:"\6f"}.icon-options:before{content:"\6e"}.icon-close:before{content:"\70"}.icon-unlink:before{content:"\72"}.icon-remove:before{content:"\71"}.icon-share:before{content:"\73"}.icon-redo:before{content:"\74"}.icon-undo:before{content:"\75"}.icon-add:before{content:"\62"}.icon-arrow-left:before{content:"\76"}.icon-arrow-right:before{content:"\77"}.icon-download:before{content:"\78"}.icon-close-table:before{content:"\79"}.icon-question:before{content:"\7a"}.icon-expand:before{content:"\41"}.icon-collapse:before{content:"\42"}.icon-external-link:before{content:"\43"}#graph{top:0;left:0}#graph .links line.similar{stroke:#7ca1ff}#graph .links line.related{stroke:#ffb840}#graph .links line.other{stroke:#bbb}#graph .nodes .node circle{stroke:#fff;stroke-width:1px;fill:#ff554b}#graph .nodes .node.entity circle{fill:#7ca1ff}#graph .nodes .node.folder circle{fill:#bbb}#graph .nodes .node.selected circle{stroke:#000}#graph .nodes .node.root circle{fill:#ffb840}#graph .nodes .node text{text-anchor:middle;pointer-events:none;fill:#000;transition:transform .3s ease,opacity .3s ease}#table,.rightTopIcons{-webkit-transition:all .3s ease;-moz-transition:all .3s ease;-ms-transition:all .3s ease;-o-transition:all .3s ease}#graph .nodes .node:hover text{transform:scale(2)}#graph .nodes .node .tooltip{visibility:hidden;opacity:0;fill:gray}#graph .nodes .node:hover .tooltip{visibility:visible;opacity:1}#graph .nodes .node.highlighted circle{fill:#fff5a1}#graph .brush .extent{fill-opacity:.1;stroke:#fff;shape-rendering:crispEdges}#table{top:0;right:0;max-width:100%;box-sizing:border-box;background:#fff;overflow:visible;z-index:99;transition:all .3s ease;-webkit-transform:translate(100%,0);-moz-transform:translate(100%,0);-ms-transform:translate(100%,0);-o-transform:translate(100%,0);transform:translate(100%,0)}#tableToggle,#toolbarIcons,.rightTopIcons{z-index:100;position:absolute}#table.active{-webkit-transform:translate(0,0);-moz-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0);box-shadow:0 0 2px gray}#table>.controls{position:relative;padding-left:42px;top:5px}#settings,#table>.wrapper{padding:10px;overflow:auto;box-sizing:border-box}#table>.wrapper{height:100%;height:calc(100% - 36px)}#table .related{color:#ffb840}#table .similar{color:#7ca1ff}#table .root{color:#ff554b}#tabular th{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}#tabular th.sort-up:after{content:" ▼"}#tabular th.sort-down:after{content:" ▲"}#tabular th:last-child{border-left:none;min-width:27px}#tabular td:nth-last-child(2),#tabular th:nth-last-child(2){border-right:none}#tabular td{max-width:150px;white-space:pre;overflow:hidden;text-overflow:ellipsis}#tabular td:last-child{width:30px;border-left:none}#tabular tr td:last-child{overflow:visible;text-overflow:clip}#tabular tr td:last-child i{position:relative;top:2px;font-size:13px;height:13px;display:none;-webkit-transition:none;-moz-transition:none;-ms-transition:none;-o-transition:none;transition:none}#settings .footer,#settings .settingsNotice{font-size:8pt;color:gray}#settings\.tabularColumns,#tabular tr:hover td:last-child i{display:inline-block}#tabular tr:hover{background-color:#fff5a1}#tabular-selected tr td:last-child .icon-close{color:red}#tabular-hidden tr td:last-child .icon-add,#tabular-others tr td:last-child .icon-add{color:green}#tabular-others{opacity:.7}#tabular-hidden{opacity:.4}.hint>.tooltip.right>.label:after,.hint>.tooltip>.label:after{border-top:9px solid transparent;border-bottom:8px solid transparent}#settings{position:absolute;top:-100%;width:100%;height:100%;background:#fff}#settings .footer{text-align:right;padding:0 2px}#settings .footer a{color:gray;text-decoration:underline}#settings\.tabularColumns .column{display:inline-block;margin:3px;padding:3px 0;background-color:#02ad8b;border-radius:12px;color:#fff;text-shadow:0 1px 1px #000}#settings\.tabularColumns .column i{position:relative;top:1px;vertical-align:middle}#settings\.resetSettings{background-color:#ff554b}#closeSettingsToggle{position:absolute;right:7px;top:7px}#tableToggle{left:-35px;top:6px}#tableToggle.toggled{left:9px}#tableToggle.toggled:before{content:"\79"}.rightTopIcons{left:-35px;top:40px;transition:all .3s ease}.rightTopIcons>.ui{display:block;color:inherit;text-decoration:none}.rightTopIcons.hidden{-webkit-pointer-events:none;-moz-pointer-events:none;-ms-pointer-events:none;-o-pointer-events:none;pointer-events:none;opacity:0}#preservedToolbar,#toolbarIcons{text-align:center;-webkit-pointer-events:none}#table.active .rightTopIcons{top:6px;z-index:98}#toolbarIcons{right:100%;bottom:0;overflow:visible;min-width:30px;-webkit-transition:all .3s ease;-moz-transition:all .3s ease;-ms-transition:all .3s ease;-o-transition:all .3s ease;transition:all .3s ease;-moz-pointer-events:none;-ms-pointer-events:none;-o-pointer-events:none;pointer-events:none}#toolbarIcons>*{-webkit-pointer-events:all;-moz-pointer-events:all;-ms-pointer-events:all;-o-pointer-events:all;pointer-events:all}#toolbarIcons.hidden{bottom:-35px}.hint{position:relative}.hint>.tooltip{position:absolute;top:0;left:0;width:100%;height:100%;overflow:hidden}.hint>.tooltip>.label{position:absolute;padding:3px;width:auto;white-space:nowrap;color:#FFF;background:#000;font-size:16px;text-align:center;visibility:hidden;border-radius:4px;opacity:0;top:50%;-webkit-transition:opacity .3s ease;-moz-transition:opacity .3s ease;-ms-transition:opacity .3s ease;-o-transition:opacity .3s ease;transition:opacity .3s ease}.hint>.tooltip>.label.two-line{top:25%}.hint>.tooltip>.label .sub{font-size:8pt}.hint>.tooltip>.label:after{content:'';position:absolute;top:50%;left:100%;margin-top:-9px;width:0;height:0;border-left:9px solid #000}.hint>.tooltip:hover{overflow:visible}.hint>.tooltip:hover>.label{visibility:visible;right:100%;margin-top:-15px;margin-right:15px;z-index:999;opacity:.8}.hint>.tooltip.right>.label:after{left:auto;right:100%;border-left:none;border-right:9px solid #000}.hint>.tooltip.right:hover>.label{right:auto;left:100%;margin-right:0;margin-left:15px}.hint>.tooltip.top>.label{top:-20px;width:160px;box-sizing:border-box;left:calc(-80px + 50%)}.hint>.tooltip.top>.label.two-line{top:-33px}.hint>.tooltip.top>.label:after{right:auto;top:calc(100% + 6px);left:calc(50% - 8px);border-bottom:none;border-top:8px solid #000;border-right:8px solid transparent;border-left:8px solid transparent}.hint>.tooltip.top:hover>.label{right:auto;margin-right:0;margin-left:0}#preservedToolbar{position:absolute;left:0;right:0;top:0;padding-top:4px;z-index:98;overflow:hidden;-moz-pointer-events:none;-ms-pointer-events:none;-o-pointer-events:none;pointer-events:none}#preservedToolbar>*{-webkit-pointer-events:all;-moz-pointer-events:all;-ms-pointer-events:all;-o-pointer-events:all;pointer-events:all}.toast{position:fixed;right:0;bottom:0;z-index:10000;max-width:100%;-webkit-transition:all .3s ease;-moz-transition:all .3s ease;-o-transition:all .3s ease;transition:all .3s ease}.toast>.body{font-size:initial;margin:0 1em 1em;padding:.5em;word-wrap:break-word;border-radius:3px;background:rgba(255,255,255,.8);box-shadow:0 1px 2px rgba(0,0,0,.5)}.toast>.body.info{background:rgba(255,245,195,.8)}.toast>.body.warning{background:rgba(255,183,99,.8)}.toast>.body.warning>.icon{color:#fff}.toast>.body.error{color:#fff;text-shadow:0 0 1px #000;background:rgba(255,86,86,.8)}.toast>.body.done{background:rgba(147,255,157,.8)} \ No newline at end of file diff --git a/docs/fonts/iknowentitybrowsericons.eot b/docs/fonts/iknowentitybrowsericons.eot new file mode 100644 index 0000000..4ca8f1e Binary files /dev/null and b/docs/fonts/iknowentitybrowsericons.eot differ diff --git a/docs/fonts/iknowentitybrowsericons.svg b/docs/fonts/iknowentitybrowsericons.svg new file mode 100644 index 0000000..ab6c179 --- /dev/null +++ b/docs/fonts/iknowentitybrowsericons.svg @@ -0,0 +1,39 @@ + + + +Generated by Fontastic.me + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/fonts/iknowentitybrowsericons.ttf b/docs/fonts/iknowentitybrowsericons.ttf new file mode 100644 index 0000000..076fc72 Binary files /dev/null and b/docs/fonts/iknowentitybrowsericons.ttf differ diff --git a/docs/fonts/iknowentitybrowsericons.woff b/docs/fonts/iknowentitybrowsericons.woff new file mode 100644 index 0000000..47204e3 Binary files /dev/null and b/docs/fonts/iknowentitybrowsericons.woff differ diff --git a/docs/index.html b/docs/index.html new file mode 100644 index 0000000..428b5ab --- /dev/null +++ b/docs/index.html @@ -0,0 +1,206 @@ + + + + + iKnow Entity Browser + + + + + + + + +

+ + + + + + + + + + + + + +
+
+
+
+ Tabular view +
+
+
+ + + +
+ +
+
+ + + + + + + + + + + + + +
+
+
+
+ +

General Settings

+
+ Changing any settings will refresh all the data. +
+
+
+ Data source: + ://api/domain/ + / + + +
+
+

Tabular View Settings

+
+
+ +
+
+ Columns: + +
+
+
+
+ +
+ +
+
+ +
+
+ + \ No newline at end of file diff --git a/docs/js/index.js b/docs/js/index.js new file mode 100644 index 0000000..cbb9776 --- /dev/null +++ b/docs/js/index.js @@ -0,0 +1,6383 @@ +/******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) +/******/ return installedModules[moduleId].exports; +/******/ +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // identity function for calling harmony imports with the correct context +/******/ __webpack_require__.i = function(value) { return value; }; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { +/******/ configurable: false, +/******/ enumerable: true, +/******/ get: getter +/******/ }); +/******/ } +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = 9); +/******/ }) +/************************************************************************/ +/******/ ([ +/* 0 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.uiState = undefined; +exports.update = update; +exports.getGraphData = getGraphData; +exports.onModelUpdate = onModelUpdate; +exports.init = init; +exports.unfold = unfold; +exports.dropDescendants = dropDescendants; +exports.dropNodes = dropNodes; + +var _sample_output = __webpack_require__(18); + +var _sample_output2 = _interopRequireDefault(_sample_output); + +var _source = __webpack_require__(13); + +var _values = __webpack_require__(1); + +var _utils = __webpack_require__(2); + +var _history = __webpack_require__(10); + +var history = _interopRequireWildcard(_history); + +var _toasterJs = __webpack_require__(17); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +var SIZE_CRITERIA = "frequency", + FOLDING_CRITERIA = "frequency", + MAX_CHILDREN = 20, + MIN_RADIUS = 5, + graph = null, + additionalNodeId = -1, + updateCallbacks = []; + +function fold(tree) { + var _iteratorNormalCompletion = true; + var _didIteratorError = false; + var _iteratorError = undefined; + + try { + for (var _iterator = tree.children[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var cld = _step.value; + + fold(cld); + } + } catch (err) { + _didIteratorError = true; + _iteratorError = err; + } finally { + try { + if (!_iteratorNormalCompletion && _iterator.return) { + _iterator.return(); + } + } finally { + if (_didIteratorError) { + throw _iteratorError; + } + } + } + + if (tree.children && tree.children.length > MAX_CHILDREN) { + var rest = tree.children.splice(MAX_CHILDREN); + tree._children = rest; + tree.children.push({ + label: rest.length + " more", + type: "folder", + edgeType: rest[0].edgeType, + children: [], + radius: 10, + entities: [], + id: additionalNodeId--, + parent: tree + }); + } + return tree; +} + +/** + * Converts flat input data into a tree using implicit parent-children relationships. This + * function also sorts the children data by relevance. + * @param graph + * @param parent + * @returns {*} + */ +function toTree(graph, parent) { + + parent.children = []; + + var _iteratorNormalCompletion2 = true; + var _didIteratorError2 = false; + var _iteratorError2 = undefined; + + try { + for (var _iterator2 = graph.edges[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { + var edge = _step2.value; + + if (edge.source !== parent.id) continue; + var t = null; + var _iteratorNormalCompletion3 = true; + var _didIteratorError3 = false; + var _iteratorError3 = undefined; + + try { + for (var _iterator3 = graph.nodes[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) { + var node = _step3.value; + + if (node.id === edge.target) { + t = node; + break; + } + } + } catch (err) { + _didIteratorError3 = true; + _iteratorError3 = err; + } finally { + try { + if (!_iteratorNormalCompletion3 && _iterator3.return) { + _iterator3.return(); + } + } finally { + if (_didIteratorError3) { + throw _iteratorError3; + } + } + } + + if (t) { + t.edgeType = edge.type; + parent.children.push(toTree(graph, t)); + } + } + } catch (err) { + _didIteratorError2 = true; + _iteratorError2 = err; + } finally { + try { + if (!_iteratorNormalCompletion2 && _iterator2.return) { + _iterator2.return(); + } + } finally { + if (_didIteratorError2) { + throw _iteratorError2; + } + } + } + + try { + parent.children.sort(function (a, b) { + return a.entities[0][FOLDING_CRITERIA] > b.entities[0][FOLDING_CRITERIA] ? -1 : 1; + }).forEach(function (e) { + return e.parent = parent; + }); + } catch (e) { + console.error("Error! Most likely, one of the graph nodes does not has any entities." + " The folding criteria displayed on the diagram will be random."); + } + + return parent; +} + +/** + * This function converts graph model data to internal application's format. + * @param graph + * @returns {{graph: *, tree: *, foldedTree: *}} + */ +function preprocess(graph) { + + var zeroID = null, + maxSizeCriteria = 1; + + graph.nodes.forEach(function (node) { + if (!zeroID && node.id === 0) zeroID = node; + }); + graph.nodes.forEach(function (node) { + node.radius = MIN_RADIUS + Math.sqrt(node.entities[0][SIZE_CRITERIA] / 4 || 25); + if (node.entities[0][SIZE_CRITERIA] > maxSizeCriteria) maxSizeCriteria = node.entities[0][SIZE_CRITERIA]; + }); + if (!zeroID) { + graph.nodes.unshift(zeroID = { + id: 0, + label: (0, _values.getOption)("seed"), + type: "entity", + edgeType: "root", + radius: MIN_RADIUS + Math.sqrt((maxSizeCriteria + 1) / 4 || 25), + entities: [_defineProperty({ + id: -1, + value: (0, _values.getOption)("seed"), + score: 9999, + spread: 0, + frequency: 9999 + }, SIZE_CRITERIA, maxSizeCriteria + 1)] + }); + } + // console.log(`Graph:`, graph); + var tree = toTree(graph, zeroID); + // console.log(`Tree:`, tree); + + return fold(tree); +} + +/** + * Updates the data from a server. + */ +function update() { + (0, _utils.toggleLoader)(); + (0, _source.getData)(function (data) { + (0, _utils.toggleLoader)(false); + if (data.error || !data.graph) { + new _toasterJs.Toast(data.error || "No graph data returned", _toasterJs.Toast.TYPE_ERROR); + } else { + graph = preprocess(data.graph); + dataUpdated(true); + } + }); +} + +function dataUpdated() { + var reset = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; + + if (reset) history.reset(); + updateCallbacks.forEach(function (cb) { + return cb(graph, reset); + }); +} + +function getGraphData() { + return graph; +} + +/** + * This callback is invoked when graph is updated. + * @callback modelUpdate + * @param {*} graph + * @param {boolean} force - Determines whether graph changed completely. + */ + +/** + * Model update handler. + * @param {modelUpdate} callback + */ +function onModelUpdate(callback) { + if (typeof callback !== "function") throw new Error("Expecting function as a callback."); + updateCallbacks.push(callback); + if (graph) callback(graph, true); +} + +var uiState = exports.uiState = { + tabularToggled: false, + detailsToggled: false, + settingsToggled: false +}; + +function init() { + graph = preprocess(_sample_output2.default.graph); + history.init(); + dataUpdated(true); +} + +function resetChildrenPosition(folder) { + var children = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : []; + + if (!children || !children.length) return; + var xd = folder.x - folder.parent.x, + yd = folder.y - folder.parent.y, + angle = Math.atan2(yd, xd), + d = Math.sqrt(xd * xd + yd * yd), + spread = Math.PI / 2; + for (var i = 0; i < children.length; i++) { + var c = children[i], + spd = -spread / 2 + spread * i / (children.length - 1 || 0.5), + dx = Math.cos(angle + spd) * d, + dy = Math.sin(angle + spd) * d; + c.x = folder.parent.x + dx || 0; + c.y = folder.parent.y + dy || 0; + if (c.children) resetChildrenPosition({ x: c.x + dx, y: c.y + dy, parent: { x: c.x, y: c.y } }, c.children); + } +} + +/** + * Unfold the folder by specified amount of nodes. + * @param folderNode - Node representing a folder + * @param node - Node to unfold + * @param [children=20] - Number of nodes to unfold + * @returns {number} - Number of nodes left to unfold + */ +function unfold(folderNode, node) { + var children = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 20; + + if (folderNode.type !== "folder" || !node._children || !node._children.length) return 0; + var newId = additionalNodeId--, + oldId = folderNode.id, + f = function f() { + var next = node._children.slice(0, children); + node._children = node._children.slice(children); + var left = node._children.length; + folderNode.id = newId; + node.children = node.children.concat(next); + folderNode.label = left > 0 ? left + " more" : "Others"; + resetChildrenPosition(folderNode, next); + dataUpdated(); + return { + unfolded: next.length, + left: left + }; + }, + res = f(); + history.createState({ + redo: f, + undo: function undo() { + var part = node.children.slice(-res.unfolded); + node.children = node.children.slice(0, node.children.length - part.length); + node._children = part.concat(node._children); + folderNode.id = oldId; + folderNode.label = node._children.length > 0 ? node._children.length + " more" : "Others"; + dataUpdated(); + } + }); + return res.left; +} + +/** + * Delete all node's descendants. + * @param {Array|*} nodes - Node to unfold + * @returns {number} - Number of nodes unlinked + */ +function dropDescendants(nodes) { + + if (!(nodes instanceof Array)) nodes = [nodes]; + + var toDrop = 0; + var _iteratorNormalCompletion4 = true; + var _didIteratorError4 = false; + var _iteratorError4 = undefined; + + try { + for (var _iterator4 = nodes[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) { + var node = _step4.value; + + toDrop += node.children ? node.children.length : 0; + } + } catch (err) { + _didIteratorError4 = true; + _iteratorError4 = err; + } finally { + try { + if (!_iteratorNormalCompletion4 && _iterator4.return) { + _iterator4.return(); + } + } finally { + if (_didIteratorError4) { + throw _iteratorError4; + } + } + } + + if (toDrop === 0) return 0; + + var restore = nodes.slice().map(function (node) { + return { + node: node, + children: node.children + }; + }); + + function f() { + var _iteratorNormalCompletion5 = true; + var _didIteratorError5 = false; + var _iteratorError5 = undefined; + + try { + for (var _iterator5 = nodes[Symbol.iterator](), _step5; !(_iteratorNormalCompletion5 = (_step5 = _iterator5.next()).done); _iteratorNormalCompletion5 = true) { + var node = _step5.value; + + node.children = []; + } + } catch (err) { + _didIteratorError5 = true; + _iteratorError5 = err; + } finally { + try { + if (!_iteratorNormalCompletion5 && _iterator5.return) { + _iterator5.return(); + } + } finally { + if (_didIteratorError5) { + throw _iteratorError5; + } + } + } + + dataUpdated(); + } + f(); + + history.createState({ + redo: f, + undo: function undo() { + var _iteratorNormalCompletion6 = true; + var _didIteratorError6 = false; + var _iteratorError6 = undefined; + + try { + for (var _iterator6 = restore[Symbol.iterator](), _step6; !(_iteratorNormalCompletion6 = (_step6 = _iterator6.next()).done); _iteratorNormalCompletion6 = true) { + var res = _step6.value; + + res.node.children = res.children; + } + } catch (err) { + _didIteratorError6 = true; + _iteratorError6 = err; + } finally { + try { + if (!_iteratorNormalCompletion6 && _iterator6.return) { + _iterator6.return(); + } + } finally { + if (_didIteratorError6) { + throw _iteratorError6; + } + } + } + + dataUpdated(); + } + }); + + return toDrop; +} + +/** + * Delete all nodes and their descendants. + * @param {Array|*} nodes - Node to delete + * @returns {number} - Number of nodes deleted + */ +function dropNodes(nodes) { + + if (!(nodes instanceof Array)) nodes = [nodes]; + + var restore = nodes.filter(function (n) { + return !!n.parent; + }).map(function (node) { + return { + node: node.parent, + children: node.parent.children.slice() + }; + }); + + if (restore.length === 0) return 0; + + function f() { + var _iteratorNormalCompletion7 = true; + var _didIteratorError7 = false; + var _iteratorError7 = undefined; + + try { + for (var _iterator7 = nodes[Symbol.iterator](), _step7; !(_iteratorNormalCompletion7 = (_step7 = _iterator7.next()).done); _iteratorNormalCompletion7 = true) { + var node = _step7.value; + + if (!node.parent) // unable to drop root node + continue; + var i = node.parent.children.indexOf(node); + if (i === -1) { + console.error("There is a mess occurred with the tree model structure while dropping nodes: " + "node's parent is pointing to a node which doesn't have this node as a child."); + continue; + } + var temp = node.parent.children.slice(); + temp.splice(i, 1); + node.parent.children = temp; + } + } catch (err) { + _didIteratorError7 = true; + _iteratorError7 = err; + } finally { + try { + if (!_iteratorNormalCompletion7 && _iterator7.return) { + _iterator7.return(); + } + } finally { + if (_didIteratorError7) { + throw _iteratorError7; + } + } + } + + dataUpdated(); + } + f(); + + history.createState({ + redo: f, + undo: function undo() { + var _iteratorNormalCompletion8 = true; + var _didIteratorError8 = false; + var _iteratorError8 = undefined; + + try { + for (var _iterator8 = restore[Symbol.iterator](), _step8; !(_iteratorNormalCompletion8 = (_step8 = _iterator8.next()).done); _iteratorNormalCompletion8 = true) { + var res = _step8.value; + + res.node.children = res.children; + } + } catch (err) { + _didIteratorError8 = true; + _iteratorError8 = err; + } finally { + try { + if (!_iteratorNormalCompletion8 && _iterator8.return) { + _iterator8.return(); + } + } finally { + if (_didIteratorError8) { + throw _iteratorError8; + } + } + } + + dataUpdated(); + } + }); + + return nodes.length; +} + +/***/ }), +/* 1 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.applyChanges = applyChanges; +exports.getChanges = getChanges; +exports.getOption = getOption; +exports.setOption = setOption; +exports.applyFixedClasses = applyFixedClasses; +exports.setInputValue = setInputValue; +exports.init = init; + +var _storage = __webpack_require__(5); + +var storage = _interopRequireWildcard(_storage); + +var _utils = __webpack_require__(2); + +var _url = __webpack_require__(15); + +var url = _interopRequireWildcard(_url); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +var STORAGE_KEY = "settings"; + +var settingsTypes = { + compact: Boolean, + host: String, + port: Number, + webAppName: String, + domain: String, + queryType: new Set(["similar", "related"]), + seed: String, + keepQueryTypeInView: Boolean, + keepSeedInView: Boolean, + tabularShowHiddenNodes: Boolean +}; + +// List of settings that cannot be saved to local storage, but can be set explicitly +// (f.e. URL params). +var unsaveableSettings = new Set([]); + +// defaults are assigned here +var settings = { + compact: false, + host: "", + port: +location.port || 57772, + webAppName: "EntityBrowser", + domain: "1", + queryType: "related", + seed: "crew", + keepQueryTypeInView: true, + keepSeedInView: false, + tabularShowHiddenNodes: false, + tabularColumns: [{ + label: "ID", + property: ["id"] + }, { + label: "Type", + property: ["edgeType"], + class: true + }, { + label: "Label", + property: ["label"] + }, { + label: "Score", + property: ["entities", 0, "score"] + }, { + label: "Spread", + property: ["entities", 0, "spread"] + }, { + label: "Frequency", + property: ["entities", 0, "frequency"] + }, { + label: "Parent", + property: ["parent", "label"], + default: "root" + }] +}; +var changes = []; + +var initialStorage = storage.load(STORAGE_KEY); +for (var option in initialStorage) { + settings[option] = initialStorage[option]; +} + +/** + * This function "applies" settings so that getChanges() will return empty array until + */ +function applyChanges() { + changes = []; +} + +/** + * @returns {string[]} of changed keys. + */ +function getChanges() { + return changes; +} + +function getOption(opt) { + return settings[opt]; +} + +function setOption(options, value) { + var opts = settings, + opt = options; + if (options instanceof Array) { + opts = (0, _utils.getObjProp)(settings, options.slice(0, -1)); + opt = options[options.length - 1]; + } + opts[opt] = value; + changes.push([options, value]); + saveSettings(); +} + +var preservedToolbarElement = null, + querySettingElement = null, + seedSettingElement = null, + uiState = null, + lastApply = ""; +function applyFixedClasses() { + var qt = !uiState.settingsToggled && settings["keepQueryTypeInView"], + s = !uiState.settingsToggled && settings["keepSeedInView"], + queryParent = qt ? preservedToolbarElement : querySettingElement, + seedParent = s ? preservedToolbarElement : seedSettingElement; + if (qt + "|" + s === lastApply) return; + lastApply = qt + "|" + s; + queryParent.appendChild(document.getElementById("settings.queryType")); + seedParent.appendChild(document.getElementById("settings.seed")); +} + +function saveSettings() { + applyFixedClasses(); + var sts = Object.assign({}, settings); + var _iteratorNormalCompletion = true; + var _didIteratorError = false; + var _iteratorError = undefined; + + try { + for (var _iterator = unsaveableSettings[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var s = _step.value; + + delete sts[s]; + } + } catch (err) { + _didIteratorError = true; + _iteratorError = err; + } finally { + try { + if (!_iteratorNormalCompletion && _iterator.return) { + _iterator.return(); + } + } finally { + if (_didIteratorError) { + throw _iteratorError; + } + } + } + + storage.save(STORAGE_KEY, sts); +} + +function setInputValue() { + var e = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + + var isEvent = !(e instanceof HTMLElement), + id = void 0, + el = isEvent ? e.target || e.srcElement : e; + if (!el) return e; + if ((id = el.getAttribute("id")).indexOf("settings.") === 0) { + var key = id.replace(/^settings\./, ""), + prop = el.getAttribute("type") === "checkbox" ? "checked" : "value"; + if (isEvent) { + settings[key] = el[prop]; + changes.push([key, el[prop]]); + saveSettings(); + } else { + el[prop] = settings[key]; + } + } + return e; +} + +function init(uiSt) { + var params = url.getSearchString(); + for (var param in params) { + var type = (0, _utils.getObjProp)(settingsTypes, param.split(".")), + v = params[param]; + if (typeof type === "undefined") continue; + settings[param] = type === String ? v : type === Number ? parseFloat(v) : type === Boolean ? v === "false" ? false : v === "" ? true : !!v : type instanceof Set ? type.has(v) ? v : settings[param] : settings[param]; + } + uiState = uiSt; + preservedToolbarElement = document.getElementById("preservedToolbar"); + querySettingElement = document.getElementById("querySetting"); + seedSettingElement = document.getElementById("seedSetting"); + applyFixedClasses(); +} + +/***/ }), +/* 2 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +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; }; + +exports.block = block; +exports.makeAutosizable = makeAutosizable; +exports.httpGet = httpGet; +exports.toggleLoader = toggleLoader; +exports.getObjProp = getObjProp; +/** + * @see https://github.com/ZitRos/domUtils + * @author ZitRo + * @licence MIT + * Creates an element. + * @param {string} element - Tag Name + * @param {string|object} [className] - CSS class name + * @param {string} [textContent] - Optional content + * @param {Array} [children] - Optional array of children, which are attached to the block. + * @returns {Element} + */ +function block() { + var element = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "div"; + var className = arguments[1]; + var textContent = arguments[2]; + var children = arguments[3]; + + + var el = document.createElement(element || "div"), + c = children || []; + + if (className instanceof Array) { + c = className; + } else if (typeof className === "string") { + el.className = className; + } else if ((typeof className === "undefined" ? "undefined" : _typeof(className)) === "object") { + if (className.style) el.setAttribute("style", className.style); + if (className.class) el.className = className.class; + if (className.textContent) el.textContent = className.textContent; + if (typeof className["onClick"] === "function") el.addEventListener("click", className["onClick"]); + } + + if (textContent instanceof Array) { + c = textContent; + } else if (typeof textContent === "string") el.textContent = textContent; + + c.forEach(function (a) { + if (a) el.appendChild(a); + }); + + return el; +} + +var loader = block("div", { + class: "central loading", + style: "position:fixed" +}, [block("div", [block("div", [block("div", "loader", [block("div", "inner one"), block("div", "inner two"), block("div", "inner three")])])])]); + +/** + * Make input auto-sizable. + * @param {HTMLInputElement} input + * @param {number=30} minWidth + */ +function makeAutosizable(input) { + var minWidth = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 30; + + function updateInput() { + var style = window.getComputedStyle(input), + ghost = document.createElement("span"); + ghost.style.cssText = "box-sizing:content-box;display:inline-block;height:0;" + "overflow:hidden;position:absolute;top:0;visibility:hidden;white-space:nowrap;" + ("font-family:" + style.fontFamily + ";font-size:" + style.fontSize + ";") + ("padding:" + style.padding); + ghost.textContent = input.value; + document.body.appendChild(ghost); + input.style.width = ghost.offsetWidth + 4 + (input.getAttribute("type") === "number" ? 20 : 0) + "px"; + document.body.removeChild(ghost); + } + input.style.minWidth = minWidth + "px"; + input.style.maxWidth = "90%"; + input.addEventListener("input", function () { + return updateInput(); + }); + updateInput(); +} + +/** + * @param {string} theUrl + * @param {function} callback + */ +function httpGet(theUrl, callback) { + var xmlHttp = new XMLHttpRequest(); + xmlHttp.onreadystatechange = function () { + if (xmlHttp.readyState === 4) { + var data = void 0; + if (xmlHttp.status !== 200) { + callback({ error: "Request to " + theUrl + " returned status " + xmlHttp.status }); + return; + } + try { + data = JSON.parse(xmlHttp.responseText); + } catch (e) { + callback({ error: e }); + return; + } + callback(data); + } + }; + xmlHttp.open("GET", theUrl, true); + xmlHttp.send(null); +} + +/** + * Show the loader over the page. + * @param {boolean} [on] + */ +function toggleLoader() { + var on = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true; + + if (on) { + document.body.appendChild(loader); + } else if (loader && loader.parentNode) { + loader.parentNode.removeChild(loader); + } +} + +/** + * @param {object} obj + * @param {*[]} props + */ +function getObjProp(obj, props) { + var o = obj, + nil = {}; + var _iteratorNormalCompletion = true; + var _didIteratorError = false; + var _iteratorError = undefined; + + try { + for (var _iterator = props[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var p = _step.value; + + o = typeof o[p] === "undefined" ? nil : o[p]; + } + } catch (err) { + _didIteratorError = true; + _iteratorError = err; + } finally { + try { + if (!_iteratorNormalCompletion && _iterator.return) { + _iterator.return(); + } + } finally { + if (_didIteratorError) { + throw _iteratorError; + } + } + } + + return o === nil ? undefined : o; +} + +/***/ }), +/* 3 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.translateBy = translateBy; +exports.focusOn = focusOn; +exports.scaleBy = scaleBy; +exports.resetZoom = resetZoom; +exports.updateSelected = updateSelected; +exports.init = init; +exports.update = update; + +var _model = __webpack_require__(0); + +var _selection = __webpack_require__(4); + +var shiftKey = void 0, + ctrlKey = void 0, + width = window.innerWidth, + height = window.innerHeight, + lastGraph = null; + +var currentZoomLevel = 1, + svg = null, + brush = null, + node = void 0, + link = void 0, + links = void 0, + nodes = void 0, + zoomer = d3.zoom().scaleExtent([1 / 6, 100]).on("zoom", function () { + currentZoomLevel = d3.event.transform.k; + view.attr("transform", d3.event.transform); +}), + dragger = d3.drag().on("start", dragstarted).on("drag", dragged).on("end", dragended), + simulation = newSimulation(), + brusher = d3.brush().extent([[-9999999, -9999999], [9999999, 9999999]]).on("start.brush", function () { + if (!d3.event.sourceEvent) return; + node.each(function (d) { + d.wasSelected = ctrlKey && d.selected; + }); +}).on("brush.brush", function () { + if (!d3.event.sourceEvent) return; + var extent = d3.event.selection; + if (!extent) return; + node.classed("selected", function (d) { + var selected = extent[0][0] <= d.x && d.x < extent[1][0] && extent[0][1] <= d.y && d.y < extent[1][1]; + return d.selected = d.wasSelected ^ selected; + }); +}).on("end.brush", function () { + if (!d3.event.sourceEvent) return; + setTimeout(function () { + brush.call(brusher.move, null); + (0, _selection.updateSelection)(); + }, 25); +}), + view = null; + +window.addEventListener("resize", function () { + width = window.innerWidth; + height = window.innerHeight; +}); + +function translateBy() { + var x = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; + var y = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; + + svg.transition().duration(300).call(zoomer.translateBy, x / currentZoomLevel, y / currentZoomLevel); +} + +function focusOn() { + var x = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; + var y = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; + + svg.transition().duration(300).call(zoomer.transform, d3.zoomIdentity.translate(width / 2 + getViewDX(), height / 2).scale(currentZoomLevel).translate(-x, -y)); +} + +function scaleBy() { + var delta = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1; + + svg.transition().duration(300).call(zoomer.scaleBy, delta); +} + +function getViewDX() { + return _model.uiState.tabularToggled ? -document.getElementById("table").getBoundingClientRect().width / 2 : 0; +} + +function resetZoom() { + svg.transition().duration(300).call(zoomer.transform, d3.zoomIdentity.translate(getViewDX(), 0)); +} + +function updateSelected() { + node.classed("selected", function (p) { + return p.selected; + }); +} + +function newSimulation() { + return d3.forceSimulation().force("link", d3.forceLink().distance(function (d) { + return 30 + (d.source.radius + d.target.radius) * 2; + }).strength(function (d) { + return 1; + }).id(function (d) { + return d.id; + })).force("charge", d3.forceManyBody().strength(function (d) { + return -7 * d.radius; + })).force("center", d3.forceCenter(width / 2, height / 2)).on("tick", ticked); +} + +var ARROW_FWD = 2; + +function ticked() { + if (!link) return; + link.attr("x1", function (d) { + d.dir = Math.atan2(d.target.y - d.source.y, d.target.x - d.source.x); + return d.source.x + Math.cos(d.dir) * d.source.radius; + }).attr("y1", function (d) { + return d.source.y + Math.sin(d.dir) * d.source.radius; + }).attr("x2", function (d) { + return d.target.x - Math.cos(d.dir) * (d.target.radius + ARROW_FWD); + }).attr("y2", function (d) { + return d.target.y - Math.sin(d.dir) * (d.target.radius + ARROW_FWD); + }); + node.attr("transform", function (d) { + return "translate(" + d.x + "," + d.y + ")"; + }); +} + +function dragstarted(d) { + if (!d3.event.active) simulation.alphaTarget(0.3).restart(); + d.fx = d.x; + d.fy = d.y; +} + +function dragged(d) { + d.fx = d3.event.x; + d.fy = d3.event.y; +} + +function dragended(d) { + if (!d3.event.active) simulation.alphaTarget(0); + d.fx = null; + d.fy = null; +} + +function keyDown() { + shiftKey = d3.event.shiftKey || d3.event.metaKey; + ctrlKey = d3.event.ctrlKey; + + if (d3.event.keyCode == 67) {// the 'c' key + // do stuff + } + + if (ctrlKey) { + brush.select('.overlay').style('cursor', 'crosshair'); + brush.call(brusher); + d3.event.preventDefault(); + } +} + +function keyUp() { + shiftKey = d3.event.shiftKey || d3.event.metaKey; + ctrlKey = d3.event.ctrlKey; + + brush.call(brusher).on(".brush", null); + + brush.select('.overlay').style('cursor', 'auto'); +} + +function init() { + svg = d3.select("#graph").call(zoomer); + view = svg.append("g").attr("class", "view"); + brush = view.append("g").datum(function () { + return { selected: false, wasSelected: false }; + }).attr("class", "brush"); + links = view.append("g").attr("class", "links"); + nodes = view.append("g").attr("class", "nodes"); + link = links.selectAll("line"); + node = nodes.selectAll(".node"); + d3.select(window).on("keydown", keyDown).on("keyup", keyUp); +} + +function flatten(root) { + + var nodes = []; + + function recurse(node) { + if (node.children) node.children.forEach(recurse); + // if (!node.id) node.id = ++i; + nodes.push(node); + } + + recurse(root); + + return nodes; +} + +function flattenEdges(root) { + + var edges = []; + + function recurse(node) { + if (!node.children) return; + var _iteratorNormalCompletion = true; + var _didIteratorError = false; + var _iteratorError = undefined; + + try { + for (var _iterator = node.children[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var c = _step.value; + + recurse(c); + edges.push({ source: node, target: c, type: c.edgeType }); + } + } catch (err) { + _didIteratorError = true; + _iteratorError = err; + } finally { + try { + if (!_iteratorNormalCompletion && _iterator.return) { + _iterator.return(); + } + } finally { + if (_didIteratorError) { + throw _iteratorError; + } + } + } + } + + recurse(root); + + return edges; +} + +(0, _model.onModelUpdate)(function (graph, force) { + return update(graph, force); +}); + +function update() { + var g = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : lastGraph; + var reset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + + + if (!reset) { + // g = JSON.parse(JSON.stringify(g)); + // g.id = -100; + } + + var fl = flatten(g); + + var graph = { + nodes: fl, + edges: flattenEdges(g) + }; + + lastGraph = g; + + if (reset) { + link = link.data([]); + link.exit().remove(); + node = node.data([]); + node.exit().remove(); + } + + link = links.selectAll("line").data(graph.edges, function (d) { + return d.target.id; + }); + link.exit().remove(); + var linkEnter = link.enter().append("line").attr("class", function (d) { + return d.type === "similar" ? "similar" : d.type === "related" ? "related" : "other"; + }).attr("marker-end", function (d) { + return "url(#svgLineArrow-" + d.type + ")"; + }); + link = linkEnter.merge(link); + + node = nodes.selectAll(".node").data(graph.nodes, function (d) { + return this._id || d.id; + }); + node.exit().remove(); + var nodeEnter = node.enter().append("g").each(function (d) { + this._id = d.id;d.element = this; + }).attr("class", function (d) { + return "node" + (d.id === 0 ? " root" : "") + " " + (d.type || "unknown"); + }).classed("selected", function (p) { + return p.selected; + }).call(dragger).on("click", function (d) { + if (d.type === "folder") { + d3.event.stopPropagation(); + var left = void 0; + if (d.parent && (left = (0, _model.unfold)(d, d.parent))) { + d.fx = d.x;d.fy = d.y; + if (d._clickTimeout) clearTimeout(d._clickTimeout); + d._clickTimeout = setTimeout(function () { + d.fx = d.fy = null; + d._clickTimeout = 0; + }, 1000); + } + if (left === 0) { + (0, _model.dropNodes)(d); + } + return; + } + if (d3.event.defaultPrevented) return; + if (shiftKey) { + if (d.selected) (0, _selection.deselectAll)(d);else (0, _selection.selectAll)(d); + } else { + d3.select(this).classed("selected", d.selected = !d.selected); // (!prevSel) + } + (0, _selection.updateSelection)(); + }); + + nodeEnter.append("circle").attr("r", function (d) { + return d.radius; + }); + + nodeEnter.append("text").attr("dy", ".3em").attr("style", function (d) { + return "font-size:" + Math.round(d.radius / 2) + "px"; + }).text(function (d) { + return d.label; + }); + + nodeEnter.each(function (d) { + if (d.type !== "folder") return; + d3.select(this).append("text").classed("tooltip", function () { + return true; + }).attr("dy", "-0.7em").attr("style", function (d) { + return "font-size:" + Math.round(d.radius / 2) + "px"; + }).text(function (d) { + return "Click to display more"; + }); + }); + node = nodeEnter.merge(node); + + if (reset) simulation = newSimulation(); + + simulation.nodes(graph.nodes).force("link").links(graph.edges); + + simulation.alpha(reset ? 1 : 0.4).restart(); + + brush.call(brusher).on(".brush", null); + + brush.select('.overlay').style('cursor', 'auto'); + + if (reset) { + for (var i = 100; i > 0; --i) { + simulation.tick(); + }(0, _selection.updateSelection)(); + resetZoom(); + } +} + +/***/ }), +/* 4 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.updateSelection = updateSelection; +exports.getSelection = getSelection; +exports.getOthers = getOthers; +exports.getHidden = getHidden; +exports.selectAll = selectAll; +exports.deselectAll = deselectAll; +exports.onSelectionUpdate = onSelectionUpdate; +exports.init = init; + +var _model = __webpack_require__(0); + +var model = _interopRequireWildcard(_model); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +var selection = [], + others = [], + hidden = [], + callbacks = []; + +function updateSelection() { + + var tree = model.getGraphData(); + selection = []; + others = []; + hidden = []; + + function findHidden(node) { + if (node.selected) hidden.push(node);else hidden.push(node); + if (node.children) { + var _iteratorNormalCompletion = true; + var _didIteratorError = false; + var _iteratorError = undefined; + + try { + for (var _iterator = node.children[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var _n = _step.value; + findHidden(_n); + } + } catch (err) { + _didIteratorError = true; + _iteratorError = err; + } finally { + try { + if (!_iteratorNormalCompletion && _iterator.return) { + _iterator.return(); + } + } finally { + if (_didIteratorError) { + throw _iteratorError; + } + } + } + }if (node._children) { + var _iteratorNormalCompletion2 = true; + var _didIteratorError2 = false; + var _iteratorError2 = undefined; + + try { + for (var _iterator2 = node._children[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { + var _n2 = _step2.value; + findHidden(_n2); + } + } catch (err) { + _didIteratorError2 = true; + _iteratorError2 = err; + } finally { + try { + if (!_iteratorNormalCompletion2 && _iterator2.return) { + _iterator2.return(); + } + } finally { + if (_didIteratorError2) { + throw _iteratorError2; + } + } + } + } + } + + function findSelected(node) { + if (node.selected) selection.push(node);else others.push(node); + if (node.children) { + var _iteratorNormalCompletion3 = true; + var _didIteratorError3 = false; + var _iteratorError3 = undefined; + + try { + for (var _iterator3 = node.children[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) { + var _n3 = _step3.value; + findSelected(_n3); + } + } catch (err) { + _didIteratorError3 = true; + _iteratorError3 = err; + } finally { + try { + if (!_iteratorNormalCompletion3 && _iterator3.return) { + _iterator3.return(); + } + } finally { + if (_didIteratorError3) { + throw _iteratorError3; + } + } + } + }if (node._children) { + var _iteratorNormalCompletion4 = true; + var _didIteratorError4 = false; + var _iteratorError4 = undefined; + + try { + for (var _iterator4 = node._children[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) { + var _n4 = _step4.value; + findHidden(_n4); + } + } catch (err) { + _didIteratorError4 = true; + _iteratorError4 = err; + } finally { + try { + if (!_iteratorNormalCompletion4 && _iterator4.return) { + _iterator4.return(); + } + } finally { + if (_didIteratorError4) { + throw _iteratorError4; + } + } + } + } + } + + findSelected(tree); + + callbacks.forEach(function (c) { + return c(selection); + }); +} + +function getSelection() { + return selection; +} + +function getOthers() { + return others; +} + +function getHidden() { + return hidden; +} + +function selectAll(node) { + var nodeItself = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; + + if (!node) return; + if (node.children) node.children.forEach(function (c) { + return selectAll(c); + }); + if (nodeItself) d3.select(node.element).classed("selected", node.selected = true); +} + +function deselectAll(node) { + var nodeItself = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; + + if (!node) return; + if (node.children) node.children.forEach(function (c) { + return deselectAll(c); + }); + if (nodeItself) d3.select(node.element).classed("selected", node.selected = false); +} + +/** + * The callback is invoked when selection changes. + * @param {selectionCallback} callback + */ +function onSelectionUpdate(callback) { + + callbacks.push(callback); +} + +function init() { + model.onModelUpdate(function () { + return updateSelection(); + }); +} + +/** + * This callback is invoked when selection changes. + * @callback selectionCallback + * @param {*[]} nodes - Currently selected nodes. + * @param {*} lastNodeSelected - The last node selected by user. + */ + +/***/ }), +/* 5 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.save = save; +exports.load = load; +exports.reset = reset; +var STORAGE_NAME = "iKnowEntityBrowser"; +var storage = JSON.parse(localStorage.getItem(STORAGE_NAME)) || {}; + +function save(key, value) { + storage[key] = value; + updateLocalStorage(); +} + +function load(key) { + return storage[key]; +} + +function reset() { + localStorage.removeItem(STORAGE_NAME); +} + +function updateLocalStorage() { + localStorage.setItem(STORAGE_NAME, JSON.stringify(storage)); +} + +/***/ }), +/* 6 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.init = init; + +var _selection = __webpack_require__(4); + +var _model = __webpack_require__(0); + +var _graph = __webpack_require__(3); + +var dropChildrenButton = null, + removeButton = null, + resetSelectionButton = null, + zoomInButton = null, + resetViewButton = null, + zoomOutButton = null, + selection = []; /** + * This file describes on-screen controls like UI link/remove buttons, etc. + */ + + +(0, _selection.onSelectionUpdate)(function (sel) { + selection = sel; + updateButtons(); +}); + +function updateButtons() { + var toDrop = 0; + var _iteratorNormalCompletion = true; + var _didIteratorError = false; + var _iteratorError = undefined; + + try { + for (var _iterator = selection[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var node = _step.value; + + toDrop += node.children ? node.children.length : 0; + } + } catch (err) { + _didIteratorError = true; + _iteratorError = err; + } finally { + try { + if (!_iteratorNormalCompletion && _iterator.return) { + _iterator.return(); + } + } finally { + if (_didIteratorError) { + throw _iteratorError; + } + } + } + + removeButton.classList[selection.length > 0 ? "remove" : "add"]("disabled"); + dropChildrenButton.classList[toDrop > 0 ? "remove" : "add"]("disabled"); + resetSelectionButton.classList[selection.length > 0 ? "remove" : "add"]("icon-outline"); + resetSelectionButton.classList[selection.length == 0 ? "remove" : "add"]("icon-filled"); + resetSelectionButton.classList[selection.length > 0 ? "remove" : "add"]("disabled"); +} + +function resetSelection() { + selection.forEach(function (n) { + return n.selected = n.wasSelected = false; + }); + (0, _selection.updateSelection)(); + (0, _graph.updateSelected)(); +} + +function deleteSelection() { + if (!selection.length) return; + (0, _model.dropNodes)(selection); + // updateSelection(); +} + +function dropChildren() { + if (!selection.length) return; + (0, _model.dropDescendants)(selection); + // updateSelection(); +} + +function init() { + dropChildrenButton = document.getElementById("dropChildrenButton"); + dropChildrenButton.addEventListener("click", dropChildren); + removeButton = document.getElementById("removeButton"); + removeButton.addEventListener("click", deleteSelection); + resetSelectionButton = document.getElementById("resetSelectionButton"); + resetSelectionButton.addEventListener("click", resetSelection); + zoomInButton = document.getElementById("zoomInButton"); + zoomInButton.addEventListener("click", function () { + return (0, _graph.scaleBy)(1.5); + }); + resetViewButton = document.getElementById("resetZoomButton"); + resetViewButton.addEventListener("click", function () { + return (0, _graph.resetZoom)(); + }); + zoomOutButton = document.getElementById("zoomOutButton"); + zoomOutButton.addEventListener("click", function () { + return (0, _graph.scaleBy)(0.75); + }); + updateButtons(); +} + +/***/ }), +/* 7 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.init = init; + +var _model = __webpack_require__(0); + +var model = _interopRequireWildcard(_model); + +var _graph = __webpack_require__(3); + +var graph = _interopRequireWildcard(_graph); + +var _sourceSettings = __webpack_require__(11); + +var sourceSettings = _interopRequireWildcard(_sourceSettings); + +var _tabularViewSettings = __webpack_require__(12); + +var tabularViewSettings = _interopRequireWildcard(_tabularViewSettings); + +var _storage = __webpack_require__(5); + +var storage = _interopRequireWildcard(_storage); + +var _values = __webpack_require__(1); + +var _utils = __webpack_require__(2); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +function toggleSettings(uiStateModel) { + uiStateModel.settingsToggled = !uiStateModel.settingsToggled; + d3.select("#settings").classed("active", uiStateModel.settingsToggled); + d3.select("#windows").classed("offScreen", uiStateModel.settingsToggled); + (0, _values.applyFixedClasses)(); + if (!uiStateModel.settingsToggled && (0, _values.getChanges)().length !== 0) { + (0, _values.applyChanges)(); + model.update(function () { + return graph.update(true); + }); + } +} + +function init() { + + d3.select("#settingsToggle").data([model.uiState]).on("click", toggleSettings); + + d3.select("#closeSettingsToggle").data([model.uiState]).on("click", toggleSettings); + + tabularViewSettings.init(); + (0, _values.init)(model.uiState); + sourceSettings.init(); + + // make inputs auto-sizable + [].slice.call(document.querySelectorAll("input[autosize]")).forEach(function (i) { + return (0, _utils.makeAutosizable)(i); + }); + document.getElementById("settings.resetSettings").addEventListener("click", function () { + if (!confirm("Do you want to set all the settings to defaults?")) return; + storage.reset(); + location.reload(); + }); + + document.getElementById("expandViewButton").addEventListener("click", function () { + (0, _values.setOption)("compact", false); + updateCompactView(); + }); + document.getElementById("collapseCompactViewButton").addEventListener("click", function () { + (0, _values.setOption)("compact", true); + console.log((0, _values.getOption)("compact")); + updateCompactView(); + }); + updateCompactView(); +} + +function updateCompactView() { + + var compact = !!(0, _values.getOption)("compact"); + + function toggle(element) { + var flag = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; + + element.classList.toggle("hidden", !flag); + } + + toggle(document.getElementById("rightTopIcons"), !compact); + toggle(document.getElementById("rightTopExpandButton"), compact); + toggle(document.getElementById("toolbarIcons"), !compact); +} + +/***/ }), +/* 8 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.init = init; + +var _export = __webpack_require__(14); + +var _model = __webpack_require__(0); + +var model = _interopRequireWildcard(_model); + +var _selection = __webpack_require__(4); + +var _values = __webpack_require__(1); + +var _utils = __webpack_require__(2); + +var _graph = __webpack_require__(3); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +var sorting = { + properties: ["entities", "0", "frequency"], + order: -1 +}; + +var sorter = function sorter(a, b) { + var i = 0; + while (i < sorting.properties.length && typeof (a = a[sorting.properties[i]]) !== "undefined" && typeof (b = b[sorting.properties[i]]) !== "undefined") { + ++i; + } + return a > b ? sorting.order : a === b ? 0 : -sorting.order; +}; + +/** + * this: node + */ +function switchSelected() { + if (!this.element) return; + this.element.classList.remove("highlighted"); + d3.select(this.element).classed("selected", this.selected = !this.selected); + (0, _selection.updateSelection)(); +} + +/** + * this: node + */ +function toggleChildrenSelected(e) { + var nodeItself = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; + + var sel = false, + el = e.target || e.srcElement; + var _iteratorNormalCompletion = true; + var _didIteratorError = false; + var _iteratorError = undefined; + + try { + for (var _iterator = this.children[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var o = _step.value; + if (o.selected) { + sel = true;break; + } + } + } catch (err) { + _didIteratorError = true; + _iteratorError = err; + } finally { + try { + if (!_iteratorNormalCompletion && _iterator.return) { + _iterator.return(); + } + } finally { + if (_didIteratorError) { + throw _iteratorError; + } + } + } + + if (sel) (0, _selection.deselectAll)(this, nodeItself);else (0, _selection.selectAll)(this, nodeItself); + el.className = "icon-" + (!sel ? "filled" : "outline"); + this.element.classList.remove("highlighted"); + (0, _selection.updateSelection)(); +} + +function getFolded(initialNode) { + var node = initialNode; + do { + if (!node.parent) return initialNode; + if (node.parent.children.indexOf(node) === -1) return node.parent; + } while (node = node.parent); + return initialNode; +} + +function insertRows(data, table, selected) { + var columns = (0, _values.getOption)("tabularColumns"); + + var _loop = function _loop(i) { + var row = table.insertRow(i), + node = data[i]; + for (var col = 0; col < columns.length; col++) { + var _cell = row.insertCell(col), + cVal = (0, _utils.getObjProp)(node, columns[col].property), + val = typeof cVal === "undefined" ? columns[col].default || "" : cVal; + _cell.textContent = val; + if (columns[col].class) _cell.className = val; + } + var cell = row.insertCell(columns.length); + var ee = document.createElement("i"), + ei = document.createElement("i"), + sel = false; + if (selected !== null) { + var _iteratorNormalCompletion2 = true; + var _didIteratorError2 = false; + var _iteratorError2 = undefined; + + try { + for (var _iterator2 = node.children[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { + var o = _step2.value; + + if (o.selected) { + sel = true; + break; + } + } + } catch (err) { + _didIteratorError2 = true; + _iteratorError2 = err; + } finally { + try { + if (!_iteratorNormalCompletion2 && _iterator2.return) { + _iterator2.return(); + } + } finally { + if (_didIteratorError2) { + throw _iteratorError2; + } + } + } + + ei.className = "icon-" + (sel ? "filled" : "outline"); + ei.setAttribute("title", (sel ? "Deselect" : "Select") + " node and children"); + ei.addEventListener("click", toggleChildrenSelected.bind(node)); + ee.className = "icon-" + (selected ? "close" : "add"); + ee.setAttribute("title", (selected ? "Remove from" : "Add to") + " selection"); + ee.addEventListener("click", switchSelected.bind(node)); + cell.appendChild(ee); + if (node.children.length) cell.appendChild(ei); + row.addEventListener("mouseover", function () { + return node.element.classList.add("highlighted"); + }); + row.addEventListener("mouseout", function () { + return node.element.classList.remove("highlighted"); + }); + } + row.addEventListener("click", function () { + var n = getFolded(node); + (0, _graph.focusOn)(n.x, n.y); + }); + }; + + for (var i = 0; i < data.length; i++) { + _loop(i); + } +} + +function updateSelected() { + var data = (0, _selection.getSelection)().filter(function (node) { + return node.type === "entity"; + }).sort(sorter), + table = document.querySelector("#tabular-selected"); + table.textContent = ""; + insertRows(data, table, true); +} + +function updateOthers() { + var data = (0, _selection.getOthers)().filter(function (node) { + return node.type === "entity"; + }).sort(sorter), + table = document.querySelector("#tabular-others"); + table.textContent = ""; + insertRows(data, table, false); +} + +function updateHidden() { + var data = (0, _selection.getHidden)().filter(function (node) { + return node.type === "entity"; + }).sort(sorter), + table = document.querySelector("#tabular-hidden"); + table.textContent = ""; + if ((0, _values.getOption)("tabularShowHiddenNodes")) insertRows(data, table, null); +} + +function updateAll() { + updateHeaders(); + updateSelected(); + updateOthers(); + updateHidden(); +} + +(0, _selection.onSelectionUpdate)(function () { + if (!model.uiState.tabularToggled) return; + updateAll(); +}); + +/** + * @this {HTMLElement} TH + */ +function columnClicked() { + var attr = this.getAttribute("data-prop"), + arr = attr.split("."); + if (attr === sorting.properties.join(".")) sorting.order = sorting.order === -1 ? 1 : sorting.order === 1 ? 0 : -1;else sorting.order = -1; + sorting.properties = arr; + updateHeaders(attr); + updateAll(); +} + +function updateHeaders() { + var dataProp = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : sorting.properties.join("."); + + var head = document.querySelector("#tabular thead tr"); + while (head.firstChild) { + head.removeChild(head.firstChild); + }(0, _values.getOption)("tabularColumns").forEach(function (h) { + var el = document.createElement("th"); + el.textContent = h.label; + el.setAttribute("data-prop", h.property.join(".")); + el.addEventListener("click", columnClicked); + if (h.property.join(".") === dataProp) el.classList.toggle("sort-" + (sorting.order === 1 ? "up" : "down"), sorting.order !== 0); + head.appendChild(el); + }); + head.appendChild(document.createElement("th")); +} + +function updateToolbarsWidth() { + document.getElementById("preservedToolbar").style.width = document.getElementById("toolbarIcons").style.width = document.body.getBoundingClientRect().width - (model.uiState.tabularToggled ? document.getElementById("table").getBoundingClientRect().width : 0) + "px"; +} + +function init() { + + window.addEventListener("resize", updateToolbarsWidth); + updateToolbarsWidth(); + + d3.select("#tableToggle").data([model.uiState]).on("click", function (d) { + d.tabularToggled = !d.tabularToggled; + d3.select(this).classed("toggled", d.tabularToggled); + d3.select("#table").classed("active", d.tabularToggled); + if (d.tabularToggled) updateAll(); + updateToolbarsWidth(); + var w = document.getElementById("table").getBoundingClientRect().width / 2; + (0, _graph.translateBy)(d.tabularToggled ? -w : w); + }); + + d3.select("#exportCSV").on("click", function () { + (0, _export.csv)([].slice.call(document.querySelector("#table table").rows).map(function (row) { + return [].slice.call(row.cells).map(function (cell) { + return cell.textContent; + }); + })); + }); + + updateHeaders(); +} + +/***/ }), +/* 9 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _graph = __webpack_require__(3); + +var graph = _interopRequireWildcard(_graph); + +var _tabular = __webpack_require__(8); + +var tabular = _interopRequireWildcard(_tabular); + +var _settings = __webpack_require__(7); + +var settings = _interopRequireWildcard(_settings); + +var _model = __webpack_require__(0); + +var model = _interopRequireWildcard(_model); + +var _controls = __webpack_require__(6); + +var controls = _interopRequireWildcard(_controls); + +var _selection = __webpack_require__(4); + +var selection = _interopRequireWildcard(_selection); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +window.init = function () { + + tabular.init(); + settings.init(); + graph.init(); + controls.init(); + model.init(); + selection.init(); + model.update(function () { + return graph.update(true); + }); +}; + +/***/ }), +/* 10 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.createState = createState; +exports.undo = undo; +exports.redo = redo; +exports.reset = reset; +exports.init = init; +var history = [], + redoHistory = [], + undoButton = null, + redoButton = null; + +function createState() { + var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, + undo = _ref.undo, + redo = _ref.redo; + + if (typeof undo !== "function" || typeof redo !== "function") throw new Error("Undo and Redo must be both functions"); + redoHistory = []; + history.push({ undo: undo, redo: redo }); + updateButtons(); +} + +function undo() { + var undoed = history.pop(); + if (!undoed) return; + redoHistory.push(undoed); + undoed.undo(); +} + +function redo() { + var redoed = redoHistory.pop(); + if (!redoed) return; + history.push(redoed); + redoed.redo(); +} + +function reset() { + history = []; + redoHistory = []; + updateButtons(); +} + +function updateButtons() { + undoButton.classList[history.length ? "remove" : "add"]("disabled"); + redoButton.classList[redoHistory.length ? "remove" : "add"]("disabled"); +} + +function init() { + undoButton = document.getElementById("undoButton"); + redoButton = document.getElementById("redoButton"); + undoButton.addEventListener("click", function () { + undo();updateButtons(); + }); + redoButton.addEventListener("click", function () { + redo();updateButtons(); + }); + updateButtons(); +} + +/***/ }), +/* 11 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.init = init; + +var _values = __webpack_require__(1); + +var _model = __webpack_require__(0); + +var model = _interopRequireWildcard(_model); + +var _graph = __webpack_require__(3); + +var graph = _interopRequireWildcard(_graph); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +function bind(elements) { + var _iteratorNormalCompletion = true; + var _didIteratorError = false; + var _iteratorError = undefined; + + try { + for (var _iterator = elements[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var e = _step.value; + + var el = document.getElementById(e); + (0, _values.setInputValue)(el); + if (el.getAttribute("type") === "text") el.addEventListener("input", _values.setInputValue);else el.addEventListener("change", _values.setInputValue); + } + } catch (err) { + _didIteratorError = true; + _iteratorError = err; + } finally { + try { + if (!_iteratorNormalCompletion && _iterator.return) { + _iterator.return(); + } + } finally { + if (_didIteratorError) { + throw _iteratorError; + } + } + } +} + +function init() { + + bind(["settings.host", "settings.port", "settings.domain", "settings.queryType", "settings.seed", "settings.webAppName", "settings.keepQueryTypeInView", "settings.keepSeedInView", "settings.tabularShowHiddenNodes"]); + + function apply() { + if ((0, _values.getChanges)().length !== 0) { + (0, _values.applyChanges)(); + model.update(function () { + return graph.update(true); + }); + } + } + + document.getElementById("settings.queryType").addEventListener("change", function () { + if (!(0, _values.getOption)("keepQueryTypeInView") || model.uiState.settingsToggled) return; + apply(); + }); + + document.getElementById("settings.seed").addEventListener("blur", function () { + if (!(0, _values.getOption)("keepSeedInView") || model.uiState.settingsToggled) return; + apply(); + }); + document.getElementById("settings.seed").addEventListener("keydown", function (e) { + if (e.keyCode !== 13) return; + document.getElementById("settings.seed").blur(); + }); +} + +/***/ }), +/* 12 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.init = init; + +var _values = __webpack_require__(1); + +var _utils = __webpack_require__(2); + +var element = null; + +var properties = [["id"], ["edgeType"], ["label"], ["entities", 0, "score"], ["entities", 0, "spread"], ["entities", 0, "frequency"], ["parent", "label"], ["parent", "id"]]; + +function init() { + element = document.getElementById("settings.tabularColumns"); + updateColumnSettings(); +} + +function moveColumn(opts, index) { + var inc = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1; + + if (index + inc < 0 || index + inc >= opts.length) return; + var opt = opts.splice(index, 1)[0]; + opts.splice(index + inc, 0, opt); + (0, _values.setOption)("tabularColumns", opts); + updateColumnSettings(); +} + +function updateColumnSettings() { + var cols = (0, _values.getOption)("tabularColumns"); + while (element.firstChild) { + element.removeChild(element.firstChild); + }cols.forEach(function (column, index) { + var el = document.createElement("span"), + inp = document.createElement("input"), + propSelect = document.createElement("select"), + close = document.createElement("i"), + left = document.createElement("i"), + right = document.createElement("i"), + text = document.createTextNode(":"); + left.className = "icon-arrow-left"; + left.addEventListener("click", function () { + return moveColumn(cols.slice(), index, -1); + }); + right.className = "icon-arrow-right"; + right.addEventListener("click", function () { + return moveColumn(cols.slice(), index, 1); + }); + close.className = "icon-close"; + close.addEventListener("click", function () { + var opts = cols.slice(); + opts.splice(index, 1); + (0, _values.setOption)("tabularColumns", opts); + updateColumnSettings(); + }); + inp.setAttribute("type", "text"); + inp.value = column.label || ""; + (0, _utils.makeAutosizable)(inp); + inp.addEventListener("change", function () { + (0, _values.setOption)(["tabularColumns", index, "label"], inp.value); + }); + propSelect.setAttribute("title", "Node Property"); + var _iteratorNormalCompletion = true; + var _didIteratorError = false; + var _iteratorError = undefined; + + try { + for (var _iterator = properties[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var p = _step.value; + + var opt = document.createElement("option"), + val = p.join("."); + opt.setAttribute("value", opt.textContent = val); + if (column.property.join(".") === val) opt.selected = true; + propSelect.appendChild(opt); + } + } catch (err) { + _didIteratorError = true; + _iteratorError = err; + } finally { + try { + if (!_iteratorNormalCompletion && _iterator.return) { + _iterator.return(); + } + } finally { + if (_didIteratorError) { + throw _iteratorError; + } + } + } + + propSelect.addEventListener("change", function () { + (0, _values.setOption)(["tabularColumns", index, "property"], propSelect.options[propSelect.selectedIndex].value.split(".")); + }); + el.className = "column"; + el.appendChild(left); + el.appendChild(inp); + el.appendChild(text); + el.appendChild(propSelect); + el.appendChild(close); + el.appendChild(right); + element.appendChild(el); + }); + var add = document.createElement("span"), + icon = document.createElement("i"); + add.className = "column"; + add.style.paddingLeft = "4px"; + add.style.paddingRight = "5px"; + icon.className = "icon-add"; + add.addEventListener("click", function () { + (0, _values.setOption)("tabularColumns", cols.concat({ + label: "ID", + property: ["id"] + })); + updateColumnSettings(); + }); + add.appendChild(icon); + element.appendChild(add); +} + +/***/ }), +/* 13 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.getData = getData; + +var _utils = __webpack_require__(2); + +var _values = __webpack_require__(1); + +function getData(callback) { + var https = ((0, _values.getOption)("host") || location.href).indexOf("https:") === 0, + port = (0, _values.getOption)("port") || +location.port || 57772; + (0, _utils.httpGet)("" + ((0, _values.getOption)("host") || "http://" + location.hostname) + (port === (https ? 443 : 80) ? "" : ":" + port) + "/" + ((0, _values.getOption)("webAppName") || "EntityBrowser") + "/api/domain/" + encodeURIComponent((0, _values.getOption)("domain")) + "/" + encodeURIComponent((0, _values.getOption)("queryType")) + "/" + encodeURIComponent((0, _values.getOption)("seed")), callback); +} + +/***/ }), +/* 14 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.csv = csv; +/** + * @param {*[][]} dataArray - Table to be exported. + */ +function csv() { + var dataArray = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; + + + console.log(dataArray); + var csvContent = "data:text/csv;charset=utf-8,"; + + dataArray.forEach(function (infoArray, index) { + + var dataString = infoArray.join(","); + csvContent += index < dataArray.length ? dataString + "\n" : dataString; + }); + + var encodedUri = encodeURI(csvContent), + link = document.createElement("a"); + + link.setAttribute("href", encodedUri); + link.setAttribute("download", "entityGraph.csv"); + document.body.appendChild(link); + link.click(); + + setTimeout(function () { + return link.parentNode.removeChild(link); + }, 10); +} + +/***/ }), +/* 15 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }(); + +exports.getSearchString = getSearchString; +var getParams = function getParams(query) { + if (!query) { + return {}; + } + return (/^[?#]/.test(query) ? query.slice(1) : query).split('&').reduce(function (params, param) { + var _param$split = param.split('='), + _param$split2 = _slicedToArray(_param$split, 2), + key = _param$split2[0], + value = _param$split2[1]; + + params[key] = value ? decodeURIComponent(value.replace(/\+/g, ' ')) : ''; + return params; + }, {}); +}; + +var params = getParams(location.search); + +function getSearchString() { + return params; +} + +/***/ }), +/* 16 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return toaster; }); +//! Do not import this module to the application! Import index.js instead. + +/** + * @type {Toaster} + */ +let toaster = new Toaster(); + +/** + * Toasts controller. Controls toasts that appear on the screen. + * @constructor + * @private + */ +function Toaster () { + + /** + * @type {Toast[]} + */ + this.toasts = []; + +} + +/** + * @param {Toast} toast + * @param {number} timeout + */ +Toaster.prototype.push = function (toast, timeout) { + + requestAnimationFrame(() => { + let height = toast.attach(0), + self = this; + + this.toasts.forEach((toast) => { + toast.seek(height); + }); + this.toasts.push(toast); + + setTimeout(() => { + self.toasts.splice(0, 1)[0].detach(); + }, timeout); + }); + +}; + +/***/ }), +/* 17 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +Object.defineProperty(__webpack_exports__, "__esModule", { value: true }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__Toaster_js__ = __webpack_require__(16); +/* harmony export (immutable) */ __webpack_exports__["configureToasts"] = configureToasts; +/* harmony export (immutable) */ __webpack_exports__["Toast"] = Toast; + + +Toast.TYPE_INFO = "info"; +Toast.TYPE_MESSAGE = "message"; +Toast.TYPE_WARNING = "warning"; +Toast.TYPE_ERROR = "error"; +Toast.TYPE_DONE = "done"; + +Toast.TIME_SHORT = 2000; +Toast.TIME_NORMAL = 4000; +Toast.TIME_LONG = 8000; + +let options = { + topOrigin: 0 +}; + +/** + * Allows you to configure Toasts options during the application setup. + * @param newOptions + */ +function configureToasts (newOptions = {}) { + options = Object.assign(options, newOptions); +} + +/** + * On-screen toast message. + * @param {string} text - Message text. + * @param {string} [type] - Toast.TYPE_* + * @param {number} [timeout] - Toast.TIME_* + * @constructor + */ +function Toast (text = `No text!`, type = Toast.TYPE_INFO, timeout = Toast.TIME_LONG) { + + let el1 = document.createElement("div"), + el2 = document.createElement("div"); + + el1.className = "toast"; + el2.className = `body ${type}`; + el1.appendChild(el2); + el2.innerHTML = `${text}`; + el1.style.opacity = 0; + + this.element = el1; + this.position = 0; + + __WEBPACK_IMPORTED_MODULE_0__Toaster_js__["a" /* toaster */].push(this, timeout); + +} + +/** + * Attaches toast to GUI and returns the height of the element. + */ +Toast.prototype.attach = function (position) { + + this.position = position; + this.updateVisualPosition(); + document.body.appendChild(this.element); + requestAnimationFrame(() => { + this.element.style.opacity = 1; + }); + + return this.element.offsetHeight; + +}; + +/** + * Seek the toast message by Y coordinate. + * @param delta + */ +Toast.prototype.seek = function (delta) { + + this.position += delta; + this.updateVisualPosition(); + +}; + +/** + * @private + */ +Toast.prototype.updateVisualPosition = function () { + + requestAnimationFrame(() => { + this.element.style.bottom = -options.topOrigin + this.position + "px" + }); + +}; + +Toast.prototype.detach = function () { + + let self = this; + + if (!this.element.parentNode) return; + + requestAnimationFrame(() => { + this.element.style.opacity = 0; + }); + setTimeout(() => { + requestAnimationFrame(() => { + self.element.parentNode.removeChild(self.element); + }); + }, 300); + +}; + +/***/ }), +/* 18 */ +/***/ (function(module, exports) { + +module.exports = { + "graph": { + "nodes": [ + { + "id": 0, + "label": "medicine", + "type": "entity", + "entities": [ + { + "frequency": 317, + "id": 8378, + "score": 3626, + "spread": 214, + "value": "medicine" + } + ] + }, + { + "id": 1, + "label": "patient", + "type": "entity", + "entities": [ + { + "frequency": 317, + "id": 8378, + "score": 3626, + "spread": 214, + "value": "patient" + } + ] + }, + { + "id": 2, + "label": "patient's family", + "type": "entity", + "entities": [ + { + "frequency": 9, + "id": 8411, + "score": 192, + "spread": 6, + "value": "patient's family" + } + ] + }, + { + "id": 4, + "label": "patient's son", + "type": "entity", + "entities": [ + { + "frequency": 3, + "id": 8446, + "score": 96, + "spread": 3, + "value": "patient's son" + } + ] + }, + { + "id": 5, + "label": "patient's wife", + "type": "entity", + "entities": [ + { + "frequency": 4, + "id": 8452, + "score": 96, + "spread": 3, + "value": "patient's wife" + } + ] + }, + { + "id": 6, + "label": "patient's name", + "type": "entity", + "entities": [ + { + "frequency": 1, + "id": 8430, + "score": 85, + "spread": 1, + "value": "patient's name" + } + ] + }, + { + "id": 7, + "label": "patient's healthcare proxy", + "type": "entity", + "entities": [ + { + "frequency": 1, + "id": 8416, + "score": 64, + "spread": 1, + "value": "patient's healthcare proxy" + } + ] + }, + { + "id": 9, + "label": "patient identity", + "type": "entity", + "entities": [ + { + "frequency": 1, + "id": 8384, + "score": 42, + "spread": 1, + "value": "patient identity" + } + ] + }, + { + "id": 10, + "label": "patient's identity", + "type": "entity", + "entities": [ + { + "frequency": 2, + "id": 8421, + "score": 106, + "spread": 2, + "value": "patient's identity" + } + ] + }, + { + "id": 11, + "label": "documenting patient identity", + "type": "entity", + "entities": [ + { + "frequency": 1, + "id": 3641, + "score": 42, + "spread": 1, + "value": "documenting patient identity" + } + ] + }, + { + "id": 12, + "label": "patient's cardiac event", + "type": "entity", + "entities": [ + { + "frequency": 1, + "id": 8404, + "score": 42, + "spread": 1, + "value": "patient's cardiac event" + } + ] + }, + { + "id": 13, + "label": "patient's sister", + "type": "entity", + "entities": [ + { + "frequency": 1, + "id": 8444, + "score": 42, + "spread": 1, + "value": "patient's sister" + } + ] + }, + { + "id": 14, + "label": "patient's skin", + "type": "entity", + "entities": [ + { + "frequency": 2, + "id": 8445, + "score": 36, + "spread": 2, + "value": "patient's skin" + } + ] + }, + { + "id": 15, + "label": "patient's chart", + "type": "entity", + "entities": [ + { + "frequency": 1, + "id": 8405, + "score": 32, + "spread": 1, + "value": "patient's chart" + } + ] + }, + { + "id": 21, + "label": "present", + "type": "entity", + "entities": [ + { + "frequency": 142, + "id": 8985, + "score": 1658, + "spread": 121, + "value": "present" + } + ] + }, + { + "id": 23, + "label": "xyz123", + "type": "entity", + "entities": [ + { + "frequency": 382, + "id": 13207, + "score": 1640, + "spread": 324, + "value": "xyz123" + } + ] + }, + { + "id": 24, + "label": "dr. xyz123", + "type": "entity", + "entities": [ + { + "frequency": 99, + "id": 3682, + "score": 2057, + "spread": 71, + "value": "dr. xyz123" + } + ] + }, + { + "id": 25, + "label": "dr. xyz123 xyz123", + "type": "entity", + "entities": [ + { + "frequency": 47, + "id": 3683, + "score": 1050, + "spread": 30, + "value": "dr. xyz123 xyz123" + } + ] + }, + { + "id": 26, + "label": "dr. xyz123 xyz123 xyz123", + "type": "entity", + "entities": [ + { + "frequency": 1, + "id": 3685, + "score": 51, + "spread": 1, + "value": "dr. xyz123 xyz123 xyz123" + } + ] + }, + { + "id": 27, + "label": "dr. xyz123 xyz123 d'othee", + "type": "entity", + "entities": [ + { + "frequency": 2, + "id": 3684, + "score": 42, + "spread": 2, + "value": "dr. xyz123 xyz123 d'othee" + } + ] + }, + { + "id": 28, + "label": "attending radiologist dr. xyz123", + "type": "entity", + "entities": [ + { + "frequency": 1, + "id": 1982, + "score": 32, + "spread": 1, + "value": "attending radiologist dr. xyz123" + } + ] + }, + { + "id": 29, + "label": "drs. xyz123", + "type": "entity", + "entities": [ + { + "frequency": 20, + "id": 18498, + "score": 1154, + "spread": 20, + "value": "drs. xyz123" + } + ] + }, + { + "id": 30, + "label": "drs. xyz123 xyz123", + "type": "entity", + "entities": [ + { + "frequency": 6, + "id": 18499, + "score": 220, + "spread": 6, + "value": "drs. xyz123 xyz123" + } + ] + }, + { + "id": 31, + "label": "xyz123 xyz123", + "type": "entity", + "entities": [ + { + "frequency": 27, + "id": 13236, + "score": 351, + "spread": 20, + "value": "xyz123 xyz123" + } + ] + }, + { + "id": 32, + "label": "doctors xyz123", + "type": "entity", + "entities": [ + { + "frequency": 1, + "id": 3640, + "score": 64, + "spread": 1, + "value": "doctors xyz123" + } + ] + }, + { + "id": 33, + "label": "drxyz123 xyz123", + "type": "entity", + "entities": [ + { + "frequency": 1, + "id": 3703, + "score": 64, + "spread": 1, + "value": "drxyz123 xyz123" + } + ] + }, + { + "id": 34, + "label": "xyz123-xyz123 tube", + "type": "entity", + "entities": [ + { + "frequency": 1, + "id": 13256, + "score": 64, + "spread": 1, + "value": "xyz123-xyz123 tube" + } + ] + }, + { + "id": 35, + "label": "xyz123 present", + "type": "entity", + "entities": [ + { + "frequency": 2, + "id": 13226, + "score": 42, + "spread": 2, + "value": "xyz123 present" + } + ] + }, + { + "id": 36, + "label": "benefits", + "type": "entity", + "entities": [ + { + "frequency": 31, + "id": 2111, + "score": 1444, + "spread": 31, + "value": "benefits" + } + ] + }, + { + "id": 37, + "label": "supervising", + "type": "entity", + "entities": [ + { + "frequency": 32, + "id": 11260, + "score": 1313, + "spread": 32, + "value": "supervising" + } + ] + }, + { + "id": 38, + "label": "supervising staff", + "type": "entity", + "entities": [ + { + "frequency": 1, + "id": 11261, + "score": 28, + "spread": 1, + "value": "supervising staff" + } + ] + }, + { + "id": 42, + "label": "alternatives", + "type": "entity", + "entities": [ + { + "frequency": 10, + "id": 1255, + "score": 576, + "spread": 10, + "value": "alternatives" + } + ] + }, + { + "id": 43, + "label": "detail", + "type": "entity", + "entities": [ + { + "frequency": 9, + "id": 3392, + "score": 576, + "spread": 9, + "value": "detail" + } + ] + }, + { + "id": 44, + "label": "detail telephonically", + "type": "entity", + "entities": [ + { + "frequency": 1, + "id": 3393, + "score": 64, + "spread": 1, + "value": "detail telephonically" + } + ] + }, + { + "id": 45, + "label": "details", + "type": "entity", + "entities": [ + { + "frequency": 1, + "id": 3395, + "score": 64, + "spread": 1, + "value": "details" + } + ] + }, + { + "id": 50, + "label": "full", + "type": "entity", + "entities": [ + { + "frequency": 10, + "id": 4434, + "score": 420, + "spread": 10, + "value": "full" + } + ] + }, + { + "id": 51, + "label": "indications", + "type": "entity", + "entities": [ + { + "frequency": 14, + "id": 5082, + "score": 388, + "spread": 14, + "value": "indications" + } + ] + }, + { + "id": 52, + "label": "site", + "type": "entity", + "entities": [ + { + "frequency": 22, + "id": 10531, + "score": 384, + "spread": 19, + "value": "site" + } + ] + }, + { + "id": 53, + "label": "catheter entry site", + "type": "entity", + "entities": [ + { + "frequency": 1, + "id": 2587, + "score": 51, + "spread": 1, + "value": "catheter entry site" + } + ] + }, + { + "id": 54, + "label": "puncture site", + "type": "entity", + "entities": [ + { + "frequency": 2, + "id": 9304, + "score": 42, + "spread": 2, + "value": "puncture site" + } + ] + }, + { + "id": 55, + "label": "end", + "type": "entity", + "entities": [ + { + "frequency": 5, + "id": 3831, + "score": 362, + "spread": 5, + "value": "end" + } + ] + }, + { + "id": 58, + "label": "addendum", + "type": "entity", + "entities": [ + { + "frequency": 1, + "id": 1070, + "score": 51, + "spread": 1, + "value": "addendum" + } + ] + }, + { + "id": 59, + "label": "attending", + "type": "entity", + "entities": [ + { + "frequency": 1, + "id": 1978, + "score": 42, + "spread": 1, + "value": "attending" + } + ] + }, + { + "id": 60, + "label": "attending radiologist", + "type": "entity", + "entities": [ + { + "frequency": 39, + "id": 1981, + "score": 1076, + "spread": 39, + "value": "attending radiologist" + } + ] + }, + { + "id": 61, + "label": "attending physician", + "type": "entity", + "entities": [ + { + "frequency": 7, + "id": 1980, + "score": 136, + "spread": 7, + "value": "attending physician" + } + ] + }, + { + "id": 67, + "label": "supine", + "type": "entity", + "entities": [ + { + "frequency": 34, + "id": 11262, + "score": 280, + "spread": 34, + "value": "supine" + } + ] + }, + { + "id": 68, + "label": "uneventful", + "type": "entity", + "entities": [ + { + "frequency": 2, + "id": 12071, + "score": 212, + "spread": 2, + "value": "uneventful" + } + ] + }, + { + "id": 69, + "label": "catheter", + "type": "entity", + "entities": [ + { + "frequency": 146, + "id": 2585, + "score": 202, + "spread": 63, + "value": "catheter" + } + ] + }, + { + "id": 70, + "label": "both foley catheters", + "type": "entity", + "entities": [ + { + "frequency": 1, + "id": 2323, + "score": 85, + "spread": 1, + "value": "both foley catheters" + } + ] + }, + { + "id": 71, + "label": "mikaelsson catheter", + "type": "entity", + "entities": [ + { + "frequency": 1, + "id": 6844, + "score": 85, + "spread": 1, + "value": "mikaelsson catheter" + } + ] + }, + { + "id": 72, + "label": "unasyn", + "type": "entity", + "entities": [ + { + "frequency": 2, + "id": 12009, + "score": 195, + "spread": 1, + "value": "unasyn" + } + ] + }, + { + "id": 74, + "label": "angiographic table", + "type": "entity", + "entities": [ + { + "frequency": 22, + "id": 1494, + "score": 180, + "spread": 22, + "value": "angiographic table" + } + ] + }, + { + "id": 76, + "label": "3 grams", + "type": "entity", + "entities": [ + { + "frequency": 2, + "id": 403, + "score": 169, + "spread": 1, + "value": "3 grams" + } + ] + }, + { + "id": 77, + "label": "no evidence", + "type": "entity", + "entities": [ + { + "frequency": 264, + "id": 7548, + "score": 160, + "spread": 185, + "value": "no evidence" + } + ] + }, + { + "id": 78, + "label": "no radiogrpahic evidence", + "type": "entity", + "entities": [ + { + "frequency": 1, + "id": 7760, + "score": 64, + "spread": 1, + "value": "no radiogrpahic evidence" + } + ] + }, + { + "id": 79, + "label": "sheath", + "type": "entity", + "entities": [ + { + "frequency": 58, + "id": 10373, + "score": 136, + "spread": 31, + "value": "sheath" + } + ] + }, + { + "id": 80, + "label": "5 french angiographic sheath", + "type": "entity", + "entities": [ + { + "frequency": 2, + "id": 605, + "score": 42, + "spread": 1, + "value": "5 french angiographic sheath" + } + ] + }, + { + "id": 81, + "label": "6 mmhg", + "type": "entity", + "entities": [ + { + "frequency": 2, + "id": 721, + "score": 128, + "spread": 2, + "value": "6 mmhg" + } + ] + }, + { + "id": 82, + "label": "duration", + "type": "entity", + "entities": [ + { + "frequency": 2, + "id": 3726, + "score": 128, + "spread": 2, + "value": "duration" + } + ] + }, + { + "id": 83, + "label": "entirety", + "type": "entity", + "entities": [ + { + "frequency": 2, + "id": 3894, + "score": 128, + "spread": 2, + "value": "entirety" + } + ] + }, + { + "id": 84, + "label": "type", + "type": "entity", + "entities": [ + { + "frequency": 2, + "id": 11982, + "score": 128, + "spread": 2, + "value": "type" + } + ] + }, + { + "id": 85, + "label": "appropriate requisition", + "type": "entity", + "entities": [ + { + "frequency": 1, + "id": 1651, + "score": 121, + "spread": 1, + "value": "appropriate requisition" + } + ] + }, + { + "id": 86, + "label": "consent", + "type": "entity", + "entities": [ + { + "frequency": 6, + "id": 2981, + "score": 117, + "spread": 5, + "value": "consent" + } + ] + }, + { + "id": 87, + "label": "informed consent", + "type": "entity", + "entities": [ + { + "frequency": 28, + "id": 5145, + "score": 465, + "spread": 28, + "value": "informed consent" + } + ] + }, + { + "id": 88, + "label": "written informed consent", + "type": "entity", + "entities": [ + { + "frequency": 7, + "id": 18730, + "score": 212, + "spread": 7, + "value": "written informed consent" + } + ] + }, + { + "id": 89, + "label": "appropriate informed consent", + "type": "entity", + "entities": [ + { + "frequency": 1, + "id": 18420, + "score": 79, + "spread": 1, + "value": "appropriate informed consent" + } + ] + }, + { + "id": 90, + "label": "signed informed consent", + "type": "entity", + "entities": [ + { + "frequency": 1, + "id": 18666, + "score": 42, + "spread": 1, + "value": "signed informed consent" + } + ] + }, + { + "id": 91, + "label": "general anesthesia", + "type": "entity", + "entities": [ + { + "frequency": 7, + "id": 4504, + "score": 106, + "spread": 7, + "value": "general anesthesia" + } + ] + }, + { + "id": 92, + "label": "general intubation anesthesia", + "type": "entity", + "entities": [ + { + "frequency": 1, + "id": 4507, + "score": 64, + "spread": 1, + "value": "general intubation anesthesia" + } + ] + }, + { + "id": 93, + "label": "second liter", + "type": "entity", + "entities": [ + { + "frequency": 1, + "id": 10194, + "score": 106, + "spread": 1, + "value": "second liter" + } + ] + }, + { + "id": 94, + "label": "family", + "type": "entity", + "entities": [ + { + "frequency": 3, + "id": 4114, + "score": 102, + "spread": 2, + "value": "family" + } + ] + }, + { + "id": 95, + "label": "alternative management", + "type": "entity", + "entities": [ + { + "frequency": 4, + "id": 1254, + "score": 100, + "spread": 4, + "value": "alternative management" + } + ] + }, + { + "id": 96, + "label": "22 mmhg", + "type": "entity", + "entities": [ + { + "frequency": 1, + "id": 353, + "score": 96, + "spread": 1, + "value": "22 mmhg" + } + ] + }, + { + "id": 97, + "label": "sedation", + "type": "entity", + "entities": [ + { + "frequency": 3, + "id": 10210, + "score": 96, + "spread": 3, + "value": "sedation" + } + ] + }, + { + "id": 98, + "label": "conscious sedation", + "type": "entity", + "entities": [ + { + "frequency": 7, + "id": 2979, + "score": 78, + "spread": 7, + "value": "conscious sedation" + } + ] + }, + { + "id": 99, + "label": "no intravenous sedation", + "type": "entity", + "entities": [ + { + "frequency": 1, + "id": 7638, + "score": 64, + "spread": 1, + "value": "no intravenous sedation" + } + ] + }, + { + "id": 100, + "label": "active participant", + "type": "entity", + "entities": [ + { + "frequency": 1, + "id": 1024, + "score": 92, + "spread": 1, + "value": "active participant" + } + ] + }, + { + "id": 101, + "label": "beginning", + "type": "entity", + "entities": [ + { + "frequency": 3, + "id": 2100, + "score": 89, + "spread": 3, + "value": "beginning" + } + ] + }, + { + "id": 102, + "label": "adequate resuscitation", + "type": "entity", + "entities": [ + { + "frequency": 1, + "id": 1098, + "score": 85, + "spread": 1, + "value": "adequate resuscitation" + } + ] + }, + { + "id": 103, + "label": "approximately 3 liters", + "type": "entity", + "entities": [ + { + "frequency": 1, + "id": 1685, + "score": 85, + "spread": 1, + "value": "approximately 3 liters" + } + ] + }, + { + "id": 104, + "label": "fentanyl", + "type": "entity", + "entities": [ + { + "frequency": 15, + "id": 4153, + "score": 84, + "spread": 15, + "value": "fentanyl" + } + ] + }, + { + "id": 105, + "label": "specifically", + "type": "entity", + "entities": [ + { + "frequency": 10, + "id": 10848, + "score": 84, + "spread": 10, + "value": "specifically" + } + ] + }, + { + "id": 106, + "label": "staff radiologist", + "type": "entity", + "entities": [ + { + "frequency": 6, + "id": 10918, + "score": 84, + "spread": 6, + "value": "staff radiologist" + } + ] + }, + { + "id": 107, + "label": "timeout", + "type": "entity", + "entities": [ + { + "frequency": 4, + "id": 11621, + "score": 79, + "spread": 4, + "value": "timeout" + } + ] + }, + { + "id": 108, + "label": "preprocedure timeout", + "type": "entity", + "entities": [ + { + "frequency": 8, + "id": 8982, + "score": 189, + "spread": 8, + "value": "preprocedure timeout" + } + ] + }, + { + "id": 109, + "label": "pre- procedure timeout", + "type": "entity", + "entities": [ + { + "frequency": 1, + "id": 8940, + "score": 42, + "spread": 1, + "value": "pre- procedure timeout" + } + ] + }, + { + "id": 110, + "label": "pre-procedural timeout", + "type": "entity", + "entities": [ + { + "frequency": 1, + "id": 8949, + "score": 32, + "spread": 1, + "value": "pre-procedural timeout" + } + ] + }, + { + "id": 111, + "label": "pre-procedure timeout", + "type": "entity", + "entities": [ + { + "frequency": 1, + "id": 8951, + "score": 32, + "spread": 1, + "value": "pre-procedure timeout" + } + ] + }, + { + "id": 112, + "label": "preprocedural timeout", + "type": "entity", + "entities": [ + { + "frequency": 1, + "id": 8980, + "score": 32, + "spread": 1, + "value": "preprocedural timeout" + } + ] + }, + { + "id": 113, + "label": "entire procedure", + "type": "entity", + "entities": [ + { + "frequency": 24, + "id": 3891, + "score": 78, + "spread": 24, + "value": "entire procedure" + } + ] + }, + { + "id": 115, + "label": "m.d.", + "type": "entity", + "entities": [ + { + "frequency": 11, + "id": 6580, + "score": 76, + "spread": 8, + "value": "m.d." + } + ] + }, + { + "id": 116, + "label": "standard sterile fashion", + "type": "entity", + "entities": [ + { + "frequency": 30, + "id": 10932, + "score": 69, + "spread": 29, + "value": "standard sterile fashion" + } + ] + }, + { + "id": 117, + "label": "portosystemic pressure gradient drop", + "type": "entity", + "entities": [ + { + "frequency": 1, + "id": 8803, + "score": 67, + "spread": 1, + "value": "portosystemic pressure gradient drop" + } + ] + }, + { + "id": 118, + "label": "stroke", + "type": "entity", + "entities": [ + { + "frequency": 16, + "id": 11077, + "score": 67, + "spread": 16, + "value": "stroke" + } + ] + }, + { + "id": 119, + "label": "150 mcg", + "type": "entity", + "entities": [ + { + "frequency": 2, + "id": 243, + "score": 64, + "spread": 2, + "value": "150 mcg" + } + ] + }, + { + "id": 120, + "label": "all coils", + "type": "entity", + "entities": [ + { + "frequency": 1, + "id": 1223, + "score": 64, + "spread": 1, + "value": "all coils" + } + ] + }, + { + "id": 121, + "label": "all critical aspects", + "type": "entity", + "entities": [ + { + "frequency": 1, + "id": 1224, + "score": 64, + "spread": 1, + "value": "all critical aspects" + } + ] + }, + { + "id": 122, + "label": "completion", + "type": "entity", + "entities": [ + { + "frequency": 4, + "id": 2935, + "score": 64, + "spread": 4, + "value": "completion" + } + ] + }, + { + "id": 123, + "label": "complication", + "type": "entity", + "entities": [ + { + "frequency": 6, + "id": 2941, + "score": 64, + "spread": 6, + "value": "complication" + } + ] + }, + { + "id": 124, + "label": "complications", + "type": "entity", + "entities": [ + { + "frequency": 4, + "id": 2942, + "score": 306, + "spread": 4, + "value": "complications" + } + ] + }, + { + "id": 125, + "label": "immediate complications", + "type": "entity", + "entities": [ + { + "frequency": 5, + "id": 4974, + "score": 234, + "spread": 5, + "value": "immediate complications" + } + ] + }, + { + "id": 126, + "label": "no immediate post- procedural complications", + "type": "entity", + "entities": [ + { + "frequency": 1, + "id": 7608, + "score": 64, + "spread": 1, + "value": "no immediate post- procedural complications" + } + ] + }, + { + "id": 127, + "label": "no complications", + "type": "entity", + "entities": [ + { + "frequency": 7, + "id": 7488, + "score": 221, + "spread": 7, + "value": "no complications" + } + ] + }, + { + "id": 128, + "label": "possible complications", + "type": "entity", + "entities": [ + { + "frequency": 10, + "id": 8818, + "score": 32, + "spread": 10, + "value": "possible complications" + } + ] + }, + { + "id": 129, + "label": "immediate complication", + "type": "entity", + "entities": [ + { + "frequency": 1, + "id": 4973, + "score": 64, + "spread": 1, + "value": "immediate complication" + } + ] + }, + { + "id": 130, + "label": "no immediate complication", + "type": "entity", + "entities": [ + { + "frequency": 1, + "id": 7604, + "score": 64, + "spread": 1, + "value": "no immediate complication" + } + ] + }, + { + "id": 131, + "label": "concern", + "type": "entity", + "entities": [ + { + "frequency": 7, + "id": 2956, + "score": 64, + "spread": 5, + "value": "concern" + } + ] + }, + { + "id": 132, + "label": "continuous monitoring", + "type": "entity", + "entities": [ + { + "frequency": 1, + "id": 3034, + "score": 64, + "spread": 1, + "value": "continuous monitoring" + } + ] + }, + { + "id": 133, + "label": "continuous hemodynamic monitoring", + "type": "entity", + "entities": [ + { + "frequency": 2, + "id": 3033, + "score": 16, + "spread": 2, + "value": "continuous hemodynamic monitoring" + } + ] + }, + { + "id": 134, + "label": "course", + "type": "entity", + "entities": [ + { + "frequency": 6, + "id": 3168, + "score": 64, + "spread": 6, + "value": "course" + } + ] + }, + { + "id": 135, + "label": "etiology", + "type": "entity", + "entities": [ + { + "frequency": 2, + "id": 3937, + "score": 64, + "spread": 2, + "value": "etiology" + } + ] + }, + { + "id": 136, + "label": "evident", + "type": "entity", + "entities": [ + { + "frequency": 13, + "id": 3955, + "score": 64, + "spread": 12, + "value": "evident" + } + ] + }, + { + "id": 137, + "label": "finding", + "type": "entity", + "entities": [ + { + "frequency": 9, + "id": 4205, + "score": 64, + "spread": 9, + "value": "finding" + } + ] + }, + { + "id": 139, + "label": "findings", + "type": "entity", + "entities": [ + { + "frequency": 78, + "id": 4206, + "score": 25, + "spread": 74, + "value": "findings" + } + ] + }, + { + "id": 140, + "label": "procedure/findings", + "type": "entity", + "entities": [ + { + "frequency": 2, + "id": 9141, + "score": 170, + "spread": 2, + "value": "procedure/findings" + } + ] + }, + { + "id": 141, + "label": "fluoroscopic guidance", + "type": "entity", + "entities": [ + { + "frequency": 60, + "id": 4275, + "score": 64, + "spread": 41, + "value": "fluoroscopic guidance" + } + ] + }, + { + "id": 142, + "label": "guarded condition", + "type": "entity", + "entities": [ + { + "frequency": 1, + "id": 4585, + "score": 64, + "spread": 1, + "value": "guarded condition" + } + ] + }, + { + "id": 143, + "label": "kefzol iv", + "type": "entity", + "entities": [ + { + "frequency": 1, + "id": 5736, + "score": 64, + "spread": 1, + "value": "kefzol iv" + } + ] + }, + { + "id": 144, + "label": "mac anesthesia", + "type": "entity", + "entities": [ + { + "frequency": 1, + "id": 6588, + "score": 64, + "spread": 1, + "value": "mac anesthesia" + } + ] + }, + { + "id": 145, + "label": "medical necessity", + "type": "entity", + "entities": [ + { + "frequency": 1, + "id": 6743, + "score": 64, + "spread": 1, + "value": "medical necessity" + } + ] + }, + { + "id": 146, + "label": "mr compatible", + "type": "entity", + "entities": [ + { + "frequency": 1, + "id": 7096, + "score": 64, + "spread": 1, + "value": "mr compatible" + } + ] + }, + { + "id": 147, + "label": "nature", + "type": "entity", + "entities": [ + { + "frequency": 7, + "id": 7261, + "score": 64, + "spread": 7, + "value": "nature" + } + ] + }, + { + "id": 148, + "label": "neuro intensive care unit", + "type": "entity", + "entities": [ + { + "frequency": 1, + "id": 7313, + "score": 64, + "spread": 1, + "value": "neuro intensive care unit" + } + ] + }, + { + "id": 149, + "label": "pelvis", + "type": "entity", + "entities": [ + { + "frequency": 79, + "id": 8482, + "score": 64, + "spread": 71, + "value": "pelvis" + } + ] + }, + { + "id": 150, + "label": "persistent", + "type": "entity", + "entities": [ + { + "frequency": 2, + "id": 8584, + "score": 64, + "spread": 2, + "value": "persistent" + } + ] + }, + { + "id": 151, + "label": "right common carotid artery", + "type": "entity", + "entities": [ + { + "frequency": 17, + "id": 9715, + "score": 64, + "spread": 16, + "value": "right common carotid artery" + } + ] + }, + { + "id": 152, + "label": "several hours", + "type": "entity", + "entities": [ + { + "frequency": 1, + "id": 10329, + "score": 64, + "spread": 1, + "value": "several hours" + } + ] + }, + { + "id": 153, + "label": "start", + "type": "entity", + "entities": [ + { + "frequency": 1, + "id": 10939, + "score": 64, + "spread": 1, + "value": "start" + } + ] + }, + { + "id": 155, + "label": "surgical intensive care unit", + "type": "entity", + "entities": [ + { + "frequency": 1, + "id": 11298, + "score": 64, + "spread": 1, + "value": "surgical intensive care unit" + } + ] + }, + { + "id": 156, + "label": "termination", + "type": "entity", + "entities": [ + { + "frequency": 1, + "id": 11460, + "score": 64, + "spread": 1, + "value": "termination" + } + ] + }, + { + "id": 157, + "label": "two options", + "type": "entity", + "entities": [ + { + "frequency": 1, + "id": 11950, + "score": 64, + "spread": 1, + "value": "two options" + } + ] + }, + { + "id": 158, + "label": "versed", + "type": "entity", + "entities": [ + { + "frequency": 11, + "id": 12258, + "score": 64, + "spread": 11, + "value": "versed" + } + ] + }, + { + "id": 159, + "label": "wife", + "type": "entity", + "entities": [ + { + "frequency": 4, + "id": 13140, + "score": 64, + "spread": 2, + "value": "wife" + } + ] + }, + { + "id": 160, + "label": "chylous ascites", + "type": "entity", + "entities": [ + { + "frequency": 1, + "id": 2780, + "score": 63, + "spread": 1, + "value": "chylous ascites" + } + ] + }, + { + "id": 161, + "label": "abdomen", + "type": "entity", + "entities": [ + { + "frequency": 97, + "id": 933, + "score": 56, + "spread": 83, + "value": "abdomen" + } + ] + }, + { + "id": 162, + "label": "transjugular intrahepatic portosystemic shunt", + "type": "entity", + "entities": [ + { + "frequency": 2, + "id": 11842, + "score": 53, + "spread": 2, + "value": "transjugular intrahepatic portosystemic shunt" + } + ] + }, + { + "id": 163, + "label": "ascitic fluid", + "type": "entity", + "entities": [ + { + "frequency": 3, + "id": 1906, + "score": 51, + "spread": 2, + "value": "ascitic fluid" + } + ] + }, + { + "id": 164, + "label": "local hemostasis", + "type": "entity", + "entities": [ + { + "frequency": 1, + "id": 6438, + "score": 51, + "spread": 1, + "value": "local hemostasis" + } + ] + }, + { + "id": 165, + "label": "subsequent", + "type": "entity", + "entities": [ + { + "frequency": 1, + "id": 11142, + "score": 51, + "spread": 1, + "value": "subsequent" + } + ] + }, + { + "id": 166, + "label": "1 l", + "type": "entity", + "entities": [ + { + "frequency": 1, + "id": 81, + "score": 50, + "spread": 1, + "value": "1 l" + } + ] + }, + { + "id": 167, + "label": "successful creation", + "type": "entity", + "entities": [ + { + "frequency": 1, + "id": 11171, + "score": 43, + "spread": 1, + "value": "successful creation" + } + ] + }, + { + "id": 168, + "label": "102 degrees fahrenheit", + "type": "entity", + "entities": [ + { + "frequency": 1, + "id": 153, + "score": 42, + "spread": 1, + "value": "102 degrees fahrenheit" + } + ] + }, + { + "id": 169, + "label": "2 grams", + "type": "entity", + "entities": [ + { + "frequency": 1, + "id": 299, + "score": 42, + "spread": 1, + "value": "2 grams" + } + ] + }, + { + "id": 170, + "label": "2 mg", + "type": "entity", + "entities": [ + { + "frequency": 7, + "id": 301, + "score": 42, + "spread": 7, + "value": "2 mg" + } + ] + }, + { + "id": 171, + "label": "43 year old woman", + "type": "entity", + "entities": [ + { + "frequency": 1, + "id": 547, + "score": 42, + "spread": 1, + "value": "43 year old woman" + } + ] + }, + { + "id": 173, + "label": "absolute", + "type": "entity", + "entities": [ + { + "frequency": 1, + "id": 982, + "score": 42, + "spread": 1, + "value": "absolute" + } + ] + }, + { + "id": 174, + "label": "blood-tinged fluid", + "type": "entity", + "entities": [ + { + "frequency": 1, + "id": 2272, + "score": 42, + "spread": 1, + "value": "blood-tinged fluid" + } + ] + }, + { + "id": 175, + "label": "contrast", + "type": "entity", + "entities": [ + { + "frequency": 100, + "id": 3049, + "score": 42, + "spread": 60, + "value": "contrast" + } + ] + }, + { + "id": 176, + "label": "injection", + "type": "entity", + "entities": [ + { + "frequency": 80, + "id": 5191, + "score": 42, + "spread": 25, + "value": "injection" + } + ] + }, + { + "id": 177, + "label": "intubation", + "type": "entity", + "entities": [ + { + "frequency": 10, + "id": 5396, + "score": 42, + "spread": 9, + "value": "intubation" + } + ] + }, + { + "id": 179, + "label": "place", + "type": "entity", + "entities": [ + { + "frequency": 40, + "id": 8657, + "score": 42, + "spread": 35, + "value": "place" + } + ] + }, + { + "id": 180, + "label": "pre-procedure note", + "type": "entity", + "entities": [ + { + "frequency": 1, + "id": 8950, + "score": 42, + "spread": 1, + "value": "pre-procedure note" + } + ] + }, + { + "id": 181, + "label": "radiology", + "type": "entity", + "entities": [ + { + "frequency": 6, + "id": 9341, + "score": 42, + "spread": 6, + "value": "radiology" + } + ] + }, + { + "id": 182, + "label": "source", + "type": "entity", + "entities": [ + { + "frequency": 3, + "id": 10845, + "score": 42, + "spread": 3, + "value": "source" + } + ] + }, + { + "id": 183, + "label": "stable", + "type": "entity", + "entities": [ + { + "frequency": 54, + "id": 10891, + "score": 42, + "spread": 45, + "value": "stable" + } + ] + }, + { + "id": 184, + "label": "stable condition", + "type": "entity", + "entities": [ + { + "frequency": 4, + "id": 10896, + "score": 78, + "spread": 4, + "value": "stable condition" + } + ] + }, + { + "id": 185, + "label": "stage", + "type": "entity", + "entities": [ + { + "frequency": 2, + "id": 10920, + "score": 42, + "spread": 2, + "value": "stage" + } + ] + }, + { + "id": 186, + "label": "stenosis", + "type": "entity", + "entities": [ + { + "frequency": 27, + "id": 11024, + "score": 42, + "spread": 15, + "value": "stenosis" + } + ] + }, + { + "id": 187, + "label": "writing", + "type": "entity", + "entities": [ + { + "frequency": 1, + "id": 13202, + "score": 42, + "spread": 1, + "value": "writing" + } + ] + }, + { + "id": 188, + "label": "gauze", + "type": "entity", + "entities": [ + { + "frequency": 1, + "id": 4495, + "score": 36, + "spread": 1, + "value": "gauze" + } + ] + }, + { + "id": 189, + "label": "images", + "type": "entity", + "entities": [ + { + "frequency": 61, + "id": 4971, + "score": 36, + "spread": 41, + "value": "images" + } + ] + }, + { + "id": 190, + "label": "5 mm axial images", + "type": "entity", + "entities": [ + { + "frequency": 1, + "id": 625, + "score": 42, + "spread": 1, + "value": "5 mm axial images" + } + ] + }, + { + "id": 191, + "label": "manual compression", + "type": "entity", + "entities": [ + { + "frequency": 3, + "id": 6626, + "score": 36, + "spread": 3, + "value": "manual compression" + } + ] + }, + { + "id": 192, + "label": "approximately 900 cc", + "type": "entity", + "entities": [ + { + "frequency": 1, + "id": 1705, + "score": 32, + "spread": 1, + "value": "approximately 900 cc" + } + ] + }, + { + "id": 193, + "label": "coil embolization", + "type": "entity", + "entities": [ + { + "frequency": 3, + "id": 2844, + "score": 32, + "spread": 3, + "value": "coil embolization" + } + ] + }, + { + "id": 194, + "label": "continuous divided doses", + "type": "entity", + "entities": [ + { + "frequency": 1, + "id": 3030, + "score": 32, + "spread": 1, + "value": "continuous divided doses" + } + ] + }, + { + "id": 195, + "label": "explanation", + "type": "entity", + "entities": [ + { + "frequency": 1, + "id": 4001, + "score": 32, + "spread": 1, + "value": "explanation" + } + ] + }, + { + "id": 196, + "label": "complete explanation", + "type": "entity", + "entities": [ + { + "frequency": 10, + "id": 2921, + "score": 640, + "spread": 10, + "value": "complete explanation" + } + ] + }, + { + "id": 198, + "label": "manual pressure", + "type": "entity", + "entities": [ + { + "frequency": 7, + "id": 6627, + "score": 32, + "spread": 7, + "value": "manual pressure" + } + ] + }, + { + "id": 199, + "label": "no extravasation", + "type": "entity", + "entities": [ + { + "frequency": 7, + "id": 7551, + "score": 32, + "spread": 7, + "value": "no extravasation" + } + ] + }, + { + "id": 200, + "label": "patietn", + "type": "entity", + "entities": [ + { + "frequency": 1, + "id": 8453, + "score": 32, + "spread": 1, + "value": "patietn" + } + ] + }, + { + "id": 201, + "label": "risk", + "type": "entity", + "entities": [ + { + "frequency": 20, + "id": 10071, + "score": 32, + "spread": 11, + "value": "risk" + } + ] + }, + { + "id": 202, + "label": "risks", + "type": "entity", + "entities": [ + { + "frequency": 39, + "id": 10073, + "score": 1196, + "spread": 36, + "value": "risks" + } + ] + }, + { + "id": 203, + "label": "septic shock", + "type": "entity", + "entities": [ + { + "frequency": 1, + "id": 10296, + "score": 32, + "spread": 1, + "value": "septic shock" + } + ] + }, + { + "id": 204, + "label": "son", + "type": "entity", + "entities": [ + { + "frequency": 2, + "id": 10837, + "score": 32, + "spread": 1, + "value": "son" + } + ] + }, + { + "id": 205, + "label": "person", + "type": "entity", + "entities": [ + { + "frequency": 1, + "id": 8631, + "score": 42, + "spread": 1, + "value": "person" + } + ] + }, + { + "id": 206, + "label": "temperature", + "type": "entity", + "entities": [ + { + "frequency": 1, + "id": 11436, + "score": 32, + "spread": 1, + "value": "temperature" + } + ] + }, + { + "id": 207, + "label": "hemorrhage", + "type": "entity", + "entities": [ + { + "frequency": 30, + "id": 4758, + "score": 28, + "spread": 25, + "value": "hemorrhage" + } + ] + }, + { + "id": 208, + "label": "subarachnoid hemorrhage", + "type": "entity", + "entities": [ + { + "frequency": 6, + "id": 11093, + "score": 64, + "spread": 6, + "value": "subarachnoid hemorrhage" + } + ] + }, + { + "id": 209, + "label": "right groin", + "type": "entity", + "entities": [ + { + "frequency": 21, + "id": 9761, + "score": 28, + "spread": 17, + "value": "right groin" + } + ] + }, + { + "id": 210, + "label": "telephone", + "type": "entity", + "entities": [ + { + "frequency": 3, + "id": 11434, + "score": 28, + "spread": 3, + "value": "telephone" + } + ] + }, + { + "id": 211, + "label": "dissection", + "type": "entity", + "entities": [ + { + "frequency": 24, + "id": 3554, + "score": 25, + "spread": 15, + "value": "dissection" + } + ] + }, + { + "id": 212, + "label": "icu team", + "type": "entity", + "entities": [ + { + "frequency": 1, + "id": 4928, + "score": 25, + "spread": 1, + "value": "icu team" + } + ] + }, + { + "id": 213, + "label": "manipulating", + "type": "entity", + "entities": [ + { + "frequency": 1, + "id": 6625, + "score": 25, + "spread": 1, + "value": "manipulating" + } + ] + }, + { + "id": 214, + "label": "operator supervision", + "type": "entity", + "entities": [ + { + "frequency": 1, + "id": 8133, + "score": 25, + "spread": 1, + "value": "operator supervision" + } + ] + }, + { + "id": 215, + "label": "proceedure", + "type": "entity", + "entities": [ + { + "frequency": 1, + "id": 9142, + "score": 25, + "spread": 1, + "value": "proceedure" + } + ] + }, + { + "id": 216, + "label": "subsegment", + "type": "entity", + "entities": [ + { + "frequency": 1, + "id": 11138, + "score": 25, + "spread": 1, + "value": "subsegment" + } + ] + }, + { + "id": 217, + "label": "infection", + "type": "entity", + "entities": [ + { + "frequency": 16, + "id": 5100, + "score": 23, + "spread": 16, + "value": "infection" + } + ] + }, + { + "id": 218, + "label": "treatment plan", + "type": "entity", + "entities": [ + { + "frequency": 1, + "id": 11880, + "score": 23, + "spread": 1, + "value": "treatment plan" + } + ] + }, + { + "id": 219, + "label": "angiography table", + "type": "entity", + "entities": [ + { + "frequency": 9, + "id": 1497, + "score": 21, + "spread": 9, + "value": "angiography table" + } + ] + }, + { + "id": 220, + "label": "clot", + "type": "entity", + "entities": [ + { + "frequency": 12, + "id": 2822, + "score": 21, + "spread": 9, + "value": "clot" + } + ] + }, + { + "id": 221, + "label": "death", + "type": "entity", + "entities": [ + { + "frequency": 11, + "id": 3259, + "score": 21, + "spread": 11, + "value": "death" + } + ] + }, + { + "id": 222, + "label": "nursing staff", + "type": "entity", + "entities": [ + { + "frequency": 1, + "id": 7997, + "score": 21, + "spread": 1, + "value": "nursing staff" + } + ] + }, + { + "id": 223, + "label": "icu nursing staff", + "type": "entity", + "entities": [ + { + "frequency": 1, + "id": 4927, + "score": 32, + "spread": 1, + "value": "icu nursing staff" + } + ] + }, + { + "id": 224, + "label": "members", + "type": "entity", + "entities": [ + { + "frequency": 1, + "id": 6750, + "score": 18, + "spread": 1, + "value": "members" + } + ] + }, + { + "id": 225, + "label": "portal vein", + "type": "entity", + "entities": [ + { + "frequency": 27, + "id": 8787, + "score": 18, + "spread": 14, + "value": "portal vein" + } + ] + }, + { + "id": 226, + "label": "witness", + "type": "entity", + "entities": [ + { + "frequency": 1, + "id": 13172, + "score": 16, + "spread": 1, + "value": "witness" + } + ] + } + ], + "edges": [ + { + "source": 0, + "target": 1, + "type": "related" + }, + { + "source": 1, + "target": 2, + "type": "similar" + }, + { + "source": 1, + "target": 4, + "type": "similar" + }, + { + "source": 1, + "target": 5, + "type": "similar" + }, + { + "source": 1, + "target": 6, + "type": "similar" + }, + { + "source": 1, + "target": 7, + "type": "similar" + }, + { + "source": 1, + "target": 9, + "type": "similar" + }, + { + "source": 9, + "target": 10, + "type": "similar" + }, + { + "source": 9, + "target": 11, + "type": "similar" + }, + { + "source": 1, + "target": 12, + "type": "similar" + }, + { + "source": 1, + "target": 13, + "type": "similar" + }, + { + "source": 1, + "target": 14, + "type": "similar" + }, + { + "source": 1, + "target": 15, + "type": "similar" + }, + { + "source": 0, + "target": 21, + "type": "related" + }, + { + "source": 0, + "target": 23, + "type": "related" + }, + { + "source": 23, + "target": 24, + "type": "similar" + }, + { + "source": 24, + "target": 25, + "type": "similar" + }, + { + "source": 25, + "target": 26, + "type": "similar" + }, + { + "source": 26, + "target": 27, + "type": "similar" + }, + { + "source": 26, + "target": 28, + "type": "similar" + }, + { + "source": 23, + "target": 29, + "type": "similar" + }, + { + "source": 29, + "target": 30, + "type": "similar" + }, + { + "source": 23, + "target": 31, + "type": "similar" + }, + { + "source": 31, + "target": 32, + "type": "similar" + }, + { + "source": 31, + "target": 33, + "type": "similar" + }, + { + "source": 31, + "target": 34, + "type": "similar" + }, + { + "source": 31, + "target": 35, + "type": "similar" + }, + { + "source": 0, + "target": 36, + "type": "related" + }, + { + "source": 0, + "target": 37, + "type": "related" + }, + { + "source": 37, + "target": 38, + "type": "similar" + }, + { + "source": 0, + "target": 42, + "type": "related" + }, + { + "source": 0, + "target": 43, + "type": "related" + }, + { + "source": 43, + "target": 44, + "type": "similar" + }, + { + "source": 43, + "target": 45, + "type": "similar" + }, + { + "source": 0, + "target": 50, + "type": "related" + }, + { + "source": 0, + "target": 51, + "type": "related" + }, + { + "source": 0, + "target": 52, + "type": "related" + }, + { + "source": 52, + "target": 53, + "type": "similar" + }, + { + "source": 52, + "target": 54, + "type": "similar" + }, + { + "source": 0, + "target": 55, + "type": "related" + }, + { + "source": 55, + "target": 58, + "type": "similar" + }, + { + "source": 55, + "target": 59, + "type": "similar" + }, + { + "source": 59, + "target": 60, + "type": "similar" + }, + { + "source": 59, + "target": 61, + "type": "similar" + }, + { + "source": 0, + "target": 67, + "type": "related" + }, + { + "source": 0, + "target": 68, + "type": "related" + }, + { + "source": 0, + "target": 69, + "type": "related" + }, + { + "source": 69, + "target": 70, + "type": "similar" + }, + { + "source": 69, + "target": 71, + "type": "similar" + }, + { + "source": 0, + "target": 72, + "type": "related" + }, + { + "source": 0, + "target": 74, + "type": "related" + }, + { + "source": 0, + "target": 76, + "type": "related" + }, + { + "source": 0, + "target": 77, + "type": "related" + }, + { + "source": 77, + "target": 78, + "type": "similar" + }, + { + "source": 0, + "target": 79, + "type": "related" + }, + { + "source": 79, + "target": 80, + "type": "similar" + }, + { + "source": 0, + "target": 81, + "type": "related" + }, + { + "source": 0, + "target": 82, + "type": "related" + }, + { + "source": 0, + "target": 83, + "type": "related" + }, + { + "source": 0, + "target": 84, + "type": "related" + }, + { + "source": 0, + "target": 85, + "type": "related" + }, + { + "source": 0, + "target": 86, + "type": "related" + }, + { + "source": 86, + "target": 87, + "type": "similar" + }, + { + "source": 87, + "target": 88, + "type": "similar" + }, + { + "source": 87, + "target": 89, + "type": "similar" + }, + { + "source": 87, + "target": 90, + "type": "similar" + }, + { + "source": 0, + "target": 91, + "type": "related" + }, + { + "source": 91, + "target": 92, + "type": "similar" + }, + { + "source": 0, + "target": 93, + "type": "related" + }, + { + "source": 0, + "target": 94, + "type": "related" + }, + { + "source": 0, + "target": 95, + "type": "related" + }, + { + "source": 0, + "target": 96, + "type": "related" + }, + { + "source": 0, + "target": 97, + "type": "related" + }, + { + "source": 97, + "target": 98, + "type": "similar" + }, + { + "source": 97, + "target": 99, + "type": "similar" + }, + { + "source": 0, + "target": 100, + "type": "related" + }, + { + "source": 0, + "target": 101, + "type": "related" + }, + { + "source": 0, + "target": 102, + "type": "related" + }, + { + "source": 0, + "target": 103, + "type": "related" + }, + { + "source": 0, + "target": 104, + "type": "related" + }, + { + "source": 0, + "target": 105, + "type": "related" + }, + { + "source": 0, + "target": 106, + "type": "related" + }, + { + "source": 0, + "target": 107, + "type": "related" + }, + { + "source": 107, + "target": 108, + "type": "similar" + }, + { + "source": 107, + "target": 109, + "type": "similar" + }, + { + "source": 107, + "target": 110, + "type": "similar" + }, + { + "source": 107, + "target": 111, + "type": "similar" + }, + { + "source": 107, + "target": 112, + "type": "similar" + }, + { + "source": 0, + "target": 113, + "type": "related" + }, + { + "source": 0, + "target": 115, + "type": "related" + }, + { + "source": 0, + "target": 116, + "type": "related" + }, + { + "source": 0, + "target": 117, + "type": "related" + }, + { + "source": 0, + "target": 118, + "type": "related" + }, + { + "source": 0, + "target": 119, + "type": "related" + }, + { + "source": 0, + "target": 120, + "type": "related" + }, + { + "source": 0, + "target": 121, + "type": "related" + }, + { + "source": 0, + "target": 122, + "type": "related" + }, + { + "source": 0, + "target": 123, + "type": "related" + }, + { + "source": 123, + "target": 124, + "type": "similar" + }, + { + "source": 124, + "target": 125, + "type": "similar" + }, + { + "source": 125, + "target": 126, + "type": "similar" + }, + { + "source": 124, + "target": 127, + "type": "similar" + }, + { + "source": 124, + "target": 128, + "type": "similar" + }, + { + "source": 123, + "target": 129, + "type": "similar" + }, + { + "source": 129, + "target": 130, + "type": "similar" + }, + { + "source": 0, + "target": 131, + "type": "related" + }, + { + "source": 0, + "target": 132, + "type": "related" + }, + { + "source": 132, + "target": 133, + "type": "similar" + }, + { + "source": 0, + "target": 134, + "type": "related" + }, + { + "source": 0, + "target": 135, + "type": "related" + }, + { + "source": 0, + "target": 136, + "type": "related" + }, + { + "source": 0, + "target": 137, + "type": "related" + }, + { + "source": 137, + "target": 139, + "type": "similar" + }, + { + "source": 139, + "target": 140, + "type": "similar" + }, + { + "source": 0, + "target": 141, + "type": "related" + }, + { + "source": 0, + "target": 142, + "type": "related" + }, + { + "source": 0, + "target": 143, + "type": "related" + }, + { + "source": 0, + "target": 144, + "type": "related" + }, + { + "source": 0, + "target": 145, + "type": "related" + }, + { + "source": 0, + "target": 146, + "type": "related" + }, + { + "source": 0, + "target": 147, + "type": "related" + }, + { + "source": 0, + "target": 148, + "type": "related" + }, + { + "source": 0, + "target": 149, + "type": "related" + }, + { + "source": 0, + "target": 150, + "type": "related" + }, + { + "source": 0, + "target": 151, + "type": "related" + }, + { + "source": 0, + "target": 152, + "type": "related" + }, + { + "source": 0, + "target": 153, + "type": "related" + }, + { + "source": 0, + "target": 155, + "type": "related" + }, + { + "source": 0, + "target": 156, + "type": "related" + }, + { + "source": 0, + "target": 157, + "type": "related" + }, + { + "source": 0, + "target": 158, + "type": "related" + }, + { + "source": 0, + "target": 159, + "type": "related" + }, + { + "source": 0, + "target": 160, + "type": "related" + }, + { + "source": 0, + "target": 161, + "type": "related" + }, + { + "source": 0, + "target": 162, + "type": "related" + }, + { + "source": 0, + "target": 163, + "type": "related" + }, + { + "source": 0, + "target": 164, + "type": "related" + }, + { + "source": 0, + "target": 165, + "type": "related" + }, + { + "source": 0, + "target": 166, + "type": "related" + }, + { + "source": 0, + "target": 167, + "type": "related" + }, + { + "source": 0, + "target": 168, + "type": "related" + }, + { + "source": 0, + "target": 169, + "type": "related" + }, + { + "source": 0, + "target": 170, + "type": "related" + }, + { + "source": 0, + "target": 171, + "type": "related" + }, + { + "source": 0, + "target": 173, + "type": "related" + }, + { + "source": 0, + "target": 174, + "type": "related" + }, + { + "source": 0, + "target": 175, + "type": "related" + }, + { + "source": 0, + "target": 176, + "type": "related" + }, + { + "source": 0, + "target": 177, + "type": "related" + }, + { + "source": 0, + "target": 179, + "type": "related" + }, + { + "source": 0, + "target": 180, + "type": "related" + }, + { + "source": 0, + "target": 181, + "type": "related" + }, + { + "source": 0, + "target": 182, + "type": "related" + }, + { + "source": 0, + "target": 183, + "type": "related" + }, + { + "source": 183, + "target": 184, + "type": "similar" + }, + { + "source": 0, + "target": 185, + "type": "related" + }, + { + "source": 0, + "target": 186, + "type": "related" + }, + { + "source": 0, + "target": 187, + "type": "related" + }, + { + "source": 0, + "target": 188, + "type": "related" + }, + { + "source": 0, + "target": 189, + "type": "related" + }, + { + "source": 189, + "target": 190, + "type": "similar" + }, + { + "source": 0, + "target": 191, + "type": "related" + }, + { + "source": 0, + "target": 192, + "type": "related" + }, + { + "source": 0, + "target": 193, + "type": "related" + }, + { + "source": 0, + "target": 194, + "type": "related" + }, + { + "source": 0, + "target": 195, + "type": "related" + }, + { + "source": 195, + "target": 196, + "type": "similar" + }, + { + "source": 0, + "target": 198, + "type": "related" + }, + { + "source": 0, + "target": 199, + "type": "related" + }, + { + "source": 0, + "target": 200, + "type": "related" + }, + { + "source": 0, + "target": 201, + "type": "related" + }, + { + "source": 201, + "target": 202, + "type": "similar" + }, + { + "source": 0, + "target": 203, + "type": "related" + }, + { + "source": 0, + "target": 204, + "type": "related" + }, + { + "source": 204, + "target": 205, + "type": "similar" + }, + { + "source": 0, + "target": 206, + "type": "related" + }, + { + "source": 0, + "target": 207, + "type": "related" + }, + { + "source": 207, + "target": 208, + "type": "similar" + }, + { + "source": 0, + "target": 209, + "type": "related" + }, + { + "source": 0, + "target": 210, + "type": "related" + }, + { + "source": 0, + "target": 211, + "type": "related" + }, + { + "source": 0, + "target": 212, + "type": "related" + }, + { + "source": 0, + "target": 213, + "type": "related" + }, + { + "source": 0, + "target": 214, + "type": "related" + }, + { + "source": 0, + "target": 215, + "type": "related" + }, + { + "source": 0, + "target": 216, + "type": "related" + }, + { + "source": 0, + "target": 217, + "type": "related" + }, + { + "source": 0, + "target": 218, + "type": "related" + }, + { + "source": 0, + "target": 219, + "type": "related" + }, + { + "source": 0, + "target": 220, + "type": "related" + }, + { + "source": 0, + "target": 221, + "type": "related" + }, + { + "source": 0, + "target": 222, + "type": "related" + }, + { + "source": 222, + "target": 223, + "type": "similar" + }, + { + "source": 0, + "target": 224, + "type": "related" + }, + { + "source": 0, + "target": 225, + "type": "related" + }, + { + "source": 0, + "target": 226, + "type": "related" + } + ] + } +}; + +/***/ }) +/******/ ]); \ No newline at end of file diff --git a/docs/lib/d3.min.js b/docs/lib/d3.min.js new file mode 100644 index 0000000..ca16dcf --- /dev/null +++ b/docs/lib/d3.min.js @@ -0,0 +1,8 @@ +// https://d3js.org Version 4.4.0. Copyright 2016 Mike Bostock. +(function(t,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n(t.d3=t.d3||{})})(this,function(t){"use strict";function n(t){return function(n,e){return Ms(t(n),e)}}function e(t,n,e){var r=Math.abs(n-t)/Math.max(0,e),i=Math.pow(10,Math.floor(Math.log(r)/Math.LN10)),o=r/i;return o>=Fs?i*=10:o>=Is?i*=5:o>=Ys&&(i*=2),n1&&Wf(t[e[r-2]],t[e[r-1]],t[i])<=0;)--r;e[r++]=i}return e.slice(0,r)}function R(){this._x0=this._y0=this._x1=this._y1=null,this._=""}function q(){return new R}function L(t,n,e,r){if(isNaN(n)||isNaN(e))return t;var i,o,u,a,c,s,f,l,h,p=t._root,d={data:r},v=t._x0,_=t._y0,y=t._x1,g=t._y1;if(!p)return t._root=d,t;for(;p.length;)if((s=n>=(o=(v+y)/2))?v=o:y=o,(f=e>=(u=(_+g)/2))?_=u:g=u,i=p,!(p=p[l=f<<1|s]))return i[l]=d,t;if(a=+t._x.call(null,p.data),c=+t._y.call(null,p.data),n===a&&e===c)return d.next=p,i?i[l]=d:t._root=d,t;do i=i?i[l]=new Array(4):t._root=new Array(4),(s=n>=(o=(v+y)/2))?v=o:y=o,(f=e>=(u=(_+g)/2))?_=u:g=u;while((l=f<<1|s)===(h=(c>=u)<<1|a>=o));return i[h]=p,i[l]=d,t}function U(t){var n,e,r,i,o=t.length,u=new Array(o),a=new Array(o),c=1/0,s=1/0,f=-(1/0),l=-(1/0);for(e=0;ef&&(f=r),il&&(l=i));for(f=1))throw new Error;this._size=t,this._call=this._error=null,this._tasks=[],this._data=[],this._waiting=this._active=this._ended=this._start=0}function H(t){if(!t._start)try{X(t)}catch(n){if(t._tasks[t._ended+t._active-1])W(t,n);else if(!t._data)throw n}}function X(t){for(;t._start=t._waiting&&t._active=0;)if((e=t._tasks[r])&&(t._tasks[r]=null,e.abort))try{e.abort()}catch(t){}t._active=NaN,$(t)}function $(t){if(!t._active&&t._call){var n=t._data;t._data=void 0,t._call(t._error,n)}}function Z(t){return new j(arguments.length?+t:1/0)}function G(t){return t.innerRadius}function J(t){return t.outerRadius}function Q(t){return t.startAngle}function K(t){return t.endAngle}function tt(t){return t&&t.padAngle}function nt(t){return t>=1?xl:t<=-1?-xl:Math.asin(t)}function et(t,n,e,r,i,o,u,a){var c=e-t,s=r-n,f=u-i,l=a-o,h=(f*(n-o)-l*(t-i))/(l*c-f*s);return[t+h*c,n+h*s]}function rt(t,n,e,r,i,o,u){var a=t-e,c=n-r,s=(u?o:-o)/Math.sqrt(a*a+c*c),f=s*c,l=-s*a,h=t+f,p=n+l,d=e+f,v=r+l,_=(h+d)/2,y=(p+v)/2,g=d-h,m=v-p,x=g*g+m*m,b=i-o,w=h*v-d*p,M=(m<0?-1:1)*Math.sqrt(Math.max(0,b*b*x-w*w)),T=(w*m-g*M)/x,N=(-w*g-m*M)/x,k=(w*m+g*M)/x,S=(-w*g+m*M)/x,E=T-_,A=N-y,C=k-_,z=S-y;return E*E+A*A>C*C+z*z&&(T=k,N=S),{cx:T,cy:N,x01:-f,y01:-l,x11:T*(i/b-1),y11:N*(i/b-1)}}function it(t){this._context=t}function ot(t){return t[0]}function ut(t){return t[1]}function at(t){this._curve=t}function ct(t){function n(n){return new at(t(n))}return n._curve=t,n}function st(t){var n=t.curve;return t.angle=t.x,delete t.x,t.radius=t.y,delete t.y,t.curve=function(t){return arguments.length?n(ct(t)):n()._curve},t}function ft(t,n,e){t._context.bezierCurveTo((2*t._x0+t._x1)/3,(2*t._y0+t._y1)/3,(t._x0+2*t._x1)/3,(t._y0+2*t._y1)/3,(t._x0+4*t._x1+n)/6,(t._y0+4*t._y1+e)/6)}function lt(t){this._context=t}function ht(t){this._context=t}function pt(t){this._context=t}function dt(t,n){this._basis=new lt(t),this._beta=n}function vt(t,n,e){t._context.bezierCurveTo(t._x1+t._k*(t._x2-t._x0),t._y1+t._k*(t._y2-t._y0),t._x2+t._k*(t._x1-n),t._y2+t._k*(t._y1-e),t._x2,t._y2)}function _t(t,n){this._context=t,this._k=(1-n)/6}function yt(t,n){this._context=t,this._k=(1-n)/6}function gt(t,n){this._context=t,this._k=(1-n)/6}function mt(t,n,e){var r=t._x1,i=t._y1,o=t._x2,u=t._y2;if(t._l01_a>gl){var a=2*t._l01_2a+3*t._l01_a*t._l12_a+t._l12_2a,c=3*t._l01_a*(t._l01_a+t._l12_a);r=(r*a-t._x0*t._l12_2a+t._x2*t._l01_2a)/c,i=(i*a-t._y0*t._l12_2a+t._y2*t._l01_2a)/c}if(t._l23_a>gl){var s=2*t._l23_2a+3*t._l23_a*t._l12_a+t._l12_2a,f=3*t._l23_a*(t._l23_a+t._l12_a);o=(o*s+t._x1*t._l23_2a-n*t._l12_2a)/f,u=(u*s+t._y1*t._l23_2a-e*t._l12_2a)/f}t._context.bezierCurveTo(r,i,o,u,t._x2,t._y2)}function xt(t,n){this._context=t,this._alpha=n}function bt(t,n){this._context=t,this._alpha=n}function wt(t,n){this._context=t,this._alpha=n}function Mt(t){this._context=t}function Tt(t){return t<0?-1:1}function Nt(t,n,e){var r=t._x1-t._x0,i=n-t._x1,o=(t._y1-t._y0)/(r||i<0&&-0),u=(e-t._y1)/(i||r<0&&-0),a=(o*i+u*r)/(r+i);return(Tt(o)+Tt(u))*Math.min(Math.abs(o),Math.abs(u),.5*Math.abs(a))||0}function kt(t,n){var e=t._x1-t._x0;return e?(3*(t._y1-t._y0)/e-n)/2:n}function St(t,n,e){var r=t._x0,i=t._y0,o=t._x1,u=t._y1,a=(o-r)/3;t._context.bezierCurveTo(r+a,i+a*n,o-a,u-a*e,o,u)}function Et(t){this._context=t}function At(t){this._context=new Ct(t)}function Ct(t){this._context=t}function zt(t){return new Et(t)}function Pt(t){return new At(t)}function Rt(t){this._context=t}function qt(t){var n,e,r=t.length-1,i=new Array(r),o=new Array(r),u=new Array(r);for(i[0]=0,o[0]=2,u[0]=t[0]+2*t[1],n=1;n=0;--n)i[n]=(u[n]-i[n+1])/o[n];for(o[r-1]=(t[r]+i[r-1])/2,n=0;n>8&15|n>>4&240,n>>4&15|240&n,(15&n)<<4|15&n,1)):(n=Ch.exec(t))?jt(parseInt(n[1],16)):(n=zh.exec(t))?new Wt(n[1],n[2],n[3],1):(n=Ph.exec(t))?new Wt(255*n[1]/100,255*n[2]/100,255*n[3]/100,1):(n=Rh.exec(t))?Ht(n[1],n[2],n[3],n[4]):(n=qh.exec(t))?Ht(255*n[1]/100,255*n[2]/100,255*n[3]/100,n[4]):(n=Lh.exec(t))?$t(n[1],n[2]/100,n[3]/100,1):(n=Uh.exec(t))?$t(n[1],n[2]/100,n[3]/100,n[4]):Dh.hasOwnProperty(t)?jt(Dh[t]):"transparent"===t?new Wt(NaN,NaN,NaN,0):null}function jt(t){return new Wt(t>>16&255,t>>8&255,255&t,1)}function Ht(t,n,e,r){return r<=0&&(t=n=e=NaN),new Wt(t,n,e,r)}function Xt(t){return t instanceof Yt||(t=Bt(t)),t?(t=t.rgb(),new Wt(t.r,t.g,t.b,t.opacity)):new Wt}function Vt(t,n,e,r){return 1===arguments.length?Xt(t):new Wt(t,n,e,null==r?1:r)}function Wt(t,n,e,r){this.r=+t,this.g=+n,this.b=+e,this.opacity=+r}function $t(t,n,e,r){return r<=0?t=n=e=NaN:e<=0||e>=1?t=n=NaN:n<=0&&(t=NaN),new Jt(t,n,e,r)}function Zt(t){if(t instanceof Jt)return new Jt(t.h,t.s,t.l,t.opacity);if(t instanceof Yt||(t=Bt(t)),!t)return new Jt;if(t instanceof Jt)return t;t=t.rgb();var n=t.r/255,e=t.g/255,r=t.b/255,i=Math.min(n,e,r),o=Math.max(n,e,r),u=NaN,a=o-i,c=(o+i)/2;return a?(u=n===o?(e-r)/a+6*(e0&&c<1?0:u,new Jt(u,a,c,t.opacity)}function Gt(t,n,e,r){return 1===arguments.length?Zt(t):new Jt(t,n,e,null==r?1:r)}function Jt(t,n,e,r){this.h=+t,this.s=+n,this.l=+e,this.opacity=+r}function Qt(t,n,e){return 255*(t<60?n+(e-n)*t/60:t<180?e:t<240?n+(e-n)*(240-t)/60:n)}function Kt(t){if(t instanceof nn)return new nn(t.l,t.a,t.b,t.opacity);if(t instanceof sn){var n=t.h*Oh;return new nn(t.l,Math.cos(n)*t.c,Math.sin(n)*t.c,t.opacity)}t instanceof Wt||(t=Xt(t));var e=un(t.r),r=un(t.g),i=un(t.b),o=en((.4124564*e+.3575761*r+.1804375*i)/Yh),u=en((.2126729*e+.7151522*r+.072175*i)/Bh),a=en((.0193339*e+.119192*r+.9503041*i)/jh);return new nn(116*u-16,500*(o-u),200*(u-a),t.opacity)}function tn(t,n,e,r){return 1===arguments.length?Kt(t):new nn(t,n,e,null==r?1:r)}function nn(t,n,e,r){this.l=+t,this.a=+n,this.b=+e,this.opacity=+r}function en(t){return t>Wh?Math.pow(t,1/3):t/Vh+Hh}function rn(t){return t>Xh?t*t*t:Vh*(t-Hh)}function on(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function un(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function an(t){if(t instanceof sn)return new sn(t.h,t.c,t.l,t.opacity);t instanceof nn||(t=Kt(t));var n=Math.atan2(t.b,t.a)*Fh;return new sn(n<0?n+360:n,Math.sqrt(t.a*t.a+t.b*t.b),t.l,t.opacity)}function cn(t,n,e,r){return 1===arguments.length?an(t):new sn(t,n,e,null==r?1:r)}function sn(t,n,e,r){this.h=+t,this.c=+n,this.l=+e,this.opacity=+r}function fn(t){if(t instanceof hn)return new hn(t.h,t.s,t.l,t.opacity);t instanceof Wt||(t=Xt(t));var n=t.r/255,e=t.g/255,r=t.b/255,i=(np*r+Kh*n-tp*e)/(np+Kh-tp),o=r-i,u=(Qh*(e-i)-Gh*o)/Jh,a=Math.sqrt(u*u+o*o)/(Qh*i*(1-i)),c=a?Math.atan2(u,o)*Fh-120:NaN;return new hn(c<0?c+360:c,a,i,t.opacity)}function ln(t,n,e,r){return 1===arguments.length?fn(t):new hn(t,n,e,null==r?1:r)}function hn(t,n,e,r){this.h=+t,this.s=+n,this.l=+e,this.opacity=+r}function pn(t,n,e,r,i){var o=t*t,u=o*t;return((1-3*t+3*o-u)*n+(4-6*o+3*u)*e+(1+3*t+3*o-3*u)*r+u*i)/6}function dn(t,n){return function(e){return t+e*n}}function vn(t,n,e){return t=Math.pow(t,e),n=Math.pow(n,e)-t,e=1/e,function(r){return Math.pow(t+r*n,e)}}function _n(t,n){var e=n-t;return e?dn(t,e>180||e<-180?e-360*Math.round(e/360):e):cp(isNaN(t)?n:t)}function yn(t){return 1===(t=+t)?gn:function(n,e){return e-n?vn(n,e,t):cp(isNaN(n)?e:n)}}function gn(t,n){var e=n-t;return e?dn(t,e):cp(isNaN(t)?n:t)}function mn(t){return function(n){var e,r,i=n.length,o=new Array(i),u=new Array(i),a=new Array(i);for(e=0;e180?n+=360:n-t>180&&(t+=360),o.push({i:e.push(i(e)+"rotate(",null,r)-2,x:dp(t,n)})):n&&e.push(i(e)+"rotate("+n+r)}function a(t,n,e,o){t!==n?o.push({i:e.push(i(e)+"skewX(",null,r)-2,x:dp(t,n)}):n&&e.push(i(e)+"skewX("+n+r)}function c(t,n,e,r,o,u){if(t!==e||n!==r){var a=o.push(i(o)+"scale(",null,",",null,")");u.push({i:a-4,x:dp(t,e)},{i:a-2,x:dp(n,r)})}else 1===e&&1===r||o.push(i(o)+"scale("+e+","+r+")")}return function(n,e){var r=[],i=[];return n=t(n),e=t(e),o(n.translateX,n.translateY,e.translateX,e.translateY,r,i),u(n.rotate,e.rotate,r,i),a(n.skewX,e.skewX,r,i),c(n.scaleX,n.scaleY,e.scaleX,e.scaleY,r,i),n=e=null,function(t){for(var n,e=-1,o=i.length;++e=0&&(e=t.slice(r+1),t=t.slice(0,r)),t&&!n.hasOwnProperty(t))throw new Error("unknown type: "+t);return{type:t,name:e}})}function Ln(t,n){for(var e,r=0,i=t.length;r=0&&n._call.call(null,t),n=n._next;--ad}function $n(){hd=(ld=dd.now())+pd,ad=cd=0;try{Wn()}finally{ad=0,Gn(),hd=0}}function Zn(){var t=dd.now(),n=t-ld;n>fd&&(pd-=n,ld=t)}function Gn(){for(var t,n,e=Fp,r=1/0;e;)e._call?(r>e._time&&(r=e._time),t=e,e=e._next):(n=e._next,e._next=null,e=t?t._next=n:Fp=n);Ip=t,Jn(r)}function Jn(t){if(!ad){cd&&(cd=clearTimeout(cd));var n=t-hd;n>24?(t<1/0&&(cd=setTimeout($n,n)),sd&&(sd=clearInterval(sd))):(sd||(sd=setInterval(Zn,fd)),ad=1,vd($n))}}function Qn(t,n,e,r){function i(n){return t(n=new Date(+n)),n}return i.floor=i,i.ceil=function(e){return t(e=new Date(e-1)),n(e,1),t(e),e},i.round=function(t){var n=i(t),e=i.ceil(t);return t-n0))return u;do u.push(new Date(+e));while(n(e,o),t(e),e=n)for(;t(n),!e(n);)n.setTime(n-1)},function(t,r){if(t>=t)for(;--r>=0;)for(;n(t,1),!e(t););})},e&&(i.count=function(n,r){return gd.setTime(+n),md.setTime(+r),t(gd),t(md),Math.floor(e(gd,md))},i.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?i.filter(r?function(n){return r(n)%t===0}:function(n){return i.count(0,n)%t===0}):i:null}),i}function Kn(t){return Qn(function(n){n.setDate(n.getDate()-(n.getDay()+7-t)%7),n.setHours(0,0,0,0)},function(t,n){t.setDate(t.getDate()+7*n)},function(t,n){return(n-t-(n.getTimezoneOffset()-t.getTimezoneOffset())*Md)/kd})}function te(t){return Qn(function(n){n.setUTCDate(n.getUTCDate()-(n.getUTCDay()+7-t)%7),n.setUTCHours(0,0,0,0)},function(t,n){t.setUTCDate(t.getUTCDate()+7*n)},function(t,n){return(n-t)/kd})}function ne(t){if(!(n=zv.exec(t)))throw new Error("invalid format: "+t);var n,e=n[1]||" ",r=n[2]||">",i=n[3]||"-",o=n[4]||"",u=!!n[5],a=n[6]&&+n[6],c=!!n[7],s=n[8]&&+n[8].slice(1),f=n[9]||"";"n"===f?(c=!0,f="g"):Cv[f]||(f=""),(u||"0"===e&&"="===r)&&(u=!0,e="0",r="="),this.fill=e,this.align=r,this.sign=i,this.symbol=o,this.zero=u,this.width=a,this.comma=c,this.precision=s,this.type=f}function ee(t){return t}function re(n){return Rv=Lv(n),t.format=Rv.format,t.formatPrefix=Rv.formatPrefix,Rv}function ie(t){if(0<=t.y&&t.y<100){var n=new Date(-1,t.m,t.d,t.H,t.M,t.S,t.L);return n.setFullYear(t.y),n}return new Date(t.y,t.m,t.d,t.H,t.M,t.S,t.L)}function oe(t){if(0<=t.y&&t.y<100){var n=new Date(Date.UTC(-1,t.m,t.d,t.H,t.M,t.S,t.L));return n.setUTCFullYear(t.y),n}return new Date(Date.UTC(t.y,t.m,t.d,t.H,t.M,t.S,t.L))}function ue(t){return{y:t,m:0,d:1,H:0,M:0,S:0,L:0}}function ae(t){function n(t,n){return function(e){var r,i,o,u=[],a=-1,c=0,s=t.length;for(e instanceof Date||(e=new Date(+e));++a=c)return-1;if(i=n.charCodeAt(u++),37===i){if(i=n.charAt(u++),o=B[i in Iv?n.charAt(u++):i],!o||(r=o(t,e,r))<0)return-1}else if(i!=e.charCodeAt(r++))return-1}return r}function i(t,n,e){var r=C.exec(n.slice(e));return r?(t.p=z[r[0].toLowerCase()],e+r[0].length):-1}function o(t,n,e){var r=q.exec(n.slice(e));return r?(t.w=L[r[0].toLowerCase()],e+r[0].length):-1}function u(t,n,e){var r=P.exec(n.slice(e));return r?(t.w=R[r[0].toLowerCase()],e+r[0].length):-1}function a(t,n,e){var r=O.exec(n.slice(e));return r?(t.m=F[r[0].toLowerCase()],e+r[0].length):-1}function c(t,n,e){var r=U.exec(n.slice(e));return r?(t.m=D[r[0].toLowerCase()],e+r[0].length):-1}function s(t,n,e){return r(t,w,n,e)}function f(t,n,e){return r(t,M,n,e)}function l(t,n,e){return r(t,T,n,e)}function h(t){return S[t.getDay()]}function p(t){return k[t.getDay()]}function d(t){return A[t.getMonth()]}function v(t){return E[t.getMonth()]}function _(t){return N[+(t.getHours()>=12)]}function y(t){return S[t.getUTCDay()]}function g(t){return k[t.getUTCDay()]}function m(t){return A[t.getUTCMonth()]}function x(t){return E[t.getUTCMonth()]}function b(t){return N[+(t.getUTCHours()>=12)]}var w=t.dateTime,M=t.date,T=t.time,N=t.periods,k=t.days,S=t.shortDays,E=t.months,A=t.shortMonths,C=fe(N),z=le(N),P=fe(k),R=le(k),q=fe(S),L=le(S),U=fe(E),D=le(E),O=fe(A),F=le(A),I={a:h,A:p,b:d,B:v,c:null,d:ke,e:ke,H:Se,I:Ee,j:Ae,L:Ce,m:ze,M:Pe,p:_,S:Re,U:qe,w:Le,W:Ue,x:null,X:null,y:De,Y:Oe,Z:Fe,"%":tr},Y={a:y,A:g,b:m,B:x,c:null,d:Ie,e:Ie,H:Ye,I:Be,j:je,L:He,m:Xe,M:Ve,p:b,S:We,U:$e,w:Ze,W:Ge,x:null,X:null,y:Je,Y:Qe,Z:Ke,"%":tr},B={a:o,A:u,b:a,B:c,c:s,d:me,e:me,H:be,I:be,j:xe,L:Te,m:ge,M:we,p:i,S:Me,U:pe,w:he,W:de,x:f,X:l,y:_e,Y:ve,Z:ye,"%":Ne};return I.x=n(M,I),I.X=n(T,I),I.c=n(w,I),Y.x=n(M,Y),Y.X=n(T,Y),Y.c=n(w,Y),{format:function(t){var e=n(t+="",I);return e.toString=function(){return t},e},parse:function(t){var n=e(t+="",ie);return n.toString=function(){return t},n},utcFormat:function(t){var e=n(t+="",Y);return e.toString=function(){return t},e},utcParse:function(t){var n=e(t,oe);return n.toString=function(){return t},n}}}function ce(t,n,e){var r=t<0?"-":"",i=(r?-t:t)+"",o=i.length;return r+(o68?1900:2e3),e+r[0].length):-1}function ye(t,n,e){var r=/^(Z)|([+-]\d\d)(?:\:?(\d\d))?/.exec(n.slice(e,e+6));return r?(t.Z=r[1]?0:-(r[2]+(r[3]||"00")),e+r[0].length):-1}function ge(t,n,e){var r=Yv.exec(n.slice(e,e+2));return r?(t.m=r[0]-1,e+r[0].length):-1}function me(t,n,e){var r=Yv.exec(n.slice(e,e+2));return r?(t.d=+r[0],e+r[0].length):-1}function xe(t,n,e){var r=Yv.exec(n.slice(e,e+3));return r?(t.m=0,t.d=+r[0],e+r[0].length):-1}function be(t,n,e){var r=Yv.exec(n.slice(e,e+2));return r?(t.H=+r[0],e+r[0].length):-1}function we(t,n,e){var r=Yv.exec(n.slice(e,e+2));return r?(t.M=+r[0],e+r[0].length):-1}function Me(t,n,e){var r=Yv.exec(n.slice(e,e+2));return r?(t.S=+r[0],e+r[0].length):-1}function Te(t,n,e){var r=Yv.exec(n.slice(e,e+3));return r?(t.L=+r[0],e+r[0].length):-1}function Ne(t,n,e){var r=Bv.exec(n.slice(e,e+1));return r?e+r[0].length:-1}function ke(t,n){return ce(t.getDate(),n,2)}function Se(t,n){return ce(t.getHours(),n,2)}function Ee(t,n){return ce(t.getHours()%12||12,n,2)}function Ae(t,n){return ce(1+Rd.count(Jd(t),t),n,3)}function Ce(t,n){return ce(t.getMilliseconds(),n,3)}function ze(t,n){return ce(t.getMonth()+1,n,2)}function Pe(t,n){return ce(t.getMinutes(),n,2)}function Re(t,n){return ce(t.getSeconds(),n,2)}function qe(t,n){return ce(Ld.count(Jd(t),t),n,2)}function Le(t){return t.getDay()}function Ue(t,n){return ce(Ud.count(Jd(t),t),n,2)}function De(t,n){return ce(t.getFullYear()%100,n,2)}function Oe(t,n){return ce(t.getFullYear()%1e4,n,4)}function Fe(t){var n=t.getTimezoneOffset();return(n>0?"-":(n*=-1,"+"))+ce(n/60|0,"0",2)+ce(n%60,"0",2)}function Ie(t,n){return ce(t.getUTCDate(),n,2)}function Ye(t,n){return ce(t.getUTCHours(),n,2)}function Be(t,n){return ce(t.getUTCHours()%12||12,n,2)}function je(t,n){return ce(1+rv.count(bv(t),t),n,3)}function He(t,n){return ce(t.getUTCMilliseconds(),n,3)}function Xe(t,n){return ce(t.getUTCMonth()+1,n,2)}function Ve(t,n){return ce(t.getUTCMinutes(),n,2)}function We(t,n){return ce(t.getUTCSeconds(),n,2)}function $e(t,n){return ce(ov.count(bv(t),t),n,2)}function Ze(t){return t.getUTCDay()}function Ge(t,n){return ce(uv.count(bv(t),t),n,2)}function Je(t,n){return ce(t.getUTCFullYear()%100,n,2)}function Qe(t,n){return ce(t.getUTCFullYear()%1e4,n,4)}function Ke(){return"+0000"}function tr(){return"%"}function nr(n){return Uv=ae(n),t.timeFormat=Uv.format,t.timeParse=Uv.parse,t.utcFormat=Uv.utcFormat,t.utcParse=Uv.utcParse,Uv}function er(t){return t.toISOString()}function rr(t){var n=new Date(t);return isNaN(n)?null:n}function ir(t){function n(n){var o=n+"",u=e.get(o);if(!u){if(i!==Gv)return i;e.set(o,u=r.push(n))}return t[(u-1)%t.length]}var e=o(),r=[],i=Gv;return t=null==t?[]:Zv.call(t),n.domain=function(t){if(!arguments.length)return r.slice();r=[],e=o();for(var i,u,a=-1,c=t.length;++a=e?1:r(t)}}}function fr(t){return function(n,e){var r=t(n=+n,e=+e);return function(t){return t<=0?n:t>=1?e:r(t)}}}function lr(t,n,e,r){var i=t[0],o=t[1],u=n[0],a=n[1];return o2?hr:lr,o=u=null,r}function r(n){return(o||(o=i(a,c,f?sr(t):t,s)))(+n)}var i,o,u,a=Kv,c=Kv,s=mp,f=!1;return r.invert=function(t){return(u||(u=i(c,a,cr,f?fr(n):n)))(+t)},r.domain=function(t){return arguments.length?(a=$v.call(t,Qv),e()):a.slice()},r.range=function(t){return arguments.length?(c=Zv.call(t),e()):c.slice()},r.rangeRound=function(t){return c=Zv.call(t),s=xp,e()},r.clamp=function(t){return arguments.length?(f=!!t,e()):f},r.interpolate=function(t){return arguments.length?(s=t,e()):s},e()}function vr(t){var n=t.domain;return t.ticks=function(t){var e=n();return Bs(e[0],e[e.length-1],null==t?10:t)},t.tickFormat=function(t,e){return t_(n(),t,e)},t.nice=function(r){var i=n(),o=i.length-1,u=null==r?10:r,a=i[0],c=i[o],s=e(a,c,u);return s&&(s=e(Math.floor(a/s)*s,Math.ceil(c/s)*s,u),i[0]=Math.floor(a/s)*s,i[o]=Math.ceil(c/s)*s,n(i)),t},t}function _r(){var t=dr(cr,dp);return t.copy=function(){return pr(t,_r())},vr(t)}function yr(){function t(t){return+t}var n=[0,1];return t.invert=t,t.domain=t.range=function(e){return arguments.length?(n=$v.call(e,Qv),t):n.slice()},t.copy=function(){return yr().domain(n)},vr(t)}function gr(t,n){return(n=Math.log(n/t))?function(e){return Math.log(e/t)/n}:Jv(n)}function mr(t,n){return t<0?function(e){return-Math.pow(-n,e)*Math.pow(-t,1-e)}:function(e){return Math.pow(n,e)*Math.pow(t,1-e)}}function xr(t){return isFinite(t)?+("1e"+t):t<0?0:t}function br(t){return 10===t?xr:t===Math.E?Math.exp:function(n){return Math.pow(t,n)}}function wr(t){return t===Math.E?Math.log:10===t&&Math.log10||2===t&&Math.log2||(t=Math.log(t),function(n){return Math.log(n)/t})}function Mr(t){return function(n){return-t(-n)}}function Tr(){function n(){return o=wr(i),u=br(i),r()[0]<0&&(o=Mr(o),u=Mr(u)),e}var e=dr(gr,mr).domain([1,10]),r=e.domain,i=10,o=wr(10),u=br(10);return e.base=function(t){return arguments.length?(i=+t,n()):i},e.domain=function(t){return arguments.length?(r(t),n()):r()},e.ticks=function(t){var n,e=r(),a=e[0],c=e[e.length-1];(n=c0){for(;hc)break;v.push(l)}}else for(;h=1;--f)if(l=s*f,!(lc)break;v.push(l)}}else v=Bs(h,p,Math.min(p-h,d)).map(u);return n?v.reverse():v},e.tickFormat=function(n,r){if(null==r&&(r=10===i?".0e":","),"function"!=typeof r&&(r=t.format(r)),n===1/0)return r;null==n&&(n=10);var a=Math.max(1,i*n/e.ticks().length);return function(t){var n=t/u(Math.round(o(t)));return n*i0?i[n-1]:e[0],n=i?[o[i-1],r]:[o[n-1],o[n]]},t.copy=function(){return Ar().domain([e,r]).range(u)},vr(t)}function Cr(){function t(t){if(t<=t)return e[ks(n,t,0,r)]}var n=[.5],e=[0,1],r=1;return t.domain=function(i){return arguments.length?(n=Zv.call(i),r=Math.min(n.length,e.length-1),t):n.slice()},t.range=function(i){return arguments.length?(e=Zv.call(i),r=Math.min(n.length,e.length-1),t):e.slice()},t.invertExtent=function(t){var r=e.indexOf(t);return[n[r-1],n[r]]},t.copy=function(){return Cr().domain(n).range(e)},t}function zr(t){return new Date(t); +}function Pr(t){return t instanceof Date?+t:+new Date(+t)}function Rr(t,n,r,i,o,u,a,c,s){function f(e){return(a(e)=0&&(n=t.slice(e+1),t=t.slice(0,e)),{type:t,name:n}})}function jr(t){return function(){var n=this.__on;if(n){for(var e,r=0,i=-1,o=n.length;rn?1:t>=n?0:NaN}function Qr(t){return function(){this.removeAttribute(t)}}function Kr(t){return function(){this.removeAttributeNS(t.space,t.local)}}function ti(t,n){return function(){this.setAttribute(t,n)}}function ni(t,n){return function(){this.setAttributeNS(t.space,t.local,n)}}function ei(t,n){return function(){var e=n.apply(this,arguments);null==e?this.removeAttribute(t):this.setAttribute(t,e)}}function ri(t,n){return function(){var e=n.apply(this,arguments);null==e?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,e)}}function ii(t){return function(){this.style.removeProperty(t)}}function oi(t,n,e){return function(){this.style.setProperty(t,n,e)}}function ui(t,n,e){return function(){var r=n.apply(this,arguments);null==r?this.style.removeProperty(t):this.style.setProperty(t,r,e)}}function ai(t){return function(){delete this[t]}}function ci(t,n){return function(){this[t]=n}}function si(t,n){return function(){var e=n.apply(this,arguments);null==e?delete this[t]:this[t]=e}}function fi(t){return t.trim().split(/^|\s+/)}function li(t){return t.classList||new hi(t)}function hi(t){this._node=t,this._names=fi(t.getAttribute("class")||"")}function pi(t,n){for(var e=li(t),r=-1,i=n.length;++rSy)throw new Error("too late");return e}function qi(t,n){var e=t.__transition;if(!e||!(e=e[n])||e.state>Ay)throw new Error("too late");return e}function Li(t,n){var e=t.__transition;if(!e||!(e=e[n]))throw new Error("too late");return e}function Ui(t,n,e){function r(t){e.state=Ey,e.timer.restart(i,e.delay,e.time),e.delay<=t&&i(t-e.delay)}function i(r){var s,f,l,h;if(e.state!==Ey)return u();for(s in c)if(h=c[s],h.name===e.name){if(h.state===Cy)return _d(i);h.state===zy?(h.state=Ry,h.timer.stop(),h.on.call("interrupt",t,t.__data__,h.index,h.group),delete c[s]):+s=0&&(t=t.slice(0,n)),!t||"start"===t})}function to(t,n,e){var r,i,o=Ki(n)?Ri:qi;return function(){var u=o(this,t),a=u.on;a!==r&&(i=(r=a).copy()).on(n,e),u.on=i}}function no(t){return function(){var n=this.parentNode;for(var e in this.__transition)if(+e!==t)return;n&&n.removeChild(this)}}function eo(t,n){var e,r,i;return function(){var o=ay(this).getComputedStyle(this,null),u=o.getPropertyValue(t),a=(this.style.removeProperty(t),o.getPropertyValue(t));return u===a?null:u===e&&a===r?i:i=n(e=u,r=a)}}function ro(t){return function(){this.style.removeProperty(t)}}function io(t,n,e){var r,i;return function(){var o=ay(this).getComputedStyle(this,null).getPropertyValue(t);return o===e?null:o===r?i:i=n(r=o,e)}}function oo(t,n,e){var r,i,o;return function(){var u=ay(this).getComputedStyle(this,null),a=u.getPropertyValue(t),c=e(this);return null==c&&(this.style.removeProperty(t),c=u.getPropertyValue(t)),a===c?null:a===r&&c===i?o:o=n(r=a,i=c)}}function uo(t,n,e){function r(){var r=this,i=n.apply(r,arguments);return i&&function(n){r.style.setProperty(t,i(n),e)}}return r._value=n,r}function ao(t){return function(){this.textContent=t}}function co(t){return function(){var n=t(this);this.textContent=null==n?"":n}}function so(t,n,e,r){this._groups=t,this._parents=n,this._name=e,this._id=r}function fo(t){return Pi().transition(t)}function lo(){return++eg}function ho(t,n){for(var e;!(e=t.__transition)||!(e=e[n]);)if(!(t=t.parentNode))return ig.time=jn(),ig;return e}function po(t,n,e){var r=t(e);return"translate("+(isFinite(r)?r:n(e))+",0)"}function vo(t,n,e){var r=t(e);return"translate(0,"+(isFinite(r)?r:n(e))+")"}function _o(t){var n=t.bandwidth()/2;return t.round()&&(n=Math.round(n)),function(e){return t(e)+n}}function yo(){return!this.__axis}function go(t,n){function e(e){var s,f=null==i?n.ticks?n.ticks.apply(n,r):n.domain():i,l=null==o?n.tickFormat?n.tickFormat.apply(n,r):sg:o,h=Math.max(u,0)+c,p=t===fg||t===hg?po:vo,d=n.range(),v=d[0]+.5,_=d[d.length-1]+.5,y=(n.bandwidth?_o:sg)(n.copy()),g=e.selection?e.selection():e,m=g.selectAll(".domain").data([null]),x=g.selectAll(".tick").data(f,n).order(),b=x.exit(),w=x.enter().append("g").attr("class","tick"),M=x.select("line"),T=x.select("text"),N=t===fg||t===pg?-1:1,k=t===pg||t===lg?(s="x","y"):(s="y","x");m=m.merge(m.enter().insert("path",".tick").attr("class","domain").attr("stroke","#000")),x=x.merge(w),M=M.merge(w.append("line").attr("stroke","#000").attr(s+"2",N*u).attr(k+"1",.5).attr(k+"2",.5)),T=T.merge(w.append("text").attr("fill","#000").attr(s,N*h).attr(k,.5).attr("dy",t===fg?"0em":t===hg?"0.71em":"0.32em")),e!==g&&(m=m.transition(e),x=x.transition(e),M=M.transition(e),T=T.transition(e),b=b.transition(e).attr("opacity",dg).attr("transform",function(t){return p(y,this.parentNode.__axis||y,t)}),w.attr("opacity",dg).attr("transform",function(t){return p(this.parentNode.__axis||y,y,t)})),b.remove(),m.attr("d",t===pg||t==lg?"M"+N*a+","+v+"H0.5V"+_+"H"+N*a:"M"+v+","+N*a+"V0.5H"+_+"V"+N*a),x.attr("opacity",1).attr("transform",function(t){return p(y,y,t)}),M.attr(s+"2",N*u),T.attr(s,N*h).text(l),g.filter(yo).attr("fill","none").attr("font-size",10).attr("font-family","sans-serif").attr("text-anchor",t===lg?"start":t===pg?"end":"middle"),g.each(function(){this.__axis=y})}var r=[],i=null,o=null,u=6,a=6,c=3;return e.scale=function(t){return arguments.length?(n=t,e):n},e.ticks=function(){return r=cg.call(arguments),e},e.tickArguments=function(t){return arguments.length?(r=null==t?[]:cg.call(t),e):r.slice()},e.tickValues=function(t){return arguments.length?(i=null==t?null:cg.call(t),e):i&&i.slice()},e.tickFormat=function(t){return arguments.length?(o=t,e):o},e.tickSize=function(t){return arguments.length?(u=a=+t,e):u},e.tickSizeInner=function(t){return arguments.length?(u=+t,e):u},e.tickSizeOuter=function(t){return arguments.length?(a=+t,e):a},e.tickPadding=function(t){return arguments.length?(c=+t,e):c},e}function mo(t){return go(fg,t)}function xo(t){return go(lg,t)}function bo(t){return go(hg,t)}function wo(t){return go(pg,t)}function Mo(t,n){return t.parent===n.parent?1:2}function To(t){return t.reduce(No,0)/t.length}function No(t,n){return t+n.x}function ko(t){return 1+t.reduce(So,0)}function So(t,n){return Math.max(t,n.y)}function Eo(t){for(var n;n=t.children;)t=n[0];return t}function Ao(t){for(var n;n=t.children;)t=n[n.length-1];return t}function Co(t,n){if(t===n)return t;var e=t.ancestors(),r=n.ancestors(),i=null;for(t=e.pop(),n=r.pop();t===n;)i=t,t=e.pop(),n=r.pop();return i}function zo(t,n){var e,r,i,o,u,a=new Uo(t),c=+t.value&&(a.value=t.value),s=[a];for(null==n&&(n=Ro);e=s.pop();)if(c&&(e.value=+e.data.value),(i=n(e.data))&&(u=i.length))for(e.children=new Array(u),o=u-1;o>=0;--o)s.push(r=e.children[o]=new Uo(i[o])),r.parent=e,r.depth=e.depth+1;return a.eachBefore(Lo)}function Po(){return zo(this).eachBefore(qo)}function Ro(t){return t.children}function qo(t){t.data=t.data.data}function Lo(t){var n=0;do t.height=n;while((t=t.parent)&&t.height<++n)}function Uo(t){this.data=t,this.depth=this.height=0,this.parent=null}function Do(t){this._=t,this.next=null}function Oo(t,n){var e=n.x-t.x,r=n.y-t.y,i=t.r-n.r;return i*i+1e-6>e*e+r*r}function Fo(t,n){var e,r,i,o=null,u=t.head;switch(n.length){case 1:e=Io(n[0]);break;case 2:e=Yo(n[0],n[1]);break;case 3:e=Bo(n[0],n[1],n[2])}for(;u;)i=u._,r=u.next,e&&Oo(e,i)?o=u:(o?(t.tail=o,o.next=null):t.head=t.tail=null,n.push(i),e=Fo(t,n),n.pop(),t.head?(u.next=t.head,t.head=u):(u.next=null,t.head=t.tail=u),o=t.tail,o.next=r),u=r;return t.tail=o,e}function Io(t){return{x:t.x,y:t.y,r:t.r}}function Yo(t,n){var e=t.x,r=t.y,i=t.r,o=n.x,u=n.y,a=n.r,c=o-e,s=u-r,f=a-i,l=Math.sqrt(c*c+s*s);return{x:(e+o+c/l*f)/2,y:(r+u+s/l*f)/2,r:(l+i+a)/2}}function Bo(t,n,e){var r=t.x,i=t.y,o=t.r,u=n.x,a=n.y,c=n.r,s=e.x,f=e.y,l=e.r,h=2*(r-u),p=2*(i-a),d=2*(c-o),v=r*r+i*i-o*o-u*u-a*a+c*c,_=2*(r-s),y=2*(i-f),g=2*(l-o),m=r*r+i*i-o*o-s*s-f*f+l*l,x=_*p-h*y,b=(p*m-y*v)/x-r,w=(y*d-p*g)/x,M=(_*v-h*m)/x-i,T=(h*g-_*d)/x,N=w*w+T*T-1,k=2*(b*w+M*T+o),S=b*b+M*M-o*o,E=(-k-Math.sqrt(k*k-4*N*S))/(2*N);return{x:b+w*E+r,y:M+T*E+i,r:E}}function jo(t,n,e){var r=t.x,i=t.y,o=n.r+e.r,u=t.r+e.r,a=n.x-r,c=n.y-i,s=a*a+c*c;if(s){var f=.5+((u*=u)-(o*=o))/(2*s),l=Math.sqrt(Math.max(0,2*o*(u+s)-(u-=s)*u-o*o))/(2*s);e.x=r+f*a+l*c,e.y=i+f*c-l*a}else e.x=r+u,e.y=i}function Ho(t,n){var e=n.x-t.x,r=n.y-t.y,i=t.r+n.r;return i*i>e*e+r*r}function Xo(t,n,e){var r=t.x-n,i=t.y-e;return r*r+i*i}function Vo(t){this._=t,this.next=null,this.previous=null}function Wo(t){if(!(i=t.length))return 0;var n,e,r,i;if(n=t[0],n.x=0,n.y=0,!(i>1))return n.r;if(e=t[1],n.x=-e.r,e.x=n.r,e.y=0,!(i>2))return n.r+e.r;jo(e,n,r=t[2]);var o,u,a,c,s,f,l,h=n.r*n.r,p=e.r*e.r,d=r.r*r.r,v=h+p+d,_=h*n.x+p*e.x+d*r.x,y=h*n.y+p*e.y+d*r.y;n=new Vo(n),e=new Vo(e),r=new Vo(r),n.next=r.previous=e,e.next=n.previous=r,r.next=e.previous=n;t:for(a=3;a=0;)n=i[o],n.z+=e,n.m+=e,e+=n.s+(r+=n.c)}function cu(t,n,e){return t.a.parent===n.parent?t.a:e}function su(t,n){this._=t,this.parent=null,this.children=null,this.A=null,this.a=this,this.z=0,this.m=0,this.c=0,this.s=0,this.t=null,this.i=n}function fu(t){for(var n,e,r,i,o,u=new su(t,0),a=[u];n=a.pop();)if(r=n._.children)for(n.children=new Array(o=r.length),i=o-1;i>=0;--i)a.push(e=n.children[i]=new su(r[i],i)),e.parent=n;return(u.parent=new su(null,0)).children=[u],u}function lu(t,n,e,r,i,o){for(var u,a,c,s,f,l,h,p,d,v,_,y=[],g=n.children,m=0,x=0,b=g.length,w=n.value;mh&&(h=a),_=f*f*v,p=Math.max(h/_,_/l),p>d){f-=a;break}d=p}y.push(u={value:f,dice:c0)){if(o/=d,d<0){if(o0){if(o>p)return;o>h&&(h=o)}if(o=r-c,d||!(o<0)){if(o/=d,d<0){if(o>p)return;o>h&&(h=o)}else if(d>0){if(o0)){if(o/=v,v<0){if(o0){if(o>p)return;o>h&&(h=o)}if(o=i-s,v||!(o<0)){if(o/=v,v<0){if(o>p)return;o>h&&(h=o)}else if(v>0){if(o0||p<1)||(h>0&&(t[0]=[c+h*d,s+h*v]),p<1&&(t[1]=[c+p*d,s+p*v]),!0)}}}}}function Lu(t,n,e,r,i){var o=t[1];if(o)return!0;var u,a,c=t[0],s=t.left,f=t.right,l=s[0],h=s[1],p=f[0],d=f[1],v=(l+p)/2,_=(h+d)/2;if(d===h){if(v=r)return;if(l>p){if(c){if(c[1]>=i)return}else c=[v,e];o=[v,i]}else{if(c){if(c[1]1)if(l>p){if(c){if(c[1]>=i)return}else c=[(e-a)/u,e];o=[(i-a)/u,i]}else{if(c){if(c[1]=r)return}else c=[n,u*n+a];o=[r,u*r+a]}else{if(c){if(c[0]vm||Math.abs(i[0][1]-i[1][1])>vm)||delete hm[o]}function Du(t){return fm[t.index]={site:t,halfedges:[]}}function Ou(t,n){var e=t.site,r=n.left,i=n.right;return e===i&&(i=r,r=e),i?Math.atan2(i[1]-r[1],i[0]-r[0]):(e===r?(r=n[1],i=n[0]):(r=n[0],i=n[1]),Math.atan2(r[0]-i[0],i[1]-r[1]))}function Fu(t,n){return n[+(n.left!==t.site)]}function Iu(t,n){return n[+(n.left===t.site)]}function Yu(){for(var t,n,e,r,i=0,o=fm.length;ivm||Math.abs(v-h)>vm)&&(c.splice(a,0,hm.push(Pu(u,p,Math.abs(d-t)vm?[t,Math.abs(l-t)vm?[Math.abs(h-r)vm?[e,Math.abs(l-e)vm?[Math.abs(h-n)=-_m)){var p=c*c+s*s,d=f*f+l*l,v=(l*p-s*d)/h,_=(c*d-f*p)/h,y=pm.pop()||new ju;y.arc=t,y.site=i,y.x=v+u,y.y=(y.cy=_+a)+Math.sqrt(v*v+_*_),t.circle=y;for(var g=null,m=lm._;m;)if(y.yvm)a=a.L;else{if(i=o-Qu(a,u),!(i>vm)){r>-vm?(n=a.P,e=a):i>-vm?(n=a,e=a.N):n=e=a;break}if(!a.R){n=a;break}a=a.R}Du(t);var c=Wu(t);if(sm.insert(n,c),n||e){if(n===e)return Xu(n),e=Wu(n.site),sm.insert(c,e),c.edge=e.edge=zu(n.site,c.site),Hu(n),void Hu(e);if(!e)return void(c.edge=zu(n.site,c.site));Xu(n),Xu(e);var s=n.site,f=s[0],l=s[1],h=t[0]-f,p=t[1]-l,d=e.site,v=d[0]-f,_=d[1]-l,y=2*(h*_-p*v),g=h*h+p*p,m=v*v+_*_,x=[(_*g-p*m)/y+f,(h*m-v*g)/y+l];Ru(e.edge,s,d,x),c.edge=zu(s,t,null,x),e.edge=zu(t,d,null,x),Hu(n),Hu(e)}}function Ju(t,n){var e=t.site,r=e[0],i=e[1],o=i-n;if(!o)return r;var u=t.P;if(!u)return-(1/0);e=u.site;var a=e[0],c=e[1],s=c-n;if(!s)return a;var f=a-r,l=1/o-1/s,h=f/s;return l?(-h+Math.sqrt(h*h-2*l*(f*f/(-2*s)-c+s/2+i-o/2)))/l+r:(r+a)/2}function Qu(t,n){var e=t.N;if(e)return Ju(e,n);var r=t.site;return r[1]===n?r[0]:1/0}function Ku(t,n,e){return(t[0]-e[0])*(n[1]-t[1])-(t[0]-n[0])*(e[1]-t[1])}function ta(t,n){return n[1]-t[1]||n[0]-t[0]}function na(t,n){var e,r,i,o=t.sort(ta).pop();for(hm=[],fm=new Array(t.length),sm=new ku,lm=new ku;;)if(i=cm,o&&(!i||o[1]Math.abs(t[1]-O[1])?M=!0:w=!0),O=t,b=!0,Tm(),o()}function o(){var t;switch(m=O[0]-D[0],x=O[1]-D[1],k){case km:case Nm:S&&(m=Math.max(P-l,Math.min(q-v,m)),h=l+m,_=v+m),E&&(x=Math.max(R-p,Math.min(L-y,x)),d=p+x,g=y+x);break;case Sm:S<0?(m=Math.max(P-l,Math.min(q-l,m)),h=l+m,_=v):S>0&&(m=Math.max(P-v,Math.min(q-v,m)),h=l,_=v+m),E<0?(x=Math.max(R-p,Math.min(L-p,x)),d=p+x,g=y):E>0&&(x=Math.max(R-y,Math.min(L-y,x)),d=p,g=y+x);break;case Em:S&&(h=Math.max(P,Math.min(q,l-m*S)),_=Math.max(P,Math.min(q,v+m*S))),E&&(d=Math.max(R,Math.min(L,p-x*E)),g=Math.max(R,Math.min(L,y+x*E)))}_0&&(l=h-m),E<0?y=g-x:E>0&&(p=d-x),k=km,Y.attr("cursor",Pm.selection),o());break;default:return}Tm()}function s(){switch(t.event.keyCode){case 16:U&&(w=M=U=!1,o());break;case 18:k===Em&&(S<0?v=_:S>0&&(l=h),E<0?y=g:E>0&&(p=d),k=Sm,o());break;case 32:k===km&&(t.event.altKey?(S&&(v=_-m*S,l=h+m*S),E&&(y=g-x*E,p=d+x*E),k=Em):(S<0?v=_:S>0&&(l=h),E<0?y=g:E>0&&(p=d),k=Sm),Y.attr("cursor",Pm[N]),o());break;default:return}Tm()}if(t.event.touches){if(t.event.changedTouches.length1?0:t<-1?Ax:Math.acos(t)}function Ea(t){return t>1?Cx:t<-1?-Cx:Math.asin(t)}function Aa(t){return(t=jx(t/2))*t}function Ca(){}function za(t,n){t&&$x.hasOwnProperty(t.type)&&$x[t.type](t,n)}function Pa(t,n,e){var r,i=-1,o=t.length-e;for(n.lineStart();++i=0?1:-1,i=r*e,o=Ox(n),u=jx(n),a=Km*u,c=Qm*o+a*Ox(i),s=a*r*jx(i);Gx.add(Dx(s,c)),Jm=t,Qm=o,Km=u}function Oa(t){return[Dx(t[1],t[0]),Ea(t[2])]}function Fa(t){var n=t[0],e=t[1],r=Ox(e);return[r*Ox(n),r*jx(n),jx(e)]}function Ia(t,n){return t[0]*n[0]+t[1]*n[1]+t[2]*n[2]}function Ya(t,n){return[t[1]*n[2]-t[2]*n[1],t[2]*n[0]-t[0]*n[2],t[0]*n[1]-t[1]*n[0]]}function Ba(t,n){t[0]+=n[0],t[1]+=n[1],t[2]+=n[2]}function ja(t,n){return[t[0]*n,t[1]*n,t[2]*n]}function Ha(t){var n=Xx(t[0]*t[0]+t[1]*t[1]+t[2]*t[2]);t[0]/=n,t[1]/=n,t[2]/=n}function Xa(t,n){cx.push(sx=[tx=t,ex=t]),nrx&&(rx=n)}function Va(t,n){var e=Fa([t*qx,n*qx]);if(ax){var r=Ya(ax,e),i=[r[1],-r[0],0],o=Ya(i,r);Ha(o),o=Oa(o);var u,a=t-ix,c=a>0?1:-1,s=o[0]*Rx*c,f=Lx(a)>180;f^(c*ixrx&&(rx=u)):(s=(s+360)%360-180,f^(c*ixrx&&(rx=n))),f?tQa(tx,ex)&&(ex=t):Qa(t,ex)>Qa(tx,ex)&&(tx=t):ex>=tx?(tex&&(ex=t)):t>ix?Qa(tx,t)>Qa(tx,ex)&&(ex=t):Qa(t,ex)>Qa(tx,ex)&&(tx=t)}else Xa(t,n);ax=e,ix=t}function Wa(){nb.point=Va}function $a(){sx[0]=tx,sx[1]=ex,nb.point=Xa,ax=null}function Za(t,n){if(ax){var e=t-ix;tb.add(Lx(e)>180?e+(e>0?360:-360):e)}else ox=t,ux=n;Qx.point(t,n),Va(t,n)}function Ga(){Qx.lineStart()}function Ja(){Za(ox,ux),Qx.lineEnd(),Lx(tb)>Sx&&(tx=-(ex=180)),sx[0]=tx,sx[1]=ex,ax=null}function Qa(t,n){return(n-=t)<0?n+360:n}function Ka(t,n){return t[0]-n[0]}function tc(t,n){return t[0]<=t[1]?t[0]<=n&&n<=t[1]:nAx?t-Px:t<-Ax?t+Px:t,n]}function hc(t,n,e){return(t%=Px)?n||e?ub(dc(t),vc(n,e)):dc(t):n||e?vc(n,e):lc}function pc(t){return function(n,e){return n+=t,[n>Ax?n-Px:n<-Ax?n+Px:n,e]}}function dc(t){var n=pc(t);return n.invert=pc(-t),n}function vc(t,n){function e(t,n){var e=Ox(n),a=Ox(t)*e,c=jx(t)*e,s=jx(n),f=s*r+a*i;return[Dx(c*o-f*u,a*r-s*i),Ea(f*o+c*u)]}var r=Ox(t),i=jx(t),o=Ox(n),u=jx(n);return e.invert=function(t,n){var e=Ox(n),a=Ox(t)*e,c=jx(t)*e,s=jx(n),f=s*o-c*u;return[Dx(c*o+s*u,a*r+f*i),Ea(f*r-a*i)]},e}function _c(t,n,e,r,i,o){if(e){var u=Ox(n),a=jx(n),c=r*e;null==i?(i=n+r*Px,o=n-c/2):(i=yc(u,i),o=yc(u,o),(r>0?io)&&(i+=r*Px));for(var s,f=i;r>0?f>o:f0){do s.point(0===f||3===f?t:e,f>1?r:n);while((f=(f+a+4)%4)!==l)}else s.point(o[0],o[1])}function u(r,i){return Lx(r[0]-t)0?0:3:Lx(r[0]-e)0?2:1:Lx(r[1]-n)0?1:0:i>0?3:2}function a(t,n){return c(t.x,n.x)}function c(t,n){var e=u(t,1),r=u(n,1);return e!==r?e-r:0===e?n[1]-t[1]:1===e?t[0]-n[0]:2===e?t[1]-n[1]:n[0]-t[0]}return function(u){function c(t,n){i(t,n)&&k.point(t,n)}function s(){for(var n=0,e=0,i=_.length;er&&(l-o)*(r-u)>(h-u)*(t-o)&&++n:h<=r&&(l-o)*(r-u)<(h-u)*(t-o)&&--n;return n}function f(){k=S,v=[],_=[],N=!0}function l(){var t=s(),n=N&&t,e=(v=Js(v)).length;(n||e)&&(u.polygonStart(),n&&(u.lineStart(),o(null,null,1,u),u.lineEnd()),e&&Mb(v,a,t,o,u),u.polygonEnd()),k=u,v=_=y=null}function h(){E.point=d,_&&_.push(y=[]),T=!0,M=!1,b=w=NaN}function p(){v&&(d(g,m),x&&M&&S.rejoin(),v.push(S.result())),E.point=c,M&&k.lineEnd()}function d(o,u){var a=i(o,u);if(_&&y.push([o,u]),T)g=o,m=u,x=a,T=!1,a&&(k.lineStart(),k.point(o,u));else if(a&&M)k.point(o,u);else{var c=[b=Math.max(Nb,Math.min(Tb,b)),w=Math.max(Nb,Math.min(Tb,w))],s=[o=Math.max(Nb,Math.min(Tb,o)),u=Math.max(Nb,Math.min(Tb,u))];bb(c,s,t,n,e,r)?(M||(k.lineStart(),k.point(c[0],c[1])),k.point(s[0],s[1]),a||k.lineEnd(),N=!1):a&&(k.lineStart(),k.point(o,u),N=!1)}b=o,w=u,M=a}var v,_,y,g,m,x,b,w,M,T,N,k=u,S=xb(),E={point:c,lineStart:h,lineEnd:p,polygonStart:f,polygonEnd:l};return E}}function bc(){Eb.point=Mc,Eb.lineEnd=wc}function wc(){Eb.point=Eb.lineEnd=Ca}function Mc(t,n){t*=qx,n*=qx,ab=t,cb=jx(n),sb=Ox(n),Eb.point=Tc}function Tc(t,n){t*=qx,n*=qx;var e=jx(n),r=Ox(n),i=Lx(t-ab),o=Ox(i),u=jx(i),a=r*u,c=sb*e-cb*r*o,s=cb*e+sb*r*o;Sb.add(Dx(Xx(a*a+c*c),s)),ab=t,cb=e,sb=r}function Nc(t,n,e){var r=Os(t,n-Sx,e).concat(n);return function(t){return r.map(function(n){return[t,n]})}}function kc(t,n,e){var r=Os(t,n-Sx,e).concat(n);return function(t){return r.map(function(n){return[n,t]})}}function Sc(){function t(){return{type:"MultiLineString",coordinates:n()}}function n(){return Os(Fx(o/_)*_,i,_).map(h).concat(Os(Fx(s/y)*y,c,y).map(p)).concat(Os(Fx(r/d)*d,e,d).filter(function(t){return Lx(t%_)>Sx}).map(f)).concat(Os(Fx(a/v)*v,u,v).filter(function(t){return Lx(t%y)>Sx}).map(l))}var e,r,i,o,u,a,c,s,f,l,h,p,d=10,v=d,_=90,y=360,g=2.5;return t.lines=function(){return n().map(function(t){return{type:"LineString",coordinates:t}})},t.outline=function(){return{type:"Polygon",coordinates:[h(o).concat(p(c).slice(1),h(i).reverse().slice(1),p(s).reverse().slice(1))]}},t.extent=function(n){return arguments.length?t.extentMajor(n).extentMinor(n):t.extentMinor()},t.extentMajor=function(n){return arguments.length?(o=+n[0][0],i=+n[1][0],s=+n[0][1],c=+n[1][1],o>i&&(n=o,o=i,i=n),s>c&&(n=s,s=c,c=n),t.precision(g)):[[o,s],[i,c]]},t.extentMinor=function(n){return arguments.length?(r=+n[0][0],e=+n[1][0],a=+n[0][1],u=+n[1][1],r>e&&(n=r,r=e,e=n),a>u&&(n=a,a=u,u=n),t.precision(g)):[[r,a],[e,u]]},t.step=function(n){return arguments.length?t.stepMajor(n).stepMinor(n):t.stepMinor()},t.stepMajor=function(n){return arguments.length?(_=+n[0],y=+n[1],t):[_,y]},t.stepMinor=function(n){return arguments.length?(d=+n[0],v=+n[1],t):[d,v]},t.precision=function(n){return arguments.length?(g=+n,f=Nc(a,u,90),l=kc(r,e,g),h=Nc(s,c,90),p=kc(o,i,g),t):g},t.extentMajor([[-180,-90+Sx],[180,90-Sx]]).extentMinor([[-180,-80-Sx],[180,80+Sx]])}function Ec(){return Sc()()}function Ac(){Db.point=Cc}function Cc(t,n){Db.point=zc,fb=hb=t,lb=pb=n}function zc(t,n){Ub.add(pb*t-hb*n),hb=t,pb=n}function Pc(){zc(fb,lb)}function Rc(t,n){tIb&&(Ib=t),nYb&&(Yb=n)}function qc(t,n){jb+=t,Hb+=n,++Xb}function Lc(){Qb.point=Uc}function Uc(t,n){Qb.point=Dc,qc(_b=t,yb=n)}function Dc(t,n){var e=t-_b,r=n-yb,i=Xx(e*e+r*r);Vb+=i*(_b+t)/2,Wb+=i*(yb+n)/2,$b+=i,qc(_b=t,yb=n)}function Oc(){Qb.point=qc}function Fc(){Qb.point=Yc}function Ic(){Bc(db,vb)}function Yc(t,n){Qb.point=Bc,qc(db=_b=t,vb=yb=n)}function Bc(t,n){var e=t-_b,r=n-yb,i=Xx(e*e+r*r);Vb+=i*(_b+t)/2,Wb+=i*(yb+n)/2,$b+=i,i=yb*t-_b*n,Zb+=i*(_b+t),Gb+=i*(yb+n),Jb+=3*i,qc(_b=t,yb=n)}function jc(t){this._context=t}function Hc(){this._string=[]}function Xc(t){return"m0,"+t+"a"+t+","+t+" 0 1,1 0,"+-2*t+"a"+t+","+t+" 0 1,1 0,"+2*t+"z"}function Vc(t){return t.length>1}function Wc(t,n){return((t=t.x)[0]<0?t[1]-Cx-Sx:Cx-t[1])-((n=n.x)[0]<0?n[1]-Cx-Sx:Cx-n[1])}function $c(t){var n,e=NaN,r=NaN,i=NaN;return{lineStart:function(){t.lineStart(),n=1},point:function(o,u){var a=o>0?Ax:-Ax,c=Lx(o-e);Lx(c-Ax)0?Cx:-Cx),t.point(i,r),t.lineEnd(),t.lineStart(),t.point(a,r),t.point(o,r),n=0):i!==a&&c>=Ax&&(Lx(e-i)Sx?Ux((jx(n)*(o=Ox(r))*jx(e)-jx(r)*(i=Ox(n))*jx(t))/(i*o*u)):(n+r)/2}function Gc(t,n,e,r){var i;if(null==t)i=e*Cx,r.point(-Ax,i),r.point(0,i),r.point(Ax,i),r.point(Ax,0),r.point(Ax,-i),r.point(0,-i),r.point(-Ax,-i),r.point(-Ax,0),r.point(-Ax,i);else if(Lx(t[0]-n[0])>Sx){var o=t[0]4*n&&v--){var x=u+h,b=a+p,w=c+d,M=Xx(x*x+b*b+w*w),T=Ea(w/=M),N=Lx(Lx(w)-1)n||Lx((y*A+g*C)/m-.5)>.3||u*h+a*p+c*d2?t[2]%360*qx:0,i()):[b*Rx,w*Rx,M*Rx]},n.precision=function(t){return arguments.length?(A=cw(r,E=t*t),o()):Xx(E)},n.fitExtent=function(t,e){return Kc(n,t,e)},n.fitSize=function(t,e){return ts(n,t,e)},function(){return u=t.apply(this,arguments),n.invert=u.invert&&e,i()}}function os(t){var n=0,e=Ax/3,r=is(t),i=r(n,e);return i.parallels=function(t){return arguments.length?r(n=t[0]*qx,e=t[1]*qx):[n*Rx,e*Rx]},i}function us(t){function n(t,n){return[t*e,jx(n)/e]}var e=Ox(t);return n.invert=function(t,n){return[t/e,Ea(n*e)]},n}function as(t,n){function e(t,n){var e=Xx(o-2*i*jx(n))/i;return[e*jx(t*=i),u-e*Ox(t)]}var r=jx(t),i=(r+jx(n))/2;if(Lx(i)0?n<-Cx+Sx&&(n=-Cx+Sx):n>Cx-Sx&&(n=Cx-Sx);var e=o/Bx(ps(n),i);return[e*jx(i*t),o-e*Ox(i*t)]}var r=Ox(t),i=t===n?jx(t):Yx(r/Ox(n))/Yx(ps(n)/ps(t)),o=r*Bx(ps(t),i)/i;return i?(e.invert=function(t,n){var e=o-n,r=Hx(i)*Xx(t*t+e*e);return[Dx(t,Lx(e))/i*Hx(e),2*Ux(Bx(o/r,1/i))-Cx]},e):ls}function vs(t,n){return[t,n]}function _s(t,n){function e(t,n){var e=o-n,r=i*t;return[e*jx(r),o-e*Ox(r)]}var r=Ox(t),i=t===n?jx(t):(r-Ox(n))/(n-t),o=r/i+t;return Lx(i)n?1:t>=n?0:NaN},Ts=function(t){return 1===t.length&&(t=n(t)),{left:function(n,e,r,i){for(null==r&&(r=0),null==i&&(i=n.length);r>>1;t(n[o],e)<0?r=o+1:i=o}return r},right:function(n,e,r,i){for(null==r&&(r=0),null==i&&(i=n.length);r>>1;t(n[o],e)>0?i=o:r=o+1}return r}}},Ns=Ts(Ms),ks=Ns.right,Ss=Ns.left,Es=function(t,n){return nt?1:n>=t?0:NaN},As=function(t){return null===t?NaN:+t},Cs=function(t,n){var e,r,i=t.length,o=0,u=0,a=-1,c=0;if(null==n)for(;++a1)return u/(c-1)},zs=function(t,n){var e=Cs(t,n);return e?Math.sqrt(e):e},Ps=function(t,n){var e,r,i,o=-1,u=t.length;if(null==n){for(;++o=r){e=i=r;break}for(;++or&&(e=r),i=r){e=i=r;break}for(;++or&&(e=r),i=f;)l.pop(),--h;var p,d=new Array(h+1);for(i=0;i<=h;++i)p=d[i]=[],p.x0=i>0?l[i-1]:s,p.x1=i=1)return+e(t[r-1],r-1,t);var r,i=(r-1)*n,o=Math.floor(i),u=+e(t[o],o,t),a=+e(t[o+1],o+1,t);return u+(a-u)*(i-o)}},Vs=function(t,n,e){return t=Ls.call(t,As).sort(Ms),Math.ceil((e-n)/(2*(Xs(t,.75)-Xs(t,.25))*Math.pow(t.length,-1/3)))},Ws=function(t,n,e){return Math.ceil((e-n)/(3.5*zs(t)*Math.pow(t.length,-1/3)))},$s=function(t,n){var e,r,i=-1,o=t.length;if(null==n){for(;++i=r){e=r;break}for(;++ie&&(e=r)}else{for(;++i=r){e=r;break}for(;++ie&&(e=r)}return e},Zs=function(t,n){var e,r=0,i=t.length,o=-1,u=i;if(null==n)for(;++o=0;)for(r=t[i],n=r.length;--n>=0;)e[--u]=r[n];return e},Qs=function(t,n){var e,r,i=-1,o=t.length;if(null==n){for(;++i=r){e=r;break}for(;++ir&&(e=r)}else{for(;++i=r){e=r;break}for(;++ir&&(e=r)}return e},Ks=function(t){for(var n=0,e=t.length-1,r=t[0],i=new Array(e<0?0:e);n=f.length)return null!=r?r(n):null!=e?n.sort(e):n;for(var c,s,l,h=-1,p=n.length,d=f[i++],v=o(),_=u();++hf.length)return t;var i,o=l[e-1];return null!=r&&e>=f.length?i=t.entries():(i=[],t.each(function(t,r){i.push({key:r,values:n(t,e)})})),null!=o?i.sort(function(t,n){return o(t.key,n.key)}):i}var e,r,i,f=[],l=[];return i={object:function(n){return t(n,0,u,a)},map:function(n){return t(n,0,c,s)},entries:function(e){return n(t(e,0,c,s),0)},key:function(t){return f.push(t),i},sortKeys:function(t){return l[f.length-1]=t,i},sortValues:function(t){return e=t,i},rollup:function(t){return r=t,i}}},sf=o.prototype;f.prototype=l.prototype={constructor:f,has:sf.has,add:function(t){return t+="",this[af+t]=t,this},remove:sf.remove,clear:sf.clear,values:sf.keys,size:sf.size,empty:sf.empty,each:sf.each};var ff=function(t){var n=[];for(var e in t)n.push(e);return n},lf=function(t){var n=[];for(var e in t)n.push(t[e]);return n},hf=function(t){var n=[];for(var e in t)n.push({key:e,value:t[e]});return n},pf=function(t,n){return t=null==t?0:+t,n=null==n?1:+n,1===arguments.length?(n=t,t=0):n-=t,function(){return Math.random()*n+t}},df=function(t,n){var e,r;return t=null==t?0:+t,n=null==n?1:+n,function(){var i;if(null!=e)i=e,e=null;else do e=2*Math.random()-1,i=2*Math.random()-1,r=e*e+i*i;while(!r||r>1);return t+n*i*Math.sqrt(-2*Math.log(r)/r)}},vf=function(){var t=df.apply(this,arguments);return function(){return Math.exp(t())}},_f=function(t){return function(){for(var n=0,e=0;e=0;--n)s.push(t[r[o[n]][2]]);for(n=+a;na!=s>a&&u<(c-e)*(a-r)/(s-r)+e&&(f=!f),c=e,s=r;return f},Gf=function(t){for(var n,e,r=-1,i=t.length,o=t[i-1],u=o[0],a=o[1],c=0;++rKf)if(Math.abs(f*a-c*s)>Kf&&i){var h=e-o,p=r-u,d=a*a+c*c,v=h*h+p*p,_=Math.sqrt(d),y=Math.sqrt(l),g=i*Math.tan((Jf-Math.acos((d+l-v)/(2*_*y)))/2),m=g/y,x=g/_;Math.abs(m-1)>Kf&&(this._+="L"+(t+m*s)+","+(n+m*f)),this._+="A"+i+","+i+",0,0,"+ +(f*h>s*p)+","+(this._x1=t+x*a)+","+(this._y1=n+x*c)}else this._+="L"+(this._x1=t)+","+(this._y1=n);else;},arc:function(t,n,e,r,i,o){t=+t,n=+n,e=+e;var u=e*Math.cos(r),a=e*Math.sin(r),c=t+u,s=n+a,f=1^o,l=o?r-i:i-r;if(e<0)throw new Error("negative radius: "+e);null===this._x1?this._+="M"+c+","+s:(Math.abs(this._x1-c)>Kf||Math.abs(this._y1-s)>Kf)&&(this._+="L"+c+","+s),e&&(l>tl?this._+="A"+e+","+e+",0,1,"+f+","+(t-u)+","+(n-a)+"A"+e+","+e+",0,1,"+f+","+(this._x1=c)+","+(this._y1=s):(l<0&&(l=l%Qf+Qf),this._+="A"+e+","+e+",0,"+ +(l>=Jf)+","+f+","+(this._x1=t+e*Math.cos(i))+","+(this._y1=n+e*Math.sin(i))))},rect:function(t,n,e,r){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+n)+"h"+ +e+"v"+ +r+"h"+-e+"Z"},toString:function(){return this._}};var nl=function(t){var n=+this._x.call(null,t),e=+this._y.call(null,t);return L(this.cover(n,e),n,e,t)},el=function(t,n){if(isNaN(t=+t)||isNaN(n=+n))return this;var e=this._x0,r=this._y0,i=this._x1,o=this._y1;if(isNaN(e))i=(e=Math.floor(t))+1,o=(r=Math.floor(n))+1;else{if(!(e>t||t>i||r>n||n>o))return this;var u,a,c=i-e,s=this._root;switch(a=(n<(r+o)/2)<<1|t<(e+i)/2){case 0:do u=new Array(4),u[a]=s,s=u;while(c*=2,i=e+c,o=r+c,t>i||n>o);break;case 1:do u=new Array(4),u[a]=s,s=u;while(c*=2,e=i-c,o=r+c,e>t||n>o);break;case 2:do u=new Array(4),u[a]=s,s=u;while(c*=2,i=e+c,r=o-c,t>i||r>n);break;case 3:do u=new Array(4),u[a]=s,s=u;while(c*=2,e=i-c,r=o-c,e>t||r>n)}this._root&&this._root.length&&(this._root=s)}return this._x0=e,this._y0=r,this._x1=i,this._y1=o,this},rl=function(){var t=[];return this.visit(function(n){if(!n.length)do t.push(n.data);while(n=n.next)}),t},il=function(t){return arguments.length?this.cover(+t[0][0],+t[0][1]).cover(+t[1][0],+t[1][1]):isNaN(this._x0)?void 0:[[this._x0,this._y0],[this._x1,this._y1]]},ol=function(t,n,e,r,i){this.node=t,this.x0=n,this.y0=e,this.x1=r,this.y1=i},ul=function(t,n,e){var r,i,o,u,a,c,s,f=this._x0,l=this._y0,h=this._x1,p=this._y1,d=[],v=this._root;for(v&&d.push(new ol(v,f,l,h,p)),null==e?e=1/0:(f=t-e,l=n-e,h=t+e,p=n+e,e*=e);c=d.pop();)if(!(!(v=c.node)||(i=c.x0)>h||(o=c.y0)>p||(u=c.x1)=y)<<1|t>=_)&&(c=d[d.length-1],d[d.length-1]=d[d.length-1-s],d[d.length-1-s]=c)}else{var g=t-+this._x.call(null,v.data),m=n-+this._y.call(null,v.data),x=g*g+m*m;if(x=(a=(d+_)/2))?d=a:_=a,(f=u>=(c=(v+y)/2))?v=c:y=c,n=p,!(p=p[l=f<<1|s]))return this;if(!p.length)break;(n[l+1&3]||n[l+2&3]||n[l+3&3])&&(e=n,h=l)}for(;p.data!==t;)if(r=p,!(p=p.next))return this;return(i=p.next)&&delete p.next,r?(i?r.next=i:delete r.next,this):n?(i?n[l]=i:delete n[l],(p=n[0]||n[1]||n[2]||n[3])&&p===(n[3]||n[2]||n[1]||n[0])&&!p.length&&(e?e[h]=p:this._root=p),this):(this._root=i,this)},cl=function(){return this._root},sl=function(){var t=0;return this.visit(function(n){if(!n.length)do++t;while(n=n.next)}),t},fl=function(t){var n,e,r,i,o,u,a=[],c=this._root;for(c&&a.push(new ol(c,this._x0,this._y0,this._x1,this._y1));n=a.pop();)if(!t(c=n.node,r=n.x0,i=n.y0,o=n.x1,u=n.y1)&&c.length){var s=(r+o)/2,f=(i+u)/2;(e=c[3])&&a.push(new ol(e,s,f,o,u)),(e=c[2])&&a.push(new ol(e,r,f,s,u)),(e=c[1])&&a.push(new ol(e,s,i,o,f)),(e=c[0])&&a.push(new ol(e,r,i,s,f))}return this},ll=function(t){var n,e=[],r=[];for(this._root&&e.push(new ol(this._root,this._x0,this._y0,this._x1,this._y1));n=e.pop();){var i=n.node;if(i.length){var o,u=n.x0,a=n.y0,c=n.x1,s=n.y1,f=(u+c)/2,l=(a+s)/2;(o=i[0])&&e.push(new ol(o,u,a,f,l)),(o=i[1])&&e.push(new ol(o,f,a,c,l)),(o=i[2])&&e.push(new ol(o,u,l,f,s)),(o=i[3])&&e.push(new ol(o,f,l,c,s))}r.push(n)}for(;n=r.pop();)t(n.node,n.x0,n.y0,n.x1,n.y1);return this},hl=function(t){return arguments.length?(this._x=t,this):this._x},pl=function(t){return arguments.length?(this._y=t,this):this._y},dl=I.prototype=Y.prototype;dl.copy=function(){var t,n,e=new Y(this._x,this._y,this._x0,this._y0,this._x1,this._y1),r=this._root;if(!r)return e;if(!r.length)return e._root=B(r),e;for(t=[{source:r,target:e._root=new Array(4)}];r=t.pop();)for(var i=0;i<4;++i)(n=r.source[i])&&(n.length?t.push({source:n,target:r.target[i]=new Array(4)}):r.target[i]=B(n));return e},dl.add=nl,dl.addAll=U,dl.cover=el,dl.data=rl,dl.extent=il,dl.find=ul,dl.remove=al,dl.removeAll=D,dl.root=cl,dl.size=sl,dl.visit=fl,dl.visitAfter=ll,dl.x=hl,dl.y=pl;var vl=[].slice,_l={};j.prototype=Z.prototype={constructor:j,defer:function(t){if("function"!=typeof t||this._call)throw new Error;if(null!=this._error)return this;var n=vl.call(arguments,1);return n.push(t),++this._waiting,this._tasks.push(n),H(this),this},abort:function(){return null==this._error&&W(this,new Error("abort")),this},await:function(t){if("function"!=typeof t||this._call)throw new Error;return this._call=function(n,e){t.apply(null,[n].concat(e))},$(this),this},awaitAll:function(t){if("function"!=typeof t||this._call)throw new Error;return this._call=t,$(this),this}};var yl=function(t){return function(){ +return t}},gl=1e-12,ml=Math.PI,xl=ml/2,bl=2*ml,wl=function(){function t(){var t,s,f=+n.apply(this,arguments),l=+e.apply(this,arguments),h=o.apply(this,arguments)-xl,p=u.apply(this,arguments)-xl,d=Math.abs(p-h),v=p>h;if(c||(c=t=q()),lgl)if(d>bl-gl)c.moveTo(l*Math.cos(h),l*Math.sin(h)),c.arc(0,0,l,h,p,!v),f>gl&&(c.moveTo(f*Math.cos(p),f*Math.sin(p)),c.arc(0,0,f,p,h,v));else{var _,y,g=h,m=p,x=h,b=p,w=d,M=d,T=a.apply(this,arguments)/2,N=T>gl&&(i?+i.apply(this,arguments):Math.sqrt(f*f+l*l)),k=Math.min(Math.abs(l-f)/2,+r.apply(this,arguments)),S=k,E=k;if(N>gl){var A=nt(N/f*Math.sin(T)),C=nt(N/l*Math.sin(T));(w-=2*A)>gl?(A*=v?1:-1,x+=A,b-=A):(w=0,x=b=(h+p)/2),(M-=2*C)>gl?(C*=v?1:-1,g+=C,m-=C):(M=0,g=m=(h+p)/2)}var z=l*Math.cos(g),P=l*Math.sin(g),R=f*Math.cos(b),L=f*Math.sin(b);if(k>gl){var U=l*Math.cos(m),D=l*Math.sin(m),O=f*Math.cos(x),F=f*Math.sin(x);if(dgl?et(z,P,O,F,U,D,R,L):[R,L],Y=z-I[0],B=P-I[1],j=U-I[0],H=D-I[1],X=1/Math.sin(Math.acos((Y*j+B*H)/(Math.sqrt(Y*Y+B*B)*Math.sqrt(j*j+H*H)))/2),V=Math.sqrt(I[0]*I[0]+I[1]*I[1]);S=Math.min(k,(f-V)/(X-1)),E=Math.min(k,(l-V)/(X+1))}}M>gl?E>gl?(_=rt(O,F,z,P,l,E,v),y=rt(U,D,R,L,l,E,v),c.moveTo(_.cx+_.x01,_.cy+_.y01),Egl&&w>gl?S>gl?(_=rt(R,L,U,D,f,-S,v),y=rt(z,P,O,F,f,-S,v),c.lineTo(_.cx+_.x01,_.cy+_.y01),S=f;--l)s.point(_[l],y[l]);s.lineEnd(),s.areaEnd()}v&&(_[n]=+e(h,n,t),y[n]=+i(h,n,t),s.point(r?+r(h,n,t):_[n],o?+o(h,n,t):y[n]))}if(p)return s=null,p+""||null}function n(){return Tl().defined(u).curve(c).context(a)}var e=ot,r=null,i=yl(0),o=ut,u=yl(!0),a=null,c=Ml,s=null;return t.x=function(n){return arguments.length?(e="function"==typeof n?n:yl(+n),r=null,t):e},t.x0=function(n){return arguments.length?(e="function"==typeof n?n:yl(+n),t):e},t.x1=function(n){return arguments.length?(r=null==n?null:"function"==typeof n?n:yl(+n),t):r},t.y=function(n){return arguments.length?(i="function"==typeof n?n:yl(+n),o=null,t):i},t.y0=function(n){return arguments.length?(i="function"==typeof n?n:yl(+n),t):i},t.y1=function(n){return arguments.length?(o=null==n?null:"function"==typeof n?n:yl(+n),t):o},t.lineX0=t.lineY0=function(){return n().x(e).y(i)},t.lineY1=function(){return n().x(e).y(o)},t.lineX1=function(){return n().x(r).y(i)},t.defined=function(n){return arguments.length?(u="function"==typeof n?n:yl(!!n),t):u},t.curve=function(n){return arguments.length?(c=n,null!=a&&(s=c(a)),t):c},t.context=function(n){return arguments.length?(null==n?a=s=null:s=c(a=n),t):a},t},kl=function(t,n){return nt?1:n>=t?0:NaN},Sl=function(t){return t},El=function(){function t(t){var a,c,s,f,l,h=t.length,p=0,d=new Array(h),v=new Array(h),_=+i.apply(this,arguments),y=Math.min(bl,Math.max(-bl,o.apply(this,arguments)-_)),g=Math.min(Math.abs(y)/h,u.apply(this,arguments)),m=g*(y<0?-1:1);for(a=0;a0&&(p+=l);for(null!=e?d.sort(function(t,n){return e(v[t],v[n])}):null!=r&&d.sort(function(n,e){return r(t[n],t[e])}),a=0,s=p?(y-h*m)/p:0;a0?l*s:0)+m,v[c]={data:t[c],index:a,value:l,startAngle:_,endAngle:f,padAngle:g};return v}var n=Sl,e=kl,r=null,i=yl(0),o=yl(bl),u=yl(0);return t.value=function(e){return arguments.length?(n="function"==typeof e?e:yl(+e),t):n},t.sortValues=function(n){return arguments.length?(e=n,r=null,t):e},t.sort=function(n){return arguments.length?(r=n,e=null,t):r},t.startAngle=function(n){return arguments.length?(i="function"==typeof n?n:yl(+n),t):i},t.endAngle=function(n){return arguments.length?(o="function"==typeof n?n:yl(+n),t):o},t.padAngle=function(n){return arguments.length?(u="function"==typeof n?n:yl(+n),t):u},t},Al=ct(Ml);at.prototype={areaStart:function(){this._curve.areaStart()},areaEnd:function(){this._curve.areaEnd()},lineStart:function(){this._curve.lineStart()},lineEnd:function(){this._curve.lineEnd()},point:function(t,n){this._curve.point(n*Math.sin(t),n*-Math.cos(t))}};var Cl=function(){return st(Tl().curve(Al))},zl=function(){var t=Nl().curve(Al),n=t.curve,e=t.lineX0,r=t.lineX1,i=t.lineY0,o=t.lineY1;return t.angle=t.x,delete t.x,t.startAngle=t.x0,delete t.x0,t.endAngle=t.x1,delete t.x1,t.radius=t.y,delete t.y,t.innerRadius=t.y0,delete t.y0,t.outerRadius=t.y1,delete t.y1,t.lineStartAngle=function(){return st(e())},delete t.lineX0,t.lineEndAngle=function(){return st(r())},delete t.lineX1,t.lineInnerRadius=function(){return st(i())},delete t.lineY0,t.lineOuterRadius=function(){return st(o())},delete t.lineY1,t.curve=function(t){return arguments.length?n(ct(t)):n()._curve},t},Pl={draw:function(t,n){var e=Math.sqrt(n/ml);t.moveTo(e,0),t.arc(0,0,e,0,bl)}},Rl={draw:function(t,n){var e=Math.sqrt(n/5)/2;t.moveTo(-3*e,-e),t.lineTo(-e,-e),t.lineTo(-e,-3*e),t.lineTo(e,-3*e),t.lineTo(e,-e),t.lineTo(3*e,-e),t.lineTo(3*e,e),t.lineTo(e,e),t.lineTo(e,3*e),t.lineTo(-e,3*e),t.lineTo(-e,e),t.lineTo(-3*e,e),t.closePath()}},ql=Math.sqrt(1/3),Ll=2*ql,Ul={draw:function(t,n){var e=Math.sqrt(n/Ll),r=e*ql;t.moveTo(0,-e),t.lineTo(r,0),t.lineTo(0,e),t.lineTo(-r,0),t.closePath()}},Dl=.8908130915292852,Ol=Math.sin(ml/10)/Math.sin(7*ml/10),Fl=Math.sin(bl/10)*Ol,Il=-Math.cos(bl/10)*Ol,Yl={draw:function(t,n){var e=Math.sqrt(n*Dl),r=Fl*e,i=Il*e;t.moveTo(0,-e),t.lineTo(r,i);for(var o=1;o<5;++o){var u=bl*o/5,a=Math.cos(u),c=Math.sin(u);t.lineTo(c*e,-a*e),t.lineTo(a*r-c*i,c*r+a*i)}t.closePath()}},Bl={draw:function(t,n){var e=Math.sqrt(n),r=-e/2;t.rect(r,r,e,e)}},jl=Math.sqrt(3),Hl={draw:function(t,n){var e=-Math.sqrt(n/(3*jl));t.moveTo(0,2*e),t.lineTo(-jl*e,-e),t.lineTo(jl*e,-e),t.closePath()}},Xl=-.5,Vl=Math.sqrt(3)/2,Wl=1/Math.sqrt(12),$l=3*(Wl/2+1),Zl={draw:function(t,n){var e=Math.sqrt(n/$l),r=e/2,i=e*Wl,o=r,u=e*Wl+e,a=-o,c=u;t.moveTo(r,i),t.lineTo(o,u),t.lineTo(a,c),t.lineTo(Xl*r-Vl*i,Vl*r+Xl*i),t.lineTo(Xl*o-Vl*u,Vl*o+Xl*u),t.lineTo(Xl*a-Vl*c,Vl*a+Xl*c),t.lineTo(Xl*r+Vl*i,Xl*i-Vl*r),t.lineTo(Xl*o+Vl*u,Xl*u-Vl*o),t.lineTo(Xl*a+Vl*c,Xl*c-Vl*a),t.closePath()}},Gl=[Pl,Rl,Ul,Bl,Yl,Hl,Zl],Jl=function(){function t(){var t;if(r||(r=t=q()),n.apply(this,arguments).draw(r,+e.apply(this,arguments)),t)return r=null,t+""||null}var n=yl(Pl),e=yl(64),r=null;return t.type=function(e){return arguments.length?(n="function"==typeof e?e:yl(e),t):n},t.size=function(n){return arguments.length?(e="function"==typeof n?n:yl(+n),t):e},t.context=function(n){return arguments.length?(r=null==n?null:n,t):r},t},Ql=function(){};lt.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:ft(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:ft(this,t,n)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=n}};var Kl=function(t){return new lt(t)};ht.prototype={areaStart:Ql,areaEnd:Ql,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x2,this._y2),this._context.closePath();break;case 2:this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break;case 3:this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4)}},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._x2=t,this._y2=n;break;case 1:this._point=2,this._x3=t,this._y3=n;break;case 2:this._point=3,this._x4=t,this._y4=n,this._context.moveTo((this._x0+4*this._x1+t)/6,(this._y0+4*this._y1+n)/6);break;default:ft(this,t,n)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=n}};var th=function(t){return new ht(t)};pt.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var e=(this._x0+4*this._x1+t)/6,r=(this._y0+4*this._y1+n)/6;this._line?this._context.lineTo(e,r):this._context.moveTo(e,r);break;case 3:this._point=4;default:ft(this,t,n)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=n}};var nh=function(t){return new pt(t)};dt.prototype={lineStart:function(){this._x=[],this._y=[],this._basis.lineStart()},lineEnd:function(){var t=this._x,n=this._y,e=t.length-1;if(e>0)for(var r,i=t[0],o=n[0],u=t[e]-i,a=n[e]-o,c=-1;++c<=e;)r=c/e,this._basis.point(this._beta*t[c]+(1-this._beta)*(i+r*u),this._beta*n[c]+(1-this._beta)*(o+r*a));this._x=this._y=null,this._basis.lineEnd()},point:function(t,n){this._x.push(+t),this._y.push(+n)}};var eh=function t(n){function e(t){return 1===n?new lt(t):new dt(t,n)}return e.beta=function(n){return t(+n)},e}(.85);_t.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:vt(this,this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2,this._x1=t,this._y1=n;break;case 2:this._point=3;default:vt(this,t,n)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var rh=function t(n){function e(t){return new _t(t,n)}return e.tension=function(n){return t(+n)},e}(0);yt.prototype={areaStart:Ql,areaEnd:Ql,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._x3=t,this._y3=n;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=n);break;case 2:this._point=3,this._x5=t,this._y5=n;break;default:vt(this,t,n)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var ih=function t(n){function e(t){return new yt(t,n)}return e.tension=function(n){return t(+n)},e}(0);gt.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:vt(this,t,n)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var oh=function t(n){function e(t){return new gt(t,n)}return e.tension=function(n){return t(+n)},e}(0);xt.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:this.point(this._x2,this._y2)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){if(t=+t,n=+n,this._point){var e=this._x2-t,r=this._y2-n;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(e*e+r*r,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;break;case 2:this._point=3;default:mt(this,t,n)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var uh=function t(n){function e(t){return n?new xt(t,n):new _t(t,0)}return e.alpha=function(n){return t(+n)},e}(.5);bt.prototype={areaStart:Ql,areaEnd:Ql,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,n){if(t=+t,n=+n,this._point){var e=this._x2-t,r=this._y2-n;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(e*e+r*r,this._alpha))}switch(this._point){case 0:this._point=1,this._x3=t,this._y3=n;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=n);break;case 2:this._point=3,this._x5=t,this._y5=n;break;default:mt(this,t,n)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var ah=function t(n){function e(t){return n?new bt(t,n):new yt(t,0)}return e.alpha=function(n){return t(+n)},e}(.5);wt.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){if(t=+t,n=+n,this._point){var e=this._x2-t,r=this._y2-n;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(e*e+r*r,this._alpha))}switch(this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:mt(this,t,n)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var ch=function t(n){function e(t){return n?new wt(t,n):new gt(t,0)}return e.alpha=function(n){return t(+n)},e}(.5);Mt.prototype={areaStart:Ql,areaEnd:Ql,lineStart:function(){this._point=0},lineEnd:function(){this._point&&this._context.closePath()},point:function(t,n){t=+t,n=+n,this._point?this._context.lineTo(t,n):(this._point=1,this._context.moveTo(t,n))}};var sh=function(t){return new Mt(t)};Et.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:St(this,this._t0,kt(this,this._t0))}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){var e=NaN;if(t=+t,n=+n,t!==this._x1||n!==this._y1){switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;break;case 2:this._point=3,St(this,kt(this,e=Nt(this,t,n)),e);break;default:St(this,this._t0,e=Nt(this,t,n))}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=n,this._t0=e}}},(At.prototype=Object.create(Et.prototype)).point=function(t,n){Et.prototype.point.call(this,n,t)},Ct.prototype={moveTo:function(t,n){this._context.moveTo(n,t)},closePath:function(){this._context.closePath()},lineTo:function(t,n){this._context.lineTo(n,t)},bezierCurveTo:function(t,n,e,r,i,o){this._context.bezierCurveTo(n,t,r,e,o,i)}},Rt.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=[],this._y=[]},lineEnd:function(){var t=this._x,n=this._y,e=t.length;if(e)if(this._line?this._context.lineTo(t[0],n[0]):this._context.moveTo(t[0],n[0]),2===e)this._context.lineTo(t[1],n[1]);else for(var r=qt(t),i=qt(n),o=0,u=1;u=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;default:if(this._t<=0)this._context.lineTo(this._x,n),this._context.lineTo(t,n);else{var e=this._x*(1-this._t)+t*this._t;this._context.lineTo(e,this._y),this._context.lineTo(e,n)}}this._x=t,this._y=n}};var lh=function(t){return new Lt(t,.5)},hh=Array.prototype.slice,ph=function(t,n){if((r=t.length)>1)for(var e,r,i=1,o=t[n[0]],u=o.length;i=0;)e[n]=n;return e},vh=function(){function t(t){var o,u,a=n.apply(this,arguments),c=t.length,s=a.length,f=new Array(s);for(o=0;o0){for(var e,r,i,o=0,u=t[0].length;o0){for(var e,r=0,i=t[n[0]],o=i.length;r0&&(r=(e=t[n[0]]).length)>0){for(var e,r,i,o=0,u=1;u=240?t-240:t+120,i,r),Qt(t,i,r),Qt(t<120?t+240:t-120,i,r),this.opacity)},displayable:function(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1}}));var Oh=Math.PI/180,Fh=180/Math.PI,Ih=18,Yh=.95047,Bh=1,jh=1.08883,Hh=4/29,Xh=6/29,Vh=3*Xh*Xh,Wh=Xh*Xh*Xh;Mh(nn,tn,It(Yt,{brighter:function(t){return new nn(this.l+Ih*(null==t?1:t),this.a,this.b,this.opacity)},darker:function(t){return new nn(this.l-Ih*(null==t?1:t),this.a,this.b,this.opacity)},rgb:function(){var t=(this.l+16)/116,n=isNaN(this.a)?t:t+this.a/500,e=isNaN(this.b)?t:t-this.b/200;return t=Bh*rn(t),n=Yh*rn(n),e=jh*rn(e),new Wt(on(3.2404542*n-1.5371385*t-.4985314*e),on(-.969266*n+1.8760108*t+.041556*e),on(.0556434*n-.2040259*t+1.0572252*e),this.opacity)}})),Mh(sn,cn,It(Yt,{brighter:function(t){return new sn(this.h,this.c,this.l+Ih*(null==t?1:t),this.opacity)},darker:function(t){return new sn(this.h,this.c,this.l-Ih*(null==t?1:t),this.opacity)},rgb:function(){return Kt(this).rgb()}}));var $h=-.14861,Zh=1.78277,Gh=-.29227,Jh=-.90649,Qh=1.97294,Kh=Qh*Jh,tp=Qh*Zh,np=Zh*Gh-Jh*$h;Mh(hn,ln,It(Yt,{brighter:function(t){return t=null==t?Nh:Math.pow(Nh,t),new hn(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=null==t?Th:Math.pow(Th,t),new hn(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=isNaN(this.h)?0:(this.h+120)*Oh,n=+this.l,e=isNaN(this.s)?0:this.s*n*(1-n),r=Math.cos(t),i=Math.sin(t);return new Wt(255*(n+e*($h*r+Zh*i)),255*(n+e*(Gh*r+Jh*i)),255*(n+e*(Qh*r)),this.opacity)}}));var ep,rp,ip,op,up=function(t){var n=t.length-1;return function(e){var r=e<=0?e=0:e>=1?(e=1,n-1):Math.floor(e*n),i=t[r],o=t[r+1],u=r>0?t[r-1]:2*i-o,a=ro&&(i=n.slice(o,i),a[u]?a[u]+=i:a[++u]=i),(e=e[0])===(r=r[0])?a[u]?a[u]+=r:a[++u]=r:(a[++u]=null,c.push({i:u,x:dp(e,r)})),o=yp.lastIndex;return o0)for(var e,r,i=new Array(e),o=0;o=s)return u;if(i)return i=!1,o;var n,e=f;if(34===t.charCodeAt(e)){for(var r=e;r++=200&&e<300||304===e){if(u)try{n=u.call(r,f)}catch(t){return void c.call("error",r,t)}else n=f;c.call("load",r,n)}else c.call("error",r,t)}var r,i,u,a,c=Pn("beforesend","progress","load","error"),s=o(),f=new XMLHttpRequest,l=null,h=null,p=0;if("undefined"==typeof XDomainRequest||"withCredentials"in f||!/^(http(s)?:)?\/\//.test(t)||(f=new XDomainRequest),"onload"in f?f.onload=f.onerror=f.ontimeout=e:f.onreadystatechange=function(t){f.readyState>3&&e(t)},f.onprogress=function(t){c.call("progress",r,t)},r={header:function(t,n){return t=(t+"").toLowerCase(),arguments.length<2?s.get(t):(null==n?s.remove(t):s.set(t,n+""),r)},mimeType:function(t){return arguments.length?(i=null==t?null:t+"",r):i},responseType:function(t){return arguments.length?(a=t,r):a},timeout:function(t){return arguments.length?(p=+t,r):p},user:function(t){return arguments.length<1?l:(l=null==t?null:t+"",r)},password:function(t){return arguments.length<1?h:(h=null==t?null:t+"",r)},response:function(t){return u=t,r},get:function(t,n){return r.send("GET",t,n)},post:function(t,n){return r.send("POST",t,n)},send:function(n,e,o){return f.open(n,t,!0,l,h),null==i||s.has("accept")||s.set("accept",i+",*/*"),f.setRequestHeader&&s.each(function(t,n){f.setRequestHeader(n,t)}),null!=i&&f.overrideMimeType&&f.overrideMimeType(i),null!=a&&(f.responseType=a),p>0&&(f.timeout=p),null==o&&"function"==typeof e&&(o=e,e=null),null!=o&&1===o.length&&(o=In(o)),null!=o&&r.on("error",o).on("load",function(t){o(null,t)}),c.call("beforesend",r,f),f.send(null==e?null:e),r},abort:function(){return f.abort(),r},on:function(){var t=c.on.apply(c,arguments);return t===c?r:t}},null!=n){if("function"!=typeof n)throw new Error("invalid callback: "+n);return r.get(n)}return r},Kp=function(t,n){return function(e,r){var i=Qp(e).mimeType(t).response(n);if(null!=r){if("function"!=typeof r)throw new Error("invalid callback: "+r);return i.get(r)}return i}},td=Kp("text/html",function(t){return document.createRange().createContextualFragment(t.responseText)}),nd=Kp("application/json",function(t){return JSON.parse(t.responseText)}),ed=Kp("text/plain",function(t){return t.responseText}),rd=Kp("application/xml",function(t){var n=t.responseXML;if(!n)throw new Error("parse error");return n}),id=function(t,n){return function(e,r,i){arguments.length<3&&(i=r,r=null);var o=Qp(e).mimeType(t);return o.row=function(t){return arguments.length?o.response(Bn(n,r=t)):r},o.row(r),i?o.get(i):o}},od=id("text/csv",jp),ud=id("text/tab-separated-values",$p),ad=0,cd=0,sd=0,fd=1e3,ld=0,hd=0,pd=0,dd="object"==typeof performance&&performance.now?performance:Date,vd="function"==typeof requestAnimationFrame?requestAnimationFrame:function(t){setTimeout(t,17)};Xn.prototype=Vn.prototype={constructor:Xn,restart:function(t,n,e){if("function"!=typeof t)throw new TypeError("callback is not a function");e=(null==e?jn():+e)+(null==n?0:+n),this._next||Ip===this||(Ip?Ip._next=this:Fp=this,Ip=this),this._call=t,this._time=e,Jn()},stop:function(){this._call&&(this._call=null,this._time=1/0,Jn())}};var _d=function(t,n,e){var r=new Xn;return n=null==n?0:+n,r.restart(function(e){r.stop(),t(e+n)},n,e),r},yd=function(t,n,e){var r=new Xn,i=n;return null==n?(r.restart(t,n,e),r):(n=+n,e=null==e?jn():+e,r.restart(function o(u){u+=i,r.restart(o,i+=n,e),t(u)},n,e),r)},gd=new Date,md=new Date,xd=Qn(function(){},function(t,n){t.setTime(+t+n)},function(t,n){return n-t});xd.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?Qn(function(n){n.setTime(Math.floor(n/t)*t)},function(n,e){n.setTime(+n+e*t)},function(n,e){return(e-n)/t}):xd:null};var bd=xd.range,wd=1e3,Md=6e4,Td=36e5,Nd=864e5,kd=6048e5,Sd=Qn(function(t){t.setTime(Math.floor(t/wd)*wd)},function(t,n){t.setTime(+t+n*wd)},function(t,n){return(n-t)/wd},function(t){return t.getUTCSeconds()}),Ed=Sd.range,Ad=Qn(function(t){t.setTime(Math.floor(t/Md)*Md)},function(t,n){t.setTime(+t+n*Md)},function(t,n){return(n-t)/Md},function(t){return t.getMinutes()}),Cd=Ad.range,zd=Qn(function(t){var n=t.getTimezoneOffset()*Md%Td;n<0&&(n+=Td),t.setTime(Math.floor((+t-n)/Td)*Td+n)},function(t,n){t.setTime(+t+n*Td)},function(t,n){return(n-t)/Td},function(t){return t.getHours()}),Pd=zd.range,Rd=Qn(function(t){t.setHours(0,0,0,0)},function(t,n){t.setDate(t.getDate()+n)},function(t,n){return(n-t-(n.getTimezoneOffset()-t.getTimezoneOffset())*Md)/Nd},function(t){return t.getDate()-1}),qd=Rd.range,Ld=Kn(0),Ud=Kn(1),Dd=Kn(2),Od=Kn(3),Fd=Kn(4),Id=Kn(5),Yd=Kn(6),Bd=Ld.range,jd=Ud.range,Hd=Dd.range,Xd=Od.range,Vd=Fd.range,Wd=Id.range,$d=Yd.range,Zd=Qn(function(t){t.setDate(1),t.setHours(0,0,0,0)},function(t,n){t.setMonth(t.getMonth()+n)},function(t,n){return n.getMonth()-t.getMonth()+12*(n.getFullYear()-t.getFullYear())},function(t){return t.getMonth()}),Gd=Zd.range,Jd=Qn(function(t){t.setMonth(0,1),t.setHours(0,0,0,0)},function(t,n){t.setFullYear(t.getFullYear()+n)},function(t,n){return n.getFullYear()-t.getFullYear()},function(t){return t.getFullYear()});Jd.every=function(t){return isFinite(t=Math.floor(t))&&t>0?Qn(function(n){n.setFullYear(Math.floor(n.getFullYear()/t)*t),n.setMonth(0,1),n.setHours(0,0,0,0)},function(n,e){n.setFullYear(n.getFullYear()+e*t)}):null};var Qd=Jd.range,Kd=Qn(function(t){t.setUTCSeconds(0,0)},function(t,n){t.setTime(+t+n*Md)},function(t,n){return(n-t)/Md},function(t){return t.getUTCMinutes()}),tv=Kd.range,nv=Qn(function(t){t.setUTCMinutes(0,0,0)},function(t,n){t.setTime(+t+n*Td)},function(t,n){return(n-t)/Td},function(t){return t.getUTCHours()}),ev=nv.range,rv=Qn(function(t){t.setUTCHours(0,0,0,0)},function(t,n){t.setUTCDate(t.getUTCDate()+n)},function(t,n){return(n-t)/Nd},function(t){return t.getUTCDate()-1}),iv=rv.range,ov=te(0),uv=te(1),av=te(2),cv=te(3),sv=te(4),fv=te(5),lv=te(6),hv=ov.range,pv=uv.range,dv=av.range,vv=cv.range,_v=sv.range,yv=fv.range,gv=lv.range,mv=Qn(function(t){t.setUTCDate(1),t.setUTCHours(0,0,0,0)},function(t,n){t.setUTCMonth(t.getUTCMonth()+n)},function(t,n){return n.getUTCMonth()-t.getUTCMonth()+12*(n.getUTCFullYear()-t.getUTCFullYear())},function(t){return t.getUTCMonth()}),xv=mv.range,bv=Qn(function(t){t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},function(t,n){t.setUTCFullYear(t.getUTCFullYear()+n)},function(t,n){return n.getUTCFullYear()-t.getUTCFullYear()},function(t){return t.getUTCFullYear()});bv.every=function(t){return isFinite(t=Math.floor(t))&&t>0?Qn(function(n){n.setUTCFullYear(Math.floor(n.getUTCFullYear()/t)*t),n.setUTCMonth(0,1),n.setUTCHours(0,0,0,0)},function(n,e){n.setUTCFullYear(n.getUTCFullYear()+e*t)}):null};var wv,Mv=bv.range,Tv=function(t,n){if((e=(t=n?t.toExponential(n-1):t.toExponential()).indexOf("e"))<0)return null;var e,r=t.slice(0,e);return[r.length>1?r[0]+r.slice(2):r,+t.slice(e+1)]},Nv=function(t){return t=Tv(Math.abs(t)),t?t[1]:NaN},kv=function(t,n){return function(e,r){for(var i=e.length,o=[],u=0,a=t[0],c=0;i>0&&a>0&&(c+a+1>r&&(a=Math.max(1,r-c)),o.push(e.substring(i-=a,i+a)),!((c+=a+1)>r));)a=t[u=(u+1)%t.length];return o.reverse().join(n)}},Sv=function(t,n){t=t.toPrecision(n);t:for(var e,r=t.length,i=1,o=-1;i0&&(o=0)}return o>0?t.slice(0,o)+t.slice(e+1):t},Ev=function(t,n){var e=Tv(t,n);if(!e)return t+"";var r=e[0],i=e[1],o=i-(wv=3*Math.max(-8,Math.min(8,Math.floor(i/3))))+1,u=r.length;return o===u?r:o>u?r+new Array(o-u+1).join("0"):o>0?r.slice(0,o)+"."+r.slice(o):"0."+new Array(1-o).join("0")+Tv(t,Math.max(0,n+o-1))[0]},Av=function(t,n){var e=Tv(t,n);if(!e)return t+"";var r=e[0],i=e[1];return i<0?"0."+new Array(-i).join("0")+r:r.length>i+1?r.slice(0,i+1)+"."+r.slice(i+1):r+new Array(i-r.length+2).join("0")},Cv={"":Sv,"%":function(t,n){return(100*t).toFixed(n)},b:function(t){return Math.round(t).toString(2)},c:function(t){return t+""},d:function(t){return Math.round(t).toString(10)},e:function(t,n){return t.toExponential(n)},f:function(t,n){return t.toFixed(n)},g:function(t,n){return t.toPrecision(n)},o:function(t){return Math.round(t).toString(8)},p:function(t,n){return Av(100*t,n)},r:Av,s:Ev,X:function(t){return Math.round(t).toString(16).toUpperCase()},x:function(t){return Math.round(t).toString(16)}},zv=/^(?:(.)?([<>=^]))?([+\-\( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?([a-z%])?$/i,Pv=function(t){return new ne(t)};ne.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(null==this.width?"":Math.max(1,0|this.width))+(this.comma?",":"")+(null==this.precision?"":"."+Math.max(0,0|this.precision))+this.type};var Rv,qv=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"],Lv=function(t){function n(t){function n(t){var n,i,c,g=d,m=v;if("c"===p)m=_(t)+m,t="";else{t=+t;var x=(t<0||1/t<0)&&(t*=-1,!0);if(t=_(t,h),x)for(n=-1,i=t.length,x=!1;++nc||c>57){m=(46===c?o+t.slice(n+1):t.slice(n))+m,t=t.slice(0,n);break}}l&&!s&&(t=r(t,1/0));var b=g.length+t.length+m.length,w=b>1)+g+t+m+w.slice(b)}return w+g+t+m}t=Pv(t);var e=t.fill,u=t.align,a=t.sign,c=t.symbol,s=t.zero,f=t.width,l=t.comma,h=t.precision,p=t.type,d="$"===c?i[0]:"#"===c&&/[boxX]/.test(p)?"0"+p.toLowerCase():"",v="$"===c?i[1]:/[%p]/.test(p)?"%":"",_=Cv[p],y=!p||/[defgprs%]/.test(p);return h=null==h?p?6:12:/[gprs]/.test(p)?Math.max(1,Math.min(21,h)):Math.max(0,Math.min(20,h)),n.toString=function(){return t+""},n}function e(t,e){var r=n((t=Pv(t),t.type="f",t)),i=3*Math.max(-8,Math.min(8,Math.floor(Nv(e)/3))),o=Math.pow(10,-i),u=qv[8+i/3];return function(t){return r(o*t)+u}}var r=t.grouping&&t.thousands?kv(t.grouping,t.thousands):ee,i=t.currency,o=t.decimal;return{format:n,formatPrefix:e}};re({decimal:".",thousands:",",grouping:[3],currency:["$",""]});var Uv,Dv=function(t){return Math.max(0,-Nv(Math.abs(t)))},Ov=function(t,n){return Math.max(0,3*Math.max(-8,Math.min(8,Math.floor(Nv(n)/3)))-Nv(Math.abs(t)))},Fv=function(t,n){return t=Math.abs(t),n=Math.abs(n)-t,Math.max(0,Nv(n)-Nv(t))+1},Iv={"-":"",_:" ",0:"0"},Yv=/^\s*\d+/,Bv=/^%/,jv=/[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g;nr({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});var Hv="%Y-%m-%dT%H:%M:%S.%LZ",Xv=Date.prototype.toISOString?er:t.utcFormat(Hv),Vv=+new Date("2000-01-01T00:00:00.000Z")?rr:t.utcParse(Hv),Wv=Array.prototype,$v=Wv.map,Zv=Wv.slice,Gv={name:"implicit"},Jv=function(t){return function(){return t}},Qv=function(t){return+t},Kv=[0,1],t_=function(n,r,i){var o,u=n[0],a=n[n.length-1],c=e(u,a,null==r?10:r);switch(i=Pv(null==i?",f":i),i.type){case"s":var s=Math.max(Math.abs(u),Math.abs(a));return null!=i.precision||isNaN(o=Ov(c,s))||(i.precision=o),t.formatPrefix(i,s);case"":case"e":case"g":case"p":case"r":null!=i.precision||isNaN(o=Fv(c,Math.max(Math.abs(u),Math.abs(a))))||(i.precision=o-("e"===i.type));break;case"f":case"%":null!=i.precision||isNaN(o=Dv(c))||(i.precision=o-2*("%"===i.type))}return t.format(i)},n_=function(t,n){t=t.slice();var e,r=0,i=t.length-1,o=t[r],u=t[i];return u1)&&(t-=Math.floor(t));var n=Math.abs(t-.5);return m_.h=360*t-100,m_.s=1.5-1.5*n,m_.l=.8-.9*n,m_+""},b_=qr(l_("44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725")),w_=qr(l_("00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf")),M_=qr(l_("00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4")),T_=qr(l_("0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d43039e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a45901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a29511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a62098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d04d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5de66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3afba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffdb42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc827fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1f525f0f724f0f921")),N_="http://www.w3.org/1999/xhtml",k_={svg:"http://www.w3.org/2000/svg",xhtml:N_,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"},S_=function(t){var n=t+="",e=n.indexOf(":");return e>=0&&"xmlns"!==(n=t.slice(0,e))&&(t=t.slice(e+1)),k_.hasOwnProperty(n)?{space:k_[n],local:t}:t},E_=function(t){var n=S_(t);return(n.local?Dr:Ur)(n)},A_=0;Fr.prototype=Or.prototype={constructor:Fr,get:function(t){for(var n=this._;!(n in t);)if(!(t=t.parentNode))return;return t[n]},set:function(t,n){return t[this._]=n},remove:function(t){return this._ in t&&delete t[this._]},toString:function(){return this._}};var C_=function(t){return function(){return this.matches(t)}};if("undefined"!=typeof document){var z_=document.documentElement;if(!z_.matches){var P_=z_.webkitMatchesSelector||z_.msMatchesSelector||z_.mozMatchesSelector||z_.oMatchesSelector;C_=function(t){return function(){return P_.call(this,t)}}}}var R_=C_,q_={};if(t.event=null,"undefined"!=typeof document){var L_=document.documentElement;"onmouseenter"in L_||(q_={mouseenter:"mouseover",mouseleave:"mouseout"})}var U_=function(t,n,e){var r,i,o=Br(t+""),u=o.length;{if(!(arguments.length<2)){for(a=n?Hr:jr,null==e&&(e=!1),r=0;r=b&&(b=x+1);!(m=_[b])&&++b=0;)(r=i[o])&&(u&&u!==r.nextSibling&&u.parentNode.insertBefore(r,u),u=r);return this},K_=function(t){function n(n,e){return n&&e?t(n.__data__,e.__data__):!n-!e}t||(t=Jr);for(var e=this._groups,r=e.length,i=new Array(r),o=0;o1?this.each((null==n?ii:"function"==typeof n?ui:oi)(t,n,null==e?"":e)):ay(r=this.node()).getComputedStyle(r,null).getPropertyValue(t)},sy=function(t,n){return arguments.length>1?this.each((null==n?ai:"function"==typeof n?si:ci)(t,n)):this.node()[t]};hi.prototype={add:function(t){var n=this._names.indexOf(t);n<0&&(this._names.push(t),this._node.setAttribute("class",this._names.join(" ")))},remove:function(t){var n=this._names.indexOf(t);n>=0&&(this._names.splice(n,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}};var fy=function(t,n){var e=fi(t+"");if(arguments.length<2){for(var r=li(this.node()),i=-1,o=e.length;++iAy&&e.stateEy&&e.name===n)return new so([[t]],ug,n,+r)}return null},cg=Array.prototype.slice,sg=function(t){return t},fg=1,lg=2,hg=3,pg=4,dg=1e-6,vg=function(){function t(t){var o,u=0;t.eachAfter(function(t){var e=t.children;e?(t.x=To(e),t.y=ko(e)):(t.x=o?u+=n(t,o):0,t.y=0,o=t)});var a=Eo(t),c=Ao(t),s=a.x-n(a,c)/2,f=c.x+n(c,a)/2;return t.eachAfter(i?function(n){n.x=(n.x-t.x)*e,n.y=(t.y-n.y)*r}:function(n){n.x=(n.x-s)/(f-s)*e,n.y=(1-(t.y?n.y/t.y:1))*r})}var n=Mo,e=1,r=1,i=!1;return t.separation=function(e){return arguments.length?(n=e,t):n},t.size=function(n){return arguments.length?(i=!1,e=+n[0],r=+n[1],t):i?null:[e,r]},t.nodeSize=function(n){return arguments.length?(i=!0,e=+n[0],r=+n[1],t):i?[e,r]:null},t},_g=function(t){var n,e,r,i,o=this,u=[o];do for(n=u.reverse(),u=[];o=n.pop();)if(t(o),e=o.children)for(r=0,i=e.length;r=0;--e)i.push(n[e]);return this},gg=function(t){for(var n,e,r,i=this,o=[i],u=[];i=o.pop();)if(u.push(i),n=i.children)for(e=0,r=n.length;e=0;)e+=r[i].value;n.value=e})},xg=function(t){return this.eachBefore(function(n){n.children&&n.children.sort(t)})},bg=function(t){for(var n=this,e=Co(n,t),r=[n];n!==e;)n=n.parent,r.push(n);for(var i=r.length;t!==e;)r.splice(i,0,t),t=t.parent;return r},wg=function(){for(var t=this,n=[t];t=t.parent;)n.push(t);return n},Mg=function(){var t=[];return this.each(function(n){t.push(n)}),t},Tg=function(){var t=[];return this.eachBefore(function(n){n.children||t.push(n)}),t},Ng=function(){var t=this,n=[];return t.each(function(e){e!==t&&n.push({source:e.parent,target:e})}),n};Uo.prototype=zo.prototype={constructor:Uo,each:_g,eachAfter:gg,eachBefore:yg,sum:mg,sort:xg,path:bg,ancestors:wg,descendants:Mg,leaves:Tg,links:Ng,copy:Po};var kg=function(t){for(var n,e=(t=t.slice()).length,r=null,i=r;e;){var o=new Do(t[e-1]);i=i?i.next=o:r=o,t[n]=t[--e]}return{head:r,tail:i}},Sg=function(t){return Fo(kg(t),[])},Eg=function(t){return Wo(t),t},Ag=function(t){return function(){return t}},Cg=function(){function t(t){return t.x=e/2,t.y=r/2,n?t.eachBefore(Qo(n)).eachAfter(Ko(i,.5)).eachBefore(tu(1)):t.eachBefore(Qo(Jo)).eachAfter(Ko(Go,1)).eachAfter(Ko(i,t.r/Math.min(e,r))).eachBefore(tu(Math.min(e,r)/(2*t.r))),t}var n=null,e=1,r=1,i=Go;return t.radius=function(e){return arguments.length?(n=$o(e),t):n},t.size=function(n){return arguments.length?(e=+n[0],r=+n[1],t):[e,r]},t.padding=function(n){return arguments.length?(i="function"==typeof n?n:Ag(+n),t):i},t},zg=function(t){t.x0=Math.round(t.x0),t.y0=Math.round(t.y0),t.x1=Math.round(t.x1),t.y1=Math.round(t.y1)},Pg=function(t,n,e,r,i){for(var o,u=t.children,a=-1,c=u.length,s=t.value&&(r-n)/t.value;++a0)throw new Error("cycle");return o}var n=nu,e=eu;return t.id=function(e){return arguments.length?(n=Zo(e),t):n},t.parentId=function(n){return arguments.length?(e=Zo(n),t):e},t};su.prototype=Object.create(Uo.prototype);var Og=function(){function t(t){var r=fu(t);if(r.eachAfter(n),r.parent.m=-r.z,r.eachBefore(e),c)t.eachBefore(i);else{var s=t,f=t,l=t;t.eachBefore(function(t){t.xf.x&&(f=t),t.depth>l.depth&&(l=t)});var h=s===f?1:o(s,f)/2,p=h-s.x,d=u/(f.x+h+p),v=a/(l.depth||1);t.eachBefore(function(t){t.x=(t.x+p)*d,t.y=t.depth*v})}return t}function n(t){var n=t.children,e=t.parent.children,i=t.i?e[t.i-1]:null;if(n){au(t);var u=(n[0].z+n[n.length-1].z)/2;i?(t.z=i.z+o(t._,i._),t.m=t.z-u):t.z=u}else i&&(t.z=i.z+o(t._,i._));t.parent.A=r(t,i,t.parent.A||e[0])}function e(t){t._.x=t.z+t.parent.m,t.m+=t.parent.m}function r(t,n,e){if(n){for(var r,i=t,u=t,a=n,c=i.parent.children[0],s=i.m,f=u.m,l=a.m,h=c.m;a=ou(a),i=iu(i),a&&i;)c=iu(c),u=ou(u),u.a=t,r=a.z+l-i.z-s+o(a._,i._),r>0&&(uu(cu(a,t,e),t,r),s+=r,f+=r),l+=a.m,s+=i.m,h+=c.m,f+=u.m;a&&!ou(u)&&(u.t=a,u.m+=l-f),i&&!iu(c)&&(c.t=i,c.m+=s-h,e=t)}return e}function i(t){t.x*=u,t.y=t.depth*a}var o=ru,u=1,a=1,c=null;return t.separation=function(n){return arguments.length?(o=n,t):o},t.size=function(n){return arguments.length?(c=!1,u=+n[0],a=+n[1],t):c?null:[u,a]},t.nodeSize=function(n){return arguments.length?(c=!0,u=+n[0],a=+n[1],t):c?[u,a]:null},t},Fg=function(t,n,e,r,i){for(var o,u=t.children,a=-1,c=u.length,s=t.value&&(i-e)/t.value;++a1?n:1)},e}(Ig),Bg=function(){function t(t){return t.x0=t.y0=0,t.x1=i,t.y1=o,t.eachBefore(n),u=[0],r&&t.eachBefore(zg),t}function n(t){var n=u[t.depth],r=t.x0+n,i=t.y0+n,o=t.x1-n,h=t.y1-n;o=n-1){var s=c[t];return s.x0=r,s.y0=i,s.x1=u,s.y1=a,void 0}for(var l=f[t],h=e/2+l,p=t+1,d=n-1;p>>1;f[v]u-r){var g=(i*y+a*_)/e;o(t,p,_,r,i,u,g),o(p,n,y,r,g,u,a)}else{var m=(r*y+u*_)/e;o(t,p,_,r,i,m,a),o(p,n,y,m,i,u,a)}}var u,a,c=t.children,s=c.length,f=new Array(s+1);for(f[0]=a=u=0;u1?n:1)},e}(Ig),Vg=function(t,n){function e(){var e,i,o=r.length,u=0,a=0;for(e=0;es+p||rf+p||ic.index){var d=s-o.x-o.vx,v=f-o.y-o.vy,_=d*d+v*v;_t.r&&(t.r=t[n].r)}function r(){if(i){var n,e,r=i.length;for(o=new Array(r),n=0;n1?(null==n?h.remove(t):h.set(t,i(n)),u):h.get(t)},find:function(n,e,r){var i,o,u,a,c,s=0,f=t.length;for(null==r?r=1/0:r*=r,s=0;s1?(d.on(t,n),u):d.on(t)}}},tm=function(){function t(t){var n,a=i.length,c=I(i,_u,yu).visitAfter(e);for(u=t,n=0;n=f)){(t.data!==o||t.next)&&(0===i&&(i=$g(),p+=i*i),0===c&&(c=$g(),p+=c*c),pe?(e+r)/2:Math.min(0,e)||Math.max(0,r),o>i?(i+o)/2:Math.min(0,i)||Math.max(0,o))}function o(t){return[(+t[0][0]+ +t[1][0])/2,(+t[0][1]+ +t[1][1])/2]}function u(t,n,e){t.on("start.zoom",function(){a(this,arguments).start()}).on("interrupt.zoom end.zoom",function(){a(this,arguments).end()}).tween("zoom",function(){var t=this,r=arguments,i=a(t,r),u=g.apply(t,r),c=e||o(u),s=Math.max(u[1][0]-u[0][0],u[1][1]-u[0][1]),f=t.__zoom,l="function"==typeof n?n.apply(t,r):n,h=k(f.invert(c).concat(s/f.k),l.invert(c).concat(s/l.k));return function(t){if(1===t)t=l;else{var n=h(t),e=s/n[2];t=new ra(e,c[0]-n[0]*e,c[1]-n[1]*e)}i.zoom(null,t)}})}function a(t,n){for(var e,r=0,i=S.length;r0?by(this).transition().duration(N).call(u,f,a):by(this).call(n.transform,f)}}function h(){if(y.apply(this,arguments)){var n,e,r,i=a(this,arguments),o=t.event.changedTouches,u=o.length;for(oa(),n=0;n0?1:t<0?-1:0},Xx=Math.sqrt,Vx=Math.tan,Wx={Feature:function(t,n){za(t.geometry,n); +},FeatureCollection:function(t,n){for(var e=t.features,r=-1,i=e.length;++rSx?rx=90:tb<-Sx&&(nx=-90),sx[0]=tx,sx[1]=ex}},eb=function(t){var n,e,r,i,o,u,a;if(rx=ex=-(tx=nx=1/0),cx=[],Zx(t,nb),e=cx.length){for(cx.sort(Ka),n=1,r=cx[0],o=[r];nQa(r[0],r[1])&&(r[1]=i[1]),Qa(i[0],r[1])>Qa(r[0],r[1])&&(r[0]=i[0])):o.push(r=i);for(u=-(1/0),e=o.length-1,n=0,r=o[e];n<=e;r=i,++n)i=o[n],(a=Qa(r[1],i[0]))>u&&(u=a,tx=i[0],ex=r[1])}return cx=sx=null,tx===1/0||nx===1/0?[[NaN,NaN],[NaN,NaN]]:[[tx,nx],[ex,rx]]},rb={sphere:Ca,point:nc,lineStart:rc,lineEnd:uc,polygonStart:function(){rb.lineStart=ac,rb.lineEnd=cc},polygonEnd:function(){rb.lineStart=rc,rb.lineEnd=uc}},ib=function(t){fx=lx=hx=px=dx=vx=_x=yx=gx=mx=xx=0,Zx(t,rb);var n=gx,e=mx,r=xx,i=n*n+e*e+r*r;return i2?t[2]*qx:0),n.invert=function(n){return n=t.invert(n[0]*qx,n[1]*qx),n[0]*=Rx,n[1]*=Rx,n},n},mb=function(){function t(t,n){e.push(t=r(t,n)),t[0]*=Rx,t[1]*=Rx}function n(){var t=i.apply(this,arguments),n=o.apply(this,arguments)*qx,c=u.apply(this,arguments)*qx;return e=[],r=hc(-t[0]*qx,-t[1]*qx,0).invert,_c(a,n,c,1),t={type:"Polygon",coordinates:[e]},e=r=null,t}var e,r,i=ob([0,0]),o=ob(90),u=ob(6),a={point:t};return n.center=function(t){return arguments.length?(i="function"==typeof t?t:ob([+t[0],+t[1]]),n):i},n.radius=function(t){return arguments.length?(o="function"==typeof t?t:ob(+t),n):o},n.precision=function(t){return arguments.length?(u="function"==typeof t?t:ob(+t),n):u},n},xb=function(){var t,n=[];return{point:function(n,e){t.push([n,e])},lineStart:function(){n.push(t=[])},lineEnd:Ca,rejoin:function(){n.length>1&&n.push(n.pop().concat(n.shift()))},result:function(){var e=n;return n=[],t=null,e}}},bb=function(t,n,e,r,i,o){var u,a=t[0],c=t[1],s=n[0],f=n[1],l=0,h=1,p=s-a,d=f-c;if(u=e-a,p||!(u>0)){if(u/=p,p<0){if(u0){if(u>h)return;u>l&&(l=u)}if(u=i-a,p||!(u<0)){if(u/=p,p<0){if(u>h)return;u>l&&(l=u)}else if(p>0){if(u0)){if(u/=d,d<0){if(u0){if(u>h)return;u>l&&(l=u)}if(u=o-c,d||!(u<0)){if(u/=d,d<0){if(u>h)return;u>l&&(l=u)}else if(d>0){if(u0&&(t[0]=a+l*p,t[1]=c+l*d),h<1&&(n[0]=a+h*p,n[1]=c+h*d),!0}}}}},wb=function(t,n){return Lx(t[0]-n[0])=0;--o)i.point((f=s[o])[0],f[1]);else r(h.x,h.p.x,-1,i);h=h.p}h=h.o,s=h.z,p=!p}while(!h.v);i.lineEnd()}}},Tb=1e9,Nb=-Tb,kb=function(){var t,n,e,r=0,i=0,o=960,u=500;return e={stream:function(e){return t&&n===e?t:t=xc(r,i,o,u)(n=e)},extent:function(a){return arguments.length?(r=+a[0][0],i=+a[0][1],o=+a[1][0],u=+a[1][1],t=n=null,e):[[r,i],[o,u]]}}},Sb=$m(),Eb={sphere:Ca,point:Ca,lineStart:bc,lineEnd:Ca,polygonStart:Ca,polygonEnd:Ca},Ab=function(t){return Sb.reset(),Zx(t,Eb),+Sb},Cb=[null,null],zb={type:"LineString",coordinates:Cb},Pb=function(t,n){return Cb[0]=t,Cb[1]=n,Ab(zb)},Rb=function(t,n){var e=t[0]*qx,r=t[1]*qx,i=n[0]*qx,o=n[1]*qx,u=Ox(r),a=jx(r),c=Ox(o),s=jx(o),f=u*Ox(e),l=u*jx(e),h=c*Ox(i),p=c*jx(i),d=2*Ea(Xx(Aa(o-r)+u*c*Aa(i-e))),v=jx(d),_=d?function(t){var n=jx(t*=d)/v,e=jx(d-t)/v,r=e*f+n*h,i=e*l+n*p,o=e*a+n*s;return[Dx(i,r)*Rx,Dx(o,Xx(r*r+i*i))*Rx]}:function(){return[e*Rx,r*Rx]};return _.distance=d,_},qb=function(t){return t},Lb=$m(),Ub=$m(),Db={point:Ca,lineStart:Ca,lineEnd:Ca,polygonStart:function(){Db.lineStart=Ac,Db.lineEnd=Pc},polygonEnd:function(){Db.lineStart=Db.lineEnd=Db.point=Ca,Lb.add(Lx(Ub)),Ub.reset()},result:function(){var t=Lb/2;return Lb.reset(),t}},Ob=1/0,Fb=Ob,Ib=-Ob,Yb=Ib,Bb={point:Rc,lineStart:Ca,lineEnd:Ca,polygonStart:Ca,polygonEnd:Ca,result:function(){var t=[[Ob,Fb],[Ib,Yb]];return Ib=Yb=-(Fb=Ob=1/0),t}},jb=0,Hb=0,Xb=0,Vb=0,Wb=0,$b=0,Zb=0,Gb=0,Jb=0,Qb={point:qc,lineStart:Lc,lineEnd:Oc,polygonStart:function(){Qb.lineStart=Fc,Qb.lineEnd=Ic},polygonEnd:function(){Qb.point=qc,Qb.lineStart=Lc,Qb.lineEnd=Oc},result:function(){var t=Jb?[Zb/Jb,Gb/Jb]:$b?[Vb/$b,Wb/$b]:Xb?[jb/Xb,Hb/Xb]:[NaN,NaN];return jb=Hb=Xb=Vb=Wb=$b=Zb=Gb=Jb=0,t}};jc.prototype={_radius:4.5,pointRadius:function(t){return this._radius=t,this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){0===this._line&&this._context.closePath(),this._point=NaN},point:function(t,n){switch(this._point){case 0:this._context.moveTo(t,n),this._point=1;break;case 1:this._context.lineTo(t,n);break;default:this._context.moveTo(t+this._radius,n),this._context.arc(t,n,this._radius,0,Px)}},result:Ca},Hc.prototype={_circle:Xc(4.5),pointRadius:function(t){return this._circle=Xc(t),this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){0===this._line&&this._string.push("Z"),this._point=NaN},point:function(t,n){switch(this._point){case 0:this._string.push("M",t,",",n),this._point=1;break;case 1:this._string.push("L",t,",",n);break;default:this._string.push("M",t,",",n,this._circle)}},result:function(){if(this._string.length){var t=this._string.join("");return this._string=[],t}}};var Kb=function(t,n){function e(t){return t&&("function"==typeof o&&i.pointRadius(+o.apply(this,arguments)),Zx(t,r(i))),i.result()}var r,i,o=4.5;return e.area=function(t){return Zx(t,r(Db)),Db.result()},e.bounds=function(t){return Zx(t,r(Bb)),Bb.result()},e.centroid=function(t){return Zx(t,r(Qb)),Qb.result()},e.projection=function(n){return arguments.length?(r=null==n?(t=null,qb):(t=n).stream,e):t},e.context=function(t){return arguments.length?(i=null==t?(n=null,new Hc):new jc(n=t),"function"!=typeof o&&i.pointRadius(o),e):n},e.pointRadius=function(t){return arguments.length?(o="function"==typeof t?t:(i.pointRadius(+t),+t),e):o},e.projection(t).context(n)},tw=$m(),nw=function(t,n){var e=n[0],r=n[1],i=[jx(e),-Ox(e),0],o=0,u=0;tw.reset();for(var a=0,c=t.length;a=0?1:-1,T=M*w,N=T>Ax,k=d*x;if(tw.add(Dx(k*M*jx(T),v*b+k*Ox(T))),o+=N?w+M*Px:w,N^h>=e^g>=e){var S=Ya(Fa(l),Fa(y));Ha(S);var E=Ya(i,S);Ha(E);var A=(N^w>=0?-1:1)*Ea(E[2]);(r>A||r===A&&(S[0]||S[1]))&&(u+=N^w>=0?1:-1)}}return(o<-Sx||o0){for(x||(o.polygonStart(),x=!0),o.lineStart(),t=0;t1&&2&i&&u.push(u.pop().concat(u.shift())),d.push(u.filter(Vc))}var p,d,v,_=n(o),y=i.invert(r[0],r[1]),g=xb(),m=n(g),x=!1,b={point:u,lineStart:c,lineEnd:s,polygonStart:function(){b.point=f,b.lineStart=l,b.lineEnd=h,d=[],p=[]},polygonEnd:function(){b.point=u,b.lineStart=c,b.lineEnd=s,d=Js(d);var t=nw(p,y);d.length?(x||(o.polygonStart(),x=!0),Mb(d,Wc,t,e,o)):t&&(x||(o.polygonStart(),x=!0),o.lineStart(),e(null,null,1,o),o.lineEnd()),x&&(o.polygonEnd(),x=!1),d=p=null},sphere:function(){o.polygonStart(),o.lineStart(),e(null,null,1,o),o.lineEnd(),o.polygonEnd()}};return b}},rw=ew(function(){return!0},$c,Gc,[-Ax,-Cx]),iw=function(t,n){function e(e,r,i,o){_c(o,t,n,i,e,r)}function r(t,n){return Ox(t)*Ox(n)>a}function i(t){var n,e,i,a,f;return{lineStart:function(){a=i=!1,f=1},point:function(l,h){var p,d=[l,h],v=r(l,h),_=c?v?0:u(l,h):v?u(l+(l<0?Ax:-Ax),h):0;if(!n&&(a=i=v)&&t.lineStart(),v!==i&&(p=o(n,d),(wb(n,p)||wb(d,p))&&(d[0]+=Sx,d[1]+=Sx,v=r(d[0],d[1]))),v!==i)f=0,v?(t.lineStart(),p=o(d,n),t.point(p[0],p[1])):(p=o(n,d),t.point(p[0],p[1]),t.lineEnd()),n=p;else if(s&&n&&c^v){var y;_&e||!(y=o(d,n,!0))||(f=0,c?(t.lineStart(),t.point(y[0][0],y[0][1]),t.point(y[1][0],y[1][1]),t.lineEnd()):(t.point(y[1][0],y[1][1]),t.lineEnd(),t.lineStart(),t.point(y[0][0],y[0][1])))}!v||n&&wb(n,d)||t.point(d[0],d[1]),n=d,i=v,e=_},lineEnd:function(){i&&t.lineEnd(),n=null},clean:function(){return f|(a&&i)<<1}}}function o(t,n,e){var r=Fa(t),i=Fa(n),o=[1,0,0],u=Ya(r,i),c=Ia(u,u),s=u[0],f=c-s*s;if(!f)return!e&&t;var l=a*c/f,h=-a*s/f,p=Ya(o,u),d=ja(o,l),v=ja(u,h);Ba(d,v);var _=p,y=Ia(d,_),g=Ia(_,_),m=y*y-g*(Ia(d,d)-1);if(!(m<0)){var x=Xx(m),b=ja(_,(-y-x)/g);if(Ba(b,d),b=Oa(b),!e)return b;var w,M=t[0],T=n[0],N=t[1],k=n[1];T0^b[1]<(Lx(b[0]-M)Ax^(M<=b[0]&&b[0]<=T)){var C=ja(_,(-y+x)/g);return Ba(C,d),[b,Oa(C)]}}}function u(n,e){var r=c?t:Ax-t,i=0;return n<-r?i|=1:n>r&&(i|=2),e<-r?i|=4:e>r&&(i|=8),i}var a=Ox(t),c=a>0,s=Lx(a)>Sx;return ew(r,i,e,c?[0,-t]:[-Ax,t-Ax])},ow=function(t){return{stream:Jc(t)}};Qc.prototype={constructor:Qc,point:function(t,n){this.stream.point(t,n)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}};var uw=16,aw=Ox(30*qx),cw=function(t,n){return+n?es(t,n):ns(t)},sw=Jc({point:function(t,n){this.stream.point(t*qx,n*qx)}}),fw=function(){return os(as).scale(155.424).center([0,33.6442])},lw=function(){return fw().parallels([29.5,45.5]).scale(1070).translate([480,250]).rotate([96,0]).center([-.6,38.7])},hw=function(){function t(t){var n=t[0],e=t[1];return a=null,i.point(n,e),a||(o.point(n,e),a)||(u.point(n,e),a)}function n(){return e=r=null,t}var e,r,i,o,u,a,c=lw(),s=fw().rotate([154,0]).center([-2,58.5]).parallels([55,65]),f=fw().rotate([157,0]).center([-3,19.9]).parallels([8,18]),l={point:function(t,n){a=[t,n]}};return t.invert=function(t){var n=c.scale(),e=c.translate(),r=(t[0]-e[0])/n,i=(t[1]-e[1])/n;return(i>=.12&&i<.234&&r>=-.425&&r<-.214?s:i>=.166&&i<.234&&r>=-.214&&r<-.115?f:c).invert(t)},t.stream=function(t){return e&&r===t?e:e=cs([c.stream(r=t),s.stream(t),f.stream(t)])},t.precision=function(t){return arguments.length?(c.precision(t),s.precision(t),f.precision(t),n()):c.precision()},t.scale=function(n){return arguments.length?(c.scale(n),s.scale(.35*n),f.scale(n),t.translate(c.translate())):c.scale()},t.translate=function(t){if(!arguments.length)return c.translate();var e=c.scale(),r=+t[0],a=+t[1];return i=c.translate(t).clipExtent([[r-.455*e,a-.238*e],[r+.455*e,a+.238*e]]).stream(l),o=s.translate([r-.307*e,a+.201*e]).clipExtent([[r-.425*e+Sx,a+.12*e+Sx],[r-.214*e-Sx,a+.234*e-Sx]]).stream(l),u=f.translate([r-.205*e,a+.212*e]).clipExtent([[r-.214*e+Sx,a+.166*e+Sx],[r-.115*e-Sx,a+.234*e-Sx]]).stream(l),n()},t.fitExtent=function(n,e){return Kc(t,n,e)},t.fitSize=function(n,e){return ts(t,n,e)},t.scale(1070)},pw=ss(function(t){return Xx(2/(1+t))});pw.invert=fs(function(t){return 2*Ea(t/2)});var dw=function(){return rs(pw).scale(124.75).clipAngle(179.999)},vw=ss(function(t){return(t=Sa(t))&&t/jx(t)});vw.invert=fs(function(t){return t});var _w=function(){return rs(vw).scale(79.4188).clipAngle(179.999)};ls.invert=function(t,n){return[t,2*Ux(Ix(n))-Cx]};var yw=function(){return hs(ls).scale(961/Px)},gw=function(){return os(ds).scale(109.5).parallels([30,30])};vs.invert=vs;var mw=function(){return rs(vs).scale(152.63)},xw=function(){return os(_s).scale(131.154).center([0,13.9389])};ys.invert=fs(Ux);var bw=function(){return rs(ys).scale(144.049).clipAngle(60)},ww=function(){function t(){return i=o=null,u}var n,e,r,i,o,u,a=1,c=0,s=0,f=1,l=1,h=qb,p=null,d=qb;return u={stream:function(t){return i&&o===t?i:i=h(d(o=t))},clipExtent:function(i){return arguments.length?(d=null==i?(p=n=e=r=null,qb):xc(p=+i[0][0],n=+i[0][1],e=+i[1][0],r=+i[1][1]),t()):null==p?null:[[p,n],[e,r]]},scale:function(n){return arguments.length?(h=gs((a=+n)*f,a*l,c,s),t()):a},translate:function(n){return arguments.length?(h=gs(a*f,a*l,c=+n[0],s=+n[1]),t()):[c,s]},reflectX:function(n){return arguments.length?(h=gs(a*(f=n?-1:1),a*l,c,s),t()):f<0},reflectY:function(n){return arguments.length?(h=gs(a*f,a*(l=n?-1:1),c,s),t()):l<0},fitExtent:function(t,n){return Kc(u,t,n)},fitSize:function(t,n){return ts(u,t,n)}}};ms.invert=fs(Ea);var Mw=function(){return rs(ms).scale(249.5).clipAngle(90+Sx)};xs.invert=fs(function(t){return 2*Ux(t)});var Tw=function(){return rs(xs).scale(250).clipAngle(142)};bs.invert=function(t,n){return[-n,2*Ux(Ix(t))-Cx]};var Nw=function(){var t=hs(bs),n=t.center,e=t.rotate;return t.center=function(t){return arguments.length?n([-t[1],t[0]]):(t=n(),[t[1],-t[0]])},t.rotate=function(t){return arguments.length?e([t[0],t[1],t.length>2?t[2]+90:90]):(t=e(),[t[0],t[1],t[2]-90])},e([0,0,90]).scale(159.155)};t.version=ws,t.bisect=ks,t.bisectRight=ks,t.bisectLeft=Ss,t.ascending=Ms,t.bisector=Ts,t.descending=Es,t.deviation=zs,t.extent=Ps,t.histogram=Hs,t.thresholdFreedmanDiaconis=Vs,t.thresholdScott=Ws,t.thresholdSturges=js,t.max=$s,t.mean=Zs,t.median=Gs,t.merge=Js,t.min=Qs,t.pairs=Ks,t.permute=tf,t.quantile=Xs,t.range=Os,t.scan=nf,t.shuffle=ef,t.sum=rf,t.ticks=Bs,t.tickStep=e,t.transpose=of,t.variance=Cs,t.zip=uf,t.entries=hf,t.keys=ff,t.values=lf,t.map=o,t.set=l,t.nest=cf,t.randomUniform=pf,t.randomNormal=df,t.randomLogNormal=vf,t.randomBates=yf,t.randomIrwinHall=_f,t.randomExponential=gf,t.easeLinear=h,t.easeQuad=v,t.easeQuadIn=p,t.easeQuadOut=d,t.easeQuadInOut=v,t.easeCubic=g,t.easeCubicIn=_,t.easeCubicOut=y,t.easeCubicInOut=g,t.easePoly=wf,t.easePolyIn=xf,t.easePolyOut=bf,t.easePolyInOut=wf,t.easeSin=b,t.easeSinIn=m,t.easeSinOut=x,t.easeSinInOut=b,t.easeExp=T,t.easeExpIn=w,t.easeExpOut=M,t.easeExpInOut=T,t.easeCircle=S,t.easeCircleIn=N,t.easeCircleOut=k,t.easeCircleInOut=S,t.easeBounce=A,t.easeBounceIn=E,t.easeBounceOut=A,t.easeBounceInOut=C,t.easeBack=Of,t.easeBackIn=Uf,t.easeBackOut=Df,t.easeBackInOut=Of,t.easeElastic=jf,t.easeElasticIn=Bf,t.easeElasticOut=jf,t.easeElasticInOut=Hf,t.polygonArea=Xf,t.polygonCentroid=Vf,t.polygonHull=$f,t.polygonContains=Zf,t.polygonLength=Gf,t.path=q,t.quadtree=I,t.queue=Z,t.arc=wl,t.area=Nl,t.line=Tl,t.pie=El,t.radialArea=zl,t.radialLine=Cl,t.symbol=Jl,t.symbols=Gl,t.symbolCircle=Pl,t.symbolCross=Rl,t.symbolDiamond=Ul,t.symbolSquare=Bl,t.symbolStar=Yl,t.symbolTriangle=Hl,t.symbolWye=Zl,t.curveBasisClosed=th,t.curveBasisOpen=nh,t.curveBasis=Kl,t.curveBundle=eh,t.curveCardinalClosed=ih,t.curveCardinalOpen=oh,t.curveCardinal=rh,t.curveCatmullRomClosed=ah,t.curveCatmullRomOpen=ch,t.curveCatmullRom=uh,t.curveLinearClosed=sh,t.curveLinear=Ml,t.curveMonotoneX=zt,t.curveMonotoneY=Pt,t.curveNatural=fh,t.curveStep=lh,t.curveStepAfter=Dt,t.curveStepBefore=Ut,t.stack=vh,t.stackOffsetExpand=_h,t.stackOffsetNone=ph,t.stackOffsetSilhouette=yh,t.stackOffsetWiggle=gh,t.stackOrderAscending=mh,t.stackOrderDescending=xh,t.stackOrderInsideOut=bh,t.stackOrderNone=dh,t.stackOrderReverse=wh,t.color=Bt,t.rgb=Vt,t.hsl=Gt,t.lab=tn,t.hcl=cn,t.cubehelix=ln,t.interpolate=mp,t.interpolateArray=hp,t.interpolateDate=pp,t.interpolateNumber=dp,t.interpolateObject=vp,t.interpolateRound=xp,t.interpolateString=gp,t.interpolateTransformCss=Tp,t.interpolateTransformSvg=Np,t.interpolateZoom=Cp,t.interpolateRgb=sp,t.interpolateRgbBasis=fp,t.interpolateRgbBasisClosed=lp,t.interpolateHsl=zp,t.interpolateHslLong=Pp,t.interpolateLab=An,t.interpolateHcl=Rp,t.interpolateHclLong=qp,t.interpolateCubehelix=Lp,t.interpolateCubehelixLong=Up,t.interpolateBasis=up,t.interpolateBasisClosed=ap,t.quantize=Dp,t.dispatch=Pn,t.dsvFormat=Yp,t.csvParse=jp,t.csvParseRows=Hp,t.csvFormat=Xp,t.csvFormatRows=Vp,t.tsvParse=$p,t.tsvParseRows=Zp,t.tsvFormat=Gp,t.tsvFormatRows=Jp,t.request=Qp,t.html=td,t.json=nd,t.text=ed,t.xml=rd,t.csv=od,t.tsv=ud,t.now=jn,t.timer=Vn,t.timerFlush=Wn,t.timeout=_d,t.interval=yd,t.timeInterval=Qn,t.timeMillisecond=xd,t.timeMilliseconds=bd,t.timeSecond=Sd,t.timeSeconds=Ed,t.timeMinute=Ad,t.timeMinutes=Cd,t.timeHour=zd,t.timeHours=Pd,t.timeDay=Rd,t.timeDays=qd,t.timeWeek=Ld,t.timeWeeks=Bd,t.timeSunday=Ld,t.timeSundays=Bd,t.timeMonday=Ud,t.timeMondays=jd,t.timeTuesday=Dd,t.timeTuesdays=Hd;t.timeWednesday=Od;t.timeWednesdays=Xd,t.timeThursday=Fd,t.timeThursdays=Vd,t.timeFriday=Id,t.timeFridays=Wd,t.timeSaturday=Yd,t.timeSaturdays=$d,t.timeMonth=Zd,t.timeMonths=Gd,t.timeYear=Jd,t.timeYears=Qd,t.utcMillisecond=xd,t.utcMilliseconds=bd,t.utcSecond=Sd,t.utcSeconds=Ed,t.utcMinute=Kd,t.utcMinutes=tv,t.utcHour=nv,t.utcHours=ev,t.utcDay=rv,t.utcDays=iv,t.utcWeek=ov,t.utcWeeks=hv,t.utcSunday=ov,t.utcSundays=hv,t.utcMonday=uv,t.utcMondays=pv,t.utcTuesday=av,t.utcTuesdays=dv,t.utcWednesday=cv,t.utcWednesdays=vv,t.utcThursday=sv,t.utcThursdays=_v,t.utcFriday=fv,t.utcFridays=yv,t.utcSaturday=lv,t.utcSaturdays=gv,t.utcMonth=mv,t.utcMonths=xv,t.utcYear=bv,t.utcYears=Mv,t.formatLocale=Lv,t.formatDefaultLocale=re,t.formatSpecifier=Pv,t.precisionFixed=Dv,t.precisionPrefix=Ov,t.precisionRound=Fv,t.isoFormat=Xv,t.isoParse=Vv,t.timeFormatLocale=ae,t.timeFormatDefaultLocale=nr,t.scaleBand=or,t.scalePoint=ar,t.scaleIdentity=yr,t.scaleLinear=_r,t.scaleLog=Tr,t.scaleOrdinal=ir,t.scaleImplicit=Gv,t.scalePow=kr,t.scaleSqrt=Sr,t.scaleQuantile=Er,t.scaleQuantize=Ar,t.scaleThreshold=Cr,t.scaleTime=s_,t.scaleUtc=f_,t.schemeCategory10=h_,t.schemeCategory20b=p_,t.schemeCategory20c=d_,t.schemeCategory20=v_,t.scaleSequential=Lr,t.interpolateCubehelixDefault=__,t.interpolateRainbow=x_,t.interpolateWarm=y_,t.interpolateCool=g_,t.interpolateViridis=b_,t.interpolateMagma=w_,t.interpolateInferno=M_,t.interpolatePlasma=T_,t.creator=E_,t.customEvent=Xr,t.local=Or,t.matcher=R_,t.mouse=F_,t.namespace=S_,t.namespaces=k_,t.select=by,t.selectAll=wy,t.selection=Pi,t.selector=I_,t.selectorAll=B_,t.touch=My,t.touches=Ty,t.window=ay,t.active=ag,t.interrupt=Ly,t.transition=fo,t.axisTop=mo,t.axisRight=xo,t.axisBottom=bo,t.axisLeft=wo,t.cluster=vg,t.hierarchy=zo,t.pack=Cg,t.packSiblings=Eg,t.packEnclose=Sg,t.partition=Rg,t.stratify=Dg,t.tree=Og,t.treemap=Bg,t.treemapBinary=jg,t.treemapDice=Pg,t.treemapSlice=Fg,t.treemapSliceDice=Hg,t.treemapSquarify=Yg,t.treemapResquarify=Xg,t.forceCenter=Vg,t.forceCollide=Zg,t.forceLink=Gg,t.forceManyBody=tm,t.forceSimulation=Kg,t.forceX=nm,t.forceY=em,t.drag=um,t.dragDisable=im,t.dragEnable=mu,t.voronoi=ym,t.zoom=bm,t.zoomIdentity=mm,t.zoomTransform=ia,t.brush=Dm,t.brushX=_a,t.brushY=ya,t.brushSelection=va,t.chord=Hm,t.ribbon=Wm,t.geoAlbers=lw,t.geoAlbersUsa=hw,t.geoArea=Kx,t.geoAzimuthalEqualArea=dw,t.geoAzimuthalEqualAreaRaw=pw,t.geoAzimuthalEquidistant=_w,t.geoAzimuthalEquidistantRaw=vw,t.geoBounds=eb,t.geoCentroid=ib,t.geoCircle=mb,t.geoClipExtent=kb,t.geoConicConformal=gw,t.geoConicConformalRaw=ds,t.geoConicEqualArea=fw,t.geoConicEqualAreaRaw=as,t.geoConicEquidistant=xw,t.geoConicEquidistantRaw=_s,t.geoDistance=Pb,t.geoEquirectangular=mw,t.geoEquirectangularRaw=vs,t.geoGnomonic=bw,t.geoGnomonicRaw=ys,t.geoGraticule=Sc,t.geoGraticule10=Ec,t.geoIdentity=ww,t.geoInterpolate=Rb,t.geoLength=Ab,t.geoMercator=yw,t.geoMercatorRaw=ls,t.geoOrthographic=Mw,t.geoOrthographicRaw=ms,t.geoPath=Kb,t.geoProjection=rs,t.geoProjectionMutator=is,t.geoRotation=gb,t.geoStereographic=Tw,t.geoStereographicRaw=xs,t.geoStream=Zx,t.geoTransform=ow,t.geoTransverseMercator=Nw,t.geoTransverseMercatorRaw=bs,Object.defineProperty(t,"__esModule",{value:!0})}); \ No newline at end of file diff --git a/gulpfile.babel.js b/gulpfile.babel.js index 906a247..eaeec2a 100644 --- a/gulpfile.babel.js +++ b/gulpfile.babel.js @@ -11,7 +11,8 @@ import pkg from "./package.json"; const APP_NAME = `EntityBrowser`, SOURCE_DIR = `${ __dirname }/src`, - BUILD_DIR = `${ __dirname }/build`, + BUILD_DIR = `${ __dirname }/docs`, + STATIC_BUILD_DIR = BUILD_DIR, STATIC_DATA_FILE = `${ SOURCE_DIR }/cls/${ APP_NAME }/StaticData.cls`, context = { package: pkg @@ -22,7 +23,7 @@ const "index": `${ SOURCE_DIR }/static/js/index.js` }, output: { - path: `${ BUILD_DIR }/static/js`, + path: `${ STATIC_BUILD_DIR }/js`, filename: `[name].js` }, module: { @@ -70,19 +71,19 @@ gulp.task("cls", ["clean"], () => { }); gulp.task("html", ["clean"], () => { - return gulp.src(SOURCE_DIR + "/static/**/*.html") + return gulp.src(`${ SOURCE_DIR }/static/**/*.html`) .pipe(preprocess({ context: context })) - .pipe(gulp.dest(BUILD_DIR + "/static")); + .pipe(gulp.dest(STATIC_BUILD_DIR)); }); gulp.task("etc", ["clean"], () => { return gulp.src([ - `${ SOURCE_DIR }/static/**/*.*`, - `!${ SOURCE_DIR }/static/js/**/*.*`, - `!${ SOURCE_DIR }/static/scss/**/*.*`, - `!${ SOURCE_DIR }/static/index.html` - ]) - .pipe(gulp.dest(BUILD_DIR + "/static")); + `${ SOURCE_DIR }/static/**/*.*`, + `!${ SOURCE_DIR }/static/js/**/*.*`, + `!${ SOURCE_DIR }/static/scss/**/*.*`, + `!${ SOURCE_DIR }/static/index.html` + ]) + .pipe(gulp.dest(STATIC_BUILD_DIR)); }); gulp.task("js", ["clean"], (done) => { @@ -97,14 +98,14 @@ gulp.task("css", ["clean"], () => { return gulp.src(`${ SOURCE_DIR }/static/scss/index.scss`) .pipe(scss().on("error", scss.logError)) .pipe(cssMin()) - .pipe(gulp.dest(`${ BUILD_DIR }/static/css`)); + .pipe(gulp.dest(`${ STATIC_BUILD_DIR }/css`)); }); /// doing file replacement manually because preprocess sucks. gulp.task("StaticData", ["html", "js", "css", "etc"], () => { - let files = getAllFiles(`${ BUILD_DIR }/static`), + let files = getAllFiles(STATIC_BUILD_DIR), staticData = files.map((fileName, i) => -`/// ${ fileName.replace(`${ BUILD_DIR }/static/`, "") }\r\n\ +`/// ${ fileName.replace(`${ STATIC_BUILD_DIR }/`, "") }\r\n\ XData File${ i } [ MimeType = ${ mime.lookup(fileName) || "text/plain" } ]\r\n\ {\r\n\ ${ base64Encode(fileName).replace(/(.{32765})/g, "$1\r\n") }\r\n\ diff --git a/import.cmd b/import.cmd index dd8e45c..a301db1 100644 --- a/import.cmd +++ b/import.cmd @@ -4,15 +4,15 @@ :: Configurable variables: change them to fit your system :: set CACHE_DIR=C:\Program Files\InterSystems\Ensemble -set NAMESPACE=SAMPLES +set NAMESPACE=DCANALYTICS set USERNAME=_SYSTEM set PASSWORD=SYS :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: @echo off :: Pre-configured variables -set BUILD_DIR=build\cls -set XML_EXPORT_DIR=build +set BUILD_DIR=docs\cls +set XML_EXPORT_DIR=docs set PACKAGE_NAME=EntityBrowser :: Build and import application to Caché @@ -28,6 +28,6 @@ echo s st = $system.Status.GetErrorText($system.OBJ.ExportPackage("%PACKAGE_NAME :: Other utilities that may be useful: :: :: Copy files to CSP folder -::$ set BUILD_STATIC_DIR=build\static +::$ set BUILD_STATIC_DIR=docs\static ::$ set CSP_DIR=C:\Program Files\InterSystems\Ensemble\CSP\samples\EntityBrowser ::$ call xcopy /sy "%~dp0\%BUILD_STATIC_DIR%" "%CSP_DIR%" \ No newline at end of file diff --git a/import.sh b/import.sh index f6612e1..17f51b3 100644 --- a/import.sh +++ b/import.sh @@ -4,8 +4,8 @@ # Caché 2016.2+ IS REQUIRED TO PROCEED # Configurable variables: change them to fit your system # -CACHE_DIR=/InterSystems/Cache -NAMESPACE=SAMPLES +CACHE_DIR="C:\Program Files\InterSystems\Ensemble" +NAMESPACE=DCANALYTICS USERNAME=_SYSTEM PASSWORD=SYS ########################################################## @@ -13,8 +13,8 @@ PASSWORD=SYS set +v # Pre-configured variables DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -BUILD_DIR=build/cls -XML_EXPORT_DIR=build +BUILD_DIR=docs/cls +XML_EXPORT_DIR=docs PACKAGE_NAME=EntityBrowser # Build and import application to Caché diff --git a/package.json b/package.json index 759d740..17a88a9 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "iknow-entity-browser", - "version": "1.1.4", + "version": "1.1.5", "description": "Visualizer for iKnow entities", "main": "gulpfile.babel.js", "scripts": { diff --git a/src/static/js/graph/index.js b/src/static/js/graph/index.js index 1a0a92a..937e852 100644 --- a/src/static/js/graph/index.js +++ b/src/static/js/graph/index.js @@ -100,6 +100,7 @@ function newSimulation () { .force("link", d3.forceLink() .distance(d => 30 + (d.source.radius + d.target.radius) * 2) + .strength(d => 1) .id(d => d.id) ) .force("charge", @@ -145,18 +146,16 @@ function dragended (d) { } function keyDown () { + shiftKey = d3.event.shiftKey || d3.event.metaKey; ctrlKey = d3.event.ctrlKey; - if (d3.event.keyCode == 67) { // the 'c' key - // do stuff - } - if (ctrlKey) { brush.select('.overlay').style('cursor', 'crosshair'); brush.call(brusher); d3.event.preventDefault(); } + } function keyUp () { diff --git a/src/static/js/model/index.js b/src/static/js/model/index.js index 7671895..be273d3 100644 --- a/src/static/js/model/index.js +++ b/src/static/js/model/index.js @@ -83,27 +83,32 @@ function toTree (graph, parent) { */ function preprocess (graph) { - let zeroID = null; + let zeroID = null, + maxSizeCriteria = 1; graph.nodes.forEach(node => { if (!zeroID && node.id === 0) zeroID = node; }); + graph.nodes.forEach(node => { + node.radius = MIN_RADIUS + Math.sqrt(node.entities[0][SIZE_CRITERIA] / 4 || 25); + if (node.entities[0][SIZE_CRITERIA] > maxSizeCriteria) + maxSizeCriteria = node.entities[0][SIZE_CRITERIA]; + }); if (!zeroID) { graph.nodes.unshift(zeroID = { id: 0, label: getOption("seed"), type: "entity", edgeType: "root", + radius: MIN_RADIUS + Math.sqrt((maxSizeCriteria + 1) / 4 || 25), entities: [{ id: -1, value: getOption("seed"), score: 9999, spread: 0, frequency: 9999, - [SIZE_CRITERIA]: 9999 + [SIZE_CRITERIA]: maxSizeCriteria + 1 }] }); } - graph.nodes.forEach(node => - node.radius = MIN_RADIUS + Math.sqrt(node.entities[0][SIZE_CRITERIA] / 4 || 25)); // console.log(`Graph:`, graph); let tree = toTree(graph, zeroID); // console.log(`Tree:`, tree);