diff --git a/dist/mermaid.core.js b/dist/mermaid.core.js index bace22221..3bbb7df46 100644 --- a/dist/mermaid.core.js +++ b/dist/mermaid.core.js @@ -96,165 +96,6 @@ return /******/ (function(modules) { // webpackBootstrap /************************************************************************/ /******/ ({ -<<<<<<< HEAD -======= -/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./src/themes/dark/index.scss": -/*!*****************************************************************************************************************!*\ - !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./src/themes/dark/index.scss ***! - \*****************************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -exports = module.exports = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js")(false); -// Module -exports.push([module.i, "/* Flowchart variables */\n/* Sequence Diagram variables */\n/* Gantt chart variables */\n/* state colors */\n.label {\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family);\n fill: #F9FFFE;\n color: #F9FFFE; }\n\n.label text {\n fill: #F9FFFE; }\n\n.node rect,\n.node circle,\n.node ellipse,\n.node polygon,\n.node path {\n fill: #1f2020;\n stroke: #81B1DB;\n stroke-width: 1px; }\n\n.node .label {\n text-align: center;\n fill: #F9FFFE; }\n\n.node.clickable {\n cursor: pointer; }\n\n.arrowheadPath {\n fill: lightgrey; }\n\n.edgePath .path {\n stroke: lightgrey;\n stroke-width: 1.5px; }\n\n.flowchart-link {\n stroke: lightgrey;\n fill: none; }\n\n.edgeLabel {\n background-color: #e8e8e8;\n text-align: center; }\n .edgeLabel rect {\n opacity: 0.9; }\n .edgeLabel span {\n color: #333; }\n\n.cluster rect {\n fill: #474949;\n stroke: rgba(255, 255, 255, 0.25);\n stroke-width: 1px; }\n\n.cluster text {\n fill: #F9FFFE; }\n\ndiv.mermaidTooltip {\n position: absolute;\n text-align: center;\n max-width: 200px;\n padding: 2px;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family);\n font-size: 12px;\n background: #474949;\n border: 1px solid rgba(255, 255, 255, 0.25);\n border-radius: 2px;\n pointer-events: none;\n z-index: 100; }\n\n.actor {\n stroke: #81B1DB;\n fill: #1f2020; }\n\ntext.actor > tspan {\n fill: lightgrey;\n stroke: none; }\n\n.actor-line {\n stroke: lightgrey; }\n\n.messageLine0 {\n stroke-width: 1.5;\n stroke-dasharray: none;\n stroke: lightgrey; }\n\n.messageLine1 {\n stroke-width: 1.5;\n stroke-dasharray: 2, 2;\n stroke: lightgrey; }\n\n#arrowhead path {\n fill: lightgrey;\n stroke: lightgrey; }\n\n.sequenceNumber {\n fill: black; }\n\n#sequencenumber {\n fill: lightgrey; }\n\n#crosshead path {\n fill: lightgrey;\n stroke: lightgrey; }\n\n.messageText {\n fill: lightgrey;\n stroke: lightgrey; }\n\n.labelBox {\n stroke: #81B1DB;\n fill: #1f2020; }\n\n.labelText, .labelText > tspan {\n fill: lightgrey;\n stroke: none; }\n\n.loopText, .loopText > tspan {\n fill: lightgrey;\n stroke: none; }\n\n.loopLine {\n stroke-width: 2px;\n stroke-dasharray: 2, 2;\n stroke: #81B1DB;\n fill: #81B1DB; }\n\n.note {\n stroke: rgba(255, 255, 255, 0.25);\n fill: #fff5ad; }\n\n.noteText, .noteText > tspan {\n fill: #1f2020;\n stroke: none; }\n\n.activation0 {\n fill: #474949;\n stroke: #81B1DB; }\n\n.activation1 {\n fill: #474949;\n stroke: #81B1DB; }\n\n.activation2 {\n fill: #474949;\n stroke: #81B1DB; }\n\n/** Section styling */\n.mermaid-main-font {\n font-family: \"trebuchet ms\", verdana, arial;\n font-family: var(--mermaid-font-family); }\n\n.section {\n stroke: none;\n opacity: 0.2; }\n\n.section0 {\n fill: rgba(255, 255, 255, 0.3); }\n\n.section2 {\n fill: #EAE8B9; }\n\n.section1,\n.section3 {\n fill: white;\n opacity: 0.2; }\n\n.sectionTitle0 {\n fill: #F9FFFE; }\n\n.sectionTitle1 {\n fill: #F9FFFE; }\n\n.sectionTitle2 {\n fill: #F9FFFE; }\n\n.sectionTitle3 {\n fill: #F9FFFE; }\n\n.sectionTitle {\n text-anchor: start;\n font-size: 11px;\n text-height: 14px;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family); }\n\n/* Grid and axis */\n.grid .tick {\n stroke: lightgrey;\n opacity: 0.8;\n shape-rendering: crispEdges; }\n .grid .tick text {\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family); }\n\n.grid path {\n stroke-width: 0; }\n\n/* Today line */\n.today {\n fill: none;\n stroke: #DB5757;\n stroke-width: 2px; }\n\n/* Task styling */\n/* Default task */\n.task {\n stroke-width: 2; }\n\n.taskText {\n text-anchor: middle;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family); }\n\n.taskText:not([font-size]) {\n font-size: 11px; }\n\n.taskTextOutsideRight {\n fill: #fefefe;\n text-anchor: start;\n font-size: 11px;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family); }\n\n.taskTextOutsideLeft {\n fill: #fefefe;\n text-anchor: end;\n font-size: 11px; }\n\n/* Special case clickable */\n.task.clickable {\n cursor: pointer; }\n\n.taskText.clickable {\n cursor: pointer;\n fill: #003163 !important;\n font-weight: bold; }\n\n.taskTextOutsideLeft.clickable {\n cursor: pointer;\n fill: #003163 !important;\n font-weight: bold; }\n\n.taskTextOutsideRight.clickable {\n cursor: pointer;\n fill: #003163 !important;\n font-weight: bold; }\n\n/* Specific task settings for the sections*/\n.taskText0,\n.taskText1,\n.taskText2,\n.taskText3 {\n fill: #fefefe; }\n\n.task0,\n.task1,\n.task2,\n.task3 {\n fill: #1f2020;\n stroke: rgba(255, 255, 255, 0.5); }\n\n.taskTextOutside0,\n.taskTextOutside2 {\n fill: lightgrey; }\n\n.taskTextOutside1,\n.taskTextOutside3 {\n fill: lightgrey; }\n\n/* Active task */\n.active0,\n.active1,\n.active2,\n.active3 {\n fill: #81B1DB;\n stroke: rgba(255, 255, 255, 0.5); }\n\n.activeText0,\n.activeText1,\n.activeText2,\n.activeText3 {\n fill: #fefefe !important; }\n\n/* Completed task */\n.done0,\n.done1,\n.done2,\n.done3 {\n stroke: grey;\n fill: lightgrey;\n stroke-width: 2; }\n\n.doneText0,\n.doneText1,\n.doneText2,\n.doneText3 {\n fill: #fefefe !important; }\n\n/* Tasks on the critical line */\n.crit0,\n.crit1,\n.crit2,\n.crit3 {\n stroke: #E83737;\n fill: #E83737;\n stroke-width: 2; }\n\n.activeCrit0,\n.activeCrit1,\n.activeCrit2,\n.activeCrit3 {\n stroke: #E83737;\n fill: #81B1DB;\n stroke-width: 2; }\n\n.doneCrit0,\n.doneCrit1,\n.doneCrit2,\n.doneCrit3 {\n stroke: #E83737;\n fill: lightgrey;\n stroke-width: 2;\n cursor: pointer;\n shape-rendering: crispEdges; }\n\n.milestone {\n transform: rotate(45deg) scale(0.8, 0.8); }\n\n.milestoneText {\n font-style: italic; }\n\n.doneCritText0,\n.doneCritText1,\n.doneCritText2,\n.doneCritText3 {\n fill: #fefefe !important; }\n\n.activeCritText0,\n.activeCritText1,\n.activeCritText2,\n.activeCritText3 {\n fill: #fefefe !important; }\n\n.titleText {\n text-anchor: middle;\n font-size: 18px;\n fill: #fefefe;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family); }\n\ng.classGroup text {\n fill: #81B1DB;\n stroke: none;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family);\n font-size: 10px; }\n g.classGroup text .title {\n font-weight: bolder; }\n\ng.clickable {\n cursor: pointer; }\n\ng.classGroup rect {\n fill: #1f2020;\n stroke: #81B1DB; }\n\ng.classGroup line {\n stroke: #81B1DB;\n stroke-width: 1; }\n\n.classLabel .box {\n stroke: none;\n stroke-width: 0;\n fill: #1f2020;\n opacity: 0.5; }\n\n.classLabel .label {\n fill: #81B1DB;\n font-size: 10px; }\n\n.relation {\n stroke: #81B1DB;\n stroke-width: 1;\n fill: none; }\n\n.dashed-line {\n stroke-dasharray: 3; }\n\n#compositionStart {\n fill: #81B1DB;\n stroke: #81B1DB;\n stroke-width: 1; }\n\n#compositionEnd {\n fill: #81B1DB;\n stroke: #81B1DB;\n stroke-width: 1; }\n\n#aggregationStart {\n fill: #1f2020;\n stroke: #81B1DB;\n stroke-width: 1; }\n\n#aggregationEnd {\n fill: #1f2020;\n stroke: #81B1DB;\n stroke-width: 1; }\n\n#dependencyStart {\n fill: #81B1DB;\n stroke: #81B1DB;\n stroke-width: 1; }\n\n#dependencyEnd {\n fill: #81B1DB;\n stroke: #81B1DB;\n stroke-width: 1; }\n\n#extensionStart {\n fill: #81B1DB;\n stroke: #81B1DB;\n stroke-width: 1; }\n\n#extensionEnd {\n fill: #81B1DB;\n stroke: #81B1DB;\n stroke-width: 1; }\n\n.commit-id,\n.commit-msg,\n.branch-label {\n fill: lightgrey;\n color: lightgrey;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family); }\n\n.pieTitleText {\n text-anchor: middle;\n font-size: 25px;\n fill: #fefefe;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family); }\n\n.slice {\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family); }\n\ng.stateGroup text {\n fill: #81B1DB;\n stroke: none;\n font-size: 10px;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family); }\n\ng.stateGroup text {\n fill: #81B1DB;\n fill: #F9FFFE;\n stroke: none;\n font-size: 10px; }\n\ng.statediagram-cluster .cluster-label text {\n fill: #F9FFFE; }\n\ng.stateGroup .state-title {\n font-weight: bolder;\n fill: #f4f4f4; }\n\ng.stateGroup rect {\n fill: #1f2020;\n stroke: #81B1DB; }\n\ng.stateGroup line {\n stroke: #81B1DB;\n stroke-width: 1; }\n\n.transition {\n stroke: #81B1DB;\n stroke-width: 1;\n fill: none; }\n\n.stateGroup .composit {\n fill: white;\n border-bottom: 1px; }\n\n.stateGroup .alt-composit {\n fill: #e0e0e0;\n border-bottom: 1px; }\n\n.state-note {\n stroke: rgba(255, 255, 255, 0.25);\n fill: #fff5ad; }\n .state-note text {\n fill: black;\n stroke: none;\n font-size: 10px; }\n\n.stateLabel .box {\n stroke: none;\n stroke-width: 0;\n fill: #1f2020;\n opacity: 0.7; }\n\n.edgeLabel text {\n fill: #333; }\n\n.stateLabel text {\n fill: #f4f4f4;\n font-size: 10px;\n font-weight: bold;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family); }\n\n.node circle.state-start {\n fill: black;\n stroke: black; }\n\n.node circle.state-end {\n fill: black;\n stroke: white;\n stroke-width: 1.5; }\n\n#statediagram-barbEnd {\n fill: #81B1DB; }\n\n.statediagram-cluster rect {\n fill: #1f2020;\n stroke: #81B1DB;\n stroke-width: 1px; }\n\n.statediagram-cluster rect.outer {\n rx: 5px;\n ry: 5px; }\n\n.statediagram-state .divider {\n stroke: #81B1DB; }\n\n.statediagram-state .title-state {\n rx: 5px;\n ry: 5px; }\n\n.statediagram-cluster.statediagram-cluster .inner {\n fill: white; }\n\n.statediagram-cluster.statediagram-cluster-alt .inner {\n fill: #e0e0e0; }\n\n.statediagram-cluster .inner {\n rx: 0;\n ry: 0; }\n\n.statediagram-state rect.basic {\n rx: 5px;\n ry: 5px; }\n\n.statediagram-state rect.divider {\n stroke-dasharray: 10,10;\n fill: #efefef; }\n\n.note-edge {\n stroke-dasharray: 5; }\n\n.statediagram-note rect {\n fill: #fff5ad;\n stroke: rgba(255, 255, 255, 0.25);\n stroke-width: 1px;\n rx: 0;\n ry: 0; }\n\n:root {\n --mermaid-font-family: '\"trebuchet ms\", verdana, arial';\n --mermaid-font-family: \"Comic Sans MS\", \"Comic Sans\", cursive; }\n\n/* Classes common for multiple diagrams */\n.error-icon {\n fill: #a44141; }\n\n.error-text {\n fill: #ddd;\n stroke: #ddd; }\n\n.edge-thickness-normal {\n stroke-width: 2px; }\n\n.edge-thickness-thick {\n stroke-width: 3.5px; }\n\n.edge-pattern-solid {\n stroke-dasharray: 0; }\n\n.edge-pattern-dashed {\n stroke-dasharray: 3; }\n\n.edge-pattern-dotted {\n stroke-dasharray: 2; }\n\n.marker {\n fill: lightgrey; }\n\n.marker.cross {\n stroke: lightgrey; }\n", ""]); - - - -/***/ }), - -/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./src/themes/default/index.scss": -/*!********************************************************************************************************************!*\ - !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./src/themes/default/index.scss ***! - \********************************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -exports = module.exports = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js")(false); -// Module -exports.push([module.i, "/* Flowchart variables */\n/* Sequence Diagram variables */\n/* Gantt chart variables */\n/* state colors */\n.label {\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family);\n fill: #333;\n color: #333; }\n\n.label text {\n fill: #333; }\n\n.node rect,\n.node circle,\n.node ellipse,\n.node polygon,\n.node path {\n fill: #ECECFF;\n stroke: #9370DB;\n stroke-width: 1px; }\n\n.node .label {\n text-align: center;\n fill: #333; }\n\n.node.clickable {\n cursor: pointer; }\n\n.arrowheadPath {\n fill: #333333; }\n\n.edgePath .path {\n stroke: #333333;\n stroke-width: 1.5px; }\n\n.flowchart-link {\n stroke: #333333;\n fill: none; }\n\n.edgeLabel {\n background-color: #e8e8e8;\n text-align: center; }\n .edgeLabel rect {\n opacity: 0.9; }\n .edgeLabel span {\n color: #333; }\n\n.cluster rect {\n fill: #ffffde;\n stroke: #aaaa33;\n stroke-width: 1px; }\n\n.cluster text {\n fill: #333; }\n\ndiv.mermaidTooltip {\n position: absolute;\n text-align: center;\n max-width: 200px;\n padding: 2px;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family);\n font-size: 12px;\n background: #ffffde;\n border: 1px solid #aaaa33;\n border-radius: 2px;\n pointer-events: none;\n z-index: 100; }\n\n.actor {\n stroke: #CCCCFF;\n fill: #ECECFF; }\n\ntext.actor > tspan {\n fill: black;\n stroke: none; }\n\n.actor-line {\n stroke: grey; }\n\n.messageLine0 {\n stroke-width: 1.5;\n stroke-dasharray: none;\n stroke: #333; }\n\n.messageLine1 {\n stroke-width: 1.5;\n stroke-dasharray: 2, 2;\n stroke: #333; }\n\n#arrowhead path {\n fill: #333;\n stroke: #333; }\n\n.sequenceNumber {\n fill: white; }\n\n#sequencenumber {\n fill: #333; }\n\n#crosshead path {\n fill: #333;\n stroke: #333; }\n\n.messageText {\n fill: #333;\n stroke: #333; }\n\n.labelBox {\n stroke: #CCCCFF;\n fill: #ECECFF; }\n\n.labelText, .labelText > tspan {\n fill: black;\n stroke: none; }\n\n.loopText, .loopText > tspan {\n fill: black;\n stroke: none; }\n\n.loopLine {\n stroke-width: 2px;\n stroke-dasharray: 2, 2;\n stroke: #CCCCFF;\n fill: #CCCCFF; }\n\n.note {\n stroke: #aaaa33;\n fill: #fff5ad; }\n\n.noteText, .noteText > tspan {\n fill: black;\n stroke: none; }\n\n.activation0 {\n fill: #f4f4f4;\n stroke: #666; }\n\n.activation1 {\n fill: #f4f4f4;\n stroke: #666; }\n\n.activation2 {\n fill: #f4f4f4;\n stroke: #666; }\n\n/** Section styling */\n.mermaid-main-font {\n font-family: \"trebuchet ms\", verdana, arial;\n font-family: var(--mermaid-font-family); }\n\n.section {\n stroke: none;\n opacity: 0.2; }\n\n.section0 {\n fill: rgba(102, 102, 255, 0.49); }\n\n.section2 {\n fill: #fff400; }\n\n.section1,\n.section3 {\n fill: white;\n opacity: 0.2; }\n\n.sectionTitle0 {\n fill: #333; }\n\n.sectionTitle1 {\n fill: #333; }\n\n.sectionTitle2 {\n fill: #333; }\n\n.sectionTitle3 {\n fill: #333; }\n\n.sectionTitle {\n text-anchor: start;\n font-size: 11px;\n text-height: 14px;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family); }\n\n/* Grid and axis */\n.grid .tick {\n stroke: lightgrey;\n opacity: 0.8;\n shape-rendering: crispEdges; }\n .grid .tick text {\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family); }\n\n.grid path {\n stroke-width: 0; }\n\n/* Today line */\n.today {\n fill: none;\n stroke: red;\n stroke-width: 2px; }\n\n/* Task styling */\n/* Default task */\n.task {\n stroke-width: 2; }\n\n.taskText {\n text-anchor: middle;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family); }\n\n.taskText:not([font-size]) {\n font-size: 11px; }\n\n.taskTextOutsideRight {\n fill: black;\n text-anchor: start;\n font-size: 11px;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family); }\n\n.taskTextOutsideLeft {\n fill: black;\n text-anchor: end;\n font-size: 11px; }\n\n/* Special case clickable */\n.task.clickable {\n cursor: pointer; }\n\n.taskText.clickable {\n cursor: pointer;\n fill: #003163 !important;\n font-weight: bold; }\n\n.taskTextOutsideLeft.clickable {\n cursor: pointer;\n fill: #003163 !important;\n font-weight: bold; }\n\n.taskTextOutsideRight.clickable {\n cursor: pointer;\n fill: #003163 !important;\n font-weight: bold; }\n\n/* Specific task settings for the sections*/\n.taskText0,\n.taskText1,\n.taskText2,\n.taskText3 {\n fill: white; }\n\n.task0,\n.task1,\n.task2,\n.task3 {\n fill: #8a90dd;\n stroke: #534fbc; }\n\n.taskTextOutside0,\n.taskTextOutside2 {\n fill: black; }\n\n.taskTextOutside1,\n.taskTextOutside3 {\n fill: black; }\n\n/* Active task */\n.active0,\n.active1,\n.active2,\n.active3 {\n fill: #bfc7ff;\n stroke: #534fbc; }\n\n.activeText0,\n.activeText1,\n.activeText2,\n.activeText3 {\n fill: black !important; }\n\n/* Completed task */\n.done0,\n.done1,\n.done2,\n.done3 {\n stroke: grey;\n fill: lightgrey;\n stroke-width: 2; }\n\n.doneText0,\n.doneText1,\n.doneText2,\n.doneText3 {\n fill: black !important; }\n\n/* Tasks on the critical line */\n.crit0,\n.crit1,\n.crit2,\n.crit3 {\n stroke: #ff8888;\n fill: red;\n stroke-width: 2; }\n\n.activeCrit0,\n.activeCrit1,\n.activeCrit2,\n.activeCrit3 {\n stroke: #ff8888;\n fill: #bfc7ff;\n stroke-width: 2; }\n\n.doneCrit0,\n.doneCrit1,\n.doneCrit2,\n.doneCrit3 {\n stroke: #ff8888;\n fill: lightgrey;\n stroke-width: 2;\n cursor: pointer;\n shape-rendering: crispEdges; }\n\n.milestone {\n transform: rotate(45deg) scale(0.8, 0.8); }\n\n.milestoneText {\n font-style: italic; }\n\n.doneCritText0,\n.doneCritText1,\n.doneCritText2,\n.doneCritText3 {\n fill: black !important; }\n\n.activeCritText0,\n.activeCritText1,\n.activeCritText2,\n.activeCritText3 {\n fill: black !important; }\n\n.titleText {\n text-anchor: middle;\n font-size: 18px;\n fill: black;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family); }\n\ng.classGroup text {\n fill: #9370DB;\n stroke: none;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family);\n font-size: 10px; }\n g.classGroup text .title {\n font-weight: bolder; }\n\ng.clickable {\n cursor: pointer; }\n\ng.classGroup rect {\n fill: #ECECFF;\n stroke: #9370DB; }\n\ng.classGroup line {\n stroke: #9370DB;\n stroke-width: 1; }\n\n.classLabel .box {\n stroke: none;\n stroke-width: 0;\n fill: #ECECFF;\n opacity: 0.5; }\n\n.classLabel .label {\n fill: #9370DB;\n font-size: 10px; }\n\n.relation {\n stroke: #9370DB;\n stroke-width: 1;\n fill: none; }\n\n.dashed-line {\n stroke-dasharray: 3; }\n\n#compositionStart {\n fill: #9370DB;\n stroke: #9370DB;\n stroke-width: 1; }\n\n#compositionEnd {\n fill: #9370DB;\n stroke: #9370DB;\n stroke-width: 1; }\n\n#aggregationStart {\n fill: #ECECFF;\n stroke: #9370DB;\n stroke-width: 1; }\n\n#aggregationEnd {\n fill: #ECECFF;\n stroke: #9370DB;\n stroke-width: 1; }\n\n#dependencyStart {\n fill: #9370DB;\n stroke: #9370DB;\n stroke-width: 1; }\n\n#dependencyEnd {\n fill: #9370DB;\n stroke: #9370DB;\n stroke-width: 1; }\n\n#extensionStart {\n fill: #9370DB;\n stroke: #9370DB;\n stroke-width: 1; }\n\n#extensionEnd {\n fill: #9370DB;\n stroke: #9370DB;\n stroke-width: 1; }\n\n.commit-id,\n.commit-msg,\n.branch-label {\n fill: lightgrey;\n color: lightgrey;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family); }\n\n.pieTitleText {\n text-anchor: middle;\n font-size: 25px;\n fill: black;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family); }\n\n.slice {\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family); }\n\ng.stateGroup text {\n fill: #9370DB;\n stroke: none;\n font-size: 10px;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family); }\n\ng.stateGroup text {\n fill: #9370DB;\n fill: #333;\n stroke: none;\n font-size: 10px; }\n\ng.statediagram-cluster .cluster-label text {\n fill: #333; }\n\ng.stateGroup .state-title {\n font-weight: bolder;\n fill: black; }\n\ng.stateGroup rect {\n fill: #ECECFF;\n stroke: #9370DB; }\n\ng.stateGroup line {\n stroke: #9370DB;\n stroke-width: 1; }\n\n.transition {\n stroke: #9370DB;\n stroke-width: 1;\n fill: none; }\n\n.stateGroup .composit {\n fill: white;\n border-bottom: 1px; }\n\n.stateGroup .alt-composit {\n fill: #e0e0e0;\n border-bottom: 1px; }\n\n.state-note {\n stroke: #aaaa33;\n fill: #fff5ad; }\n .state-note text {\n fill: black;\n stroke: none;\n font-size: 10px; }\n\n.stateLabel .box {\n stroke: none;\n stroke-width: 0;\n fill: #ECECFF;\n opacity: 0.7; }\n\n.edgeLabel text {\n fill: #333; }\n\n.stateLabel text {\n fill: black;\n font-size: 10px;\n font-weight: bold;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family); }\n\n.node circle.state-start {\n fill: black;\n stroke: black; }\n\n.node circle.state-end {\n fill: black;\n stroke: white;\n stroke-width: 1.5; }\n\n#statediagram-barbEnd {\n fill: #9370DB; }\n\n.statediagram-cluster rect {\n fill: #ECECFF;\n stroke: #9370DB;\n stroke-width: 1px; }\n\n.statediagram-cluster rect.outer {\n rx: 5px;\n ry: 5px; }\n\n.statediagram-state .divider {\n stroke: #9370DB; }\n\n.statediagram-state .title-state {\n rx: 5px;\n ry: 5px; }\n\n.statediagram-cluster.statediagram-cluster .inner {\n fill: white; }\n\n.statediagram-cluster.statediagram-cluster-alt .inner {\n fill: #e0e0e0; }\n\n.statediagram-cluster .inner {\n rx: 0;\n ry: 0; }\n\n.statediagram-state rect.basic {\n rx: 5px;\n ry: 5px; }\n\n.statediagram-state rect.divider {\n stroke-dasharray: 10,10;\n fill: #efefef; }\n\n.note-edge {\n stroke-dasharray: 5; }\n\n.statediagram-note rect {\n fill: #fff5ad;\n stroke: #aaaa33;\n stroke-width: 1px;\n rx: 0;\n ry: 0; }\n\n:root {\n --mermaid-font-family: '\"trebuchet ms\", verdana, arial';\n --mermaid-font-family: \"Comic Sans MS\", \"Comic Sans\", cursive; }\n\n/* Classes common for multiple diagrams */\n.error-icon {\n fill: #552222; }\n\n.error-text {\n fill: #552222;\n stroke: #552222; }\n\n.edge-thickness-normal {\n stroke-width: 2px; }\n\n.edge-thickness-thick {\n stroke-width: 3.5px; }\n\n.edge-pattern-solid {\n stroke-dasharray: 0; }\n\n.edge-pattern-dashed {\n stroke-dasharray: 3; }\n\n.edge-pattern-dotted {\n stroke-dasharray: 2; }\n\n.marker {\n fill: #333333; }\n\n.marker.cross {\n stroke: #333333; }\n", ""]); - - - -/***/ }), - -/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./src/themes/forest/index.scss": -/*!*******************************************************************************************************************!*\ - !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./src/themes/forest/index.scss ***! - \*******************************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -exports = module.exports = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js")(false); -// Module -exports.push([module.i, "/* Flowchart variables */\n/* Sequence Diagram variables */\n/* Gantt chart variables */\n/* state colors */\n.label {\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family);\n fill: #333;\n color: #333; }\n\n.label text {\n fill: #333; }\n\n.node rect,\n.node circle,\n.node ellipse,\n.node polygon,\n.node path {\n fill: #cde498;\n stroke: #13540c;\n stroke-width: 1px; }\n\n.node .label {\n text-align: center;\n fill: #333; }\n\n.node.clickable {\n cursor: pointer; }\n\n.arrowheadPath {\n fill: green; }\n\n.edgePath .path {\n stroke: green;\n stroke-width: 1.5px; }\n\n.flowchart-link {\n stroke: green;\n fill: none; }\n\n.edgeLabel {\n background-color: #e8e8e8;\n text-align: center; }\n .edgeLabel rect {\n opacity: 0.9; }\n .edgeLabel span {\n color: #333; }\n\n.cluster rect {\n fill: #cdffb2;\n stroke: #6eaa49;\n stroke-width: 1px; }\n\n.cluster text {\n fill: #333; }\n\ndiv.mermaidTooltip {\n position: absolute;\n text-align: center;\n max-width: 200px;\n padding: 2px;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family);\n font-size: 12px;\n background: #cdffb2;\n border: 1px solid #6eaa49;\n border-radius: 2px;\n pointer-events: none;\n z-index: 100; }\n\n.actor {\n stroke: #13540c;\n fill: #cde498; }\n\ntext.actor > tspan {\n fill: black;\n stroke: none; }\n\n.actor-line {\n stroke: grey; }\n\n.messageLine0 {\n stroke-width: 1.5;\n stroke-dasharray: none;\n stroke: #333; }\n\n.messageLine1 {\n stroke-width: 1.5;\n stroke-dasharray: 2, 2;\n stroke: #333; }\n\n#arrowhead path {\n fill: #333;\n stroke: #333; }\n\n.sequenceNumber {\n fill: white; }\n\n#sequencenumber {\n fill: #333; }\n\n#crosshead path {\n fill: #333;\n stroke: #333; }\n\n.messageText {\n fill: #333;\n stroke: #333; }\n\n.labelBox {\n stroke: #326932;\n fill: #cde498; }\n\n.labelText, .labelText > tspan {\n fill: black;\n stroke: none; }\n\n.loopText, .loopText > tspan {\n fill: black;\n stroke: none; }\n\n.loopLine {\n stroke-width: 2px;\n stroke-dasharray: 2, 2;\n stroke: #326932;\n fill: #326932; }\n\n.note {\n stroke: #6eaa49;\n fill: #fff5ad; }\n\n.noteText, .noteText > tspan {\n fill: black;\n stroke: none; }\n\n.activation0 {\n fill: #f4f4f4;\n stroke: #666; }\n\n.activation1 {\n fill: #f4f4f4;\n stroke: #666; }\n\n.activation2 {\n fill: #f4f4f4;\n stroke: #666; }\n\n/** Section styling */\n.mermaid-main-font {\n font-family: \"trebuchet ms\", verdana, arial;\n font-family: var(--mermaid-font-family); }\n\n.section {\n stroke: none;\n opacity: 0.2; }\n\n.section0 {\n fill: #6eaa49; }\n\n.section2 {\n fill: #6eaa49; }\n\n.section1,\n.section3 {\n fill: white;\n opacity: 0.2; }\n\n.sectionTitle0 {\n fill: #333; }\n\n.sectionTitle1 {\n fill: #333; }\n\n.sectionTitle2 {\n fill: #333; }\n\n.sectionTitle3 {\n fill: #333; }\n\n.sectionTitle {\n text-anchor: start;\n font-size: 11px;\n text-height: 14px;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family); }\n\n/* Grid and axis */\n.grid .tick {\n stroke: lightgrey;\n opacity: 0.8;\n shape-rendering: crispEdges; }\n .grid .tick text {\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family); }\n\n.grid path {\n stroke-width: 0; }\n\n/* Today line */\n.today {\n fill: none;\n stroke: red;\n stroke-width: 2px; }\n\n/* Task styling */\n/* Default task */\n.task {\n stroke-width: 2; }\n\n.taskText {\n text-anchor: middle;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family); }\n\n.taskText:not([font-size]) {\n font-size: 11px; }\n\n.taskTextOutsideRight {\n fill: black;\n text-anchor: start;\n font-size: 11px;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family); }\n\n.taskTextOutsideLeft {\n fill: black;\n text-anchor: end;\n font-size: 11px; }\n\n/* Special case clickable */\n.task.clickable {\n cursor: pointer; }\n\n.taskText.clickable {\n cursor: pointer;\n fill: #003163 !important;\n font-weight: bold; }\n\n.taskTextOutsideLeft.clickable {\n cursor: pointer;\n fill: #003163 !important;\n font-weight: bold; }\n\n.taskTextOutsideRight.clickable {\n cursor: pointer;\n fill: #003163 !important;\n font-weight: bold; }\n\n/* Specific task settings for the sections*/\n.taskText0,\n.taskText1,\n.taskText2,\n.taskText3 {\n fill: white; }\n\n.task0,\n.task1,\n.task2,\n.task3 {\n fill: #487e3a;\n stroke: #13540c; }\n\n.taskTextOutside0,\n.taskTextOutside2 {\n fill: black; }\n\n.taskTextOutside1,\n.taskTextOutside3 {\n fill: black; }\n\n/* Active task */\n.active0,\n.active1,\n.active2,\n.active3 {\n fill: #cde498;\n stroke: #13540c; }\n\n.activeText0,\n.activeText1,\n.activeText2,\n.activeText3 {\n fill: black !important; }\n\n/* Completed task */\n.done0,\n.done1,\n.done2,\n.done3 {\n stroke: grey;\n fill: lightgrey;\n stroke-width: 2; }\n\n.doneText0,\n.doneText1,\n.doneText2,\n.doneText3 {\n fill: black !important; }\n\n/* Tasks on the critical line */\n.crit0,\n.crit1,\n.crit2,\n.crit3 {\n stroke: #ff8888;\n fill: red;\n stroke-width: 2; }\n\n.activeCrit0,\n.activeCrit1,\n.activeCrit2,\n.activeCrit3 {\n stroke: #ff8888;\n fill: #cde498;\n stroke-width: 2; }\n\n.doneCrit0,\n.doneCrit1,\n.doneCrit2,\n.doneCrit3 {\n stroke: #ff8888;\n fill: lightgrey;\n stroke-width: 2;\n cursor: pointer;\n shape-rendering: crispEdges; }\n\n.milestone {\n transform: rotate(45deg) scale(0.8, 0.8); }\n\n.milestoneText {\n font-style: italic; }\n\n.doneCritText0,\n.doneCritText1,\n.doneCritText2,\n.doneCritText3 {\n fill: black !important; }\n\n.activeCritText0,\n.activeCritText1,\n.activeCritText2,\n.activeCritText3 {\n fill: black !important; }\n\n.titleText {\n text-anchor: middle;\n font-size: 18px;\n fill: black;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family); }\n\ng.classGroup text {\n fill: #13540c;\n stroke: none;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family);\n font-size: 10px; }\n g.classGroup text .title {\n font-weight: bolder; }\n\ng.clickable {\n cursor: pointer; }\n\ng.classGroup rect {\n fill: #cde498;\n stroke: #13540c; }\n\ng.classGroup line {\n stroke: #13540c;\n stroke-width: 1; }\n\n.classLabel .box {\n stroke: none;\n stroke-width: 0;\n fill: #cde498;\n opacity: 0.5; }\n\n.classLabel .label {\n fill: #13540c;\n font-size: 10px; }\n\n.relation {\n stroke: #13540c;\n stroke-width: 1;\n fill: none; }\n\n.dashed-line {\n stroke-dasharray: 3; }\n\n#compositionStart {\n fill: #13540c;\n stroke: #13540c;\n stroke-width: 1; }\n\n#compositionEnd {\n fill: #13540c;\n stroke: #13540c;\n stroke-width: 1; }\n\n#aggregationStart {\n fill: #cde498;\n stroke: #13540c;\n stroke-width: 1; }\n\n#aggregationEnd {\n fill: #cde498;\n stroke: #13540c;\n stroke-width: 1; }\n\n#dependencyStart {\n fill: #13540c;\n stroke: #13540c;\n stroke-width: 1; }\n\n#dependencyEnd {\n fill: #13540c;\n stroke: #13540c;\n stroke-width: 1; }\n\n#extensionStart {\n fill: #13540c;\n stroke: #13540c;\n stroke-width: 1; }\n\n#extensionEnd {\n fill: #13540c;\n stroke: #13540c;\n stroke-width: 1; }\n\n.commit-id,\n.commit-msg,\n.branch-label {\n fill: lightgrey;\n color: lightgrey;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family); }\n\n.pieTitleText {\n text-anchor: middle;\n font-size: 25px;\n fill: black;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family); }\n\n.slice {\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family); }\n\ng.stateGroup text {\n fill: #13540c;\n stroke: none;\n font-size: 10px;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family); }\n\ng.stateGroup text {\n fill: #13540c;\n fill: #333;\n stroke: none;\n font-size: 10px; }\n\ng.statediagram-cluster .cluster-label text {\n fill: #333; }\n\ng.stateGroup .state-title {\n font-weight: bolder;\n fill: black; }\n\ng.stateGroup rect {\n fill: #cde498;\n stroke: #13540c; }\n\ng.stateGroup line {\n stroke: #13540c;\n stroke-width: 1; }\n\n.transition {\n stroke: #13540c;\n stroke-width: 1;\n fill: none; }\n\n.stateGroup .composit {\n fill: white;\n border-bottom: 1px; }\n\n.stateGroup .alt-composit {\n fill: #e0e0e0;\n border-bottom: 1px; }\n\n.state-note {\n stroke: #6eaa49;\n fill: #fff5ad; }\n .state-note text {\n fill: black;\n stroke: none;\n font-size: 10px; }\n\n.stateLabel .box {\n stroke: none;\n stroke-width: 0;\n fill: #cde498;\n opacity: 0.7; }\n\n.edgeLabel text {\n fill: #333; }\n\n.stateLabel text {\n fill: black;\n font-size: 10px;\n font-weight: bold;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family); }\n\n.node circle.state-start {\n fill: black;\n stroke: black; }\n\n.node circle.state-end {\n fill: black;\n stroke: white;\n stroke-width: 1.5; }\n\n#statediagram-barbEnd {\n fill: #13540c; }\n\n.statediagram-cluster rect {\n fill: #cde498;\n stroke: #13540c;\n stroke-width: 1px; }\n\n.statediagram-cluster rect.outer {\n rx: 5px;\n ry: 5px; }\n\n.statediagram-state .divider {\n stroke: #13540c; }\n\n.statediagram-state .title-state {\n rx: 5px;\n ry: 5px; }\n\n.statediagram-cluster.statediagram-cluster .inner {\n fill: white; }\n\n.statediagram-cluster.statediagram-cluster-alt .inner {\n fill: #e0e0e0; }\n\n.statediagram-cluster .inner {\n rx: 0;\n ry: 0; }\n\n.statediagram-state rect.basic {\n rx: 5px;\n ry: 5px; }\n\n.statediagram-state rect.divider {\n stroke-dasharray: 10,10;\n fill: #efefef; }\n\n.note-edge {\n stroke-dasharray: 5; }\n\n.statediagram-note rect {\n fill: #fff5ad;\n stroke: #6eaa49;\n stroke-width: 1px;\n rx: 0;\n ry: 0; }\n\n:root {\n --mermaid-font-family: '\"trebuchet ms\", verdana, arial';\n --mermaid-font-family: \"Comic Sans MS\", \"Comic Sans\", cursive; }\n\n/* Classes common for multiple diagrams */\n.error-icon {\n fill: #552222; }\n\n.error-text {\n fill: #552222;\n stroke: #552222; }\n\n.edge-thickness-normal {\n stroke-width: 2px; }\n\n.edge-thickness-thick {\n stroke-width: 3.5px; }\n\n.edge-pattern-solid {\n stroke-dasharray: 0; }\n\n.edge-pattern-dashed {\n stroke-dasharray: 3; }\n\n.edge-pattern-dotted {\n stroke-dasharray: 2; }\n\n.marker {\n fill: green; }\n\n.marker.cross {\n stroke: green; }\n", ""]); - - - -/***/ }), - -/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./src/themes/neutral/index.scss": -/*!********************************************************************************************************************!*\ - !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./src/themes/neutral/index.scss ***! - \********************************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -exports = module.exports = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js")(false); -// Module -exports.push([module.i, "/* Flowchart variables */\n/* Sequence Diagram variables */\n/* Gantt chart variables */\n/* state colors */\n.label {\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family);\n fill: #333;\n color: #333; }\n\n.label text {\n fill: #333; }\n\n.node rect,\n.node circle,\n.node ellipse,\n.node polygon,\n.node path {\n fill: #eee;\n stroke: #999;\n stroke-width: 1px; }\n\n.node .label {\n text-align: center;\n fill: #333; }\n\n.node.clickable {\n cursor: pointer; }\n\n.arrowheadPath {\n fill: #333333; }\n\n.edgePath .path {\n stroke: #666;\n stroke-width: 1.5px; }\n\n.flowchart-link {\n stroke: #666;\n fill: none; }\n\n.edgeLabel {\n background-color: white;\n text-align: center; }\n .edgeLabel rect {\n opacity: 0.9; }\n .edgeLabel span {\n color: #333; }\n\n.cluster rect {\n fill: #eaf2fb;\n stroke: #26a;\n stroke-width: 1px; }\n\n.cluster text {\n fill: #333; }\n\ndiv.mermaidTooltip {\n position: absolute;\n text-align: center;\n max-width: 200px;\n padding: 2px;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family);\n font-size: 12px;\n background: #eaf2fb;\n border: 1px solid #26a;\n border-radius: 2px;\n pointer-events: none;\n z-index: 100; }\n\n.actor {\n stroke: #999;\n fill: #eee; }\n\ntext.actor > tspan {\n fill: #333;\n stroke: none; }\n\n.actor-line {\n stroke: #666; }\n\n.messageLine0 {\n stroke-width: 1.5;\n stroke-dasharray: none;\n stroke: #333; }\n\n.messageLine1 {\n stroke-width: 1.5;\n stroke-dasharray: 2, 2;\n stroke: #333; }\n\n#arrowhead path {\n fill: #333;\n stroke: #333; }\n\n.sequenceNumber {\n fill: white; }\n\n#sequencenumber {\n fill: #333; }\n\n#crosshead path {\n fill: #333;\n stroke: #333; }\n\n.messageText {\n fill: #333;\n stroke: #333; }\n\n.labelBox {\n stroke: #999;\n fill: #eee; }\n\n.labelText, .labelText > tspan {\n fill: #333;\n stroke: none; }\n\n.loopText, .loopText > tspan {\n fill: #333;\n stroke: none; }\n\n.loopLine {\n stroke-width: 2px;\n stroke-dasharray: 2, 2;\n stroke: #999;\n fill: #999; }\n\n.note {\n stroke: #777700;\n fill: #ffa; }\n\n.noteText, .noteText > tspan {\n fill: #333;\n stroke: none; }\n\n.activation0 {\n fill: #f4f4f4;\n stroke: #666; }\n\n.activation1 {\n fill: #f4f4f4;\n stroke: #666; }\n\n.activation2 {\n fill: #f4f4f4;\n stroke: #666; }\n\n/** Section styling */\n.mermaid-main-font {\n font-family: \"trebuchet ms\", verdana, arial;\n font-family: var(--mermaid-font-family); }\n\n.section {\n stroke: none;\n opacity: 0.2; }\n\n.section0 {\n fill: #80b3e6; }\n\n.section2 {\n fill: #80b3e6; }\n\n.section1,\n.section3 {\n fill: white;\n opacity: 0.2; }\n\n.sectionTitle0 {\n fill: #333; }\n\n.sectionTitle1 {\n fill: #333; }\n\n.sectionTitle2 {\n fill: #333; }\n\n.sectionTitle3 {\n fill: #333; }\n\n.sectionTitle {\n text-anchor: start;\n font-size: 11px;\n text-height: 14px;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family); }\n\n/* Grid and axis */\n.grid .tick {\n stroke: #e6e6e6;\n opacity: 0.8;\n shape-rendering: crispEdges; }\n .grid .tick text {\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family); }\n\n.grid path {\n stroke-width: 0; }\n\n/* Today line */\n.today {\n fill: none;\n stroke: #d42;\n stroke-width: 2px; }\n\n/* Task styling */\n/* Default task */\n.task {\n stroke-width: 2; }\n\n.taskText {\n text-anchor: middle;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family); }\n\n.taskText:not([font-size]) {\n font-size: 11px; }\n\n.taskTextOutsideRight {\n fill: #333;\n text-anchor: start;\n font-size: 11px;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family); }\n\n.taskTextOutsideLeft {\n fill: #333;\n text-anchor: end;\n font-size: 11px; }\n\n/* Special case clickable */\n.task.clickable {\n cursor: pointer; }\n\n.taskText.clickable {\n cursor: pointer;\n fill: #003163 !important;\n font-weight: bold; }\n\n.taskTextOutsideLeft.clickable {\n cursor: pointer;\n fill: #003163 !important;\n font-weight: bold; }\n\n.taskTextOutsideRight.clickable {\n cursor: pointer;\n fill: #003163 !important;\n font-weight: bold; }\n\n/* Specific task settings for the sections*/\n.taskText0,\n.taskText1,\n.taskText2,\n.taskText3 {\n fill: white; }\n\n.task0,\n.task1,\n.task2,\n.task3 {\n fill: #26a;\n stroke: #1a4d80; }\n\n.taskTextOutside0,\n.taskTextOutside2 {\n fill: #333; }\n\n.taskTextOutside1,\n.taskTextOutside3 {\n fill: #333; }\n\n/* Active task */\n.active0,\n.active1,\n.active2,\n.active3 {\n fill: #eee;\n stroke: #1a4d80; }\n\n.activeText0,\n.activeText1,\n.activeText2,\n.activeText3 {\n fill: #333 !important; }\n\n/* Completed task */\n.done0,\n.done1,\n.done2,\n.done3 {\n stroke: #666;\n fill: #bbb;\n stroke-width: 2; }\n\n.doneText0,\n.doneText1,\n.doneText2,\n.doneText3 {\n fill: #333 !important; }\n\n/* Tasks on the critical line */\n.crit0,\n.crit1,\n.crit2,\n.crit3 {\n stroke: #b1361b;\n fill: #d42;\n stroke-width: 2; }\n\n.activeCrit0,\n.activeCrit1,\n.activeCrit2,\n.activeCrit3 {\n stroke: #b1361b;\n fill: #eee;\n stroke-width: 2; }\n\n.doneCrit0,\n.doneCrit1,\n.doneCrit2,\n.doneCrit3 {\n stroke: #b1361b;\n fill: #bbb;\n stroke-width: 2;\n cursor: pointer;\n shape-rendering: crispEdges; }\n\n.milestone {\n transform: rotate(45deg) scale(0.8, 0.8); }\n\n.milestoneText {\n font-style: italic; }\n\n.doneCritText0,\n.doneCritText1,\n.doneCritText2,\n.doneCritText3 {\n fill: #333 !important; }\n\n.activeCritText0,\n.activeCritText1,\n.activeCritText2,\n.activeCritText3 {\n fill: #333 !important; }\n\n.titleText {\n text-anchor: middle;\n font-size: 18px;\n fill: #333;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family); }\n\ng.classGroup text {\n fill: #999;\n stroke: none;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family);\n font-size: 10px; }\n g.classGroup text .title {\n font-weight: bolder; }\n\ng.clickable {\n cursor: pointer; }\n\ng.classGroup rect {\n fill: #eee;\n stroke: #999; }\n\ng.classGroup line {\n stroke: #999;\n stroke-width: 1; }\n\n.classLabel .box {\n stroke: none;\n stroke-width: 0;\n fill: #eee;\n opacity: 0.5; }\n\n.classLabel .label {\n fill: #999;\n font-size: 10px; }\n\n.relation {\n stroke: #999;\n stroke-width: 1;\n fill: none; }\n\n.dashed-line {\n stroke-dasharray: 3; }\n\n#compositionStart {\n fill: #999;\n stroke: #999;\n stroke-width: 1; }\n\n#compositionEnd {\n fill: #999;\n stroke: #999;\n stroke-width: 1; }\n\n#aggregationStart {\n fill: #eee;\n stroke: #999;\n stroke-width: 1; }\n\n#aggregationEnd {\n fill: #eee;\n stroke: #999;\n stroke-width: 1; }\n\n#dependencyStart {\n fill: #999;\n stroke: #999;\n stroke-width: 1; }\n\n#dependencyEnd {\n fill: #999;\n stroke: #999;\n stroke-width: 1; }\n\n#extensionStart {\n fill: #999;\n stroke: #999;\n stroke-width: 1; }\n\n#extensionEnd {\n fill: #999;\n stroke: #999;\n stroke-width: 1; }\n\n.commit-id,\n.commit-msg,\n.branch-label {\n fill: lightgrey;\n color: lightgrey;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family); }\n\n.pieTitleText {\n text-anchor: middle;\n font-size: 25px;\n fill: #333;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family); }\n\n.slice {\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family); }\n\ng.stateGroup text {\n fill: #999;\n stroke: none;\n font-size: 10px;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family); }\n\ng.stateGroup text {\n fill: #999;\n fill: #333;\n stroke: none;\n font-size: 10px; }\n\ng.statediagram-cluster .cluster-label text {\n fill: #333; }\n\ng.stateGroup .state-title {\n font-weight: bolder;\n fill: black; }\n\ng.stateGroup rect {\n fill: #eee;\n stroke: #999; }\n\ng.stateGroup line {\n stroke: #999;\n stroke-width: 1; }\n\n.transition {\n stroke: #999;\n stroke-width: 1;\n fill: none; }\n\n.stateGroup .composit {\n fill: white;\n border-bottom: 1px; }\n\n.stateGroup .alt-composit {\n fill: #e0e0e0;\n border-bottom: 1px; }\n\n.state-note {\n stroke: #777700;\n fill: #ffa; }\n .state-note text {\n fill: black;\n stroke: none;\n font-size: 10px; }\n\n.stateLabel .box {\n stroke: none;\n stroke-width: 0;\n fill: #eee;\n opacity: 0.7; }\n\n.edgeLabel text {\n fill: #333; }\n\n.stateLabel text {\n fill: black;\n font-size: 10px;\n font-weight: bold;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family); }\n\n.node circle.state-start {\n fill: black;\n stroke: black; }\n\n.node circle.state-end {\n fill: black;\n stroke: white;\n stroke-width: 1.5; }\n\n#statediagram-barbEnd {\n fill: #999; }\n\n.statediagram-cluster rect {\n fill: #eee;\n stroke: #999;\n stroke-width: 1px; }\n\n.statediagram-cluster rect.outer {\n rx: 5px;\n ry: 5px; }\n\n.statediagram-state .divider {\n stroke: #999; }\n\n.statediagram-state .title-state {\n rx: 5px;\n ry: 5px; }\n\n.statediagram-cluster.statediagram-cluster .inner {\n fill: white; }\n\n.statediagram-cluster.statediagram-cluster-alt .inner {\n fill: #e0e0e0; }\n\n.statediagram-cluster .inner {\n rx: 0;\n ry: 0; }\n\n.statediagram-state rect.basic {\n rx: 5px;\n ry: 5px; }\n\n.statediagram-state rect.divider {\n stroke-dasharray: 10,10;\n fill: #efefef; }\n\n.note-edge {\n stroke-dasharray: 5; }\n\n.statediagram-note rect {\n fill: #ffa;\n stroke: #777700;\n stroke-width: 1px;\n rx: 0;\n ry: 0; }\n\n:root {\n --mermaid-font-family: '\"trebuchet ms\", verdana, arial';\n --mermaid-font-family: \"Comic Sans MS\", \"Comic Sans\", cursive; }\n\n/* Classes common for multiple diagrams */\n.error-icon {\n fill: #552222; }\n\n.error-text {\n fill: #552222;\n stroke: #552222; }\n\n.edge-thickness-normal {\n stroke-width: 2px; }\n\n.edge-thickness-thick {\n stroke-width: 3.5px; }\n\n.edge-pattern-solid {\n stroke-dasharray: 0; }\n\n.edge-pattern-dashed {\n stroke-dasharray: 3; }\n\n.edge-pattern-dotted {\n stroke-dasharray: 2; }\n\n.marker {\n fill: #666; }\n\n.marker.cross {\n stroke: #666; }\n", ""]); - - - -/***/ }), - -/***/ "./node_modules/css-loader/dist/runtime/api.js": -/*!*****************************************************!*\ - !*** ./node_modules/css-loader/dist/runtime/api.js ***! - \*****************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -/* - MIT License http://www.opensource.org/licenses/mit-license.php - Author Tobias Koppers @sokra -*/ -// css base code, injected by the css-loader -module.exports = function (useSourceMap) { - var list = []; // return the list of modules as css string - - list.toString = function toString() { - return this.map(function (item) { - var content = cssWithMappingToString(item, useSourceMap); - - if (item[2]) { - return '@media ' + item[2] + '{' + content + '}'; - } else { - return content; - } - }).join(''); - }; // import a list of modules into the list - - - list.i = function (modules, mediaQuery) { - if (typeof modules === 'string') { - modules = [[null, modules, '']]; - } - - var alreadyImportedModules = {}; - - for (var i = 0; i < this.length; i++) { - var id = this[i][0]; - - if (id != null) { - alreadyImportedModules[id] = true; - } - } - - for (i = 0; i < modules.length; i++) { - var item = modules[i]; // skip already imported module - // this implementation is not 100% perfect for weird media query combinations - // when a module is imported multiple times with different media queries. - // I hope this will never occur (Hey this way we have smaller bundles) - - if (item[0] == null || !alreadyImportedModules[item[0]]) { - if (mediaQuery && !item[2]) { - item[2] = mediaQuery; - } else if (mediaQuery) { - item[2] = '(' + item[2] + ') and (' + mediaQuery + ')'; - } - - list.push(item); - } - } - }; - - return list; -}; - -function cssWithMappingToString(item, useSourceMap) { - var content = item[1] || ''; - var cssMapping = item[3]; - - if (!cssMapping) { - return content; - } - - if (useSourceMap && typeof btoa === 'function') { - var sourceMapping = toComment(cssMapping); - var sourceURLs = cssMapping.sources.map(function (source) { - return '/*# sourceURL=' + cssMapping.sourceRoot + source + ' */'; - }); - return [content].concat(sourceURLs).concat([sourceMapping]).join('\n'); - } - - return [content].join('\n'); -} // Adapted from convert-source-map (MIT) - - -function toComment(sourceMap) { - // eslint-disable-next-line no-undef - var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))); - var data = 'sourceMappingURL=data:application/json;charset=utf-8;base64,' + base64; - return '/*# ' + data + ' */'; -} - -/***/ }), - ->>>>>>> master /***/ "./node_modules/node-libs-browser/mock/empty.js": /*!******************************************************!*\ !*** ./node_modules/node-libs-browser/mock/empty.js ***! @@ -815,11 +656,7 @@ module.exports = function(module) { /*! exports provided: name, version, description, main, keywords, scripts, repository, author, license, standard, dependencies, devDependencies, files, yarn-upgrade-all, sideEffects, husky, default */ /***/ (function(module) { -<<<<<<< HEAD -module.exports = JSON.parse("{\"name\":\"mermaid\",\"version\":\"8.6.3\",\"description\":\"Markdownish syntax for generating flowcharts, sequence diagrams, class diagrams, gantt charts and git graphs.\",\"main\":\"dist/mermaid.core.js\",\"keywords\":[\"diagram\",\"markdown\",\"flowchart\",\"sequence diagram\",\"gantt\",\"class diagram\",\"git graph\"],\"scripts\":{\"build:development\":\"webpack --progress --colors\",\"build:production\":\"yarn build:development -p --config webpack.config.prod.babel.js\",\"build\":\"yarn build:development && yarn build:production\",\"postbuild\":\"documentation build src/mermaidAPI.js src/config.js --shallow -f md --markdown-toc false -o docs/Setup.md\",\"build:watch\":\"yarn build --watch\",\"minify\":\"minify ./dist/mermaid.js > ./dist/mermaid.min.js\",\"release\":\"yarn build\",\"lint\":\"eslint src\",\"e2e:depr\":\"yarn lint && jest e2e --config e2e/jest.config.js\",\"cypress\":\"percy exec -- cypress run\",\"e2e\":\"start-server-and-test dev http://localhost:9000/ cypress\",\"e2e-upd\":\"yarn lint && jest e2e -u --config e2e/jest.config.js\",\"dev\":\"webpack-dev-server --config webpack.config.e2e.js\",\"test\":\"yarn lint && jest src/.*\",\"test:watch\":\"jest --watch src\",\"prepublishOnly\":\"yarn build && yarn test && yarn e2e\",\"prepare\":\"yarn build\"},\"repository\":{\"type\":\"git\",\"url\":\"https://github.com/knsv/mermaid\"},\"author\":\"Knut Sveidqvist\",\"license\":\"MIT\",\"standard\":{\"ignore\":[\"**/parser/*.js\",\"dist/**/*.js\",\"cypress/**/*.js\"],\"globals\":[\"page\"]},\"dependencies\":{\"@braintree/sanitize-url\":\"^3.1.0\",\"d3\":\"^5.7.0\",\"dagre\":\"^0.8.4\",\"dagre-d3\":\"^0.6.4\",\"entity-decode\":\"^2.0.2\",\"graphlib\":\"^2.1.7\",\"he\":\"^1.2.0\",\"khroma\":\"^1.1.0\",\"minify\":\"^4.1.1\",\"moment-mini\":\"^2.22.1\",\"stylis\":\"^3.5.2\"},\"devDependencies\":{\"@babel/core\":\"^7.2.2\",\"@babel/preset-env\":\"^7.8.4\",\"@babel/register\":\"^7.0.0\",\"@percy/cypress\":\"*\",\"babel-core\":\"7.0.0-bridge.0\",\"babel-jest\":\"^24.9.0\",\"babel-loader\":\"^8.0.4\",\"coveralls\":\"^3.0.2\",\"css-loader\":\"^2.0.1\",\"css-to-string-loader\":\"^0.1.3\",\"cypress\":\"4.0.1\",\"documentation\":\"^12.0.1\",\"eslint\":\"^6.3.0\",\"eslint-config-prettier\":\"^6.3.0\",\"eslint-plugin-prettier\":\"^3.1.0\",\"husky\":\"^1.2.1\",\"identity-obj-proxy\":\"^3.0.0\",\"jest\":\"^24.9.0\",\"jison\":\"^0.4.18\",\"moment\":\"^2.23.0\",\"node-sass\":\"^4.12.0\",\"prettier\":\"^1.18.2\",\"puppeteer\":\"^1.17.0\",\"sass-loader\":\"^7.1.0\",\"start-server-and-test\":\"^1.10.6\",\"terser-webpack-plugin\":\"^2.2.2\",\"webpack\":\"^4.41.2\",\"webpack-bundle-analyzer\":\"^3.7.0\",\"webpack-cli\":\"^3.1.2\",\"webpack-dev-server\":\"^3.4.1\",\"webpack-node-externals\":\"^1.7.2\",\"yarn-upgrade-all\":\"^0.5.0\"},\"files\":[\"dist\"],\"yarn-upgrade-all\":{\"ignore\":[\"babel-core\"]},\"sideEffects\":[\"**/*.css\",\"**/*.scss\"],\"husky\":{\"hooks\":{\"pre-push\":\"yarn test\"}}}"); -======= -module.exports = JSON.parse("{\"name\":\"mermaid\",\"version\":\"8.6.4\",\"description\":\"Markdownish syntax for generating flowcharts, sequence diagrams, class diagrams, gantt charts and git graphs.\",\"main\":\"dist/mermaid.core.js\",\"keywords\":[\"diagram\",\"markdown\",\"flowchart\",\"sequence diagram\",\"gantt\",\"class diagram\",\"git graph\"],\"scripts\":{\"build:development\":\"webpack --progress --colors\",\"build:production\":\"yarn build:development -p --config webpack.config.prod.babel.js\",\"build\":\"yarn build:development && yarn build:production\",\"postbuild\":\"documentation build src/mermaidAPI.js src/config.js --shallow -f md --markdown-toc false -o docs/Setup.md\",\"build:watch\":\"yarn build --watch\",\"minify\":\"minify ./dist/mermaid.js > ./dist/mermaid.min.js\",\"release\":\"yarn build\",\"lint\":\"eslint src\",\"e2e:depr\":\"yarn lint && jest e2e --config e2e/jest.config.js\",\"cypress\":\"percy exec -- cypress run\",\"e2e\":\"start-server-and-test dev http://localhost:9000/ cypress\",\"e2e-upd\":\"yarn lint && jest e2e -u --config e2e/jest.config.js\",\"dev\":\"webpack-dev-server --config webpack.config.e2e.js\",\"test\":\"yarn lint && jest src/.*\",\"test:watch\":\"jest --watch src\",\"prepublishOnly\":\"yarn build && yarn test && yarn e2e\",\"prepush\":\"yarn test\",\"prepare\":\"yarn build\"},\"repository\":{\"type\":\"git\",\"url\":\"https://github.com/knsv/mermaid\"},\"author\":\"Knut Sveidqvist\",\"license\":\"MIT\",\"standard\":{\"ignore\":[\"**/parser/*.js\",\"dist/**/*.js\",\"cypress/**/*.js\"],\"globals\":[\"page\"]},\"dependencies\":{\"@braintree/sanitize-url\":\"^3.1.0\",\"crypto-random-string\":\"^3.0.1\",\"d3\":\"^5.7.0\",\"dagre\":\"^0.8.4\",\"dagre-d3\":\"^0.6.4\",\"entity-decode\":\"^2.0.2\",\"graphlib\":\"^2.1.7\",\"he\":\"^1.2.0\",\"minify\":\"^4.1.1\",\"moment-mini\":\"^2.22.1\",\"scope-css\":\"^1.2.1\"},\"devDependencies\":{\"@babel/core\":\"^7.2.2\",\"@babel/preset-env\":\"^7.8.4\",\"@babel/register\":\"^7.0.0\",\"@percy/cypress\":\"*\",\"babel-core\":\"7.0.0-bridge.0\",\"babel-jest\":\"^24.9.0\",\"babel-loader\":\"^8.0.4\",\"coveralls\":\"^3.0.2\",\"css-loader\":\"^2.0.1\",\"css-to-string-loader\":\"^0.1.3\",\"cypress\":\"4.0.1\",\"documentation\":\"^12.0.1\",\"eslint\":\"^6.3.0\",\"eslint-config-prettier\":\"^6.3.0\",\"eslint-plugin-prettier\":\"^3.1.0\",\"husky\":\"^1.2.1\",\"identity-obj-proxy\":\"^3.0.0\",\"jest\":\"^24.9.0\",\"jison\":\"^0.4.18\",\"moment\":\"^2.23.0\",\"node-sass\":\"^4.12.0\",\"prettier\":\"^1.18.2\",\"puppeteer\":\"^1.17.0\",\"sass-loader\":\"^7.1.0\",\"start-server-and-test\":\"^1.10.6\",\"terser-webpack-plugin\":\"^2.2.2\",\"webpack\":\"^4.41.2\",\"webpack-bundle-analyzer\":\"^3.7.0\",\"webpack-cli\":\"^3.1.2\",\"webpack-dev-server\":\"^3.4.1\",\"webpack-node-externals\":\"^1.7.2\",\"yarn-upgrade-all\":\"^0.5.0\"},\"files\":[\"dist\"],\"yarn-upgrade-all\":{\"ignore\":[\"babel-core\"]},\"sideEffects\":[\"**/*.css\",\"**/*.scss\"]}"); ->>>>>>> master +module.exports = JSON.parse("{\"name\":\"mermaid\",\"version\":\"8.6.4\",\"description\":\"Markdownish syntax for generating flowcharts, sequence diagrams, class diagrams, gantt charts and git graphs.\",\"main\":\"dist/mermaid.core.js\",\"keywords\":[\"diagram\",\"markdown\",\"flowchart\",\"sequence diagram\",\"gantt\",\"class diagram\",\"git graph\"],\"scripts\":{\"build:development\":\"webpack --progress --colors\",\"build:production\":\"yarn build:development -p --config webpack.config.prod.babel.js\",\"build\":\"yarn build:development && yarn build:production\",\"postbuild\":\"documentation build src/mermaidAPI.js src/config.js --shallow -f md --markdown-toc false -o docs/Setup.md\",\"build:watch\":\"yarn build --watch\",\"minify\":\"minify ./dist/mermaid.js > ./dist/mermaid.min.js\",\"release\":\"yarn build\",\"lint\":\"eslint src\",\"e2e:depr\":\"yarn lint && jest e2e --config e2e/jest.config.js\",\"cypress\":\"percy exec -- cypress run\",\"e2e\":\"start-server-and-test dev http://localhost:9000/ cypress\",\"e2e-upd\":\"yarn lint && jest e2e -u --config e2e/jest.config.js\",\"dev\":\"webpack-dev-server --config webpack.config.e2e.js\",\"test\":\"yarn lint && jest src/.*\",\"test:watch\":\"jest --watch src\",\"prepublishOnly\":\"yarn build && yarn test && yarn e2e\",\"prepare\":\"yarn build\"},\"repository\":{\"type\":\"git\",\"url\":\"https://github.com/knsv/mermaid\"},\"author\":\"Knut Sveidqvist\",\"license\":\"MIT\",\"standard\":{\"ignore\":[\"**/parser/*.js\",\"dist/**/*.js\",\"cypress/**/*.js\"],\"globals\":[\"page\"]},\"dependencies\":{\"@braintree/sanitize-url\":\"^3.1.0\",\"d3\":\"^5.7.0\",\"dagre\":\"^0.8.4\",\"dagre-d3\":\"^0.6.4\",\"entity-decode\":\"^2.0.2\",\"graphlib\":\"^2.1.7\",\"he\":\"^1.2.0\",\"khroma\":\"^1.1.0\",\"minify\":\"^4.1.1\",\"moment-mini\":\"^2.22.1\",\"stylis\":\"^3.5.2\"},\"devDependencies\":{\"@babel/core\":\"^7.2.2\",\"@babel/preset-env\":\"^7.8.4\",\"@babel/register\":\"^7.0.0\",\"@percy/cypress\":\"*\",\"babel-core\":\"7.0.0-bridge.0\",\"babel-jest\":\"^24.9.0\",\"babel-loader\":\"^8.0.4\",\"coveralls\":\"^3.0.2\",\"css-loader\":\"^2.0.1\",\"css-to-string-loader\":\"^0.1.3\",\"cypress\":\"4.0.1\",\"documentation\":\"^12.0.1\",\"eslint\":\"^6.3.0\",\"eslint-config-prettier\":\"^6.3.0\",\"eslint-plugin-prettier\":\"^3.1.0\",\"husky\":\"^1.2.1\",\"identity-obj-proxy\":\"^3.0.0\",\"jest\":\"^24.9.0\",\"jison\":\"^0.4.18\",\"moment\":\"^2.23.0\",\"node-sass\":\"^4.12.0\",\"prettier\":\"^1.18.2\",\"puppeteer\":\"^1.17.0\",\"sass-loader\":\"^7.1.0\",\"start-server-and-test\":\"^1.10.6\",\"terser-webpack-plugin\":\"^2.2.2\",\"webpack\":\"^4.41.2\",\"webpack-bundle-analyzer\":\"^3.7.0\",\"webpack-cli\":\"^3.1.2\",\"webpack-dev-server\":\"^3.4.1\",\"webpack-node-externals\":\"^1.7.2\",\"yarn-upgrade-all\":\"^0.5.0\"},\"files\":[\"dist\"],\"yarn-upgrade-all\":{\"ignore\":[\"babel-core\"]},\"sideEffects\":[\"**/*.css\",\"**/*.scss\"],\"husky\":{\"hooks\":{\"pre-push\":\"yarn test\"}}}"); /***/ }), diff --git a/dist/mermaid.core.js.map b/dist/mermaid.core.js.map index e9a049586..278555c44 100644 --- a/dist/mermaid.core.js.map +++ b/dist/mermaid.core.js.map @@ -1,5 +1 @@ -<<<<<<< HEAD -{"version":3,"sources":["webpack://mermaid/webpack/universalModuleDefinition","webpack://mermaid/webpack/bootstrap","webpack://mermaid/./node_modules/path-browserify/index.js","webpack://mermaid/./node_modules/process/browser.js","webpack://mermaid/(webpack)/buildin/module.js","webpack://mermaid/./src/config.js","webpack://mermaid/./src/dagre-wrapper/clusters.js","webpack://mermaid/./src/dagre-wrapper/createLabel.js","webpack://mermaid/./src/dagre-wrapper/edges.js","webpack://mermaid/./src/dagre-wrapper/index.js","webpack://mermaid/./src/dagre-wrapper/intersect/index.js","webpack://mermaid/./src/dagre-wrapper/intersect/intersect-circle.js","webpack://mermaid/./src/dagre-wrapper/intersect/intersect-ellipse.js","webpack://mermaid/./src/dagre-wrapper/intersect/intersect-line.js","webpack://mermaid/./src/dagre-wrapper/intersect/intersect-node.js","webpack://mermaid/./src/dagre-wrapper/intersect/intersect-polygon.js","webpack://mermaid/./src/dagre-wrapper/intersect/intersect-rect.js","webpack://mermaid/./src/dagre-wrapper/markers.js","webpack://mermaid/./src/dagre-wrapper/mermaid-graphlib.js","webpack://mermaid/./src/dagre-wrapper/nodes.js","webpack://mermaid/./src/dagre-wrapper/shapes/note.js","webpack://mermaid/./src/dagre-wrapper/shapes/util.js","webpack://mermaid/./src/diagrams/class/classDb.js","webpack://mermaid/./src/diagrams/class/classRenderer-v2.js","webpack://mermaid/./src/diagrams/class/classRenderer.js","webpack://mermaid/./src/diagrams/class/parser/classDiagram.jison","webpack://mermaid/./src/diagrams/class/styles.js","webpack://mermaid/./src/diagrams/class/svgDraw.js","webpack://mermaid/./src/diagrams/common/common.js","webpack://mermaid/./src/diagrams/er/erDb.js","webpack://mermaid/./src/diagrams/er/erMarkers.js","webpack://mermaid/./src/diagrams/er/erRenderer.js","webpack://mermaid/./src/diagrams/er/parser/erDiagram.jison","webpack://mermaid/./src/diagrams/er/styles.js","webpack://mermaid/./src/diagrams/flowchart/flowChartShapes.js","webpack://mermaid/./src/diagrams/flowchart/flowDb.js","webpack://mermaid/./src/diagrams/flowchart/flowRenderer-v2.js","webpack://mermaid/./src/diagrams/flowchart/flowRenderer.js","webpack://mermaid/./src/diagrams/flowchart/parser/flow.jison","webpack://mermaid/./src/diagrams/flowchart/styles.js","webpack://mermaid/./src/diagrams/gantt/ganttDb.js","webpack://mermaid/./src/diagrams/gantt/ganttRenderer.js","webpack://mermaid/./src/diagrams/gantt/parser/gantt.jison","webpack://mermaid/./src/diagrams/gantt/styles.js","webpack://mermaid/./src/diagrams/git/gitGraphAst.js","webpack://mermaid/./src/diagrams/git/gitGraphRenderer.js","webpack://mermaid/./src/diagrams/git/parser/gitGraph.jison","webpack://mermaid/./src/diagrams/git/styles.js","webpack://mermaid/./src/diagrams/info/infoDb.js","webpack://mermaid/./src/diagrams/info/infoRenderer.js","webpack://mermaid/./src/diagrams/info/parser/info.jison","webpack://mermaid/./src/diagrams/info/styles.js","webpack://mermaid/./src/diagrams/pie/parser/pie.jison","webpack://mermaid/./src/diagrams/pie/pieDb.js","webpack://mermaid/./src/diagrams/pie/pieRenderer.js","webpack://mermaid/./src/diagrams/pie/styles.js","webpack://mermaid/./src/diagrams/sequence/parser/sequenceDiagram.jison","webpack://mermaid/./src/diagrams/sequence/sequenceDb.js","webpack://mermaid/./src/diagrams/sequence/sequenceRenderer.js","webpack://mermaid/./src/diagrams/sequence/styles.js","webpack://mermaid/./src/diagrams/sequence/svgDraw.js","webpack://mermaid/./src/diagrams/state/id-cache.js","webpack://mermaid/./src/diagrams/state/parser/stateDiagram.jison","webpack://mermaid/./src/diagrams/state/shapes.js","webpack://mermaid/./src/diagrams/state/stateDb.js","webpack://mermaid/./src/diagrams/state/stateRenderer-v2.js","webpack://mermaid/./src/diagrams/state/stateRenderer.js","webpack://mermaid/./src/diagrams/state/styles.js","webpack://mermaid/./src/diagrams/user-journey/journeyDb.js","webpack://mermaid/./src/diagrams/user-journey/journeyRenderer.js","webpack://mermaid/./src/diagrams/user-journey/parser/journey.jison","webpack://mermaid/./src/diagrams/user-journey/styles.js","webpack://mermaid/./src/diagrams/user-journey/svgDraw.js","webpack://mermaid/./src/errorRenderer.js","webpack://mermaid/./src/logger.js","webpack://mermaid/./src/mermaid.js","webpack://mermaid/./src/mermaidAPI.js","webpack://mermaid/./src/styles.js","webpack://mermaid/./src/themes/index.js","webpack://mermaid/./src/themes/theme-base.js","webpack://mermaid/./src/themes/theme-dark.js","webpack://mermaid/./src/themes/theme-default.js","webpack://mermaid/./src/themes/theme-forest.js","webpack://mermaid/./src/themes/theme-neutral.js","webpack://mermaid/./src/utils.js","webpack://mermaid/external \"@braintree/sanitize-url\"","webpack://mermaid/external \"d3\"","webpack://mermaid/external \"dagre\"","webpack://mermaid/external \"dagre-d3\"","webpack://mermaid/external \"dagre-d3/lib/label/add-html-label.js\"","webpack://mermaid/external \"entity-decode/browser\"","webpack://mermaid/external \"graphlib\"","webpack://mermaid/external \"khroma\"","webpack://mermaid/external \"moment-mini\"","webpack://mermaid/external \"stylis\""],"names":["handleThemeVariables","value","theme","getThemeVariables","default","manipulators","themeVariables","config","themeCSS","undefined","maxTextSize","fontFamily","logLevel","securityLevel","startOnLoad","arrowMarkerAbsolute","secure","flowchart","diagramPadding","htmlLabels","nodeSpacing","rankSpacing","curve","padding","sequence","activationWidth","diagramMarginX","diagramMarginY","actorMargin","width","height","boxMargin","boxTextMargin","noteMargin","messageMargin","messageAlign","mirrorActors","bottomMarginAdj","useMaxWidth","rightAngles","showSequenceNumbers","actorFontSize","actorFontFamily","actorFontWeight","noteFontSize","noteFontFamily","noteFontWeight","noteAlign","messageFontSize","messageFontFamily","messageFontWeight","wrap","wrapPadding","labelBoxWidth","labelBoxHeight","messageFont","fontSize","fontWeight","noteFont","actorFont","gantt","titleTopMargin","barHeight","barGap","topPadding","leftPadding","gridLineStartPadding","numberSectionStyles","axisFormat","journey","class","git","state","dividerMargin","sizeUnit","textHeight","titleShift","forkWidth","forkHeight","miniPadding","fontSizeFactor","labelHeight","edgeLengthFactor","compositTitleSize","radius","er","layoutDirection","minEntityWidth","minEntityHeight","entityPadding","stroke","fill","defaultConfig","Object","freeze","siteConfig","assignWithDepth","currentConfig","setSiteConfig","conf","keys","forEach","key","manipulator","clobber","getSiteConfig","setConfig","sanitize","getConfig","options","logger","warn","reset","configApi","rect","parent","node","log","trace","id","shapeSvg","insert","attr","label","text","appendChild","createLabel","labelText","labelStyle","bbox","getBBox","div","children","dv","select","getBoundingClientRect","halfPadding","JSON","stringify","rx","ry","x","y","rectBox","intersect","point","intersectRect","noteGroup","roundedWithTitle","classes","innerRect","append","divider","shapes","clusterElems","insertCluster","elem","shape","getClusterTitleWidth","removeChild","clear","positionCluster","info","el","applyStyle","dom","styleFn","addHtmlLabel","fo","document","createElementNS","labelClass","isNode","html","style","_vertexText","isTitle","vertexText","replace","s","vertexNode","svgLabel","setAttribute","rows","split","Array","isArray","j","length","tspan","setAttributeNS","textContent","trim","edgeLabels","insertEdgeLabel","edge","labelElement","edgeLabel","positionEdgeLabel","points","pos","utils","calcLabelPosition","outsideNode","dx","Math","abs","dy","w","h","intersection","outsidePoint","insidePoint","r","edges","x1","x2","y1","y2","Q","R","q","res","insertEdge","e","clusterDb","diagramType","graph","pointsHasChanged","tail","v","head","slice","unshift","push","toCluster","lastPointOutside","isInside","inter","pointPresent","p","find","fromCluster","updatedPoints","i","insterection","lineData","filter","Number","isNaN","lineFunction","line","d","curveBasis","strokeClasses","thickness","pattern","svgPath","url","window","location","protocol","host","pathname","search","arrowTypeStart","arrowTypeEnd","recursiveRender","_elem","diagramtype","parentCluster","graphlib","json","write","dir","rankdir","nodes","clusters","edgePaths","data","parse","clusterData","setNode","setParent","clusterNode","newEl","updateNodeBounds","setNodeElem","findNonClusterChild","insertNode","name","dagre","layout","positionNode","updatedPath","render","markers","insertMarkers","clearNodes","clearEdges","clearClusters","clearGraphlib","adjustClustersAndEdges","circle","ellipse","polygon","intersectCircle","intersectEllipse","cx","cy","px","py","det","sqrt","intersectLine","p1","p2","q1","q2","a1","a2","b1","b2","c1","c2","r1","r2","r3","r4","denom","offset","num","sameSign","module","exports","intersectNode","console","intersectPolygon","polyPoints","intersections","minX","POSITIVE_INFINITY","minY","entry","min","left","top","sort","pdx","pdy","distp","qdx","qdy","distq","sx","sy","markerArray","type","markerName","extension","composition","aggregation","dependency","cross","barb","decendants","parents","isDecendant","ancenstorId","debug","indexOf","edgeInCluster","clusterId","copy","newGraph","rootId","setEdge","error","removeNode","extractDecendants","concat","validate","_id","getAnchorId","externalConnections","depth","d1","d2","extractor","removeEdge","hasChildren","graphSettings","clusterGraph","Graph","multigraph","compound","setGraph","nodesep","ranksep","marginx","marginy","setDefaultEdgeLabel","question","labelHelper","questionElem","insertPolygonShape","hexagon","f","m","hex","rect_left_inv_arrow","lean_right","lean_left","trapezoid","inv_trapezoid","rect_right_inv_arrow","cylinder","rectWithTitle","innerLine","text2","flat","textRows","titleBox","descr","join","stadium","subroutine","start","forkJoin","end","innerCircle","class_box","rowPadding","lineHeight","topLine","bottomLine","maxWidth","maxHeight","labelContainer","verticalPos","hasInterface","classData","annotations","interfaceLabel","interfaceBBox","classTitleLabel","classTitleBBox","classAttributes","members","str","lbl","classMethods","methods","diffX","note","fork","nodeElems","_classes","element","map","MERMAID_DOM_ID_PREFIX","relations","classCounter","funs","splitClassNameAndType","genericType","className","addClass","classId","cssClasses","domId","lookUpDomId","classKeys","setupToolTips","getClass","getClasses","getRelations","addRelation","relation","id1","id2","addAnnotation","annotation","validatedClassName","addMember","member","theClass","memberString","startsWith","endsWith","substring","addMembers","reverse","cleanupLabel","substr","setCssClass","ids","match","setLink","linkStr","tooltip","link","formatUrl","common","sanitizeText","setClickEvent","functionName","setClickFunc","elemId","querySelector","addEventListener","runFunc","bindFunctions","fun","lineType","LINE","DOTTED_LINE","relationType","AGGREGATION","EXTENSION","COMPOSITION","DEPENDENCY","tooltipElem","_groups","svg","selectAll","on","title","transition","duration","scrollX","right","scrollY","body","scrollTop","classed","parser","yy","classDb","idCache","addClasses","g","vertex","classStr","styles","radious","_shape","addRelations","cnt","defaultStyle","defaultLabelStyle","edgeData","arrowhead","getArrowMarker","type1","type2","getStylesFromArray","interpolate","interpolateToCurve","curveLinear","defaultInterpolate","arrowheadStyle","labelpos","labelType","lineBreakRegex","getGraphId","setConf","cnf","drawOld","diagram","isMultiGraph","classDef","svgDraw","drawClass","drawEdge","svgBounds","vBox","draw","_label","labels","querySelectorAll","k","dim","insertBefore","firstChild","marker","getStyles","nodeBorder","classText","mainBkg","nodeBkg","lineColor","edgeCount","path","getRelationType","l","labelPosition","p1_card_x","p1_card_y","p2_card_x","p2_card_y","cardinality_1_point","calcCardinalityPosition","cardinality_2_point","bounds","relationTitle1","relationTitle2","cssClassStr","classInfo","isFirst","titleText2","classTitleString","classTitle","titleHeight","membersLine","addTspan","membersBox","methodsLine","method","classBox","rectWidth","childNodes","parseMember","fieldRegEx","methodRegEx","fieldMatch","methodMatch","buildFieldDisplay","buildMethodDisplay","buildLegacyDisplay","parsedText","displayText","visibility","fieldType","parseGenericTypes","fieldName","err","cssStyle","methodName","parameters","classifier","returnType","parseClassifier","memberText","methodStart","methodEnd","firstChar","textEl","txt","tSpan","cleanedText","getRows","breakToPlaceholder","removeScript","rs","idx","level","placeholderToBreak","hasBreaks","test","splitBreaks","entities","relationships","Cardinality","ZERO_OR_ONE","ZERO_OR_MORE","ONE_OR_MORE","ONLY_ONE","Identification","NON_IDENTIFYING","IDENTIFYING","addEntity","getEntities","addRelationship","entA","rolA","entB","rSpec","rel","entityA","roleA","entityB","relSpec","getRelationships","setTitle","getTitle","ERMarkers","ONLY_ONE_START","ONLY_ONE_END","ZERO_OR_ONE_START","ZERO_OR_ONE_END","ONE_OR_MORE_START","ONE_OR_MORE_END","ZERO_OR_MORE_START","ZERO_OR_MORE_END","drawEntities","svgNode","firstOne","groupNode","textId","textNode","textBBox","entityWidth","max","entityHeight","rectNode","rectBBox","adjustEntities","getEdgeName","addRelationships","relationship","relCnt","drawRelationshipFromLayout","relType","erDb","cardA","erMarkers","cardB","len","getTotalLength","labelPoint","getPointAtLength","labelId","labelNode","labelBBox","erParser","directed","edgesep","firstEntity","edgeLabelBackground","dagreD3","addToRender","addToRenderV2","addShape","vertices","subGraphs","subGraphLookup","tooltips","subCount","firstGraphFlag","direction","addVertex","addSingleLink","_start","_end","linktext","addLink","updateLinkInterpolate","positions","interp","updateLink","isSubstringInArray","textStyles","newStyle1","newStyle2","setDirection","setClass","setTooltip","setClickFun","getTooltip","getDirection","getVertices","getEdges","addSubGraph","list","_title","uniq","a","prims","boolean","number","string","objs","item","hasOwnProperty","nodeList","apply","subGraph","getPosForId","secCount","posCrossRef","indexNodes2","result","count","posCount","childPos","getDepthFirstPos","indexNodes","getSubGraphs","firstGraph","destructStartLink","_str","destructEndLink","destructLink","_startStr","startInfo","lex","addVertices","vert","svgId","parentNode","addEdges","defaultStyles","linkId","linkNameStart","linkNameEnd","flowDb","flow","subG","linkNode","Render","flowChartShapes","arrows","none","normal","util","clusterRects","clusterEl","xPos","baseVal","yPos","cluster","te","classList","add","textColor","arrowheadColor","secondBkg","clusterBorder","titleColor","border2","dateFormat","todayMarker","excludes","sections","tasks","currentSection","tags","inclusiveEndDates","lastOrder","taskCnt","lastTask","lastTaskID","rawTasks","setAxisFormat","getAxisFormat","setTodayMarker","getTodayMarker","setDateFormat","enableInclusiveEndDates","endDatesAreInclusive","getDateFormat","setExcludes","toLowerCase","getExcludes","addSection","getSections","getTasks","allItemsPricessed","compileTasks","maxDepth","iterationCount","isInvalidDate","date","isoWeekday","format","checkTaskDates","task","manualEndTime","startTime","moment","endTime","renderEndTime","fixTaskDates","toDate","invalid","getStartDate","prevTime","re","afterStatement","exec","latestEndingTask","findTaskById","dt","Date","setHours","mDate","isValid","durationToDate","durationStatement","relativeTime","getEndDate","inclusive","parseId","idStr","compileData","prevTask","dataStr","ds","getTaskTags","endTimeData","parseData","prevTaskId","startData","taskDb","addTask","rawTask","section","processed","raw","taskInfo","active","done","crit","milestone","order","addTaskOrg","newTask","description","compileTask","allProcessed","_linkStr","sanitizeUrl","pushFun","open","functionArgs","argList","charAt","callbackFunction","matchFound","t","regex","RegExp","shift","ganttDb","rightPadding","getElementById","parentElement","offsetWidth","useWidth","taskArray","timeScale","scaleTime","domain","rangeRound","categories","catsUnfiltered","checkUnique","taskCompare","b","taskA","taskB","makeGant","pageWidth","pageHeight","gap","colorScale","scaleLinear","range","interpolateHcl","makeGrid","drawRects","vertLabels","drawToday","theArray","theGap","theTopPad","theSidePad","theBarHeight","theColorScale","enter","rectangles","toString","secNum","taskClass","startX","endX","textWidth","taskType","xAxis","axisBottom","tickSize","tickFormat","timeFormat","call","numOccurances","prevGap","getCount","todayG","today","todayLine","arr","hash","getCounts","obj","word","sectionBkgColor","sectionBkgColor2","altSectionBkgColor","gridColor","todayLineColor","taskTextDarkColor","taskTextClickableColor","taskTextColor","taskBkgColor","taskBorderColor","taskTextOutsideColor","activeTaskBkgColor","activeTaskBorderColor","doneTaskBorderColor","doneTaskBkgColor","critBorderColor","critBkgColor","commits","branches","master","curBranch","seq","getId","random","isfastforwardable","currentCommit","otherCommit","isReachableFrom","currentSeq","otherSeq","uniqBy","fn","recordMap","create","reduce","out","setOptions","rawOptString","message","getOptions","commit","msg","branch","merge","otherBranch","checkout","commitRef","ref","parentCount","parseInt","upsert","newval","index","splice","prettyPrintCommitHistory","commitArr","c","newCommit","nextCommit","prettyPrint","getCommitsArray","getBranchesAsObjArray","branchArr","getBranches","getCommits","o","getCurrentBranch","getHead","allCommitsDict","branchNum","nodeFillColor","nodeStrokeWidth","nodeStrokeColor","lineStrokeWidth","branchOffset","leftMargin","branchColors","nodeRadius","nodeLabel","apiConfig","svgCreateDefs","svgDrawLine","colorIdx","color","lineGen","round","getElementCoords","coords","ctm","getCTM","xn","yn","svgDrawLineForCommits","fromId","toId","fromBbox","toBbox","lineStart","lineEnd","cloneNode","selector","renderCommitHistory","commitid","numCommits","size","branchName","renderLines","branchColor","lineDrawn","ver","gitGraphParser","db","assign","setMessage","getMessage","setInfo","inf","getInfo","infoParser","cleanupValue","pieParser","pieData","margin","legendRectSize","legendSpacing","sum","scaleOrdinal","schemeSet2","pie","d3pie","dataReady","entries","arcGenerator","arc","innerRadius","outerRadius","toFixed","centroid","legend","horz","prevActor","actors","messages","notes","titleWrapped","sequenceNumbersEnabled","wrapEnabled","parseDirective","statement","context","mermaidAPI","addActor","old","autoWrap","nextActor","activationCount","part","LINETYPE","ACTIVE_START","from","actor","ACTIVE_END","addMessage","idFrom","idTo","answer","to","addSignal","messageType","Error","token","loc","first_line","last_line","first_column","last_column","expected","getMessages","getActors","getActor","getActorKeys","getTitleWrapped","enableSequenceNumbers","setWrap","wrapSetting","parseMessage","SOLID","DOTTED","NOTE","SOLID_CROSS","DOTTED_CROSS","SOLID_OPEN","DOTTED_OPEN","LOOP_START","LOOP_END","ALT_START","ALT_ELSE","ALT_END","OPT_START","OPT_END","PAR_START","PAR_AND","PAR_END","RECT_START","RECT_END","ARROWTYPE","FILLED","OPEN","PLACEMENT","LEFTOF","RIGHTOF","OVER","addNote","placement","titleWrap","param","signalType","loopText","optText","altText","parText","sequenceDb","startx","stopx","starty","stopy","sequenceItems","activations","models","getHeight","loops","it","acc","actorModel","addLoop","loopModel","msgModel","noteModel","lastActor","lastLoop","lastMessage","lastNote","init","updateVal","val","updateBounds","_self","updateFn","updateItemBounds","n","_startx","_stopx","_starty","_stopy","newActivation","actorRect","stackedSize","actorActivations","anchored","anchorElement","endActivation","lastActorActivationIdx","activation","lastIndexOf","createLoop","newLoop","endLoop","pop","addSectionToLoop","loop","sectionTitles","getVerticalPos","bumpVerticalPos","bump","getBounds","drawNote","getNoteRect","rectElem","drawRect","textObj","getTextObj","anchor","textMargin","valign","textElem","drawText","curr","drawMessage","sequenceIndex","lines","textDims","calculateTextDimensions","totalOffset","lineStarty","fromBounds","toBounds","drawActors","actorKeys","prevWidth","prevMargin","drawActor","activationBounds","actorObj","adjustLoopHeightForWrap","loopWidths","preMargin","postMargin","addLoopFn","heightAdjust","loopWidth","textConf","wrapLabel","maxMessageWidthPerActor","getMaxMessageWidthPerActor","calculateActorMargins","calculateLoopBounds","insertArrowHead","insertArrowCrossHead","insertSequenceNumber","activeEnd","activationData","drawActivation","drawLoop","drawBackgroundRect","includes","box","actorLines","extraVertForTitle","isNote","isMessage","textFont","wrappedMessage","messageDimensions","messageWidth","actorToMessageWidth","prop","actDims","actorKey","actorWidth","buildNoteModel","shouldWrap","textDimensions","buildMessageModel","process","fromIdx","toIdx","allBounds","boundedWidth","msgDims","stack","current","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","toAdd","enabled","stk","actorBorder","actorBkg","actorTextColor","actorLineColor","signalColor","sequenceNumberColor","signalTextColor","labelBoxBorderColor","labelBoxBkgColor","labelTextColor","loopTextColor","noteBorderColor","noteBkgColor","noteTextColor","activationBkgColor","activationBorderColor","rectData","textData","prevTextHeight","textElems","yfunc","dominantBaseline","alignmentBaseline","span","drawLabel","txtObject","genPoints","cut","actorCnt","center","_drawTextCandidateFunc","drawLoopLine","sectionHeight","lower","defs","byText","content","textAttrs","_setTextAttrs","byTspan","byFo","toText","fromTextAttrsDict","textPlacement","set","get","drawStartState","drawDivider","drawSimpleState","stateDef","drawDescrState","descriptions","isSecond","descrLine","descrBox","addTitleAndBox","altBkg","pad","dblPad","orgBox","orgWidth","orgX","titleWidth","graphBox","doc","lineY","drawEndState","drawForkJoinState","parentId","tmp","nText","_drawLongText","_text","tHeight","textBounds","drawState","stateInfo","stateBox","stateDb","titleRows","boundstmp","boxHeight","heightAdj","clone","rootDoc","setRootDoc","getRootDoc","docTranslator","first","stmt","state1","state2","currentDoc","newNode","generateId","docNode","getRootDocV2","extract","_doc","addState","newDoc","states","documents","root","currentDocument","startCnt","endCnt","addDescription","des","getState","getStates","logDocuments","_id1","_id2","_descr","theState","dividerCnt","getDividerId","trimColon","nodeDb","setupNode","altFlag","nodeData","noteData","groupData","position","arrowType","setupDoc","startId","endId","transformationLog","renderDoc","getLabelWidth","edgeFreeDoc","ranker","nodeSep","sub","boxBounds","noteDef","nodeCount","svgElem","dividers","pWidth","pShift","getAttribute","labelColor","background","altBackground","allItemsProcessed","updateActors","tempActors","people","unique","Set","taskData","pieces","score","peeps","peopleList","journeyDb","taskMargin","taskFontSize","taskFontFamily","actorColours","sectionFills","sectionColours","drawActorLegend","person","colour","circleData","drawCircle","labelData","LEFT_MARGIN","initGraphics","actorNames","actorPos","actorName","drawTasks","fills","textColours","lastSection","sectionVHeight","taskPos","sectionNumber","drawSection","taskActors","drawTask","fillType0","fillType1","fillType2","fillType3","fillType4","fillType5","fillType6","fillType7","drawFace","faceData","circleElement","face","smile","d3arc","startAngle","PI","endAngle","sad","ambivalent","labelMargin","taskCount","graphics","LEVELS","fatal","setLogLevel","bind","time","arguments","mermaid","sequenceConfig","callback","Node","initialize","ganttConfig","now","innerHTML","decode","detectInit","svgCode","parseError","contentLoaded","graphInit","reinitialize","graphType","detectType","gitGraphAst","flowParser","sequenceParser","ganttParser","classParser","stateParser","infoDb","pieDb","journeyParser","encodeEntities","innerTxt","isInt","decodeEntities","_txt","cb","container","updateRendererConfigs","existingSvg","remove","userStyles","altFontFamily","flowRenderer","stylis","Stylis","rules","style1","createElement","gitGraphRenderer","flowRendererV2","sequenceDiagram","sequenceRenderer","ganttRenderer","classRenderer","classRendererV2","stateRenderer","stateRendererV2","infoRenderer","pkg","version","pieRenderer","erRenderer","journeyRenderer","errorRenderer","currentDirective","args","handleDirective","directive","globalReset","themes","classDiagram","stateDiagram","calcThemeVariables","userOverRides","calcColors","errorBkgColor","errorTextColor","base","baseThemeVariables","dark","darkThemeVariables","defaultThemeVariables","forest","forestThemeVariables","neutral","neutralThemeVariables","Theme","primaryColor","secondaryColor","tertiaryColor","lighten","relationColor","border1","labelBackground","updateColors","darken","clusterBkg","defaultLinkColor","taskTextLightColor","adjust","overrides","userOverrides","calculate","mainContrastColor","darkTextColor","invert","rgba","contrast","critical","d3CurveTypes","curveBasisClosed","curveBasisOpen","curveLinearClosed","curveMonotoneX","curveMonotoneY","curveNatural","curveStep","curveStepAfter","curveStepBefore","directiveWithoutOpen","anyComment","inits","detectDirective","results","commentWithoutDirectives","source","lastIndex","memoize","resolver","cache","defaultCurve","curveName","toUpperCase","arrPaths","fnName","params","distance","pow","traverseEdge","prevPoint","totalDistance","remainingDistance","vectorDistance","distanceRatio","isRelationTypePresent","initialPosition","distanceToCardinalityPoint","angle","atan2","cardinalityPosition","sin","cos","makeid","characters","charactersLength","floor","dst","src","drawSimpleText","joinWith","words","completedLines","nextLine","wordLength","calculateTextWidth","nextLineLength","breakString","hyphenatedStrings","remainingWord","Boolean","currentWord","isLastWord","hyphenCharacter","currentLine","character","lineWidth","currentCharacter","isLastLine","hyphenatedNextLine","calculateTextHeight","fontFamilies","dims","cheight","bBox"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,O;QCVA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;;;QAGA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA,0CAA0C,gCAAgC;QAC1E;QACA;;QAEA;QACA;QACA;QACA,wDAAwD,kBAAkB;QAC1E;QACA,iDAAiD,cAAc;QAC/D;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,yCAAyC,iCAAiC;QAC1E,gHAAgH,mBAAmB,EAAE;QACrI;QACA;;QAEA;QACA;QACA;QACA,2BAA2B,0BAA0B,EAAE;QACvD,iCAAiC,eAAe;QAChD;QACA;QACA;;QAEA;QACA,sDAAsD,+DAA+D;;QAErH;QACA;;;QAGA;QACA;;;;;;;;;;;;;;;;;;;;;;;AClFA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,QAAQ;AACxC;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU,MAAM;AAChB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,oCAAoC,8BAA8B;AAClE;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU,oBAAoB;AAC9B;AACA;;AAEA;AACA,UAAU,UAAU;AACpB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;;AAEA;AACA,+BAA+B,sBAAsB;AACrD;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,QAAQ;AACvC;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,2BAA2B,QAAQ;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,QAAQ;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,eAAe;AAClC;AACA;AACA;AACA;;AAEA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC7SA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,qCAAqC;;AAErC;AACA;AACA;;AAEA,2BAA2B;AAC3B;AACA;AACA;AACA,4BAA4B,UAAU;;;;;;;;;;;;ACvLtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;ACrBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;CAGA;AACA;AAEA;AACA;AACA;;AAEA,IAAMA,oBAAoB,GAAG,SAAvBA,oBAAuB,CAAAC,KAAK,EAAI;AACpC,SAAOC,+CAAK,CAACD,KAAD,CAAL,GAAeC,+CAAK,CAACD,KAAD,CAAL,CAAaE,iBAAb,EAAf,GAAkDD,+CAAK,CAACE,OAAN,CAAcD,iBAAd,EAAzD;AACD,CAFD;;AAIA,IAAME,YAAY,GAAG;AACnBC,gBAAc,EAAEN;AADG,CAArB;AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAk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,GAxFoC,CA0FrC;;;AACA,MAAMmiB,IAAI,aAAMD,SAAS,CAAClb,CAAV,GAActH,OAApB,cAA+BwiB,SAAS,CAACjb,CAAV,GAAcvH,OAA7C,cAAwDM,KAAxD,cAAiEC,MAAjE,CAAV;AACAgF,gDAAM,CAACmQ,KAAP,mBAAwB+M,IAAxB;AACAP,SAAO,CAAC/b,IAAR,CAAa,SAAb,EAAwBsc,IAAxB;AACD,CA9FM;AAgGQ;AACbV,SAAO,EAAPA,OADa;AAEbW,MAAI,EAAJA;AAFa,CAAf,E;;;;;;;;;;;ACtPA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA,eAAe,kCAAkC;AACjD,iBAAiB,kCAAkC;AACnD;AACA;AACA;AACA,qBAAqB,IAAI;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mJAAmJ;AACnJ,SAAS;;AAET;AACA;AACA,qBAAqB,+BAA+B;AACpD;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW,YAAY,IAAI,WAAW,SAAS;AACvE,cAAc,0BAA0B,EAAE;AAC1C,MAAM;AACN,WAAW,4yBAA4yB;AACvzB,aAAa,2dAA2d;AACxe;AACA;AACA;;AAEA;AACA;AACA;AACA,wB;AACA;AACA;AACA,e;AACA;AACA;AACA,qC;AACA;AACA;AACA,4B;AACA;AACA;AACA,wB;AACA;AACA;AACA,2CAA2C,0B;AAC3C;AACA;AACA;AACA;AACA;AACA,iDAAiD,wBAAwB;AACzE;AACA;AACA,mC;AACA;AACA;AACA,mB;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA,kCAAkC;AAClC;AACA;AACA,WAAW,8F;AACX;AACA;AACA,WAAW;AACX;AACA;AACA,WAAW,6F;AACX;AACA;AACA,WAAW,8F;AACX;AACA;AACA,SAAS,+C;AACT;AACA;AACA,SAAS,6C;AACT;AACA;AACA,SAAS,6C;AACT;AACA;AACA,SAAS,2C;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,CAAC;AACD,SAAS,gBAAgB,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,8GAA8G,EAAE,SAAS,EAAE,iBAAiB,eAAe,UAAU,wEAAwE,gFAAgF,GAAG,iCAAiC,8BAA8B,2BAA2B,EAAE,iCAAiC,EAAE,iCAAiC,cAAc,2CAA2C,6CAA6C,QAAQ,EAAE,uHAAuH,gBAAgB,2CAA2C,EAAE,4DAA4D,gBAAgB,oBAAoB,eAAe,kCAAkC,oGAAoG,UAAU,GAAG,UAAU,EAAE,UAAU,EAAE,UAAU,2BAA2B,iCAAiC,GAAG,QAAQ,gBAAgB,iCAAiC,EAAE,2CAA2C,eAAe,kCAAkC,iBAAiB,aAAa,EAAE,iCAAiC,eAAe,UAAU,gBAAgB,UAAU,4CAA4C,iCAAiC,gBAAgB,UAAU,EAAE,uBAAuB,wEAAwE,UAAU;AAC3nD,iBAAiB,oCAAoC;AACrD;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iCAAiC;AACjC,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL,qDAAqD;AACrD;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,kCAAkC;AAC/D;AACA;AACA;AACA;AACA;AACA,uCAAuC,kBAAkB;AACzD;AACA;AACA;AACA,oDAAoD;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC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GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW,YAAY,IAAI,WAAW,SAAS;AACvE,cAAc,0BAA0B,EAAE;AAC1C,MAAM;AACN,WAAW,qSAAqS;AAChT,aAAa,wKAAwK;AACrL;AACA;AACA;;AAEA;AACA;AACA;AACA,mCAAmC;AACnC;AACA;;AAEA,iC;AACA,iC;AACA;AACA,uEAAuE;;AAEvE;AACA;AACA,iBAAiB,oCAAoC;AACrD;AACA;;AAEA,kBAAkB;AAClB,kEAAkE;;AAElE;AACA;AACA,qC;AACA;AACA;AACA,sC;AACA;AACA;AACA,qC;AACA;AACA;AACA,kC;AACA;AACA;AACA,4C;AACA;AACA;AACA,wC;AACA;AACA;AACA,mC;AACA;AACA;AACA,iB;AACA;AACA;AACA,CAAC;AACD,SAAS,YAAY,EAAE,MAAM,cAAc,IAAI,GAAG,uBAAuB,EAAE,QAAQ,eAAe,qCAAqC,4BAA4B,YAAY,EAAE,0BAA0B,uDAAuD,UAAU,EAAE,kCAAkC,8BAA8B,0BAA0B,EAAE,SAAS;AACnX,iBAAiB,iBAAiB;AAClC;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iCAAiC;AACjC,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL,qDAAqD;AACrD;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL,UAAU,wBAAwB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,2FAA2F,cAAc,uCAAuC,aAAa;AAC7J,aAAa,WAAW;AACxB,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA,CAAC;;;AAGD,IAAI,IAAgE;AACpE;AACA;AACA,6BAA6B,8CAA8C;AAC3E;AACA;AACA;AACA;AACA;AAC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AAY,QAAZ,CAAd;;AACA,YAAIX,MAAJ,EAAW;AACT8qB,kBAAQ,CAAClpB,MAAT,CAAgB,YAAW;AACzB,mBAAO5B,MAAK,CAACP,IAAN,EAAP;AACD,WAFD;AAGD;AACF;AACF;AACF,GA9BD;AA+BD,CAxNM;AA0NQ;AACbkc,SAAO,EAAPA,OADa;AAEbuO,aAAW,EAAXA,WAFa;AAGbI,UAAQ,EAARA,QAHa;AAIbtU,YAAU,EAAVA,UAJa;AAKbsG,MAAI,EAAJA;AALa,CAAf,E;;;;;;;;;;;AC9eA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA,eAAe,kCAAkC;AACjD,iBAAiB,kCAAkC;AACnD;AACA;AACA;AACA,qBAAqB,IAAI;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mJAAmJ;AACnJ,SAAS;;AAET;AACA;AACA,qBAAqB,+BAA+B;AACpD;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW,YAAY,IAAI,WAAW,SAAS;AACvE,cAAc,0BAA0B,EAAE;AAC1C,MAAM;AACN,WAAW,k8CAAk8C;AAC78C,aAAa,40BAA40B;AACz1B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,8CAA8C,WAAW,qD;AACrG;AACA;AACA,8CAA8C,gDAAgD,WAAW,yD;AACzG;AACA;AACA,iCAAiC,aAAa;AAC9C;AACA;AACA,gCAAgC,aAAa;AAC7C;AACA;AACA,gCAAgC;AAChC;AACA;AACA,kCAAkC,qDAAqD;AACvF;AACA;AACA,oBAAoB;AACpB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,+BAA+B,kBAAkB;AACjD;AACA;AACA,uBAAuB;AACvB;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA,4CAA4C,WAAW;AACvD;AACA;AACA,kCAAkC,UAAU;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB,8CAA8C;AAChE;AACA;AACA,kBAAkB,4CAA4C;AAC9D;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,SAAS,4BAA4B,EAAE,MAAM,YAAY,IAAI,GAAG,wBAAwB,EAAE,wBAAwB,EAAE,SAAS,EAAE,2PAA2P,6BAA6B,qCAAqC,gFAAgF,yDAAyD,EAAE,yBAAyB,EAAE,yBAAyB,EAAE,yBAAyB,EAAE,yBAAyB,EAAE,yBAAyB,EAAE,mCAAmC,eAAe,aAAa,GAAG,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,eAAe,UAAU,gBAAgB,mNAAmN,6RAA6R,SAAS,eAAe,aAAa,iBAAiB,iIAAiI,yDAAyD,0BAA0B,GAAG,yQAAyQ,uIAAuI,0QAA0Q,aAAa,MAAM,gBAAgB,QAAQ,GAAG,0JAA0J,EAAE,6BAA6B,EAAE,0JAA0J,EAAE,+IAA+I,EAAE,+IAA+I,EAAE,sHAAsH,EAAE,0QAA0Q,EAAE,qRAAqR,EAAE,0QAA0Q,EAAE,0QAA0Q,EAAE,0QAA0Q,EAAE,0QAA0Q,EAAE,qRAAqR,EAAE,0QAA0Q,EAAE,0QAA0Q,EAAE,0QAA0Q,0DAA0D,cAAc,gBAAgB,WAAW,GAAG,WAAW,EAAE,0QAA0Q,EAAE,wQAAwQ,qjBAAqjB,kSAAkS,EAAE,8PAA8P,EAAE,cAAc,EAAE,mJAAmJ,EAAE,WAAW,kFAAkF,WAAW,EAAE,sBAAsB,iBAAiB,WAAW,EAAE,mJAAmJ,EAAE,mJAAmJ,EAAE,mJAAmJ,eAAe,+GAA+G,GAAG,wQAAwQ,EAAE,0QAA0Q,EAAE,wQAAwQ,EAAE,wQAAwQ,EAAE,wQAAwQ,EAAE,wQAAwQ,EAAE,wQAAwQ,EAAE,wQAAwQ,EAAE,0QAA0Q,EAAE,wQAAwQ,EAAE,mRAAmR,EAAE,mRAAmR,eAAe,QAAQ,+BAA+B,wQAAwQ,+BAA+B,0QAA0Q,aAAa,MAAM,iBAAiB,4HAA4H,EAAE,6GAA6G,kBAAkB,6GAA6G,EAAE,wHAAwH,EAAE,wHAAwH,EAAE,WAAW,EAAE,6GAA6G,EAAE,6GAA6G,EAAE,+IAA+I,EAAE,0JAA0J,gBAAgB,wQAAwQ,sFAAsF,wQAAwQ,oIAAoI,wQAAwQ,EAAE,8PAA8P,8BAA8B,QAAQ,kBAAkB,+FAA+F,iNAAiN,QAAQ,iBAAiB,QAAQ,GAAG,WAAW,gBAAgB,QAAQ,GAAG,WAAW,+BAA+B,QAAQ,iBAAiB,QAAQ,iBAAiB,wIAAwI,iBAAiB,mJAAmJ,iBAAiB,WAAW,GAAG,WAAW,EAAE,WAAW,EAAE,0BAA0B,gBAAgB,sGAAsG,kBAAkB,+IAA+I,EAAE,+IAA+I,EAAE,WAAW,EAAE,WAAW,yCAAyC,MAAM,kBAAkB,+FAA+F,iBAAiB,mJAAmJ,iBAAiB,mJAAmJ,iCAAiC,8PAA8P,EAAE,6GAA6G,EAAE,6GAA6G,8BAA8B,QAAQ,iBAAiB,QAAQ;AAC5xhB,kBAAkB;AAClB;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iCAAiC;AACjC,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL,qDAAqD;AACrD;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,mBAAmB;AACnD;AACA,gCAAgC,mBAAmB;AACnD;AACA;AACA;AACA;AACA;AACA,2BAA2B,Y;AAC3B;AACA,2BAA2B,Y;AAC3B;AACA,2BAA2B,Y;AAC3B;AACA,2BAA2B,Y;AAC3B;AACA,2BAA2B,Y;AAC3B;AACA,2BAA2B,Y;AAC3B;AACA,2BAA2B,Y;AAC3B;AACA,2BAA2B,Y;AAC3B;AACA,2BAA2B,Y;AAC3B;AACA,2BAA2B,Y;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA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,CAAkBQ,IAAlB,EAAwBJ,GAAxB,EAA6B;AAC3B,WAAOE,SAAS,CAACF,GAAD,CAAT,CAAeI,IAAf,KAAwB,CAA/B;AACD;AACF,CAzbM;AA2bQ;AACb7a,SAAO,EAAPA,OADa;AAEbW,MAAI,EAAJA;AAFa,CAAf,E;;;;;;;;;;;AC9dA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA,eAAe,kCAAkC;AACjD,iBAAiB,kCAAkC;AACnD;AACA;AACA;AACA,qBAAqB,IAAI;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mJAAmJ;AACnJ,SAAS;;AAET;AACA;AACA,qBAAqB,+BAA+B;AACpD;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW,YAAY,IAAI,WAAW,SAAS;AACvE,cAAc,0BAA0B,EAAE;AAC1C,MAAM;AACN,WAAW,gWAAgW;AAC3W,aAAa,gPAAgP;AAC7P;AACA;AACA;;AAEA;AACA;AACA;AACA,iB;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA,6BAA6B;AAC7B;AACA;AACA,oCAAoC;AACpC;AACA;AACA,iCAAiC;AACjC;AACA;AACA,qCAAqC;AACrC;AACA;AACA,8BAA8B;AAC9B;AACA;AACA,gCAAgC;AAChC;AACA;AACA,4BAA4B;AAC5B;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB,2CAA2C;AAC7D;AACA;AACA,kBAAkB,+CAA+C;AACjE;AACA;AACA,kBAAkB,yCAAyC;AAC3D;AACA;AACA,kBAAkB,6CAA6C;AAC/D;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,SAAS,YAAY,EAAE,MAAM,cAAc,IAAI,GAAG,sGAAsG,cAAc,QAAQ,gBAAgB,0EAA0E,0IAA0I,UAAU,EAAE,oBAAoB,0CAA0C,oBAAoB,gBAAgB,UAAU,gBAAgB,UAAU,8BAA8B,UAAU;AAC5kB,kBAAkB;AAClB;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iCAAiC;AACjC,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL,qDAAqD;AACrD;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL,UAAU,wBAAwB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,iSAAiS,yDAAyD,2BAA2B,6BAA6B,qDAAqD,2BAA2B,kBAAkB,kBAAkB;AACtgB,aAAa,gBAAgB,kCAAkC,iBAAiB,mCAAmC,SAAS,gCAAgC,UAAU,kCAAkC,YAAY;AACpN,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA,CAAC;;;AAGD,IAAI,IAAgE;AACpE;AACA;AACA,6BAA6B,8CAA8C;AAC3E;AACA;AACA;AACA;AACA;AACA,iBAAiB,mBAAO,CAAC,0DAAI,eAAe,mBAAO,CAAC,qDAAM;AAC1D;AACA;AACA,IAAI,KAA6B,IAAI,4CAAY;AACjD;AACA;AACA,C;;;;;;;;;;;;;ACvtBA;AAAA,IAAMS,SAAS,GAAG,SAAZA,SAAY,CAAA7d,OAAO;AAAA,0OAabA,OAAO,CAACu3B,eAbK,gDAiBbv3B,OAAO,CAACw3B,gBAjBK,8DAsBbx3B,OAAO,CAACy3B,kBAtBK,wEA2Bbz3B,OAAO,CAACgtB,UA3BK,qDA+BbhtB,OAAO,CAACgtB,UA/BK,qDAmCbhtB,OAAO,CAACgtB,UAnCK,qDAuCbhtB,OAAO,CAACgtB,UAvCK,kRAuDXhtB,OAAO,CAAC03B,SAvDG,oGA2DJ13B,OAAO,CAAClG,UA3DJ,4BA4DXkG,OAAO,CAAC4sB,SA5DG,4IAyEX5sB,OAAO,CAAC23B,cAzEG,2XAiGb33B,OAAO,CAAC43B,iBAjGK,4MA0Gb53B,OAAO,CAAC43B,iBA1GK,6MAqHb53B,OAAO,CAAC63B,sBArHK,8HA2Hb73B,OAAO,CAAC63B,sBA3HK,+HAiIb73B,OAAO,CAAC63B,sBAjIK,mLA2Ib73B,OAAO,CAAC83B,aA3IK,8EAkJb93B,OAAO,CAAC+3B,YAlJK,4BAmJX/3B,OAAO,CAACg4B,eAnJG,iFAyJbh4B,OAAO,CAACi4B,oBAzJK,8EA8Jbj4B,OAAO,CAACi4B,oBA9JK,+GAwKbj4B,OAAO,CAACk4B,kBAxKK,4BAyKXl4B,OAAO,CAACm4B,qBAzKG,sGAgLbn4B,OAAO,CAAC43B,iBAhLK,uHA0LX53B,OAAO,CAACo4B,mBA1LG,0BA2Lbp4B,OAAO,CAACq4B,gBA3LK,oHAmMbr4B,OAAO,CAAC43B,iBAnMK,mIA6MX53B,OAAO,CAACs4B,eA7MG,0BA8Mbt4B,OAAO,CAACu4B,YA9MK,8HAsNXv4B,OAAO,CAACs4B,eAtNG,0BAuNbt4B,OAAO,CAACk4B,kBAvNK,sHA+NXl4B,OAAO,CAACs4B,eA/NG,0BAgObt4B,OAAO,CAACq4B,gBAhOK,mTAiPbr4B,OAAO,CAAC43B,iBAjPK,iIAwPb53B,OAAO,CAAC43B,iBAxPK,4GA8Pb53B,OAAO,CAAC43B,iBA9PK;AAAA,CAAzB;;AAoQe/Z,wEAAf,E;;;;;;;;;;;;ACpQA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA,IAAI2a,OAAO,GAAG,EAAd;AACA,IAAI9wB,IAAI,GAAG,IAAX;AACA,IAAI+wB,QAAQ,GAAG;AAAEC,QAAM,EAAEhxB;AAAV,CAAf;AACA,IAAIixB,SAAS,GAAG,QAAhB;AACA,IAAIpR,SAAS,GAAG,IAAhB;AACA,IAAIqR,GAAG,GAAG,CAAV;;AAEA,SAASC,KAAT,GAAiB;AACf,SAAOC,qDAAM,CAAC;AAAE/zB,UAAM,EAAE;AAAV,GAAD,CAAb;AACD;;AAED,SAASg0B,iBAAT,CAA2BC,aAA3B,EAA0CC,WAA1C,EAAuD;AACrDh5B,gDAAM,CAACmQ,KAAP,CAAa,6BAAb,EAA4C4oB,aAAa,CAACt4B,EAA1D,EAA8Du4B,WAAW,CAACv4B,EAA1E;;AACA,SAAOs4B,aAAa,CAACJ,GAAd,IAAqBK,WAAW,CAACL,GAAjC,IAAwCI,aAAa,KAAKC,WAAjE,EAA8E;AAC5E;AACA,QAAIA,WAAW,CAAC34B,MAAZ,IAAsB,IAA1B,EAAgC;;AAChC,QAAIsE,KAAK,CAACC,OAAN,CAAco0B,WAAW,CAAC34B,MAA1B,CAAJ,EAAuC;AACrCL,oDAAM,CAACmQ,KAAP,CAAa,kBAAb,EAAiC6oB,WAAW,CAAC34B,MAA7C;AACA,aACEy4B,iBAAiB,CAACC,aAAD,EAAgBR,OAAO,CAACS,WAAW,CAAC34B,MAAZ,CAAmB,CAAnB,CAAD,CAAvB,CAAjB,IACAy4B,iBAAiB,CAACC,aAAD,EAAgBR,OAAO,CAACS,WAAW,CAAC34B,MAAZ,CAAmB,CAAnB,CAAD,CAAvB,CAFnB;AAID,KAND,MAMO;AACL24B,iBAAW,GAAGT,OAAO,CAACS,WAAW,CAAC34B,MAAb,CAArB;AACD;AACF;;AACDL,gDAAM,CAACmQ,KAAP,CAAa4oB,aAAa,CAACt4B,EAA3B,EAA+Bu4B,WAAW,CAACv4B,EAA3C;AACA,SAAOs4B,aAAa,CAACt4B,EAAd,KAAqBu4B,WAAW,CAACv4B,EAAxC;AACD;;AAED,SAASw4B,eAAT,CAAyBF,aAAzB,EAAwCC,WAAxC,EAAqD;AACnD,MAAME,UAAU,GAAGH,aAAa,CAACJ,GAAjC;AACA,MAAMQ,QAAQ,GAAGH,WAAW,CAACL,GAA7B;AACA,MAAIO,UAAU,GAAGC,QAAjB,EAA2B,OAAOL,iBAAiB,CAACE,WAAD,EAAcD,aAAd,CAAxB;AAC3B,SAAO,KAAP;AACD;;AAED,SAASK,MAAT,CAAgBtQ,IAAhB,EAAsBuQ,EAAtB,EAA0B;AACxB,MAAMC,SAAS,GAAGv6B,MAAM,CAACw6B,MAAP,CAAc,IAAd,CAAlB;AACA,SAAOzQ,IAAI,CAAC0Q,MAAL,CAAY,UAACC,GAAD,EAAMlQ,IAAN,EAAe;AAChC,QAAM/pB,GAAG,GAAG65B,EAAE,CAAC9P,IAAD,CAAd;;AACA,QAAI,CAAC+P,SAAS,CAAC95B,GAAD,CAAd,EAAqB;AACnB85B,eAAS,CAAC95B,GAAD,CAAT,GAAiB,IAAjB;AACAi6B,SAAG,CAAC7xB,IAAJ,CAAS2hB,IAAT;AACD;;AACD,WAAOkQ,GAAP;AACD,GAPM,EAOJ,EAPI,CAAP;AAQD;;AAEM,IAAMpR,YAAY,GAAG,SAAfA,YAAe,CAASje,GAAT,EAAc;AACxCkd,WAAS,GAAGld,GAAZ;AACD,CAFM;AAGP,IAAIrK,OAAO,GAAG,EAAd;AACO,IAAM25B,UAAU,GAAG,SAAbA,UAAa,CAASC,YAAT,EAAuB;AAC/C35B,gDAAM,CAACmQ,KAAP,CAAa,aAAb,EAA4BwpB,YAA5B;AACAA,cAAY,GAAGA,YAAY,IAAIA,YAAY,CAACz0B,IAAb,EAA/B;AACAy0B,cAAY,GAAGA,YAAY,IAAI,IAA/B;;AACA,MAAI;AACF55B,WAAO,GAAG4B,IAAI,CAAC+I,KAAL,CAAWivB,YAAX,CAAV;AACD,GAFD,CAEE,OAAOzyB,CAAP,EAAU;AACVlH,kDAAM,CAAC2Q,KAAP,CAAa,sCAAb,EAAqDzJ,CAAC,CAAC0yB,OAAvD;AACD;AACF,CATM;AAWA,IAAMC,UAAU,GAAG,SAAbA,UAAa,GAAW;AACnC,SAAO95B,OAAP;AACD,CAFM;AAIA,IAAM+5B,MAAM,GAAG,gBAASC,GAAT,EAAc;AAClC,MAAMD,MAAM,GAAG;AACbr5B,MAAE,EAAEm4B,KAAK,EADI;AAEbgB,WAAO,EAAEG,GAFI;AAGbpB,OAAG,EAAEA,GAAG,EAHK;AAIbt4B,UAAM,EAAEoH,IAAI,IAAI,IAAR,GAAe,IAAf,GAAsBA,IAAI,CAAChH;AAJtB,GAAf;AAMAgH,MAAI,GAAGqyB,MAAP;AACAvB,SAAO,CAACuB,MAAM,CAACr5B,EAAR,CAAP,GAAqBq5B,MAArB;AACAtB,UAAQ,CAACE,SAAD,CAAR,GAAsBoB,MAAM,CAACr5B,EAA7B;AACAT,gDAAM,CAACmQ,KAAP,CAAa,mBAAmB2pB,MAAM,CAACr5B,EAAvC;AACD,CAXM;AAaA,IAAMu5B,MAAM,GAAG,SAATA,MAAS,CAAS5uB,IAAT,EAAe;AACnCotB,UAAQ,CAACptB,IAAD,CAAR,GAAiB3D,IAAI,IAAI,IAAR,GAAeA,IAAI,CAAChH,EAApB,GAAyB,IAA1C;AACAT,gDAAM,CAACmQ,KAAP,CAAa,iBAAb;AACD,CAHM;AAKA,IAAM8pB,KAAK,GAAG,SAARA,KAAQ,CAASC,WAAT,EAAsB;AACzC,MAAMnB,aAAa,GAAGR,OAAO,CAACC,QAAQ,CAACE,SAAD,CAAT,CAA7B;AACA,MAAMM,WAAW,GAAGT,OAAO,CAACC,QAAQ,CAAC0B,WAAD,CAAT,CAA3B;;AACA,MAAIjB,eAAe,CAACF,aAAD,EAAgBC,WAAhB,CAAnB,EAAiD;AAC/Ch5B,kDAAM,CAACmQ,KAAP,CAAa,gBAAb;AACA;AACD;;AACD,MAAI2oB,iBAAiB,CAACC,aAAD,EAAgBC,WAAhB,CAArB,EAAmD;AACjDR,YAAQ,CAACE,SAAD,CAAR,GAAsBF,QAAQ,CAAC0B,WAAD,CAA9B;AACAzyB,QAAI,GAAG8wB,OAAO,CAACC,QAAQ,CAACE,SAAD,CAAT,CAAd;AACD,GAHD,MAGO;AACL;AACA,QAAMoB,OAAM,GAAG;AACbr5B,QAAE,EAAEm4B,KAAK,EADI;AAEbgB,aAAO,EAAE,mBAAmBM,WAAnB,GAAiC,QAAjC,GAA4CxB,SAFxC;AAGbC,SAAG,EAAEA,GAAG,EAHK;AAIbt4B,YAAM,EAAE,CAACoH,IAAI,IAAI,IAAR,GAAe,IAAf,GAAsBA,IAAI,CAAChH,EAA5B,EAAgC+3B,QAAQ,CAAC0B,WAAD,CAAxC;AAJK,KAAf;AAMAzyB,QAAI,GAAGqyB,OAAP;AACAvB,WAAO,CAACuB,OAAM,CAACr5B,EAAR,CAAP,GAAqBq5B,OAArB;AACAtB,YAAQ,CAACE,SAAD,CAAR,GAAsBoB,OAAM,CAACr5B,EAA7B;AACD;;AACDT,gDAAM,CAACmQ,KAAP,CAAaqoB,QAAb;AACAx4B,gDAAM,CAACmQ,KAAP,CAAa,gBAAb;AACD,CAxBM;AA0BA,IAAMgqB,QAAQ,GAAG,SAAXA,QAAW,CAASH,MAAT,EAAiB;AACvCh6B,gDAAM,CAACmQ,KAAP,CAAa,aAAb;AACAuoB,WAAS,GAAGsB,MAAZ;AACA,MAAMv5B,EAAE,GAAG+3B,QAAQ,CAACE,SAAD,CAAnB;AACAjxB,MAAI,GAAG8wB,OAAO,CAAC93B,EAAD,CAAd;AACD,CALM;AAOA,IAAMP,KAAK,GAAG,SAARA,KAAQ,CAASk6B,SAAT,EAAoB;AACvCp6B,gDAAM,CAACmQ,KAAP,CAAa,UAAb,EAAyBiqB,SAAzB;AACA,MAAMC,GAAG,GAAGD,SAAS,CAAC11B,KAAV,CAAgB,GAAhB,EAAqB,CAArB,CAAZ;AACA,MAAI41B,WAAW,GAAGC,QAAQ,CAACH,SAAS,CAAC11B,KAAV,CAAgB,GAAhB,EAAqB,CAArB,CAAD,CAA1B;AACA,MAAIo1B,MAAM,GAAGO,GAAG,KAAK,MAAR,GAAiB5yB,IAAjB,GAAwB8wB,OAAO,CAACC,QAAQ,CAAC6B,GAAD,CAAT,CAA5C;AACAr6B,gDAAM,CAACmQ,KAAP,CAAa2pB,MAAb,EAAqBQ,WAArB;;AACA,SAAOA,WAAW,GAAG,CAArB,EAAwB;AACtBR,UAAM,GAAGvB,OAAO,CAACuB,MAAM,CAACz5B,MAAR,CAAhB;AACAi6B,eAAW;;AACX,QAAI,CAACR,MAAL,EAAa;AACX,UAAMhZ,GAAG,GAAG,8DAAZ;AACA9gB,oDAAM,CAAC2Q,KAAP,CAAamQ,GAAb;AACA,YAAMA,GAAN;AACD;AACF;;AACDrZ,MAAI,GAAGqyB,MAAP;AACAtB,UAAQ,CAACE,SAAD,CAAR,GAAsBoB,MAAM,CAACr5B,EAA7B;AACD,CAjBM;;AAmBP,SAAS+5B,MAAT,CAAgBvD,GAAhB,EAAqBz3B,GAArB,EAA0Bi7B,MAA1B,EAAkC;AAChC,MAAMC,KAAK,GAAGzD,GAAG,CAAC7mB,OAAJ,CAAY5Q,GAAZ,CAAd;;AACA,MAAIk7B,KAAK,KAAK,CAAC,CAAf,EAAkB;AAChBzD,OAAG,CAACrvB,IAAJ,CAAS6yB,MAAT;AACD,GAFD,MAEO;AACLxD,OAAG,CAAC0D,MAAJ,CAAWD,KAAX,EAAkB,CAAlB,EAAqBD,MAArB;AACD;AACF;;AAED,SAASG,wBAAT,CAAkCC,SAAlC,EAA6C;AAC3C,MAAMf,MAAM,GAAGe,SAAS,CAACrB,MAAV,CAAiB,UAACC,GAAD,EAAMK,MAAN,EAAiB;AAC/C,QAAIL,GAAG,CAACd,GAAJ,GAAUmB,MAAM,CAACnB,GAArB,EAA0B,OAAOc,GAAP;AAC1B,WAAOK,MAAP;AACD,GAHc,EAGZe,SAAS,CAAC,CAAD,CAHG,CAAf;AAIA,MAAIhyB,IAAI,GAAG,EAAX;AACAgyB,WAAS,CAACt7B,OAAV,CAAkB,UAASu7B,CAAT,EAAY;AAC5B,QAAIA,CAAC,KAAKhB,MAAV,EAAkB;AAChBjxB,UAAI,IAAI,KAAR;AACD,KAFD,MAEO;AACLA,UAAI,IAAI,KAAR;AACD;AACF,GAND;AAOA,MAAMhI,KAAK,GAAG,CAACgI,IAAD,EAAOixB,MAAM,CAACr5B,EAAd,EAAkBq5B,MAAM,CAACnB,GAAzB,CAAd;;AACA,OAAK,IAAIqB,OAAT,IAAmBxB,QAAnB,EAA6B;AAC3B,QAAIA,QAAQ,CAACwB,OAAD,CAAR,KAAqBF,MAAM,CAACr5B,EAAhC,EAAoCI,KAAK,CAAC+G,IAAN,CAAWoyB,OAAX;AACrC;;AACDh6B,gDAAM,CAACmQ,KAAP,CAAatP,KAAK,CAAC6S,IAAN,CAAW,GAAX,CAAb;;AACA,MAAI/O,KAAK,CAACC,OAAN,CAAck1B,MAAM,CAACz5B,MAArB,CAAJ,EAAkC;AAChC,QAAM06B,SAAS,GAAGxC,OAAO,CAACuB,MAAM,CAACz5B,MAAP,CAAc,CAAd,CAAD,CAAzB;AACAm6B,UAAM,CAACK,SAAD,EAAYf,MAAZ,EAAoBiB,SAApB,CAAN;AACAF,aAAS,CAACjzB,IAAV,CAAe2wB,OAAO,CAACuB,MAAM,CAACz5B,MAAP,CAAc,CAAd,CAAD,CAAtB;AACD,GAJD,MAIO,IAAIy5B,MAAM,CAACz5B,MAAP,IAAiB,IAArB,EAA2B;AAChC;AACD,GAFM,MAEA;AACL,QAAM26B,UAAU,GAAGzC,OAAO,CAACuB,MAAM,CAACz5B,MAAR,CAA1B;AACAm6B,UAAM,CAACK,SAAD,EAAYf,MAAZ,EAAoBkB,UAApB,CAAN;AACD;;AACDH,WAAS,GAAGzB,MAAM,CAACyB,SAAD,EAAY,UAAAC,CAAC;AAAA,WAAIA,CAAC,CAACr6B,EAAN;AAAA,GAAb,CAAlB;AACAm6B,0BAAwB,CAACC,SAAD,CAAxB;AACD;;AAEM,IAAMI,WAAW,GAAG,SAAdA,WAAc,GAAW;AACpCj7B,gDAAM,CAACmQ,KAAP,CAAaooB,OAAb;AACA,MAAMj4B,IAAI,GAAG46B,eAAe,GAAG,CAAH,CAA5B;AACAN,0BAAwB,CAAC,CAACt6B,IAAD,CAAD,CAAxB;AACD,CAJM;AAMA,IAAM4C,KAAK,GAAG,SAARA,KAAQ,GAAW;AAC9Bq1B,SAAO,GAAG,EAAV;AACA9wB,MAAI,GAAG,IAAP;AACA+wB,UAAQ,GAAG;AAAEC,UAAM,EAAEhxB;AAAV,GAAX;AACAixB,WAAS,GAAG,QAAZ;AACAC,KAAG,GAAG,CAAN;AACD,CANM;AAQA,IAAMwC,qBAAqB,GAAG,SAAxBA,qBAAwB,GAAW;AAC9C,MAAMC,SAAS,GAAG,EAAlB;;AACA,OAAK,IAAIpB,QAAT,IAAmBxB,QAAnB,EAA6B;AAC3B4C,aAAS,CAACxzB,IAAV,CAAe;AAAEwD,UAAI,EAAE4uB,QAAR;AAAgBF,YAAM,EAAEvB,OAAO,CAACC,QAAQ,CAACwB,QAAD,CAAT;AAA/B,KAAf;AACD;;AACD,SAAOoB,SAAP;AACD,CANM;AAQA,IAAMC,WAAW,GAAG,SAAdA,WAAc,GAAW;AACpC,SAAO7C,QAAP;AACD,CAFM;AAGA,IAAM8C,UAAU,GAAG,SAAbA,UAAa,GAAW;AACnC,SAAO/C,OAAP;AACD,CAFM;AAGA,IAAM2C,eAAe,GAAG,SAAlBA,eAAkB,GAAW;AACxC,MAAML,SAAS,GAAG97B,MAAM,CAACO,IAAP,CAAYi5B,OAAZ,EAAqB1iB,GAArB,CAAyB,UAASrW,GAAT,EAAc;AACvD,WAAO+4B,OAAO,CAAC/4B,GAAD,CAAd;AACD,GAFiB,CAAlB;AAGAq7B,WAAS,CAACt7B,OAAV,CAAkB,UAASg8B,CAAT,EAAY;AAC5Bv7B,kDAAM,CAACmQ,KAAP,CAAaorB,CAAC,CAAC96B,EAAf;AACD,GAFD;AAGAo6B,WAAS,CAAChsB,IAAV,CAAe,UAACoa,CAAD,EAAIsL,CAAJ;AAAA,WAAUA,CAAC,CAACoE,GAAF,GAAQ1P,CAAC,CAAC0P,GAApB;AAAA,GAAf;AACA,SAAOkC,SAAP;AACD,CATM;AAUA,IAAMW,gBAAgB,GAAG,SAAnBA,gBAAmB,GAAW;AACzC,SAAO9C,SAAP;AACD,CAFM;AAGA,IAAMhQ,YAAY,GAAG,SAAfA,YAAe,GAAW;AACrC,SAAOpB,SAAP;AACD,CAFM;AAGA,IAAMmU,OAAO,GAAG,SAAVA,OAAU,GAAW;AAChC,SAAOh0B,IAAP;AACD,CAFM;AAIQ;AACb4gB,cAAY,EAAZA,YADa;AAEbqR,YAAU,EAAVA,UAFa;AAGbG,YAAU,EAAVA,UAHa;AAIbC,QAAM,EAANA,MAJa;AAKbE,QAAM,EAANA,MALa;AAMbC,OAAK,EAALA,KANa;AAObE,UAAQ,EAARA,QAPa;AAQbj6B,OAAK,EAALA,KARa;AASb+6B,aAAW,EAAXA,WATa;AAUb/3B,OAAK,EAALA,KAVa;AAWbi4B,uBAAqB,EAArBA,qBAXa;AAYbE,aAAW,EAAXA,WAZa;AAabC,YAAU,EAAVA,UAba;AAcbJ,iBAAe,EAAfA,eAda;AAebM,kBAAgB,EAAhBA,gBAfa;AAgBb9S,cAAY,EAAZA,YAhBa;AAiBb+S,SAAO,EAAPA;AAjBa,CAAf,E;;;;;;;;;;;;ACrOA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAEA,IAAIC,cAAc,GAAG,EAArB;AACA,IAAIC,SAAJ;AACA,IAAIliC,MAAM,GAAG;AACXa,aAAW,EAAE,GADF;AAEXshC,eAAa,EAAE,QAFJ;AAGXC,iBAAe,EAAE,CAHN;AAIXC,iBAAe,EAAE,MAJN;AAKXC,iBAAe,EAAE,CALN;AAMXC,cAAY,EAAE,EANH;AAOX/d,WAAS,EAAE,MAPA;AAQXge,YAAU,EAAE,EARD;AASXC,cAAY,EAAE,CAAC,SAAD,EAAY,SAAZ,EAAuB,SAAvB,EAAkC,SAAlC,CATH;AAUXC,YAAU,EAAE,EAVD;AAWXC,WAAS,EAAE;AACTrhC,SAAK,EAAE,EADE;AAETC,UAAM,EAAE,GAFC;AAGT+G,KAAC,EAAE,CAAC,EAHK;AAITC,KAAC,EAAE;AAJM;AAXA,CAAb;AAkBA,IAAIq6B,SAAS,GAAG,EAAhB;AACO,IAAM7f,OAAO,GAAG,SAAVA,OAAU,CAASse,CAAT,EAAY;AACjCuB,WAAS,GAAGvB,CAAZ;AACD,CAFM;;AAIP,SAASwB,aAAT,CAAuBxiB,GAAvB,EAA4B;AAC1BA,KAAG,CACArX,MADH,CACU,MADV,EAEGA,MAFH,CAEU,GAFV,EAGG7B,IAHH,CAGQ,IAHR,EAGc,YAHd,EAIG6B,MAJH,CAIU,QAJV,EAKG7B,IALH,CAKQ,GALR,EAKanH,MAAM,CAAC0iC,UALpB,EAMGv7B,IANH,CAMQ,IANR,EAMc,CANd,EAOGA,IAPH,CAOQ,IAPR,EAOc,CAPd;AAQAkZ,KAAG,CACAtY,MADH,CACU,aADV,EAEGiB,MAFH,CAEU,eAFV,EAGG7B,IAHH,CAGQ,OAHR,EAGiBnH,MAAM,CAAC2iC,SAAP,CAAiBrhC,KAHlC,EAIG6F,IAJH,CAIQ,QAJR,EAIkBnH,MAAM,CAAC2iC,SAAP,CAAiBphC,MAJnC,EAKG4F,IALH,CAKQ,GALR,EAKanH,MAAM,CAAC2iC,SAAP,CAAiBr6B,CAL9B,EAMGnB,IANH,CAMQ,GANR,EAManH,MAAM,CAAC2iC,SAAP,CAAiBp6B,CAN9B,EAOGpB,IAPH,CAOQ,OAPR,EAOiB,YAPjB,EAQGA,IARH,CAQQ,kBARR,EAQ4B,kDAR5B,EASG6B,MATH,CASU,GATV,EAUGsB,IAVH,CAUQ,EAVR;AAWD;;AAED,SAASw4B,WAAT,CAAqBziB,GAArB,EAA0BrU,MAA1B,EAAkC+2B,QAAlC,EAA4CzgB,WAA5C,EAAyD;AACvD,MAAMvhB,KAAK,GAAGwhB,iEAAkB,CAACD,WAAD,EAAchT,6CAAd,CAAhC;AACA,MAAM0zB,KAAK,GAAGhjC,MAAM,CAACyiC,YAAP,CAAoBM,QAAQ,GAAG/iC,MAAM,CAACyiC,YAAP,CAAoBp3B,MAAnD,CAAd;AACA,MAAM43B,OAAO,GAAG7zB,+CAAI,GACjB9G,CADa,CACX,UAAS+G,CAAT,EAAY;AACb,WAAO/C,IAAI,CAAC42B,KAAL,CAAW7zB,CAAC,CAAC/G,CAAb,CAAP;AACD,GAHa,EAIbC,CAJa,CAIX,UAAS8G,CAAT,EAAY;AACb,WAAO/C,IAAI,CAAC42B,KAAL,CAAW7zB,CAAC,CAAC9G,CAAb,CAAP;AACD,GANa,EAObxH,KAPa,CAOPA,KAPO,CAAhB;AASAsf,KAAG,CACArX,MADH,CACU,UADV,EAEG7B,IAFH,CAEQ,GAFR,EAEa87B,OAAO,CAACj3B,MAAD,CAFpB,EAGGzB,KAHH,CAGS,QAHT,EAGmBy4B,KAHnB,EAIGz4B,KAJH,CAIS,cAJT,EAIyBvK,MAAM,CAACsiC,eAJhC,EAKG/3B,KALH,CAKS,MALT,EAKiB,MALjB;AAMD,C,CAED;;;AACA,SAAS44B,gBAAT,CAA0BhnB,OAA1B,EAAmCinB,MAAnC,EAA2C;AACzCA,QAAM,GAAGA,MAAM,IAAIjnB,OAAO,CAACtV,IAAR,GAAec,OAAf,EAAnB;AACA,MAAM07B,GAAG,GAAGlnB,OAAO,CAACtV,IAAR,GAAey8B,MAAf,EAAZ;AACA,MAAMC,EAAE,GAAGF,GAAG,CAAC51B,CAAJ,GAAQ21B,MAAM,CAAC96B,CAAP,GAAW+6B,GAAG,CAAC7T,CAAlC;AACA,MAAMgU,EAAE,GAAGH,GAAG,CAACrqB,CAAJ,GAAQoqB,MAAM,CAAC76B,CAAP,GAAW86B,GAAG,CAACh0B,CAAlC;AACA,SAAO;AACL6F,QAAI,EAAEquB,EADD;AAELpuB,OAAG,EAAEquB,EAFA;AAGLliC,SAAK,EAAE8hC,MAAM,CAAC9hC,KAHT;AAILC,UAAM,EAAE6hC,MAAM,CAAC7hC;AAJV,GAAP;AAMD;;AAED,SAASkiC,qBAAT,CAA+BpjB,GAA/B,EAAoCqjB,MAApC,EAA4CC,IAA5C,EAAkD9V,SAAlD,EAA6DmV,KAA7D,EAAoE;AAClEz8B,gDAAM,CAACmQ,KAAP,CAAa,yBAAb,EAAwCgtB,MAAxC,EAAgDC,IAAhD;AACA,MAAMC,QAAQ,GAAGT,gBAAgB,CAAC9iB,GAAG,CAACtY,MAAJ,CAAW,WAAW27B,MAAX,GAAoB,SAA/B,CAAD,CAAjC;AACA,MAAMG,MAAM,GAAGV,gBAAgB,CAAC9iB,GAAG,CAACtY,MAAJ,CAAW,WAAW47B,IAAX,GAAkB,SAA7B,CAAD,CAA/B;;AACA,UAAQ9V,SAAR;AACE,SAAK,IAAL;AACE;AACA;AACA;AACA,UAAI+V,QAAQ,CAAC1uB,IAAT,GAAgB2uB,MAAM,CAAC3uB,IAAvB,GAA8BlV,MAAM,CAACa,WAAzC,EAAsD;AACpD,YAAMijC,SAAS,GAAG;AAChBx7B,WAAC,EAAEs7B,QAAQ,CAAC1uB,IAAT,GAAgBlV,MAAM,CAACa,WADV;AAEhB0H,WAAC,EAAEs7B,MAAM,CAAC1uB,GAAP,GAAa0uB,MAAM,CAACtiC,MAAP,GAAgB;AAFhB,SAAlB;AAIA,YAAMwiC,OAAO,GAAG;AAAEz7B,WAAC,EAAEu7B,MAAM,CAAC3uB,IAAP,GAAc2uB,MAAM,CAACviC,KAA1B;AAAiCiH,WAAC,EAAEs7B,MAAM,CAAC1uB,GAAP,GAAa0uB,MAAM,CAACtiC,MAAP,GAAgB;AAAjE,SAAhB;AACAuhC,mBAAW,CAACziB,GAAD,EAAM,CAACyjB,SAAD,EAAYC,OAAZ,CAAN,EAA4Bf,KAA5B,EAAmC,QAAnC,CAAX;AACAF,mBAAW,CACTziB,GADS,EAET,CACE;AAAE/X,WAAC,EAAEs7B,QAAQ,CAAC1uB,IAAd;AAAoB3M,WAAC,EAAEq7B,QAAQ,CAACzuB,GAAT,GAAeyuB,QAAQ,CAACriC,MAAT,GAAkB;AAAxD,SADF,EAEE;AAAE+G,WAAC,EAAEs7B,QAAQ,CAAC1uB,IAAT,GAAgBlV,MAAM,CAACa,WAAP,GAAqB,CAA1C;AAA6C0H,WAAC,EAAEq7B,QAAQ,CAACzuB,GAAT,GAAeyuB,QAAQ,CAACriC,MAAT,GAAkB;AAAjF,SAFF,EAGE;AAAE+G,WAAC,EAAEs7B,QAAQ,CAAC1uB,IAAT,GAAgBlV,MAAM,CAACa,WAAP,GAAqB,CAA1C;AAA6C0H,WAAC,EAAEu7B,SAAS,CAACv7B;AAA1D,SAHF,EAIEu7B,SAJF,CAFS,EAQTd,KARS,CAAX;AAUD,OAjBD,MAiBO;AACLF,mBAAW,CACTziB,GADS,EAET,CACE;AACE/X,WAAC,EAAEs7B,QAAQ,CAAC1uB,IADd;AAEE3M,WAAC,EAAEq7B,QAAQ,CAACzuB,GAAT,GAAeyuB,QAAQ,CAACriC,MAAT,GAAkB;AAFtC,SADF,EAKE;AACE+G,WAAC,EAAEs7B,QAAQ,CAAC1uB,IAAT,GAAgBlV,MAAM,CAACa,WAAP,GAAqB,CAD1C;AAEE0H,WAAC,EAAEq7B,QAAQ,CAACzuB,GAAT,GAAeyuB,QAAQ,CAACriC,MAAT,GAAkB;AAFtC,SALF,EASE;AACE+G,WAAC,EAAEs7B,QAAQ,CAAC1uB,IAAT,GAAgBlV,MAAM,CAACa,WAAP,GAAqB,CAD1C;AAEE0H,WAAC,EAAEs7B,MAAM,CAAC1uB,GAAP,GAAa0uB,MAAM,CAACtiC,MAAP,GAAgB;AAFlC,SATF,EAaE;AACE+G,WAAC,EAAEu7B,MAAM,CAAC3uB,IAAP,GAAc2uB,MAAM,CAACviC,KAD1B;AAEEiH,WAAC,EAAEs7B,MAAM,CAAC1uB,GAAP,GAAa0uB,MAAM,CAACtiC,MAAP,GAAgB;AAFlC,SAbF,CAFS,EAoBTyhC,KApBS,CAAX;AAsBD;;AACD;;AACF,SAAK,IAAL;AACE;AACA;AACA;AACA;AACA,UAAIa,MAAM,CAAC1uB,GAAP,GAAayuB,QAAQ,CAACzuB,GAAtB,GAA4BnV,MAAM,CAACa,WAAvC,EAAoD;AAClD,YAAMijC,UAAS,GAAG;AAChBx7B,WAAC,EAAEu7B,MAAM,CAAC3uB,IAAP,GAAc2uB,MAAM,CAACviC,KAAP,GAAe,CADhB;AAEhBiH,WAAC,EAAEq7B,QAAQ,CAACzuB,GAAT,GAAeyuB,QAAQ,CAACriC,MAAxB,GAAiCvB,MAAM,CAACa;AAF3B,SAAlB;AAIA,YAAMkjC,QAAO,GAAG;AAAEz7B,WAAC,EAAEu7B,MAAM,CAAC3uB,IAAP,GAAc2uB,MAAM,CAACviC,KAAP,GAAe,CAAlC;AAAqCiH,WAAC,EAAEs7B,MAAM,CAAC1uB;AAA/C,SAAhB;AACA2tB,mBAAW,CAACziB,GAAD,EAAM,CAACyjB,UAAD,EAAYC,QAAZ,CAAN,EAA4Bf,KAA5B,EAAmC,QAAnC,CAAX;AACAF,mBAAW,CACTziB,GADS,EAET,CACE;AAAE/X,WAAC,EAAEs7B,QAAQ,CAAC1uB,IAAT,GAAgB0uB,QAAQ,CAACtiC,KAAT,GAAiB,CAAtC;AAAyCiH,WAAC,EAAEq7B,QAAQ,CAACzuB,GAAT,GAAeyuB,QAAQ,CAACriC;AAApE,SADF,EAEE;AACE+G,WAAC,EAAEs7B,QAAQ,CAAC1uB,IAAT,GAAgB0uB,QAAQ,CAACtiC,KAAT,GAAiB,CADtC;AAEEiH,WAAC,EAAEq7B,QAAQ,CAACzuB,GAAT,GAAeyuB,QAAQ,CAACriC,MAAxB,GAAiCvB,MAAM,CAACa,WAAP,GAAqB;AAF3D,SAFF,EAME;AAAEyH,WAAC,EAAEu7B,MAAM,CAAC3uB,IAAP,GAAc2uB,MAAM,CAACviC,KAAP,GAAe,CAAlC;AAAqCiH,WAAC,EAAEu7B,UAAS,CAACv7B,CAAV,GAAcvI,MAAM,CAACa,WAAP,GAAqB;AAA3E,SANF,EAOEijC,UAPF,CAFS,EAWTd,KAXS,CAAX;AAaD,OApBD,MAoBO;AACLF,mBAAW,CACTziB,GADS,EAET,CACE;AACE/X,WAAC,EAAEs7B,QAAQ,CAAC1uB,IAAT,GAAgB0uB,QAAQ,CAACtiC,KAAT,GAAiB,CADtC;AAEEiH,WAAC,EAAEq7B,QAAQ,CAACzuB,GAAT,GAAeyuB,QAAQ,CAACriC;AAF7B,SADF,EAKE;AACE+G,WAAC,EAAEs7B,QAAQ,CAAC1uB,IAAT,GAAgB0uB,QAAQ,CAACtiC,KAAT,GAAiB,CADtC;AAEEiH,WAAC,EAAEq7B,QAAQ,CAACzuB,GAAT,GAAenV,MAAM,CAACa,WAAP,GAAqB;AAFzC,SALF,EASE;AACEyH,WAAC,EAAEu7B,MAAM,CAAC3uB,IAAP,GAAc2uB,MAAM,CAACviC,KAAP,GAAe,CADlC;AAEEiH,WAAC,EAAEs7B,MAAM,CAAC1uB,GAAP,GAAanV,MAAM,CAACa,WAAP,GAAqB;AAFvC,SATF,EAaE;AACEyH,WAAC,EAAEu7B,MAAM,CAAC3uB,IAAP,GAAc2uB,MAAM,CAACviC,KAAP,GAAe,CADlC;AAEEiH,WAAC,EAAEs7B,MAAM,CAAC1uB;AAFZ,SAbF,CAFS,EAoBT6tB,KApBS,CAAX;AAsBD;;AACD;AAhGJ;AAkGD;;AAED,SAASgB,SAAT,CAAmB3jB,GAAnB,EAAwB4jB,QAAxB,EAAkC;AAChC,SAAO5jB,GAAG,CACPtY,MADI,CACGk8B,QADH,EAEJp9B,IAFI,GAGJm9B,SAHI,CAGM,IAHN,CAAP;AAID;;AAED,SAASE,mBAAT,CAA6B7jB,GAA7B,EAAkC8jB,QAAlC,EAA4CpF,QAA5C,EAAsDlR,SAAtD,EAAiE;AAC/D,MAAIwS,MAAJ;AACA,MAAM+D,UAAU,GAAG9+B,MAAM,CAACO,IAAP,CAAYo8B,cAAZ,EAA4B52B,MAA/C;;AACA,MAAI,OAAO84B,QAAP,KAAoB,QAAxB,EAAkC;AAChC,OAAG;AACD9D,YAAM,GAAG4B,cAAc,CAACkC,QAAD,CAAvB;AACA59B,oDAAM,CAACmQ,KAAP,CAAa,wBAAb,EAAuC2pB,MAAM,CAACr5B,EAA9C,EAAkDq5B,MAAM,CAACnB,GAAzD;;AACA,UAAI7e,GAAG,CAACtY,MAAJ,CAAW,WAAWo8B,QAAtB,EAAgCE,IAAhC,KAAyC,CAA7C,EAAgD;AAC9C;AACD;;AACDhkB,SAAG,CACArX,MADH,CACU,YAAW;AACjB,eAAOg7B,SAAS,CAAC3jB,GAAD,EAAM,aAAN,CAAhB;AACD,OAHH,EAIGlZ,IAJH,CAIQ,OAJR,EAIiB,QAJjB,EAKGA,IALH,CAKQ,IALR,EAKc,YAAW;AACrB,eAAO,UAAUk5B,MAAM,CAACr5B,EAAxB;AACD,OAPH,EAQGG,IARH,CAQQ,WARR,EAQqB,YAAW;AAC5B,gBAAQ0mB,SAAR;AACE,eAAK,IAAL;AACE,mBACE,gBACCwS,MAAM,CAACnB,GAAP,GAAal/B,MAAM,CAACa,WAApB,GAAkCb,MAAM,CAACwiC,UAD1C,IAEA,IAFA,GAGAN,SAAS,GAAGliC,MAAM,CAACuiC,YAHnB,GAIA,GALF;;AAOF,eAAK,IAAL;AACE,mBACE,gBACCL,SAAS,GAAGliC,MAAM,CAACuiC,YAAnB,GAAkCviC,MAAM,CAACwiC,UAD1C,IAEA,IAFA,GAGA,CAAC4B,UAAU,GAAG/D,MAAM,CAACnB,GAArB,IAA4Bl/B,MAAM,CAACa,WAHnC,GAIA,GALF;AAVJ;AAkBD,OA3BH,EA4BGsG,IA5BH,CA4BQ,MA5BR,EA4BgBnH,MAAM,CAACmiC,aA5BvB,EA6BGh7B,IA7BH,CA6BQ,QA7BR,EA6BkBnH,MAAM,CAACqiC,eA7BzB,EA8BGl7B,IA9BH,CA8BQ,cA9BR,EA8BwBnH,MAAM,CAACoiC,eA9B/B;AAgCA,UAAI7B,MAAM,SAAV;;AACA,WAAK,IAAI+D,UAAT,IAAuBvF,QAAvB,EAAiC;AAC/B,YAAIA,QAAQ,CAACuF,UAAD,CAAR,CAAqBjE,MAArB,KAAgCA,MAApC,EAA4C;AAC1CE,gBAAM,GAAGxB,QAAQ,CAACuF,UAAD,CAAjB;AACA;AACD;AACF;;AACD,UAAI/D,MAAJ,EAAY;AACVh6B,sDAAM,CAACmQ,KAAP,CAAa,eAAb,EAA8B6pB,MAAM,CAAC5uB,IAArC;AACA0O,WAAG,CACAtY,MADH,CACU,WAAWs4B,MAAM,CAACr5B,EAAlB,GAAuB,IADjC,EAEGgC,MAFH,CAEU,YAFV,EAGG7B,IAHH,CAGQ,OAHR,EAGiB,cAHjB,EAIGE,IAJH,CAIQk5B,MAAM,CAAC5uB,IAAP,GAAc,IAJtB;AAKD;;AACD0O,SAAG,CACAtY,MADH,CACU,WAAWs4B,MAAM,CAACr5B,EAAlB,GAAuB,IADjC,EAEGgC,MAFH,CAEU,YAFV,EAGG7B,IAHH,CAGQ,OAHR,EAGiB,WAHjB,EAIGE,IAJH,CAIQg5B,MAAM,CAACr5B,EAJf;;AAKA,UAAIq5B,MAAM,CAACF,OAAP,KAAmB,EAAnB,IAAyBtS,SAAS,KAAK,IAA3C,EAAiD;AAC/CxN,WAAG,CACAtY,MADH,CACU,WAAWs4B,MAAM,CAACr5B,EAAlB,GAAuB,IADjC,EAEGgC,MAFH,CAEU,YAFV,EAGG7B,IAHH,CAGQ,OAHR,EAGiB,YAHjB,EAIGE,IAJH,CAIQ,OAAOg5B,MAAM,CAACF,OAJtB;AAKD;;AACDgE,cAAQ,GAAG9D,MAAM,CAACz5B,MAAlB;AACD,KAlED,QAkESu9B,QAAQ,IAAIlC,cAAc,CAACkC,QAAD,CAlEnC;AAmED;;AAED,MAAIj5B,KAAK,CAACC,OAAN,CAAcg5B,QAAd,CAAJ,EAA6B;AAC3B59B,kDAAM,CAACmQ,KAAP,CAAa,qBAAb,EAAoCytB,QAApC;AACAD,uBAAmB,CAAC7jB,GAAD,EAAM8jB,QAAQ,CAAC,CAAD,CAAd,EAAmBpF,QAAnB,EAA6BlR,SAA7B,CAAnB;AACAqU,aAAS;AACTgC,uBAAmB,CAAC7jB,GAAD,EAAM8jB,QAAQ,CAAC,CAAD,CAAd,EAAmBpF,QAAnB,EAA6BlR,SAA7B,CAAnB;AACAqU,aAAS;AACV;AACF;;AAED,SAASqC,WAAT,CAAqBlkB,GAArB,EAA0BggB,MAA1B,EAAkCxS,SAAlC,EAA6C2W,WAA7C,EAA0D;AACxDA,aAAW,GAAGA,WAAW,IAAI,CAA7B;;AACA,SAAOnE,MAAM,CAACnB,GAAP,GAAa,CAAb,IAAkB,CAACmB,MAAM,CAACoE,SAAjC,EAA4C;AAC1C,QAAI,OAAOpE,MAAM,CAACz5B,MAAd,KAAyB,QAA7B,EAAuC;AACrC68B,2BAAqB,CAACpjB,GAAD,EAAMggB,MAAM,CAACr5B,EAAb,EAAiBq5B,MAAM,CAACz5B,MAAxB,EAAgCinB,SAAhC,EAA2C2W,WAA3C,CAArB;AACAnE,YAAM,CAACoE,SAAP,GAAmB,IAAnB;AACApE,YAAM,GAAG4B,cAAc,CAAC5B,MAAM,CAACz5B,MAAR,CAAvB;AACD,KAJD,MAIO,IAAIsE,KAAK,CAACC,OAAN,CAAck1B,MAAM,CAACz5B,MAArB,CAAJ,EAAkC;AACvC68B,2BAAqB,CAACpjB,GAAD,EAAMggB,MAAM,CAACr5B,EAAb,EAAiBq5B,MAAM,CAACz5B,MAAP,CAAc,CAAd,CAAjB,EAAmCinB,SAAnC,EAA8C2W,WAA9C,CAArB;AACAf,2BAAqB,CAACpjB,GAAD,EAAMggB,MAAM,CAACr5B,EAAb,EAAiBq5B,MAAM,CAACz5B,MAAP,CAAc,CAAd,CAAjB,EAAmCinB,SAAnC,EAA8C2W,WAAW,GAAG,CAA5D,CAArB;AACAD,iBAAW,CAAClkB,GAAD,EAAM4hB,cAAc,CAAC5B,MAAM,CAACz5B,MAAP,CAAc,CAAd,CAAD,CAApB,EAAwCinB,SAAxC,EAAmD2W,WAAW,GAAG,CAAjE,CAAX;AACAnE,YAAM,CAACoE,SAAP,GAAmB,IAAnB;AACApE,YAAM,GAAG4B,cAAc,CAAC5B,MAAM,CAACz5B,MAAP,CAAc,CAAd,CAAD,CAAvB;AACD;AACF;AACF;;AAEM,IAAM8c,IAAI,GAAG,SAAPA,IAAO,CAASuE,GAAT,EAAcjhB,EAAd,EAAkB09B,GAAlB,EAAuB;AACzC,MAAI;AACF,QAAMzjB,MAAM,GAAG0jB,uDAAc,CAAC1jB,MAA9B;AACAA,UAAM,CAACC,EAAP,GAAY0jB,oDAAZ;AACA3jB,UAAM,CAACC,EAAP,CAAUzX,KAAV;AAEAlD,kDAAM,CAACmQ,KAAP,CAAa,sBAAb,EAAqCuR,GAAG,GAAG,IAA3C,EAAiD,KAAjD,EAAwDjhB,EAAxD,EAA4D09B,GAA5D,EALE,CAMF;;AACAzjB,UAAM,CAAChQ,KAAP,CAAagX,GAAG,GAAG,IAAnB;AAEAjoB,UAAM,GAAGsF,MAAM,CAACu/B,MAAP,CAAc7kC,MAAd,EAAsB4iC,SAAtB,EAAiCgC,oDAAE,CAACxE,UAAH,EAAjC,CAAT;AACA75B,kDAAM,CAACmQ,KAAP,CAAa,mBAAb,EAAkC1W,MAAlC;AACA,QAAM6tB,SAAS,GAAG+W,oDAAE,CAAC3V,YAAH,EAAlB;AACAgT,kBAAc,GAAG2C,oDAAE,CAAC/C,UAAH,EAAjB;AACA,QAAM9C,QAAQ,GAAG6F,oDAAE,CAAClD,qBAAH,EAAjB;;AACA,QAAI7T,SAAS,KAAK,IAAlB,EAAwB;AACtB7tB,YAAM,CAAC2iC,SAAP,CAAiBr6B,CAAjB,GAAqBy2B,QAAQ,CAAC1zB,MAAT,GAAkBrL,MAAM,CAACuiC,YAA9C;AACAviC,YAAM,CAAC2iC,SAAP,CAAiBrhC,KAAjB,GAAyB,MAAzB;AACAtB,YAAM,CAAC2iC,SAAP,CAAiBp6B,CAAjB,GAAqB,CAAC,CAAD,GAAK,CAAL,GAASvI,MAAM,CAAC0iC,UAArC;AACD;;AACD,QAAMriB,GAAG,GAAGtY,iDAAM,iBAASf,EAAT,SAAlB;AACA67B,iBAAa,CAACxiB,GAAD,CAAb;AACA6hB,aAAS,GAAG,CAAZ;;AACA,SAAK,IAAI3B,MAAT,IAAmBxB,QAAnB,EAA6B;AAC3B,UAAMhxB,CAAC,GAAGgxB,QAAQ,CAACwB,MAAD,CAAlB;AACA2D,yBAAmB,CAAC7jB,GAAD,EAAMtS,CAAC,CAACsyB,MAAF,CAASr5B,EAAf,EAAmB+3B,QAAnB,EAA6BlR,SAA7B,CAAnB;AACA0W,iBAAW,CAAClkB,GAAD,EAAMtS,CAAC,CAACsyB,MAAR,EAAgBxS,SAAhB,CAAX;AACAqU,eAAS;AACV;;AACD7hB,OAAG,CAAClZ,IAAJ,CAAS,QAAT,EAAmB,YAAW;AAC5B,UAAI0mB,SAAS,KAAK,IAAlB,EAAwB,OAAOvoB,MAAM,CAACO,IAAP,CAAYo8B,cAAZ,EAA4B52B,MAA5B,GAAqCrL,MAAM,CAACa,WAAnD;AACxB,aAAO,CAACk+B,QAAQ,CAAC1zB,MAAT,GAAkB,CAAnB,IAAwBrL,MAAM,CAACuiC,YAAtC;AACD,KAHD;AAID,GAhCD,CAgCE,OAAO90B,CAAP,EAAU;AACVlH,kDAAM,CAAC2Q,KAAP,CAAa,gCAAb;AACA3Q,kDAAM,CAAC2Q,KAAP,CAAazJ,CAAC,CAAC0yB,OAAf;AACD;AACF,CArCM;AAuCQ;AACbpd,SAAO,EAAPA,OADa;AAEbW,MAAI,EAAJA;AAFa,CAAf,E;;;;;;;;;;;ACjVA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA,eAAe,kCAAkC;AACjD,iBAAiB,kCAAkC;AACnD;AACA;AACA;AACA,qBAAqB,IAAI;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mJAAmJ;AACnJ,SAAS;;AAET;AACA;AACA,qBAAqB,+BAA+B;AACpD;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW,YAAY,IAAI,WAAW,SAAS;AACvE,cAAc,0BAA0B,EAAE;AAC1C,MAAM;AACN,WAAW,uSAAuS;AAClT,aAAa,0JAA0J;AACvK;AACA;AACA;;AAEA;AACA;AACA;AACA,iB;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA,yBAAyB;AACzB;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,SAAS,YAAY,EAAE,MAAM,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,QAAQ,EAAE,QAAQ,cAAc,gBAAgB,gBAAgB,sBAAsB,EAAE,QAAQ,EAAE,gFAAgF,eAAe,SAAS,eAAe,UAAU,gBAAgB,0BAA0B,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,0BAA0B,EAAE,QAAQ,eAAe,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,UAAU,EAAE,oBAAoB,EAAE,UAAU,EAAE,UAAU;AAC1lB,iBAAiB,2GAA2G;AAC5H;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iCAAiC;AACjC,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL,qDAAqD;AACrD;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL,UAAU,wBAAwB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA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PA,OADa;AAEbW,MAAI,EAAJA;AAFa,CAAf,E;;;;;;;;;;;ACpDA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA,eAAe,kCAAkC;AACjD,iBAAiB,kCAAkC;AACnD;AACA;AACA;AACA,qBAAqB,IAAI;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mJAAmJ;AACnJ,SAAS;;AAET;AACA;AACA,qBAAqB,+BAA+B;AACpD;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW,YAAY,IAAI,WAAW,SAAS;AACvE,cAAc,0BAA0B,EAAE;AAC1C,MAAM;AACN,WAAW,mHAAmH;AAC9H,aAAa,gDAAgD;AAC7D;AACA;AACA;;AAEA;AACA;AACA;AACA,W;AACA;AACA;;AAEA;AACA;AACA,kB;AACA;AACA;AACA,CAAC;AACD,SAAS,YAAY,EAAE,MAAM,cAAc,IAAI,GAAG,iCAAiC,EAAE,QAAQ;AAC7F,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iCAAiC;AACjC,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL,qDAAqD;AACrD;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL,UAAU,wBAAwB;AAClC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,aAAa,WAAW;AACxB,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA,CAAC;;;AAGD,IAAI,IAAgE;AACpE;AACA;AACA,6BAA6B,8CAA8C;AAC3E;AACA;AACA;AACA;AACA;AACA,iBAAiB,mBAAO,CAAC,0DAAI,eAAe,mBAAO,CAAC,qDAAM;AAC1D;AACA;AACA,IAAI,KAA6B,IAAI,4CAAY;AACjD;AACA;AACA,C;;;;;;;;;;;;;AC7mBA;AAAA,IAAMS,SAAS,GAAG,SAAZA,SAAY;AAAA;AAAA,CAAlB;;AAEeA,wEAAf,E;;;;;;;;;;;ACFA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA,eAAe,kCAAkC;AACjD,iBAAiB,kCAAkC;AACnD;AACA;AACA;AACA,qBAAqB,IAAI;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mJAAmJ;AACnJ,SAAS;;AAET;AACA;AACA,qBAAqB,+BAA+B;AACpD;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW,YAAY,IAAI,WAAW,SAAS;AACvE,cAAc,0BAA0B,EAAE;AAC1C,MAAM;AACN,WAAW,mIAAmI;AAC9I,aAAa,gEAAgE;AAC7E;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,kD;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA,CAAC;AACD,SAAS,YAAY,EAAE,MAAM,cAAc,IAAI,GAAG,0CAA0C,EAAE,QAAQ,yCAAyC,UAAU;AACzJ,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iCAAiC;AACjC,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL,qDAAqD;AACrD;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL,UAAU,wBAAwB;AAClC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,qGAAqG;AACrG,aAAa,UAAU,gCAAgC,YAAY;AACnE,CAAC;AACD;A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53B,OAAO,CAAClG,UAdF;AAAA,CAAzB;;AAmBe+jB,wEAAf,E;;;;;;;;;;;ACnBA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA,eAAe,kCAAkC;AACjD,iBAAiB,kCAAkC;AACnD;AACA;AACA;AACA,qBAAqB,IAAI;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mJAAmJ;AACnJ,SAAS;;AAET;AACA;AACA,qBAAqB,+BAA+B;AACpD;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW,YAAY,IAAI,WAAW,SAAS;AACvE,cAAc,0BAA0B,EAAE;AAC1C,MAAM;AACN,WAAW,wyBAAwyB;AACnzB,aAAa,ifAAif;AAC9f;AACA;AACA;;AAEA;AACA;AACA;AACA,kBAAkB,c;AAClB;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA,W;AACA;AACA;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA,QAAQ;AACR;AACA;AACA,SAAS,+BAA+B;AACxC;AACA;;AAEA,oBAAoB,0FAA0F;AAC9G,iBAAiB,qEAAqE;AACtF;AACA;AACA;;AAEA,oBAAoB,wFAAwF;AAC5G,iBAAiB,oFAAoF;AACrG;AACA;AACA;;AAEA,oBAAoB,uFAAuF;AAC3G,iBAAiB,mFAAmF;AACpG;AACA;AACA;;AAEA;AACA,oBAAoB,uFAAuF;AAC3G;AACA;AACA,iBAAiB,gDAAgD;AACjE;AACA;AACA;;AAEA;AACA,oBAAoB,uFAAuF;AAC3G;AACA;AACA,iBAAiB,gDAAgD;AACjE;AACA;AACA;AACA,4BAA4B,gFAAgF,W;AAC5G;AACA;AACA,4BAA4B,kFAAkF,W;AAC9G;AACA;;AAEA,uBAAuB,sEAAsE;AAC7F;AACA;;AAEA;AACA;AACA;AACA;AACA,uBAAuB,qFAAqF;AAC5G;AACA;AACA,6B;AACA;AACA;AACA,iB;AACA;AACA;AACA,8B;AACA;AACA;AACA,+B;AACA;AACA;AACA,8BAA8B,4FAA4F;AAC1H,gBAAgB;AAChB;AACA;AACA;AACA,8BAA8B,4FAA4F;AAC1H,eAAe;AACf;AACA;AACA;AACA,8BAA8B,4FAA4F;AAC1H;AACA;AACA,QAAQ;AACR;AACA;AACA,iC;AACA;AACA;AACA,kC;AACA;AACA;AACA,4B;AACA;AACA;AACA,6B;AACA;AACA;AACA,kC;AACA;AACA;AACA,mC;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,qB;AACvB;AACA;AACA,6C;AACA;AACA;AACA,2CAA2C,4C;AAC3C;AACA;AACA,qBAAqB,oC;AACrB;AACA;AACA,CAAC;AACD,SAAS,sCAAsC,EAAE,MAAM,EAAE,sCAAsC,EAAE,sCAAsC,EAAE,uCAAuC,uDAAuD,KAAK,GAAG,gBAAgB,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,sJAAsJ,EAAE,uBAAuB,iCAAiC,6HAA6H,4BAA4B,aAAa,EAAE,SAAS,gBAAgB,aAAa,EAAE,aAAa,EAAE,SAAS,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,gBAAgB,kEAAkE,EAAE,oCAAoC,2CAA2C,SAAS,EAAE,gBAAgB,EAAE,SAAS,eAAe,mBAAmB,gBAAgB,SAAS,EAAE,SAAS,gBAAgB,SAAS,EAAE,SAAS,YAAY,KAAK,aAAa,KAAK,aAAa,KAAK,aAAa,WAAW,aAAa,WAAW,GAAG,iCAAiC,sFAAsF,aAAa,EAAE,mBAAmB,EAAE,UAAU,EAAE,UAAU,gBAAgB,aAAa,EAAE,UAAU,EAAE,UAAU,0DAA0D,wJAAwJ,EAAE,wJAAwJ,EAAE,wJAAwJ,EAAE,UAAU,EAAE,kKAAkK,EAAE,UAAU,EAAE,kKAAkK,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,oBAAoB,EAAE,SAAS,EAAE,SAAS,0DAA0D,UAAU,gBAAgB,WAAW,EAAE,cAAc,EAAE,cAAc,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,cAAc,wCAAwC,YAAY,aAAa,YAAY,GAAG,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AACpsF,iBAAiB,yKAAyK;AAC1L;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iCAAiC;AACjC,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL,qDAAqD;AACrD;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL,UAAU,wBAAwB;AAClC;AACA;AACA;AACA,qCAAqC,W;AACrC;AACA,qCAAqC,W;AACrC;AACA,wBAAwB,6BAA6B,W;AACrD;AACA,wBAAwB,iBAAiB,W;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,W;AAC1B;AACA,wCAAwC,qBAAqB,W;AAC7D;AACA,yBAAyB,iBAAiB,oBAAoB,W;AAC9D;AACA,yBAAyB,iBAAiB,U;AAC1C;AACA,4BAA4B,W;AAC5B;AACA,4BAA4B,W;AAC5B;AACA,4BAA4B,W;AAC5B;AACA,4BAA4B,W;AAC5B;AACA,4BAA4B,W;AAC5B;AACA,4BAA4B,W;AAC5B;AACA,4BAA4B,W;AAC5B;AACA,yBAAyB,W;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,W;AAC1B;AACA,0BAA0B,W;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,W;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,iBAAiB,kBAAkB,gCAAgC,oBAAoB,uFAAuF,oBAAoB,kDAAkD,iCAAiC,sKAAsK,8MAA8M,qBAAqB,6GAA6G;AAC3wB,aAAa,QAAQ,mCAAmC,kBAAkB,kC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E,yGAAyG,eAAe,iFAAiF,wCAAwC,oBAAoB,iBAAiB,UAAU,eAAe,UAAU,GAAG,UAAU,4CAA4C,oCAAoC,yDAAyD,oBAAoB,0BAA0B,KAAK,GAAG,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,eAAe,UAAU,GAAG,2GAA2G,eAAe,UAAU,GAAG,UAAU,EAAE,UAAU,wCAAwC,KAAK,+BAA+B,2GAA2G;AAC/kC,iBAAiB,oCAAoC;AACrD;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iCAAiC;AACjC,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL,qDAAqD;AACrD;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL,UAAU,wBAAwB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,yCAAyC,a;AACzE;AACA;AACA;AACA;AACA;AACA,gC;AACA;AACA,uBAAuB,yCAAyC,0CAA0C;AAC1G;AACA,wBAAwB,yCAAyC,yCAAyC;AAC1G;AACA,wBAAwB,yCAAyC,yCAAyC;AAC1G;AACA,wBAAwB,yCAAyC,yCAAyC;AAC1G;AACA;AACA;AACA,wBAAwB,2BAA2B;AACnD;AACA,wBAAwB,uCAAuC;AAC/D;AACA;AACA;AACA,wDAAwD;AACxD;AACA,oDAAoD;AACpD;AACA;AACA;AACA,wBAAwB,yBAAyB,2CAA2C;AAC5F;AACA,wCAAwC,mBAAmB;AAC3D;AACA;AACA;AACA,4BAA4B,W;AAC5B;AACA,yBAAyB,0BAA0B;AACnD;AACA,yBAAyB,0BAA0B;AACnD;AACA,yBAAyB;AACzB;AACA,wBAAwB,mCAAmC;AAC3D;AACA;AACA;AACA,2DAA2D;AAC3D;AACA,wBAAwB,8CAA8C;AACtE;AACA,yBAAyB,4BAA4B,6CAA6C;AAClG;AACA,yBAAyB,mDAAmD,2CAA2C;AACvH;AACA,yBAAyB,mDAAmD,6CAA6C;AACzH;AACA,4DAA4D,W;AAC5D;AACA,4DAA4D,W;AAC5D;AACA,qDAAqD,Y;AACrD;AACA,iDAAiD;AACjD;AACA,2CAA2C;AAC3C;AACA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ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW,YAAY,IAAI,WAAW,SAAS;AACvE,cAAc,0BAA0B,EAAE;AAC1C,MAAM;AACN,WAAW,uKAAuK;AAClL,aAAa,oGAAoG;AACjH;AACA;AACA;;AAEA;AACA;AACA;AACA,iB;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA,gCAAgC;AAChC;AACA;AACA,6BAA6B;AAC7B;AACA;AACA,CAAC;AACD,SAAS,YAAY,EAAE,MAAM,cAAc,IAAI,GAAG,sDAAsD,cAAc,QAAQ,gBAAgB,0BAA0B,sDAAsD,UAAU;AACxO,kBAAkB;AAClB;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iCAAiC;AACjC,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL,qDAAqD;AACrD;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL,UAAU,wBAAwB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,sGAAsG,2BAA2B,kBAAkB,kBAAkB;AACrK,aAAa,WAAW;AACxB,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA,CAAC;;;AAGD,IAAI,IAAgE;AACpE;AACA;AACA,6BAA6B,8CAA8C;AAC3E;AACA;AACA;AACA;AACA;AACA,iBAAiB,mBAAO,CAAC,0DAAI,eAAe,mBAAO,CAAC,qDAAM;AAC1D;AACA;AACA,IAAI,KAA6B,IAAI,4CAAY;AACjD;AACA;AACA,C;;;;;;;;;;;;;ACroBA;AAAA,IAAMS,SAAS,GAAG,SAAZA,SAAY,CAAA7d,OAAO;AAAA,wIAIZA,OAAO,CAAC4sB,SAJI,iFAWX5sB,OAAO,CAAC4sB,SAXG,6CAeb5sB,OAAO,CAAC4sB,SAfK,qFAsBZ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","file":"mermaid.core.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"mermaid\"] = factory();\n\telse\n\t\troot[\"mermaid\"] = factory();\n})(typeof self !== \"undefined\" ? self : this, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./src/mermaid.js\");\n","// .dirname, .basename, and .extname methods are extracted from Node.js v8.11.1,\n// backported and transplited with Babel, with backwards-compat fixes\n\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// resolves . and .. elements in a path array with directory names there\n// must be no slashes, empty elements, or device names (c:\\) in the array\n// (so also no leading and trailing slashes - it does not distinguish\n// relative and absolute paths)\nfunction normalizeArray(parts, allowAboveRoot) {\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n for (var i = parts.length - 1; i >= 0; i--) {\n var last = parts[i];\n if (last === '.') {\n parts.splice(i, 1);\n } else if (last === '..') {\n parts.splice(i, 1);\n up++;\n } else if (up) {\n parts.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (allowAboveRoot) {\n for (; up--; up) {\n parts.unshift('..');\n }\n }\n\n return parts;\n}\n\n// path.resolve([from ...], to)\n// posix version\nexports.resolve = function() {\n var resolvedPath = '',\n resolvedAbsolute = false;\n\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path = (i >= 0) ? arguments[i] : process.cwd();\n\n // Skip empty and invalid entries\n if (typeof path !== 'string') {\n throw new TypeError('Arguments to path.resolve must be strings');\n } else if (!path) {\n continue;\n }\n\n resolvedPath = path + '/' + resolvedPath;\n resolvedAbsolute = path.charAt(0) === '/';\n }\n\n // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n\n // Normalize the path\n resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) {\n return !!p;\n }), !resolvedAbsolute).join('/');\n\n return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';\n};\n\n// path.normalize(path)\n// posix version\nexports.normalize = function(path) {\n var isAbsolute = exports.isAbsolute(path),\n trailingSlash = substr(path, -1) === '/';\n\n // Normalize the path\n path = normalizeArray(filter(path.split('/'), function(p) {\n return !!p;\n }), !isAbsolute).join('/');\n\n if (!path && !isAbsolute) {\n path = '.';\n }\n if (path && trailingSlash) {\n path += '/';\n }\n\n return (isAbsolute ? '/' : '') + path;\n};\n\n// posix version\nexports.isAbsolute = function(path) {\n return path.charAt(0) === '/';\n};\n\n// posix version\nexports.join = function() {\n var paths = Array.prototype.slice.call(arguments, 0);\n return exports.normalize(filter(paths, function(p, index) {\n if (typeof p !== 'string') {\n throw new TypeError('Arguments to path.join must be strings');\n }\n return p;\n }).join('/'));\n};\n\n\n// path.relative(from, to)\n// posix version\nexports.relative = function(from, to) {\n from = exports.resolve(from).substr(1);\n to = exports.resolve(to).substr(1);\n\n function trim(arr) {\n var start = 0;\n for (; start < arr.length; start++) {\n if (arr[start] !== '') break;\n }\n\n var end = arr.length - 1;\n for (; end >= 0; end--) {\n if (arr[end] !== '') break;\n }\n\n if (start > end) return [];\n return arr.slice(start, end - start + 1);\n }\n\n var fromParts = trim(from.split('/'));\n var toParts = trim(to.split('/'));\n\n var length = Math.min(fromParts.length, toParts.length);\n var samePartsLength = length;\n for (var i = 0; i < length; i++) {\n if (fromParts[i] !== toParts[i]) {\n samePartsLength = i;\n break;\n }\n }\n\n var outputParts = [];\n for (var i = samePartsLength; i < fromParts.length; i++) {\n outputParts.push('..');\n }\n\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n\n return outputParts.join('/');\n};\n\nexports.sep = '/';\nexports.delimiter = ':';\n\nexports.dirname = function (path) {\n if (typeof path !== 'string') path = path + '';\n if (path.length === 0) return '.';\n var code = path.charCodeAt(0);\n var hasRoot = code === 47 /*/*/;\n var end = -1;\n var matchedSlash = true;\n for (var i = path.length - 1; i >= 1; --i) {\n code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n if (!matchedSlash) {\n end = i;\n break;\n }\n } else {\n // We saw the first non-path separator\n matchedSlash = false;\n }\n }\n\n if (end === -1) return hasRoot ? '/' : '.';\n if (hasRoot && end === 1) {\n // return '//';\n // Backwards-compat fix:\n return '/';\n }\n return path.slice(0, end);\n};\n\nfunction basename(path) {\n if (typeof path !== 'string') path = path + '';\n\n var start = 0;\n var end = -1;\n var matchedSlash = true;\n var i;\n\n for (i = path.length - 1; i >= 0; --i) {\n if (path.charCodeAt(i) === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // path component\n matchedSlash = false;\n end = i + 1;\n }\n }\n\n if (end === -1) return '';\n return path.slice(start, end);\n}\n\n// Uses a mixed approach for backwards-compatibility, as ext behavior changed\n// in new Node.js versions, so only basename() above is backported here\nexports.basename = function (path, ext) {\n var f = basename(path);\n if (ext && f.substr(-1 * ext.length) === ext) {\n f = f.substr(0, f.length - ext.length);\n }\n return f;\n};\n\nexports.extname = function (path) {\n if (typeof path !== 'string') path = path + '';\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n var preDotState = 0;\n for (var i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46 /*.*/) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1)\n startDot = i;\n else if (preDotState !== 1)\n preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (startDot === -1 || end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n return '';\n }\n return path.slice(startDot, end);\n};\n\nfunction filter (xs, f) {\n if (xs.filter) return xs.filter(f);\n var res = [];\n for (var i = 0; i < xs.length; i++) {\n if (f(xs[i], i, xs)) res.push(xs[i]);\n }\n return res;\n}\n\n// String.prototype.substr - negative index don't work in IE8\nvar substr = 'ab'.substr(-1) === 'b'\n ? function (str, start, len) { return str.substr(start, len) }\n : function (str, start, len) {\n if (start < 0) start = str.length + start;\n return str.substr(start, len);\n }\n;\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","import { assignWithDepth } from './utils';\nimport { logger } from './logger';\nimport theme from './themes';\n\n// import { unflatten } from 'flat';\n// import flatten from 'flat';\n\n// import themeVariables from './theme-default';\n// import themeForestVariables from './theme-forest';\n// import themeNeutralVariables from './theme-neutral';\n\nconst handleThemeVariables = value => {\n return theme[value] ? theme[value].getThemeVariables() : theme.default.getThemeVariables();\n};\n\nconst manipulators = {\n themeVariables: handleThemeVariables\n};\n\n/**\n * **Configuration methods in Mermaid version 8.6.0 have been updated, to learn more[[click here](8.6.0_docs.md)].**\n *\n * ## **What follows are config instructions for older versions**\n * These are the default options which can be overridden with the initialization call like so:\n * **Example 1:**\n *
\n * mermaid.initialize({\n * flowchart:{\n * htmlLabels: false\n * }\n * });\n *\n *\n * **Example 2:**\n *
\n * <script>\n * var config = {\n * startOnLoad:true,\n * flowchart:{\n * useMaxWidth:true,\n * htmlLabels:true,\n * curve:'cardinal',\n * },\n *\n * securityLevel:'loose',\n * };\n * mermaid.initialize(config);\n * </script>\n *\n * A summary of all options and their defaults is found [here](#mermaidapi-configuration-defaults). A description of each option follows below.\n *\n * @name Configuration\n */\nconst config = {\n /** theme , the CSS style sheet\n *\n * theme , the CSS style sheet\n *\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| Theme |Built in Themes| String | Optional | Values include, default, forest, dark, neutral, null|\n *\n ***Notes:**To disable any pre-defined mermaid theme, use \"null\".\n *
\n * \"theme\": \"forest\",\n * \"themeCSS\": \".node rect { fill: red; }\"\n *\n */\n theme: 'default',\n themeVariables: theme['default'].getThemeVariables(),\n themeCSS: undefined,\n /* **maxTextSize** - The maximum allowed size of the users text diamgram */\n maxTextSize: 50000,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *|fontFamily | specifies the font to be used in the rendered diagrams| String | Required | Verdana, Arial, Trebuchet MS,|\n *\n ***notes: Default value is \\\\\"trebuchet ms\\\\\".\n */\n fontFamily: '\"trebuchet ms\", verdana, arial;',\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| logLevel |This option decides the amount of logging to be used.| String | Required | 1, 2, 3, 4, 5 |\n *\n *\n ***Notes:**\n *- debug: 1.\n *- info: 2.\n *- warn: 3.\n *- error: 4.\n *- fatal: 5(default).\n */\n logLevel: 5,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| securitylevel | Level of trust for parsed diagram|String | Required | Strict, Loose, antiscript |\n *\n ***Notes:\n *- **strict**: (**default**) tags in text are encoded, click functionality is disabeled\n *- **loose**: tags in text are allowed, click functionality is enabled\n *- **antiscript**: html tags in text are allowed, (only script element is removed), click functionality is enabled\n */\n securityLevel: 'strict',\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| startOnLoad| Dictates whether mermaind starts on Page load | Boolean | Required | True, False |\n *\n ***Notes:**\n ***Default value: true**\n */\n startOnLoad: true,\n\n /**\n *| Parameter | Description |Type | Required |Values|\n *| --- | --- | --- | --- | --- |\n *| arrowMarkerAbsolute | Controls whether or arrow markers in html code are absolute paths or anchors | Boolean | Required | True, False |\n *\n *\n *## Notes**: This matters if you are using base tag settings.\n ***Default value: false**.\n */\n arrowMarkerAbsolute: false,\n\n /**\n * This option controls which currentConfig keys are considered _secure_ and can only be changed via\n * call to mermaidAPI.initialize. Calls to mermaidAPI.reinitialize cannot make changes to\n * the `secure` keys in the current currentConfig. This prevents malicious graph directives from\n * overriding a site's default security.\n */\n secure: ['secure', 'securityLevel', 'startOnLoad', 'maxTextSize'],\n\n /**\n * The object containing configurations specific for flowcharts\n */\n flowchart: {\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| diagramPadding | amount of padding around the diagram as a whole | Integer | Required | Any Positive Value |\n *\n ***Notes:**The amount of padding around the diagram as a whole so that embedded diagrams have margins, expressed in pixels\n ***Default value: 8**.\n */\n diagramPadding: 8,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| htmlLabels | Flag for setting whether or not a html tag should be used for rendering labels on the edges. | Boolean| Required | True, False|\n *\n ***Notes: Default value: true**.\n */\n htmlLabels: true,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| nodeSpacing | Defines the spacing between nodes on the same level | Integer| Required | Any positive Numbers |\n *\n ***Notes:\n *Pertains to horizontal spacing for TB (top to bottom) or BT (bottom to top) graphs, and the vertical spacing for LR as well as RL graphs.**\n ***Default value 50**.\n */\n nodeSpacing: 50,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| rankSpacing | Defines the spacing between nodes on different levels | Integer | Required| Any Positive Numbers |\n *\n ***Notes: pertains to vertical spacing for TB (top to bottom) or BT (bottom to top), and the horizontal spacing for LR as well as RL graphs.\n ***Default value 50**.\n */\n rankSpacing: 50,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| curve | Defines how mermaid renders curves for flowcharts. | String | Required | Basis, Linear, Cardinal|\n *\n ***Notes:\n *Default Vaue: Linear**\n */\n curve: 'linear',\n // Only used in new experimental rendering\n // repreesents the padding between the labels and the shape\n padding: 15\n },\n\n /**\n * The object containing configurations specific for sequence diagrams\n */\n sequence: {\n /**\n * widt of the activation rect\n * **Default value 10**.\n */\n activationWidth: 10,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| diagramMarginX | margin to the right and left of the sequence diagram | Integer | Required | Any Positive Values |\n *\n ***Notes:**\n ***Default value 50**.\n */\n diagramMarginX: 50,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| diagramMarginY | Margin to the over and under the sequence diagram | Integer | Required | Any Positive Values|\n *\n ***Notes:**\n ***Default value 10**.\n */\n diagramMarginY: 10,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| actorMargin | Margin between actors. | Integer | Required | Any Positive Value |\n *\n ***Notes:**\n ***Default value 50**.\n */\n actorMargin: 50,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| width | Width of actor boxes | Integer | Required | Any Positive Value |\n *\n ***Notes:**\n ***Default value 150**.\n */\n width: 150,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| height | Height of actor boxes | Integer | Required | Any Positive Value|\n *\n ***Notes:**\n ***Default value 65**..\n */\n height: 65,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| boxMargin | Margin around loop boxes | Integer | Required | Any Positive Value |\n *\n ***Notes:**\n *\n ***Default value 10**.\n */\n boxMargin: 10,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| boxTextMargin| margin around the text in loop/alt/opt boxes | Integer | Required| Any Positive Value|\n *\n ***Notes:**\n *\n ***Default value 5**.\n */\n boxTextMargin: 5,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| noteMargin | margin around notes. | Integer | Required | Any Positive Value |\n *\n ***Notes:**\n *\n ***Default value 10**.\n */\n noteMargin: 10,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| messageMargin | Space between messages. | Integer | Required | Any Positive Value |\n *\n ***Notes:**\n *\n *Space between messages.\n ***Default value 35**.\n */\n messageMargin: 35,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| messageAlign | Multiline message alignment | Integer | Required | left, center, right |\n *\n ***Notes:**center **default**\n */\n messageAlign: 'center',\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| mirrorActors | mirror actors under diagram. | Boolean| Required | True, False |\n *\n ***Notes:**\n *\n ***Default value true**.\n */\n mirrorActors: true,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| bottomMarginAdj | Prolongs the edge of the diagram downwards. | Integer | Required | Any Positive Value |\n *\n ***Notes:**Depending on css styling this might need adjustment.\n ***Default value 1**.\n */\n bottomMarginAdj: 1,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| useMaxWidth | See Notes | Boolean | Required | True, False |\n *\n ***Notes:**\n *when this flag is set to true, the height and width is set to 100% and is then scaling with the\n *available space. If set to false, the absolute space required is used.\n ***Default value: True**.\n */\n useMaxWidth: true,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| rightAngles | display curve arrows as right angles| Boolean | Required | True, False |\n *\n ***Notes:**\n *\n *This will display arrows that start and begin at the same node as right angles, rather than a curve\n ***Default value false**.\n */\n rightAngles: false,\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| showSequenceNumbers | This will show the node numbers | Boolean | Required | True, False |\n *\n ***Notes:**\n ***Default value false**.\n */\n showSequenceNumbers: false,\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| actorFontSize| This sets the font size of the actor's description | Integer | Require | Any Positive Value |\n *\n ***Notes:**\n ***Default value 14**..\n */\n actorFontSize: 14,\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| actorFontFamily |This sets the font family of the actor's description | 3 | 4 | Open-Sans, Sans-Serif |\n *\n ***Notes:**\n ***Default value \"Open-Sans\", \"sans-serif\"**.\n */\n actorFontFamily: '\"Open-Sans\", \"sans-serif\"',\n /**\n * This sets the font weight of the actor's description\n * **Default value 400.\n */\n actorFontWeight: 400,\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| noteFontSize |This sets the font size of actor-attached notes. | Integer | Required | Any Positive Value |\n *\n ***Notes:**\n ***Default value 14**..\n */\n noteFontSize: 14,\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| noteFontFamily| This sets the font family of actor-attached notes. | String | Required | trebuchet ms, verdana, arial |\n *\n ***Notes:**\n ***Default value: trebuchet ms **.\n */\n noteFontFamily: '\"trebuchet ms\", verdana, arial',\n /**\n * This sets the font weight of the note's description\n * **Default value 400.\n */\n noteFontWeight: 400,\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| noteAlign | This sets the text alignment of actor-attached notes. | string | required | left, center, right|\n *\n ***Notes:**\n ***Default value center**.\n */\n noteAlign: 'center',\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| messageFontSize | This sets the font size of actor messages. | Integer | Required | Any Positive Number |\n *\n ***Notes:**\n ***Default value 16**.\n */\n messageFontSize: 16,\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| messageFontFamily | This sets the font family of actor messages. | String| Required | trebuchet ms\", verdana, aria |\n *\n ***Notes:**\n ***Default value:\"trebuchet ms**.\n */\n messageFontFamily: '\"trebuchet ms\", verdana, arial',\n /**\n * This sets the font weight of the message's description\n * **Default value 400.\n */\n messageFontWeight: 400,\n /**\n * This sets the auto-wrap state for the diagram\n * **Default value false.\n */\n wrap: false,\n /**\n * This sets the auto-wrap padding for the diagram (sides only)\n * **Default value 10.\n */\n wrapPadding: 10,\n /**\n * This sets the width of the loop-box (loop, alt, opt, par)\n * **Default value 50.\n */\n labelBoxWidth: 50,\n /**\n * This sets the height of the loop-box (loop, alt, opt, par)\n * **Default value 20.\n */\n labelBoxHeight: 20,\n messageFont: function() {\n return {\n fontFamily: this.messageFontFamily,\n fontSize: this.messageFontSize,\n fontWeight: this.messageFontWeight\n };\n },\n noteFont: function() {\n return {\n fontFamily: this.noteFontFamily,\n fontSize: this.noteFontSize,\n fontWeight: this.noteFontWeight\n };\n },\n actorFont: function() {\n return {\n fontFamily: this.actorFontFamily,\n fontSize: this.actorFontSize,\n fontWeight: this.actorFontWeight\n };\n }\n },\n\n /**\n * The object containing configurations specific for gantt diagrams*\n */\n gantt: {\n /**\n *### titleTopMargin\n *\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| titleTopMargin | Margin top for the text over the gantt diagram | Integer | Required | Any Positive Value |\n *\n ***Notes:**\n ***Default value 25**.\n */\n titleTopMargin: 25,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| barHeight | The height of the bars in the graph | Integer | Required | Any Positive Value |\n *\n ***Notes:**\n ***Default value 20**.\n */\n barHeight: 20,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| barGap | The margin between the different activities in the gantt diagram. | Integer | Optional |Any Positive Value |\n *\n ***Notes:**\n ***Default value 4**.\n */\n barGap: 4,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| topPadding | Margin between title and gantt diagram and between axis and gantt diagram. | Integer | Required | Any Positive Value |\n *\n ***Notes:**\n ***Default value 50**.\n */\n topPadding: 50,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| leftPadding | The space allocated for the section name to the left of the activities. | Integer| Required | Any Positive Value |\n *\n ***Notes:**\n ***Default value 75**.\n */\n leftPadding: 75,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| gridLineStartPadding | Vertical starting position of the grid lines. | Integer | Required | Any Positive Value |\n *\n ***Notes:**\n ***Default value 35**.\n */\n gridLineStartPadding: 35,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| fontSize | Font size| Integer | Required | Any Positive Value |\n *\n ***Notes:**\n ***Default value 11**.\n */\n fontSize: 11,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| fontFamily | font Family | string | required |\"Open-Sans\", \"sans-serif\" |\n *\n ***Notes:**\n *\n ***Default value '\"Open-Sans\", \"sans-serif\"'**.\n */\n fontFamily: '\"Open-Sans\", \"sans-serif\"',\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| numberSectionStyles | The number of alternating section styles | Integer | 4 | Any Positive Value |\n *\n ***Notes:**\n ***Default value 4**.\n */\n numberSectionStyles: 4,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| axisFormat | Datetime format of the axis. | 3 | Required | Date in yy-mm-dd |\n *\n ***Notes:**\n *\n * This might need adjustment to match your locale and preferences\n ***Default value '%Y-%m-%d'**.\n */\n axisFormat: '%Y-%m-%d'\n },\n /**\n * The object containing configurations specific for sequence diagrams\n */\n journey: {\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| diagramMarginX | margin to the right and left of the sequence diagram | Integer | Required | Any Positive Value |\n *\n ***Notes:**\n ***Default value 50**.\n */\n diagramMarginX: 50,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| diagramMarginY | margin to the over and under the sequence diagram. | Integer | Required | Any Positive Value|\n *\n ***Notes:**\n ***Default value 10**..\n */\n diagramMarginY: 10,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| actorMargin | Margin between actors. | Integer | Required | Any Positive Value|\n *\n ***Notes:**\n ***Default value 50**.\n */\n actorMargin: 50,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| width | Width of actor boxes | Integer | Required | Any Positive Value |\n *\n ***Notes:**\n ***Default value 150**.\n */\n width: 150,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| height | Height of actor boxes | Integer | Required | Any Positive Value |\n *\n ***Notes:**\n ***Default value 65**.\n */\n height: 65,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| boxMargin | Margin around loop boxes | Integer | Required | Any Positive Value |\n *\n ***Notes:**\n ***Default value 10**.\n */\n boxMargin: 10,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| boxTextMargin | margin around the text in loop/alt/opt boxes | Integer | Required | Any Positive Value |\n *\n ***Notes:**\n */\n boxTextMargin: 5,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| noteMargin | margin around notes. | Integer | Required | Any Positive Value |\n *\n ***Notes:**\n ***Default value 10**.\n */\n noteMargin: 10,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| messageMargin |Space between messages. | Integer | Required | Any Positive Value |\n *\n ***Notes:**\n *\n *Space between messages.\n ***Default value 35**.\n */\n messageMargin: 35,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| messageAlign |Multiline message alignment | 3 | 4 | left, center, right |\n *\n ***Notes:**default:center**\n */\n messageAlign: 'center',\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| bottomMarginAdj | Prolongs the edge of the diagram downwards. | Integer | 4 | Any Positive Value |\n *\n ***Notes:**Depending on css styling this might need adjustment.\n ***Default value 1**.\n */\n bottomMarginAdj: 1,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| useMaxWidth | See notes | Boolean | 4 | True, False |\n *\n ***Notes:**when this flag is set the height and width is set to 100% and is then scaling with the\n *available space if not the absolute space required is used.\n *\n ***Default value true**.\n */\n useMaxWidth: true,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| rightAngles | Curved Arrows become Right Angles, | 3 | 4 | True, False |\n *\n ***Notes:**This will display arrows that start and begin at the same node as right angles, rather than a curves\n ***Default value false**.\n */\n rightAngles: false\n },\n class: {\n arrowMarkerAbsolute: false\n },\n git: {\n arrowMarkerAbsolute: false\n },\n state: {\n dividerMargin: 10,\n sizeUnit: 5,\n padding: 8,\n textHeight: 10,\n titleShift: -15,\n noteMargin: 10,\n forkWidth: 70,\n forkHeight: 7,\n // Used\n miniPadding: 2,\n // Font size factor, this is used to guess the width of the edges labels before rendering by dagre\n // layout. This might need updating if/when switching font\n fontSizeFactor: 5.02,\n fontSize: 24,\n labelHeight: 16,\n edgeLengthFactor: '20',\n compositTitleSize: 35,\n radius: 5\n },\n\n /**\n * The object containing configurations specific for entity relationship diagrams\n */\n er: {\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| diagramPadding | amount of padding around the diagram as a whole | Integer | Required | Any Positive Value |\n *\n ***Notes:**The amount of padding around the diagram as a whole so that embedded diagrams have margins, expressed in pixels\n ***Default value: 20**.\n */\n diagramPadding: 20,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| layoutDirection | Directional bias for layout of entities. | String | Required | \"TB\", \"BT\",\"LR\",\"RL\" |\n *\n ***Notes:**\n *'TB' for Top-Bottom, 'BT'for Bottom-Top, 'LR' for Left-Right, or 'RL' for Right to Left.\n * T = top, B = bottom, L = left, and R = right.\n ***Default value: TB **.\n */\n layoutDirection: 'TB',\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| minEntityWidth | The mimimum width of an entity box, | Integer | Required| Any Positive Value |\n *\n ***Notes:**expressed in pixels\n ***Default value: 100**.\n */\n minEntityWidth: 100,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| minEntityHeight| The minimum height of an entity box, | Integer | 4 | Any Positive Value |\n *\n ***Notes:**expressed in pixels\n ***Default value: 75 **\n */\n minEntityHeight: 75,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| entityPadding|minimum internal padding betweentext in box and box borders| Integer | 4 | Any Positive Value |\n *\n ***Notes:**The minimum internal padding betweentext in an entity box and the enclosing box borders, expressed in pixels.\n ***Default value: 15 **\n */\n entityPadding: 15,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| stroke | Stroke color of box edges and lines | String | 4 | Any recognized color |\n ***Default value: gray **\n */\n stroke: 'gray',\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| fill | Fill color of entity boxes | String | 4 | Any recognized color |\n *\n ***Notes:**\n ***Default value:'honeydew'**\n */\n fill: 'honeydew',\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| fontSize| Font Size in pixels| Integer | | Any Positive Value |\n *\n ***Notes:**Font size (expressed as an integer representing a number of pixels)\n ***Default value: 12 **\n */\n fontSize: 12,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| useMaxWidth | See Notes | Boolean | Required | true, false |\n *\n ***Notes:**\n *When this flag is set to true, the diagram width is locked to 100% and\n *scaled based on available space. If set to false, the diagram reserves its\n *absolute width.\n ***Default value: true**.\n */\n useMaxWidth: true\n }\n};\n\n// debugger;\nconfig.class.arrowMarkerAbsolute = config.arrowMarkerAbsolute;\nconfig.git.arrowMarkerAbsolute = config.arrowMarkerAbsolute;\nexport const defaultConfig = Object.freeze(config);\n\nconst siteConfig = assignWithDepth({}, defaultConfig);\nconst currentConfig = assignWithDepth({}, defaultConfig);\n\n/**\n *## setSiteConfig\n *| Function | Description | Type | Values |\n *| --------- | ------------------- | ------- | ------------------ |\n *| setSiteConfig|Sets the siteConfig to desired values | Put Request | Any Values, except ones in secure array|\n ***Notes:**\n *Sets the siteConfig. The siteConfig is a protected configuration for repeat use. Calls to reset() will reset\n *the currentConfig to siteConfig. Calls to reset(configApi.defaultConfig) will reset siteConfig and currentConfig\n *to the defaultConfig\n *Note: currentConfig is set in this function\n **Default value: At default, will mirror Global Config**\n * @param conf - the base currentConfig to use as siteConfig\n * @returns {*} - the siteConfig\n */\nexport const setSiteConfig = conf => {\n Object.keys(conf).forEach(key => {\n const manipulator = manipulators[key];\n conf[key] = manipulator ? manipulator(conf[key]) : conf[key];\n });\n\n assignWithDepth(currentConfig, conf, { clobber: true });\n // Set theme variables if user has set the theme option\n assignWithDepth(siteConfig, conf);\n\n return getSiteConfig();\n};\n/**\n *## getSiteConfig\n *| Function | Description | Type | Values |\n *| --------- | ------------------- | ------- | ------------------ |\n *| setSiteConfig|Returns the current siteConfig base configuration | Get Request | Returns Any Values in siteConfig|\n ***Notes**:\n *Returns **any** values in siteConfig.\n * @returns {*}\n */\nexport const getSiteConfig = () => {\n return assignWithDepth({}, siteConfig);\n};\n/**\n *## setConfig\n *| Function | Description | Type | Values |\n *| --------- | ------------------- | ------- | ------------------ |\n *| setSiteConfig|Sets the siteConfig to desired values | Put Request| Any Values, except ones in secure array|\n ***Notes**:\n *Sets the currentConfig. The parameter conf is sanitized based on the siteConfig.secure keys. Any\n *values found in conf with key found in siteConfig.secure will be replaced with the corresponding\n *siteConfig value.\n * @param conf - the potential currentConfig\n * @returns {*} - the currentConfig merged with the sanitized conf\n */\nexport const setConfig = conf => {\n sanitize(conf);\n Object.keys(conf).forEach(key => {\n const manipulator = manipulators[key];\n conf[key] = manipulator ? manipulator(conf[key]) : conf[key];\n });\n\n assignWithDepth(currentConfig, conf);\n return getConfig();\n};\n/**\n * ## getConfig\n *| Function | Description | Type | Return Values |\n *| --------- | ------------------- | ------- | ------------------ |\n *| getConfig |Obtains the currentConfig | Get Request | Any Values from currentConfig|\n ***Notes**:\n *Returns **any** the currentConfig\n * @returns {*} - the currentConfig\n */\nexport const getConfig = () => {\n return assignWithDepth({}, currentConfig);\n};\n/**\n *## sanitize\n *| Function | Description | Type | Values |\n *| --------- | ------------------- | ------- | ------------------ |\n *| sanitize |Sets the siteConfig to desired values. | Put Request |None|\n *Ensures options parameter does not attempt to override siteConfig secure keys\n *Note: modifies options in-place\n * @param options - the potential setConfig parameter\n */\nexport const sanitize = options => {\n Object.keys(siteConfig.secure).forEach(key => {\n if (typeof options[siteConfig.secure[key]] !== 'undefined') {\n // DO NOT attempt to print options[siteConfig.secure[key]] within `${}` as a malicious script\n // can exploit the logger's attempt to stringify the value and execute arbitrary code\n logger.warn(\n `Denied attempt to modify a secure key ${siteConfig.secure[key]}`,\n options[siteConfig.secure[key]]\n );\n delete options[siteConfig.secure[key]];\n }\n });\n};\n/**\n *## reset\n *| Function | Description | Type | Required | Values |\n *| --------- | ------------------- | ------- | -------- | ------------------ |\n *| reset|Resets currentConfig to conf| Put Request | Required | None|\n *\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| conf| base set of values, which currentConfig coul be **reset** to.| Dictionary | Required | Any Values, with respect to the secure Array|\n *\n **Notes :\n (default: current siteConfig ) (optional, default `getSiteConfig()`)\n * @param conf - the base currentConfig to reset to (default: current siteConfig )\n */\nexport const reset = (conf = getSiteConfig()) => {\n Object.keys(siteConfig).forEach(key => delete siteConfig[key]);\n Object.keys(currentConfig).forEach(key => delete currentConfig[key]);\n assignWithDepth(siteConfig, conf, { clobber: true });\n assignWithDepth(currentConfig, conf, { clobber: true });\n};\n\nconst configApi = Object.freeze({\n sanitize,\n setSiteConfig,\n getSiteConfig,\n setConfig,\n getConfig,\n reset,\n defaultConfig\n});\nexport default configApi;\n","import intersectRect from './intersect/intersect-rect';\nimport { logger as log } from '../logger'; // eslint-disable-line\nimport createLabel from './createLabel';\nimport { select } from 'd3';\nimport { getConfig } from '../config';\n\nconst rect = (parent, node) => {\n log.trace('Creating subgraph rect for ', node.id, node);\n\n // Add outer g element\n const shapeSvg = parent\n .insert('g')\n .attr('class', 'cluster')\n .attr('id', node.id);\n\n // add the rect\n const rect = shapeSvg.insert('rect', ':first-child');\n\n // Create the label and insert it after the rect\n const label = shapeSvg.insert('g').attr('class', 'cluster-label');\n\n const text = label\n .node()\n .appendChild(createLabel(node.labelText, node.labelStyle, undefined, true));\n\n // Get the size of the label\n let bbox = text.getBBox();\n\n if (getConfig().flowchart.htmlLabels) {\n const div = text.children[0];\n const dv = select(text);\n bbox = div.getBoundingClientRect();\n dv.attr('width', bbox.width);\n dv.attr('height', bbox.height);\n }\n\n const padding = 0 * node.padding;\n const halfPadding = padding / 2;\n\n log.trace('Data ', node, JSON.stringify(node));\n // center the rect around its coordinate\n rect\n .attr('rx', node.rx)\n .attr('ry', node.ry)\n .attr('x', node.x - node.width / 2 - halfPadding)\n .attr('y', node.y - node.height / 2 - halfPadding)\n .attr('width', node.width + padding)\n .attr('height', node.height + padding);\n\n // Center the label\n label.attr(\n 'transform',\n 'translate(' +\n (node.x - bbox.width / 2) +\n ', ' +\n (node.y - node.height / 2 - node.padding / 3 + 3) +\n ')'\n );\n\n const rectBox = rect.node().getBBox();\n node.width = rectBox.width;\n node.height = rectBox.height;\n\n node.intersect = function(point) {\n return intersectRect(node, point);\n };\n\n return shapeSvg;\n};\n\n/**\n * Non visiable cluster where the note is group with its\n */\nconst noteGroup = (parent, node) => {\n // Add outer g element\n const shapeSvg = parent\n .insert('g')\n .attr('class', 'note-cluster')\n .attr('id', node.id);\n\n // add the rect\n const rect = shapeSvg.insert('rect', ':first-child');\n\n const padding = 0 * node.padding;\n const halfPadding = padding / 2;\n\n // center the rect around its coordinate\n rect\n .attr('rx', node.rx)\n .attr('ry', node.ry)\n .attr('x', node.x - node.width / 2 - halfPadding)\n .attr('y', node.y - node.height / 2 - halfPadding)\n .attr('width', node.width + padding)\n .attr('height', node.height + padding)\n .attr('fill', 'none');\n\n const rectBox = rect.node().getBBox();\n node.width = rectBox.width;\n node.height = rectBox.height;\n\n node.intersect = function(point) {\n return intersectRect(node, point);\n };\n\n return shapeSvg;\n};\nconst roundedWithTitle = (parent, node) => {\n // Add outer g element\n const shapeSvg = parent\n .insert('g')\n .attr('class', node.classes)\n .attr('id', node.id);\n\n // add the rect\n const rect = shapeSvg.insert('rect', ':first-child');\n\n // Create the label and insert it after the rect\n const label = shapeSvg.insert('g').attr('class', 'cluster-label');\n const innerRect = shapeSvg.append('rect');\n\n const text = label\n .node()\n .appendChild(createLabel(node.labelText, node.labelStyle, undefined, true));\n\n // Get the size of the label\n let bbox = text.getBBox();\n if (getConfig().flowchart.htmlLabels) {\n const div = text.children[0];\n const dv = select(text);\n bbox = div.getBoundingClientRect();\n dv.attr('width', bbox.width);\n dv.attr('height', bbox.height);\n }\n bbox = text.getBBox();\n const padding = 0 * node.padding;\n const halfPadding = padding / 2;\n\n // center the rect around its coordinate\n rect\n .attr('class', 'outer')\n .attr('x', node.x - node.width / 2 - halfPadding)\n .attr('y', node.y - node.height / 2 - halfPadding)\n .attr('width', node.width + padding)\n .attr('height', node.height + padding);\n innerRect\n .attr('class', 'inner')\n .attr('x', node.x - node.width / 2 - halfPadding)\n .attr('y', node.y - node.height / 2 - halfPadding + bbox.height - 1)\n .attr('width', node.width + padding)\n .attr('height', node.height + padding - bbox.height - 3);\n\n // Center the label\n label.attr(\n 'transform',\n 'translate(' +\n (node.x - bbox.width / 2) +\n ', ' +\n (node.y - node.height / 2 - node.padding / 3 + (getConfig().flowchart.htmlLabels ? 5 : 3)) +\n ')'\n );\n\n const rectBox = rect.node().getBBox();\n node.width = rectBox.width;\n node.height = rectBox.height;\n\n node.intersect = function(point) {\n return intersectRect(node, point);\n };\n\n return shapeSvg;\n};\n\nconst divider = (parent, node) => {\n // Add outer g element\n const shapeSvg = parent\n .insert('g')\n .attr('class', node.classes)\n .attr('id', node.id);\n\n // add the rect\n const rect = shapeSvg.insert('rect', ':first-child');\n\n const padding = 0 * node.padding;\n const halfPadding = padding / 2;\n\n // center the rect around its coordinate\n rect\n .attr('class', 'divider')\n .attr('x', node.x - node.width / 2 - halfPadding)\n .attr('y', node.y - node.height / 2)\n .attr('width', node.width + padding)\n .attr('height', node.height + padding);\n\n const rectBox = rect.node().getBBox();\n node.width = rectBox.width;\n node.height = rectBox.height;\n\n node.intersect = function(point) {\n return intersectRect(node, point);\n };\n\n return shapeSvg;\n};\n\nconst shapes = { rect, roundedWithTitle, noteGroup, divider };\n\nlet clusterElems = {};\n\nexport const insertCluster = (elem, node) => {\n log.trace('Inserting cluster');\n const shape = node.shape || 'rect';\n clusterElems[node.id] = shapes[shape](elem, node);\n};\nexport const getClusterTitleWidth = (elem, node) => {\n const label = createLabel(node.labelText, node.labelStyle, undefined, true);\n elem.node().appendChild(label);\n const width = label.getBBox().width;\n elem.node().removeChild(label);\n return width;\n};\n\nexport const clear = () => {\n clusterElems = {};\n};\n\nexport const positionCluster = node => {\n log.info('Position cluster');\n const el = clusterElems[node.id];\n\n el.attr('transform', 'translate(' + node.x + ', ' + node.y + ')');\n};\n","import { select } from 'd3';\nimport { logger } from '../logger'; // eslint-disable-line\n// let vertexNode;\n// if (getConfig().flowchart.htmlLabels) {\n// // TODO: addHtmlLabel accepts a labelStyle. Do we possibly have that?\n// const node = {\n// label: vertexText.replace(/fa[lrsb]?:fa-[\\w-]+/g, s => ``)\n// };\n// vertexNode = addHtmlLabel(svg, node).node();\n// vertexNode.parentNode.removeChild(vertexNode);\n// } else {\n// const svgLabel = document.createElementNS('http://www.w3.org/2000/svg', 'text');\n// svgLabel.setAttribute('style', styles.labelStyle.replace('color:', 'fill:'));\n\n// const rows = vertexText.split(common.lineBreakRegex);\n\n// for (let j = 0; j < rows.length; j++) {\n// const tspan = document.createElementNS('http://www.w3.org/2000/svg', 'tspan');\n// tspan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\n// tspan.setAttribute('dy', '1em');\n// tspan.setAttribute('x', '1');\n// tspan.textContent = rows[j];\n// svgLabel.appendChild(tspan);\n// }\n// vertexNode = svgLabel;\n// }\nimport { getConfig } from '../config';\n\nfunction applyStyle(dom, styleFn) {\n if (styleFn) {\n dom.attr('style', styleFn);\n }\n}\n\nfunction addHtmlLabel(node) {\n // var fo = root.append('foreignObject').attr('width', '100000');\n\n // var div = fo.append('xhtml:div');\n // div.attr('xmlns', 'http://www.w3.org/1999/xhtml');\n\n // var label = node.label;\n // switch (typeof label) {\n // case 'function':\n // div.insert(label);\n // break;\n // case 'object':\n // // Currently we assume this is a DOM object.\n // div.insert(function() {\n // return label;\n // });\n // break;\n // default:\n // div.html(label);\n // }\n\n // applyStyle(div, node.labelStyle);\n // div.style('display', 'inline-block');\n // // Fix for firefox\n // div.style('white-space', 'nowrap');\n\n // var client = div.node().getBoundingClientRect();\n // fo.attr('width', client.width).attr('height', client.height);\n const fo = select(document.createElementNS('http://www.w3.org/2000/svg', 'foreignObject'));\n const div = fo.append('xhtml:div');\n\n const label = node.label;\n const labelClass = node.isNode ? 'nodeLabel' : 'edgeLabel';\n div.html('' + label + '');\n\n applyStyle(div, node.labelStyle);\n div.style('display', 'inline-block');\n // Fix for firefox\n div.style('white-space', 'nowrap');\n div.attr('xmlns', 'http://www.w3.org/1999/xhtml');\n return fo.node();\n}\n\nconst createLabel = (_vertexText, style, isTitle, isNode) => {\n let vertexText = _vertexText || '';\n if (getConfig().flowchart.htmlLabels) {\n // TODO: addHtmlLabel accepts a labelStyle. Do we possibly have that?\n vertexText = vertexText.replace(/\\\\n|\\n/g, '
\n *\n * <script>\n * var config = {\n * theme:'default',\n * logLevel:'fatal',\n * securityLevel:'strict',\n * startOnLoad:true,\n * arrowMarkerAbsolute:false,\n *\n * er:{\n * diagramPadding:20,\n * layoutDirection:'TB',\n * minEntityWidth:100,\n * minEntityHeight:75,\n * entityPadding:15,\n * stroke:'gray',\n * fill:'honeydew',\n * fontSize:12,\n * useMaxWidth:true,\n * },\n * flowchart:{\n * diagramPadding:8,\n * htmlLabels:true,\n * curve:'linear',\n * },\n * sequence:{\n * diagramMarginX:50,\n * diagramMarginY:10,\n * actorMargin:50,\n * width:150,\n * height:65,\n * boxMargin:10,\n * boxTextMargin:5,\n * noteMargin:10,\n * messageMargin:35,\n * messageAlign:'center',\n * mirrorActors:true,\n * bottomMarginAdj:1,\n * useMaxWidth:true,\n * rightAngles:false,\n * showSequenceNumbers:false,\n * },\n * gantt:{\n * titleTopMargin:25,\n * barHeight:20,\n * barGap:4,\n * topPadding:50,\n * leftPadding:75,\n * gridLineStartPadding:35,\n * fontSize:11,\n * fontFamily:'\"Open-Sans\", \"sans-serif\"',\n * numberSectionStyles:4,\n * axisFormat:'%Y-%m-%d',\n * }\n * };\n * mermaid.initialize(config);\n * </script>\n *\n */\n","import classDiagram from './diagrams/class/styles';\nimport er from './diagrams/er/styles';\nimport flowchart from './diagrams/flowchart/styles';\nimport gantt from './diagrams/gantt/styles';\nimport git from './diagrams/git/styles';\nimport info from './diagrams/info/styles';\nimport pie from './diagrams/pie/styles';\nimport sequence from './diagrams/sequence/styles';\nimport stateDiagram from './diagrams/state/styles';\nimport journey from './diagrams/user-journey/styles';\n\nconst themes = {\n flowchart,\n 'flowchart-v2': flowchart,\n sequence,\n gantt,\n class: classDiagram,\n 'classDiagram-v2': classDiagram,\n stateDiagram,\n state: stateDiagram,\n git,\n info,\n pie,\n er,\n journey\n};\n\nexport const calcThemeVariables = (theme, userOverRides) => theme.calcColors(userOverRides);\n\nconst getStyles = (type, userStyles, options) => {\n return ` {\n font-family: ${options.fontFamily};\n font-size: ${options.fontSize};\n fill: ${options.textColor}\n }\n\n /* Classes common for multiple diagrams */\n\n .error-icon {\n fill: ${options.errorBkgColor};\n }\n .error-text {\n fill: ${options.errorTextColor};\n stroke: ${options.errorTextColor};\n }\n\n .edge-thickness-normal {\n stroke-width: 2px;\n }\n .edge-thickness-thick {\n stroke-width: 3.5px\n }\n .edge-pattern-solid {\n stroke-dasharray: 0;\n }\n\n .edge-pattern-dashed{\n stroke-dasharray: 3;\n }\n .edge-pattern-dotted {\n stroke-dasharray: 2;\n }\n\n .marker {\n fill: ${options.lineColor};\n }\n .marker.cross {\n stroke: ${options.lineColor};\n }\n\n svg {\n font-family: ${options.fontFamily};\n font-size: ${options.fontSize};\n }\n\n ${themes[type](options)}\n\n ${userStyles}\n\n ${type} { fill: apa;}\n`;\n};\n\nexport default getStyles;\n","import { getThemeVariables as baseThemeVariables } from './theme-base';\nimport { getThemeVariables as darkThemeVariables } from './theme-dark';\nimport { getThemeVariables as defaultThemeVariables } from './theme-default';\nimport { getThemeVariables as forestThemeVariables } from './theme-forest';\nimport { getThemeVariables as neutralThemeVariables } from './theme-neutral';\n\nexport default {\n base: {\n getThemeVariables: baseThemeVariables\n },\n dark: {\n getThemeVariables: darkThemeVariables\n },\n default: {\n getThemeVariables: defaultThemeVariables\n },\n forest: {\n getThemeVariables: forestThemeVariables\n },\n neutral: {\n getThemeVariables: neutralThemeVariables\n }\n};\n","import { darken, lighten, adjust } from 'khroma';\n\nclass Theme {\n constructor() {\n /* Base variables */\n this.primaryColor = '#9f33be';\n this.secondaryColor = '#b20238';\n this.tertiaryColor = lighten(this.primaryColor, 30);\n this.relationColor = '#000';\n\n // this.primaryColor = '#fa255e';\n // this.secondaryColor = '#c39ea0';\n // this.tertiaryColor = '#f8e5e5';\n\n // this.primaryColor = '#ECECFF';\n // this.secondaryColor = '#ffffde';\n // this.tertiaryColor = '#ffffde';\n\n this.background = 'white';\n this.lineColor = '#333333';\n this.border1 = '#9370DB';\n this.arrowheadColor = '#333333';\n this.fontFamily = '\"trebuchet ms\", verdana, arial';\n this.fontSize = '16px';\n this.labelBackground = '#e8e8e8';\n this.textColor = '#333';\n this.noteBkgColor = '#fff5ad';\n this.noteBorderColor = '#aaaa33';\n this.updateColors();\n }\n updateColors() {\n this.secondBkg = this.tertiaryColor;\n\n /* Flowchart variables */\n\n this.nodeBkg = this.primaryColor;\n this.mainBkg = this.primaryColor;\n this.nodeBorder = darken(this.primaryColor, 23); // border 1\n this.clusterBkg = this.tertiaryColor;\n this.clusterBorder = darken(this.tertiaryColor, 30);\n this.defaultLinkColor = this.lineColor;\n this.titleColor = this.textColor;\n this.edgeLabelBackground = this.labelBackground;\n\n /* Sequence Diagram variables */\n\n // this.actorBorder = lighten(this.border1, 0.5);\n this.actorBorder = lighten(this.border1, 23);\n this.actorBkg = this.mainBkg;\n this.actorTextColor = 'black';\n this.actorLineColor = 'grey';\n this.labelBoxBkgColor = this.actorBkg;\n this.signalColor = this.textColor;\n this.signalTextColor = this.textColor;\n this.labelBoxBorderColor = this.actorBorder;\n this.labelTextColor = this.actorTextColor;\n this.loopTextColor = this.actorTextColor;\n this.noteBorderColor = this.border2;\n this.noteTextColor = this.actorTextColor;\n this.activationBorderColor = darken(this.secondaryColor, 10);\n this.activationBkgColor = this.secondaryColor;\n this.sequenceNumberColor = 'white';\n\n /* Gantt chart variables */\n\n this.taskTextColor = this.taskTextLightColor;\n this.taskTextOutsideColor = this.taskTextDarkColor;\n this.sectionBkgColor = this.tertiaryColor;\n this.altSectionBkgColor = 'white';\n this.sectionBkgColor = this.secondaryColor;\n this.sectionBkgColor2 = this.tertiaryColor;\n this.altSectionBkgColor = 'white';\n this.sectionBkgColor2 = this.primaryColor;\n this.taskBorderColor = lighten(this.primaryColor, 23);\n this.taskBkgColor = this.primaryColor;\n this.taskTextLightColor = 'white';\n this.taskTextColor = 'calculated';\n this.taskTextDarkColor = 'black';\n this.taskTextOutsideColor = 'calculated';\n this.taskTextClickableColor = '#003163';\n this.activeTaskBorderColor = this.primaryColor;\n this.activeTaskBkgColor = lighten(this.primaryColor, 23);\n this.gridColor = 'lightgrey';\n this.doneTaskBkgColor = 'lightgrey';\n this.doneTaskBorderColor = 'grey';\n this.critBorderColor = '#ff8888';\n this.critBkgColor = 'red';\n this.todayLineColor = 'red';\n\n /* state colors */\n this.labelColor = 'black';\n this.errorBkgColor = '#552222';\n this.errorTextColor = '#552222';\n\n /* state colors */\n\n /* class */\n this.classText = this.textColor;\n\n /* user-journey */\n this.fillType0 = this.primaryColor;\n this.fillType1 = this.secondaryColor;\n this.fillType2 = adjust(this.primaryColor, { h: 64 });\n this.fillType3 = adjust(this.secondaryColor, { h: 64 });\n this.fillType4 = adjust(this.primaryColor, { h: -64 });\n this.fillType5 = adjust(this.secondaryColor, { h: -64 });\n this.fillType6 = adjust(this.primaryColor, { h: 128 });\n this.fillType7 = adjust(this.secondaryColor, { h: 128 });\n }\n calculate(overrides) {\n if (typeof overrides !== 'object') {\n // Calculate colors form base colors\n this.updateColors();\n return;\n }\n\n const keys = Object.keys(overrides);\n\n // Copy values from overrides, this is mainly for base colors\n keys.forEach(k => {\n this[k] = overrides[k];\n });\n\n // Calculate colors form base colors\n this.updateColors();\n // Copy values from overrides again in case of an override of derived value\n keys.forEach(k => {\n this[k] = overrides[k];\n });\n }\n}\n\nexport const getThemeVariables = userOverrides => {\n const theme = new Theme();\n theme.calculate(userOverrides);\n return theme;\n};\n","import { invert, lighten, darken, rgba, adjust } from 'khroma';\n\nclass Theme {\n constructor() {\n this.background = '#333';\n this.primaryColor = '#1f2020';\n this.secondaryColor = lighten(this.primaryColor, 16);\n this.mainBkg = '#1f2020';\n this.secondBkg = 'calculated';\n this.mainContrastColor = 'lightgrey';\n this.darkTextColor = lighten(invert('#323D47'), 10);\n this.lineColor = 'calculated';\n this.border1 = '#81B1DB';\n this.border2 = rgba(255, 255, 255, 0.25);\n this.arrowheadColor = 'calculated';\n this.fontFamily = '\"trebuchet ms\", verdana, arial';\n this.fontSize = '16px';\n this.labelBackground = '#181818';\n this.textColor = '#ccc';\n /* Flowchart variables */\n\n this.nodeBkg = 'calculated';\n this.nodeBorder = 'calculated';\n this.clusterBkg = 'calculated';\n this.clusterBorder = 'calculated';\n this.defaultLinkColor = 'calculated';\n this.titleColor = '#F9FFFE';\n this.edgeLabelBackground = 'calculated';\n\n /* Sequence Diagram variables */\n\n this.actorBorder = 'calculated';\n this.actorBkg = 'calculated';\n this.actorTextColor = 'calculated';\n this.actorLineColor = 'calculated';\n this.signalColor = 'calculated';\n this.signalTextColor = 'calculated';\n this.labelBoxBkgColor = 'calculated';\n this.labelBoxBorderColor = 'calculated';\n this.labelTextColor = 'calculated';\n this.loopTextColor = 'calculated';\n this.noteBorderColor = 'calculated';\n this.noteBkgColor = '#fff5ad';\n this.noteTextColor = 'calculated';\n this.activationBorderColor = 'calculated';\n this.activationBkgColor = 'calculated';\n this.sequenceNumberColor = 'black';\n\n /* Gantt chart variables */\n\n this.sectionBkgColor = darken('#EAE8D9', 30);\n this.altSectionBkgColor = 'calculated';\n this.sectionBkgColor2 = '#EAE8D9';\n this.taskBorderColor = rgba(255, 255, 255, 70);\n this.taskBkgColor = 'calculated';\n this.taskTextColor = 'calculated';\n this.taskTextLightColor = 'calculated';\n this.taskTextOutsideColor = 'calculated';\n this.taskTextClickableColor = '#003163';\n this.activeTaskBorderColor = rgba(255, 255, 255, 50);\n this.activeTaskBkgColor = '#81B1DB';\n this.gridColor = 'calculated';\n this.doneTaskBkgColor = 'calculated';\n this.doneTaskBorderColor = 'grey';\n this.critBorderColor = '#E83737';\n this.critBkgColor = '#E83737';\n this.taskTextDarkColor = 'calculated';\n this.todayLineColor = '#DB5757';\n\n /* state colors */\n this.labelColor = 'calculated';\n\n this.errorBkgColor = '#a44141';\n this.errorTextColor = '#ddd';\n }\n updateColors() {\n this.secondBkg = lighten(this.mainBkg, 16);\n this.lineColor = this.mainContrastColor;\n this.arrowheadColor = this.mainContrastColor;\n /* Flowchart variables */\n\n this.nodeBkg = this.mainBkg;\n this.nodeBorder = this.border1;\n this.clusterBkg = this.secondBkg;\n this.clusterBorder = this.border2;\n this.defaultLinkColor = this.lineColor;\n this.edgeLabelBackground = lighten(this.labelBackground, 25);\n\n /* Sequence Diagram variables */\n\n this.actorBorder = this.border1;\n this.actorBkg = this.mainBkg;\n this.actorTextColor = this.mainContrastColor;\n this.actorLineColor = this.mainContrastColor;\n this.signalColor = this.mainContrastColor;\n this.signalTextColor = this.mainContrastColor;\n this.labelBoxBkgColor = this.actorBkg;\n this.labelBoxBorderColor = this.actorBorder;\n this.labelTextColor = this.mainContrastColor;\n this.loopTextColor = this.mainContrastColor;\n this.noteBorderColor = this.border2;\n this.noteTextColor = this.mainBkg;\n this.activationBorderColor = this.border1;\n this.activationBkgColor = this.secondBkg;\n\n /* Gantt chart variables */\n\n this.altSectionBkgColor = this.background;\n this.taskBkgColor = lighten(this.mainBkg, 23);\n this.taskTextColor = this.darkTextColor;\n this.taskTextLightColor = this.mainContrastColor;\n this.taskTextOutsideColor = this.taskTextLightColor;\n this.gridColor = this.mainContrastColor;\n this.doneTaskBkgColor = this.mainContrastColor;\n this.taskTextDarkColor = this.darkTextColor;\n\n /* state colors */\n this.labelColor = this.textColor;\n this.altBackground = lighten(this.background, 20);\n\n this.fillType0 = this.primaryColor;\n this.fillType1 = this.secondaryColor;\n this.fillType2 = adjust(this.primaryColor, { h: 64 });\n this.fillType3 = adjust(this.secondaryColor, { h: 64 });\n this.fillType4 = adjust(this.primaryColor, { h: -64 });\n this.fillType5 = adjust(this.secondaryColor, { h: -64 });\n this.fillType6 = adjust(this.primaryColor, { h: 128 });\n this.fillType7 = adjust(this.secondaryColor, { h: 128 });\n /* class */\n this.classText = this.nodeBorder;\n }\n calculate(overrides) {\n if (typeof overrides !== 'object') {\n // Calculate colors form base colors\n this.updateColors();\n return;\n }\n\n const keys = Object.keys(overrides);\n\n // Copy values from overrides, this is mainly for base colors\n keys.forEach(k => {\n this[k] = overrides[k];\n });\n\n // Calculate colors form base colors\n this.updateColors();\n // Copy values from overrides again in case of an override of derived value\n keys.forEach(k => {\n this[k] = overrides[k];\n });\n }\n}\n\nexport const getThemeVariables = userOverrides => {\n const theme = new Theme();\n theme.calculate(userOverrides);\n return theme;\n};\n","import { lighten, rgba, adjust } from 'khroma';\n\nclass Theme {\n constructor() {\n /* Base variables */\n this.primaryColor = '#ECECFF';\n this.secondaryColor = '#ffffde';\n this.background = 'white';\n this.mainBkg = '#ECECFF';\n this.secondBkg = '#ffffde';\n this.lineColor = '#333333';\n this.border1 = '#9370DB';\n this.border2 = '#aaaa33';\n this.arrowheadColor = '#333333';\n this.fontFamily = '\"trebuchet ms\", verdana, arial';\n this.fontSize = '16px';\n this.labelBackground = '#e8e8e8';\n this.textColor = '#333';\n\n /* Flowchart variables */\n\n this.nodeBkg = 'calculated';\n this.nodeBorder = 'calculated';\n this.clusterBkg = 'calculated';\n this.clusterBorder = 'calculated';\n this.defaultLinkColor = 'calculated';\n this.titleColor = 'calculated';\n this.edgeLabelBackground = 'calculated';\n\n /* Sequence Diagram variables */\n\n this.actorBorder = 'calculated';\n this.actorBkg = 'calculated';\n this.actorTextColor = 'black';\n this.actorLineColor = 'grey';\n this.signalColor = 'calculated';\n this.signalTextColor = 'calculated';\n this.labelBoxBkgColor = 'calculated';\n this.labelBoxBorderColor = 'calculated';\n this.labelTextColor = 'calculated';\n this.loopTextColor = 'calculated';\n this.noteBorderColor = 'calculated';\n this.noteBkgColor = '#fff5ad';\n this.noteTextColor = 'calculated';\n this.activationBorderColor = '#666';\n this.activationBkgColor = '#f4f4f4';\n this.sequenceNumberColor = 'white';\n\n /* Gantt chart variables */\n\n this.sectionBkgColor = 'calculated';\n this.altSectionBkgColor = 'calculated';\n this.sectionBkgColor2 = 'calculated';\n this.taskBorderColor = 'calculated';\n this.taskBkgColor = 'calculated';\n this.taskTextLightColor = 'calculated';\n this.taskTextColor = this.taskTextLightColor;\n this.taskTextDarkColor = 'calculated';\n this.taskTextOutsideColor = this.taskTextDarkColor;\n this.taskTextClickableColor = 'calculated';\n this.activeTaskBorderColor = 'calculated';\n this.activeTaskBkgColor = 'calculated';\n this.gridColor = 'calculated';\n this.doneTaskBkgColor = 'calculated';\n this.doneTaskBorderColor = 'calculated';\n this.critBorderColor = 'calculated';\n this.critBkgColor = 'calculated';\n this.todayLineColor = 'calculated';\n\n this.sectionBkgColor = rgba(102, 102, 255, 0.49);\n this.altSectionBkgColor = 'white';\n this.sectionBkgColor2 = '#fff400';\n this.taskBorderColor = '#534fbc';\n this.taskBkgColor = '#8a90dd';\n this.taskTextLightColor = 'white';\n this.taskTextColor = 'calculated';\n this.taskTextDarkColor = 'black';\n this.taskTextOutsideColor = 'calculated';\n this.taskTextClickableColor = '#003163';\n this.activeTaskBorderColor = '#534fbc';\n this.activeTaskBkgColor = '#bfc7ff';\n this.gridColor = 'lightgrey';\n this.doneTaskBkgColor = 'lightgrey';\n this.doneTaskBorderColor = 'grey';\n this.critBorderColor = '#ff8888';\n this.critBkgColor = 'red';\n this.todayLineColor = 'red';\n\n /* state colors */\n this.labelColor = 'black';\n this.errorBkgColor = '#552222';\n this.errorTextColor = '#552222';\n this.updateColors();\n }\n updateColors() {\n /* Flowchart variables */\n\n this.nodeBkg = this.mainBkg;\n this.nodeBorder = this.border1; // border 1\n this.clusterBkg = this.secondBkg;\n this.clusterBorder = this.border2;\n this.defaultLinkColor = this.lineColor;\n this.titleColor = this.textColor;\n this.edgeLabelBackground = this.labelBackground;\n\n /* Sequence Diagram variables */\n\n // this.actorBorder = lighten(this.border1, 0.5);\n this.actorBorder = lighten(this.border1, 23);\n this.actorBkg = this.mainBkg;\n this.labelBoxBkgColor = this.actorBkg;\n this.signalColor = this.textColor;\n this.signalTextColor = this.textColor;\n this.labelBoxBorderColor = this.actorBorder;\n this.labelTextColor = this.actorTextColor;\n this.loopTextColor = this.actorTextColor;\n this.noteBorderColor = this.border2;\n this.noteTextColor = this.actorTextColor;\n\n /* Gantt chart variables */\n\n this.taskTextColor = this.taskTextLightColor;\n this.taskTextOutsideColor = this.taskTextDarkColor;\n\n /* state colors */\n /* class */\n this.classText = this.nodeBorder;\n /* journey */\n this.fillType0 = this.primaryColor;\n this.fillType1 = this.secondaryColor;\n this.fillType2 = adjust(this.primaryColor, { h: 64 });\n this.fillType3 = adjust(this.secondaryColor, { h: 64 });\n this.fillType4 = adjust(this.primaryColor, { h: -64 });\n this.fillType5 = adjust(this.secondaryColor, { h: -64 });\n this.fillType6 = adjust(this.primaryColor, { h: 128 });\n this.fillType7 = adjust(this.secondaryColor, { h: 128 });\n }\n calculate(overrides) {\n if (typeof overrides !== 'object') {\n // Calculate colors form base colors\n this.updateColors();\n return;\n }\n\n const keys = Object.keys(overrides);\n\n // Copy values from overrides, this is mainly for base colors\n keys.forEach(k => {\n this[k] = overrides[k];\n });\n\n // Calculate colors form base colors\n this.updateColors();\n // Copy values from overrides again in case of an override of derived value\n keys.forEach(k => {\n this[k] = overrides[k];\n });\n }\n}\n\nexport const getThemeVariables = userOverrides => {\n const theme = new Theme();\n theme.calculate(userOverrides);\n return theme;\n};\n","import { darken, adjust } from 'khroma';\nclass Theme {\n constructor() {\n /* Base vales */\n this.primaryColor = '#cde498';\n this.secondaryColor = '#cdffb2';\n this.background = 'white';\n this.mainBkg = '#cde498';\n this.secondBkg = '#cdffb2';\n this.lineColor = 'green';\n this.border1 = '#13540c';\n this.border2 = '#6eaa49';\n this.arrowheadColor = 'green';\n this.fontFamily = '\"trebuchet ms\", verdana, arial';\n this.fontSize = '16px';\n\n /* Flowchart variables */\n\n this.nodeBkg = 'calculated';\n this.nodeBorder = 'calculated';\n this.clusterBkg = 'calculated';\n this.clusterBorder = 'calculated';\n this.defaultLinkColor = 'calculated';\n this.titleColor = '#333';\n this.edgeLabelBackground = '#e8e8e8';\n\n /* Sequence Diagram variables */\n\n this.actorBorder = 'calculated';\n this.actorBkg = 'calculated';\n this.actorTextColor = 'black';\n this.actorLineColor = 'grey';\n this.signalColor = '#333';\n this.signalTextColor = '#333';\n this.labelBoxBkgColor = 'calculated';\n this.labelBoxBorderColor = '#326932';\n this.labelTextColor = 'calculated';\n this.loopTextColor = 'calculated';\n this.noteBorderColor = 'calculated';\n this.noteBkgColor = '#fff5ad';\n this.noteTextColor = 'calculated';\n this.activationBorderColor = '#666';\n this.activationBkgColor = '#f4f4f4';\n this.sequenceNumberColor = 'white';\n\n /* Gantt chart variables */\n\n this.sectionBkgColor = '#6eaa49';\n this.altSectionBkgColor = 'white';\n this.sectionBkgColor2 = '#6eaa49';\n this.taskBorderColor = 'calculated';\n this.taskBkgColor = '#487e3a';\n this.taskTextLightColor = 'white';\n this.taskTextColor = 'calculated';\n this.taskTextDarkColor = 'black';\n this.taskTextOutsideColor = 'calculated';\n this.taskTextClickableColor = '#003163';\n this.activeTaskBorderColor = 'calculated';\n this.activeTaskBkgColor = 'calculated';\n this.gridColor = 'lightgrey';\n this.doneTaskBkgColor = 'lightgrey';\n this.doneTaskBorderColor = 'grey';\n this.critBorderColor = '#ff8888';\n this.critBkgColor = 'red';\n this.todayLineColor = 'red';\n\n /* state colors */\n this.labelColor = 'black';\n\n this.errorBkgColor = '#552222';\n this.errorTextColor = '#552222';\n }\n updateColors() {\n /* Flowchart variables */\n\n this.nodeBkg = this.mainBkg;\n this.nodeBorder = this.border1;\n this.clusterBkg = this.secondBkg;\n this.clusterBorder = this.border2;\n this.defaultLinkColor = this.lineColor;\n\n /* Sequence Diagram variables */\n\n this.actorBorder = darken(this.mainBkg, 20);\n this.actorBkg = this.mainBkg;\n this.labelBoxBkgColor = this.actorBkg;\n this.labelTextColor = this.actorTextColor;\n this.loopTextColor = this.actorTextColor;\n this.noteBorderColor = this.border2;\n this.noteTextColor = this.actorTextColor;\n\n /* Gantt chart variables */\n\n this.taskBorderColor = this.border1;\n this.taskTextColor = this.taskTextLightColor;\n this.taskTextOutsideColor = this.taskTextDarkColor;\n this.activeTaskBorderColor = this.taskBorderColor;\n this.activeTaskBkgColor = this.mainBkg;\n\n /* state colors */\n /* class */\n this.classText = this.nodeBorder;\n /* journey */\n this.fillType0 = this.primaryColor;\n this.fillType1 = this.secondaryColor;\n this.fillType2 = adjust(this.primaryColor, { h: 64 });\n this.fillType3 = adjust(this.secondaryColor, { h: 64 });\n this.fillType4 = adjust(this.primaryColor, { h: -64 });\n this.fillType5 = adjust(this.secondaryColor, { h: -64 });\n this.fillType6 = adjust(this.primaryColor, { h: 128 });\n this.fillType7 = adjust(this.secondaryColor, { h: 128 });\n }\n calculate(overrides) {\n if (typeof overrides !== 'object') {\n // Calculate colors form base colors\n this.updateColors();\n return;\n }\n\n const keys = Object.keys(overrides);\n\n // Copy values from overrides, this is mainly for base colors\n keys.forEach(k => {\n this[k] = overrides[k];\n });\n\n // Calculate colors form base colors\n this.updateColors();\n // Copy values from overrides again in case of an override of derived value\n keys.forEach(k => {\n this[k] = overrides[k];\n });\n }\n}\n\nexport const getThemeVariables = userOverrides => {\n const theme = new Theme();\n theme.calculate(userOverrides);\n return theme;\n};\n","import { darken, lighten, adjust } from 'khroma';\n\n// const Color = require ( 'khroma/dist/color' ).default\n// Color.format.hex.stringify(Color.parse('hsl(210, 66.6666666667%, 95%)')); // => \"#EAF2FB\"\n\nclass Theme {\n constructor() {\n this.primaryColor = '#eee';\n this.contrast = '#26a';\n this.secondaryColor = lighten(this.contrast, 55);\n this.background = 'white';\n this.mainBkg = '#eee';\n this.secondBkg = 'calculated';\n this.lineColor = '#666';\n this.border1 = '#999';\n this.border2 = 'calculated';\n this.note = '#ffa';\n this.text = '#333';\n this.critical = '#d42';\n this.done = '#bbb';\n this.arrowheadColor = '#333333';\n this.fontFamily = '\"trebuchet ms\", verdana, arial';\n this.fontSize = '16px';\n\n /* Flowchart variables */\n\n this.nodeBkg = 'calculated';\n this.nodeBorder = 'calculated';\n this.clusterBkg = 'calculated';\n this.clusterBorder = 'calculated';\n this.defaultLinkColor = 'calculated';\n this.titleColor = 'calculated';\n this.edgeLabelBackground = 'white';\n\n /* Sequence Diagram variables */\n\n this.actorBorder = 'calculated';\n this.actorBkg = 'calculated';\n this.actorTextColor = 'calculated';\n this.actorLineColor = 'calculated';\n this.signalColor = 'calculated';\n this.signalTextColor = 'calculated';\n this.labelBoxBkgColor = 'calculated';\n this.labelBoxBorderColor = 'calculated';\n this.labelTextColor = 'calculated';\n this.loopTextColor = 'calculated';\n this.noteBorderColor = 'calculated';\n this.noteBkgColor = 'calculated';\n this.noteTextColor = 'calculated';\n this.activationBorderColor = '#666';\n this.activationBkgColor = '#f4f4f4';\n this.sequenceNumberColor = 'white';\n\n /* Gantt chart variables */\n\n this.sectionBkgColor = 'calculated';\n this.altSectionBkgColor = 'white';\n this.sectionBkgColor2 = 'calculated';\n this.taskBorderColor = 'calculated';\n this.taskBkgColor = 'calculated';\n this.taskTextLightColor = 'white';\n this.taskTextColor = 'calculated';\n this.taskTextDarkColor = 'calculated';\n this.taskTextOutsideColor = 'calculated';\n this.taskTextClickableColor = '#003163';\n this.activeTaskBorderColor = 'calculated';\n this.activeTaskBkgColor = 'calculated';\n this.gridColor = 'calculated';\n this.doneTaskBkgColor = 'calculated';\n this.doneTaskBorderColor = 'calculated';\n this.critBkgColor = 'calculated';\n this.critBorderColor = 'calculated';\n this.todayLineColor = 'calculated';\n\n /* state colors */\n this.labelColor = 'black';\n\n this.errorBkgColor = '#552222';\n this.errorTextColor = '#552222';\n }\n updateColors() {\n this.secondBkg = lighten(this.contrast, 55);\n this.border2 = this.contrast;\n\n /* Flowchart variables */\n\n this.nodeBkg = this.mainBkg;\n this.nodeBorder = this.border1;\n this.clusterBkg = this.secondBkg;\n this.clusterBorder = this.border2;\n this.defaultLinkColor = this.lineColor;\n this.titleColor = this.text;\n\n /* Sequence Diagram variables */\n\n this.actorBorder = lighten(this.border1, 23);\n this.actorBkg = this.mainBkg;\n this.actorTextColor = this.text;\n this.actorLineColor = this.lineColor;\n this.signalColor = this.text;\n this.signalTextColor = this.text;\n this.labelBoxBkgColor = this.actorBkg;\n this.labelBoxBorderColor = this.actorBorder;\n this.labelTextColor = this.text;\n this.loopTextColor = this.text;\n this.noteBorderColor = darken(this.note, 60);\n this.noteBkgColor = this.note;\n this.noteTextColor = this.actorTextColor;\n\n /* Gantt chart variables */\n\n this.sectionBkgColor = lighten(this.contrast, 30);\n this.sectionBkgColor2 = lighten(this.contrast, 30);\n\n this.taskBorderColor = darken(this.contrast, 10);\n\n this.taskBkgColor = this.contrast;\n this.taskTextColor = this.taskTextLightColor;\n this.taskTextDarkColor = this.text;\n this.taskTextOutsideColor = this.taskTextDarkColor;\n this.activeTaskBorderColor = this.taskBorderColor;\n this.activeTaskBkgColor = this.mainBkg;\n this.gridColor = lighten(this.border1, 30);\n\n this.doneTaskBkgColor = this.done;\n this.doneTaskBorderColor = this.lineColor;\n this.critBkgColor = this.critical;\n this.critBorderColor = darken(this.critBkgColor, 10);\n\n this.todayLineColor = this.critBkgColor;\n\n /* state colors */\n /* class */\n this.classText = this.nodeBorder;\n /* journey */\n this.fillType0 = this.primaryColor;\n this.fillType1 = this.secondaryColor;\n this.fillType2 = adjust(this.primaryColor, { h: 64 });\n this.fillType3 = adjust(this.secondaryColor, { h: 64 });\n this.fillType4 = adjust(this.primaryColor, { h: -64 });\n this.fillType5 = adjust(this.secondaryColor, { h: -64 });\n this.fillType6 = adjust(this.primaryColor, { h: 128 });\n this.fillType7 = adjust(this.secondaryColor, { h: 128 });\n }\n calculate(overrides) {\n if (typeof overrides !== 'object') {\n // Calculate colors form base colors\n this.updateColors();\n return;\n }\n\n const keys = Object.keys(overrides);\n\n // Copy values from overrides, this is mainly for base colors\n keys.forEach(k => {\n this[k] = overrides[k];\n });\n\n // Calculate colors form base colors\n this.updateColors();\n // Copy values from overrides again in case of an override of derived value\n keys.forEach(k => {\n this[k] = overrides[k];\n });\n }\n}\n\nexport const getThemeVariables = userOverrides => {\n const theme = new Theme();\n theme.calculate(userOverrides);\n console.info('Theme', userOverrides, theme);\n return theme;\n};\n","import {\n curveBasis,\n curveBasisClosed,\n curveBasisOpen,\n curveLinear,\n curveLinearClosed,\n curveMonotoneX,\n curveMonotoneY,\n curveNatural,\n curveStep,\n curveStepAfter,\n curveStepBefore,\n select\n} from 'd3';\nimport { logger } from './logger';\nimport { sanitizeUrl } from '@braintree/sanitize-url';\nimport common from './diagrams/common/common';\n// import cryptoRandomString from 'crypto-random-string';\n\n// Effectively an enum of the supported curve types, accessible by name\nconst d3CurveTypes = {\n curveBasis: curveBasis,\n curveBasisClosed: curveBasisClosed,\n curveBasisOpen: curveBasisOpen,\n curveLinear: curveLinear,\n curveLinearClosed: curveLinearClosed,\n curveMonotoneX: curveMonotoneX,\n curveMonotoneY: curveMonotoneY,\n curveNatural: curveNatural,\n curveStep: curveStep,\n curveStepAfter: curveStepAfter,\n curveStepBefore: curveStepBefore\n};\nconst directive = /[%]{2}[{]\\s*(?:(?:(\\w+)\\s*:|(\\w+))\\s*(?:(?:(\\w+))|((?:(?![}][%]{2}).|\\r?\\n)*))?\\s*)(?:[}][%]{2})?/gi;\nconst directiveWithoutOpen = /\\s*(?:(?:(\\w+)(?=:):|(\\w+))\\s*(?:(?:(\\w+))|((?:(?![}][%]{2}).|\\r?\\n)*))?\\s*)(?:[}][%]{2})?/gi;\nconst anyComment = /\\s*%%.*\\n/gm;\n\n/**\n * @function detectInit\n * Detects the init config object from the text\n * ```mermaid\n * %%{init: {\"theme\": \"debug\", \"logLevel\": 1 }}%%\n * graph LR\n * a-->b\n * b-->c\n * c-->d\n * d-->e\n * e-->f\n * f-->g\n * g-->h\n * ```\n * or\n * ```mermaid\n * %%{initialize: {\"theme\": \"dark\", logLevel: \"debug\" }}%%\n * graph LR\n * a-->b\n * b-->c\n * c-->d\n * d-->e\n * e-->f\n * f-->g\n * g-->h\n * ```\n *\n * @param {string} text The text defining the graph\n * @returns {object} the json object representing the init passed to mermaid.initialize()\n */\nexport const detectInit = function(text) {\n let inits = detectDirective(text, /(?:init\\b)|(?:initialize\\b)/);\n let results = {};\n if (Array.isArray(inits)) {\n let args = inits.map(init => init.args);\n results = assignWithDepth(results, [...args]);\n } else {\n results = inits.args;\n }\n if (results) {\n let type = detectType(text);\n ['config'].forEach(prop => {\n if (typeof results[prop] !== 'undefined') {\n if (type === 'flowchart-v2') {\n type = 'flowchart';\n }\n results[type] = results[prop];\n delete results[prop];\n }\n });\n }\n return results;\n};\n\n/**\n * @function detectDirective\n * Detects the directive from the text. Text can be single line or multiline. If type is null or omitted\n * the first directive encountered in text will be returned\n * ```mermaid\n * graph LR\n * %%{somedirective}%%\n * a-->b\n * b-->c\n * c-->d\n * d-->e\n * e-->f\n * f-->g\n * g-->h\n * ```\n *\n * @param {string} text The text defining the graph\n * @param {string|RegExp} type The directive to return (default: null)\n * @returns {object | Array} An object or Array representing the directive(s): { type: string, args: object|null } matched by the input type\n * if a single directive was found, that directive object will be returned.\n */\nexport const detectDirective = function(text, type = null) {\n try {\n const commentWithoutDirectives = new RegExp(\n `[%]{2}(?![{]${directiveWithoutOpen.source})(?=[}][%]{2}).*\\n`,\n 'ig'\n );\n text = text\n .trim()\n .replace(commentWithoutDirectives, '')\n .replace(/'/gm, '\"');\n logger.debug(\n `Detecting diagram directive${type !== null ? ' type:' + type : ''} based on the text:${text}`\n );\n let match,\n result = [];\n while ((match = directive.exec(text)) !== null) {\n // This is necessary to avoid infinite loops with zero-width matches\n if (match.index === directive.lastIndex) {\n directive.lastIndex++;\n }\n if (\n (match && !type) ||\n (type && match[1] && match[1].match(type)) ||\n (type && match[2] && match[2].match(type))\n ) {\n let type = match[1] ? match[1] : match[2];\n let args = match[3] ? match[3].trim() : match[4] ? JSON.parse(match[4].trim()) : null;\n result.push({ type, args });\n }\n }\n if (result.length === 0) {\n result.push({ type: text, args: null });\n }\n\n return result.length === 1 ? result[0] : result;\n } catch (error) {\n logger.error(\n `ERROR: ${error.message} - Unable to parse directive${\n type !== null ? ' type:' + type : ''\n } based on the text:${text}`\n );\n return { type: null, args: null };\n }\n};\n\n/**\n * @function detectType\n * Detects the type of the graph text. Takes into consideration the possible existence of an %%init\n * directive\n * ```mermaid\n * %%{initialize: {\"startOnLoad\": true, logLevel: \"fatal\" }}%%\n * graph LR\n * a-->b\n * b-->c\n * c-->d\n * d-->e\n * e-->f\n * f-->g\n * g-->h\n * ```\n *\n * @param {string} text The text defining the graph\n * @returns {string} A graph definition key\n */\nexport const detectType = function(text) {\n text = text.replace(directive, '').replace(anyComment, '\\n');\n logger.debug('Detecting diagram type based on the text ' + text);\n if (text.match(/^\\s*sequenceDiagram/)) {\n return 'sequence';\n }\n\n if (text.match(/^\\s*gantt/)) {\n return 'gantt';\n }\n if (text.match(/^\\s*classDiagram-v2/)) {\n return 'classDiagram';\n }\n if (text.match(/^\\s*classDiagram/)) {\n return 'class';\n }\n\n if (text.match(/^\\s*stateDiagram-v2/)) {\n return 'stateDiagram';\n }\n\n if (text.match(/^\\s*stateDiagram/)) {\n return 'state';\n }\n\n if (text.match(/^\\s*gitGraph/)) {\n return 'git';\n }\n if (text.match(/^\\s*flowchart/)) {\n return 'flowchart-v2';\n }\n\n if (text.match(/^\\s*info/)) {\n return 'info';\n }\n if (text.match(/^\\s*pie/)) {\n return 'pie';\n }\n\n if (text.match(/^\\s*erDiagram/)) {\n return 'er';\n }\n\n if (text.match(/^\\s*journey/)) {\n return 'journey';\n }\n\n return 'flowchart';\n};\n\nconst memoize = (fn, resolver) => {\n let cache = {};\n return (...args) => {\n let n = resolver ? resolver.apply(this, args) : args[0];\n if (n in cache) {\n return cache[n];\n } else {\n let result = fn(...args);\n cache[n] = result;\n return result;\n }\n };\n};\n\n/**\n * @function isSubstringInArray\n * Detects whether a substring in present in a given array\n * @param {string} str The substring to detect\n * @param {array} arr The array to search\n * @returns {number} the array index containing the substring or -1 if not present\n **/\nexport const isSubstringInArray = function(str, arr) {\n for (let i = 0; i < arr.length; i++) {\n if (arr[i].match(str)) return i;\n }\n return -1;\n};\n\nexport const interpolateToCurve = (interpolate, defaultCurve) => {\n if (!interpolate) {\n return defaultCurve;\n }\n const curveName = `curve${interpolate.charAt(0).toUpperCase() + interpolate.slice(1)}`;\n return d3CurveTypes[curveName] || defaultCurve;\n};\n\nexport const formatUrl = (linkStr, config) => {\n let url = linkStr.trim();\n\n if (url) {\n if (config.securityLevel !== 'loose') {\n return sanitizeUrl(url);\n }\n\n return url;\n }\n};\n\nexport const runFunc = (functionName, ...params) => {\n const arrPaths = functionName.split('.');\n\n const len = arrPaths.length - 1;\n const fnName = arrPaths[len];\n\n let obj = window;\n for (let i = 0; i < len; i++) {\n obj = obj[arrPaths[i]];\n if (!obj) return;\n }\n\n obj[fnName](...params);\n};\n\nconst distance = (p1, p2) =>\n p1 && p2 ? Math.sqrt(Math.pow(p2.x - p1.x, 2) + Math.pow(p2.y - p1.y, 2)) : 0;\n\nconst traverseEdge = points => {\n let prevPoint;\n let totalDistance = 0;\n\n points.forEach(point => {\n totalDistance += distance(point, prevPoint);\n prevPoint = point;\n });\n\n // Traverse half of total distance along points\n let remainingDistance = totalDistance / 2;\n let center = undefined;\n prevPoint = undefined;\n points.forEach(point => {\n if (prevPoint && !center) {\n const vectorDistance = distance(point, prevPoint);\n if (vectorDistance < remainingDistance) {\n remainingDistance -= vectorDistance;\n } else {\n // The point is remainingDistance from prevPoint in the vector between prevPoint and point\n // Calculate the coordinates\n const distanceRatio = remainingDistance / vectorDistance;\n if (distanceRatio <= 0) center = prevPoint;\n if (distanceRatio >= 1) center = { x: point.x, y: point.y };\n if (distanceRatio > 0 && distanceRatio < 1) {\n center = {\n x: (1 - distanceRatio) * prevPoint.x + distanceRatio * point.x,\n y: (1 - distanceRatio) * prevPoint.y + distanceRatio * point.y\n };\n }\n }\n }\n prevPoint = point;\n });\n return center;\n};\n\nconst calcLabelPosition = points => {\n return traverseEdge(points);\n};\n\nconst calcCardinalityPosition = (isRelationTypePresent, points, initialPosition) => {\n let prevPoint;\n let totalDistance = 0; // eslint-disable-line\n if (points[0] !== initialPosition) {\n points = points.reverse();\n }\n points.forEach(point => {\n totalDistance += distance(point, prevPoint);\n prevPoint = point;\n });\n\n // Traverse only 25 total distance along points to find cardinality point\n const distanceToCardinalityPoint = 25;\n\n let remainingDistance = distanceToCardinalityPoint;\n let center;\n prevPoint = undefined;\n points.forEach(point => {\n if (prevPoint && !center) {\n const vectorDistance = distance(point, prevPoint);\n if (vectorDistance < remainingDistance) {\n remainingDistance -= vectorDistance;\n } else {\n // The point is remainingDistance from prevPoint in the vector between prevPoint and point\n // Calculate the coordinates\n const distanceRatio = remainingDistance / vectorDistance;\n if (distanceRatio <= 0) center = prevPoint;\n if (distanceRatio >= 1) center = { x: point.x, y: point.y };\n if (distanceRatio > 0 && distanceRatio < 1) {\n center = {\n x: (1 - distanceRatio) * prevPoint.x + distanceRatio * point.x,\n y: (1 - distanceRatio) * prevPoint.y + distanceRatio * point.y\n };\n }\n }\n }\n prevPoint = point;\n });\n // if relation is present (Arrows will be added), change cardinality point off-set distance (d)\n let d = isRelationTypePresent ? 10 : 5;\n //Calculate Angle for x and y axis\n let angle = Math.atan2(points[0].y - center.y, points[0].x - center.x);\n let cardinalityPosition = { x: 0, y: 0 };\n //Calculation cardinality position using angle, center point on the line/curve but pendicular and with offset-distance\n cardinalityPosition.x = Math.sin(angle) * d + (points[0].x + center.x) / 2;\n cardinalityPosition.y = -Math.cos(angle) * d + (points[0].y + center.y) / 2;\n return cardinalityPosition;\n};\n\nexport const getStylesFromArray = arr => {\n let style = '';\n let labelStyle = '';\n\n for (let i = 0; i < arr.length; i++) {\n if (typeof arr[i] !== 'undefined') {\n // add text properties to label style definition\n if (arr[i].startsWith('color:') || arr[i].startsWith('text-align:')) {\n labelStyle = labelStyle + arr[i] + ';';\n } else {\n style = style + arr[i] + ';';\n }\n }\n }\n\n return { style: style, labelStyle: labelStyle };\n};\n\nlet cnt = 0;\nexport const generateId = () => {\n cnt++;\n return (\n 'id-' +\n Math.random()\n .toString(36)\n .substr(2, 12) +\n '-' +\n cnt\n );\n};\n\nfunction makeid(length) {\n var result = '';\n var characters = '0123456789abcdef';\n var charactersLength = characters.length;\n for (var i = 0; i < length; i++) {\n result += characters.charAt(Math.floor(Math.random() * charactersLength));\n }\n return result;\n}\n\nexport const random = options => {\n return makeid(options.length);\n};\n\n/**\n * @function assignWithDepth\n * Extends the functionality of {@link ObjectConstructor.assign} with the ability to merge arbitrary-depth objects\n * For each key in src with path `k` (recursively) performs an Object.assign(dst[`k`], src[`k`]) with\n * a slight change from the typical handling of undefined for dst[`k`]: instead of raising an error,\n * dst[`k`] is auto-initialized to {} and effectively merged with src[`k`]\n *
\n * Additionally, dissimilar types will not clobber unless the config.clobber parameter === true. Example:\n * ```\n * let config_0 = { foo: { bar: 'bar' }, bar: 'foo' };\n * let config_1 = { foo: 'foo', bar: 'bar' };\n * let result = assignWithDepth(config_0, config_1);\n * console.log(result);\n * //-> result: { foo: { bar: 'bar' }, bar: 'bar' }\n * ```\n *
\n * Traditional Object.assign would have clobbered foo in config_0 with foo in config_1.\n *
\n * If src is a destructured array of objects and dst is not an array, assignWithDepth will apply each element of src to dst\n * in order.\n * @param dst:any - the destination of the merge\n * @param src:any - the source object(s) to merge into destination\n * @param config:{ depth: number, clobber: boolean } - depth: depth to traverse within src and dst for merging -\n * clobber: should dissimilar types clobber (default: { depth: 2, clobber: false })\n * @returns {*}\n */\nexport const assignWithDepth = function(dst, src, config) {\n const { depth, clobber } = Object.assign({ depth: 2, clobber: false }, config);\n if (Array.isArray(src) && !Array.isArray(dst)) {\n src.forEach(s => assignWithDepth(dst, s, config));\n return dst;\n } else if (Array.isArray(src) && Array.isArray(dst)) {\n src.forEach(s => {\n if (dst.indexOf(s) === -1) {\n dst.push(s);\n }\n });\n return dst;\n }\n if (typeof dst === 'undefined' || depth <= 0) {\n if (dst !== undefined && dst !== null && typeof dst === 'object' && typeof src === 'object') {\n return Object.assign(dst, src);\n } else {\n return src;\n }\n }\n if (typeof src !== 'undefined' && typeof dst === 'object' && typeof src === 'object') {\n Object.keys(src).forEach(key => {\n if (\n typeof src[key] === 'object' &&\n (dst[key] === undefined || typeof dst[key] === 'object')\n ) {\n if (dst[key] === undefined) {\n dst[key] = Array.isArray(src[key]) ? [] : {};\n }\n dst[key] = assignWithDepth(dst[key], src[key], { depth: depth - 1, clobber });\n } else if (clobber || (typeof dst[key] !== 'object' && typeof src[key] !== 'object')) {\n dst[key] = src[key];\n }\n });\n }\n return dst;\n};\n\nexport const getTextObj = function() {\n return {\n x: 0,\n y: 0,\n fill: undefined,\n anchor: 'start',\n style: '#666',\n width: 100,\n height: 100,\n textMargin: 0,\n rx: 0,\n ry: 0,\n valign: undefined\n };\n};\n\nexport const drawSimpleText = function(elem, textData) {\n // Remove and ignore br:s\n const nText = textData.text.replace(common.lineBreakRegex, ' ');\n\n const textElem = elem.append('text');\n textElem.attr('x', textData.x);\n textElem.attr('y', textData.y);\n textElem.style('text-anchor', textData.anchor);\n textElem.style('font-family', textData.fontFamily);\n textElem.style('font-size', textData.fontSize);\n textElem.style('font-weight', textData.fontWeight);\n textElem.attr('fill', textData.fill);\n if (typeof textData.class !== 'undefined') {\n textElem.attr('class', textData.class);\n }\n\n const span = textElem.append('tspan');\n span.attr('x', textData.x + textData.textMargin * 2);\n span.attr('fill', textData.fill);\n span.text(nText);\n\n return textElem;\n};\n\nexport const wrapLabel = memoize(\n (label, maxWidth, config) => {\n if (!label) {\n return label;\n }\n config = Object.assign(\n { fontSize: 12, fontWeight: 400, fontFamily: 'Arial', joinWith: '
' },\n config\n );\n if (common.lineBreakRegex.test(label)) {\n return label;\n }\n const words = label.split(' ');\n const completedLines = [];\n let nextLine = '';\n words.forEach((word, index) => {\n const wordLength = calculateTextWidth(`${word} `, config);\n const nextLineLength = calculateTextWidth(nextLine, config);\n if (wordLength > maxWidth) {\n const { hyphenatedStrings, remainingWord } = breakString(word, maxWidth, '-', config);\n completedLines.push(nextLine, ...hyphenatedStrings);\n nextLine = remainingWord;\n } else if (nextLineLength + wordLength >= maxWidth) {\n completedLines.push(nextLine);\n nextLine = word;\n } else {\n nextLine = [nextLine, word].filter(Boolean).join(' ');\n }\n const currentWord = index + 1;\n const isLastWord = currentWord === words.length;\n if (isLastWord) {\n completedLines.push(nextLine);\n }\n });\n return completedLines.filter(line => line !== '').join(config.joinWith);\n },\n (label, maxWidth, config) =>\n `${label}-${maxWidth}-${config.fontSize}-${config.fontWeight}-${config.fontFamily}-${config.joinWith}`\n);\n\nconst breakString = memoize(\n (word, maxWidth, hyphenCharacter = '-', config) => {\n config = Object.assign(\n { fontSize: 12, fontWeight: 400, fontFamily: 'Arial', margin: 0 },\n config\n );\n const characters = word.split('');\n const lines = [];\n let currentLine = '';\n characters.forEach((character, index) => {\n const nextLine = `${currentLine}${character}`;\n const lineWidth = calculateTextWidth(nextLine, config);\n if (lineWidth >= maxWidth) {\n const currentCharacter = index + 1;\n const isLastLine = characters.length === currentCharacter;\n const hyphenatedNextLine = `${nextLine}${hyphenCharacter}`;\n lines.push(isLastLine ? nextLine : hyphenatedNextLine);\n currentLine = '';\n } else {\n currentLine = nextLine;\n }\n });\n return { hyphenatedStrings: lines, remainingWord: currentLine };\n },\n (word, maxWidth, hyphenCharacter = '-', config) =>\n `${word}-${maxWidth}-${hyphenCharacter}-${config.fontSize}-${config.fontWeight}-${config.fontFamily}`\n);\n\n/**\n * This calculates the text's height, taking into account the wrap breaks and\n * both the statically configured height, width, and the length of the text (in pixels).\n *\n * If the wrapped text text has greater height, we extend the height, so it's\n * value won't overflow.\n *\n * @return - The height for the given text\n * @param text the text to measure\n * @param config - the config for fontSize, fontFamily, and fontWeight all impacting the resulting size\n */\nexport const calculateTextHeight = function(text, config) {\n config = Object.assign(\n { fontSize: 12, fontWeight: 400, fontFamily: 'Arial', margin: 15 },\n config\n );\n return calculateTextDimensions(text, config).height;\n};\n\n/**\n * This calculates the width of the given text, font size and family.\n *\n * @return - The width for the given text\n * @param text - The text to calculate the width of\n * @param config - the config for fontSize, fontFamily, and fontWeight all impacting the resulting size\n */\nexport const calculateTextWidth = function(text, config) {\n config = Object.assign({ fontSize: 12, fontWeight: 400, fontFamily: 'Arial' }, config);\n return calculateTextDimensions(text, config).width;\n};\n\n/**\n * This calculates the dimensions of the given text, font size, font family, font weight, and margins.\n *\n * @return - The width for the given text\n * @param text - The text to calculate the width of\n * @param config - the config for fontSize, fontFamily, fontWeight, and margin all impacting the resulting size\n */\nexport const calculateTextDimensions = memoize(\n function(text, config) {\n config = Object.assign({ fontSize: 12, fontWeight: 400, fontFamily: 'Arial' }, config);\n const { fontSize, fontFamily, fontWeight } = config;\n if (!text) {\n return { width: 0, height: 0 };\n }\n\n // We can't really know if the user supplied font family will render on the user agent;\n // thus, we'll take the max width between the user supplied font family, and a default\n // of sans-serif.\n const fontFamilies = ['sans-serif', fontFamily];\n const lines = text.split(common.lineBreakRegex);\n let dims = [];\n\n const body = select('body');\n // We don't want to leak DOM elements - if a removal operation isn't available\n // for any reason, do not continue.\n if (!body.remove) {\n return { width: 0, height: 0, lineHeight: 0 };\n }\n\n const g = body.append('svg');\n\n for (let fontFamily of fontFamilies) {\n let cheight = 0;\n let dim = { width: 0, height: 0, lineHeight: 0 };\n for (let line of lines) {\n const textObj = getTextObj();\n textObj.text = line;\n const textElem = drawSimpleText(g, textObj)\n .style('font-size', fontSize)\n .style('font-weight', fontWeight)\n .style('font-family', fontFamily);\n\n let bBox = (textElem._groups || textElem)[0][0].getBBox();\n dim.width = Math.round(Math.max(dim.width, bBox.width));\n cheight = Math.round(bBox.height);\n dim.height += cheight;\n dim.lineHeight = Math.round(Math.max(dim.lineHeight, cheight));\n }\n dims.push(dim);\n }\n\n g.remove();\n\n let index =\n isNaN(dims[1].height) ||\n isNaN(dims[1].width) ||\n isNaN(dims[1].lineHeight) ||\n (dims[0].height > dims[1].height &&\n dims[0].width > dims[1].width &&\n dims[0].lineHeight > dims[1].lineHeight)\n ? 0\n : 1;\n return dims[index];\n },\n (text, config) => `${text}-${config.fontSize}-${config.fontWeight}-${config.fontFamily}`\n);\n\nexport default {\n assignWithDepth,\n wrapLabel,\n calculateTextHeight,\n calculateTextWidth,\n calculateTextDimensions,\n detectInit,\n detectDirective,\n detectType,\n isSubstringInArray,\n interpolateToCurve,\n calcLabelPosition,\n calcCardinalityPosition,\n formatUrl,\n getStylesFromArray,\n generateId,\n random,\n memoize,\n runFunc\n};\n","module.exports = require(\"@braintree/sanitize-url\");","module.exports = require(\"d3\");","module.exports = require(\"dagre\");","module.exports = require(\"dagre-d3\");","module.exports = require(\"dagre-d3/lib/label/add-html-label.js\");","module.exports = require(\"entity-decode/browser\");","module.exports = require(\"graphlib\");","module.exports = require(\"khroma\");","module.exports = require(\"moment-mini\");","module.exports = require(\"stylis\");"],"sourceRoot":""}
-=======
-{"version":3,"sources":["webpack://mermaid/webpack/universalModuleDefinition","webpack://mermaid/webpack/bootstrap","webpack://mermaid/./src/themes/dark/index.scss","webpack://mermaid/./src/themes/default/index.scss","webpack://mermaid/./src/themes/forest/index.scss","webpack://mermaid/./src/themes/neutral/index.scss","webpack://mermaid/./node_modules/css-loader/dist/runtime/api.js","webpack://mermaid/./node_modules/path-browserify/index.js","webpack://mermaid/./node_modules/process/browser.js","webpack://mermaid/(webpack)/buildin/module.js","webpack://mermaid/./src/config.js","webpack://mermaid/./src/dagre-wrapper/clusters.js","webpack://mermaid/./src/dagre-wrapper/createLabel.js","webpack://mermaid/./src/dagre-wrapper/edges.js","webpack://mermaid/./src/dagre-wrapper/index.js","webpack://mermaid/./src/dagre-wrapper/intersect/index.js","webpack://mermaid/./src/dagre-wrapper/intersect/intersect-circle.js","webpack://mermaid/./src/dagre-wrapper/intersect/intersect-ellipse.js","webpack://mermaid/./src/dagre-wrapper/intersect/intersect-line.js","webpack://mermaid/./src/dagre-wrapper/intersect/intersect-node.js","webpack://mermaid/./src/dagre-wrapper/intersect/intersect-polygon.js","webpack://mermaid/./src/dagre-wrapper/intersect/intersect-rect.js","webpack://mermaid/./src/dagre-wrapper/markers.js","webpack://mermaid/./src/dagre-wrapper/mermaid-graphlib.js","webpack://mermaid/./src/dagre-wrapper/nodes.js","webpack://mermaid/./src/dagre-wrapper/shapes/note.js","webpack://mermaid/./src/dagre-wrapper/shapes/util.js","webpack://mermaid/./src/diagrams/class/classDb.js","webpack://mermaid/./src/diagrams/class/classRenderer.js","webpack://mermaid/./src/diagrams/class/parser/classDiagram.jison","webpack://mermaid/./src/diagrams/class/svgDraw.js","webpack://mermaid/./src/diagrams/common/common.js","webpack://mermaid/./src/diagrams/er/erDb.js","webpack://mermaid/./src/diagrams/er/erMarkers.js","webpack://mermaid/./src/diagrams/er/erRenderer.js","webpack://mermaid/./src/diagrams/er/parser/erDiagram.jison","webpack://mermaid/./src/diagrams/flowchart/flowChartShapes.js","webpack://mermaid/./src/diagrams/flowchart/flowDb.js","webpack://mermaid/./src/diagrams/flowchart/flowRenderer-v2.js","webpack://mermaid/./src/diagrams/flowchart/flowRenderer.js","webpack://mermaid/./src/diagrams/flowchart/parser/flow.jison","webpack://mermaid/./src/diagrams/gantt/ganttDb.js","webpack://mermaid/./src/diagrams/gantt/ganttRenderer.js","webpack://mermaid/./src/diagrams/gantt/parser/gantt.jison","webpack://mermaid/./src/diagrams/git/gitGraphAst.js","webpack://mermaid/./src/diagrams/git/gitGraphRenderer.js","webpack://mermaid/./src/diagrams/git/parser/gitGraph.jison","webpack://mermaid/./src/diagrams/info/infoDb.js","webpack://mermaid/./src/diagrams/info/infoRenderer.js","webpack://mermaid/./src/diagrams/info/parser/info.jison","webpack://mermaid/./src/diagrams/pie/parser/pie.jison","webpack://mermaid/./src/diagrams/pie/pieDb.js","webpack://mermaid/./src/diagrams/pie/pieRenderer.js","webpack://mermaid/./src/diagrams/sequence/parser/sequenceDiagram.jison","webpack://mermaid/./src/diagrams/sequence/sequenceDb.js","webpack://mermaid/./src/diagrams/sequence/sequenceRenderer.js","webpack://mermaid/./src/diagrams/sequence/svgDraw.js","webpack://mermaid/./src/diagrams/state/id-cache.js","webpack://mermaid/./src/diagrams/state/parser/stateDiagram.jison","webpack://mermaid/./src/diagrams/state/shapes.js","webpack://mermaid/./src/diagrams/state/stateDb.js","webpack://mermaid/./src/diagrams/state/stateRenderer-v2.js","webpack://mermaid/./src/diagrams/state/stateRenderer.js","webpack://mermaid/./src/diagrams/user-journey/journeyDb.js","webpack://mermaid/./src/diagrams/user-journey/journeyRenderer.js","webpack://mermaid/./src/diagrams/user-journey/parser/journey.jison","webpack://mermaid/./src/diagrams/user-journey/svgDraw.js","webpack://mermaid/./src/errorRenderer.js","webpack://mermaid/./src/logger.js","webpack://mermaid/./src/mermaid.js","webpack://mermaid/./src/mermaidAPI.js","webpack://mermaid/./src/themes sync ^\\.\\/.*\\/index\\.scss$","webpack://mermaid/./src/themes/dark/index.scss?55a3","webpack://mermaid/./src/themes/default/index.scss?1e22","webpack://mermaid/./src/themes/forest/index.scss?c8cd","webpack://mermaid/./src/themes/neutral/index.scss?96e0","webpack://mermaid/./src/utils.js","webpack://mermaid/external \"@braintree/sanitize-url\"","webpack://mermaid/external \"crypto-random-string\"","webpack://mermaid/external \"d3\"","webpack://mermaid/external \"dagre\"","webpack://mermaid/external \"dagre-d3\"","webpack://mermaid/external \"dagre-d3/lib/label/add-html-label.js\"","webpack://mermaid/external \"entity-decode/browser\"","webpack://mermaid/external \"graphlib\"","webpack://mermaid/external \"moment-mini\"","webpack://mermaid/external \"scope-css\""],"names":["config","theme","themeCSS","undefined","maxTextSize","fontFamily","logLevel","securityLevel","startOnLoad","arrowMarkerAbsolute","secure","flowchart","htmlLabels","nodeSpacing","rankSpacing","curve","padding","sequence","activationWidth","diagramMarginX","diagramMarginY","actorMargin","width","height","boxMargin","boxTextMargin","noteMargin","messageMargin","messageAlign","mirrorActors","bottomMarginAdj","useMaxWidth","rightAngles","showSequenceNumbers","actorFontSize","actorFontFamily","actorFontWeight","noteFontSize","noteFontFamily","noteFontWeight","noteAlign","messageFontSize","messageFontFamily","messageFontWeight","wrap","wrapPadding","labelBoxWidth","labelBoxHeight","messageFont","fontSize","fontWeight","noteFont","actorFont","gantt","titleTopMargin","barHeight","barGap","topPadding","leftPadding","gridLineStartPadding","numberSectionStyles","axisFormat","journey","class","git","state","dividerMargin","sizeUnit","textHeight","titleShift","forkWidth","forkHeight","miniPadding","fontSizeFactor","labelHeight","edgeLengthFactor","compositTitleSize","radius","er","diagramPadding","layoutDirection","minEntityWidth","minEntityHeight","entityPadding","stroke","fill","defaultConfig","Object","freeze","siteConfig","assignWithDepth","currentConfig","setSiteConfig","conf","clobber","getSiteConfig","setConfig","sanitize","getConfig","options","keys","forEach","key","logger","warn","reset","configApi","rect","parent","node","log","trace","id","shapeSvg","insert","attr","label","text","appendChild","createLabel","labelText","labelStyle","bbox","getBBox","div","children","dv","select","getBoundingClientRect","halfPadding","JSON","stringify","rx","ry","x","y","rectBox","intersect","point","intersectRect","noteGroup","roundedWithTitle","classes","innerRect","append","divider","shapes","clusterElems","insertCluster","elem","shape","getClusterTitleWidth","removeChild","clear","positionCluster","info","el","applyStyle","dom","styleFn","addHtmlLabel","fo","document","createElementNS","labelClass","isNode","html","style","_vertexText","isTitle","vertexText","replace","s","vertexNode","svgLabel","setAttribute","rows","split","Array","isArray","j","length","tspan","setAttributeNS","textContent","trim","edgeLabels","insertEdgeLabel","edge","labelElement","edgeLabel","positionEdgeLabel","points","pos","utils","calcLabelPosition","outsideNode","dx","Math","abs","dy","w","h","intersection","outsidePoint","insidePoint","r","edges","x1","x2","y1","y2","Q","R","q","res","insertEdge","e","clusterDb","diagramType","graph","pointsHasChanged","tail","v","head","slice","unshift","push","toCluster","lastPointOutside","isInside","insterection","fromCluster","updatedPoints","i","lineData","filter","p","Number","isNaN","lineFunction","line","d","curveBasis","strokeClasses","thickness","pattern","svgPath","url","window","location","protocol","host","pathname","search","arrowType","recursiveRender","_elem","diagramtype","parentCluster","graphlib","json","write","dir","rankdir","nodes","clusters","edgePaths","data","parse","clusterData","setNode","setParent","clusterNode","newEl","updateNodeBounds","setNodeElem","findNonClusterChild","insertNode","name","dagre","layout","positionNode","updatedPath","render","markers","insertMarkers","clearNodes","clearEdges","clearClusters","clearGraphlib","adjustClustersAndEdges","circle","ellipse","polygon","intersectCircle","intersectEllipse","cx","cy","px","py","det","sqrt","intersectLine","p1","p2","q1","q2","a1","a2","b1","b2","c1","c2","r1","r2","r3","r4","denom","offset","num","sameSign","module","exports","intersectNode","console","intersectPolygon","polyPoints","intersections","minX","POSITIVE_INFINITY","minY","entry","min","left","top","sort","pdx","pdy","distp","qdx","qdy","distq","sx","sy","markerArray","type","markerName","extension","composition","aggregation","dependency","cross","barb","decendants","parents","isDecendant","ancenstorId","debug","indexOf","edgeInCluster","clusterId","copy","newGraph","rootId","setEdge","error","removeNode","extractDecendants","concat","validate","_id","getAnchorId","externalConnections","depth","d1","d2","extractor","removeEdge","hasChildren","graphSettings","clusterGraph","Graph","multigraph","compound","setGraph","nodesep","ranksep","marginx","marginy","setDefaultEdgeLabel","question","labelHelper","questionElem","insertPolygonShape","hexagon","f","m","hex","rect_left_inv_arrow","lean_right","lean_left","trapezoid","inv_trapezoid","rect_right_inv_arrow","cylinder","rectWithTitle","innerLine","text2","flat","textRows","titleBox","descr","join","stadium","subroutine","start","forkJoin","end","innerCircle","note","fork","nodeElems","_classes","element","map","MERMAID_DOM_ID_PREFIX","relations","classCounter","funs","splitClassNameAndType","genericType","className","addClass","classId","cssClasses","methods","members","annotations","domId","lookUpDomId","classKeys","setupToolTips","getClass","getClasses","getRelations","addRelation","relation","id1","id2","addAnnotation","annotation","validatedClassName","addMember","member","theClass","memberString","startsWith","endsWith","substring","addMembers","reverse","cleanupLabel","substr","setCssClass","ids","match","setLink","linkStr","tooltip","link","formatUrl","common","sanitizeText","setClickEvent","functionName","setClickFunc","elemId","querySelector","addEventListener","runFunc","bindFunctions","fun","lineType","LINE","DOTTED_LINE","relationType","AGGREGATION","EXTENSION","COMPOSITION","DEPENDENCY","tooltipElem","_groups","svg","selectAll","on","title","transition","duration","scrollX","right","scrollY","body","scrollTop","classed","parser","yy","classDb","idCache","getGraphId","setConf","cnf","draw","diagram","g","isMultiGraph","classDef","svgDraw","drawClass","drawEdge","svgBounds","vBox","edgeCount","path","getRelationType","type1","type2","l","labelPosition","p1_card_x","p1_card_y","p2_card_x","p2_card_y","cardinality_1_point","calcCardinalityPosition","cardinality_2_point","bounds","relationTitle1","relationTitle2","cssClassStr","classInfo","isFirst","titleText2","classTitleString","classTitle","titleHeight","membersLine","addTspan","membersBox","methodsLine","method","classBox","rectWidth","childNodes","parseMember","fieldRegEx","methodRegEx","fieldMatch","methodMatch","buildFieldDisplay","buildMethodDisplay","buildLegacyDisplay","parsedText","displayText","visibility","fieldType","parseGenericTypes","fieldName","err","cssStyle","methodName","parameters","classifier","returnType","parseClassifier","memberText","methodStart","methodEnd","firstChar","textEl","txt","tSpan","cleanedText","getRows","str","breakToPlaceholder","placeholderToBreak","lineBreakRegex","hasBreaks","test","splitBreaks","entities","relationships","Cardinality","ZERO_OR_ONE","ZERO_OR_MORE","ONE_OR_MORE","ONLY_ONE","Identification","NON_IDENTIFYING","IDENTIFYING","addEntity","getEntities","addRelationship","entA","rolA","entB","rSpec","rel","entityA","roleA","entityB","relSpec","getRelationships","setTitle","getTitle","ERMarkers","ONLY_ONE_START","ONLY_ONE_END","ZERO_OR_ONE_START","ZERO_OR_ONE_END","ONE_OR_MORE_START","ONE_OR_MORE_END","ZERO_OR_MORE_START","ZERO_OR_MORE_END","marker","drawEntities","svgNode","firstOne","groupNode","textId","textNode","textBBox","entityWidth","max","entityHeight","rectNode","rectBBox","adjustEntities","getEdgeName","addRelationships","relationship","relCnt","drawRelationshipFromLayout","relType","erDb","cardA","erMarkers","cardB","len","getTotalLength","labelPoint","getPointAtLength","labelId","labelNode","labelBBox","erParser","directed","edgesep","firstEntity","dagreD3","addToRender","addToRenderV2","addShape","vertices","subGraphs","subGraphLookup","tooltips","subCount","firstGraphFlag","direction","addVertex","styles","addSingleLink","_start","_end","linktext","addLink","updateLinkInterpolate","positions","interp","defaultInterpolate","interpolate","updateLink","defaultStyle","isSubstringInArray","textStyles","newStyle1","newStyle2","setDirection","setClass","setTooltip","setClickFun","getTooltip","getDirection","getVertices","getEdges","addSubGraph","list","_title","uniq","a","prims","boolean","number","string","objs","item","hasOwnProperty","nodeList","apply","subGraph","getPosForId","secCount","posCrossRef","indexNodes2","result","count","posCount","childPos","getDepthFirstPos","indexNodes","getSubGraphs","firstGraph","destructStartLink","_str","destructEndLink","destructLink","_startStr","startInfo","lex","addVertices","vert","svgId","vertex","classStr","getStylesFromArray","parentNode","radious","_shape","addEdges","cnt","defaultLabelStyle","defaultStyles","linkId","linkNameStart","linkNameEnd","edgeData","arrowhead","interpolateToCurve","curveLinear","arrowheadStyle","labelpos","labelType","flowDb","flow","subG","_label","labels","querySelectorAll","k","dim","insertBefore","firstChild","linkNode","Render","flowChartShapes","arrows","none","normal","util","clusterRects","clusterEl","xPos","baseVal","value","yPos","cluster","te","classList","add","dateFormat","todayMarker","excludes","sections","tasks","currentSection","tags","inclusiveEndDates","lastOrder","taskCnt","lastTask","lastTaskID","rawTasks","setAxisFormat","getAxisFormat","setTodayMarker","getTodayMarker","setDateFormat","enableInclusiveEndDates","endDatesAreInclusive","getDateFormat","setExcludes","toLowerCase","getExcludes","addSection","getSections","getTasks","allItemsPricessed","compileTasks","maxDepth","iterationCount","isInvalidDate","date","isoWeekday","format","checkTaskDates","task","manualEndTime","startTime","moment","endTime","renderEndTime","fixTaskDates","toDate","invalid","getStartDate","prevTime","re","afterStatement","exec","latestEndingTask","findTaskById","dt","Date","setHours","mDate","isValid","durationToDate","durationStatement","relativeTime","getEndDate","inclusive","parseId","idStr","compileData","prevTask","dataStr","ds","getTaskTags","endTimeData","parseData","prevTaskId","startData","taskDb","addTask","rawTask","section","processed","raw","taskInfo","active","done","crit","milestone","order","addTaskOrg","newTask","description","compileTask","allProcessed","_linkStr","sanitizeUrl","pushFun","open","functionArgs","argList","charAt","callbackFunction","matchFound","t","regex","RegExp","shift","ganttDb","rightPadding","getElementById","parentElement","offsetWidth","useWidth","taskArray","timeScale","scaleTime","domain","rangeRound","categories","catsUnfiltered","checkUnique","taskCompare","b","taskA","taskB","makeGant","pageWidth","pageHeight","gap","colorScale","scaleLinear","range","interpolateHcl","makeGrid","drawRects","vertLabels","drawToday","theArray","theGap","theTopPad","theSidePad","theBarHeight","theColorScale","enter","rectangles","toString","secNum","taskClass","startX","endX","textWidth","taskType","xAxis","axisBottom","tickSize","tickFormat","timeFormat","call","numOccurances","prevGap","getCount","todayG","today","todayLine","arr","hash","getCounts","obj","word","commits","branches","master","curBranch","seq","makeid","characters","charactersLength","floor","random","getId","isfastforwardable","currentCommit","otherCommit","isReachableFrom","currentSeq","otherSeq","uniqBy","fn","recordMap","create","reduce","out","setOptions","rawOptString","message","getOptions","commit","msg","branch","merge","otherBranch","checkout","commitRef","ref","parentCount","parseInt","upsert","newval","index","splice","prettyPrintCommitHistory","commitArr","c","newCommit","nextCommit","prettyPrint","getCommitsArray","getBranchesAsObjArray","branchArr","getBranches","getCommits","o","getCurrentBranch","getHead","allCommitsDict","branchNum","nodeFillColor","nodeStrokeWidth","nodeStrokeColor","lineStrokeWidth","branchOffset","lineColor","leftMargin","branchColors","nodeRadius","nodeLabel","apiConfig","svgCreateDefs","svgDrawLine","colorIdx","color","lineGen","round","getElementCoords","coords","ctm","getCTM","xn","yn","svgDrawLineForCommits","fromId","toId","fromBbox","toBbox","lineStart","lineEnd","cloneNode","selector","renderCommitHistory","commitid","numCommits","size","branchName","renderLines","branchColor","lineDrawn","ver","gitGraphParser","db","assign","setMessage","getMessage","setInfo","inf","getInfo","infoParser","cleanupValue","pieParser","pieData","margin","legendRectSize","legendSpacing","sum","scaleOrdinal","schemeSet2","pie","d3pie","dataReady","entries","arcGenerator","arc","innerRadius","outerRadius","toFixed","centroid","legend","horz","prevActor","actors","messages","notes","titleWrapped","sequenceNumbersEnabled","wrapEnabled","parseDirective","statement","context","mermaidAPI","addActor","old","autoWrap","nextActor","activationCount","part","LINETYPE","ACTIVE_START","from","actor","ACTIVE_END","addMessage","idFrom","idTo","answer","to","addSignal","messageType","Error","token","loc","first_line","last_line","first_column","last_column","expected","getMessages","getActors","getActor","getActorKeys","getTitleWrapped","enableSequenceNumbers","setWrap","wrapSetting","parseMessage","SOLID","DOTTED","NOTE","SOLID_CROSS","DOTTED_CROSS","SOLID_OPEN","DOTTED_OPEN","LOOP_START","LOOP_END","ALT_START","ALT_ELSE","ALT_END","OPT_START","OPT_END","PAR_START","PAR_AND","PAR_END","RECT_START","RECT_END","ARROWTYPE","FILLED","OPEN","PLACEMENT","LEFTOF","RIGHTOF","OVER","addNote","placement","titleWrap","param","signalType","loopText","optText","altText","parText","sequenceDb","startx","stopx","starty","stopy","verticalPos","sequenceItems","activations","models","getHeight","loops","it","acc","actorModel","addLoop","loopModel","msgModel","noteModel","lastActor","lastLoop","lastMessage","lastNote","init","updateVal","val","updateBounds","_self","updateFn","updateItemBounds","n","_startx","_stopx","_starty","_stopy","newActivation","actorRect","stackedSize","actorActivations","anchored","anchorElement","endActivation","lastActorActivationIdx","activation","lastIndexOf","createLoop","newLoop","endLoop","pop","addSectionToLoop","loop","sectionTitles","getVerticalPos","bumpVerticalPos","bump","getBounds","drawNote","getNoteRect","rectElem","drawRect","textObj","getTextObj","anchor","textMargin","valign","textElem","drawText","curr","drawMessage","sequenceIndex","lines","textDims","calculateTextDimensions","lineHeight","totalOffset","lineStarty","fromBounds","toBounds","drawActors","actorKeys","prevWidth","prevMargin","drawActor","activationBounds","actorObj","adjustLoopHeightForWrap","loopWidths","preMargin","postMargin","addLoopFn","heightAdjust","loopWidth","textConf","wrapLabel","maxMessageWidthPerActor","getMaxMessageWidthPerActor","calculateActorMargins","calculateLoopBounds","insertArrowHead","insertArrowCrossHead","insertSequenceNumber","activeEnd","activationData","drawActivation","drawLoop","drawBackgroundRect","includes","box","actorLines","extraVertForTitle","isNote","isMessage","textFont","wrappedMessage","messageDimensions","messageWidth","actorToMessageWidth","maxHeight","prop","actDims","actorKey","actorWidth","buildNoteModel","shouldWrap","textDimensions","buildMessageModel","process","fromIdx","toIdx","allBounds","boundedWidth","msgDims","stack","current","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","toAdd","enabled","stk","rectData","textData","prevTextHeight","textElems","yfunc","dominantBaseline","alignmentBaseline","span","drawLabel","txtObject","genPoints","cut","actorCnt","center","_drawTextCandidateFunc","drawLoopLine","idx","sectionHeight","lower","defs","byText","content","textAttrs","_setTextAttrs","byTspan","byFo","toText","fromTextAttrsDict","textPlacement","set","get","drawStartState","drawDivider","drawSimpleState","stateDef","drawDescrState","descriptions","isSecond","descrLine","descrBox","addTitleAndBox","altBkg","pad","dblPad","orgBox","orgWidth","orgX","titleWidth","graphBox","doc","lineY","drawEndState","drawForkJoinState","parentId","tmp","nText","_drawLongText","_text","tHeight","textBounds","drawState","stateInfo","stateBox","stateDb","titleRows","maxWidth","boundstmp","boxHeight","heightAdj","clone","rootDoc","setRootDoc","getRootDoc","docTranslator","first","stmt","state1","state2","currentDoc","newNode","generateId","docNode","getRootDocV2","extract","_doc","addState","newDoc","states","documents","root","currentDocument","startCnt","endCnt","addDescription","des","getState","getStates","logDocuments","_id1","_id2","_descr","theState","dividerCnt","getDividerId","trimColon","nodeDb","setupNode","altFlag","nodeData","noteData","groupData","position","setupDoc","startId","endId","transformationLog","renderDoc","getLabelWidth","edgeFreeDoc","ranker","nodeSep","sub","boxBounds","noteDef","nodeCount","svgElem","dividers","pWidth","pShift","getAttribute","allItemsProcessed","updateActors","tempActors","people","unique","Set","taskData","pieces","score","peeps","peopleList","journeyDb","taskMargin","taskFontSize","taskFontFamily","actorColours","sectionFills","sectionColours","drawActorLegend","person","colour","circleData","drawCircle","labelData","LEFT_MARGIN","initGraphics","actorNames","actorPos","actorName","drawTasks","fills","textColours","lastSection","sectionVHeight","taskPos","sectionNumber","drawSection","taskActors","drawTask","drawFace","faceData","circleElement","face","smile","d3arc","startAngle","PI","endAngle","sad","ambivalent","labelMargin","taskCount","graphics","LEVELS","fatal","setLogLevel","level","bind","time","arguments","mermaid","sequenceConfig","callback","Node","initialize","ganttConfig","now","innerHTML","decode","detectInit","svgCode","parseError","contentLoaded","themes","themeName","require","graphInit","reinitialize","graphType","detectType","gitGraphAst","flowParser","sequenceParser","ganttParser","classParser","stateParser","infoDb","pieDb","journeyParser","encodeEntities","innerTxt","isInt","decodeEntities","_txt","cb","container","existingSvg","remove","altFontFamily","flowRenderer","style1","createElement","scope","style2","cs","getComputedStyle","font","gitGraphRenderer","flowRendererV2","sequenceDiagram","sequenceRenderer","ganttRenderer","classRenderer","stateRenderer","stateRendererV2","infoRenderer","pkg","version","pieRenderer","erRenderer","journeyRenderer","errorRenderer","currentDirective","args","handleDirective","directive","updateRendererConfigs","globalReset","d3CurveTypes","curveBasisClosed","curveBasisOpen","curveLinearClosed","curveMonotoneX","curveMonotoneY","curveNatural","curveStep","curveStepAfter","curveStepBefore","directiveWithoutOpen","anyComment","inits","detectDirective","results","commentWithoutDirectives","source","lastIndex","memoize","resolver","cache","defaultCurve","curveName","toUpperCase","arrPaths","fnName","params","distance","pow","traverseEdge","prevPoint","totalDistance","remainingDistance","vectorDistance","distanceRatio","isRelationTypePresent","initialPosition","distanceToCardinalityPoint","angle","atan2","cardinalityPosition","sin","cos","cryptoRandomString","dst","src","drawSimpleText","joinWith","words","completedLines","nextLine","wordLength","calculateTextWidth","nextLineLength","breakString","hyphenatedStrings","remainingWord","Boolean","currentWord","isLastWord","hyphenCharacter","currentLine","character","lineWidth","currentCharacter","isLastLine","hyphenatedNextLine","calculateTextHeight","fontFamilies","dims","cheight","bBox"],"mappings":"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A;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU,oBAAoB;AAC9B;AACA;;AAEA;AACA,UAAU,UAAU;AACpB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;;AAEA;AACA,+BAA+B,sBAAsB;AACrD;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,QAAQ;AACvC;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,2BAA2B,QAAQ;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,QAAQ;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,eAAe;AAClC;AACA;AACA;AACA;;AAEA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC7SA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,qCAAqC;;AAErC;AACA;AACA;;AAEA,2BAA2B;AAC3B;AACA;AACA;AACA,4BAA4B,UAAU;;;;;;;;;;;;ACvLtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;ACrBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;;;;;;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CA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iCAAiC;AACjC,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL,qDAAqD;AACrD;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,kCAAkC;AAC/D;AACA;AACA;AACA;AACA;AACA,uCAAuC,kBAAkB;AACzD;AACA;AACA;AACA,mDAAmD;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,+EAA+E,qBAAqB,WAAW,wBAAwB,EAAE,gQAAgQ;AACzY,aAAa,UAAU,kCAAkC,YAAY,kCAAkC,WAAW,sCAAsC,YAAY;AACpK,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA,CAAC;;;AAGD,IAAI,IAAgE;AACpE;AACA;AACA,6BAA6B,8CAA8C;AAC3E;AACA;AACA;AACA;AACA;AACA,iBAAiB,mBAAO,CAAC,0DAAI,eAAe,mBAAO,CAAC,qDAAM;AAC1D;AACA;AACA,IAAI,KAA6B,IAAI,4CAAY;AACjD;AACA;AACA,C;;;;;;;;;;;;;AC7wBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAEA,IAAIU,SAAS,GAAG,CAAhB;AACO,IAAMH,QAAQ,GAAG,SAAXA,QAAW,CAASlX,IAAT,EAAesX,IAAf,EAAqB5E,QAArB,EAA+BlW,IAA/B,EAAqC;AAC3D,MAAM+a,eAAe,GAAG,SAAlBA,eAAkB,CAASlL,IAAT,EAAe;AACrC,YAAQA,IAAR;A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CA;AACA,4C;AACA;AACA;AACA,wC;AACA;AACA;AACA,mC;AACA;AACA;AACA,iB;AACA;AACA;AACA,CAAC;AACD,SAAS,YAAY,EAAE,MAAM,cAAc,IAAI,GAAG,uBAAuB,EAAE,QAAQ,eAAe,qCAAqC,4BAA4B,YAAY,EAAE,0BAA0B,uDAAuD,UAAU,EAAE,kCAAkC,8BAA8B,0BAA0B,EAAE,SAAS;AACnX,iBAAiB,iBAAiB;AAClC;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iCAAiC;AACjC,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL,qDAAqD;AACrD;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL,UAAU,wBAAwB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,2FAA2F,cAAc,uCAAuC,aAAa;AAC7J,aAAa,WAAW;AACxB,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA,CAAC;;;AAGD,IAAI,IAAgE;AACpE;AACA;AACA,6BAA6B,8CAA8C;AAC3E;AACA;AACA;AACA;AACA;AACA,iBAAiB,mBAAO,CAAC,0DAAI,eAAe,mBAAO,CAAC,qDAAM;AAC1D;AACA;AACA,IAAI,KAA6B,IAAI,4CAAY;AACjD;AACA;AACA,C;;;;;;;;;;;;;ACtqBA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAEA,SAASzH,QAAT,CAAkB3R,MAAlB,EAA0Bc,IAA1B,EAAgCb,IAAhC,EAAsC;AACpC,MAAM4F,CAAC,GAAG/E,IAAI,CAACpG,KAAf;AACA,MAAMoL,CAAC,GAAGhF,IAAI,CAACnG,MAAf;AACA,MAAMqJ,CAAC,GAAG,CAAC6B,CAAC,GAAGC,CAAL,IAAU,GAApB;AACA,MAAMV,MAAM,GAAG,CACb;AAAE1D,KAAC,EAAEsC,CAAC,G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AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,8CAA8C,WAAW,qD;AACrG;AACA;AACA,8CAA8C,gDAAgD,WAAW,yD;AACzG;AACA;AACA,iCAAiC,aAAa;AAC9C;AACA;AACA,gCAAgC,aAAa;AAC7C;AACA;AACA,gCAAgC;AAChC;AACA;AACA,kCAAkC,qDAAqD;AACvF;AACA;AACA,oBAAoB;AACpB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,+BAA+B,kBAAkB;AACjD;AACA;AACA,uBAAuB;AACvB;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA,4CAA4C,WAAW;AACvD;AACA;AACA,kCAAkC,UAAU;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB,8CAA8C;AAChE;AACA;AACA,kBAAkB,4CAA4C;AAC9D;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,SAAS,4BAA4B,EAAE,MAAM,YAAY,IAAI,GAAG,wBAAwB,EAAE,wBAAwB,EAAE,SAAS,EAAE,2PAA2P,6BAA6B,qCAAqC,gFAAgF,yDAAyD,EAAE,yBAAyB,EAAE,yBAAyB,EAAE,yBAAyB,EAAE,yBAAyB,EAAE,yBAAyB,EAAE,mCAAmC,eAAe,aAAa,GAAG,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,eAAe,UAAU,gBAAgB,mNAAmN,6RAA6R,SAAS,eAAe,aAAa,iBAAiB,iIAAiI,yDAAyD,0BAA0B,GAAG,yQAAyQ,uIAAuI,0QAA0Q,aAAa,MAAM,gBAAgB,QAAQ,GAAG,0JAA0J,EAAE,6BAA6B,EAAE,0JAA0J,EAAE,+IAA+I,EAAE,+IAA+I,EAAE,sHAAsH,EAAE,0QAA0Q,EAAE,qRAAqR,EAAE,0QAA0Q,EAAE,0QAA0Q,EAAE,0QAA0Q,EAAE,0QAA0Q,EAAE,qRAAqR,EAAE,0QAA0Q,EAAE,0QAA0Q,EAAE,0QAA0Q,0DAA0D,cAAc,gBAAgB,WAAW,GAAG,WAAW,EAAE,0QAA0Q,EAAE,wQAAwQ,qjBAAqjB,kSAAkS,EAAE,8PAA8P,EAAE,cAAc,EAAE,mJAAmJ,EAAE,WAAW,kFAAkF,WAAW,EAAE,sBAAsB,iBAAiB,WAAW,EAAE,mJAAmJ,EAAE,mJAAmJ,EAAE,mJAAmJ,eAAe,+GAA+G,GAAG,wQAAwQ,EAAE,0QAA0Q,EAAE,wQAAwQ,EAAE,wQAAwQ,EAAE,wQAAwQ,EAAE,wQAAwQ,EAAE,wQAAwQ,EAAE,wQAAwQ,EAAE,0QAA0Q,EAAE,wQAAwQ,EAAE,mRAAmR,EAAE,mRAAmR,eAAe,QAAQ,+BAA+B,wQAAwQ,+BAA+B,0QAA0Q,aAAa,MAAM,iBAAiB,4HAA4H,EAAE,6GAA6G,kBAAkB,6GAA6G,EAAE,wHAAwH,EAAE,wHAAwH,EAAE,WAAW,EAAE,6GAA6G,EAAE,6GAA6G,EAAE,+IAA+I,EAAE,0JAA0J,gBAAgB,wQAAwQ,sFAAsF,wQAAwQ,oIAAoI,wQAAwQ,EAAE,8PAA8P,8BAA8B,QAAQ,kBAAkB,+FAA+F,iNAAiN,QAAQ,iBAAiB,QAAQ,GAAG,WAAW,gBAAgB,QAAQ,GAAG,WAAW,+BAA+B,QAAQ,iBAAiB,QAAQ,iBAAiB,wIAAwI,iBAAiB,mJAAmJ,iBAAiB,WAAW,GAAG,WAAW,EAAE,WAAW,EAAE,0BAA0B,gBAAgB,sGAAsG,kBAAkB,+IAA+I,EAAE,+IAA+I,EAAE,WAAW,EAAE,WAAW,yCAAyC,MAAM,kBAAkB,+FAA+F,iBAAiB,mJAAmJ,iBAAiB,mJAAmJ,iCAAiC,8PAA8P,EAAE,6GAA6G,EAAE,6GAA6G,8BAA8B,QAAQ,iBAAiB,QAAQ;AAC5xhB,kBAAkB;AAClB;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iCAAiC;AACjC,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL,qDAAqD;AACrD;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,mBAAmB;AACnD;AACA,gCAAgC,mBAAmB;AACnD;AACA;AACA;AACA;AACA;AACA,2BAA2B,Y;AAC3B;AACA,2BAA2B,Y;AAC3B;AACA,2BAA2B,Y;AAC3B;AACA,2BAA2B,Y;AAC3B;AACA,2BAA2B,Y;AAC3B;AACA,2BAA2B,Y;AAC3B;AACA,2BAA2B,Y;AAC3B;AACA,2BAA2B,Y;AAC3B;AACA,2BAA2B,Y;AAC3B;AACA,2BAA2B,Y;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,icAAic,25KAA25K,UAAU;AACt2L,aAAa,UAAU,6BAA6B,QAAQ,0DAA0D,WAAW,gCAAgC,YAAY;AAC7K,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA,CAAC;;;AAGD,IAAI,IAAgE;AACpE;AACA;AACA,6BAA6B,8CAA8C;AAC3E;AACA;AACA;AACA;AACA;AACA,iBAAiB,mBAAO,CAAC,0DAAI,eAAe,mBAAO,CAAC,qDAAM;AAC1D;AACA;AACA,IAAI,KAA6B,IAAI,4CAAY;AACjD;AACA;AACA,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACt+BA;AACA;AACA;AACA;AACA;AAEA,IAAI6Q,UAAU,GAAG,EAAjB;AACA,IAAIhtB,UAAU,GAAG,EAAjB;AACA,IAAIitB,WAAW,GAAG,EAAlB;AACA,IAAIC,QAAQ,GAAG,EAAf;AACA,IAAI/R,KAAK,GAAG,EAAZ;AACA,IAAIgS,QAAQ,GAAG,EAAf;AACA,IAAIC,KAAK,GAAG,EAAZ;AACA,IAAIC,cAAc,GAAG,EAArB;AACA,IAAMC,IAAI,GAAG,CAAC,QAAD,EAAW,MAAX,EAAmB,MAAnB,EAA2B,WAA3B,CA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,qBAAqB,IAAI;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mJAAmJ;AACnJ,SAAS;;AAET;AACA;AACA,qBAAqB,+BAA+B;AACpD;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW,YAAY,IAAI,WAAW,SAAS;AACvE,cAAc,0BAA0B,EAAE;AAC1C,MAAM;AACN,WAAW,gWAAgW;AAC3W,aAAa,gPAAgP;AAC7P;AACA;AACA;;AAEA;AACA;AACA;AACA,iB;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA,6BAA6B;AAC7B;AACA;AACA,oCAAoC;AACpC;AACA;AACA,iCAAiC;AACjC;AACA;AACA,qCAAqC;AACrC;AACA;AACA,8BAA8B;AAC9B;AACA;AACA,gCAAgC;AAChC;AACA;AACA,4BAA4B;AAC5B;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB,2CAA2C;AAC7D;AACA;AACA,kBAAkB,+CAA+C;AACjE;AACA;AACA,kBAAkB,yCAAyC;AAC3D;AACA;AACA,kBAAkB,6CAA6C;AAC/D;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,SAAS,YAAY,EAAE,MAAM,cAAc,IAAI,GAAG,sGAAsG,cAAc,QAAQ,gBAAgB,0EAA0E,0IAA0I,UAAU,EAAE,oBAAoB,0CAA0C,oBAAoB,gBAAgB,UAAU,gBAAgB,UAAU,8BAA8B,UAAU;AAC5kB,kBAAkB;AAClB;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iCAAiC;AACjC,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL,qDAAqD;AACrD;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AAC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A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mJAAmJ;AACnJ,SAAS;;AAET;AACA;AACA,qBAAqB,+BAA+B;AACpD;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW,YAAY,IAAI,WAAW,SAAS;AACvE,cAAc,0BAA0B,EAAE;AAC1C,MAAM;AACN,WAAW,uSAAuS;AAClT,aAAa,0JAA0J;AACvK;AACA;AACA;;AAEA;AACA;AACA;AACA,iB;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA,yBAAyB;AACzB;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,SAAS,YAAY,EAAE,MAAM,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,QAAQ,EAAE,QAAQ,cAAc,gBAAgB,gBAAgB,sBAAsB,EAAE,QAAQ,EAAE,gFAAgF,eAAe,SAAS,eAAe,UAAU,gBAAgB,0BAA0B,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,0BAA0B,EAAE,QAAQ,eAAe,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,UAAU,EAAE,oBAAoB,EAAE,UAAU,EAAE,UAAU;AAC1lB,iBAAiB,2GAA2G;AAC5H;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iCAAiC;AACjC,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL,qDAAqD;AACrD;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL,UAAU,wBAAwB;AAClC;AAC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A,OADa;AAEbE,MAAI,EAAJA;AAFa,CAAf,E;;;;;;;;;;;ACpDA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA,eAAe,kCAAkC;AACjD,iBAAiB,kCAAkC;AACnD;AACA;AACA;AACA,qBAAqB,IAAI;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mJAAmJ;AACnJ,SAAS;;AAET;AACA;AACA,qBAAqB,+BAA+B;AACpD;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW,YAAY,IAAI,WAAW,SAAS;AACvE,cAAc,0BAA0B,EAAE;AAC1C,MAAM;AACN,WAAW,mHAAmH;AAC9H,aAAa,gDAAgD;AAC7D;AACA;AACA;;AAEA;AACA;AACA;AACA,W;AACA;AACA;;AAEA;AACA;AACA,kB;AACA;AACA;AACA,CAAC;AACD,SAAS,YAAY,EAAE,MAAM,cAAc,IAAI,GAAG,iCAAiC,EAAE,QAAQ;AAC7F,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iCAAiC;AACjC,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL,qDAAqD;AACrD;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL,UAAU,wBAAwB;AAClC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,aAAa,WAAW;AACxB,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA,CAAC;;;AAGD,IAAI,IAAgE;AACpE;AACA;AACA,6BAA6B,8CAA8C;AAC3E;AACA;AACA;AACA;AACA;AACA,iBAAiB,mBAAO,CAAC,0DAAI,eAAe,mBAAO,CAAC,qDAAM;AAC1D;AACA;AACA,IAAI,KAA6B,IAAI,4CAAY;AACjD;AACA;AACA,C;;;;;;;;;;;;AC7mBA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA,eAAe,kCAAkC;AACjD,iBAAiB,kCAAkC;AACnD;AACA;AACA;AACA,qBAAqB,IAAI;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mJAAmJ;AACnJ,SAAS;;AAET;AACA;AACA,qBAAqB,+BAA+B;AACpD;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW,YAAY,IAAI,WAAW,SAAS;AACvE,cAAc,0BAA0B,EAAE;AAC1C,MAAM;AACN,WAAW,mIAAmI;AAC9I,aAAa,gEAAgE;AAC7E;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,kD;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA,CAAC;AACD,SAAS,YAAY,EAAE,MAAM,cAAc,IAAI,GAAG,0CAA0C,EAAE,QAAQ,yCAAyC,UAAU;AACzJ,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iCAAiC;AACjC,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL,qDAAqD;AACrD;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL,UAAU,wBAAwB;AAClC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,qGAAqG;AACrG,aAAa,UAAU,gCAAgC,YAAY;AACnE,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA,CAAC;;;AAGD,IAAI,IAAgE;AACpE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AACA;AACA,qBAAqB,+BAA+B;AACpD;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW,YAAY,IAAI,WAAW,SAAS;AACvE,cAAc,0BAA0B,EAAE;AAC1C,MAAM;AACN,WAAW,wyBAAwyB;AACnzB,aAAa,ifAAif;AAC9f;AACA;AACA;;AAEA;AACA;AACA;AACA,kBAAkB,c;AAClB;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA,W;AACA;AACA;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA,QAAQ;AACR;AACA;AACA,SAAS,+BAA+B;AACxC;AACA;;AAEA,oBAAoB,0FAA0F;AAC9G,iBAAiB,qEAAqE;AACtF;AACA;AACA;;AAEA,oBAAoB,wFAAwF;AAC5G,iBAAiB,oFAAoF;AACrG;AACA;AACA;;AAEA,oBAAoB,uFAAuF;AAC3G,iBAAiB,mFAAmF;AACpG;AACA;AACA;;AAEA;AACA,oBAAoB,uFAAuF;AAC3G;AACA;AACA,iBAAiB,gDAAgD;AACjE;AACA;AACA;;AAEA;AACA,oBAAoB,uFAAuF;AAC3G;AACA;AACA,iBAAiB,gDAAgD;AACjE;AACA;AACA;AACA,4BAA4B,gFAAgF,W;AAC5G;AACA;AACA,4BAA4B,kFAAkF,W;AAC9G;AACA;;AAEA,uBAAuB,sEAAsE;AAC7F;AACA;;AAEA;AACA;AACA;AACA;AACA,uBAAuB,qFAAqF;AAC5G;AACA;AACA,6B;AACA;AACA;AACA,iB;AACA;AACA;AACA,8B;AACA;AACA;AACA,+B;AACA;AACA;AACA,8BAA8B,4FAA4F;AAC1H,gBAAgB;AAChB;AACA;AACA;AACA,8BAA8B,4FAA4F;AAC1H,eAAe;AACf;AACA;AACA;AACA,8BAA8B,4FAA4F;AAC1H;AACA;AACA,QAAQ;AACR;AACA;AACA,iC;AACA;AACA;AACA,kC;AACA;AACA;AACA,4B;AACA;AACA;AACA,6B;AACA;AACA;AACA,kC;AACA;AACA;AACA,mC;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,qB;AACvB;AACA;AACA,6C;AACA;AACA;AACA,2CAA2C,4C;AAC3C;AACA;AACA,qBAAqB,oC;AACrB;AACA;AACA,CAAC;AACD,SAAS,sCAAsC,EAAE,MAAM,EAAE,sCAAsC,EAAE,sCAAsC,EAAE,uCAAuC,uDAAuD,KAAK,GAAG,gBAAgB,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,sJAAsJ,EAAE,uBAAuB,iCAAiC,6HAA6H,4BAA4B,aAAa,EAAE,SAAS,gBAAgB,aAAa,EAAE,aAAa,EAAE,SAAS,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,gBAAgB,kEAAkE,EAAE,oCAAoC,2CAA2C,SAAS,EAAE,gBAAgB,EAAE,SAAS,eAAe,mBAAmB,gBAAgB,SAAS,EAAE,SAAS,gBAAgB,SAAS,EAAE,SAAS,YAAY,KAAK,aAAa,KAAK,aAAa,KAAK,aAAa,WAAW,aAAa,WAAW,GAAG,iCAAiC,sFAAsF,aAAa,EAAE,mBAAmB,EAAE,UAAU,EAAE,UAAU,gBAAgB,aAAa,EAAE,UAAU,EAAE,UAAU,0DAA0D,wJAAwJ,EAAE,wJAAwJ,EAAE,wJAAwJ,EAAE,UAAU,EAAE,kKAAkK,EAAE,UAAU,EAAE,kKAAkK,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,oBAAoB,EAAE,SAAS,EAAE,SAAS,0DAA0D,UAAU,gBAAgB,WAAW,EAAE,cAAc,EAAE,cAAc,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,cAAc,wCAAwC,YAAY,aAAa,YAAY,GAAG,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AACpsF,iBAAiB,yKAAyK;AAC1L;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iCAAiC;AACjC,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL,qDAAqD;AACrD;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL,UA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AK,GAAG,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,eAAe,UAAU,GAAG,2GAA2G,eAAe,UAAU,GAAG,UAAU,EAAE,UAAU,wCAAwC,KAAK,+BAA+B,2GAA2G;AAC/kC,iBAAiB,oCAAoC;AACrD;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iCAAiC;AACjC,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL,qDAAqD;AACrD;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL,UAAU,wBAAwB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,yCAAyC,a;AACzE;AACA;AACA;AACA;AACA;AACA,gC;AACA;AACA,uBAAuB,yCAAyC,0CAA0C;AAC1G;AACA,wBAAwB,yCAAyC,yCAAyC;AAC1G;AACA,wBAAwB,yCAAyC,yCAAyC;AAC1G;AACA,wBAAwB,yCAAyC,yCAAyC;AAC1G;AACA;AACA;AACA,wBAAwB,2BAA2B;AACnD;AACA,wBAAwB,uCAAuC;AAC/D;AACA;AACA;AACA,wDAAwD;AACxD;AACA,oDAAoD;AACpD;AACA;AACA;AACA,wBAAwB,yBAAyB,2CAA2C;AAC5F;AACA,wCAAwC,mBAAmB;AAC3D;AACA;AACA;AACA,4BAA4B,W;AAC5B;AACA,yBAAyB,0BAA0B;AACnD;AACA,yBAAyB,0BAA0B;AACnD;AACA,yBAAyB;AACzB;AACA,wBAAwB,mCAAmC;AAC3D;AACA;AACA;AACA,2DAA2D;AAC3D;AACA,wBAAwB,8CAA8C;AACtE;AACA,yBAAyB,4BAA4B,6CAA6C;AAClG;AACA,yBAAyB,mDAAmD,2CAA2C;AACvH;AACA,yBAAyB,mDAAmD,6CAA6C;AACzH;AACA,4DAA4D,W;AAC5D;AACA,4DAA4D,W;AAC5D;AACA,qDAAqD,Y;AACrD;AACA,iDAAiD;AACjD;AACA,2CAA2C;AAC3C;AACA,wCAAwC,uCAAuC,a;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,mRAAmR,6CAA6C,wBAAwB,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B,+BAA+B;AACpD;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW,YAAY,IAAI,WAAW,SAAS;AACvE,cAAc,0BAA0B,EAAE;AAC1C,MAAM;AACN,WAAW,uKAAuK;AAClL,aAAa,oGAAoG;AACjH;AACA;AACA;;AAEA;AACA;AACA;AACA,iB;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA,gCAAgC;AAChC;AACA;AACA,6BAA6B;AAC7B;AACA;AACA,CAAC;AACD,SAAS,YAAY,EAAE,MAAM,cAAc,IAAI,GAAG,sDAAsD,cAAc,QAAQ,gBAAgB,0BAA0B,sDAAsD,UAAU;AACxO,kBAAkB;AAClB;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iCAAiC;AACjC,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL,qDAAqD;AACrD;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL,UAAU,wBAAwB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,sGAAsG,2BAA2B,kBAAkB,kBAAkB;AACrK,aAAa,WAAW;AACxB,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA,CAAC;;;AAGD,IAAI,IAAgE;AACpE;AACA;AACA,6BAA6B,8CAA8C;AAC3E;AACA;AACA;AACA;AACA;AACA,iBAAiB,mBAAO,CAAC,0DAAI,eAAe,mBAAO,CAAC,qDAAM;AAC1D;AACA;AACA,IAAI,KAA6B,IAAI,4CAAY;AACjD;AACA;AACA,C;;;;;;;;;;;;;ACroBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA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","file":"mermaid.core.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"mermaid\"] = factory();\n\telse\n\t\troot[\"mermaid\"] = factory();\n})(typeof self !== \"undefined\" ? self : this, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./src/mermaid.js\");\n","exports = module.exports = require(\"../../../node_modules/css-loader/dist/runtime/api.js\")(false);\n// Module\nexports.push([module.id, \"/* Flowchart variables */\\n/* Sequence Diagram variables */\\n/* Gantt chart variables */\\n/* state colors */\\n.label {\\n font-family: 'trebuchet ms', verdana, arial;\\n font-family: var(--mermaid-font-family);\\n fill: #F9FFFE;\\n color: #F9FFFE; }\\n\\n.label text {\\n fill: #F9FFFE; }\\n\\n.node rect,\\n.node circle,\\n.node ellipse,\\n.node polygon,\\n.node path {\\n fill: #1f2020;\\n stroke: #81B1DB;\\n stroke-width: 1px; }\\n\\n.node .label {\\n text-align: center;\\n fill: #F9FFFE; }\\n\\n.node.clickable {\\n cursor: pointer; }\\n\\n.arrowheadPath {\\n fill: lightgrey; }\\n\\n.edgePath .path {\\n stroke: lightgrey;\\n stroke-width: 1.5px; }\\n\\n.flowchart-link {\\n stroke: lightgrey;\\n fill: none; }\\n\\n.edgeLabel {\\n background-color: #e8e8e8;\\n text-align: center; }\\n .edgeLabel rect {\\n opacity: 0.9; }\\n .edgeLabel span {\\n color: #333; }\\n\\n.cluster rect {\\n fill: #474949;\\n stroke: rgba(255, 255, 255, 0.25);\\n stroke-width: 1px; }\\n\\n.cluster text {\\n fill: #F9FFFE; }\\n\\ndiv.mermaidTooltip {\\n position: absolute;\\n text-align: center;\\n max-width: 200px;\\n padding: 2px;\\n font-family: 'trebuchet ms', verdana, arial;\\n font-family: var(--mermaid-font-family);\\n font-size: 12px;\\n background: #474949;\\n border: 1px solid rgba(255, 255, 255, 0.25);\\n border-radius: 2px;\\n pointer-events: none;\\n z-index: 100; }\\n\\n.actor {\\n stroke: #81B1DB;\\n fill: #1f2020; }\\n\\ntext.actor > tspan {\\n fill: lightgrey;\\n stroke: none; }\\n\\n.actor-line {\\n stroke: lightgrey; }\\n\\n.messageLine0 {\\n stroke-width: 1.5;\\n stroke-dasharray: none;\\n stroke: lightgrey; }\\n\\n.messageLine1 {\\n stroke-width: 1.5;\\n stroke-dasharray: 2, 2;\\n stroke: lightgrey; }\\n\\n#arrowhead path {\\n fill: lightgrey;\\n stroke: lightgrey; }\\n\\n.sequenceNumber {\\n fill: black; }\\n\\n#sequencenumber {\\n fill: lightgrey; }\\n\\n#crosshead path {\\n fill: lightgrey;\\n stroke: lightgrey; }\\n\\n.messageText {\\n fill: lightgrey;\\n stroke: lightgrey; }\\n\\n.labelBox {\\n stroke: #81B1DB;\\n fill: #1f2020; }\\n\\n.labelText, .labelText > tspan {\\n fill: lightgrey;\\n stroke: none; }\\n\\n.loopText, .loopText > tspan {\\n fill: lightgrey;\\n stroke: none; }\\n\\n.loopLine {\\n stroke-width: 2px;\\n stroke-dasharray: 2, 2;\\n stroke: #81B1DB;\\n fill: #81B1DB; }\\n\\n.note {\\n stroke: rgba(255, 255, 255, 0.25);\\n fill: #fff5ad; }\\n\\n.noteText, .noteText > tspan {\\n fill: #1f2020;\\n stroke: none; }\\n\\n.activation0 {\\n fill: #474949;\\n stroke: #81B1DB; }\\n\\n.activation1 {\\n fill: #474949;\\n stroke: #81B1DB; }\\n\\n.activation2 {\\n fill: #474949;\\n stroke: #81B1DB; }\\n\\n/** Section styling */\\n.mermaid-main-font {\\n font-family: \\\"trebuchet ms\\\", verdana, arial;\\n font-family: var(--mermaid-font-family); }\\n\\n.section {\\n stroke: none;\\n opacity: 0.2; }\\n\\n.section0 {\\n fill: rgba(255, 255, 255, 0.3); }\\n\\n.section2 {\\n fill: #EAE8B9; }\\n\\n.section1,\\n.section3 {\\n fill: white;\\n opacity: 0.2; }\\n\\n.sectionTitle0 {\\n fill: #F9FFFE; }\\n\\n.sectionTitle1 {\\n fill: #F9FFFE; }\\n\\n.sectionTitle2 {\\n fill: #F9FFFE; }\\n\\n.sectionTitle3 {\\n fill: #F9FFFE; }\\n\\n.sectionTitle {\\n text-anchor: start;\\n font-size: 11px;\\n text-height: 14px;\\n font-family: 'trebuchet ms', verdana, arial;\\n font-family: var(--mermaid-font-family); }\\n\\n/* Grid and axis */\\n.grid .tick {\\n stroke: lightgrey;\\n opacity: 0.8;\\n shape-rendering: crispEdges; }\\n .grid .tick text {\\n font-family: 'trebuchet ms', verdana, arial;\\n font-family: var(--mermaid-font-family); }\\n\\n.grid path {\\n stroke-width: 0; }\\n\\n/* Today line */\\n.today {\\n fill: none;\\n stroke: #DB5757;\\n stroke-width: 2px; }\\n\\n/* Task styling */\\n/* Default task */\\n.task {\\n stroke-width: 2; }\\n\\n.taskText {\\n text-anchor: middle;\\n font-family: 'trebuchet ms', verdana, arial;\\n font-family: var(--mermaid-font-family); }\\n\\n.taskText:not([font-size]) {\\n font-size: 11px; }\\n\\n.taskTextOutsideRight {\\n fill: #fefefe;\\n text-anchor: start;\\n font-size: 11px;\\n font-family: 'trebuchet ms', verdana, arial;\\n font-family: var(--mermaid-font-family); }\\n\\n.taskTextOutsideLeft {\\n fill: #fefefe;\\n text-anchor: end;\\n font-size: 11px; }\\n\\n/* Special case clickable */\\n.task.clickable {\\n cursor: pointer; }\\n\\n.taskText.clickable {\\n cursor: pointer;\\n fill: #003163 !important;\\n font-weight: bold; }\\n\\n.taskTextOutsideLeft.clickable {\\n cursor: pointer;\\n fill: #003163 !important;\\n font-weight: bold; }\\n\\n.taskTextOutsideRight.clickable {\\n cursor: pointer;\\n fill: #003163 !important;\\n font-weight: bold; }\\n\\n/* Specific task settings for the sections*/\\n.taskText0,\\n.taskText1,\\n.taskText2,\\n.taskText3 {\\n fill: #fefefe; }\\n\\n.task0,\\n.task1,\\n.task2,\\n.task3 {\\n fill: #1f2020;\\n stroke: rgba(255, 255, 255, 0.5); }\\n\\n.taskTextOutside0,\\n.taskTextOutside2 {\\n fill: lightgrey; }\\n\\n.taskTextOutside1,\\n.taskTextOutside3 {\\n fill: lightgrey; }\\n\\n/* Active task */\\n.active0,\\n.active1,\\n.active2,\\n.active3 {\\n fill: #81B1DB;\\n stroke: rgba(255, 255, 255, 0.5); }\\n\\n.activeText0,\\n.activeText1,\\n.activeText2,\\n.activeText3 {\\n fill: #fefefe !important; }\\n\\n/* Completed task */\\n.done0,\\n.done1,\\n.done2,\\n.done3 {\\n stroke: grey;\\n fill: lightgrey;\\n stroke-width: 2; }\\n\\n.doneText0,\\n.doneText1,\\n.doneText2,\\n.doneText3 {\\n fill: #fefefe !important; }\\n\\n/* Tasks on the critical line */\\n.crit0,\\n.crit1,\\n.crit2,\\n.crit3 {\\n stroke: #E83737;\\n fill: #E83737;\\n stroke-width: 2; }\\n\\n.activeCrit0,\\n.activeCrit1,\\n.activeCrit2,\\n.activeCrit3 {\\n stroke: #E83737;\\n fill: #81B1DB;\\n stroke-width: 2; }\\n\\n.doneCrit0,\\n.doneCrit1,\\n.doneCrit2,\\n.doneCrit3 {\\n stroke: #E83737;\\n fill: lightgrey;\\n stroke-width: 2;\\n cursor: pointer;\\n shape-rendering: crispEdges; }\\n\\n.milestone {\\n transform: rotate(45deg) scale(0.8, 0.8); }\\n\\n.milestoneText {\\n font-style: italic; }\\n\\n.doneCritText0,\\n.doneCritText1,\\n.doneCritText2,\\n.doneCritText3 {\\n fill: #fefefe !important; }\\n\\n.activeCritText0,\\n.activeCritText1,\\n.activeCritText2,\\n.activeCritText3 {\\n fill: #fefefe !important; }\\n\\n.titleText {\\n text-anchor: middle;\\n font-size: 18px;\\n fill: #fefefe;\\n font-family: 'trebuchet ms', verdana, arial;\\n font-family: var(--mermaid-font-family); }\\n\\ng.classGroup text {\\n fill: #81B1DB;\\n stroke: none;\\n font-family: 'trebuchet ms', verdana, arial;\\n font-family: var(--mermaid-font-family);\\n font-size: 10px; }\\n g.classGroup text .title {\\n font-weight: bolder; }\\n\\ng.clickable {\\n cursor: pointer; }\\n\\ng.classGroup rect {\\n fill: #1f2020;\\n stroke: #81B1DB; }\\n\\ng.classGroup line {\\n stroke: #81B1DB;\\n stroke-width: 1; }\\n\\n.classLabel .box {\\n stroke: none;\\n stroke-width: 0;\\n fill: #1f2020;\\n opacity: 0.5; }\\n\\n.classLabel .label {\\n fill: #81B1DB;\\n font-size: 10px; }\\n\\n.relation {\\n stroke: #81B1DB;\\n stroke-width: 1;\\n fill: none; }\\n\\n.dashed-line {\\n stroke-dasharray: 3; }\\n\\n#compositionStart {\\n fill: #81B1DB;\\n stroke: #81B1DB;\\n stroke-width: 1; }\\n\\n#compositionEnd {\\n fill: #81B1DB;\\n stroke: #81B1DB;\\n stroke-width: 1; }\\n\\n#aggregationStart {\\n fill: #1f2020;\\n stroke: #81B1DB;\\n stroke-width: 1; }\\n\\n#aggregationEnd {\\n fill: #1f2020;\\n stroke: #81B1DB;\\n stroke-width: 1; }\\n\\n#dependencyStart {\\n fill: #81B1DB;\\n stroke: #81B1DB;\\n stroke-width: 1; }\\n\\n#dependencyEnd {\\n fill: #81B1DB;\\n stroke: #81B1DB;\\n stroke-width: 1; }\\n\\n#extensionStart {\\n fill: #81B1DB;\\n stroke: #81B1DB;\\n stroke-width: 1; }\\n\\n#extensionEnd {\\n fill: #81B1DB;\\n stroke: #81B1DB;\\n stroke-width: 1; }\\n\\n.commit-id,\\n.commit-msg,\\n.branch-label {\\n fill: lightgrey;\\n color: lightgrey;\\n font-family: 'trebuchet ms', verdana, arial;\\n font-family: var(--mermaid-font-family); }\\n\\n.pieTitleText {\\n text-anchor: middle;\\n font-size: 25px;\\n fill: #fefefe;\\n font-family: 'trebuchet ms', verdana, arial;\\n font-family: var(--mermaid-font-family); }\\n\\n.slice {\\n font-family: 'trebuchet ms', verdana, arial;\\n font-family: var(--mermaid-font-family); }\\n\\ng.stateGroup text {\\n fill: #81B1DB;\\n stroke: none;\\n font-size: 10px;\\n font-family: 'trebuchet ms', verdana, arial;\\n font-family: var(--mermaid-font-family); }\\n\\ng.stateGroup text {\\n fill: #81B1DB;\\n fill: #F9FFFE;\\n stroke: none;\\n font-size: 10px; }\\n\\ng.statediagram-cluster .cluster-label text {\\n fill: #F9FFFE; }\\n\\ng.stateGroup .state-title {\\n font-weight: bolder;\\n fill: #f4f4f4; }\\n\\ng.stateGroup rect {\\n fill: #1f2020;\\n stroke: #81B1DB; }\\n\\ng.stateGroup line {\\n stroke: #81B1DB;\\n stroke-width: 1; }\\n\\n.transition {\\n stroke: #81B1DB;\\n stroke-width: 1;\\n fill: none; }\\n\\n.stateGroup .composit {\\n fill: white;\\n border-bottom: 1px; }\\n\\n.stateGroup .alt-composit {\\n fill: #e0e0e0;\\n border-bottom: 1px; }\\n\\n.state-note {\\n stroke: rgba(255, 255, 255, 0.25);\\n fill: #fff5ad; }\\n .state-note text {\\n fill: black;\\n stroke: none;\\n font-size: 10px; }\\n\\n.stateLabel .box {\\n stroke: none;\\n stroke-width: 0;\\n fill: #1f2020;\\n opacity: 0.7; }\\n\\n.edgeLabel text {\\n fill: #333; }\\n\\n.stateLabel text {\\n fill: #f4f4f4;\\n font-size: 10px;\\n font-weight: bold;\\n font-family: 'trebuchet ms', verdana, arial;\\n font-family: var(--mermaid-font-family); }\\n\\n.node circle.state-start {\\n fill: black;\\n stroke: black; }\\n\\n.node circle.state-end {\\n fill: black;\\n stroke: white;\\n stroke-width: 1.5; }\\n\\n#statediagram-barbEnd {\\n fill: #81B1DB; }\\n\\n.statediagram-cluster rect {\\n fill: #1f2020;\\n stroke: #81B1DB;\\n stroke-width: 1px; }\\n\\n.statediagram-cluster rect.outer {\\n rx: 5px;\\n ry: 5px; }\\n\\n.statediagram-state .divider {\\n stroke: #81B1DB; }\\n\\n.statediagram-state .title-state {\\n rx: 5px;\\n ry: 5px; }\\n\\n.statediagram-cluster.statediagram-cluster .inner {\\n fill: white; }\\n\\n.statediagram-cluster.statediagram-cluster-alt .inner {\\n fill: #e0e0e0; }\\n\\n.statediagram-cluster .inner {\\n rx: 0;\\n ry: 0; }\\n\\n.statediagram-state rect.basic {\\n rx: 5px;\\n ry: 5px; }\\n\\n.statediagram-state rect.divider {\\n stroke-dasharray: 10,10;\\n fill: #efefef; }\\n\\n.note-edge {\\n stroke-dasharray: 5; }\\n\\n.statediagram-note rect {\\n fill: #fff5ad;\\n stroke: rgba(255, 255, 255, 0.25);\\n stroke-width: 1px;\\n rx: 0;\\n ry: 0; }\\n\\n:root {\\n --mermaid-font-family: '\\\"trebuchet ms\\\", verdana, arial';\\n --mermaid-font-family: \\\"Comic Sans MS\\\", \\\"Comic Sans\\\", cursive; }\\n\\n/* Classes common for multiple diagrams */\\n.error-icon {\\n fill: #a44141; }\\n\\n.error-text {\\n fill: #ddd;\\n stroke: #ddd; }\\n\\n.edge-thickness-normal {\\n stroke-width: 2px; }\\n\\n.edge-thickness-thick {\\n stroke-width: 3.5px; }\\n\\n.edge-pattern-solid {\\n stroke-dasharray: 0; }\\n\\n.edge-pattern-dashed {\\n stroke-dasharray: 3; }\\n\\n.edge-pattern-dotted {\\n stroke-dasharray: 2; }\\n\\n.marker {\\n fill: lightgrey; }\\n\\n.marker.cross {\\n stroke: lightgrey; }\\n\", \"\"]);\n\n","exports = module.exports = require(\"../../../node_modules/css-loader/dist/runtime/api.js\")(false);\n// Module\nexports.push([module.id, \"/* Flowchart variables */\\n/* Sequence Diagram variables */\\n/* Gantt chart variables */\\n/* state colors */\\n.label {\\n font-family: 'trebuchet ms', verdana, arial;\\n font-family: var(--mermaid-font-family);\\n fill: #333;\\n color: #333; }\\n\\n.label text {\\n fill: #333; }\\n\\n.node rect,\\n.node circle,\\n.node ellipse,\\n.node polygon,\\n.node path {\\n fill: #ECECFF;\\n stroke: #9370DB;\\n stroke-width: 1px; }\\n\\n.node .label {\\n text-align: center;\\n fill: #333; }\\n\\n.node.clickable {\\n cursor: pointer; }\\n\\n.arrowheadPath {\\n fill: #333333; }\\n\\n.edgePath .path {\\n stroke: #333333;\\n stroke-width: 1.5px; }\\n\\n.flowchart-link {\\n stroke: #333333;\\n fill: none; }\\n\\n.edgeLabel {\\n background-color: #e8e8e8;\\n text-align: center; }\\n .edgeLabel rect {\\n opacity: 0.9; }\\n .edgeLabel span {\\n color: #333; }\\n\\n.cluster rect {\\n fill: #ffffde;\\n stroke: #aaaa33;\\n stroke-width: 1px; }\\n\\n.cluster text {\\n fill: #333; }\\n\\ndiv.mermaidTooltip {\\n position: absolute;\\n text-align: center;\\n max-width: 200px;\\n padding: 2px;\\n font-family: 'trebuchet ms', verdana, arial;\\n font-family: var(--mermaid-font-family);\\n font-size: 12px;\\n background: #ffffde;\\n border: 1px solid #aaaa33;\\n border-radius: 2px;\\n pointer-events: none;\\n z-index: 100; }\\n\\n.actor {\\n stroke: #CCCCFF;\\n fill: #ECECFF; }\\n\\ntext.actor > tspan {\\n fill: black;\\n stroke: none; }\\n\\n.actor-line {\\n stroke: grey; }\\n\\n.messageLine0 {\\n stroke-width: 1.5;\\n stroke-dasharray: none;\\n stroke: #333; }\\n\\n.messageLine1 {\\n stroke-width: 1.5;\\n stroke-dasharray: 2, 2;\\n stroke: #333; }\\n\\n#arrowhead path {\\n fill: #333;\\n stroke: #333; }\\n\\n.sequenceNumber {\\n fill: white; }\\n\\n#sequencenumber {\\n fill: #333; }\\n\\n#crosshead path {\\n fill: #333;\\n stroke: #333; }\\n\\n.messageText {\\n fill: #333;\\n stroke: #333; }\\n\\n.labelBox {\\n stroke: #CCCCFF;\\n fill: #ECECFF; }\\n\\n.labelText, .labelText > tspan {\\n fill: black;\\n stroke: none; }\\n\\n.loopText, .loopText > tspan {\\n fill: black;\\n stroke: none; }\\n\\n.loopLine {\\n stroke-width: 2px;\\n stroke-dasharray: 2, 2;\\n stroke: #CCCCFF;\\n fill: #CCCCFF; }\\n\\n.note {\\n stroke: #aaaa33;\\n fill: #fff5ad; }\\n\\n.noteText, .noteText > tspan {\\n fill: black;\\n stroke: none; }\\n\\n.activation0 {\\n fill: #f4f4f4;\\n stroke: #666; }\\n\\n.activation1 {\\n fill: #f4f4f4;\\n stroke: #666; }\\n\\n.activation2 {\\n fill: #f4f4f4;\\n stroke: #666; }\\n\\n/** Section styling */\\n.mermaid-main-font {\\n font-family: \\\"trebuchet ms\\\", verdana, arial;\\n font-family: var(--mermaid-font-family); }\\n\\n.section {\\n stroke: none;\\n opacity: 0.2; }\\n\\n.section0 {\\n fill: rgba(102, 102, 255, 0.49); }\\n\\n.section2 {\\n fill: #fff400; }\\n\\n.section1,\\n.section3 {\\n fill: white;\\n opacity: 0.2; }\\n\\n.sectionTitle0 {\\n fill: #333; }\\n\\n.sectionTitle1 {\\n fill: #333; }\\n\\n.sectionTitle2 {\\n fill: #333; }\\n\\n.sectionTitle3 {\\n fill: #333; }\\n\\n.sectionTitle {\\n text-anchor: start;\\n font-size: 11px;\\n text-height: 14px;\\n font-family: 'trebuchet ms', verdana, arial;\\n font-family: var(--mermaid-font-family); }\\n\\n/* Grid and axis */\\n.grid .tick {\\n stroke: lightgrey;\\n opacity: 0.8;\\n shape-rendering: crispEdges; }\\n .grid .tick text {\\n font-family: 'trebuchet ms', verdana, arial;\\n font-family: var(--mermaid-font-family); }\\n\\n.grid path {\\n stroke-width: 0; }\\n\\n/* Today line */\\n.today {\\n fill: none;\\n stroke: red;\\n stroke-width: 2px; }\\n\\n/* Task styling */\\n/* Default task */\\n.task {\\n stroke-width: 2; }\\n\\n.taskText {\\n text-anchor: middle;\\n font-family: 'trebuchet ms', verdana, arial;\\n font-family: var(--mermaid-font-family); }\\n\\n.taskText:not([font-size]) {\\n font-size: 11px; }\\n\\n.taskTextOutsideRight {\\n fill: black;\\n text-anchor: start;\\n font-size: 11px;\\n font-family: 'trebuchet ms', verdana, arial;\\n font-family: var(--mermaid-font-family); }\\n\\n.taskTextOutsideLeft {\\n fill: black;\\n text-anchor: end;\\n font-size: 11px; }\\n\\n/* Special case clickable */\\n.task.clickable {\\n cursor: pointer; }\\n\\n.taskText.clickable {\\n cursor: pointer;\\n fill: #003163 !important;\\n font-weight: bold; }\\n\\n.taskTextOutsideLeft.clickable {\\n cursor: pointer;\\n fill: #003163 !important;\\n font-weight: bold; }\\n\\n.taskTextOutsideRight.clickable {\\n cursor: pointer;\\n fill: #003163 !important;\\n font-weight: bold; }\\n\\n/* Specific task settings for the sections*/\\n.taskText0,\\n.taskText1,\\n.taskText2,\\n.taskText3 {\\n fill: white; }\\n\\n.task0,\\n.task1,\\n.task2,\\n.task3 {\\n fill: #8a90dd;\\n stroke: #534fbc; }\\n\\n.taskTextOutside0,\\n.taskTextOutside2 {\\n fill: black; }\\n\\n.taskTextOutside1,\\n.taskTextOutside3 {\\n fill: black; }\\n\\n/* Active task */\\n.active0,\\n.active1,\\n.active2,\\n.active3 {\\n fill: #bfc7ff;\\n stroke: #534fbc; }\\n\\n.activeText0,\\n.activeText1,\\n.activeText2,\\n.activeText3 {\\n fill: black !important; }\\n\\n/* Completed task */\\n.done0,\\n.done1,\\n.done2,\\n.done3 {\\n stroke: grey;\\n fill: lightgrey;\\n stroke-width: 2; }\\n\\n.doneText0,\\n.doneText1,\\n.doneText2,\\n.doneText3 {\\n fill: black !important; }\\n\\n/* Tasks on the critical line */\\n.crit0,\\n.crit1,\\n.crit2,\\n.crit3 {\\n stroke: #ff8888;\\n fill: red;\\n stroke-width: 2; }\\n\\n.activeCrit0,\\n.activeCrit1,\\n.activeCrit2,\\n.activeCrit3 {\\n stroke: #ff8888;\\n fill: #bfc7ff;\\n stroke-width: 2; }\\n\\n.doneCrit0,\\n.doneCrit1,\\n.doneCrit2,\\n.doneCrit3 {\\n stroke: #ff8888;\\n fill: lightgrey;\\n stroke-width: 2;\\n cursor: pointer;\\n shape-rendering: crispEdges; }\\n\\n.milestone {\\n transform: rotate(45deg) scale(0.8, 0.8); }\\n\\n.milestoneText {\\n font-style: italic; }\\n\\n.doneCritText0,\\n.doneCritText1,\\n.doneCritText2,\\n.doneCritText3 {\\n fill: black !important; }\\n\\n.activeCritText0,\\n.activeCritText1,\\n.activeCritText2,\\n.activeCritText3 {\\n fill: black !important; }\\n\\n.titleText {\\n text-anchor: middle;\\n font-size: 18px;\\n fill: black;\\n font-family: 'trebuchet ms', verdana, arial;\\n font-family: var(--mermaid-font-family); }\\n\\ng.classGroup text {\\n fill: #9370DB;\\n stroke: none;\\n font-family: 'trebuchet ms', verdana, arial;\\n font-family: var(--mermaid-font-family);\\n font-size: 10px; }\\n g.classGroup text .title {\\n font-weight: bolder; }\\n\\ng.clickable {\\n cursor: pointer; }\\n\\ng.classGroup rect {\\n fill: #ECECFF;\\n stroke: #9370DB; }\\n\\ng.classGroup line {\\n stroke: #9370DB;\\n stroke-width: 1; }\\n\\n.classLabel .box {\\n stroke: none;\\n stroke-width: 0;\\n fill: #ECECFF;\\n opacity: 0.5; }\\n\\n.classLabel .label {\\n fill: #9370DB;\\n font-size: 10px; }\\n\\n.relation {\\n stroke: #9370DB;\\n stroke-width: 1;\\n fill: none; }\\n\\n.dashed-line {\\n stroke-dasharray: 3; }\\n\\n#compositionStart {\\n fill: #9370DB;\\n stroke: #9370DB;\\n stroke-width: 1; }\\n\\n#compositionEnd {\\n fill: #9370DB;\\n stroke: #9370DB;\\n stroke-width: 1; }\\n\\n#aggregationStart {\\n fill: #ECECFF;\\n stroke: #9370DB;\\n stroke-width: 1; }\\n\\n#aggregationEnd {\\n fill: #ECECFF;\\n stroke: #9370DB;\\n stroke-width: 1; }\\n\\n#dependencyStart {\\n fill: #9370DB;\\n stroke: #9370DB;\\n stroke-width: 1; }\\n\\n#dependencyEnd {\\n fill: #9370DB;\\n stroke: #9370DB;\\n stroke-width: 1; }\\n\\n#extensionStart {\\n fill: #9370DB;\\n stroke: #9370DB;\\n stroke-width: 1; }\\n\\n#extensionEnd {\\n fill: #9370DB;\\n stroke: #9370DB;\\n stroke-width: 1; }\\n\\n.commit-id,\\n.commit-msg,\\n.branch-label {\\n fill: lightgrey;\\n color: lightgrey;\\n font-family: 'trebuchet ms', verdana, arial;\\n font-family: var(--mermaid-font-family); }\\n\\n.pieTitleText {\\n text-anchor: middle;\\n font-size: 25px;\\n fill: black;\\n font-family: 'trebuchet ms', verdana, arial;\\n font-family: var(--mermaid-font-family); }\\n\\n.slice {\\n font-family: 'trebuchet ms', verdana, arial;\\n font-family: var(--mermaid-font-family); }\\n\\ng.stateGroup text {\\n fill: #9370DB;\\n stroke: none;\\n font-size: 10px;\\n font-family: 'trebuchet ms', verdana, arial;\\n font-family: var(--mermaid-font-family); }\\n\\ng.stateGroup text {\\n fill: #9370DB;\\n fill: #333;\\n stroke: none;\\n font-size: 10px; }\\n\\ng.statediagram-cluster .cluster-label text {\\n fill: #333; }\\n\\ng.stateGroup .state-title {\\n font-weight: bolder;\\n fill: black; }\\n\\ng.stateGroup rect {\\n fill: #ECECFF;\\n stroke: #9370DB; }\\n\\ng.stateGroup line {\\n stroke: #9370DB;\\n stroke-width: 1; }\\n\\n.transition {\\n stroke: #9370DB;\\n stroke-width: 1;\\n fill: none; }\\n\\n.stateGroup .composit {\\n fill: white;\\n border-bottom: 1px; }\\n\\n.stateGroup .alt-composit {\\n fill: #e0e0e0;\\n border-bottom: 1px; }\\n\\n.state-note {\\n stroke: #aaaa33;\\n fill: #fff5ad; }\\n .state-note text {\\n fill: black;\\n stroke: none;\\n font-size: 10px; }\\n\\n.stateLabel .box {\\n stroke: none;\\n stroke-width: 0;\\n fill: #ECECFF;\\n opacity: 0.7; }\\n\\n.edgeLabel text {\\n fill: #333; }\\n\\n.stateLabel text {\\n fill: black;\\n font-size: 10px;\\n font-weight: bold;\\n font-family: 'trebuchet ms', verdana, arial;\\n font-family: var(--mermaid-font-family); }\\n\\n.node circle.state-start {\\n fill: black;\\n stroke: black; }\\n\\n.node circle.state-end {\\n fill: black;\\n stroke: white;\\n stroke-width: 1.5; }\\n\\n#statediagram-barbEnd {\\n fill: #9370DB; }\\n\\n.statediagram-cluster rect {\\n fill: #ECECFF;\\n stroke: #9370DB;\\n stroke-width: 1px; }\\n\\n.statediagram-cluster rect.outer {\\n rx: 5px;\\n ry: 5px; }\\n\\n.statediagram-state .divider {\\n stroke: #9370DB; }\\n\\n.statediagram-state .title-state {\\n rx: 5px;\\n ry: 5px; }\\n\\n.statediagram-cluster.statediagram-cluster .inner {\\n fill: white; }\\n\\n.statediagram-cluster.statediagram-cluster-alt .inner {\\n fill: #e0e0e0; }\\n\\n.statediagram-cluster .inner {\\n rx: 0;\\n ry: 0; }\\n\\n.statediagram-state rect.basic {\\n rx: 5px;\\n ry: 5px; }\\n\\n.statediagram-state rect.divider {\\n stroke-dasharray: 10,10;\\n fill: #efefef; }\\n\\n.note-edge {\\n stroke-dasharray: 5; }\\n\\n.statediagram-note rect {\\n fill: #fff5ad;\\n stroke: #aaaa33;\\n stroke-width: 1px;\\n rx: 0;\\n ry: 0; }\\n\\n:root {\\n --mermaid-font-family: '\\\"trebuchet ms\\\", verdana, arial';\\n --mermaid-font-family: \\\"Comic Sans MS\\\", \\\"Comic Sans\\\", cursive; }\\n\\n/* Classes common for multiple diagrams */\\n.error-icon {\\n fill: #552222; }\\n\\n.error-text {\\n fill: #552222;\\n stroke: #552222; }\\n\\n.edge-thickness-normal {\\n stroke-width: 2px; }\\n\\n.edge-thickness-thick {\\n stroke-width: 3.5px; }\\n\\n.edge-pattern-solid {\\n stroke-dasharray: 0; }\\n\\n.edge-pattern-dashed {\\n stroke-dasharray: 3; }\\n\\n.edge-pattern-dotted {\\n stroke-dasharray: 2; }\\n\\n.marker {\\n fill: #333333; }\\n\\n.marker.cross {\\n stroke: #333333; }\\n\", \"\"]);\n\n","exports = module.exports = require(\"../../../node_modules/css-loader/dist/runtime/api.js\")(false);\n// Module\nexports.push([module.id, \"/* Flowchart variables */\\n/* Sequence Diagram variables */\\n/* Gantt chart variables */\\n/* state colors */\\n.label {\\n font-family: 'trebuchet ms', verdana, arial;\\n font-family: var(--mermaid-font-family);\\n fill: #333;\\n color: #333; }\\n\\n.label text {\\n fill: #333; }\\n\\n.node rect,\\n.node circle,\\n.node ellipse,\\n.node polygon,\\n.node path {\\n fill: #cde498;\\n stroke: #13540c;\\n stroke-width: 1px; }\\n\\n.node .label {\\n text-align: center;\\n fill: #333; }\\n\\n.node.clickable {\\n cursor: pointer; }\\n\\n.arrowheadPath {\\n fill: green; }\\n\\n.edgePath .path {\\n stroke: green;\\n stroke-width: 1.5px; }\\n\\n.flowchart-link {\\n stroke: green;\\n fill: none; }\\n\\n.edgeLabel {\\n background-color: #e8e8e8;\\n text-align: center; }\\n .edgeLabel rect {\\n opacity: 0.9; }\\n .edgeLabel span {\\n color: #333; }\\n\\n.cluster rect {\\n fill: #cdffb2;\\n stroke: #6eaa49;\\n stroke-width: 1px; }\\n\\n.cluster text {\\n fill: #333; }\\n\\ndiv.mermaidTooltip {\\n position: absolute;\\n text-align: center;\\n max-width: 200px;\\n padding: 2px;\\n font-family: 'trebuchet ms', verdana, arial;\\n font-family: var(--mermaid-font-family);\\n font-size: 12px;\\n background: #cdffb2;\\n border: 1px solid #6eaa49;\\n border-radius: 2px;\\n pointer-events: none;\\n z-index: 100; }\\n\\n.actor {\\n stroke: #13540c;\\n fill: #cde498; }\\n\\ntext.actor > tspan {\\n fill: black;\\n stroke: none; }\\n\\n.actor-line {\\n stroke: grey; }\\n\\n.messageLine0 {\\n stroke-width: 1.5;\\n stroke-dasharray: none;\\n stroke: #333; }\\n\\n.messageLine1 {\\n stroke-width: 1.5;\\n stroke-dasharray: 2, 2;\\n stroke: #333; }\\n\\n#arrowhead path {\\n fill: #333;\\n stroke: #333; }\\n\\n.sequenceNumber {\\n fill: white; }\\n\\n#sequencenumber {\\n fill: #333; }\\n\\n#crosshead path {\\n fill: #333;\\n stroke: #333; }\\n\\n.messageText {\\n fill: #333;\\n stroke: #333; }\\n\\n.labelBox {\\n stroke: #326932;\\n fill: #cde498; }\\n\\n.labelText, .labelText > tspan {\\n fill: black;\\n stroke: none; }\\n\\n.loopText, .loopText > tspan {\\n fill: black;\\n stroke: none; }\\n\\n.loopLine {\\n stroke-width: 2px;\\n stroke-dasharray: 2, 2;\\n stroke: #326932;\\n fill: #326932; }\\n\\n.note {\\n stroke: #6eaa49;\\n fill: #fff5ad; }\\n\\n.noteText, .noteText > tspan {\\n fill: black;\\n stroke: none; }\\n\\n.activation0 {\\n fill: #f4f4f4;\\n stroke: #666; }\\n\\n.activation1 {\\n fill: #f4f4f4;\\n stroke: #666; }\\n\\n.activation2 {\\n fill: #f4f4f4;\\n stroke: #666; }\\n\\n/** Section styling */\\n.mermaid-main-font {\\n font-family: \\\"trebuchet ms\\\", verdana, arial;\\n font-family: var(--mermaid-font-family); }\\n\\n.section {\\n stroke: none;\\n opacity: 0.2; }\\n\\n.section0 {\\n fill: #6eaa49; }\\n\\n.section2 {\\n fill: #6eaa49; }\\n\\n.section1,\\n.section3 {\\n fill: white;\\n opacity: 0.2; }\\n\\n.sectionTitle0 {\\n fill: #333; }\\n\\n.sectionTitle1 {\\n fill: #333; }\\n\\n.sectionTitle2 {\\n fill: #333; }\\n\\n.sectionTitle3 {\\n fill: #333; }\\n\\n.sectionTitle {\\n text-anchor: start;\\n font-size: 11px;\\n text-height: 14px;\\n font-family: 'trebuchet ms', verdana, arial;\\n font-family: var(--mermaid-font-family); }\\n\\n/* Grid and axis */\\n.grid .tick {\\n stroke: lightgrey;\\n opacity: 0.8;\\n shape-rendering: crispEdges; }\\n .grid .tick text {\\n font-family: 'trebuchet ms', verdana, arial;\\n font-family: var(--mermaid-font-family); }\\n\\n.grid path {\\n stroke-width: 0; }\\n\\n/* Today line */\\n.today {\\n fill: none;\\n stroke: red;\\n stroke-width: 2px; }\\n\\n/* Task styling */\\n/* Default task */\\n.task {\\n stroke-width: 2; }\\n\\n.taskText {\\n text-anchor: middle;\\n font-family: 'trebuchet ms', verdana, arial;\\n font-family: var(--mermaid-font-family); }\\n\\n.taskText:not([font-size]) {\\n font-size: 11px; }\\n\\n.taskTextOutsideRight {\\n fill: black;\\n text-anchor: start;\\n font-size: 11px;\\n font-family: 'trebuchet ms', verdana, arial;\\n font-family: var(--mermaid-font-family); }\\n\\n.taskTextOutsideLeft {\\n fill: black;\\n text-anchor: end;\\n font-size: 11px; }\\n\\n/* Special case clickable */\\n.task.clickable {\\n cursor: pointer; }\\n\\n.taskText.clickable {\\n cursor: pointer;\\n fill: #003163 !important;\\n font-weight: bold; }\\n\\n.taskTextOutsideLeft.clickable {\\n cursor: pointer;\\n fill: #003163 !important;\\n font-weight: bold; }\\n\\n.taskTextOutsideRight.clickable {\\n cursor: pointer;\\n fill: #003163 !important;\\n font-weight: bold; }\\n\\n/* Specific task settings for the sections*/\\n.taskText0,\\n.taskText1,\\n.taskText2,\\n.taskText3 {\\n fill: white; }\\n\\n.task0,\\n.task1,\\n.task2,\\n.task3 {\\n fill: #487e3a;\\n stroke: #13540c; }\\n\\n.taskTextOutside0,\\n.taskTextOutside2 {\\n fill: black; }\\n\\n.taskTextOutside1,\\n.taskTextOutside3 {\\n fill: black; }\\n\\n/* Active task */\\n.active0,\\n.active1,\\n.active2,\\n.active3 {\\n fill: #cde498;\\n stroke: #13540c; }\\n\\n.activeText0,\\n.activeText1,\\n.activeText2,\\n.activeText3 {\\n fill: black !important; }\\n\\n/* Completed task */\\n.done0,\\n.done1,\\n.done2,\\n.done3 {\\n stroke: grey;\\n fill: lightgrey;\\n stroke-width: 2; }\\n\\n.doneText0,\\n.doneText1,\\n.doneText2,\\n.doneText3 {\\n fill: black !important; }\\n\\n/* Tasks on the critical line */\\n.crit0,\\n.crit1,\\n.crit2,\\n.crit3 {\\n stroke: #ff8888;\\n fill: red;\\n stroke-width: 2; }\\n\\n.activeCrit0,\\n.activeCrit1,\\n.activeCrit2,\\n.activeCrit3 {\\n stroke: #ff8888;\\n fill: #cde498;\\n stroke-width: 2; }\\n\\n.doneCrit0,\\n.doneCrit1,\\n.doneCrit2,\\n.doneCrit3 {\\n stroke: #ff8888;\\n fill: lightgrey;\\n stroke-width: 2;\\n cursor: pointer;\\n shape-rendering: crispEdges; }\\n\\n.milestone {\\n transform: rotate(45deg) scale(0.8, 0.8); }\\n\\n.milestoneText {\\n font-style: italic; }\\n\\n.doneCritText0,\\n.doneCritText1,\\n.doneCritText2,\\n.doneCritText3 {\\n fill: black !important; }\\n\\n.activeCritText0,\\n.activeCritText1,\\n.activeCritText2,\\n.activeCritText3 {\\n fill: black !important; }\\n\\n.titleText {\\n text-anchor: middle;\\n font-size: 18px;\\n fill: black;\\n font-family: 'trebuchet ms', verdana, arial;\\n font-family: var(--mermaid-font-family); }\\n\\ng.classGroup text {\\n fill: #13540c;\\n stroke: none;\\n font-family: 'trebuchet ms', verdana, arial;\\n font-family: var(--mermaid-font-family);\\n font-size: 10px; }\\n g.classGroup text .title {\\n font-weight: bolder; }\\n\\ng.clickable {\\n cursor: pointer; }\\n\\ng.classGroup rect {\\n fill: #cde498;\\n stroke: #13540c; }\\n\\ng.classGroup line {\\n stroke: #13540c;\\n stroke-width: 1; }\\n\\n.classLabel .box {\\n stroke: none;\\n stroke-width: 0;\\n fill: #cde498;\\n opacity: 0.5; }\\n\\n.classLabel .label {\\n fill: #13540c;\\n font-size: 10px; }\\n\\n.relation {\\n stroke: #13540c;\\n stroke-width: 1;\\n fill: none; }\\n\\n.dashed-line {\\n stroke-dasharray: 3; }\\n\\n#compositionStart {\\n fill: #13540c;\\n stroke: #13540c;\\n stroke-width: 1; }\\n\\n#compositionEnd {\\n fill: #13540c;\\n stroke: #13540c;\\n stroke-width: 1; }\\n\\n#aggregationStart {\\n fill: #cde498;\\n stroke: #13540c;\\n stroke-width: 1; }\\n\\n#aggregationEnd {\\n fill: #cde498;\\n stroke: #13540c;\\n stroke-width: 1; }\\n\\n#dependencyStart {\\n fill: #13540c;\\n stroke: #13540c;\\n stroke-width: 1; }\\n\\n#dependencyEnd {\\n fill: #13540c;\\n stroke: #13540c;\\n stroke-width: 1; }\\n\\n#extensionStart {\\n fill: #13540c;\\n stroke: #13540c;\\n stroke-width: 1; }\\n\\n#extensionEnd {\\n fill: #13540c;\\n stroke: #13540c;\\n stroke-width: 1; }\\n\\n.commit-id,\\n.commit-msg,\\n.branch-label {\\n fill: lightgrey;\\n color: lightgrey;\\n font-family: 'trebuchet ms', verdana, arial;\\n font-family: var(--mermaid-font-family); }\\n\\n.pieTitleText {\\n text-anchor: middle;\\n font-size: 25px;\\n fill: black;\\n font-family: 'trebuchet ms', verdana, arial;\\n font-family: var(--mermaid-font-family); }\\n\\n.slice {\\n font-family: 'trebuchet ms', verdana, arial;\\n font-family: var(--mermaid-font-family); }\\n\\ng.stateGroup text {\\n fill: #13540c;\\n stroke: none;\\n font-size: 10px;\\n font-family: 'trebuchet ms', verdana, arial;\\n font-family: var(--mermaid-font-family); }\\n\\ng.stateGroup text {\\n fill: #13540c;\\n fill: #333;\\n stroke: none;\\n font-size: 10px; }\\n\\ng.statediagram-cluster .cluster-label text {\\n fill: #333; }\\n\\ng.stateGroup .state-title {\\n font-weight: bolder;\\n fill: black; }\\n\\ng.stateGroup rect {\\n fill: #cde498;\\n stroke: #13540c; }\\n\\ng.stateGroup line {\\n stroke: #13540c;\\n stroke-width: 1; }\\n\\n.transition {\\n stroke: #13540c;\\n stroke-width: 1;\\n fill: none; }\\n\\n.stateGroup .composit {\\n fill: white;\\n border-bottom: 1px; }\\n\\n.stateGroup .alt-composit {\\n fill: #e0e0e0;\\n border-bottom: 1px; }\\n\\n.state-note {\\n stroke: #6eaa49;\\n fill: #fff5ad; }\\n .state-note text {\\n fill: black;\\n stroke: none;\\n font-size: 10px; }\\n\\n.stateLabel .box {\\n stroke: none;\\n stroke-width: 0;\\n fill: #cde498;\\n opacity: 0.7; }\\n\\n.edgeLabel text {\\n fill: #333; }\\n\\n.stateLabel text {\\n fill: black;\\n font-size: 10px;\\n font-weight: bold;\\n font-family: 'trebuchet ms', verdana, arial;\\n font-family: var(--mermaid-font-family); }\\n\\n.node circle.state-start {\\n fill: black;\\n stroke: black; }\\n\\n.node circle.state-end {\\n fill: black;\\n stroke: white;\\n stroke-width: 1.5; }\\n\\n#statediagram-barbEnd {\\n fill: #13540c; }\\n\\n.statediagram-cluster rect {\\n fill: #cde498;\\n stroke: #13540c;\\n stroke-width: 1px; }\\n\\n.statediagram-cluster rect.outer {\\n rx: 5px;\\n ry: 5px; }\\n\\n.statediagram-state .divider {\\n stroke: #13540c; }\\n\\n.statediagram-state .title-state {\\n rx: 5px;\\n ry: 5px; }\\n\\n.statediagram-cluster.statediagram-cluster .inner {\\n fill: white; }\\n\\n.statediagram-cluster.statediagram-cluster-alt .inner {\\n fill: #e0e0e0; }\\n\\n.statediagram-cluster .inner {\\n rx: 0;\\n ry: 0; }\\n\\n.statediagram-state rect.basic {\\n rx: 5px;\\n ry: 5px; }\\n\\n.statediagram-state rect.divider {\\n stroke-dasharray: 10,10;\\n fill: #efefef; }\\n\\n.note-edge {\\n stroke-dasharray: 5; }\\n\\n.statediagram-note rect {\\n fill: #fff5ad;\\n stroke: #6eaa49;\\n stroke-width: 1px;\\n rx: 0;\\n ry: 0; }\\n\\n:root {\\n --mermaid-font-family: '\\\"trebuchet ms\\\", verdana, arial';\\n --mermaid-font-family: \\\"Comic Sans MS\\\", \\\"Comic Sans\\\", cursive; }\\n\\n/* Classes common for multiple diagrams */\\n.error-icon {\\n fill: #552222; }\\n\\n.error-text {\\n fill: #552222;\\n stroke: #552222; }\\n\\n.edge-thickness-normal {\\n stroke-width: 2px; }\\n\\n.edge-thickness-thick {\\n stroke-width: 3.5px; }\\n\\n.edge-pattern-solid {\\n stroke-dasharray: 0; }\\n\\n.edge-pattern-dashed {\\n stroke-dasharray: 3; }\\n\\n.edge-pattern-dotted {\\n stroke-dasharray: 2; }\\n\\n.marker {\\n fill: green; }\\n\\n.marker.cross {\\n stroke: green; }\\n\", \"\"]);\n\n","exports = module.exports = require(\"../../../node_modules/css-loader/dist/runtime/api.js\")(false);\n// Module\nexports.push([module.id, \"/* Flowchart variables */\\n/* Sequence Diagram variables */\\n/* Gantt chart variables */\\n/* state colors */\\n.label {\\n font-family: 'trebuchet ms', verdana, arial;\\n font-family: var(--mermaid-font-family);\\n fill: #333;\\n color: #333; }\\n\\n.label text {\\n fill: #333; }\\n\\n.node rect,\\n.node circle,\\n.node ellipse,\\n.node polygon,\\n.node path {\\n fill: #eee;\\n stroke: #999;\\n stroke-width: 1px; }\\n\\n.node .label {\\n text-align: center;\\n fill: #333; }\\n\\n.node.clickable {\\n cursor: pointer; }\\n\\n.arrowheadPath {\\n fill: #333333; }\\n\\n.edgePath .path {\\n stroke: #666;\\n stroke-width: 1.5px; }\\n\\n.flowchart-link {\\n stroke: #666;\\n fill: none; }\\n\\n.edgeLabel {\\n background-color: white;\\n text-align: center; }\\n .edgeLabel rect {\\n opacity: 0.9; }\\n .edgeLabel span {\\n color: #333; }\\n\\n.cluster rect {\\n fill: #eaf2fb;\\n stroke: #26a;\\n stroke-width: 1px; }\\n\\n.cluster text {\\n fill: #333; }\\n\\ndiv.mermaidTooltip {\\n position: absolute;\\n text-align: center;\\n max-width: 200px;\\n padding: 2px;\\n font-family: 'trebuchet ms', verdana, arial;\\n font-family: var(--mermaid-font-family);\\n font-size: 12px;\\n background: #eaf2fb;\\n border: 1px solid #26a;\\n border-radius: 2px;\\n pointer-events: none;\\n z-index: 100; }\\n\\n.actor {\\n stroke: #999;\\n fill: #eee; }\\n\\ntext.actor > tspan {\\n fill: #333;\\n stroke: none; }\\n\\n.actor-line {\\n stroke: #666; }\\n\\n.messageLine0 {\\n stroke-width: 1.5;\\n stroke-dasharray: none;\\n stroke: #333; }\\n\\n.messageLine1 {\\n stroke-width: 1.5;\\n stroke-dasharray: 2, 2;\\n stroke: #333; }\\n\\n#arrowhead path {\\n fill: #333;\\n stroke: #333; }\\n\\n.sequenceNumber {\\n fill: white; }\\n\\n#sequencenumber {\\n fill: #333; }\\n\\n#crosshead path {\\n fill: #333;\\n stroke: #333; }\\n\\n.messageText {\\n fill: #333;\\n stroke: #333; }\\n\\n.labelBox {\\n stroke: #999;\\n fill: #eee; }\\n\\n.labelText, .labelText > tspan {\\n fill: #333;\\n stroke: none; }\\n\\n.loopText, .loopText > tspan {\\n fill: #333;\\n stroke: none; }\\n\\n.loopLine {\\n stroke-width: 2px;\\n stroke-dasharray: 2, 2;\\n stroke: #999;\\n fill: #999; }\\n\\n.note {\\n stroke: #777700;\\n fill: #ffa; }\\n\\n.noteText, .noteText > tspan {\\n fill: #333;\\n stroke: none; }\\n\\n.activation0 {\\n fill: #f4f4f4;\\n stroke: #666; }\\n\\n.activation1 {\\n fill: #f4f4f4;\\n stroke: #666; }\\n\\n.activation2 {\\n fill: #f4f4f4;\\n stroke: #666; }\\n\\n/** Section styling */\\n.mermaid-main-font {\\n font-family: \\\"trebuchet ms\\\", verdana, arial;\\n font-family: var(--mermaid-font-family); }\\n\\n.section {\\n stroke: none;\\n opacity: 0.2; }\\n\\n.section0 {\\n fill: #80b3e6; }\\n\\n.section2 {\\n fill: #80b3e6; }\\n\\n.section1,\\n.section3 {\\n fill: white;\\n opacity: 0.2; }\\n\\n.sectionTitle0 {\\n fill: #333; }\\n\\n.sectionTitle1 {\\n fill: #333; }\\n\\n.sectionTitle2 {\\n fill: #333; }\\n\\n.sectionTitle3 {\\n fill: #333; }\\n\\n.sectionTitle {\\n text-anchor: start;\\n font-size: 11px;\\n text-height: 14px;\\n font-family: 'trebuchet ms', verdana, arial;\\n font-family: var(--mermaid-font-family); }\\n\\n/* Grid and axis */\\n.grid .tick {\\n stroke: #e6e6e6;\\n opacity: 0.8;\\n shape-rendering: crispEdges; }\\n .grid .tick text {\\n font-family: 'trebuchet ms', verdana, arial;\\n font-family: var(--mermaid-font-family); }\\n\\n.grid path {\\n stroke-width: 0; }\\n\\n/* Today line */\\n.today {\\n fill: none;\\n stroke: #d42;\\n stroke-width: 2px; }\\n\\n/* Task styling */\\n/* Default task */\\n.task {\\n stroke-width: 2; }\\n\\n.taskText {\\n text-anchor: middle;\\n font-family: 'trebuchet ms', verdana, arial;\\n font-family: var(--mermaid-font-family); }\\n\\n.taskText:not([font-size]) {\\n font-size: 11px; }\\n\\n.taskTextOutsideRight {\\n fill: #333;\\n text-anchor: start;\\n font-size: 11px;\\n font-family: 'trebuchet ms', verdana, arial;\\n font-family: var(--mermaid-font-family); }\\n\\n.taskTextOutsideLeft {\\n fill: #333;\\n text-anchor: end;\\n font-size: 11px; }\\n\\n/* Special case clickable */\\n.task.clickable {\\n cursor: pointer; }\\n\\n.taskText.clickable {\\n cursor: pointer;\\n fill: #003163 !important;\\n font-weight: bold; }\\n\\n.taskTextOutsideLeft.clickable {\\n cursor: pointer;\\n fill: #003163 !important;\\n font-weight: bold; }\\n\\n.taskTextOutsideRight.clickable {\\n cursor: pointer;\\n fill: #003163 !important;\\n font-weight: bold; }\\n\\n/* Specific task settings for the sections*/\\n.taskText0,\\n.taskText1,\\n.taskText2,\\n.taskText3 {\\n fill: white; }\\n\\n.task0,\\n.task1,\\n.task2,\\n.task3 {\\n fill: #26a;\\n stroke: #1a4d80; }\\n\\n.taskTextOutside0,\\n.taskTextOutside2 {\\n fill: #333; }\\n\\n.taskTextOutside1,\\n.taskTextOutside3 {\\n fill: #333; }\\n\\n/* Active task */\\n.active0,\\n.active1,\\n.active2,\\n.active3 {\\n fill: #eee;\\n stroke: #1a4d80; }\\n\\n.activeText0,\\n.activeText1,\\n.activeText2,\\n.activeText3 {\\n fill: #333 !important; }\\n\\n/* Completed task */\\n.done0,\\n.done1,\\n.done2,\\n.done3 {\\n stroke: #666;\\n fill: #bbb;\\n stroke-width: 2; }\\n\\n.doneText0,\\n.doneText1,\\n.doneText2,\\n.doneText3 {\\n fill: #333 !important; }\\n\\n/* Tasks on the critical line */\\n.crit0,\\n.crit1,\\n.crit2,\\n.crit3 {\\n stroke: #b1361b;\\n fill: #d42;\\n stroke-width: 2; }\\n\\n.activeCrit0,\\n.activeCrit1,\\n.activeCrit2,\\n.activeCrit3 {\\n stroke: #b1361b;\\n fill: #eee;\\n stroke-width: 2; }\\n\\n.doneCrit0,\\n.doneCrit1,\\n.doneCrit2,\\n.doneCrit3 {\\n stroke: #b1361b;\\n fill: #bbb;\\n stroke-width: 2;\\n cursor: pointer;\\n shape-rendering: crispEdges; }\\n\\n.milestone {\\n transform: rotate(45deg) scale(0.8, 0.8); }\\n\\n.milestoneText {\\n font-style: italic; }\\n\\n.doneCritText0,\\n.doneCritText1,\\n.doneCritText2,\\n.doneCritText3 {\\n fill: #333 !important; }\\n\\n.activeCritText0,\\n.activeCritText1,\\n.activeCritText2,\\n.activeCritText3 {\\n fill: #333 !important; }\\n\\n.titleText {\\n text-anchor: middle;\\n font-size: 18px;\\n fill: #333;\\n font-family: 'trebuchet ms', verdana, arial;\\n font-family: var(--mermaid-font-family); }\\n\\ng.classGroup text {\\n fill: #999;\\n stroke: none;\\n font-family: 'trebuchet ms', verdana, arial;\\n font-family: var(--mermaid-font-family);\\n font-size: 10px; }\\n g.classGroup text .title {\\n font-weight: bolder; }\\n\\ng.clickable {\\n cursor: pointer; }\\n\\ng.classGroup rect {\\n fill: #eee;\\n stroke: #999; }\\n\\ng.classGroup line {\\n stroke: #999;\\n stroke-width: 1; }\\n\\n.classLabel .box {\\n stroke: none;\\n stroke-width: 0;\\n fill: #eee;\\n opacity: 0.5; }\\n\\n.classLabel .label {\\n fill: #999;\\n font-size: 10px; }\\n\\n.relation {\\n stroke: #999;\\n stroke-width: 1;\\n fill: none; }\\n\\n.dashed-line {\\n stroke-dasharray: 3; }\\n\\n#compositionStart {\\n fill: #999;\\n stroke: #999;\\n stroke-width: 1; }\\n\\n#compositionEnd {\\n fill: #999;\\n stroke: #999;\\n stroke-width: 1; }\\n\\n#aggregationStart {\\n fill: #eee;\\n stroke: #999;\\n stroke-width: 1; }\\n\\n#aggregationEnd {\\n fill: #eee;\\n stroke: #999;\\n stroke-width: 1; }\\n\\n#dependencyStart {\\n fill: #999;\\n stroke: #999;\\n stroke-width: 1; }\\n\\n#dependencyEnd {\\n fill: #999;\\n stroke: #999;\\n stroke-width: 1; }\\n\\n#extensionStart {\\n fill: #999;\\n stroke: #999;\\n stroke-width: 1; }\\n\\n#extensionEnd {\\n fill: #999;\\n stroke: #999;\\n stroke-width: 1; }\\n\\n.commit-id,\\n.commit-msg,\\n.branch-label {\\n fill: lightgrey;\\n color: lightgrey;\\n font-family: 'trebuchet ms', verdana, arial;\\n font-family: var(--mermaid-font-family); }\\n\\n.pieTitleText {\\n text-anchor: middle;\\n font-size: 25px;\\n fill: #333;\\n font-family: 'trebuchet ms', verdana, arial;\\n font-family: var(--mermaid-font-family); }\\n\\n.slice {\\n font-family: 'trebuchet ms', verdana, arial;\\n font-family: var(--mermaid-font-family); }\\n\\ng.stateGroup text {\\n fill: #999;\\n stroke: none;\\n font-size: 10px;\\n font-family: 'trebuchet ms', verdana, arial;\\n font-family: var(--mermaid-font-family); }\\n\\ng.stateGroup text {\\n fill: #999;\\n fill: #333;\\n stroke: none;\\n font-size: 10px; }\\n\\ng.statediagram-cluster .cluster-label text {\\n fill: #333; }\\n\\ng.stateGroup .state-title {\\n font-weight: bolder;\\n fill: black; }\\n\\ng.stateGroup rect {\\n fill: #eee;\\n stroke: #999; }\\n\\ng.stateGroup line {\\n stroke: #999;\\n stroke-width: 1; }\\n\\n.transition {\\n stroke: #999;\\n stroke-width: 1;\\n fill: none; }\\n\\n.stateGroup .composit {\\n fill: white;\\n border-bottom: 1px; }\\n\\n.stateGroup .alt-composit {\\n fill: #e0e0e0;\\n border-bottom: 1px; }\\n\\n.state-note {\\n stroke: #777700;\\n fill: #ffa; }\\n .state-note text {\\n fill: black;\\n stroke: none;\\n font-size: 10px; }\\n\\n.stateLabel .box {\\n stroke: none;\\n stroke-width: 0;\\n fill: #eee;\\n opacity: 0.7; }\\n\\n.edgeLabel text {\\n fill: #333; }\\n\\n.stateLabel text {\\n fill: black;\\n font-size: 10px;\\n font-weight: bold;\\n font-family: 'trebuchet ms', verdana, arial;\\n font-family: var(--mermaid-font-family); }\\n\\n.node circle.state-start {\\n fill: black;\\n stroke: black; }\\n\\n.node circle.state-end {\\n fill: black;\\n stroke: white;\\n stroke-width: 1.5; }\\n\\n#statediagram-barbEnd {\\n fill: #999; }\\n\\n.statediagram-cluster rect {\\n fill: #eee;\\n stroke: #999;\\n stroke-width: 1px; }\\n\\n.statediagram-cluster rect.outer {\\n rx: 5px;\\n ry: 5px; }\\n\\n.statediagram-state .divider {\\n stroke: #999; }\\n\\n.statediagram-state .title-state {\\n rx: 5px;\\n ry: 5px; }\\n\\n.statediagram-cluster.statediagram-cluster .inner {\\n fill: white; }\\n\\n.statediagram-cluster.statediagram-cluster-alt .inner {\\n fill: #e0e0e0; }\\n\\n.statediagram-cluster .inner {\\n rx: 0;\\n ry: 0; }\\n\\n.statediagram-state rect.basic {\\n rx: 5px;\\n ry: 5px; }\\n\\n.statediagram-state rect.divider {\\n stroke-dasharray: 10,10;\\n fill: #efefef; }\\n\\n.note-edge {\\n stroke-dasharray: 5; }\\n\\n.statediagram-note rect {\\n fill: #ffa;\\n stroke: #777700;\\n stroke-width: 1px;\\n rx: 0;\\n ry: 0; }\\n\\n:root {\\n --mermaid-font-family: '\\\"trebuchet ms\\\", verdana, arial';\\n --mermaid-font-family: \\\"Comic Sans MS\\\", \\\"Comic Sans\\\", cursive; }\\n\\n/* Classes common for multiple diagrams */\\n.error-icon {\\n fill: #552222; }\\n\\n.error-text {\\n fill: #552222;\\n stroke: #552222; }\\n\\n.edge-thickness-normal {\\n stroke-width: 2px; }\\n\\n.edge-thickness-thick {\\n stroke-width: 3.5px; }\\n\\n.edge-pattern-solid {\\n stroke-dasharray: 0; }\\n\\n.edge-pattern-dashed {\\n stroke-dasharray: 3; }\\n\\n.edge-pattern-dotted {\\n stroke-dasharray: 2; }\\n\\n.marker {\\n fill: #666; }\\n\\n.marker.cross {\\n stroke: #666; }\\n\", \"\"]);\n\n","\"use strict\";\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\nmodule.exports = function (useSourceMap) {\n var list = []; // return the list of modules as css string\n\n list.toString = function toString() {\n return this.map(function (item) {\n var content = cssWithMappingToString(item, useSourceMap);\n\n if (item[2]) {\n return '@media ' + item[2] + '{' + content + '}';\n } else {\n return content;\n }\n }).join('');\n }; // import a list of modules into the list\n\n\n list.i = function (modules, mediaQuery) {\n if (typeof modules === 'string') {\n modules = [[null, modules, '']];\n }\n\n var alreadyImportedModules = {};\n\n for (var i = 0; i < this.length; i++) {\n var id = this[i][0];\n\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n\n for (i = 0; i < modules.length; i++) {\n var item = modules[i]; // skip already imported module\n // this implementation is not 100% perfect for weird media query combinations\n // when a module is imported multiple times with different media queries.\n // I hope this will never occur (Hey this way we have smaller bundles)\n\n if (item[0] == null || !alreadyImportedModules[item[0]]) {\n if (mediaQuery && !item[2]) {\n item[2] = mediaQuery;\n } else if (mediaQuery) {\n item[2] = '(' + item[2] + ') and (' + mediaQuery + ')';\n }\n\n list.push(item);\n }\n }\n };\n\n return list;\n};\n\nfunction cssWithMappingToString(item, useSourceMap) {\n var content = item[1] || '';\n var cssMapping = item[3];\n\n if (!cssMapping) {\n return content;\n }\n\n if (useSourceMap && typeof btoa === 'function') {\n var sourceMapping = toComment(cssMapping);\n var sourceURLs = cssMapping.sources.map(function (source) {\n return '/*# sourceURL=' + cssMapping.sourceRoot + source + ' */';\n });\n return [content].concat(sourceURLs).concat([sourceMapping]).join('\\n');\n }\n\n return [content].join('\\n');\n} // Adapted from convert-source-map (MIT)\n\n\nfunction toComment(sourceMap) {\n // eslint-disable-next-line no-undef\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));\n var data = 'sourceMappingURL=data:application/json;charset=utf-8;base64,' + base64;\n return '/*# ' + data + ' */';\n}","// .dirname, .basename, and .extname methods are extracted from Node.js v8.11.1,\n// backported and transplited with Babel, with backwards-compat fixes\n\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// resolves . and .. elements in a path array with directory names there\n// must be no slashes, empty elements, or device names (c:\\) in the array\n// (so also no leading and trailing slashes - it does not distinguish\n// relative and absolute paths)\nfunction normalizeArray(parts, allowAboveRoot) {\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n for (var i = parts.length - 1; i >= 0; i--) {\n var last = parts[i];\n if (last === '.') {\n parts.splice(i, 1);\n } else if (last === '..') {\n parts.splice(i, 1);\n up++;\n } else if (up) {\n parts.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (allowAboveRoot) {\n for (; up--; up) {\n parts.unshift('..');\n }\n }\n\n return parts;\n}\n\n// path.resolve([from ...], to)\n// posix version\nexports.resolve = function() {\n var resolvedPath = '',\n resolvedAbsolute = false;\n\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path = (i >= 0) ? arguments[i] : process.cwd();\n\n // Skip empty and invalid entries\n if (typeof path !== 'string') {\n throw new TypeError('Arguments to path.resolve must be strings');\n } else if (!path) {\n continue;\n }\n\n resolvedPath = path + '/' + resolvedPath;\n resolvedAbsolute = path.charAt(0) === '/';\n }\n\n // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n\n // Normalize the path\n resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) {\n return !!p;\n }), !resolvedAbsolute).join('/');\n\n return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';\n};\n\n// path.normalize(path)\n// posix version\nexports.normalize = function(path) {\n var isAbsolute = exports.isAbsolute(path),\n trailingSlash = substr(path, -1) === '/';\n\n // Normalize the path\n path = normalizeArray(filter(path.split('/'), function(p) {\n return !!p;\n }), !isAbsolute).join('/');\n\n if (!path && !isAbsolute) {\n path = '.';\n }\n if (path && trailingSlash) {\n path += '/';\n }\n\n return (isAbsolute ? '/' : '') + path;\n};\n\n// posix version\nexports.isAbsolute = function(path) {\n return path.charAt(0) === '/';\n};\n\n// posix version\nexports.join = function() {\n var paths = Array.prototype.slice.call(arguments, 0);\n return exports.normalize(filter(paths, function(p, index) {\n if (typeof p !== 'string') {\n throw new TypeError('Arguments to path.join must be strings');\n }\n return p;\n }).join('/'));\n};\n\n\n// path.relative(from, to)\n// posix version\nexports.relative = function(from, to) {\n from = exports.resolve(from).substr(1);\n to = exports.resolve(to).substr(1);\n\n function trim(arr) {\n var start = 0;\n for (; start < arr.length; start++) {\n if (arr[start] !== '') break;\n }\n\n var end = arr.length - 1;\n for (; end >= 0; end--) {\n if (arr[end] !== '') break;\n }\n\n if (start > end) return [];\n return arr.slice(start, end - start + 1);\n }\n\n var fromParts = trim(from.split('/'));\n var toParts = trim(to.split('/'));\n\n var length = Math.min(fromParts.length, toParts.length);\n var samePartsLength = length;\n for (var i = 0; i < length; i++) {\n if (fromParts[i] !== toParts[i]) {\n samePartsLength = i;\n break;\n }\n }\n\n var outputParts = [];\n for (var i = samePartsLength; i < fromParts.length; i++) {\n outputParts.push('..');\n }\n\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n\n return outputParts.join('/');\n};\n\nexports.sep = '/';\nexports.delimiter = ':';\n\nexports.dirname = function (path) {\n if (typeof path !== 'string') path = path + '';\n if (path.length === 0) return '.';\n var code = path.charCodeAt(0);\n var hasRoot = code === 47 /*/*/;\n var end = -1;\n var matchedSlash = true;\n for (var i = path.length - 1; i >= 1; --i) {\n code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n if (!matchedSlash) {\n end = i;\n break;\n }\n } else {\n // We saw the first non-path separator\n matchedSlash = false;\n }\n }\n\n if (end === -1) return hasRoot ? '/' : '.';\n if (hasRoot && end === 1) {\n // return '//';\n // Backwards-compat fix:\n return '/';\n }\n return path.slice(0, end);\n};\n\nfunction basename(path) {\n if (typeof path !== 'string') path = path + '';\n\n var start = 0;\n var end = -1;\n var matchedSlash = true;\n var i;\n\n for (i = path.length - 1; i >= 0; --i) {\n if (path.charCodeAt(i) === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // path component\n matchedSlash = false;\n end = i + 1;\n }\n }\n\n if (end === -1) return '';\n return path.slice(start, end);\n}\n\n// Uses a mixed approach for backwards-compatibility, as ext behavior changed\n// in new Node.js versions, so only basename() above is backported here\nexports.basename = function (path, ext) {\n var f = basename(path);\n if (ext && f.substr(-1 * ext.length) === ext) {\n f = f.substr(0, f.length - ext.length);\n }\n return f;\n};\n\nexports.extname = function (path) {\n if (typeof path !== 'string') path = path + '';\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n var preDotState = 0;\n for (var i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46 /*.*/) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1)\n startDot = i;\n else if (preDotState !== 1)\n preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (startDot === -1 || end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n return '';\n }\n return path.slice(startDot, end);\n};\n\nfunction filter (xs, f) {\n if (xs.filter) return xs.filter(f);\n var res = [];\n for (var i = 0; i < xs.length; i++) {\n if (f(xs[i], i, xs)) res.push(xs[i]);\n }\n return res;\n}\n\n// String.prototype.substr - negative index don't work in IE8\nvar substr = 'ab'.substr(-1) === 'b'\n ? function (str, start, len) { return str.substr(start, len) }\n : function (str, start, len) {\n if (start < 0) start = str.length + start;\n return str.substr(start, len);\n }\n;\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","import { assignWithDepth } from './utils';\nimport { logger } from './logger';\n\n/**\n * **Configuration methods in Mermaid version 8.6.0 have been updated, to learn more[[click here](8.6.0_docs.md)].**\n *\n * ## **What follows are config instructions for older versions**\n * These are the default options which can be overridden with the initialization call like so:\n * **Example 1:**\n *
\n * mermaid.initialize({\n * flowchart:{\n * htmlLabels: false\n * }\n * });\n *\n *\n * **Example 2:**\n *
\n * <script>\n * var config = {\n * startOnLoad:true,\n * flowchart:{\n * useMaxWidth:true,\n * htmlLabels:true,\n * curve:'cardinal',\n * },\n *\n * securityLevel:'loose',\n * };\n * mermaid.initialize(config);\n * </script>\n *\n * A summary of all options and their defaults is found [here](#mermaidapi-configuration-defaults). A description of each option follows below.\n *\n * @name Configuration\n */\nconst config = {\n /** theme , the CSS style sheet\n *\n * theme , the CSS style sheet\n *\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| Theme |Built in Themes| String | Optional | Values include, default, forest, dark, neutral, null|\n *\n ***Notes:**To disable any pre-defined mermaid theme, use \"null\".\n *
\n * \"theme\": \"forest\",\n * \"themeCSS\": \".node rect { fill: red; }\"\n *\n */\n theme: 'default',\n themeCSS: undefined,\n /* **maxTextSize** - The maximum allowed size of the users text diamgram */\n maxTextSize: 50000,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *|fontFamily | specifies the font to be used in the rendered diagrams| String | Required | Verdana, Arial, Trebuchet MS,|\n *\n ***notes: Default value is \\\\\"trebuchet ms\\\\\".\n */\n fontFamily: '\"trebuchet ms\", verdana, arial;',\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| logLevel |This option decides the amount of logging to be used.| String | Required | 1, 2, 3, 4, 5 |\n *\n *\n ***Notes:**\n *- debug: 1.\n *- info: 2.\n *- warn: 3.\n *- error: 4.\n *- fatal: 5(default).\n */\n logLevel: 5,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| securitylevel | Level of trust for parsed diagram|String | Required | Strict, Loose |\n *\n ***Notes:\n *- **strict**: (**default**) tags in text are encoded, click functionality is disabeled\n *- **loose**: tags in text are allowed, click functionality is enabled\n */\n securityLevel: 'strict',\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| startOnLoad| Dictates whether mermaind starts on Page load | Boolean | Required | True, False |\n *\n ***Notes:**\n ***Default value: true**\n */\n startOnLoad: true,\n\n /**\n *| Parameter | Description |Type | Required |Values|\n *| --- | --- | --- | --- | --- |\n *| arrowMarkerAbsolute | Controls whether or arrow markers in html code are absolute paths or anchors | Boolean | Required | True, False |\n *\n *\n *## Notes**: This matters if you are using base tag settings.\n ***Default value: false**.\n */\n arrowMarkerAbsolute: false,\n\n /**\n * This option controls which currentConfig keys are considered _secure_ and can only be changed via\n * call to mermaidAPI.initialize. Calls to mermaidAPI.reinitialize cannot make changes to\n * the `secure` keys in the current currentConfig. This prevents malicious graph directives from\n * overriding a site's default security.\n */\n secure: ['secure', 'securityLevel', 'startOnLoad', 'maxTextSize'],\n\n /**\n * The object containing configurations specific for flowcharts\n */\n flowchart: {\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| htmlLabels | Flag for setting whether or not a html tag should be used for rendering labels on the edges. | Boolean| Required | True, False|\n *\n ***Notes: Default value: true**.\n */\n htmlLabels: true,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| nodeSpacing | Defines the spacing between nodes on the same level | Integer| Required | Any positive Numbers |\n *\n ***Notes:\n *Pertains to horizontal spacing for TB (top to bottom) or BT (bottom to top) graphs, and the vertical spacing for LR as well as RL graphs.**\n ***Default value 50**.\n */\n nodeSpacing: 50,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| rankSpacing | Defines the spacing between nodes on different levels | Integer | Required| Any Positive Numbers |\n *\n ***Notes: pertains to vertical spacing for TB (top to bottom) or BT (bottom to top), and the horizontal spacing for LR as well as RL graphs.\n ***Default value 50**.\n */\n rankSpacing: 50,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| curve | Defines how mermaid renders curves for flowcharts. | String | Required | Basis, Linear, Cardinal|\n *\n ***Notes:\n *Default Vaue: Linear**\n */\n curve: 'linear',\n // Only used in new experimental rendering\n // repreesents the padding between the labels and the shape\n padding: 15\n },\n\n /**\n * The object containing configurations specific for sequence diagrams\n */\n sequence: {\n /**\n * widt of the activation rect\n * **Default value 10**.\n */\n activationWidth: 10,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| diagramMarginX | margin to the right and left of the sequence diagram | Integer | Required | Any Positive Values |\n *\n ***Notes:**\n ***Default value 50**.\n */\n diagramMarginX: 50,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| diagramMarginY | Margin to the over and under the sequence diagram | Integer | Required | Any Positive Values|\n *\n ***Notes:**\n ***Default value 10**.\n */\n diagramMarginY: 10,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| actorMargin | Margin between actors. | Integer | Required | Any Positive Value |\n *\n ***Notes:**\n ***Default value 50**.\n */\n actorMargin: 50,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| width | Width of actor boxes | Integer | Required | Any Positive Value |\n *\n ***Notes:**\n ***Default value 150**.\n */\n width: 150,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| height | Height of actor boxes | Integer | Required | Any Positive Value|\n *\n ***Notes:**\n ***Default value 65**..\n */\n height: 65,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| boxMargin | Margin around loop boxes | Integer | Required | Any Positive Value |\n *\n ***Notes:**\n *\n ***Default value 10**.\n */\n boxMargin: 10,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| boxTextMargin| margin around the text in loop/alt/opt boxes | Integer | Required| Any Positive Value|\n *\n ***Notes:**\n *\n ***Default value 5**.\n */\n boxTextMargin: 5,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| noteMargin | margin around notes. | Integer | Required | Any Positive Value |\n *\n ***Notes:**\n *\n ***Default value 10**.\n */\n noteMargin: 10,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| messageMargin | Space between messages. | Integer | Required | Any Positive Value |\n *\n ***Notes:**\n *\n *Space between messages.\n ***Default value 35**.\n */\n messageMargin: 35,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| messageAlign | Multiline message alignment | Integer | Required | left, center, right |\n *\n ***Notes:**center **default**\n */\n messageAlign: 'center',\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| mirrorActors | mirror actors under diagram. | Boolean| Required | True, False |\n *\n ***Notes:**\n *\n ***Default value true**.\n */\n mirrorActors: true,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| bottomMarginAdj | Prolongs the edge of the diagram downwards. | Integer | Required | Any Positive Value |\n *\n ***Notes:**Depending on css styling this might need adjustment.\n ***Default value 1**.\n */\n bottomMarginAdj: 1,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| useMaxWidth | See Notes | Boolean | Required | True, False |\n *\n ***Notes:**\n *when this flag is set to true, the height and width is set to 100% and is then scaling with the\n *available space. If set to false, the absolute space required is used.\n ***Default value: True**.\n */\n useMaxWidth: true,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| rightAngles | display curve arrows as right angles| Boolean | Required | True, False |\n *\n ***Notes:**\n *\n *This will display arrows that start and begin at the same node as right angles, rather than a curve\n ***Default value false**.\n */\n rightAngles: false,\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| showSequenceNumbers | This will show the node numbers | Boolean | Required | True, False |\n *\n ***Notes:**\n ***Default value false**.\n */\n showSequenceNumbers: false,\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| actorFontSize| This sets the font size of the actor's description | Integer | Require | Any Positive Value |\n *\n ***Notes:**\n ***Default value 14**..\n */\n actorFontSize: 14,\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| actorFontFamily |This sets the font family of the actor's description | 3 | 4 | Open-Sans, Sans-Serif |\n *\n ***Notes:**\n ***Default value \"Open-Sans\", \"sans-serif\"**.\n */\n actorFontFamily: '\"Open-Sans\", \"sans-serif\"',\n /**\n * This sets the font weight of the actor's description\n * **Default value 400.\n */\n actorFontWeight: 400,\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| noteFontSize |This sets the font size of actor-attached notes. | Integer | Required | Any Positive Value |\n *\n ***Notes:**\n ***Default value 14**..\n */\n noteFontSize: 14,\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| noteFontFamily| This sets the font family of actor-attached notes. | String | Required | trebuchet ms, verdana, arial |\n *\n ***Notes:**\n ***Default value: trebuchet ms **.\n */\n noteFontFamily: '\"trebuchet ms\", verdana, arial',\n /**\n * This sets the font weight of the note's description\n * **Default value 400.\n */\n noteFontWeight: 400,\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| noteAlign | This sets the text alignment of actor-attached notes. | string | required | left, center, right|\n *\n ***Notes:**\n ***Default value center**.\n */\n noteAlign: 'center',\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| messageFontSize | This sets the font size of actor messages. | Integer | Required | Any Positive Number |\n *\n ***Notes:**\n ***Default value 16**.\n */\n messageFontSize: 16,\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| messageFontFamily | This sets the font family of actor messages. | String| Required | trebuchet ms\", verdana, aria |\n *\n ***Notes:**\n ***Default value:\"trebuchet ms**.\n */\n messageFontFamily: '\"trebuchet ms\", verdana, arial',\n /**\n * This sets the font weight of the message's description\n * **Default value 400.\n */\n messageFontWeight: 400,\n /**\n * This sets the auto-wrap state for the diagram\n * **Default value false.\n */\n wrap: false,\n /**\n * This sets the auto-wrap padding for the diagram (sides only)\n * **Default value 10.\n */\n wrapPadding: 10,\n /**\n * This sets the width of the loop-box (loop, alt, opt, par)\n * **Default value 50.\n */\n labelBoxWidth: 50,\n /**\n * This sets the height of the loop-box (loop, alt, opt, par)\n * **Default value 20.\n */\n labelBoxHeight: 20,\n messageFont: function() {\n return {\n fontFamily: this.messageFontFamily,\n fontSize: this.messageFontSize,\n fontWeight: this.messageFontWeight\n };\n },\n noteFont: function() {\n return {\n fontFamily: this.noteFontFamily,\n fontSize: this.noteFontSize,\n fontWeight: this.noteFontWeight\n };\n },\n actorFont: function() {\n return {\n fontFamily: this.actorFontFamily,\n fontSize: this.actorFontSize,\n fontWeight: this.actorFontWeight\n };\n }\n },\n\n /**\n * The object containing configurations specific for gantt diagrams*\n */\n gantt: {\n /**\n *### titleTopMargin\n *\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| titleTopMargin | Margin top for the text over the gantt diagram | Integer | Required | Any Positive Value |\n *\n ***Notes:**\n ***Default value 25**.\n */\n titleTopMargin: 25,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| barHeight | The height of the bars in the graph | Integer | Required | Any Positive Value |\n *\n ***Notes:**\n ***Default value 20**.\n */\n barHeight: 20,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| barGap | The margin between the different activities in the gantt diagram. | Integer | Optional |Any Positive Value |\n *\n ***Notes:**\n ***Default value 4**.\n */\n barGap: 4,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| topPadding | Margin between title and gantt diagram and between axis and gantt diagram. | Integer | Required | Any Positive Value |\n *\n ***Notes:**\n ***Default value 50**.\n */\n topPadding: 50,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| leftPadding | The space allocated for the section name to the left of the activities. | Integer| Required | Any Positive Value |\n *\n ***Notes:**\n ***Default value 75**.\n */\n leftPadding: 75,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| gridLineStartPadding | Vertical starting position of the grid lines. | Integer | Required | Any Positive Value |\n *\n ***Notes:**\n ***Default value 35**.\n */\n gridLineStartPadding: 35,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| fontSize | Font size| Integer | Required | Any Positive Value |\n *\n ***Notes:**\n ***Default value 11**.\n */\n fontSize: 11,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| fontFamily | font Family | string | required |\"Open-Sans\", \"sans-serif\" |\n *\n ***Notes:**\n *\n ***Default value '\"Open-Sans\", \"sans-serif\"'**.\n */\n fontFamily: '\"Open-Sans\", \"sans-serif\"',\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| numberSectionStyles | The number of alternating section styles | Integer | 4 | Any Positive Value |\n *\n ***Notes:**\n ***Default value 4**.\n */\n numberSectionStyles: 4,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| axisFormat | Datetime format of the axis. | 3 | Required | Date in yy-mm-dd |\n *\n ***Notes:**\n *\n * This might need adjustment to match your locale and preferences\n ***Default value '%Y-%m-%d'**.\n */\n axisFormat: '%Y-%m-%d'\n },\n /**\n * The object containing configurations specific for sequence diagrams\n */\n journey: {\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| diagramMarginX | margin to the right and left of the sequence diagram | Integer | Required | Any Positive Value |\n *\n ***Notes:**\n ***Default value 50**.\n */\n diagramMarginX: 50,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| diagramMarginY | margin to the over and under the sequence diagram. | Integer | Required | Any Positive Value|\n *\n ***Notes:**\n ***Default value 10**..\n */\n diagramMarginY: 10,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| actorMargin | Margin between actors. | Integer | Required | Any Positive Value|\n *\n ***Notes:**\n ***Default value 50**.\n */\n actorMargin: 50,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| width | Width of actor boxes | Integer | Required | Any Positive Value |\n *\n ***Notes:**\n ***Default value 150**.\n */\n width: 150,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| height | Height of actor boxes | Integer | Required | Any Positive Value |\n *\n ***Notes:**\n ***Default value 65**.\n */\n height: 65,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| boxMargin | Margin around loop boxes | Integer | Required | Any Positive Value |\n *\n ***Notes:**\n ***Default value 10**.\n */\n boxMargin: 10,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| boxTextMargin | margin around the text in loop/alt/opt boxes | Integer | Required | Any Positive Value |\n *\n ***Notes:**\n */\n boxTextMargin: 5,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| noteMargin | margin around notes. | Integer | Required | Any Positive Value |\n *\n ***Notes:**\n ***Default value 10**.\n */\n noteMargin: 10,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| messageMargin |Space between messages. | Integer | Required | Any Positive Value |\n *\n ***Notes:**\n *\n *Space between messages.\n ***Default value 35**.\n */\n messageMargin: 35,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| messageAlign |Multiline message alignment | 3 | 4 | left, center, right |\n *\n ***Notes:**default:center**\n */\n messageAlign: 'center',\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| bottomMarginAdj | Prolongs the edge of the diagram downwards. | Integer | 4 | Any Positive Value |\n *\n ***Notes:**Depending on css styling this might need adjustment.\n ***Default value 1**.\n */\n bottomMarginAdj: 1,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| useMaxWidth | See notes | Boolean | 4 | True, False |\n *\n ***Notes:**when this flag is set the height and width is set to 100% and is then scaling with the\n *available space if not the absolute space required is used.\n *\n ***Default value true**.\n */\n useMaxWidth: true,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| rightAngles | Curved Arrows become Right Angles, | 3 | 4 | True, False |\n *\n ***Notes:**This will display arrows that start and begin at the same node as right angles, rather than a curves\n ***Default value false**.\n */\n rightAngles: false\n },\n class: {\n arrowMarkerAbsolute: false\n },\n git: {\n arrowMarkerAbsolute: false\n },\n state: {\n dividerMargin: 10,\n sizeUnit: 5,\n padding: 8,\n textHeight: 10,\n titleShift: -15,\n noteMargin: 10,\n forkWidth: 70,\n forkHeight: 7,\n // Used\n miniPadding: 2,\n // Font size factor, this is used to guess the width of the edges labels before rendering by dagre\n // layout. This might need updating if/when switching font\n fontSizeFactor: 5.02,\n fontSize: 24,\n labelHeight: 16,\n edgeLengthFactor: '20',\n compositTitleSize: 35,\n radius: 5\n },\n\n /**\n * The object containing configurations specific for entity relationship diagrams\n */\n er: {\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| diagramPadding | amount of padding around the diagram as a whole | Integer | Required | Any Positive Value |\n *\n ***Notes:**The amount of padding around the diagram as a whole so that embedded diagrams have margins, expressed in pixels\n ***Default value: 20**.\n */\n diagramPadding: 20,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| layoutDirection | Directional bias for layout of entities. | String | Required | \"TB\", \"BT\",\"LR\",\"RL\" |\n *\n ***Notes:**\n *'TB' for Top-Bottom, 'BT'for Bottom-Top, 'LR' for Left-Right, or 'RL' for Right to Left.\n * T = top, B = bottom, L = left, and R = right.\n ***Default value: TB **.\n */\n layoutDirection: 'TB',\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| minEntityWidth | The mimimum width of an entity box, | Integer | Required| Any Positive Value |\n *\n ***Notes:**expressed in pixels\n ***Default value: 100**.\n */\n minEntityWidth: 100,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| minEntityHeight| The minimum height of an entity box, | Integer | 4 | Any Positive Value |\n *\n ***Notes:**expressed in pixels\n ***Default value: 75 **\n */\n minEntityHeight: 75,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| entityPadding|minimum internal padding betweentext in box and box borders| Integer | 4 | Any Positive Value |\n *\n ***Notes:**The minimum internal padding betweentext in an entity box and the enclosing box borders, expressed in pixels.\n ***Default value: 15 **\n */\n entityPadding: 15,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| stroke | Stroke color of box edges and lines | String | 4 | Any recognized color |\n ***Default value: gray **\n */\n stroke: 'gray',\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| fill | Fill color of entity boxes | String | 4 | Any recognized color |\n *\n ***Notes:**\n ***Default value:'honeydew'**\n */\n fill: 'honeydew',\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| fontSize| Font Size in pixels| Integer | | Any Positive Value |\n *\n ***Notes:**Font size (expressed as an integer representing a number of pixels)\n ***Default value: 12 **\n */\n fontSize: 12\n }\n};\nconfig.class.arrowMarkerAbsolute = config.arrowMarkerAbsolute;\nconfig.git.arrowMarkerAbsolute = config.arrowMarkerAbsolute;\nexport const defaultConfig = Object.freeze(config);\n\nconst siteConfig = assignWithDepth({}, defaultConfig);\nconst currentConfig = assignWithDepth({}, defaultConfig);\n\n/**\n *## setSiteConfig\n \n *| Function | Description | Type | Values |\n *| --------- | ------------------- | ------- | ------------------ |\n *| setSiteConfig|Sets the siteConfig to desired values | Put Request | Any Values, except ones in secure array|\n \n ***Notes:**\n *Sets the siteConfig. The siteConfig is a protected configuration for repeat use. Calls to reset() will reset\n *the currentConfig to siteConfig. Calls to reset(configApi.defaultConfig) will reset siteConfig and currentConfig\n *to the defaultConfig\n *Note: currentConfig is set in this function\n \n **Default value: At default, will mirror Global Config**\n * @param conf - the base currentConfig to use as siteConfig\n * @returns {*} - the siteConfig\n */\nexport const setSiteConfig = conf => {\n assignWithDepth(currentConfig, conf, { clobber: true });\n assignWithDepth(siteConfig, conf);\n return getSiteConfig();\n};\n/**\n *## getSiteConfig\n *| Function | Description | Type | Values |\n *| --------- | ------------------- | ------- | ------------------ |\n *| setSiteConfig|Returns the current siteConfig base configuration | Get Request | Returns Any Values in siteConfig|\n \n ***Notes**:\n *Returns **any** values in siteConfig.\n * @returns {*}\n */\nexport const getSiteConfig = () => {\n return assignWithDepth({}, siteConfig);\n};\n/**\n *## setConfig\n *| Function | Description | Type | Values |\n *| --------- | ------------------- | ------- | ------------------ |\n *| setSiteConfig|Sets the siteConfig to desired values | Put Request| Any Values, except ones in secure array|\n \n \n ***Notes**:\n *Sets the currentConfig. The parameter conf is sanitized based on the siteConfig.secure keys. Any\n *values found in conf with key found in siteConfig.secure will be replaced with the corresponding\n *siteConfig value.\n * @param conf - the potential currentConfig\n * @returns {*} - the currentConfig merged with the sanitized conf\n */\nexport const setConfig = conf => {\n sanitize(conf);\n assignWithDepth(currentConfig, conf);\n return getConfig();\n};\n/**\n * ## getConfig\n *| Function | Description | Type | Return Values |\n *| --------- | ------------------- | ------- | ------------------ |\n *| getConfig |Obtains the currentConfig | Get Request | Any Values from currentConfig|\n \n ***Notes**:\n *Returns **any** the currentConfig\n * @returns {*} - the currentConfig\n */\nexport const getConfig = () => {\n return assignWithDepth({}, currentConfig);\n};\n/**\n *## sanitize\n *| Function | Description | Type | Values |\n *| --------- | ------------------- | ------- | ------------------ |\n *| sanitize |Sets the siteConfig to desired values. | Put Request |None|\n \n *Ensures options parameter does not attempt to override siteConfig secure keys\n *Note: modifies options in-place\n * @param options - the potential setConfig parameter\n */\nexport const sanitize = options => {\n Object.keys(siteConfig.secure).forEach(key => {\n if (typeof options[siteConfig.secure[key]] !== 'undefined') {\n // DO NOT attempt to print options[siteConfig.secure[key]] within `${}` as a malicious script\n // can exploit the logger's attempt to stringify the value and execute arbitrary code\n logger.warn(\n `Denied attempt to modify a secure key ${siteConfig.secure[key]}`,\n options[siteConfig.secure[key]]\n );\n delete options[siteConfig.secure[key]];\n }\n });\n};\n/**\n *## reset\n \n *| Function | Description | Type | Required | Values |\n *| --------- | ------------------- | ------- | -------- | ------------------ |\n *| reset|Resets currentConfig to conf| Put Request | Required | None|\n *\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| conf| base set of values, which currentConfig coul be **reset** to.| Dictionary | Required | Any Values, with respect to the secure Array|\n *\n **Notes :\n (default: current siteConfig ) (optional, default `getSiteConfig()`)\n * @param conf - the base currentConfig to reset to (default: current siteConfig )\n */\nexport const reset = (conf = getSiteConfig()) => {\n Object.keys(siteConfig).forEach(key => delete siteConfig[key]);\n Object.keys(currentConfig).forEach(key => delete currentConfig[key]);\n assignWithDepth(siteConfig, conf, { clobber: true });\n assignWithDepth(currentConfig, conf, { clobber: true });\n};\n\nconst configApi = Object.freeze({\n sanitize,\n setSiteConfig,\n getSiteConfig,\n setConfig,\n getConfig,\n reset,\n defaultConfig\n});\nexport default configApi;\n","import intersectRect from './intersect/intersect-rect';\nimport { logger as log } from '../logger'; // eslint-disable-line\nimport createLabel from './createLabel';\nimport { select } from 'd3';\nimport { getConfig } from '../config';\n\nconst rect = (parent, node) => {\n log.trace('Creating subgraph rect for ', node.id, node);\n\n // Add outer g element\n const shapeSvg = parent\n .insert('g')\n .attr('class', 'cluster')\n .attr('id', node.id);\n\n // add the rect\n const rect = shapeSvg.insert('rect', ':first-child');\n\n // Create the label and insert it after the rect\n const label = shapeSvg.insert('g').attr('class', 'cluster-label');\n\n const text = label\n .node()\n .appendChild(createLabel(node.labelText, node.labelStyle, undefined, true));\n\n // Get the size of the label\n let bbox = text.getBBox();\n\n if (getConfig().flowchart.htmlLabels) {\n const div = text.children[0];\n const dv = select(text);\n bbox = div.getBoundingClientRect();\n dv.attr('width', bbox.width);\n dv.attr('height', bbox.height);\n }\n\n const padding = 0 * node.padding;\n const halfPadding = padding / 2;\n\n log.trace('Data ', node, JSON.stringify(node));\n // center the rect around its coordinate\n rect\n .attr('rx', node.rx)\n .attr('ry', node.ry)\n .attr('x', node.x - node.width / 2 - halfPadding)\n .attr('y', node.y - node.height / 2 - halfPadding)\n .attr('width', node.width + padding)\n .attr('height', node.height + padding);\n\n // Center the label\n label.attr(\n 'transform',\n 'translate(' +\n (node.x - bbox.width / 2) +\n ', ' +\n (node.y - node.height / 2 - node.padding / 3 + 3) +\n ')'\n );\n\n const rectBox = rect.node().getBBox();\n node.width = rectBox.width;\n node.height = rectBox.height;\n\n node.intersect = function(point) {\n return intersectRect(node, point);\n };\n\n return shapeSvg;\n};\n\n/**\n * Non visiable cluster where the note is group with its\n */\nconst noteGroup = (parent, node) => {\n // Add outer g element\n const shapeSvg = parent\n .insert('g')\n .attr('class', 'note-cluster')\n .attr('id', node.id);\n\n // add the rect\n const rect = shapeSvg.insert('rect', ':first-child');\n\n const padding = 0 * node.padding;\n const halfPadding = padding / 2;\n\n // center the rect around its coordinate\n rect\n .attr('rx', node.rx)\n .attr('ry', node.ry)\n .attr('x', node.x - node.width / 2 - halfPadding)\n .attr('y', node.y - node.height / 2 - halfPadding)\n .attr('width', node.width + padding)\n .attr('height', node.height + padding)\n .attr('fill', 'none');\n\n const rectBox = rect.node().getBBox();\n node.width = rectBox.width;\n node.height = rectBox.height;\n\n node.intersect = function(point) {\n return intersectRect(node, point);\n };\n\n return shapeSvg;\n};\nconst roundedWithTitle = (parent, node) => {\n // Add outer g element\n const shapeSvg = parent\n .insert('g')\n .attr('class', node.classes)\n .attr('id', node.id);\n\n // add the rect\n const rect = shapeSvg.insert('rect', ':first-child');\n\n // Create the label and insert it after the rect\n const label = shapeSvg.insert('g').attr('class', 'cluster-label');\n const innerRect = shapeSvg.append('rect');\n\n const text = label\n .node()\n .appendChild(createLabel(node.labelText, node.labelStyle, undefined, true));\n\n // Get the size of the label\n let bbox = text.getBBox();\n if (getConfig().flowchart.htmlLabels) {\n const div = text.children[0];\n const dv = select(text);\n bbox = div.getBoundingClientRect();\n dv.attr('width', bbox.width);\n dv.attr('height', bbox.height);\n }\n bbox = text.getBBox();\n const padding = 0 * node.padding;\n const halfPadding = padding / 2;\n\n // center the rect around its coordinate\n rect\n .attr('class', 'outer')\n .attr('x', node.x - node.width / 2 - halfPadding)\n .attr('y', node.y - node.height / 2 - halfPadding)\n .attr('width', node.width + padding)\n .attr('height', node.height + padding);\n innerRect\n .attr('class', 'inner')\n .attr('x', node.x - node.width / 2 - halfPadding)\n .attr('y', node.y - node.height / 2 - halfPadding + bbox.height - 1)\n .attr('width', node.width + padding)\n .attr('height', node.height + padding - bbox.height - 3);\n\n // Center the label\n label.attr(\n 'transform',\n 'translate(' +\n (node.x - bbox.width / 2) +\n ', ' +\n (node.y - node.height / 2 - node.padding / 3 + (getConfig().flowchart.htmlLabels ? 5 : 3)) +\n ')'\n );\n\n const rectBox = rect.node().getBBox();\n node.width = rectBox.width;\n node.height = rectBox.height;\n\n node.intersect = function(point) {\n return intersectRect(node, point);\n };\n\n return shapeSvg;\n};\n\nconst divider = (parent, node) => {\n // Add outer g element\n const shapeSvg = parent\n .insert('g')\n .attr('class', node.classes)\n .attr('id', node.id);\n\n // add the rect\n const rect = shapeSvg.insert('rect', ':first-child');\n\n const padding = 0 * node.padding;\n const halfPadding = padding / 2;\n\n // center the rect around its coordinate\n rect\n .attr('class', 'divider')\n .attr('x', node.x - node.width / 2 - halfPadding)\n .attr('y', node.y - node.height / 2)\n .attr('width', node.width + padding)\n .attr('height', node.height + padding);\n\n const rectBox = rect.node().getBBox();\n node.width = rectBox.width;\n node.height = rectBox.height;\n\n node.intersect = function(point) {\n return intersectRect(node, point);\n };\n\n return shapeSvg;\n};\n\nconst shapes = { rect, roundedWithTitle, noteGroup, divider };\n\nlet clusterElems = {};\n\nexport const insertCluster = (elem, node) => {\n log.trace('Inserting cluster');\n const shape = node.shape || 'rect';\n clusterElems[node.id] = shapes[shape](elem, node);\n};\nexport const getClusterTitleWidth = (elem, node) => {\n const label = createLabel(node.labelText, node.labelStyle, undefined, true);\n elem.node().appendChild(label);\n const width = label.getBBox().width;\n elem.node().removeChild(label);\n return width;\n};\n\nexport const clear = () => {\n clusterElems = {};\n};\n\nexport const positionCluster = node => {\n log.info('Position cluster');\n const el = clusterElems[node.id];\n\n el.attr('transform', 'translate(' + node.x + ', ' + node.y + ')');\n};\n","import { select } from 'd3';\nimport { logger } from '../logger'; // eslint-disable-line\n// let vertexNode;\n// if (getConfig().flowchart.htmlLabels) {\n// // TODO: addHtmlLabel accepts a labelStyle. Do we possibly have that?\n// const node = {\n// label: vertexText.replace(/fa[lrsb]?:fa-[\\w-]+/g, s => ``)\n// };\n// vertexNode = addHtmlLabel(svg, node).node();\n// vertexNode.parentNode.removeChild(vertexNode);\n// } else {\n// const svgLabel = document.createElementNS('http://www.w3.org/2000/svg', 'text');\n// svgLabel.setAttribute('style', styles.labelStyle.replace('color:', 'fill:'));\n\n// const rows = vertexText.split(common.lineBreakRegex);\n\n// for (let j = 0; j < rows.length; j++) {\n// const tspan = document.createElementNS('http://www.w3.org/2000/svg', 'tspan');\n// tspan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\n// tspan.setAttribute('dy', '1em');\n// tspan.setAttribute('x', '1');\n// tspan.textContent = rows[j];\n// svgLabel.appendChild(tspan);\n// }\n// vertexNode = svgLabel;\n// }\nimport { getConfig } from '../config';\n\nfunction applyStyle(dom, styleFn) {\n if (styleFn) {\n dom.attr('style', styleFn);\n }\n}\n\nfunction addHtmlLabel(node) {\n // var fo = root.append('foreignObject').attr('width', '100000');\n\n // var div = fo.append('xhtml:div');\n // div.attr('xmlns', 'http://www.w3.org/1999/xhtml');\n\n // var label = node.label;\n // switch (typeof label) {\n // case 'function':\n // div.insert(label);\n // break;\n // case 'object':\n // // Currently we assume this is a DOM object.\n // div.insert(function() {\n // return label;\n // });\n // break;\n // default:\n // div.html(label);\n // }\n\n // applyStyle(div, node.labelStyle);\n // div.style('display', 'inline-block');\n // // Fix for firefox\n // div.style('white-space', 'nowrap');\n\n // var client = div.node().getBoundingClientRect();\n // fo.attr('width', client.width).attr('height', client.height);\n const fo = select(document.createElementNS('http://www.w3.org/2000/svg', 'foreignObject'));\n const div = fo.append('xhtml:div');\n\n const label = node.label;\n const labelClass = node.isNode ? 'nodeLabel' : 'edgeLabel';\n div.html('' + label + '');\n\n applyStyle(div, node.labelStyle);\n div.style('display', 'inline-block');\n // Fix for firefox\n div.style('white-space', 'nowrap');\n div.attr('xmlns', 'http://www.w3.org/1999/xhtml');\n return fo.node();\n}\n\nconst createLabel = (_vertexText, style, isTitle, isNode) => {\n let vertexText = _vertexText || '';\n if (getConfig().flowchart.htmlLabels) {\n // TODO: addHtmlLabel accepts a labelStyle. Do we possibly have that?\n vertexText = vertexText.replace(/\\\\n|\\n/g, '
\n *\n * <script>\n * var config = {\n * theme:'default',\n * logLevel:'fatal',\n * securityLevel:'strict',\n * startOnLoad:true,\n * arrowMarkerAbsolute:false,\n *\n * flowchart:{\n * htmlLabels:true,\n * curve:'linear',\n * },\n * sequence:{\n * diagramMarginX:50,\n * diagramMarginY:10,\n * actorMargin:50,\n * width:150,\n * height:65,\n * boxMargin:10,\n * boxTextMargin:5,\n * noteMargin:10,\n * messageMargin:35,\n * messageAlign:'center',\n * mirrorActors:true,\n * bottomMarginAdj:1,\n * useMaxWidth:true,\n * rightAngles:false,\n * showSequenceNumbers:false,\n * },\n * gantt:{\n * titleTopMargin:25,\n * barHeight:20,\n * barGap:4,\n * topPadding:50,\n * leftPadding:75,\n * gridLineStartPadding:35,\n * fontSize:11,\n * fontFamily:'\"Open-Sans\", \"sans-serif\"',\n * numberSectionStyles:4,\n * axisFormat:'%Y-%m-%d',\n * }\n * };\n * mermaid.initialize(config);\n * </script>\n *\n */\n","var map = {\n\t\"./dark/index.scss\": \"./src/themes/dark/index.scss\",\n\t\"./default/index.scss\": \"./src/themes/default/index.scss\",\n\t\"./forest/index.scss\": \"./src/themes/forest/index.scss\",\n\t\"./neutral/index.scss\": \"./src/themes/neutral/index.scss\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"./src/themes sync recursive ^\\\\.\\\\/.*\\\\/index\\\\.scss$\";","// css-to-string-loader: transforms styles from css-loader to a string output\n\n// Get the styles\nvar styles = require(\"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./index.scss\");\n\nif (typeof styles === 'string') {\n // Return an existing string\n module.exports = styles;\n} else {\n // Call the custom toString method from css-loader module\n module.exports = styles.toString();\n}","// css-to-string-loader: transforms styles from css-loader to a string output\n\n// Get the styles\nvar styles = require(\"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./index.scss\");\n\nif (typeof styles === 'string') {\n // Return an existing string\n module.exports = styles;\n} else {\n // Call the custom toString method from css-loader module\n module.exports = styles.toString();\n}","// css-to-string-loader: transforms styles from css-loader to a string output\n\n// Get the styles\nvar styles = require(\"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./index.scss\");\n\nif (typeof styles === 'string') {\n // Return an existing string\n module.exports = styles;\n} else {\n // Call the custom toString method from css-loader module\n module.exports = styles.toString();\n}","// css-to-string-loader: transforms styles from css-loader to a string output\n\n// Get the styles\nvar styles = require(\"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./index.scss\");\n\nif (typeof styles === 'string') {\n // Return an existing string\n module.exports = styles;\n} else {\n // Call the custom toString method from css-loader module\n module.exports = styles.toString();\n}","import {\n curveBasis,\n curveBasisClosed,\n curveBasisOpen,\n curveLinear,\n curveLinearClosed,\n curveMonotoneX,\n curveMonotoneY,\n curveNatural,\n curveStep,\n curveStepAfter,\n curveStepBefore,\n select\n} from 'd3';\nimport { logger } from './logger';\nimport { sanitizeUrl } from '@braintree/sanitize-url';\nimport common from './diagrams/common/common';\nimport cryptoRandomString from 'crypto-random-string';\n\n// Effectively an enum of the supported curve types, accessible by name\nconst d3CurveTypes = {\n curveBasis: curveBasis,\n curveBasisClosed: curveBasisClosed,\n curveBasisOpen: curveBasisOpen,\n curveLinear: curveLinear,\n curveLinearClosed: curveLinearClosed,\n curveMonotoneX: curveMonotoneX,\n curveMonotoneY: curveMonotoneY,\n curveNatural: curveNatural,\n curveStep: curveStep,\n curveStepAfter: curveStepAfter,\n curveStepBefore: curveStepBefore\n};\nconst directive = /[%]{2}[{]\\s*(?:(?:(\\w+)\\s*:|(\\w+))\\s*(?:(?:(\\w+))|((?:(?![}][%]{2}).|\\r?\\n)*))?\\s*)(?:[}][%]{2})?/gi;\nconst directiveWithoutOpen = /\\s*(?:(?:(\\w+)(?=:):|(\\w+))\\s*(?:(?:(\\w+))|((?:(?![}][%]{2}).|\\r?\\n)*))?\\s*)(?:[}][%]{2})?/gi;\nconst anyComment = /\\s*%%.*\\n/gm;\n\n/**\n * @function detectInit\n * Detects the init config object from the text\n * ```mermaid\n * %%{init: {\"theme\": \"debug\", \"logLevel\": 1 }}%%\n * graph LR\n * a-->b\n * b-->c\n * c-->d\n * d-->e\n * e-->f\n * f-->g\n * g-->h\n * ```\n * or\n * ```mermaid\n * %%{initialize: {\"theme\": \"dark\", logLevel: \"debug\" }}%%\n * graph LR\n * a-->b\n * b-->c\n * c-->d\n * d-->e\n * e-->f\n * f-->g\n * g-->h\n * ```\n *\n * @param {string} text The text defining the graph\n * @returns {object} the json object representing the init passed to mermaid.initialize()\n */\nexport const detectInit = function(text) {\n let inits = detectDirective(text, /(?:init\\b)|(?:initialize\\b)/);\n let results = {};\n if (Array.isArray(inits)) {\n let args = inits.map(init => init.args);\n results = assignWithDepth(results, [...args]);\n } else {\n results = inits.args;\n }\n if (results) {\n let type = detectType(text);\n ['config'].forEach(prop => {\n if (typeof results[prop] !== 'undefined') {\n if (type === 'flowchart-v2') {\n type = 'flowchart';\n }\n results[type] = results[prop];\n delete results[prop];\n }\n });\n }\n return results;\n};\n\n/**\n * @function detectDirective\n * Detects the directive from the text. Text can be single line or multiline. If type is null or omitted\n * the first directive encountered in text will be returned\n * ```mermaid\n * graph LR\n * %%{somedirective}%%\n * a-->b\n * b-->c\n * c-->d\n * d-->e\n * e-->f\n * f-->g\n * g-->h\n * ```\n *\n * @param {string} text The text defining the graph\n * @param {string|RegExp} type The directive to return (default: null)\n * @returns {object | Array} An object or Array representing the directive(s): { type: string, args: object|null } matched by the input type\n * if a single directive was found, that directive object will be returned.\n */\nexport const detectDirective = function(text, type = null) {\n try {\n const commentWithoutDirectives = new RegExp(\n `[%]{2}(?![{]${directiveWithoutOpen.source})(?=[}][%]{2}).*\\n`,\n 'ig'\n );\n text = text\n .trim()\n .replace(commentWithoutDirectives, '')\n .replace(/'/gm, '\"');\n logger.debug(\n `Detecting diagram directive${type !== null ? ' type:' + type : ''} based on the text:${text}`\n );\n let match,\n result = [];\n while ((match = directive.exec(text)) !== null) {\n // This is necessary to avoid infinite loops with zero-width matches\n if (match.index === directive.lastIndex) {\n directive.lastIndex++;\n }\n if (\n (match && !type) ||\n (type && match[1] && match[1].match(type)) ||\n (type && match[2] && match[2].match(type))\n ) {\n let type = match[1] ? match[1] : match[2];\n let args = match[3] ? match[3].trim() : match[4] ? JSON.parse(match[4].trim()) : null;\n result.push({ type, args });\n }\n }\n if (result.length === 0) {\n result.push({ type: text, args: null });\n }\n\n return result.length === 1 ? result[0] : result;\n } catch (error) {\n logger.error(\n `ERROR: ${error.message} - Unable to parse directive${\n type !== null ? ' type:' + type : ''\n } based on the text:${text}`\n );\n return { type: null, args: null };\n }\n};\n\n/**\n * @function detectType\n * Detects the type of the graph text. Takes into consideration the possible existence of an %%init\n * directive\n * ```mermaid\n * %%{initialize: {\"startOnLoad\": true, logLevel: \"fatal\" }}%%\n * graph LR\n * a-->b\n * b-->c\n * c-->d\n * d-->e\n * e-->f\n * f-->g\n * g-->h\n * ```\n *\n * @param {string} text The text defining the graph\n * @returns {string} A graph definition key\n */\nexport const detectType = function(text) {\n text = text.replace(directive, '').replace(anyComment, '\\n');\n logger.debug('Detecting diagram type based on the text ' + text);\n if (text.match(/^\\s*sequenceDiagram/)) {\n return 'sequence';\n }\n\n if (text.match(/^\\s*gantt/)) {\n return 'gantt';\n }\n\n if (text.match(/^\\s*classDiagram/)) {\n return 'class';\n }\n if (text.match(/^\\s*stateDiagram-v2/)) {\n return 'stateDiagram';\n }\n\n if (text.match(/^\\s*stateDiagram/)) {\n return 'state';\n }\n\n if (text.match(/^\\s*gitGraph/)) {\n return 'git';\n }\n if (text.match(/^\\s*flowchart/)) {\n return 'flowchart-v2';\n }\n\n if (text.match(/^\\s*info/)) {\n return 'info';\n }\n if (text.match(/^\\s*pie/)) {\n return 'pie';\n }\n\n if (text.match(/^\\s*erDiagram/)) {\n return 'er';\n }\n\n if (text.match(/^\\s*journey/)) {\n return 'journey';\n }\n\n return 'flowchart';\n};\n\nconst memoize = (fn, resolver) => {\n let cache = {};\n return (...args) => {\n let n = resolver ? resolver.apply(this, args) : args[0];\n if (n in cache) {\n return cache[n];\n } else {\n let result = fn(...args);\n cache[n] = result;\n return result;\n }\n };\n};\n\n/**\n * @function isSubstringInArray\n * Detects whether a substring in present in a given array\n * @param {string} str The substring to detect\n * @param {array} arr The array to search\n * @returns {number} the array index containing the substring or -1 if not present\n **/\nexport const isSubstringInArray = function(str, arr) {\n for (let i = 0; i < arr.length; i++) {\n if (arr[i].match(str)) return i;\n }\n return -1;\n};\n\nexport const interpolateToCurve = (interpolate, defaultCurve) => {\n if (!interpolate) {\n return defaultCurve;\n }\n const curveName = `curve${interpolate.charAt(0).toUpperCase() + interpolate.slice(1)}`;\n return d3CurveTypes[curveName] || defaultCurve;\n};\n\nexport const formatUrl = (linkStr, config) => {\n let url = linkStr.trim();\n\n if (url) {\n if (config.securityLevel !== 'loose') {\n return sanitizeUrl(url);\n }\n\n return url;\n }\n};\n\nexport const runFunc = (functionName, ...params) => {\n const arrPaths = functionName.split('.');\n\n const len = arrPaths.length - 1;\n const fnName = arrPaths[len];\n\n let obj = window;\n for (let i = 0; i < len; i++) {\n obj = obj[arrPaths[i]];\n if (!obj) return;\n }\n\n obj[fnName](...params);\n};\n\nconst distance = (p1, p2) =>\n p1 && p2 ? Math.sqrt(Math.pow(p2.x - p1.x, 2) + Math.pow(p2.y - p1.y, 2)) : 0;\n\nconst traverseEdge = points => {\n let prevPoint;\n let totalDistance = 0;\n\n points.forEach(point => {\n totalDistance += distance(point, prevPoint);\n prevPoint = point;\n });\n\n // Traverse half of total distance along points\n let remainingDistance = totalDistance / 2;\n let center = undefined;\n prevPoint = undefined;\n points.forEach(point => {\n if (prevPoint && !center) {\n const vectorDistance = distance(point, prevPoint);\n if (vectorDistance < remainingDistance) {\n remainingDistance -= vectorDistance;\n } else {\n // The point is remainingDistance from prevPoint in the vector between prevPoint and point\n // Calculate the coordinates\n const distanceRatio = remainingDistance / vectorDistance;\n if (distanceRatio <= 0) center = prevPoint;\n if (distanceRatio >= 1) center = { x: point.x, y: point.y };\n if (distanceRatio > 0 && distanceRatio < 1) {\n center = {\n x: (1 - distanceRatio) * prevPoint.x + distanceRatio * point.x,\n y: (1 - distanceRatio) * prevPoint.y + distanceRatio * point.y\n };\n }\n }\n }\n prevPoint = point;\n });\n return center;\n};\n\nconst calcLabelPosition = points => {\n return traverseEdge(points);\n};\n\nconst calcCardinalityPosition = (isRelationTypePresent, points, initialPosition) => {\n let prevPoint;\n let totalDistance = 0; // eslint-disable-line\n if (points[0] !== initialPosition) {\n points = points.reverse();\n }\n points.forEach(point => {\n totalDistance += distance(point, prevPoint);\n prevPoint = point;\n });\n\n // Traverse only 25 total distance along points to find cardinality point\n const distanceToCardinalityPoint = 25;\n\n let remainingDistance = distanceToCardinalityPoint;\n let center;\n prevPoint = undefined;\n points.forEach(point => {\n if (prevPoint && !center) {\n const vectorDistance = distance(point, prevPoint);\n if (vectorDistance < remainingDistance) {\n remainingDistance -= vectorDistance;\n } else {\n // The point is remainingDistance from prevPoint in the vector between prevPoint and point\n // Calculate the coordinates\n const distanceRatio = remainingDistance / vectorDistance;\n if (distanceRatio <= 0) center = prevPoint;\n if (distanceRatio >= 1) center = { x: point.x, y: point.y };\n if (distanceRatio > 0 && distanceRatio < 1) {\n center = {\n x: (1 - distanceRatio) * prevPoint.x + distanceRatio * point.x,\n y: (1 - distanceRatio) * prevPoint.y + distanceRatio * point.y\n };\n }\n }\n }\n prevPoint = point;\n });\n // if relation is present (Arrows will be added), change cardinality point off-set distance (d)\n let d = isRelationTypePresent ? 10 : 5;\n //Calculate Angle for x and y axis\n let angle = Math.atan2(points[0].y - center.y, points[0].x - center.x);\n let cardinalityPosition = { x: 0, y: 0 };\n //Calculation cardinality position using angle, center point on the line/curve but pendicular and with offset-distance\n cardinalityPosition.x = Math.sin(angle) * d + (points[0].x + center.x) / 2;\n cardinalityPosition.y = -Math.cos(angle) * d + (points[0].y + center.y) / 2;\n return cardinalityPosition;\n};\n\nexport const getStylesFromArray = arr => {\n let style = '';\n let labelStyle = '';\n\n for (let i = 0; i < arr.length; i++) {\n if (typeof arr[i] !== 'undefined') {\n // add text properties to label style definition\n if (arr[i].startsWith('color:') || arr[i].startsWith('text-align:')) {\n labelStyle = labelStyle + arr[i] + ';';\n } else {\n style = style + arr[i] + ';';\n }\n }\n }\n\n return { style: style, labelStyle: labelStyle };\n};\n\nlet cnt = 0;\nexport const generateId = () => {\n cnt++;\n return (\n 'id-' +\n Math.random()\n .toString(36)\n .substr(2, 12) +\n '-' +\n cnt\n );\n};\n\nexport const random = options => {\n return cryptoRandomString(options);\n};\n\n/**\n * @function assignWithDepth\n * Extends the functionality of {@link ObjectConstructor.assign} with the ability to merge arbitrary-depth objects\n * For each key in src with path `k` (recursively) performs an Object.assign(dst[`k`], src[`k`]) with\n * a slight change from the typical handling of undefined for dst[`k`]: instead of raising an error,\n * dst[`k`] is auto-initialized to {} and effectively merged with src[`k`]\n *
\n * Additionally, dissimilar types will not clobber unless the config.clobber parameter === true. Example:\n * ```\n * let config_0 = { foo: { bar: 'bar' }, bar: 'foo' };\n * let config_1 = { foo: 'foo', bar: 'bar' };\n * let result = assignWithDepth(config_0, config_1);\n * console.log(result);\n * //-> result: { foo: { bar: 'bar' }, bar: 'bar' }\n * ```\n *
\n * Traditional Object.assign would have clobbered foo in config_0 with foo in config_1.\n *
\n * If src is a destructured array of objects and dst is not an array, assignWithDepth will apply each element of src to dst\n * in order.\n * @param dst:any - the destination of the merge\n * @param src:any - the source object(s) to merge into destination\n * @param config:{ depth: number, clobber: boolean } - depth: depth to traverse within src and dst for merging -\n * clobber: should dissimilar types clobber (default: { depth: 2, clobber: false })\n * @returns {*}\n */\nexport const assignWithDepth = function(dst, src, config) {\n const { depth, clobber } = Object.assign({ depth: 2, clobber: false }, config);\n if (Array.isArray(src) && !Array.isArray(dst)) {\n src.forEach(s => assignWithDepth(dst, s, config));\n return dst;\n } else if (Array.isArray(src) && Array.isArray(dst)) {\n src.forEach(s => {\n if (dst.indexOf(s) === -1) {\n dst.push(s);\n }\n });\n return dst;\n }\n if (typeof dst === 'undefined' || depth <= 0) {\n if (dst !== undefined && dst !== null && typeof dst === 'object' && typeof src === 'object') {\n return Object.assign(dst, src);\n } else {\n return src;\n }\n }\n if (typeof src !== 'undefined' && typeof dst === 'object' && typeof src === 'object') {\n Object.keys(src).forEach(key => {\n if (\n typeof src[key] === 'object' &&\n (dst[key] === undefined || typeof dst[key] === 'object')\n ) {\n if (dst[key] === undefined) {\n dst[key] = Array.isArray(src[key]) ? [] : {};\n }\n dst[key] = assignWithDepth(dst[key], src[key], { depth: depth - 1, clobber });\n } else if (clobber || (typeof dst[key] !== 'object' && typeof src[key] !== 'object')) {\n dst[key] = src[key];\n }\n });\n }\n return dst;\n};\n\nexport const getTextObj = function() {\n return {\n x: 0,\n y: 0,\n fill: undefined,\n anchor: 'start',\n style: '#666',\n width: 100,\n height: 100,\n textMargin: 0,\n rx: 0,\n ry: 0,\n valign: undefined\n };\n};\n\nexport const drawSimpleText = function(elem, textData) {\n // Remove and ignore br:s\n const nText = textData.text.replace(common.lineBreakRegex, ' ');\n\n const textElem = elem.append('text');\n textElem.attr('x', textData.x);\n textElem.attr('y', textData.y);\n textElem.style('text-anchor', textData.anchor);\n textElem.style('font-family', textData.fontFamily);\n textElem.style('font-size', textData.fontSize);\n textElem.style('font-weight', textData.fontWeight);\n textElem.attr('fill', textData.fill);\n if (typeof textData.class !== 'undefined') {\n textElem.attr('class', textData.class);\n }\n\n const span = textElem.append('tspan');\n span.attr('x', textData.x + textData.textMargin * 2);\n span.attr('fill', textData.fill);\n span.text(nText);\n\n return textElem;\n};\n\nexport const wrapLabel = memoize(\n (label, maxWidth, config) => {\n if (!label) {\n return label;\n }\n config = Object.assign(\n { fontSize: 12, fontWeight: 400, fontFamily: 'Arial', joinWith: '
' },\n config\n );\n if (common.lineBreakRegex.test(label)) {\n return label;\n }\n const words = label.split(' ');\n const completedLines = [];\n let nextLine = '';\n words.forEach((word, index) => {\n const wordLength = calculateTextWidth(`${word} `, config);\n const nextLineLength = calculateTextWidth(nextLine, config);\n if (wordLength > maxWidth) {\n const { hyphenatedStrings, remainingWord } = breakString(word, maxWidth, '-', config);\n completedLines.push(nextLine, ...hyphenatedStrings);\n nextLine = remainingWord;\n } else if (nextLineLength + wordLength >= maxWidth) {\n completedLines.push(nextLine);\n nextLine = word;\n } else {\n nextLine = [nextLine, word].filter(Boolean).join(' ');\n }\n const currentWord = index + 1;\n const isLastWord = currentWord === words.length;\n if (isLastWord) {\n completedLines.push(nextLine);\n }\n });\n return completedLines.filter(line => line !== '').join(config.joinWith);\n },\n (label, maxWidth, config) =>\n `${label}-${maxWidth}-${config.fontSize}-${config.fontWeight}-${config.fontFamily}-${config.joinWith}`\n);\n\nconst breakString = memoize(\n (word, maxWidth, hyphenCharacter = '-', config) => {\n config = Object.assign(\n { fontSize: 12, fontWeight: 400, fontFamily: 'Arial', margin: 0 },\n config\n );\n const characters = word.split('');\n const lines = [];\n let currentLine = '';\n characters.forEach((character, index) => {\n const nextLine = `${currentLine}${character}`;\n const lineWidth = calculateTextWidth(nextLine, config);\n if (lineWidth >= maxWidth) {\n const currentCharacter = index + 1;\n const isLastLine = characters.length === currentCharacter;\n const hyphenatedNextLine = `${nextLine}${hyphenCharacter}`;\n lines.push(isLastLine ? nextLine : hyphenatedNextLine);\n currentLine = '';\n } else {\n currentLine = nextLine;\n }\n });\n return { hyphenatedStrings: lines, remainingWord: currentLine };\n },\n (word, maxWidth, hyphenCharacter = '-', config) =>\n `${word}-${maxWidth}-${hyphenCharacter}-${config.fontSize}-${config.fontWeight}-${config.fontFamily}`\n);\n\n/**\n * This calculates the text's height, taking into account the wrap breaks and\n * both the statically configured height, width, and the length of the text (in pixels).\n *\n * If the wrapped text text has greater height, we extend the height, so it's\n * value won't overflow.\n *\n * @return - The height for the given text\n * @param text the text to measure\n * @param config - the config for fontSize, fontFamily, and fontWeight all impacting the resulting size\n */\nexport const calculateTextHeight = function(text, config) {\n config = Object.assign(\n { fontSize: 12, fontWeight: 400, fontFamily: 'Arial', margin: 15 },\n config\n );\n return calculateTextDimensions(text, config).height;\n};\n\n/**\n * This calculates the width of the given text, font size and family.\n *\n * @return - The width for the given text\n * @param text - The text to calculate the width of\n * @param config - the config for fontSize, fontFamily, and fontWeight all impacting the resulting size\n */\nexport const calculateTextWidth = function(text, config) {\n config = Object.assign({ fontSize: 12, fontWeight: 400, fontFamily: 'Arial' }, config);\n return calculateTextDimensions(text, config).width;\n};\n\n/**\n * This calculates the dimensions of the given text, font size, font family, font weight, and margins.\n *\n * @return - The width for the given text\n * @param text - The text to calculate the width of\n * @param config - the config for fontSize, fontFamily, fontWeight, and margin all impacting the resulting size\n */\nexport const calculateTextDimensions = memoize(\n function(text, config) {\n config = Object.assign({ fontSize: 12, fontWeight: 400, fontFamily: 'Arial' }, config);\n const { fontSize, fontFamily, fontWeight } = config;\n if (!text) {\n return { width: 0, height: 0 };\n }\n\n // We can't really know if the user supplied font family will render on the user agent;\n // thus, we'll take the max width between the user supplied font family, and a default\n // of sans-serif.\n const fontFamilies = ['sans-serif', fontFamily];\n const lines = text.split(common.lineBreakRegex);\n let dims = [];\n\n const body = select('body');\n // We don't want to leak DOM elements - if a removal operation isn't available\n // for any reason, do not continue.\n if (!body.remove) {\n return { width: 0, height: 0, lineHeight: 0 };\n }\n\n const g = body.append('svg');\n\n for (let fontFamily of fontFamilies) {\n let cheight = 0;\n let dim = { width: 0, height: 0, lineHeight: 0 };\n for (let line of lines) {\n const textObj = getTextObj();\n textObj.text = line;\n const textElem = drawSimpleText(g, textObj)\n .style('font-size', fontSize)\n .style('font-weight', fontWeight)\n .style('font-family', fontFamily);\n\n let bBox = (textElem._groups || textElem)[0][0].getBBox();\n dim.width = Math.round(Math.max(dim.width, bBox.width));\n cheight = Math.round(bBox.height);\n dim.height += cheight;\n dim.lineHeight = Math.round(Math.max(dim.lineHeight, cheight));\n }\n dims.push(dim);\n }\n\n g.remove();\n\n let index =\n isNaN(dims[1].height) ||\n isNaN(dims[1].width) ||\n isNaN(dims[1].lineHeight) ||\n (dims[0].height > dims[1].height &&\n dims[0].width > dims[1].width &&\n dims[0].lineHeight > dims[1].lineHeight)\n ? 0\n : 1;\n return dims[index];\n },\n (text, config) => `${text}-${config.fontSize}-${config.fontWeight}-${config.fontFamily}`\n);\n\nexport default {\n assignWithDepth,\n wrapLabel,\n calculateTextHeight,\n calculateTextWidth,\n calculateTextDimensions,\n detectInit,\n detectDirective,\n detectType,\n isSubstringInArray,\n interpolateToCurve,\n calcLabelPosition,\n calcCardinalityPosition,\n formatUrl,\n getStylesFromArray,\n generateId,\n random,\n memoize,\n runFunc\n};\n","module.exports = require(\"@braintree/sanitize-url\");","module.exports = require(\"crypto-random-string\");","module.exports = require(\"d3\");","module.exports = require(\"dagre\");","module.exports = require(\"dagre-d3\");","module.exports = require(\"dagre-d3/lib/label/add-html-label.js\");","module.exports = require(\"entity-decode/browser\");","module.exports = require(\"graphlib\");","module.exports = require(\"moment-mini\");","module.exports = require(\"scope-css\");"],"sourceRoot":""}
->>>>>>> master
+{"version":3,"sources":["webpack://mermaid/webpack/universalModuleDefinition","webpack://mermaid/webpack/bootstrap","webpack://mermaid/./node_modules/path-browserify/index.js","webpack://mermaid/./node_modules/process/browser.js","webpack://mermaid/(webpack)/buildin/module.js","webpack://mermaid/./src/config.js","webpack://mermaid/./src/dagre-wrapper/clusters.js","webpack://mermaid/./src/dagre-wrapper/createLabel.js","webpack://mermaid/./src/dagre-wrapper/edges.js","webpack://mermaid/./src/dagre-wrapper/index.js","webpack://mermaid/./src/dagre-wrapper/intersect/index.js","webpack://mermaid/./src/dagre-wrapper/intersect/intersect-circle.js","webpack://mermaid/./src/dagre-wrapper/intersect/intersect-ellipse.js","webpack://mermaid/./src/dagre-wrapper/intersect/intersect-line.js","webpack://mermaid/./src/dagre-wrapper/intersect/intersect-node.js","webpack://mermaid/./src/dagre-wrapper/intersect/intersect-polygon.js","webpack://mermaid/./src/dagre-wrapper/intersect/intersect-rect.js","webpack://mermaid/./src/dagre-wrapper/markers.js","webpack://mermaid/./src/dagre-wrapper/mermaid-graphlib.js","webpack://mermaid/./src/dagre-wrapper/nodes.js","webpack://mermaid/./src/dagre-wrapper/shapes/note.js","webpack://mermaid/./src/dagre-wrapper/shapes/util.js","webpack://mermaid/./src/diagrams/class/classDb.js","webpack://mermaid/./src/diagrams/class/classRenderer-v2.js","webpack://mermaid/./src/diagrams/class/classRenderer.js","webpack://mermaid/./src/diagrams/class/parser/classDiagram.jison","webpack://mermaid/./src/diagrams/class/styles.js","webpack://mermaid/./src/diagrams/class/svgDraw.js","webpack://mermaid/./src/diagrams/common/common.js","webpack://mermaid/./src/diagrams/er/erDb.js","webpack://mermaid/./src/diagrams/er/erMarkers.js","webpack://mermaid/./src/diagrams/er/erRenderer.js","webpack://mermaid/./src/diagrams/er/parser/erDiagram.jison","webpack://mermaid/./src/diagrams/er/styles.js","webpack://mermaid/./src/diagrams/flowchart/flowChartShapes.js","webpack://mermaid/./src/diagrams/flowchart/flowDb.js","webpack://mermaid/./src/diagrams/flowchart/flowRenderer-v2.js","webpack://mermaid/./src/diagrams/flowchart/flowRenderer.js","webpack://mermaid/./src/diagrams/flowchart/parser/flow.jison","webpack://mermaid/./src/diagrams/flowchart/styles.js","webpack://mermaid/./src/diagrams/gantt/ganttDb.js","webpack://mermaid/./src/diagrams/gantt/ganttRenderer.js","webpack://mermaid/./src/diagrams/gantt/parser/gantt.jison","webpack://mermaid/./src/diagrams/gantt/styles.js","webpack://mermaid/./src/diagrams/git/gitGraphAst.js","webpack://mermaid/./src/diagrams/git/gitGraphRenderer.js","webpack://mermaid/./src/diagrams/git/parser/gitGraph.jison","webpack://mermaid/./src/diagrams/git/styles.js","webpack://mermaid/./src/diagrams/info/infoDb.js","webpack://mermaid/./src/diagrams/info/infoRenderer.js","webpack://mermaid/./src/diagrams/info/parser/info.jison","webpack://mermaid/./src/diagrams/info/styles.js","webpack://mermaid/./src/diagrams/pie/parser/pie.jison","webpack://mermaid/./src/diagrams/pie/pieDb.js","webpack://mermaid/./src/diagrams/pie/pieRenderer.js","webpack://mermaid/./src/diagrams/pie/styles.js","webpack://mermaid/./src/diagrams/sequence/parser/sequenceDiagram.jison","webpack://mermaid/./src/diagrams/sequence/sequenceDb.js","webpack://mermaid/./src/diagrams/sequence/sequenceRenderer.js","webpack://mermaid/./src/diagrams/sequence/styles.js","webpack://mermaid/./src/diagrams/sequence/svgDraw.js","webpack://mermaid/./src/diagrams/state/id-cache.js","webpack://mermaid/./src/diagrams/state/parser/stateDiagram.jison","webpack://mermaid/./src/diagrams/state/shapes.js","webpack://mermaid/./src/diagrams/state/stateDb.js","webpack://mermaid/./src/diagrams/state/stateRenderer-v2.js","webpack://mermaid/./src/diagrams/state/stateRenderer.js","webpack://mermaid/./src/diagrams/state/styles.js","webpack://mermaid/./src/diagrams/user-journey/journeyDb.js","webpack://mermaid/./src/diagrams/user-journey/journeyRenderer.js","webpack://mermaid/./src/diagrams/user-journey/parser/journey.jison","webpack://mermaid/./src/diagrams/user-journey/styles.js","webpack://mermaid/./src/diagrams/user-journey/svgDraw.js","webpack://mermaid/./src/errorRenderer.js","webpack://mermaid/./src/logger.js","webpack://mermaid/./src/mermaid.js","webpack://mermaid/./src/mermaidAPI.js","webpack://mermaid/./src/styles.js","webpack://mermaid/./src/themes/index.js","webpack://mermaid/./src/themes/theme-base.js","webpack://mermaid/./src/themes/theme-dark.js","webpack://mermaid/./src/themes/theme-default.js","webpack://mermaid/./src/themes/theme-forest.js","webpack://mermaid/./src/themes/theme-neutral.js","webpack://mermaid/./src/utils.js","webpack://mermaid/external \"@braintree/sanitize-url\"","webpack://mermaid/external \"d3\"","webpack://mermaid/external \"dagre\"","webpack://mermaid/external \"dagre-d3\"","webpack://mermaid/external \"dagre-d3/lib/label/add-html-label.js\"","webpack://mermaid/external \"entity-decode/browser\"","webpack://mermaid/external \"graphlib\"","webpack://mermaid/external \"khroma\"","webpack://mermaid/external \"moment-mini\"","webpack://mermaid/external \"stylis\""],"names":["handleThemeVariables","value","theme","getThemeVariables","default","manipulators","themeVariables","config","themeCSS","undefined","maxTextSize","fontFamily","logLevel","securityLevel","startOnLoad","arrowMarkerAbsolute","secure","flowchart","diagramPadding","htmlLabels","nodeSpacing","rankSpacing","curve","padding","sequence","activationWidth","diagramMarginX","diagramMarginY","actorMargin","width","height","boxMargin","boxTextMargin","noteMargin","messageMargin","messageAlign","mirrorActors","bottomMarginAdj","useMaxWidth","rightAngles","showSequenceNumbers","actorFontSize","actorFontFamily","actorFontWeight","noteFontSize","noteFontFamily","noteFontWeight","noteAlign","messageFontSize","messageFontFamily","messageFontWeight","wrap","wrapPadding","labelBoxWidth","labelBoxHeight","messageFont","fontSize","fontWeight","noteFont","actorFont","gantt","titleTopMargin","barHeight","barGap","topPadding","leftPadding","gridLineStartPadding","numberSectionStyles","axisFormat","journey","class","git","state","dividerMargin","sizeUnit","textHeight","titleShift","forkWidth","forkHeight","miniPadding","fontSizeFactor","labelHeight","edgeLengthFactor","compositTitleSize","radius","er","layoutDirection","minEntityWidth","minEntityHeight","entityPadding","stroke","fill","defaultConfig","Object","freeze","siteConfig","assignWithDepth","currentConfig","setSiteConfig","conf","keys","forEach","key","manipulator","clobber","getSiteConfig","setConfig","sanitize","getConfig","options","logger","warn","reset","configApi","rect","parent","node","log","trace","id","shapeSvg","insert","attr","label","text","appendChild","createLabel","labelText","labelStyle","bbox","getBBox","div","children","dv","select","getBoundingClientRect","halfPadding","JSON","stringify","rx","ry","x","y","rectBox","intersect","point","intersectRect","noteGroup","roundedWithTitle","classes","innerRect","append","divider","shapes","clusterElems","insertCluster","elem","shape","getClusterTitleWidth","removeChild","clear","positionCluster","info","el","applyStyle","dom","styleFn","addHtmlLabel","fo","document","createElementNS","labelClass","isNode","html","style","_vertexText","isTitle","vertexText","replace","s","vertexNode","svgLabel","setAttribute","rows","split","Array","isArray","j","length","tspan","setAttributeNS","textContent","trim","edgeLabels","insertEdgeLabel","edge","labelElement","edgeLabel","positionEdgeLabel","points","pos","utils","calcLabelPosition","outsideNode","dx","Math","abs","dy","w","h","intersection","outsidePoint","insidePoint","r","edges","x1","x2","y1","y2","Q","R","q","res","insertEdge","e","clusterDb","diagramType","graph","pointsHasChanged","tail","v","head","slice","unshift","push","toCluster","lastPointOutside","isInside","inter","pointPresent","p","find","fromCluster","updatedPoints","i","insterection","lineData","filter","Number","isNaN","lineFunction","line","d","curveBasis","strokeClasses","thickness","pattern","svgPath","url","window","location","protocol","host","pathname","search","arrowTypeStart","arrowTypeEnd","recursiveRender","_elem","diagramtype","parentCluster","graphlib","json","write","dir","rankdir","nodes","clusters","edgePaths","data","parse","clusterData","setNode","setParent","clusterNode","newEl","updateNodeBounds","setNodeElem","findNonClusterChild","insertNode","name","dagre","layout","positionNode","updatedPath","render","markers","insertMarkers","clearNodes","clearEdges","clearClusters","clearGraphlib","adjustClustersAndEdges","circle","ellipse","polygon","intersectCircle","intersectEllipse","cx","cy","px","py","det","sqrt","intersectLine","p1","p2","q1","q2","a1","a2","b1","b2","c1","c2","r1","r2","r3","r4","denom","offset","num","sameSign","module","exports","intersectNode","console","intersectPolygon","polyPoints","intersections","minX","POSITIVE_INFINITY","minY","entry","min","left","top","sort","pdx","pdy","distp","qdx","qdy","distq","sx","sy","markerArray","type","markerName","extension","composition","aggregation","dependency","cross","barb","decendants","parents","isDecendant","ancenstorId","debug","indexOf","edgeInCluster","clusterId","copy","newGraph","rootId","setEdge","error","removeNode","extractDecendants","concat","validate","_id","getAnchorId","externalConnections","depth","d1","d2","extractor","removeEdge","hasChildren","graphSettings","clusterGraph","Graph","multigraph","compound","setGraph","nodesep","ranksep","marginx","marginy","setDefaultEdgeLabel","question","labelHelper","questionElem","insertPolygonShape","hexagon","f","m","hex","rect_left_inv_arrow","lean_right","lean_left","trapezoid","inv_trapezoid","rect_right_inv_arrow","cylinder","rectWithTitle","innerLine","text2","flat","textRows","titleBox","descr","join","stadium","subroutine","start","forkJoin","end","innerCircle","class_box","rowPadding","lineHeight","topLine","bottomLine","maxWidth","maxHeight","labelContainer","verticalPos","hasInterface","classData","annotations","interfaceLabel","interfaceBBox","classTitleLabel","classTitleBBox","classAttributes","members","str","lbl","classMethods","methods","diffX","note","fork","nodeElems","_classes","element","map","MERMAID_DOM_ID_PREFIX","relations","classCounter","funs","splitClassNameAndType","genericType","className","addClass","classId","cssClasses","domId","lookUpDomId","classKeys","setupToolTips","getClass","getClasses","getRelations","addRelation","relation","id1","id2","addAnnotation","annotation","validatedClassName","addMember","member","theClass","memberString","startsWith","endsWith","substring","addMembers","reverse","cleanupLabel","substr","setCssClass","ids","match","setLink","linkStr","tooltip","link","formatUrl","common","sanitizeText","setClickEvent","functionName","setClickFunc","elemId","querySelector","addEventListener","runFunc","bindFunctions","fun","lineType","LINE","DOTTED_LINE","relationType","AGGREGATION","EXTENSION","COMPOSITION","DEPENDENCY","tooltipElem","_groups","svg","selectAll","on","title","transition","duration","scrollX","right","scrollY","body","scrollTop","classed","parser","yy","classDb","idCache","addClasses","g","vertex","classStr","styles","radious","_shape","addRelations","cnt","defaultStyle","defaultLabelStyle","edgeData","arrowhead","getArrowMarker","type1","type2","getStylesFromArray","interpolate","interpolateToCurve","curveLinear","defaultInterpolate","arrowheadStyle","labelpos","labelType","lineBreakRegex","getGraphId","setConf","cnf","drawOld","diagram","isMultiGraph","classDef","svgDraw","drawClass","drawEdge","svgBounds","vBox","draw","_label","labels","querySelectorAll","k","dim","insertBefore","firstChild","marker","getStyles","nodeBorder","classText","mainBkg","nodeBkg","lineColor","edgeCount","path","getRelationType","l","labelPosition","p1_card_x","p1_card_y","p2_card_x","p2_card_y","cardinality_1_point","calcCardinalityPosition","cardinality_2_point","bounds","relationTitle1","relationTitle2","cssClassStr","classInfo","isFirst","titleText2","classTitleString","classTitle","titleHeight","membersLine","addTspan","membersBox","methodsLine","method","classBox","rectWidth","childNodes","parseMember","fieldRegEx","methodRegEx","fieldMatch","methodMatch","buildFieldDisplay","buildMethodDisplay","buildLegacyDisplay","parsedText","displayText","visibility","fieldType","parseGenericTypes","fieldName","err","cssStyle","methodName","parameters","classifier","returnType","parseClassifier","memberText","methodStart","methodEnd","firstChar","textEl","txt","tSpan","cleanedText","getRows","breakToPlaceholder","removeScript","rs","idx","level","placeholderToBreak","hasBreaks","test","splitBreaks","entities","relationships","Cardinality","ZERO_OR_ONE","ZERO_OR_MORE","ONE_OR_MORE","ONLY_ONE","Identification","NON_IDENTIFYING","IDENTIFYING","addEntity","getEntities","addRelationship","entA","rolA","entB","rSpec","rel","entityA","roleA","entityB","relSpec","getRelationships","setTitle","getTitle","ERMarkers","ONLY_ONE_START","ONLY_ONE_END","ZERO_OR_ONE_START","ZERO_OR_ONE_END","ONE_OR_MORE_START","ONE_OR_MORE_END","ZERO_OR_MORE_START","ZERO_OR_MORE_END","drawEntities","svgNode","firstOne","groupNode","textId","textNode","textBBox","entityWidth","max","entityHeight","rectNode","rectBBox","adjustEntities","getEdgeName","addRelationships","relationship","relCnt","drawRelationshipFromLayout","relType","erDb","cardA","erMarkers","cardB","len","getTotalLength","labelPoint","getPointAtLength","labelId","labelNode","labelBBox","erParser","directed","edgesep","firstEntity","edgeLabelBackground","dagreD3","addToRender","addToRenderV2","addShape","vertices","subGraphs","subGraphLookup","tooltips","subCount","firstGraphFlag","direction","addVertex","addSingleLink","_start","_end","linktext","addLink","updateLinkInterpolate","positions","interp","updateLink","isSubstringInArray","textStyles","newStyle1","newStyle2","setDirection","setClass","setTooltip","setClickFun","getTooltip","getDirection","getVertices","getEdges","addSubGraph","list","_title","uniq","a","prims","boolean","number","string","objs","item","hasOwnProperty","nodeList","apply","subGraph","getPosForId","secCount","posCrossRef","indexNodes2","result","count","posCount","childPos","getDepthFirstPos","indexNodes","getSubGraphs","firstGraph","destructStartLink","_str","destructEndLink","destructLink","_startStr","startInfo","lex","addVertices","vert","svgId","parentNode","addEdges","defaultStyles","linkId","linkNameStart","linkNameEnd","flowDb","flow","subG","linkNode","Render","flowChartShapes","arrows","none","normal","util","clusterRects","clusterEl","xPos","baseVal","yPos","cluster","te","classList","add","textColor","arrowheadColor","secondBkg","clusterBorder","titleColor","border2","dateFormat","todayMarker","excludes","sections","tasks","currentSection","tags","inclusiveEndDates","lastOrder","taskCnt","lastTask","lastTaskID","rawTasks","setAxisFormat","getAxisFormat","setTodayMarker","getTodayMarker","setDateFormat","enableInclusiveEndDates","endDatesAreInclusive","getDateFormat","setExcludes","toLowerCase","getExcludes","addSection","getSections","getTasks","allItemsPricessed","compileTasks","maxDepth","iterationCount","isInvalidDate","date","isoWeekday","format","checkTaskDates","task","manualEndTime","startTime","moment","endTime","renderEndTime","fixTaskDates","toDate","invalid","getStartDate","prevTime","re","afterStatement","exec","latestEndingTask","findTaskById","dt","Date","setHours","mDate","isValid","durationToDate","durationStatement","relativeTime","getEndDate","inclusive","parseId","idStr","compileData","prevTask","dataStr","ds","getTaskTags","endTimeData","parseData","prevTaskId","startData","taskDb","addTask","rawTask","section","processed","raw","taskInfo","active","done","crit","milestone","order","addTaskOrg","newTask","description","compileTask","allProcessed","_linkStr","sanitizeUrl","pushFun","open","functionArgs","argList","charAt","callbackFunction","matchFound","t","regex","RegExp","shift","ganttDb","rightPadding","getElementById","parentElement","offsetWidth","useWidth","taskArray","timeScale","scaleTime","domain","rangeRound","categories","catsUnfiltered","checkUnique","taskCompare","b","taskA","taskB","makeGant","pageWidth","pageHeight","gap","colorScale","scaleLinear","range","interpolateHcl","makeGrid","drawRects","vertLabels","drawToday","theArray","theGap","theTopPad","theSidePad","theBarHeight","theColorScale","enter","rectangles","toString","secNum","taskClass","startX","endX","textWidth","taskType","xAxis","axisBottom","tickSize","tickFormat","timeFormat","call","numOccurances","prevGap","getCount","todayG","today","todayLine","arr","hash","getCounts","obj","word","sectionBkgColor","sectionBkgColor2","altSectionBkgColor","gridColor","todayLineColor","taskTextDarkColor","taskTextClickableColor","taskTextColor","taskBkgColor","taskBorderColor","taskTextOutsideColor","activeTaskBkgColor","activeTaskBorderColor","doneTaskBorderColor","doneTaskBkgColor","critBorderColor","critBkgColor","commits","branches","master","curBranch","seq","getId","random","isfastforwardable","currentCommit","otherCommit","isReachableFrom","currentSeq","otherSeq","uniqBy","fn","recordMap","create","reduce","out","setOptions","rawOptString","message","getOptions","commit","msg","branch","merge","otherBranch","checkout","commitRef","ref","parentCount","parseInt","upsert","newval","index","splice","prettyPrintCommitHistory","commitArr","c","newCommit","nextCommit","prettyPrint","getCommitsArray","getBranchesAsObjArray","branchArr","getBranches","getCommits","o","getCurrentBranch","getHead","allCommitsDict","branchNum","nodeFillColor","nodeStrokeWidth","nodeStrokeColor","lineStrokeWidth","branchOffset","leftMargin","branchColors","nodeRadius","nodeLabel","apiConfig","svgCreateDefs","svgDrawLine","colorIdx","color","lineGen","round","getElementCoords","coords","ctm","getCTM","xn","yn","svgDrawLineForCommits","fromId","toId","fromBbox","toBbox","lineStart","lineEnd","cloneNode","selector","renderCommitHistory","commitid","numCommits","size","branchName","renderLines","branchColor","lineDrawn","ver","gitGraphParser","db","assign","setMessage","getMessage","setInfo","inf","getInfo","infoParser","cleanupValue","pieParser","pieData","margin","legendRectSize","legendSpacing","sum","scaleOrdinal","schemeSet2","pie","d3pie","dataReady","entries","arcGenerator","arc","innerRadius","outerRadius","toFixed","centroid","legend","horz","prevActor","actors","messages","notes","titleWrapped","sequenceNumbersEnabled","wrapEnabled","parseDirective","statement","context","mermaidAPI","addActor","old","autoWrap","nextActor","activationCount","part","LINETYPE","ACTIVE_START","from","actor","ACTIVE_END","addMessage","idFrom","idTo","answer","to","addSignal","messageType","Error","token","loc","first_line","last_line","first_column","last_column","expected","getMessages","getActors","getActor","getActorKeys","getTitleWrapped","enableSequenceNumbers","setWrap","wrapSetting","parseMessage","SOLID","DOTTED","NOTE","SOLID_CROSS","DOTTED_CROSS","SOLID_OPEN","DOTTED_OPEN","LOOP_START","LOOP_END","ALT_START","ALT_ELSE","ALT_END","OPT_START","OPT_END","PAR_START","PAR_AND","PAR_END","RECT_START","RECT_END","ARROWTYPE","FILLED","OPEN","PLACEMENT","LEFTOF","RIGHTOF","OVER","addNote","placement","titleWrap","param","signalType","loopText","optText","altText","parText","sequenceDb","startx","stopx","starty","stopy","sequenceItems","activations","models","getHeight","loops","it","acc","actorModel","addLoop","loopModel","msgModel","noteModel","lastActor","lastLoop","lastMessage","lastNote","init","updateVal","val","updateBounds","_self","updateFn","updateItemBounds","n","_startx","_stopx","_starty","_stopy","newActivation","actorRect","stackedSize","actorActivations","anchored","anchorElement","endActivation","lastActorActivationIdx","activation","lastIndexOf","createLoop","newLoop","endLoop","pop","addSectionToLoop","loop","sectionTitles","getVerticalPos","bumpVerticalPos","bump","getBounds","drawNote","getNoteRect","rectElem","drawRect","textObj","getTextObj","anchor","textMargin","valign","textElem","drawText","curr","drawMessage","sequenceIndex","lines","textDims","calculateTextDimensions","totalOffset","lineStarty","fromBounds","toBounds","drawActors","actorKeys","prevWidth","prevMargin","drawActor","activationBounds","actorObj","adjustLoopHeightForWrap","loopWidths","preMargin","postMargin","addLoopFn","heightAdjust","loopWidth","textConf","wrapLabel","maxMessageWidthPerActor","getMaxMessageWidthPerActor","calculateActorMargins","calculateLoopBounds","insertArrowHead","insertArrowCrossHead","insertSequenceNumber","activeEnd","activationData","drawActivation","drawLoop","drawBackgroundRect","includes","box","actorLines","extraVertForTitle","isNote","isMessage","textFont","wrappedMessage","messageDimensions","messageWidth","actorToMessageWidth","prop","actDims","actorKey","actorWidth","buildNoteModel","shouldWrap","textDimensions","buildMessageModel","process","fromIdx","toIdx","allBounds","boundedWidth","msgDims","stack","current","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","toAdd","enabled","stk","actorBorder","actorBkg","actorTextColor","actorLineColor","signalColor","sequenceNumberColor","signalTextColor","labelBoxBorderColor","labelBoxBkgColor","labelTextColor","loopTextColor","noteBorderColor","noteBkgColor","noteTextColor","activationBkgColor","activationBorderColor","rectData","textData","prevTextHeight","textElems","yfunc","dominantBaseline","alignmentBaseline","span","drawLabel","txtObject","genPoints","cut","actorCnt","center","_drawTextCandidateFunc","drawLoopLine","sectionHeight","lower","defs","byText","content","textAttrs","_setTextAttrs","byTspan","byFo","toText","fromTextAttrsDict","textPlacement","set","get","drawStartState","drawDivider","drawSimpleState","stateDef","drawDescrState","descriptions","isSecond","descrLine","descrBox","addTitleAndBox","altBkg","pad","dblPad","orgBox","orgWidth","orgX","titleWidth","graphBox","doc","lineY","drawEndState","drawForkJoinState","parentId","tmp","nText","_drawLongText","_text","tHeight","textBounds","drawState","stateInfo","stateBox","stateDb","titleRows","boundstmp","boxHeight","heightAdj","clone","rootDoc","setRootDoc","getRootDoc","docTranslator","first","stmt","state1","state2","currentDoc","newNode","generateId","docNode","getRootDocV2","extract","_doc","addState","newDoc","states","documents","root","currentDocument","startCnt","endCnt","addDescription","des","getState","getStates","logDocuments","_id1","_id2","_descr","theState","dividerCnt","getDividerId","trimColon","nodeDb","setupNode","altFlag","nodeData","noteData","groupData","position","arrowType","setupDoc","startId","endId","transformationLog","renderDoc","getLabelWidth","edgeFreeDoc","ranker","nodeSep","sub","boxBounds","noteDef","nodeCount","svgElem","dividers","pWidth","pShift","getAttribute","labelColor","background","altBackground","allItemsProcessed","updateActors","tempActors","people","unique","Set","taskData","pieces","score","peeps","peopleList","journeyDb","taskMargin","taskFontSize","taskFontFamily","actorColours","sectionFills","sectionColours","drawActorLegend","person","colour","circleData","drawCircle","labelData","LEFT_MARGIN","initGraphics","actorNames","actorPos","actorName","drawTasks","fills","textColours","lastSection","sectionVHeight","taskPos","sectionNumber","drawSection","taskActors","drawTask","fillType0","fillType1","fillType2","fillType3","fillType4","fillType5","fillType6","fillType7","drawFace","faceData","circleElement","face","smile","d3arc","startAngle","PI","endAngle","sad","ambivalent","labelMargin","taskCount","graphics","LEVELS","fatal","setLogLevel","bind","time","arguments","mermaid","sequenceConfig","callback","Node","initialize","ganttConfig","now","innerHTML","decode","detectInit","svgCode","parseError","contentLoaded","graphInit","reinitialize","graphType","detectType","gitGraphAst","flowParser","sequenceParser","ganttParser","classParser","stateParser","infoDb","pieDb","journeyParser","encodeEntities","innerTxt","isInt","decodeEntities","_txt","cb","container","updateRendererConfigs","existingSvg","remove","userStyles","altFontFamily","flowRenderer","stylis","Stylis","rules","style1","createElement","gitGraphRenderer","flowRendererV2","sequenceDiagram","sequenceRenderer","ganttRenderer","classRenderer","classRendererV2","stateRenderer","stateRendererV2","infoRenderer","pkg","version","pieRenderer","erRenderer","journeyRenderer","errorRenderer","currentDirective","args","handleDirective","directive","globalReset","themes","classDiagram","stateDiagram","calcThemeVariables","userOverRides","calcColors","errorBkgColor","errorTextColor","base","baseThemeVariables","dark","darkThemeVariables","defaultThemeVariables","forest","forestThemeVariables","neutral","neutralThemeVariables","Theme","primaryColor","secondaryColor","tertiaryColor","lighten","relationColor","border1","labelBackground","updateColors","darken","clusterBkg","defaultLinkColor","taskTextLightColor","adjust","overrides","userOverrides","calculate","mainContrastColor","darkTextColor","invert","rgba","contrast","critical","d3CurveTypes","curveBasisClosed","curveBasisOpen","curveLinearClosed","curveMonotoneX","curveMonotoneY","curveNatural","curveStep","curveStepAfter","curveStepBefore","directiveWithoutOpen","anyComment","inits","detectDirective","results","commentWithoutDirectives","source","lastIndex","memoize","resolver","cache","defaultCurve","curveName","toUpperCase","arrPaths","fnName","params","distance","pow","traverseEdge","prevPoint","totalDistance","remainingDistance","vectorDistance","distanceRatio","isRelationTypePresent","initialPosition","distanceToCardinalityPoint","angle","atan2","cardinalityPosition","sin","cos","makeid","characters","charactersLength","floor","dst","src","drawSimpleText","joinWith","words","completedLines","nextLine","wordLength","calculateTextWidth","nextLineLength","breakString","hyphenatedStrings","remainingWord","Boolean","currentWord","isLastWord","hyphenCharacter","currentLine","character","lineWidth","currentCharacter","isLastLine","hyphenatedNextLine","calculateTextHeight","fontFamilies","dims","cheight","bBox"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,O;QCVA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;;;QAGA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA,0CAA0C,gCAAgC;QAC1E;QACA;;QAEA;QACA;QACA;QACA,wDAAwD,kBAAkB;QAC1E;QACA,iDAAiD,cAAc;QAC/D;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,yCAAyC,iCAAiC;QAC1E,gHAAgH,mBAAmB,EAAE;QACrI;QACA;;QAEA;QACA;QACA;QACA,2BAA2B,0BAA0B,EAAE;QACvD,iCAAiC,eAAe;QAChD;QACA;QACA;;QAEA;QACA,sDAAsD,+DAA+D;;QAErH;QACA;;;QAGA;QACA;;;;;;;;;;;;;;;;;;;;;;;AClFA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,QAAQ;AACxC;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU,MAAM;AAChB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,oCAAoC,8BAA8B;AAClE;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU,oBAAoB;AAC9B;AACA;;AAEA;AACA,UAAU,UAAU;AACpB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;;AAEA;AACA,+BAA+B,sBAAsB;AACrD;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,QAAQ;AACvC;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,2BAA2B,QAAQ;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,QAAQ;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,eAAe;AAClC;AACA;AACA;AACA;;AAEA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC7SA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,qCAAqC;;AAErC;AACA;AACA;;AAEA,2BAA2B;AAC3B;AACA;AACA;AACA,4BAA4B,UAAU;;;;;;;;;;;;ACvLtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;ACrBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;CAGA;AACA;AAEA;AACA;AACA;;AAEA,IAAMA,oBAAoB,GAAG,SAAvBA,oBAAuB,CAAAC,KAAK,EAAI;AACpC,SAAOC,+CAAK,CAACD,KAAD,CAAL,GAAeC,+CAAK,CAACD,KAAD,CAAL,CAAaE,iBAAb,EAAf,GAAkDD,+CAAK,CAACE,OAAN,CAAcD,iBAAd,EAAzD;AACD,CAFD;;AAIA,IAAME,YAAY,GAAG;AACnBC,gBAAc,EAAEN;AADG,CAArB;AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAk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,GAxFoC,CA0FrC;;;AACA,MAAMmiB,IAAI,aAAMD,SAAS,CAAClb,CAAV,GAActH,OAApB,cAA+BwiB,SAAS,CAACjb,CAAV,GAAcvH,OAA7C,cAAwDM,KAAxD,cAAiEC,MAAjE,CAAV;AACAgF,gDAAM,CAACmQ,KAAP,mBAAwB+M,IAAxB;AACAP,SAAO,CAAC/b,IAAR,CAAa,SAAb,EAAwBsc,IAAxB;AACD,CA9FM;AAgGQ;AACbV,SAAO,EAAPA,OADa;AAEbW,MAAI,EAAJA;AAFa,CAAf,E;;;;;;;;;;;ACtPA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA,eAAe,kCAAkC;AACjD,iBAAiB,kCAAkC;AACnD;AACA;AACA;AACA,qBAAqB,IAAI;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mJAAmJ;AACnJ,SAAS;;AAET;AACA;AACA,qBAAqB,+BAA+B;AACpD;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW,YAAY,IAAI,WAAW,SAAS;AACvE,cAAc,0BAA0B,EAAE;AAC1C,MAAM;AACN,WAAW,4yBAA4yB;AACvzB,aAAa,2dAA2d;AACxe;AACA;AACA;;AAEA;AACA;AACA;AACA,wB;AACA;AACA;AACA,e;AACA;AACA;AACA,qC;AACA;AACA;AACA,4B;AACA;AACA;AACA,wB;AACA;AACA;AACA,2CAA2C,0B;AAC3C;AACA;AACA;AACA;AACA;AACA,iDAAiD,wBAAwB;AACzE;AACA;AACA,mC;AACA;AACA;AACA,mB;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA,kCAAkC;AAClC;AACA;AACA,WAAW,8F;AACX;AACA;AACA,WAAW;AACX;AACA;AACA,WAAW,6F;AACX;AACA;AACA,WAAW,8F;AACX;AACA;AACA,SAAS,+C;AACT;AACA;AACA,SAAS,6C;AACT;AACA;AACA,SAAS,6C;AACT;AACA;AACA,SAAS,2C;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,CAAC;AACD,SAAS,gBAAgB,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,8GAA8G,EAAE,SAAS,EAAE,iBAAiB,eAAe,UAAU,wEAAwE,gFAAgF,GAAG,iCAAiC,8BAA8B,2BAA2B,EAAE,iCAAiC,EAAE,iCAAiC,cAAc,2CAA2C,6CAA6C,QAAQ,EAAE,uHAAuH,gBAAgB,2CAA2C,EAAE,4DAA4D,gBAAgB,oBAAoB,eAAe,kCAAkC,oGAAoG,UAAU,GAAG,UAAU,EAAE,UAAU,EAAE,UAAU,2BAA2B,iCAAiC,GAAG,QAAQ,gBAAgB,iCAAiC,EAAE,2CAA2C,eAAe,kCAAkC,iBAAiB,aAAa,EAAE,iCAAiC,eAAe,UAAU,gBAAgB,UAAU,4CAA4C,iCAAiC,gBAAgB,UAAU,EAAE,uBAAuB,wEAAwE,UAAU;AAC3nD,iBAAiB,oCAAoC;AACrD;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iCAAiC;AACjC,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL,qDAAqD;AACrD;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,kCAAkC;AAC/D;AACA;AACA;AACA;AACA;AACA,uCAAuC,kBAAkB;AACzD;AACA;AACA;AACA,oDAAoD;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,wGAAwG,qBAAqB,WAAW,wBAAwB,EAAE,gQAAgQ;AACla,aAAa,UAAU,kCAAkC,YAAY,kCAAkC,WAAW,uCAAuC,YAAY;AACrK,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA,CAAC;;;AAGD,IAAI,IAAgE;AACpE;AACA;AACA,6BAA6B,8CAA8C;AAC3E;AACA;AACA;AACA;AACA;AACA,iBAAiB,mBAAO,CAAC,0DAAI,eAAe,mBAAO,CAAC,qDAAM;AAC1D;AACA;AACA,IAAI,KAA6B,IAAI,4CAAY;AACjD;AACA;AACA,C;;;;;;;;;;;;;AC/wBA;AAAA,IAAMS,SAAS,GAAG,SAAZA,SAAY,CAAA7d,OAAO;AAAA,gDAEfA,OAAO,CAAC8d,UAFO,wBAGf9d,OAAO,CAAC+d,SAHO,gDAKR/d,OAAO,CAAClG,UALA,gLAiBbkG,OAAO,CAACge,OAjBK,4BAkBXhe,OAAO,CAAC8d,UAlBG,uEAwBb9d,OAAO,CAAC8d,UAxBK,wGAiCf9d,OAAO,CAACie,OAjCO,0BAkCbje,OAAO,CAAC8d,UAlCK,oDAsCb9d,OAAO,CAAC8d,UAtCK,0GA6Cf9d,OAAO,CAACie,OA7CO,oEAkDfje,OAAO,CAAC8d,UAlDO,gEAuDb9d,OAAO,CAACke,SAvDK,+IAiEfle,OAAO,CAACke,SAjEO,qCAkEble,OAAO,CAACke,SAlEK,6FAuEfle,OAAO,CAACke,SAvEO,qCAwEble,OAAO,CAACke,SAxEK,6FA6Efle,OAAO,CAACke,SA7EO,qCA8Eble,OAAO,CAACke,SA9EK,6FAmFfle,OAAO,CAACke,SAnFO,qCAoFble,OAAO,CAACke,SApFK,2FAyFfle,OAAO,CAACke,SAzFO,qCA0Fble,OAAO,CAACke,SA1FK,yFA+Ffle,OAAO,CAACke,SA/FO,qCAgGble,OAAO,CAACke,SAhGK,+FAqGfle,OAAO,CAACie,OArGO,qCAsGbje,OAAO,CAACke,SAtGK,6FA2Gfle,OAAO,CAACie,OA3GO,qCA4Gbje,OAAO,CAACke,SA5GK;AAAA,CAAzB;;AAiHeL,wEAAf,E;;;;;;;;;;;;ACjHA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAEA,IAAIM,SAAS,GAAG,CAAhB;AACO,IAAMlB,QAAQ,GAAG,SAAXA,QAAW,CAASla,IAAT,EAAeqb,IAAf,EAAqBnH,QAArB,EAA+B3X,IAA/B,EAAqC;AAC3D,MAAM+e,eAAe,GAAG,SAAlBA,eAAkB,CAAS7O,IAAT,EAAe;AACrC,YAAQA,IAAR;AACE,WAAKgK,qDAAY,CAACC,WAAlB;AACE,eAAO,aAAP;;AACF,WAAKD,qDAAY,CAACE,SAAlB;AACE,eAAO,WAAP;;AACF,WAAKF,qDAAY,CAACG,WAAlB;AACE,eAAO,aAAP;;AACF,WAAKH,qDAAY,CAACI,UAAlB;AACE,eAAO,YAAP;AARJ;AAUD,GAXD;;AAaAwE,MAAI,CAAC1Y,MAAL,GAAc0Y,IAAI,CAAC1Y,MAAL,CAAYgD,MAAZ,CAAmB,UAAAP,CAAC;AAAA,WAAI,CAACQ,MAAM,CAACC,KAAP,CAAaT,CAAC,CAAClG,CAAf,CAAL;AAAA,GAApB,CAAd,CAd2D,CAgB3D;;AACA,MAAMwG,QAAQ,GAAG2V,IAAI,CAAC1Y,MAAtB,CAjB2D,CAmB3D;;AACA,MAAMmD,YAAY,GAAGC,+CAAI,GACtB9G,CADkB,CAChB,UAAS+G,CAAT,EAAY;AACb,WAAOA,CAAC,CAAC/G,CAAT;AACD,GAHkB,EAIlBC,CAJkB,CAIhB,UAAS8G,CAAT,EAAY;AACb,WAAOA,CAAC,CAAC9G,CAAT;AACD,GANkB,EAOlBxH,KAPkB,CAOZuO,6CAPY,CAArB;AASA,MAAMI,OAAO,GAAGrG,IAAI,CACjBL,MADa,CACN,MADM,EAEb7B,IAFa,CAER,GAFQ,EAEHgI,YAAY,CAACJ,QAAD,CAFT,EAGb5H,IAHa,CAGR,IAHQ,EAGF,SAASsd,SAHP,EAIbtd,IAJa,CAIR,OAJQ,EAIC,UAJD,CAAhB;AAKA,MAAIwI,GAAG,GAAG,EAAV;;AACA,MAAI/J,IAAI,CAACpF,mBAAT,EAA8B;AAC5BmP,OAAG,GACDC,MAAM,CAACC,QAAP,CAAgBC,QAAhB,GACA,IADA,GAEAF,MAAM,CAACC,QAAP,CAAgBE,IAFhB,GAGAH,MAAM,CAACC,QAAP,CAAgBG,QAHhB,GAIAJ,MAAM,CAACC,QAAP,CAAgBI,MALlB;AAMAN,OAAG,GAAGA,GAAG,CAAChF,OAAJ,CAAY,KAAZ,EAAmB,KAAnB,CAAN;AACAgF,OAAG,GAAGA,GAAG,CAAChF,OAAJ,CAAY,KAAZ,EAAmB,KAAnB,CAAN;AACD;;AAED,MAAI4S,QAAQ,CAACA,QAAT,CAAkBoC,QAAlB,IAA8B,CAAlC,EAAqC;AACnCjQ,WAAO,CAACvI,IAAR,CAAa,OAAb,EAAsB,sBAAtB;AACD;;AACD,MAAIoW,QAAQ,CAACA,QAAT,CAAkB4E,KAAlB,KAA4B,MAAhC,EAAwC;AACtCzS,WAAO,CAACvI,IAAR,CACE,cADF,EAEE,SAASwI,GAAT,GAAe,GAAf,GAAqBgV,eAAe,CAACpH,QAAQ,CAACA,QAAT,CAAkB4E,KAAnB,CAApC,GAAgE,OAAhE,GAA0E,GAF5E;AAID;;AACD,MAAI5E,QAAQ,CAACA,QAAT,CAAkB6E,KAAlB,KAA4B,MAAhC,EAAwC;AACtC1S,WAAO,CAACvI,IAAR,CACE,YADF,EAEE,SAASwI,GAAT,GAAe,GAAf,GAAqBgV,eAAe,CAACpH,QAAQ,CAACA,QAAT,CAAkB6E,KAAnB,CAApC,GAAgE,KAAhE,GAAwE,GAF1E;AAID;;AAED,MAAI9Z,CAAJ,EAAOC,CAAP;AACA,MAAMqc,CAAC,GAAGF,IAAI,CAAC1Y,MAAL,CAAYX,MAAtB,CA/D2D,CAgE3D;;AACA,MAAIwZ,aAAa,GAAG3Y,8CAAK,CAACC,iBAAN,CAAwBuY,IAAI,CAAC1Y,MAA7B,CAApB;AACA1D,GAAC,GAAGuc,aAAa,CAACvc,CAAlB;AACAC,GAAC,GAAGsc,aAAa,CAACtc,CAAlB;AAEA,MAAIuc,SAAJ,EAAeC,SAAf;AACA,MAAIC,SAAJ,EAAeC,SAAf;;AAEA,MAAIL,CAAC,GAAG,CAAJ,KAAU,CAAV,IAAeA,CAAC,GAAG,CAAvB,EAA0B;AACxB,QAAIM,mBAAmB,GAAGhZ,8CAAK,CAACiZ,uBAAN,CACxB5H,QAAQ,CAACA,QAAT,CAAkB4E,KAAlB,KAA4B,MADJ,EAExBuC,IAAI,CAAC1Y,MAFmB,EAGxB0Y,IAAI,CAAC1Y,MAAL,CAAY,CAAZ,CAHwB,CAA1B;AAKA,QAAIoZ,mBAAmB,GAAGlZ,8CAAK,CAACiZ,uBAAN,CACxB5H,QAAQ,CAACA,QAAT,CAAkB6E,KAAlB,KAA4B,MADJ,EAExBsC,IAAI,CAAC1Y,MAFmB,EAGxB0Y,IAAI,CAAC1Y,MAAL,CAAY4Y,CAAC,GAAG,CAAhB,CAHwB,CAA1B;AAMAre,kDAAM,CAACmQ,KAAP,CAAa,yBAAyBxO,IAAI,CAACC,SAAL,CAAe+c,mBAAf,CAAtC;AACA3e,kDAAM,CAACmQ,KAAP,CAAa,yBAAyBxO,IAAI,CAACC,SAAL,CAAeid,mBAAf,CAAtC;AAEAN,aAAS,GAAGI,mBAAmB,CAAC5c,CAAhC;AACAyc,aAAS,GAAGG,mBAAmB,CAAC3c,CAAhC;AACAyc,aAAS,GAAGI,mBAAmB,CAAC9c,CAAhC;AACA2c,aAAS,GAAGG,mBAAmB,CAAC7c,CAAhC;AACD;;AAED,MAAI,OAAOgV,QAAQ,CAACiD,KAAhB,KAA0B,WAA9B,EAA2C;AACzC,QAAMc,CAAC,GAAGjY,IAAI,CAACL,MAAL,CAAY,GAAZ,EAAiB7B,IAAjB,CAAsB,OAAtB,EAA+B,YAA/B,CAAV;AACA,QAAMC,KAAK,GAAGka,CAAC,CACZtY,MADW,CACJ,MADI,EAEX7B,IAFW,CAEN,OAFM,EAEG,OAFH,EAGXA,IAHW,CAGN,GAHM,EAGDmB,CAHC,EAIXnB,IAJW,CAIN,GAJM,EAIDoB,CAJC,EAKXpB,IALW,CAKN,MALM,EAKE,KALF,EAMXA,IANW,CAMN,aANM,EAMS,QANT,EAOXE,IAPW,CAONkW,QAAQ,CAACiD,KAPH,CAAd;AASA5Q,UAAM,CAACxI,KAAP,GAAeA,KAAf;AACA,QAAMie,MAAM,GAAGje,KAAK,CAACP,IAAN,GAAac,OAAb,EAAf;AAEA2Z,KAAC,CAACpa,MAAF,CAAS,MAAT,EAAiB,cAAjB,EACGC,IADH,CACQ,OADR,EACiB,KADjB,EAEGA,IAFH,CAEQ,GAFR,EAEake,MAAM,CAAC/c,CAAP,GAAW1C,IAAI,CAAC5E,OAAL,GAAe,CAFvC,EAGGmG,IAHH,CAGQ,GAHR,EAGake,MAAM,CAAC9c,CAAP,GAAW3C,IAAI,CAAC5E,OAAL,GAAe,CAHvC,EAIGmG,IAJH,CAIQ,OAJR,EAIiBke,MAAM,CAAC/jB,KAAP,GAAesE,IAAI,CAAC5E,OAJrC,EAKGmG,IALH,CAKQ,QALR,EAKkBke,MAAM,CAAC9jB,MAAP,GAAgBqE,IAAI,CAAC5E,OALvC;AAMD;;AAEDuF,gDAAM,CAACoD,IAAP,CAAY,wBAAwBzB,IAAI,CAACC,SAAL,CAAeoV,QAAf,CAApC;;AACA,MAAI,OAAOA,QAAQ,CAAC+H,cAAhB,KAAmC,WAAnC,IAAkD/H,QAAQ,CAAC+H,cAAT,KAA4B,MAAlF,EAA0F;AACxF,QAAMhE,EAAC,GAAGjY,IAAI,CAACL,MAAL,CAAY,GAAZ,EAAiB7B,IAAjB,CAAsB,OAAtB,EAA+B,aAA/B,CAAV;;AACAma,MAAC,CAACtY,MAAF,CAAS,MAAT,EACG7B,IADH,CACQ,OADR,EACiB,OADjB,EAEGA,IAFH,CAEQ,GAFR,EAEa2d,SAFb,EAGG3d,IAHH,CAGQ,GAHR,EAGa4d,SAHb,EAIG5d,IAJH,CAIQ,MAJR,EAIgB,OAJhB,EAKGA,IALH,CAKQ,WALR,EAKqB,GALrB,EAMGE,IANH,CAMQkW,QAAQ,CAAC+H,cANjB;AAOD;;AACD,MAAI,OAAO/H,QAAQ,CAACgI,cAAhB,KAAmC,WAAnC,IAAkDhI,QAAQ,CAACgI,cAAT,KAA4B,MAAlF,EAA0F;AACxF,QAAMjE,GAAC,GAAGjY,IAAI,CAACL,MAAL,CAAY,GAAZ,EAAiB7B,IAAjB,CAAsB,OAAtB,EAA+B,aAA/B,CAAV;;AACAma,OAAC,CAACtY,MAAF,CAAS,MAAT,EACG7B,IADH,CACQ,OADR,EACiB,OADjB,EAEGA,IAFH,CAEQ,GAFR,EAEa6d,SAFb,EAGG7d,IAHH,CAGQ,GAHR,EAGa8d,SAHb,EAIG9d,IAJH,CAIQ,MAJR,EAIgB,OAJhB,EAKGA,IALH,CAKQ,WALR,EAKqB,GALrB,EAMGE,IANH,CAMQkW,QAAQ,CAACgI,cANjB;AAOD;;AAEDd,WAAS;AACV,CA1IM;AA4IA,IAAMnB,SAAS,GAAG,SAAZA,SAAY,CAASja,IAAT,EAAe+Z,QAAf,EAAyBxd,IAAzB,EAA+B;AACtDW,gDAAM,CAACoD,IAAP,CAAY,qBAAqByZ,QAAjC;AAEA,MAAIoC,WAAW,GAAG,aAAlB;;AACA,MAAIpC,QAAQ,CAACtG,UAAT,CAAoBzR,MAApB,GAA6B,CAAjC,EAAoC;AAClCma,eAAW,GAAGA,WAAW,GAAGpC,QAAQ,CAACtG,UAAT,CAAoB7C,IAApB,CAAyB,GAAzB,CAA5B;AACD;;AAED,MAAMjT,EAAE,GAAGoc,QAAQ,CAACpc,EAApB;AACA,MAAMye,SAAS,GAAG;AAChBze,MAAE,EAAEA,EADY;AAEhBI,SAAK,EAAEgc,QAAQ,CAACpc,EAFA;AAGhB1F,SAAK,EAAE,CAHS;AAIhBC,UAAM,EAAE;AAJQ,GAAlB,CATsD,CAgBtD;;AACA,MAAM+f,CAAC,GAAGjY,IAAI,CACXL,MADO,CACA,GADA,EAEP7B,IAFO,CAEF,IAFE,EAEI6V,4DAAW,CAAChW,EAAD,CAFf,EAGPG,IAHO,CAGF,OAHE,EAGOqe,WAHP,CAAV,CAjBsD,CAsBtD;;AACA,MAAIhF,KAAJ;;AACA,MAAI4C,QAAQ,CAACtE,IAAb,EAAmB;AACjB0B,SAAK,GAAGc,CAAC,CACNtY,MADK,CACE,OADF,EAEL7B,IAFK,CAEA,YAFA,EAEcic,QAAQ,CAACtE,IAFvB,EAGL3X,IAHK,CAGA,QAHA,EAGU,QAHV,EAIL6B,MAJK,CAIE,MAJF,EAKL7B,IALK,CAKA,GALA,EAKKvB,IAAI,CAACxB,UAAL,GAAkBwB,IAAI,CAAC5E,OAL5B,EAMLmG,IANK,CAMA,GANA,EAMK,CANL,CAAR;AAOD,GARD,MAQO;AACLqZ,SAAK,GAAGc,CAAC,CACNtY,MADK,CACE,MADF,EAEL7B,IAFK,CAEA,GAFA,EAEKvB,IAAI,CAACxB,UAAL,GAAkBwB,IAAI,CAAC5E,OAF5B,EAGLmG,IAHK,CAGA,GAHA,EAGK,CAHL,CAAR;AAID,GArCqD,CAuCtD;;;AACA,MAAIue,OAAO,GAAG,IAAd;AACAtC,UAAQ,CAACjI,WAAT,CAAqBrV,OAArB,CAA6B,UAASgY,MAAT,EAAiB;AAC5C,QAAM6H,UAAU,GAAGnF,KAAK,CAACxX,MAAN,CAAa,OAAb,EAAsB3B,IAAtB,CAA2B,MAAMyW,MAAN,GAAe,GAA1C,CAAnB;AACA,QAAI,CAAC4H,OAAL,EAAcC,UAAU,CAACxe,IAAX,CAAgB,IAAhB,EAAsBvB,IAAI,CAACxB,UAA3B;AACdshB,WAAO,GAAG,KAAV;AACD,GAJD;AAMA,MAAIE,gBAAgB,GAAGxC,QAAQ,CAACpc,EAAhC;;AAEA,MAAIoc,QAAQ,CAACtN,IAAT,KAAkB5V,SAAlB,IAA+BkjB,QAAQ,CAACtN,IAAT,KAAkB,EAArD,EAAyD;AACvD8P,oBAAgB,IAAI,MAAMxC,QAAQ,CAACtN,IAAf,GAAsB,GAA1C;AACD;;AAED,MAAM+P,UAAU,GAAGrF,KAAK,CACrBxX,MADgB,CACT,OADS,EAEhB3B,IAFgB,CAEXue,gBAFW,EAGhBze,IAHgB,CAGX,OAHW,EAGF,OAHE,CAAnB,CArDsD,CA0DtD;;AACA,MAAI,CAACue,OAAL,EAAcG,UAAU,CAAC1e,IAAX,CAAgB,IAAhB,EAAsBvB,IAAI,CAACxB,UAA3B;AAEd,MAAM0hB,WAAW,GAAGtF,KAAK,CAAC3Z,IAAN,GAAac,OAAb,GAAuBpG,MAA3C;AAEA,MAAMwkB,WAAW,GAAGzE,CAAC,CAClBtY,MADiB,CACV,MADU,EACF;AADE,GAEjB7B,IAFiB,CAEZ,IAFY,EAEN,CAFM,EAGjBA,IAHiB,CAGZ,IAHY,EAGNvB,IAAI,CAAC5E,OAAL,GAAe8kB,WAAf,GAA6BlgB,IAAI,CAAC1B,aAAL,GAAqB,CAH5C,EAIjBiD,IAJiB,CAIZ,IAJY,EAINvB,IAAI,CAAC5E,OAAL,GAAe8kB,WAAf,GAA6BlgB,IAAI,CAAC1B,aAAL,GAAqB,CAJ5C,CAApB;AAMA,MAAMuX,OAAO,GAAG6F,CAAC,CACdtY,MADa,CACN,MADM,EACE;AADF,GAEb7B,IAFa,CAER,GAFQ,EAEHvB,IAAI,CAAC5E,OAFF,EAGbmG,IAHa,CAGR,GAHQ,EAGH2e,WAAW,GAAGlgB,IAAI,CAAC1B,aAAnB,GAAmC0B,IAAI,CAACxB,UAHrC,EAIb+C,IAJa,CAIR,MAJQ,EAIA,OAJA,EAKbA,IALa,CAKR,OALQ,EAKC,WALD,CAAhB;AAOAue,SAAO,GAAG,IAAV;AACAtC,UAAQ,CAAC3H,OAAT,CAAiB3V,OAAjB,CAAyB,UAASgY,MAAT,EAAiB;AACxCkI,YAAQ,CAACvK,OAAD,EAAUqC,MAAV,EAAkB4H,OAAlB,EAA2B9f,IAA3B,CAAR;AACA8f,WAAO,GAAG,KAAV;AACD,GAHD;AAKA,MAAMO,UAAU,GAAGxK,OAAO,CAAC5U,IAAR,GAAec,OAAf,EAAnB;AAEA,MAAMue,WAAW,GAAG5E,CAAC,CAClBtY,MADiB,CACV,MADU,EACF;AADE,GAEjB7B,IAFiB,CAEZ,IAFY,EAEN,CAFM,EAGjBA,IAHiB,CAGZ,IAHY,EAGNvB,IAAI,CAAC5E,OAAL,GAAe8kB,WAAf,GAA6BlgB,IAAI,CAAC1B,aAAlC,GAAkD+hB,UAAU,CAAC1kB,MAHvD,EAIjB4F,IAJiB,CAIZ,IAJY,EAINvB,IAAI,CAAC5E,OAAL,GAAe8kB,WAAf,GAA6BlgB,IAAI,CAAC1B,aAAlC,GAAkD+hB,UAAU,CAAC1kB,MAJvD,CAApB;AAMA,MAAMsa,OAAO,GAAGyF,CAAC,CACdtY,MADa,CACN,MADM,EACE;AADF,GAEb7B,IAFa,CAER,GAFQ,EAEHvB,IAAI,CAAC5E,OAFF,EAGbmG,IAHa,CAGR,GAHQ,EAGH2e,WAAW,GAAG,IAAIlgB,IAAI,CAAC1B,aAAvB,GAAuC+hB,UAAU,CAAC1kB,MAAlD,GAA2DqE,IAAI,CAACxB,UAH7D,EAIb+C,IAJa,CAIR,MAJQ,EAIA,OAJA,EAKbA,IALa,CAKR,OALQ,EAKC,WALD,CAAhB;AAOAue,SAAO,GAAG,IAAV;AAEAtC,UAAQ,CAACvH,OAAT,CAAiB/V,OAAjB,CAAyB,UAASqgB,MAAT,EAAiB;AACxCH,YAAQ,CAACnK,OAAD,EAAUsK,MAAV,EAAkBT,OAAlB,EAA2B9f,IAA3B,CAAR;AACA8f,WAAO,GAAG,KAAV;AACD,GAHD;AAKA,MAAMU,QAAQ,GAAG9E,CAAC,CAACza,IAAF,GAASc,OAAT,EAAjB;AACA,MAAMhB,IAAI,GAAG2a,CAAC,CACXpa,MADU,CACH,MADG,EACK,cADL,EAEVC,IAFU,CAEL,GAFK,EAEA,CAFA,EAGVA,IAHU,CAGL,GAHK,EAGA,CAHA,EAIVA,IAJU,CAIL,OAJK,EAIIif,QAAQ,CAAC9kB,KAAT,GAAiB,IAAIsE,IAAI,CAAC5E,OAJ9B,EAKVmG,IALU,CAKL,QALK,EAKKif,QAAQ,CAAC7kB,MAAT,GAAkBqE,IAAI,CAAC5E,OAAvB,GAAiC,MAAM4E,IAAI,CAAC1B,aALjD,CAAb;AAOA,MAAMmiB,SAAS,GAAG1f,IAAI,CAACE,IAAL,GAAYc,OAAZ,GAAsBrG,KAAxC,CAhHsD,CAkHtD;AACA;;AACAkf,OAAK,CAAC3Z,IAAN,GAAayf,UAAb,CAAwBxgB,OAAxB,CAAgC,UAASwC,CAAT,EAAY;AAC1CA,KAAC,CAACyC,YAAF,CAAe,GAAf,EAAoB,CAACsb,SAAS,GAAG/d,CAAC,CAACX,OAAF,GAAYrG,KAAzB,IAAkC,CAAtD;AACD,GAFD;;AAIA,MAAI8hB,QAAQ,CAACvE,OAAb,EAAsB;AACpB2B,SAAK,CAACtZ,MAAN,CAAa,OAAb,EAAsBG,IAAtB,CAA2B+b,QAAQ,CAACvE,OAApC;AACD;;AAEDkH,aAAW,CAAC5e,IAAZ,CAAiB,IAAjB,EAAuBkf,SAAvB;AACAH,aAAW,CAAC/e,IAAZ,CAAiB,IAAjB,EAAuBkf,SAAvB;AAEAZ,WAAS,CAACnkB,KAAV,GAAkB+kB,SAAlB;AACAZ,WAAS,CAAClkB,MAAV,GAAmB6kB,QAAQ,CAAC7kB,MAAT,GAAkBqE,IAAI,CAAC5E,OAAvB,GAAiC,MAAM4E,IAAI,CAAC1B,aAA/D;AAEA,SAAOuhB,SAAP;AACD,CAnIM;AAqIA,IAAMc,WAAW,GAAG,SAAdA,WAAc,CAASlf,IAAT,EAAe;AACxC,MAAMmf,UAAU,GAAG,uCAAnB;AACA,MAAMC,WAAW,GAAG,mEAApB;AAEA,MAAIC,UAAU,GAAGrf,IAAI,CAACqX,KAAL,CAAW8H,UAAX,CAAjB;AACA,MAAIG,WAAW,GAAGtf,IAAI,CAACqX,KAAL,CAAW+H,WAAX,CAAlB;;AAEA,MAAIC,UAAU,IAAI,CAACC,WAAnB,EAAgC;AAC9B,WAAOC,iBAAiB,CAACF,UAAD,CAAxB;AACD,GAFD,MAEO,IAAIC,WAAJ,EAAiB;AACtB,WAAOE,kBAAkB,CAACF,WAAD,CAAzB;AACD,GAFM,MAEA;AACL,WAAOG,kBAAkB,CAACzf,IAAD,CAAzB;AACD;AACF,CAdM;;AAgBP,IAAMuf,iBAAiB,GAAG,SAApBA,iBAAoB,CAASG,UAAT,EAAqB;AAC7C,MAAIC,WAAW,GAAG,EAAlB;;AAEA,MAAI;AACF,QAAIC,UAAU,GAAGF,UAAU,CAAC,CAAD,CAAV,GAAgBA,UAAU,CAAC,CAAD,CAAV,CAActb,IAAd,EAAhB,GAAuC,EAAxD;AACA,QAAIyb,SAAS,GAAGH,UAAU,CAAC,CAAD,CAAV,GAAgBA,UAAU,CAAC,CAAD,CAAV,CAActb,IAAd,EAAhB,GAAuC,EAAvD;AACA,QAAIiR,WAAW,GAAGqK,UAAU,CAAC,CAAD,CAAV,GAAgBI,iBAAiB,CAACJ,UAAU,CAAC,CAAD,CAAV,CAActb,IAAd,EAAD,CAAjC,GAA0D,EAA5E;AACA,QAAI2b,SAAS,GAAGL,UAAU,CAAC,CAAD,CAAV,GAAgBA,UAAU,CAAC,CAAD,CAAV,CAActb,IAAd,EAAhB,GAAuC,EAAvD;AAEAub,eAAW,GAAGC,UAAU,GAAGC,SAAb,GAAyBxK,WAAzB,GAAuC,GAAvC,GAA6C0K,SAA3D;AACD,GAPD,CAOE,OAAOC,GAAP,EAAY;AACZL,eAAW,GAAGD,UAAd;AACD;;AAED,SAAO;AACLC,eAAW,EAAEA,WADR;AAELM,YAAQ,EAAE;AAFL,GAAP;AAID,CAlBD;;AAoBA,IAAMT,kBAAkB,GAAG,SAArBA,kBAAqB,CAASE,UAAT,EAAqB;AAC9C,MAAIO,QAAQ,GAAG,EAAf;AACA,MAAIN,WAAW,GAAG,EAAlB;;AAEA,MAAI;AACF,QAAIC,UAAU,GAAGF,UAAU,CAAC,CAAD,CAAV,GAAgBA,UAAU,CAAC,CAAD,CAAV,CAActb,IAAd,EAAhB,GAAuC,EAAxD;AACA,QAAI8b,UAAU,GAAGR,UAAU,CAAC,CAAD,CAAV,GAAgBA,UAAU,CAAC,CAAD,CAAV,CAActb,IAAd,EAAhB,GAAuC,EAAxD;AACA,QAAI+b,UAAU,GAAGT,UAAU,CAAC,CAAD,CAAV,GAAgBI,iBAAiB,CAACJ,UAAU,CAAC,CAAD,CAAV,CAActb,IAAd,EAAD,CAAjC,GAA0D,EAA3E;AACA,QAAIgc,UAAU,GAAGV,UAAU,CAAC,CAAD,CAAV,GAAgBA,UAAU,CAAC,CAAD,CAAV,CAActb,IAAd,EAAhB,GAAuC,EAAxD;AACA,QAAIic,UAAU,GAAGX,UAAU,CAAC,CAAD,CAAV,GAAgB,QAAQI,iBAAiB,CAACJ,UAAU,CAAC,CAAD,CAAX,CAAjB,CAAiCtb,IAAjC,EAAxB,GAAkE,EAAnF;AAEAub,eAAW,GAAGC,UAAU,GAAGM,UAAb,GAA0B,GAA1B,GAAgCC,UAAhC,GAA6C,GAA7C,GAAmDE,UAAjE;AAEAJ,YAAQ,GAAGK,eAAe,CAACF,UAAD,CAA1B;AACD,GAVD,CAUE,OAAOJ,GAAP,EAAY;AACZL,eAAW,GAAGD,UAAd;AACD;;AAED,SAAO;AACLC,eAAW,EAAEA,WADR;AAELM,YAAQ,EAAEA;AAFL,GAAP;AAID,CAtBD;;AAwBA,IAAMR,kBAAkB,GAAG,SAArBA,kBAAqB,CAASzf,IAAT,EAAe;AACxC;AACA,MAAI2f,WAAW,GAAG,EAAlB;AACA,MAAIM,QAAQ,GAAG,EAAf;AACA,MAAIM,UAAU,GAAG,EAAjB;AACA,MAAIF,UAAU,GAAG,EAAjB;AACA,MAAIG,WAAW,GAAGxgB,IAAI,CAACsP,OAAL,CAAa,GAAb,CAAlB;AACA,MAAImR,SAAS,GAAGzgB,IAAI,CAACsP,OAAL,CAAa,GAAb,CAAhB;;AAEA,MAAIkR,WAAW,GAAG,CAAd,IAAmBC,SAAS,GAAGD,WAA/B,IAA8CC,SAAS,IAAIzgB,IAAI,CAACgE,MAApE,EAA4E;AAC1E,QAAI4b,UAAU,GAAG,EAAjB;AACA,QAAIM,UAAU,GAAG,EAAjB;AAEA,QAAIQ,SAAS,GAAG1gB,IAAI,CAAC8W,SAAL,CAAe,CAAf,EAAkB,CAAlB,CAAhB;;AACA,QAAI4J,SAAS,CAACrJ,KAAV,CAAgB,IAAhB,CAAJ,EAA2B;AACzB6I,gBAAU,GAAGlgB,IAAI,CAAC8W,SAAL,CAAe,CAAf,EAAkB0J,WAAlB,EAA+Bpc,IAA/B,EAAb;AACD,KAFD,MAEO;AACL,UAAIsc,SAAS,CAACrJ,KAAV,CAAgB,UAAhB,CAAJ,EAAiC;AAC/BuI,kBAAU,GAAGc,SAAb;AACD;;AAEDR,gBAAU,GAAGlgB,IAAI,CAAC8W,SAAL,CAAe,CAAf,EAAkB0J,WAAlB,EAA+Bpc,IAA/B,EAAb;AACD;;AAED,QAAI+b,UAAU,GAAGngB,IAAI,CAAC8W,SAAL,CAAe0J,WAAW,GAAG,CAA7B,EAAgCC,SAAhC,CAAjB;AACA,QAAIL,UAAU,GAAGpgB,IAAI,CAAC8W,SAAL,CAAe2J,SAAS,GAAG,CAA3B,EAA8B,CAA9B,CAAjB;AACAR,YAAQ,GAAGK,eAAe,CAACF,UAAD,CAA1B;AAEAT,eAAW,GAAGC,UAAU,GAAGM,UAAb,GAA0B,GAA1B,GAAgCJ,iBAAiB,CAACK,UAAU,CAAC/b,IAAX,EAAD,CAAjD,GAAuE,GAArF;;AAEA,QAAIqc,SAAS,GAAGF,UAAU,CAACvc,MAA3B,EAAmC;AACjCqc,gBAAU,GAAGrgB,IAAI,CAAC8W,SAAL,CAAe2J,SAAS,GAAG,CAA3B,EAA8Brc,IAA9B,EAAb;;AACA,UAAIic,UAAU,KAAK,EAAnB,EAAuB;AACrBA,kBAAU,GAAG,QAAQP,iBAAiB,CAACO,UAAD,CAAtC;AACD;AACF;AACF,GA3BD,MA2BO;AACL;AACAV,eAAW,GAAGG,iBAAiB,CAAC9f,IAAD,CAA/B;AACD;;AAED,SAAO;AACL2f,eAAW,EAAEA,WADR;AAELM,YAAQ,EAAEA;AAFL,GAAP;AAID,CA7CD;;AA+CA,IAAMtB,QAAQ,GAAG,SAAXA,QAAW,CAASgC,MAAT,EAAiBC,GAAjB,EAAsBvC,OAAtB,EAA+B9f,IAA/B,EAAqC;AACpD,MAAIkY,MAAM,GAAGyI,WAAW,CAAC0B,GAAD,CAAxB;AAEA,MAAMC,KAAK,GAAGF,MAAM,CACjBhf,MADW,CACJ,OADI,EAEX7B,IAFW,CAEN,GAFM,EAEDvB,IAAI,CAAC5E,OAFJ,EAGXqG,IAHW,CAGNyW,MAAM,CAACkJ,WAHD,CAAd;;AAKA,MAAIlJ,MAAM,CAACwJ,QAAP,KAAoB,EAAxB,EAA4B;AAC1BY,SAAK,CAAC/gB,IAAN,CAAW,OAAX,EAAoB2W,MAAM,CAACwJ,QAA3B;AACD;;AAED,MAAI,CAAC5B,OAAL,EAAc;AACZwC,SAAK,CAAC/gB,IAAN,CAAW,IAAX,EAAiBvB,IAAI,CAACxB,UAAtB;AACD;AACF,CAfD;;AAiBA,IAAM+iB,iBAAiB,GAAG,SAApBA,iBAAoB,CAAS9f,IAAT,EAAe;AACvC,MAAI8gB,WAAW,GAAG9gB,IAAlB;;AAEA,MAAIA,IAAI,CAACsP,OAAL,CAAa,GAAb,KAAqB,CAAC,CAA1B,EAA6B;AAC3BwR,eAAW,GAAGA,WAAW,CAACxd,OAAZ,CAAoB,GAApB,EAAyB,GAAzB,CAAd;AACAwd,eAAW,GAAGA,WAAW,CAACxd,OAAZ,CAAoB,GAApB,EAAyB,GAAzB,CAAd;AAEA,WAAOwc,iBAAiB,CAACgB,WAAD,CAAxB;AACD,GALD,MAKO;AACL,WAAOA,WAAP;AACD;AACF,CAXD;;AAaA,IAAMR,eAAe,GAAG,SAAlBA,eAAkB,CAASF,UAAT,EAAqB;AAC3C,UAAQA,UAAR;AACE,SAAK,GAAL;AACE,aAAO,oBAAP;;AACF,SAAK,GAAL;AACE,aAAO,4BAAP;;AACF;AACE,aAAO,EAAP;AANJ;AAQD,CATD;;AAWe;AACbnE,WAAS,EAATA,SADa;AAEbC,UAAQ,EAARA,QAFa;AAGbgD,aAAW,EAAXA;AAHa,CAAf,E;;;;;;;;;;;;AC3aA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAO,IAAM6B,OAAO,GAAG,SAAVA,OAAU,CAAAxd,CAAC,EAAI;AAC1B,MAAI,CAACA,CAAL,EAAQ,OAAO,CAAP;AACR,MAAI8Q,GAAG,GAAG2M,kBAAkB,CAACzd,CAAD,CAA5B;AACA8Q,KAAG,GAAGA,GAAG,CAAC/Q,OAAJ,CAAY,MAAZ,EAAoB,MAApB,CAAN;AACA,SAAO+Q,GAAG,CAACzQ,KAAJ,CAAU,MAAV,CAAP;AACD,CALM;AAOA,IAAMqd,YAAY,GAAG,SAAfA,YAAe,CAAAL,GAAG,EAAI;AACjC,MAAIM,EAAE,GAAG,EAAT;AACA,MAAIC,GAAG,GAAG,CAAV;;AAEA,SAAOA,GAAG,IAAI,CAAd,EAAiB;AACfA,OAAG,GAAGP,GAAG,CAACtR,OAAJ,CAAY,SAAZ,CAAN;;AACA,QAAI6R,GAAG,IAAI,CAAX,EAAc;AACZD,QAAE,IAAIN,GAAG,CAAC1J,MAAJ,CAAW,CAAX,EAAciK,GAAd,CAAN;AACAP,SAAG,GAAGA,GAAG,CAAC1J,MAAJ,CAAWiK,GAAG,GAAG,CAAjB,CAAN;AAEAA,SAAG,GAAGP,GAAG,CAACtR,OAAJ,CAAY,WAAZ,CAAN;;AACA,UAAI6R,GAAG,IAAI,CAAX,EAAc;AACZA,WAAG,IAAI,CAAP;AACAP,WAAG,GAAGA,GAAG,CAAC1J,MAAJ,CAAWiK,GAAX,CAAN;AACD;AACF,KATD,MASO;AACLD,QAAE,IAAIN,GAAN;AACAO,SAAG,GAAG,CAAC,CAAP;AACA;AACD;AACF;;AACD,SAAOD,EAAP;AACD,CAtBM;AAwBA,IAAMtJ,YAAY,GAAG,SAAfA,YAAe,CAAC5X,IAAD,EAAOrH,MAAP,EAAkB;AAC5C,MAAIioB,GAAG,GAAG5gB,IAAV;AACA,MAAIzG,UAAU,GAAG,IAAjB;AACA,MACEZ,MAAM,CAACU,SAAP,KACCV,MAAM,CAACU,SAAP,CAAiBE,UAAjB,KAAgC,KAAhC,IAAyCZ,MAAM,CAACU,SAAP,CAAiBE,UAAjB,KAAgC,OAD1E,CADF,EAIEA,UAAU,GAAG,KAAb;;AAEF,MAAIA,UAAJ,EAAgB;AACd,QAAI6nB,KAAK,GAAGzoB,MAAM,CAACM,aAAnB;;AAEA,QAAImoB,KAAK,IAAI,YAAb,EAA2B;AACzBR,SAAG,GAAGK,YAAY,CAACL,GAAD,CAAlB;AACD,KAFD,MAEO,IAAIQ,KAAK,KAAK,OAAd,EAAuB;AAC5B;AACAR,SAAG,GAAGI,kBAAkB,CAACJ,GAAD,CAAxB;AACAA,SAAG,GAAGA,GAAG,CAACtd,OAAJ,CAAY,IAAZ,EAAkB,MAAlB,EAA0BA,OAA1B,CAAkC,IAAlC,EAAwC,MAAxC,CAAN;AACAsd,SAAG,GAAGA,GAAG,CAACtd,OAAJ,CAAY,IAAZ,EAAkB,UAAlB,CAAN;AACAsd,SAAG,GAAGS,kBAAkB,CAACT,GAAD,CAAxB;AACD;AACF;;AAED,SAAOA,GAAP;AACD,CAxBM;AA0BA,IAAMpF,cAAc,GAAG,cAAvB;AAEA,IAAM8F,SAAS,GAAG,SAAZA,SAAY,CAAAthB,IAAI,EAAI;AAC/B,SAAO,gBAAgBuhB,IAAhB,CAAqBvhB,IAArB,CAAP;AACD,CAFM;AAIA,IAAMwhB,WAAW,GAAG,SAAdA,WAAc,CAAAxhB,IAAI,EAAI;AACjC,SAAOA,IAAI,CAAC4D,KAAL,CAAW,eAAX,CAAP;AACD,CAFM;;AAIP,IAAMod,kBAAkB,GAAG,SAArBA,kBAAqB,CAAAzd,CAAC,EAAI;AAC9B,SAAOA,CAAC,CAACD,OAAF,CAAUkY,cAAV,EAA0B,MAA1B,CAAP;AACD,CAFD;;AAIA,IAAM6F,kBAAkB,GAAG,SAArBA,kBAAqB,CAAA9d,CAAC,EAAI;AAC9B,SAAOA,CAAC,CAACD,OAAF,CAAU,OAAV,EAAmB,OAAnB,CAAP;AACD,CAFD;;AAIe;AACbyd,SAAO,EAAPA,OADa;AAEbnJ,cAAY,EAAZA,YAFa;AAGb0J,WAAS,EAATA,SAHa;AAIbE,aAAW,EAAXA,WAJa;AAKbhG,gBAAc,EAAdA,cALa;AAMbyF,cAAY,EAAZA;AANa,CAAf,E;;;;;;;;;;;;AC3EA;AAAA;AAAA;;;AAGA;AAEA,IAAIQ,QAAQ,GAAG,EAAf;AACA,IAAIC,aAAa,GAAG,EAApB;AACA,IAAIvI,KAAK,GAAG,EAAZ;AAEA,IAAMwI,WAAW,GAAG;AAClBC,aAAW,EAAE,aADK;AAElBC,cAAY,EAAE,cAFI;AAGlBC,aAAW,EAAE,aAHK;AAIlBC,UAAQ,EAAE;AAJQ,CAApB;AAOA,IAAMC,cAAc,GAAG;AACrBC,iBAAe,EAAE,iBADI;AAErBC,aAAW,EAAE;AAFQ,CAAvB;;AAKA,IAAMC,SAAS,GAAG,SAAZA,SAAY,CAAS7X,IAAT,EAAe;AAC/B,MAAI,OAAOmX,QAAQ,CAACnX,IAAD,CAAf,KAA0B,WAA9B,EAA2C;AACzCmX,YAAQ,CAACnX,IAAD,CAAR,GAAiBA,IAAjB;AACApL,kDAAM,CAACmQ,KAAP,CAAa,oBAAb,EAAmC/E,IAAnC;AACD;AACF,CALD;;AAOA,IAAM8X,WAAW,GAAG,SAAdA,WAAc;AAAA,SAAMX,QAAN;AAAA,CAApB;AAEA;;;;;;;;;AAOA,IAAMY,eAAe,GAAG,SAAlBA,eAAkB,CAASC,IAAT,EAAeC,IAAf,EAAqBC,IAArB,EAA2BC,KAA3B,EAAkC;AACxD,MAAIC,GAAG,GAAG;AACRC,WAAO,EAAEL,IADD;AAERM,SAAK,EAAEL,IAFC;AAGRM,WAAO,EAAEL,IAHD;AAIRM,WAAO,EAAEL;AAJD,GAAV;AAOAf,eAAa,CAAC5a,IAAd,CAAmB4b,GAAnB;AACAxjB,gDAAM,CAACmQ,KAAP,CAAa,0BAAb,EAAyCqT,GAAzC;AACD,CAVD;;AAYA,IAAMK,gBAAgB,GAAG,SAAnBA,gBAAmB;AAAA,SAAMrB,aAAN;AAAA,CAAzB,C,CAEA;;;AACA,IAAMsB,QAAQ,GAAG,SAAXA,QAAW,CAASpC,GAAT,EAAc;AAC7BzH,OAAK,GAAGyH,GAAR;AACD,CAFD;;AAIA,IAAMqC,QAAQ,GAAG,SAAXA,QAAW,GAAW;AAC1B,SAAO9J,KAAP;AACD,CAFD;;AAIA,IAAM/W,KAAK,GAAG,SAARA,KAAQ,GAAW;AACvBqf,UAAQ,GAAG,EAAX;AACAC,eAAa,GAAG,EAAhB;AACAvI,OAAK,GAAG,EAAR;AACD,CAJD;;AAMe;AACbwI,aAAW,EAAXA,WADa;AAEbK,gBAAc,EAAdA,cAFa;AAGbG,WAAS,EAATA,SAHa;AAIbC,aAAW,EAAXA,WAJa;AAKbC,iBAAe,EAAfA,eALa;AAMbU,kBAAgB,EAAhBA,gBANa;AAOb3gB,OAAK,EAALA,KAPa;AAQb4gB,UAAQ,EAARA,QARa;AASbC,UAAQ,EAARA;AATa,CAAf,E;;;;;;;;;;;;AClEA;AAAA,IAAMC,SAAS,GAAG;AAChBC,gBAAc,EAAE,gBADA;AAEhBC,cAAY,EAAE,cAFE;AAGhBC,mBAAiB,EAAE,mBAHH;AAIhBC,iBAAe,EAAE,iBAJD;AAKhBC,mBAAiB,EAAE,mBALH;AAMhBC,iBAAe,EAAE,iBAND;AAOhBC,oBAAkB,EAAE,oBAPJ;AAQhBC,kBAAgB,EAAE;AARF,CAAlB;AAWA;;;;AAGA,IAAM7Y,aAAa,GAAG,SAAhBA,aAAgB,CAAS7I,IAAT,EAAezD,IAAf,EAAqB;AACzC,MAAIse,MAAJ;AAEA7a,MAAI,CACDL,MADH,CACU,MADV,EAEGA,MAFH,CAEU,QAFV,EAGG7B,IAHH,CAGQ,IAHR,EAGcojB,SAAS,CAACC,cAHxB,EAIGrjB,IAJH,CAIQ,MAJR,EAIgB,CAJhB,EAKGA,IALH,CAKQ,MALR,EAKgB,CALhB,EAMGA,IANH,CAMQ,aANR,EAMuB,EANvB,EAOGA,IAPH,CAOQ,cAPR,EAOwB,EAPxB,EAQGA,IARH,CAQQ,QARR,EAQkB,MARlB,EASG6B,MATH,CASU,MATV,EAUG7B,IAVH,CAUQ,QAVR,EAUkBvB,IAAI,CAACT,MAVvB,EAWGgC,IAXH,CAWQ,MAXR,EAWgB,MAXhB,EAYGA,IAZH,CAYQ,GAZR,EAYa,yBAZb;AAcAkC,MAAI,CACDL,MADH,CACU,MADV,EAEGA,MAFH,CAEU,QAFV,EAGG7B,IAHH,CAGQ,IAHR,EAGcojB,SAAS,CAACE,YAHxB,EAIGtjB,IAJH,CAIQ,MAJR,EAIgB,EAJhB,EAKGA,IALH,CAKQ,MALR,EAKgB,CALhB,EAMGA,IANH,CAMQ,aANR,EAMuB,EANvB,EAOGA,IAPH,CAOQ,cAPR,EAOwB,EAPxB,EAQGA,IARH,CAQQ,QARR,EAQkB,MARlB,EASG6B,MATH,CASU,MATV,EAUG7B,IAVH,CAUQ,QAVR,EAUkBvB,IAAI,CAACT,MAVvB,EAWGgC,IAXH,CAWQ,MAXR,EAWgB,MAXhB,EAYGA,IAZH,CAYQ,GAZR,EAYa,uBAZb;AAcA+c,QAAM,GAAG7a,IAAI,CACVL,MADM,CACC,MADD,EAENA,MAFM,CAEC,QAFD,EAGN7B,IAHM,CAGD,IAHC,EAGKojB,SAAS,CAACG,iBAHf,EAINvjB,IAJM,CAID,MAJC,EAIO,CAJP,EAKNA,IALM,CAKD,MALC,EAKO,CALP,EAMNA,IANM,CAMD,aANC,EAMc,EANd,EAONA,IAPM,CAOD,cAPC,EAOe,EAPf,EAQNA,IARM,CAQD,QARC,EAQS,MART,CAAT;AASA+c,QAAM,CACHlb,MADH,CACU,QADV,EAEG7B,IAFH,CAEQ,QAFR,EAEkBvB,IAAI,CAACT,MAFvB,EAGGgC,IAHH,CAGQ,MAHR,EAGgB,OAHhB,EAIGA,IAJH,CAIQ,IAJR,EAIc,EAJd,EAKGA,IALH,CAKQ,IALR,EAKc,CALd,EAMGA,IANH,CAMQ,GANR,EAMa,CANb;AAOA+c,QAAM,CACHlb,MADH,CACU,MADV,EAEG7B,IAFH,CAEQ,QAFR,EAEkBvB,IAAI,CAACT,MAFvB,EAGGgC,IAHH,CAGQ,MAHR,EAGgB,MAHhB,EAIGA,IAJH,CAIQ,GAJR,EAIa,YAJb;AAMA+c,QAAM,GAAG7a,IAAI,CACVL,MADM,CACC,MADD,EAENA,MAFM,CAEC,QAFD,EAGN7B,IAHM,CAGD,IAHC,EAGKojB,SAAS,CAACI,eAHf,EAINxjB,IAJM,CAID,MAJC,EAIO,EAJP,EAKNA,IALM,CAKD,MALC,EAKO,CALP,EAMNA,IANM,CAMD,aANC,EAMc,EANd,EAONA,IAPM,CAOD,cAPC,EAOe,EAPf,EAQNA,IARM,CAQD,QARC,EAQS,MART,CAAT;AASA+c,QAAM,CACHlb,MADH,CACU,QADV,EAEG7B,IAFH,CAEQ,QAFR,EAEkBvB,IAAI,CAACT,MAFvB,EAGGgC,IAHH,CAGQ,MAHR,EAGgB,OAHhB,EAIGA,IAJH,CAIQ,IAJR,EAIc,CAJd,EAKGA,IALH,CAKQ,IALR,EAKc,CALd,EAMGA,IANH,CAMQ,GANR,EAMa,CANb;AAOA+c,QAAM,CACHlb,MADH,CACU,MADV,EAEG7B,IAFH,CAEQ,QAFR,EAEkBvB,IAAI,CAACT,MAFvB,EAGGgC,IAHH,CAGQ,MAHR,EAGgB,MAHhB,EAIGA,IAJH,CAIQ,GAJR,EAIa,cAJb;AAMAkC,MAAI,CACDL,MADH,CACU,MADV,EAEGA,MAFH,CAEU,QAFV,EAGG7B,IAHH,CAGQ,IAHR,EAGcojB,SAAS,CAACK,iBAHxB,EAIGzjB,IAJH,CAIQ,MAJR,EAIgB,EAJhB,EAKGA,IALH,CAKQ,MALR,EAKgB,EALhB,EAMGA,IANH,CAMQ,aANR,EAMuB,EANvB,EAOGA,IAPH,CAOQ,cAPR,EAOwB,EAPxB,EAQGA,IARH,CAQQ,QARR,EAQkB,MARlB,EASG6B,MATH,CASU,MATV,EAUG7B,IAVH,CAUQ,QAVR,EAUkBvB,IAAI,CAACT,MAVvB,EAWGgC,IAXH,CAWQ,MAXR,EAWgB,MAXhB,EAYGA,IAZH,CAYQ,GAZR,EAYa,8CAZb;AAcAkC,MAAI,CACDL,MADH,CACU,MADV,EAEGA,MAFH,CAEU,QAFV,EAGG7B,IAHH,CAGQ,IAHR,EAGcojB,SAAS,CAACM,eAHxB,EAIG1jB,IAJH,CAIQ,MAJR,EAIgB,EAJhB,EAKGA,IALH,CAKQ,MALR,EAKgB,EALhB,EAMGA,IANH,CAMQ,aANR,EAMuB,EANvB,EAOGA,IAPH,CAOQ,cAPR,EAOwB,EAPxB,EAQGA,IARH,CAQQ,QARR,EAQkB,MARlB,EASG6B,MATH,CASU,MATV,EAUG7B,IAVH,CAUQ,QAVR,EAUkBvB,IAAI,CAACT,MAVvB,EAWGgC,IAXH,CAWQ,MAXR,EAWgB,MAXhB,EAYGA,IAZH,CAYQ,GAZR,EAYa,0CAZb;AAcA+c,QAAM,GAAG7a,IAAI,CACVL,MADM,CACC,MADD,EAENA,MAFM,CAEC,QAFD,EAGN7B,IAHM,CAGD,IAHC,EAGKojB,SAAS,CAACO,kBAHf,EAIN3jB,IAJM,CAID,MAJC,EAIO,EAJP,EAKNA,IALM,CAKD,MALC,EAKO,EALP,EAMNA,IANM,CAMD,aANC,EAMc,EANd,EAONA,IAPM,CAOD,cAPC,EAOe,EAPf,EAQNA,IARM,CAQD,QARC,EAQS,MART,CAAT;AASA+c,QAAM,CACHlb,MADH,CACU,QADV,EAEG7B,IAFH,CAEQ,QAFR,EAEkBvB,IAAI,CAACT,MAFvB,EAGGgC,IAHH,CAGQ,MAHR,EAGgB,OAHhB,EAIGA,IAJH,CAIQ,IAJR,EAIc,EAJd,EAKGA,IALH,CAKQ,IALR,EAKc,EALd,EAMGA,IANH,CAMQ,GANR,EAMa,CANb;AAOA+c,QAAM,CACHlb,MADH,CACU,MADV,EAEG7B,IAFH,CAEQ,QAFR,EAEkBvB,IAAI,CAACT,MAFvB,EAGGgC,IAHH,CAGQ,MAHR,EAGgB,MAHhB,EAIGA,IAJH,CAIQ,GAJR,EAIa,+BAJb;AAMA+c,QAAM,GAAG7a,IAAI,CACVL,MADM,CACC,MADD,EAENA,MAFM,CAEC,QAFD,EAGN7B,IAHM,CAGD,IAHC,EAGKojB,SAAS,CAACQ,gBAHf,EAIN5jB,IAJM,CAID,MAJC,EAIO,EAJP,EAKNA,IALM,CAKD,MALC,EAKO,EALP,EAMNA,IANM,CAMD,aANC,EAMc,EANd,EAONA,IAPM,CAOD,cAPC,EAOe,EAPf,EAQNA,IARM,CAQD,QARC,EAQS,MART,CAAT;AASA+c,QAAM,CACHlb,MADH,CACU,QADV,EAEG7B,IAFH,CAEQ,QAFR,EAEkBvB,IAAI,CAACT,MAFvB,EAGGgC,IAHH,CAGQ,MAHR,EAGgB,OAHhB,EAIGA,IAJH,CAIQ,IAJR,EAIc,CAJd,EAKGA,IALH,CAKQ,IALR,EAKc,EALd,EAMGA,IANH,CAMQ,GANR,EAMa,CANb;AAOA+c,QAAM,CACHlb,MADH,CACU,MADV,EAEG7B,IAFH,CAEQ,QAFR,EAEkBvB,IAAI,CAACT,MAFvB,EAGGgC,IAHH,CAGQ,MAHR,EAGgB,MAHhB,EAIGA,IAJH,CAIQ,GAJR,EAIa,iCAJb;AAMA;AACD,CApJD;;AAsJe;AACbojB,WAAS,EAATA,SADa;AAEbrY,eAAa,EAAbA;AAFa,CAAf,E;;;;;;;;;;;;ACpKA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA,IAAMtM,IAAI,GAAG,EAAb;AAEA;;;;;;AAKO,IAAMmd,OAAO,GAAG,SAAVA,OAAU,CAASC,GAAT,EAAc;AACnC,MAAMnd,IAAI,GAAGP,MAAM,CAACO,IAAP,CAAYmd,GAAZ,CAAb;;AACA,OAAK,IAAInU,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGhJ,IAAI,CAACwF,MAAzB,EAAiCwD,CAAC,EAAlC,EAAsC;AACpCjJ,QAAI,CAACC,IAAI,CAACgJ,CAAD,CAAL,CAAJ,GAAgBmU,GAAG,CAACnd,IAAI,CAACgJ,CAAD,CAAL,CAAnB;AACD;AACF,CALM;AAOP;;;;;;;;AAOA,IAAMmc,YAAY,GAAG,SAAfA,YAAe,CAASC,OAAT,EAAkBnC,QAAlB,EAA4Blb,KAA5B,EAAmC;AACtD,MAAM/H,IAAI,GAAGP,MAAM,CAACO,IAAP,CAAYijB,QAAZ,CAAb;AACA,MAAIoC,QAAJ;AAEArlB,MAAI,CAACC,OAAL,CAAa,UAASkB,EAAT,EAAa;AACxB;AACA,QAAMmkB,SAAS,GAAGF,OAAO,CAACjiB,MAAR,CAAe,GAAf,EAAoB7B,IAApB,CAAyB,IAAzB,EAA+BH,EAA/B,CAAlB;AAEAkkB,YAAQ,GAAGA,QAAQ,KAAKhrB,SAAb,GAAyB8G,EAAzB,GAA8BkkB,QAAzC,CAJwB,CAMxB;AACA;;AACA,QAAME,MAAM,GAAG,YAAYpkB,EAA3B;AACA,QAAMqkB,QAAQ,GAAGF,SAAS,CACvBniB,MADc,CACP,MADO,EAEd7B,IAFc,CAET,OAFS,EAEA,gBAFA,EAGdA,IAHc,CAGT,IAHS,EAGHikB,MAHG,EAIdjkB,IAJc,CAIT,GAJS,EAIJ,CAJI,EAKdA,IALc,CAKT,GALS,EAKJ,CALI,EAMdA,IANc,CAMT,mBANS,EAMY,QANZ,EAOdA,IAPc,CAOT,aAPS,EAOM,QAPN,EAQdA,IARc,CASb,OATa,EAUb,kBAAkBd,yDAAS,GAAGjG,UAA9B,GAA2C,eAA3C,GAA6DwF,IAAI,CAAC3C,QAAlE,GAA6E,IAVhE,EAYdoE,IAZc,CAYTL,EAZS,CAAjB,CATwB,CAuBxB;;AACA,QAAMskB,QAAQ,GAAGD,QAAQ,CAACxkB,IAAT,GAAgBc,OAAhB,EAAjB;AACA,QAAM4jB,WAAW,GAAGjf,IAAI,CAACkf,GAAL,CAAS5lB,IAAI,CAACZ,cAAd,EAA8BsmB,QAAQ,CAAChqB,KAAT,GAAiBsE,IAAI,CAACV,aAAL,GAAqB,CAApE,CAApB;AACA,QAAMumB,YAAY,GAAGnf,IAAI,CAACkf,GAAL,CAAS5lB,IAAI,CAACX,eAAd,EAA+BqmB,QAAQ,CAAC/pB,MAAT,GAAkBqE,IAAI,CAACV,aAAL,GAAqB,CAAtE,CAArB,CA1BwB,CA4BxB;;AACAmmB,YAAQ,CAAClkB,IAAT,CAAc,WAAd,EAA2B,eAAeokB,WAAW,GAAG,CAA7B,GAAiC,GAAjC,GAAuCE,YAAY,GAAG,CAAtD,GAA0D,GAArF,EA7BwB,CA+BxB;;AACA,QAAMC,QAAQ,GAAGP,SAAS,CACvBjkB,MADc,CACP,MADO,EACC,MAAMkkB,MADP,EAEdjkB,IAFc,CAET,OAFS,EAEA,cAFA,EAGdA,IAHc,CAGT,MAHS,EAGDvB,IAAI,CAACR,IAHJ,EAId+B,IAJc,CAIT,cAJS,EAIO,MAJP,EAKdA,IALc,CAKT,QALS,EAKCvB,IAAI,CAACT,MALN,EAMdgC,IANc,CAMT,GANS,EAMJ,CANI,EAOdA,IAPc,CAOT,GAPS,EAOJ,CAPI,EAQdA,IARc,CAQT,OARS,EAQAokB,WARA,EASdpkB,IATc,CAST,QATS,EASCskB,YATD,CAAjB;AAWA,QAAME,QAAQ,GAAGD,QAAQ,CAAC7kB,IAAT,GAAgBc,OAAhB,EAAjB,CA3CwB,CA6CxB;;AACAiG,SAAK,CAACuD,OAAN,CAAcnK,EAAd,EAAkB;AAChB1F,WAAK,EAAEqqB,QAAQ,CAACrqB,KADA;AAEhBC,YAAM,EAAEoqB,QAAQ,CAACpqB,MAFD;AAGhB+H,WAAK,EAAE,MAHS;AAIhBtC,QAAE,EAAEA;AAJY,KAAlB;AAMD,GApDD;AAqDA,SAAOkkB,QAAP;AACD,CA1DD,C,CA0DG;;;AAEH,IAAMU,cAAc,GAAG,SAAjBA,cAAiB,CAASX,OAAT,EAAkBrd,KAAlB,EAAyB;AAC9CA,OAAK,CAACiD,KAAN,GAAc/K,OAAd,CAAsB,UAASiI,CAAT,EAAY;AAChC,QAAI,OAAOA,CAAP,KAAa,WAAb,IAA4B,OAAOH,KAAK,CAAC/G,IAAN,CAAWkH,CAAX,CAAP,KAAyB,WAAzD,EAAsE;AACpEkd,aAAO,CACJljB,MADH,CACU,MAAMgG,CADhB,EAEG5G,IAFH,CAGI,WAHJ,EAII,gBACGyG,KAAK,CAAC/G,IAAN,CAAWkH,CAAX,EAAczF,CAAd,GAAkBsF,KAAK,CAAC/G,IAAN,CAAWkH,CAAX,EAAczM,KAAd,GAAsB,CAD3C,IAEE,GAFF,IAGGsM,KAAK,CAAC/G,IAAN,CAAWkH,CAAX,EAAcxF,CAAd,GAAkBqF,KAAK,CAAC/G,IAAN,CAAWkH,CAAX,EAAcxM,MAAd,GAAuB,CAH5C,IAIE,IARN;AAUD;AACF,GAbD;AAcA;AACD,CAhBD;;AAkBA,IAAMsqB,WAAW,GAAG,SAAdA,WAAc,CAAS9B,GAAT,EAAc;AAChC,SAAO,CAACA,GAAG,CAACC,OAAJ,GAAcD,GAAG,CAACE,KAAlB,GAA0BF,GAAG,CAACG,OAA/B,EAAwCvf,OAAxC,CAAgD,KAAhD,EAAuD,EAAvD,CAAP;AACD,CAFD;AAIA;;;;;;;;AAMA,IAAMmhB,gBAAgB,GAAG,SAAnBA,gBAAmB,CAAS/C,aAAT,EAAwBzH,CAAxB,EAA2B;AAClDyH,eAAa,CAACjjB,OAAd,CAAsB,UAASgH,CAAT,EAAY;AAChCwU,KAAC,CAACrK,OAAF,CAAUnK,CAAC,CAACkd,OAAZ,EAAqBld,CAAC,CAACod,OAAvB,EAAgC;AAAE6B,kBAAY,EAAEjf;AAAhB,KAAhC,EAAqD+e,WAAW,CAAC/e,CAAD,CAAhE;AACD,GAFD;AAGA,SAAOic,aAAP;AACD,CALD,C,CAKG;;;AAEH,IAAIiD,MAAM,GAAG,CAAb;AACA;;;;;;;;AAOA,IAAMC,0BAA0B,GAAG,SAA7BA,0BAA6B,CAAS5L,GAAT,EAAc0J,GAAd,EAAmBzI,CAAnB,EAAsBpa,MAAtB,EAA8B;AAC/D8kB,QAAM,GADyD,CAG/D;;AACA,MAAMpgB,IAAI,GAAG0V,CAAC,CAAC1V,IAAF,CAAOme,GAAG,CAACC,OAAX,EAAoBD,GAAG,CAACG,OAAxB,EAAiC2B,WAAW,CAAC9B,GAAD,CAA5C,CAAb,CAJ+D,CAM/D;;AACA,MAAM5a,YAAY,GAAGC,+CAAI,GACtB9G,CADkB,CAChB,UAAS+G,CAAT,EAAY;AACb,WAAOA,CAAC,CAAC/G,CAAT;AACD,GAHkB,EAIlBC,CAJkB,CAIhB,UAAS8G,CAAT,EAAY;AACb,WAAOA,CAAC,CAAC9G,CAAT;AACD,GANkB,EAOlBxH,KAPkB,CAOZuO,6CAPY,CAArB,CAP+D,CAgB/D;;AACA,MAAMI,OAAO,GAAG2Q,GAAG,CAChBnZ,MADa,CACN,MADM,EACE,MAAMA,MADR,EAEbC,IAFa,CAER,OAFQ,EAEC,qBAFD,EAGbA,IAHa,CAGR,GAHQ,EAGHgI,YAAY,CAACvD,IAAI,CAACI,MAAN,CAHT,EAIb7E,IAJa,CAIR,QAJQ,EAIEvB,IAAI,CAACT,MAJP,EAKbgC,IALa,CAKR,MALQ,EAKA,MALA,CAAhB,CAjB+D,CAwB/D;;AACA,MAAI4iB,GAAG,CAACI,OAAJ,CAAY+B,OAAZ,KAAwBC,6CAAI,CAAC9C,cAAL,CAAoBC,eAAhD,EAAiE;AAC/D5Z,WAAO,CAACvI,IAAR,CAAa,kBAAb,EAAiC,KAAjC;AACD,GA3B8D,CA6B/D;;;AACA,MAAIwI,GAAG,GAAG,EAAV;;AACA,MAAI/J,IAAI,CAACpF,mBAAT,EAA8B;AAC5BmP,OAAG,GACDC,MAAM,CAACC,QAAP,CAAgBC,QAAhB,GACA,IADA,GAEAF,MAAM,CAACC,QAAP,CAAgBE,IAFhB,GAGAH,MAAM,CAACC,QAAP,CAAgBG,QAHhB,GAIAJ,MAAM,CAACC,QAAP,CAAgBI,MALlB;AAMAN,OAAG,GAAGA,GAAG,CAAChF,OAAJ,CAAY,KAAZ,EAAmB,KAAnB,CAAN;AACAgF,OAAG,GAAGA,GAAG,CAAChF,OAAJ,CAAY,KAAZ,EAAmB,KAAnB,CAAN;AACD,GAxC8D,CA0C/D;AACA;AAEA;;;AACA,UAAQof,GAAG,CAACI,OAAJ,CAAYiC,KAApB;AACE,SAAKD,6CAAI,CAACnD,WAAL,CAAiBC,WAAtB;AACEvZ,aAAO,CAACvI,IAAR,CAAa,YAAb,EAA2B,SAASwI,GAAT,GAAe,GAAf,GAAqB0c,kDAAS,CAAC9B,SAAV,CAAoBI,eAAzC,GAA2D,GAAtF;AACA;;AACF,SAAKwB,6CAAI,CAACnD,WAAL,CAAiBE,YAAtB;AACExZ,aAAO,CAACvI,IAAR,CAAa,YAAb,EAA2B,SAASwI,GAAT,GAAe,GAAf,GAAqB0c,kDAAS,CAAC9B,SAAV,CAAoBQ,gBAAzC,GAA4D,GAAvF;AACA;;AACF,SAAKoB,6CAAI,CAACnD,WAAL,CAAiBG,WAAtB;AACEzZ,aAAO,CAACvI,IAAR,CAAa,YAAb,EAA2B,SAASwI,GAAT,GAAe,GAAf,GAAqB0c,kDAAS,CAAC9B,SAAV,CAAoBM,eAAzC,GAA2D,GAAtF;AACA;;AACF,SAAKsB,6CAAI,CAACnD,WAAL,CAAiBI,QAAtB;AACE1Z,aAAO,CAACvI,IAAR,CAAa,YAAb,EAA2B,SAASwI,GAAT,GAAe,GAAf,GAAqB0c,kDAAS,CAAC9B,SAAV,CAAoBE,YAAzC,GAAwD,GAAnF;AACA;AAZJ;;AAeA,UAAQV,GAAG,CAACI,OAAJ,CAAYmC,KAApB;AACE,SAAKH,6CAAI,CAACnD,WAAL,CAAiBC,WAAtB;AACEvZ,aAAO,CAACvI,IAAR,CACE,cADF,EAEE,SAASwI,GAAT,GAAe,GAAf,GAAqB0c,kDAAS,CAAC9B,SAAV,CAAoBG,iBAAzC,GAA6D,GAF/D;AAIA;;AACF,SAAKyB,6CAAI,CAACnD,WAAL,CAAiBE,YAAtB;AACExZ,aAAO,CAACvI,IAAR,CACE,cADF,EAEE,SAASwI,GAAT,GAAe,GAAf,GAAqB0c,kDAAS,CAAC9B,SAAV,CAAoBO,kBAAzC,GAA8D,GAFhE;AAIA;;AACF,SAAKqB,6CAAI,CAACnD,WAAL,CAAiBG,WAAtB;AACEzZ,aAAO,CAACvI,IAAR,CACE,cADF,EAEE,SAASwI,GAAT,GAAe,GAAf,GAAqB0c,kDAAS,CAAC9B,SAAV,CAAoBK,iBAAzC,GAA6D,GAF/D;AAIA;;AACF,SAAKuB,6CAAI,CAACnD,WAAL,CAAiBI,QAAtB;AACE1Z,aAAO,CAACvI,IAAR,CAAa,cAAb,EAA6B,SAASwI,GAAT,GAAe,GAAf,GAAqB0c,kDAAS,CAAC9B,SAAV,CAAoBC,cAAzC,GAA0D,GAAvF;AACA;AArBJ,GA7D+D,CAqF/D;AAEA;;;AACA,MAAM+B,GAAG,GAAG7c,OAAO,CAAC7I,IAAR,GAAe2lB,cAAf,EAAZ;AACA,MAAMC,UAAU,GAAG/c,OAAO,CAAC7I,IAAR,GAAe6lB,gBAAf,CAAgCH,GAAG,GAAG,GAAtC,CAAnB,CAzF+D,CA2F/D;;AACA,MAAMI,OAAO,GAAG,QAAQX,MAAxB;AAEA,MAAMY,SAAS,GAAGvM,GAAG,CAClBrX,MADe,CACR,MADQ,EAEf7B,IAFe,CAEV,OAFU,EAED,sBAFC,EAGfA,IAHe,CAGV,IAHU,EAGJwlB,OAHI,EAIfxlB,IAJe,CAIV,GAJU,EAILslB,UAAU,CAACnkB,CAJN,EAKfnB,IALe,CAKV,GALU,EAKLslB,UAAU,CAAClkB,CALN,EAMfpB,IANe,CAMV,aANU,EAMK,QANL,EAOfA,IAPe,CAOV,mBAPU,EAOW,QAPX,EAQfA,IARe,CASd,OATc,EAUd,kBAAkBd,yDAAS,GAAGjG,UAA9B,GAA2C,eAA3C,GAA6DwF,IAAI,CAAC3C,QAAlE,GAA6E,IAV/D,EAYfoE,IAZe,CAYV0iB,GAAG,CAACE,KAZM,CAAlB,CA9F+D,CA4G/D;;AACA,MAAM4C,SAAS,GAAGD,SAAS,CAAC/lB,IAAV,GAAiBc,OAAjB,EAAlB,CA7G+D,CA+G/D;;AACA0Y,KAAG,CACAnZ,MADH,CACU,MADV,EACkB,MAAMylB,OADxB,EAEGxlB,IAFH,CAEQ,OAFR,EAEiB,yBAFjB,EAGGA,IAHH,CAGQ,GAHR,EAGaslB,UAAU,CAACnkB,CAAX,GAAeukB,SAAS,CAACvrB,KAAV,GAAkB,CAH9C,EAIG6F,IAJH,CAIQ,GAJR,EAIaslB,UAAU,CAAClkB,CAAX,GAAeskB,SAAS,CAACtrB,MAAV,GAAmB,CAJ/C,EAKG4F,IALH,CAKQ,OALR,EAKiB0lB,SAAS,CAACvrB,KAL3B,EAMG6F,IANH,CAMQ,QANR,EAMkB0lB,SAAS,CAACtrB,MAN5B,EAOG4F,IAPH,CAOQ,MAPR,EAOgB,OAPhB,EAQGA,IARH,CAQQ,cARR,EAQwB,KARxB;AAUA;AACD,CA3HD;AA6HA;;;;;;;AAKO,IAAMuc,IAAI,GAAG,SAAPA,IAAO,CAASrc,IAAT,EAAeL,EAAf,EAAmB;AACrCT,gDAAM,CAACoD,IAAP,CAAY,oBAAZ;AACAwiB,+CAAI,CAAC1iB,KAAL;AACA,MAAMwX,MAAM,GAAG6L,wDAAQ,CAAC7L,MAAxB;AACAA,QAAM,CAACC,EAAP,GAAYiL,6CAAZ,CAJqC,CAMrC;;AACA,MAAI;AACFlL,UAAM,CAAChQ,KAAP,CAAa5J,IAAb;AACD,GAFD,CAEE,OAAOggB,GAAP,EAAY;AACZ9gB,kDAAM,CAACmQ,KAAP,CAAa,gBAAb;AACD,GAXoC,CAarC;;;AACA,MAAM2J,GAAG,GAAGtY,iDAAM,gBAASf,EAAT,QAAlB,CAdqC,CAgBrC;;AACAqlB,oDAAS,CAACna,aAAV,CAAwBmO,GAAxB,EAA6Bza,IAA7B,EAjBqC,CAmBrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;AACA,MAAI0b,CAAJ,CAlCqC,CAoCrC;AACA;AACA;AACA;AACA;;AACAA,GAAC,GAAG,IAAI9Q,+CAAQ,CAAC0H,KAAb,CAAmB;AACrBC,cAAU,EAAE,IADS;AAErB4U,YAAQ,EAAE,IAFW;AAGrB3U,YAAQ,EAAE;AAHW,GAAnB,EAKDC,QALC,CAKQ;AACRzH,WAAO,EAAEhL,IAAI,CAACb,eADN;AAERyT,WAAO,EAAE,EAFD;AAGRC,WAAO,EAAE,EAHD;AAIRH,WAAO,EAAE,GAJD;AAKR0U,WAAO,EAAE,GALD;AAMRzU,WAAO,EAAE;AAND,GALR,EAaDG,mBAbC,CAamB,YAAW;AAC9B,WAAO,EAAP;AACD,GAfC,CAAJ,CAzCqC,CA0DrC;AACA;;AACA,MAAMuU,WAAW,GAAGjC,YAAY,CAAC3K,GAAD,EAAM8L,6CAAI,CAAC1C,WAAL,EAAN,EAA0BnI,CAA1B,CAAhC,CA5DqC,CA8DrC;AAEA;;AACA,MAAMyH,aAAa,GAAG+C,gBAAgB,CAACK,6CAAI,CAAC/B,gBAAL,EAAD,EAA0B9I,CAA1B,CAAtC;AAEA1P,8CAAK,CAACC,MAAN,CAAayP,CAAb,EAnEqC,CAmEpB;AAEjB;;AACAsK,gBAAc,CAACvL,GAAD,EAAMiB,CAAN,CAAd,CAtEqC,CAwErC;;AACAyH,eAAa,CAACjjB,OAAd,CAAsB,UAASikB,GAAT,EAAc;AAClCkC,8BAA0B,CAAC5L,GAAD,EAAM0J,GAAN,EAAWzI,CAAX,EAAc2L,WAAd,CAA1B;AACD,GAFD;AAIA,MAAMjsB,OAAO,GAAG4E,IAAI,CAACjF,cAArB;AAEA,MAAM6iB,SAAS,GAAGnD,GAAG,CAACxZ,IAAJ,GAAWc,OAAX,EAAlB;AACA,MAAMrG,KAAK,GAAGkiB,SAAS,CAACliB,KAAV,GAAkBN,OAAO,GAAG,CAA1C;AACA,MAAMO,MAAM,GAAGiiB,SAAS,CAACjiB,MAAV,GAAmBP,OAAO,GAAG,CAA5C;;AAEA,MAAI4E,IAAI,CAAC7D,WAAT,EAAsB;AACpBse,OAAG,CAAClZ,IAAJ,CAAS,OAAT,EAAkB,MAAlB;AACAkZ,OAAG,CAAClZ,IAAJ,CAAS,OAAT,uBAAgC7F,KAAhC;AACD,GAHD,MAGO;AACL+e,OAAG,CAAClZ,IAAJ,CAAS,QAAT,EAAmB5F,MAAnB;AACA8e,OAAG,CAAClZ,IAAJ,CAAS,OAAT,EAAkB7F,KAAlB;AACD;;AAED+e,KAAG,CAAClZ,IAAJ,CAAS,SAAT,YAAuBqc,SAAS,CAAClb,CAAV,GAActH,OAArC,cAAgDwiB,SAAS,CAACjb,CAAV,GAAcvH,OAA9D,cAAyEM,KAAzE,cAAkFC,MAAlF;AACD,CA5FM,C,CA4FJ;;AAEY;AACbwhB,SAAO,EAAPA,OADa;AAEbW,MAAI,EAAJA;AAFa,CAAf,E;;;;;;;;;;;ACrWA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA,eAAe,kCAAkC;AACjD,iBAAiB,kCAAkC;AACnD;AACA;AACA;AACA,qBAAqB,IAAI;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mJAAmJ;AACnJ,SAAS;;AAET;AACA;AACA,qBAAqB,+BAA+B;AACpD;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW,YAAY,IAAI,WAAW,SAAS;AACvE,cAAc,0BAA0B,EAAE;AAC1C,MAAM;AACN,WAAW,qSAAqS;AAChT,aAAa,wKAAwK;AACrL;AACA;AACA;;AAEA;AACA;AACA;AACA,mCAAmC;AACnC;AACA;;AAEA,iC;AACA,iC;AACA;AACA,uEAAuE;;AAEvE;AACA;AACA,iBAAiB,oCAAoC;AACrD;AACA;;AAEA,kBAAkB;AAClB,kEAAkE;;AAElE;AACA;AACA,qC;AACA;AACA;AACA,sC;AACA;AACA;AACA,qC;AACA;AACA;AACA,kC;AACA;AACA;AACA,4C;AACA;AACA;AACA,wC;AACA;AACA;AACA,mC;AACA;AACA;AACA,iB;AACA;AACA;AACA,CAAC;AACD,SAAS,YAAY,EAAE,MAAM,cAAc,IAAI,GAAG,uBAAuB,EAAE,QAAQ,eAAe,qCAAqC,4BAA4B,YAAY,EAAE,0BAA0B,uDAAuD,UAAU,EAAE,kCAAkC,8BAA8B,0BAA0B,EAAE,SAAS;AACnX,iBAAiB,iBAAiB;AAClC;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iCAAiC;AACjC,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL,qDAAqD;AACrD;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL,UAAU,wBAAwB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,2FAA2F,cAAc,uCAAuC,aAAa;AAC7J,aAAa,WAAW;AACxB,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA,CAAC;;;AAGD,IAAI,IAAgE;AACpE;AACA;AACA,6BAA6B,8CAA8C;AAC3E;AACA;AACA;AACA;AACA;AAC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AAY,QAAZ,CAAd;;AACA,YAAIX,MAAJ,EAAW;AACT8qB,kBAAQ,CAAClpB,MAAT,CAAgB,YAAW;AACzB,mBAAO5B,MAAK,CAACP,IAAN,EAAP;AACD,WAFD;AAGD;AACF;AACF;AACF,GA9BD;AA+BD,CAxNM;AA0NQ;AACbkc,SAAO,EAAPA,OADa;AAEbuO,aAAW,EAAXA,WAFa;AAGbI,UAAQ,EAARA,QAHa;AAIbtU,YAAU,EAAVA,UAJa;AAKbsG,MAAI,EAAJA;AALa,CAAf,E;;;;;;;;;;;AC9eA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA,eAAe,kCAAkC;AACjD,iBAAiB,kCAAkC;AACnD;AACA;AACA;AACA,qBAAqB,IAAI;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mJAAmJ;AACnJ,SAAS;;AAET;AACA;AACA,qBAAqB,+BAA+B;AACpD;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW,YAAY,IAAI,WAAW,SAAS;AACvE,cAAc,0BAA0B,EAAE;AAC1C,MAAM;AACN,WAAW,k8CAAk8C;AAC78C,aAAa,40BAA40B;AACz1B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,8CAA8C,WAAW,qD;AACrG;AACA;AACA,8CAA8C,gDAAgD,WAAW,yD;AACzG;AACA;AACA,iCAAiC,aAAa;AAC9C;AACA;AACA,gCAAgC,aAAa;AAC7C;AACA;AACA,gCAAgC;AAChC;AACA;AACA,kCAAkC,qDAAqD;AACvF;AACA;AACA,oBAAoB;AACpB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,+BAA+B,kBAAkB;AACjD;AACA;AACA,uBAAuB;AACvB;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA,4CAA4C,WAAW;AACvD;AACA;AACA,kCAAkC,UAAU;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB,8CAA8C;AAChE;AACA;AACA,kBAAkB,4CAA4C;AAC9D;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,SAAS,4BAA4B,EAAE,MAAM,YAAY,IAAI,GAAG,wBAAwB,EAAE,wBAAwB,EAAE,SAAS,EAAE,2PAA2P,6BAA6B,qCAAqC,gFAAgF,yDAAyD,EAAE,yBAAyB,EAAE,yBAAyB,EAAE,yBAAyB,EAAE,yBAAyB,EAAE,yBAAyB,EAAE,mCAAmC,eAAe,aAAa,GAAG,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,eAAe,UAAU,gBAAgB,mNAAmN,6RAA6R,SAAS,eAAe,aAAa,iBAAiB,iIAAiI,yDAAyD,0BAA0B,GAAG,yQAAyQ,uIAAuI,0QAA0Q,aAAa,MAAM,gBAAgB,QAAQ,GAAG,0JAA0J,EAAE,6BAA6B,EAAE,0JAA0J,EAAE,+IAA+I,EAAE,+IAA+I,EAAE,sHAAsH,EAAE,0QAA0Q,EAAE,qRAAqR,EAAE,0QAA0Q,EAAE,0QAA0Q,EAAE,0QAA0Q,EAAE,0QAA0Q,EAAE,qRAAqR,EAAE,0QAA0Q,EAAE,0QAA0Q,EAAE,0QAA0Q,0DAA0D,cAAc,gBAAgB,WAAW,GAAG,WAAW,EAAE,0QAA0Q,EAAE,wQAAwQ,qjBAAqjB,kSAAkS,EAAE,8PAA8P,EAAE,cAAc,EAAE,mJAAmJ,EAAE,WAAW,kFAAkF,WAAW,EAAE,sBAAsB,iBAAiB,WAAW,EAAE,mJAAmJ,EAAE,mJAAmJ,EAAE,mJAAmJ,eAAe,+GAA+G,GAAG,wQAAwQ,EAAE,0QAA0Q,EAAE,wQAAwQ,EAAE,wQAAwQ,EAAE,wQAAwQ,EAAE,wQAAwQ,EAAE,wQAAwQ,EAAE,wQAAwQ,EAAE,0QAA0Q,EAAE,wQAAwQ,EAAE,mRAAmR,EAAE,mRAAmR,eAAe,QAAQ,+BAA+B,wQAAwQ,+BAA+B,0QAA0Q,aAAa,MAAM,iBAAiB,4HAA4H,EAAE,6GAA6G,kBAAkB,6GAA6G,EAAE,wHAAwH,EAAE,wHAAwH,EAAE,WAAW,EAAE,6GAA6G,EAAE,6GAA6G,EAAE,+IAA+I,EAAE,0JAA0J,gBAAgB,wQAAwQ,sFAAsF,wQAAwQ,oIAAoI,wQAAwQ,EAAE,8PAA8P,8BAA8B,QAAQ,kBAAkB,+FAA+F,iNAAiN,QAAQ,iBAAiB,QAAQ,GAAG,WAAW,gBAAgB,QAAQ,GAAG,WAAW,+BAA+B,QAAQ,iBAAiB,QAAQ,iBAAiB,wIAAwI,iBAAiB,mJAAmJ,iBAAiB,WAAW,GAAG,WAAW,EAAE,WAAW,EAAE,0BAA0B,gBAAgB,sGAAsG,kBAAkB,+IAA+I,EAAE,+IAA+I,EAAE,WAAW,EAAE,WAAW,yCAAyC,MAAM,kBAAkB,+FAA+F,iBAAiB,mJAAmJ,iBAAiB,mJAAmJ,iCAAiC,8PAA8P,EAAE,6GAA6G,EAAE,6GAA6G,8BAA8B,QAAQ,iBAAiB,QAAQ;AAC5xhB,kBAAkB;AAClB;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iCAAiC;AACjC,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL,qDAAqD;AACrD;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,mBAAmB;AACnD;AACA,gCAAgC,mBAAmB;AACnD;AACA;AACA;AACA;AACA;AACA,2BAA2B,Y;AAC3B;AACA,2BAA2B,Y;AAC3B;AACA,2BAA2B,Y;AAC3B;AACA,2BAA2B,Y;AAC3B;AACA,2BAA2B,Y;AAC3B;AACA,2BAA2B,Y;AAC3B;AACA,2BAA2B,Y;AAC3B;AACA,2BAA2B,Y;AAC3B;AACA,2BAA2B,Y;AAC3B;AACA,2BAA2B,Y;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,icAAic,25KAA25K,UAAU;AACt2L,aAAa,UAAU,6BAA6B,QAAQ,0DAA0D,WAAW,gCAAgC,YAAY;AAC7K,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA,CAAC;;;AAGD,IAAI,IAAgE;AACpE;AACA;AACA,6BAA6B,8CAA8C;AAC3E;AACA;AACA;AACA;AACA;AACA,iBAAiB,mBAAO,CAAC,0DAAI,eAAe,mBAAO,CAAC,qDAAM;AAC1D;AACA;AACA,IAAI,KAA6B,IAAI,4CAAY;AACjD;AACA;AACA,C;;;;;;;;;;;;;ACt+BA;AAAA,IAAMS,SAAS,GAAG,SAAZA,SAAY,CAAA7d,OAAO;AAAA,8CAENA,OAAO,CAAClG,UAFF,2BAGZkG,OAAO,CAAC4sB,SAHI,kDAOb5sB,OAAO,CAAC4sB,SAPK,qHAeb5sB,OAAO,CAACge,OAfK,4BAgBXhe,OAAO,CAAC8d,UAhBG,+KA4Bb9d,OAAO,CAAC6sB,cA5BK,wDAgCX7sB,OAAO,CAACke,SAhCG,kFAqCXle,OAAO,CAACke,SArCG,8EA0CDle,OAAO,CAAC4mB,mBA1CP,qHAkDb5mB,OAAO,CAAC8sB,SAlDK,4BAmDX9sB,OAAO,CAAC+sB,aAnDG,4EAwDb/sB,OAAO,CAACgtB,UAxDK,4JAgENhtB,OAAO,CAAClG,UAhEF,sDAkEPkG,OAAO,CAAC8sB,SAlED,sCAmED9sB,OAAO,CAACitB,OAnEP;AAAA,CAAzB;;AA0EepP,wEAAf,E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1EA;AACA;AACA;AACA;AACA;AAEA,IAAIqP,UAAU,GAAG,EAAjB;AACA,IAAI3vB,UAAU,GAAG,EAAjB;AACA,IAAI4vB,WAAW,GAAG,EAAlB;AACA,IAAIC,QAAQ,GAAG,EAAf;AACA,IAAIlT,KAAK,GAAG,EAAZ;AACA,IAAImT,QAAQ,GAAG,EAAf;AACA,IAAIC,KAAK,GAAG,EAAZ;AACA,IAAIC,cAAc,GAAG,EAArB;AACA,IAAMC,IAAI,GAAG,CAAC,QAAD,EAAW,MAAX,EAAmB,MAAnB,EAA2B,WAA3B,CAAb;AACA,IAAItX,IAAI,GAAG,EAAX;AACA,IAAIuX,iBAAiB,GAAG,KAAxB,C,CAEA;;AACA,IAAIC,SAAS,GAAG,CAAhB;AAEO,IAAMvqB,KAAK,GAAG,SAARA,KAAQ,GAAW;AAC9BkqB,UAAQ,GAAG,EAAX;AACAC,OAAK,GAAG,EAAR;AACAC,gBAAc,GAAG,EAAjB;AACArX,MAAI,GAAG,EAAP;AACAgE,OAAK,GAAG,EAAR;AACAyT,SAAO,GAAG,CAAV;AACAC,UAAQ,GAAGh0B,SAAX;AACAi0B,YAAU,GAAGj0B,SAAb;AACAk0B,UAAQ,GAAG,EAAX;AACAZ,YAAU,GAAG,EAAb;AACA3vB,YAAU,GAAG,EAAb;AACA4vB,aAAW,GAAG,EAAd;AACAC,UAAQ,GAAG,EAAX;AACAK,mBAAiB,GAAG,KAApB;AACAC,WAAS,GAAG,CAAZ;AACD,CAhBM;AAkBA,IAAMK,aAAa,GAAG,SAAhBA,aAAgB,CAASpM,GAAT,EAAc;AACzCpkB,YAAU,GAAGokB,GAAb;AACD,CAFM;AAIA,IAAMqM,aAAa,GAAG,SAAhBA,aAAgB,GAAW;AACtC,SAAOzwB,UAAP;AACD,CAFM;AAIA,IAAM0wB,cAAc,GAAG,SAAjBA,cAAiB,CAAStM,GAAT,EAAc;AAC1CwL,aAAW,GAAGxL,GAAd;AACD,CAFM;AAIA,IAAMuM,cAAc,GAAG,SAAjBA,cAAiB,GAAW;AACvC,SAAOf,WAAP;AACD,CAFM;AAIA,IAAMgB,aAAa,GAAG,SAAhBA,aAAgB,CAASxM,GAAT,EAAc;AACzCuL,YAAU,GAAGvL,GAAb;AACD,CAFM;AAIA,IAAMyM,uBAAuB,GAAG,SAA1BA,uBAA0B,GAAW;AAChDX,mBAAiB,GAAG,IAApB;AACD,CAFM;AAIA,IAAMY,oBAAoB,GAAG,SAAvBA,oBAAuB,GAAW;AAC7C,SAAOZ,iBAAP;AACD,CAFM;AAIA,IAAMa,aAAa,GAAG,SAAhBA,aAAgB,GAAW;AACtC,SAAOpB,UAAP;AACD,CAFM;AAIA,IAAMqB,WAAW,GAAG,SAAdA,WAAc,CAAS5M,GAAT,EAAc;AACvCyL,UAAQ,GAAGzL,GAAG,CAAC6M,WAAJ,GAAkB7pB,KAAlB,CAAwB,QAAxB,CAAX;AACD,CAFM;AAIA,IAAM8pB,WAAW,GAAG,SAAdA,WAAc,GAAW;AACpC,SAAOrB,QAAP;AACD,CAFM;AAIA,IAAMrJ,QAAQ,GAAG,SAAXA,QAAW,CAASpC,GAAT,EAAc;AACpCzH,OAAK,GAAGyH,GAAR;AACD,CAFM;AAIA,IAAMqC,QAAQ,GAAG,SAAXA,QAAW,GAAW;AACjC,SAAO9J,KAAP;AACD,CAFM;AAIA,IAAMwU,UAAU,GAAG,SAAbA,UAAa,CAAS/M,GAAT,EAAc;AACtC4L,gBAAc,GAAG5L,GAAjB;AACA0L,UAAQ,CAACxlB,IAAT,CAAc8Z,GAAd;AACD,CAHM;AAKA,IAAMgN,WAAW,GAAG,SAAdA,WAAc,GAAW;AACpC,SAAOtB,QAAP;AACD,CAFM;AAIA,IAAMuB,QAAQ,GAAG,SAAXA,QAAW,GAAW;AACjC,MAAIC,iBAAiB,GAAGC,YAAY,EAApC;AACA,MAAMC,QAAQ,GAAG,EAAjB;AACA,MAAIC,cAAc,GAAG,CAArB;;AACA,SAAO,CAACH,iBAAD,IAAsBG,cAAc,GAAGD,QAA9C,EAAwD;AACtDF,qBAAiB,GAAGC,YAAY,EAAhC;AACAE,kBAAc;AACf;;AAED1B,OAAK,GAAGQ,QAAR;AAEA,SAAOR,KAAP;AACD,CAZM;;AAcP,IAAM2B,aAAa,GAAG,SAAhBA,aAAgB,CAASC,IAAT,EAAehC,UAAf,EAA2BE,QAA3B,EAAqC;AACzD,MAAI8B,IAAI,CAACC,UAAL,MAAqB,CAArB,IAA0B/B,QAAQ,CAAC/c,OAAT,CAAiB,UAAjB,KAAgC,CAA9D,EAAiE;AAC/D,WAAO,IAAP;AACD;;AACD,MAAI+c,QAAQ,CAAC/c,OAAT,CAAiB6e,IAAI,CAACE,MAAL,CAAY,MAAZ,EAAoBZ,WAApB,EAAjB,KAAuD,CAA3D,EAA8D;AAC5D,WAAO,IAAP;AACD;;AACD,SAAOpB,QAAQ,CAAC/c,OAAT,CAAiB6e,IAAI,CAACE,MAAL,CAAYlC,UAAU,CAAC/nB,IAAX,EAAZ,CAAjB,KAAoD,CAA3D;AACD,CARD;;AAUA,IAAMkqB,cAAc,GAAG,SAAjBA,cAAiB,CAASC,IAAT,EAAepC,UAAf,EAA2BE,QAA3B,EAAqC;AAC1D,MAAI,CAACA,QAAQ,CAACroB,MAAV,IAAoBuqB,IAAI,CAACC,aAA7B,EAA4C;AAC5C,MAAIC,SAAS,GAAGC,kDAAM,CAACH,IAAI,CAACE,SAAN,EAAiBtC,UAAjB,EAA6B,IAA7B,CAAtB;AACAsC,WAAS,CAAC7C,GAAV,CAAc,CAAd,EAAiB,GAAjB;AACA,MAAI+C,OAAO,GAAGD,kDAAM,CAACH,IAAI,CAACI,OAAN,EAAexC,UAAf,EAA2B,IAA3B,CAApB;AACA,MAAIyC,aAAa,GAAGC,YAAY,CAACJ,SAAD,EAAYE,OAAZ,EAAqBxC,UAArB,EAAiCE,QAAjC,CAAhC;AACAkC,MAAI,CAACI,OAAL,GAAeA,OAAO,CAACG,MAAR,EAAf;AACAP,MAAI,CAACK,aAAL,GAAqBA,aAArB;AACD,CARD;;AAUA,IAAMC,YAAY,GAAG,SAAfA,YAAe,CAASJ,SAAT,EAAoBE,OAApB,EAA6BxC,UAA7B,EAAyCE,QAAzC,EAAmD;AACtE,MAAI0C,OAAO,GAAG,KAAd;AACA,MAAIH,aAAa,GAAG,IAApB;;AACA,SAAOH,SAAS,IAAIE,OAApB,EAA6B;AAC3B,QAAI,CAACI,OAAL,EAAc;AACZH,mBAAa,GAAGD,OAAO,CAACG,MAAR,EAAhB;AACD;;AACDC,WAAO,GAAGb,aAAa,CAACO,SAAD,EAAYtC,UAAZ,EAAwBE,QAAxB,CAAvB;;AACA,QAAI0C,OAAJ,EAAa;AACXJ,aAAO,CAAC/C,GAAR,CAAY,CAAZ,EAAe,GAAf;AACD;;AACD6C,aAAS,CAAC7C,GAAV,CAAc,CAAd,EAAiB,GAAjB;AACD;;AACD,SAAOgD,aAAP;AACD,CAdD;;AAgBA,IAAMI,YAAY,GAAG,SAAfA,YAAe,CAASC,QAAT,EAAmB9C,UAAnB,EAA+B9X,GAA/B,EAAoC;AACvDA,KAAG,GAAGA,GAAG,CAACjQ,IAAJ,EAAN,CADuD,CAGvD;;AACA,MAAM8qB,EAAE,GAAG,sBAAX;AACA,MAAMC,cAAc,GAAGD,EAAE,CAACE,IAAH,CAAQ/a,GAAG,CAACjQ,IAAJ,EAAR,CAAvB;;AAEA,MAAI+qB,cAAc,KAAK,IAAvB,EAA6B;AAC3B;AACA,QAAIE,gBAAgB,GAAG,IAAvB;AACAF,kBAAc,CAAC,CAAD,CAAd,CAAkBvrB,KAAlB,CAAwB,GAAxB,EAA6BnF,OAA7B,CAAqC,UAASkB,EAAT,EAAa;AAChD,UAAI4uB,IAAI,GAAGe,YAAY,CAAC3vB,EAAD,CAAvB;;AACA,UAAI,OAAO4uB,IAAP,KAAgB,WAApB,EAAiC;AAC/B,YAAI,CAACc,gBAAL,EAAuB;AACrBA,0BAAgB,GAAGd,IAAnB;AACD,SAFD,MAEO;AACL,cAAIA,IAAI,CAACI,OAAL,GAAeU,gBAAgB,CAACV,OAApC,EAA6C;AAC3CU,4BAAgB,GAAGd,IAAnB;AACD;AACF;AACF;AACF,KAXD;;AAaA,QAAI,CAACc,gBAAL,EAAuB;AACrB,UAAME,EAAE,GAAG,IAAIC,IAAJ,EAAX;AACAD,QAAE,CAACE,QAAH,CAAY,CAAZ,EAAe,CAAf,EAAkB,CAAlB,EAAqB,CAArB;AACA,aAAOF,EAAP;AACD,KAJD,MAIO;AACL,aAAOF,gBAAgB,CAACV,OAAxB;AACD;AACF,GA9BsD,CAgCvD;;;AACA,MAAIe,KAAK,GAAGhB,kDAAM,CAACra,GAAD,EAAM8X,UAAU,CAAC/nB,IAAX,EAAN,EAAyB,IAAzB,CAAlB;;AACA,MAAIsrB,KAAK,CAACC,OAAN,EAAJ,EAAqB;AACnB,WAAOD,KAAK,CAACZ,MAAN,EAAP;AACD,GAFD,MAEO;AACL5vB,kDAAM,CAACmQ,KAAP,CAAa,kBAAkBgF,GAA/B;AACAnV,kDAAM,CAACmQ,KAAP,CAAa,sBAAsB8c,UAAU,CAAC/nB,IAAX,EAAnC;AACD,GAvCsD,CAyCvD;;;AACA,SAAO,IAAIorB,IAAJ,EAAP;AACD,CA3CD;;AA6CA,IAAMI,cAAc,GAAG,SAAjBA,cAAiB,CAASC,iBAAT,EAA4BC,YAA5B,EAA0C;AAC/D,MAAID,iBAAiB,KAAK,IAA1B,EAAgC;AAC9B,YAAQA,iBAAiB,CAAC,CAAD,CAAzB;AACE,WAAK,GAAL;AACEC,oBAAY,CAAClE,GAAb,CAAiBiE,iBAAiB,CAAC,CAAD,CAAlC,EAAuC,SAAvC;AACA;;AACF,WAAK,GAAL;AACEC,oBAAY,CAAClE,GAAb,CAAiBiE,iBAAiB,CAAC,CAAD,CAAlC,EAAuC,SAAvC;AACA;;AACF,WAAK,GAAL;AACEC,oBAAY,CAAClE,GAAb,CAAiBiE,iBAAiB,CAAC,CAAD,CAAlC,EAAuC,OAAvC;AACA;;AACF,WAAK,GAAL;AACEC,oBAAY,CAAClE,GAAb,CAAiBiE,iBAAiB,CAAC,CAAD,CAAlC,EAAuC,MAAvC;AACA;;AACF,WAAK,GAAL;AACEC,oBAAY,CAAClE,GAAb,CAAiBiE,iBAAiB,CAAC,CAAD,CAAlC,EAAuC,OAAvC;AACA;AAfJ;AAiBD,GAnB8D,CAoB/D;;;AACA,SAAOC,YAAY,CAAChB,MAAb,EAAP;AACD,CAtBD;;AAwBA,IAAMiB,UAAU,GAAG,SAAbA,UAAa,CAASd,QAAT,EAAmB9C,UAAnB,EAA+B9X,GAA/B,EAAoC2b,SAApC,EAA+C;AAChEA,WAAS,GAAGA,SAAS,IAAI,KAAzB;AACA3b,KAAG,GAAGA,GAAG,CAACjQ,IAAJ,EAAN,CAFgE,CAIhE;;AACA,MAAIsrB,KAAK,GAAGhB,kDAAM,CAACra,GAAD,EAAM8X,UAAU,CAAC/nB,IAAX,EAAN,EAAyB,IAAzB,CAAlB;;AACA,MAAIsrB,KAAK,CAACC,OAAN,EAAJ,EAAqB;AACnB,QAAIK,SAAJ,EAAe;AACbN,WAAK,CAAC9D,GAAN,CAAU,CAAV,EAAa,GAAb;AACD;;AACD,WAAO8D,KAAK,CAACZ,MAAN,EAAP;AACD;;AAED,SAAOc,cAAc,CAAC,oBAAoBR,IAApB,CAAyB/a,GAAG,CAACjQ,IAAJ,EAAzB,CAAD,EAAuCsqB,kDAAM,CAACO,QAAD,CAA7C,CAArB;AACD,CAdD;;AAgBA,IAAIrC,OAAO,GAAG,CAAd;;AACA,IAAMqD,OAAO,GAAG,SAAVA,OAAU,CAASC,KAAT,EAAgB;AAC9B,MAAI,OAAOA,KAAP,KAAiB,WAArB,EAAkC;AAChCtD,WAAO,GAAGA,OAAO,GAAG,CAApB;AACA,WAAO,SAASA,OAAhB;AACD;;AACD,SAAOsD,KAAP;AACD,CAND,C,CAOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA,IAAMC,WAAW,GAAG,SAAdA,WAAc,CAASC,QAAT,EAAmBC,OAAnB,EAA4B;AAC9C,MAAIC,EAAJ;;AAEA,MAAID,OAAO,CAACnZ,MAAR,CAAe,CAAf,EAAkB,CAAlB,MAAyB,GAA7B,EAAkC;AAChCoZ,MAAE,GAAGD,OAAO,CAACnZ,MAAR,CAAe,CAAf,EAAkBmZ,OAAO,CAACrsB,MAA1B,CAAL;AACD,GAFD,MAEO;AACLssB,MAAE,GAAGD,OAAL;AACD;;AAED,MAAM1mB,IAAI,GAAG2mB,EAAE,CAAC1sB,KAAH,CAAS,GAAT,CAAb;AAEA,MAAM2qB,IAAI,GAAG,EAAb,CAX8C,CAa9C;;AACAgC,aAAW,CAAC5mB,IAAD,EAAO4kB,IAAP,EAAa9B,IAAb,CAAX;;AAEA,OAAK,IAAIjlB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGmC,IAAI,CAAC3F,MAAzB,EAAiCwD,CAAC,EAAlC,EAAsC;AACpCmC,QAAI,CAACnC,CAAD,CAAJ,GAAUmC,IAAI,CAACnC,CAAD,CAAJ,CAAQpD,IAAR,EAAV;AACD;;AAED,MAAIosB,WAAW,GAAG,EAAlB;;AACA,UAAQ7mB,IAAI,CAAC3F,MAAb;AACE,SAAK,CAAL;AACEuqB,UAAI,CAAC5uB,EAAL,GAAUswB,OAAO,EAAjB;AACA1B,UAAI,CAACE,SAAL,GAAiB2B,QAAQ,CAACzB,OAA1B;AACA6B,iBAAW,GAAG7mB,IAAI,CAAC,CAAD,CAAlB;AACA;;AACF,SAAK,CAAL;AACE4kB,UAAI,CAAC5uB,EAAL,GAAUswB,OAAO,EAAjB;AACA1B,UAAI,CAACE,SAAL,GAAiBO,YAAY,CAACn2B,SAAD,EAAYszB,UAAZ,EAAwBxiB,IAAI,CAAC,CAAD,CAA5B,CAA7B;AACA6mB,iBAAW,GAAG7mB,IAAI,CAAC,CAAD,CAAlB;AACA;;AACF,SAAK,CAAL;AACE4kB,UAAI,CAAC5uB,EAAL,GAAUswB,OAAO,CAACtmB,IAAI,CAAC,CAAD,CAAL,CAAjB;AACA4kB,UAAI,CAACE,SAAL,GAAiBO,YAAY,CAACn2B,SAAD,EAAYszB,UAAZ,EAAwBxiB,IAAI,CAAC,CAAD,CAA5B,CAA7B;AACA6mB,iBAAW,GAAG7mB,IAAI,CAAC,CAAD,CAAlB;AACA;;AACF;AAhBF;;AAmBA,MAAI6mB,WAAJ,EAAiB;AACfjC,QAAI,CAACI,OAAL,GAAeoB,UAAU,CAACxB,IAAI,CAACE,SAAN,EAAiBtC,UAAjB,EAA6BqE,WAA7B,EAA0C9D,iBAA1C,CAAzB;AACA6B,QAAI,CAACC,aAAL,GAAqBE,kDAAM,CAAC8B,WAAD,EAAc,YAAd,EAA4B,IAA5B,CAAN,CAAwCb,OAAxC,EAArB;AACArB,kBAAc,CAACC,IAAD,EAAOpC,UAAP,EAAmBE,QAAnB,CAAd;AACD;;AAED,SAAOkC,IAAP;AACD,CA/CD;;AAiDA,IAAMkC,SAAS,GAAG,SAAZA,SAAY,CAASC,UAAT,EAAqBL,OAArB,EAA8B;AAC9C,MAAIC,EAAJ;;AACA,MAAID,OAAO,CAACnZ,MAAR,CAAe,CAAf,EAAkB,CAAlB,MAAyB,GAA7B,EAAkC;AAChCoZ,MAAE,GAAGD,OAAO,CAACnZ,MAAR,CAAe,CAAf,EAAkBmZ,OAAO,CAACrsB,MAA1B,CAAL;AACD,GAFD,MAEO;AACLssB,MAAE,GAAGD,OAAL;AACD;;AAED,MAAM1mB,IAAI,GAAG2mB,EAAE,CAAC1sB,KAAH,CAAS,GAAT,CAAb;AAEA,MAAM2qB,IAAI,GAAG,EAAb,CAV8C,CAY9C;;AACAgC,aAAW,CAAC5mB,IAAD,EAAO4kB,IAAP,EAAa9B,IAAb,CAAX;;AAEA,OAAK,IAAIjlB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGmC,IAAI,CAAC3F,MAAzB,EAAiCwD,CAAC,EAAlC,EAAsC;AACpCmC,QAAI,CAACnC,CAAD,CAAJ,GAAUmC,IAAI,CAACnC,CAAD,CAAJ,CAAQpD,IAAR,EAAV;AACD;;AAED,UAAQuF,IAAI,CAAC3F,MAAb;AACE,SAAK,CAAL;AACEuqB,UAAI,CAAC5uB,EAAL,GAAUswB,OAAO,EAAjB;AACA1B,UAAI,CAACE,SAAL,GAAiB;AACfhgB,YAAI,EAAE,aADS;AAEf9O,UAAE,EAAE+wB;AAFW,OAAjB;AAIAnC,UAAI,CAACI,OAAL,GAAe;AACbhlB,YAAI,EAAEA,IAAI,CAAC,CAAD;AADG,OAAf;AAGA;;AACF,SAAK,CAAL;AACE4kB,UAAI,CAAC5uB,EAAL,GAAUswB,OAAO,EAAjB;AACA1B,UAAI,CAACE,SAAL,GAAiB;AACfhgB,YAAI,EAAE,cADS;AAEfkiB,iBAAS,EAAEhnB,IAAI,CAAC,CAAD;AAFA,OAAjB;AAIA4kB,UAAI,CAACI,OAAL,GAAe;AACbhlB,YAAI,EAAEA,IAAI,CAAC,CAAD;AADG,OAAf;AAGA;;AACF,SAAK,CAAL;AACE4kB,UAAI,CAAC5uB,EAAL,GAAUswB,OAAO,CAACtmB,IAAI,CAAC,CAAD,CAAL,CAAjB;AACA4kB,UAAI,CAACE,SAAL,GAAiB;AACfhgB,YAAI,EAAE,cADS;AAEfkiB,iBAAS,EAAEhnB,IAAI,CAAC,CAAD;AAFA,OAAjB;AAIA4kB,UAAI,CAACI,OAAL,GAAe;AACbhlB,YAAI,EAAEA,IAAI,CAAC,CAAD;AADG,OAAf;AAGA;;AACF;AA/BF;;AAkCA,SAAO4kB,IAAP;AACD,CAtDD;;AAwDA,IAAI1B,QAAJ;AACA,IAAIC,UAAJ;AACA,IAAIC,QAAQ,GAAG,EAAf;AACA,IAAM6D,MAAM,GAAG,EAAf;AACO,IAAMC,OAAO,GAAG,SAAVA,OAAU,CAASle,KAAT,EAAgBhJ,IAAhB,EAAsB;AAC3C,MAAMmnB,OAAO,GAAG;AACdC,WAAO,EAAEvE,cADK;AAEd/d,QAAI,EAAE+d,cAFQ;AAGdwE,aAAS,EAAE,KAHG;AAIdxC,iBAAa,EAAE,KAJD;AAKdI,iBAAa,EAAE,IALD;AAMdqC,OAAG,EAAE;AAAEtnB,UAAI,EAAEA;AAAR,KANS;AAOd4kB,QAAI,EAAE5b,KAPQ;AAQdlR,WAAO,EAAE;AARK,GAAhB;AAUA,MAAMyvB,QAAQ,GAAGT,SAAS,CAAC3D,UAAD,EAAanjB,IAAb,CAA1B;AACAmnB,SAAO,CAACG,GAAR,CAAYxC,SAAZ,GAAwByC,QAAQ,CAACzC,SAAjC;AACAqC,SAAO,CAACG,GAAR,CAAYtC,OAAZ,GAAsBuC,QAAQ,CAACvC,OAA/B;AACAmC,SAAO,CAACnxB,EAAR,GAAauxB,QAAQ,CAACvxB,EAAtB;AACAmxB,SAAO,CAACJ,UAAR,GAAqB5D,UAArB;AACAgE,SAAO,CAACK,MAAR,GAAiBD,QAAQ,CAACC,MAA1B;AACAL,SAAO,CAACM,IAAR,GAAeF,QAAQ,CAACE,IAAxB;AACAN,SAAO,CAACO,IAAR,GAAeH,QAAQ,CAACG,IAAxB;AACAP,SAAO,CAACQ,SAAR,GAAoBJ,QAAQ,CAACI,SAA7B;AACAR,SAAO,CAACS,KAAR,GAAgB5E,SAAhB;AAEAA,WAAS;AAET,MAAM/nB,GAAG,GAAGmoB,QAAQ,CAACjmB,IAAT,CAAcgqB,OAAd,CAAZ;AAEAhE,YAAU,GAAGgE,OAAO,CAACnxB,EAArB,CA1B2C,CA2B3C;;AACAixB,QAAM,CAACE,OAAO,CAACnxB,EAAT,CAAN,GAAqBiF,GAAG,GAAG,CAA3B;AACD,CA7BM;AA+BA,IAAM0qB,YAAY,GAAG,SAAfA,YAAe,CAAS3vB,EAAT,EAAa;AACvC,MAAMiF,GAAG,GAAGgsB,MAAM,CAACjxB,EAAD,CAAlB;AACA,SAAOotB,QAAQ,CAACnoB,GAAD,CAAf;AACD,CAHM;AAKA,IAAM4sB,UAAU,GAAG,SAAbA,UAAa,CAAS7e,KAAT,EAAgBhJ,IAAhB,EAAsB;AAC9C,MAAM8nB,OAAO,GAAG;AACdV,WAAO,EAAEvE,cADK;AAEd/d,QAAI,EAAE+d,cAFQ;AAGdkF,eAAW,EAAE/e,KAHC;AAId4b,QAAI,EAAE5b,KAJQ;AAKdlR,WAAO,EAAE;AALK,GAAhB;AAOA,MAAMyvB,QAAQ,GAAGf,WAAW,CAACtD,QAAD,EAAWljB,IAAX,CAA5B;AACA8nB,SAAO,CAAChD,SAAR,GAAoByC,QAAQ,CAACzC,SAA7B;AACAgD,SAAO,CAAC9C,OAAR,GAAkBuC,QAAQ,CAACvC,OAA3B;AACA8C,SAAO,CAAC9xB,EAAR,GAAauxB,QAAQ,CAACvxB,EAAtB;AACA8xB,SAAO,CAACN,MAAR,GAAiBD,QAAQ,CAACC,MAA1B;AACAM,SAAO,CAACL,IAAR,GAAeF,QAAQ,CAACE,IAAxB;AACAK,SAAO,CAACJ,IAAR,GAAeH,QAAQ,CAACG,IAAxB;AACAI,SAAO,CAACH,SAAR,GAAoBJ,QAAQ,CAACI,SAA7B;AACAzE,UAAQ,GAAG4E,OAAX;AACAlF,OAAK,CAACzlB,IAAN,CAAW2qB,OAAX;AACD,CAlBM;;AAoBP,IAAM1D,YAAY,GAAG,SAAfA,YAAe,GAAW;AAC9B,MAAM4D,WAAW,GAAG,SAAdA,WAAc,CAAS/sB,GAAT,EAAc;AAChC,QAAM2pB,IAAI,GAAGxB,QAAQ,CAACnoB,GAAD,CAArB;AACA,QAAI6pB,SAAS,GAAG,EAAhB;;AACA,YAAQ1B,QAAQ,CAACnoB,GAAD,CAAR,CAAcqsB,GAAd,CAAkBxC,SAAlB,CAA4BhgB,IAApC;AACE,WAAK,aAAL;AAAoB;AAClB,cAAM2hB,QAAQ,GAAGd,YAAY,CAACf,IAAI,CAACmC,UAAN,CAA7B;AACAnC,cAAI,CAACE,SAAL,GAAiB2B,QAAQ,CAACzB,OAA1B;AACA;AACD;;AACD,WAAK,cAAL;AACEF,iBAAS,GAAGO,YAAY,CAACn2B,SAAD,EAAYszB,UAAZ,EAAwBY,QAAQ,CAACnoB,GAAD,CAAR,CAAcqsB,GAAd,CAAkBxC,SAAlB,CAA4BkC,SAApD,CAAxB;;AACA,YAAIlC,SAAJ,EAAe;AACb1B,kBAAQ,CAACnoB,GAAD,CAAR,CAAc6pB,SAAd,GAA0BA,SAA1B;AACD;;AACD;AAXJ;;AAcA,QAAI1B,QAAQ,CAACnoB,GAAD,CAAR,CAAc6pB,SAAlB,EAA6B;AAC3B1B,cAAQ,CAACnoB,GAAD,CAAR,CAAc+pB,OAAd,GAAwBoB,UAAU,CAChChD,QAAQ,CAACnoB,GAAD,CAAR,CAAc6pB,SADkB,EAEhCtC,UAFgC,EAGhCY,QAAQ,CAACnoB,GAAD,CAAR,CAAcqsB,GAAd,CAAkBtC,OAAlB,CAA0BhlB,IAHM,EAIhC+iB,iBAJgC,CAAlC;;AAMA,UAAIK,QAAQ,CAACnoB,GAAD,CAAR,CAAc+pB,OAAlB,EAA2B;AACzB5B,gBAAQ,CAACnoB,GAAD,CAAR,CAAcosB,SAAd,GAA0B,IAA1B;AACAjE,gBAAQ,CAACnoB,GAAD,CAAR,CAAc4pB,aAAd,GAA8BE,kDAAM,CAClC3B,QAAQ,CAACnoB,GAAD,CAAR,CAAcqsB,GAAd,CAAkBtC,OAAlB,CAA0BhlB,IADQ,EAElC,YAFkC,EAGlC,IAHkC,CAAN,CAI5BgmB,OAJ4B,EAA9B;AAKArB,sBAAc,CAACvB,QAAQ,CAACnoB,GAAD,CAAT,EAAgBunB,UAAhB,EAA4BE,QAA5B,CAAd;AACD;AACF;;AAED,WAAOU,QAAQ,CAACnoB,GAAD,CAAR,CAAcosB,SAArB;AACD,GApCD;;AAsCA,MAAIY,YAAY,GAAG,IAAnB;;AACA,OAAK,IAAIpqB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGulB,QAAQ,CAAC/oB,MAA7B,EAAqCwD,CAAC,EAAtC,EAA0C;AACxCmqB,eAAW,CAACnqB,CAAD,CAAX;AAEAoqB,gBAAY,GAAGA,YAAY,IAAI7E,QAAQ,CAACvlB,CAAD,CAAR,CAAYwpB,SAA3C;AACD;;AACD,SAAOY,YAAP;AACD,CA9CD;AAgDA;;;;;;;AAKO,IAAMta,OAAO,GAAG,SAAVA,OAAU,CAASF,GAAT,EAAcya,QAAd,EAAwB;AAC7C,MAAIta,OAAO,GAAGsa,QAAd;;AACA,MAAI7yB,yDAAS,GAAG/F,aAAZ,KAA8B,OAAlC,EAA2C;AACzCse,WAAO,GAAGua,2EAAW,CAACD,QAAD,CAArB;AACD;;AACDza,KAAG,CAACxT,KAAJ,CAAU,GAAV,EAAenF,OAAf,CAAuB,UAASkB,EAAT,EAAa;AAClC,QAAImxB,OAAO,GAAGxB,YAAY,CAAC3vB,EAAD,CAA1B;;AACA,QAAI,OAAOmxB,OAAP,KAAmB,WAAvB,EAAoC;AAClCiB,aAAO,CAACpyB,EAAD,EAAK,YAAM;AAChB4I,cAAM,CAACypB,IAAP,CAAYza,OAAZ,EAAqB,OAArB;AACD,OAFM,CAAP;AAGD;AACF,GAPD;AAQAiQ,UAAQ,CAACpQ,GAAD,EAAM,WAAN,CAAR;AACD,CAdM;AAgBP;;;;;;AAKO,IAAMoQ,QAAQ,GAAG,SAAXA,QAAW,CAASpQ,GAAT,EAAc9B,SAAd,EAAyB;AAC/C8B,KAAG,CAACxT,KAAJ,CAAU,GAAV,EAAenF,OAAf,CAAuB,UAASkB,EAAT,EAAa;AAClC,QAAImxB,OAAO,GAAGxB,YAAY,CAAC3vB,EAAD,CAA1B;;AACA,QAAI,OAAOmxB,OAAP,KAAmB,WAAvB,EAAoC;AAClCA,aAAO,CAACrvB,OAAR,CAAgBqF,IAAhB,CAAqBwO,SAArB;AACD;AACF,GALD;AAMD,CAPM;;AASP,IAAMoS,WAAW,GAAG,SAAdA,WAAc,CAAS/nB,EAAT,EAAamY,YAAb,EAA2Bma,YAA3B,EAAyC;AAC3D,MAAIjzB,yDAAS,GAAG/F,aAAZ,KAA8B,OAAlC,EAA2C;AACzC;AACD;;AACD,MAAI,OAAO6e,YAAP,KAAwB,WAA5B,EAAyC;AACvC;AACD;;AAED,MAAIoa,OAAO,GAAG,EAAd;;AACA,MAAI,OAAOD,YAAP,KAAwB,QAA5B,EAAsC;AACpC;AACAC,WAAO,GAAGD,YAAY,CAACruB,KAAb,CAAmB,+BAAnB,CAAV;;AACA,SAAK,IAAI4D,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG0qB,OAAO,CAACluB,MAA5B,EAAoCwD,CAAC,EAArC,EAAyC;AACvC,UAAIihB,IAAI,GAAGyJ,OAAO,CAAC1qB,CAAD,CAAP,CAAWpD,IAAX,EAAX;AACA;;AACA;;AACA,UAAIqkB,IAAI,CAAC0J,MAAL,CAAY,CAAZ,MAAmB,GAAnB,IAA0B1J,IAAI,CAAC0J,MAAL,CAAY1J,IAAI,CAACzkB,MAAL,GAAc,CAA1B,MAAiC,GAA/D,EAAoE;AAClEykB,YAAI,GAAGA,IAAI,CAACvR,MAAL,CAAY,CAAZ,EAAeuR,IAAI,CAACzkB,MAAL,GAAc,CAA7B,CAAP;AACD;;AACDkuB,aAAO,CAAC1qB,CAAD,CAAP,GAAaihB,IAAb;AACD;AACF;AAED;;;AACA,MAAIyJ,OAAO,CAACluB,MAAR,KAAmB,CAAvB,EAA0B;AACxBkuB,WAAO,CAACprB,IAAR,CAAanH,EAAb;AACD;;AAED,MAAImxB,OAAO,GAAGxB,YAAY,CAAC3vB,EAAD,CAA1B;;AACA,MAAI,OAAOmxB,OAAP,KAAmB,WAAvB,EAAoC;AAClCiB,WAAO,CAACpyB,EAAD,EAAK,YAAM;AAChBkF,oDAAK,CAACsT,OAAN,OAAAtT,8CAAK,GAASiT,YAAT,4BAA0Boa,OAA1B,GAAL;AACD,KAFM,CAAP;AAGD;AACF,CAlCD;AAoCA;;;;;;;AAKA,IAAMH,OAAO,GAAG,SAAVA,OAAU,CAASpyB,EAAT,EAAayyB,gBAAb,EAA+B;AAC7Cjd,MAAI,CAACrO,IAAL,CAAU,YAAW;AACnB;AACA,QAAM9E,IAAI,GAAGa,QAAQ,CAACoV,aAAT,iBAA+BtY,EAA/B,SAAb;;AACA,QAAIqC,IAAI,KAAK,IAAb,EAAmB;AACjBA,UAAI,CAACkW,gBAAL,CAAsB,OAAtB,EAA+B,YAAW;AACxCka,wBAAgB;AACjB,OAFD;AAGD;AACF,GARD;AASAjd,MAAI,CAACrO,IAAL,CAAU,YAAW;AACnB;AACA,QAAM9E,IAAI,GAAGa,QAAQ,CAACoV,aAAT,iBAA+BtY,EAA/B,cAAb;;AACA,QAAIqC,IAAI,KAAK,IAAb,EAAmB;AACjBA,UAAI,CAACkW,gBAAL,CAAsB,OAAtB,EAA+B,YAAW;AACxCka,wBAAgB;AACjB,OAFD;AAGD;AACF,GARD;AASD,CAnBD;AAqBA;;;;;;;;AAMO,IAAMva,aAAa,GAAG,SAAhBA,aAAgB,CAAST,GAAT,EAAcU,YAAd,EAA4Bma,YAA5B,EAA0C;AACrE7a,KAAG,CAACxT,KAAJ,CAAU,GAAV,EAAenF,OAAf,CAAuB,UAASkB,EAAT,EAAa;AAClC+nB,eAAW,CAAC/nB,EAAD,EAAKmY,YAAL,EAAmBma,YAAnB,CAAX;AACD,GAFD;AAGAzK,UAAQ,CAACpQ,GAAD,EAAM,WAAN,CAAR;AACD,CALM;AAOP;;;;;AAIO,IAAMgB,aAAa,GAAG,SAAhBA,aAAgB,CAAStD,OAAT,EAAkB;AAC7CK,MAAI,CAAC1W,OAAL,CAAa,UAAS4Z,GAAT,EAAc;AACzBA,OAAG,CAACvD,OAAD,CAAH;AACD,GAFD;AAGD,CAJM;AAMQ;AACb1S,OAAK,EAALA,KADa;AAEbgrB,eAAa,EAAbA,aAFa;AAGbG,eAAa,EAAbA,aAHa;AAIbF,yBAAuB,EAAvBA,uBAJa;AAKbC,sBAAoB,EAApBA,oBALa;AAMbN,eAAa,EAAbA,aANa;AAObC,eAAa,EAAbA,aAPa;AAQbC,gBAAc,EAAdA,cARa;AASbC,gBAAc,EAAdA,cATa;AAUbnK,UAAQ,EAARA,QAVa;AAWbC,UAAQ,EAARA,QAXa;AAYb0K,YAAU,EAAVA,UAZa;AAabC,aAAW,EAAXA,WAba;AAcbC,UAAQ,EAARA,QAda;AAebgD,SAAO,EAAPA,OAfa;AAgBbvB,cAAY,EAAZA,YAhBa;AAiBbkC,YAAU,EAAVA,UAjBa;AAkBbhE,aAAW,EAAXA,WAlBa;AAmBbE,aAAW,EAAXA,WAnBa;AAoBb7V,eAAa,EAAbA,aApBa;AAqBbP,SAAO,EAAPA,OArBa;AAsBbc,eAAa,EAAbA,aAtBa;AAuBbwX,gBAAc,EAAdA;AAvBa,CAAf;;AA0BA,SAASW,WAAT,CAAqB5mB,IAArB,EAA2B4kB,IAA3B,EAAiC9B,IAAjC,EAAuC;AACrC,MAAI4F,UAAU,GAAG,IAAjB;;AACA,SAAOA,UAAP,EAAmB;AACjBA,cAAU,GAAG,KAAb;AACA5F,QAAI,CAAChuB,OAAL,CAAa,UAAS6zB,CAAT,EAAY;AACvB,UAAMlqB,OAAO,GAAG,UAAUkqB,CAAV,GAAc,OAA9B;AACA,UAAMC,KAAK,GAAG,IAAIC,MAAJ,CAAWpqB,OAAX,CAAd;;AACA,UAAIuB,IAAI,CAAC,CAAD,CAAJ,CAAQ0N,KAAR,CAAckb,KAAd,CAAJ,EAA0B;AACxBhE,YAAI,CAAC+D,CAAD,CAAJ,GAAU,IAAV;AACA3oB,YAAI,CAAC8oB,KAAL,CAAW,CAAX;AACAJ,kBAAU,GAAG,IAAb;AACD;AACF,KARD;AASD;AACF,C;;;;;;;;;;;;AC/mBD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAUA;AACA;AACA;AAEAzY,oDAAM,CAACC,EAAP,GAAY6Y,gDAAZ;AAEA,IAAMn0B,IAAI,GAAG;AACXtC,gBAAc,EAAE,EADL;AAEXC,WAAS,EAAE,EAFA;AAGXC,QAAM,EAAE,CAHG;AAIXC,YAAU,EAAE,EAJD;AAKXu2B,cAAY,EAAE,EALH;AAMXt2B,aAAW,EAAE,EANF;AAOXC,sBAAoB,EAAE,EAPX;AAQXV,UAAQ,EAAE,EARC;AASX7C,YAAU,EAAE;AATD,CAAb;AAWO,IAAM2iB,OAAO,GAAG,SAAVA,OAAU,CAASC,GAAT,EAAc;AACnC,MAAMnd,IAAI,GAAGP,MAAM,CAACO,IAAP,CAAYmd,GAAZ,CAAb;AAEAnd,MAAI,CAACC,OAAL,CAAa,UAASC,GAAT,EAAc;AACzBH,QAAI,CAACG,GAAD,CAAJ,GAAYid,GAAG,CAACjd,GAAD,CAAf;AACD,GAFD;AAGD,CANM;AAOP,IAAI0G,CAAJ;AACO,IAAMiX,IAAI,GAAG,SAAPA,IAAO,CAASrc,IAAT,EAAeL,EAAf,EAAmB;AACrCia,sDAAM,CAACC,EAAP,CAAUzX,KAAV;AACAwX,sDAAM,CAAChQ,KAAP,CAAa5J,IAAb;AAEA,MAAMgC,IAAI,GAAGa,QAAQ,CAAC+vB,cAAT,CAAwBjzB,EAAxB,CAAb;AACAyF,GAAC,GAAGpD,IAAI,CAAC6wB,aAAL,CAAmBC,WAAvB;;AAEA,MAAI,OAAO1tB,CAAP,KAAa,WAAjB,EAA8B;AAC5BA,KAAC,GAAG,IAAJ;AACD;;AAED,MAAI,OAAO7G,IAAI,CAACw0B,QAAZ,KAAyB,WAA7B,EAA0C;AACxC3tB,KAAC,GAAG7G,IAAI,CAACw0B,QAAT;AACD;;AAED,MAAMC,SAAS,GAAGpZ,oDAAM,CAACC,EAAP,CAAUgU,QAAV,EAAlB,CAfqC,CAiBrC;;AACA,MAAMxoB,CAAC,GAAG2tB,SAAS,CAAChvB,MAAV,IAAoBzF,IAAI,CAACrC,SAAL,GAAiBqC,IAAI,CAACpC,MAA1C,IAAoD,IAAIoC,IAAI,CAACnC,UAAvE;AAEA4F,MAAI,CAAC0B,YAAL,CAAkB,QAAlB,EAA4B,MAA5B,EApBqC,CAqBrC;;AACA1B,MAAI,CAAC0B,YAAL,CAAkB,SAAlB,EAA6B,SAAS0B,CAAT,GAAa,GAAb,GAAmBC,CAAhD;AACA,MAAM2T,GAAG,GAAGtY,iDAAM,iBAASf,EAAT,SAAlB,CAvBqC,CAyBrC;;AACA,MAAMszB,SAAS,GAAGC,oDAAS,GACxBC,MADe,CACR,CACNvlB,8CAAG,CAAColB,SAAD,EAAY,UAAShrB,CAAT,EAAY;AACzB,WAAOA,CAAC,CAACymB,SAAT;AACD,GAFE,CADG,EAINtK,8CAAG,CAAC6O,SAAD,EAAY,UAAShrB,CAAT,EAAY;AACzB,WAAOA,CAAC,CAAC2mB,OAAT;AACD,GAFE,CAJG,CADQ,EASfyE,UATe,CASJ,CAAC,CAAD,EAAIhuB,CAAC,GAAG7G,IAAI,CAAClC,WAAT,GAAuBkC,IAAI,CAACo0B,YAAhC,CATI,CAAlB;AAWA,MAAIU,UAAU,GAAG,EAAjB;;AAEA,OAAK,IAAI7rB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGwrB,SAAS,CAAChvB,MAA9B,EAAsCwD,CAAC,EAAvC,EAA2C;AACzC6rB,cAAU,CAACvsB,IAAX,CAAgBksB,SAAS,CAACxrB,CAAD,CAAT,CAAaiH,IAA7B;AACD;;AAED,MAAM6kB,cAAc,GAAGD,UAAvB,CA3CqC,CA2CF;;AAEnCA,YAAU,GAAGE,WAAW,CAACF,UAAD,CAAxB;;AAEA,WAASG,WAAT,CAAqBrL,CAArB,EAAwBsL,CAAxB,EAA2B;AACzB,QAAMC,KAAK,GAAGvL,CAAC,CAACsG,SAAhB;AACA,QAAMkF,KAAK,GAAGF,CAAC,CAAChF,SAAhB;AACA,QAAIvF,MAAM,GAAG,CAAb;;AACA,QAAIwK,KAAK,GAAGC,KAAZ,EAAmB;AACjBzK,YAAM,GAAG,CAAT;AACD,KAFD,MAEO,IAAIwK,KAAK,GAAGC,KAAZ,EAAmB;AACxBzK,YAAM,GAAG,CAAC,CAAV;AACD;;AACD,WAAOA,MAAP;AACD,GAzDoC,CA2DrC;AACA;;;AACA8J,WAAS,CAACjlB,IAAV,CAAeylB,WAAf;AAEAI,UAAQ,CAACZ,SAAD,EAAY5tB,CAAZ,EAAeC,CAAf,CAAR;;AACA,MAAI,OAAO9G,IAAI,CAACw0B,QAAZ,KAAyB,WAA7B,EAA0C;AACxC/wB,QAAI,CAAC0B,YAAL,CAAkB,OAAlB,EAA2B0B,CAA3B;AACD;;AAED4T,KAAG,CACArX,MADH,CACU,MADV,EAEG3B,IAFH,CAEQ4Z,oDAAM,CAACC,EAAP,CAAUoJ,QAAV,EAFR,EAGGnjB,IAHH,CAGQ,GAHR,EAGasF,CAAC,GAAG,CAHjB,EAIGtF,IAJH,CAIQ,GAJR,EAIavB,IAAI,CAACtC,cAJlB,EAKG6D,IALH,CAKQ,OALR,EAKiB,WALjB;;AAOA,WAAS8zB,QAAT,CAAkBrH,KAAlB,EAAyBsH,SAAzB,EAAoCC,UAApC,EAAgD;AAC9C,QAAM53B,SAAS,GAAGqC,IAAI,CAACrC,SAAvB;AACA,QAAM63B,GAAG,GAAG73B,SAAS,GAAGqC,IAAI,CAACpC,MAA7B;AACA,QAAMC,UAAU,GAAGmC,IAAI,CAACnC,UAAxB;AACA,QAAMC,WAAW,GAAGkC,IAAI,CAAClC,WAAzB;AAEA,QAAM23B,UAAU,GAAGC,sDAAW,GAC3Bd,MADgB,CACT,CAAC,CAAD,EAAIE,UAAU,CAACrvB,MAAf,CADS,EAEhBkwB,KAFgB,CAEV,CAAC,SAAD,EAAY,SAAZ,CAFU,EAGhBjZ,WAHgB,CAGJkZ,iDAHI,CAAnB;AAKAC,YAAQ,CAAC/3B,WAAD,EAAcD,UAAd,EAA0By3B,SAA1B,EAAqCC,UAArC,CAAR;AACAO,aAAS,CAAC9H,KAAD,EAAQwH,GAAR,EAAa33B,UAAb,EAAyBC,WAAzB,EAAsCH,SAAtC,EAAiD83B,UAAjD,EAA6DH,SAA7D,EAAwEC,UAAxE,CAAT;AACAQ,cAAU,CAACP,GAAD,EAAM33B,UAAN,EAAkBC,WAAlB,EAA+BH,SAA/B,EAA0C83B,UAA1C,CAAV;AACAO,aAAS,CAACl4B,WAAD,EAAcD,UAAd,EAA0By3B,SAA1B,EAAqCC,UAArC,CAAT;AACD;;AAED,WAASO,SAAT,CAAmBG,QAAnB,EAA6BC,MAA7B,EAAqCC,SAArC,EAAgDC,UAAhD,EAA4DC,YAA5D,EAA0EC,aAA1E,EAAyFzvB,CAAzF,EAA4F;AAC1F;AACA4T,OAAG,CACArX,MADH,CACU,GADV,EAEGsX,SAFH,CAEa,MAFb,EAGGtP,IAHH,CAGQ6qB,QAHR,EAIGM,KAJH,GAKGnzB,MALH,CAKU,MALV,EAMG7B,IANH,CAMQ,GANR,EAMa,CANb,EAOGA,IAPH,CAOQ,GAPR,EAOa,UAASkI,CAAT,EAAYR,CAAZ,EAAe;AACxB;AACAA,OAAC,GAAGQ,CAAC,CAACupB,KAAN;AACA,aAAO/pB,CAAC,GAAGitB,MAAJ,GAAaC,SAAb,GAAyB,CAAhC;AACD,KAXH,EAYG50B,IAZH,CAYQ,OAZR,EAYiB,YAAW;AACxB,aAAOsF,CAAC,GAAG7G,IAAI,CAACo0B,YAAL,GAAoB,CAA/B;AACD,KAdH,EAeG7yB,IAfH,CAeQ,QAfR,EAekB20B,MAflB,EAgBG30B,IAhBH,CAgBQ,OAhBR,EAgBiB,UAASkI,CAAT,EAAY;AACzB,WAAK,IAAIR,EAAC,GAAG,CAAb,EAAgBA,EAAC,GAAG6rB,UAAU,CAACrvB,MAA/B,EAAuCwD,EAAC,EAAxC,EAA4C;AAC1C,YAAIQ,CAAC,CAACyG,IAAF,KAAW4kB,UAAU,CAAC7rB,EAAD,CAAzB,EAA8B;AAC5B,iBAAO,oBAAqBA,EAAC,GAAGjJ,IAAI,CAAChC,mBAArC;AACD;AACF;;AACD,aAAO,kBAAP;AACD,KAvBH,EAF0F,CA2B1F;;AACA,QAAMw4B,UAAU,GAAG/b,GAAG,CACnBrX,MADgB,CACT,GADS,EAEhBsX,SAFgB,CAEN,MAFM,EAGhBtP,IAHgB,CAGX6qB,QAHW,EAIhBM,KAJgB,EAAnB;AAMAC,cAAU,CACPpzB,MADH,CACU,MADV,EAEG7B,IAFH,CAEQ,IAFR,EAEc,UAASkI,CAAT,EAAY;AACtB,aAAOA,CAAC,CAACrI,EAAT;AACD,KAJH,EAKGG,IALH,CAKQ,IALR,EAKc,CALd,EAMGA,IANH,CAMQ,IANR,EAMc,CANd,EAOGA,IAPH,CAOQ,GAPR,EAOa,UAASkI,CAAT,EAAY;AACrB,UAAIA,CAAC,CAACspB,SAAN,EAAiB;AACf,eACE2B,SAAS,CAACjrB,CAAC,CAACymB,SAAH,CAAT,GACAkG,UADA,GAEA,OAAO1B,SAAS,CAACjrB,CAAC,CAAC2mB,OAAH,CAAT,GAAuBsE,SAAS,CAACjrB,CAAC,CAACymB,SAAH,CAAvC,CAFA,GAGA,MAAMmG,YAJR;AAMD;;AACD,aAAO3B,SAAS,CAACjrB,CAAC,CAACymB,SAAH,CAAT,GAAyBkG,UAAhC;AACD,KAjBH,EAkBG70B,IAlBH,CAkBQ,GAlBR,EAkBa,UAASkI,CAAT,EAAYR,CAAZ,EAAe;AACxB;AACAA,OAAC,GAAGQ,CAAC,CAACupB,KAAN;AACA,aAAO/pB,CAAC,GAAGitB,MAAJ,GAAaC,SAApB;AACD,KAtBH,EAuBG50B,IAvBH,CAuBQ,OAvBR,EAuBiB,UAASkI,CAAT,EAAY;AACzB,UAAIA,CAAC,CAACspB,SAAN,EAAiB;AACf,eAAOsD,YAAP;AACD;;AACD,aAAO3B,SAAS,CAACjrB,CAAC,CAAC4mB,aAAF,IAAmB5mB,CAAC,CAAC2mB,OAAtB,CAAT,GAA0CsE,SAAS,CAACjrB,CAAC,CAACymB,SAAH,CAA1D;AACD,KA5BH,EA6BG3uB,IA7BH,CA6BQ,QA7BR,EA6BkB80B,YA7BlB,EA8BG90B,IA9BH,CA8BQ,kBA9BR,EA8B4B,UAASkI,CAAT,EAAYR,CAAZ,EAAe;AACvC,aACE,CACEyrB,SAAS,CAACjrB,CAAC,CAACymB,SAAH,CAAT,GACAkG,UADA,GAEA,OAAO1B,SAAS,CAACjrB,CAAC,CAAC2mB,OAAH,CAAT,GAAuBsE,SAAS,CAACjrB,CAAC,CAACymB,SAAH,CAAvC,CAHF,EAIEuG,QAJF,KAKA,KALA,GAMA,CAACxtB,CAAC,GAAGitB,MAAJ,GAAaC,SAAb,GAAyB,MAAME,YAAhC,EAA8CI,QAA9C,EANA,GAOA,IARF;AAUD,KAzCH,EA0CGl1B,IA1CH,CA0CQ,OA1CR,EA0CiB,UAASkI,CAAT,EAAY;AACzB,UAAM9B,GAAG,GAAG,MAAZ;AAEA,UAAIiU,QAAQ,GAAG,EAAf;;AACA,UAAInS,CAAC,CAACvG,OAAF,CAAUuC,MAAV,GAAmB,CAAvB,EAA0B;AACxBmW,gBAAQ,GAAGnS,CAAC,CAACvG,OAAF,CAAUmR,IAAV,CAAe,GAAf,CAAX;AACD;;AAED,UAAIqiB,MAAM,GAAG,CAAb;;AACA,WAAK,IAAIztB,GAAC,GAAG,CAAb,EAAgBA,GAAC,GAAG6rB,UAAU,CAACrvB,MAA/B,EAAuCwD,GAAC,EAAxC,EAA4C;AAC1C,YAAIQ,CAAC,CAACyG,IAAF,KAAW4kB,UAAU,CAAC7rB,GAAD,CAAzB,EAA8B;AAC5BytB,gBAAM,GAAGztB,GAAC,GAAGjJ,IAAI,CAAChC,mBAAlB;AACD;AACF;;AAED,UAAI24B,SAAS,GAAG,EAAhB;;AACA,UAAIltB,CAAC,CAACmpB,MAAN,EAAc;AACZ,YAAInpB,CAAC,CAACqpB,IAAN,EAAY;AACV6D,mBAAS,IAAI,aAAb;AACD,SAFD,MAEO;AACLA,mBAAS,GAAG,SAAZ;AACD;AACF,OAND,MAMO,IAAIltB,CAAC,CAACopB,IAAN,EAAY;AACjB,YAAIppB,CAAC,CAACqpB,IAAN,EAAY;AACV6D,mBAAS,GAAG,WAAZ;AACD,SAFD,MAEO;AACLA,mBAAS,GAAG,OAAZ;AACD;AACF,OANM,MAMA;AACL,YAAIltB,CAAC,CAACqpB,IAAN,EAAY;AACV6D,mBAAS,IAAI,OAAb;AACD;AACF;;AAED,UAAIA,SAAS,CAAClxB,MAAV,KAAqB,CAAzB,EAA4B;AAC1BkxB,iBAAS,GAAG,OAAZ;AACD;;AAED,UAAIltB,CAAC,CAACspB,SAAN,EAAiB;AACf4D,iBAAS,GAAG,gBAAgBA,SAA5B;AACD;;AAEDA,eAAS,IAAID,MAAb;AAEAC,eAAS,IAAI,MAAM/a,QAAnB;AAEA,aAAOjU,GAAG,GAAGgvB,SAAb;AACD,KAzFH,EAlC0F,CA6H1F;;AACAH,cAAU,CACPpzB,MADH,CACU,MADV,EAEG7B,IAFH,CAEQ,IAFR,EAEc,UAASkI,CAAT,EAAY;AACtB,aAAOA,CAAC,CAACrI,EAAF,GAAO,OAAd;AACD,KAJH,EAKGK,IALH,CAKQ,UAASgI,CAAT,EAAY;AAChB,aAAOA,CAAC,CAACumB,IAAT;AACD,KAPH,EAQGzuB,IARH,CAQQ,WARR,EAQqBvB,IAAI,CAAC3C,QAR1B,EASGkE,IATH,CASQ,GATR,EASa,UAASkI,CAAT,EAAY;AACrB,UAAImtB,MAAM,GAAGlC,SAAS,CAACjrB,CAAC,CAACymB,SAAH,CAAtB;AACA,UAAI2G,IAAI,GAAGnC,SAAS,CAACjrB,CAAC,CAAC4mB,aAAF,IAAmB5mB,CAAC,CAAC2mB,OAAtB,CAApB;;AACA,UAAI3mB,CAAC,CAACspB,SAAN,EAAiB;AACf6D,cAAM,IAAI,OAAOlC,SAAS,CAACjrB,CAAC,CAAC2mB,OAAH,CAAT,GAAuBsE,SAAS,CAACjrB,CAAC,CAACymB,SAAH,CAAvC,IAAwD,MAAMmG,YAAxE;AACD;;AACD,UAAI5sB,CAAC,CAACspB,SAAN,EAAiB;AACf8D,YAAI,GAAGD,MAAM,GAAGP,YAAhB;AACD;;AACD,UAAMS,SAAS,GAAG,KAAK/0B,OAAL,GAAerG,KAAjC,CATqB,CAWrB;;AACA,UAAIo7B,SAAS,GAAGD,IAAI,GAAGD,MAAvB,EAA+B;AAC7B,YAAIC,IAAI,GAAGC,SAAP,GAAmB,MAAM92B,IAAI,CAAClC,WAA9B,GAA4C+I,CAAhD,EAAmD;AACjD,iBAAO+vB,MAAM,GAAGR,UAAT,GAAsB,CAA7B;AACD,SAFD,MAEO;AACL,iBAAOS,IAAI,GAAGT,UAAP,GAAoB,CAA3B;AACD;AACF,OAND,MAMO;AACL,eAAO,CAACS,IAAI,GAAGD,MAAR,IAAkB,CAAlB,GAAsBA,MAAtB,GAA+BR,UAAtC;AACD;AACF,KA9BH,EA+BG70B,IA/BH,CA+BQ,GA/BR,EA+Ba,UAASkI,CAAT,EAAYR,CAAZ,EAAe;AACxB;AACAA,OAAC,GAAGQ,CAAC,CAACupB,KAAN;AACA,aAAO/pB,CAAC,GAAGitB,MAAJ,GAAal2B,IAAI,CAACrC,SAAL,GAAiB,CAA9B,IAAmCqC,IAAI,CAAC3C,QAAL,GAAgB,CAAhB,GAAoB,CAAvD,IAA4D84B,SAAnE;AACD,KAnCH,EAoCG50B,IApCH,CAoCQ,aApCR,EAoCuB80B,YApCvB,EAqCG90B,IArCH,CAqCQ,OArCR,EAqCiB,UAASkI,CAAT,EAAY;AACzB,UAAMmtB,MAAM,GAAGlC,SAAS,CAACjrB,CAAC,CAACymB,SAAH,CAAxB;AACA,UAAI2G,IAAI,GAAGnC,SAAS,CAACjrB,CAAC,CAAC2mB,OAAH,CAApB;;AACA,UAAI3mB,CAAC,CAACspB,SAAN,EAAiB;AACf8D,YAAI,GAAGD,MAAM,GAAGP,YAAhB;AACD;;AACD,UAAMS,SAAS,GAAG,KAAK/0B,OAAL,GAAerG,KAAjC;AAEA,UAAIkgB,QAAQ,GAAG,EAAf;;AACA,UAAInS,CAAC,CAACvG,OAAF,CAAUuC,MAAV,GAAmB,CAAvB,EAA0B;AACxBmW,gBAAQ,GAAGnS,CAAC,CAACvG,OAAF,CAAUmR,IAAV,CAAe,GAAf,CAAX;AACD;;AAED,UAAIqiB,MAAM,GAAG,CAAb;AACA7nB,aAAO,CAAC3N,GAAR,CAAYlB,IAAZ;;AACA,WAAK,IAAIiJ,GAAC,GAAG,CAAb,EAAgBA,GAAC,GAAG6rB,UAAU,CAACrvB,MAA/B,EAAuCwD,GAAC,EAAxC,EAA4C;AAC1C,YAAIQ,CAAC,CAACyG,IAAF,KAAW4kB,UAAU,CAAC7rB,GAAD,CAAzB,EAA8B;AAC5BytB,gBAAM,GAAGztB,GAAC,GAAGjJ,IAAI,CAAChC,mBAAlB;AACD;AACF;;AAED,UAAI+4B,QAAQ,GAAG,EAAf;;AACA,UAAIttB,CAAC,CAACmpB,MAAN,EAAc;AACZ,YAAInpB,CAAC,CAACqpB,IAAN,EAAY;AACViE,kBAAQ,GAAG,mBAAmBL,MAA9B;AACD,SAFD,MAEO;AACLK,kBAAQ,GAAG,eAAeL,MAA1B;AACD;AACF;;AAED,UAAIjtB,CAAC,CAACopB,IAAN,EAAY;AACV,YAAIppB,CAAC,CAACqpB,IAAN,EAAY;AACViE,kBAAQ,GAAGA,QAAQ,GAAG,eAAX,GAA6BL,MAAxC;AACD,SAFD,MAEO;AACLK,kBAAQ,GAAGA,QAAQ,GAAG,WAAX,GAAyBL,MAApC;AACD;AACF,OAND,MAMO;AACL,YAAIjtB,CAAC,CAACqpB,IAAN,EAAY;AACViE,kBAAQ,GAAGA,QAAQ,GAAG,WAAX,GAAyBL,MAApC;AACD;AACF;;AAED,UAAIjtB,CAAC,CAACspB,SAAN,EAAiB;AACfgE,gBAAQ,IAAI,gBAAZ;AACD,OA5CwB,CA8CzB;;;AACA,UAAID,SAAS,GAAGD,IAAI,GAAGD,MAAvB,EAA+B;AAC7B,YAAIC,IAAI,GAAGC,SAAP,GAAmB,MAAM92B,IAAI,CAAClC,WAA9B,GAA4C+I,CAAhD,EAAmD;AACjD,iBAAO+U,QAAQ,GAAG,sCAAX,GAAoD8a,MAApD,GAA6D,GAA7D,GAAmEK,QAA1E;AACD,SAFD,MAEO;AACL,iBACEnb,QAAQ,GACR,uCADA,GAEA8a,MAFA,GAGA,GAHA,GAIAK,QAJA,GAKA,SALA,GAMAD,SAPF;AASD;AACF,OAdD,MAcO;AACL,eAAOlb,QAAQ,GAAG,oBAAX,GAAkC8a,MAAlC,GAA2C,GAA3C,GAAiDK,QAAjD,GAA4D,SAA5D,GAAwED,SAA/E;AACD;AACF,KArGH;AAsGD;;AAED,WAASjB,QAAT,CAAkBO,UAAlB,EAA8BD,SAA9B,EAAyCtvB,CAAzC,EAA4CC,CAA5C,EAA+C;AAC7C,QAAIkwB,KAAK,GAAGC,qDAAU,CAACvC,SAAD,CAAV,CACTwC,QADS,CACA,CAACpwB,CAAD,GAAKqvB,SAAL,GAAiBn2B,IAAI,CAACjC,oBADtB,EAETo5B,UAFS,CAEEC,qDAAU,CAAC/b,oDAAM,CAACC,EAAP,CAAUoT,aAAV,MAA6B1uB,IAAI,CAAC/B,UAAlC,IAAgD,UAAjD,CAFZ,CAAZ;AAIAwc,OAAG,CACArX,MADH,CACU,GADV,EAEG7B,IAFH,CAEQ,OAFR,EAEiB,MAFjB,EAGGA,IAHH,CAGQ,WAHR,EAGqB,eAAe60B,UAAf,GAA4B,IAA5B,IAAoCtvB,CAAC,GAAG,EAAxC,IAA8C,GAHnE,EAIGuwB,IAJH,CAIQL,KAJR,EAKGtc,SALH,CAKa,MALb,EAMG/V,KANH,CAMS,aANT,EAMwB,QANxB,EAOGpD,IAPH,CAOQ,MAPR,EAOgB,MAPhB,EAQGA,IARH,CAQQ,QARR,EAQkB,MARlB,EASGA,IATH,CASQ,WATR,EASqB,EATrB,EAUGA,IAVH,CAUQ,IAVR,EAUc,KAVd;AAWD;;AAED,WAASw0B,UAAT,CAAoBG,MAApB,EAA4BC,SAA5B,EAAuC;AACrC,QAAMmB,aAAa,GAAG,EAAtB;AACA,QAAIC,OAAO,GAAG,CAAd;;AAEA,SAAK,IAAItuB,GAAC,GAAG,CAAb,EAAgBA,GAAC,GAAG6rB,UAAU,CAACrvB,MAA/B,EAAuCwD,GAAC,EAAxC,EAA4C;AAC1CquB,mBAAa,CAACruB,GAAD,CAAb,GAAmB,CAAC6rB,UAAU,CAAC7rB,GAAD,CAAX,EAAgBuuB,QAAQ,CAAC1C,UAAU,CAAC7rB,GAAD,CAAX,EAAgB8rB,cAAhB,CAAxB,CAAnB;AACD;;AAEDta,OAAG,CACArX,MADH,CACU,GADV,EACe;AADf,KAEGsX,SAFH,CAEa,MAFb,EAGGtP,IAHH,CAGQksB,aAHR,EAIGf,KAJH,GAKGnzB,MALH,CAKU,UAASqG,CAAT,EAAY;AAClB,UAAMrE,IAAI,GAAGqE,CAAC,CAAC,CAAD,CAAD,CAAKpE,KAAL,CAAW+T,sDAAM,CAAC6D,cAAlB,CAAb;AACA,UAAMrW,EAAE,GAAG,EAAExB,IAAI,CAACK,MAAL,GAAc,CAAhB,IAAqB,CAAhC;AAEA,UAAMP,QAAQ,GAAGZ,QAAQ,CAACC,eAAT,CAAyB,4BAAzB,EAAuD,MAAvD,CAAjB;AACAW,cAAQ,CAACC,YAAT,CAAsB,IAAtB,EAA4ByB,EAAE,GAAG,IAAjC;;AAEA,WAAK,IAAIpB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGJ,IAAI,CAACK,MAAzB,EAAiCD,CAAC,EAAlC,EAAsC;AACpC,YAAME,KAAK,GAAGpB,QAAQ,CAACC,eAAT,CAAyB,4BAAzB,EAAuD,OAAvD,CAAd;AACAmB,aAAK,CAACP,YAAN,CAAmB,oBAAnB,EAAyC,SAAzC;AACAO,aAAK,CAACP,YAAN,CAAmB,GAAnB,EAAwB,IAAxB;AACA,YAAIK,CAAC,GAAG,CAAR,EAAWE,KAAK,CAACP,YAAN,CAAmB,IAAnB,EAAyB,KAAzB;AACXO,aAAK,CAACE,WAAN,GAAoBR,IAAI,CAACI,CAAD,CAAxB;AACAN,gBAAQ,CAACxD,WAAT,CAAqBgE,KAArB;AACD;;AACD,aAAOR,QAAP;AACD,KArBH,EAsBG3D,IAtBH,CAsBQ,GAtBR,EAsBa,EAtBb,EAuBGA,IAvBH,CAuBQ,GAvBR,EAuBa,UAASkI,CAAT,EAAYR,CAAZ,EAAe;AACxB,UAAIA,CAAC,GAAG,CAAR,EAAW;AACT,aAAK,IAAIzD,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGyD,CAApB,EAAuBzD,CAAC,EAAxB,EAA4B;AAC1B+xB,iBAAO,IAAID,aAAa,CAACruB,CAAC,GAAG,CAAL,CAAb,CAAqB,CAArB,CAAX;AACA,iBAAQQ,CAAC,CAAC,CAAD,CAAD,GAAOysB,MAAR,GAAkB,CAAlB,GAAsBqB,OAAO,GAAGrB,MAAhC,GAAyCC,SAAhD;AACD;AACF,OALD,MAKO;AACL,eAAQ1sB,CAAC,CAAC,CAAD,CAAD,GAAOysB,MAAR,GAAkB,CAAlB,GAAsBC,SAA7B;AACD;AACF,KAhCH,EAiCG50B,IAjCH,CAiCQ,OAjCR,EAiCiB,UAASkI,CAAT,EAAY;AACzB,WAAK,IAAIR,GAAC,GAAG,CAAb,EAAgBA,GAAC,GAAG6rB,UAAU,CAACrvB,MAA/B,EAAuCwD,GAAC,EAAxC,EAA4C;AAC1C,YAAIQ,CAAC,CAAC,CAAD,CAAD,KAASqrB,UAAU,CAAC7rB,GAAD,CAAvB,EAA4B;AAC1B,iBAAO,8BAA+BA,GAAC,GAAGjJ,IAAI,CAAChC,mBAA/C;AACD;AACF;;AACD,aAAO,cAAP;AACD,KAxCH;AAyCD;;AAED,WAASg4B,SAAT,CAAmBI,UAAnB,EAA+BD,SAA/B,EAA0CtvB,CAA1C,EAA6CC,CAA7C,EAAgD;AAC9C,QAAM+mB,WAAW,GAAGsG,gDAAO,CAACvF,cAAR,EAApB;;AACA,QAAIf,WAAW,KAAK,KAApB,EAA2B;AACzB;AACD;;AAED,QAAM4J,MAAM,GAAGhd,GAAG,CAACrX,MAAJ,CAAW,GAAX,EAAgB7B,IAAhB,CAAqB,OAArB,EAA8B,OAA9B,CAAf;AACA,QAAMm2B,KAAK,GAAG,IAAIzG,IAAJ,EAAd;AACA,QAAM0G,SAAS,GAAGF,MAAM,CAACr0B,MAAP,CAAc,MAAd,CAAlB;AAEAu0B,aAAS,CACNp2B,IADH,CACQ,IADR,EACcmzB,SAAS,CAACgD,KAAD,CAAT,GAAmBtB,UADjC,EAEG70B,IAFH,CAEQ,IAFR,EAEcmzB,SAAS,CAACgD,KAAD,CAAT,GAAmBtB,UAFjC,EAGG70B,IAHH,CAGQ,IAHR,EAGcvB,IAAI,CAACtC,cAHnB,EAIG6D,IAJH,CAIQ,IAJR,EAIcuF,CAAC,GAAG9G,IAAI,CAACtC,cAJvB,EAKG6D,IALH,CAKQ,OALR,EAKiB,OALjB;;AAOA,QAAIssB,WAAW,KAAK,EAApB,EAAwB;AACtB8J,eAAS,CAACp2B,IAAV,CAAe,OAAf,EAAwBssB,WAAW,CAAC9oB,OAAZ,CAAoB,IAApB,EAA0B,GAA1B,CAAxB;AACD;AACF,GA3ZoC,CA6ZrC;;;AACA,WAASiwB,WAAT,CAAqB4C,GAArB,EAA0B;AACxB,QAAMC,IAAI,GAAG,EAAb;AACA,QAAMlN,MAAM,GAAG,EAAf;;AACA,SAAK,IAAI1hB,GAAC,GAAG,CAAR,EAAW+V,CAAC,GAAG4Y,GAAG,CAACnyB,MAAxB,EAAgCwD,GAAC,GAAG+V,CAApC,EAAuC,EAAE/V,GAAzC,EAA4C;AAC1C,UAAI,CAAC4uB,IAAI,CAAC1N,cAAL,CAAoByN,GAAG,CAAC3uB,GAAD,CAAvB,CAAL,EAAkC;AAAE;AAClC;AACA4uB,YAAI,CAACD,GAAG,CAAC3uB,GAAD,CAAJ,CAAJ,GAAe,IAAf;AACA0hB,cAAM,CAACpiB,IAAP,CAAYqvB,GAAG,CAAC3uB,GAAD,CAAf;AACD;AACF;;AACD,WAAO0hB,MAAP;AACD,GAzaoC,CA2arC;;;AACA,WAASmN,SAAT,CAAmBF,GAAnB,EAAwB;AACtB,QAAI3uB,CAAC,GAAG2uB,GAAG,CAACnyB,MAAZ,CADsB,CACF;;AACpB,QAAMsyB,GAAG,GAAG,EAAZ,CAFsB,CAEN;;AAChB,WAAO9uB,CAAP,EAAU;AACR8uB,SAAG,CAACH,GAAG,CAAC,EAAE3uB,CAAH,CAAJ,CAAH,GAAgB,CAAC8uB,GAAG,CAACH,GAAG,CAAC3uB,CAAD,CAAJ,CAAH,IAAe,CAAhB,IAAqB,CAArC,CADQ,CACgC;AACzC;;AACD,WAAO8uB,GAAP;AACD,GAnboC,CAqbrC;;;AACA,WAASP,QAAT,CAAkBQ,IAAlB,EAAwBJ,GAAxB,EAA6B;AAC3B,WAAOE,SAAS,CAACF,GAAD,CAAT,CAAeI,IAAf,KAAwB,CAA/B;AACD;AACF,CAzbM;AA2bQ;AACb7a,SAAO,EAAPA,OADa;AAEbW,MAAI,EAAJA;AAFa,CAAf,E;;;;;;;;;;;AC9dA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA,eAAe,kCAAkC;AACjD,iBAAiB,kCAAkC;AACnD;AACA;AACA;AACA,qBAAqB,IAAI;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mJAAmJ;AACnJ,SAAS;;AAET;AACA;AACA,qBAAqB,+BAA+B;AACpD;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW,YAAY,IAAI,WAAW,SAAS;AACvE,cAAc,0BAA0B,EAAE;AAC1C,MAAM;AACN,WAAW,gWAAgW;AAC3W,aAAa,gPAAgP;AAC7P;AACA;AACA;;AAEA;AACA;AACA;AACA,iB;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA,6BAA6B;AAC7B;AACA;AACA,oCAAoC;AACpC;AACA;AACA,iCAAiC;AACjC;AACA;AACA,qCAAqC;AACrC;AACA;AACA,8BAA8B;AAC9B;AACA;AACA,gCAAgC;AAChC;AACA;AACA,4BAA4B;AAC5B;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB,2CAA2C;AAC7D;AACA;AACA,kBAAkB,+CAA+C;AACjE;AACA;AACA,kBAAkB,yCAAyC;AAC3D;AACA;AACA,kBAAkB,6CAA6C;AAC/D;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,SAAS,YAAY,EAAE,MAAM,cAAc,IAAI,GAAG,sGAAsG,cAAc,QAAQ,gBAAgB,0EAA0E,0IAA0I,UAAU,EAAE,oBAAoB,0CAA0C,oBAAoB,gBAAgB,UAAU,gBAAgB,UAAU,8BAA8B,UAAU;AAC5kB,kBAAkB;AAClB;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iCAAiC;AACjC,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL,qDAAqD;AACrD;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL,UAAU,wBAAwB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,iSAAiS,yDAAyD,2BAA2B,6BAA6B,qDAAqD,2BAA2B,kBAAkB,kBAAkB;AACtgB,aAAa,gBAAgB,kCAAkC,iBAAiB,mCAAmC,SAAS,gCAAgC,UAAU,kCAAkC,YAAY;AACpN,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA,CAAC;;;AAGD,IAAI,IAAgE;AACpE;AACA;AACA,6BAA6B,8CAA8C;AAC3E;AACA;AACA;AACA;AACA;AACA,iBAAiB,mBAAO,CAAC,0DAAI,eAAe,mBAAO,CAAC,qDAAM;AAC1D;AACA;AACA,IAAI,KAA6B,IAAI,4CAAY;AACjD;AACA;AACA,C;;;;;;;;;;;;;ACvtBA;AAAA,IAAMS,SAAS,GAAG,SAAZA,SAAY,CAAA7d,OAAO;AAAA,0OAabA,OAAO,CAACu3B,eAbK,gDAiBbv3B,OAAO,CAACw3B,gBAjBK,8DAsBbx3B,OAAO,CAACy3B,kBAtBK,wEA2Bbz3B,OAAO,CAACgtB,UA3BK,qDA+BbhtB,OAAO,CAACgtB,UA/BK,qDAmCbhtB,OAAO,CAACgtB,UAnCK,qDAuCbhtB,OAAO,CAACgtB,UAvCK,kRAuDXhtB,OAAO,CAAC03B,SAvDG,oGA2DJ13B,OAAO,CAAClG,UA3DJ,4BA4DXkG,OAAO,CAAC4sB,SA5DG,4IAyEX5sB,OAAO,CAAC23B,cAzEG,2XAiGb33B,OAAO,CAAC43B,iBAjGK,4MA0Gb53B,OAAO,CAAC43B,iBA1GK,6MAqHb53B,OAAO,CAAC63B,sBArHK,8HA2Hb73B,OAAO,CAAC63B,sBA3HK,+HAiIb73B,OAAO,CAAC63B,sBAjIK,mLA2Ib73B,OAAO,CAAC83B,aA3IK,8EAkJb93B,OAAO,CAAC+3B,YAlJK,4BAmJX/3B,OAAO,CAACg4B,eAnJG,iFAyJbh4B,OAAO,CAACi4B,oBAzJK,8EA8Jbj4B,OAAO,CAACi4B,oBA9JK,+GAwKbj4B,OAAO,CAACk4B,kBAxKK,4BAyKXl4B,OAAO,CAACm4B,qBAzKG,sGAgLbn4B,OAAO,CAAC43B,iBAhLK,uHA0LX53B,OAAO,CAACo4B,mBA1LG,0BA2Lbp4B,OAAO,CAACq4B,gBA3LK,oHAmMbr4B,OAAO,CAAC43B,iBAnMK,mIA6MX53B,OAAO,CAACs4B,eA7MG,0BA8Mbt4B,OAAO,CAACu4B,YA9MK,8HAsNXv4B,OAAO,CAACs4B,eAtNG,0BAuNbt4B,OAAO,CAACk4B,kBAvNK,sHA+NXl4B,OAAO,CAACs4B,eA/NG,0BAgObt4B,OAAO,CAACq4B,gBAhOK,mTAiPbr4B,OAAO,CAAC43B,iBAjPK,iIAwPb53B,OAAO,CAAC43B,iBAxPK,4GA8Pb53B,OAAO,CAAC43B,iBA9PK;AAAA,CAAzB;;AAoQe/Z,wEAAf,E;;;;;;;;;;;;ACpQA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA,IAAI2a,OAAO,GAAG,EAAd;AACA,IAAI9wB,IAAI,GAAG,IAAX;AACA,IAAI+wB,QAAQ,GAAG;AAAEC,QAAM,EAAEhxB;AAAV,CAAf;AACA,IAAIixB,SAAS,GAAG,QAAhB;AACA,IAAIpR,SAAS,GAAG,IAAhB;AACA,IAAIqR,GAAG,GAAG,CAAV;;AAEA,SAASC,KAAT,GAAiB;AACf,SAAOC,qDAAM,CAAC;AAAE/zB,UAAM,EAAE;AAAV,GAAD,CAAb;AACD;;AAED,SAASg0B,iBAAT,CAA2BC,aAA3B,EAA0CC,WAA1C,EAAuD;AACrDh5B,gDAAM,CAACmQ,KAAP,CAAa,6BAAb,EAA4C4oB,aAAa,CAACt4B,EAA1D,EAA8Du4B,WAAW,CAACv4B,EAA1E;;AACA,SAAOs4B,aAAa,CAACJ,GAAd,IAAqBK,WAAW,CAACL,GAAjC,IAAwCI,aAAa,KAAKC,WAAjE,EAA8E;AAC5E;AACA,QAAIA,WAAW,CAAC34B,MAAZ,IAAsB,IAA1B,EAAgC;;AAChC,QAAIsE,KAAK,CAACC,OAAN,CAAco0B,WAAW,CAAC34B,MAA1B,CAAJ,EAAuC;AACrCL,oDAAM,CAACmQ,KAAP,CAAa,kBAAb,EAAiC6oB,WAAW,CAAC34B,MAA7C;AACA,aACEy4B,iBAAiB,CAACC,aAAD,EAAgBR,OAAO,CAACS,WAAW,CAAC34B,MAAZ,CAAmB,CAAnB,CAAD,CAAvB,CAAjB,IACAy4B,iBAAiB,CAACC,aAAD,EAAgBR,OAAO,CAACS,WAAW,CAAC34B,MAAZ,CAAmB,CAAnB,CAAD,CAAvB,CAFnB;AAID,KAND,MAMO;AACL24B,iBAAW,GAAGT,OAAO,CAACS,WAAW,CAAC34B,MAAb,CAArB;AACD;AACF;;AACDL,gDAAM,CAACmQ,KAAP,CAAa4oB,aAAa,CAACt4B,EAA3B,EAA+Bu4B,WAAW,CAACv4B,EAA3C;AACA,SAAOs4B,aAAa,CAACt4B,EAAd,KAAqBu4B,WAAW,CAACv4B,EAAxC;AACD;;AAED,SAASw4B,eAAT,CAAyBF,aAAzB,EAAwCC,WAAxC,EAAqD;AACnD,MAAME,UAAU,GAAGH,aAAa,CAACJ,GAAjC;AACA,MAAMQ,QAAQ,GAAGH,WAAW,CAACL,GAA7B;AACA,MAAIO,UAAU,GAAGC,QAAjB,EAA2B,OAAOL,iBAAiB,CAACE,WAAD,EAAcD,aAAd,CAAxB;AAC3B,SAAO,KAAP;AACD;;AAED,SAASK,MAAT,CAAgBtQ,IAAhB,EAAsBuQ,EAAtB,EAA0B;AACxB,MAAMC,SAAS,GAAGv6B,MAAM,CAACw6B,MAAP,CAAc,IAAd,CAAlB;AACA,SAAOzQ,IAAI,CAAC0Q,MAAL,CAAY,UAACC,GAAD,EAAMlQ,IAAN,EAAe;AAChC,QAAM/pB,GAAG,GAAG65B,EAAE,CAAC9P,IAAD,CAAd;;AACA,QAAI,CAAC+P,SAAS,CAAC95B,GAAD,CAAd,EAAqB;AACnB85B,eAAS,CAAC95B,GAAD,CAAT,GAAiB,IAAjB;AACAi6B,SAAG,CAAC7xB,IAAJ,CAAS2hB,IAAT;AACD;;AACD,WAAOkQ,GAAP;AACD,GAPM,EAOJ,EAPI,CAAP;AAQD;;AAEM,IAAMpR,YAAY,GAAG,SAAfA,YAAe,CAASje,GAAT,EAAc;AACxCkd,WAAS,GAAGld,GAAZ;AACD,CAFM;AAGP,IAAIrK,OAAO,GAAG,EAAd;AACO,IAAM25B,UAAU,GAAG,SAAbA,UAAa,CAASC,YAAT,EAAuB;AAC/C35B,gDAAM,CAACmQ,KAAP,CAAa,aAAb,EAA4BwpB,YAA5B;AACAA,cAAY,GAAGA,YAAY,IAAIA,YAAY,CAACz0B,IAAb,EAA/B;AACAy0B,cAAY,GAAGA,YAAY,IAAI,IAA/B;;AACA,MAAI;AACF55B,WAAO,GAAG4B,IAAI,CAAC+I,KAAL,CAAWivB,YAAX,CAAV;AACD,GAFD,CAEE,OAAOzyB,CAAP,EAAU;AACVlH,kDAAM,CAAC2Q,KAAP,CAAa,sCAAb,EAAqDzJ,CAAC,CAAC0yB,OAAvD;AACD;AACF,CATM;AAWA,IAAMC,UAAU,GAAG,SAAbA,UAAa,GAAW;AACnC,SAAO95B,OAAP;AACD,CAFM;AAIA,IAAM+5B,MAAM,GAAG,gBAASC,GAAT,EAAc;AAClC,MAAMD,MAAM,GAAG;AACbr5B,MAAE,EAAEm4B,KAAK,EADI;AAEbgB,WAAO,EAAEG,GAFI;AAGbpB,OAAG,EAAEA,GAAG,EAHK;AAIbt4B,UAAM,EAAEoH,IAAI,IAAI,IAAR,GAAe,IAAf,GAAsBA,IAAI,CAAChH;AAJtB,GAAf;AAMAgH,MAAI,GAAGqyB,MAAP;AACAvB,SAAO,CAACuB,MAAM,CAACr5B,EAAR,CAAP,GAAqBq5B,MAArB;AACAtB,UAAQ,CAACE,SAAD,CAAR,GAAsBoB,MAAM,CAACr5B,EAA7B;AACAT,gDAAM,CAACmQ,KAAP,CAAa,mBAAmB2pB,MAAM,CAACr5B,EAAvC;AACD,CAXM;AAaA,IAAMu5B,MAAM,GAAG,SAATA,MAAS,CAAS5uB,IAAT,EAAe;AACnCotB,UAAQ,CAACptB,IAAD,CAAR,GAAiB3D,IAAI,IAAI,IAAR,GAAeA,IAAI,CAAChH,EAApB,GAAyB,IAA1C;AACAT,gDAAM,CAACmQ,KAAP,CAAa,iBAAb;AACD,CAHM;AAKA,IAAM8pB,KAAK,GAAG,SAARA,KAAQ,CAASC,WAAT,EAAsB;AACzC,MAAMnB,aAAa,GAAGR,OAAO,CAACC,QAAQ,CAACE,SAAD,CAAT,CAA7B;AACA,MAAMM,WAAW,GAAGT,OAAO,CAACC,QAAQ,CAAC0B,WAAD,CAAT,CAA3B;;AACA,MAAIjB,eAAe,CAACF,aAAD,EAAgBC,WAAhB,CAAnB,EAAiD;AAC/Ch5B,kDAAM,CAACmQ,KAAP,CAAa,gBAAb;AACA;AACD;;AACD,MAAI2oB,iBAAiB,CAACC,aAAD,EAAgBC,WAAhB,CAArB,EAAmD;AACjDR,YAAQ,CAACE,SAAD,CAAR,GAAsBF,QAAQ,CAAC0B,WAAD,CAA9B;AACAzyB,QAAI,GAAG8wB,OAAO,CAACC,QAAQ,CAACE,SAAD,CAAT,CAAd;AACD,GAHD,MAGO;AACL;AACA,QAAMoB,OAAM,GAAG;AACbr5B,QAAE,EAAEm4B,KAAK,EADI;AAEbgB,aAAO,EAAE,mBAAmBM,WAAnB,GAAiC,QAAjC,GAA4CxB,SAFxC;AAGbC,SAAG,EAAEA,GAAG,EAHK;AAIbt4B,YAAM,EAAE,CAACoH,IAAI,IAAI,IAAR,GAAe,IAAf,GAAsBA,IAAI,CAAChH,EAA5B,EAAgC+3B,QAAQ,CAAC0B,WAAD,CAAxC;AAJK,KAAf;AAMAzyB,QAAI,GAAGqyB,OAAP;AACAvB,WAAO,CAACuB,OAAM,CAACr5B,EAAR,CAAP,GAAqBq5B,OAArB;AACAtB,YAAQ,CAACE,SAAD,CAAR,GAAsBoB,OAAM,CAACr5B,EAA7B;AACD;;AACDT,gDAAM,CAACmQ,KAAP,CAAaqoB,QAAb;AACAx4B,gDAAM,CAACmQ,KAAP,CAAa,gBAAb;AACD,CAxBM;AA0BA,IAAMgqB,QAAQ,GAAG,SAAXA,QAAW,CAASH,MAAT,EAAiB;AACvCh6B,gDAAM,CAACmQ,KAAP,CAAa,aAAb;AACAuoB,WAAS,GAAGsB,MAAZ;AACA,MAAMv5B,EAAE,GAAG+3B,QAAQ,CAACE,SAAD,CAAnB;AACAjxB,MAAI,GAAG8wB,OAAO,CAAC93B,EAAD,CAAd;AACD,CALM;AAOA,IAAMP,KAAK,GAAG,SAARA,KAAQ,CAASk6B,SAAT,EAAoB;AACvCp6B,gDAAM,CAACmQ,KAAP,CAAa,UAAb,EAAyBiqB,SAAzB;AACA,MAAMC,GAAG,GAAGD,SAAS,CAAC11B,KAAV,CAAgB,GAAhB,EAAqB,CAArB,CAAZ;AACA,MAAI41B,WAAW,GAAGC,QAAQ,CAACH,SAAS,CAAC11B,KAAV,CAAgB,GAAhB,EAAqB,CAArB,CAAD,CAA1B;AACA,MAAIo1B,MAAM,GAAGO,GAAG,KAAK,MAAR,GAAiB5yB,IAAjB,GAAwB8wB,OAAO,CAACC,QAAQ,CAAC6B,GAAD,CAAT,CAA5C;AACAr6B,gDAAM,CAACmQ,KAAP,CAAa2pB,MAAb,EAAqBQ,WAArB;;AACA,SAAOA,WAAW,GAAG,CAArB,EAAwB;AACtBR,UAAM,GAAGvB,OAAO,CAACuB,MAAM,CAACz5B,MAAR,CAAhB;AACAi6B,eAAW;;AACX,QAAI,CAACR,MAAL,EAAa;AACX,UAAMhZ,GAAG,GAAG,8DAAZ;AACA9gB,oDAAM,CAAC2Q,KAAP,CAAamQ,GAAb;AACA,YAAMA,GAAN;AACD;AACF;;AACDrZ,MAAI,GAAGqyB,MAAP;AACAtB,UAAQ,CAACE,SAAD,CAAR,GAAsBoB,MAAM,CAACr5B,EAA7B;AACD,CAjBM;;AAmBP,SAAS+5B,MAAT,CAAgBvD,GAAhB,EAAqBz3B,GAArB,EAA0Bi7B,MAA1B,EAAkC;AAChC,MAAMC,KAAK,GAAGzD,GAAG,CAAC7mB,OAAJ,CAAY5Q,GAAZ,CAAd;;AACA,MAAIk7B,KAAK,KAAK,CAAC,CAAf,EAAkB;AAChBzD,OAAG,CAACrvB,IAAJ,CAAS6yB,MAAT;AACD,GAFD,MAEO;AACLxD,OAAG,CAAC0D,MAAJ,CAAWD,KAAX,EAAkB,CAAlB,EAAqBD,MAArB;AACD;AACF;;AAED,SAASG,wBAAT,CAAkCC,SAAlC,EAA6C;AAC3C,MAAMf,MAAM,GAAGe,SAAS,CAACrB,MAAV,CAAiB,UAACC,GAAD,EAAMK,MAAN,EAAiB;AAC/C,QAAIL,GAAG,CAACd,GAAJ,GAAUmB,MAAM,CAACnB,GAArB,EAA0B,OAAOc,GAAP;AAC1B,WAAOK,MAAP;AACD,GAHc,EAGZe,SAAS,CAAC,CAAD,CAHG,CAAf;AAIA,MAAIhyB,IAAI,GAAG,EAAX;AACAgyB,WAAS,CAACt7B,OAAV,CAAkB,UAASu7B,CAAT,EAAY;AAC5B,QAAIA,CAAC,KAAKhB,MAAV,EAAkB;AAChBjxB,UAAI,IAAI,KAAR;AACD,KAFD,MAEO;AACLA,UAAI,IAAI,KAAR;AACD;AACF,GAND;AAOA,MAAMhI,KAAK,GAAG,CAACgI,IAAD,EAAOixB,MAAM,CAACr5B,EAAd,EAAkBq5B,MAAM,CAACnB,GAAzB,CAAd;;AACA,OAAK,IAAIqB,OAAT,IAAmBxB,QAAnB,EAA6B;AAC3B,QAAIA,QAAQ,CAACwB,OAAD,CAAR,KAAqBF,MAAM,CAACr5B,EAAhC,EAAoCI,KAAK,CAAC+G,IAAN,CAAWoyB,OAAX;AACrC;;AACDh6B,gDAAM,CAACmQ,KAAP,CAAatP,KAAK,CAAC6S,IAAN,CAAW,GAAX,CAAb;;AACA,MAAI/O,KAAK,CAACC,OAAN,CAAck1B,MAAM,CAACz5B,MAArB,CAAJ,EAAkC;AAChC,QAAM06B,SAAS,GAAGxC,OAAO,CAACuB,MAAM,CAACz5B,MAAP,CAAc,CAAd,CAAD,CAAzB;AACAm6B,UAAM,CAACK,SAAD,EAAYf,MAAZ,EAAoBiB,SAApB,CAAN;AACAF,aAAS,CAACjzB,IAAV,CAAe2wB,OAAO,CAACuB,MAAM,CAACz5B,MAAP,CAAc,CAAd,CAAD,CAAtB;AACD,GAJD,MAIO,IAAIy5B,MAAM,CAACz5B,MAAP,IAAiB,IAArB,EAA2B;AAChC;AACD,GAFM,MAEA;AACL,QAAM26B,UAAU,GAAGzC,OAAO,CAACuB,MAAM,CAACz5B,MAAR,CAA1B;AACAm6B,UAAM,CAACK,SAAD,EAAYf,MAAZ,EAAoBkB,UAApB,CAAN;AACD;;AACDH,WAAS,GAAGzB,MAAM,CAACyB,SAAD,EAAY,UAAAC,CAAC;AAAA,WAAIA,CAAC,CAACr6B,EAAN;AAAA,GAAb,CAAlB;AACAm6B,0BAAwB,CAACC,SAAD,CAAxB;AACD;;AAEM,IAAMI,WAAW,GAAG,SAAdA,WAAc,GAAW;AACpCj7B,gDAAM,CAACmQ,KAAP,CAAaooB,OAAb;AACA,MAAMj4B,IAAI,GAAG46B,eAAe,GAAG,CAAH,CAA5B;AACAN,0BAAwB,CAAC,CAACt6B,IAAD,CAAD,CAAxB;AACD,CAJM;AAMA,IAAM4C,KAAK,GAAG,SAARA,KAAQ,GAAW;AAC9Bq1B,SAAO,GAAG,EAAV;AACA9wB,MAAI,GAAG,IAAP;AACA+wB,UAAQ,GAAG;AAAEC,UAAM,EAAEhxB;AAAV,GAAX;AACAixB,WAAS,GAAG,QAAZ;AACAC,KAAG,GAAG,CAAN;AACD,CANM;AAQA,IAAMwC,qBAAqB,GAAG,SAAxBA,qBAAwB,GAAW;AAC9C,MAAMC,SAAS,GAAG,EAAlB;;AACA,OAAK,IAAIpB,QAAT,IAAmBxB,QAAnB,EAA6B;AAC3B4C,aAAS,CAACxzB,IAAV,CAAe;AAAEwD,UAAI,EAAE4uB,QAAR;AAAgBF,YAAM,EAAEvB,OAAO,CAACC,QAAQ,CAACwB,QAAD,CAAT;AAA/B,KAAf;AACD;;AACD,SAAOoB,SAAP;AACD,CANM;AAQA,IAAMC,WAAW,GAAG,SAAdA,WAAc,GAAW;AACpC,SAAO7C,QAAP;AACD,CAFM;AAGA,IAAM8C,UAAU,GAAG,SAAbA,UAAa,GAAW;AACnC,SAAO/C,OAAP;AACD,CAFM;AAGA,IAAM2C,eAAe,GAAG,SAAlBA,eAAkB,GAAW;AACxC,MAAML,SAAS,GAAG97B,MAAM,CAACO,IAAP,CAAYi5B,OAAZ,EAAqB1iB,GAArB,CAAyB,UAASrW,GAAT,EAAc;AACvD,WAAO+4B,OAAO,CAAC/4B,GAAD,CAAd;AACD,GAFiB,CAAlB;AAGAq7B,WAAS,CAACt7B,OAAV,CAAkB,UAASg8B,CAAT,EAAY;AAC5Bv7B,kDAAM,CAACmQ,KAAP,CAAaorB,CAAC,CAAC96B,EAAf;AACD,GAFD;AAGAo6B,WAAS,CAAChsB,IAAV,CAAe,UAACoa,CAAD,EAAIsL,CAAJ;AAAA,WAAUA,CAAC,CAACoE,GAAF,GAAQ1P,CAAC,CAAC0P,GAApB;AAAA,GAAf;AACA,SAAOkC,SAAP;AACD,CATM;AAUA,IAAMW,gBAAgB,GAAG,SAAnBA,gBAAmB,GAAW;AACzC,SAAO9C,SAAP;AACD,CAFM;AAGA,IAAMhQ,YAAY,GAAG,SAAfA,YAAe,GAAW;AACrC,SAAOpB,SAAP;AACD,CAFM;AAGA,IAAMmU,OAAO,GAAG,SAAVA,OAAU,GAAW;AAChC,SAAOh0B,IAAP;AACD,CAFM;AAIQ;AACb4gB,cAAY,EAAZA,YADa;AAEbqR,YAAU,EAAVA,UAFa;AAGbG,YAAU,EAAVA,UAHa;AAIbC,QAAM,EAANA,MAJa;AAKbE,QAAM,EAANA,MALa;AAMbC,OAAK,EAALA,KANa;AAObE,UAAQ,EAARA,QAPa;AAQbj6B,OAAK,EAALA,KARa;AASb+6B,aAAW,EAAXA,WATa;AAUb/3B,OAAK,EAALA,KAVa;AAWbi4B,uBAAqB,EAArBA,qBAXa;AAYbE,aAAW,EAAXA,WAZa;AAabC,YAAU,EAAVA,UAba;AAcbJ,iBAAe,EAAfA,eAda;AAebM,kBAAgB,EAAhBA,gBAfa;AAgBb9S,cAAY,EAAZA,YAhBa;AAiBb+S,SAAO,EAAPA;AAjBa,CAAf,E;;;;;;;;;;;;ACrOA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAEA,IAAIC,cAAc,GAAG,EAArB;AACA,IAAIC,SAAJ;AACA,IAAIliC,MAAM,GAAG;AACXa,aAAW,EAAE,GADF;AAEXshC,eAAa,EAAE,QAFJ;AAGXC,iBAAe,EAAE,CAHN;AAIXC,iBAAe,EAAE,MAJN;AAKXC,iBAAe,EAAE,CALN;AAMXC,cAAY,EAAE,EANH;AAOX/d,WAAS,EAAE,MAPA;AAQXge,YAAU,EAAE,EARD;AASXC,cAAY,EAAE,CAAC,SAAD,EAAY,SAAZ,EAAuB,SAAvB,EAAkC,SAAlC,CATH;AAUXC,YAAU,EAAE,EAVD;AAWXC,WAAS,EAAE;AACTrhC,SAAK,EAAE,EADE;AAETC,UAAM,EAAE,GAFC;AAGT+G,KAAC,EAAE,CAAC,EAHK;AAITC,KAAC,EAAE;AAJM;AAXA,CAAb;AAkBA,IAAIq6B,SAAS,GAAG,EAAhB;AACO,IAAM7f,OAAO,GAAG,SAAVA,OAAU,CAASse,CAAT,EAAY;AACjCuB,WAAS,GAAGvB,CAAZ;AACD,CAFM;;AAIP,SAASwB,aAAT,CAAuBxiB,GAAvB,EAA4B;AAC1BA,KAAG,CACArX,MADH,CACU,MADV,EAEGA,MAFH,CAEU,GAFV,EAGG7B,IAHH,CAGQ,IAHR,EAGc,YAHd,EAIG6B,MAJH,CAIU,QAJV,EAKG7B,IALH,CAKQ,GALR,EAKanH,MAAM,CAAC0iC,UALpB,EAMGv7B,IANH,CAMQ,IANR,EAMc,CANd,EAOGA,IAPH,CAOQ,IAPR,EAOc,CAPd;AAQAkZ,KAAG,CACAtY,MADH,CACU,aADV,EAEGiB,MAFH,CAEU,eAFV,EAGG7B,IAHH,CAGQ,OAHR,EAGiBnH,MAAM,CAAC2iC,SAAP,CAAiBrhC,KAHlC,EAIG6F,IAJH,CAIQ,QAJR,EAIkBnH,MAAM,CAAC2iC,SAAP,CAAiBphC,MAJnC,EAKG4F,IALH,CAKQ,GALR,EAKanH,MAAM,CAAC2iC,SAAP,CAAiBr6B,CAL9B,EAMGnB,IANH,CAMQ,GANR,EAManH,MAAM,CAAC2iC,SAAP,CAAiBp6B,CAN9B,EAOGpB,IAPH,CAOQ,OAPR,EAOiB,YAPjB,EAQGA,IARH,CAQQ,kBARR,EAQ4B,kDAR5B,EASG6B,MATH,CASU,GATV,EAUGsB,IAVH,CAUQ,EAVR;AAWD;;AAED,SAASw4B,WAAT,CAAqBziB,GAArB,EAA0BrU,MAA1B,EAAkC+2B,QAAlC,EAA4CzgB,WAA5C,EAAyD;AACvD,MAAMvhB,KAAK,GAAGwhB,iEAAkB,CAACD,WAAD,EAAchT,6CAAd,CAAhC;AACA,MAAM0zB,KAAK,GAAGhjC,MAAM,CAACyiC,YAAP,CAAoBM,QAAQ,GAAG/iC,MAAM,CAACyiC,YAAP,CAAoBp3B,MAAnD,CAAd;AACA,MAAM43B,OAAO,GAAG7zB,+CAAI,GACjB9G,CADa,CACX,UAAS+G,CAAT,EAAY;AACb,WAAO/C,IAAI,CAAC42B,KAAL,CAAW7zB,CAAC,CAAC/G,CAAb,CAAP;AACD,GAHa,EAIbC,CAJa,CAIX,UAAS8G,CAAT,EAAY;AACb,WAAO/C,IAAI,CAAC42B,KAAL,CAAW7zB,CAAC,CAAC9G,CAAb,CAAP;AACD,GANa,EAObxH,KAPa,CAOPA,KAPO,CAAhB;AASAsf,KAAG,CACArX,MADH,CACU,UADV,EAEG7B,IAFH,CAEQ,GAFR,EAEa87B,OAAO,CAACj3B,MAAD,CAFpB,EAGGzB,KAHH,CAGS,QAHT,EAGmBy4B,KAHnB,EAIGz4B,KAJH,CAIS,cAJT,EAIyBvK,MAAM,CAACsiC,eAJhC,EAKG/3B,KALH,CAKS,MALT,EAKiB,MALjB;AAMD,C,CAED;;;AACA,SAAS44B,gBAAT,CAA0BhnB,OAA1B,EAAmCinB,MAAnC,EAA2C;AACzCA,QAAM,GAAGA,MAAM,IAAIjnB,OAAO,CAACtV,IAAR,GAAec,OAAf,EAAnB;AACA,MAAM07B,GAAG,GAAGlnB,OAAO,CAACtV,IAAR,GAAey8B,MAAf,EAAZ;AACA,MAAMC,EAAE,GAAGF,GAAG,CAAC51B,CAAJ,GAAQ21B,MAAM,CAAC96B,CAAP,GAAW+6B,GAAG,CAAC7T,CAAlC;AACA,MAAMgU,EAAE,GAAGH,GAAG,CAACrqB,CAAJ,GAAQoqB,MAAM,CAAC76B,CAAP,GAAW86B,GAAG,CAACh0B,CAAlC;AACA,SAAO;AACL6F,QAAI,EAAEquB,EADD;AAELpuB,OAAG,EAAEquB,EAFA;AAGLliC,SAAK,EAAE8hC,MAAM,CAAC9hC,KAHT;AAILC,UAAM,EAAE6hC,MAAM,CAAC7hC;AAJV,GAAP;AAMD;;AAED,SAASkiC,qBAAT,CAA+BpjB,GAA/B,EAAoCqjB,MAApC,EAA4CC,IAA5C,EAAkD9V,SAAlD,EAA6DmV,KAA7D,EAAoE;AAClEz8B,gDAAM,CAACmQ,KAAP,CAAa,yBAAb,EAAwCgtB,MAAxC,EAAgDC,IAAhD;AACA,MAAMC,QAAQ,GAAGT,gBAAgB,CAAC9iB,GAAG,CAACtY,MAAJ,CAAW,WAAW27B,MAAX,GAAoB,SAA/B,CAAD,CAAjC;AACA,MAAMG,MAAM,GAAGV,gBAAgB,CAAC9iB,GAAG,CAACtY,MAAJ,CAAW,WAAW47B,IAAX,GAAkB,SAA7B,CAAD,CAA/B;;AACA,UAAQ9V,SAAR;AACE,SAAK,IAAL;AACE;AACA;AACA;AACA,UAAI+V,QAAQ,CAAC1uB,IAAT,GAAgB2uB,MAAM,CAAC3uB,IAAvB,GAA8BlV,MAAM,CAACa,WAAzC,EAAsD;AACpD,YAAMijC,SAAS,GAAG;AAChBx7B,WAAC,EAAEs7B,QAAQ,CAAC1uB,IAAT,GAAgBlV,MAAM,CAACa,WADV;AAEhB0H,WAAC,EAAEs7B,MAAM,CAAC1uB,GAAP,GAAa0uB,MAAM,CAACtiC,MAAP,GAAgB;AAFhB,SAAlB;AAIA,YAAMwiC,OAAO,GAAG;AAAEz7B,WAAC,EAAEu7B,MAAM,CAAC3uB,IAAP,GAAc2uB,MAAM,CAACviC,KAA1B;AAAiCiH,WAAC,EAAEs7B,MAAM,CAAC1uB,GAAP,GAAa0uB,MAAM,CAACtiC,MAAP,GAAgB;AAAjE,SAAhB;AACAuhC,mBAAW,CAACziB,GAAD,EAAM,CAACyjB,SAAD,EAAYC,OAAZ,CAAN,EAA4Bf,KAA5B,EAAmC,QAAnC,CAAX;AACAF,mBAAW,CACTziB,GADS,EAET,CACE;AAAE/X,WAAC,EAAEs7B,QAAQ,CAAC1uB,IAAd;AAAoB3M,WAAC,EAAEq7B,QAAQ,CAACzuB,GAAT,GAAeyuB,QAAQ,CAACriC,MAAT,GAAkB;AAAxD,SADF,EAEE;AAAE+G,WAAC,EAAEs7B,QAAQ,CAAC1uB,IAAT,GAAgBlV,MAAM,CAACa,WAAP,GAAqB,CAA1C;AAA6C0H,WAAC,EAAEq7B,QAAQ,CAACzuB,GAAT,GAAeyuB,QAAQ,CAACriC,MAAT,GAAkB;AAAjF,SAFF,EAGE;AAAE+G,WAAC,EAAEs7B,QAAQ,CAAC1uB,IAAT,GAAgBlV,MAAM,CAACa,WAAP,GAAqB,CAA1C;AAA6C0H,WAAC,EAAEu7B,SAAS,CAACv7B;AAA1D,SAHF,EAIEu7B,SAJF,CAFS,EAQTd,KARS,CAAX;AAUD,OAjBD,MAiBO;AACLF,mBAAW,CACTziB,GADS,EAET,CACE;AACE/X,WAAC,EAAEs7B,QAAQ,CAAC1uB,IADd;AAEE3M,WAAC,EAAEq7B,QAAQ,CAACzuB,GAAT,GAAeyuB,QAAQ,CAACriC,MAAT,GAAkB;AAFtC,SADF,EAKE;AACE+G,WAAC,EAAEs7B,QAAQ,CAAC1uB,IAAT,GAAgBlV,MAAM,CAACa,WAAP,GAAqB,CAD1C;AAEE0H,WAAC,EAAEq7B,QAAQ,CAACzuB,GAAT,GAAeyuB,QAAQ,CAACriC,MAAT,GAAkB;AAFtC,SALF,EASE;AACE+G,WAAC,EAAEs7B,QAAQ,CAAC1uB,IAAT,GAAgBlV,MAAM,CAACa,WAAP,GAAqB,CAD1C;AAEE0H,WAAC,EAAEs7B,MAAM,CAAC1uB,GAAP,GAAa0uB,MAAM,CAACtiC,MAAP,GAAgB;AAFlC,SATF,EAaE;AACE+G,WAAC,EAAEu7B,MAAM,CAAC3uB,IAAP,GAAc2uB,MAAM,CAACviC,KAD1B;AAEEiH,WAAC,EAAEs7B,MAAM,CAAC1uB,GAAP,GAAa0uB,MAAM,CAACtiC,MAAP,GAAgB;AAFlC,SAbF,CAFS,EAoBTyhC,KApBS,CAAX;AAsBD;;AACD;;AACF,SAAK,IAAL;AACE;AACA;AACA;AACA;AACA,UAAIa,MAAM,CAAC1uB,GAAP,GAAayuB,QAAQ,CAACzuB,GAAtB,GAA4BnV,MAAM,CAACa,WAAvC,EAAoD;AAClD,YAAMijC,UAAS,GAAG;AAChBx7B,WAAC,EAAEu7B,MAAM,CAAC3uB,IAAP,GAAc2uB,MAAM,CAACviC,KAAP,GAAe,CADhB;AAEhBiH,WAAC,EAAEq7B,QAAQ,CAACzuB,GAAT,GAAeyuB,QAAQ,CAACriC,MAAxB,GAAiCvB,MAAM,CAACa;AAF3B,SAAlB;AAIA,YAAMkjC,QAAO,GAAG;AAAEz7B,WAAC,EAAEu7B,MAAM,CAAC3uB,IAAP,GAAc2uB,MAAM,CAACviC,KAAP,GAAe,CAAlC;AAAqCiH,WAAC,EAAEs7B,MAAM,CAAC1uB;AAA/C,SAAhB;AACA2tB,mBAAW,CAACziB,GAAD,EAAM,CAACyjB,UAAD,EAAYC,QAAZ,CAAN,EAA4Bf,KAA5B,EAAmC,QAAnC,CAAX;AACAF,mBAAW,CACTziB,GADS,EAET,CACE;AAAE/X,WAAC,EAAEs7B,QAAQ,CAAC1uB,IAAT,GAAgB0uB,QAAQ,CAACtiC,KAAT,GAAiB,CAAtC;AAAyCiH,WAAC,EAAEq7B,QAAQ,CAACzuB,GAAT,GAAeyuB,QAAQ,CAACriC;AAApE,SADF,EAEE;AACE+G,WAAC,EAAEs7B,QAAQ,CAAC1uB,IAAT,GAAgB0uB,QAAQ,CAACtiC,KAAT,GAAiB,CADtC;AAEEiH,WAAC,EAAEq7B,QAAQ,CAACzuB,GAAT,GAAeyuB,QAAQ,CAACriC,MAAxB,GAAiCvB,MAAM,CAACa,WAAP,GAAqB;AAF3D,SAFF,EAME;AAAEyH,WAAC,EAAEu7B,MAAM,CAAC3uB,IAAP,GAAc2uB,MAAM,CAACviC,KAAP,GAAe,CAAlC;AAAqCiH,WAAC,EAAEu7B,UAAS,CAACv7B,CAAV,GAAcvI,MAAM,CAACa,WAAP,GAAqB;AAA3E,SANF,EAOEijC,UAPF,CAFS,EAWTd,KAXS,CAAX;AAaD,OApBD,MAoBO;AACLF,mBAAW,CACTziB,GADS,EAET,CACE;AACE/X,WAAC,EAAEs7B,QAAQ,CAAC1uB,IAAT,GAAgB0uB,QAAQ,CAACtiC,KAAT,GAAiB,CADtC;AAEEiH,WAAC,EAAEq7B,QAAQ,CAACzuB,GAAT,GAAeyuB,QAAQ,CAACriC;AAF7B,SADF,EAKE;AACE+G,WAAC,EAAEs7B,QAAQ,CAAC1uB,IAAT,GAAgB0uB,QAAQ,CAACtiC,KAAT,GAAiB,CADtC;AAEEiH,WAAC,EAAEq7B,QAAQ,CAACzuB,GAAT,GAAenV,MAAM,CAACa,WAAP,GAAqB;AAFzC,SALF,EASE;AACEyH,WAAC,EAAEu7B,MAAM,CAAC3uB,IAAP,GAAc2uB,MAAM,CAACviC,KAAP,GAAe,CADlC;AAEEiH,WAAC,EAAEs7B,MAAM,CAAC1uB,GAAP,GAAanV,MAAM,CAACa,WAAP,GAAqB;AAFvC,SATF,EAaE;AACEyH,WAAC,EAAEu7B,MAAM,CAAC3uB,IAAP,GAAc2uB,MAAM,CAACviC,KAAP,GAAe,CADlC;AAEEiH,WAAC,EAAEs7B,MAAM,CAAC1uB;AAFZ,SAbF,CAFS,EAoBT6tB,KApBS,CAAX;AAsBD;;AACD;AAhGJ;AAkGD;;AAED,SAASgB,SAAT,CAAmB3jB,GAAnB,EAAwB4jB,QAAxB,EAAkC;AAChC,SAAO5jB,GAAG,CACPtY,MADI,CACGk8B,QADH,EAEJp9B,IAFI,GAGJm9B,SAHI,CAGM,IAHN,CAAP;AAID;;AAED,SAASE,mBAAT,CAA6B7jB,GAA7B,EAAkC8jB,QAAlC,EAA4CpF,QAA5C,EAAsDlR,SAAtD,EAAiE;AAC/D,MAAIwS,MAAJ;AACA,MAAM+D,UAAU,GAAG9+B,MAAM,CAACO,IAAP,CAAYo8B,cAAZ,EAA4B52B,MAA/C;;AACA,MAAI,OAAO84B,QAAP,KAAoB,QAAxB,EAAkC;AAChC,OAAG;AACD9D,YAAM,GAAG4B,cAAc,CAACkC,QAAD,CAAvB;AACA59B,oDAAM,CAACmQ,KAAP,CAAa,wBAAb,EAAuC2pB,MAAM,CAACr5B,EAA9C,EAAkDq5B,MAAM,CAACnB,GAAzD;;AACA,UAAI7e,GAAG,CAACtY,MAAJ,CAAW,WAAWo8B,QAAtB,EAAgCE,IAAhC,KAAyC,CAA7C,EAAgD;AAC9C;AACD;;AACDhkB,SAAG,CACArX,MADH,CACU,YAAW;AACjB,eAAOg7B,SAAS,CAAC3jB,GAAD,EAAM,aAAN,CAAhB;AACD,OAHH,EAIGlZ,IAJH,CAIQ,OAJR,EAIiB,QAJjB,EAKGA,IALH,CAKQ,IALR,EAKc,YAAW;AACrB,eAAO,UAAUk5B,MAAM,CAACr5B,EAAxB;AACD,OAPH,EAQGG,IARH,CAQQ,WARR,EAQqB,YAAW;AAC5B,gBAAQ0mB,SAAR;AACE,eAAK,IAAL;AACE,mBACE,gBACCwS,MAAM,CAACnB,GAAP,GAAal/B,MAAM,CAACa,WAApB,GAAkCb,MAAM,CAACwiC,UAD1C,IAEA,IAFA,GAGAN,SAAS,GAAGliC,MAAM,CAACuiC,YAHnB,GAIA,GALF;;AAOF,eAAK,IAAL;AACE,mBACE,gBACCL,SAAS,GAAGliC,MAAM,CAACuiC,YAAnB,GAAkCviC,MAAM,CAACwiC,UAD1C,IAEA,IAFA,GAGA,CAAC4B,UAAU,GAAG/D,MAAM,CAACnB,GAArB,IAA4Bl/B,MAAM,CAACa,WAHnC,GAIA,GALF;AAVJ;AAkBD,OA3BH,EA4BGsG,IA5BH,CA4BQ,MA5BR,EA4BgBnH,MAAM,CAACmiC,aA5BvB,EA6BGh7B,IA7BH,CA6BQ,QA7BR,EA6BkBnH,MAAM,CAACqiC,eA7BzB,EA8BGl7B,IA9BH,CA8BQ,cA9BR,EA8BwBnH,MAAM,CAACoiC,eA9B/B;AAgCA,UAAI7B,MAAM,SAAV;;AACA,WAAK,IAAI+D,UAAT,IAAuBvF,QAAvB,EAAiC;AAC/B,YAAIA,QAAQ,CAACuF,UAAD,CAAR,CAAqBjE,MAArB,KAAgCA,MAApC,EAA4C;AAC1CE,gBAAM,GAAGxB,QAAQ,CAACuF,UAAD,CAAjB;AACA;AACD;AACF;;AACD,UAAI/D,MAAJ,EAAY;AACVh6B,sDAAM,CAACmQ,KAAP,CAAa,eAAb,EAA8B6pB,MAAM,CAAC5uB,IAArC;AACA0O,WAAG,CACAtY,MADH,CACU,WAAWs4B,MAAM,CAACr5B,EAAlB,GAAuB,IADjC,EAEGgC,MAFH,CAEU,YAFV,EAGG7B,IAHH,CAGQ,OAHR,EAGiB,cAHjB,EAIGE,IAJH,CAIQk5B,MAAM,CAAC5uB,IAAP,GAAc,IAJtB;AAKD;;AACD0O,SAAG,CACAtY,MADH,CACU,WAAWs4B,MAAM,CAACr5B,EAAlB,GAAuB,IADjC,EAEGgC,MAFH,CAEU,YAFV,EAGG7B,IAHH,CAGQ,OAHR,EAGiB,WAHjB,EAIGE,IAJH,CAIQg5B,MAAM,CAACr5B,EAJf;;AAKA,UAAIq5B,MAAM,CAACF,OAAP,KAAmB,EAAnB,IAAyBtS,SAAS,KAAK,IAA3C,EAAiD;AAC/CxN,WAAG,CACAtY,MADH,CACU,WAAWs4B,MAAM,CAACr5B,EAAlB,GAAuB,IADjC,EAEGgC,MAFH,CAEU,YAFV,EAGG7B,IAHH,CAGQ,OAHR,EAGiB,YAHjB,EAIGE,IAJH,CAIQ,OAAOg5B,MAAM,CAACF,OAJtB;AAKD;;AACDgE,cAAQ,GAAG9D,MAAM,CAACz5B,MAAlB;AACD,KAlED,QAkESu9B,QAAQ,IAAIlC,cAAc,CAACkC,QAAD,CAlEnC;AAmED;;AAED,MAAIj5B,KAAK,CAACC,OAAN,CAAcg5B,QAAd,CAAJ,EAA6B;AAC3B59B,kDAAM,CAACmQ,KAAP,CAAa,qBAAb,EAAoCytB,QAApC;AACAD,uBAAmB,CAAC7jB,GAAD,EAAM8jB,QAAQ,CAAC,CAAD,CAAd,EAAmBpF,QAAnB,EAA6BlR,SAA7B,CAAnB;AACAqU,aAAS;AACTgC,uBAAmB,CAAC7jB,GAAD,EAAM8jB,QAAQ,CAAC,CAAD,CAAd,EAAmBpF,QAAnB,EAA6BlR,SAA7B,CAAnB;AACAqU,aAAS;AACV;AACF;;AAED,SAASqC,WAAT,CAAqBlkB,GAArB,EAA0BggB,MAA1B,EAAkCxS,SAAlC,EAA6C2W,WAA7C,EAA0D;AACxDA,aAAW,GAAGA,WAAW,IAAI,CAA7B;;AACA,SAAOnE,MAAM,CAACnB,GAAP,GAAa,CAAb,IAAkB,CAACmB,MAAM,CAACoE,SAAjC,EAA4C;AAC1C,QAAI,OAAOpE,MAAM,CAACz5B,MAAd,KAAyB,QAA7B,EAAuC;AACrC68B,2BAAqB,CAACpjB,GAAD,EAAMggB,MAAM,CAACr5B,EAAb,EAAiBq5B,MAAM,CAACz5B,MAAxB,EAAgCinB,SAAhC,EAA2C2W,WAA3C,CAArB;AACAnE,YAAM,CAACoE,SAAP,GAAmB,IAAnB;AACApE,YAAM,GAAG4B,cAAc,CAAC5B,MAAM,CAACz5B,MAAR,CAAvB;AACD,KAJD,MAIO,IAAIsE,KAAK,CAACC,OAAN,CAAck1B,MAAM,CAACz5B,MAArB,CAAJ,EAAkC;AACvC68B,2BAAqB,CAACpjB,GAAD,EAAMggB,MAAM,CAACr5B,EAAb,EAAiBq5B,MAAM,CAACz5B,MAAP,CAAc,CAAd,CAAjB,EAAmCinB,SAAnC,EAA8C2W,WAA9C,CAArB;AACAf,2BAAqB,CAACpjB,GAAD,EAAMggB,MAAM,CAACr5B,EAAb,EAAiBq5B,MAAM,CAACz5B,MAAP,CAAc,CAAd,CAAjB,EAAmCinB,SAAnC,EAA8C2W,WAAW,GAAG,CAA5D,CAArB;AACAD,iBAAW,CAAClkB,GAAD,EAAM4hB,cAAc,CAAC5B,MAAM,CAACz5B,MAAP,CAAc,CAAd,CAAD,CAApB,EAAwCinB,SAAxC,EAAmD2W,WAAW,GAAG,CAAjE,CAAX;AACAnE,YAAM,CAACoE,SAAP,GAAmB,IAAnB;AACApE,YAAM,GAAG4B,cAAc,CAAC5B,MAAM,CAACz5B,MAAP,CAAc,CAAd,CAAD,CAAvB;AACD;AACF;AACF;;AAEM,IAAM8c,IAAI,GAAG,SAAPA,IAAO,CAASuE,GAAT,EAAcjhB,EAAd,EAAkB09B,GAAlB,EAAuB;AACzC,MAAI;AACF,QAAMzjB,MAAM,GAAG0jB,uDAAc,CAAC1jB,MAA9B;AACAA,UAAM,CAACC,EAAP,GAAY0jB,oDAAZ;AACA3jB,UAAM,CAACC,EAAP,CAAUzX,KAAV;AAEAlD,kDAAM,CAACmQ,KAAP,CAAa,sBAAb,EAAqCuR,GAAG,GAAG,IAA3C,EAAiD,KAAjD,EAAwDjhB,EAAxD,EAA4D09B,GAA5D,EALE,CAMF;;AACAzjB,UAAM,CAAChQ,KAAP,CAAagX,GAAG,GAAG,IAAnB;AAEAjoB,UAAM,GAAGsF,MAAM,CAACu/B,MAAP,CAAc7kC,MAAd,EAAsB4iC,SAAtB,EAAiCgC,oDAAE,CAACxE,UAAH,EAAjC,CAAT;AACA75B,kDAAM,CAACmQ,KAAP,CAAa,mBAAb,EAAkC1W,MAAlC;AACA,QAAM6tB,SAAS,GAAG+W,oDAAE,CAAC3V,YAAH,EAAlB;AACAgT,kBAAc,GAAG2C,oDAAE,CAAC/C,UAAH,EAAjB;AACA,QAAM9C,QAAQ,GAAG6F,oDAAE,CAAClD,qBAAH,EAAjB;;AACA,QAAI7T,SAAS,KAAK,IAAlB,EAAwB;AACtB7tB,YAAM,CAAC2iC,SAAP,CAAiBr6B,CAAjB,GAAqBy2B,QAAQ,CAAC1zB,MAAT,GAAkBrL,MAAM,CAACuiC,YAA9C;AACAviC,YAAM,CAAC2iC,SAAP,CAAiBrhC,KAAjB,GAAyB,MAAzB;AACAtB,YAAM,CAAC2iC,SAAP,CAAiBp6B,CAAjB,GAAqB,CAAC,CAAD,GAAK,CAAL,GAASvI,MAAM,CAAC0iC,UAArC;AACD;;AACD,QAAMriB,GAAG,GAAGtY,iDAAM,iBAASf,EAAT,SAAlB;AACA67B,iBAAa,CAACxiB,GAAD,CAAb;AACA6hB,aAAS,GAAG,CAAZ;;AACA,SAAK,IAAI3B,MAAT,IAAmBxB,QAAnB,EAA6B;AAC3B,UAAMhxB,CAAC,GAAGgxB,QAAQ,CAACwB,MAAD,CAAlB;AACA2D,yBAAmB,CAAC7jB,GAAD,EAAMtS,CAAC,CAACsyB,MAAF,CAASr5B,EAAf,EAAmB+3B,QAAnB,EAA6BlR,SAA7B,CAAnB;AACA0W,iBAAW,CAAClkB,GAAD,EAAMtS,CAAC,CAACsyB,MAAR,EAAgBxS,SAAhB,CAAX;AACAqU,eAAS;AACV;;AACD7hB,OAAG,CAAClZ,IAAJ,CAAS,QAAT,EAAmB,YAAW;AAC5B,UAAI0mB,SAAS,KAAK,IAAlB,EAAwB,OAAOvoB,MAAM,CAACO,IAAP,CAAYo8B,cAAZ,EAA4B52B,MAA5B,GAAqCrL,MAAM,CAACa,WAAnD;AACxB,aAAO,CAACk+B,QAAQ,CAAC1zB,MAAT,GAAkB,CAAnB,IAAwBrL,MAAM,CAACuiC,YAAtC;AACD,KAHD;AAID,GAhCD,CAgCE,OAAO90B,CAAP,EAAU;AACVlH,kDAAM,CAAC2Q,KAAP,CAAa,gCAAb;AACA3Q,kDAAM,CAAC2Q,KAAP,CAAazJ,CAAC,CAAC0yB,OAAf;AACD;AACF,CArCM;AAuCQ;AACbpd,SAAO,EAAPA,OADa;AAEbW,MAAI,EAAJA;AAFa,CAAf,E;;;;;;;;;;;ACjVA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA,eAAe,kCAAkC;AACjD,iBAAiB,kCAAkC;AACnD;AACA;AACA;AACA,qBAAqB,IAAI;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mJAAmJ;AACnJ,SAAS;;AAET;AACA;AACA,qBAAqB,+BAA+B;AACpD;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW,YAAY,IAAI,WAAW,SAAS;AACvE,cAAc,0BAA0B,EAAE;AAC1C,MAAM;AACN,WAAW,uSAAuS;AAClT,aAAa,0JAA0J;AACvK;AACA;AACA;;AAEA;AACA;AACA;AACA,iB;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA,yBAAyB;AACzB;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,SAAS,YAAY,EAAE,MAAM,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,QAAQ,EAAE,QAAQ,cAAc,gBAAgB,gBAAgB,sBAAsB,EAAE,QAAQ,EAAE,gFAAgF,eAAe,SAAS,eAAe,UAAU,gBAAgB,0BAA0B,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,0BAA0B,EAAE,QAAQ,eAAe,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,UAAU,EAAE,oBAAoB,EAAE,UAAU,EAAE,UAAU;AAC1lB,iBAAiB,2GAA2G;AAC5H;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iCAAiC;AACjC,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL,qDAAqD;AACrD;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL,UAAU,wBAAwB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA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PA,OADa;AAEbW,MAAI,EAAJA;AAFa,CAAf,E;;;;;;;;;;;ACpDA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA,eAAe,kCAAkC;AACjD,iBAAiB,kCAAkC;AACnD;AACA;AACA;AACA,qBAAqB,IAAI;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mJAAmJ;AACnJ,SAAS;;AAET;AACA;AACA,qBAAqB,+BAA+B;AACpD;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW,YAAY,IAAI,WAAW,SAAS;AACvE,cAAc,0BAA0B,EAAE;AAC1C,MAAM;AACN,WAAW,mHAAmH;AAC9H,aAAa,gDAAgD;AAC7D;AACA;AACA;;AAEA;AACA;AACA;AACA,W;AACA;AACA;;AAEA;AACA;AACA,kB;AACA;AACA;AACA,CAAC;AACD,SAAS,YAAY,EAAE,MAAM,cAAc,IAAI,GAAG,iCAAiC,EAAE,QAAQ;AAC7F,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iCAAiC;AACjC,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL,qDAAqD;AACrD;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL,UAAU,wBAAwB;AAClC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,aAAa,WAAW;AACxB,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA,CAAC;;;AAGD,IAAI,IAAgE;AACpE;AACA;AACA,6BAA6B,8CAA8C;AAC3E;AACA;AACA;AACA;AACA;AACA,iBAAiB,mBAAO,CAAC,0DAAI,eAAe,mBAAO,CAAC,qDAAM;AAC1D;AACA;AACA,IAAI,KAA6B,IAAI,4CAAY;AACjD;AACA;AACA,C;;;;;;;;;;;;;AC7mBA;AAAA,IAAMS,SAAS,GAAG,SAAZA,SAAY;AAAA;AAAA,CAAlB;;AAEeA,wEAAf,E;;;;;;;;;;;ACFA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA,eAAe,kCAAkC;AACjD,iBAAiB,kCAAkC;AACnD;AACA;AACA;AACA,qBAAqB,IAAI;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mJAAmJ;AACnJ,SAAS;;AAET;AACA;AACA,qBAAqB,+BAA+B;AACpD;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW,YAAY,IAAI,WAAW,SAAS;AACvE,cAAc,0BAA0B,EAAE;AAC1C,MAAM;AACN,WAAW,mIAAmI;AAC9I,aAAa,gEAAgE;AAC7E;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,kD;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA,CAAC;AACD,SAAS,YAAY,EAAE,MAAM,cAAc,IAAI,GAAG,0CAA0C,EAAE,QAAQ,yCAAyC,UAAU;AACzJ,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iCAAiC;AACjC,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL,qDAAqD;AACrD;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL,UAAU,wBAAwB;AAClC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,qGAAqG;AACrG,aAAa,UAAU,gCAAgC,YAAY;AACnE,CAAC;AACD;A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53B,OAAO,CAAClG,UAdF;AAAA,CAAzB;;AAmBe+jB,wEAAf,E;;;;;;;;;;;ACnBA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA,eAAe,kCAAkC;AACjD,iBAAiB,kCAAkC;AACnD;AACA;AACA;AACA,qBAAqB,IAAI;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mJAAmJ;AACnJ,SAAS;;AAET;AACA;AACA,qBAAqB,+BAA+B;AACpD;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW,YAAY,IAAI,WAAW,SAAS;AACvE,cAAc,0BAA0B,EAAE;AAC1C,MAAM;AACN,WAAW,wyBAAwyB;AACnzB,aAAa,ifAAif;AAC9f;AACA;AACA;;AAEA;AACA;AACA;AACA,kBAAkB,c;AAClB;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA,W;AACA;AACA;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA,QAAQ;AACR;AACA;AACA,SAAS,+BAA+B;AACxC;AACA;;AAEA,oBAAoB,0FAA0F;AAC9G,iBAAiB,qEAAqE;AACtF;AACA;AACA;;AAEA,oBAAoB,wFAAwF;AAC5G,iBAAiB,oFAAoF;AACrG;AACA;AACA;;AAEA,oBAAoB,uFAAuF;AAC3G,iBAAiB,mFAAmF;AACpG;AACA;AACA;;AAEA;AACA,oBAAoB,uFAAuF;AAC3G;AACA;AACA,iBAAiB,gDAAgD;AACjE;AACA;AACA;;AAEA;AACA,oBAAoB,uFAAuF;AAC3G;AACA;AACA,iBAAiB,gDAAgD;AACjE;AACA;AACA;AACA,4BAA4B,gFAAgF,W;AAC5G;AACA;AACA,4BAA4B,kFAAkF,W;AAC9G;AACA;;AAEA,uBAAuB,sEAAsE;AAC7F;AACA;;AAEA;AACA;AACA;AACA;AACA,uBAAuB,qFAAqF;AAC5G;AACA;AACA,6B;AACA;AACA;AACA,iB;AACA;AACA;AACA,8B;AACA;AACA;AACA,+B;AACA;AACA;AACA,8BAA8B,4FAA4F;AAC1H,gBAAgB;AAChB;AACA;AACA;AACA,8BAA8B,4FAA4F;AAC1H,eAAe;AACf;AACA;AACA;AACA,8BAA8B,4FAA4F;AAC1H;AACA;AACA,QAAQ;AACR;AACA;AACA,iC;AACA;AACA;AACA,kC;AACA;AACA;AACA,4B;AACA;AACA;AACA,6B;AACA;AACA;AACA,kC;AACA;AACA;AACA,mC;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,qB;AACvB;AACA;AACA,6C;AACA;AACA;AACA,2CAA2C,4C;AAC3C;AACA;AACA,qBAAqB,oC;AACrB;AACA;AACA,CAAC;AACD,SAAS,sCAAsC,EAAE,MAAM,EAAE,sCAAsC,EAAE,sCAAsC,EAAE,uCAAuC,uDAAuD,KAAK,GAAG,gBAAgB,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,sJAAsJ,EAAE,uBAAuB,iCAAiC,6HAA6H,4BAA4B,aAAa,EAAE,SAAS,gBAAgB,aAAa,EAAE,aAAa,EAAE,SAAS,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,gBAAgB,kEAAkE,EAAE,oCAAoC,2CAA2C,SAAS,EAAE,gBAAgB,EAAE,SAAS,eAAe,mBAAmB,gBAAgB,SAAS,EAAE,SAAS,gBAAgB,SAAS,EAAE,SAAS,YAAY,KAAK,aAAa,KAAK,aAAa,KAAK,aAAa,WAAW,aAAa,WAAW,GAAG,iCAAiC,sFAAsF,aAAa,EAAE,mBAAmB,EAAE,UAAU,EAAE,UAAU,gBAAgB,aAAa,EAAE,UAAU,EAAE,UAAU,0DAA0D,wJAAwJ,EAAE,wJAAwJ,EAAE,wJAAwJ,EAAE,UAAU,EAAE,kKAAkK,EAAE,UAAU,EAAE,kKAAkK,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,oBAAoB,EAAE,SAAS,EAAE,SAAS,0DAA0D,UAAU,gBAAgB,WAAW,EAAE,cAAc,EAAE,cAAc,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,cAAc,wCAAwC,YAAY,aAAa,YAAY,GAAG,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AACpsF,iBAAiB,yKAAyK;AAC1L;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iCAAiC;AACjC,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL,qDAAqD;AACrD;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL,UAAU,wBAAwB;AAClC;AACA;AACA;AACA,qCAAqC,W;AACrC;AACA,qCAAqC,W;AACrC;AACA,wBAAwB,6BAA6B,W;AACrD;AACA,wBAAwB,iBAAiB,W;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,W;AAC1B;AACA,wCAAwC,qBAAqB,W;AAC7D;AACA,yBAAyB,iBAAiB,oBAAoB,W;AAC9D;AACA,yBAAyB,iBAAiB,U;AAC1C;AACA,4BAA4B,W;AAC5B;AACA,4BAA4B,W;AAC5B;AACA,4BAA4B,W;AAC5B;AACA,4BAA4B,W;AAC5B;AACA,4BAA4B,W;AAC5B;AACA,4BAA4B,W;AAC5B;AACA,4BAA4B,W;AAC5B;AACA,yBAAyB,W;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,W;AAC1B;AACA,0BAA0B,W;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,W;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,iBAAiB,kBAAkB,gCAAgC,oBAAoB,uFAAuF,oBAAoB,kDAAkD,iCAAiC,sKAAsK,8MAA8M,qBAAqB,6GAA6G;AAC3wB,aAAa,QAAQ,mCAAmC,kBAAkB,kC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E,yGAAyG,eAAe,iFAAiF,wCAAwC,oBAAoB,iBAAiB,UAAU,eAAe,UAAU,GAAG,UAAU,4CAA4C,oCAAoC,yDAAyD,oBAAoB,0BAA0B,KAAK,GAAG,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,eAAe,UAAU,GAAG,2GAA2G,eAAe,UAAU,GAAG,UAAU,EAAE,UAAU,wCAAwC,KAAK,+BAA+B,2GAA2G;AAC/kC,iBAAiB,oCAAoC;AACrD;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iCAAiC;AACjC,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL,qDAAqD;AACrD;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL,UAAU,wBAAwB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,yCAAyC,a;AACzE;AACA;AACA;AACA;AACA;AACA,gC;AACA;AACA,uBAAuB,yCAAyC,0CAA0C;AAC1G;AACA,wBAAwB,yCAAyC,yCAAyC;AAC1G;AACA,wBAAwB,yCAAyC,yCAAyC;AAC1G;AACA,wBAAwB,yCAAyC,yCAAyC;AAC1G;AACA;AACA;AACA,wBAAwB,2BAA2B;AACnD;AACA,wBAAwB,uCAAuC;AAC/D;AACA;AACA;AACA,wDAAwD;AACxD;AACA,oDAAoD;AACpD;AACA;AACA;AACA,wBAAwB,yBAAyB,2CAA2C;AAC5F;AACA,wCAAwC,mBAAmB;AAC3D;AACA;AACA;AACA,4BAA4B,W;AAC5B;AACA,yBAAyB,0BAA0B;AACnD;AACA,yBAAyB,0BAA0B;AACnD;AACA,yBAAyB;AACzB;AACA,wBAAwB,mCAAmC;AAC3D;AACA;AACA;AACA,2DAA2D;AAC3D;AACA,wBAAwB,8CAA8C;AACtE;AACA,yBAAyB,4BAA4B,6CAA6C;AAClG;AACA,yBAAyB,mDAAmD,2CAA2C;AACvH;AACA,yBAAyB,mDAAmD,6CAA6C;AACzH;AACA,4DAA4D,W;AAC5D;AACA,4DAA4D,W;AAC5D;AACA,qDAAqD,Y;AACrD;AACA,iDAAiD;AACjD;AACA,2CAA2C;AAC3C;AACA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ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW,YAAY,IAAI,WAAW,SAAS;AACvE,cAAc,0BAA0B,EAAE;AAC1C,MAAM;AACN,WAAW,uKAAuK;AAClL,aAAa,oGAAoG;AACjH;AACA;AACA;;AAEA;AACA;AACA;AACA,iB;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA,gCAAgC;AAChC;AACA;AACA,6BAA6B;AAC7B;AACA;AACA,CAAC;AACD,SAAS,YAAY,EAAE,MAAM,cAAc,IAAI,GAAG,sDAAsD,cAAc,QAAQ,gBAAgB,0BAA0B,sDAAsD,UAAU;AACxO,kBAAkB;AAClB;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iCAAiC;AACjC,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL,qDAAqD;AACrD;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL,UAAU,wBAAwB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,sGAAsG,2BAA2B,kBAAkB,kBAAkB;AACrK,aAAa,WAAW;AACxB,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA,CAAC;;;AAGD,IAAI,IAAgE;AACpE;AACA;AACA,6BAA6B,8CAA8C;AAC3E;AACA;AACA;AACA;AACA;AACA,iBAAiB,mBAAO,CAAC,0DAAI,eAAe,mBAAO,CAAC,qDAAM;AAC1D;AACA;AACA,IAAI,KAA6B,IAAI,4CAAY;AACjD;AACA;AACA,C;;;;;;;;;;;;;ACroBA;AAAA,IAAMS,SAAS,GAAG,SAAZA,SAAY,CAAA7d,OAAO;AAAA,wIAIZA,OAAO,CAAC4sB,SAJI,iFAWX5sB,OAAO,CAAC4sB,SAXG,6CAeb5sB,OAAO,CAAC4sB,SAfK,qFAsBZ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","file":"mermaid.core.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"mermaid\"] = factory();\n\telse\n\t\troot[\"mermaid\"] = factory();\n})(typeof self !== \"undefined\" ? self : this, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./src/mermaid.js\");\n","// .dirname, .basename, and .extname methods are extracted from Node.js v8.11.1,\n// backported and transplited with Babel, with backwards-compat fixes\n\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// resolves . and .. elements in a path array with directory names there\n// must be no slashes, empty elements, or device names (c:\\) in the array\n// (so also no leading and trailing slashes - it does not distinguish\n// relative and absolute paths)\nfunction normalizeArray(parts, allowAboveRoot) {\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n for (var i = parts.length - 1; i >= 0; i--) {\n var last = parts[i];\n if (last === '.') {\n parts.splice(i, 1);\n } else if (last === '..') {\n parts.splice(i, 1);\n up++;\n } else if (up) {\n parts.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (allowAboveRoot) {\n for (; up--; up) {\n parts.unshift('..');\n }\n }\n\n return parts;\n}\n\n// path.resolve([from ...], to)\n// posix version\nexports.resolve = function() {\n var resolvedPath = '',\n resolvedAbsolute = false;\n\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path = (i >= 0) ? arguments[i] : process.cwd();\n\n // Skip empty and invalid entries\n if (typeof path !== 'string') {\n throw new TypeError('Arguments to path.resolve must be strings');\n } else if (!path) {\n continue;\n }\n\n resolvedPath = path + '/' + resolvedPath;\n resolvedAbsolute = path.charAt(0) === '/';\n }\n\n // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n\n // Normalize the path\n resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) {\n return !!p;\n }), !resolvedAbsolute).join('/');\n\n return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';\n};\n\n// path.normalize(path)\n// posix version\nexports.normalize = function(path) {\n var isAbsolute = exports.isAbsolute(path),\n trailingSlash = substr(path, -1) === '/';\n\n // Normalize the path\n path = normalizeArray(filter(path.split('/'), function(p) {\n return !!p;\n }), !isAbsolute).join('/');\n\n if (!path && !isAbsolute) {\n path = '.';\n }\n if (path && trailingSlash) {\n path += '/';\n }\n\n return (isAbsolute ? '/' : '') + path;\n};\n\n// posix version\nexports.isAbsolute = function(path) {\n return path.charAt(0) === '/';\n};\n\n// posix version\nexports.join = function() {\n var paths = Array.prototype.slice.call(arguments, 0);\n return exports.normalize(filter(paths, function(p, index) {\n if (typeof p !== 'string') {\n throw new TypeError('Arguments to path.join must be strings');\n }\n return p;\n }).join('/'));\n};\n\n\n// path.relative(from, to)\n// posix version\nexports.relative = function(from, to) {\n from = exports.resolve(from).substr(1);\n to = exports.resolve(to).substr(1);\n\n function trim(arr) {\n var start = 0;\n for (; start < arr.length; start++) {\n if (arr[start] !== '') break;\n }\n\n var end = arr.length - 1;\n for (; end >= 0; end--) {\n if (arr[end] !== '') break;\n }\n\n if (start > end) return [];\n return arr.slice(start, end - start + 1);\n }\n\n var fromParts = trim(from.split('/'));\n var toParts = trim(to.split('/'));\n\n var length = Math.min(fromParts.length, toParts.length);\n var samePartsLength = length;\n for (var i = 0; i < length; i++) {\n if (fromParts[i] !== toParts[i]) {\n samePartsLength = i;\n break;\n }\n }\n\n var outputParts = [];\n for (var i = samePartsLength; i < fromParts.length; i++) {\n outputParts.push('..');\n }\n\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n\n return outputParts.join('/');\n};\n\nexports.sep = '/';\nexports.delimiter = ':';\n\nexports.dirname = function (path) {\n if (typeof path !== 'string') path = path + '';\n if (path.length === 0) return '.';\n var code = path.charCodeAt(0);\n var hasRoot = code === 47 /*/*/;\n var end = -1;\n var matchedSlash = true;\n for (var i = path.length - 1; i >= 1; --i) {\n code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n if (!matchedSlash) {\n end = i;\n break;\n }\n } else {\n // We saw the first non-path separator\n matchedSlash = false;\n }\n }\n\n if (end === -1) return hasRoot ? '/' : '.';\n if (hasRoot && end === 1) {\n // return '//';\n // Backwards-compat fix:\n return '/';\n }\n return path.slice(0, end);\n};\n\nfunction basename(path) {\n if (typeof path !== 'string') path = path + '';\n\n var start = 0;\n var end = -1;\n var matchedSlash = true;\n var i;\n\n for (i = path.length - 1; i >= 0; --i) {\n if (path.charCodeAt(i) === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // path component\n matchedSlash = false;\n end = i + 1;\n }\n }\n\n if (end === -1) return '';\n return path.slice(start, end);\n}\n\n// Uses a mixed approach for backwards-compatibility, as ext behavior changed\n// in new Node.js versions, so only basename() above is backported here\nexports.basename = function (path, ext) {\n var f = basename(path);\n if (ext && f.substr(-1 * ext.length) === ext) {\n f = f.substr(0, f.length - ext.length);\n }\n return f;\n};\n\nexports.extname = function (path) {\n if (typeof path !== 'string') path = path + '';\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n var preDotState = 0;\n for (var i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46 /*.*/) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1)\n startDot = i;\n else if (preDotState !== 1)\n preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (startDot === -1 || end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n return '';\n }\n return path.slice(startDot, end);\n};\n\nfunction filter (xs, f) {\n if (xs.filter) return xs.filter(f);\n var res = [];\n for (var i = 0; i < xs.length; i++) {\n if (f(xs[i], i, xs)) res.push(xs[i]);\n }\n return res;\n}\n\n// String.prototype.substr - negative index don't work in IE8\nvar substr = 'ab'.substr(-1) === 'b'\n ? function (str, start, len) { return str.substr(start, len) }\n : function (str, start, len) {\n if (start < 0) start = str.length + start;\n return str.substr(start, len);\n }\n;\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","import { assignWithDepth } from './utils';\nimport { logger } from './logger';\nimport theme from './themes';\n\n// import { unflatten } from 'flat';\n// import flatten from 'flat';\n\n// import themeVariables from './theme-default';\n// import themeForestVariables from './theme-forest';\n// import themeNeutralVariables from './theme-neutral';\n\nconst handleThemeVariables = value => {\n return theme[value] ? theme[value].getThemeVariables() : theme.default.getThemeVariables();\n};\n\nconst manipulators = {\n themeVariables: handleThemeVariables\n};\n\n/**\n * **Configuration methods in Mermaid version 8.6.0 have been updated, to learn more[[click here](8.6.0_docs.md)].**\n *\n * ## **What follows are config instructions for older versions**\n * These are the default options which can be overridden with the initialization call like so:\n * **Example 1:**\n *
\n * mermaid.initialize({\n * flowchart:{\n * htmlLabels: false\n * }\n * });\n *\n *\n * **Example 2:**\n *
\n * <script>\n * var config = {\n * startOnLoad:true,\n * flowchart:{\n * useMaxWidth:true,\n * htmlLabels:true,\n * curve:'cardinal',\n * },\n *\n * securityLevel:'loose',\n * };\n * mermaid.initialize(config);\n * </script>\n *\n * A summary of all options and their defaults is found [here](#mermaidapi-configuration-defaults). A description of each option follows below.\n *\n * @name Configuration\n */\nconst config = {\n /** theme , the CSS style sheet\n *\n * theme , the CSS style sheet\n *\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| Theme |Built in Themes| String | Optional | Values include, default, forest, dark, neutral, null|\n *\n ***Notes:**To disable any pre-defined mermaid theme, use \"null\".\n *
\n * \"theme\": \"forest\",\n * \"themeCSS\": \".node rect { fill: red; }\"\n *\n */\n theme: 'default',\n themeVariables: theme['default'].getThemeVariables(),\n themeCSS: undefined,\n /* **maxTextSize** - The maximum allowed size of the users text diamgram */\n maxTextSize: 50000,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *|fontFamily | specifies the font to be used in the rendered diagrams| String | Required | Verdana, Arial, Trebuchet MS,|\n *\n ***notes: Default value is \\\\\"trebuchet ms\\\\\".\n */\n fontFamily: '\"trebuchet ms\", verdana, arial;',\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| logLevel |This option decides the amount of logging to be used.| String | Required | 1, 2, 3, 4, 5 |\n *\n *\n ***Notes:**\n *- debug: 1.\n *- info: 2.\n *- warn: 3.\n *- error: 4.\n *- fatal: 5(default).\n */\n logLevel: 5,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| securitylevel | Level of trust for parsed diagram|String | Required | Strict, Loose, antiscript |\n *\n ***Notes:\n *- **strict**: (**default**) tags in text are encoded, click functionality is disabeled\n *- **loose**: tags in text are allowed, click functionality is enabled\n *- **antiscript**: html tags in text are allowed, (only script element is removed), click functionality is enabled\n */\n securityLevel: 'strict',\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| startOnLoad| Dictates whether mermaind starts on Page load | Boolean | Required | True, False |\n *\n ***Notes:**\n ***Default value: true**\n */\n startOnLoad: true,\n\n /**\n *| Parameter | Description |Type | Required |Values|\n *| --- | --- | --- | --- | --- |\n *| arrowMarkerAbsolute | Controls whether or arrow markers in html code are absolute paths or anchors | Boolean | Required | True, False |\n *\n *\n *## Notes**: This matters if you are using base tag settings.\n ***Default value: false**.\n */\n arrowMarkerAbsolute: false,\n\n /**\n * This option controls which currentConfig keys are considered _secure_ and can only be changed via\n * call to mermaidAPI.initialize. Calls to mermaidAPI.reinitialize cannot make changes to\n * the `secure` keys in the current currentConfig. This prevents malicious graph directives from\n * overriding a site's default security.\n */\n secure: ['secure', 'securityLevel', 'startOnLoad', 'maxTextSize'],\n\n /**\n * The object containing configurations specific for flowcharts\n */\n flowchart: {\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| diagramPadding | amount of padding around the diagram as a whole | Integer | Required | Any Positive Value |\n *\n ***Notes:**The amount of padding around the diagram as a whole so that embedded diagrams have margins, expressed in pixels\n ***Default value: 8**.\n */\n diagramPadding: 8,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| htmlLabels | Flag for setting whether or not a html tag should be used for rendering labels on the edges. | Boolean| Required | True, False|\n *\n ***Notes: Default value: true**.\n */\n htmlLabels: true,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| nodeSpacing | Defines the spacing between nodes on the same level | Integer| Required | Any positive Numbers |\n *\n ***Notes:\n *Pertains to horizontal spacing for TB (top to bottom) or BT (bottom to top) graphs, and the vertical spacing for LR as well as RL graphs.**\n ***Default value 50**.\n */\n nodeSpacing: 50,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| rankSpacing | Defines the spacing between nodes on different levels | Integer | Required| Any Positive Numbers |\n *\n ***Notes: pertains to vertical spacing for TB (top to bottom) or BT (bottom to top), and the horizontal spacing for LR as well as RL graphs.\n ***Default value 50**.\n */\n rankSpacing: 50,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| curve | Defines how mermaid renders curves for flowcharts. | String | Required | Basis, Linear, Cardinal|\n *\n ***Notes:\n *Default Vaue: Linear**\n */\n curve: 'linear',\n // Only used in new experimental rendering\n // repreesents the padding between the labels and the shape\n padding: 15\n },\n\n /**\n * The object containing configurations specific for sequence diagrams\n */\n sequence: {\n /**\n * widt of the activation rect\n * **Default value 10**.\n */\n activationWidth: 10,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| diagramMarginX | margin to the right and left of the sequence diagram | Integer | Required | Any Positive Values |\n *\n ***Notes:**\n ***Default value 50**.\n */\n diagramMarginX: 50,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| diagramMarginY | Margin to the over and under the sequence diagram | Integer | Required | Any Positive Values|\n *\n ***Notes:**\n ***Default value 10**.\n */\n diagramMarginY: 10,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| actorMargin | Margin between actors. | Integer | Required | Any Positive Value |\n *\n ***Notes:**\n ***Default value 50**.\n */\n actorMargin: 50,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| width | Width of actor boxes | Integer | Required | Any Positive Value |\n *\n ***Notes:**\n ***Default value 150**.\n */\n width: 150,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| height | Height of actor boxes | Integer | Required | Any Positive Value|\n *\n ***Notes:**\n ***Default value 65**..\n */\n height: 65,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| boxMargin | Margin around loop boxes | Integer | Required | Any Positive Value |\n *\n ***Notes:**\n *\n ***Default value 10**.\n */\n boxMargin: 10,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| boxTextMargin| margin around the text in loop/alt/opt boxes | Integer | Required| Any Positive Value|\n *\n ***Notes:**\n *\n ***Default value 5**.\n */\n boxTextMargin: 5,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| noteMargin | margin around notes. | Integer | Required | Any Positive Value |\n *\n ***Notes:**\n *\n ***Default value 10**.\n */\n noteMargin: 10,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| messageMargin | Space between messages. | Integer | Required | Any Positive Value |\n *\n ***Notes:**\n *\n *Space between messages.\n ***Default value 35**.\n */\n messageMargin: 35,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| messageAlign | Multiline message alignment | Integer | Required | left, center, right |\n *\n ***Notes:**center **default**\n */\n messageAlign: 'center',\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| mirrorActors | mirror actors under diagram. | Boolean| Required | True, False |\n *\n ***Notes:**\n *\n ***Default value true**.\n */\n mirrorActors: true,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| bottomMarginAdj | Prolongs the edge of the diagram downwards. | Integer | Required | Any Positive Value |\n *\n ***Notes:**Depending on css styling this might need adjustment.\n ***Default value 1**.\n */\n bottomMarginAdj: 1,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| useMaxWidth | See Notes | Boolean | Required | True, False |\n *\n ***Notes:**\n *when this flag is set to true, the height and width is set to 100% and is then scaling with the\n *available space. If set to false, the absolute space required is used.\n ***Default value: True**.\n */\n useMaxWidth: true,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| rightAngles | display curve arrows as right angles| Boolean | Required | True, False |\n *\n ***Notes:**\n *\n *This will display arrows that start and begin at the same node as right angles, rather than a curve\n ***Default value false**.\n */\n rightAngles: false,\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| showSequenceNumbers | This will show the node numbers | Boolean | Required | True, False |\n *\n ***Notes:**\n ***Default value false**.\n */\n showSequenceNumbers: false,\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| actorFontSize| This sets the font size of the actor's description | Integer | Require | Any Positive Value |\n *\n ***Notes:**\n ***Default value 14**..\n */\n actorFontSize: 14,\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| actorFontFamily |This sets the font family of the actor's description | 3 | 4 | Open-Sans, Sans-Serif |\n *\n ***Notes:**\n ***Default value \"Open-Sans\", \"sans-serif\"**.\n */\n actorFontFamily: '\"Open-Sans\", \"sans-serif\"',\n /**\n * This sets the font weight of the actor's description\n * **Default value 400.\n */\n actorFontWeight: 400,\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| noteFontSize |This sets the font size of actor-attached notes. | Integer | Required | Any Positive Value |\n *\n ***Notes:**\n ***Default value 14**..\n */\n noteFontSize: 14,\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| noteFontFamily| This sets the font family of actor-attached notes. | String | Required | trebuchet ms, verdana, arial |\n *\n ***Notes:**\n ***Default value: trebuchet ms **.\n */\n noteFontFamily: '\"trebuchet ms\", verdana, arial',\n /**\n * This sets the font weight of the note's description\n * **Default value 400.\n */\n noteFontWeight: 400,\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| noteAlign | This sets the text alignment of actor-attached notes. | string | required | left, center, right|\n *\n ***Notes:**\n ***Default value center**.\n */\n noteAlign: 'center',\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| messageFontSize | This sets the font size of actor messages. | Integer | Required | Any Positive Number |\n *\n ***Notes:**\n ***Default value 16**.\n */\n messageFontSize: 16,\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| messageFontFamily | This sets the font family of actor messages. | String| Required | trebuchet ms\", verdana, aria |\n *\n ***Notes:**\n ***Default value:\"trebuchet ms**.\n */\n messageFontFamily: '\"trebuchet ms\", verdana, arial',\n /**\n * This sets the font weight of the message's description\n * **Default value 400.\n */\n messageFontWeight: 400,\n /**\n * This sets the auto-wrap state for the diagram\n * **Default value false.\n */\n wrap: false,\n /**\n * This sets the auto-wrap padding for the diagram (sides only)\n * **Default value 10.\n */\n wrapPadding: 10,\n /**\n * This sets the width of the loop-box (loop, alt, opt, par)\n * **Default value 50.\n */\n labelBoxWidth: 50,\n /**\n * This sets the height of the loop-box (loop, alt, opt, par)\n * **Default value 20.\n */\n labelBoxHeight: 20,\n messageFont: function() {\n return {\n fontFamily: this.messageFontFamily,\n fontSize: this.messageFontSize,\n fontWeight: this.messageFontWeight\n };\n },\n noteFont: function() {\n return {\n fontFamily: this.noteFontFamily,\n fontSize: this.noteFontSize,\n fontWeight: this.noteFontWeight\n };\n },\n actorFont: function() {\n return {\n fontFamily: this.actorFontFamily,\n fontSize: this.actorFontSize,\n fontWeight: this.actorFontWeight\n };\n }\n },\n\n /**\n * The object containing configurations specific for gantt diagrams*\n */\n gantt: {\n /**\n *### titleTopMargin\n *\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| titleTopMargin | Margin top for the text over the gantt diagram | Integer | Required | Any Positive Value |\n *\n ***Notes:**\n ***Default value 25**.\n */\n titleTopMargin: 25,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| barHeight | The height of the bars in the graph | Integer | Required | Any Positive Value |\n *\n ***Notes:**\n ***Default value 20**.\n */\n barHeight: 20,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| barGap | The margin between the different activities in the gantt diagram. | Integer | Optional |Any Positive Value |\n *\n ***Notes:**\n ***Default value 4**.\n */\n barGap: 4,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| topPadding | Margin between title and gantt diagram and between axis and gantt diagram. | Integer | Required | Any Positive Value |\n *\n ***Notes:**\n ***Default value 50**.\n */\n topPadding: 50,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| leftPadding | The space allocated for the section name to the left of the activities. | Integer| Required | Any Positive Value |\n *\n ***Notes:**\n ***Default value 75**.\n */\n leftPadding: 75,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| gridLineStartPadding | Vertical starting position of the grid lines. | Integer | Required | Any Positive Value |\n *\n ***Notes:**\n ***Default value 35**.\n */\n gridLineStartPadding: 35,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| fontSize | Font size| Integer | Required | Any Positive Value |\n *\n ***Notes:**\n ***Default value 11**.\n */\n fontSize: 11,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| fontFamily | font Family | string | required |\"Open-Sans\", \"sans-serif\" |\n *\n ***Notes:**\n *\n ***Default value '\"Open-Sans\", \"sans-serif\"'**.\n */\n fontFamily: '\"Open-Sans\", \"sans-serif\"',\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| numberSectionStyles | The number of alternating section styles | Integer | 4 | Any Positive Value |\n *\n ***Notes:**\n ***Default value 4**.\n */\n numberSectionStyles: 4,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| axisFormat | Datetime format of the axis. | 3 | Required | Date in yy-mm-dd |\n *\n ***Notes:**\n *\n * This might need adjustment to match your locale and preferences\n ***Default value '%Y-%m-%d'**.\n */\n axisFormat: '%Y-%m-%d'\n },\n /**\n * The object containing configurations specific for sequence diagrams\n */\n journey: {\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| diagramMarginX | margin to the right and left of the sequence diagram | Integer | Required | Any Positive Value |\n *\n ***Notes:**\n ***Default value 50**.\n */\n diagramMarginX: 50,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| diagramMarginY | margin to the over and under the sequence diagram. | Integer | Required | Any Positive Value|\n *\n ***Notes:**\n ***Default value 10**..\n */\n diagramMarginY: 10,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| actorMargin | Margin between actors. | Integer | Required | Any Positive Value|\n *\n ***Notes:**\n ***Default value 50**.\n */\n actorMargin: 50,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| width | Width of actor boxes | Integer | Required | Any Positive Value |\n *\n ***Notes:**\n ***Default value 150**.\n */\n width: 150,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| height | Height of actor boxes | Integer | Required | Any Positive Value |\n *\n ***Notes:**\n ***Default value 65**.\n */\n height: 65,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| boxMargin | Margin around loop boxes | Integer | Required | Any Positive Value |\n *\n ***Notes:**\n ***Default value 10**.\n */\n boxMargin: 10,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| boxTextMargin | margin around the text in loop/alt/opt boxes | Integer | Required | Any Positive Value |\n *\n ***Notes:**\n */\n boxTextMargin: 5,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| noteMargin | margin around notes. | Integer | Required | Any Positive Value |\n *\n ***Notes:**\n ***Default value 10**.\n */\n noteMargin: 10,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| messageMargin |Space between messages. | Integer | Required | Any Positive Value |\n *\n ***Notes:**\n *\n *Space between messages.\n ***Default value 35**.\n */\n messageMargin: 35,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| messageAlign |Multiline message alignment | 3 | 4 | left, center, right |\n *\n ***Notes:**default:center**\n */\n messageAlign: 'center',\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| bottomMarginAdj | Prolongs the edge of the diagram downwards. | Integer | 4 | Any Positive Value |\n *\n ***Notes:**Depending on css styling this might need adjustment.\n ***Default value 1**.\n */\n bottomMarginAdj: 1,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| useMaxWidth | See notes | Boolean | 4 | True, False |\n *\n ***Notes:**when this flag is set the height and width is set to 100% and is then scaling with the\n *available space if not the absolute space required is used.\n *\n ***Default value true**.\n */\n useMaxWidth: true,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| rightAngles | Curved Arrows become Right Angles, | 3 | 4 | True, False |\n *\n ***Notes:**This will display arrows that start and begin at the same node as right angles, rather than a curves\n ***Default value false**.\n */\n rightAngles: false\n },\n class: {\n arrowMarkerAbsolute: false\n },\n git: {\n arrowMarkerAbsolute: false\n },\n state: {\n dividerMargin: 10,\n sizeUnit: 5,\n padding: 8,\n textHeight: 10,\n titleShift: -15,\n noteMargin: 10,\n forkWidth: 70,\n forkHeight: 7,\n // Used\n miniPadding: 2,\n // Font size factor, this is used to guess the width of the edges labels before rendering by dagre\n // layout. This might need updating if/when switching font\n fontSizeFactor: 5.02,\n fontSize: 24,\n labelHeight: 16,\n edgeLengthFactor: '20',\n compositTitleSize: 35,\n radius: 5\n },\n\n /**\n * The object containing configurations specific for entity relationship diagrams\n */\n er: {\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| diagramPadding | amount of padding around the diagram as a whole | Integer | Required | Any Positive Value |\n *\n ***Notes:**The amount of padding around the diagram as a whole so that embedded diagrams have margins, expressed in pixels\n ***Default value: 20**.\n */\n diagramPadding: 20,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| layoutDirection | Directional bias for layout of entities. | String | Required | \"TB\", \"BT\",\"LR\",\"RL\" |\n *\n ***Notes:**\n *'TB' for Top-Bottom, 'BT'for Bottom-Top, 'LR' for Left-Right, or 'RL' for Right to Left.\n * T = top, B = bottom, L = left, and R = right.\n ***Default value: TB **.\n */\n layoutDirection: 'TB',\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| minEntityWidth | The mimimum width of an entity box, | Integer | Required| Any Positive Value |\n *\n ***Notes:**expressed in pixels\n ***Default value: 100**.\n */\n minEntityWidth: 100,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| minEntityHeight| The minimum height of an entity box, | Integer | 4 | Any Positive Value |\n *\n ***Notes:**expressed in pixels\n ***Default value: 75 **\n */\n minEntityHeight: 75,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| entityPadding|minimum internal padding betweentext in box and box borders| Integer | 4 | Any Positive Value |\n *\n ***Notes:**The minimum internal padding betweentext in an entity box and the enclosing box borders, expressed in pixels.\n ***Default value: 15 **\n */\n entityPadding: 15,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| stroke | Stroke color of box edges and lines | String | 4 | Any recognized color |\n ***Default value: gray **\n */\n stroke: 'gray',\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| fill | Fill color of entity boxes | String | 4 | Any recognized color |\n *\n ***Notes:**\n ***Default value:'honeydew'**\n */\n fill: 'honeydew',\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| fontSize| Font Size in pixels| Integer | | Any Positive Value |\n *\n ***Notes:**Font size (expressed as an integer representing a number of pixels)\n ***Default value: 12 **\n */\n fontSize: 12,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| useMaxWidth | See Notes | Boolean | Required | true, false |\n *\n ***Notes:**\n *When this flag is set to true, the diagram width is locked to 100% and\n *scaled based on available space. If set to false, the diagram reserves its\n *absolute width.\n ***Default value: true**.\n */\n useMaxWidth: true\n }\n};\n\n// debugger;\nconfig.class.arrowMarkerAbsolute = config.arrowMarkerAbsolute;\nconfig.git.arrowMarkerAbsolute = config.arrowMarkerAbsolute;\nexport const defaultConfig = Object.freeze(config);\n\nconst siteConfig = assignWithDepth({}, defaultConfig);\nconst currentConfig = assignWithDepth({}, defaultConfig);\n\n/**\n *## setSiteConfig\n *| Function | Description | Type | Values |\n *| --------- | ------------------- | ------- | ------------------ |\n *| setSiteConfig|Sets the siteConfig to desired values | Put Request | Any Values, except ones in secure array|\n ***Notes:**\n *Sets the siteConfig. The siteConfig is a protected configuration for repeat use. Calls to reset() will reset\n *the currentConfig to siteConfig. Calls to reset(configApi.defaultConfig) will reset siteConfig and currentConfig\n *to the defaultConfig\n *Note: currentConfig is set in this function\n **Default value: At default, will mirror Global Config**\n * @param conf - the base currentConfig to use as siteConfig\n * @returns {*} - the siteConfig\n */\nexport const setSiteConfig = conf => {\n Object.keys(conf).forEach(key => {\n const manipulator = manipulators[key];\n conf[key] = manipulator ? manipulator(conf[key]) : conf[key];\n });\n\n assignWithDepth(currentConfig, conf, { clobber: true });\n // Set theme variables if user has set the theme option\n assignWithDepth(siteConfig, conf);\n\n return getSiteConfig();\n};\n/**\n *## getSiteConfig\n *| Function | Description | Type | Values |\n *| --------- | ------------------- | ------- | ------------------ |\n *| setSiteConfig|Returns the current siteConfig base configuration | Get Request | Returns Any Values in siteConfig|\n ***Notes**:\n *Returns **any** values in siteConfig.\n * @returns {*}\n */\nexport const getSiteConfig = () => {\n return assignWithDepth({}, siteConfig);\n};\n/**\n *## setConfig\n *| Function | Description | Type | Values |\n *| --------- | ------------------- | ------- | ------------------ |\n *| setSiteConfig|Sets the siteConfig to desired values | Put Request| Any Values, except ones in secure array|\n ***Notes**:\n *Sets the currentConfig. The parameter conf is sanitized based on the siteConfig.secure keys. Any\n *values found in conf with key found in siteConfig.secure will be replaced with the corresponding\n *siteConfig value.\n * @param conf - the potential currentConfig\n * @returns {*} - the currentConfig merged with the sanitized conf\n */\nexport const setConfig = conf => {\n sanitize(conf);\n Object.keys(conf).forEach(key => {\n const manipulator = manipulators[key];\n conf[key] = manipulator ? manipulator(conf[key]) : conf[key];\n });\n\n assignWithDepth(currentConfig, conf);\n return getConfig();\n};\n/**\n * ## getConfig\n *| Function | Description | Type | Return Values |\n *| --------- | ------------------- | ------- | ------------------ |\n *| getConfig |Obtains the currentConfig | Get Request | Any Values from currentConfig|\n ***Notes**:\n *Returns **any** the currentConfig\n * @returns {*} - the currentConfig\n */\nexport const getConfig = () => {\n return assignWithDepth({}, currentConfig);\n};\n/**\n *## sanitize\n *| Function | Description | Type | Values |\n *| --------- | ------------------- | ------- | ------------------ |\n *| sanitize |Sets the siteConfig to desired values. | Put Request |None|\n *Ensures options parameter does not attempt to override siteConfig secure keys\n *Note: modifies options in-place\n * @param options - the potential setConfig parameter\n */\nexport const sanitize = options => {\n Object.keys(siteConfig.secure).forEach(key => {\n if (typeof options[siteConfig.secure[key]] !== 'undefined') {\n // DO NOT attempt to print options[siteConfig.secure[key]] within `${}` as a malicious script\n // can exploit the logger's attempt to stringify the value and execute arbitrary code\n logger.warn(\n `Denied attempt to modify a secure key ${siteConfig.secure[key]}`,\n options[siteConfig.secure[key]]\n );\n delete options[siteConfig.secure[key]];\n }\n });\n};\n/**\n *## reset\n *| Function | Description | Type | Required | Values |\n *| --------- | ------------------- | ------- | -------- | ------------------ |\n *| reset|Resets currentConfig to conf| Put Request | Required | None|\n *\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| conf| base set of values, which currentConfig coul be **reset** to.| Dictionary | Required | Any Values, with respect to the secure Array|\n *\n **Notes :\n (default: current siteConfig ) (optional, default `getSiteConfig()`)\n * @param conf - the base currentConfig to reset to (default: current siteConfig )\n */\nexport const reset = (conf = getSiteConfig()) => {\n Object.keys(siteConfig).forEach(key => delete siteConfig[key]);\n Object.keys(currentConfig).forEach(key => delete currentConfig[key]);\n assignWithDepth(siteConfig, conf, { clobber: true });\n assignWithDepth(currentConfig, conf, { clobber: true });\n};\n\nconst configApi = Object.freeze({\n sanitize,\n setSiteConfig,\n getSiteConfig,\n setConfig,\n getConfig,\n reset,\n defaultConfig\n});\nexport default configApi;\n","import intersectRect from './intersect/intersect-rect';\nimport { logger as log } from '../logger'; // eslint-disable-line\nimport createLabel from './createLabel';\nimport { select } from 'd3';\nimport { getConfig } from '../config';\n\nconst rect = (parent, node) => {\n log.trace('Creating subgraph rect for ', node.id, node);\n\n // Add outer g element\n const shapeSvg = parent\n .insert('g')\n .attr('class', 'cluster')\n .attr('id', node.id);\n\n // add the rect\n const rect = shapeSvg.insert('rect', ':first-child');\n\n // Create the label and insert it after the rect\n const label = shapeSvg.insert('g').attr('class', 'cluster-label');\n\n const text = label\n .node()\n .appendChild(createLabel(node.labelText, node.labelStyle, undefined, true));\n\n // Get the size of the label\n let bbox = text.getBBox();\n\n if (getConfig().flowchart.htmlLabels) {\n const div = text.children[0];\n const dv = select(text);\n bbox = div.getBoundingClientRect();\n dv.attr('width', bbox.width);\n dv.attr('height', bbox.height);\n }\n\n const padding = 0 * node.padding;\n const halfPadding = padding / 2;\n\n log.trace('Data ', node, JSON.stringify(node));\n // center the rect around its coordinate\n rect\n .attr('rx', node.rx)\n .attr('ry', node.ry)\n .attr('x', node.x - node.width / 2 - halfPadding)\n .attr('y', node.y - node.height / 2 - halfPadding)\n .attr('width', node.width + padding)\n .attr('height', node.height + padding);\n\n // Center the label\n label.attr(\n 'transform',\n 'translate(' +\n (node.x - bbox.width / 2) +\n ', ' +\n (node.y - node.height / 2 - node.padding / 3 + 3) +\n ')'\n );\n\n const rectBox = rect.node().getBBox();\n node.width = rectBox.width;\n node.height = rectBox.height;\n\n node.intersect = function(point) {\n return intersectRect(node, point);\n };\n\n return shapeSvg;\n};\n\n/**\n * Non visiable cluster where the note is group with its\n */\nconst noteGroup = (parent, node) => {\n // Add outer g element\n const shapeSvg = parent\n .insert('g')\n .attr('class', 'note-cluster')\n .attr('id', node.id);\n\n // add the rect\n const rect = shapeSvg.insert('rect', ':first-child');\n\n const padding = 0 * node.padding;\n const halfPadding = padding / 2;\n\n // center the rect around its coordinate\n rect\n .attr('rx', node.rx)\n .attr('ry', node.ry)\n .attr('x', node.x - node.width / 2 - halfPadding)\n .attr('y', node.y - node.height / 2 - halfPadding)\n .attr('width', node.width + padding)\n .attr('height', node.height + padding)\n .attr('fill', 'none');\n\n const rectBox = rect.node().getBBox();\n node.width = rectBox.width;\n node.height = rectBox.height;\n\n node.intersect = function(point) {\n return intersectRect(node, point);\n };\n\n return shapeSvg;\n};\nconst roundedWithTitle = (parent, node) => {\n // Add outer g element\n const shapeSvg = parent\n .insert('g')\n .attr('class', node.classes)\n .attr('id', node.id);\n\n // add the rect\n const rect = shapeSvg.insert('rect', ':first-child');\n\n // Create the label and insert it after the rect\n const label = shapeSvg.insert('g').attr('class', 'cluster-label');\n const innerRect = shapeSvg.append('rect');\n\n const text = label\n .node()\n .appendChild(createLabel(node.labelText, node.labelStyle, undefined, true));\n\n // Get the size of the label\n let bbox = text.getBBox();\n if (getConfig().flowchart.htmlLabels) {\n const div = text.children[0];\n const dv = select(text);\n bbox = div.getBoundingClientRect();\n dv.attr('width', bbox.width);\n dv.attr('height', bbox.height);\n }\n bbox = text.getBBox();\n const padding = 0 * node.padding;\n const halfPadding = padding / 2;\n\n // center the rect around its coordinate\n rect\n .attr('class', 'outer')\n .attr('x', node.x - node.width / 2 - halfPadding)\n .attr('y', node.y - node.height / 2 - halfPadding)\n .attr('width', node.width + padding)\n .attr('height', node.height + padding);\n innerRect\n .attr('class', 'inner')\n .attr('x', node.x - node.width / 2 - halfPadding)\n .attr('y', node.y - node.height / 2 - halfPadding + bbox.height - 1)\n .attr('width', node.width + padding)\n .attr('height', node.height + padding - bbox.height - 3);\n\n // Center the label\n label.attr(\n 'transform',\n 'translate(' +\n (node.x - bbox.width / 2) +\n ', ' +\n (node.y - node.height / 2 - node.padding / 3 + (getConfig().flowchart.htmlLabels ? 5 : 3)) +\n ')'\n );\n\n const rectBox = rect.node().getBBox();\n node.width = rectBox.width;\n node.height = rectBox.height;\n\n node.intersect = function(point) {\n return intersectRect(node, point);\n };\n\n return shapeSvg;\n};\n\nconst divider = (parent, node) => {\n // Add outer g element\n const shapeSvg = parent\n .insert('g')\n .attr('class', node.classes)\n .attr('id', node.id);\n\n // add the rect\n const rect = shapeSvg.insert('rect', ':first-child');\n\n const padding = 0 * node.padding;\n const halfPadding = padding / 2;\n\n // center the rect around its coordinate\n rect\n .attr('class', 'divider')\n .attr('x', node.x - node.width / 2 - halfPadding)\n .attr('y', node.y - node.height / 2)\n .attr('width', node.width + padding)\n .attr('height', node.height + padding);\n\n const rectBox = rect.node().getBBox();\n node.width = rectBox.width;\n node.height = rectBox.height;\n\n node.intersect = function(point) {\n return intersectRect(node, point);\n };\n\n return shapeSvg;\n};\n\nconst shapes = { rect, roundedWithTitle, noteGroup, divider };\n\nlet clusterElems = {};\n\nexport const insertCluster = (elem, node) => {\n log.trace('Inserting cluster');\n const shape = node.shape || 'rect';\n clusterElems[node.id] = shapes[shape](elem, node);\n};\nexport const getClusterTitleWidth = (elem, node) => {\n const label = createLabel(node.labelText, node.labelStyle, undefined, true);\n elem.node().appendChild(label);\n const width = label.getBBox().width;\n elem.node().removeChild(label);\n return width;\n};\n\nexport const clear = () => {\n clusterElems = {};\n};\n\nexport const positionCluster = node => {\n log.info('Position cluster');\n const el = clusterElems[node.id];\n\n el.attr('transform', 'translate(' + node.x + ', ' + node.y + ')');\n};\n","import { select } from 'd3';\nimport { logger } from '../logger'; // eslint-disable-line\n// let vertexNode;\n// if (getConfig().flowchart.htmlLabels) {\n// // TODO: addHtmlLabel accepts a labelStyle. Do we possibly have that?\n// const node = {\n// label: vertexText.replace(/fa[lrsb]?:fa-[\\w-]+/g, s => ``)\n// };\n// vertexNode = addHtmlLabel(svg, node).node();\n// vertexNode.parentNode.removeChild(vertexNode);\n// } else {\n// const svgLabel = document.createElementNS('http://www.w3.org/2000/svg', 'text');\n// svgLabel.setAttribute('style', styles.labelStyle.replace('color:', 'fill:'));\n\n// const rows = vertexText.split(common.lineBreakRegex);\n\n// for (let j = 0; j < rows.length; j++) {\n// const tspan = document.createElementNS('http://www.w3.org/2000/svg', 'tspan');\n// tspan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\n// tspan.setAttribute('dy', '1em');\n// tspan.setAttribute('x', '1');\n// tspan.textContent = rows[j];\n// svgLabel.appendChild(tspan);\n// }\n// vertexNode = svgLabel;\n// }\nimport { getConfig } from '../config';\n\nfunction applyStyle(dom, styleFn) {\n if (styleFn) {\n dom.attr('style', styleFn);\n }\n}\n\nfunction addHtmlLabel(node) {\n // var fo = root.append('foreignObject').attr('width', '100000');\n\n // var div = fo.append('xhtml:div');\n // div.attr('xmlns', 'http://www.w3.org/1999/xhtml');\n\n // var label = node.label;\n // switch (typeof label) {\n // case 'function':\n // div.insert(label);\n // break;\n // case 'object':\n // // Currently we assume this is a DOM object.\n // div.insert(function() {\n // return label;\n // });\n // break;\n // default:\n // div.html(label);\n // }\n\n // applyStyle(div, node.labelStyle);\n // div.style('display', 'inline-block');\n // // Fix for firefox\n // div.style('white-space', 'nowrap');\n\n // var client = div.node().getBoundingClientRect();\n // fo.attr('width', client.width).attr('height', client.height);\n const fo = select(document.createElementNS('http://www.w3.org/2000/svg', 'foreignObject'));\n const div = fo.append('xhtml:div');\n\n const label = node.label;\n const labelClass = node.isNode ? 'nodeLabel' : 'edgeLabel';\n div.html('' + label + '');\n\n applyStyle(div, node.labelStyle);\n div.style('display', 'inline-block');\n // Fix for firefox\n div.style('white-space', 'nowrap');\n div.attr('xmlns', 'http://www.w3.org/1999/xhtml');\n return fo.node();\n}\n\nconst createLabel = (_vertexText, style, isTitle, isNode) => {\n let vertexText = _vertexText || '';\n if (getConfig().flowchart.htmlLabels) {\n // TODO: addHtmlLabel accepts a labelStyle. Do we possibly have that?\n vertexText = vertexText.replace(/\\\\n|\\n/g, '
\n *\n * <script>\n * var config = {\n * theme:'default',\n * logLevel:'fatal',\n * securityLevel:'strict',\n * startOnLoad:true,\n * arrowMarkerAbsolute:false,\n *\n * er:{\n * diagramPadding:20,\n * layoutDirection:'TB',\n * minEntityWidth:100,\n * minEntityHeight:75,\n * entityPadding:15,\n * stroke:'gray',\n * fill:'honeydew',\n * fontSize:12,\n * useMaxWidth:true,\n * },\n * flowchart:{\n * diagramPadding:8,\n * htmlLabels:true,\n * curve:'linear',\n * },\n * sequence:{\n * diagramMarginX:50,\n * diagramMarginY:10,\n * actorMargin:50,\n * width:150,\n * height:65,\n * boxMargin:10,\n * boxTextMargin:5,\n * noteMargin:10,\n * messageMargin:35,\n * messageAlign:'center',\n * mirrorActors:true,\n * bottomMarginAdj:1,\n * useMaxWidth:true,\n * rightAngles:false,\n * showSequenceNumbers:false,\n * },\n * gantt:{\n * titleTopMargin:25,\n * barHeight:20,\n * barGap:4,\n * topPadding:50,\n * leftPadding:75,\n * gridLineStartPadding:35,\n * fontSize:11,\n * fontFamily:'\"Open-Sans\", \"sans-serif\"',\n * numberSectionStyles:4,\n * axisFormat:'%Y-%m-%d',\n * }\n * };\n * mermaid.initialize(config);\n * </script>\n *\n */\n","import classDiagram from './diagrams/class/styles';\nimport er from './diagrams/er/styles';\nimport flowchart from './diagrams/flowchart/styles';\nimport gantt from './diagrams/gantt/styles';\nimport git from './diagrams/git/styles';\nimport info from './diagrams/info/styles';\nimport pie from './diagrams/pie/styles';\nimport sequence from './diagrams/sequence/styles';\nimport stateDiagram from './diagrams/state/styles';\nimport journey from './diagrams/user-journey/styles';\n\nconst themes = {\n flowchart,\n 'flowchart-v2': flowchart,\n sequence,\n gantt,\n class: classDiagram,\n 'classDiagram-v2': classDiagram,\n stateDiagram,\n state: stateDiagram,\n git,\n info,\n pie,\n er,\n journey\n};\n\nexport const calcThemeVariables = (theme, userOverRides) => theme.calcColors(userOverRides);\n\nconst getStyles = (type, userStyles, options) => {\n return ` {\n font-family: ${options.fontFamily};\n font-size: ${options.fontSize};\n fill: ${options.textColor}\n }\n\n /* Classes common for multiple diagrams */\n\n .error-icon {\n fill: ${options.errorBkgColor};\n }\n .error-text {\n fill: ${options.errorTextColor};\n stroke: ${options.errorTextColor};\n }\n\n .edge-thickness-normal {\n stroke-width: 2px;\n }\n .edge-thickness-thick {\n stroke-width: 3.5px\n }\n .edge-pattern-solid {\n stroke-dasharray: 0;\n }\n\n .edge-pattern-dashed{\n stroke-dasharray: 3;\n }\n .edge-pattern-dotted {\n stroke-dasharray: 2;\n }\n\n .marker {\n fill: ${options.lineColor};\n }\n .marker.cross {\n stroke: ${options.lineColor};\n }\n\n svg {\n font-family: ${options.fontFamily};\n font-size: ${options.fontSize};\n }\n\n ${themes[type](options)}\n\n ${userStyles}\n\n ${type} { fill: apa;}\n`;\n};\n\nexport default getStyles;\n","import { getThemeVariables as baseThemeVariables } from './theme-base';\nimport { getThemeVariables as darkThemeVariables } from './theme-dark';\nimport { getThemeVariables as defaultThemeVariables } from './theme-default';\nimport { getThemeVariables as forestThemeVariables } from './theme-forest';\nimport { getThemeVariables as neutralThemeVariables } from './theme-neutral';\n\nexport default {\n base: {\n getThemeVariables: baseThemeVariables\n },\n dark: {\n getThemeVariables: darkThemeVariables\n },\n default: {\n getThemeVariables: defaultThemeVariables\n },\n forest: {\n getThemeVariables: forestThemeVariables\n },\n neutral: {\n getThemeVariables: neutralThemeVariables\n }\n};\n","import { darken, lighten, adjust } from 'khroma';\n\nclass Theme {\n constructor() {\n /* Base variables */\n this.primaryColor = '#9f33be';\n this.secondaryColor = '#b20238';\n this.tertiaryColor = lighten(this.primaryColor, 30);\n this.relationColor = '#000';\n\n // this.primaryColor = '#fa255e';\n // this.secondaryColor = '#c39ea0';\n // this.tertiaryColor = '#f8e5e5';\n\n // this.primaryColor = '#ECECFF';\n // this.secondaryColor = '#ffffde';\n // this.tertiaryColor = '#ffffde';\n\n this.background = 'white';\n this.lineColor = '#333333';\n this.border1 = '#9370DB';\n this.arrowheadColor = '#333333';\n this.fontFamily = '\"trebuchet ms\", verdana, arial';\n this.fontSize = '16px';\n this.labelBackground = '#e8e8e8';\n this.textColor = '#333';\n this.noteBkgColor = '#fff5ad';\n this.noteBorderColor = '#aaaa33';\n this.updateColors();\n }\n updateColors() {\n this.secondBkg = this.tertiaryColor;\n\n /* Flowchart variables */\n\n this.nodeBkg = this.primaryColor;\n this.mainBkg = this.primaryColor;\n this.nodeBorder = darken(this.primaryColor, 23); // border 1\n this.clusterBkg = this.tertiaryColor;\n this.clusterBorder = darken(this.tertiaryColor, 30);\n this.defaultLinkColor = this.lineColor;\n this.titleColor = this.textColor;\n this.edgeLabelBackground = this.labelBackground;\n\n /* Sequence Diagram variables */\n\n // this.actorBorder = lighten(this.border1, 0.5);\n this.actorBorder = lighten(this.border1, 23);\n this.actorBkg = this.mainBkg;\n this.actorTextColor = 'black';\n this.actorLineColor = 'grey';\n this.labelBoxBkgColor = this.actorBkg;\n this.signalColor = this.textColor;\n this.signalTextColor = this.textColor;\n this.labelBoxBorderColor = this.actorBorder;\n this.labelTextColor = this.actorTextColor;\n this.loopTextColor = this.actorTextColor;\n this.noteBorderColor = this.border2;\n this.noteTextColor = this.actorTextColor;\n this.activationBorderColor = darken(this.secondaryColor, 10);\n this.activationBkgColor = this.secondaryColor;\n this.sequenceNumberColor = 'white';\n\n /* Gantt chart variables */\n\n this.taskTextColor = this.taskTextLightColor;\n this.taskTextOutsideColor = this.taskTextDarkColor;\n this.sectionBkgColor = this.tertiaryColor;\n this.altSectionBkgColor = 'white';\n this.sectionBkgColor = this.secondaryColor;\n this.sectionBkgColor2 = this.tertiaryColor;\n this.altSectionBkgColor = 'white';\n this.sectionBkgColor2 = this.primaryColor;\n this.taskBorderColor = lighten(this.primaryColor, 23);\n this.taskBkgColor = this.primaryColor;\n this.taskTextLightColor = 'white';\n this.taskTextColor = 'calculated';\n this.taskTextDarkColor = 'black';\n this.taskTextOutsideColor = 'calculated';\n this.taskTextClickableColor = '#003163';\n this.activeTaskBorderColor = this.primaryColor;\n this.activeTaskBkgColor = lighten(this.primaryColor, 23);\n this.gridColor = 'lightgrey';\n this.doneTaskBkgColor = 'lightgrey';\n this.doneTaskBorderColor = 'grey';\n this.critBorderColor = '#ff8888';\n this.critBkgColor = 'red';\n this.todayLineColor = 'red';\n\n /* state colors */\n this.labelColor = 'black';\n this.errorBkgColor = '#552222';\n this.errorTextColor = '#552222';\n\n /* state colors */\n\n /* class */\n this.classText = this.textColor;\n\n /* user-journey */\n this.fillType0 = this.primaryColor;\n this.fillType1 = this.secondaryColor;\n this.fillType2 = adjust(this.primaryColor, { h: 64 });\n this.fillType3 = adjust(this.secondaryColor, { h: 64 });\n this.fillType4 = adjust(this.primaryColor, { h: -64 });\n this.fillType5 = adjust(this.secondaryColor, { h: -64 });\n this.fillType6 = adjust(this.primaryColor, { h: 128 });\n this.fillType7 = adjust(this.secondaryColor, { h: 128 });\n }\n calculate(overrides) {\n if (typeof overrides !== 'object') {\n // Calculate colors form base colors\n this.updateColors();\n return;\n }\n\n const keys = Object.keys(overrides);\n\n // Copy values from overrides, this is mainly for base colors\n keys.forEach(k => {\n this[k] = overrides[k];\n });\n\n // Calculate colors form base colors\n this.updateColors();\n // Copy values from overrides again in case of an override of derived value\n keys.forEach(k => {\n this[k] = overrides[k];\n });\n }\n}\n\nexport const getThemeVariables = userOverrides => {\n const theme = new Theme();\n theme.calculate(userOverrides);\n return theme;\n};\n","import { invert, lighten, darken, rgba, adjust } from 'khroma';\n\nclass Theme {\n constructor() {\n this.background = '#333';\n this.primaryColor = '#1f2020';\n this.secondaryColor = lighten(this.primaryColor, 16);\n this.mainBkg = '#1f2020';\n this.secondBkg = 'calculated';\n this.mainContrastColor = 'lightgrey';\n this.darkTextColor = lighten(invert('#323D47'), 10);\n this.lineColor = 'calculated';\n this.border1 = '#81B1DB';\n this.border2 = rgba(255, 255, 255, 0.25);\n this.arrowheadColor = 'calculated';\n this.fontFamily = '\"trebuchet ms\", verdana, arial';\n this.fontSize = '16px';\n this.labelBackground = '#181818';\n this.textColor = '#ccc';\n /* Flowchart variables */\n\n this.nodeBkg = 'calculated';\n this.nodeBorder = 'calculated';\n this.clusterBkg = 'calculated';\n this.clusterBorder = 'calculated';\n this.defaultLinkColor = 'calculated';\n this.titleColor = '#F9FFFE';\n this.edgeLabelBackground = 'calculated';\n\n /* Sequence Diagram variables */\n\n this.actorBorder = 'calculated';\n this.actorBkg = 'calculated';\n this.actorTextColor = 'calculated';\n this.actorLineColor = 'calculated';\n this.signalColor = 'calculated';\n this.signalTextColor = 'calculated';\n this.labelBoxBkgColor = 'calculated';\n this.labelBoxBorderColor = 'calculated';\n this.labelTextColor = 'calculated';\n this.loopTextColor = 'calculated';\n this.noteBorderColor = 'calculated';\n this.noteBkgColor = '#fff5ad';\n this.noteTextColor = 'calculated';\n this.activationBorderColor = 'calculated';\n this.activationBkgColor = 'calculated';\n this.sequenceNumberColor = 'black';\n\n /* Gantt chart variables */\n\n this.sectionBkgColor = darken('#EAE8D9', 30);\n this.altSectionBkgColor = 'calculated';\n this.sectionBkgColor2 = '#EAE8D9';\n this.taskBorderColor = rgba(255, 255, 255, 70);\n this.taskBkgColor = 'calculated';\n this.taskTextColor = 'calculated';\n this.taskTextLightColor = 'calculated';\n this.taskTextOutsideColor = 'calculated';\n this.taskTextClickableColor = '#003163';\n this.activeTaskBorderColor = rgba(255, 255, 255, 50);\n this.activeTaskBkgColor = '#81B1DB';\n this.gridColor = 'calculated';\n this.doneTaskBkgColor = 'calculated';\n this.doneTaskBorderColor = 'grey';\n this.critBorderColor = '#E83737';\n this.critBkgColor = '#E83737';\n this.taskTextDarkColor = 'calculated';\n this.todayLineColor = '#DB5757';\n\n /* state colors */\n this.labelColor = 'calculated';\n\n this.errorBkgColor = '#a44141';\n this.errorTextColor = '#ddd';\n }\n updateColors() {\n this.secondBkg = lighten(this.mainBkg, 16);\n this.lineColor = this.mainContrastColor;\n this.arrowheadColor = this.mainContrastColor;\n /* Flowchart variables */\n\n this.nodeBkg = this.mainBkg;\n this.nodeBorder = this.border1;\n this.clusterBkg = this.secondBkg;\n this.clusterBorder = this.border2;\n this.defaultLinkColor = this.lineColor;\n this.edgeLabelBackground = lighten(this.labelBackground, 25);\n\n /* Sequence Diagram variables */\n\n this.actorBorder = this.border1;\n this.actorBkg = this.mainBkg;\n this.actorTextColor = this.mainContrastColor;\n this.actorLineColor = this.mainContrastColor;\n this.signalColor = this.mainContrastColor;\n this.signalTextColor = this.mainContrastColor;\n this.labelBoxBkgColor = this.actorBkg;\n this.labelBoxBorderColor = this.actorBorder;\n this.labelTextColor = this.mainContrastColor;\n this.loopTextColor = this.mainContrastColor;\n this.noteBorderColor = this.border2;\n this.noteTextColor = this.mainBkg;\n this.activationBorderColor = this.border1;\n this.activationBkgColor = this.secondBkg;\n\n /* Gantt chart variables */\n\n this.altSectionBkgColor = this.background;\n this.taskBkgColor = lighten(this.mainBkg, 23);\n this.taskTextColor = this.darkTextColor;\n this.taskTextLightColor = this.mainContrastColor;\n this.taskTextOutsideColor = this.taskTextLightColor;\n this.gridColor = this.mainContrastColor;\n this.doneTaskBkgColor = this.mainContrastColor;\n this.taskTextDarkColor = this.darkTextColor;\n\n /* state colors */\n this.labelColor = this.textColor;\n this.altBackground = lighten(this.background, 20);\n\n this.fillType0 = this.primaryColor;\n this.fillType1 = this.secondaryColor;\n this.fillType2 = adjust(this.primaryColor, { h: 64 });\n this.fillType3 = adjust(this.secondaryColor, { h: 64 });\n this.fillType4 = adjust(this.primaryColor, { h: -64 });\n this.fillType5 = adjust(this.secondaryColor, { h: -64 });\n this.fillType6 = adjust(this.primaryColor, { h: 128 });\n this.fillType7 = adjust(this.secondaryColor, { h: 128 });\n /* class */\n this.classText = this.nodeBorder;\n }\n calculate(overrides) {\n if (typeof overrides !== 'object') {\n // Calculate colors form base colors\n this.updateColors();\n return;\n }\n\n const keys = Object.keys(overrides);\n\n // Copy values from overrides, this is mainly for base colors\n keys.forEach(k => {\n this[k] = overrides[k];\n });\n\n // Calculate colors form base colors\n this.updateColors();\n // Copy values from overrides again in case of an override of derived value\n keys.forEach(k => {\n this[k] = overrides[k];\n });\n }\n}\n\nexport const getThemeVariables = userOverrides => {\n const theme = new Theme();\n theme.calculate(userOverrides);\n return theme;\n};\n","import { lighten, rgba, adjust } from 'khroma';\n\nclass Theme {\n constructor() {\n /* Base variables */\n this.primaryColor = '#ECECFF';\n this.secondaryColor = '#ffffde';\n this.background = 'white';\n this.mainBkg = '#ECECFF';\n this.secondBkg = '#ffffde';\n this.lineColor = '#333333';\n this.border1 = '#9370DB';\n this.border2 = '#aaaa33';\n this.arrowheadColor = '#333333';\n this.fontFamily = '\"trebuchet ms\", verdana, arial';\n this.fontSize = '16px';\n this.labelBackground = '#e8e8e8';\n this.textColor = '#333';\n\n /* Flowchart variables */\n\n this.nodeBkg = 'calculated';\n this.nodeBorder = 'calculated';\n this.clusterBkg = 'calculated';\n this.clusterBorder = 'calculated';\n this.defaultLinkColor = 'calculated';\n this.titleColor = 'calculated';\n this.edgeLabelBackground = 'calculated';\n\n /* Sequence Diagram variables */\n\n this.actorBorder = 'calculated';\n this.actorBkg = 'calculated';\n this.actorTextColor = 'black';\n this.actorLineColor = 'grey';\n this.signalColor = 'calculated';\n this.signalTextColor = 'calculated';\n this.labelBoxBkgColor = 'calculated';\n this.labelBoxBorderColor = 'calculated';\n this.labelTextColor = 'calculated';\n this.loopTextColor = 'calculated';\n this.noteBorderColor = 'calculated';\n this.noteBkgColor = '#fff5ad';\n this.noteTextColor = 'calculated';\n this.activationBorderColor = '#666';\n this.activationBkgColor = '#f4f4f4';\n this.sequenceNumberColor = 'white';\n\n /* Gantt chart variables */\n\n this.sectionBkgColor = 'calculated';\n this.altSectionBkgColor = 'calculated';\n this.sectionBkgColor2 = 'calculated';\n this.taskBorderColor = 'calculated';\n this.taskBkgColor = 'calculated';\n this.taskTextLightColor = 'calculated';\n this.taskTextColor = this.taskTextLightColor;\n this.taskTextDarkColor = 'calculated';\n this.taskTextOutsideColor = this.taskTextDarkColor;\n this.taskTextClickableColor = 'calculated';\n this.activeTaskBorderColor = 'calculated';\n this.activeTaskBkgColor = 'calculated';\n this.gridColor = 'calculated';\n this.doneTaskBkgColor = 'calculated';\n this.doneTaskBorderColor = 'calculated';\n this.critBorderColor = 'calculated';\n this.critBkgColor = 'calculated';\n this.todayLineColor = 'calculated';\n\n this.sectionBkgColor = rgba(102, 102, 255, 0.49);\n this.altSectionBkgColor = 'white';\n this.sectionBkgColor2 = '#fff400';\n this.taskBorderColor = '#534fbc';\n this.taskBkgColor = '#8a90dd';\n this.taskTextLightColor = 'white';\n this.taskTextColor = 'calculated';\n this.taskTextDarkColor = 'black';\n this.taskTextOutsideColor = 'calculated';\n this.taskTextClickableColor = '#003163';\n this.activeTaskBorderColor = '#534fbc';\n this.activeTaskBkgColor = '#bfc7ff';\n this.gridColor = 'lightgrey';\n this.doneTaskBkgColor = 'lightgrey';\n this.doneTaskBorderColor = 'grey';\n this.critBorderColor = '#ff8888';\n this.critBkgColor = 'red';\n this.todayLineColor = 'red';\n\n /* state colors */\n this.labelColor = 'black';\n this.errorBkgColor = '#552222';\n this.errorTextColor = '#552222';\n this.updateColors();\n }\n updateColors() {\n /* Flowchart variables */\n\n this.nodeBkg = this.mainBkg;\n this.nodeBorder = this.border1; // border 1\n this.clusterBkg = this.secondBkg;\n this.clusterBorder = this.border2;\n this.defaultLinkColor = this.lineColor;\n this.titleColor = this.textColor;\n this.edgeLabelBackground = this.labelBackground;\n\n /* Sequence Diagram variables */\n\n // this.actorBorder = lighten(this.border1, 0.5);\n this.actorBorder = lighten(this.border1, 23);\n this.actorBkg = this.mainBkg;\n this.labelBoxBkgColor = this.actorBkg;\n this.signalColor = this.textColor;\n this.signalTextColor = this.textColor;\n this.labelBoxBorderColor = this.actorBorder;\n this.labelTextColor = this.actorTextColor;\n this.loopTextColor = this.actorTextColor;\n this.noteBorderColor = this.border2;\n this.noteTextColor = this.actorTextColor;\n\n /* Gantt chart variables */\n\n this.taskTextColor = this.taskTextLightColor;\n this.taskTextOutsideColor = this.taskTextDarkColor;\n\n /* state colors */\n /* class */\n this.classText = this.nodeBorder;\n /* journey */\n this.fillType0 = this.primaryColor;\n this.fillType1 = this.secondaryColor;\n this.fillType2 = adjust(this.primaryColor, { h: 64 });\n this.fillType3 = adjust(this.secondaryColor, { h: 64 });\n this.fillType4 = adjust(this.primaryColor, { h: -64 });\n this.fillType5 = adjust(this.secondaryColor, { h: -64 });\n this.fillType6 = adjust(this.primaryColor, { h: 128 });\n this.fillType7 = adjust(this.secondaryColor, { h: 128 });\n }\n calculate(overrides) {\n if (typeof overrides !== 'object') {\n // Calculate colors form base colors\n this.updateColors();\n return;\n }\n\n const keys = Object.keys(overrides);\n\n // Copy values from overrides, this is mainly for base colors\n keys.forEach(k => {\n this[k] = overrides[k];\n });\n\n // Calculate colors form base colors\n this.updateColors();\n // Copy values from overrides again in case of an override of derived value\n keys.forEach(k => {\n this[k] = overrides[k];\n });\n }\n}\n\nexport const getThemeVariables = userOverrides => {\n const theme = new Theme();\n theme.calculate(userOverrides);\n return theme;\n};\n","import { darken, adjust } from 'khroma';\nclass Theme {\n constructor() {\n /* Base vales */\n this.primaryColor = '#cde498';\n this.secondaryColor = '#cdffb2';\n this.background = 'white';\n this.mainBkg = '#cde498';\n this.secondBkg = '#cdffb2';\n this.lineColor = 'green';\n this.border1 = '#13540c';\n this.border2 = '#6eaa49';\n this.arrowheadColor = 'green';\n this.fontFamily = '\"trebuchet ms\", verdana, arial';\n this.fontSize = '16px';\n\n /* Flowchart variables */\n\n this.nodeBkg = 'calculated';\n this.nodeBorder = 'calculated';\n this.clusterBkg = 'calculated';\n this.clusterBorder = 'calculated';\n this.defaultLinkColor = 'calculated';\n this.titleColor = '#333';\n this.edgeLabelBackground = '#e8e8e8';\n\n /* Sequence Diagram variables */\n\n this.actorBorder = 'calculated';\n this.actorBkg = 'calculated';\n this.actorTextColor = 'black';\n this.actorLineColor = 'grey';\n this.signalColor = '#333';\n this.signalTextColor = '#333';\n this.labelBoxBkgColor = 'calculated';\n this.labelBoxBorderColor = '#326932';\n this.labelTextColor = 'calculated';\n this.loopTextColor = 'calculated';\n this.noteBorderColor = 'calculated';\n this.noteBkgColor = '#fff5ad';\n this.noteTextColor = 'calculated';\n this.activationBorderColor = '#666';\n this.activationBkgColor = '#f4f4f4';\n this.sequenceNumberColor = 'white';\n\n /* Gantt chart variables */\n\n this.sectionBkgColor = '#6eaa49';\n this.altSectionBkgColor = 'white';\n this.sectionBkgColor2 = '#6eaa49';\n this.taskBorderColor = 'calculated';\n this.taskBkgColor = '#487e3a';\n this.taskTextLightColor = 'white';\n this.taskTextColor = 'calculated';\n this.taskTextDarkColor = 'black';\n this.taskTextOutsideColor = 'calculated';\n this.taskTextClickableColor = '#003163';\n this.activeTaskBorderColor = 'calculated';\n this.activeTaskBkgColor = 'calculated';\n this.gridColor = 'lightgrey';\n this.doneTaskBkgColor = 'lightgrey';\n this.doneTaskBorderColor = 'grey';\n this.critBorderColor = '#ff8888';\n this.critBkgColor = 'red';\n this.todayLineColor = 'red';\n\n /* state colors */\n this.labelColor = 'black';\n\n this.errorBkgColor = '#552222';\n this.errorTextColor = '#552222';\n }\n updateColors() {\n /* Flowchart variables */\n\n this.nodeBkg = this.mainBkg;\n this.nodeBorder = this.border1;\n this.clusterBkg = this.secondBkg;\n this.clusterBorder = this.border2;\n this.defaultLinkColor = this.lineColor;\n\n /* Sequence Diagram variables */\n\n this.actorBorder = darken(this.mainBkg, 20);\n this.actorBkg = this.mainBkg;\n this.labelBoxBkgColor = this.actorBkg;\n this.labelTextColor = this.actorTextColor;\n this.loopTextColor = this.actorTextColor;\n this.noteBorderColor = this.border2;\n this.noteTextColor = this.actorTextColor;\n\n /* Gantt chart variables */\n\n this.taskBorderColor = this.border1;\n this.taskTextColor = this.taskTextLightColor;\n this.taskTextOutsideColor = this.taskTextDarkColor;\n this.activeTaskBorderColor = this.taskBorderColor;\n this.activeTaskBkgColor = this.mainBkg;\n\n /* state colors */\n /* class */\n this.classText = this.nodeBorder;\n /* journey */\n this.fillType0 = this.primaryColor;\n this.fillType1 = this.secondaryColor;\n this.fillType2 = adjust(this.primaryColor, { h: 64 });\n this.fillType3 = adjust(this.secondaryColor, { h: 64 });\n this.fillType4 = adjust(this.primaryColor, { h: -64 });\n this.fillType5 = adjust(this.secondaryColor, { h: -64 });\n this.fillType6 = adjust(this.primaryColor, { h: 128 });\n this.fillType7 = adjust(this.secondaryColor, { h: 128 });\n }\n calculate(overrides) {\n if (typeof overrides !== 'object') {\n // Calculate colors form base colors\n this.updateColors();\n return;\n }\n\n const keys = Object.keys(overrides);\n\n // Copy values from overrides, this is mainly for base colors\n keys.forEach(k => {\n this[k] = overrides[k];\n });\n\n // Calculate colors form base colors\n this.updateColors();\n // Copy values from overrides again in case of an override of derived value\n keys.forEach(k => {\n this[k] = overrides[k];\n });\n }\n}\n\nexport const getThemeVariables = userOverrides => {\n const theme = new Theme();\n theme.calculate(userOverrides);\n return theme;\n};\n","import { darken, lighten, adjust } from 'khroma';\n\n// const Color = require ( 'khroma/dist/color' ).default\n// Color.format.hex.stringify(Color.parse('hsl(210, 66.6666666667%, 95%)')); // => \"#EAF2FB\"\n\nclass Theme {\n constructor() {\n this.primaryColor = '#eee';\n this.contrast = '#26a';\n this.secondaryColor = lighten(this.contrast, 55);\n this.background = 'white';\n this.mainBkg = '#eee';\n this.secondBkg = 'calculated';\n this.lineColor = '#666';\n this.border1 = '#999';\n this.border2 = 'calculated';\n this.note = '#ffa';\n this.text = '#333';\n this.critical = '#d42';\n this.done = '#bbb';\n this.arrowheadColor = '#333333';\n this.fontFamily = '\"trebuchet ms\", verdana, arial';\n this.fontSize = '16px';\n\n /* Flowchart variables */\n\n this.nodeBkg = 'calculated';\n this.nodeBorder = 'calculated';\n this.clusterBkg = 'calculated';\n this.clusterBorder = 'calculated';\n this.defaultLinkColor = 'calculated';\n this.titleColor = 'calculated';\n this.edgeLabelBackground = 'white';\n\n /* Sequence Diagram variables */\n\n this.actorBorder = 'calculated';\n this.actorBkg = 'calculated';\n this.actorTextColor = 'calculated';\n this.actorLineColor = 'calculated';\n this.signalColor = 'calculated';\n this.signalTextColor = 'calculated';\n this.labelBoxBkgColor = 'calculated';\n this.labelBoxBorderColor = 'calculated';\n this.labelTextColor = 'calculated';\n this.loopTextColor = 'calculated';\n this.noteBorderColor = 'calculated';\n this.noteBkgColor = 'calculated';\n this.noteTextColor = 'calculated';\n this.activationBorderColor = '#666';\n this.activationBkgColor = '#f4f4f4';\n this.sequenceNumberColor = 'white';\n\n /* Gantt chart variables */\n\n this.sectionBkgColor = 'calculated';\n this.altSectionBkgColor = 'white';\n this.sectionBkgColor2 = 'calculated';\n this.taskBorderColor = 'calculated';\n this.taskBkgColor = 'calculated';\n this.taskTextLightColor = 'white';\n this.taskTextColor = 'calculated';\n this.taskTextDarkColor = 'calculated';\n this.taskTextOutsideColor = 'calculated';\n this.taskTextClickableColor = '#003163';\n this.activeTaskBorderColor = 'calculated';\n this.activeTaskBkgColor = 'calculated';\n this.gridColor = 'calculated';\n this.doneTaskBkgColor = 'calculated';\n this.doneTaskBorderColor = 'calculated';\n this.critBkgColor = 'calculated';\n this.critBorderColor = 'calculated';\n this.todayLineColor = 'calculated';\n\n /* state colors */\n this.labelColor = 'black';\n\n this.errorBkgColor = '#552222';\n this.errorTextColor = '#552222';\n }\n updateColors() {\n this.secondBkg = lighten(this.contrast, 55);\n this.border2 = this.contrast;\n\n /* Flowchart variables */\n\n this.nodeBkg = this.mainBkg;\n this.nodeBorder = this.border1;\n this.clusterBkg = this.secondBkg;\n this.clusterBorder = this.border2;\n this.defaultLinkColor = this.lineColor;\n this.titleColor = this.text;\n\n /* Sequence Diagram variables */\n\n this.actorBorder = lighten(this.border1, 23);\n this.actorBkg = this.mainBkg;\n this.actorTextColor = this.text;\n this.actorLineColor = this.lineColor;\n this.signalColor = this.text;\n this.signalTextColor = this.text;\n this.labelBoxBkgColor = this.actorBkg;\n this.labelBoxBorderColor = this.actorBorder;\n this.labelTextColor = this.text;\n this.loopTextColor = this.text;\n this.noteBorderColor = darken(this.note, 60);\n this.noteBkgColor = this.note;\n this.noteTextColor = this.actorTextColor;\n\n /* Gantt chart variables */\n\n this.sectionBkgColor = lighten(this.contrast, 30);\n this.sectionBkgColor2 = lighten(this.contrast, 30);\n\n this.taskBorderColor = darken(this.contrast, 10);\n\n this.taskBkgColor = this.contrast;\n this.taskTextColor = this.taskTextLightColor;\n this.taskTextDarkColor = this.text;\n this.taskTextOutsideColor = this.taskTextDarkColor;\n this.activeTaskBorderColor = this.taskBorderColor;\n this.activeTaskBkgColor = this.mainBkg;\n this.gridColor = lighten(this.border1, 30);\n\n this.doneTaskBkgColor = this.done;\n this.doneTaskBorderColor = this.lineColor;\n this.critBkgColor = this.critical;\n this.critBorderColor = darken(this.critBkgColor, 10);\n\n this.todayLineColor = this.critBkgColor;\n\n /* state colors */\n /* class */\n this.classText = this.nodeBorder;\n /* journey */\n this.fillType0 = this.primaryColor;\n this.fillType1 = this.secondaryColor;\n this.fillType2 = adjust(this.primaryColor, { h: 64 });\n this.fillType3 = adjust(this.secondaryColor, { h: 64 });\n this.fillType4 = adjust(this.primaryColor, { h: -64 });\n this.fillType5 = adjust(this.secondaryColor, { h: -64 });\n this.fillType6 = adjust(this.primaryColor, { h: 128 });\n this.fillType7 = adjust(this.secondaryColor, { h: 128 });\n }\n calculate(overrides) {\n if (typeof overrides !== 'object') {\n // Calculate colors form base colors\n this.updateColors();\n return;\n }\n\n const keys = Object.keys(overrides);\n\n // Copy values from overrides, this is mainly for base colors\n keys.forEach(k => {\n this[k] = overrides[k];\n });\n\n // Calculate colors form base colors\n this.updateColors();\n // Copy values from overrides again in case of an override of derived value\n keys.forEach(k => {\n this[k] = overrides[k];\n });\n }\n}\n\nexport const getThemeVariables = userOverrides => {\n const theme = new Theme();\n theme.calculate(userOverrides);\n console.info('Theme', userOverrides, theme);\n return theme;\n};\n","import {\n curveBasis,\n curveBasisClosed,\n curveBasisOpen,\n curveLinear,\n curveLinearClosed,\n curveMonotoneX,\n curveMonotoneY,\n curveNatural,\n curveStep,\n curveStepAfter,\n curveStepBefore,\n select\n} from 'd3';\nimport { logger } from './logger';\nimport { sanitizeUrl } from '@braintree/sanitize-url';\nimport common from './diagrams/common/common';\n// import cryptoRandomString from 'crypto-random-string';\n\n// Effectively an enum of the supported curve types, accessible by name\nconst d3CurveTypes = {\n curveBasis: curveBasis,\n curveBasisClosed: curveBasisClosed,\n curveBasisOpen: curveBasisOpen,\n curveLinear: curveLinear,\n curveLinearClosed: curveLinearClosed,\n curveMonotoneX: curveMonotoneX,\n curveMonotoneY: curveMonotoneY,\n curveNatural: curveNatural,\n curveStep: curveStep,\n curveStepAfter: curveStepAfter,\n curveStepBefore: curveStepBefore\n};\nconst directive = /[%]{2}[{]\\s*(?:(?:(\\w+)\\s*:|(\\w+))\\s*(?:(?:(\\w+))|((?:(?![}][%]{2}).|\\r?\\n)*))?\\s*)(?:[}][%]{2})?/gi;\nconst directiveWithoutOpen = /\\s*(?:(?:(\\w+)(?=:):|(\\w+))\\s*(?:(?:(\\w+))|((?:(?![}][%]{2}).|\\r?\\n)*))?\\s*)(?:[}][%]{2})?/gi;\nconst anyComment = /\\s*%%.*\\n/gm;\n\n/**\n * @function detectInit\n * Detects the init config object from the text\n * ```mermaid\n * %%{init: {\"theme\": \"debug\", \"logLevel\": 1 }}%%\n * graph LR\n * a-->b\n * b-->c\n * c-->d\n * d-->e\n * e-->f\n * f-->g\n * g-->h\n * ```\n * or\n * ```mermaid\n * %%{initialize: {\"theme\": \"dark\", logLevel: \"debug\" }}%%\n * graph LR\n * a-->b\n * b-->c\n * c-->d\n * d-->e\n * e-->f\n * f-->g\n * g-->h\n * ```\n *\n * @param {string} text The text defining the graph\n * @returns {object} the json object representing the init passed to mermaid.initialize()\n */\nexport const detectInit = function(text) {\n let inits = detectDirective(text, /(?:init\\b)|(?:initialize\\b)/);\n let results = {};\n if (Array.isArray(inits)) {\n let args = inits.map(init => init.args);\n results = assignWithDepth(results, [...args]);\n } else {\n results = inits.args;\n }\n if (results) {\n let type = detectType(text);\n ['config'].forEach(prop => {\n if (typeof results[prop] !== 'undefined') {\n if (type === 'flowchart-v2') {\n type = 'flowchart';\n }\n results[type] = results[prop];\n delete results[prop];\n }\n });\n }\n return results;\n};\n\n/**\n * @function detectDirective\n * Detects the directive from the text. Text can be single line or multiline. If type is null or omitted\n * the first directive encountered in text will be returned\n * ```mermaid\n * graph LR\n * %%{somedirective}%%\n * a-->b\n * b-->c\n * c-->d\n * d-->e\n * e-->f\n * f-->g\n * g-->h\n * ```\n *\n * @param {string} text The text defining the graph\n * @param {string|RegExp} type The directive to return (default: null)\n * @returns {object | Array} An object or Array representing the directive(s): { type: string, args: object|null } matched by the input type\n * if a single directive was found, that directive object will be returned.\n */\nexport const detectDirective = function(text, type = null) {\n try {\n const commentWithoutDirectives = new RegExp(\n `[%]{2}(?![{]${directiveWithoutOpen.source})(?=[}][%]{2}).*\\n`,\n 'ig'\n );\n text = text\n .trim()\n .replace(commentWithoutDirectives, '')\n .replace(/'/gm, '\"');\n logger.debug(\n `Detecting diagram directive${type !== null ? ' type:' + type : ''} based on the text:${text}`\n );\n let match,\n result = [];\n while ((match = directive.exec(text)) !== null) {\n // This is necessary to avoid infinite loops with zero-width matches\n if (match.index === directive.lastIndex) {\n directive.lastIndex++;\n }\n if (\n (match && !type) ||\n (type && match[1] && match[1].match(type)) ||\n (type && match[2] && match[2].match(type))\n ) {\n let type = match[1] ? match[1] : match[2];\n let args = match[3] ? match[3].trim() : match[4] ? JSON.parse(match[4].trim()) : null;\n result.push({ type, args });\n }\n }\n if (result.length === 0) {\n result.push({ type: text, args: null });\n }\n\n return result.length === 1 ? result[0] : result;\n } catch (error) {\n logger.error(\n `ERROR: ${error.message} - Unable to parse directive${\n type !== null ? ' type:' + type : ''\n } based on the text:${text}`\n );\n return { type: null, args: null };\n }\n};\n\n/**\n * @function detectType\n * Detects the type of the graph text. Takes into consideration the possible existence of an %%init\n * directive\n * ```mermaid\n * %%{initialize: {\"startOnLoad\": true, logLevel: \"fatal\" }}%%\n * graph LR\n * a-->b\n * b-->c\n * c-->d\n * d-->e\n * e-->f\n * f-->g\n * g-->h\n * ```\n *\n * @param {string} text The text defining the graph\n * @returns {string} A graph definition key\n */\nexport const detectType = function(text) {\n text = text.replace(directive, '').replace(anyComment, '\\n');\n logger.debug('Detecting diagram type based on the text ' + text);\n if (text.match(/^\\s*sequenceDiagram/)) {\n return 'sequence';\n }\n\n if (text.match(/^\\s*gantt/)) {\n return 'gantt';\n }\n if (text.match(/^\\s*classDiagram-v2/)) {\n return 'classDiagram';\n }\n if (text.match(/^\\s*classDiagram/)) {\n return 'class';\n }\n\n if (text.match(/^\\s*stateDiagram-v2/)) {\n return 'stateDiagram';\n }\n\n if (text.match(/^\\s*stateDiagram/)) {\n return 'state';\n }\n\n if (text.match(/^\\s*gitGraph/)) {\n return 'git';\n }\n if (text.match(/^\\s*flowchart/)) {\n return 'flowchart-v2';\n }\n\n if (text.match(/^\\s*info/)) {\n return 'info';\n }\n if (text.match(/^\\s*pie/)) {\n return 'pie';\n }\n\n if (text.match(/^\\s*erDiagram/)) {\n return 'er';\n }\n\n if (text.match(/^\\s*journey/)) {\n return 'journey';\n }\n\n return 'flowchart';\n};\n\nconst memoize = (fn, resolver) => {\n let cache = {};\n return (...args) => {\n let n = resolver ? resolver.apply(this, args) : args[0];\n if (n in cache) {\n return cache[n];\n } else {\n let result = fn(...args);\n cache[n] = result;\n return result;\n }\n };\n};\n\n/**\n * @function isSubstringInArray\n * Detects whether a substring in present in a given array\n * @param {string} str The substring to detect\n * @param {array} arr The array to search\n * @returns {number} the array index containing the substring or -1 if not present\n **/\nexport const isSubstringInArray = function(str, arr) {\n for (let i = 0; i < arr.length; i++) {\n if (arr[i].match(str)) return i;\n }\n return -1;\n};\n\nexport const interpolateToCurve = (interpolate, defaultCurve) => {\n if (!interpolate) {\n return defaultCurve;\n }\n const curveName = `curve${interpolate.charAt(0).toUpperCase() + interpolate.slice(1)}`;\n return d3CurveTypes[curveName] || defaultCurve;\n};\n\nexport const formatUrl = (linkStr, config) => {\n let url = linkStr.trim();\n\n if (url) {\n if (config.securityLevel !== 'loose') {\n return sanitizeUrl(url);\n }\n\n return url;\n }\n};\n\nexport const runFunc = (functionName, ...params) => {\n const arrPaths = functionName.split('.');\n\n const len = arrPaths.length - 1;\n const fnName = arrPaths[len];\n\n let obj = window;\n for (let i = 0; i < len; i++) {\n obj = obj[arrPaths[i]];\n if (!obj) return;\n }\n\n obj[fnName](...params);\n};\n\nconst distance = (p1, p2) =>\n p1 && p2 ? Math.sqrt(Math.pow(p2.x - p1.x, 2) + Math.pow(p2.y - p1.y, 2)) : 0;\n\nconst traverseEdge = points => {\n let prevPoint;\n let totalDistance = 0;\n\n points.forEach(point => {\n totalDistance += distance(point, prevPoint);\n prevPoint = point;\n });\n\n // Traverse half of total distance along points\n let remainingDistance = totalDistance / 2;\n let center = undefined;\n prevPoint = undefined;\n points.forEach(point => {\n if (prevPoint && !center) {\n const vectorDistance = distance(point, prevPoint);\n if (vectorDistance < remainingDistance) {\n remainingDistance -= vectorDistance;\n } else {\n // The point is remainingDistance from prevPoint in the vector between prevPoint and point\n // Calculate the coordinates\n const distanceRatio = remainingDistance / vectorDistance;\n if (distanceRatio <= 0) center = prevPoint;\n if (distanceRatio >= 1) center = { x: point.x, y: point.y };\n if (distanceRatio > 0 && distanceRatio < 1) {\n center = {\n x: (1 - distanceRatio) * prevPoint.x + distanceRatio * point.x,\n y: (1 - distanceRatio) * prevPoint.y + distanceRatio * point.y\n };\n }\n }\n }\n prevPoint = point;\n });\n return center;\n};\n\nconst calcLabelPosition = points => {\n return traverseEdge(points);\n};\n\nconst calcCardinalityPosition = (isRelationTypePresent, points, initialPosition) => {\n let prevPoint;\n let totalDistance = 0; // eslint-disable-line\n if (points[0] !== initialPosition) {\n points = points.reverse();\n }\n points.forEach(point => {\n totalDistance += distance(point, prevPoint);\n prevPoint = point;\n });\n\n // Traverse only 25 total distance along points to find cardinality point\n const distanceToCardinalityPoint = 25;\n\n let remainingDistance = distanceToCardinalityPoint;\n let center;\n prevPoint = undefined;\n points.forEach(point => {\n if (prevPoint && !center) {\n const vectorDistance = distance(point, prevPoint);\n if (vectorDistance < remainingDistance) {\n remainingDistance -= vectorDistance;\n } else {\n // The point is remainingDistance from prevPoint in the vector between prevPoint and point\n // Calculate the coordinates\n const distanceRatio = remainingDistance / vectorDistance;\n if (distanceRatio <= 0) center = prevPoint;\n if (distanceRatio >= 1) center = { x: point.x, y: point.y };\n if (distanceRatio > 0 && distanceRatio < 1) {\n center = {\n x: (1 - distanceRatio) * prevPoint.x + distanceRatio * point.x,\n y: (1 - distanceRatio) * prevPoint.y + distanceRatio * point.y\n };\n }\n }\n }\n prevPoint = point;\n });\n // if relation is present (Arrows will be added), change cardinality point off-set distance (d)\n let d = isRelationTypePresent ? 10 : 5;\n //Calculate Angle for x and y axis\n let angle = Math.atan2(points[0].y - center.y, points[0].x - center.x);\n let cardinalityPosition = { x: 0, y: 0 };\n //Calculation cardinality position using angle, center point on the line/curve but pendicular and with offset-distance\n cardinalityPosition.x = Math.sin(angle) * d + (points[0].x + center.x) / 2;\n cardinalityPosition.y = -Math.cos(angle) * d + (points[0].y + center.y) / 2;\n return cardinalityPosition;\n};\n\nexport const getStylesFromArray = arr => {\n let style = '';\n let labelStyle = '';\n\n for (let i = 0; i < arr.length; i++) {\n if (typeof arr[i] !== 'undefined') {\n // add text properties to label style definition\n if (arr[i].startsWith('color:') || arr[i].startsWith('text-align:')) {\n labelStyle = labelStyle + arr[i] + ';';\n } else {\n style = style + arr[i] + ';';\n }\n }\n }\n\n return { style: style, labelStyle: labelStyle };\n};\n\nlet cnt = 0;\nexport const generateId = () => {\n cnt++;\n return (\n 'id-' +\n Math.random()\n .toString(36)\n .substr(2, 12) +\n '-' +\n cnt\n );\n};\n\nfunction makeid(length) {\n var result = '';\n var characters = '0123456789abcdef';\n var charactersLength = characters.length;\n for (var i = 0; i < length; i++) {\n result += characters.charAt(Math.floor(Math.random() * charactersLength));\n }\n return result;\n}\n\nexport const random = options => {\n return makeid(options.length);\n};\n\n/**\n * @function assignWithDepth\n * Extends the functionality of {@link ObjectConstructor.assign} with the ability to merge arbitrary-depth objects\n * For each key in src with path `k` (recursively) performs an Object.assign(dst[`k`], src[`k`]) with\n * a slight change from the typical handling of undefined for dst[`k`]: instead of raising an error,\n * dst[`k`] is auto-initialized to {} and effectively merged with src[`k`]\n *
\n * Additionally, dissimilar types will not clobber unless the config.clobber parameter === true. Example:\n * ```\n * let config_0 = { foo: { bar: 'bar' }, bar: 'foo' };\n * let config_1 = { foo: 'foo', bar: 'bar' };\n * let result = assignWithDepth(config_0, config_1);\n * console.log(result);\n * //-> result: { foo: { bar: 'bar' }, bar: 'bar' }\n * ```\n *
\n * Traditional Object.assign would have clobbered foo in config_0 with foo in config_1.\n *
\n * If src is a destructured array of objects and dst is not an array, assignWithDepth will apply each element of src to dst\n * in order.\n * @param dst:any - the destination of the merge\n * @param src:any - the source object(s) to merge into destination\n * @param config:{ depth: number, clobber: boolean } - depth: depth to traverse within src and dst for merging -\n * clobber: should dissimilar types clobber (default: { depth: 2, clobber: false })\n * @returns {*}\n */\nexport const assignWithDepth = function(dst, src, config) {\n const { depth, clobber } = Object.assign({ depth: 2, clobber: false }, config);\n if (Array.isArray(src) && !Array.isArray(dst)) {\n src.forEach(s => assignWithDepth(dst, s, config));\n return dst;\n } else if (Array.isArray(src) && Array.isArray(dst)) {\n src.forEach(s => {\n if (dst.indexOf(s) === -1) {\n dst.push(s);\n }\n });\n return dst;\n }\n if (typeof dst === 'undefined' || depth <= 0) {\n if (dst !== undefined && dst !== null && typeof dst === 'object' && typeof src === 'object') {\n return Object.assign(dst, src);\n } else {\n return src;\n }\n }\n if (typeof src !== 'undefined' && typeof dst === 'object' && typeof src === 'object') {\n Object.keys(src).forEach(key => {\n if (\n typeof src[key] === 'object' &&\n (dst[key] === undefined || typeof dst[key] === 'object')\n ) {\n if (dst[key] === undefined) {\n dst[key] = Array.isArray(src[key]) ? [] : {};\n }\n dst[key] = assignWithDepth(dst[key], src[key], { depth: depth - 1, clobber });\n } else if (clobber || (typeof dst[key] !== 'object' && typeof src[key] !== 'object')) {\n dst[key] = src[key];\n }\n });\n }\n return dst;\n};\n\nexport const getTextObj = function() {\n return {\n x: 0,\n y: 0,\n fill: undefined,\n anchor: 'start',\n style: '#666',\n width: 100,\n height: 100,\n textMargin: 0,\n rx: 0,\n ry: 0,\n valign: undefined\n };\n};\n\nexport const drawSimpleText = function(elem, textData) {\n // Remove and ignore br:s\n const nText = textData.text.replace(common.lineBreakRegex, ' ');\n\n const textElem = elem.append('text');\n textElem.attr('x', textData.x);\n textElem.attr('y', textData.y);\n textElem.style('text-anchor', textData.anchor);\n textElem.style('font-family', textData.fontFamily);\n textElem.style('font-size', textData.fontSize);\n textElem.style('font-weight', textData.fontWeight);\n textElem.attr('fill', textData.fill);\n if (typeof textData.class !== 'undefined') {\n textElem.attr('class', textData.class);\n }\n\n const span = textElem.append('tspan');\n span.attr('x', textData.x + textData.textMargin * 2);\n span.attr('fill', textData.fill);\n span.text(nText);\n\n return textElem;\n};\n\nexport const wrapLabel = memoize(\n (label, maxWidth, config) => {\n if (!label) {\n return label;\n }\n config = Object.assign(\n { fontSize: 12, fontWeight: 400, fontFamily: 'Arial', joinWith: ' \n * Additionally, dissimilar types will not clobber unless the config.clobber parameter === true. Example:\n * ```\n * let config_0 = { foo: { bar: 'bar' }, bar: 'foo' };\n * let config_1 = { foo: 'foo', bar: 'bar' };\n * let result = assignWithDepth(config_0, config_1);\n * console.log(result);\n * //-> result: { foo: { bar: 'bar' }, bar: 'bar' }\n * ```\n * \n * Traditional Object.assign would have clobbered foo in config_0 with foo in config_1.\n * \n * If src is a destructured array of objects and dst is not an array, assignWithDepth will apply each element of src to dst\n * in order.\n * @param dst:any - the destination of the merge\n * @param src:any - the source object(s) to merge into destination\n * @param config:{ depth: number, clobber: boolean } - depth: depth to traverse within src and dst for merging -\n * clobber: should dissimilar types clobber (default: { depth: 2, clobber: false })\n * @returns {*}\n */\nexport const assignWithDepth = function(dst, src, config) {\n const { depth, clobber } = Object.assign({ depth: 2, clobber: false }, config);\n if (Array.isArray(src) && !Array.isArray(dst)) {\n src.forEach(s => assignWithDepth(dst, s, config));\n return dst;\n } else if (Array.isArray(src) && Array.isArray(dst)) {\n src.forEach(s => {\n if (dst.indexOf(s) === -1) {\n dst.push(s);\n }\n });\n return dst;\n }\n if (typeof dst === 'undefined' || depth <= 0) {\n if (dst !== undefined && dst !== null && typeof dst === 'object' && typeof src === 'object') {\n return Object.assign(dst, src);\n } else {\n return src;\n }\n }\n if (typeof src !== 'undefined' && typeof dst === 'object' && typeof src === 'object') {\n Object.keys(src).forEach(key => {\n if (\n typeof src[key] === 'object' &&\n (dst[key] === undefined || typeof dst[key] === 'object')\n ) {\n if (dst[key] === undefined) {\n dst[key] = Array.isArray(src[key]) ? [] : {};\n }\n dst[key] = assignWithDepth(dst[key], src[key], { depth: depth - 1, clobber });\n } else if (clobber || (typeof dst[key] !== 'object' && typeof src[key] !== 'object')) {\n dst[key] = src[key];\n }\n });\n }\n return dst;\n};\n\nexport const getTextObj = function() {\n return {\n x: 0,\n y: 0,\n fill: undefined,\n anchor: 'start',\n style: '#666',\n width: 100,\n height: 100,\n textMargin: 0,\n rx: 0,\n ry: 0,\n valign: undefined\n };\n};\n\nexport const drawSimpleText = function(elem, textData) {\n // Remove and ignore br:s\n const nText = textData.text.replace(common.lineBreakRegex, ' ');\n\n const textElem = elem.append('text');\n textElem.attr('x', textData.x);\n textElem.attr('y', textData.y);\n textElem.style('text-anchor', textData.anchor);\n textElem.style('font-family', textData.fontFamily);\n textElem.style('font-size', textData.fontSize);\n textElem.style('font-weight', textData.fontWeight);\n textElem.attr('fill', textData.fill);\n if (typeof textData.class !== 'undefined') {\n textElem.attr('class', textData.class);\n }\n\n const span = textElem.append('tspan');\n span.attr('x', textData.x + textData.textMargin * 2);\n span.attr('fill', textData.fill);\n span.text(nText);\n\n return textElem;\n};\n\nexport const wrapLabel = memoize(\n (label, maxWidth, config) => {\n if (!label) {\n return label;\n }\n config = Object.assign(\n { fontSize: 12, fontWeight: 400, fontFamily: 'Arial', joinWith: ' \n * Additionally, dissimilar types will not clobber unless the config.clobber parameter === true. Example:\n * ```\n * let config_0 = { foo: { bar: 'bar' }, bar: 'foo' };\n * let config_1 = { foo: 'foo', bar: 'bar' };\n * let result = assignWithDepth(config_0, config_1);\n * console.log(result);\n * //-> result: { foo: { bar: 'bar' }, bar: 'bar' }\n * ```\n * \n * Traditional Object.assign would have clobbered foo in config_0 with foo in config_1.\n * \n * If src is a destructured array of objects and dst is not an array, assignWithDepth will apply each element of src to dst\n * in order.\n * @param dst:any - the destination of the merge\n * @param src:any - the source object(s) to merge into destination\n * @param config:{ depth: number, clobber: boolean } - depth: depth to traverse within src and dst for merging -\n * clobber: should dissimilar types clobber (default: { depth: 2, clobber: false })\n * @returns {*}\n */\nexport const assignWithDepth = function(dst, src, config) {\n const { depth, clobber } = Object.assign({ depth: 2, clobber: false }, config);\n if (Array.isArray(src) && !Array.isArray(dst)) {\n src.forEach(s => assignWithDepth(dst, s, config));\n return dst;\n } else if (Array.isArray(src) && Array.isArray(dst)) {\n src.forEach(s => {\n if (dst.indexOf(s) === -1) {\n dst.push(s);\n }\n });\n return dst;\n }\n if (typeof dst === 'undefined' || depth <= 0) {\n if (dst !== undefined && dst !== null && typeof dst === 'object' && typeof src === 'object') {\n return Object.assign(dst, src);\n } else {\n return src;\n }\n }\n if (typeof src !== 'undefined' && typeof dst === 'object' && typeof src === 'object') {\n Object.keys(src).forEach(key => {\n if (\n typeof src[key] === 'object' &&\n (dst[key] === undefined || typeof dst[key] === 'object')\n ) {\n if (dst[key] === undefined) {\n dst[key] = Array.isArray(src[key]) ? [] : {};\n }\n dst[key] = assignWithDepth(dst[key], src[key], { depth: depth - 1, clobber });\n } else if (clobber || (typeof dst[key] !== 'object' && typeof src[key] !== 'object')) {\n dst[key] = src[key];\n }\n });\n }\n return dst;\n};\n\nexport const getTextObj = function() {\n return {\n x: 0,\n y: 0,\n fill: undefined,\n anchor: 'start',\n style: '#666',\n width: 100,\n height: 100,\n textMargin: 0,\n rx: 0,\n ry: 0,\n valign: undefined\n };\n};\n\nexport const drawSimpleText = function(elem, textData) {\n // Remove and ignore br:s\n const nText = textData.text.replace(common.lineBreakRegex, ' ');\n\n const textElem = elem.append('text');\n textElem.attr('x', textData.x);\n textElem.attr('y', textData.y);\n textElem.style('text-anchor', textData.anchor);\n textElem.style('font-family', textData.fontFamily);\n textElem.style('font-size', textData.fontSize);\n textElem.style('font-weight', textData.fontWeight);\n textElem.attr('fill', textData.fill);\n if (typeof textData.class !== 'undefined') {\n textElem.attr('class', textData.class);\n }\n\n const span = textElem.append('tspan');\n span.attr('x', textData.x + textData.textMargin * 2);\n span.attr('fill', textData.fill);\n span.text(nText);\n\n return textElem;\n};\n\nexport const wrapLabel = memoize(\n (label, maxWidth, config) => {\n if (!label) {\n return label;\n }\n config = Object.assign(\n { fontSize: 12, fontWeight: 400, fontFamily: 'Arial', joinWith: ' \n * Additionally, dissimilar types will not clobber unless the config.clobber parameter === true. Example:\n * ```\n * let config_0 = { foo: { bar: 'bar' }, bar: 'foo' };\n * let config_1 = { foo: 'foo', bar: 'bar' };\n * let result = assignWithDepth(config_0, config_1);\n * console.log(result);\n * //-> result: { foo: { bar: 'bar' }, bar: 'bar' }\n * ```\n * \n * Traditional Object.assign would have clobbered foo in config_0 with foo in config_1.\n * \n * If src is a destructured array of objects and dst is not an array, assignWithDepth will apply each element of src to dst\n * in order.\n * @param dst:any - the destination of the merge\n * @param src:any - the source object(s) to merge into destination\n * @param config:{ depth: number, clobber: boolean } - depth: depth to traverse within src and dst for merging -\n * clobber: should dissimilar types clobber (default: { depth: 2, clobber: false })\n * @returns {*}\n */\nexport const assignWithDepth = function(dst, src, config) {\n const { depth, clobber } = Object.assign({ depth: 2, clobber: false }, config);\n if (Array.isArray(src) && !Array.isArray(dst)) {\n src.forEach(s => assignWithDepth(dst, s, config));\n return dst;\n } else if (Array.isArray(src) && Array.isArray(dst)) {\n src.forEach(s => {\n if (dst.indexOf(s) === -1) {\n dst.push(s);\n }\n });\n return dst;\n }\n if (typeof dst === 'undefined' || depth <= 0) {\n if (dst !== undefined && dst !== null && typeof dst === 'object' && typeof src === 'object') {\n return Object.assign(dst, src);\n } else {\n return src;\n }\n }\n if (typeof src !== 'undefined' && typeof dst === 'object' && typeof src === 'object') {\n Object.keys(src).forEach(key => {\n if (\n typeof src[key] === 'object' &&\n (dst[key] === undefined || typeof dst[key] === 'object')\n ) {\n if (dst[key] === undefined) {\n dst[key] = Array.isArray(src[key]) ? [] : {};\n }\n dst[key] = assignWithDepth(dst[key], src[key], { depth: depth - 1, clobber });\n } else if (clobber || (typeof dst[key] !== 'object' && typeof src[key] !== 'object')) {\n dst[key] = src[key];\n }\n });\n }\n return dst;\n};\n\nexport const getTextObj = function() {\n return {\n x: 0,\n y: 0,\n fill: undefined,\n anchor: 'start',\n style: '#666',\n width: 100,\n height: 100,\n textMargin: 0,\n rx: 0,\n ry: 0,\n valign: undefined\n };\n};\n\nexport const drawSimpleText = function(elem, textData) {\n // Remove and ignore br:s\n const nText = textData.text.replace(common.lineBreakRegex, ' ');\n\n const textElem = elem.append('text');\n textElem.attr('x', textData.x);\n textElem.attr('y', textData.y);\n textElem.style('text-anchor', textData.anchor);\n textElem.style('font-family', textData.fontFamily);\n textElem.style('font-size', textData.fontSize);\n textElem.style('font-weight', textData.fontWeight);\n textElem.attr('fill', textData.fill);\n if (typeof textData.class !== 'undefined') {\n textElem.attr('class', textData.class);\n }\n\n const span = textElem.append('tspan');\n span.attr('x', textData.x + textData.textMargin * 2);\n span.attr('fill', textData.fill);\n span.text(nText);\n\n return textElem;\n};\n\nexport const wrapLabel = memoize(\n (label, maxWidth, config) => {\n if (!label) {\n return label;\n }\n config = Object.assign(\n { fontSize: 12, fontWeight: 400, fontFamily: 'Arial', joinWith: ' \n * Additionally, dissimilar types will not clobber unless the config.clobber parameter === true. Example:\n * ```\n * let config_0 = { foo: { bar: 'bar' }, bar: 'foo' };\n * let config_1 = { foo: 'foo', bar: 'bar' };\n * let result = assignWithDepth(config_0, config_1);\n * console.log(result);\n * //-> result: { foo: { bar: 'bar' }, bar: 'bar' }\n * ```\n * \n * Traditional Object.assign would have clobbered foo in config_0 with foo in config_1.\n * \n * If src is a destructured array of objects and dst is not an array, assignWithDepth will apply each element of src to dst\n * in order.\n * @param dst:any - the destination of the merge\n * @param src:any - the source object(s) to merge into destination\n * @param config:{ depth: number, clobber: boolean } - depth: depth to traverse within src and dst for merging -\n * clobber: should dissimilar types clobber (default: { depth: 2, clobber: false })\n * @returns {*}\n */\nexport const assignWithDepth = function(dst, src, config) {\n const { depth, clobber } = Object.assign({ depth: 2, clobber: false }, config);\n if (Array.isArray(src) && !Array.isArray(dst)) {\n src.forEach(s => assignWithDepth(dst, s, config));\n return dst;\n } else if (Array.isArray(src) && Array.isArray(dst)) {\n src.forEach(s => {\n if (dst.indexOf(s) === -1) {\n dst.push(s);\n }\n });\n return dst;\n }\n if (typeof dst === 'undefined' || depth <= 0) {\n if (dst !== undefined && dst !== null && typeof dst === 'object' && typeof src === 'object') {\n return Object.assign(dst, src);\n } else {\n return src;\n }\n }\n if (typeof src !== 'undefined' && typeof dst === 'object' && typeof src === 'object') {\n Object.keys(src).forEach(key => {\n if (\n typeof src[key] === 'object' &&\n (dst[key] === undefined || typeof dst[key] === 'object')\n ) {\n if (dst[key] === undefined) {\n dst[key] = Array.isArray(src[key]) ? [] : {};\n }\n dst[key] = assignWithDepth(dst[key], src[key], { depth: depth - 1, clobber });\n } else if (clobber || (typeof dst[key] !== 'object' && typeof src[key] !== 'object')) {\n dst[key] = src[key];\n }\n });\n }\n return dst;\n};\n\nexport const getTextObj = function() {\n return {\n x: 0,\n y: 0,\n fill: undefined,\n anchor: 'start',\n style: '#666',\n width: 100,\n height: 100,\n textMargin: 0,\n rx: 0,\n ry: 0,\n valign: undefined\n };\n};\n\nexport const drawSimpleText = function(elem, textData) {\n // Remove and ignore br:s\n const nText = textData.text.replace(common.lineBreakRegex, ' ');\n\n const textElem = elem.append('text');\n textElem.attr('x', textData.x);\n textElem.attr('y', textData.y);\n textElem.style('text-anchor', textData.anchor);\n textElem.style('font-family', textData.fontFamily);\n textElem.style('font-size', textData.fontSize);\n textElem.style('font-weight', textData.fontWeight);\n textElem.attr('fill', textData.fill);\n if (typeof textData.class !== 'undefined') {\n textElem.attr('class', textData.class);\n }\n\n const span = textElem.append('tspan');\n span.attr('x', textData.x + textData.textMargin * 2);\n span.attr('fill', textData.fill);\n span.text(nText);\n\n return textElem;\n};\n\nexport const wrapLabel = memoize(\n (label, maxWidth, config) => {\n if (!label) {\n return label;\n }\n config = Object.assign(\n { fontSize: 12, fontWeight: 400, fontFamily: 'Arial', joinWith: '
' },\n config\n );\n if (common.lineBreakRegex.test(label)) {\n return label;\n }\n const words = label.split(' ');\n const completedLines = [];\n let nextLine = '';\n words.forEach((word, index) => {\n const wordLength = calculateTextWidth(`${word} `, config);\n const nextLineLength = calculateTextWidth(nextLine, config);\n if (wordLength > maxWidth) {\n const { hyphenatedStrings, remainingWord } = breakString(word, maxWidth, '-', config);\n completedLines.push(nextLine, ...hyphenatedStrings);\n nextLine = remainingWord;\n } else if (nextLineLength + wordLength >= maxWidth) {\n completedLines.push(nextLine);\n nextLine = word;\n } else {\n nextLine = [nextLine, word].filter(Boolean).join(' ');\n }\n const currentWord = index + 1;\n const isLastWord = currentWord === words.length;\n if (isLastWord) {\n completedLines.push(nextLine);\n }\n });\n return completedLines.filter(line => line !== '').join(config.joinWith);\n },\n (label, maxWidth, config) =>\n `${label}-${maxWidth}-${config.fontSize}-${config.fontWeight}-${config.fontFamily}-${config.joinWith}`\n);\n\nconst breakString = memoize(\n (word, maxWidth, hyphenCharacter = '-', config) => {\n config = Object.assign(\n { fontSize: 12, fontWeight: 400, fontFamily: 'Arial', margin: 0 },\n config\n );\n const characters = word.split('');\n const lines = [];\n let currentLine = '';\n characters.forEach((character, index) => {\n const nextLine = `${currentLine}${character}`;\n const lineWidth = calculateTextWidth(nextLine, config);\n if (lineWidth >= maxWidth) {\n const currentCharacter = index + 1;\n const isLastLine = characters.length === currentCharacter;\n const hyphenatedNextLine = `${nextLine}${hyphenCharacter}`;\n lines.push(isLastLine ? nextLine : hyphenatedNextLine);\n currentLine = '';\n } else {\n currentLine = nextLine;\n }\n });\n return { hyphenatedStrings: lines, remainingWord: currentLine };\n },\n (word, maxWidth, hyphenCharacter = '-', config) =>\n `${word}-${maxWidth}-${hyphenCharacter}-${config.fontSize}-${config.fontWeight}-${config.fontFamily}`\n);\n\n/**\n * This calculates the text's height, taking into account the wrap breaks and\n * both the statically configured height, width, and the length of the text (in pixels).\n *\n * If the wrapped text text has greater height, we extend the height, so it's\n * value won't overflow.\n *\n * @return - The height for the given text\n * @param text the text to measure\n * @param config - the config for fontSize, fontFamily, and fontWeight all impacting the resulting size\n */\nexport const calculateTextHeight = function(text, config) {\n config = Object.assign(\n { fontSize: 12, fontWeight: 400, fontFamily: 'Arial', margin: 15 },\n config\n );\n return calculateTextDimensions(text, config).height;\n};\n\n/**\n * This calculates the width of the given text, font size and family.\n *\n * @return - The width for the given text\n * @param text - The text to calculate the width of\n * @param config - the config for fontSize, fontFamily, and fontWeight all impacting the resulting size\n */\nexport const calculateTextWidth = function(text, config) {\n config = Object.assign({ fontSize: 12, fontWeight: 400, fontFamily: 'Arial' }, config);\n return calculateTextDimensions(text, config).width;\n};\n\n/**\n * This calculates the dimensions of the given text, font size, font family, font weight, and margins.\n *\n * @return - The width for the given text\n * @param text - The text to calculate the width of\n * @param config - the config for fontSize, fontFamily, fontWeight, and margin all impacting the resulting size\n */\nexport const calculateTextDimensions = memoize(\n function(text, config) {\n config = Object.assign({ fontSize: 12, fontWeight: 400, fontFamily: 'Arial' }, config);\n const { fontSize, fontFamily, fontWeight } = config;\n if (!text) {\n return { width: 0, height: 0 };\n }\n\n // We can't really know if the user supplied font family will render on the user agent;\n // thus, we'll take the max width between the user supplied font family, and a default\n // of sans-serif.\n const fontFamilies = ['sans-serif', fontFamily];\n const lines = text.split(common.lineBreakRegex);\n let dims = [];\n\n const body = select('body');\n // We don't want to leak DOM elements - if a removal operation isn't available\n // for any reason, do not continue.\n if (!body.remove) {\n return { width: 0, height: 0, lineHeight: 0 };\n }\n\n const g = body.append('svg');\n\n for (let fontFamily of fontFamilies) {\n let cheight = 0;\n let dim = { width: 0, height: 0, lineHeight: 0 };\n for (let line of lines) {\n const textObj = getTextObj();\n textObj.text = line;\n const textElem = drawSimpleText(g, textObj)\n .style('font-size', fontSize)\n .style('font-weight', fontWeight)\n .style('font-family', fontFamily);\n\n let bBox = (textElem._groups || textElem)[0][0].getBBox();\n dim.width = Math.round(Math.max(dim.width, bBox.width));\n cheight = Math.round(bBox.height);\n dim.height += cheight;\n dim.lineHeight = Math.round(Math.max(dim.lineHeight, cheight));\n }\n dims.push(dim);\n }\n\n g.remove();\n\n let index =\n isNaN(dims[1].height) ||\n isNaN(dims[1].width) ||\n isNaN(dims[1].lineHeight) ||\n (dims[0].height > dims[1].height &&\n dims[0].width > dims[1].width &&\n dims[0].lineHeight > dims[1].lineHeight)\n ? 0\n : 1;\n return dims[index];\n },\n (text, config) => `${text}-${config.fontSize}-${config.fontWeight}-${config.fontFamily}`\n);\n\nexport default {\n assignWithDepth,\n wrapLabel,\n calculateTextHeight,\n calculateTextWidth,\n calculateTextDimensions,\n detectInit,\n detectDirective,\n detectType,\n isSubstringInArray,\n interpolateToCurve,\n calcLabelPosition,\n calcCardinalityPosition,\n formatUrl,\n getStylesFromArray,\n generateId,\n random,\n memoize,\n runFunc\n};\n","module.exports = require(\"@braintree/sanitize-url\");","module.exports = require(\"d3\");","module.exports = require(\"dagre\");","module.exports = require(\"dagre-d3\");","module.exports = require(\"dagre-d3/lib/label/add-html-label.js\");","module.exports = require(\"entity-decode/browser\");","module.exports = require(\"graphlib\");","module.exports = require(\"khroma\");","module.exports = require(\"moment-mini\");","module.exports = require(\"stylis\");"],"sourceRoot":""}
\ No newline at end of file
diff --git a/dist/mermaid.js b/dist/mermaid.js
index e2602cf43..ad7239e5d 100644
--- a/dist/mermaid.js
+++ b/dist/mermaid.js
@@ -5811,41 +5811,23 @@ __webpack_require__.r(__webpack_exports__);
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "forceY", function() { return _y__WEBPACK_IMPORTED_MODULE_7__["default"]; });
-<<<<<<< HEAD
-=======
-exports = module.exports = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js")(false);
-// Module
-exports.push([module.i, "/* Flowchart variables */\n/* Sequence Diagram variables */\n/* Gantt chart variables */\n/* state colors */\n.label {\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family);\n fill: #F9FFFE;\n color: #F9FFFE; }\n\n.label text {\n fill: #F9FFFE; }\n\n.node rect,\n.node circle,\n.node ellipse,\n.node polygon,\n.node path {\n fill: #1f2020;\n stroke: #81B1DB;\n stroke-width: 1px; }\n\n.node .label {\n text-align: center;\n fill: #F9FFFE; }\n\n.node.clickable {\n cursor: pointer; }\n\n.arrowheadPath {\n fill: lightgrey; }\n\n.edgePath .path {\n stroke: lightgrey;\n stroke-width: 1.5px; }\n\n.flowchart-link {\n stroke: lightgrey;\n fill: none; }\n\n.edgeLabel {\n background-color: #e8e8e8;\n text-align: center; }\n .edgeLabel rect {\n opacity: 0.9; }\n .edgeLabel span {\n color: #333; }\n\n.cluster rect {\n fill: #474949;\n stroke: rgba(255, 255, 255, 0.25);\n stroke-width: 1px; }\n\n.cluster text {\n fill: #F9FFFE; }\n\ndiv.mermaidTooltip {\n position: absolute;\n text-align: center;\n max-width: 200px;\n padding: 2px;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family);\n font-size: 12px;\n background: #474949;\n border: 1px solid rgba(255, 255, 255, 0.25);\n border-radius: 2px;\n pointer-events: none;\n z-index: 100; }\n\n.actor {\n stroke: #81B1DB;\n fill: #1f2020; }\n\ntext.actor > tspan {\n fill: lightgrey;\n stroke: none; }\n\n.actor-line {\n stroke: lightgrey; }\n\n.messageLine0 {\n stroke-width: 1.5;\n stroke-dasharray: none;\n stroke: lightgrey; }\n\n.messageLine1 {\n stroke-width: 1.5;\n stroke-dasharray: 2, 2;\n stroke: lightgrey; }\n\n#arrowhead path {\n fill: lightgrey;\n stroke: lightgrey; }\n\n.sequenceNumber {\n fill: black; }\n\n#sequencenumber {\n fill: lightgrey; }\n\n#crosshead path {\n fill: lightgrey;\n stroke: lightgrey; }\n\n.messageText {\n fill: lightgrey;\n stroke: lightgrey; }\n\n.labelBox {\n stroke: #81B1DB;\n fill: #1f2020; }\n\n.labelText, .labelText > tspan {\n fill: lightgrey;\n stroke: none; }\n\n.loopText, .loopText > tspan {\n fill: lightgrey;\n stroke: none; }\n\n.loopLine {\n stroke-width: 2px;\n stroke-dasharray: 2, 2;\n stroke: #81B1DB;\n fill: #81B1DB; }\n\n.note {\n stroke: rgba(255, 255, 255, 0.25);\n fill: #fff5ad; }\n\n.noteText, .noteText > tspan {\n fill: #1f2020;\n stroke: none; }\n\n.activation0 {\n fill: #474949;\n stroke: #81B1DB; }\n\n.activation1 {\n fill: #474949;\n stroke: #81B1DB; }\n\n.activation2 {\n fill: #474949;\n stroke: #81B1DB; }\n\n/** Section styling */\n.mermaid-main-font {\n font-family: \"trebuchet ms\", verdana, arial;\n font-family: var(--mermaid-font-family); }\n\n.section {\n stroke: none;\n opacity: 0.2; }\n\n.section0 {\n fill: rgba(255, 255, 255, 0.3); }\n\n.section2 {\n fill: #EAE8B9; }\n\n.section1,\n.section3 {\n fill: white;\n opacity: 0.2; }\n\n.sectionTitle0 {\n fill: #F9FFFE; }\n\n.sectionTitle1 {\n fill: #F9FFFE; }\n\n.sectionTitle2 {\n fill: #F9FFFE; }\n\n.sectionTitle3 {\n fill: #F9FFFE; }\n\n.sectionTitle {\n text-anchor: start;\n font-size: 11px;\n text-height: 14px;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family); }\n\n/* Grid and axis */\n.grid .tick {\n stroke: lightgrey;\n opacity: 0.8;\n shape-rendering: crispEdges; }\n .grid .tick text {\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family); }\n\n.grid path {\n stroke-width: 0; }\n\n/* Today line */\n.today {\n fill: none;\n stroke: #DB5757;\n stroke-width: 2px; }\n\n/* Task styling */\n/* Default task */\n.task {\n stroke-width: 2; }\n\n.taskText {\n text-anchor: middle;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family); }\n\n.taskText:not([font-size]) {\n font-size: 11px; }\n\n.taskTextOutsideRight {\n fill: #fefefe;\n text-anchor: start;\n font-size: 11px;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family); }\n\n.taskTextOutsideLeft {\n fill: #fefefe;\n text-anchor: end;\n font-size: 11px; }\n\n/* Special case clickable */\n.task.clickable {\n cursor: pointer; }\n\n.taskText.clickable {\n cursor: pointer;\n fill: #003163 !important;\n font-weight: bold; }\n\n.taskTextOutsideLeft.clickable {\n cursor: pointer;\n fill: #003163 !important;\n font-weight: bold; }\n\n.taskTextOutsideRight.clickable {\n cursor: pointer;\n fill: #003163 !important;\n font-weight: bold; }\n\n/* Specific task settings for the sections*/\n.taskText0,\n.taskText1,\n.taskText2,\n.taskText3 {\n fill: #fefefe; }\n\n.task0,\n.task1,\n.task2,\n.task3 {\n fill: #1f2020;\n stroke: rgba(255, 255, 255, 0.5); }\n\n.taskTextOutside0,\n.taskTextOutside2 {\n fill: lightgrey; }\n\n.taskTextOutside1,\n.taskTextOutside3 {\n fill: lightgrey; }\n\n/* Active task */\n.active0,\n.active1,\n.active2,\n.active3 {\n fill: #81B1DB;\n stroke: rgba(255, 255, 255, 0.5); }\n\n.activeText0,\n.activeText1,\n.activeText2,\n.activeText3 {\n fill: #fefefe !important; }\n\n/* Completed task */\n.done0,\n.done1,\n.done2,\n.done3 {\n stroke: grey;\n fill: lightgrey;\n stroke-width: 2; }\n\n.doneText0,\n.doneText1,\n.doneText2,\n.doneText3 {\n fill: #fefefe !important; }\n\n/* Tasks on the critical line */\n.crit0,\n.crit1,\n.crit2,\n.crit3 {\n stroke: #E83737;\n fill: #E83737;\n stroke-width: 2; }\n\n.activeCrit0,\n.activeCrit1,\n.activeCrit2,\n.activeCrit3 {\n stroke: #E83737;\n fill: #81B1DB;\n stroke-width: 2; }\n\n.doneCrit0,\n.doneCrit1,\n.doneCrit2,\n.doneCrit3 {\n stroke: #E83737;\n fill: lightgrey;\n stroke-width: 2;\n cursor: pointer;\n shape-rendering: crispEdges; }\n\n.milestone {\n transform: rotate(45deg) scale(0.8, 0.8); }\n\n.milestoneText {\n font-style: italic; }\n\n.doneCritText0,\n.doneCritText1,\n.doneCritText2,\n.doneCritText3 {\n fill: #fefefe !important; }\n\n.activeCritText0,\n.activeCritText1,\n.activeCritText2,\n.activeCritText3 {\n fill: #fefefe !important; }\n\n.titleText {\n text-anchor: middle;\n font-size: 18px;\n fill: #fefefe;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family); }\n\ng.classGroup text {\n fill: #81B1DB;\n stroke: none;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family);\n font-size: 10px; }\n g.classGroup text .title {\n font-weight: bolder; }\n\ng.clickable {\n cursor: pointer; }\n\ng.classGroup rect {\n fill: #1f2020;\n stroke: #81B1DB; }\n\ng.classGroup line {\n stroke: #81B1DB;\n stroke-width: 1; }\n\n.classLabel .box {\n stroke: none;\n stroke-width: 0;\n fill: #1f2020;\n opacity: 0.5; }\n\n.classLabel .label {\n fill: #81B1DB;\n font-size: 10px; }\n\n.relation {\n stroke: #81B1DB;\n stroke-width: 1;\n fill: none; }\n\n.dashed-line {\n stroke-dasharray: 3; }\n\n#compositionStart {\n fill: #81B1DB;\n stroke: #81B1DB;\n stroke-width: 1; }\n\n#compositionEnd {\n fill: #81B1DB;\n stroke: #81B1DB;\n stroke-width: 1; }\n\n#aggregationStart {\n fill: #1f2020;\n stroke: #81B1DB;\n stroke-width: 1; }\n\n#aggregationEnd {\n fill: #1f2020;\n stroke: #81B1DB;\n stroke-width: 1; }\n\n#dependencyStart {\n fill: #81B1DB;\n stroke: #81B1DB;\n stroke-width: 1; }\n\n#dependencyEnd {\n fill: #81B1DB;\n stroke: #81B1DB;\n stroke-width: 1; }\n\n#extensionStart {\n fill: #81B1DB;\n stroke: #81B1DB;\n stroke-width: 1; }\n\n#extensionEnd {\n fill: #81B1DB;\n stroke: #81B1DB;\n stroke-width: 1; }\n\n.commit-id,\n.commit-msg,\n.branch-label {\n fill: lightgrey;\n color: lightgrey;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family); }\n\n.pieTitleText {\n text-anchor: middle;\n font-size: 25px;\n fill: #fefefe;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family); }\n\n.slice {\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family); }\n\ng.stateGroup text {\n fill: #81B1DB;\n stroke: none;\n font-size: 10px;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family); }\n\ng.stateGroup text {\n fill: #81B1DB;\n fill: #F9FFFE;\n stroke: none;\n font-size: 10px; }\n\ng.statediagram-cluster .cluster-label text {\n fill: #F9FFFE; }\n\ng.stateGroup .state-title {\n font-weight: bolder;\n fill: #f4f4f4; }\n\ng.stateGroup rect {\n fill: #1f2020;\n stroke: #81B1DB; }\n\ng.stateGroup line {\n stroke: #81B1DB;\n stroke-width: 1; }\n\n.transition {\n stroke: #81B1DB;\n stroke-width: 1;\n fill: none; }\n\n.stateGroup .composit {\n fill: white;\n border-bottom: 1px; }\n\n.stateGroup .alt-composit {\n fill: #e0e0e0;\n border-bottom: 1px; }\n\n.state-note {\n stroke: rgba(255, 255, 255, 0.25);\n fill: #fff5ad; }\n .state-note text {\n fill: black;\n stroke: none;\n font-size: 10px; }\n\n.stateLabel .box {\n stroke: none;\n stroke-width: 0;\n fill: #1f2020;\n opacity: 0.7; }\n\n.edgeLabel text {\n fill: #333; }\n\n.stateLabel text {\n fill: #f4f4f4;\n font-size: 10px;\n font-weight: bold;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family); }\n\n.node circle.state-start {\n fill: black;\n stroke: black; }\n\n.node circle.state-end {\n fill: black;\n stroke: white;\n stroke-width: 1.5; }\n\n#statediagram-barbEnd {\n fill: #81B1DB; }\n\n.statediagram-cluster rect {\n fill: #1f2020;\n stroke: #81B1DB;\n stroke-width: 1px; }\n\n.statediagram-cluster rect.outer {\n rx: 5px;\n ry: 5px; }\n\n.statediagram-state .divider {\n stroke: #81B1DB; }\n\n.statediagram-state .title-state {\n rx: 5px;\n ry: 5px; }\n\n.statediagram-cluster.statediagram-cluster .inner {\n fill: white; }\n\n.statediagram-cluster.statediagram-cluster-alt .inner {\n fill: #e0e0e0; }\n\n.statediagram-cluster .inner {\n rx: 0;\n ry: 0; }\n\n.statediagram-state rect.basic {\n rx: 5px;\n ry: 5px; }\n\n.statediagram-state rect.divider {\n stroke-dasharray: 10,10;\n fill: #efefef; }\n\n.note-edge {\n stroke-dasharray: 5; }\n\n.statediagram-note rect {\n fill: #fff5ad;\n stroke: rgba(255, 255, 255, 0.25);\n stroke-width: 1px;\n rx: 0;\n ry: 0; }\n\n:root {\n --mermaid-font-family: '\"trebuchet ms\", verdana, arial';\n --mermaid-font-family: \"Comic Sans MS\", \"Comic Sans\", cursive; }\n\n/* Classes common for multiple diagrams */\n.error-icon {\n fill: #a44141; }\n\n.error-text {\n fill: #ddd;\n stroke: #ddd; }\n\n.edge-thickness-normal {\n stroke-width: 2px; }\n\n.edge-thickness-thick {\n stroke-width: 3.5px; }\n\n.edge-pattern-solid {\n stroke-dasharray: 0; }\n\n.edge-pattern-dashed {\n stroke-dasharray: 3; }\n\n.edge-pattern-dotted {\n stroke-dasharray: 2; }\n\n.marker {\n fill: lightgrey; }\n\n.marker.cross {\n stroke: lightgrey; }\n", ""]);
->>>>>>> master
-<<<<<<< HEAD
-=======
-exports = module.exports = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js")(false);
-// Module
-exports.push([module.i, "/* Flowchart variables */\n/* Sequence Diagram variables */\n/* Gantt chart variables */\n/* state colors */\n.label {\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family);\n fill: #333;\n color: #333; }\n\n.label text {\n fill: #333; }\n\n.node rect,\n.node circle,\n.node ellipse,\n.node polygon,\n.node path {\n fill: #ECECFF;\n stroke: #9370DB;\n stroke-width: 1px; }\n\n.node .label {\n text-align: center;\n fill: #333; }\n\n.node.clickable {\n cursor: pointer; }\n\n.arrowheadPath {\n fill: #333333; }\n\n.edgePath .path {\n stroke: #333333;\n stroke-width: 1.5px; }\n\n.flowchart-link {\n stroke: #333333;\n fill: none; }\n\n.edgeLabel {\n background-color: #e8e8e8;\n text-align: center; }\n .edgeLabel rect {\n opacity: 0.9; }\n .edgeLabel span {\n color: #333; }\n\n.cluster rect {\n fill: #ffffde;\n stroke: #aaaa33;\n stroke-width: 1px; }\n\n.cluster text {\n fill: #333; }\n\ndiv.mermaidTooltip {\n position: absolute;\n text-align: center;\n max-width: 200px;\n padding: 2px;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family);\n font-size: 12px;\n background: #ffffde;\n border: 1px solid #aaaa33;\n border-radius: 2px;\n pointer-events: none;\n z-index: 100; }\n\n.actor {\n stroke: #CCCCFF;\n fill: #ECECFF; }\n\ntext.actor > tspan {\n fill: black;\n stroke: none; }\n\n.actor-line {\n stroke: grey; }\n\n.messageLine0 {\n stroke-width: 1.5;\n stroke-dasharray: none;\n stroke: #333; }\n\n.messageLine1 {\n stroke-width: 1.5;\n stroke-dasharray: 2, 2;\n stroke: #333; }\n\n#arrowhead path {\n fill: #333;\n stroke: #333; }\n\n.sequenceNumber {\n fill: white; }\n\n#sequencenumber {\n fill: #333; }\n\n#crosshead path {\n fill: #333;\n stroke: #333; }\n\n.messageText {\n fill: #333;\n stroke: #333; }\n\n.labelBox {\n stroke: #CCCCFF;\n fill: #ECECFF; }\n\n.labelText, .labelText > tspan {\n fill: black;\n stroke: none; }\n\n.loopText, .loopText > tspan {\n fill: black;\n stroke: none; }\n\n.loopLine {\n stroke-width: 2px;\n stroke-dasharray: 2, 2;\n stroke: #CCCCFF;\n fill: #CCCCFF; }\n\n.note {\n stroke: #aaaa33;\n fill: #fff5ad; }\n\n.noteText, .noteText > tspan {\n fill: black;\n stroke: none; }\n\n.activation0 {\n fill: #f4f4f4;\n stroke: #666; }\n\n.activation1 {\n fill: #f4f4f4;\n stroke: #666; }\n\n.activation2 {\n fill: #f4f4f4;\n stroke: #666; }\n\n/** Section styling */\n.mermaid-main-font {\n font-family: \"trebuchet ms\", verdana, arial;\n font-family: var(--mermaid-font-family); }\n\n.section {\n stroke: none;\n opacity: 0.2; }\n\n.section0 {\n fill: rgba(102, 102, 255, 0.49); }\n\n.section2 {\n fill: #fff400; }\n\n.section1,\n.section3 {\n fill: white;\n opacity: 0.2; }\n\n.sectionTitle0 {\n fill: #333; }\n\n.sectionTitle1 {\n fill: #333; }\n\n.sectionTitle2 {\n fill: #333; }\n\n.sectionTitle3 {\n fill: #333; }\n\n.sectionTitle {\n text-anchor: start;\n font-size: 11px;\n text-height: 14px;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family); }\n\n/* Grid and axis */\n.grid .tick {\n stroke: lightgrey;\n opacity: 0.8;\n shape-rendering: crispEdges; }\n .grid .tick text {\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family); }\n\n.grid path {\n stroke-width: 0; }\n\n/* Today line */\n.today {\n fill: none;\n stroke: red;\n stroke-width: 2px; }\n\n/* Task styling */\n/* Default task */\n.task {\n stroke-width: 2; }\n\n.taskText {\n text-anchor: middle;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family); }\n\n.taskText:not([font-size]) {\n font-size: 11px; }\n\n.taskTextOutsideRight {\n fill: black;\n text-anchor: start;\n font-size: 11px;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family); }\n\n.taskTextOutsideLeft {\n fill: black;\n text-anchor: end;\n font-size: 11px; }\n\n/* Special case clickable */\n.task.clickable {\n cursor: pointer; }\n\n.taskText.clickable {\n cursor: pointer;\n fill: #003163 !important;\n font-weight: bold; }\n\n.taskTextOutsideLeft.clickable {\n cursor: pointer;\n fill: #003163 !important;\n font-weight: bold; }\n\n.taskTextOutsideRight.clickable {\n cursor: pointer;\n fill: #003163 !important;\n font-weight: bold; }\n\n/* Specific task settings for the sections*/\n.taskText0,\n.taskText1,\n.taskText2,\n.taskText3 {\n fill: white; }\n\n.task0,\n.task1,\n.task2,\n.task3 {\n fill: #8a90dd;\n stroke: #534fbc; }\n\n.taskTextOutside0,\n.taskTextOutside2 {\n fill: black; }\n\n.taskTextOutside1,\n.taskTextOutside3 {\n fill: black; }\n\n/* Active task */\n.active0,\n.active1,\n.active2,\n.active3 {\n fill: #bfc7ff;\n stroke: #534fbc; }\n\n.activeText0,\n.activeText1,\n.activeText2,\n.activeText3 {\n fill: black !important; }\n\n/* Completed task */\n.done0,\n.done1,\n.done2,\n.done3 {\n stroke: grey;\n fill: lightgrey;\n stroke-width: 2; }\n\n.doneText0,\n.doneText1,\n.doneText2,\n.doneText3 {\n fill: black !important; }\n\n/* Tasks on the critical line */\n.crit0,\n.crit1,\n.crit2,\n.crit3 {\n stroke: #ff8888;\n fill: red;\n stroke-width: 2; }\n\n.activeCrit0,\n.activeCrit1,\n.activeCrit2,\n.activeCrit3 {\n stroke: #ff8888;\n fill: #bfc7ff;\n stroke-width: 2; }\n\n.doneCrit0,\n.doneCrit1,\n.doneCrit2,\n.doneCrit3 {\n stroke: #ff8888;\n fill: lightgrey;\n stroke-width: 2;\n cursor: pointer;\n shape-rendering: crispEdges; }\n\n.milestone {\n transform: rotate(45deg) scale(0.8, 0.8); }\n\n.milestoneText {\n font-style: italic; }\n\n.doneCritText0,\n.doneCritText1,\n.doneCritText2,\n.doneCritText3 {\n fill: black !important; }\n\n.activeCritText0,\n.activeCritText1,\n.activeCritText2,\n.activeCritText3 {\n fill: black !important; }\n\n.titleText {\n text-anchor: middle;\n font-size: 18px;\n fill: black;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family); }\n\ng.classGroup text {\n fill: #9370DB;\n stroke: none;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family);\n font-size: 10px; }\n g.classGroup text .title {\n font-weight: bolder; }\n\ng.clickable {\n cursor: pointer; }\n\ng.classGroup rect {\n fill: #ECECFF;\n stroke: #9370DB; }\n\ng.classGroup line {\n stroke: #9370DB;\n stroke-width: 1; }\n\n.classLabel .box {\n stroke: none;\n stroke-width: 0;\n fill: #ECECFF;\n opacity: 0.5; }\n\n.classLabel .label {\n fill: #9370DB;\n font-size: 10px; }\n\n.relation {\n stroke: #9370DB;\n stroke-width: 1;\n fill: none; }\n\n.dashed-line {\n stroke-dasharray: 3; }\n\n#compositionStart {\n fill: #9370DB;\n stroke: #9370DB;\n stroke-width: 1; }\n\n#compositionEnd {\n fill: #9370DB;\n stroke: #9370DB;\n stroke-width: 1; }\n\n#aggregationStart {\n fill: #ECECFF;\n stroke: #9370DB;\n stroke-width: 1; }\n\n#aggregationEnd {\n fill: #ECECFF;\n stroke: #9370DB;\n stroke-width: 1; }\n\n#dependencyStart {\n fill: #9370DB;\n stroke: #9370DB;\n stroke-width: 1; }\n\n#dependencyEnd {\n fill: #9370DB;\n stroke: #9370DB;\n stroke-width: 1; }\n\n#extensionStart {\n fill: #9370DB;\n stroke: #9370DB;\n stroke-width: 1; }\n\n#extensionEnd {\n fill: #9370DB;\n stroke: #9370DB;\n stroke-width: 1; }\n\n.commit-id,\n.commit-msg,\n.branch-label {\n fill: lightgrey;\n color: lightgrey;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family); }\n\n.pieTitleText {\n text-anchor: middle;\n font-size: 25px;\n fill: black;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family); }\n\n.slice {\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family); }\n\ng.stateGroup text {\n fill: #9370DB;\n stroke: none;\n font-size: 10px;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family); }\n\ng.stateGroup text {\n fill: #9370DB;\n fill: #333;\n stroke: none;\n font-size: 10px; }\n\ng.statediagram-cluster .cluster-label text {\n fill: #333; }\n\ng.stateGroup .state-title {\n font-weight: bolder;\n fill: black; }\n\ng.stateGroup rect {\n fill: #ECECFF;\n stroke: #9370DB; }\n\ng.stateGroup line {\n stroke: #9370DB;\n stroke-width: 1; }\n\n.transition {\n stroke: #9370DB;\n stroke-width: 1;\n fill: none; }\n\n.stateGroup .composit {\n fill: white;\n border-bottom: 1px; }\n\n.stateGroup .alt-composit {\n fill: #e0e0e0;\n border-bottom: 1px; }\n\n.state-note {\n stroke: #aaaa33;\n fill: #fff5ad; }\n .state-note text {\n fill: black;\n stroke: none;\n font-size: 10px; }\n\n.stateLabel .box {\n stroke: none;\n stroke-width: 0;\n fill: #ECECFF;\n opacity: 0.7; }\n\n.edgeLabel text {\n fill: #333; }\n\n.stateLabel text {\n fill: black;\n font-size: 10px;\n font-weight: bold;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family); }\n\n.node circle.state-start {\n fill: black;\n stroke: black; }\n\n.node circle.state-end {\n fill: black;\n stroke: white;\n stroke-width: 1.5; }\n\n#statediagram-barbEnd {\n fill: #9370DB; }\n\n.statediagram-cluster rect {\n fill: #ECECFF;\n stroke: #9370DB;\n stroke-width: 1px; }\n\n.statediagram-cluster rect.outer {\n rx: 5px;\n ry: 5px; }\n\n.statediagram-state .divider {\n stroke: #9370DB; }\n\n.statediagram-state .title-state {\n rx: 5px;\n ry: 5px; }\n\n.statediagram-cluster.statediagram-cluster .inner {\n fill: white; }\n\n.statediagram-cluster.statediagram-cluster-alt .inner {\n fill: #e0e0e0; }\n\n.statediagram-cluster .inner {\n rx: 0;\n ry: 0; }\n\n.statediagram-state rect.basic {\n rx: 5px;\n ry: 5px; }\n\n.statediagram-state rect.divider {\n stroke-dasharray: 10,10;\n fill: #efefef; }\n\n.note-edge {\n stroke-dasharray: 5; }\n\n.statediagram-note rect {\n fill: #fff5ad;\n stroke: #aaaa33;\n stroke-width: 1px;\n rx: 0;\n ry: 0; }\n\n:root {\n --mermaid-font-family: '\"trebuchet ms\", verdana, arial';\n --mermaid-font-family: \"Comic Sans MS\", \"Comic Sans\", cursive; }\n\n/* Classes common for multiple diagrams */\n.error-icon {\n fill: #552222; }\n\n.error-text {\n fill: #552222;\n stroke: #552222; }\n\n.edge-thickness-normal {\n stroke-width: 2px; }\n\n.edge-thickness-thick {\n stroke-width: 3.5px; }\n\n.edge-pattern-solid {\n stroke-dasharray: 0; }\n\n.edge-pattern-dashed {\n stroke-dasharray: 3; }\n\n.edge-pattern-dotted {\n stroke-dasharray: 2; }\n\n.marker {\n fill: #333333; }\n\n.marker.cross {\n stroke: #333333; }\n", ""]);
->>>>>>> master
/***/ }),
-<<<<<<< HEAD
/***/ "./node_modules/d3-force/src/jiggle.js":
/*!*********************************************!*\
!*** ./node_modules/d3-force/src/jiggle.js ***!
\*********************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
-=======
-exports = module.exports = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js")(false);
-// Module
-exports.push([module.i, "/* Flowchart variables */\n/* Sequence Diagram variables */\n/* Gantt chart variables */\n/* state colors */\n.label {\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family);\n fill: #333;\n color: #333; }\n\n.label text {\n fill: #333; }\n\n.node rect,\n.node circle,\n.node ellipse,\n.node polygon,\n.node path {\n fill: #cde498;\n stroke: #13540c;\n stroke-width: 1px; }\n\n.node .label {\n text-align: center;\n fill: #333; }\n\n.node.clickable {\n cursor: pointer; }\n\n.arrowheadPath {\n fill: green; }\n\n.edgePath .path {\n stroke: green;\n stroke-width: 1.5px; }\n\n.flowchart-link {\n stroke: green;\n fill: none; }\n\n.edgeLabel {\n background-color: #e8e8e8;\n text-align: center; }\n .edgeLabel rect {\n opacity: 0.9; }\n .edgeLabel span {\n color: #333; }\n\n.cluster rect {\n fill: #cdffb2;\n stroke: #6eaa49;\n stroke-width: 1px; }\n\n.cluster text {\n fill: #333; }\n\ndiv.mermaidTooltip {\n position: absolute;\n text-align: center;\n max-width: 200px;\n padding: 2px;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family);\n font-size: 12px;\n background: #cdffb2;\n border: 1px solid #6eaa49;\n border-radius: 2px;\n pointer-events: none;\n z-index: 100; }\n\n.actor {\n stroke: #13540c;\n fill: #cde498; }\n\ntext.actor > tspan {\n fill: black;\n stroke: none; }\n\n.actor-line {\n stroke: grey; }\n\n.messageLine0 {\n stroke-width: 1.5;\n stroke-dasharray: none;\n stroke: #333; }\n\n.messageLine1 {\n stroke-width: 1.5;\n stroke-dasharray: 2, 2;\n stroke: #333; }\n\n#arrowhead path {\n fill: #333;\n stroke: #333; }\n\n.sequenceNumber {\n fill: white; }\n\n#sequencenumber {\n fill: #333; }\n\n#crosshead path {\n fill: #333;\n stroke: #333; }\n\n.messageText {\n fill: #333;\n stroke: #333; }\n\n.labelBox {\n stroke: #326932;\n fill: #cde498; }\n\n.labelText, .labelText > tspan {\n fill: black;\n stroke: none; }\n\n.loopText, .loopText > tspan {\n fill: black;\n stroke: none; }\n\n.loopLine {\n stroke-width: 2px;\n stroke-dasharray: 2, 2;\n stroke: #326932;\n fill: #326932; }\n\n.note {\n stroke: #6eaa49;\n fill: #fff5ad; }\n\n.noteText, .noteText > tspan {\n fill: black;\n stroke: none; }\n\n.activation0 {\n fill: #f4f4f4;\n stroke: #666; }\n\n.activation1 {\n fill: #f4f4f4;\n stroke: #666; }\n\n.activation2 {\n fill: #f4f4f4;\n stroke: #666; }\n\n/** Section styling */\n.mermaid-main-font {\n font-family: \"trebuchet ms\", verdana, arial;\n font-family: var(--mermaid-font-family); }\n\n.section {\n stroke: none;\n opacity: 0.2; }\n\n.section0 {\n fill: #6eaa49; }\n\n.section2 {\n fill: #6eaa49; }\n\n.section1,\n.section3 {\n fill: white;\n opacity: 0.2; }\n\n.sectionTitle0 {\n fill: #333; }\n\n.sectionTitle1 {\n fill: #333; }\n\n.sectionTitle2 {\n fill: #333; }\n\n.sectionTitle3 {\n fill: #333; }\n\n.sectionTitle {\n text-anchor: start;\n font-size: 11px;\n text-height: 14px;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family); }\n\n/* Grid and axis */\n.grid .tick {\n stroke: lightgrey;\n opacity: 0.8;\n shape-rendering: crispEdges; }\n .grid .tick text {\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family); }\n\n.grid path {\n stroke-width: 0; }\n\n/* Today line */\n.today {\n fill: none;\n stroke: red;\n stroke-width: 2px; }\n\n/* Task styling */\n/* Default task */\n.task {\n stroke-width: 2; }\n\n.taskText {\n text-anchor: middle;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family); }\n\n.taskText:not([font-size]) {\n font-size: 11px; }\n\n.taskTextOutsideRight {\n fill: black;\n text-anchor: start;\n font-size: 11px;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family); }\n\n.taskTextOutsideLeft {\n fill: black;\n text-anchor: end;\n font-size: 11px; }\n\n/* Special case clickable */\n.task.clickable {\n cursor: pointer; }\n\n.taskText.clickable {\n cursor: pointer;\n fill: #003163 !important;\n font-weight: bold; }\n\n.taskTextOutsideLeft.clickable {\n cursor: pointer;\n fill: #003163 !important;\n font-weight: bold; }\n\n.taskTextOutsideRight.clickable {\n cursor: pointer;\n fill: #003163 !important;\n font-weight: bold; }\n\n/* Specific task settings for the sections*/\n.taskText0,\n.taskText1,\n.taskText2,\n.taskText3 {\n fill: white; }\n\n.task0,\n.task1,\n.task2,\n.task3 {\n fill: #487e3a;\n stroke: #13540c; }\n\n.taskTextOutside0,\n.taskTextOutside2 {\n fill: black; }\n\n.taskTextOutside1,\n.taskTextOutside3 {\n fill: black; }\n\n/* Active task */\n.active0,\n.active1,\n.active2,\n.active3 {\n fill: #cde498;\n stroke: #13540c; }\n\n.activeText0,\n.activeText1,\n.activeText2,\n.activeText3 {\n fill: black !important; }\n\n/* Completed task */\n.done0,\n.done1,\n.done2,\n.done3 {\n stroke: grey;\n fill: lightgrey;\n stroke-width: 2; }\n\n.doneText0,\n.doneText1,\n.doneText2,\n.doneText3 {\n fill: black !important; }\n\n/* Tasks on the critical line */\n.crit0,\n.crit1,\n.crit2,\n.crit3 {\n stroke: #ff8888;\n fill: red;\n stroke-width: 2; }\n\n.activeCrit0,\n.activeCrit1,\n.activeCrit2,\n.activeCrit3 {\n stroke: #ff8888;\n fill: #cde498;\n stroke-width: 2; }\n\n.doneCrit0,\n.doneCrit1,\n.doneCrit2,\n.doneCrit3 {\n stroke: #ff8888;\n fill: lightgrey;\n stroke-width: 2;\n cursor: pointer;\n shape-rendering: crispEdges; }\n\n.milestone {\n transform: rotate(45deg) scale(0.8, 0.8); }\n\n.milestoneText {\n font-style: italic; }\n\n.doneCritText0,\n.doneCritText1,\n.doneCritText2,\n.doneCritText3 {\n fill: black !important; }\n\n.activeCritText0,\n.activeCritText1,\n.activeCritText2,\n.activeCritText3 {\n fill: black !important; }\n\n.titleText {\n text-anchor: middle;\n font-size: 18px;\n fill: black;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family); }\n\ng.classGroup text {\n fill: #13540c;\n stroke: none;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family);\n font-size: 10px; }\n g.classGroup text .title {\n font-weight: bolder; }\n\ng.clickable {\n cursor: pointer; }\n\ng.classGroup rect {\n fill: #cde498;\n stroke: #13540c; }\n\ng.classGroup line {\n stroke: #13540c;\n stroke-width: 1; }\n\n.classLabel .box {\n stroke: none;\n stroke-width: 0;\n fill: #cde498;\n opacity: 0.5; }\n\n.classLabel .label {\n fill: #13540c;\n font-size: 10px; }\n\n.relation {\n stroke: #13540c;\n stroke-width: 1;\n fill: none; }\n\n.dashed-line {\n stroke-dasharray: 3; }\n\n#compositionStart {\n fill: #13540c;\n stroke: #13540c;\n stroke-width: 1; }\n\n#compositionEnd {\n fill: #13540c;\n stroke: #13540c;\n stroke-width: 1; }\n\n#aggregationStart {\n fill: #cde498;\n stroke: #13540c;\n stroke-width: 1; }\n\n#aggregationEnd {\n fill: #cde498;\n stroke: #13540c;\n stroke-width: 1; }\n\n#dependencyStart {\n fill: #13540c;\n stroke: #13540c;\n stroke-width: 1; }\n\n#dependencyEnd {\n fill: #13540c;\n stroke: #13540c;\n stroke-width: 1; }\n\n#extensionStart {\n fill: #13540c;\n stroke: #13540c;\n stroke-width: 1; }\n\n#extensionEnd {\n fill: #13540c;\n stroke: #13540c;\n stroke-width: 1; }\n\n.commit-id,\n.commit-msg,\n.branch-label {\n fill: lightgrey;\n color: lightgrey;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family); }\n\n.pieTitleText {\n text-anchor: middle;\n font-size: 25px;\n fill: black;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family); }\n\n.slice {\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family); }\n\ng.stateGroup text {\n fill: #13540c;\n stroke: none;\n font-size: 10px;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family); }\n\ng.stateGroup text {\n fill: #13540c;\n fill: #333;\n stroke: none;\n font-size: 10px; }\n\ng.statediagram-cluster .cluster-label text {\n fill: #333; }\n\ng.stateGroup .state-title {\n font-weight: bolder;\n fill: black; }\n\ng.stateGroup rect {\n fill: #cde498;\n stroke: #13540c; }\n\ng.stateGroup line {\n stroke: #13540c;\n stroke-width: 1; }\n\n.transition {\n stroke: #13540c;\n stroke-width: 1;\n fill: none; }\n\n.stateGroup .composit {\n fill: white;\n border-bottom: 1px; }\n\n.stateGroup .alt-composit {\n fill: #e0e0e0;\n border-bottom: 1px; }\n\n.state-note {\n stroke: #6eaa49;\n fill: #fff5ad; }\n .state-note text {\n fill: black;\n stroke: none;\n font-size: 10px; }\n\n.stateLabel .box {\n stroke: none;\n stroke-width: 0;\n fill: #cde498;\n opacity: 0.7; }\n\n.edgeLabel text {\n fill: #333; }\n\n.stateLabel text {\n fill: black;\n font-size: 10px;\n font-weight: bold;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family); }\n\n.node circle.state-start {\n fill: black;\n stroke: black; }\n\n.node circle.state-end {\n fill: black;\n stroke: white;\n stroke-width: 1.5; }\n\n#statediagram-barbEnd {\n fill: #13540c; }\n\n.statediagram-cluster rect {\n fill: #cde498;\n stroke: #13540c;\n stroke-width: 1px; }\n\n.statediagram-cluster rect.outer {\n rx: 5px;\n ry: 5px; }\n\n.statediagram-state .divider {\n stroke: #13540c; }\n\n.statediagram-state .title-state {\n rx: 5px;\n ry: 5px; }\n\n.statediagram-cluster.statediagram-cluster .inner {\n fill: white; }\n\n.statediagram-cluster.statediagram-cluster-alt .inner {\n fill: #e0e0e0; }\n\n.statediagram-cluster .inner {\n rx: 0;\n ry: 0; }\n\n.statediagram-state rect.basic {\n rx: 5px;\n ry: 5px; }\n\n.statediagram-state rect.divider {\n stroke-dasharray: 10,10;\n fill: #efefef; }\n\n.note-edge {\n stroke-dasharray: 5; }\n\n.statediagram-note rect {\n fill: #fff5ad;\n stroke: #6eaa49;\n stroke-width: 1px;\n rx: 0;\n ry: 0; }\n\n:root {\n --mermaid-font-family: '\"trebuchet ms\", verdana, arial';\n --mermaid-font-family: \"Comic Sans MS\", \"Comic Sans\", cursive; }\n\n/* Classes common for multiple diagrams */\n.error-icon {\n fill: #552222; }\n\n.error-text {\n fill: #552222;\n stroke: #552222; }\n\n.edge-thickness-normal {\n stroke-width: 2px; }\n\n.edge-thickness-thick {\n stroke-width: 3.5px; }\n\n.edge-pattern-solid {\n stroke-dasharray: 0; }\n\n.edge-pattern-dashed {\n stroke-dasharray: 3; }\n\n.edge-pattern-dotted {\n stroke-dasharray: 2; }\n\n.marker {\n fill: green; }\n\n.marker.cross {\n stroke: green; }\n", ""]);
->>>>>>> master
"use strict";
__webpack_require__.r(__webpack_exports__);
@@ -5863,17 +5845,11 @@ __webpack_require__.r(__webpack_exports__);
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
-<<<<<<< HEAD
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _constant__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./constant */ "./node_modules/d3-force/src/constant.js");
/* harmony import */ var _jiggle__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./jiggle */ "./node_modules/d3-force/src/jiggle.js");
/* harmony import */ var d3_collection__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! d3-collection */ "./node_modules/d3-collection/src/index.js");
-=======
-exports = module.exports = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js")(false);
-// Module
-exports.push([module.i, "/* Flowchart variables */\n/* Sequence Diagram variables */\n/* Gantt chart variables */\n/* state colors */\n.label {\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family);\n fill: #333;\n color: #333; }\n\n.label text {\n fill: #333; }\n\n.node rect,\n.node circle,\n.node ellipse,\n.node polygon,\n.node path {\n fill: #eee;\n stroke: #999;\n stroke-width: 1px; }\n\n.node .label {\n text-align: center;\n fill: #333; }\n\n.node.clickable {\n cursor: pointer; }\n\n.arrowheadPath {\n fill: #333333; }\n\n.edgePath .path {\n stroke: #666;\n stroke-width: 1.5px; }\n\n.flowchart-link {\n stroke: #666;\n fill: none; }\n\n.edgeLabel {\n background-color: white;\n text-align: center; }\n .edgeLabel rect {\n opacity: 0.9; }\n .edgeLabel span {\n color: #333; }\n\n.cluster rect {\n fill: #eaf2fb;\n stroke: #26a;\n stroke-width: 1px; }\n\n.cluster text {\n fill: #333; }\n\ndiv.mermaidTooltip {\n position: absolute;\n text-align: center;\n max-width: 200px;\n padding: 2px;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family);\n font-size: 12px;\n background: #eaf2fb;\n border: 1px solid #26a;\n border-radius: 2px;\n pointer-events: none;\n z-index: 100; }\n\n.actor {\n stroke: #999;\n fill: #eee; }\n\ntext.actor > tspan {\n fill: #333;\n stroke: none; }\n\n.actor-line {\n stroke: #666; }\n\n.messageLine0 {\n stroke-width: 1.5;\n stroke-dasharray: none;\n stroke: #333; }\n\n.messageLine1 {\n stroke-width: 1.5;\n stroke-dasharray: 2, 2;\n stroke: #333; }\n\n#arrowhead path {\n fill: #333;\n stroke: #333; }\n\n.sequenceNumber {\n fill: white; }\n\n#sequencenumber {\n fill: #333; }\n\n#crosshead path {\n fill: #333;\n stroke: #333; }\n\n.messageText {\n fill: #333;\n stroke: #333; }\n\n.labelBox {\n stroke: #999;\n fill: #eee; }\n\n.labelText, .labelText > tspan {\n fill: #333;\n stroke: none; }\n\n.loopText, .loopText > tspan {\n fill: #333;\n stroke: none; }\n\n.loopLine {\n stroke-width: 2px;\n stroke-dasharray: 2, 2;\n stroke: #999;\n fill: #999; }\n\n.note {\n stroke: #777700;\n fill: #ffa; }\n\n.noteText, .noteText > tspan {\n fill: #333;\n stroke: none; }\n\n.activation0 {\n fill: #f4f4f4;\n stroke: #666; }\n\n.activation1 {\n fill: #f4f4f4;\n stroke: #666; }\n\n.activation2 {\n fill: #f4f4f4;\n stroke: #666; }\n\n/** Section styling */\n.mermaid-main-font {\n font-family: \"trebuchet ms\", verdana, arial;\n font-family: var(--mermaid-font-family); }\n\n.section {\n stroke: none;\n opacity: 0.2; }\n\n.section0 {\n fill: #80b3e6; }\n\n.section2 {\n fill: #80b3e6; }\n\n.section1,\n.section3 {\n fill: white;\n opacity: 0.2; }\n\n.sectionTitle0 {\n fill: #333; }\n\n.sectionTitle1 {\n fill: #333; }\n\n.sectionTitle2 {\n fill: #333; }\n\n.sectionTitle3 {\n fill: #333; }\n\n.sectionTitle {\n text-anchor: start;\n font-size: 11px;\n text-height: 14px;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family); }\n\n/* Grid and axis */\n.grid .tick {\n stroke: #e6e6e6;\n opacity: 0.8;\n shape-rendering: crispEdges; }\n .grid .tick text {\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family); }\n\n.grid path {\n stroke-width: 0; }\n\n/* Today line */\n.today {\n fill: none;\n stroke: #d42;\n stroke-width: 2px; }\n\n/* Task styling */\n/* Default task */\n.task {\n stroke-width: 2; }\n\n.taskText {\n text-anchor: middle;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family); }\n\n.taskText:not([font-size]) {\n font-size: 11px; }\n\n.taskTextOutsideRight {\n fill: #333;\n text-anchor: start;\n font-size: 11px;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family); }\n\n.taskTextOutsideLeft {\n fill: #333;\n text-anchor: end;\n font-size: 11px; }\n\n/* Special case clickable */\n.task.clickable {\n cursor: pointer; }\n\n.taskText.clickable {\n cursor: pointer;\n fill: #003163 !important;\n font-weight: bold; }\n\n.taskTextOutsideLeft.clickable {\n cursor: pointer;\n fill: #003163 !important;\n font-weight: bold; }\n\n.taskTextOutsideRight.clickable {\n cursor: pointer;\n fill: #003163 !important;\n font-weight: bold; }\n\n/* Specific task settings for the sections*/\n.taskText0,\n.taskText1,\n.taskText2,\n.taskText3 {\n fill: white; }\n\n.task0,\n.task1,\n.task2,\n.task3 {\n fill: #26a;\n stroke: #1a4d80; }\n\n.taskTextOutside0,\n.taskTextOutside2 {\n fill: #333; }\n\n.taskTextOutside1,\n.taskTextOutside3 {\n fill: #333; }\n\n/* Active task */\n.active0,\n.active1,\n.active2,\n.active3 {\n fill: #eee;\n stroke: #1a4d80; }\n\n.activeText0,\n.activeText1,\n.activeText2,\n.activeText3 {\n fill: #333 !important; }\n\n/* Completed task */\n.done0,\n.done1,\n.done2,\n.done3 {\n stroke: #666;\n fill: #bbb;\n stroke-width: 2; }\n\n.doneText0,\n.doneText1,\n.doneText2,\n.doneText3 {\n fill: #333 !important; }\n\n/* Tasks on the critical line */\n.crit0,\n.crit1,\n.crit2,\n.crit3 {\n stroke: #b1361b;\n fill: #d42;\n stroke-width: 2; }\n\n.activeCrit0,\n.activeCrit1,\n.activeCrit2,\n.activeCrit3 {\n stroke: #b1361b;\n fill: #eee;\n stroke-width: 2; }\n\n.doneCrit0,\n.doneCrit1,\n.doneCrit2,\n.doneCrit3 {\n stroke: #b1361b;\n fill: #bbb;\n stroke-width: 2;\n cursor: pointer;\n shape-rendering: crispEdges; }\n\n.milestone {\n transform: rotate(45deg) scale(0.8, 0.8); }\n\n.milestoneText {\n font-style: italic; }\n\n.doneCritText0,\n.doneCritText1,\n.doneCritText2,\n.doneCritText3 {\n fill: #333 !important; }\n\n.activeCritText0,\n.activeCritText1,\n.activeCritText2,\n.activeCritText3 {\n fill: #333 !important; }\n\n.titleText {\n text-anchor: middle;\n font-size: 18px;\n fill: #333;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family); }\n\ng.classGroup text {\n fill: #999;\n stroke: none;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family);\n font-size: 10px; }\n g.classGroup text .title {\n font-weight: bolder; }\n\ng.clickable {\n cursor: pointer; }\n\ng.classGroup rect {\n fill: #eee;\n stroke: #999; }\n\ng.classGroup line {\n stroke: #999;\n stroke-width: 1; }\n\n.classLabel .box {\n stroke: none;\n stroke-width: 0;\n fill: #eee;\n opacity: 0.5; }\n\n.classLabel .label {\n fill: #999;\n font-size: 10px; }\n\n.relation {\n stroke: #999;\n stroke-width: 1;\n fill: none; }\n\n.dashed-line {\n stroke-dasharray: 3; }\n\n#compositionStart {\n fill: #999;\n stroke: #999;\n stroke-width: 1; }\n\n#compositionEnd {\n fill: #999;\n stroke: #999;\n stroke-width: 1; }\n\n#aggregationStart {\n fill: #eee;\n stroke: #999;\n stroke-width: 1; }\n\n#aggregationEnd {\n fill: #eee;\n stroke: #999;\n stroke-width: 1; }\n\n#dependencyStart {\n fill: #999;\n stroke: #999;\n stroke-width: 1; }\n\n#dependencyEnd {\n fill: #999;\n stroke: #999;\n stroke-width: 1; }\n\n#extensionStart {\n fill: #999;\n stroke: #999;\n stroke-width: 1; }\n\n#extensionEnd {\n fill: #999;\n stroke: #999;\n stroke-width: 1; }\n\n.commit-id,\n.commit-msg,\n.branch-label {\n fill: lightgrey;\n color: lightgrey;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family); }\n\n.pieTitleText {\n text-anchor: middle;\n font-size: 25px;\n fill: #333;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family); }\n\n.slice {\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family); }\n\ng.stateGroup text {\n fill: #999;\n stroke: none;\n font-size: 10px;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family); }\n\ng.stateGroup text {\n fill: #999;\n fill: #333;\n stroke: none;\n font-size: 10px; }\n\ng.statediagram-cluster .cluster-label text {\n fill: #333; }\n\ng.stateGroup .state-title {\n font-weight: bolder;\n fill: black; }\n\ng.stateGroup rect {\n fill: #eee;\n stroke: #999; }\n\ng.stateGroup line {\n stroke: #999;\n stroke-width: 1; }\n\n.transition {\n stroke: #999;\n stroke-width: 1;\n fill: none; }\n\n.stateGroup .composit {\n fill: white;\n border-bottom: 1px; }\n\n.stateGroup .alt-composit {\n fill: #e0e0e0;\n border-bottom: 1px; }\n\n.state-note {\n stroke: #777700;\n fill: #ffa; }\n .state-note text {\n fill: black;\n stroke: none;\n font-size: 10px; }\n\n.stateLabel .box {\n stroke: none;\n stroke-width: 0;\n fill: #eee;\n opacity: 0.7; }\n\n.edgeLabel text {\n fill: #333; }\n\n.stateLabel text {\n fill: black;\n font-size: 10px;\n font-weight: bold;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family); }\n\n.node circle.state-start {\n fill: black;\n stroke: black; }\n\n.node circle.state-end {\n fill: black;\n stroke: white;\n stroke-width: 1.5; }\n\n#statediagram-barbEnd {\n fill: #999; }\n\n.statediagram-cluster rect {\n fill: #eee;\n stroke: #999;\n stroke-width: 1px; }\n\n.statediagram-cluster rect.outer {\n rx: 5px;\n ry: 5px; }\n\n.statediagram-state .divider {\n stroke: #999; }\n\n.statediagram-state .title-state {\n rx: 5px;\n ry: 5px; }\n\n.statediagram-cluster.statediagram-cluster .inner {\n fill: white; }\n\n.statediagram-cluster.statediagram-cluster-alt .inner {\n fill: #e0e0e0; }\n\n.statediagram-cluster .inner {\n rx: 0;\n ry: 0; }\n\n.statediagram-state rect.basic {\n rx: 5px;\n ry: 5px; }\n\n.statediagram-state rect.divider {\n stroke-dasharray: 10,10;\n fill: #efefef; }\n\n.note-edge {\n stroke-dasharray: 5; }\n\n.statediagram-note rect {\n fill: #ffa;\n stroke: #777700;\n stroke-width: 1px;\n rx: 0;\n ry: 0; }\n\n:root {\n --mermaid-font-family: '\"trebuchet ms\", verdana, arial';\n --mermaid-font-family: \"Comic Sans MS\", \"Comic Sans\", cursive; }\n\n/* Classes common for multiple diagrams */\n.error-icon {\n fill: #552222; }\n\n.error-text {\n fill: #552222;\n stroke: #552222; }\n\n.edge-thickness-normal {\n stroke-width: 2px; }\n\n.edge-thickness-thick {\n stroke-width: 3.5px; }\n\n.edge-pattern-solid {\n stroke-dasharray: 0; }\n\n.edge-pattern-dashed {\n stroke-dasharray: 3; }\n\n.edge-pattern-dotted {\n stroke-dasharray: 2; }\n\n.marker {\n fill: #666; }\n\n.marker.cross {\n stroke: #666; }\n", ""]);
->>>>>>> master
@@ -49059,11 +49035,7 @@ module.exports = function(module) {
/*! exports provided: name, version, description, main, keywords, scripts, repository, author, license, standard, dependencies, devDependencies, files, yarn-upgrade-all, sideEffects, husky, default */
/***/ (function(module) {
-<<<<<<< HEAD
-module.exports = JSON.parse("{\"name\":\"mermaid\",\"version\":\"8.6.3\",\"description\":\"Markdownish syntax for generating flowcharts, sequence diagrams, class diagrams, gantt charts and git graphs.\",\"main\":\"dist/mermaid.core.js\",\"keywords\":[\"diagram\",\"markdown\",\"flowchart\",\"sequence diagram\",\"gantt\",\"class diagram\",\"git graph\"],\"scripts\":{\"build:development\":\"webpack --progress --colors\",\"build:production\":\"yarn build:development -p --config webpack.config.prod.babel.js\",\"build\":\"yarn build:development && yarn build:production\",\"postbuild\":\"documentation build src/mermaidAPI.js src/config.js --shallow -f md --markdown-toc false -o docs/Setup.md\",\"build:watch\":\"yarn build --watch\",\"minify\":\"minify ./dist/mermaid.js > ./dist/mermaid.min.js\",\"release\":\"yarn build\",\"lint\":\"eslint src\",\"e2e:depr\":\"yarn lint && jest e2e --config e2e/jest.config.js\",\"cypress\":\"percy exec -- cypress run\",\"e2e\":\"start-server-and-test dev http://localhost:9000/ cypress\",\"e2e-upd\":\"yarn lint && jest e2e -u --config e2e/jest.config.js\",\"dev\":\"webpack-dev-server --config webpack.config.e2e.js\",\"test\":\"yarn lint && jest src/.*\",\"test:watch\":\"jest --watch src\",\"prepublishOnly\":\"yarn build && yarn test && yarn e2e\",\"prepare\":\"yarn build\"},\"repository\":{\"type\":\"git\",\"url\":\"https://github.com/knsv/mermaid\"},\"author\":\"Knut Sveidqvist\",\"license\":\"MIT\",\"standard\":{\"ignore\":[\"**/parser/*.js\",\"dist/**/*.js\",\"cypress/**/*.js\"],\"globals\":[\"page\"]},\"dependencies\":{\"@braintree/sanitize-url\":\"^3.1.0\",\"d3\":\"^5.7.0\",\"dagre\":\"^0.8.4\",\"dagre-d3\":\"^0.6.4\",\"entity-decode\":\"^2.0.2\",\"graphlib\":\"^2.1.7\",\"he\":\"^1.2.0\",\"khroma\":\"^1.1.0\",\"minify\":\"^4.1.1\",\"moment-mini\":\"^2.22.1\",\"stylis\":\"^3.5.2\"},\"devDependencies\":{\"@babel/core\":\"^7.2.2\",\"@babel/preset-env\":\"^7.8.4\",\"@babel/register\":\"^7.0.0\",\"@percy/cypress\":\"*\",\"babel-core\":\"7.0.0-bridge.0\",\"babel-jest\":\"^24.9.0\",\"babel-loader\":\"^8.0.4\",\"coveralls\":\"^3.0.2\",\"css-loader\":\"^2.0.1\",\"css-to-string-loader\":\"^0.1.3\",\"cypress\":\"4.0.1\",\"documentation\":\"^12.0.1\",\"eslint\":\"^6.3.0\",\"eslint-config-prettier\":\"^6.3.0\",\"eslint-plugin-prettier\":\"^3.1.0\",\"husky\":\"^1.2.1\",\"identity-obj-proxy\":\"^3.0.0\",\"jest\":\"^24.9.0\",\"jison\":\"^0.4.18\",\"moment\":\"^2.23.0\",\"node-sass\":\"^4.12.0\",\"prettier\":\"^1.18.2\",\"puppeteer\":\"^1.17.0\",\"sass-loader\":\"^7.1.0\",\"start-server-and-test\":\"^1.10.6\",\"terser-webpack-plugin\":\"^2.2.2\",\"webpack\":\"^4.41.2\",\"webpack-bundle-analyzer\":\"^3.7.0\",\"webpack-cli\":\"^3.1.2\",\"webpack-dev-server\":\"^3.4.1\",\"webpack-node-externals\":\"^1.7.2\",\"yarn-upgrade-all\":\"^0.5.0\"},\"files\":[\"dist\"],\"yarn-upgrade-all\":{\"ignore\":[\"babel-core\"]},\"sideEffects\":[\"**/*.css\",\"**/*.scss\"],\"husky\":{\"hooks\":{\"pre-push\":\"yarn test\"}}}");
-=======
-module.exports = JSON.parse("{\"name\":\"mermaid\",\"version\":\"8.6.4\",\"description\":\"Markdownish syntax for generating flowcharts, sequence diagrams, class diagrams, gantt charts and git graphs.\",\"main\":\"dist/mermaid.core.js\",\"keywords\":[\"diagram\",\"markdown\",\"flowchart\",\"sequence diagram\",\"gantt\",\"class diagram\",\"git graph\"],\"scripts\":{\"build:development\":\"webpack --progress --colors\",\"build:production\":\"yarn build:development -p --config webpack.config.prod.babel.js\",\"build\":\"yarn build:development && yarn build:production\",\"postbuild\":\"documentation build src/mermaidAPI.js src/config.js --shallow -f md --markdown-toc false -o docs/Setup.md\",\"build:watch\":\"yarn build --watch\",\"minify\":\"minify ./dist/mermaid.js > ./dist/mermaid.min.js\",\"release\":\"yarn build\",\"lint\":\"eslint src\",\"e2e:depr\":\"yarn lint && jest e2e --config e2e/jest.config.js\",\"cypress\":\"percy exec -- cypress run\",\"e2e\":\"start-server-and-test dev http://localhost:9000/ cypress\",\"e2e-upd\":\"yarn lint && jest e2e -u --config e2e/jest.config.js\",\"dev\":\"webpack-dev-server --config webpack.config.e2e.js\",\"test\":\"yarn lint && jest src/.*\",\"test:watch\":\"jest --watch src\",\"prepublishOnly\":\"yarn build && yarn test && yarn e2e\",\"prepush\":\"yarn test\",\"prepare\":\"yarn build\"},\"repository\":{\"type\":\"git\",\"url\":\"https://github.com/knsv/mermaid\"},\"author\":\"Knut Sveidqvist\",\"license\":\"MIT\",\"standard\":{\"ignore\":[\"**/parser/*.js\",\"dist/**/*.js\",\"cypress/**/*.js\"],\"globals\":[\"page\"]},\"dependencies\":{\"@braintree/sanitize-url\":\"^3.1.0\",\"crypto-random-string\":\"^3.0.1\",\"d3\":\"^5.7.0\",\"dagre\":\"^0.8.4\",\"dagre-d3\":\"^0.6.4\",\"entity-decode\":\"^2.0.2\",\"graphlib\":\"^2.1.7\",\"he\":\"^1.2.0\",\"minify\":\"^4.1.1\",\"moment-mini\":\"^2.22.1\",\"scope-css\":\"^1.2.1\"},\"devDependencies\":{\"@babel/core\":\"^7.2.2\",\"@babel/preset-env\":\"^7.8.4\",\"@babel/register\":\"^7.0.0\",\"@percy/cypress\":\"*\",\"babel-core\":\"7.0.0-bridge.0\",\"babel-jest\":\"^24.9.0\",\"babel-loader\":\"^8.0.4\",\"coveralls\":\"^3.0.2\",\"css-loader\":\"^2.0.1\",\"css-to-string-loader\":\"^0.1.3\",\"cypress\":\"4.0.1\",\"documentation\":\"^12.0.1\",\"eslint\":\"^6.3.0\",\"eslint-config-prettier\":\"^6.3.0\",\"eslint-plugin-prettier\":\"^3.1.0\",\"husky\":\"^1.2.1\",\"identity-obj-proxy\":\"^3.0.0\",\"jest\":\"^24.9.0\",\"jison\":\"^0.4.18\",\"moment\":\"^2.23.0\",\"node-sass\":\"^4.12.0\",\"prettier\":\"^1.18.2\",\"puppeteer\":\"^1.17.0\",\"sass-loader\":\"^7.1.0\",\"start-server-and-test\":\"^1.10.6\",\"terser-webpack-plugin\":\"^2.2.2\",\"webpack\":\"^4.41.2\",\"webpack-bundle-analyzer\":\"^3.7.0\",\"webpack-cli\":\"^3.1.2\",\"webpack-dev-server\":\"^3.4.1\",\"webpack-node-externals\":\"^1.7.2\",\"yarn-upgrade-all\":\"^0.5.0\"},\"files\":[\"dist\"],\"yarn-upgrade-all\":{\"ignore\":[\"babel-core\"]},\"sideEffects\":[\"**/*.css\",\"**/*.scss\"]}");
->>>>>>> master
+module.exports = JSON.parse("{\"name\":\"mermaid\",\"version\":\"8.6.4\",\"description\":\"Markdownish syntax for generating flowcharts, sequence diagrams, class diagrams, gantt charts and git graphs.\",\"main\":\"dist/mermaid.core.js\",\"keywords\":[\"diagram\",\"markdown\",\"flowchart\",\"sequence diagram\",\"gantt\",\"class diagram\",\"git graph\"],\"scripts\":{\"build:development\":\"webpack --progress --colors\",\"build:production\":\"yarn build:development -p --config webpack.config.prod.babel.js\",\"build\":\"yarn build:development && yarn build:production\",\"postbuild\":\"documentation build src/mermaidAPI.js src/config.js --shallow -f md --markdown-toc false -o docs/Setup.md\",\"build:watch\":\"yarn build --watch\",\"minify\":\"minify ./dist/mermaid.js > ./dist/mermaid.min.js\",\"release\":\"yarn build\",\"lint\":\"eslint src\",\"e2e:depr\":\"yarn lint && jest e2e --config e2e/jest.config.js\",\"cypress\":\"percy exec -- cypress run\",\"e2e\":\"start-server-and-test dev http://localhost:9000/ cypress\",\"e2e-upd\":\"yarn lint && jest e2e -u --config e2e/jest.config.js\",\"dev\":\"webpack-dev-server --config webpack.config.e2e.js\",\"test\":\"yarn lint && jest src/.*\",\"test:watch\":\"jest --watch src\",\"prepublishOnly\":\"yarn build && yarn test && yarn e2e\",\"prepare\":\"yarn build\"},\"repository\":{\"type\":\"git\",\"url\":\"https://github.com/knsv/mermaid\"},\"author\":\"Knut Sveidqvist\",\"license\":\"MIT\",\"standard\":{\"ignore\":[\"**/parser/*.js\",\"dist/**/*.js\",\"cypress/**/*.js\"],\"globals\":[\"page\"]},\"dependencies\":{\"@braintree/sanitize-url\":\"^3.1.0\",\"d3\":\"^5.7.0\",\"dagre\":\"^0.8.4\",\"dagre-d3\":\"^0.6.4\",\"entity-decode\":\"^2.0.2\",\"graphlib\":\"^2.1.7\",\"he\":\"^1.2.0\",\"khroma\":\"^1.1.0\",\"minify\":\"^4.1.1\",\"moment-mini\":\"^2.22.1\",\"stylis\":\"^3.5.2\"},\"devDependencies\":{\"@babel/core\":\"^7.2.2\",\"@babel/preset-env\":\"^7.8.4\",\"@babel/register\":\"^7.0.0\",\"@percy/cypress\":\"*\",\"babel-core\":\"7.0.0-bridge.0\",\"babel-jest\":\"^24.9.0\",\"babel-loader\":\"^8.0.4\",\"coveralls\":\"^3.0.2\",\"css-loader\":\"^2.0.1\",\"css-to-string-loader\":\"^0.1.3\",\"cypress\":\"4.0.1\",\"documentation\":\"^12.0.1\",\"eslint\":\"^6.3.0\",\"eslint-config-prettier\":\"^6.3.0\",\"eslint-plugin-prettier\":\"^3.1.0\",\"husky\":\"^1.2.1\",\"identity-obj-proxy\":\"^3.0.0\",\"jest\":\"^24.9.0\",\"jison\":\"^0.4.18\",\"moment\":\"^2.23.0\",\"node-sass\":\"^4.12.0\",\"prettier\":\"^1.18.2\",\"puppeteer\":\"^1.17.0\",\"sass-loader\":\"^7.1.0\",\"start-server-and-test\":\"^1.10.6\",\"terser-webpack-plugin\":\"^2.2.2\",\"webpack\":\"^4.41.2\",\"webpack-bundle-analyzer\":\"^3.7.0\",\"webpack-cli\":\"^3.1.2\",\"webpack-dev-server\":\"^3.4.1\",\"webpack-node-externals\":\"^1.7.2\",\"yarn-upgrade-all\":\"^0.5.0\"},\"files\":[\"dist\"],\"yarn-upgrade-all\":{\"ignore\":[\"babel-core\"]},\"sideEffects\":[\"**/*.css\",\"**/*.scss\"],\"husky\":{\"hooks\":{\"pre-push\":\"yarn test\"}}}");
/***/ }),
diff --git a/dist/mermaid.js.map b/dist/mermaid.js.map
index 7cbf84277..5af298bcd 100644
--- a/dist/mermaid.js.map
+++ b/dist/mermaid.js.map
@@ -1,5 +1 @@
-<<<<<<< HEAD
-{"version":3,"sources":["webpack://mermaid/webpack/universalModuleDefinition","webpack://mermaid/webpack/bootstrap","webpack://mermaid/./node_modules/@braintree/sanitize-url/index.js","webpack://mermaid/./node_modules/d3-array/src/array.js","webpack://mermaid/./node_modules/d3-array/src/ascending.js","webpack://mermaid/./node_modules/d3-array/src/bisect.js","webpack://mermaid/./node_modules/d3-array/src/bisector.js","webpack://mermaid/./node_modules/d3-array/src/constant.js","webpack://mermaid/./node_modules/d3-array/src/cross.js","webpack://mermaid/./node_modules/d3-array/src/descending.js","webpack://mermaid/./node_modules/d3-array/src/deviation.js","webpack://mermaid/./node_modules/d3-array/src/extent.js","webpack://mermaid/./node_modules/d3-array/src/histogram.js","webpack://mermaid/./node_modules/d3-array/src/identity.js","webpack://mermaid/./node_modules/d3-array/src/index.js","webpack://mermaid/./node_modules/d3-array/src/max.js","webpack://mermaid/./node_modules/d3-array/src/mean.js","webpack://mermaid/./node_modules/d3-array/src/median.js","webpack://mermaid/./node_modules/d3-array/src/merge.js","webpack://mermaid/./node_modules/d3-array/src/min.js","webpack://mermaid/./node_modules/d3-array/src/number.js","webpack://mermaid/./node_modules/d3-array/src/pairs.js","webpack://mermaid/./node_modules/d3-array/src/permute.js","webpack://mermaid/./node_modules/d3-array/src/quantile.js","webpack://mermaid/./node_modules/d3-array/src/range.js","webpack://mermaid/./node_modules/d3-array/src/scan.js","webpack://mermaid/./node_modules/d3-array/src/shuffle.js","webpack://mermaid/./node_modules/d3-array/src/sum.js","webpack://mermaid/./node_modules/d3-array/src/threshold/freedmanDiaconis.js","webpack://mermaid/./node_modules/d3-array/src/threshold/scott.js","webpack://mermaid/./node_modules/d3-array/src/threshold/sturges.js","webpack://mermaid/./node_modules/d3-array/src/ticks.js","webpack://mermaid/./node_modules/d3-array/src/transpose.js","webpack://mermaid/./node_modules/d3-array/src/variance.js","webpack://mermaid/./node_modules/d3-array/src/zip.js","webpack://mermaid/./node_modules/d3-axis/src/array.js","webpack://mermaid/./node_modules/d3-axis/src/axis.js","webpack://mermaid/./node_modules/d3-axis/src/identity.js","webpack://mermaid/./node_modules/d3-axis/src/index.js","webpack://mermaid/./node_modules/d3-brush/src/brush.js","webpack://mermaid/./node_modules/d3-brush/src/constant.js","webpack://mermaid/./node_modules/d3-brush/src/event.js","webpack://mermaid/./node_modules/d3-brush/src/index.js","webpack://mermaid/./node_modules/d3-brush/src/noevent.js","webpack://mermaid/./node_modules/d3-chord/src/array.js","webpack://mermaid/./node_modules/d3-chord/src/chord.js","webpack://mermaid/./node_modules/d3-chord/src/constant.js","webpack://mermaid/./node_modules/d3-chord/src/index.js","webpack://mermaid/./node_modules/d3-chord/src/math.js","webpack://mermaid/./node_modules/d3-chord/src/ribbon.js","webpack://mermaid/./node_modules/d3-collection/src/entries.js","webpack://mermaid/./node_modules/d3-collection/src/index.js","webpack://mermaid/./node_modules/d3-collection/src/keys.js","webpack://mermaid/./node_modules/d3-collection/src/map.js","webpack://mermaid/./node_modules/d3-collection/src/nest.js","webpack://mermaid/./node_modules/d3-collection/src/set.js","webpack://mermaid/./node_modules/d3-collection/src/values.js","webpack://mermaid/./node_modules/d3-color/src/color.js","webpack://mermaid/./node_modules/d3-color/src/cubehelix.js","webpack://mermaid/./node_modules/d3-color/src/define.js","webpack://mermaid/./node_modules/d3-color/src/index.js","webpack://mermaid/./node_modules/d3-color/src/lab.js","webpack://mermaid/./node_modules/d3-color/src/math.js","webpack://mermaid/./node_modules/d3-contour/src/area.js","webpack://mermaid/./node_modules/d3-contour/src/array.js","webpack://mermaid/./node_modules/d3-contour/src/ascending.js","webpack://mermaid/./node_modules/d3-contour/src/blur.js","webpack://mermaid/./node_modules/d3-contour/src/constant.js","webpack://mermaid/./node_modules/d3-contour/src/contains.js","webpack://mermaid/./node_modules/d3-contour/src/contours.js","webpack://mermaid/./node_modules/d3-contour/src/density.js","webpack://mermaid/./node_modules/d3-contour/src/index.js","webpack://mermaid/./node_modules/d3-contour/src/noop.js","webpack://mermaid/./node_modules/d3-dispatch/src/dispatch.js","webpack://mermaid/./node_modules/d3-dispatch/src/index.js","webpack://mermaid/./node_modules/d3-drag/src/constant.js","webpack://mermaid/./node_modules/d3-drag/src/drag.js","webpack://mermaid/./node_modules/d3-drag/src/event.js","webpack://mermaid/./node_modules/d3-drag/src/index.js","webpack://mermaid/./node_modules/d3-drag/src/nodrag.js","webpack://mermaid/./node_modules/d3-drag/src/noevent.js","webpack://mermaid/./node_modules/d3-dsv/src/autoType.js","webpack://mermaid/./node_modules/d3-dsv/src/csv.js","webpack://mermaid/./node_modules/d3-dsv/src/dsv.js","webpack://mermaid/./node_modules/d3-dsv/src/index.js","webpack://mermaid/./node_modules/d3-dsv/src/tsv.js","webpack://mermaid/./node_modules/d3-ease/src/back.js","webpack://mermaid/./node_modules/d3-ease/src/bounce.js","webpack://mermaid/./node_modules/d3-ease/src/circle.js","webpack://mermaid/./node_modules/d3-ease/src/cubic.js","webpack://mermaid/./node_modules/d3-ease/src/elastic.js","webpack://mermaid/./node_modules/d3-ease/src/exp.js","webpack://mermaid/./node_modules/d3-ease/src/index.js","webpack://mermaid/./node_modules/d3-ease/src/linear.js","webpack://mermaid/./node_modules/d3-ease/src/poly.js","webpack://mermaid/./node_modules/d3-ease/src/quad.js","webpack://mermaid/./node_modules/d3-ease/src/sin.js","webpack://mermaid/./node_modules/d3-fetch/src/blob.js","webpack://mermaid/./node_modules/d3-fetch/src/buffer.js","webpack://mermaid/./node_modules/d3-fetch/src/dsv.js","webpack://mermaid/./node_modules/d3-fetch/src/image.js","webpack://mermaid/./node_modules/d3-fetch/src/index.js","webpack://mermaid/./node_modules/d3-fetch/src/json.js","webpack://mermaid/./node_modules/d3-fetch/src/text.js","webpack://mermaid/./node_modules/d3-fetch/src/xml.js","webpack://mermaid/./node_modules/d3-force/src/center.js","webpack://mermaid/./node_modules/d3-force/src/collide.js","webpack://mermaid/./node_modules/d3-force/src/constant.js","webpack://mermaid/./node_modules/d3-force/src/index.js","webpack://mermaid/./node_modules/d3-force/src/jiggle.js","webpack://mermaid/./node_modules/d3-force/src/link.js","webpack://mermaid/./node_modules/d3-force/src/manyBody.js","webpack://mermaid/./node_modules/d3-force/src/radial.js","webpack://mermaid/./node_modules/d3-force/src/simulation.js","webpack://mermaid/./node_modules/d3-force/src/x.js","webpack://mermaid/./node_modules/d3-force/src/y.js","webpack://mermaid/./node_modules/d3-format/src/defaultLocale.js","webpack://mermaid/./node_modules/d3-format/src/exponent.js","webpack://mermaid/./node_modules/d3-format/src/formatDecimal.js","webpack://mermaid/./node_modules/d3-format/src/formatGroup.js","webpack://mermaid/./node_modules/d3-format/src/formatNumerals.js","webpack://mermaid/./node_modules/d3-format/src/formatPrefixAuto.js","webpack://mermaid/./node_modules/d3-format/src/formatRounded.js","webpack://mermaid/./node_modules/d3-format/src/formatSpecifier.js","webpack://mermaid/./node_modules/d3-format/src/formatTrim.js","webpack://mermaid/./node_modules/d3-format/src/formatTypes.js","webpack://mermaid/./node_modules/d3-format/src/identity.js","webpack://mermaid/./node_modules/d3-format/src/index.js","webpack://mermaid/./node_modules/d3-format/src/locale.js","webpack://mermaid/./node_modules/d3-format/src/precisionFixed.js","webpack://mermaid/./node_modules/d3-format/src/precisionPrefix.js","webpack://mermaid/./node_modules/d3-format/src/precisionRound.js","webpack://mermaid/./node_modules/d3-geo/src/adder.js","webpack://mermaid/./node_modules/d3-geo/src/area.js","webpack://mermaid/./node_modules/d3-geo/src/bounds.js","webpack://mermaid/./node_modules/d3-geo/src/cartesian.js","webpack://mermaid/./node_modules/d3-geo/src/centroid.js","webpack://mermaid/./node_modules/d3-geo/src/circle.js","webpack://mermaid/./node_modules/d3-geo/src/clip/antimeridian.js","webpack://mermaid/./node_modules/d3-geo/src/clip/buffer.js","webpack://mermaid/./node_modules/d3-geo/src/clip/circle.js","webpack://mermaid/./node_modules/d3-geo/src/clip/extent.js","webpack://mermaid/./node_modules/d3-geo/src/clip/index.js","webpack://mermaid/./node_modules/d3-geo/src/clip/line.js","webpack://mermaid/./node_modules/d3-geo/src/clip/rectangle.js","webpack://mermaid/./node_modules/d3-geo/src/clip/rejoin.js","webpack://mermaid/./node_modules/d3-geo/src/compose.js","webpack://mermaid/./node_modules/d3-geo/src/constant.js","webpack://mermaid/./node_modules/d3-geo/src/contains.js","webpack://mermaid/./node_modules/d3-geo/src/distance.js","webpack://mermaid/./node_modules/d3-geo/src/graticule.js","webpack://mermaid/./node_modules/d3-geo/src/identity.js","webpack://mermaid/./node_modules/d3-geo/src/index.js","webpack://mermaid/./node_modules/d3-geo/src/interpolate.js","webpack://mermaid/./node_modules/d3-geo/src/length.js","webpack://mermaid/./node_modules/d3-geo/src/math.js","webpack://mermaid/./node_modules/d3-geo/src/noop.js","webpack://mermaid/./node_modules/d3-geo/src/path/area.js","webpack://mermaid/./node_modules/d3-geo/src/path/bounds.js","webpack://mermaid/./node_modules/d3-geo/src/path/centroid.js","webpack://mermaid/./node_modules/d3-geo/src/path/context.js","webpack://mermaid/./node_modules/d3-geo/src/path/index.js","webpack://mermaid/./node_modules/d3-geo/src/path/measure.js","webpack://mermaid/./node_modules/d3-geo/src/path/string.js","webpack://mermaid/./node_modules/d3-geo/src/pointEqual.js","webpack://mermaid/./node_modules/d3-geo/src/polygonContains.js","webpack://mermaid/./node_modules/d3-geo/src/projection/albers.js","webpack://mermaid/./node_modules/d3-geo/src/projection/albersUsa.js","webpack://mermaid/./node_modules/d3-geo/src/projection/azimuthal.js","webpack://mermaid/./node_modules/d3-geo/src/projection/azimuthalEqualArea.js","webpack://mermaid/./node_modules/d3-geo/src/projection/azimuthalEquidistant.js","webpack://mermaid/./node_modules/d3-geo/src/projection/conic.js","webpack://mermaid/./node_modules/d3-geo/src/projection/conicConformal.js","webpack://mermaid/./node_modules/d3-geo/src/projection/conicEqualArea.js","webpack://mermaid/./node_modules/d3-geo/src/projection/conicEquidistant.js","webpack://mermaid/./node_modules/d3-geo/src/projection/cylindricalEqualArea.js","webpack://mermaid/./node_modules/d3-geo/src/projection/equalEarth.js","webpack://mermaid/./node_modules/d3-geo/src/projection/equirectangular.js","webpack://mermaid/./node_modules/d3-geo/src/projection/fit.js","webpack://mermaid/./node_modules/d3-geo/src/projection/gnomonic.js","webpack://mermaid/./node_modules/d3-geo/src/projection/identity.js","webpack://mermaid/./node_modules/d3-geo/src/projection/index.js","webpack://mermaid/./node_modules/d3-geo/src/projection/mercator.js","webpack://mermaid/./node_modules/d3-geo/src/projection/naturalEarth1.js","webpack://mermaid/./node_modules/d3-geo/src/projection/orthographic.js","webpack://mermaid/./node_modules/d3-geo/src/projection/resample.js","webpack://mermaid/./node_modules/d3-geo/src/projection/stereographic.js","webpack://mermaid/./node_modules/d3-geo/src/projection/transverseMercator.js","webpack://mermaid/./node_modules/d3-geo/src/rotation.js","webpack://mermaid/./node_modules/d3-geo/src/stream.js","webpack://mermaid/./node_modules/d3-geo/src/transform.js","webpack://mermaid/./node_modules/d3-hierarchy/src/accessors.js","webpack://mermaid/./node_modules/d3-hierarchy/src/array.js","webpack://mermaid/./node_modules/d3-hierarchy/src/cluster.js","webpack://mermaid/./node_modules/d3-hierarchy/src/constant.js","webpack://mermaid/./node_modules/d3-hierarchy/src/hierarchy/ancestors.js","webpack://mermaid/./node_modules/d3-hierarchy/src/hierarchy/count.js","webpack://mermaid/./node_modules/d3-hierarchy/src/hierarchy/descendants.js","webpack://mermaid/./node_modules/d3-hierarchy/src/hierarchy/each.js","webpack://mermaid/./node_modules/d3-hierarchy/src/hierarchy/eachAfter.js","webpack://mermaid/./node_modules/d3-hierarchy/src/hierarchy/eachBefore.js","webpack://mermaid/./node_modules/d3-hierarchy/src/hierarchy/index.js","webpack://mermaid/./node_modules/d3-hierarchy/src/hierarchy/leaves.js","webpack://mermaid/./node_modules/d3-hierarchy/src/hierarchy/links.js","webpack://mermaid/./node_modules/d3-hierarchy/src/hierarchy/path.js","webpack://mermaid/./node_modules/d3-hierarchy/src/hierarchy/sort.js","webpack://mermaid/./node_modules/d3-hierarchy/src/hierarchy/sum.js","webpack://mermaid/./node_modules/d3-hierarchy/src/index.js","webpack://mermaid/./node_modules/d3-hierarchy/src/pack/enclose.js","webpack://mermaid/./node_modules/d3-hierarchy/src/pack/index.js","webpack://mermaid/./node_modules/d3-hierarchy/src/pack/siblings.js","webpack://mermaid/./node_modules/d3-hierarchy/src/partition.js","webpack://mermaid/./node_modules/d3-hierarchy/src/stratify.js","webpack://mermaid/./node_modules/d3-hierarchy/src/tree.js","webpack://mermaid/./node_modules/d3-hierarchy/src/treemap/binary.js","webpack://mermaid/./node_modules/d3-hierarchy/src/treemap/dice.js","webpack://mermaid/./node_modules/d3-hierarchy/src/treemap/index.js","webpack://mermaid/./node_modules/d3-hierarchy/src/treemap/resquarify.js","webpack://mermaid/./node_modules/d3-hierarchy/src/treemap/round.js","webpack://mermaid/./node_modules/d3-hierarchy/src/treemap/slice.js","webpack://mermaid/./node_modules/d3-hierarchy/src/treemap/sliceDice.js","webpack://mermaid/./node_modules/d3-hierarchy/src/treemap/squarify.js","webpack://mermaid/./node_modules/d3-interpolate/src/array.js","webpack://mermaid/./node_modules/d3-interpolate/src/basis.js","webpack://mermaid/./node_modules/d3-interpolate/src/basisClosed.js","webpack://mermaid/./node_modules/d3-interpolate/src/color.js","webpack://mermaid/./node_modules/d3-interpolate/src/constant.js","webpack://mermaid/./node_modules/d3-interpolate/src/cubehelix.js","webpack://mermaid/./node_modules/d3-interpolate/src/date.js","webpack://mermaid/./node_modules/d3-interpolate/src/discrete.js","webpack://mermaid/./node_modules/d3-interpolate/src/hcl.js","webpack://mermaid/./node_modules/d3-interpolate/src/hsl.js","webpack://mermaid/./node_modules/d3-interpolate/src/hue.js","webpack://mermaid/./node_modules/d3-interpolate/src/index.js","webpack://mermaid/./node_modules/d3-interpolate/src/lab.js","webpack://mermaid/./node_modules/d3-interpolate/src/number.js","webpack://mermaid/./node_modules/d3-interpolate/src/numberArray.js","webpack://mermaid/./node_modules/d3-interpolate/src/object.js","webpack://mermaid/./node_modules/d3-interpolate/src/piecewise.js","webpack://mermaid/./node_modules/d3-interpolate/src/quantize.js","webpack://mermaid/./node_modules/d3-interpolate/src/rgb.js","webpack://mermaid/./node_modules/d3-interpolate/src/round.js","webpack://mermaid/./node_modules/d3-interpolate/src/string.js","webpack://mermaid/./node_modules/d3-interpolate/src/transform/decompose.js","webpack://mermaid/./node_modules/d3-interpolate/src/transform/index.js","webpack://mermaid/./node_modules/d3-interpolate/src/transform/parse.js","webpack://mermaid/./node_modules/d3-interpolate/src/value.js","webpack://mermaid/./node_modules/d3-interpolate/src/zoom.js","webpack://mermaid/./node_modules/d3-path/src/index.js","webpack://mermaid/./node_modules/d3-path/src/path.js","webpack://mermaid/./node_modules/d3-polygon/src/area.js","webpack://mermaid/./node_modules/d3-polygon/src/centroid.js","webpack://mermaid/./node_modules/d3-polygon/src/contains.js","webpack://mermaid/./node_modules/d3-polygon/src/cross.js","webpack://mermaid/./node_modules/d3-polygon/src/hull.js","webpack://mermaid/./node_modules/d3-polygon/src/index.js","webpack://mermaid/./node_modules/d3-polygon/src/length.js","webpack://mermaid/./node_modules/d3-quadtree/src/add.js","webpack://mermaid/./node_modules/d3-quadtree/src/cover.js","webpack://mermaid/./node_modules/d3-quadtree/src/data.js","webpack://mermaid/./node_modules/d3-quadtree/src/extent.js","webpack://mermaid/./node_modules/d3-quadtree/src/find.js","webpack://mermaid/./node_modules/d3-quadtree/src/index.js","webpack://mermaid/./node_modules/d3-quadtree/src/quad.js","webpack://mermaid/./node_modules/d3-quadtree/src/quadtree.js","webpack://mermaid/./node_modules/d3-quadtree/src/remove.js","webpack://mermaid/./node_modules/d3-quadtree/src/root.js","webpack://mermaid/./node_modules/d3-quadtree/src/size.js","webpack://mermaid/./node_modules/d3-quadtree/src/visit.js","webpack://mermaid/./node_modules/d3-quadtree/src/visitAfter.js","webpack://mermaid/./node_modules/d3-quadtree/src/x.js","webpack://mermaid/./node_modules/d3-quadtree/src/y.js","webpack://mermaid/./node_modules/d3-random/src/bates.js","webpack://mermaid/./node_modules/d3-random/src/defaultSource.js","webpack://mermaid/./node_modules/d3-random/src/exponential.js","webpack://mermaid/./node_modules/d3-random/src/index.js","webpack://mermaid/./node_modules/d3-random/src/irwinHall.js","webpack://mermaid/./node_modules/d3-random/src/logNormal.js","webpack://mermaid/./node_modules/d3-random/src/normal.js","webpack://mermaid/./node_modules/d3-random/src/uniform.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/categorical/Accent.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/categorical/Dark2.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/categorical/Paired.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/categorical/Pastel1.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/categorical/Pastel2.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/categorical/Set1.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/categorical/Set2.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/categorical/Set3.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/categorical/Tableau10.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/categorical/category10.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/colors.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/diverging/BrBG.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/diverging/PRGn.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/diverging/PiYG.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/diverging/PuOr.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/diverging/RdBu.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/diverging/RdGy.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/diverging/RdYlBu.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/diverging/RdYlGn.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/diverging/Spectral.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/index.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/ramp.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/sequential-multi/BuGn.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/sequential-multi/BuPu.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/sequential-multi/GnBu.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/sequential-multi/OrRd.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/sequential-multi/PuBu.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/sequential-multi/PuBuGn.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/sequential-multi/PuRd.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/sequential-multi/RdPu.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/sequential-multi/YlGn.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/sequential-multi/YlGnBu.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/sequential-multi/YlOrBr.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/sequential-multi/YlOrRd.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/sequential-multi/cividis.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/sequential-multi/cubehelix.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/sequential-multi/rainbow.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/sequential-multi/sinebow.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/sequential-multi/turbo.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/sequential-multi/viridis.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/sequential-single/Blues.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/sequential-single/Greens.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/sequential-single/Greys.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/sequential-single/Oranges.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/sequential-single/Purples.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/sequential-single/Reds.js","webpack://mermaid/./node_modules/d3-scale/src/array.js","webpack://mermaid/./node_modules/d3-scale/src/band.js","webpack://mermaid/./node_modules/d3-scale/src/constant.js","webpack://mermaid/./node_modules/d3-scale/src/continuous.js","webpack://mermaid/./node_modules/d3-scale/src/diverging.js","webpack://mermaid/./node_modules/d3-scale/src/identity.js","webpack://mermaid/./node_modules/d3-scale/src/index.js","webpack://mermaid/./node_modules/d3-scale/src/init.js","webpack://mermaid/./node_modules/d3-scale/src/linear.js","webpack://mermaid/./node_modules/d3-scale/src/log.js","webpack://mermaid/./node_modules/d3-scale/src/nice.js","webpack://mermaid/./node_modules/d3-scale/src/number.js","webpack://mermaid/./node_modules/d3-scale/src/ordinal.js","webpack://mermaid/./node_modules/d3-scale/src/pow.js","webpack://mermaid/./node_modules/d3-scale/src/quantile.js","webpack://mermaid/./node_modules/d3-scale/src/quantize.js","webpack://mermaid/./node_modules/d3-scale/src/sequential.js","webpack://mermaid/./node_modules/d3-scale/src/sequentialQuantile.js","webpack://mermaid/./node_modules/d3-scale/src/symlog.js","webpack://mermaid/./node_modules/d3-scale/src/threshold.js","webpack://mermaid/./node_modules/d3-scale/src/tickFormat.js","webpack://mermaid/./node_modules/d3-scale/src/time.js","webpack://mermaid/./node_modules/d3-scale/src/utcTime.js","webpack://mermaid/./node_modules/d3-selection/src/constant.js","webpack://mermaid/./node_modules/d3-selection/src/create.js","webpack://mermaid/./node_modules/d3-selection/src/creator.js","webpack://mermaid/./node_modules/d3-selection/src/index.js","webpack://mermaid/./node_modules/d3-selection/src/local.js","webpack://mermaid/./node_modules/d3-selection/src/matcher.js","webpack://mermaid/./node_modules/d3-selection/src/mouse.js","webpack://mermaid/./node_modules/d3-selection/src/namespace.js","webpack://mermaid/./node_modules/d3-selection/src/namespaces.js","webpack://mermaid/./node_modules/d3-selection/src/point.js","webpack://mermaid/./node_modules/d3-selection/src/select.js","webpack://mermaid/./node_modules/d3-selection/src/selectAll.js","webpack://mermaid/./node_modules/d3-selection/src/selection/append.js","webpack://mermaid/./node_modules/d3-selection/src/selection/attr.js","webpack://mermaid/./node_modules/d3-selection/src/selection/call.js","webpack://mermaid/./node_modules/d3-selection/src/selection/classed.js","webpack://mermaid/./node_modules/d3-selection/src/selection/clone.js","webpack://mermaid/./node_modules/d3-selection/src/selection/data.js","webpack://mermaid/./node_modules/d3-selection/src/selection/datum.js","webpack://mermaid/./node_modules/d3-selection/src/selection/dispatch.js","webpack://mermaid/./node_modules/d3-selection/src/selection/each.js","webpack://mermaid/./node_modules/d3-selection/src/selection/empty.js","webpack://mermaid/./node_modules/d3-selection/src/selection/enter.js","webpack://mermaid/./node_modules/d3-selection/src/selection/exit.js","webpack://mermaid/./node_modules/d3-selection/src/selection/filter.js","webpack://mermaid/./node_modules/d3-selection/src/selection/html.js","webpack://mermaid/./node_modules/d3-selection/src/selection/index.js","webpack://mermaid/./node_modules/d3-selection/src/selection/insert.js","webpack://mermaid/./node_modules/d3-selection/src/selection/join.js","webpack://mermaid/./node_modules/d3-selection/src/selection/lower.js","webpack://mermaid/./node_modules/d3-selection/src/selection/merge.js","webpack://mermaid/./node_modules/d3-selection/src/selection/node.js","webpack://mermaid/./node_modules/d3-selection/src/selection/nodes.js","webpack://mermaid/./node_modules/d3-selection/src/selection/on.js","webpack://mermaid/./node_modules/d3-selection/src/selection/order.js","webpack://mermaid/./node_modules/d3-selection/src/selection/property.js","webpack://mermaid/./node_modules/d3-selection/src/selection/raise.js","webpack://mermaid/./node_modules/d3-selection/src/selection/remove.js","webpack://mermaid/./node_modules/d3-selection/src/selection/select.js","webpack://mermaid/./node_modules/d3-selection/src/selection/selectAll.js","webpack://mermaid/./node_modules/d3-selection/src/selection/size.js","webpack://mermaid/./node_modules/d3-selection/src/selection/sort.js","webpack://mermaid/./node_modules/d3-selection/src/selection/sparse.js","webpack://mermaid/./node_modules/d3-selection/src/selection/style.js","webpack://mermaid/./node_modules/d3-selection/src/selection/text.js","webpack://mermaid/./node_modules/d3-selection/src/selector.js","webpack://mermaid/./node_modules/d3-selection/src/selectorAll.js","webpack://mermaid/./node_modules/d3-selection/src/sourceEvent.js","webpack://mermaid/./node_modules/d3-selection/src/touch.js","webpack://mermaid/./node_modules/d3-selection/src/touches.js","webpack://mermaid/./node_modules/d3-selection/src/window.js","webpack://mermaid/./node_modules/d3-shape/src/arc.js","webpack://mermaid/./node_modules/d3-shape/src/area.js","webpack://mermaid/./node_modules/d3-shape/src/areaRadial.js","webpack://mermaid/./node_modules/d3-shape/src/array.js","webpack://mermaid/./node_modules/d3-shape/src/constant.js","webpack://mermaid/./node_modules/d3-shape/src/curve/basis.js","webpack://mermaid/./node_modules/d3-shape/src/curve/basisClosed.js","webpack://mermaid/./node_modules/d3-shape/src/curve/basisOpen.js","webpack://mermaid/./node_modules/d3-shape/src/curve/bundle.js","webpack://mermaid/./node_modules/d3-shape/src/curve/cardinal.js","webpack://mermaid/./node_modules/d3-shape/src/curve/cardinalClosed.js","webpack://mermaid/./node_modules/d3-shape/src/curve/cardinalOpen.js","webpack://mermaid/./node_modules/d3-shape/src/curve/catmullRom.js","webpack://mermaid/./node_modules/d3-shape/src/curve/catmullRomClosed.js","webpack://mermaid/./node_modules/d3-shape/src/curve/catmullRomOpen.js","webpack://mermaid/./node_modules/d3-shape/src/curve/linear.js","webpack://mermaid/./node_modules/d3-shape/src/curve/linearClosed.js","webpack://mermaid/./node_modules/d3-shape/src/curve/monotone.js","webpack://mermaid/./node_modules/d3-shape/src/curve/natural.js","webpack://mermaid/./node_modules/d3-shape/src/curve/radial.js","webpack://mermaid/./node_modules/d3-shape/src/curve/step.js","webpack://mermaid/./node_modules/d3-shape/src/descending.js","webpack://mermaid/./node_modules/d3-shape/src/identity.js","webpack://mermaid/./node_modules/d3-shape/src/index.js","webpack://mermaid/./node_modules/d3-shape/src/line.js","webpack://mermaid/./node_modules/d3-shape/src/lineRadial.js","webpack://mermaid/./node_modules/d3-shape/src/link/index.js","webpack://mermaid/./node_modules/d3-shape/src/math.js","webpack://mermaid/./node_modules/d3-shape/src/noop.js","webpack://mermaid/./node_modules/d3-shape/src/offset/diverging.js","webpack://mermaid/./node_modules/d3-shape/src/offset/expand.js","webpack://mermaid/./node_modules/d3-shape/src/offset/none.js","webpack://mermaid/./node_modules/d3-shape/src/offset/silhouette.js","webpack://mermaid/./node_modules/d3-shape/src/offset/wiggle.js","webpack://mermaid/./node_modules/d3-shape/src/order/appearance.js","webpack://mermaid/./node_modules/d3-shape/src/order/ascending.js","webpack://mermaid/./node_modules/d3-shape/src/order/descending.js","webpack://mermaid/./node_modules/d3-shape/src/order/insideOut.js","webpack://mermaid/./node_modules/d3-shape/src/order/none.js","webpack://mermaid/./node_modules/d3-shape/src/order/reverse.js","webpack://mermaid/./node_modules/d3-shape/src/pie.js","webpack://mermaid/./node_modules/d3-shape/src/point.js","webpack://mermaid/./node_modules/d3-shape/src/pointRadial.js","webpack://mermaid/./node_modules/d3-shape/src/stack.js","webpack://mermaid/./node_modules/d3-shape/src/symbol.js","webpack://mermaid/./node_modules/d3-shape/src/symbol/circle.js","webpack://mermaid/./node_modules/d3-shape/src/symbol/cross.js","webpack://mermaid/./node_modules/d3-shape/src/symbol/diamond.js","webpack://mermaid/./node_modules/d3-shape/src/symbol/square.js","webpack://mermaid/./node_modules/d3-shape/src/symbol/star.js","webpack://mermaid/./node_modules/d3-shape/src/symbol/triangle.js","webpack://mermaid/./node_modules/d3-shape/src/symbol/wye.js","webpack://mermaid/./node_modules/d3-time-format/src/defaultLocale.js","webpack://mermaid/./node_modules/d3-time-format/src/index.js","webpack://mermaid/./node_modules/d3-time-format/src/isoFormat.js","webpack://mermaid/./node_modules/d3-time-format/src/isoParse.js","webpack://mermaid/./node_modules/d3-time-format/src/locale.js","webpack://mermaid/./node_modules/d3-time/src/day.js","webpack://mermaid/./node_modules/d3-time/src/duration.js","webpack://mermaid/./node_modules/d3-time/src/hour.js","webpack://mermaid/./node_modules/d3-time/src/index.js","webpack://mermaid/./node_modules/d3-time/src/interval.js","webpack://mermaid/./node_modules/d3-time/src/millisecond.js","webpack://mermaid/./node_modules/d3-time/src/minute.js","webpack://mermaid/./node_modules/d3-time/src/month.js","webpack://mermaid/./node_modules/d3-time/src/second.js","webpack://mermaid/./node_modules/d3-time/src/utcDay.js","webpack://mermaid/./node_modules/d3-time/src/utcHour.js","webpack://mermaid/./node_modules/d3-time/src/utcMinute.js","webpack://mermaid/./node_modules/d3-time/src/utcMonth.js","webpack://mermaid/./node_modules/d3-time/src/utcWeek.js","webpack://mermaid/./node_modules/d3-time/src/utcYear.js","webpack://mermaid/./node_modules/d3-time/src/week.js","webpack://mermaid/./node_modules/d3-time/src/year.js","webpack://mermaid/./node_modules/d3-timer/src/index.js","webpack://mermaid/./node_modules/d3-timer/src/interval.js","webpack://mermaid/./node_modules/d3-timer/src/timeout.js","webpack://mermaid/./node_modules/d3-timer/src/timer.js","webpack://mermaid/./node_modules/d3-transition/src/active.js","webpack://mermaid/./node_modules/d3-transition/src/index.js","webpack://mermaid/./node_modules/d3-transition/src/interrupt.js","webpack://mermaid/./node_modules/d3-transition/src/selection/index.js","webpack://mermaid/./node_modules/d3-transition/src/selection/interrupt.js","webpack://mermaid/./node_modules/d3-transition/src/selection/transition.js","webpack://mermaid/./node_modules/d3-transition/src/transition/attr.js","webpack://mermaid/./node_modules/d3-transition/src/transition/attrTween.js","webpack://mermaid/./node_modules/d3-transition/src/transition/delay.js","webpack://mermaid/./node_modules/d3-transition/src/transition/duration.js","webpack://mermaid/./node_modules/d3-transition/src/transition/ease.js","webpack://mermaid/./node_modules/d3-transition/src/transition/end.js","webpack://mermaid/./node_modules/d3-transition/src/transition/filter.js","webpack://mermaid/./node_modules/d3-transition/src/transition/index.js","webpack://mermaid/./node_modules/d3-transition/src/transition/interpolate.js","webpack://mermaid/./node_modules/d3-transition/src/transition/merge.js","webpack://mermaid/./node_modules/d3-transition/src/transition/on.js","webpack://mermaid/./node_modules/d3-transition/src/transition/remove.js","webpack://mermaid/./node_modules/d3-transition/src/transition/schedule.js","webpack://mermaid/./node_modules/d3-transition/src/transition/select.js","webpack://mermaid/./node_modules/d3-transition/src/transition/selectAll.js","webpack://mermaid/./node_modules/d3-transition/src/transition/selection.js","webpack://mermaid/./node_modules/d3-transition/src/transition/style.js","webpack://mermaid/./node_modules/d3-transition/src/transition/styleTween.js","webpack://mermaid/./node_modules/d3-transition/src/transition/text.js","webpack://mermaid/./node_modules/d3-transition/src/transition/textTween.js","webpack://mermaid/./node_modules/d3-transition/src/transition/transition.js","webpack://mermaid/./node_modules/d3-transition/src/transition/tween.js","webpack://mermaid/./node_modules/d3-voronoi/src/Beach.js","webpack://mermaid/./node_modules/d3-voronoi/src/Cell.js","webpack://mermaid/./node_modules/d3-voronoi/src/Circle.js","webpack://mermaid/./node_modules/d3-voronoi/src/Diagram.js","webpack://mermaid/./node_modules/d3-voronoi/src/Edge.js","webpack://mermaid/./node_modules/d3-voronoi/src/RedBlackTree.js","webpack://mermaid/./node_modules/d3-voronoi/src/constant.js","webpack://mermaid/./node_modules/d3-voronoi/src/index.js","webpack://mermaid/./node_modules/d3-voronoi/src/point.js","webpack://mermaid/./node_modules/d3-voronoi/src/voronoi.js","webpack://mermaid/./node_modules/d3-zoom/src/constant.js","webpack://mermaid/./node_modules/d3-zoom/src/event.js","webpack://mermaid/./node_modules/d3-zoom/src/index.js","webpack://mermaid/./node_modules/d3-zoom/src/noevent.js","webpack://mermaid/./node_modules/d3-zoom/src/transform.js","webpack://mermaid/./node_modules/d3-zoom/src/zoom.js","webpack://mermaid/./node_modules/d3/dist/package.js","webpack://mermaid/./node_modules/d3/index.js","webpack://mermaid/./node_modules/dagre-d3/index.js","webpack://mermaid/./node_modules/dagre-d3/lib/arrows.js","webpack://mermaid/./node_modules/dagre-d3/lib/create-clusters.js","webpack://mermaid/./node_modules/dagre-d3/lib/create-edge-labels.js","webpack://mermaid/./node_modules/dagre-d3/lib/create-edge-paths.js","webpack://mermaid/./node_modules/dagre-d3/lib/create-nodes.js","webpack://mermaid/./node_modules/dagre-d3/lib/d3.js","webpack://mermaid/./node_modules/dagre-d3/lib/dagre.js","webpack://mermaid/./node_modules/dagre-d3/lib/graphlib.js","webpack://mermaid/./node_modules/dagre-d3/lib/intersect/index.js","webpack://mermaid/./node_modules/dagre-d3/lib/intersect/intersect-circle.js","webpack://mermaid/./node_modules/dagre-d3/lib/intersect/intersect-ellipse.js","webpack://mermaid/./node_modules/dagre-d3/lib/intersect/intersect-line.js","webpack://mermaid/./node_modules/dagre-d3/lib/intersect/intersect-node.js","webpack://mermaid/./node_modules/dagre-d3/lib/intersect/intersect-polygon.js","webpack://mermaid/./node_modules/dagre-d3/lib/intersect/intersect-rect.js","webpack://mermaid/./node_modules/dagre-d3/lib/label/add-html-label.js","webpack://mermaid/./node_modules/dagre-d3/lib/label/add-label.js","webpack://mermaid/./node_modules/dagre-d3/lib/label/add-svg-label.js","webpack://mermaid/./node_modules/dagre-d3/lib/label/add-text-label.js","webpack://mermaid/./node_modules/dagre-d3/lib/lodash.js","webpack://mermaid/./node_modules/dagre-d3/lib/position-clusters.js","webpack://mermaid/./node_modules/dagre-d3/lib/position-edge-labels.js","webpack://mermaid/./node_modules/dagre-d3/lib/position-nodes.js","webpack://mermaid/./node_modules/dagre-d3/lib/render.js","webpack://mermaid/./node_modules/dagre-d3/lib/shapes.js","webpack://mermaid/./node_modules/dagre-d3/lib/util.js","webpack://mermaid/./node_modules/dagre-d3/lib/version.js","webpack://mermaid/./node_modules/dagre/index.js","webpack://mermaid/./node_modules/dagre/lib/acyclic.js","webpack://mermaid/./node_modules/dagre/lib/add-border-segments.js","webpack://mermaid/./node_modules/dagre/lib/coordinate-system.js","webpack://mermaid/./node_modules/dagre/lib/data/list.js","webpack://mermaid/./node_modules/dagre/lib/debug.js","webpack://mermaid/./node_modules/dagre/lib/graphlib.js","webpack://mermaid/./node_modules/dagre/lib/greedy-fas.js","webpack://mermaid/./node_modules/dagre/lib/layout.js","webpack://mermaid/./node_modules/dagre/lib/lodash.js","webpack://mermaid/./node_modules/dagre/lib/nesting-graph.js","webpack://mermaid/./node_modules/dagre/lib/normalize.js","webpack://mermaid/./node_modules/dagre/lib/order/add-subgraph-constraints.js","webpack://mermaid/./node_modules/dagre/lib/order/barycenter.js","webpack://mermaid/./node_modules/dagre/lib/order/build-layer-graph.js","webpack://mermaid/./node_modules/dagre/lib/order/cross-count.js","webpack://mermaid/./node_modules/dagre/lib/order/index.js","webpack://mermaid/./node_modules/dagre/lib/order/init-order.js","webpack://mermaid/./node_modules/dagre/lib/order/resolve-conflicts.js","webpack://mermaid/./node_modules/dagre/lib/order/sort-subgraph.js","webpack://mermaid/./node_modules/dagre/lib/order/sort.js","webpack://mermaid/./node_modules/dagre/lib/parent-dummy-chains.js","webpack://mermaid/./node_modules/dagre/lib/position/bk.js","webpack://mermaid/./node_modules/dagre/lib/position/index.js","webpack://mermaid/./node_modules/dagre/lib/rank/feasible-tree.js","webpack://mermaid/./node_modules/dagre/lib/rank/index.js","webpack://mermaid/./node_modules/dagre/lib/rank/network-simplex.js","webpack://mermaid/./node_modules/dagre/lib/rank/util.js","webpack://mermaid/./node_modules/dagre/lib/util.js","webpack://mermaid/./node_modules/dagre/lib/version.js","webpack://mermaid/./node_modules/entity-decode/browser.js","webpack://mermaid/./node_modules/graphlib/index.js","webpack://mermaid/./node_modules/graphlib/lib/alg/components.js","webpack://mermaid/./node_modules/graphlib/lib/alg/dfs.js","webpack://mermaid/./node_modules/graphlib/lib/alg/dijkstra-all.js","webpack://mermaid/./node_modules/graphlib/lib/alg/dijkstra.js","webpack://mermaid/./node_modules/graphlib/lib/alg/find-cycles.js","webpack://mermaid/./node_modules/graphlib/lib/alg/floyd-warshall.js","webpack://mermaid/./node_modules/graphlib/lib/alg/index.js","webpack://mermaid/./node_modules/graphlib/lib/alg/is-acyclic.js","webpack://mermaid/./node_modules/graphlib/lib/alg/postorder.js","webpack://mermaid/./node_modules/graphlib/lib/alg/preorder.js","webpack://mermaid/./node_modules/graphlib/lib/alg/prim.js","webpack://mermaid/./node_modules/graphlib/lib/alg/tarjan.js","webpack://mermaid/./node_modules/graphlib/lib/alg/topsort.js","webpack://mermaid/./node_modules/graphlib/lib/data/priority-queue.js","webpack://mermaid/./node_modules/graphlib/lib/graph.js","webpack://mermaid/./node_modules/graphlib/lib/index.js","webpack://mermaid/./node_modules/graphlib/lib/json.js","webpack://mermaid/./node_modules/graphlib/lib/lodash.js","webpack://mermaid/./node_modules/graphlib/lib/version.js","webpack://mermaid/./node_modules/khroma/dist/channels/index.js","webpack://mermaid/./node_modules/khroma/dist/channels/reusable.js","webpack://mermaid/./node_modules/khroma/dist/channels/type.js","webpack://mermaid/./node_modules/khroma/dist/color/hex.js","webpack://mermaid/./node_modules/khroma/dist/color/hsl.js","webpack://mermaid/./node_modules/khroma/dist/color/index.js","webpack://mermaid/./node_modules/khroma/dist/color/keyword.js","webpack://mermaid/./node_modules/khroma/dist/color/rgb.js","webpack://mermaid/./node_modules/khroma/dist/consts.js","webpack://mermaid/./node_modules/khroma/dist/index.js","webpack://mermaid/./node_modules/khroma/dist/methods/adjust.js","webpack://mermaid/./node_modules/khroma/dist/methods/adjust_channel.js","webpack://mermaid/./node_modules/khroma/dist/methods/alpha.js","webpack://mermaid/./node_modules/khroma/dist/methods/blue.js","webpack://mermaid/./node_modules/khroma/dist/methods/change.js","webpack://mermaid/./node_modules/khroma/dist/methods/channel.js","webpack://mermaid/./node_modules/khroma/dist/methods/complement.js","webpack://mermaid/./node_modules/khroma/dist/methods/darken.js","webpack://mermaid/./node_modules/khroma/dist/methods/desaturate.js","webpack://mermaid/./node_modules/khroma/dist/methods/grayscale.js","webpack://mermaid/./node_modules/khroma/dist/methods/green.js","webpack://mermaid/./node_modules/khroma/dist/methods/hsla.js","webpack://mermaid/./node_modules/khroma/dist/methods/hue.js","webpack://mermaid/./node_modules/khroma/dist/methods/index.js","webpack://mermaid/./node_modules/khroma/dist/methods/invert.js","webpack://mermaid/./node_modules/khroma/dist/methods/is_dark.js","webpack://mermaid/./node_modules/khroma/dist/methods/is_light.js","webpack://mermaid/./node_modules/khroma/dist/methods/is_valid.js","webpack://mermaid/./node_modules/khroma/dist/methods/lighten.js","webpack://mermaid/./node_modules/khroma/dist/methods/lightness.js","webpack://mermaid/./node_modules/khroma/dist/methods/luminance.js","webpack://mermaid/./node_modules/khroma/dist/methods/mix.js","webpack://mermaid/./node_modules/khroma/dist/methods/opacify.js","webpack://mermaid/./node_modules/khroma/dist/methods/red.js","webpack://mermaid/./node_modules/khroma/dist/methods/rgba.js","webpack://mermaid/./node_modules/khroma/dist/methods/saturate.js","webpack://mermaid/./node_modules/khroma/dist/methods/saturation.js","webpack://mermaid/./node_modules/khroma/dist/methods/scale.js","webpack://mermaid/./node_modules/khroma/dist/methods/transparentize.js","webpack://mermaid/./node_modules/khroma/dist/types.js","webpack://mermaid/./node_modules/khroma/dist/utils/channel.js","webpack://mermaid/./node_modules/khroma/dist/utils/index.js","webpack://mermaid/./node_modules/khroma/dist/utils/lang.js","webpack://mermaid/./node_modules/khroma/dist/utils/unit.js","webpack://mermaid/./node_modules/lodash/_DataView.js","webpack://mermaid/./node_modules/lodash/_Hash.js","webpack://mermaid/./node_modules/lodash/_ListCache.js","webpack://mermaid/./node_modules/lodash/_Map.js","webpack://mermaid/./node_modules/lodash/_MapCache.js","webpack://mermaid/./node_modules/lodash/_Promise.js","webpack://mermaid/./node_modules/lodash/_Set.js","webpack://mermaid/./node_modules/lodash/_SetCache.js","webpack://mermaid/./node_modules/lodash/_Stack.js","webpack://mermaid/./node_modules/lodash/_Symbol.js","webpack://mermaid/./node_modules/lodash/_Uint8Array.js","webpack://mermaid/./node_modules/lodash/_WeakMap.js","webpack://mermaid/./node_modules/lodash/_apply.js","webpack://mermaid/./node_modules/lodash/_arrayEach.js","webpack://mermaid/./node_modules/lodash/_arrayFilter.js","webpack://mermaid/./node_modules/lodash/_arrayIncludes.js","webpack://mermaid/./node_modules/lodash/_arrayIncludesWith.js","webpack://mermaid/./node_modules/lodash/_arrayLikeKeys.js","webpack://mermaid/./node_modules/lodash/_arrayMap.js","webpack://mermaid/./node_modules/lodash/_arrayPush.js","webpack://mermaid/./node_modules/lodash/_arrayReduce.js","webpack://mermaid/./node_modules/lodash/_arraySome.js","webpack://mermaid/./node_modules/lodash/_asciiSize.js","webpack://mermaid/./node_modules/lodash/_assignMergeValue.js","webpack://mermaid/./node_modules/lodash/_assignValue.js","webpack://mermaid/./node_modules/lodash/_assocIndexOf.js","webpack://mermaid/./node_modules/lodash/_baseAssign.js","webpack://mermaid/./node_modules/lodash/_baseAssignIn.js","webpack://mermaid/./node_modules/lodash/_baseAssignValue.js","webpack://mermaid/./node_modules/lodash/_baseClone.js","webpack://mermaid/./node_modules/lodash/_baseCreate.js","webpack://mermaid/./node_modules/lodash/_baseEach.js","webpack://mermaid/./node_modules/lodash/_baseExtremum.js","webpack://mermaid/./node_modules/lodash/_baseFilter.js","webpack://mermaid/./node_modules/lodash/_baseFindIndex.js","webpack://mermaid/./node_modules/lodash/_baseFlatten.js","webpack://mermaid/./node_modules/lodash/_baseFor.js","webpack://mermaid/./node_modules/lodash/_baseForOwn.js","webpack://mermaid/./node_modules/lodash/_baseGet.js","webpack://mermaid/./node_modules/lodash/_baseGetAllKeys.js","webpack://mermaid/./node_modules/lodash/_baseGetTag.js","webpack://mermaid/./node_modules/lodash/_baseGt.js","webpack://mermaid/./node_modules/lodash/_baseHas.js","webpack://mermaid/./node_modules/lodash/_baseHasIn.js","webpack://mermaid/./node_modules/lodash/_baseIndexOf.js","webpack://mermaid/./node_modules/lodash/_baseIsArguments.js","webpack://mermaid/./node_modules/lodash/_baseIsEqual.js","webpack://mermaid/./node_modules/lodash/_baseIsEqualDeep.js","webpack://mermaid/./node_modules/lodash/_baseIsMap.js","webpack://mermaid/./node_modules/lodash/_baseIsMatch.js","webpack://mermaid/./node_modules/lodash/_baseIsNaN.js","webpack://mermaid/./node_modules/lodash/_baseIsNative.js","webpack://mermaid/./node_modules/lodash/_baseIsSet.js","webpack://mermaid/./node_modules/lodash/_baseIsTypedArray.js","webpack://mermaid/./node_modules/lodash/_baseIteratee.js","webpack://mermaid/./node_modules/lodash/_baseKeys.js","webpack://mermaid/./node_modules/lodash/_baseKeysIn.js","webpack://mermaid/./node_modules/lodash/_baseLt.js","webpack://mermaid/./node_modules/lodash/_baseMap.js","webpack://mermaid/./node_modules/lodash/_baseMatches.js","webpack://mermaid/./node_modules/lodash/_baseMatchesProperty.js","webpack://mermaid/./node_modules/lodash/_baseMerge.js","webpack://mermaid/./node_modules/lodash/_baseMergeDeep.js","webpack://mermaid/./node_modules/lodash/_baseOrderBy.js","webpack://mermaid/./node_modules/lodash/_basePick.js","webpack://mermaid/./node_modules/lodash/_basePickBy.js","webpack://mermaid/./node_modules/lodash/_baseProperty.js","webpack://mermaid/./node_modules/lodash/_basePropertyDeep.js","webpack://mermaid/./node_modules/lodash/_baseRange.js","webpack://mermaid/./node_modules/lodash/_baseReduce.js","webpack://mermaid/./node_modules/lodash/_baseRest.js","webpack://mermaid/./node_modules/lodash/_baseSet.js","webpack://mermaid/./node_modules/lodash/_baseSetToString.js","webpack://mermaid/./node_modules/lodash/_baseSortBy.js","webpack://mermaid/./node_modules/lodash/_baseTimes.js","webpack://mermaid/./node_modules/lodash/_baseToString.js","webpack://mermaid/./node_modules/lodash/_baseUnary.js","webpack://mermaid/./node_modules/lodash/_baseUniq.js","webpack://mermaid/./node_modules/lodash/_baseValues.js","webpack://mermaid/./node_modules/lodash/_baseZipObject.js","webpack://mermaid/./node_modules/lodash/_cacheHas.js","webpack://mermaid/./node_modules/lodash/_castFunction.js","webpack://mermaid/./node_modules/lodash/_castPath.js","webpack://mermaid/./node_modules/lodash/_cloneArrayBuffer.js","webpack://mermaid/./node_modules/lodash/_cloneBuffer.js","webpack://mermaid/./node_modules/lodash/_cloneDataView.js","webpack://mermaid/./node_modules/lodash/_cloneRegExp.js","webpack://mermaid/./node_modules/lodash/_cloneSymbol.js","webpack://mermaid/./node_modules/lodash/_cloneTypedArray.js","webpack://mermaid/./node_modules/lodash/_compareAscending.js","webpack://mermaid/./node_modules/lodash/_compareMultiple.js","webpack://mermaid/./node_modules/lodash/_copyArray.js","webpack://mermaid/./node_modules/lodash/_copyObject.js","webpack://mermaid/./node_modules/lodash/_copySymbols.js","webpack://mermaid/./node_modules/lodash/_copySymbolsIn.js","webpack://mermaid/./node_modules/lodash/_coreJsData.js","webpack://mermaid/./node_modules/lodash/_createAssigner.js","webpack://mermaid/./node_modules/lodash/_createBaseEach.js","webpack://mermaid/./node_modules/lodash/_createBaseFor.js","webpack://mermaid/./node_modules/lodash/_createFind.js","webpack://mermaid/./node_modules/lodash/_createRange.js","webpack://mermaid/./node_modules/lodash/_createSet.js","webpack://mermaid/./node_modules/lodash/_defineProperty.js","webpack://mermaid/./node_modules/lodash/_equalArrays.js","webpack://mermaid/./node_modules/lodash/_equalByTag.js","webpack://mermaid/./node_modules/lodash/_equalObjects.js","webpack://mermaid/./node_modules/lodash/_flatRest.js","webpack://mermaid/./node_modules/lodash/_freeGlobal.js","webpack://mermaid/./node_modules/lodash/_getAllKeys.js","webpack://mermaid/./node_modules/lodash/_getAllKeysIn.js","webpack://mermaid/./node_modules/lodash/_getMapData.js","webpack://mermaid/./node_modules/lodash/_getMatchData.js","webpack://mermaid/./node_modules/lodash/_getNative.js","webpack://mermaid/./node_modules/lodash/_getPrototype.js","webpack://mermaid/./node_modules/lodash/_getRawTag.js","webpack://mermaid/./node_modules/lodash/_getSymbols.js","webpack://mermaid/./node_modules/lodash/_getSymbolsIn.js","webpack://mermaid/./node_modules/lodash/_getTag.js","webpack://mermaid/./node_modules/lodash/_getValue.js","webpack://mermaid/./node_modules/lodash/_hasPath.js","webpack://mermaid/./node_modules/lodash/_hasUnicode.js","webpack://mermaid/./node_modules/lodash/_hashClear.js","webpack://mermaid/./node_modules/lodash/_hashDelete.js","webpack://mermaid/./node_modules/lodash/_hashGet.js","webpack://mermaid/./node_modules/lodash/_hashHas.js","webpack://mermaid/./node_modules/lodash/_hashSet.js","webpack://mermaid/./node_modules/lodash/_initCloneArray.js","webpack://mermaid/./node_modules/lodash/_initCloneByTag.js","webpack://mermaid/./node_modules/lodash/_initCloneObject.js","webpack://mermaid/./node_modules/lodash/_isFlattenable.js","webpack://mermaid/./node_modules/lodash/_isIndex.js","webpack://mermaid/./node_modules/lodash/_isIterateeCall.js","webpack://mermaid/./node_modules/lodash/_isKey.js","webpack://mermaid/./node_modules/lodash/_isKeyable.js","webpack://mermaid/./node_modules/lodash/_isMasked.js","webpack://mermaid/./node_modules/lodash/_isPrototype.js","webpack://mermaid/./node_modules/lodash/_isStrictComparable.js","webpack://mermaid/./node_modules/lodash/_listCacheClear.js","webpack://mermaid/./node_modules/lodash/_listCacheDelete.js","webpack://mermaid/./node_modules/lodash/_listCacheGet.js","webpack://mermaid/./node_modules/lodash/_listCacheHas.js","webpack://mermaid/./node_modules/lodash/_listCacheSet.js","webpack://mermaid/./node_modules/lodash/_mapCacheClear.js","webpack://mermaid/./node_modules/lodash/_mapCacheDelete.js","webpack://mermaid/./node_modules/lodash/_mapCacheGet.js","webpack://mermaid/./node_modules/lodash/_mapCacheHas.js","webpack://mermaid/./node_modules/lodash/_mapCacheSet.js","webpack://mermaid/./node_modules/lodash/_mapToArray.js","webpack://mermaid/./node_modules/lodash/_matchesStrictComparable.js","webpack://mermaid/./node_modules/lodash/_memoizeCapped.js","webpack://mermaid/./node_modules/lodash/_nativeCreate.js","webpack://mermaid/./node_modules/lodash/_nativeKeys.js","webpack://mermaid/./node_modules/lodash/_nativeKeysIn.js","webpack://mermaid/./node_modules/lodash/_nodeUtil.js","webpack://mermaid/./node_modules/lodash/_objectToString.js","webpack://mermaid/./node_modules/lodash/_overArg.js","webpack://mermaid/./node_modules/lodash/_overRest.js","webpack://mermaid/./node_modules/lodash/_root.js","webpack://mermaid/./node_modules/lodash/_safeGet.js","webpack://mermaid/./node_modules/lodash/_setCacheAdd.js","webpack://mermaid/./node_modules/lodash/_setCacheHas.js","webpack://mermaid/./node_modules/lodash/_setToArray.js","webpack://mermaid/./node_modules/lodash/_setToString.js","webpack://mermaid/./node_modules/lodash/_shortOut.js","webpack://mermaid/./node_modules/lodash/_stackClear.js","webpack://mermaid/./node_modules/lodash/_stackDelete.js","webpack://mermaid/./node_modules/lodash/_stackGet.js","webpack://mermaid/./node_modules/lodash/_stackHas.js","webpack://mermaid/./node_modules/lodash/_stackSet.js","webpack://mermaid/./node_modules/lodash/_strictIndexOf.js","webpack://mermaid/./node_modules/lodash/_stringSize.js","webpack://mermaid/./node_modules/lodash/_stringToPath.js","webpack://mermaid/./node_modules/lodash/_toKey.js","webpack://mermaid/./node_modules/lodash/_toSource.js","webpack://mermaid/./node_modules/lodash/_unicodeSize.js","webpack://mermaid/./node_modules/lodash/clone.js","webpack://mermaid/./node_modules/lodash/cloneDeep.js","webpack://mermaid/./node_modules/lodash/constant.js","webpack://mermaid/./node_modules/lodash/defaults.js","webpack://mermaid/./node_modules/lodash/each.js","webpack://mermaid/./node_modules/lodash/eq.js","webpack://mermaid/./node_modules/lodash/filter.js","webpack://mermaid/./node_modules/lodash/find.js","webpack://mermaid/./node_modules/lodash/findIndex.js","webpack://mermaid/./node_modules/lodash/flatten.js","webpack://mermaid/./node_modules/lodash/forEach.js","webpack://mermaid/./node_modules/lodash/forIn.js","webpack://mermaid/./node_modules/lodash/get.js","webpack://mermaid/./node_modules/lodash/has.js","webpack://mermaid/./node_modules/lodash/hasIn.js","webpack://mermaid/./node_modules/lodash/identity.js","webpack://mermaid/./node_modules/lodash/isArguments.js","webpack://mermaid/./node_modules/lodash/isArray.js","webpack://mermaid/./node_modules/lodash/isArrayLike.js","webpack://mermaid/./node_modules/lodash/isArrayLikeObject.js","webpack://mermaid/./node_modules/lodash/isBuffer.js","webpack://mermaid/./node_modules/lodash/isEmpty.js","webpack://mermaid/./node_modules/lodash/isFunction.js","webpack://mermaid/./node_modules/lodash/isLength.js","webpack://mermaid/./node_modules/lodash/isMap.js","webpack://mermaid/./node_modules/lodash/isObject.js","webpack://mermaid/./node_modules/lodash/isObjectLike.js","webpack://mermaid/./node_modules/lodash/isPlainObject.js","webpack://mermaid/./node_modules/lodash/isSet.js","webpack://mermaid/./node_modules/lodash/isString.js","webpack://mermaid/./node_modules/lodash/isSymbol.js","webpack://mermaid/./node_modules/lodash/isTypedArray.js","webpack://mermaid/./node_modules/lodash/isUndefined.js","webpack://mermaid/./node_modules/lodash/keys.js","webpack://mermaid/./node_modules/lodash/keysIn.js","webpack://mermaid/./node_modules/lodash/last.js","webpack://mermaid/./node_modules/lodash/map.js","webpack://mermaid/./node_modules/lodash/mapValues.js","webpack://mermaid/./node_modules/lodash/max.js","webpack://mermaid/./node_modules/lodash/memoize.js","webpack://mermaid/./node_modules/lodash/merge.js","webpack://mermaid/./node_modules/lodash/min.js","webpack://mermaid/./node_modules/lodash/minBy.js","webpack://mermaid/./node_modules/lodash/noop.js","webpack://mermaid/./node_modules/lodash/now.js","webpack://mermaid/./node_modules/lodash/pick.js","webpack://mermaid/./node_modules/lodash/property.js","webpack://mermaid/./node_modules/lodash/range.js","webpack://mermaid/./node_modules/lodash/reduce.js","webpack://mermaid/./node_modules/lodash/size.js","webpack://mermaid/./node_modules/lodash/sortBy.js","webpack://mermaid/./node_modules/lodash/stubArray.js","webpack://mermaid/./node_modules/lodash/stubFalse.js","webpack://mermaid/./node_modules/lodash/toFinite.js","webpack://mermaid/./node_modules/lodash/toInteger.js","webpack://mermaid/./node_modules/lodash/toNumber.js","webpack://mermaid/./node_modules/lodash/toPlainObject.js","webpack://mermaid/./node_modules/lodash/toString.js","webpack://mermaid/./node_modules/lodash/transform.js","webpack://mermaid/./node_modules/lodash/union.js","webpack://mermaid/./node_modules/lodash/uniqueId.js","webpack://mermaid/./node_modules/lodash/values.js","webpack://mermaid/./node_modules/lodash/zipObject.js","webpack://mermaid/./node_modules/moment-mini/locale sync ^\\.\\/.*$","webpack://mermaid/./node_modules/moment-mini/moment.min.js","webpack://mermaid/./node_modules/path-browserify/index.js","webpack://mermaid/./node_modules/process/browser.js","webpack://mermaid/./node_modules/stylis/stylis.js","webpack://mermaid/(webpack)/buildin/global.js","webpack://mermaid/(webpack)/buildin/module.js","webpack://mermaid/./src/config.js","webpack://mermaid/./src/dagre-wrapper/clusters.js","webpack://mermaid/./src/dagre-wrapper/createLabel.js","webpack://mermaid/./src/dagre-wrapper/edges.js","webpack://mermaid/./src/dagre-wrapper/index.js","webpack://mermaid/./src/dagre-wrapper/intersect/index.js","webpack://mermaid/./src/dagre-wrapper/intersect/intersect-circle.js","webpack://mermaid/./src/dagre-wrapper/intersect/intersect-ellipse.js","webpack://mermaid/./src/dagre-wrapper/intersect/intersect-line.js","webpack://mermaid/./src/dagre-wrapper/intersect/intersect-node.js","webpack://mermaid/./src/dagre-wrapper/intersect/intersect-polygon.js","webpack://mermaid/./src/dagre-wrapper/intersect/intersect-rect.js","webpack://mermaid/./src/dagre-wrapper/markers.js","webpack://mermaid/./src/dagre-wrapper/mermaid-graphlib.js","webpack://mermaid/./src/dagre-wrapper/nodes.js","webpack://mermaid/./src/dagre-wrapper/shapes/note.js","webpack://mermaid/./src/dagre-wrapper/shapes/util.js","webpack://mermaid/./src/diagrams/class/classDb.js","webpack://mermaid/./src/diagrams/class/classRenderer-v2.js","webpack://mermaid/./src/diagrams/class/classRenderer.js","webpack://mermaid/./src/diagrams/class/parser/classDiagram.jison","webpack://mermaid/./src/diagrams/class/styles.js","webpack://mermaid/./src/diagrams/class/svgDraw.js","webpack://mermaid/./src/diagrams/common/common.js","webpack://mermaid/./src/diagrams/er/erDb.js","webpack://mermaid/./src/diagrams/er/erMarkers.js","webpack://mermaid/./src/diagrams/er/erRenderer.js","webpack://mermaid/./src/diagrams/er/parser/erDiagram.jison","webpack://mermaid/./src/diagrams/er/styles.js","webpack://mermaid/./src/diagrams/flowchart/flowChartShapes.js","webpack://mermaid/./src/diagrams/flowchart/flowDb.js","webpack://mermaid/./src/diagrams/flowchart/flowRenderer-v2.js","webpack://mermaid/./src/diagrams/flowchart/flowRenderer.js","webpack://mermaid/./src/diagrams/flowchart/parser/flow.jison","webpack://mermaid/./src/diagrams/flowchart/styles.js","webpack://mermaid/./src/diagrams/gantt/ganttDb.js","webpack://mermaid/./src/diagrams/gantt/ganttRenderer.js","webpack://mermaid/./src/diagrams/gantt/parser/gantt.jison","webpack://mermaid/./src/diagrams/gantt/styles.js","webpack://mermaid/./src/diagrams/git/gitGraphAst.js","webpack://mermaid/./src/diagrams/git/gitGraphRenderer.js","webpack://mermaid/./src/diagrams/git/parser/gitGraph.jison","webpack://mermaid/./src/diagrams/git/styles.js","webpack://mermaid/./src/diagrams/info/infoDb.js","webpack://mermaid/./src/diagrams/info/infoRenderer.js","webpack://mermaid/./src/diagrams/info/parser/info.jison","webpack://mermaid/./src/diagrams/info/styles.js","webpack://mermaid/./src/diagrams/pie/parser/pie.jison","webpack://mermaid/./src/diagrams/pie/pieDb.js","webpack://mermaid/./src/diagrams/pie/pieRenderer.js","webpack://mermaid/./src/diagrams/pie/styles.js","webpack://mermaid/./src/diagrams/sequence/parser/sequenceDiagram.jison","webpack://mermaid/./src/diagrams/sequence/sequenceDb.js","webpack://mermaid/./src/diagrams/sequence/sequenceRenderer.js","webpack://mermaid/./src/diagrams/sequence/styles.js","webpack://mermaid/./src/diagrams/sequence/svgDraw.js","webpack://mermaid/./src/diagrams/state/id-cache.js","webpack://mermaid/./src/diagrams/state/parser/stateDiagram.jison","webpack://mermaid/./src/diagrams/state/shapes.js","webpack://mermaid/./src/diagrams/state/stateDb.js","webpack://mermaid/./src/diagrams/state/stateRenderer-v2.js","webpack://mermaid/./src/diagrams/state/stateRenderer.js","webpack://mermaid/./src/diagrams/state/styles.js","webpack://mermaid/./src/diagrams/user-journey/journeyDb.js","webpack://mermaid/./src/diagrams/user-journey/journeyRenderer.js","webpack://mermaid/./src/diagrams/user-journey/parser/journey.jison","webpack://mermaid/./src/diagrams/user-journey/styles.js","webpack://mermaid/./src/diagrams/user-journey/svgDraw.js","webpack://mermaid/./src/errorRenderer.js","webpack://mermaid/./src/logger.js","webpack://mermaid/./src/mermaid.js","webpack://mermaid/./src/mermaidAPI.js","webpack://mermaid/./src/styles.js","webpack://mermaid/./src/themes/index.js","webpack://mermaid/./src/themes/theme-base.js","webpack://mermaid/./src/themes/theme-dark.js","webpack://mermaid/./src/themes/theme-default.js","webpack://mermaid/./src/themes/theme-forest.js","webpack://mermaid/./src/themes/theme-neutral.js","webpack://mermaid/./src/utils.js"],"names":["handleThemeVariables","value","theme","getThemeVariables","default","manipulators","themeVariables","config","themeCSS","undefined","maxTextSize","fontFamily","logLevel","securityLevel","startOnLoad","arrowMarkerAbsolute","secure","flowchart","diagramPadding","htmlLabels","nodeSpacing","rankSpacing","curve","padding","sequence","activationWidth","diagramMarginX","diagramMarginY","actorMargin","width","height","boxMargin","boxTextMargin","noteMargin","messageMargin","messageAlign","mirrorActors","bottomMarginAdj","useMaxWidth","rightAngles","showSequenceNumbers","actorFontSize","actorFontFamily","actorFontWeight","noteFontSize","noteFontFamily","noteFontWeight","noteAlign","messageFontSize","messageFontFamily","messageFontWeight","wrap","wrapPadding","labelBoxWidth","labelBoxHeight","messageFont","fontSize","fontWeight","noteFont","actorFont","gantt","titleTopMargin","barHeight","barGap","topPadding","leftPadding","gridLineStartPadding","numberSectionStyles","axisFormat","journey","class","git","state","dividerMargin","sizeUnit","textHeight","titleShift","forkWidth","forkHeight","miniPadding","fontSizeFactor","labelHeight","edgeLengthFactor","compositTitleSize","radius","er","layoutDirection","minEntityWidth","minEntityHeight","entityPadding","stroke","fill","defaultConfig","Object","freeze","siteConfig","assignWithDepth","currentConfig","setSiteConfig","conf","keys","forEach","key","manipulator","clobber","getSiteConfig","setConfig","sanitize","getConfig","options","logger","warn","reset","configApi","rect","parent","node","log","trace","id","shapeSvg","insert","attr","label","text","appendChild","createLabel","labelText","labelStyle","bbox","getBBox","div","children","dv","select","getBoundingClientRect","halfPadding","JSON","stringify","rx","ry","x","y","rectBox","intersect","point","intersectRect","noteGroup","roundedWithTitle","classes","innerRect","append","divider","shapes","clusterElems","insertCluster","elem","shape","getClusterTitleWidth","removeChild","clear","positionCluster","info","el","applyStyle","dom","styleFn","addHtmlLabel","fo","document","createElementNS","labelClass","isNode","html","style","_vertexText","isTitle","vertexText","replace","s","vertexNode","svgLabel","setAttribute","rows","split","Array","isArray","j","length","tspan","setAttributeNS","textContent","trim","edgeLabels","insertEdgeLabel","edge","labelElement","edgeLabel","positionEdgeLabel","points","pos","utils","calcLabelPosition","outsideNode","dx","Math","abs","dy","w","h","intersection","outsidePoint","insidePoint","r","edges","x1","x2","y1","y2","Q","R","q","res","insertEdge","e","clusterDb","diagramType","graph","pointsHasChanged","tail","v","head","slice","unshift","push","toCluster","lastPointOutside","isInside","inter","pointPresent","p","find","fromCluster","updatedPoints","i","insterection","lineData","filter","Number","isNaN","lineFunction","line","d","curveBasis","strokeClasses","thickness","pattern","svgPath","url","window","location","protocol","host","pathname","search","arrowTypeStart","arrowTypeEnd","recursiveRender","_elem","diagramtype","parentCluster","graphlib","json","write","dir","rankdir","nodes","clusters","edgePaths","data","parse","clusterData","setNode","setParent","clusterNode","newEl","updateNodeBounds","setNodeElem","findNonClusterChild","insertNode","name","dagre","layout","positionNode","updatedPath","render","markers","insertMarkers","clearNodes","clearEdges","clearClusters","clearGraphlib","adjustClustersAndEdges","circle","ellipse","polygon","intersectCircle","intersectEllipse","cx","cy","px","py","det","sqrt","intersectLine","p1","p2","q1","q2","a1","a2","b1","b2","c1","c2","r1","r2","r3","r4","denom","offset","num","sameSign","module","exports","intersectNode","console","intersectPolygon","polyPoints","intersections","minX","POSITIVE_INFINITY","minY","entry","min","left","top","sort","pdx","pdy","distp","qdx","qdy","distq","sx","sy","markerArray","type","markerName","extension","composition","aggregation","dependency","cross","barb","decendants","parents","isDecendant","ancenstorId","debug","indexOf","edgeInCluster","clusterId","copy","newGraph","rootId","setEdge","error","removeNode","extractDecendants","concat","validate","_id","getAnchorId","externalConnections","depth","d1","d2","extractor","removeEdge","hasChildren","graphSettings","clusterGraph","Graph","multigraph","compound","setGraph","nodesep","ranksep","marginx","marginy","setDefaultEdgeLabel","question","labelHelper","questionElem","insertPolygonShape","hexagon","f","m","hex","rect_left_inv_arrow","lean_right","lean_left","trapezoid","inv_trapezoid","rect_right_inv_arrow","cylinder","rectWithTitle","innerLine","text2","flat","textRows","titleBox","descr","join","stadium","subroutine","start","forkJoin","end","innerCircle","class_box","rowPadding","lineHeight","topLine","bottomLine","maxWidth","maxHeight","labelContainer","verticalPos","hasInterface","classData","annotations","interfaceLabel","interfaceBBox","classTitleLabel","classTitleBBox","classAttributes","members","str","lbl","classMethods","methods","diffX","note","fork","nodeElems","_classes","element","map","MERMAID_DOM_ID_PREFIX","relations","classCounter","funs","splitClassNameAndType","genericType","className","addClass","classId","cssClasses","domId","lookUpDomId","classKeys","setupToolTips","getClass","getClasses","getRelations","addRelation","relation","id1","id2","addAnnotation","annotation","validatedClassName","addMember","member","theClass","memberString","startsWith","endsWith","substring","addMembers","reverse","cleanupLabel","substr","setCssClass","ids","match","setLink","linkStr","tooltip","link","formatUrl","common","sanitizeText","setClickEvent","functionName","setClickFunc","elemId","querySelector","addEventListener","runFunc","bindFunctions","fun","lineType","LINE","DOTTED_LINE","relationType","AGGREGATION","EXTENSION","COMPOSITION","DEPENDENCY","tooltipElem","_groups","svg","selectAll","on","title","transition","duration","scrollX","right","scrollY","body","scrollTop","classed","parser","yy","classDb","idCache","addClasses","g","vertex","classStr","styles","radious","_shape","addRelations","cnt","defaultStyle","defaultLabelStyle","edgeData","arrowhead","getArrowMarker","type1","type2","getStylesFromArray","interpolate","interpolateToCurve","curveLinear","defaultInterpolate","arrowheadStyle","labelpos","labelType","lineBreakRegex","getGraphId","setConf","cnf","drawOld","diagram","isMultiGraph","classDef","svgDraw","drawClass","drawEdge","svgBounds","vBox","draw","_label","labels","querySelectorAll","k","dim","insertBefore","firstChild","marker","getStyles","nodeBorder","classText","mainBkg","nodeBkg","lineColor","edgeCount","path","getRelationType","l","labelPosition","p1_card_x","p1_card_y","p2_card_x","p2_card_y","cardinality_1_point","calcCardinalityPosition","cardinality_2_point","bounds","relationTitle1","relationTitle2","cssClassStr","classInfo","isFirst","titleText2","classTitleString","classTitle","titleHeight","membersLine","addTspan","membersBox","methodsLine","method","classBox","rectWidth","childNodes","parseMember","fieldRegEx","methodRegEx","fieldMatch","methodMatch","buildFieldDisplay","buildMethodDisplay","buildLegacyDisplay","parsedText","displayText","visibility","fieldType","parseGenericTypes","fieldName","err","cssStyle","methodName","parameters","classifier","returnType","parseClassifier","memberText","methodStart","methodEnd","firstChar","textEl","txt","tSpan","cleanedText","getRows","breakToPlaceholder","removeScript","rs","idx","level","placeholderToBreak","hasBreaks","test","splitBreaks","entities","relationships","Cardinality","ZERO_OR_ONE","ZERO_OR_MORE","ONE_OR_MORE","ONLY_ONE","Identification","NON_IDENTIFYING","IDENTIFYING","addEntity","getEntities","addRelationship","entA","rolA","entB","rSpec","rel","entityA","roleA","entityB","relSpec","getRelationships","setTitle","getTitle","ERMarkers","ONLY_ONE_START","ONLY_ONE_END","ZERO_OR_ONE_START","ZERO_OR_ONE_END","ONE_OR_MORE_START","ONE_OR_MORE_END","ZERO_OR_MORE_START","ZERO_OR_MORE_END","drawEntities","svgNode","firstOne","groupNode","textId","textNode","textBBox","entityWidth","max","entityHeight","rectNode","rectBBox","adjustEntities","getEdgeName","addRelationships","relationship","relCnt","drawRelationshipFromLayout","relType","erDb","cardA","erMarkers","cardB","len","getTotalLength","labelPoint","getPointAtLength","labelId","labelNode","labelBBox","erParser","directed","edgesep","firstEntity","edgeLabelBackground","dagreD3","addToRender","addToRenderV2","addShape","vertices","subGraphs","subGraphLookup","tooltips","subCount","firstGraphFlag","direction","addVertex","addSingleLink","_start","_end","linktext","addLink","updateLinkInterpolate","positions","interp","updateLink","isSubstringInArray","textStyles","newStyle1","newStyle2","setDirection","setClass","setTooltip","setClickFun","getTooltip","getDirection","getVertices","getEdges","addSubGraph","list","_title","uniq","a","prims","boolean","number","string","objs","item","hasOwnProperty","nodeList","apply","subGraph","getPosForId","secCount","posCrossRef","indexNodes2","result","count","posCount","childPos","getDepthFirstPos","indexNodes","getSubGraphs","firstGraph","destructStartLink","_str","destructEndLink","destructLink","_startStr","startInfo","lex","addVertices","vert","svgId","parentNode","addEdges","defaultStyles","linkId","linkNameStart","linkNameEnd","flowDb","flow","subG","linkNode","Render","flowChartShapes","arrows","none","normal","util","clusterRects","clusterEl","xPos","baseVal","yPos","cluster","te","classList","add","textColor","arrowheadColor","secondBkg","clusterBorder","titleColor","border2","dateFormat","todayMarker","excludes","sections","tasks","currentSection","tags","inclusiveEndDates","lastOrder","taskCnt","lastTask","lastTaskID","rawTasks","setAxisFormat","getAxisFormat","setTodayMarker","getTodayMarker","setDateFormat","enableInclusiveEndDates","endDatesAreInclusive","getDateFormat","setExcludes","toLowerCase","getExcludes","addSection","getSections","getTasks","allItemsPricessed","compileTasks","maxDepth","iterationCount","isInvalidDate","date","isoWeekday","format","checkTaskDates","task","manualEndTime","startTime","moment","endTime","renderEndTime","fixTaskDates","toDate","invalid","getStartDate","prevTime","re","afterStatement","exec","latestEndingTask","findTaskById","dt","Date","setHours","mDate","isValid","durationToDate","durationStatement","relativeTime","getEndDate","inclusive","parseId","idStr","compileData","prevTask","dataStr","ds","getTaskTags","endTimeData","parseData","prevTaskId","startData","taskDb","addTask","rawTask","section","processed","raw","taskInfo","active","done","crit","milestone","order","addTaskOrg","newTask","description","compileTask","allProcessed","_linkStr","sanitizeUrl","pushFun","open","functionArgs","argList","charAt","callbackFunction","matchFound","t","regex","RegExp","shift","ganttDb","rightPadding","getElementById","parentElement","offsetWidth","useWidth","taskArray","timeScale","scaleTime","domain","rangeRound","categories","catsUnfiltered","checkUnique","taskCompare","b","taskA","taskB","makeGant","pageWidth","pageHeight","gap","colorScale","scaleLinear","range","interpolateHcl","makeGrid","drawRects","vertLabels","drawToday","theArray","theGap","theTopPad","theSidePad","theBarHeight","theColorScale","enter","rectangles","toString","secNum","taskClass","startX","endX","textWidth","taskType","xAxis","axisBottom","tickSize","tickFormat","timeFormat","call","numOccurances","prevGap","getCount","todayG","today","todayLine","arr","hash","getCounts","obj","word","sectionBkgColor","sectionBkgColor2","altSectionBkgColor","gridColor","todayLineColor","taskTextDarkColor","taskTextClickableColor","taskTextColor","taskBkgColor","taskBorderColor","taskTextOutsideColor","activeTaskBkgColor","activeTaskBorderColor","doneTaskBorderColor","doneTaskBkgColor","critBorderColor","critBkgColor","commits","branches","master","curBranch","seq","getId","random","isfastforwardable","currentCommit","otherCommit","isReachableFrom","currentSeq","otherSeq","uniqBy","fn","recordMap","create","reduce","out","setOptions","rawOptString","message","getOptions","commit","msg","branch","merge","otherBranch","checkout","commitRef","ref","parentCount","parseInt","upsert","newval","index","splice","prettyPrintCommitHistory","commitArr","c","newCommit","nextCommit","prettyPrint","getCommitsArray","getBranchesAsObjArray","branchArr","getBranches","getCommits","o","getCurrentBranch","getHead","allCommitsDict","branchNum","nodeFillColor","nodeStrokeWidth","nodeStrokeColor","lineStrokeWidth","branchOffset","leftMargin","branchColors","nodeRadius","nodeLabel","apiConfig","svgCreateDefs","svgDrawLine","colorIdx","color","lineGen","round","getElementCoords","coords","ctm","getCTM","xn","yn","svgDrawLineForCommits","fromId","toId","fromBbox","toBbox","lineStart","lineEnd","cloneNode","selector","renderCommitHistory","commitid","numCommits","size","branchName","renderLines","branchColor","lineDrawn","ver","gitGraphParser","db","assign","setMessage","getMessage","setInfo","inf","getInfo","infoParser","cleanupValue","pieParser","pieData","margin","legendRectSize","legendSpacing","sum","scaleOrdinal","schemeSet2","pie","d3pie","dataReady","entries","arcGenerator","arc","innerRadius","outerRadius","toFixed","centroid","legend","horz","prevActor","actors","messages","notes","titleWrapped","sequenceNumbersEnabled","wrapEnabled","parseDirective","statement","context","mermaidAPI","addActor","old","autoWrap","nextActor","activationCount","part","LINETYPE","ACTIVE_START","from","actor","ACTIVE_END","addMessage","idFrom","idTo","answer","to","addSignal","messageType","Error","token","loc","first_line","last_line","first_column","last_column","expected","getMessages","getActors","getActor","getActorKeys","getTitleWrapped","enableSequenceNumbers","setWrap","wrapSetting","parseMessage","SOLID","DOTTED","NOTE","SOLID_CROSS","DOTTED_CROSS","SOLID_OPEN","DOTTED_OPEN","LOOP_START","LOOP_END","ALT_START","ALT_ELSE","ALT_END","OPT_START","OPT_END","PAR_START","PAR_AND","PAR_END","RECT_START","RECT_END","ARROWTYPE","FILLED","OPEN","PLACEMENT","LEFTOF","RIGHTOF","OVER","addNote","placement","titleWrap","param","signalType","loopText","optText","altText","parText","sequenceDb","startx","stopx","starty","stopy","sequenceItems","activations","models","getHeight","loops","it","acc","actorModel","addLoop","loopModel","msgModel","noteModel","lastActor","lastLoop","lastMessage","lastNote","init","updateVal","val","updateBounds","_self","updateFn","updateItemBounds","n","_startx","_stopx","_starty","_stopy","newActivation","actorRect","stackedSize","actorActivations","anchored","anchorElement","endActivation","lastActorActivationIdx","activation","lastIndexOf","createLoop","newLoop","endLoop","pop","addSectionToLoop","loop","sectionTitles","getVerticalPos","bumpVerticalPos","bump","getBounds","drawNote","getNoteRect","rectElem","drawRect","textObj","getTextObj","anchor","textMargin","valign","textElem","drawText","curr","drawMessage","sequenceIndex","lines","textDims","calculateTextDimensions","totalOffset","lineStarty","fromBounds","toBounds","drawActors","actorKeys","prevWidth","prevMargin","drawActor","activationBounds","actorObj","adjustLoopHeightForWrap","loopWidths","preMargin","postMargin","addLoopFn","heightAdjust","loopWidth","textConf","wrapLabel","maxMessageWidthPerActor","getMaxMessageWidthPerActor","calculateActorMargins","calculateLoopBounds","insertArrowHead","insertArrowCrossHead","insertSequenceNumber","activeEnd","activationData","drawActivation","drawLoop","drawBackgroundRect","includes","box","actorLines","extraVertForTitle","isNote","isMessage","textFont","wrappedMessage","messageDimensions","messageWidth","actorToMessageWidth","prop","actDims","actorKey","actorWidth","buildNoteModel","shouldWrap","textDimensions","buildMessageModel","process","fromIdx","toIdx","allBounds","boundedWidth","msgDims","stack","current","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","toAdd","enabled","stk","actorBorder","actorBkg","actorTextColor","actorLineColor","signalColor","sequenceNumberColor","signalTextColor","labelBoxBorderColor","labelBoxBkgColor","labelTextColor","loopTextColor","noteBorderColor","noteBkgColor","noteTextColor","activationBkgColor","activationBorderColor","rectData","textData","prevTextHeight","textElems","yfunc","dominantBaseline","alignmentBaseline","span","drawLabel","txtObject","genPoints","cut","actorCnt","center","_drawTextCandidateFunc","drawLoopLine","sectionHeight","lower","defs","byText","content","textAttrs","_setTextAttrs","byTspan","byFo","toText","fromTextAttrsDict","textPlacement","set","get","drawStartState","drawDivider","drawSimpleState","stateDef","drawDescrState","descriptions","isSecond","descrLine","descrBox","addTitleAndBox","altBkg","pad","dblPad","orgBox","orgWidth","orgX","titleWidth","graphBox","doc","lineY","drawEndState","drawForkJoinState","parentId","tmp","nText","_drawLongText","_text","tHeight","textBounds","drawState","stateInfo","stateBox","stateDb","titleRows","boundstmp","boxHeight","heightAdj","clone","rootDoc","setRootDoc","getRootDoc","docTranslator","first","stmt","state1","state2","currentDoc","newNode","generateId","docNode","getRootDocV2","extract","_doc","addState","newDoc","states","documents","root","currentDocument","startCnt","endCnt","addDescription","des","getState","getStates","logDocuments","_id1","_id2","_descr","theState","dividerCnt","getDividerId","trimColon","nodeDb","setupNode","altFlag","nodeData","noteData","groupData","position","arrowType","setupDoc","startId","endId","transformationLog","renderDoc","getLabelWidth","edgeFreeDoc","ranker","nodeSep","sub","boxBounds","noteDef","nodeCount","svgElem","dividers","pWidth","pShift","getAttribute","labelColor","background","altBackground","allItemsProcessed","updateActors","tempActors","people","unique","Set","taskData","pieces","score","peeps","peopleList","journeyDb","taskMargin","taskFontSize","taskFontFamily","actorColours","sectionFills","sectionColours","drawActorLegend","person","colour","circleData","drawCircle","labelData","LEFT_MARGIN","initGraphics","actorNames","actorPos","actorName","drawTasks","fills","textColours","lastSection","sectionVHeight","taskPos","sectionNumber","drawSection","taskActors","drawTask","fillType0","fillType1","fillType2","fillType3","fillType4","fillType5","fillType6","fillType7","drawFace","faceData","circleElement","face","smile","d3arc","startAngle","PI","endAngle","sad","ambivalent","labelMargin","taskCount","graphics","LEVELS","fatal","setLogLevel","bind","time","arguments","mermaid","sequenceConfig","callback","Node","initialize","ganttConfig","now","innerHTML","decode","detectInit","svgCode","parseError","contentLoaded","graphInit","reinitialize","graphType","detectType","gitGraphAst","flowParser","sequenceParser","ganttParser","classParser","stateParser","infoDb","pieDb","journeyParser","encodeEntities","innerTxt","isInt","decodeEntities","_txt","cb","container","updateRendererConfigs","existingSvg","remove","userStyles","altFontFamily","flowRenderer","stylis","Stylis","rules","style1","createElement","gitGraphRenderer","flowRendererV2","sequenceDiagram","sequenceRenderer","ganttRenderer","classRenderer","classRendererV2","stateRenderer","stateRendererV2","infoRenderer","pkg","version","pieRenderer","erRenderer","journeyRenderer","errorRenderer","currentDirective","args","handleDirective","directive","globalReset","themes","classDiagram","stateDiagram","calcThemeVariables","userOverRides","calcColors","errorBkgColor","errorTextColor","base","baseThemeVariables","dark","darkThemeVariables","defaultThemeVariables","forest","forestThemeVariables","neutral","neutralThemeVariables","Theme","primaryColor","secondaryColor","tertiaryColor","lighten","relationColor","border1","labelBackground","updateColors","darken","clusterBkg","defaultLinkColor","taskTextLightColor","adjust","overrides","userOverrides","calculate","mainContrastColor","darkTextColor","invert","rgba","contrast","critical","d3CurveTypes","curveBasisClosed","curveBasisOpen","curveLinearClosed","curveMonotoneX","curveMonotoneY","curveNatural","curveStep","curveStepAfter","curveStepBefore","directiveWithoutOpen","anyComment","inits","detectDirective","results","commentWithoutDirectives","source","lastIndex","memoize","resolver","cache","defaultCurve","curveName","toUpperCase","arrPaths","fnName","params","distance","pow","traverseEdge","prevPoint","totalDistance","remainingDistance","vectorDistance","distanceRatio","isRelationTypePresent","initialPosition","distanceToCardinalityPoint","angle","atan2","cardinalityPosition","sin","cos","makeid","characters","charactersLength","floor","dst","src","drawSimpleText","joinWith","words","completedLines","nextLine","wordLength","calculateTextWidth","nextLineLength","breakString","hyphenatedStrings","remainingWord","Boolean","currentWord","isLastWord","hyphenCharacter","currentLine","character","lineWidth","currentCharacter","isLastLine","hyphenatedNextLine","calculateTextHeight","fontFamilies","dims","cheight","bBox"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,O;QCVA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;;;QAGA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA,0CAA0C,gCAAgC;QAC1E;QACA;;QAEA;QACA;QACA;QACA,wDAAwD,kBAAkB;QAC1E;QACA,iDAAiD,cAAc;QAC/D;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,yCAAyC,iCAAiC;QAC1E,gHAAgH,mBAAmB,EAAE;QACrI;QACA;;QAEA;QACA;QACA;QACA,2BAA2B,0BAA0B,EAAE;QACvD,iCAAiC,eAAe;QAChD;QACA;QACA;;QAEA;QACA,sDAAsD,+DAA+D;;QAErH;QACA;;;QAGA;QACA;;;;;;;;;;;;;AClFa;;AAEb;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;;ACxCA;AAAA;AAAA;AAAA;;AAEO;AACA;;;;;;;;;;;;;ACHP;AAAe;AACf;AACA,CAAC;;;;;;;;;;;;;ACFD;AAAA;AAAA;AAAA;AAAA;AAAoC;AACF;;AAElC,sBAAsB,yDAAQ,CAAC,kDAAS;AACjC;AACA;AACQ,0EAAW,EAAC;;;;;;;;;;;;;ACN3B;AAAA;AAAoC;;AAErB;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA,WAAW,0DAAS;AACpB;AACA;;;;;;;;;;;;;AChCA;AAAe;AACf;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;ACJD;AAAA;AAA6B;;AAEd;AACf;AACA;AACA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CA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,CAAC;;AAEM;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AClDA;AAAA;AAAwB;;AAET;AACf;AACA,uBAAuB,oDAAG,2CAA2C,SAAS;AAC9E,0DAA0D,SAAS;AACnE;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;;;;;;;;;;;;;ACdA;AAAA;AAA8B;;AAEf;AACf;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,yBAAyB,uDAAM;AAC/B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,yBAAyB,uDAAM;AAC/B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;;;;;;;;;;;;AChCD;AAAA;AAAoC;;AAErB;AACf,SAAS,0DAAS;AAClB,CAAC;;;;;;;;;;;;;ACJD;AAAA;AAAO;;;;;;;;;;;;;ACAP;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA8B;AACI;;AAElC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,sDAAsD;AACtD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,yGAAyG,iDAAQ;AACjH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,0CAA0C,kFAAkF,EAAE;;AAE9H;AACA;AACA,0CAA0C,gCAAgC,6DAA6D,EAAE;AACzI;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,wCAAwC,+BAA+B,EAAE;;AAEzE;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,0BAA0B,wBAAwB,EAAE;AACpD;;AAEA;AACA;AACA;;AAEA;AACA,2BAA2B,4CAAK;AAChC;;AAEA;AACA,gEAAgE,4CAAK;AACrE;;AAEA;AACA,+DAA+D,4CAAK;AACpE;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEO;AACP;AACA;;AAEO;AACP;AACA;;AAEO;AACP;AACA;;AAEO;AACP;AACA;;;;;;;;;;;;;AC7KA;AAAe;AACf;AACA,CAAC;;;;;;;;;;;;;ACFD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKgB;;;;;;;;;;;;;ACLhB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAqC;AACW;AACL;AAC2B;AAC9B;AACH;AACD;AACgB;;AAEpD,iBAAiB,aAAa;AAC9B,kBAAkB,cAAc;AAChC,mBAAmB,eAAe;AAClC,mBAAmB;;AAEnB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,WAAW,0DAAK,SAAS,kDAAK;AAC9B;AACA;;AAEA;AACA;AACA;AACA,yBAAyB,gEAAgE,EAAE;AAC3F,wBAAwB,mCAAmC;AAC3D;;AAEA;AACA;AACA;AACA,yBAAyB,gEAAgE,EAAE;AAC3F,wBAAwB,mCAAmC;AAC3D;;AAEA;AACA;AACA;AACA,uBAAuB,wCAAwC,EAAE;AACjE,wBAAwB,WAAW;AACnC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAU;AACV;;AAEA;AACA;AACA,UAAU,kDAAK,aAAa,kDAAK;AACjC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;;AAEO;AACP;AACA;;AAEO;AACP;AACA;;AAEe;AACf;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,kBAAkB,4DAAQ;AAC1B;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,2DAAM;AAChB;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,sCAAsC,eAAe,EAAE;;AAEvD;;AAEA;AACA,oCAAoC,mCAAmC,EAAE;AACzE,qCAAqC,wBAAwB,EAAE;;AAE/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,yCAAyC,gDAAgD,EAAE;AAC3F,uDAAuD,gCAAgC,EAAE;AACzF;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,kEAAW;;AAE/B;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW;AACX,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,YAAY,+DAAS;AACrB;AACA;AACA;AACA,WAAW;AACX;AACA;;AAEA;AACA;AACA;;AAEA;AACA,gBAAgB,2DAAM;AACtB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,kCAAkC,gHAAgH,EAAE;AACpJ,kCAAkC,gGAAgG,EAAE;AACpI,sCAAsC,uGAAuG,EAAE;AAC/I,uCAAuC,uGAAuG,EAAE;AAChJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA,MAAM,gEAAW,KAAK,iDAAU;AAChC;AACA;;AAEA;AACA,wBAAwB,kDAAK;AAC7B;;AAEA;AACA,eAAe,kDAAK;AACpB,wBAAwB,kDAAK,2EAA2E,kDAAK;AAC7G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,kDAAK;AAClD;AACA;AACA,kBAAkB,kDAAK,mBAAmB,kDAAK,iCAAiC,kDAAK;AACrF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,gBAAgB,2DAAM;AACtB;;AAEA;AACA;;AAEA,QAAQ,kDAAK;AACb;AACA;AACA,KAAK;AACL,iBAAiB,2DAAM,CAAC,kDAAK;AAC7B;AACA;AACA;AACA;AACA;;AAEA,MAAM,2DAAW,CAAC,kDAAK;AACvB;;AAEA,IAAI,iEAAa;AACjB,IAAI,+DAAS;AACb;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,2DAAO;AACb;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,uDAAuD;AACvD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,MAAM,iEAAa;AACnB,UAAU,kDAAK;AACf,YAAY,kDAAK;AACjB;AACA,6CAA6C,oBAAoB,EAAE,OAAO;AAC1E,OAAO;AACP,QAAQ,0DAAU,CAAC,kDAAK;AACxB;AACA;AACA;AACA;AACA,uDAAuD;AACvD;AACA;AACA;;AAEA;AACA,cAAc,kDAAK;AACnB,kBAAkB;AAClB;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,UAAU;AAC5B;AACA,wCAAwC;AACxC,wCAAwC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,2DAAO;AACb;;AAEA;AACA,cAAc,kDAAK;AACnB,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA,mCAAmC;AACnC,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA,gBAAgB,kDAAK;AACrB;AACA;AACA;AACA,aAAa;AACb,qCAAqC;AACrC,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,2DAAO;AACb;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;;AAEA;AACA,sEAAsE,4DAAQ;AAC9E;;AAEA;AACA,sEAAsE,4DAAQ;AAC9E;;AAEA;AACA,yEAAyE,4DAAQ;AACjF;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;AC5kBA;AAAe;AACf;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;ACJD;AAAe;AACf;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;ACJD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKoB;;;;;;;;;;;;;ACLpB;AAAA;AAAA;AAAmC;;AAE5B;AACP,EAAE,kDAAK;AACP;;AAEe;AACf,EAAE,kDAAK;AACP,EAAE,kDAAK;AACP,CAAC;;;;;;;;;;;;;ACTD;AAAA;AAAO;;;;;;;;;;;;;ACAP;AAAA;AAAA;AAA+B;AACC;;AAEhC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB,sDAAK;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,kBAAkB;AAClB,oBAAoB;AACpB;AACA;AACA;AACA,yBAAyB,sDAAK;AAC9B;AACA;;AAEA;AACA;AACA;AACA,KAAK;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AE;AACpE,yBAAyB,YAAY,aAAa;AAClD;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,SAAS,oDAAG;AACZ;;AAEA;AACA;AACA;;;;;;;;;;;;;ACxEA;AAAA;AAA6C;;AAE7C;;AAEA,YAAY,4CAAG;;AAEf;AACA;AACA;AACA;AACA;AACA,SAAS,2CAAM;AACf;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,0DAA0D,gBAAgB,EAAE;;AAE5E;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEe,kEAAG,EAAC;;;;;;;;;;;;;ACtCnB;AAAe;AACf;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;ACJD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA2C;;AAEpC;;AAEA;AACA;;AAEP;AACA;AACA;AACA,yBAAyB,IAAI;AAC7B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,0DAAM;AACN;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;;AAEA,0DAAM,WAAW,yDAAM;AACvB;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,0DAAM,WAAW,yDAAM;AACvB;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AClXA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA2C;AACyB;AACzB;;AAE3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,qBAAqB,6CAAG,OAAO,4DAAU;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,gDAAO;AACzC;AACA;;AAEe;AACf;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;;AAEA,0DAAM,uBAAuB,yDAAM,CAAC,+CAAK;AACzC;AACA,oBAAoB,kDAAQ,YAAY,kDAAQ;AAChD;AACA,GAAG;AACH;AACA,oBAAoB,gDAAM,YAAY,gDAAM;AAC5C;AACA,GAAG;AACH;AACA,iDAAiD,gDAAO;AACxD;AACA;AACA;AACA;AACA,eAAe,6CAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;AC5DD;AAAA;AAAe;AACf;AACA;AACA,CAAC;;AAEM;AACP;AACA;AACA;AACA;;;;;;;;;;;;;ACTA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAsD;AACE;AACJ;;;;;;;;;;;;;ACFpD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA2C;AACO;AACP;;AAE3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB,6CAAG,OAAO,4DAAU;AACzC;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;;AAEe;AACf;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;;AAEA,0DAAM,WAAW,yDAAM,CAAC,+CAAK;AAC7B;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,6CAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iCAAiC,gDAAO;AACxC;AACA;;AAEO;AACP;AACA;;AAEO;AACP;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,gBAAgB,gDAAO;AACvB;AACA;;AAEA,0DAAM,WAAW,yDAAM,CAAC,+CAAK;AAC7B;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;AC1HD;AAAA;AAAA;AAAO;AACA;;;;;;;;;;;;;ACDP;AAAe;AACf;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;ACJD;AAAA;AAAA;;AAEO;;;;;;;;;;;;;ACFP;AAAe;AACf;AACA,CAAC;;;;;;;;;;;;;ACFD;AAAA;AAAA;AAAA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,iBAAiB,OAAO;AACxB,2BAA2B,WAAW;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,iBAAiB,OAAO;AACxB,2BAA2B,WAAW;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC1CA;AAAe;AACf;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;ACJD;AAAe;AACf;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA,6CAA6C,OAAO;AACpD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,QAAQ;AACR;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;;AC1BA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAmE;AACrC;AACM;AACV;AACQ;AACA;AACR;;AAE1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA;AACA,kBAAkB,yDAAgB;AAClC;;AAEA;AACA;;AAEA;AACA;AACA,mBAAmB,uDAAM;AACzB,WAAW,yDAAQ;AACnB,WAAW,sDAAK;AAChB,KAAK;AACL,2BAA2B,kDAAS;AACpC;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU,qDAAI;AACd;AACA,KAAK;;AAEL;AACA,mDAAmD,OAAO;AAC1D,YAAY,yDAAQ;AACpB;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,+DAA+D;AAC/D;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,+DAA+D;AAC/D;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,OAAO;AACP,iEAAiE;AACjE;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,4FAA4F,yDAAQ,CAAC,4CAAK,YAAY,yDAAQ;AAC9H;;AAEA;AACA,2DAA2D,6CAAI;AAC/D;;AAEA;AACA,CAAC;;;;;;;;;;;;;AC1MD;AAAA;AAAA;AAAA;AAAA;AAAA;AAA8C;AAChB;AACM;AACF;AACA;;AAElC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,yDAAQ;;AAE1B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA,IAAI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A;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA2B;;AAE3B,UAAU,uDAAG;;AAEN;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACVP;AAAA,YAAY;AACZ,YAAY;AACZ;AACA;AACA;;AAEA;AACA,oCAAoC;AACpC;AACA,GAAG,gBAAgB;AACnB;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;;AAEpB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,YAAY,yCAAyC;AACrF;AACA;;AAEA;AACA;AACA;AACA,gCAAgC,YAAY,yCAAyC;AACrF;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;ACnKD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA8C;AACyE;AACA;AACrE;;;;;;;;;;;;;ACHlD;AAAA;AAAA;AAAA;AAAA;AAA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;AAAA;AAAA;AAAuC;AACI;AACI;AACN;AACF;AACA;AACS;;;;;;;;;;;;;ACNhD;AAAA;AACA;AACA;AACA;;AAEe;AACf;AACA,CAAC;;;;;;;;;;;;;ACPD;AAAA;AACA;AACA;AACA;;AAEe;AACf;AACA,CAAC;;;;;;;;;;;;;ACPD;AAAA;AAAA;AAAA;AAA0B;;AAE1B;AACA;AACA,WAAW,qDAAI;AACf;AACA,KAAK;AACL;AACA;;AAEe,wFAAyB,EAAC;;AAElC;;AAEA;;;;;;;;;;;;;ACdP;AAAe;AACf;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,eAAe,OAAO;AACtB;AACA;;AAEA,iDAAiD,OAAO;AACxD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;;;;;;;;;;;;ACnCD;AAAA;AAAA;AAAA;AAAkC;AACJ;AACO;;AAErC;AACA;AACA;;AAEA;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA;;AAEA,6CAA6C,yDAAQ;;AAErD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,gBAAgB;AACnC,aAAa,4DAAQ;AACrB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,uDAAM;AACnC,6BAA6B,uDAAM;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,4BAA4B,OAAO;AACnC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,sEAAsE,yDAAQ;AAC9E;;AAEA;AACA,CAAC;;;;;;;;;;;;;ACjGD;AAAe;AACf;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;ACJD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAgD;AACE;AACN;AACQ;AACJ;AACQ;AAClB;AACA;;;;;;;;;;;;;ACPtC;AAAe;AACf;AACA,CAAC;;;;;;;;;;;;;ACFD;AAAA;AAAA;AAAA;AAAkC;AACJ;AACI;;AAElC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA,iBAAiB,yDAAQ;AACzB;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,qCAAqC,gBAAgB;AACrD,uDAAuD,OAAO;AAC9D;AACA,2DAA2D,uDAAM;AACjE,2DAA2D,uDAAM;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,yDAAG;AACtB;;AAEA,qCAAqC,OAAO;AAC5C;AACA;AACA;AACA;AACA;AACA;;AAEA,oCAAoC,OAAO;AAC3C;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,qCAAqC,OAAO;AAC5C;AACA;AACA;;AAEA;AACA;;AAEA,qCAAqC,OAAO;AAC5C;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,wEAAwE,yDAAQ;AAChF;;AAEA;AACA,wEAAwE,yDAAQ;AAChF;;AAEA;AACA,CAAC;;;;;;;;;;;;;ACnHD;AAAA;AAAA;AAAA;AAAA;AAAkC;AACJ;AACO;AACH;;AAEnB;AACf;AACA;AACA;AACA,iBAAiB,yDAAQ;AACzB;AACA;AACA;AACA;;AAEA;AACA,oCAAoC,4DAAQ,QAAQ,6CAAC,EAAE,6CAAC;AACxD,0BAA0B,OAAO;AACjC;;AAEA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;;AAEA;AACA;;AAEA;AACA;AACA,yBAAyB,OAAO;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,yCAAyC;AACzC;AACA;AACA,yBAAyB,uDAAM;AAC/B,yBAAyB,uDAAM;AAC/B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,yCAAyC;AACzC;AACA,uBAAuB,uDAAM;AAC7B,uBAAuB,uDAAM;AAC7B;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;AACA,wEAAwE,yDAAQ;AAChF;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;;;;;;;;;;;;ACjHD;AAAA;AAAkC;;AAEnB;AACf;AACA,iBAAiB,yDAAQ;AACzB;AACA;;AAEA,6CAA6C,yDAAQ;AACrD;AACA;;AAEA;AACA,qCAAqC,OAAO;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,wEAAwE,yDAAQ;AAChF;;AAEA;AACA,sEAAsE,yDAAQ;AAC9E;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;;;;;;;;;;;;ACxDD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAqC;AACH;AACH;;AAExB;AACP;AACA;;AAEO;AACP;AACA;;AAEA;AACA;;AAEe;AACf;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,yDAAG;AAClB,gBAAgB,sDAAK;AACrB,cAAc,4DAAQ;;AAEtB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA,mBAAmB,gBAAgB;AACnC;;AAEA;AACA;AACA,OAAO;;AAEP,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,2CAA2C,OAAO;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA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;AAEO;AACP;AACA;;AAEO;AACP;AACA;;AAEA;AACO;AACP;AACA;;AAEO;AACP;AACA;;AAEA;AACO;AACP,UAAU,qDAAI;AACd;AACA;;;;;;;;;;;;;AChCA;AAAA;AAAA;AAAA;AAA2F;AAC9D;AACI;;AAEjC;AACA;AACA;AACA;AACA;AACA,eAAe;;AAEf;AACA,UAAU,gDAAI;AACd;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAY,gDAAO,SAAS,gDAAO;AACnC,eAAe,oDAAG;AAClB,kCAAkC,oDAAG,mBAAmB,oDAAG,UAAU,oDAAG;AACxE;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,YAAY,gDAAO,SAAS,gDAAO;AACnC,eAAe,oDAAG;AAClB,gBAAgB,oDAAG;AACnB,gBAAgB,oDAAG;AACnB,OAAO,oDAAG;AACV;AACA;AACA;;AAEA;AACA,YAAY,gDAAO,SAAS,gDAAO;AACnC,eAAe,oDAAG;AAClB,mBAAmB,oDAAG;AACtB,mBAAmB,oDAAG;AACtB,UAAU,oDAAG;AACb,UAAU,sDAAK,CAAC,qDAAI;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAY,gDAAO,SAAS,gDAAO;AACnC;AACA,eAAe,oDAAG;AAClB,gBAAgB,oDAAG;AACnB,gBAAgB,oDAAG;AACnB,OAAO,oDAAG;AACV;AACA;;AAEA;AACA,YAAY,gDAAO,SAAS,gDAAO;AACnC,eAAe,oDAAG;AAClB,mBAAmB,oDAAG;AACtB,mBAAmB,oDAAG;AACtB,UAAU,oDAAG;AACb;AACA;AACA;AACA,UAAU,qDAAI;AACd,UAAU,qDAAI;AACd,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA;AACA,EAAE,0DAAM;;AAER;AACA;AACA;AACA;;AAEA;AACA,UAAU,iDAAQ;AAC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AE,WAAW,2CAAE;AAC5F,CAAC;;;;;;;;;;;;;ACrLD;AAAA;AAA2C;;AAE5B;AACf;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,+DAA+D,6DAAa;AAC5E,KAAK;AACL;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;ACnBD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAqC;AACA;AACM;AACS;AACrB;;AAEhB;AACf;AACA;AACA,qBAAqB,0DAAU;AAC/B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,mBAAmB,sDAAK;AACxB,0BAA0B,mEAAe;AACzC;AACA;AACA,UAAU,0DAAU;AACpB,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,OAAO;AAC5B;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;AACA,oCAAoC,+CAAM,GAAG,gDAAO,GAAG,+CAAM;AAC7D,oCAAoC,+CAAM,GAAG,gDAAO,GAAG,+CAAM;AAC7D;;;;;;;;;;;;;AClIA;AAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;AC1DD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAwC;AACH;AACJ;AACI;AACN;;AAE/B;;AAEA;AACA;;AAEe;;AAEf;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA,WAAW,oDAAG,cAAc,gDAAO;AACnC,UAAU,oDAAG,cAAc,gDAAO;AAClC,UAAU,oDAAG,cAAc,gDAAO;AAClC,gCAAgC;AAChC;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,uBAAuB,0DAAU;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,yCAAyC,OAAO;AAChD,kHAAkH,OAAO;AACzH;AACA,yBAAyB,yEAAyE;AAClG,gBAAgB,0EAA0E;AAC1F;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,gCAAgC,sDAAK;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,0DAAU;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,cAAc,wDAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;;ACvKA;AAAA;AAA0C;;AAE1C;AACA;AACA;AACA,iBAAiB;AACjB,iBAAiB;AACjB,iBAAiB;AACjB,yBAAyB;AACzB;;AAEA;AACA;AACA;AACe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAQ,8DAAU;AAClB;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;;AAEA;AACA;AACA;;AAEA,8BAA8B,OAAO;AACrC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,OAAO;AAC/C,SAAS;AACT;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,qCAAqC,QAAQ;AAC7C,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACpGA;AAAe;;AAEf;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;;;;;;;;;;;;ACXD;AAAe;AACf;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;ACJD;AAAA;AAAA;AAAA;AAAgE;AACd;AACN;;AAE5C;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS,4DAAQ;AACjB;;AAEA;AACA;AACA,yCAAyC,OAAO;AAChD,SAAS,4DAAQ;AACjB;AACA;AACA,WAAW,4DAAQ;AACnB;AACA;AACA;AACA;AACA,6DAA6D,iDAAQ;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW,mEAAe;AAC1B;;AAEA;AACA;AACA;;AAEA;AACA,qBAAqB,gDAAO,aAAa,gDA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;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEe,yEAAU,EAAC;;;;;;;;;;;;;ACjD1B;AAAA;AAA8B;;AAE9B;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,gDAAI;AACjB,WAAW,gDAAI;AACf,gBAAgB,gDAAI;AACpB,cAAc,gDAAI;AAClB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEe,2EAAY,EAAC;;;;;;;;;;;;;AC3B5B;AAAA;AAAgC;;AAEhC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,oCAAoC,qDAAI;AACxC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU,qDAAI;;AAEd;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEe,6EAAc,EAAC;;;;;;;;;;;;;ACnG9B;AAAA;AAAA;AAAA;AAA+B;AACD;;AAEf;AACf;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,4CAAG;AACpD;AACA;AACA;AACA,GAAG;AACH,UAAU,gDAAI;AACd;;;;;;;;;;;;;AC5CA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAsC;AACJ;AACD;AACI;AACI;AACF;AACA;AACF;;AAEtB;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM,0DAAM;AACZ;AACA;AACA;;AAEA;AACA,IAAI,0DAAM,0BAA0B,gDAAQ;AAC5C,WAAW,gDAAQ;AACnB;;AAEA;AACA,IAAI,0DAAM,0BAA0B,mDAAW;AAC/C,WAAW,mDAAW;AACtB;;AAEA;AACA,IAAI,0DAAM,0BAA0B,kDAAU;AAC9C,WAAW,kDAAU;AACrB;;AAEA;AACA,IAAI,0DAAM,0BAA0B,oDAAY;AAChD,WAAW,oDAAY;AACvB;;AAEA;AACA,kFAAkF,oDAAQ;AAC1F;;AAEA;AACA;AACA,qDAAqD,kDAAU,QAAQ,mDAAW;AAClF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;;;;;;;;;;;;AC5DD;AAAA;AAAA;AAAA;AAAgC;AACA;AACF;;AAE9B,gBAAgB,yDAAK;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS,gDAAI;AACb;AACA;AACA,GAAG;AACH;AACA;AACA,yBAAyB,gDAAI;AAC7B,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,gBAAgB,qDAAI;AACpB;AACA;;AAEe,2EAAY,EAAC;;;;;;;;;;;;;AC5C5B;AAAA;AAAe;AACf;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC1DA;AAAA;AAAuC;;AAExB;AACf,SAAS,oDAAG,gBAAgB,gDAAO,IAAI,oDAAG,gBAAgB,gDAAO;AACjE,CAAC;;;;;;;;;;;;;ACJD;AA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AoB,gDAAO;AAC/D;;AAEA;AACA,CAAC;;;;;;;;;;;;;AC3ED;AAAA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA;AACA,GAAG;AACH;AACA;AACA,CAAC;;;;;;;;;;;;;ACpED;AAAA;AAAe;AACf;AACA;AACA;AACA,CAAC;;AAEM;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,yBAAyB,yBAAyB,EAAE;AACpD,sBAAsB,sBAAsB,EAAE;AAC9C,yBAAyB,yBAAyB,EAAE;AACpD,uBAAuB,uBAAuB,EAAE;AAChD,4BAA4B,4BAA4B,EAAE;AAC1D,0BAA0B,0BAA0B;AACpD;;;;;;;;;;;;;ACzBA;AAAA;AAAA;AAAO;AACP;AACA;;AAEO;AACP;AACA;AACA;;;;;;;;;;;;;ACPA;AAAA;AAAA;AAAO;;AAEA;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;ACfA;AAAA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;;;;;;;;;;;;ACnFD;AAAA;AAAO;AACP;AACA;;AAEe;AACf;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;ACRD;AAAe;AACf;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;ACND;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA,CAAC;;;;;;;;;;;;;ACXD;AAAe;AACf;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;;;;;;;;;;;;ACND;AAAe;AACf;AACA;AACA;AACA;AACA;AACA,oDAAoD,OAAO;AAC3D;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;;;;;;;;;;;;ACZD;AAAe;AACf;AACA;AACA;AACA,kDAAkD,OAAO;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;ACZD;AAAe;AACf;AACA;AACA;AACA,+CAA+C,QAAQ;AACvD;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;ACTD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAoC;AACF;AACY;AACF;AACZ;AACE;AACA;AACU;AACI;AACV;AACF;;AAErB;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,qBAAqB,QAAQ;AAC7B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS,iDAAU;AACnB,QAAQ,gDAAS;AACjB,aAAa,qDAAc;AAC3B,cAAc,sDAAe;AAC7B,OAAO,+CAAQ;AACf,QAAQ,gDAAS;AACjB,QAAQ,gDAAS;AACjB,aAAa,qDAAc;AAC3B,eAAe,uDAAgB;AAC/B,UAAU,kDAAW;AACrB,SAAS,kDAAU;AACnB;AACA;;;;;;;;;;;;;AC9EA;AAAe;AACf;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;;;;;;;;;;;;ACRD;AAAe;AACf;AACA;AACA,wBAAwB;AACxB,kBAAkB,kCAAkC;AACpD;AACA,GAAG;AACH;AACA,CAAC;;;;;;;;;;;;;ACRD;AAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC7BA;AAAe;AACf;AACA;AACA;AACA;AACA,GAAG;AACH,CAAC;;;;;;;;;;;;;ACND;AAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,CAAC;;;;;;;;;;;;;ACRD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAgD;AACU;AACV;AACW;AACF;AACL;AACF;AACR;AACY;AACO;AACJ;AACE;AACQ;AACF;AACI;;;;;;;;;;;;;ACdrE;AAAA;AAA2C;;AAE5B;AACf,4BAA4B,yDAAO,CAAC,+CAAK;;AAEzC;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;;AAEA;;AAEA;AACA,aAAa,cAAc;AAC3B;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa,kBAAkB;AAC/B,mBAAmB,cAAc;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,iBAAiB,cAAc;AAC/B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACrHA;AAAA;AAAA;AAAA;AAA0C;AACD;AACa;;AAEtD;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA,gBAAgB,yDAAY;;AAE5B;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,kCAAkC,yDAAY;AAC9C;AACA;AACA;AACA;AACA;;AAEA;AACA,wCAAwC,8DAAQ;AAChD;;AAEA;AACA;AACA;;AAEA;AACA,uEAAuE,4DAAQ;AAC/E;;AAEA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,wBAAwB,OAAO;AAC/B,UAAU,gEAAW;AACrB,wBAAwB,OAAO;AAC/B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC9EA;AAAA;AAAA;AAAmC;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEO;AACP;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,mBAAmB,OAAO;AAC1B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,mBAAmB,wCAAwC,KAAK,2DAAO;;AAEvE;AACA,aAAa,OAAO;;AAEpB;AACA;;AAEe;AACf;AACA;AACA,CAAC;;;;;;;;;;;;;ACrHD;AAAA;AAAA;AAA2C;AACC;;AAE7B;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,yDAAS;AACxC;AACA;;AAEA;AACA;AACA;AACA,QAAQ,gEAAW;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;;;;;;;;;;;;ACnDD;AAAA;AAAA;AAAwC;AACiB;;AAEzD;AACA,eAAe,UAAU;AACzB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEe;AACf;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,eAAe,OAAO;AACtB,yCAAyC,wDAAI;AAC7C;AACA;AACA;AACA;AACA;;AAEA,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,oCAAoC,oCAAoC,KAAK,EAAE,aAAa,iEAAa;AACzG;AACA;;AAEA;AACA;;AAEA;AACA,oCAAoC,8DAAQ;AAC5C;;AAEA;AACA,0CAA0C,8DAAQ;AAClD;;AAEA;AACA,CAAC;;;;;;;;;;;;;ACxED;AAAA;AAA0C;;AAE1C;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAgB;AAChB,gBAAgB;AAChB,aAAa;AACb,aAAa;AACb,aAAa;AACb,aAAa;AACb,gBAAgB;AAChB,aAAa;AACb;;AAEA,mCAAmC,wDAAI;;AAEvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB,QAAQ;AAC7B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACe;AACf;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;;;;;;;;;;;;AC5OD;AAAe;AACf;AACA;AACA;;AAEA,6BAA6B,OAAO;AACpC;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;AC7CD;AAAe;AACf;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA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ACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;;AAEA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA,2BAA2B;AAC3B;AACA;AACA,wCAAwC;AACxC,2BAA2B;AAC3B;AACA,KAAK,OAAO;AACZ;AACA,cAAc,SAAS,0DAAM,SAAS;AACtC;AACA;AACA;;AAEA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,OAAO;AACnC;AACA,SAAS;AACT,CAAC;;;;;;;;;;;;;AC/DD;AAAA;AAAA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;ACzBD;AAAA;AAAA;AAAA;AAAA;AAAkC;AACY;;AAE9C;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc,aAAa,0DAAM,SAAS,GAAG,aAAa,0DAAM,SAAS;AACzE,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,gCAAgC,gCAAgC;AAChE,cAAc,sDAAsD,0DAAM,OAAO;AACjF,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,cAAc,qDAAqD,0DAAM,OAAO;AAChF,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc,aAAa,0DAAM,SAAS,GAAG,aAAa,0DAAM,SAAS;AACzE,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO,mDAAmD,kDAAQ;AAC3D,mDAAmD,kDAAQ;;;;;;;;;;;;;AC9DlE;AAAA;AAAA;AAAA;AAAmD;;AAEnD;AACA;AACA;AACA;;AAEO;AACP,+BAA+B,sDAAQ;AACvC;AACA;AACA;AACA;AACA;AACA,SAAS,6DAAS;AAClB;;AAEO;AACP,4BAA4B,sDAAQ;AACpC;AACA;AACA,iEAAiE,sDAAQ;AACzE;AACA,SAAS,6DAAS;AAClB;;;;;;;;;;;;;ACxBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA+B;AACJ;AACa;AACX;AACI;AACA;AACA;AACI;AACuB;;AAE7C;AACf;AACA,wCAAwC,4DAAQ;AAChD,0BAA0B,kDAAM;AAChC,+BAA+B,sDAAK,eAAe,+CAAG,IAAI,kDAAM;AAChE,qBAAqB,8CAAK,GAAG,+CAAG;AAChC,4BAA4B,gDAAI;AAChC,QAAQ,qEAAa,MAAM,uDAAW;AACtC,2BAA2B,sDAAY;AACvC,0FAA0F,kDAAM;AAChG,QAAQ,kDAAM;AACd,CAAC;;;;;;;;;;;;;ACrBD;AAAA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,CAAC;;;;;;;;;;;;;AC/DD;AAAA;AAAA;AAAA;AAA0C;;;;;;;;;;;;;ACA1C;AAAA;AACA;AACA;AACA;;AAEA;AACA;AACA,6BAA6B;AAC7B;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEe,mEAAI,EAAC;;;;;;;;;;;;;ACjIpB;AAAe;AACf;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;;;;;;;;;;;;ACdD;AAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;;;;;;;;;;;;ACnBD;AAAe;AACf;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;;AAEA;AACA,CAAC;;;;;;;;;;;;;ACfD;AAAA;AACA;AACA;AACA;AACe;AACf;AACA,CAAC;;;;;;;;;;;;;ACND;AAAA;AAA+B;;AAE/B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB,OAAO;AACxB,uBAAuB,yDAAK;AAC5B;AACA;;AAEA,gCAAgC;AAChC;;AAEe;AACf;;AAEA;AACA;AACA;AACA;;AAEA,aAAa,OAAO;AACpB;AACA,aAAa,OAAO;;AAEpB;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,mCAAmC,QAAQ;AAC3C,qBAAqB,qCAAqC;;AAE1D;AACA,CAAC;;;;;;;;;;;;;AChDD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAiD;AACQ;AACR;AACQ;AACJ;;;;;;;;;;;;;ACJrD;AAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;;;;;;;;;;;;ACtBD;AAAA;AAAe;AACf;AACA;AACA;AACA,CAAC;;AAED;AACA,wCAAwC;;AAExC;AACA;AACA,cAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,mDAAmD;AACnD,oDAAoD;AACpD;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mDAAmD;AACnD,oDAAoD;AACpD,GAAG;AACH;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,aAAa,OAAO;AACpB;AACA;;AAEA;AACA;;;;;;;;;;;;;ACnFA;AAAe;AACf,kDAAkD;;AAElD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,yCAAyC;AACzC,yCAAyC;AACzC,yCAAyC;AACzC,yCAAyC;AACzC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;AC1CD;AAAe;AACf;AACA;AACA,8CAA8C;AAC9C,GAAG;AACH;AACA,CAAC;;;;;;;;;;;;;ACND;AAAe;AACf;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;ACJD;AAAA;AAA6B;;AAEd;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,2BAA2B,gDAAI;AAC/B;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,YAAY,gDAAI;AAChB,YAAY,gDAAI;AAChB,YAAY,gDAAI;AAChB,YAAY,gDAAI;AAChB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;;;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A;AAAA;AAAA;AAA+B;AACE;AACP;AACqB;AACd;;AAEjC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB,0BAA0B;AAC/C;;AAEA;AACA;AACA;AACA;AACA,8CAA8C,2BAA2B,EAAE;AAC3E;;AAEA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,uBAAuB,OAAO;AAC9B,gCAAgC,UAAU;AAC1C;AACA;AACA;AACA;AACA;AACA,OAAO,YAAY,OAAO;AAC1B,uCAAuC,QAAQ;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,UAAU,sDAAK;AACf;;AAEA;AACA;;AAEA;AACA;AACA,qDAAqD,wDAAM;AAC3D;AACA;AACA,6DAA6D;AAC7D;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,kBAAkB,qDAAI;AACtB,0BAA0B,kCAAkC,EAAE;AAC9D,yBAAyB,iCAAiC;AAC1D,KAAK;AACL;;AAEA;AACA;;AAEe;AACf,sBAAsB,+DAAW;;AAEjC;AACA,WAAW,wDAAI;AACf;;AAEA,EAAE,+CAAS;;AAEX;AACA;;;;;;;;;;;;;AChJA;AAAe;AACf;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;ACjBD;AAAe;AACf;AACA,CAAC;;;;;;;;;;;;;ACFD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAkC;AACJ;AACG;;AAE1B,gBAAgB;;AAER;AACf,cAAc,yDAAG;AACjB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,yBAAyB,yDAAG;AAC5B;AACA;AAC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;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,+CAAS;AAClB;;;;;;;;;;;;;ACvCA;AAAA;AAAA;AAAkC;AAC+E;;AAElG;AACf,aAAa,yDAAQ;AACrB;AACA,cAAc,iEAAe;AAC7B;AACA;AACA;AACA,4DAA4D,iEAAe;AAC3E,aAAa,8DAAY;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D,gEAAc;AAC1E;AACA;AACA;AACA;AACA,4DAA4D,gEAAc;AAC1E;AACA;AACA;AACA,SAAS,wDAAM;AACf,CAAC;;;;;;;;;;;;;AC5BD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA4C;AACsE;AACxE;AACd;AAC4B;AACvB;AACP;;AAE1B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEO;AACP,cAAc,2DAAU,CAAC,oDAAQ,EAAE,oDAAQ;AAC3C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAc,yDAAQ,cAAc,aAAa,EAAE;AACnD;AACA,eAAe,yDAAQ;AACvB;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP,wBAAwB,yDAAQ;AAChC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,qCAAqC,0CAAG;AACxC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,qDAAI;AACrB;AACA;;AAEA;AACA,WAAW,wDAAI;AACf;;AAEA;AACA;;AAEe;AACf,SAAS,+CAAS,gBAAgB,gDAAQ,EAAE,iDAAS,EAAE,gDAAQ,EAAE,+CAAO,EAAE,gDAAQ,EAAE,kDAAU,EAAE,kDAAU,EAAE,uDAAe,EAAE,yDAAU;AACvI,CAAC;;;;;;;;;;;;;ACtID;AAAA;AAAA;AAAA;AAAA;AAAgC;AACS;AACiE;AACzE;;AAElB;AACf,SAAS,+CAAS,OAAO,sDAAQ,CAAC,+CAAO,EAAE,gDAAQ,EAAE,+CAAO,EAAE,8CAAM,EAAE,+CAAO,EAAE,iDAAS,EAAE,iDAAS,EAAE,sDAAc,EAAE,wDAAS;AAC9H,CAAC;;;;;;;;;;;;;ACPD;AAAe;AACf;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;ACJD;AAAA;AAAA;AAAgC;AACF;;AAEf;AACf,SAAS,uDAAM,CAAC,wDAAO;AACvB,CAAC;;;;;;;;;;;;;ACLD;AAAA;AAAA;AAAoC;AACD;;AAEnC;AACA;AACA;AACA;AACA,mBAAmB,iDAAK,8CAA8C,iDAAK;AAC3E;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEe;AACf,iBAAiB,0DAAS;AAC1B;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;ACxBD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA2C;AACE;AACJ;AACI;AACJ;AACQ;AACE;AACJ;AACJ;AACM;AACM;AACR;AACM;AACC;AACb;AACI;AACF;AACO;;;;;;;;;;;;;ACjBlD;AAAA;AAAA;;AAEe;AACf;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;;;;;;;;;;;;AC1BA;AAAe;AACf;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;ACJD;AAAA;AAAA;AAAwC;AACZ;;AAEb;AACf,cAAc,4DAAW;AACzB;AACA,SAAS,sDAAK;AACd,CAAC;;;;;;;;;;;;;ACPD;AAAA;AAAsC;;AAEvB;AACf;AACA;AACA,SAAS,mDAAU,2BAA2B,OAAO,mDAAU,sBAAsB;AACrF,CAAC;;;;;;;;;;;;;ACND;AAAA;AAAO;;AAEQ;AACf;AACA;AACA;AACA;AACA;AACA,CAAC,EAAC;;;;;;;;;;;;;ACRF;AAAe;AACf;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;;;;;;;;;;;;;ACZD;AAAA;AAAkD;;AAEnC;AACf;AACA,YAAY,0DAAS;AACrB,YAAY,0DAAS,eAAe,qDAAI;AACxC,CAAC;;;;;;;;;;;;;ACND;AAAA;AAAkD;;AAEnC;AACf;AACA,YAAY,0DAAS;AACrB,YAAY,0DAAS,qCAAqC,qDAAI;AAC9D,CAAC;;;;;;;;;;;;;ACND;AAAA;AAAiC;;AAElB;AACf,mDAAmD,wDAAO;AAC1D;AACA;AACA,GAAG;AACH,CAAC;;;;;;;;;;;;;ACPD;AAAA;AAAqC;;AAErC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,iBAAiB,0DAAS;;AAE1B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;ACxDD;AAAe;AACf;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;ACLD;AAAA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEe;AACf;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;AC1ED;AAAA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEe;AACf;AACA,CAAC;;;;;;;;;;;;;ACZD;AAAA;AAAA;AAAA;AAAkC;AACA;AACC;;AAEnC,oBAAoB;;AAEpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAQ,gBAAgB;AACxB;AACA;AACA;AACA,KAAK;AACL,qBAAqB,gDAAS;AAC9B;AACA;;AAEA;AACA,QAAQ,iBAAiB;AACzB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,iBAAiB;AAC9B;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,gBAAgB;AAC7B;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,qBAAqB,gDAAS;AAC9B;AACA;;AAEA;AACA,aAAa,iBAAiB;AAC9B;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA;AACA,2BAA2B,eAAe,EAAE;AAC5C;AACA;;AAEA;AACA;AACA;;AAEA,2CAA2C,yDAAQ;;AAEnD,sGAAsG,OAAO;AAC7G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,4CAA4C,iBAAiB;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,eAAe,gDAAS;AACxB;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;ACrHD;AAAe;AACf;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;ACJD;AAAA;AAAoC;;AAEpC;AACA,eAAe,uDAAW;AAC1B;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEe;AACf;AAC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A;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAY;AACZ,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,6CAA6C,OAAO;AACpD;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,0CAA0C,OAAO;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEe;AACf;;AAEA;AACA;AACA,6CAA6C,OAAO;AACpD,4BAA4B,OAAO;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB;AACA,CAAC;;AAEM;AACP;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;;;;;;;;;;;;AC1GA;AAAe;;AAEf,4DAA4D,SAAS;AACrE,4EAA4E,UAAU;AACtF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;;;;;;;;;;;;ACZD;AAAA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;AC3BD;AAAA;AACA;AACA;;AAEe;AACf;AACA,CAAC;;;;;;;;;;;;;ACND;AAAA;AACA;AACA;AACA;;AAEe;AACf;AACA,CAAC;;;;;;;;;;;;;ACPD;AAAA;AAAA;AAAkC;AACC;;AAEpB;AACf,6CAA6C,yDAAQ;;AAErD,qFAAqF,OAAO;AAC5F,+GAA+G,OAAO;AACtH;AACA;AACA;AACA;AACA;AACA;;AAEA,aAAa,gDAAS;AACtB,CAAC;;;;;;;;;;;;;AChBD;AAAA;AAAA;AAAkC;AACO;;AAE1B;AACf,6CAA6C,4DAAW;;AAExD,yFAAyF,OAAO;AAChG,8DAA8D,OAAO;AACrE;AACA;AACA;AACA;AACA;AACA;;AAEA,aAAa,gDAAS;AACtB,CAAC;;;;;;;;;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AAA8B;AACG;;AAEjC;AACA;AACA;;AAEA;AACA,aAAa,gDAAI;AACjB,WAAW,gDAAI;AACf;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,8BAA8B,4BAA4B;AAC1D,8BAA8B,4BAA4B;AAC1D,8BAA8B,4BAA4B,4FAA4F;AACtJ,eAAe,uDAAK,aAAa;AACjC;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA,CAAC;;;;;;;;;;;;;ACnDD;AAAA;AAAiC;;AAEjC;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,8BAA8B;AAC9B,8BAA8B;AAC9B,8BAA8B,oFAAoF,0EAA0E;AAC5L,8BAA8B;AAC9B,eAAe,uDAAK,aAAa;AACjC;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA,CAAC;;;;;;;;;;;;;ACtCD;AAAA;AAAiC;;AAEjC;AACA,oBAAoB,+CAAK;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEe;;AAEf;AACA,4BAA4B,+CAAK;AACjC;;AAEA;AACA;AACA;;AAEA;AACA,CAAC,OAAO,EAAC;;;;;;;;;;;;;ACvDT;AAAA;AAAA;AAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,uDAAuD;AACvD,8CAA8C;AAC9C;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,8BAA8B,sEAAsE;AACpG,8BAA8B,4BAA4B;AAC1D,8BAA8B;AAC9B,iCAAiC;AACjC;AACA;AACA;AACA;AACA;;AAEe;;AAEf;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC,IAAI,EAAC;;;;;;;;;;;;;AC5DN;AAAA;AAAA;AAAA;AAA8B;AACM;;AAE7B;AACP;AACA;AACA;;AAEA;AACA,aAAa,gDAAI;AACjB,WAAW,gDAAI;AACf;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,8BAA8B,4BAA4B;AAC1D,8BAA8B,kDAAkD;AAChF,8BAA8B,4BAA4B;AAC1D,eAAe,0DAAK,aAAa;AACjC;AACA;AACA;AACA;AACA;;AAEe;;AAEf;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC,IAAI,EAAC;;;;;;;;;;;;;AC5DN;AAAA;AAAA;AAAoC;;AAE7B;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,8BAA8B;AAC9B,8BAA8B;AAC9B,8BAA8B,kGAAkG;AAChI,8BAA8B;AAC9B,eAAe,0DAAK,aAAa;AACjC;AACA;AACA;AACA;AACA;;AAEe;;AAEf;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC,IAAI,EAAC;;;;;;;;;;;;;AChDN;AAAA;AAAA;AAAA;AAAmC;AACI;;AAEhC;AACP;AACA;AACA;AACA;;AAEA,oBAAoB,gDAAO;AAC3B;AACA;AACA;AACA;AACA;;AAEA,oBAAoB,gDAAO;AAC3B;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,uDAAuD;AACvD,6CAA6C;AAC7C;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,8BAA8B,sEAAsE;AACpG,8BAA8B;AAC9B,8BAA8B;AAC9B,iCAAiC;AACjC;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEe;;AAEf;AACA,wDAAwD,qDAAQ;AAChE;;AAEA;AACA;AACA;;AAEA;AACA,CAAC,MAAM,EAAC;;;;;;;;;;;;;ACvFR;AAAA;AAAA;AAAA;AAAmD;AACrB;AACQ;;AAEtC;AACA;AACA;AACA;;AAEA;AACA,aAAa,gDAAI;AACjB,WAAW,gDAAI;AACf;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,8BAA8B,4BAA4B;AAC1D,8BAA8B,kDAAkD;AAChF,8BAA8B,4BAA4B;AAC1D,eAAe,4DAAK,aAAa;AACjC;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEe;;AAEf;AACA,8DAA8D,iEAAc;AAC5E;;AAEA;AACA;AACA;;AAEA;AACA,CAAC,MAAM,EAAC;;;;;;;;;;;;;ACzER;AAAA;AAAA;AAA+C;AACT;;AAEtC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,8BAA8B;AAC9B,8BAA8B;AAC9B,8BAA8B,kGAAkG;AAChI,8BAA8B;AAC9B,eAAe,4DAAK,aAAa;AACjC;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEe;;AAEf;AACA,4DAA4D,6DAAY;AACxE;;AAEA;AACA;AACA;;AAEA;AACA,CAAC,MAAM,EAAC;;;;;;;;;;;;;AC7DR;AAAA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,8BAA8B,sEAAsE;AACpG,8BAA8B;AAC9B,0CAA0C;AAC1C;AACA;AACA;;AAEe;AACf;AACA,CAAC;;;;;;;;;;;;;AC9BD;AAAA;AAA8B;;AAE9B;AACA;AACA;;AAEA;AACA,aAAa,gDAAI;AACjB,WAAW,gDAAI;AACf;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA,CAAC;;;;;;;;;;;;;ACxBD;AAAA;AAAA;AAAA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,uDAAuD;AACvD,4DAA4D;AAC5D;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA,iDAAiD;AACjD;AACA,8BAA8B,sEAAsE;AACpG,8BAA8B;AAC9B,8BAA8B,wDAAwD;AACtF,8DAA8D;AAC9D;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,0BAA0B,4BAA4B,EAAE;AACxD,yBAAyB,2BAA2B,EAAE;AACtD,0BAA0B,4BAA4B,EAAE;AACxD,iDAAiD,mDAAmD;AACpG;;AAEO;AACP;AACA;;AAEO;AACP;AACA;;;;;;;;;;;;;ACvGA;AAAA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,gCAAgC,QAAQ;AACxC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,WAAW;AACxB;AACA,aAAa,OAAO;AACpB;AACA,iBAAiB,QAAQ;AACzB;AACA,aAAa,WAAW;AACxB;AACA;;AAEe;AACf;AACA,CAAC;;;;;;;;;;;;;AChED;AAAA;AAAA;AAAA;AAAsC;;AAE/B,oCAAoC,kDAAW;;AAEtD;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEe;;AAEf;AACA;AACA;;AAEA;;AAEA;AACA;;;;;;;;;;;;;ACnCA;AAAA;AAAA;AAAA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,8BAA8B,sEAAsE;AACpG,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA,CAAC;;AAEM;AACP;AACA;;AAEO;AACP;AACA;;;;;;;;;;;;;ACpDA;AAAe;AACf;AACA,CAAC;;;;;;;;;;;;;ACFD;AAAe;AACf;AACA,CAAC;;;;;;;;;;;;;ACFD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAwC;AACE;AACA;AACF;AACqC;AACA;AACrB;AACiB;;AAElB;AACI;AACF;AACI;AACF;AACJ;AACQ;AACV;;AAEc;AACJ;AACR;AACE;AACgB;AACJ;AACR;AACgB;AACJ;AACR;AACI;AACZ;AACoC;AAClC;AACsD;;AAErE;AACoB;AACM;AACV;AACY;AACR;AACM;AACF;AACE;AACF;AACV;AACM;;;;;;;;;;;;;AC7ChE;AAAA;AAAA;AAAA;AAAA;AAA6B;AACQ;AACO;AACQ;;AAErC;AACf,UAAU,2CAAM;AAChB,UAAU,2CAAM;AAChB,gBAAgB,4DAAQ;AACxB;AACA,cAAc,wDAAW;AACzB;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,iDAAiD,oDAAI;;AAErD,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,iEAAiE,4DAAQ;AACzE;;AAEA;AACA,iEAAiE,4DAAQ;AACzE;;AAEA;AACA,uEAAuE,4DAAQ;AAC/E;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;;;;;;;;;;;;ACtDD;AAAA;AAAA;AAAA;AAAiE;AACpC;;AAEtB;AACP;;AAEA;AACA;;AAEA;AACA,gCAAgC,gEAAW;AAC3C;;AAEA;AACA;;AAEe;AACf,oBAAoB,wDAAI,SAAS,kEAAiB;AAClD,CAAC;;;;;;;;;;;;;AClBD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA6B;AACK;AACI;AACe;AACT;;AAE5C;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU,2CAAM;AAChB,UAAU,2CAAM;AAChB;;AAEA;AACA,uBAAuB,+CAAK;AAC5B,qCAAqC,oDAAI;AACzC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,iEAAiE,4DAAQ;AACzE;;AAEA;AACA,iEAAiE,4DAAQ;AACzE;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,WAAW,+DAAW;AACtB,WAAW,+DAAW;AACtB,WAAW,+DAAW;AACtB,WAAW,+DAAW;AACtB;AACA;AACA;;AAEO;AACP;AACA;;AAEO;AACP;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACnFA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAO;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACP;AACA;;AAEO;AACP;AACA;;;;;;;;;;;;;ACnBA;AAAe,4EAAa;;;;;;;;;;;;;ACA5B;AAAe;AACf;AACA,mEAAmE,OAAO;AAC1E,4BAA4B,OAAO;AACnC;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;ACbD;AAAA;AAA6B;;AAEd;AACf;AACA,gDAAgD,OAAO;AACvD,mBAAmB,OAAO;AAC1B,sBAAsB,OAAO;AAC7B;AACA,EAAE,wDAAI;AACN,CAAC;;;;;;;;;;;;;ACTD;AAAe;AACf;AACA,iEAAiE,OAAO;AACxE;AACA,eAAe,OAAO;AACtB;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;ACRD;AAAA;AAA6B;;AAEd;AACf;AACA,0DAA0D,OAAO;AACjE,0BAA0B,OAAO;AACjC;AACA;AACA,EAAE,wDAAI;AACN,CAAC;;;;;;;;;;;;;ACTD;AAAA;AAA6B;;AAEd;AACf;AACA,kCAAkC,OAAO;AACzC,mCAAmC,OAAO;AAC1C;AACA;AACA;AACA;AACA,qBAAqB,OAAO;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,wDAAI;AACN,CAAC;;;;;;;;;;;;;ACvBD;AAAA;AAA6B;;AAEd;AACf;AACA,SAAS,wDAAI,8BAA8B,4BAA4B,EAAE;AACzE,CAAC;;AAED;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACXA;AAAA;AAAA;AAA6B;;AAEd;AACf;AACA,SAAS,wDAAI,8BAA8B,0BAA0B,EAAE;AACvE,CAAC;;AAEM;AACP;AACA;AACA;AACA;;;;;;;;;;;;;ACXA;AAAA;AAAuC;;AAExB;AACf,SAAS,6DAAS;AAClB,CAAC;;;;;;;;;;;;;ACJD;AAAA;AAAA;AAAyC;AACN;;AAEpB;AACf;AACA;AACA;AACA,wBAAwB,iDAAG;AAC3B,cAAc,8DAAU;AACxB;AACA;AACA;AACA;;AAEA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA,CAAC;;;;;;;;;;;;;AC1BD;AAAe;AACf;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;ACJD;AAAA;AAA6B;;AAEd;AACf,SAAS,wDAAI;AACb,CAAC;;;;;;;;;;;;;ACJD;AAAA;AAAA;AAAA;AAAA;AAAqC;AACI;AACJ;AACP;;AAEf;AACf,cAAc,oDAAQ;AACtB,mBAAmB,sDAAU;AAC7B;AACA,mBAAmB,4DAAQ;AAC3B,iBAAiB,4DAAQ,CAAC,4CAAG;AAC7B,iBAAiB,4DAAQ;;AAEzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,4CAAG,YAAY,4CAAG;AACxC;AACA;AACA;AACA;;AAEA,eAAe,OAAO;AACtB;AACA;AACA;AACA;;AAEA;AACA,uDAAuD,qCAAqC,EAAE;AAC9F,sDAAsD,+BAA+B,EAAE;;AAEvF;AACA,kDAAkD,OAAO;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,qEAAqE,4DAAQ;AAC7E;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,0EAA0E,4DAAQ;AAClF;;AAEA;AACA,wEAAwE,4DAAQ;AAChF;;AAEA;AACA,wEAAwE,4DAAQ;AAChF;;AAEA;AACA,CAAC;;;;;;;;;;;;;AC9ED;AAAA;AAAA;AAAO;AACP;AACA;;AAEO;AACP;AACA;;;;;;;;;;;;;ACNA;AAAe;AACf;AACA,CAAC;;;;;;;;;;;;;ACFD;AAAA;AAAA;AAAA;AAAA;AAAiC;AACI;AACK;AACF;;AAExC;AACA;AACA;;AAEe;AACf,aAAa,4DAAQ;AACrB,cAAc,sDAAS;AACvB,eAAe,uDAAU;AACzB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,eAAe,OAAO;AACtB,iEAAiE,OAAO;AACxE;AACA;AACA;AACA;AACA;;AAEA,+BAA+B,OAAO;AACtC;AACA;;AAEA;AACA;AACA;;AAEA;AACA,oEAAoE,4DAAQ,CAAC,+CAAK;AAClF;;AAEA;AACA,qEAAqE,4DAAQ;AAC7E;;AAEA;AACA,mDAAmD,sDAAS,iCAAiC,4DAAQ,CAAC,+CAAK;AAC3G;;AAEA;AACA,oDAAoD,uDAAU;AAC9D;;AAEA;AACA,CAAC;;;;;;;;;;;;;ACxDD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA6B;AACW;AACF;AACI;AACN;AACI;AACI;AACV;AACG;;AAE9B;AACP,EAAE,yDAAM;AACR,EAAE,wDAAK;AACP,EAAE,0DAAO;AACT,EAAE,yDAAM;AACR,EAAE,uDAAI;AACN,EAAE,2DAAQ;AACV,EAAE,sDAAG;AACL;;AAEe;AACf,aAAa,4DAAQ,CAAC,yDAAM;AAC5B,aAAa,4DAAQ;AACrB;;AAEA;AACA;AACA,qCAAqC,oDAAI;AACzC;AACA;AACA;;AAEA;AACA,oEAAoE,4DAAQ;AAC5E;;AAEA;AACA,oEAAoE,4DAAQ;AAC5E;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;;;;;;;;;;;;AC7CD;AAAA;AAAmC;;AAEpB;AACf;AACA,6BAA6B,2CAAE;AAC/B;AACA,4BAA4B,4CAAG;AAC/B;AACA,CAAC,EAAC;;;;;;;;;;;;;ACRF;AAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,EAAC;;;;;;;;;;;;;ACjBF;AAAA;AACA;;AAEe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,EAAC;;;;;;;;;;;;;ACbF;AAAe;AACf;AACA;AACA;AACA;AACA;AACA,CAAC,EAAC;;;;;;;;;;;;;ACNF;AAAA;AAAmC;;AAEnC;AACA,kBAAkB,2CAAE,sBAAsB,2CAAE;AAC5C,kBAAkB,4CAAG;AACrB,mBAAmB,4CAAG;;AAEP;AACf;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B,cAAc,4CAAG;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,EAAC;;;;;;;;;;;;;ACvBF;AAAA;;AAEe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,EAAC;;;;;;;;;;;;;ACVF;AAAA;AACA;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,EAAC;;;;;;;;;;;;;ACzBF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAuC;;AAEvC;AACO;AACA;AACA;AACA;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAEc;AACf,WAAW,0DAAY;AACvB;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC1BA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAkH;AAC1D;AACJ;AACF;;;;;;;;;;;;;ACHlD;AAAA;AAAA;AAA6C;;AAEtC;;AAEP;AACA;AACA;;AAEA;AACA;AACA,MAAM,mEAAS;;AAEA,wEAAS,EAAC;;;;;;;;;;;;;ACZzB;AAAA;AAAA;AAA4C;AACA;;AAE5C;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAM,kEAAQ,CAAC,0DAAY;;AAEZ,uEAAQ,EAAC;;;;;;;;;;;;;ACZxB;AAAA;AAAA;AAWiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAU;AACV;;AAEe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,iDAAS,cAAc,yDAAS;AACxE,iBAAiB,8CAAM;AACvB;AACA;AACA;AACA,SAAS;AACT;AACA,wCAAwC,kDAAU,cAAc,0DAAU;AAC1E,iBAAiB,+CAAO;AACxB;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,+BAA+B,kBAAkB;AACjD;AACA,KAAK;AACL;AACA;AACA,+BAA+B,kBAAkB;AACjD;AACA,KAAK;AACL;AACA;AACA,+BAA+B,kBAAkB;AACjD;AACA,KAAK;AACL;AACA;AACA,+BAA+B,kBAAkB;AACjD;AACA;AACA;AACA;;AAEA,YAAY,4BAA4B;AACxC;AACA;AACA,kCAAkC;;AAElC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAE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ACH;;AAEO;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC5BP;AAAA;AAAA;AAAqC;;AAErC,WAAW,4DAAQ;AACnB;AACA;AACA,CAAC;AACD;AACA,CAAC;AACD;AACA,CAAC;AACD;AACA,CAAC;;AAED;AACA;AACA,2DAA2D,4DAAQ;AACnE;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;;AAEe,mEAAI,EAAC;AACb;;;;;;;;;;;;;ACzBP;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIoB;;AAIE;;AAIC;;;;;;;;;;;;;ACZvB;AAAA;AAAsC;;AAEvB;AACf,cAAc,+CAAK;AACnB;AACA,wCAAwC,qDAAG;AAC3C;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;;;;;;;;;;;;ACZD;AAAA;AAAiC;;AAElB;AACf,cAAc,+CAAK;AACnB;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;;;;;;;;;;;;ACVD;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qIAAqI,mBAAmB;;AAEjJ;AACP;AACA;;AAEA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;;AAEO;AACP,QAAQ;AACR,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,oBAAoB;AACpB;AACA,8BAA8B;AAC9B;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;;;;;;;;;;;;AC7GA;AAAA;AAAA;AAAiD;AACE;;AAEnD;;AAEe;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA,4CAA4C,iEAAS;AACrD,mBAAmB,+DAAU;AAC7B;AACA;AACA;;AAEA;AACA,CAAC;;;;;;;;;;;;;ACpBD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA8B;AAC8B;AACd;AACM;;;;;;;;;;;;;ACHpD;AAAA;AAAiE;;AAElD;AACf;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA,kDAAkD,eAAe,UAAU;AAC3E,8BAA8B,gEAAQ,qBAAqB,8DAAM;AACjE,qBAAqB,6DAAK;AAC1B;AACA;AACA;AACA;;AAEA;AACA,CAAC;;;;;;;;;;;;;ACvBD;AAAA;AAAA;AAAA;AAAuC;AACU;AACE;;AAEnD,sDAAS,uBAAuB,qDAAmB;AACnD,sDAAS,wBAAwB,sDAAoB;;;;;;;;;;;;;ACLrD;AAAA;AAAwC;;AAEzB;AACf;AACA,IAAI,6DAAS;AACb,GAAG;AACH,CAAC;;;;;;;;;;;;;ACND;AAAA;AAAA;AAAA;AAAA;AAAyD;AACR;AACV;AACV;;AAE7B;AACA;AACA;AACA;AACA,QAAQ,sDAAc;AACtB;;AAEA;AACA;AACA;AACA;AACA,kCAAkC,oDAAG;AACrC;AACA;AACA;AACA;;AAEe;AACf;AACA;;AAEA,sBAAsB,+DAAU;AAChC;AACA,GAAG;AACH,SAAS,kEAAK,oCAAoC,oDAAG;AACrD;;AAEA,2DAA2D,OAAO;AAClE,8DAA8D,OAAO;AACrE;AACA,QAAQ,uEAAQ;AAChB;AACA;AACA;;AAEA,aAAa,+DAAU;AACvB,CAAC;;;;;;;;;;;;;ACzCD;AAAA;AAAA;AAAA;AAAA;AAA+E;AACxC;AACD;AACK;;AAE3C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,iBAAiB,8DAAS,uCAAuC,sEAAoB,GAAG,uDAAW;AACnG;AACA,sEAAsE,4DAAU;AAChF;AACA;AACA,CAAC;;;;;;;;;;;;;AC7ED;AAAA;AAAuC;;AAEvC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA;AACA,iBAAiB,8DAAS;AAC1B;AACA,CAAC;;;;;;;;;;;;;AC3CD;AAAA;AAAwC;;AAExC;AACA;AACA,IAAI,yDAAI;AACR;AACA;;AAEA;AACA;AACA,IAAI,yDAAI;AACR;AACA;;AAEe;AACf;;AAEA;AACA;AACA;AACA;AACA,QAAQ,wDAAG;AACX,CAAC;;;;;;;;;;;;;ACtBD;AAAA;AAAuC;;AAEvC;AACA;AACA,IAAI,wDAAG;AACP;AACA;;AAEA;AACA;AACA,IAAI,wDAAG;AACP;AACA;;AAEe;AACf;;AAEA;AACA;AACA;AACA;AACA,QAAQ,wDAAG;AACX,CAAC;;;;;;;;;;;;;ACtBD;AAAA;AAAuC;;AAEvC;AACA;AACA;AACA,IAAI,wDAAG;AACP;AACA;;AAEe;AACf;;AAEA;AACA;AACA,QAAQ,wDAAG;AACX,CAAC;;;;;;;;;;;;;ACfD;AAAA;AAAkC;;AAEnB;AACf;AACA;AACA,kBAAkB,cAAc;AAChC,eAAe,mBAAmB,6BAA6B;;AAE/D;AACA,qBAAqB,wDAAG;AACxB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL,GAAG;AACH,CAAC;;;;;;;;;;;;;ACzBD;AAAA;AAAA;AAAqC;AACC;;AAEvB;AACf,2CAA2C,4DAAO;;AAElD,qFAAqF,OAAO;AAC5F,4FAA4F,OAAO;AACnG;AACA;AACA;AACA;AACA;;AAEA,aAAa,oDAAU;AACvB,CAAC;;;;;;;;;;;;;ACfD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAuC;AACC;AACU;AACR;AACM;AACR;AACI;AACF;AACN;AACQ;AACA;AACM;AACA;AACR;AACU;AACZ;AACU;AACE;AACV;AACJ;;AAEtC;;AAEO;AACP;AACA;AACA;AACA;AACA;;AAEe;AACf,SAAS,8DAAS;AAClB;;AAEO;AACP;AACA;;AAEA,0BAA0B,sDAAS;;AAEnC;AACA;AACA,UAAU,mDAAiB;AAC3B,aAAa,sDAAoB;AACjC,UAAU,kDAAiB;AAC3B,SAAS,iDAAgB;AACzB,aAAa,sDAAoB;AACjC,cAAc,uDAAqB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,8CAAa;AACnB,QAAQ,gDAAe;AACvB,aAAa,qDAAoB;AACjC,SAAS,kDAAgB;AACzB,cAAc,uDAAqB;AACnC,QAAQ,iDAAe;AACvB,aAAa,sDAAoB;AACjC,UAAU,kDAAiB;AAC3B,SAAS,kDAAgB;AACzB,SAAS,iDAAgB;AACzB,YAAY,oDAAmB;AAC/B,QAAQ,gDAAe;AACvB,OAAO,gDAAc;AACrB;;;;;;;;;;;;;ACnEA;AAAA;AAAA;AAA+B;AACqD;;AAErE;AACf;AACA,kCAAkC,gEAAiB;AACnD,qBAAqB,8CAAK,GAAG,6DAAc;AAC3C,aAAa,sDAAK,eAAe,6DAAc;AAC/C,QAAQ,gEAAiB;AACzB,CAAC;;;;;;;;;;;;;ACTD;AAAA;AAAsC;;AAEvB;AACf;;AAEA,+JAA+J,OAAO;AACtK,wHAAwH,OAAO;AAC/H;AACA;AACA;AACA;AACA;;AAEA,QAAQ,QAAQ;AAChB;AACA;;AAEA,aAAa,oDAAU;AACvB,CAAC;;;;;;;;;;;;;AClBD;AAAA;AAA6C;;AAE7C;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA,oCAAoC,iDAAI,GAAG,gDAAG;AAC9C;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEe;AACf;;AAEA;AACA,QAAQ,wDAAG;AACX;AACA,CAAC;;;;;;;;;;;;;AC/BD;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA,CAAC;;;;;;;;;;;;;ACVD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAqC;AACG;;AAExC,cAAc,4DAAQ;AACtB;;AAEO;AACA;AACA;AACA;AACA;AACA;AACA;;AAEQ;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,CAAC;;AAEM;AACP;AACA,0DAA0D;AAC1D;AACA;;AAEO;AACP;AACA,0DAA0D;AAC1D;AACA;;AAEO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,sDAAK;;AAEpB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,2CAA2C;AAC3C,sCAAsC,wDAAO;;AAE7C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,wDAAwD;AACxD;AACA,0DAA0D;AAC1D;AACA,IAAI,wDAAO;AACX;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,wCAAwC;AACxC;;AAEA;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;;;;;;;;;;;;;ACxJA;AAAA;AAAA;AAAA;AAAsC;AACA;AACM;;AAE7B;AACf;AACA;;AAEA,6CAA6C,6DAAQ;;AAErD,qFAAqF,OAAO;AAC5F,+GAA+G,OAAO;AACtH;AACA;AACA;AACA,QAAQ,4DAAQ,qCAAqC,wDAAG;AACxD;AACA;AACA;;AAEA,aAAa,oDAAU;AACvB,CAAC;;;;;;;;;;;;;ACrBD;AAAA;AAAA;AAAA;AAAyC;AACH;AACM;;AAE7B;AACf;AACA;;AAEA,6CAA6C,gEAAW;;AAExD,yFAAyF,OAAO;AAChG,8DAA8D,OAAO;AACrE;AACA,yFAAyF,wDAAG,uCAAuC,OAAO;AAC1I;AACA,YAAY,4DAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,aAAa,oDAAU;AACvB,CAAC;;;;;;;;;;;;;ACzBD;AAAA;AAAuC;;AAEvC,gBAAgB,sDAAS;;AAEV;AACf;AACA,CAAC;;;;;;;;;;;;;ACND;AAAA;AAAA;AAAA;AAAA;AAAA;AAA+E;AAC5C;AACD;AACI;AACK;;AAE3C;AACA;AACA;AACA;AACA;AACA,kBAAkB,0DAAK;AACvB,oDAAoD,0DAAK;AACzD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,kBAAkB,0DAAK;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,kBAAkB,0DAAK;AACvB;AACA;AACA,6EAA6E,0DAAK;AAClF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,wDAAG;AACtB;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEe;AACf,yCAAyC,sEAAoB,GAAG,uDAAW;AAC3E;AACA;AACA;AACA;AACA,+CAA+C,4DAAU;AACzD;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;AC/ED;AAAA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;ACvBD;AAAA;AAAsC;;AAEtC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA,qBAAqB,4DAAU;AAC/B;AACA,CAAC;;;;;;;;;;;;;ACnBD;AAAA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;ACvBD;AAAA;AAAA;AAA6C;AACD;;AAE7B;AACf;AACA;AACA,YAAY,uDAAK;;AAEjB,2DAA2D,OAAO;AAClE,8DAA8D,OAAO;AACrE;AACA,sBAAsB,wDAAG;AACzB,QAAQ,4DAAQ;AAChB;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA,aAAa,oDAAU;AACvB,CAAC;;;;;;;;;;;;;ACvBD;AAAA;AAAA;AAAuC;;AAEvC;AACA;AACA;AACA,mBAAmB,wDAAG;AACtB;;AAEA;AACA;AACA;AACA;AACA;AACA,wCAAwC,OAAO;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mBAAmB,wDAAG;AACtB;;AAEA;AACA;AACA;AACA;AACA;AACA,oBAAoB,yBAAyB,2BAA2B,OAAO;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEe;AACf;;AAEA;;AAEA;AACA,gBAAgB,wDAAG;AACnB,wCAAwC,OAAO;AAC/C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAEM;AACP;;AAEA;AACA,mBAAmB,wDAAG;AACtB,2CAA2C;AAC3C,GAAG;;AAEH;AACA,WAAW,wDAAG;AACd;AACA;;;;;;;;;;;;;AChFA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA4C;AACV;AACkB;AACN;AACH;;AAE3C;;AAEA;AACA,EAAE,kEAAY;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE,4DAAY;AACd,EAAE,gDAAO;AACT;AACA,EAAE,kEAAY;AACd;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,uCAAuC,gDAAO;AAC9C,wCA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;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,YAAY,iDAAQ;;AAEpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,6DAA6D;;AAE7D;;AAEA;AACA,aAAa,gDAAO;;AAEpB;AACA;AACA;AACA,YAAY,iBAAiB,OAAO;AACpC,KAAK;AACL;AACA,YAAY,eAAe,OAAO;AAClC;AACA;;AAEA,EAAE,gDAAO;AACT;AACA;;AAEO;AACP;AACA;AACA;AACA,IAAI,gDAAO;AACX;AACA,IAAI,kEAAY;AAChB;AACA;AACA;;;;;;;;;;;;;AC7EA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA8C;AACyB;AAClC;AACJ;AACS;;AAEnC;AACA;AACA;AACA;AACA;AACA;;AAEP;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA,gBAAgB,qDAAY;AAC5B,gBAAgB,qDAAY;;AAE5B;AACA,aAAa,mDAAW;AACxB;AACA;AACA,QAAQ,uDAAQ;AAChB;AACA;AACA;AACA,KAAK;AACL,MAAM,0DAAW;AACjB,KAAK;AACL;AACA;AACA;;AAEA,EAAE,+DAAiB;;AAEnB;AACA;AACA;AACA;AACA;AACA,IAAI,uDAAS;AACb,IAAI,uDAAS;AACb;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,oDAAoD,QAAQ,+DAAiB,iBAAiB,EAAE;AAChG;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA,GAAG;;AAEH;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;;AAEL;;AAEA;AACA;AACA;;;;;;;;;;;;;AC7IA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAgD;;AAEzC;AACP;AACA,cAAc,8CAAK;AACnB;AACA;AACA;AACA;AACA,EAAE,8CAAK;AACP,EAAE,8CAAK;AACP;AACA;;AAEO;AACP;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA,0CAA0C;;AAE1C;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEO;AACP,UAAU,8CAAK;AACf;;AAEA;AACA,4BAA4B,8CAAK;AACjC;AACA,iDAAiD,gDAAO;AACxD,mDAAmD,gDAAO;AAC1D,aAAa,8CAAK;AAClB;AACA;AACA;;;;;;;;;;;;;ACvKA;AAAA;AAAA;AACA,gBAAgB;AAChB;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,yBAAyB,gBAAgB,QAAQ;;AAEjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEe,2EAAY,EAAC;;;;;;;;;;;;;AC5O5B;AAAe;AACf;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;ACJD;AAAA;AAAA;AAAA;AAA6C;;;;;;;;;;;;;ACA7C;AAAA;AAAA;AAAO;AACP;AACA;;AAEO;AACP;AACA;;;;;;;;;;;;;ACNA;AAAA;AAAA;AAAA;AAAkC;AACe;AACN;;AAE5B;AACf,UAAU,wCAAM;AAChB,UAAU,wCAAM;AAChB;;AAEA;AACA,eAAe,gDAAO;AACtB,0CAA0C,gDAAO,IAAI,gDAAO,6BAA6B,gDAAO,IAAI,gDAAO;AAC3G;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,iEAAiE,yDAAQ;AACzE;;AAEA;AACA,iEAAiE,yDAAQ;AACzE;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;;;;;;;;;;;;AC/CD;AAAe;AACf;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;ACJD;AAAA;AAAe;AACf;AACA;AACA;AACA;;;;;;;;;;;;;ACJA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA0C;AACwC;;;;;;;;;;;;;ACDlF;AAAA;AAAA;AAAmC;;AAE5B;AACP,EAAE,kDAAK;AACP;;AAEe;AACf,EAAE,kDAAK;AACP,EAAE,kDAAK;AACP,CAAC;;;;;;;;;;;;;ACTD;AAAA;AAAA;AAAA;AAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEO;;AAEP;;AAEe;AACf;AACA;AACA;;;;;;;;;;;;;AClDA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAqC;AACW;AACD;AACuB;AAC9B;AACH;AACF;AACgB;AACC;;AAEpD;AACA;AACA,UAAU,kDAAK,aAAa,kDAAK;AACjC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,wBAAwB,sDAAQ;AAChC;;AAEA;AACA,UAAU,kDAAK,WAAW,kDAAK,0BAA0B,kDAAK;AAC9D;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,8DAAe;AACnC,kBAAkB,4DAAQ;AAC1B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA,uBAAuB,sDAAQ;AAC/B;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA,+CAA+C,uDAAS;AACxD;;AAEA;AACA;AACA,oEAAoE,uDAAS;AAC7E;;AAEA;AACA;AACA;;AAEA;AACA;AACA,sCAAsC,kCAAkC,EAAE;AAC1E,mDAAmD,gCAAgC,EAAE;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B,kBAAkB,4BAA4B,SAAS,uDAAS,sCAAsC;AACtG;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,MAAM,gEAAW,KAAK,iDAAS;AAC/B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAY,0DAAK;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA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A;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA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AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA,iBAAiB,uBAAuB;AACxC;AACA;AACA;AACA,OAAO,8BAA8B,GAAG,8BAA8B;AACtE;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;;;;;;;;;;;;ACxDA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,UAAU;AACV;;;;;;;;;;;;AC/BA,WAAW,mBAAO,CAAC,oDAAS;;AAE5B;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,cAAc,EAAE;AAC3C;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mC;;AAEA;AACA;;;;;;;;;;;;ACpCA,mBAAmB,mBAAO,CAAC,6EAAkB;AAC7C,mBAAmB,mBAAO,CAAC,6EAAkB;AAC7C,mBAAmB,mBAAO,CAAC,2EAAiB;;AAE5C;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;ACrCA,WAAW,mBAAO,CAAC,oDAAS;;AAE5B;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;;;;;;;;;;;;ACZA,WAAW,mBAAO,CAAC,oDAAS;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,iBAAiB,kBAAkB;AACnC;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB,iBAAiB;AAClC;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;;;;;;;;;;;AC3CA;;AAEA;;AAEA,IAAI,IAA6B;AACjC;AACA;AACA,gBAAgB,mBAAO,CAAC,0DAAiB;AACzC,YAAY,mBAAO,CAAC,kDAAa;AACjC,kBAAkB,mBAAO,CAAC,8DAAmB;AAC7C,qBAAqB,mBAAO,CAAC,oEAAsB;AACnD,YAAY,mBAAO,CAAC,kDAAa;AACjC,WAAW,mBAAO,CAAC,gDAAY;AAC/B,aAAa,mBAAO,CAAC,oDAAc;AACnC,gBAAgB,mBAAO,CAAC,0DAAiB;AACzC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;;;;;;;;;;;;AC1Ba;;AAEb,WAAW,mBAAO,CAAC,mDAAQ;AAC3B,SAAS,mBAAO,CAAC,+CAAM;;AAEvB;;AAEA;AACA,6CAA6C,2CAA2C,EAAE;;AAE1F;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,gCAAgC,wBAAwB,EAAE;AAC1D,iCAAiC,yBAAyB,EAAE;AAC5D;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;;;;;;;;;;;;;AChCa;;AAEb,WAAW,mBAAO,CAAC,mDAAQ;AAC3B,SAAS,mBAAO,CAAC,+CAAM;AACvB,QAAQ,mBAAO,CAAC,uDAAU;;AAE1B;;AAEA;AACA,6CAA6C,2CAA2C,EAAE;;AAE1F;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;;;;;;;;;;;;ACrBa;;AAEb,WAAW,mBAAO,CAAC,mDAAQ;AAC3B,SAAS,mBAAO,CAAC,+CAAM;;AAEvB;;AAEA;AACA,6CAA6C,2CAA2C,EAAE;;AAE1F;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;;;;;;;;;;;ACpBA,QAAQ,mBAAO,CAAC,uDAAU;AAC1B,SAAS,mBAAO,CAAC,+CAAM;AACvB,aAAa,mBAAO,CAAC,qDAAS;;AAE9B;;AAEA;AACA;AACA,oBAAoB,mBAAO,CAAC,mEAAgB;AAC5C,uBAAuB,mBAAO,CAAC,yEAAmB;AAClD,yBAAyB,mBAAO,CAAC,+EAAsB;AACvD,wBAAwB,mBAAO,CAAC,6EAAqB;AACrD,sBAAsB,mBAAO,CAAC,uEAAkB;AAChD,2BAA2B,mBAAO,CAAC,mFAAwB;AAC3D,yBAAyB,mBAAO,CAAC,6EAAqB;AACtD,eAAe,mBAAO,CAAC,uDAAU;AACjC,eAAe,mBAAO,CAAC,uDAAU;;AAEjC;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,yDAAyD,gBAAgB;;AAEzE;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA,+BAA+B,8BAA8B;AAC7D,gCAAgC,gCAAgC;AAChE,GAAG;;AAEH;AACA;AACA,gCAAgC,iBAAiB;AACjD;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACvKa;;AAEb,oBAAoB,mBAAO,CAAC,2FAA4B;AACxD,uBAAuB,mBAAO,CAAC,iGAA+B;AAC9D,sBAAsB,mBAAO,CAAC,+FAA8B;AAC5D,uBAAuB,mBAAO,CAAC,iGAA+B;;AAE9D;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,eAAe;AACpB,KAAK,eAAe;AACpB,KAAK,eAAe;AACpB,KAAK;AACL;AACA;AACA,4CAA4C,wBAAwB,EAAE;;AAEtE;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;AChFA,QAAQ,mBAAO,CAAC,uDAAU;;AAE1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;ACrDA;;;;;;;;;;;;ACAA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,YAAY,mBAAO,CAAC,4DAAgB;;AAEpC,UAAU,mBAAO,CAAC,wDAAc;AAChC,SAAS,mBAAO,CAAC,sDAAa;AAC9B;AACA,UAAU,mBAAO,CAAC,oDAAY;AAC9B,YAAY,mBAAO,CAAC,oDAAY;AAChC,GAAG;AACH,WAAW,mBAAO,CAAC,0DAAe;AAClC;;;;;;;;;;;;;AChCa;;AAEb,QAAQ,mBAAO,CAAC,oDAAU;AAC1B,gBAAgB,mBAAO,CAAC,4DAAc;;AAEtC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;;;;;;;;;;;AClEA,QAAQ,mBAAO,CAAC,oDAAU;AAC1B,WAAW,mBAAO,CAAC,gDAAQ;;AAE3B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA,2BAA2B,YAAY;AACvC;AACA;;;;;;;;;;;;;ACrCa;;AAEb,QAAQ,mBAAO,CAAC,oDAAU;;AAE1B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,oCAAoC,+BAA+B,EAAE;AACrE,oCAAoC,+BAA+B,EAAE;AACrE;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,oCAAoC,wBAAwB,EAAE;;AAE9D;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA,oCAAoC,sBAAsB,EAAE;;AAE5D;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACvEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACvDA,QAAQ,mBAAO,CAAC,oDAAU;AAC1B,WAAW,mBAAO,CAAC,gDAAQ;AAC3B,YAAY,mBAAO,CAAC,wDAAY;;AAEhC;AACA;AACA;;AAEA;AACA;AACA;;AAEA,qBAAqB,mCAAmC,aAAa;;AAErE;AACA,kBAAkB,WAAW;AAC7B;AACA,GAAG;;AAEH;AACA,0BAA0B;AAC1B,GA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AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,mCAAmC;AACxD;;AAEA,uBAAuB;AACvB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,oCAAoC,wBAAwB,EAAE;AAC9D;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,2BAA2B,gBAAgB;AAC3C,2BAA2B,gBAAgB;AAC3C,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D;AAC5D,4DAA4D;AAC5D;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,yBAAyB;AACpD;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA,KAAK;AACL,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,+BAA+B;AACxC,SAAS,+BAA+B;AACxC,SAAS,0BAA0B;AACnC,SAAS,+BAA+B;AACxC,SAAS;AACT;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;;;;;;;;;;;ACvYA;;AAEA;;AAEA,IAAI,IAA6B;AACjC;AACA;AACA,iBAAiB,mBAAO,CAAC,4DAAkB;AAC3C,gBAAgB,mBAAO,CAAC,0DAAiB;AACzC,gBAAgB,mBAAO,CAAC,0DAAiB;AACzC,YAAY,mBAAO,CAAC,kDAAa;AACjC,cAAc,mBAAO,CAAC,sDAAe;AACrC,YAAY,mBAAO,CAAC,kDAAa;AACjC,eAAe,mBAAO,CAAC,wDAAgB;AACvC,eAAe,mBAAO,CAAC,wDAAgB;AACvC,aAAa,mBAAO,CAAC,oDAAc;AACnC,YAAY,mBAAO,CAAC,gDAAY;AAChC,mBAAmB,mBAAO,CAAC,gEAAoB;AAC/C,YAAY,mBAAO,CAAC,kDAAa;AACjC,WAAW,mBAAO,CAAC,gDAAY;AAC/B,iBAAiB,mBAAO,CAAC,4DAAkB;AAC3C,WAAW,mBAAO,CAAC,gDAAY;AAC/B,aAAa,mBAAO,CAAC,oDAAc;AACnC,WAAW,mBAAO,CAAC,gDAAY;AAC/B,aAAa,mBAAO,CAAC,oDAAc;AACnC,WAAW,mBAAO,CAAC,gDAAY;AAC/B,YAAY,mBAAO,CAAC,kDAAa;AACjC,aAAa,mBAAO,CAAC,oDAAc;AACnC,cAAc,mBAAO,CAAC,sDAAe;AACrC,cAAc,mBAAO,CAAC,sDAAe;AACrC,gBAAgB,mBAAO,CAAC,0DAAiB;AACzC,cAAc,mBAAO,CAAC,sDAAe;AACrC,iBAAiB,mBAAO,CAAC,4DAAkB;AAC3C;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;;;;;;;;;;;AC3CA,QAAQ,mBAAO,CAAC,oDAAU;AAC1B,WAAW,mBAAO,CAAC,gDAAQ;;AAE3B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA,2CAA2C;AAC3C;;AAEA;;AAEA;AACA,oCAAoC,6BAA6B,EAAE;;AAEnE;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,0BAA0B,6BAA6B;AACvD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA,0BAA0B,wCAAwC;AAClE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,uCAAuC,WAAW,EAAE;AACpD;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;;;;;;;;;;;;ACnIa;;AAEb,QAAQ,mBAAO,CAAC,oDAAU;AAC1B,WAAW,mBAAO,CAAC,gDAAQ;;AAE3B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,wBAAwB,EAAE;AACjE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA,sBAAsB,eAAe;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,2BAA2B;AACpD;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,2BAA2B;AAC9C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,uBAAuB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;;;;;;;;;;;ACzFA,QAAQ,mBAAO,CAAC,qDAAW;;AAE3B;;AAEA;AACA,eAAe;AACf;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,4BAA4B;AACtD;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACpDA,QAAQ,mBAAO,CAAC,qDAAW;;AAE3B;;AAEA;AACA;AACA;AACA;AACA,cAAc;AACd,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,GAAG,oBAAoB;;AAE9B;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;;;;;;;;;;;;AC1BA,QAAQ,mBAAO,CAAC,qDAAW;AAC3B,YAAY,mBAAO,CAAC,yDAAa;;AAEjC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,iBAAiB,YAAY,aAAa;AAClE,wCAAwC,kBAAkB,EAAE;;AAE5D;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,8BAA8B,oCAAoC;AAClE,OAAO;;AAEP;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACxEa;;AAEb,QAAQ,mBAAO,CAAC,qDAAW;;AAE3B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,qBAAqB;AACtC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,uCAAuC,UAAU,EAAE;AACnD;AACA;AACA,cAAc;AACd,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,oDAAoD,UAAU,EAAE;;AAEhE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;;;;;;;;;;;;AClEa;;AAEb,QAAQ,mBAAO,CAAC,qDAAW;AAC3B,gBAAgB,mBAAO,CAAC,kEAAc;AACtC,iBAAiB,mBAAO,CAAC,oEAAe;AACxC,mBAAmB,mBAAO,CAAC,wEAAiB;AAC5C,sBAAsB,mBAAO,CAAC,gFAAqB;AACnD,6BAA6B,mBAAO,CAAC,8FAA4B;AACjE,YAAY,mBAAO,CAAC,yDAAa;AACjC,WAAW,mBAAO,CAAC,iDAAS;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,+BAA+B,cAAc;AAC7C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;;;;;;;;;;;;;AC9Ea;;AAEb,QAAQ,mBAAO,CAAC,qDAAW;;AAE3B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,sDAAsD,uBAAuB,EAAE;AAC/E,uDAAuD,WAAW,EAAE;;AAEpE;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,qDAAqD,uBAAuB,EAAE;AAC9E;;AAEA;AACA;;;;;;;;;;;;;ACrCa;;AAEb,QAAQ,mBAAO,CAAC,qDAAW;;AAE3B;;AAEA;AACA,wCAAwC,sBAAsB;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,sBAAsB;AACxD,8BAA8B,EAAE;AAChC;AACA;AACA;AACA,yCAAyC,0BAA0B;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,kDAAkD,sBAAsB,EAAE;AAC1E;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACzHA,QAAQ,mBAAO,CAAC,qDAAW;AAC3B,iBAAiB,mBAAO,CAAC,kEAAc;AACvC,uBAAuB,mBAAO,CAAC,gFAAqB;AACpD,WAAW,mBAAO,CAAC,sDAAQ;;AAE3B;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;;;;;;;;;;;AC3EA,QAAQ,mBAAO,CAAC,qDAAW;AAC3B,WAAW,mBAAO,CAAC,iDAAS;;AAE5B;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,sDAAsD,iBAAiB,EAAE;AACzE;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;ACxDA,QAAQ,mBAAO,CAAC,oDAAU;;AAE1B;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,UAAU;AACV;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;;AAEA;AACA;;;;;;;;;;;;;ACrFa;;AAEb,QAAQ,mBAAO,CAAC,qDAAW;AAC3B,YAAY,mBAAO,CAAC,yDAAa;AACjC,WAAW,mBAAO,CAAC,iDAAS;;AAE5B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,SAAS;AACT;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf,cAAc;AACd;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,uCAAuC,eAAe,EAAE;AACxD;AACA,wDAAwD,SAAS;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH,UAAU;AACV;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,sDAAsD,kBAAkB,EAAE;AAC1E;AACA,KAAK;AACL,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA,0CAA0C,WAAW,EAAE;AACvD;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,0CAA0C;AAC1C,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,yCAAyC;AACzC,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;;AClaa;;AAEb,QAAQ,mBAAO,CAAC,qDAAW;AAC3B,WAAW,mBAAO,CAAC,iDAAS;AAC5B,gBAAgB,mBAAO,CAAC,qDAAM;;AAE9B;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA,oDAAoD,yBAAyB,EAAE;AAC/E;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;;;;;;;;;;;;;;AC5Ba;;AAEb,QAAQ,mBAAO,CAAC,qDAAW;AAC3B,YAAY,mBAAO,CAAC,yDAAa;AACjC,YAAY,mBAAO,CAAC,qDAAQ;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,kBAAkB;;AAEvC;AACA;AACA;AACA,qBAAqB;;AAErB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB,0BAA0B;AAC1B;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA,GAAG;AACH;;;;;;;;;;;;;ACxFa;;AAEb,eAAe,mBAAO,CAAC,qDAAQ;AAC/B;AACA,mBAAmB,mBAAO,CAAC,uEAAiB;AAC5C,qBAAqB,mBAAO,CAAC,2EAAmB;;AAEhD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD;AAClD,wCAAwC;AACxC,4CAA4C;AAC5C;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;;AC/Ca;;AAEb,QAAQ,mBAAO,CAAC,qDAAW;AAC3B,mBAAmB,mBAAO,CAAC,uEAAiB;AAC5C,YAAY,mBAAO,CAAC,qDAAQ;AAC5B,eAAe,mBAAO,CAAC,qDAAQ;AAC/B,eAAe,mBAAO,CAAC,yDAAa;AACpC,gBAAgB,mBAAO,CAAC,yDAAa;AACrC,eAAe,mBAAO,CAAC,iDAAS;;AAEhC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH,6CAA6C,uBAAuB,EAAE;AACtE;;AAEA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;;AAEA;AACA,4CAA4C,0BAA0B,EAAE;AACxE;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACzOa;;AAEb,QAAQ,mBAAO,CAAC,qDAAW;;AAE3B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA,wBAAwB;AACxB;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC9DA;;AAEa;;AAEb,QAAQ,mBAAO,CAAC,oDAAU;AAC1B,YAAY,mBAAO,CAAC,wDAAY;;AAEhC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,kCAAkC,EAAE;AACxE;AACA,oDAAoD;AACpD;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;;AAEA;AACA,8BAA8B,+BAA+B;AAC7D;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;;AAEA;AACA,0CAA0C,KAAK;AAC/C,KAAK,oBAAoB;AACzB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,UAAU;AACV;;AAEA;AACA;AACA;AACA;AACA;AACA,4DAA4D,WAAW,EAAE;AACzE;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gDAAgD,uBAAuB,EAAE;AACzE;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA,mDAAmD,uBAAuB,EAAE;;AAE5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,iCAAiC,yBAAyB,EAAE;AAC5D;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;AC7OA;;;;;;;;;;;;;ACAA;AAAA;AAAA;AACA;AACA;AACA;;AAEA;;AAEe;AACf;AACA;AACA,iFAAiF;AACjF;AACA;;AAEA;AACA;;;;;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,+BAA+B;AAC3C;AACA;AACA;AACA;;AAEA,UAAU,mBAAO,CAAC,mDAAO;;AAEzB;AACA;AACA,QAAQ,mBAAO,CAAC,uDAAY;AAC5B,OAAO,mBAAO,CAAC,2DAAW;AAC1B;AACA;;;;;;;;;;;;ACrCA,QAAQ,mBAAO,CAAC,wDAAW;;AAE3B;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;;;;;;;;;;;AC1BA,QAAQ,mBAAO,CAAC,wDAAW;;AAE3B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA,qBAAqB,aAAa;AAClC;AACA;AACA,KAAK;AACL,oBAAoB,aAAa;AACjC;AACA;;;;;;;;;;;;ACzCA,eAAe,mBAAO,CAAC,+DAAY;AACnC,QAAQ,mBAAO,CAAC,wDAAW;;AAE3B;;AAEA;AACA;AACA;AACA,GAAG,IAAI;AACP;;;;;;;;;;;;ACTA,QAAQ,mBAAO,CAAC,wDAAW;AAC3B,oBAAoB,mBAAO,CAAC,kFAAwB;;AAEpD;;AAEA;;AAEA;AACA;AACA;AACA,2BAA2B,sBAAsB,EAAE;AACnD;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,kBAAkB;AAClB;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;;;;;;;;;;;ACrDA,QAAQ,mBAAO,CAAC,wDAAW;AAC3B,aAAa,mBAAO,CAAC,2DAAU;;AAE/B;;AAEA;AACA;AACA;AACA,GAAG;AACH;;;;;;;;;;;;ACTA,QAAQ,mBAAO,CAAC,wDAAW;;AAE3B;;AAEA;;AAEA;AACA;AACA;AACA,2BAA2B,sBAAsB,EAAE;AACnD;;AAEA;AACA;AACA;;AAEA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,yBAAyB;AACzB;AACA,KAAK;AACL;AACA;AACA;AACA,uBAAuB;AACvB,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL,GAAG;;AAEH;AACA;;;;;;;;;;;;ACjDA;AACA,cAAc,mBAAO,CAAC,mEAAc;AACpC,YAAY,mBAAO,CAAC,+DAAY;AAChC,eAAe,mBAAO,CAAC,uEAAgB;AACvC,cAAc,mBAAO,CAAC,qEAAe;AACrC,iBAAiB,mBAAO,CAAC,2EAAkB;AAC3C,aAAa,mBAAO,CAAC,mEAAc;AACnC,aAAa,mBAAO,CAAC,iEAAa;AAClC,YAAY,mBAAO,CAAC,+DAAY;AAChC,QAAQ,mBAAO,CAAC,uDAAQ;AACxB,UAAU,mBAAO,CAAC,2DAAU;AAC5B,WAAW,mBAAO,CAAC,6DAAW;AAC9B;;;;;;;;;;;;ACZA,cAAc,mBAAO,CAAC,6DAAW;;AAEjC;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACdA,UAAU,mBAAO,CAAC,qDAAO;;AAEzB;;AAEA;AACA;AACA;;;;;;;;;;;;ACNA,UAAU,mBAAO,CAAC,qDAAO;;AAEzB;;AAEA;AACA;AACA;;;;;;;;;;;;ACNA,QAAQ,mBAAO,CAAC,wDAAW;AAC3B,YAAY,mBAAO,CAAC,sDAAU;AAC9B,oBAAoB,mBAAO,CAAC,kFAAwB;;AAEpD;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;;;;;;;;;;;;ACnDA,QAAQ,mBAAO,CAAC,wDAAW;;AAE3B;;AAEA;AACA;AACA;AACA,mBAAmB,gBAAgB;AACnC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;;;;;;;;;;;AC9CA,QAAQ,mBAAO,CAAC,wDAAW;;AAE3B;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,uCAAuC,gD;;;;;;;;;;;AClCvC,QAAQ,mBAAO,CAAC,wDAAW;;AAE3B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,oCAAoC,cAAc,EAAE;AACpD;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,2CAA2C;AAC3C;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,6BAA6B;AAC3C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACvJa;;AAEb,QAAQ,mBAAO,CAAC,uDAAU;;AAE1B;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,oEAAoE,WAAW;AAC/E;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;;AAGA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,kCAAkC,oCAAoC;AACtE;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA,YAAY,eAAe;AAC3B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,qBAAqB,EAAE;AAClE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,qBAAqB,EAAE;AAClE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA,kBAAkB,eAAe;AACjC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;ACnhBA;AACA;AACA,SAAS,mBAAO,CAAC,qDAAS;AAC1B,WAAW,mBAAO,CAAC,yDAAW;AAC9B;;;;;;;;;;;;ACJA,QAAQ,mBAAO,CAAC,uDAAU;AAC1B,YAAY,mBAAO,CAAC,qDAAS;;AAE7B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,eAAe,2CAA2C;AAC1D,GAAG;AACH;AACA;;;;;;;;;;;;ACjEA;;AAEA;;AAEA,IAAI,IAA6B;AACjC;AACA;AACA,aAAa,mBAAO,CAAC,oDAAc;AACnC,gBAAgB,mBAAO,CAAC,0DAAiB;AACzC,YAAY,mBAAO,CAAC,kDAAa;AACjC,cAAc,mBAAO,CAAC,sDAAe;AACrC,YAAY,mBAAO,CAAC,gDAAY;AAChC,eAAe,mBAAO,CAAC,wDAAgB;AACvC,eAAe,mBAAO,CAAC,wDAAgB;AACvC,kBAAkB,mBAAO,CAAC,8DAAmB;AAC7C,mBAAmB,mBAAO,CAAC,gEAAoB;AAC/C,YAAY,mBAAO,CAAC,kDAAa;AACjC,WAAW,mBAAO,CAAC,gDAAY;AAC/B,cAAc,mBAAO,CAAC,sDAAe;AACrC,YAAY,mBAAO,CAAC,kDAAa;AACjC,iBAAiB,mBAAO,CAAC,4DAAkB;AAC3C,aAAa,mBAAO,CAAC,oDAAc;AACnC,cAAc,mBAAO,CAAC,sDAAe;AACrC;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;;;;;;;;;;;ACjCA;;;;;;;;;;;;;ACAa;AACb;AACA,8CAA8C,cAAc;AAC5D,cAAc,mBAAO,CAAC,2DAAU;AAChC,cAAc,mBAAO,CAAC,qDAAU;AAChC,aAAa,mBAAO,CAAC,2DAAQ;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA,CAAC;AACD;AACA;;;;;;;;;;;;;AClJa;AACb;AACA,8CAA8C,cAAc;AAC5D,SAAS,mBAAO,CAAC,uDAAG;AACpB;AACA,+BAA+B,yBAAyB;AACxD;AACA;;;;;;;;;;;;;ACPa;AACb;AACA,8CAA8C,cAAc;AAC5D,cAAc,mBAAO,CAAC,qDAAU;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;;;;;;;;;;;;;AC1Ba;AACb;AACA,8CAA8C,cAAc;AAC5D,cAAc,mBAAO,CAAC,2DAAU;AAChC,iBAAiB,mBAAO,CAAC,6EAAsB;AAC/C,eAAe,mBAAO,CAAC,uDAAW;AAClC;AACA;AACA;AACA,wBAAwB,EAAE,EAAE,IAAI,UAAU,EAAE;AAC5C;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA,6BAA6B;AAC7B;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACnCa;AACb;AACA,8CAA8C,cAAc;AAC5D,cAAc,mBAAO,CAAC,2DAAU;AAChC,iBAAiB,mBAAO,CAAC,6EAAsB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA,6BAA6B;AAC7B;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACjDa;AACb;AACA,8CAA8C,cAAc;AAC5D,cAAc,mBAAO,CAAC,qDAAU;AAChC,YAAY,mBAAO,CAAC,sDAAO;AAC3B,gBAAgB,mBAAO,CAAC,8DAAW;AACnC,YAAY,mBAAO,CAAC,sDAAO;AAC3B,YAAY,mBAAO,CAAC,sDAAO;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,gJAAgJ;AAChJ;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC5Ca;AACb;AACA,8CAA8C,cAAc;AAC5D,YAAY,mBAAO,CAAC,sDAAO;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC7Ka;AACb;AACA,8CAA8C,cAAc;AAC5D,cAAc,mBAAO,CAAC,2DAAU;AAChC,iBAAiB,mBAAO,CAAC,6EAAsB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA,6BAA6B;AAC7B;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACnCa;AACb;AACA,8CAA8C,cAAc;AAC5D,cAAc,mBAAO,CAAC,0DAAS;AAC/B;AACA;AACA;AACA,eAAe,UAAU;AACzB,iDAAiD;;;;;;;;;;;;;ACRpC;AACb;AACA;AACA;AACA;AACA,8CAA8C,cAAc;AAC5D,SAAS,mBAAO,CAAC,8DAAW;;;;;;;;;;;;;ACNf;AACb;AACA,8CAA8C,cAAc;AAC5D,cAAc,mBAAO,CAAC,2DAAU;AAChC,eAAe,mBAAO,CAAC,8DAAU;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AChBa;AACb;AACA,8CAA8C,cAAc;AAC5D,cAAc,mBAAO,CAAC,2DAAU;AAChC,cAAc,mBAAO,CAAC,2DAAU;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACba;AACb;AACA,8CAA8C,cAAc;AAC5D,gBAAgB,mBAAO,CAAC,gEAAW;AACnC;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACTa;AACb;AACA,8CAA8C,cAAc;AAC5D,gBAAgB,mBAAO,CAAC,gEAAW;AACnC;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACTa;AACb;AACA,8CAA8C,cAAc;AAC5D,cAAc,mBAAO,CAAC,2DAAU;AAChC,cAAc,mBAAO,CAAC,2DAAU;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACda;AACb;AACA,8CAA8C,cAAc;AAC5D,cAAc,mBAAO,CAAC,2DAAU;AAChC,cAAc,mBAAO,CAAC,2DAAU;AAChC;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACVa;AACb;AACA,8CAA8C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AAO,CAAC,gEAAW;AACnC;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACTa;AACb;AACA,8CAA8C,cAAc;AAC5D,cAAc,mBAAO,CAAC,2DAAU;AAChC,cAAc,mBAAO,CAAC,2DAAU;AAChC,eAAe,mBAAO,CAAC,8DAAU;AACjC;AACA;AACA,2DAA2D,0CAA0C,2EAA2E;AAChL;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACfa;AACb;AACA,8CAA8C,cAAc;AAC5D,uBAAuB,mBAAO,CAAC,8EAAkB;AACjD;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACTa;AACb;AACA,8CAA8C,cAAc;AAC5D;AACA;AACA;AACA;AACA;AACA,CAAC,oBAAoB;AACrB;AACA;;;;;;;;;;;;;ACVa;AACb;AACA,8CAA8C,cAAc;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,yBAAyB,yCAAyC,EAAE;AACpE,yBAAyB,yCAAyC,EAAE;AACpE,yBAAyB,yCAAyC,EAAE;AACpE,yBAAyB,gBAAgB,EAAE;AAC3C,yBAAyB,yCAAyC,EAAE;AACpE,yBAAyB,yCAAyC,EAAE;AACpE,yBAAyB,qCAAqC;AAC9D,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACxFa;AACb;AACA,8CAA8C,cAAc;AAC5D,gBAAgB,mBAAO,CAAC,8DAAW;AACnC,aAAa,mBAAO,CAAC,wDAAQ;AAC7B,a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aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACrBA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACxBA,kBAAkB,mBAAO,CAAC,6DAAgB;;AAE1C;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AChBA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,EAAE;AACb,WAAW,SAAS;AACpB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACrBA,gBAAgB,mBAAO,CAAC,yDAAc;AACtC,kBAAkB,mBAAO,CAAC,2DAAe;AACzC,cAAc,mBAAO,CAAC,mDAAW;AACjC,eAAe,mBAAO,CAAC,qDAAY;AACnC,cAAc,mBAAO,CAAC,qDAAY;AAClC,mBAAmB,mBAAO,CAAC,6DAAgB;;AAE3C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,QAAQ;AACnB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AChDA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACpBA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,MAAM;AACjB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;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ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,QAAQ;AACnB;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;;;;;;;;;;;ACpKA,eAAe,mBAAO,CAAC,qDAAY;;AAEnC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;;;;;;;;;;;;AC7BA,iBAAiB,mBAAO,CAAC,2DAAe;AACxC,qBAAqB,mBAAO,CAAC,mEAAmB;;AAEhD;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,WAAW,SAAS;AACpB,aAAa,aAAa;AAC1B;AACA;;AAEA;;;;;;;;;;;;ACbA,eAAe,mBAAO,CAAC,qDAAY;;AAEnC;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,aAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;A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;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC7DA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACXA,iBAAiB,mBAAO,CAAC,yDAAc;AACvC,eAAe,mBAAO,CAAC,uDAAa;AACpC,eAAe,mBAAO,CAAC,qDAAY;AACnC,eAAe,mBAAO,CAAC,uDAAa;;AAEpC;AACA;AACA;AACA;AACA,oCAAoC;;AAEpC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC9CA,aAAa,mBAAO,CAAC,mDAAW;AAChC,mBAAmB,mBAAO,CAAC,6DAAgB;;AAE3C;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACjBA,iBAAiB,mBAAO,CAAC,2DAAe;AACxC,eAAe,mBAAO,CAAC,qDAAY;AACnC,mBAAmB,mBAAO,CAAC,6DAAgB;;AAE3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC3DA,kBAAkB,mBAA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ACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,aAAa;AACxB,WAAW,EAAE;AACb,WAAW,SAAS;AACpB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC9CA,eAAe,mBAAO,CAAC,qDAAY;AACnC,qBAAqB,mBAAO,CAAC,mEAAmB;AAChD,eAAe,mBAAO,CAAC,qDAAY;;AAEnC;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;;;;;;;;;;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACnBA,aAAa,mBAAO,CAAC,mDAAW;AAChC,eAAe,mBAAO,CAAC,uDAAa;AACpC,cAAc,mBAAO,CAAC,mDAAW;AACjC,eAAe,mBAAO,CAAC,qDAAY;;AAEnC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACpCA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACbA,eAAe,mBAAO,CAAC,uDAAa;AACpC,oBAAoB,mBAAO,CAAC,iEAAkB;AAC9C,wBAAwB,mBAAO,CAAC,yEAAsB;AACtD,eAAe,mBAAO,CAAC,uDAAa;AACpC,gBAAgB,mBAAO,CAAC,yDAAc;AACtC,iBAAiB,mBAAO,CAAC,2DAAe;;AAExC;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACvEA,eAAe,mBAAO,CAAC,uDAAa;;AAEpC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,MAAM;AACjB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;;;;;;;;;;;AClBA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACtBA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACZA,eAAe,mBAAO,CAAC,qDAAY;;AAEnC;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,SAAS;AACtB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACbA,cAAc,mBAAO,CAAC,mDAAW;AACjC,YAAY,mBAAO,CAAC,iDAAU;AAC9B,mBAAmB,mBAAO,CAAC,+DAAiB;AAC5C,eAAe,mBAAO,CAAC,qDAAY;;AAEnC;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACpBA,iBAAiB,mBAAO,CAAC,2DAAe;;AAExC;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,aAAa,YAAY;AACzB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACfA,yDAAW,mBAAO,CAAC,+CAAS;;AAE5B;AACA,kBAAkB,KAA0B;;AAE5C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;;;;;;;;;;;;AClCA,uBAAuB,mBAAO,CAAC,uEAAqB;;AAEpD;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACfA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AChBA,aAAa,mBAAO,CAAC,mDAAW;;AAEhC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACjBA,uBAAuB,mBAAO,CAAC,uEAAqB;;AAEpD;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACfA,eAAe,mBAAO,CAAC,qDAAY;;AAEnC;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACxCA,uBAAuB,mBAAO,CAAC,uEAAqB;;AAEpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,mBAAmB;AAC9B,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC3CA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,MAAM;AACjB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACnBA,kBAAkB,mBAAO,CAAC,6DAAgB;AAC1C,sBAAsB,mBAAO,CAAC,qEAAoB;;AAElD;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,MAAM;AACjB,WAAW,OAAO,WAAW;AAC7B,WAAW,SAAS;AACpB,aAAa,OAAO;AACpB;AACA;AACA;AACA,wBAAwB;;AAExB;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACvCA,iBAAiB,mBAAO,CAAC,2DAAe;AACxC,iBAAiB,mBAAO,CAAC,2DAAe;;AAExC;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO,WAAW;AAC7B,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACfA,iBAAiB,mBAAO,CAAC,2DAAe;AACxC,mBAAmB,mBAAO,CAAC,+DAAiB;;AAE5C;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO,WAAW;AAC7B,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACfA,WAAW,mBAAO,CAAC,+CAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;;ACLA,eAAe,mBAAO,CAAC,uDAAa;AACpC,qBAAqB,mBAAO,CAAC,mEAAmB;;AAEhD;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;;;;;;;;;;;ACpCA,kBAAkB,mBAAO,CAAC,2DAAe;;AAEzC;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,QAAQ;AACnB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC/BA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACxBA,mBAAmB,mBAAO,CAAC,+DAAiB;AAC5C,kBAAkB,mBAAO,CAAC,2DAAe;AACzC,WAAW,mBAAO,CAAC,6CAAQ;;AAE3B;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,+CAA+C;AAChF;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACxBA,gBAAgB,mBAAO,CAAC,yDAAc;AACtC,qBAAqB,mBAAO,CAAC,mEAAmB;AAChD,eAAe,mBAAO,CAAC,qDAAY;;AAEnC;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC7BA,UAAU,mBAAO,CAAC,6CAAQ;AAC1B,WAAW,mBAAO,CAAC,6CAAQ;AAC3B,iBAAiB,mBAAO,CAAC,2DAAe;;AAExC;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AClBA,gBAAgB,mBAAO,CAAC,yDAAc;;AAEtC;AACA;AACA;AACA,WAAW,QAAQ;AACnB;AACA,GAAG;AACH,CAAC;;AAED;;;;;;;;;;;;ACVA,eAAe,mBAAO,CAAC,uDAAa;AACpC,gBAAgB,mBAAO,CAAC,yDAAc;AACtC,eAAe,mBAAO,CAAC,uDAAa;;AAEpC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,MAAM;AACjB,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AClFA,aAAa,mBAAO,CAAC,mDAAW;AAChC,iBAAiB,mBAAO,CAAC,2DAAe;AACxC,SAAS,mBAAO,CAAC,yCAAM;AACvB,kBAAkB,mBAAO,CAAC,6DAAgB;AAC1C,iBAAiB,mBAAO,CAAC,2DAAe;AACxC,iBAAiB,mBAAO,CAAC,2DAAe;;AAExC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC/GA,iBAAiB,mBAAO,CAAC,2DAAe;;AAExC;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACxFA,cAAc,mBAAO,CAAC,mDAAW;AACjC,eAAe,mBAAO,CAAC,uDAAa;AACpC,kBAAkB,mBAAO,CAAC,6DAAgB;;AAE1C;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACfA;AACA;;AAEA;;;;;;;;;;;;;ACHA,qBAAqB,mBAAO,CAAC,mEAAmB;AAChD,iBAAiB,mBAAO,CAAC,2DAAe;AACxC,WAAW,mBAAO,CAAC,6CAAQ;;AAE3B;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACfA,qBAAqB,mBAA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AoB;;AAElD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC5EA,iBAAiB,mBAAO,CAAC,2DAAe;AACxC,mBAAmB,mBAAO,CAAC,+DAAiB;AAC5C,kBAAkB,mBAAO,CAAC,6DAAgB;;AAE1C;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACjBA,aAAa,mBAAO,CAAC,mDAAW;AAChC,kBAAkB,mBAAO,CAAC,2DAAe;AACzC,cAAc,mBAAO,CAAC,mDAAW;;AAEjC;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACnBA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACxBA,SAAS,mBAAO,CAAC,yCAAM;AACvB,kBAAkB,mBAAO,CAAC,2DAAe;AACzC,cAAc,mBAAO,CAAC,qDAAY;AAClC,eAAe,mBAAO,CAAC,qDAAY;;AAEnC;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC7BA,cAAc,mBAAO,CAAC,mDAAW;AACjC,eAAe,mBAAO,CAAC,qDAAY;;AAEnC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC5BA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACdA,iBAAiB,mBAAO,CAAC,2DAAe;;AAExC;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACnBA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;;ACjBA,eAAe,mBAAO,CAAC,qDAAY;;AAEnC;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACZA,mBAAmB,mBAAO,CAAC,+DAAiB;;AAE5C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AClCA,mBAAmB,mBAAO,CAAC,+DAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;;AClBA,mBAAmB,mBAAO,CAAC,+DAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACfA,mBAAmB,mBAAO,CAAC,+DAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACzBA,WAAW,mBAAO,CAAC,+CAAS;AAC5B,gBAAgB,mBAAO,CAAC,yDAAc;AACtC,UAAU,mBAAO,CAAC,6CAAQ;;AAE1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACpBA,iBAAiB,mBAAO,CAAC,2DAAe;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACjBA,iBAAiB,mBAAO,CAAC,2DAAe;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACfA,iBAAiB,mBAAO,CAAC,2DAAe;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACfA,iBAAiB,mBAAO,CAAC,2DAAe;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACrBA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;;;;;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACnBA,cAAc,mBAAO,CAAC,mDAAW;;AAEjC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;;;;;;;;;;;;ACzBA,gBAAgB,mBAAO,CAAC,yDAAc;;AAEtC;AACA;;AAEA;;;;;;;;;;;;ACLA,cAAc,mBAAO,CAAC,qDAAY;;AAElC;AACA;;AAEA;;;;;;;;;;;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACnBA,+DAAiB,mBAAO,CAAC,2DAAe;;AAExC;AACA,kBAAkB,KAA0B;;AAE5C;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH,CAAC;;AAED;;;;;;;;;;;;;AC7BA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACrBA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACdA,YAAY,mBAAO,CAAC,iDAAU;;AAE9B;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACnCA,iBAAiB,mBAAO,CAAC,2DAAe;;AAExC;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;;ACRA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;;ACpBA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACbA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;;;;;;;;;;;ACjBA,sBAAsB,mBAAO,CAAC,qEAAoB;AAClD,eAAe,mBAAO,CAAC,uDAAa;;AAEpC;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;;AAEA;;;;;;;;;;;;ACbA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACpCA,gBAAgB,mBAAO,CAAC,yDAAc;;AAEtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;;;;;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACbA,gBAAgB,mBAAO,CAAC,yDAAc;AACtC,UAAU,mBAAO,CAAC,6CAAQ;AAC1B,eAAe,mBAAO,CAAC,uDAAa;;AAEpC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACjCA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,EAAE;AACb,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACtBA,gBAAgB,mBAAO,CAAC,yDAAc;AACtC,iBAAiB,mBAAO,CAAC,2DAAe;AACxC,kBAAkB,mBAAO,CAAC,6DAAgB;;AAE1C;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACjBA,oBAAoB,mBAAO,CAAC,iEAAkB;;AAE9C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;AAED;;;;;;;;;;;;AC1BA,eAAe,mBAAO,CAAC,qDAAY;;AAEnC;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,cAAc;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACpBA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;;;;;;;;;;;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,EAAE;AACjD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC3CA,gBAAgB,mBAAO,CAAC,yDAAc;;AAEtC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,EAAE;AACf;AACA;AACA;AACA,mBAAmB,SAAS,GAAG,SAAS;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACnCA,gBAAgB,mBAAO,CAAC,yDAAc;;AAEtC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,EAAE;AACf;AACA;AACA;AACA,mBAAmB,SAAS,GAAG,SAAS;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,SAAS;AACtB;AACA;AACA,wCAAwC,SAAS;AACjD;AACA;AACA,WAAW,SAAS,GAAG,SAAS;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACzBA,eAAe,mBAAO,CAAC,uDAAa;AACpC,SAAS,mBAAO,CAAC,yCAAM;AACvB,qBAAqB,mBAAO,CAAC,mEAAmB;AAChD,aAAa,mBAAO,CAAC,iDAAU;;AAE/B;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,UAAU;AACrB,aAAa,OAAO;AACpB;AACA;AACA;AACA,eAAe,SAAS,GAAG,SAAS,GAAG,SAAS;AAChD,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;;;;;;;;;;;;AC/DA,iBAAiB,mBAAO,CAAC,mDAAW;;;;;;;;;;;;ACApC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA,iBAAiB;AACjB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACpCA,kBAAkB,mBAAO,CAAC,6DAAgB;AAC1C,iBAAiB,mBAAO,CAAC,2DAAe;AACxC,mBAAmB,mBAAO,CAAC,+DAAiB;AAC5C,cAAc,mBAAO,CAAC,mDAAW;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA,MAAM,8CAA8C;AACpD,MAAM;AACN;AACA;AACA,gCAAgC,kBAAkB,EAAE;AACpD;AACA;AACA;AACA,oBAAoB,4BAA4B;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC/CA,iBAAiB,mBAAO,CAAC,2DAAe;AACxC,gBAAgB,mBAAO,CAAC,uDAAa;;AAErC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA,MAAM,+CAA+C;AACrD,MAAM,gDAAgD;AACtD,MAAM;AACN;AACA;AACA,8BAA8B,mBAAmB,EAAE;AACnD;AACA;AACA;AACA,kBAAkB,2BAA2B;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACzCA,oBAAoB,mBAAO,CAAC,iEAAkB;AAC9C,mBAAmB,mBAAO,CAAC,+DAAiB;AAC5C,gBAAgB,mBAAO,CAAC,uDAAa;;AAErC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA,MAAM,qCAAqC;AAC3C,MAAM,qCAAqC;AAC3C,MAAM;AACN;AACA;AACA,mCAAmC,2BAA2B,EAAE;AAChE;AACA;AACA;AACA,uBAAuB,kCAAkC;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACtDA,kBAAkB,mBAAO,CAAC,6DAAgB;;AAE1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACrBA,gBAAgB,mBAAO,CAAC,yDAAc;AACtC,eAAe,mBAAO,CAAC,uDAAa;AACpC,mBAAmB,mBAAO,CAAC,+DAAiB;AAC5C,cAAc,mBAAO,CAAC,mDAAW;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,WAAW,SAAS;AACpB,aAAa,aAAa;AAC1B;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,cAAc,iBAAiB;AAC/B;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACxCA,cAAc,mBAAO,CAAC,qDAAY;AAClC,mBAAmB,mBAAO,CAAC,+DAAiB;AAC5C,aAAa,mBAAO,CAAC,iDAAU;;AAE/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACtCA,cAAc,mBAAO,CAAC,qDAAY;;AAElC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,aAAa;AACxB,WAAW,EAAE;AACb,aAAa,EAAE;AACf;AACA;AACA,iBAAiB,QAAQ,OAAO,SAAS,EAAE;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AChCA,cAAc,mBAAO,CAAC,qDAAY;AAClC,cAAc,mBAAO,CAAC,qDAAY;;AAElC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,aAAa;AACxB,aAAa,QAAQ;AACrB;AACA;AACA,iBAAiB,OAAO,SAAS;AACjC,yBAAyB,gBAAgB,SAAS,GAAG;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AClCA,gBAAgB,mBAAO,CAAC,yDAAc;AACtC,cAAc,mBAAO,CAAC,qDAAY;;AAElC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,aAAa;AACxB,aAAa,QAAQ;AACrB;AACA;AACA,0BAA0B,gBAAgB,SAAS,GAAG;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,EAAE;AACf;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACpBA,sBAAsB,mBAAO,CAAC,qEAAoB;AAClD,mBAAmB,mBAAO,CAAC,6DAAgB;;AAE3C;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA,6BAA6B,kBAAkB,EAAE;AACjD;AACA;AACA;AACA;AACA;AACA,8CAA8C,kBAAkB,EAAE;AAClE;AACA;AACA;;AAEA;;;;;;;;;;;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACzBA,iBAAiB,mBAAO,CAAC,yDAAc;AACvC,eAAe,mBAAO,CAAC,qDAAY;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AChCA,kBAAkB,mBAAO,CAAC,2DAAe;AACzC,mBAAmB,mBAAO,CAAC,6DAAgB;;AAE3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AChCA,yDAAW,mBAAO,CAAC,+CAAS;AAC5B,gBAAgB,mBAAO,CAAC,uDAAa;;AAErC;AACA,kBAAkB,KAA0B;;AAE5C;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;;ACrCA,eAAe,mBAAO,CAAC,uDAAa;AACpC,aAAa,mBAAO,CAAC,mDAAW;AAChC,kBAAkB,mBAAO,CAAC,2DAAe;AACzC,cAAc,mBAAO,CAAC,mDAAW;AACjC,kBAAkB,mBAAO,CAAC,2DAAe;AACzC,eAAe,mBAAO,CAAC,qDAAY;AACnC,kBAAkB,mBAAO,CAAC,6DAAgB;AAC1C,mBAAmB,mBAAO,CAAC,6DAAgB;;AAE3C;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,SAAS;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC5EA,iBAAiB,mBAAO,CAAC,2DAAe;AACxC,eAAe,mBAAO,CAAC,qDAAY;;AAEnC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACpCA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AClCA,gBAAgB,mBAAO,CAAC,yDAAc;AACtC,gBAAgB,mBAAO,CAAC,yDAAc;AACtC,eAAe,mBAAO,CAAC,uDAAa;;AAEpC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC5BA,iBAAiB,mBAAO,CAAC,2DAAe;AACxC,mBAAmB,mBAAO,CAAC,+DAAiB;AAC5C,mBAAmB,mBAAO,CAAC,6DAAgB;;AAE3C;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,iBAAiB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC7DA,gBAAgB,mBAAO,CAAC,yDAAc;AACtC,gBAAgB,mBAAO,CAAC,yDAAc;AACtC,eAAe,mBAAO,CAAC,uDAAa;;AAEpC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC1BA,iBAAiB,mBAAO,CAAC,2DAAe;AACxC,cAAc,mBAAO,CAAC,mDAAW;AACjC,mBAAmB,mBAAO,CAAC,6DAAgB;;AAE3C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC7BA,iBAAiB,mBAAO,CAAC,2DAAe;AACxC,mBAAmB,mBAAO,CAAC,6DAAgB;;AAE3C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC5BA,uBAAuB,mBAAO,CAAC,uEAAqB;AACpD,gBAAgB,mBAAO,CAAC,yDAAc;AACtC,eAAe,mBAAO,CAAC,uDAAa;;AAEpC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACrBA,oBAAoB,mBAAO,CAAC,iEAAkB;AAC9C,eAAe,mBAAO,CAAC,uDAAa;AACpC,kBAAkB,mBAAO,CAAC,2DAAe;;AAEzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACpCA,oBAAoB,mBAAO,CAAC,iEAAkB;AAC9C,iBAAiB,mBAAO,CAAC,2DAAe;AACxC,kBAAkB,mBAAO,CAAC,2DAAe;;AAEzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACnBA,eAAe,mBAAO,CAAC,uDAAa;AACpC,mBAAmB,mBAAO,CAAC,+DAAiB;AAC5C,cAAc,mBAAO,CAAC,qDAAY;AAClC,cAAc,mBAAO,CAAC,mDAAW;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,iBAAiB;AAC3B;AACA;AACA;AACA,MAAM,mBAAmB;AACzB,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACpDA,sBAAsB,mBAAO,CAAC,qEAAoB;AAClD,iBAAiB,mBAAO,CAAC,2DAAe;AACxC,mBAAmB,mBAAO,CAAC,+DAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA,iBAAiB,+BAA+B;AAChD,iBAAiB;AACjB;AACA;AACA,mCAAmC,cAAc,EAAE;AACnD,UAAU,2BAA2B;AACrC;AACA;AACA;AACA,UAAU,2BAA2B;AACrC;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;;;;;;;;;;;AC1CA,mBAAmB,mBAAO,CAAC,+DAAiB;AAC5C,aAAa,mBAAO,CAAC,mDAAW;AAChC,eAAe,mBAAO,CAAC,qDAAY;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC5BA,eAAe,mBAAO,CAAC,uDAAa;;AAEpC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA,iBAAiB;AACjB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;;ACxEA,gBAAgB,mBAAO,CAAC,yDAAc;AACtC,qBAAqB,mBAAO,CAAC,mEAAmB;;AAEhD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,UAAU;AACrB,aAAa,OAAO;AACpB;AACA;AACA;AACA,YAAY,SAAS,GAAG,SAAS;AACjC;AACA;AACA;AACA,YAAY,SAAS,GAAG,SAAS;AACjC;AACA;AACA;AACA,UAAU,QAAQ,iBAAiB,GAAG,iBAAiB;AACvD;AACA;AACA;AACA,CAAC;;AAED;;;;;;;;;;;;ACtCA,mBAAmB,mBAAO,CAAC,+DAAiB;AAC5C,aAAa,mBAAO,CAAC,mDAAW;AAChC,eAAe,mBAAO,CAAC,qDAAY;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC5BA,mBAAmB,mBAAO,CAAC,+DAAiB;AAC5C,mBAAmB,mBAAO,CAAC,+DAAiB;AAC5C,aAAa,mBAAO,CAAC,mDAAW;;AAEhC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,aAAa,EAAE;AACf;AACA;AACA,mBAAmB,SAAS,GAAG,SAAS;AACxC;AACA,iCAAiC,YAAY,EAAE;AAC/C,UAAU;AACV;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AChBA,WAAW,mBAAO,CAAC,+CAAS;;AAE5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACtBA,eAAe,mBAAO,CAAC,uDAAa;AACpC,eAAe,mBAAO,CAAC,uDAAa;;AAEpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,qBAAqB;AAChC,aAAa,OAAO;AACpB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,UAAU;AACV;AACA;AACA,4BAA4B;AAC5B,CAAC;;AAED;;;;;;;;;;;;ACxBA,mBAAmB,mBAAO,CAAC,+DAAiB;AAC5C,uBAAuB,mBAAO,CAAC,uEAAqB;AACpD,YAAY,mBAAO,CAAC,iDAAU;AAC9B,YAAY,mBAAO,CAAC,iDAAU;;AAE9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,aAAa,SAAS;AACtB;AACA;AACA;AACA,MAAM,OAAO,SAAS,EAAE;AACxB,MAAM,OAAO,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC/BA,kBAAkB,mBAAO,CAAC,6DAAgB;;AAE1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC7CA,kBAAkB,mBAAO,CAAC,6DAAgB;AAC1C,eAAe,mBAAO,CAAC,uDAAa;AACpC,mBAAmB,mBAAO,CAAC,+DAAiB;AAC5C,iBAAiB,mBAAO,CAAC,2DAAe;AACxC,cAAc,mBAAO,CAAC,mDAAW;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,WAAW,SAAS;AACpB,WAAW,EAAE;AACb,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,aAAa,yBAAyB;AACtC;AACA;AACA,IAAI,IAAI;AACR,UAAU,8BAA8B;AACxC;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;;AClDA,eAAe,mBAAO,CAAC,uDAAa;AACpC,aAAa,mBAAO,CAAC,mDAAW;AAChC,kBAAkB,mBAAO,CAAC,2DAAe;AACzC,eAAe,mBAAO,CAAC,qDAAY;AACnC,iBAAiB,mBAAO,CAAC,2DAAe;;AAExC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,oBAAoB;AAC/B,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA,WAAW,iBAAiB;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC7CA,kBAAkB,mBAAO,CAAC,6DAAgB;AAC1C,kBAAkB,mBAAO,CAAC,6DAAgB;AAC1C,eAAe,mBAAO,CAAC,uDAAa;AACpC,qBAAqB,mBAAO,CAAC,mEAAmB;;AAEhD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,WAAW,yBAAyB;AACpC;AACA,aAAa,MAAM;AACnB;AACA;AACA;AACA,MAAM,8BAA8B;AACpC,MAAM,8BAA8B;AACpC,MAAM,8BAA8B;AACpC,MAAM;AACN;AACA;AACA,iCAAiC,eAAe,EAAE;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,CAAC;;AAED;;;;;;;;;;;;AC/CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACjBA,eAAe,mBAAO,CAAC,qDAAY;;AAEnC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACzCA,eAAe,mBAAO,CAAC,qDAAY;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;;ACnCA,eAAe,mBAAO,CAAC,qDAAY;AACnC,eAAe,mBAAO,CAAC,qDAAY;;AAEnC;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACjEA,iBAAiB,mBAAO,CAAC,2DAAe;AACxC,aAAa,mBAAO,CAAC,iDAAU;;AAE/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB,UAAU;AACV;AACA,aAAa,SAAS;AACtB,UAAU;AACV;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC/BA,mBAAmB,mBAAO,CAAC,+DAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC3BA,gBAAgB,mBAAO,CAAC,yDAAc;AACtC,iBAAiB,mBAAO,CAAC,2DAAe;AACxC,iBAAiB,mBAAO,CAAC,2DAAe;AACxC,mBAAmB,mBAAO,CAAC,+DAAiB;AAC5C,mBAAmB,mBAAO,CAAC,+DAAiB;AAC5C,cAAc,mBAAO,CAAC,mDAAW;AACjC,eAAe,mBAAO,CAAC,qDAAY;AACnC,iBAAiB,mBAAO,CAAC,yDAAc;AACvC,eAAe,mBAAO,CAAC,qDAAY;AACnC,mBAAmB,mBAAO,CAAC,6DAAgB;;AAE3C;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,WAAW,EAAE;AACb,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,gBAAgB,yBAAyB;AACzC;AACA,IAAI,IAAI;AACR,UAAU;AACV;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;;;;;;;;;;;AChEA,kBAAkB,mBAAO,CA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EA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU,oBAAoB;AAC9B;AACA;;AAEA;AACA,UAAU,UAAU;AACpB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;;AAEA;AACA,+BAA+B,sBAAsB;AACrD;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,QAAQ;AACvC;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,2BAA2B,QAAQ;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,QAAQ;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,eAAe;AAClC;AACA;AACA;AACA;;AAEA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC7SA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,qCAAqC;;AAErC;AACA;AACA;;AAEA,2BAA2B;AAC3B;AACA;AACA;AACA,4BAA4B,UAAU;;;;;;;;;;;;ACvLtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,CAAC,KAA4D;AAC7D,EAAE,SACmC;AACrC,CAAC,aAAa,GAAG,uCAAuC;;AAExD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,cAAc;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,GAAG,gCAAgC;AAC7D,qBAAqB,6CAA6C;AAClE,mBAAmB,GAAG,KAAK,KAAK,kCAAkC;AAClE,oBAAoB,GAAG;AACvB;AACA,mCAAmC,EAAE;AACrC;AACA;AACA,+BAA+B;AAC/B,6EAA6E;AAC7E;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,wBAAwB;AACxB,2BAA2B;AAC3B,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY,cAAc;AAC1B,YAAY,cAAc;AAC1B,YAAY,OAAO;AACnB,YAAY,OAAO;AACnB,YAAY,OAAO;AACnB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,cAAc;AAC3C;AACA;AACA;AACA;AACA,6BAA6B,cAAc;;AAE3C;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,gCAAgC,YAAY;;AAE5C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,YAAY,cAAc;AAC1B,YAAY,OAAO;AACnB,YAAY,OAAO;AACnB,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,8DAA8D,YAAY;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,YAAY;AAChD,oBAAoB,OAAO;AAC3B;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,YAAY,OAAO;AACnB,YAAY,OAAO;AACnB,YAAY,OAAO;AACnB,YAAY,OAAO;AACnB,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,YAAY,OAAO;AACnB,YAAY,OAAO;AACnB,YAAY,OAAO;AACnB,YAAY,OAAO;AACnB,aAAa;AACb;AACA;AACA;AACA,sBAAsB;AACtB;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wEAAwE;AACxE,0CAA0C;AAC1C,4CAA4C;AAC5C;AACA;AACA;AACA;;AAEA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,2CAA2C;AAC3C;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,YAAY,OAAO;AACnB,YAAY,OAAO;AACnB,aAAa;AACb;AACA;AACA,sDAAsD;AACtD;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,YAAY,OAAO;AACnB,YAAY,OAAO;AACnB,aAAa;AACb;AACA;AACA;;AAEA,yBAAyB;AACzB;;AAEA;AACA;AACA;AACA,YAAY,OAAO;AACnB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,oDAAoD,YAAY;AAChE;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,0BAA0B;;AAE1B;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,YAAY,cAAc;AAC1B;AACA;AACA,sFAAsF,YAAY;AAClG;AACA;AACA;;AAEA,qEAAqE,OAAO;AAC5E;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,YAAY,OAAO;AACnB,YAAY,OAAO;AACnB,YAAY,cAAc;AAC1B,YAAY,cAAc;AAC1B,YAAY,OAAO;AACnB,YAAY,OAAO;AACnB,YAAY,OAAO;AACnB,YAAY,OAAO;AACnB,YAAY,OAAO;AACnB,YAAY,OAAO;AACnB,aAAa;AACb;AACA;AACA,sCAAsC,aAAa;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,YAAY,OAAO;AACnB,YAAY,OAAO;AACnB,YAAY,OAAO;AACnB,YAAY,OAAO;AACnB,aAAa;AACb;AACA;AACA,yBAAyB,YAAY;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,YAAY,OAAO;AACnB,YAAY,OAAO;AACnB,YAAY,OAAO;AACnB,YAAY,OAAO;AACnB,YAAY,OAAO;AACnB,aAAa;AACb;AACA;AACA,yBAAyB,YAAY;AACrC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,YAAY,WAAW;AACvB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY,oDAAoD;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,4CAA4C,YAAY;AACxD;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,YAAY,EAAE;AACd;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC,oCAAoC;AACpC,sCAAsC;AACtC,wCAAwC;AACxC,0CAA0C;AAC1C,wCAAwC;AACxC;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,YAAY,OAAO;AACnB,YAAY,OAAO;AACnB,aAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AA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iB,kCAAkC;AACnD;AACA;AACA;AACA,qBAAqB,IAAI;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mJAAmJ;AACnJ,SAAS;;AAET;AACA;AACA,qBAAqB,+BAA+B;AACpD;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW,YAAY,IAAI,WAAW,SAAS;AACvE,cAAc,0BAA0B,EAAE;AAC1C,MAAM;AACN,WAAW,4yBAA4yB;AACvzB,aAAa,2dAA2d;AACxe;AACA;AACA;;AAEA;AACA;AACA;AACA,wB;AACA;AACA;AACA,e;AACA;AACA;AACA,qC;AACA;AACA;AACA,4B;AACA;AACA;AACA,wB;AACA;AACA;AACA,2CAA2C,0B;AAC3C;AACA;AACA;AACA;AACA;AACA,iDAAiD,wBAAwB;AACzE;AACA;AACA,mC;AACA;AACA;AACA,mB;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA,kCAAkC;AAClC;AACA;AACA,WAAW,8F;AACX;AACA;AACA,WAAW;AACX;AACA;AACA,WAAW,6F;AACX;AACA;AACA,WAAW,8F;AACX;AACA;AACA,SAAS,+C;AACT;AACA;AACA,SAAS,6C;AACT;AACA;AACA,SAAS,6C;AACT;AACA;AACA,SAAS,2C;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,CAAC;AACD,SAAS,gBAAgB,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,8GAA8G,EAAE,SAAS,EAAE,iBAAiB,eAAe,UAAU,wEAAwE,gFAAgF,GAAG,iCAAiC,8BAA8B,2BAA2B,EAAE,iCAAiC,EAAE,iCAAiC,cAAc,2CAA2C,6CAA6C,QAAQ,EAAE,uHAAuH,gBAAgB,2CAA2C,EAAE,4DAA4D,gBAAgB,oBAAoB,eAAe,kCAAkC,oGAAoG,UAAU,GAAG,UAAU,EAAE,UAAU,EAAE,UAAU,2BAA2B,iCAAiC,GAAG,QAAQ,gBAAgB,iCAAiC,EAAE,2CAA2C,eAAe,kCAAkC,iBAAiB,aAAa,EAAE,iCAAiC,eAAe,UAAU,gBAAgB,UAAU,4CAA4C,iCAAiC,gBAAgB,UAAU,EAAE,uBAAuB,wEAAwE,UAAU;AAC3nD,iBAAiB,oCAAoC;AACrD;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iCAAiC;AACjC,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL,qDAAqD;AACrD;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,kCAAkC;AAC/D;AACA;AACA;AACA;AACA;AACA,uCAAuC,kBAAkB;AACzD;AACA;AACA;AACA,oDAAoD;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,wGAAwG,qBAAqB,WAAW,wBAAwB,EAAE,gQAAgQ;AACla,aAAa,UAAU,kCAAkC,YAAY,kCAAkC,WAAW,uCAAuC,YAAY;AACrK,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,0BAA0B;A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ACA;AACA;AACA,4C;AACA;AACA;AACA,wC;AACA;AACA;AACA,mC;AACA;AACA;AACA,iB;AACA;AACA;AACA,CAAC;AACD,SAAS,YAAY,EAAE,MAAM,cAAc,IAAI,GAAG,uBAAuB,EAAE,QAAQ,eAAe,qCAAqC,4BAA4B,YAAY,EAAE,0BAA0B,uDAAuD,UAAU,EAAE,kCAAkC,8BAA8B,0BAA0B,EAAE,SAAS;AACnX,iBAAiB,iBAAiB;AAClC;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iCAAiC;AACjC,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL,qDAAqD;AACrD;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL,UAAU,wBAAwB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,2FAA2F,cAAc,uCAAuC,aAAa;AAC7J,aAAa,WAAW;AACxB,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA,CAAC;;;AAGD,IAAI,IAAgE;AACpE;AACA;AACA,6BAA6B,8CAA8C;AAC3E;AACA;AACA;AACA;AACA;AACA,iBAAiB,mBAAO,CAAC,0DAAI,eAAe,mBAAO,CAAC,qDAAM;AAC1D;AACA;AACA,IAAI,KAA6B,IAAI,4CAAY;AACjD;AACA;AACA,C;;;;;;;;;;;;;ACtqBA;AAAA,IAAMS,SAAS,GAAG,SAAZA,SAAY,CAAA7d,OAAO;AAAA,+CAGbA,OAAO,CAACge,OAHK,4BAIXhe,OAAO,CAAC8d,UAJG,4DAQb9d,OAAO,CAAC4mB,mBARK,4DAUD5mB,OAAO,CAAC4mB,mBAVP,4GAiBT5mB,OAAO,CAACke,SAjBC;AAAA,CAAzB;;AAqBeL,wEAAf,E;;;;;;;;;;;;ACrBA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAEA,SAASxL,QAAT,CAAkB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AAqB,IAAI;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mJAAmJ;AACnJ,SAAS;;AAET;AACA;AACA,qBAAqB,+BAA+B;AACpD;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW,YAAY,IAAI,WAAW,SAAS;AACvE,cAAc,0BAA0B,EAAE;AAC1C,MAAM;AACN,WAAW,k8CAAk8C;AAC78C,aAAa,40BAA40B;AACz1B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,8CAA8C,WAAW,qD;AACrG;AACA;AACA,8CAA8C,gDAAgD,WAAW,yD;AACzG;AACA;AACA,iCAAiC,aAAa;AAC9C;AACA;AACA,gCAAgC,aAAa;AAC7C;AACA;AACA,gCAAgC;AAChC;AACA;AACA,kCAAkC,qDAAqD;AACvF;AACA;AACA,oBAAoB;AACpB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,+BAA+B,kBAAkB;AACjD;AACA;AACA,uBAAuB;AACvB;AACA;AACA,yBAAy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CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iCAAiC;AACjC,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL,qDAAqD;AACrD;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,mBAAmB;AACnD;AACA,gCAAgC,mBAAmB;AACnD;AACA;AACA;AACA;AACA;AACA,2BAA2B,Y;AAC3B;AACA,2BAA2B,Y;AAC3B;AACA,2BAA2B,Y;AAC3B;AACA,2BAA2B,Y;AAC3B;AACA,2BAA2B,Y;AAC3B;AACA,2BAA2B,Y;AAC3B;AACA,2BAA2B,Y;AAC3B;AACA,2BAA2B,Y;AAC3B;AACA,2BAA2B,Y;AAC3B;AACA,2BAA2B,Y;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,icAAic,25KAA25K,UAAU;AACt2L,aAAa,UAAU,6BAA6B,QAAQ,0DAA0D,WAAW,gCAAgC,YAAY;AAC7K,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AAC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A;AACA;AACA,mJAAmJ;AACnJ,SAAS;;AAET;AACA;AACA,qBAAqB,+BAA+B;AACpD;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW,YAAY,IAAI,WAAW,SAAS;AACvE,cAAc,0BAA0B,EAAE;AAC1C,MAAM;AACN,WAAW,gWAAgW;AAC3W,aAAa,gPAAgP;AAC7P;AACA;AACA;;AAEA;AACA;AACA;AACA,iB;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA,6BAA6B;AAC7B;AACA;AACA,oCAAoC;AACpC;AACA;AACA,iCAAiC;AACjC;AACA;AACA,qCAAqC;AACrC;AACA;AACA,8BAA8B;AAC9B;AACA;AACA,gCAAgC;AAChC;AACA;AACA,4BAA4B;AAC5B;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB,2CAA2C;AAC7D;AACA;AACA,kBAAkB,+CAA+C;AACjE;AACA;AACA,kBAAkB,yCAAyC;AAC3D;AACA;AACA,kBAAkB,6CAA6C;AAC/D;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,SAAS,YAAY,EAAE,MAAM,cAAc,IAAI,GAAG,sGAAsG,cAAc,QAAQ,gBAAgB,0EAA0E,0IAA0I,UAAU,EAAE,oBAAoB,0CAA0C,oBAAoB,gBAAgB,UAAU,gBAAgB,UAAU,8BAA8B,UAAU;AAC5kB,kBAAkB;AAClB;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iCAAiC;AACjC,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL,qDAAqD;AACrD;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL,UAAU,wBAAwB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,SAAS,YAAY,EAAE,MAAM,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,QAAQ,EAAE,QAAQ,cAAc,gBAAgB,gBAAgB,sBAAsB,EAAE,QAAQ,EAAE,gFAAgF,eAAe,SAAS,eAAe,UAAU,gBAAgB,0BAA0B,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,0BAA0B,EAAE,QAAQ,eAAe,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,UAAU,EAAE,oBAAoB,EAAE,UAAU,EAAE,UAAU;AAC1lB,iBAAiB,2GAA2G;AAC5H;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iCAAiC;AACjC,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL,qDAAqD;AACrD;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL,UAAU,wBAAwB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,aAAa,WAAW,kCAAkC,WAAW,kCAAkC,YAAY;AACnH,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA,CAAC;;;AAGD,IAAI,IAAgE;AACpE;AACA;AACA,6BAA6B,8CAA8C;AAC3E;AACA;AACA;AACA;AACA;AACA,iBAAiB,mBAAO,CAAC,0DAAI,eAAe,mBAAO,CAAC,qDAAM;AAC1D;AACA;AA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ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW,YAAY,IAAI,WAAW,SAAS;AACvE,cAAc,0BAA0B,EAAE;AAC1C,MAAM;AACN,WAAW,mHAAmH;AAC9H,aAAa,gDAAgD;AAC7D;AACA;AACA;;AAEA;AACA;AACA;AACA,W;AACA;AACA;;AAEA;AACA;AACA,kB;AACA;AACA;AACA,CAAC;AACD,SAAS,YAAY,EAAE,MAAM,cAAc,IAAI,GAAG,iCAAiC,EAAE,QAAQ;AAC7F,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iCAAiC;AACjC,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL,qDAAqD;AACrD;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL,UAAU,wBAAwB;AAClC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,aAAa,WAAW;AACxB,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA,CAAC;;;AAGD,IAAI,IAAgE;AACpE;AACA;AACA,6BAA6B,8CAA8C;AAC3E;AACA;AACA;AACA;AACA;AACA,iBAAiB,mBAAO,CAAC,0DAAI,eAAe,mBAAO,CAAC,qDAAM;AAC1D;AACA;AACA,IAAI,KAA6B,IAAI,4CAAY;AACjD;AACA;AACA,C;;;;;;;;;;;;;AC7mBA;AAAA,IAAMS,SAAS,GAAG,SAAZA,SAAY;AAAA;AAAA,CAAlB;;AAEeA,wEAAf,E;;;;;;;;;;;ACFA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA,eAAe,kCAAkC;AACjD,iBAAiB,kCAAkC;AACnD;AACA;AACA;AACA,qBAAqB,IAAI;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mJAAmJ;AACnJ,SAAS;;AAET;AACA;AACA,qBAAqB,+BAA+B;AACpD;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW,YAAY,IAAI,WAAW,SAAS;AACvE,cAAc,0BAA0B,EAAE;AAC1C,MAAM;AACN,WAAW,mIAAmI;AAC9I,aAAa,gEAAgE;AAC7E;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,kD;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA,CAAC;AACD,SAAS,YAAY,EAAE,MAAM,cAAc,IAAI,GAAG,0CAA0C,EAAE,QAAQ,yCAAyC,UAAU;AACzJ,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iCAAiC;AACjC,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL,qDAAqD;AACrD;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL,UAAU,wBAAwB;AAClC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,qGAAqG;AACrG,aAAa,UAAU,gCAAgC,YAAY;AACnE,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA,CAAC;;;AAGD,IAAI,IAAgE;AACpE;AACA;AACA,6BAA6B,8CAA8C;AAC3E;AACA;AACA;AACA;AACA;AACA,iBAAiB,mBAAO,CAAC,0DAAI,eAAe,mBAAO,CAAC,qDAAM;AAC1D;AACA;AACA,IAAI,KAA6B,IAAI,4CAAY;AACjD;AACA;AACA,C;;;;;;;;;;;;;ACznBA;AAAA;AAAA;;;AAGA;AAEA,IAAIwP,QAAQ,GAAG,EAAf;AACA,IAAInT,KAAK,GAAG,EAAZ;;AAEA,IAAMwU,UAAU,GAAG,SAAbA,UAAa,CAAShuB,EAAT,EAAatH,KAAb,EAAoB;AACrC,MAAI,OAAOi0B,QAAQ,CAAC3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A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW,YAAY,IAAI,WAAW,SAAS;AACvE,cAAc,0BAA0B,EAAE;AAC1C,MAAM;AACN,WAAW,wyBAAwyB;AACnzB,aAAa,ifAAif;AAC9f;AACA;AACA;;AAEA;AACA;AACA;AACA,kBAAkB,c;AAClB;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA,W;AACA;AACA;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA,QAAQ;AACR;AACA;AACA,SAAS,+BAA+B;AACxC;AACA;;AAEA,oBAAoB,0FAA0F;AAC9G,iBAAiB,qEAAqE;AACtF;AACA;AACA;;AAEA,oBAAoB,wFAAwF;AAC5G,iBAAiB,oFAAoF;AACrG;AACA;AACA;;AAEA,oBAAoB,uFAAuF;AAC3G,iBAAiB,mFAAmF;AACpG;AACA;AACA;;AAEA;AACA,oBAAoB,uFAAuF;AAC3G;AACA;AACA,iBAAiB,gDAAgD;AACjE;AACA;AACA;;AAEA;AACA,oBAAoB,uFAAuF;AAC3G;AACA;AACA,iBAAiB,gDAAgD;AACjE;AACA;AACA;AACA,4BAA4B,gFAAgF,W;AAC5G;AACA;AACA,4BAA4B,kFAAkF,W;AAC9G;AACA;;AAEA,uBAAuB,sEAAsE;AAC7F;AACA;;AAEA;AACA;AACA;AACA;AACA,uBAAuB,qFAAqF;AAC5G;AACA;AACA,6B;AACA;AACA;AACA,iB;AACA;AACA;AACA,8B;AACA;AACA;AACA,+B;AACA;AACA;AACA,8BAA8B,4FAA4F;AAC1H,gBAAgB;AAChB;AACA;AACA;AACA,8BAA8B,4FAA4F;AAC1H,eAAe;AACf;AACA;AACA;AACA,8BAA8B,4FAA4F;AAC1H;AACA;AACA,QAAQ;AACR;AACA;AACA,iC;AACA;AACA;AACA,kC;AACA;AACA;AACA,4B;AACA;AACA;AACA,6B;AACA;AACA;AACA,kC;AACA;AACA;AACA,mC;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,qB;AACvB;AACA;AACA,6C;AACA;AACA;AACA,2CAA2C,4C;AAC3C;AACA;AACA,qBAAqB,oC;AACrB;AACA;AACA,CAAC;AACD,SAAS,sCAAsC,EAAE,MAAM,EAAE,sCAAsC,EAAE,sCAAsC,EAAE,uCAAuC,uDAAuD,KAAK,GAAG,gBAAgB,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,sJAAsJ,EAAE,uBAAuB,iCAAiC,6HAA6H,4BAA4B,aAAa,EAAE,SAAS,gBAAgB,aAAa,EAAE,aAAa,EAAE,SAAS,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,gBAAgB,kEAAkE,EAAE,oCAAoC,2CAA2C,SAAS,EAAE,gBAAgB,EAAE,SAAS,eAAe,mBAAmB,gBAAgB,SAAS,EAAE,SAAS,gBAAgB,SAAS,EAAE,SAAS,YAAY,KAAK,aAAa,KAAK,aAAa,KAAK,aAAa,WAAW,aAAa,WAAW,GAAG,iCAAiC,sFAAsF,aAAa,EAAE,mBAAmB,EAAE,UAAU,EAAE,UAAU,gBAAgB,aAAa,EAAE,UAAU,EAAE,UAAU,0DAA0D,wJAAwJ,EAAE,wJAAwJ,EAAE,wJAAwJ,EAAE,UAAU,EAAE,kKAAkK,EAAE,UAAU,EAAE,kKAAkK,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,oBAAoB,EAAE,SAAS,EAAE,SAAS,0DAA0D,UAAU,gBAAgB,WAAW,EAAE,cAAc,EAAE,cAAc,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,cAAc,wCAAwC,YAAY,aAAa,YAAY,GAAG,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AACpsF,iBAAiB,yKAAyK;AAC1L;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iCAAiC;AACjC,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL,qDAAqD;AACrD;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL,UAAU,wBAAwB;AAClC;AACA;AACA;AACA,qCAAqC,W;AACrC;AACA,qCAAqC,W;AACrC;AACA,wBAAwB,6BAA6B,W;AACrD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CA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iCAAiC;AACjC,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL,qDAAqD;AACrD;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL,UAAU,wBAAwB;AAClC;AACA;AACA;AACA;AACA;AACA;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B;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iCAAiC;AACjC,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AAC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","file":"mermaid.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"mermaid\"] = factory();\n\telse\n\t\troot[\"mermaid\"] = factory();\n})(typeof self !== \"undefined\" ? self : this, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./src/mermaid.js\");\n","'use strict';\n\nvar invalidPrototcolRegex = /^(%20|\\s)*(javascript|data)/im;\nvar ctrlCharactersRegex = /[^\\x20-\\x7E]/gmi;\nvar urlSchemeRegex = /^([^:]+):/gm;\nvar relativeFirstCharacters = ['.', '/']\n\nfunction isRelativeUrl(url) {\n return relativeFirstCharacters.indexOf(url[0]) > -1;\n}\n\nfunction sanitizeUrl(url) {\n if (!url) {\n return 'about:blank';\n }\n\n var urlScheme, urlSchemeParseResults;\n var sanitizedUrl = url.replace(ctrlCharactersRegex, '').trim();\n\n if (isRelativeUrl(sanitizedUrl)) {\n return sanitizedUrl;\n }\n\n urlSchemeParseResults = sanitizedUrl.match(urlSchemeRegex);\n\n if (!urlSchemeParseResults) {\n return 'about:blank';\n }\n\n urlScheme = urlSchemeParseResults[0];\n\n if (invalidPrototcolRegex.test(urlScheme)) {\n return 'about:blank';\n }\n\n return sanitizedUrl;\n}\n\nmodule.exports = {\n sanitizeUrl: sanitizeUrl\n};\n","var array = Array.prototype;\n\nexport var slice = array.slice;\nexport var map = array.map;\n","export default function(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","import ascending from \"./ascending\";\nimport bisector from \"./bisector\";\n\nvar ascendingBisect = bisector(ascending);\nexport var bisectRight = ascendingBisect.right;\nexport var bisectLeft = ascendingBisect.left;\nexport default bisectRight;\n","import ascending from \"./ascending\";\n\nexport default function(compare) {\n if (compare.length === 1) compare = ascendingComparator(compare);\n return {\n left: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n }\n return lo;\n },\n right: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) > 0) hi = mid;\n else lo = mid + 1;\n }\n return lo;\n }\n };\n}\n\nfunction ascendingComparator(f) {\n return function(d, x) {\n return ascending(f(d), x);\n };\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import {pair} from \"./pairs\";\n\nexport default function(values0, values1, reduce) {\n var n0 = values0.length,\n n1 = values1.length,\n values = new Array(n0 * n1),\n i0,\n i1,\n i,\n value0;\n\n if (reduce == null) reduce = pair;\n\n for (i0 = i = 0; i0 < n0; ++i0) {\n for (value0 = values0[i0], i1 = 0; i1 < n1; ++i1, ++i) {\n values[i] = reduce(value0, values1[i1]);\n }\n }\n\n return values;\n}\n","export default function(a, b) {\n return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n}\n","import variance from \"./variance\";\n\nexport default function(array, f) {\n var v = variance(array, f);\n return v ? Math.sqrt(v) : v;\n}\n","export default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n min,\n max;\n\n if (valueof == null) {\n while (++i < n) { // Find the first comparable value.\n if ((value = values[i]) != null && value >= value) {\n min = max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = values[i]) != null) {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n }\n }\n\n else {\n while (++i < n) { // Find the first comparable value.\n if ((value = valueof(values[i], i, values)) != null && value >= value) {\n min = max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = valueof(values[i], i, values)) != null) {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n }\n }\n\n return [min, max];\n}\n","import {slice} from \"./array\";\nimport bisect from \"./bisect\";\nimport constant from \"./constant\";\nimport extent from \"./extent\";\nimport identity from \"./identity\";\nimport range from \"./range\";\nimport {tickStep} from \"./ticks\";\nimport sturges from \"./threshold/sturges\";\n\nexport default function() {\n var value = identity,\n domain = extent,\n threshold = sturges;\n\n function histogram(data) {\n var i,\n n = data.length,\n x,\n values = new Array(n);\n\n for (i = 0; i < n; ++i) {\n values[i] = value(data[i], i, data);\n }\n\n var xz = domain(values),\n x0 = xz[0],\n x1 = xz[1],\n tz = threshold(values, x0, x1);\n\n // Convert number of thresholds into uniform thresholds.\n if (!Array.isArray(tz)) {\n tz = tickStep(x0, x1, tz);\n tz = range(Math.ceil(x0 / tz) * tz, x1, tz); // exclusive\n }\n\n // Remove any thresholds outside the domain.\n var m = tz.length;\n while (tz[0] <= x0) tz.shift(), --m;\n while (tz[m - 1] > x1) tz.pop(), --m;\n\n var bins = new Array(m + 1),\n bin;\n\n // Initialize bins.\n for (i = 0; i <= m; ++i) {\n bin = bins[i] = [];\n bin.x0 = i > 0 ? tz[i - 1] : x0;\n bin.x1 = i < m ? tz[i] : x1;\n }\n\n // Assign data to bins by value, ignoring any outside the domain.\n for (i = 0; i < n; ++i) {\n x = values[i];\n if (x0 <= x && x <= x1) {\n bins[bisect(tz, x, 0, m)].push(data[i]);\n }\n }\n\n return bins;\n }\n\n histogram.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(_), histogram) : value;\n };\n\n histogram.domain = function(_) {\n return arguments.length ? (domain = typeof _ === \"function\" ? _ : constant([_[0], _[1]]), histogram) : domain;\n };\n\n histogram.thresholds = function(_) {\n return arguments.length ? (threshold = typeof _ === \"function\" ? _ : Array.isArray(_) ? constant(slice.call(_)) : constant(_), histogram) : threshold;\n };\n\n return histogram;\n}\n","export default function(x) {\n return x;\n}\n","export {default as bisect, bisectRight, bisectLeft} from \"./bisect\";\nexport {default as ascending} from \"./ascending\";\nexport {default as bisector} from \"./bisector\";\nexport {default as cross} from \"./cross\";\nexport {default as descending} from \"./descending\";\nexport {default as deviation} from \"./deviation\";\nexport {default as extent} from \"./extent\";\nexport {default as histogram} from \"./histogram\";\nexport {default as thresholdFreedmanDiaconis} from \"./threshold/freedmanDiaconis\";\nexport {default as thresholdScott} from \"./threshold/scott\";\nexport {default as thresholdSturges} from \"./threshold/sturges\";\nexport {default as max} from \"./max\";\nexport {default as mean} from \"./mean\";\nexport {default as median} from \"./median\";\nexport {default as merge} from \"./merge\";\nexport {default as min} from \"./min\";\nexport {default as pairs} from \"./pairs\";\nexport {default as permute} from \"./permute\";\nexport {default as quantile} from \"./quantile\";\nexport {default as range} from \"./range\";\nexport {default as scan} from \"./scan\";\nexport {default as shuffle} from \"./shuffle\";\nexport {default as sum} from \"./sum\";\nexport {default as ticks, tickIncrement, tickStep} from \"./ticks\";\nexport {default as transpose} from \"./transpose\";\nexport {default as variance} from \"./variance\";\nexport {default as zip} from \"./zip\";\n","export default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n max;\n\n if (valueof == null) {\n while (++i < n) { // Find the first comparable value.\n if ((value = values[i]) != null && value >= value) {\n max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = values[i]) != null && value > max) {\n max = value;\n }\n }\n }\n }\n }\n\n else {\n while (++i < n) { // Find the first comparable value.\n if ((value = valueof(values[i], i, values)) != null && value >= value) {\n max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = valueof(values[i], i, values)) != null && value > max) {\n max = value;\n }\n }\n }\n }\n }\n\n return max;\n}\n","import number from \"./number\";\n\nexport default function(values, valueof) {\n var n = values.length,\n m = n,\n i = -1,\n value,\n sum = 0;\n\n if (valueof == null) {\n while (++i < n) {\n if (!isNaN(value = number(values[i]))) sum += value;\n else --m;\n }\n }\n\n else {\n while (++i < n) {\n if (!isNaN(value = number(valueof(values[i], i, values)))) sum += value;\n else --m;\n }\n }\n\n if (m) return sum / m;\n}\n","import ascending from \"./ascending\";\nimport number from \"./number\";\nimport quantile from \"./quantile\";\n\nexport default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n numbers = [];\n\n if (valueof == null) {\n while (++i < n) {\n if (!isNaN(value = number(values[i]))) {\n numbers.push(value);\n }\n }\n }\n\n else {\n while (++i < n) {\n if (!isNaN(value = number(valueof(values[i], i, values)))) {\n numbers.push(value);\n }\n }\n }\n\n return quantile(numbers.sort(ascending), 0.5);\n}\n","export default function(arrays) {\n var n = arrays.length,\n m,\n i = -1,\n j = 0,\n merged,\n array;\n\n while (++i < n) j += arrays[i].length;\n merged = new Array(j);\n\n while (--n >= 0) {\n array = arrays[n];\n m = array.length;\n while (--m >= 0) {\n merged[--j] = array[m];\n }\n }\n\n return merged;\n}\n","export default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n min;\n\n if (valueof == null) {\n while (++i < n) { // Find the first comparable value.\n if ((value = values[i]) != null && value >= value) {\n min = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = values[i]) != null && min > value) {\n min = value;\n }\n }\n }\n }\n }\n\n else {\n while (++i < n) { // Find the first comparable value.\n if ((value = valueof(values[i], i, values)) != null && value >= value) {\n min = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = valueof(values[i], i, values)) != null && min > value) {\n min = value;\n }\n }\n }\n }\n }\n\n return min;\n}\n","export default function(x) {\n return x === null ? NaN : +x;\n}\n","export default function(array, f) {\n if (f == null) f = pair;\n var i = 0, n = array.length - 1, p = array[0], pairs = new Array(n < 0 ? 0 : n);\n while (i < n) pairs[i] = f(p, p = array[++i]);\n return pairs;\n}\n\nexport function pair(a, b) {\n return [a, b];\n}\n","export default function(array, indexes) {\n var i = indexes.length, permutes = new Array(i);\n while (i--) permutes[i] = array[indexes[i]];\n return permutes;\n}\n","import number from \"./number\";\n\nexport default function(values, p, valueof) {\n if (valueof == null) valueof = number;\n if (!(n = values.length)) return;\n if ((p = +p) <= 0 || n < 2) return +valueof(values[0], 0, values);\n if (p >= 1) return +valueof(values[n - 1], n - 1, values);\n var n,\n i = (n - 1) * p,\n i0 = Math.floor(i),\n value0 = +valueof(values[i0], i0, values),\n value1 = +valueof(values[i0 + 1], i0 + 1, values);\n return value0 + (value1 - value0) * (i - i0);\n}\n","export default function(start, stop, step) {\n start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n\n var i = -1,\n n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n range = new Array(n);\n\n while (++i < n) {\n range[i] = start + i * step;\n }\n\n return range;\n}\n","import ascending from \"./ascending\";\n\nexport default function(values, compare) {\n if (!(n = values.length)) return;\n var n,\n i = 0,\n j = 0,\n xi,\n xj = values[j];\n\n if (compare == null) compare = ascending;\n\n while (++i < n) {\n if (compare(xi = values[i], xj) < 0 || compare(xj, xj) !== 0) {\n xj = xi, j = i;\n }\n }\n\n if (compare(xj, xj) === 0) return j;\n}\n","export default function(array, i0, i1) {\n var m = (i1 == null ? array.length : i1) - (i0 = i0 == null ? 0 : +i0),\n t,\n i;\n\n while (m) {\n i = Math.random() * m-- | 0;\n t = array[m + i0];\n array[m + i0] = array[i + i0];\n array[i + i0] = t;\n }\n\n return array;\n}\n","export default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n sum = 0;\n\n if (valueof == null) {\n while (++i < n) {\n if (value = +values[i]) sum += value; // Note: zero and null are equivalent.\n }\n }\n\n else {\n while (++i < n) {\n if (value = +valueof(values[i], i, values)) sum += value;\n }\n }\n\n return sum;\n}\n","import {map} from \"../array\";\nimport ascending from \"../ascending\";\nimport number from \"../number\";\nimport quantile from \"../quantile\";\n\nexport default function(values, min, max) {\n values = map.call(values, number).sort(ascending);\n return Math.ceil((max - min) / (2 * (quantile(values, 0.75) - quantile(values, 0.25)) * Math.pow(values.length, -1 / 3)));\n}\n","import deviation from \"../deviation\";\n\nexport default function(values, min, max) {\n return Math.ceil((max - min) / (3.5 * deviation(values) * Math.pow(values.length, -1 / 3)));\n}\n","export default function(values) {\n return Math.ceil(Math.log(values.length) / Math.LN2) + 1;\n}\n","var e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\n\nexport default function(start, stop, count) {\n var reverse,\n i = -1,\n n,\n ticks,\n step;\n\n stop = +stop, start = +start, count = +count;\n if (start === stop && count > 0) return [start];\n if (reverse = stop < start) n = start, start = stop, stop = n;\n if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) return [];\n\n if (step > 0) {\n start = Math.ceil(start / step);\n stop = Math.floor(stop / step);\n ticks = new Array(n = Math.ceil(stop - start + 1));\n while (++i < n) ticks[i] = (start + i) * step;\n } else {\n start = Math.floor(start * step);\n stop = Math.ceil(stop * step);\n ticks = new Array(n = Math.ceil(start - stop + 1));\n while (++i < n) ticks[i] = (start - i) / step;\n }\n\n if (reverse) ticks.reverse();\n\n return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n var step = (stop - start) / Math.max(0, count),\n power = Math.floor(Math.log(step) / Math.LN10),\n error = step / Math.pow(10, power);\n return power >= 0\n ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power)\n : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);\n}\n\nexport function tickStep(start, stop, count) {\n var step0 = Math.abs(stop - start) / Math.max(0, count),\n step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)),\n error = step0 / step1;\n if (error >= e10) step1 *= 10;\n else if (error >= e5) step1 *= 5;\n else if (error >= e2) step1 *= 2;\n return stop < start ? -step1 : step1;\n}\n","import min from \"./min\";\n\nexport default function(matrix) {\n if (!(n = matrix.length)) return [];\n for (var i = -1, m = min(matrix, length), transpose = new Array(m); ++i < m;) {\n for (var j = -1, n, row = transpose[i] = new Array(n); ++j < n;) {\n row[j] = matrix[j][i];\n }\n }\n return transpose;\n}\n\nfunction length(d) {\n return d.length;\n}\n","import number from \"./number\";\n\nexport default function(values, valueof) {\n var n = values.length,\n m = 0,\n i = -1,\n mean = 0,\n value,\n delta,\n sum = 0;\n\n if (valueof == null) {\n while (++i < n) {\n if (!isNaN(value = number(values[i]))) {\n delta = value - mean;\n mean += delta / ++m;\n sum += delta * (value - mean);\n }\n }\n }\n\n else {\n while (++i < n) {\n if (!isNaN(value = number(valueof(values[i], i, values)))) {\n delta = value - mean;\n mean += delta / ++m;\n sum += delta * (value - mean);\n }\n }\n }\n\n if (m > 1) return sum / (m - 1);\n}\n","import transpose from \"./transpose\";\n\nexport default function() {\n return transpose(arguments);\n}\n","export var slice = Array.prototype.slice;\n","import {slice} from \"./array\";\nimport identity from \"./identity\";\n\nvar top = 1,\n right = 2,\n bottom = 3,\n left = 4,\n epsilon = 1e-6;\n\nfunction translateX(x) {\n return \"translate(\" + (x + 0.5) + \",0)\";\n}\n\nfunction translateY(y) {\n return \"translate(0,\" + (y + 0.5) + \")\";\n}\n\nfunction number(scale) {\n return function(d) {\n return +scale(d);\n };\n}\n\nfunction center(scale) {\n var offset = Math.max(0, scale.bandwidth() - 1) / 2; // Adjust for 0.5px offset.\n if (scale.round()) offset = Math.round(offset);\n return function(d) {\n return +scale(d) + offset;\n };\n}\n\nfunction entering() {\n return !this.__axis;\n}\n\nfunction axis(orient, scale) {\n var tickArguments = [],\n tickValues = null,\n tickFormat = null,\n tickSizeInner = 6,\n tickSizeOuter = 6,\n tickPadding = 3,\n k = orient === top || orient === left ? -1 : 1,\n x = orient === left || orient === right ? \"x\" : \"y\",\n transform = orient === top || orient === bottom ? translateX : translateY;\n\n function axis(context) {\n var values = tickValues == null ? (scale.ticks ? scale.ticks.apply(scale, tickArguments) : scale.domain()) : tickValues,\n format = tickFormat == null ? (scale.tickFormat ? scale.tickFormat.apply(scale, tickArguments) : identity) : tickFormat,\n spacing = Math.max(tickSizeInner, 0) + tickPadding,\n range = scale.range(),\n range0 = +range[0] + 0.5,\n range1 = +range[range.length - 1] + 0.5,\n position = (scale.bandwidth ? center : number)(scale.copy()),\n selection = context.selection ? context.selection() : context,\n path = selection.selectAll(\".domain\").data([null]),\n tick = selection.selectAll(\".tick\").data(values, scale).order(),\n tickExit = tick.exit(),\n tickEnter = tick.enter().append(\"g\").attr(\"class\", \"tick\"),\n line = tick.select(\"line\"),\n text = tick.select(\"text\");\n\n path = path.merge(path.enter().insert(\"path\", \".tick\")\n .attr(\"class\", \"domain\")\n .attr(\"stroke\", \"currentColor\"));\n\n tick = tick.merge(tickEnter);\n\n line = line.merge(tickEnter.append(\"line\")\n .attr(\"stroke\", \"currentColor\")\n .attr(x + \"2\", k * tickSizeInner));\n\n text = text.merge(tickEnter.append(\"text\")\n .attr(\"fill\", \"currentColor\")\n .attr(x, k * spacing)\n .attr(\"dy\", orient === top ? \"0em\" : orient === bottom ? \"0.71em\" : \"0.32em\"));\n\n if (context !== selection) {\n path = path.transition(context);\n tick = tick.transition(context);\n line = line.transition(context);\n text = text.transition(context);\n\n tickExit = tickExit.transition(context)\n .attr(\"opacity\", epsilon)\n .attr(\"transform\", function(d) { return isFinite(d = position(d)) ? transform(d) : this.getAttribute(\"transform\"); });\n\n tickEnter\n .attr(\"opacity\", epsilon)\n .attr(\"transform\", function(d) { var p = this.parentNode.__axis; return transform(p && isFinite(p = p(d)) ? p : position(d)); });\n }\n\n tickExit.remove();\n\n path\n .attr(\"d\", orient === left || orient == right\n ? (tickSizeOuter ? \"M\" + k * tickSizeOuter + \",\" + range0 + \"H0.5V\" + range1 + \"H\" + k * tickSizeOuter : \"M0.5,\" + range0 + \"V\" + range1)\n : (tickSizeOuter ? \"M\" + range0 + \",\" + k * tickSizeOuter + \"V0.5H\" + range1 + \"V\" + k * tickSizeOuter : \"M\" + range0 + \",0.5H\" + range1));\n\n tick\n .attr(\"opacity\", 1)\n .attr(\"transform\", function(d) { return transform(position(d)); });\n\n line\n .attr(x + \"2\", k * tickSizeInner);\n\n text\n .attr(x, k * spacing)\n .text(format);\n\n selection.filter(entering)\n .attr(\"fill\", \"none\")\n .attr(\"font-size\", 10)\n .attr(\"font-family\", \"sans-serif\")\n .attr(\"text-anchor\", orient === right ? \"start\" : orient === left ? \"end\" : \"middle\");\n\n selection\n .each(function() { this.__axis = position; });\n }\n\n axis.scale = function(_) {\n return arguments.length ? (scale = _, axis) : scale;\n };\n\n axis.ticks = function() {\n return tickArguments = slice.call(arguments), axis;\n };\n\n axis.tickArguments = function(_) {\n return arguments.length ? (tickArguments = _ == null ? [] : slice.call(_), axis) : tickArguments.slice();\n };\n\n axis.tickValues = function(_) {\n return arguments.length ? (tickValues = _ == null ? null : slice.call(_), axis) : tickValues && tickValues.slice();\n };\n\n axis.tickFormat = function(_) {\n return arguments.length ? (tickFormat = _, axis) : tickFormat;\n };\n\n axis.tickSize = function(_) {\n return arguments.length ? (tickSizeInner = tickSizeOuter = +_, axis) : tickSizeInner;\n };\n\n axis.tickSizeInner = function(_) {\n return arguments.length ? (tickSizeInner = +_, axis) : tickSizeInner;\n };\n\n axis.tickSizeOuter = function(_) {\n return arguments.length ? (tickSizeOuter = +_, axis) : tickSizeOuter;\n };\n\n axis.tickPadding = function(_) {\n return arguments.length ? (tickPadding = +_, axis) : tickPadding;\n };\n\n return axis;\n}\n\nexport function axisTop(scale) {\n return axis(top, scale);\n}\n\nexport function axisRight(scale) {\n return axis(right, scale);\n}\n\nexport function axisBottom(scale) {\n return axis(bottom, scale);\n}\n\nexport function axisLeft(scale) {\n return axis(left, scale);\n}\n","export default function(x) {\n return x;\n}\n","export {\n axisTop,\n axisRight,\n axisBottom,\n axisLeft\n} from \"./axis\";\n","import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolate} from \"d3-interpolate\";\nimport {customEvent, event, touch, mouse, select} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant.js\";\nimport BrushEvent from \"./event.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\n\nvar MODE_DRAG = {name: \"drag\"},\n MODE_SPACE = {name: \"space\"},\n MODE_HANDLE = {name: \"handle\"},\n MODE_CENTER = {name: \"center\"};\n\nfunction number1(e) {\n return [+e[0], +e[1]];\n}\n\nfunction number2(e) {\n return [number1(e[0]), number1(e[1])];\n}\n\nfunction toucher(identifier) {\n return function(target) {\n return touch(target, event.touches, identifier);\n };\n}\n\nvar X = {\n name: \"x\",\n handles: [\"w\", \"e\"].map(type),\n input: function(x, e) { return x == null ? null : [[+x[0], e[0][1]], [+x[1], e[1][1]]]; },\n output: function(xy) { return xy && [xy[0][0], xy[1][0]]; }\n};\n\nvar Y = {\n name: \"y\",\n handles: [\"n\", \"s\"].map(type),\n input: function(y, e) { return y == null ? null : [[e[0][0], +y[0]], [e[1][0], +y[1]]]; },\n output: function(xy) { return xy && [xy[0][1], xy[1][1]]; }\n};\n\nvar XY = {\n name: \"xy\",\n handles: [\"n\", \"w\", \"e\", \"s\", \"nw\", \"ne\", \"sw\", \"se\"].map(type),\n input: function(xy) { return xy == null ? null : number2(xy); },\n output: function(xy) { return xy; }\n};\n\nvar cursors = {\n overlay: \"crosshair\",\n selection: \"move\",\n n: \"ns-resize\",\n e: \"ew-resize\",\n s: \"ns-resize\",\n w: \"ew-resize\",\n nw: \"nwse-resize\",\n ne: \"nesw-resize\",\n se: \"nwse-resize\",\n sw: \"nesw-resize\"\n};\n\nvar flipX = {\n e: \"w\",\n w: \"e\",\n nw: \"ne\",\n ne: \"nw\",\n se: \"sw\",\n sw: \"se\"\n};\n\nvar flipY = {\n n: \"s\",\n s: \"n\",\n nw: \"sw\",\n ne: \"se\",\n se: \"ne\",\n sw: \"nw\"\n};\n\nvar signsX = {\n overlay: +1,\n selection: +1,\n n: null,\n e: +1,\n s: null,\n w: -1,\n nw: -1,\n ne: +1,\n se: +1,\n sw: -1\n};\n\nvar signsY = {\n overlay: +1,\n selection: +1,\n n: -1,\n e: null,\n s: +1,\n w: null,\n nw: -1,\n ne: -1,\n se: +1,\n sw: +1\n};\n\nfunction type(t) {\n return {type: t};\n}\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter() {\n return !event.ctrlKey && !event.button;\n}\n\nfunction defaultExtent() {\n var svg = this.ownerSVGElement || this;\n if (svg.hasAttribute(\"viewBox\")) {\n svg = svg.viewBox.baseVal;\n return [[svg.x, svg.y], [svg.x + svg.width, svg.y + svg.height]];\n }\n return [[0, 0], [svg.width.baseVal.value, svg.height.baseVal.value]];\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\n// Like d3.local, but with the name “__brush” rather than auto-generated.\nfunction local(node) {\n while (!node.__brush) if (!(node = node.parentNode)) return;\n return node.__brush;\n}\n\nfunction empty(extent) {\n return extent[0][0] === extent[1][0]\n || extent[0][1] === extent[1][1];\n}\n\nexport function brushSelection(node) {\n var state = node.__brush;\n return state ? state.dim.output(state.selection) : null;\n}\n\nexport function brushX() {\n return brush(X);\n}\n\nexport function brushY() {\n return brush(Y);\n}\n\nexport default function() {\n return brush(XY);\n}\n\nfunction brush(dim) {\n var extent = defaultExtent,\n filter = defaultFilter,\n touchable = defaultTouchable,\n keys = true,\n listeners = dispatch(\"start\", \"brush\", \"end\"),\n handleSize = 6,\n touchending;\n\n function brush(group) {\n var overlay = group\n .property(\"__brush\", initialize)\n .selectAll(\".overlay\")\n .data([type(\"overlay\")]);\n\n overlay.enter().append(\"rect\")\n .attr(\"class\", \"overlay\")\n .attr(\"pointer-events\", \"all\")\n .attr(\"cursor\", cursors.overlay)\n .merge(overlay)\n .each(function() {\n var extent = local(this).extent;\n select(this)\n .attr(\"x\", extent[0][0])\n .attr(\"y\", extent[0][1])\n .attr(\"width\", extent[1][0] - extent[0][0])\n .attr(\"height\", extent[1][1] - extent[0][1]);\n });\n\n group.selectAll(\".selection\")\n .data([type(\"selection\")])\n .enter().append(\"rect\")\n .attr(\"class\", \"selection\")\n .attr(\"cursor\", cursors.selection)\n .attr(\"fill\", \"#777\")\n .attr(\"fill-opacity\", 0.3)\n .attr(\"stroke\", \"#fff\")\n .attr(\"shape-rendering\", \"crispEdges\");\n\n var handle = group.selectAll(\".handle\")\n .data(dim.handles, function(d) { return d.type; });\n\n handle.exit().remove();\n\n handle.enter().append(\"rect\")\n .attr(\"class\", function(d) { return \"handle handle--\" + d.type; })\n .attr(\"cursor\", function(d) { return cursors[d.type]; });\n\n group\n .each(redraw)\n .attr(\"fill\", \"none\")\n .attr(\"pointer-events\", \"all\")\n .on(\"mousedown.brush\", started)\n .filter(touchable)\n .on(\"touchstart.brush\", started)\n .on(\"touchmove.brush\", touchmoved)\n .on(\"touchend.brush touchcancel.brush\", touchended)\n .style(\"touch-action\", \"none\")\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n brush.move = function(group, selection) {\n if (group.selection) {\n group\n .on(\"start.brush\", function() { emitter(this, arguments).beforestart().start(); })\n .on(\"interrupt.brush end.brush\", function() { emitter(this, arguments).end(); })\n .tween(\"brush\", function() {\n var that = this,\n state = that.__brush,\n emit = emitter(that, arguments),\n selection0 = state.selection,\n selection1 = dim.input(typeof selection === \"function\" ? selection.apply(this, arguments) : selection, state.extent),\n i = interpolate(selection0, selection1);\n\n function tween(t) {\n state.selection = t === 1 && selection1 === null ? null : i(t);\n redraw.call(that);\n emit.brush();\n }\n\n return selection0 !== null && selection1 !== null ? tween : tween(1);\n });\n } else {\n group\n .each(function() {\n var that = this,\n args = arguments,\n state = that.__brush,\n selection1 = dim.input(typeof selection === \"function\" ? selection.apply(that, args) : selection, state.extent),\n emit = emitter(that, args).beforestart();\n\n interrupt(that);\n state.selection = selection1 === null ? null : selection1;\n redraw.call(that);\n emit.start().brush().end();\n });\n }\n };\n\n brush.clear = function(group) {\n brush.move(group, null);\n };\n\n function redraw() {\n var group = select(this),\n selection = local(this).selection;\n\n if (selection) {\n group.selectAll(\".selection\")\n .style(\"display\", null)\n .attr(\"x\", selection[0][0])\n .attr(\"y\", selection[0][1])\n .attr(\"width\", selection[1][0] - selection[0][0])\n .attr(\"height\", selection[1][1] - selection[0][1]);\n\n group.selectAll(\".handle\")\n .style(\"display\", null)\n .attr(\"x\", function(d) { return d.type[d.type.length - 1] === \"e\" ? selection[1][0] - handleSize / 2 : selection[0][0] - handleSize / 2; })\n .attr(\"y\", function(d) { return d.type[0] === \"s\" ? selection[1][1] - handleSize / 2 : selection[0][1] - handleSize / 2; })\n .attr(\"width\", function(d) { return d.type === \"n\" || d.type === \"s\" ? selection[1][0] - selection[0][0] + handleSize : handleSize; })\n .attr(\"height\", function(d) { return d.type === \"e\" || d.type === \"w\" ? selection[1][1] - selection[0][1] + handleSize : handleSize; });\n }\n\n else {\n group.selectAll(\".selection,.handle\")\n .style(\"display\", \"none\")\n .attr(\"x\", null)\n .attr(\"y\", null)\n .attr(\"width\", null)\n .attr(\"height\", null);\n }\n }\n\n function emitter(that, args, clean) {\n return (!clean && that.__brush.emitter) || new Emitter(that, args);\n }\n\n function Emitter(that, args) {\n this.that = that;\n this.args = args;\n this.state = that.__brush;\n this.active = 0;\n }\n\n Emitter.prototype = {\n beforestart: function() {\n if (++this.active === 1) this.state.emitter = this, this.starting = true;\n return this;\n },\n start: function() {\n if (this.starting) this.starting = false, this.emit(\"start\");\n else this.emit(\"brush\");\n return this;\n },\n brush: function() {\n this.emit(\"brush\");\n return this;\n },\n end: function() {\n if (--this.active === 0) delete this.state.emitter, this.emit(\"end\");\n return this;\n },\n emit: function(type) {\n customEvent(new BrushEvent(brush, type, dim.output(this.state.selection)), listeners.apply, listeners, [type, this.that, this.args]);\n }\n };\n\n function started() {\n if (touchending && !event.touches) return;\n if (!filter.apply(this, arguments)) return;\n\n var that = this,\n type = event.target.__data__.type,\n mode = (keys && event.metaKey ? type = \"overlay\" : type) === \"selection\" ? MODE_DRAG : (keys && event.altKey ? MODE_CENTER : MODE_HANDLE),\n signX = dim === Y ? null : signsX[type],\n signY = dim === X ? null : signsY[type],\n state = local(that),\n extent = state.extent,\n selection = state.selection,\n W = extent[0][0], w0, w1,\n N = extent[0][1], n0, n1,\n E = extent[1][0], e0, e1,\n S = extent[1][1], s0, s1,\n dx = 0,\n dy = 0,\n moving,\n shifting = signX && signY && keys && event.shiftKey,\n lockX,\n lockY,\n pointer = event.touches ? toucher(event.changedTouches[0].identifier) : mouse,\n point0 = pointer(that),\n point = point0,\n emit = emitter(that, arguments, true).beforestart();\n\n if (type === \"overlay\") {\n if (selection) moving = true;\n state.selection = selection = [\n [w0 = dim === Y ? W : point0[0], n0 = dim === X ? N : point0[1]],\n [e0 = dim === Y ? E : w0, s0 = dim === X ? S : n0]\n ];\n } else {\n w0 = selection[0][0];\n n0 = selection[0][1];\n e0 = selection[1][0];\n s0 = selection[1][1];\n }\n\n w1 = w0;\n n1 = n0;\n e1 = e0;\n s1 = s0;\n\n var group = select(that)\n .attr(\"pointer-events\", \"none\");\n\n var overlay = group.selectAll(\".overlay\")\n .attr(\"cursor\", cursors[type]);\n\n if (event.touches) {\n emit.moved = moved;\n emit.ended = ended;\n } else {\n var view = select(event.view)\n .on(\"mousemove.brush\", moved, true)\n .on(\"mouseup.brush\", ended, true);\n if (keys) view\n .on(\"keydown.brush\", keydowned, true)\n .on(\"keyup.brush\", keyupped, true)\n\n dragDisable(event.view);\n }\n\n nopropagation();\n interrupt(that);\n redraw.call(that);\n emit.start();\n\n function moved() {\n var point1 = pointer(that);\n if (shifting && !lockX && !lockY) {\n if (Math.abs(point1[0] - point[0]) > Math.abs(point1[1] - point[1])) lockY = true;\n else lockX = true;\n }\n point = point1;\n moving = true;\n noevent();\n move();\n }\n\n function move() {\n var t;\n\n dx = point[0] - point0[0];\n dy = point[1] - point0[1];\n\n switch (mode) {\n case MODE_SPACE:\n case MODE_DRAG: {\n if (signX) dx = Math.max(W - w0, Math.min(E - e0, dx)), w1 = w0 + dx, e1 = e0 + dx;\n if (signY) dy = Math.max(N - n0, Math.min(S - s0, dy)), n1 = n0 + dy, s1 = s0 + dy;\n break;\n }\n case MODE_HANDLE: {\n if (signX < 0) dx = Math.max(W - w0, Math.min(E - w0, dx)), w1 = w0 + dx, e1 = e0;\n else if (signX > 0) dx = Math.max(W - e0, Math.min(E - e0, dx)), w1 = w0, e1 = e0 + dx;\n if (signY < 0) dy = Math.max(N - n0, Math.min(S - n0, dy)), n1 = n0 + dy, s1 = s0;\n else if (signY > 0) dy = Math.max(N - s0, Math.min(S - s0, dy)), n1 = n0, s1 = s0 + dy;\n break;\n }\n case MODE_CENTER: {\n if (signX) w1 = Math.max(W, Math.min(E, w0 - dx * signX)), e1 = Math.max(W, Math.min(E, e0 + dx * signX));\n if (signY) n1 = Math.max(N, Math.min(S, n0 - dy * signY)), s1 = Math.max(N, Math.min(S, s0 + dy * signY));\n break;\n }\n }\n\n if (e1 < w1) {\n signX *= -1;\n t = w0, w0 = e0, e0 = t;\n t = w1, w1 = e1, e1 = t;\n if (type in flipX) overlay.attr(\"cursor\", cursors[type = flipX[type]]);\n }\n\n if (s1 < n1) {\n signY *= -1;\n t = n0, n0 = s0, s0 = t;\n t = n1, n1 = s1, s1 = t;\n if (type in flipY) overlay.attr(\"cursor\", cursors[type = flipY[type]]);\n }\n\n if (state.selection) selection = state.selection; // May be set by brush.move!\n if (lockX) w1 = selection[0][0], e1 = selection[1][0];\n if (lockY) n1 = selection[0][1], s1 = selection[1][1];\n\n if (selection[0][0] !== w1\n || selection[0][1] !== n1\n || selection[1][0] !== e1\n || selection[1][1] !== s1) {\n state.selection = [[w1, n1], [e1, s1]];\n redraw.call(that);\n emit.brush();\n }\n }\n\n function ended() {\n nopropagation();\n if (event.touches) {\n if (event.touches.length) return;\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!\n } else {\n dragEnable(event.view, moving);\n view.on(\"keydown.brush keyup.brush mousemove.brush mouseup.brush\", null);\n }\n group.attr(\"pointer-events\", \"all\");\n overlay.attr(\"cursor\", cursors.overlay);\n if (state.selection) selection = state.selection; // May be set by brush.move (on start)!\n if (empty(selection)) state.selection = null, redraw.call(that);\n emit.end();\n }\n\n function keydowned() {\n switch (event.keyCode) {\n case 16: { // SHIFT\n shifting = signX && signY;\n break;\n }\n case 18: { // ALT\n if (mode === MODE_HANDLE) {\n if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n mode = MODE_CENTER;\n move();\n }\n break;\n }\n case 32: { // SPACE; takes priority over ALT\n if (mode === MODE_HANDLE || mode === MODE_CENTER) {\n if (signX < 0) e0 = e1 - dx; else if (signX > 0) w0 = w1 - dx;\n if (signY < 0) s0 = s1 - dy; else if (signY > 0) n0 = n1 - dy;\n mode = MODE_SPACE;\n overlay.attr(\"cursor\", cursors.selection);\n move();\n }\n break;\n }\n default: return;\n }\n noevent();\n }\n\n function keyupped() {\n switch (event.keyCode) {\n case 16: { // SHIFT\n if (shifting) {\n lockX = lockY = shifting = false;\n move();\n }\n break;\n }\n case 18: { // ALT\n if (mode === MODE_CENTER) {\n if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n mode = MODE_HANDLE;\n move();\n }\n break;\n }\n case 32: { // SPACE\n if (mode === MODE_SPACE) {\n if (event.altKey) {\n if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n mode = MODE_CENTER;\n } else {\n if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n mode = MODE_HANDLE;\n }\n overlay.attr(\"cursor\", cursors[type]);\n move();\n }\n break;\n }\n default: return;\n }\n noevent();\n }\n }\n\n function touchmoved() {\n emitter(this, arguments).moved();\n }\n\n function touchended() {\n emitter(this, arguments).ended();\n }\n\n function initialize() {\n var state = this.__brush || {selection: null};\n state.extent = number2(extent.apply(this, arguments));\n state.dim = dim;\n return state;\n }\n\n brush.extent = function(_) {\n return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant(number2(_)), brush) : extent;\n };\n\n brush.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), brush) : filter;\n };\n\n brush.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), brush) : touchable;\n };\n\n brush.handleSize = function(_) {\n return arguments.length ? (handleSize = +_, brush) : handleSize;\n };\n\n brush.keyModifiers = function(_) {\n return arguments.length ? (keys = !!_, brush) : keys;\n };\n\n brush.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? brush : value;\n };\n\n return brush;\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(target, type, selection) {\n this.target = target;\n this.type = type;\n this.selection = selection;\n}\n","export {\n default as brush,\n brushX,\n brushY,\n brushSelection\n} from \"./brush.js\";\n","import {event} from \"d3-selection\";\n\nexport function nopropagation() {\n event.stopImmediatePropagation();\n}\n\nexport default function() {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n","export var slice = Array.prototype.slice;\n","import {range} from \"d3-array\";\nimport {max, tau} from \"./math\";\n\nfunction compareValue(compare) {\n return function(a, b) {\n return compare(\n a.source.value + a.target.value,\n b.source.value + b.target.value\n );\n };\n}\n\nexport default function() {\n var padAngle = 0,\n sortGroups = null,\n sortSubgroups = null,\n sortChords = null;\n\n function chord(matrix) {\n var n = matrix.length,\n groupSums = [],\n groupIndex = range(n),\n subgroupIndex = [],\n chords = [],\n groups = chords.groups = new Array(n),\n subgroups = new Array(n * n),\n k,\n x,\n x0,\n dx,\n i,\n j;\n\n // Compute the sum.\n k = 0, i = -1; while (++i < n) {\n x = 0, j = -1; while (++j < n) {\n x += matrix[i][j];\n }\n groupSums.push(x);\n subgroupIndex.push(range(n));\n k += x;\n }\n\n // Sort groups…\n if (sortGroups) groupIndex.sort(function(a, b) {\n return sortGroups(groupSums[a], groupSums[b]);\n });\n\n // Sort subgroups…\n if (sortSubgroups) subgroupIndex.forEach(function(d, i) {\n d.sort(function(a, b) {\n return sortSubgroups(matrix[i][a], matrix[i][b]);\n });\n });\n\n // Convert the sum to scaling factor for [0, 2pi].\n // TODO Allow start and end angle to be specified?\n // TODO Allow padding to be specified as percentage?\n k = max(0, tau - padAngle * n) / k;\n dx = k ? padAngle : tau / n;\n\n // Compute the start and end angle for each group and subgroup.\n // Note: Opera has a bug reordering object literal properties!\n x = 0, i = -1; while (++i < n) {\n x0 = x, j = -1; while (++j < n) {\n var di = groupIndex[i],\n dj = subgroupIndex[di][j],\n v = matrix[di][dj],\n a0 = x,\n a1 = x += v * k;\n subgroups[dj * n + di] = {\n index: di,\n subindex: dj,\n startAngle: a0,\n endAngle: a1,\n value: v\n };\n }\n groups[di] = {\n index: di,\n startAngle: x0,\n endAngle: x,\n value: groupSums[di]\n };\n x += dx;\n }\n\n // Generate chords for each (non-empty) subgroup-subgroup link.\n i = -1; while (++i < n) {\n j = i - 1; while (++j < n) {\n var source = subgroups[j * n + i],\n target = subgroups[i * n + j];\n if (source.value || target.value) {\n chords.push(source.value < target.value\n ? {source: target, target: source}\n : {source: source, target: target});\n }\n }\n }\n\n return sortChords ? chords.sort(sortChords) : chords;\n }\n\n chord.padAngle = function(_) {\n return arguments.length ? (padAngle = max(0, _), chord) : padAngle;\n };\n\n chord.sortGroups = function(_) {\n return arguments.length ? (sortGroups = _, chord) : sortGroups;\n };\n\n chord.sortSubgroups = function(_) {\n return arguments.length ? (sortSubgroups = _, chord) : sortSubgroups;\n };\n\n chord.sortChords = function(_) {\n return arguments.length ? (_ == null ? sortChords = null : (sortChords = compareValue(_))._ = _, chord) : sortChords && sortChords._;\n };\n\n return chord;\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export {default as chord} from \"./chord\";\nexport {default as ribbon} from \"./ribbon\";\n","export var cos = Math.cos;\nexport var sin = Math.sin;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var tau = pi * 2;\nexport var max = Math.max;\n","import {slice} from \"./array\";\nimport constant from \"./constant\";\nimport {cos, halfPi, sin} from \"./math\";\nimport {path} from \"d3-path\";\n\nfunction defaultSource(d) {\n return d.source;\n}\n\nfunction defaultTarget(d) {\n return d.target;\n}\n\nfunction defaultRadius(d) {\n return d.radius;\n}\n\nfunction defaultStartAngle(d) {\n return d.startAngle;\n}\n\nfunction defaultEndAngle(d) {\n return d.endAngle;\n}\n\nexport default function() {\n var source = defaultSource,\n target = defaultTarget,\n radius = defaultRadius,\n startAngle = defaultStartAngle,\n endAngle = defaultEndAngle,\n context = null;\n\n function ribbon() {\n var buffer,\n argv = slice.call(arguments),\n s = source.apply(this, argv),\n t = target.apply(this, argv),\n sr = +radius.apply(this, (argv[0] = s, argv)),\n sa0 = startAngle.apply(this, argv) - halfPi,\n sa1 = endAngle.apply(this, argv) - halfPi,\n sx0 = sr * cos(sa0),\n sy0 = sr * sin(sa0),\n tr = +radius.apply(this, (argv[0] = t, argv)),\n ta0 = startAngle.apply(this, argv) - halfPi,\n ta1 = endAngle.apply(this, argv) - halfPi;\n\n if (!context) context = buffer = path();\n\n context.moveTo(sx0, sy0);\n context.arc(0, 0, sr, sa0, sa1);\n if (sa0 !== ta0 || sa1 !== ta1) { // TODO sr !== tr?\n context.quadraticCurveTo(0, 0, tr * cos(ta0), tr * sin(ta0));\n context.arc(0, 0, tr, ta0, ta1);\n }\n context.quadraticCurveTo(0, 0, sx0, sy0);\n context.closePath();\n\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n ribbon.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), ribbon) : radius;\n };\n\n ribbon.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), ribbon) : startAngle;\n };\n\n ribbon.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), ribbon) : endAngle;\n };\n\n ribbon.source = function(_) {\n return arguments.length ? (source = _, ribbon) : source;\n };\n\n ribbon.target = function(_) {\n return arguments.length ? (target = _, ribbon) : target;\n };\n\n ribbon.context = function(_) {\n return arguments.length ? ((context = _ == null ? null : _), ribbon) : context;\n };\n\n return ribbon;\n}\n","export default function(map) {\n var entries = [];\n for (var key in map) entries.push({key: key, value: map[key]});\n return entries;\n}\n","export {default as nest} from \"./nest\";\nexport {default as set} from \"./set\";\nexport {default as map} from \"./map\";\nexport {default as keys} from \"./keys\";\nexport {default as values} from \"./values\";\nexport {default as entries} from \"./entries\";\n","export default function(map) {\n var keys = [];\n for (var key in map) keys.push(key);\n return keys;\n}\n","export var prefix = \"$\";\n\nfunction Map() {}\n\nMap.prototype = map.prototype = {\n constructor: Map,\n has: function(key) {\n return (prefix + key) in this;\n },\n get: function(key) {\n return this[prefix + key];\n },\n set: function(key, value) {\n this[prefix + key] = value;\n return this;\n },\n remove: function(key) {\n var property = prefix + key;\n return property in this && delete this[property];\n },\n clear: function() {\n for (var property in this) if (property[0] === prefix) delete this[property];\n },\n keys: function() {\n var keys = [];\n for (var property in this) if (property[0] === prefix) keys.push(property.slice(1));\n return keys;\n },\n values: function() {\n var values = [];\n for (var property in this) if (property[0] === prefix) values.push(this[property]);\n return values;\n },\n entries: function() {\n var entries = [];\n for (var property in this) if (property[0] === prefix) entries.push({key: property.slice(1), value: this[property]});\n return entries;\n },\n size: function() {\n var size = 0;\n for (var property in this) if (property[0] === prefix) ++size;\n return size;\n },\n empty: function() {\n for (var property in this) if (property[0] === prefix) return false;\n return true;\n },\n each: function(f) {\n for (var property in this) if (property[0] === prefix) f(this[property], property.slice(1), this);\n }\n};\n\nfunction map(object, f) {\n var map = new Map;\n\n // Copy constructor.\n if (object instanceof Map) object.each(function(value, key) { map.set(key, value); });\n\n // Index array by numeric index or specified key function.\n else if (Array.isArray(object)) {\n var i = -1,\n n = object.length,\n o;\n\n if (f == null) while (++i < n) map.set(i, object[i]);\n else while (++i < n) map.set(f(o = object[i], i, object), o);\n }\n\n // Convert object to map.\n else if (object) for (var key in object) map.set(key, object[key]);\n\n return map;\n}\n\nexport default map;\n","import map from \"./map\";\n\nexport default function() {\n var keys = [],\n sortKeys = [],\n sortValues,\n rollup,\n nest;\n\n function apply(array, depth, createResult, setResult) {\n if (depth >= keys.length) {\n if (sortValues != null) array.sort(sortValues);\n return rollup != null ? rollup(array) : array;\n }\n\n var i = -1,\n n = array.length,\n key = keys[depth++],\n keyValue,\n value,\n valuesByKey = map(),\n values,\n result = createResult();\n\n while (++i < n) {\n if (values = valuesByKey.get(keyValue = key(value = array[i]) + \"\")) {\n values.push(value);\n } else {\n valuesByKey.set(keyValue, [value]);\n }\n }\n\n valuesByKey.each(function(values, key) {\n setResult(result, key, apply(values, depth, createResult, setResult));\n });\n\n return result;\n }\n\n function entries(map, depth) {\n if (++depth > keys.length) return map;\n var array, sortKey = sortKeys[depth - 1];\n if (rollup != null && depth >= keys.length) array = map.entries();\n else array = [], map.each(function(v, k) { array.push({key: k, values: entries(v, depth)}); });\n return sortKey != null ? array.sort(function(a, b) { return sortKey(a.key, b.key); }) : array;\n }\n\n return nest = {\n object: function(array) { return apply(array, 0, createObject, setObject); },\n map: function(array) { return apply(array, 0, createMap, setMap); },\n entries: function(array) { return entries(apply(array, 0, createMap, setMap), 0); },\n key: function(d) { keys.push(d); return nest; },\n sortKeys: function(order) { sortKeys[keys.length - 1] = order; return nest; },\n sortValues: function(order) { sortValues = order; return nest; },\n rollup: function(f) { rollup = f; return nest; }\n };\n}\n\nfunction createObject() {\n return {};\n}\n\nfunction setObject(object, key, value) {\n object[key] = value;\n}\n\nfunction createMap() {\n return map();\n}\n\nfunction setMap(map, key, value) {\n map.set(key, value);\n}\n","import {default as map, prefix} from \"./map\";\n\nfunction Set() {}\n\nvar proto = map.prototype;\n\nSet.prototype = set.prototype = {\n constructor: Set,\n has: proto.has,\n add: function(value) {\n value += \"\";\n this[prefix + value] = value;\n return this;\n },\n remove: proto.remove,\n clear: proto.clear,\n values: proto.keys,\n size: proto.size,\n empty: proto.empty,\n each: proto.each\n};\n\nfunction set(object, f) {\n var set = new Set;\n\n // Copy constructor.\n if (object instanceof Set) object.each(function(value) { set.add(value); });\n\n // Otherwise, assume it’s an array.\n else if (object) {\n var i = -1, n = object.length;\n if (f == null) while (++i < n) set.add(object[i]);\n else while (++i < n) set.add(f(object[i], i, object));\n }\n\n return set;\n}\n\nexport default set;\n","export default function(map) {\n var values = [];\n for (var key in map) values.push(map[key]);\n return values;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(\"^rgb\\\\(\" + [reI, reI, reI] + \"\\\\)$\"),\n reRgbPercent = new RegExp(\"^rgb\\\\(\" + [reP, reP, reP] + \"\\\\)$\"),\n reRgbaInteger = new RegExp(\"^rgba\\\\(\" + [reI, reI, reI, reN] + \"\\\\)$\"),\n reRgbaPercent = new RegExp(\"^rgba\\\\(\" + [reP, reP, reP, reN] + \"\\\\)$\"),\n reHslPercent = new RegExp(\"^hsl\\\\(\" + [reN, reP, reP] + \"\\\\)$\"),\n reHslaPercent = new RegExp(\"^hsla\\\\(\" + [reN, reP, reP, reN] + \"\\\\)$\");\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy: function(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable: function() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? new Rgb(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? new Rgb((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb: function() {\n return this;\n },\n displayable: function() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return \"#\" + hex(this.r) + hex(this.g) + hex(this.b);\n}\n\nfunction rgb_formatRgb() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"rgb(\" : \"rgba(\")\n + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.b) || 0))\n + (a === 1 ? \")\" : \", \" + a + \")\");\n}\n\nfunction hex(value) {\n value = Math.max(0, Math.min(255, Math.round(value) || 0));\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n displayable: function() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl: function() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"hsl(\" : \"hsla(\")\n + (this.h || 0) + \", \"\n + (this.s || 0) * 100 + \"%, \"\n + (this.l || 0) * 100 + \"%\"\n + (a === 1 ? \")\" : \", \" + a + \")\");\n }\n}));\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","import define, {extend} from \"./define.js\";\nimport {Color, rgbConvert, Rgb, darker, brighter} from \"./color.js\";\nimport {deg2rad, rad2deg} from \"./math.js\";\n\nvar A = -0.14861,\n B = +1.78277,\n C = -0.29227,\n D = -0.90649,\n E = +1.97294,\n ED = E * D,\n EB = E * B,\n BC_DA = B * C - D * A;\n\nfunction cubehelixConvert(o) {\n if (o instanceof Cubehelix) return new Cubehelix(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Rgb)) o = rgbConvert(o);\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n l = (BC_DA * b + ED * r - EB * g) / (BC_DA + ED - EB),\n bl = b - l,\n k = (E * (g - l) - C * bl) / D,\n s = Math.sqrt(k * k + bl * bl) / (E * l * (1 - l)), // NaN if l=0 or l=1\n h = s ? Math.atan2(k, bl) * rad2deg - 120 : NaN;\n return new Cubehelix(h < 0 ? h + 360 : h, s, l, o.opacity);\n}\n\nexport default function cubehelix(h, s, l, opacity) {\n return arguments.length === 1 ? cubehelixConvert(h) : new Cubehelix(h, s, l, opacity == null ? 1 : opacity);\n}\n\nexport function Cubehelix(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Cubehelix, cubehelix, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function() {\n var h = isNaN(this.h) ? 0 : (this.h + 120) * deg2rad,\n l = +this.l,\n a = isNaN(this.s) ? 0 : this.s * l * (1 - l),\n cosh = Math.cos(h),\n sinh = Math.sin(h);\n return new Rgb(\n 255 * (l + a * (A * cosh + B * sinh)),\n 255 * (l + a * (C * cosh + D * sinh)),\n 255 * (l + a * (E * cosh)),\n this.opacity\n );\n }\n}));\n","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","export {default as color, rgb, hsl} from \"./color.js\";\nexport {default as lab, hcl, lch, gray} from \"./lab.js\";\nexport {default as cubehelix} from \"./cubehelix.js\";\n","import define, {extend} from \"./define.js\";\nimport {Color, rgbConvert, Rgb} from \"./color.js\";\nimport {deg2rad, rad2deg} from \"./math.js\";\n\n// https://observablehq.com/@mbostock/lab-and-rgb\nvar K = 18,\n Xn = 0.96422,\n Yn = 1,\n Zn = 0.82521,\n t0 = 4 / 29,\n t1 = 6 / 29,\n t2 = 3 * t1 * t1,\n t3 = t1 * t1 * t1;\n\nfunction labConvert(o) {\n if (o instanceof Lab) return new Lab(o.l, o.a, o.b, o.opacity);\n if (o instanceof Hcl) return hcl2lab(o);\n if (!(o instanceof Rgb)) o = rgbConvert(o);\n var r = rgb2lrgb(o.r),\n g = rgb2lrgb(o.g),\n b = rgb2lrgb(o.b),\n y = xyz2lab((0.2225045 * r + 0.7168786 * g + 0.0606169 * b) / Yn), x, z;\n if (r === g && g === b) x = z = y; else {\n x = xyz2lab((0.4360747 * r + 0.3850649 * g + 0.1430804 * b) / Xn);\n z = xyz2lab((0.0139322 * r + 0.0971045 * g + 0.7141733 * b) / Zn);\n }\n return new Lab(116 * y - 16, 500 * (x - y), 200 * (y - z), o.opacity);\n}\n\nexport function gray(l, opacity) {\n return new Lab(l, 0, 0, opacity == null ? 1 : opacity);\n}\n\nexport default function lab(l, a, b, opacity) {\n return arguments.length === 1 ? labConvert(l) : new Lab(l, a, b, opacity == null ? 1 : opacity);\n}\n\nexport function Lab(l, a, b, opacity) {\n this.l = +l;\n this.a = +a;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Lab, lab, extend(Color, {\n brighter: function(k) {\n return new Lab(this.l + K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n darker: function(k) {\n return new Lab(this.l - K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n rgb: function() {\n var y = (this.l + 16) / 116,\n x = isNaN(this.a) ? y : y + this.a / 500,\n z = isNaN(this.b) ? y : y - this.b / 200;\n x = Xn * lab2xyz(x);\n y = Yn * lab2xyz(y);\n z = Zn * lab2xyz(z);\n return new Rgb(\n lrgb2rgb( 3.1338561 * x - 1.6168667 * y - 0.4906146 * z),\n lrgb2rgb(-0.9787684 * x + 1.9161415 * y + 0.0334540 * z),\n lrgb2rgb( 0.0719453 * x - 0.2289914 * y + 1.4052427 * z),\n this.opacity\n );\n }\n}));\n\nfunction xyz2lab(t) {\n return t > t3 ? Math.pow(t, 1 / 3) : t / t2 + t0;\n}\n\nfunction lab2xyz(t) {\n return t > t1 ? t * t * t : t2 * (t - t0);\n}\n\nfunction lrgb2rgb(x) {\n return 255 * (x <= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055);\n}\n\nfunction rgb2lrgb(x) {\n return (x /= 255) <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);\n}\n\nfunction hclConvert(o) {\n if (o instanceof Hcl) return new Hcl(o.h, o.c, o.l, o.opacity);\n if (!(o instanceof Lab)) o = labConvert(o);\n if (o.a === 0 && o.b === 0) return new Hcl(NaN, 0 < o.l && o.l < 100 ? 0 : NaN, o.l, o.opacity);\n var h = Math.atan2(o.b, o.a) * rad2deg;\n return new Hcl(h < 0 ? h + 360 : h, Math.sqrt(o.a * o.a + o.b * o.b), o.l, o.opacity);\n}\n\nexport function lch(l, c, h, opacity) {\n return arguments.length === 1 ? hclConvert(l) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function hcl(h, c, l, opacity) {\n return arguments.length === 1 ? hclConvert(h) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function Hcl(h, c, l, opacity) {\n this.h = +h;\n this.c = +c;\n this.l = +l;\n this.opacity = +opacity;\n}\n\nfunction hcl2lab(o) {\n if (isNaN(o.h)) return new Lab(o.l, 0, 0, o.opacity);\n var h = o.h * deg2rad;\n return new Lab(o.l, Math.cos(h) * o.c, Math.sin(h) * o.c, o.opacity);\n}\n\ndefine(Hcl, hcl, extend(Color, {\n brighter: function(k) {\n return new Hcl(this.h, this.c, this.l + K * (k == null ? 1 : k), this.opacity);\n },\n darker: function(k) {\n return new Hcl(this.h, this.c, this.l - K * (k == null ? 1 : k), this.opacity);\n },\n rgb: function() {\n return hcl2lab(this).rgb();\n }\n}));\n","export var deg2rad = Math.PI / 180;\nexport var rad2deg = 180 / Math.PI;\n","export default function(ring) {\n var i = 0, n = ring.length, area = ring[n - 1][1] * ring[0][0] - ring[n - 1][0] * ring[0][1];\n while (++i < n) area += ring[i - 1][1] * ring[i][0] - ring[i - 1][0] * ring[i][1];\n return area;\n}\n","var array = Array.prototype;\n\nexport var slice = array.slice;\n","export default function(a, b) {\n return a - b;\n}\n","// TODO Optimize edge cases.\n// TODO Optimize index calculation.\n// TODO Optimize arguments.\nexport function blurX(source, target, r) {\n var n = source.width,\n m = source.height,\n w = (r << 1) + 1;\n for (var j = 0; j < m; ++j) {\n for (var i = 0, sr = 0; i < n + r; ++i) {\n if (i < n) {\n sr += source.data[i + j * n];\n }\n if (i >= r) {\n if (i >= w) {\n sr -= source.data[i - w + j * n];\n }\n target.data[i - r + j * n] = sr / Math.min(i + 1, n - 1 + w - i, w);\n }\n }\n }\n}\n\n// TODO Optimize edge cases.\n// TODO Optimize index calculation.\n// TODO Optimize arguments.\nexport function blurY(source, target, r) {\n var n = source.width,\n m = source.height,\n w = (r << 1) + 1;\n for (var i = 0; i < n; ++i) {\n for (var j = 0, sr = 0; j < m + r; ++j) {\n if (j < m) {\n sr += source.data[i + j * n];\n }\n if (j >= r) {\n if (j >= w) {\n sr -= source.data[i + (j - w) * n];\n }\n target.data[i + (j - r) * n] = sr / Math.min(j + 1, m - 1 + w - j, w);\n }\n }\n }\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(ring, hole) {\n var i = -1, n = hole.length, c;\n while (++i < n) if (c = ringContains(ring, hole[i])) return c;\n return 0;\n}\n\nfunction ringContains(ring, point) {\n var x = point[0], y = point[1], contains = -1;\n for (var i = 0, n = ring.length, j = n - 1; i < n; j = i++) {\n var pi = ring[i], xi = pi[0], yi = pi[1], pj = ring[j], xj = pj[0], yj = pj[1];\n if (segmentContains(pi, pj, point)) return 0;\n if (((yi > y) !== (yj > y)) && ((x < (xj - xi) * (y - yi) / (yj - yi) + xi))) contains = -contains;\n }\n return contains;\n}\n\nfunction segmentContains(a, b, c) {\n var i; return collinear(a, b, c) && within(a[i = +(a[0] === b[0])], c[i], b[i]);\n}\n\nfunction collinear(a, b, c) {\n return (b[0] - a[0]) * (c[1] - a[1]) === (c[0] - a[0]) * (b[1] - a[1]);\n}\n\nfunction within(p, q, r) {\n return p <= q && q <= r || r <= q && q <= p;\n}\n","import {extent, thresholdSturges, tickStep, range} from \"d3-array\";\nimport {slice} from \"./array\";\nimport ascending from \"./ascending\";\nimport area from \"./area\";\nimport constant from \"./constant\";\nimport contains from \"./contains\";\nimport noop from \"./noop\";\n\nvar cases = [\n [],\n [[[1.0, 1.5], [0.5, 1.0]]],\n [[[1.5, 1.0], [1.0, 1.5]]],\n [[[1.5, 1.0], [0.5, 1.0]]],\n [[[1.0, 0.5], [1.5, 1.0]]],\n [[[1.0, 1.5], [0.5, 1.0]], [[1.0, 0.5], [1.5, 1.0]]],\n [[[1.0, 0.5], [1.0, 1.5]]],\n [[[1.0, 0.5], [0.5, 1.0]]],\n [[[0.5, 1.0], [1.0, 0.5]]],\n [[[1.0, 1.5], [1.0, 0.5]]],\n [[[0.5, 1.0], [1.0, 0.5]], [[1.5, 1.0], [1.0, 1.5]]],\n [[[1.5, 1.0], [1.0, 0.5]]],\n [[[0.5, 1.0], [1.5, 1.0]]],\n [[[1.0, 1.5], [1.5, 1.0]]],\n [[[0.5, 1.0], [1.0, 1.5]]],\n []\n];\n\nexport default function() {\n var dx = 1,\n dy = 1,\n threshold = thresholdSturges,\n smooth = smoothLinear;\n\n function contours(values) {\n var tz = threshold(values);\n\n // Convert number of thresholds into uniform thresholds.\n if (!Array.isArray(tz)) {\n var domain = extent(values), start = domain[0], stop = domain[1];\n tz = tickStep(start, stop, tz);\n tz = range(Math.floor(start / tz) * tz, Math.floor(stop / tz) * tz, tz);\n } else {\n tz = tz.slice().sort(ascending);\n }\n\n return tz.map(function(value) {\n return contour(values, value);\n });\n }\n\n // Accumulate, smooth contour rings, assign holes to exterior rings.\n // Based on https://github.com/mbostock/shapefile/blob/v0.6.2/shp/polygon.js\n function contour(values, value) {\n var polygons = [],\n holes = [];\n\n isorings(values, value, function(ring) {\n smooth(ring, values, value);\n if (area(ring) > 0) polygons.push([ring]);\n else holes.push(ring);\n });\n\n holes.forEach(function(hole) {\n for (var i = 0, n = polygons.length, polygon; i < n; ++i) {\n if (contains((polygon = polygons[i])[0], hole) !== -1) {\n polygon.push(hole);\n return;\n }\n }\n });\n\n return {\n type: \"MultiPolygon\",\n value: value,\n coordinates: polygons\n };\n }\n\n // Marching squares with isolines stitched into rings.\n // Based on https://github.com/topojson/topojson-client/blob/v3.0.0/src/stitch.js\n function isorings(values, value, callback) {\n var fragmentByStart = new Array,\n fragmentByEnd = new Array,\n x, y, t0, t1, t2, t3;\n\n // Special case for the first row (y = -1, t2 = t3 = 0).\n x = y = -1;\n t1 = values[0] >= value;\n cases[t1 << 1].forEach(stitch);\n while (++x < dx - 1) {\n t0 = t1, t1 = values[x + 1] >= value;\n cases[t0 | t1 << 1].forEach(stitch);\n }\n cases[t1 << 0].forEach(stitch);\n\n // General case for the intermediate rows.\n while (++y < dy - 1) {\n x = -1;\n t1 = values[y * dx + dx] >= value;\n t2 = values[y * dx] >= value;\n cases[t1 << 1 | t2 << 2].forEach(stitch);\n while (++x < dx - 1) {\n t0 = t1, t1 = values[y * dx + dx + x + 1] >= value;\n t3 = t2, t2 = values[y * dx + x + 1] >= value;\n cases[t0 | t1 << 1 | t2 << 2 | t3 << 3].forEach(stitch);\n }\n cases[t1 | t2 << 3].forEach(stitch);\n }\n\n // Special case for the last row (y = dy - 1, t0 = t1 = 0).\n x = -1;\n t2 = values[y * dx] >= value;\n cases[t2 << 2].forEach(stitch);\n while (++x < dx - 1) {\n t3 = t2, t2 = values[y * dx + x + 1] >= value;\n cases[t2 << 2 | t3 << 3].forEach(stitch);\n }\n cases[t2 << 3].forEach(stitch);\n\n function stitch(line) {\n var start = [line[0][0] + x, line[0][1] + y],\n end = [line[1][0] + x, line[1][1] + y],\n startIndex = index(start),\n endIndex = index(end),\n f, g;\n if (f = fragmentByEnd[startIndex]) {\n if (g = fragmentByStart[endIndex]) {\n delete fragmentByEnd[f.end];\n delete fragmentByStart[g.start];\n if (f === g) {\n f.ring.push(end);\n callback(f.ring);\n } else {\n fragmentByStart[f.start] = fragmentByEnd[g.end] = {start: f.start, end: g.end, ring: f.ring.concat(g.ring)};\n }\n } else {\n delete fragmentByEnd[f.end];\n f.ring.push(end);\n fragmentByEnd[f.end = endIndex] = f;\n }\n } else if (f = fragmentByStart[endIndex]) {\n if (g = fragmentByEnd[startIndex]) {\n delete fragmentByStart[f.start];\n delete fragmentByEnd[g.end];\n if (f === g) {\n f.ring.push(end);\n callback(f.ring);\n } else {\n fragmentByStart[g.start] = fragmentByEnd[f.end] = {start: g.start, end: f.end, ring: g.ring.concat(f.ring)};\n }\n } else {\n delete fragmentByStart[f.start];\n f.ring.unshift(start);\n fragmentByStart[f.start = startIndex] = f;\n }\n } else {\n fragmentByStart[startIndex] = fragmentByEnd[endIndex] = {start: startIndex, end: endIndex, ring: [start, end]};\n }\n }\n }\n\n function index(point) {\n return point[0] * 2 + point[1] * (dx + 1) * 4;\n }\n\n function smoothLinear(ring, values, value) {\n ring.forEach(function(point) {\n var x = point[0],\n y = point[1],\n xt = x | 0,\n yt = y | 0,\n v0,\n v1 = values[yt * dx + xt];\n if (x > 0 && x < dx && xt === x) {\n v0 = values[yt * dx + xt - 1];\n point[0] = x + (value - v0) / (v1 - v0) - 0.5;\n }\n if (y > 0 && y < dy && yt === y) {\n v0 = values[(yt - 1) * dx + xt];\n point[1] = y + (value - v0) / (v1 - v0) - 0.5;\n }\n });\n }\n\n contours.contour = contour;\n\n contours.size = function(_) {\n if (!arguments.length) return [dx, dy];\n var _0 = Math.ceil(_[0]), _1 = Math.ceil(_[1]);\n if (!(_0 > 0) || !(_1 > 0)) throw new Error(\"invalid size\");\n return dx = _0, dy = _1, contours;\n };\n\n contours.thresholds = function(_) {\n return arguments.length ? (threshold = typeof _ === \"function\" ? _ : Array.isArray(_) ? constant(slice.call(_)) : constant(_), contours) : threshold;\n };\n\n contours.smooth = function(_) {\n return arguments.length ? (smooth = _ ? smoothLinear : noop, contours) : smooth === smoothLinear;\n };\n\n return contours;\n}\n","import {max, range, tickStep} from \"d3-array\";\nimport {slice} from \"./array\";\nimport {blurX, blurY} from \"./blur\";\nimport constant from \"./constant\";\nimport contours from \"./contours\";\n\nfunction defaultX(d) {\n return d[0];\n}\n\nfunction defaultY(d) {\n return d[1];\n}\n\nfunction defaultWeight() {\n return 1;\n}\n\nexport default function() {\n var x = defaultX,\n y = defaultY,\n weight = defaultWeight,\n dx = 960,\n dy = 500,\n r = 20, // blur radius\n k = 2, // log2(grid cell size)\n o = r * 3, // grid offset, to pad for blur\n n = (dx + o * 2) >> k, // grid width\n m = (dy + o * 2) >> k, // grid height\n threshold = constant(20);\n\n function density(data) {\n var values0 = new Float32Array(n * m),\n values1 = new Float32Array(n * m);\n\n data.forEach(function(d, i, data) {\n var xi = (+x(d, i, data) + o) >> k,\n yi = (+y(d, i, data) + o) >> k,\n wi = +weight(d, i, data);\n if (xi >= 0 && xi < n && yi >= 0 && yi < m) {\n values0[xi + yi * n] += wi;\n }\n });\n\n // TODO Optimize.\n blurX({width: n, height: m, data: values0}, {width: n, height: m, data: values1}, r >> k);\n blurY({width: n, height: m, data: values1}, {width: n, height: m, data: values0}, r >> k);\n blurX({width: n, height: m, data: values0}, {width: n, height: m, data: values1}, r >> k);\n blurY({width: n, height: m, data: values1}, {width: n, height: m, data: values0}, r >> k);\n blurX({width: n, height: m, data: values0}, {width: n, height: m, data: values1}, r >> k);\n blurY({width: n, height: m, data: values1}, {width: n, height: m, data: values0}, r >> k);\n\n var tz = threshold(values0);\n\n // Convert number of thresholds into uniform thresholds.\n if (!Array.isArray(tz)) {\n var stop = max(values0);\n tz = tickStep(0, stop, tz);\n tz = range(0, Math.floor(stop / tz) * tz, tz);\n tz.shift();\n }\n\n return contours()\n .thresholds(tz)\n .size([n, m])\n (values0)\n .map(transform);\n }\n\n function transform(geometry) {\n geometry.value *= Math.pow(2, -2 * k); // Density in points per square pixel.\n geometry.coordinates.forEach(transformPolygon);\n return geometry;\n }\n\n function transformPolygon(coordinates) {\n coordinates.forEach(transformRing);\n }\n\n function transformRing(coordinates) {\n coordinates.forEach(transformPoint);\n }\n\n // TODO Optimize.\n function transformPoint(coordinates) {\n coordinates[0] = coordinates[0] * Math.pow(2, k) - o;\n coordinates[1] = coordinates[1] * Math.pow(2, k) - o;\n }\n\n function resize() {\n o = r * 3;\n n = (dx + o * 2) >> k;\n m = (dy + o * 2) >> k;\n return density;\n }\n\n density.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), density) : x;\n };\n\n density.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), density) : y;\n };\n\n density.weight = function(_) {\n return arguments.length ? (weight = typeof _ === \"function\" ? _ : constant(+_), density) : weight;\n };\n\n density.size = function(_) {\n if (!arguments.length) return [dx, dy];\n var _0 = Math.ceil(_[0]), _1 = Math.ceil(_[1]);\n if (!(_0 >= 0) && !(_0 >= 0)) throw new Error(\"invalid size\");\n return dx = _0, dy = _1, resize();\n };\n\n density.cellSize = function(_) {\n if (!arguments.length) return 1 << k;\n if (!((_ = +_) >= 1)) throw new Error(\"invalid cell size\");\n return k = Math.floor(Math.log(_) / Math.LN2), resize();\n };\n\n density.thresholds = function(_) {\n return arguments.length ? (threshold = typeof _ === \"function\" ? _ : Array.isArray(_) ? constant(slice.call(_)) : constant(_), density) : threshold;\n };\n\n density.bandwidth = function(_) {\n if (!arguments.length) return Math.sqrt(r * (r + 1));\n if (!((_ = +_) >= 0)) throw new Error(\"invalid bandwidth\");\n return r = Math.round((Math.sqrt(4 * _ * _ + 1) - 1) / 2), resize();\n };\n\n return density;\n}\n","export {default as contours} from \"./contours\";\nexport {default as contourDensity} from \"./density\";\n","export default function() {}\n","var noop = {value: function() {}};\n\nfunction dispatch() {\n for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n if (!(t = arguments[i] + \"\") || (t in _) || /[\\s.]/.test(t)) throw new Error(\"illegal type: \" + t);\n _[t] = [];\n }\n return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n return {type: t, name: name};\n });\n}\n\nDispatch.prototype = dispatch.prototype = {\n constructor: Dispatch,\n on: function(typename, callback) {\n var _ = this._,\n T = parseTypenames(typename + \"\", _),\n t,\n i = -1,\n n = T.length;\n\n // If no callback was specified, return the callback of the given type and name.\n if (arguments.length < 2) {\n while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n return;\n }\n\n // If a type was specified, set the callback for the given type and name.\n // Otherwise, if a null callback was specified, remove callbacks of the given name.\n if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n while (++i < n) {\n if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n }\n\n return this;\n },\n copy: function() {\n var copy = {}, _ = this._;\n for (var t in _) copy[t] = _[t].slice();\n return new Dispatch(copy);\n },\n call: function(type, that) {\n if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n },\n apply: function(type, that, args) {\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n }\n};\n\nfunction get(type, name) {\n for (var i = 0, n = type.length, c; i < n; ++i) {\n if ((c = type[i]).name === name) {\n return c.value;\n }\n }\n}\n\nfunction set(type, name, callback) {\n for (var i = 0, n = type.length; i < n; ++i) {\n if (type[i].name === name) {\n type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n break;\n }\n }\n if (callback != null) type.push({name: name, value: callback});\n return type;\n}\n\nexport default dispatch;\n","export {default as dispatch} from \"./dispatch.js\";\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {event, customEvent, select, mouse, touch} from \"d3-selection\";\nimport nodrag, {yesdrag} from \"./nodrag.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\nimport constant from \"./constant.js\";\nimport DragEvent from \"./event.js\";\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter() {\n return !event.ctrlKey && !event.button;\n}\n\nfunction defaultContainer() {\n return this.parentNode;\n}\n\nfunction defaultSubject(d) {\n return d == null ? {x: event.x, y: event.y} : d;\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\nexport default function() {\n var filter = defaultFilter,\n container = defaultContainer,\n subject = defaultSubject,\n touchable = defaultTouchable,\n gestures = {},\n listeners = dispatch(\"start\", \"drag\", \"end\"),\n active = 0,\n mousedownx,\n mousedowny,\n mousemoving,\n touchending,\n clickDistance2 = 0;\n\n function drag(selection) {\n selection\n .on(\"mousedown.drag\", mousedowned)\n .filter(touchable)\n .on(\"touchstart.drag\", touchstarted)\n .on(\"touchmove.drag\", touchmoved)\n .on(\"touchend.drag touchcancel.drag\", touchended)\n .style(\"touch-action\", \"none\")\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n function mousedowned() {\n if (touchending || !filter.apply(this, arguments)) return;\n var gesture = beforestart(\"mouse\", container.apply(this, arguments), mouse, this, arguments);\n if (!gesture) return;\n select(event.view).on(\"mousemove.drag\", mousemoved, true).on(\"mouseup.drag\", mouseupped, true);\n nodrag(event.view);\n nopropagation();\n mousemoving = false;\n mousedownx = event.clientX;\n mousedowny = event.clientY;\n gesture(\"start\");\n }\n\n function mousemoved() {\n noevent();\n if (!mousemoving) {\n var dx = event.clientX - mousedownx, dy = event.clientY - mousedowny;\n mousemoving = dx * dx + dy * dy > clickDistance2;\n }\n gestures.mouse(\"drag\");\n }\n\n function mouseupped() {\n select(event.view).on(\"mousemove.drag mouseup.drag\", null);\n yesdrag(event.view, mousemoving);\n noevent();\n gestures.mouse(\"end\");\n }\n\n function touchstarted() {\n if (!filter.apply(this, arguments)) return;\n var touches = event.changedTouches,\n c = container.apply(this, arguments),\n n = touches.length, i, gesture;\n\n for (i = 0; i < n; ++i) {\n if (gesture = beforestart(touches[i].identifier, c, touch, this, arguments)) {\n nopropagation();\n gesture(\"start\");\n }\n }\n }\n\n function touchmoved() {\n var touches = event.changedTouches,\n n = touches.length, i, gesture;\n\n for (i = 0; i < n; ++i) {\n if (gesture = gestures[touches[i].identifier]) {\n noevent();\n gesture(\"drag\");\n }\n }\n }\n\n function touchended() {\n var touches = event.changedTouches,\n n = touches.length, i, gesture;\n\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!\n for (i = 0; i < n; ++i) {\n if (gesture = gestures[touches[i].identifier]) {\n nopropagation();\n gesture(\"end\");\n }\n }\n }\n\n function beforestart(id, container, point, that, args) {\n var p = point(container, id), s, dx, dy,\n sublisteners = listeners.copy();\n\n if (!customEvent(new DragEvent(drag, \"beforestart\", s, id, active, p[0], p[1], 0, 0, sublisteners), function() {\n if ((event.subject = s = subject.apply(that, args)) == null) return false;\n dx = s.x - p[0] || 0;\n dy = s.y - p[1] || 0;\n return true;\n })) return;\n\n return function gesture(type) {\n var p0 = p, n;\n switch (type) {\n case \"start\": gestures[id] = gesture, n = active++; break;\n case \"end\": delete gestures[id], --active; // nobreak\n case \"drag\": p = point(container, id), n = active; break;\n }\n customEvent(new DragEvent(drag, type, s, id, n, p[0] + dx, p[1] + dy, p[0] - p0[0], p[1] - p0[1], sublisteners), sublisteners.apply, sublisteners, [type, that, args]);\n };\n }\n\n drag.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), drag) : filter;\n };\n\n drag.container = function(_) {\n return arguments.length ? (container = typeof _ === \"function\" ? _ : constant(_), drag) : container;\n };\n\n drag.subject = function(_) {\n return arguments.length ? (subject = typeof _ === \"function\" ? _ : constant(_), drag) : subject;\n };\n\n drag.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), drag) : touchable;\n };\n\n drag.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? drag : value;\n };\n\n drag.clickDistance = function(_) {\n return arguments.length ? (clickDistance2 = (_ = +_) * _, drag) : Math.sqrt(clickDistance2);\n };\n\n return drag;\n}\n","export default function DragEvent(target, type, subject, id, active, x, y, dx, dy, dispatch) {\n this.target = target;\n this.type = type;\n this.subject = subject;\n this.identifier = id;\n this.active = active;\n this.x = x;\n this.y = y;\n this.dx = dx;\n this.dy = dy;\n this._ = dispatch;\n}\n\nDragEvent.prototype.on = function() {\n var value = this._.on.apply(this._, arguments);\n return value === this._ ? this : value;\n};\n","export {default as drag} from \"./drag.js\";\nexport {default as dragDisable, yesdrag as dragEnable} from \"./nodrag.js\";\n","import {select} from \"d3-selection\";\nimport noevent from \"./noevent.js\";\n\nexport default function(view) {\n var root = view.document.documentElement,\n selection = select(view).on(\"dragstart.drag\", noevent, true);\n if (\"onselectstart\" in root) {\n selection.on(\"selectstart.drag\", noevent, true);\n } else {\n root.__noselect = root.style.MozUserSelect;\n root.style.MozUserSelect = \"none\";\n }\n}\n\nexport function yesdrag(view, noclick) {\n var root = view.document.documentElement,\n selection = select(view).on(\"dragstart.drag\", null);\n if (noclick) {\n selection.on(\"click.drag\", noevent, true);\n setTimeout(function() { selection.on(\"click.drag\", null); }, 0);\n }\n if (\"onselectstart\" in root) {\n selection.on(\"selectstart.drag\", null);\n } else {\n root.style.MozUserSelect = root.__noselect;\n delete root.__noselect;\n }\n}\n","import {event} from \"d3-selection\";\n\nexport function nopropagation() {\n event.stopImmediatePropagation();\n}\n\nexport default function() {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n","export default function autoType(object) {\n for (var key in object) {\n var value = object[key].trim(), number, m;\n if (!value) value = null;\n else if (value === \"true\") value = true;\n else if (value === \"false\") value = false;\n else if (value === \"NaN\") value = NaN;\n else if (!isNaN(number = +value)) value = number;\n else if (m = value.match(/^([-+]\\d{2})?\\d{4}(-\\d{2}(-\\d{2})?)?(T\\d{2}:\\d{2}(:\\d{2}(\\.\\d{3})?)?(Z|[-+]\\d{2}:\\d{2})?)?$/)) {\n if (fixtz && !!m[4] && !m[7]) value = value.replace(/-/g, \"/\").replace(/T/, \" \");\n value = new Date(value);\n }\n else continue;\n object[key] = value;\n }\n return object;\n}\n\n// https://github.com/d3/d3-dsv/issues/45\nvar fixtz = new Date(\"2019-01-01T00:00\").getHours() || new Date(\"2019-07-01T00:00\").getHours();","import dsv from \"./dsv.js\";\n\nvar csv = dsv(\",\");\n\nexport var csvParse = csv.parse;\nexport var csvParseRows = csv.parseRows;\nexport var csvFormat = csv.format;\nexport var csvFormatBody = csv.formatBody;\nexport var csvFormatRows = csv.formatRows;\nexport var csvFormatRow = csv.formatRow;\nexport var csvFormatValue = csv.formatValue;\n","var EOL = {},\n EOF = {},\n QUOTE = 34,\n NEWLINE = 10,\n RETURN = 13;\n\nfunction objectConverter(columns) {\n return new Function(\"d\", \"return {\" + columns.map(function(name, i) {\n return JSON.stringify(name) + \": d[\" + i + \"] || \\\"\\\"\";\n }).join(\",\") + \"}\");\n}\n\nfunction customConverter(columns, f) {\n var object = objectConverter(columns);\n return function(row, i) {\n return f(object(row), i, columns);\n };\n}\n\n// Compute unique columns in order of discovery.\nfunction inferColumns(rows) {\n var columnSet = Object.create(null),\n columns = [];\n\n rows.forEach(function(row) {\n for (var column in row) {\n if (!(column in columnSet)) {\n columns.push(columnSet[column] = column);\n }\n }\n });\n\n return columns;\n}\n\nfunction pad(value, width) {\n var s = value + \"\", length = s.length;\n return length < width ? new Array(width - length + 1).join(0) + s : s;\n}\n\nfunction formatYear(year) {\n return year < 0 ? \"-\" + pad(-year, 6)\n : year > 9999 ? \"+\" + pad(year, 6)\n : pad(year, 4);\n}\n\nfunction formatDate(date) {\n var hours = date.getUTCHours(),\n minutes = date.getUTCMinutes(),\n seconds = date.getUTCSeconds(),\n milliseconds = date.getUTCMilliseconds();\n return isNaN(date) ? \"Invalid Date\"\n : formatYear(date.getUTCFullYear(), 4) + \"-\" + pad(date.getUTCMonth() + 1, 2) + \"-\" + pad(date.getUTCDate(), 2)\n + (milliseconds ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \":\" + pad(seconds, 2) + \".\" + pad(milliseconds, 3) + \"Z\"\n : seconds ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \":\" + pad(seconds, 2) + \"Z\"\n : minutes || hours ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \"Z\"\n : \"\");\n}\n\nexport default function(delimiter) {\n var reFormat = new RegExp(\"[\\\"\" + delimiter + \"\\n\\r]\"),\n DELIMITER = delimiter.charCodeAt(0);\n\n function parse(text, f) {\n var convert, columns, rows = parseRows(text, function(row, i) {\n if (convert) return convert(row, i - 1);\n columns = row, convert = f ? customConverter(row, f) : objectConverter(row);\n });\n rows.columns = columns || [];\n return rows;\n }\n\n function parseRows(text, f) {\n var rows = [], // output rows\n N = text.length,\n I = 0, // current character index\n n = 0, // current line number\n t, // current token\n eof = N <= 0, // current token followed by EOF?\n eol = false; // current token followed by EOL?\n\n // Strip the trailing newline.\n if (text.charCodeAt(N - 1) === NEWLINE) --N;\n if (text.charCodeAt(N - 1) === RETURN) --N;\n\n function token() {\n if (eof) return EOF;\n if (eol) return eol = false, EOL;\n\n // Unescape quotes.\n var i, j = I, c;\n if (text.charCodeAt(j) === QUOTE) {\n while (I++ < N && text.charCodeAt(I) !== QUOTE || text.charCodeAt(++I) === QUOTE);\n if ((i = I) >= N) eof = true;\n else if ((c = text.charCodeAt(I++)) === NEWLINE) eol = true;\n else if (c === RETURN) { eol = true; if (text.charCodeAt(I) === NEWLINE) ++I; }\n return text.slice(j + 1, i - 1).replace(/\"\"/g, \"\\\"\");\n }\n\n // Find next delimiter or newline.\n while (I < N) {\n if ((c = text.charCodeAt(i = I++)) === NEWLINE) eol = true;\n else if (c === RETURN) { eol = true; if (text.charCodeAt(I) === NEWLINE) ++I; }\n else if (c !== DELIMITER) continue;\n return text.slice(j, i);\n }\n\n // Return last token before EOF.\n return eof = true, text.slice(j, N);\n }\n\n while ((t = token()) !== EOF) {\n var row = [];\n while (t !== EOL && t !== EOF) row.push(t), t = token();\n if (f && (row = f(row, n++)) == null) continue;\n rows.push(row);\n }\n\n return rows;\n }\n\n function preformatBody(rows, columns) {\n return rows.map(function(row) {\n return columns.map(function(column) {\n return formatValue(row[column]);\n }).join(delimiter);\n });\n }\n\n function format(rows, columns) {\n if (columns == null) columns = inferColumns(rows);\n return [columns.map(formatValue).join(delimiter)].concat(preformatBody(rows, columns)).join(\"\\n\");\n }\n\n function formatBody(rows, columns) {\n if (columns == null) columns = inferColumns(rows);\n return preformatBody(rows, columns).join(\"\\n\");\n }\n\n function formatRows(rows) {\n return rows.map(formatRow).join(\"\\n\");\n }\n\n function formatRow(row) {\n return row.map(formatValue).join(delimiter);\n }\n\n function formatValue(value) {\n return value == null ? \"\"\n : value instanceof Date ? formatDate(value)\n : reFormat.test(value += \"\") ? \"\\\"\" + value.replace(/\"/g, \"\\\"\\\"\") + \"\\\"\"\n : value;\n }\n\n return {\n parse: parse,\n parseRows: parseRows,\n format: format,\n formatBody: formatBody,\n formatRows: formatRows,\n formatRow: formatRow,\n formatValue: formatValue\n };\n}\n","export {default as dsvFormat} from \"./dsv.js\";\nexport {csvParse, csvParseRows, csvFormat, csvFormatBody, csvFormatRows, csvFormatRow, csvFormatValue} from \"./csv.js\";\nexport {tsvParse, tsvParseRows, tsvFormat, tsvFormatBody, tsvFormatRows, tsvFormatRow, tsvFormatValue} from \"./tsv.js\";\nexport {default as autoType} from \"./autoType.js\";\n","import dsv from \"./dsv.js\";\n\nvar tsv = dsv(\"\\t\");\n\nexport var tsvParse = tsv.parse;\nexport var tsvParseRows = tsv.parseRows;\nexport var tsvFormat = tsv.format;\nexport var tsvFormatBody = tsv.formatBody;\nexport var tsvFormatRows = tsv.formatRows;\nexport var tsvFormatRow = tsv.formatRow;\nexport var tsvFormatValue = tsv.formatValue;\n","var overshoot = 1.70158;\n\nexport var backIn = (function custom(s) {\n s = +s;\n\n function backIn(t) {\n return t * t * ((s + 1) * t - s);\n }\n\n backIn.overshoot = custom;\n\n return backIn;\n})(overshoot);\n\nexport var backOut = (function custom(s) {\n s = +s;\n\n function backOut(t) {\n return --t * t * ((s + 1) * t + s) + 1;\n }\n\n backOut.overshoot = custom;\n\n return backOut;\n})(overshoot);\n\nexport var backInOut = (function custom(s) {\n s = +s;\n\n function backInOut(t) {\n return ((t *= 2) < 1 ? t * t * ((s + 1) * t - s) : (t -= 2) * t * ((s + 1) * t + s) + 2) / 2;\n }\n\n backInOut.overshoot = custom;\n\n return backInOut;\n})(overshoot);\n","var b1 = 4 / 11,\n b2 = 6 / 11,\n b3 = 8 / 11,\n b4 = 3 / 4,\n b5 = 9 / 11,\n b6 = 10 / 11,\n b7 = 15 / 16,\n b8 = 21 / 22,\n b9 = 63 / 64,\n b0 = 1 / b1 / b1;\n\nexport function bounceIn(t) {\n return 1 - bounceOut(1 - t);\n}\n\nexport function bounceOut(t) {\n return (t = +t) < b1 ? b0 * t * t : t < b3 ? b0 * (t -= b2) * t + b4 : t < b6 ? b0 * (t -= b5) * t + b7 : b0 * (t -= b8) * t + b9;\n}\n\nexport function bounceInOut(t) {\n return ((t *= 2) <= 1 ? 1 - bounceOut(1 - t) : bounceOut(t - 1) + 1) / 2;\n}\n","export function circleIn(t) {\n return 1 - Math.sqrt(1 - t * t);\n}\n\nexport function circleOut(t) {\n return Math.sqrt(1 - --t * t);\n}\n\nexport function circleInOut(t) {\n return ((t *= 2) <= 1 ? 1 - Math.sqrt(1 - t * t) : Math.sqrt(1 - (t -= 2) * t) + 1) / 2;\n}\n","export function cubicIn(t) {\n return t * t * t;\n}\n\nexport function cubicOut(t) {\n return --t * t * t + 1;\n}\n\nexport function cubicInOut(t) {\n return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n","var tau = 2 * Math.PI,\n amplitude = 1,\n period = 0.3;\n\nexport var elasticIn = (function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n function elasticIn(t) {\n return a * Math.pow(2, 10 * --t) * Math.sin((s - t) / p);\n }\n\n elasticIn.amplitude = function(a) { return custom(a, p * tau); };\n elasticIn.period = function(p) { return custom(a, p); };\n\n return elasticIn;\n})(amplitude, period);\n\nexport var elasticOut = (function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n function elasticOut(t) {\n return 1 - a * Math.pow(2, -10 * (t = +t)) * Math.sin((t + s) / p);\n }\n\n elasticOut.amplitude = function(a) { return custom(a, p * tau); };\n elasticOut.period = function(p) { return custom(a, p); };\n\n return elasticOut;\n})(amplitude, period);\n\nexport var elasticInOut = (function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n function elasticInOut(t) {\n return ((t = t * 2 - 1) < 0\n ? a * Math.pow(2, 10 * t) * Math.sin((s - t) / p)\n : 2 - a * Math.pow(2, -10 * t) * Math.sin((s + t) / p)) / 2;\n }\n\n elasticInOut.amplitude = function(a) { return custom(a, p * tau); };\n elasticInOut.period = function(p) { return custom(a, p); };\n\n return elasticInOut;\n})(amplitude, period);\n","export function expIn(t) {\n return Math.pow(2, 10 * t - 10);\n}\n\nexport function expOut(t) {\n return 1 - Math.pow(2, -10 * t);\n}\n\nexport function expInOut(t) {\n return ((t *= 2) <= 1 ? Math.pow(2, 10 * t - 10) : 2 - Math.pow(2, 10 - 10 * t)) / 2;\n}\n","export {\n linear as easeLinear\n} from \"./linear.js\";\n\nexport {\n quadInOut as easeQuad,\n quadIn as easeQuadIn,\n quadOut as easeQuadOut,\n quadInOut as easeQuadInOut\n} from \"./quad.js\";\n\nexport {\n cubicInOut as easeCubic,\n cubicIn as easeCubicIn,\n cubicOut as easeCubicOut,\n cubicInOut as easeCubicInOut\n} from \"./cubic.js\";\n\nexport {\n polyInOut as easePoly,\n polyIn as easePolyIn,\n polyOut as easePolyOut,\n polyInOut as easePolyInOut\n} from \"./poly.js\";\n\nexport {\n sinInOut as easeSin,\n sinIn as easeSinIn,\n sinOut as easeSinOut,\n sinInOut as easeSinInOut\n} from \"./sin.js\";\n\nexport {\n expInOut as easeExp,\n expIn as easeExpIn,\n expOut as easeExpOut,\n expInOut as easeExpInOut\n} from \"./exp.js\";\n\nexport {\n circleInOut as easeCircle,\n circleIn as easeCircleIn,\n circleOut as easeCircleOut,\n circleInOut as easeCircleInOut\n} from \"./circle.js\";\n\nexport {\n bounceOut as easeBounce,\n bounceIn as easeBounceIn,\n bounceOut as easeBounceOut,\n bounceInOut as easeBounceInOut\n} from \"./bounce.js\";\n\nexport {\n backInOut as easeBack,\n backIn as easeBackIn,\n backOut as easeBackOut,\n backInOut as easeBackInOut\n} from \"./back.js\";\n\nexport {\n elasticOut as easeElastic,\n elasticIn as easeElasticIn,\n elasticOut as easeElasticOut,\n elasticInOut as easeElasticInOut\n} from \"./elastic.js\";\n","export function linear(t) {\n return +t;\n}\n","var exponent = 3;\n\nexport var polyIn = (function custom(e) {\n e = +e;\n\n function polyIn(t) {\n return Math.pow(t, e);\n }\n\n polyIn.exponent = custom;\n\n return polyIn;\n})(exponent);\n\nexport var polyOut = (function custom(e) {\n e = +e;\n\n function polyOut(t) {\n return 1 - Math.pow(1 - t, e);\n }\n\n polyOut.exponent = custom;\n\n return polyOut;\n})(exponent);\n\nexport var polyInOut = (function custom(e) {\n e = +e;\n\n function polyInOut(t) {\n return ((t *= 2) <= 1 ? Math.pow(t, e) : 2 - Math.pow(2 - t, e)) / 2;\n }\n\n polyInOut.exponent = custom;\n\n return polyInOut;\n})(exponent);\n","export function quadIn(t) {\n return t * t;\n}\n\nexport function quadOut(t) {\n return t * (2 - t);\n}\n\nexport function quadInOut(t) {\n return ((t *= 2) <= 1 ? t * t : --t * (2 - t) + 1) / 2;\n}\n","var pi = Math.PI,\n halfPi = pi / 2;\n\nexport function sinIn(t) {\n return 1 - Math.cos(t * halfPi);\n}\n\nexport function sinOut(t) {\n return Math.sin(t * halfPi);\n}\n\nexport function sinInOut(t) {\n return (1 - Math.cos(pi * t)) / 2;\n}\n","function responseBlob(response) {\n if (!response.ok) throw new Error(response.status + \" \" + response.statusText);\n return response.blob();\n}\n\nexport default function(input, init) {\n return fetch(input, init).then(responseBlob);\n}\n","function responseArrayBuffer(response) {\n if (!response.ok) throw new Error(response.status + \" \" + response.statusText);\n return response.arrayBuffer();\n}\n\nexport default function(input, init) {\n return fetch(input, init).then(responseArrayBuffer);\n}\n","import {csvParse, dsvFormat, tsvParse} from \"d3-dsv\";\nimport text from \"./text\";\n\nfunction dsvParse(parse) {\n return function(input, init, row) {\n if (arguments.length === 2 && typeof init === \"function\") row = init, init = undefined;\n return text(input, init).then(function(response) {\n return parse(response, row);\n });\n };\n}\n\nexport default function dsv(delimiter, input, init, row) {\n if (arguments.length === 3 && typeof init === \"function\") row = init, init = undefined;\n var format = dsvFormat(delimiter);\n return text(input, init).then(function(response) {\n return format.parse(response, row);\n });\n}\n\nexport var csv = dsvParse(csvParse);\nexport var tsv = dsvParse(tsvParse);\n","export default function(input, init) {\n return new Promise(function(resolve, reject) {\n var image = new Image;\n for (var key in init) image[key] = init[key];\n image.onerror = reject;\n image.onload = function() { resolve(image); };\n image.src = input;\n });\n}\n","export {default as blob} from \"./blob\";\nexport {default as buffer} from \"./buffer\";\nexport {default as dsv, csv, tsv} from \"./dsv\";\nexport {default as image} from \"./image\";\nexport {default as json} from \"./json\";\nexport {default as text} from \"./text\";\nexport {default as xml, html, svg} from \"./xml\";\n","function responseJson(response) {\n if (!response.ok) throw new Error(response.status + \" \" + response.statusText);\n return response.json();\n}\n\nexport default function(input, init) {\n return fetch(input, init).then(responseJson);\n}\n","function responseText(response) {\n if (!response.ok) throw new Error(response.status + \" \" + response.statusText);\n return response.text();\n}\n\nexport default function(input, init) {\n return fetch(input, init).then(responseText);\n}\n","import text from \"./text\";\n\nfunction parser(type) {\n return function(input, init) {\n return text(input, init).then(function(text) {\n return (new DOMParser).parseFromString(text, type);\n });\n };\n}\n\nexport default parser(\"application/xml\");\n\nexport var html = parser(\"text/html\");\n\nexport var svg = parser(\"image/svg+xml\");\n","export default function(x, y) {\n var nodes;\n\n if (x == null) x = 0;\n if (y == null) y = 0;\n\n function force() {\n var i,\n n = nodes.length,\n node,\n sx = 0,\n sy = 0;\n\n for (i = 0; i < n; ++i) {\n node = nodes[i], sx += node.x, sy += node.y;\n }\n\n for (sx = sx / n - x, sy = sy / n - y, i = 0; i < n; ++i) {\n node = nodes[i], node.x -= sx, node.y -= sy;\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n };\n\n force.x = function(_) {\n return arguments.length ? (x = +_, force) : x;\n };\n\n force.y = function(_) {\n return arguments.length ? (y = +_, force) : y;\n };\n\n return force;\n}\n","import constant from \"./constant\";\nimport jiggle from \"./jiggle\";\nimport {quadtree} from \"d3-quadtree\";\n\nfunction x(d) {\n return d.x + d.vx;\n}\n\nfunction y(d) {\n return d.y + d.vy;\n}\n\nexport default function(radius) {\n var nodes,\n radii,\n strength = 1,\n iterations = 1;\n\n if (typeof radius !== \"function\") radius = constant(radius == null ? 1 : +radius);\n\n function force() {\n var i, n = nodes.length,\n tree,\n node,\n xi,\n yi,\n ri,\n ri2;\n\n for (var k = 0; k < iterations; ++k) {\n tree = quadtree(nodes, x, y).visitAfter(prepare);\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n ri = radii[node.index], ri2 = ri * ri;\n xi = node.x + node.vx;\n yi = node.y + node.vy;\n tree.visit(apply);\n }\n }\n\n function apply(quad, x0, y0, x1, y1) {\n var data = quad.data, rj = quad.r, r = ri + rj;\n if (data) {\n if (data.index > node.index) {\n var x = xi - data.x - data.vx,\n y = yi - data.y - data.vy,\n l = x * x + y * y;\n if (l < r * r) {\n if (x === 0) x = jiggle(), l += x * x;\n if (y === 0) y = jiggle(), l += y * y;\n l = (r - (l = Math.sqrt(l))) / l * strength;\n node.vx += (x *= l) * (r = (rj *= rj) / (ri2 + rj));\n node.vy += (y *= l) * r;\n data.vx -= x * (r = 1 - r);\n data.vy -= y * r;\n }\n }\n return;\n }\n return x0 > xi + r || x1 < xi - r || y0 > yi + r || y1 < yi - r;\n }\n }\n\n function prepare(quad) {\n if (quad.data) return quad.r = radii[quad.data.index];\n for (var i = quad.r = 0; i < 4; ++i) {\n if (quad[i] && quad[i].r > quad.r) {\n quad.r = quad[i].r;\n }\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length, node;\n radii = new Array(n);\n for (i = 0; i < n; ++i) node = nodes[i], radii[node.index] = +radius(node, i, nodes);\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.iterations = function(_) {\n return arguments.length ? (iterations = +_, force) : iterations;\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = +_, force) : strength;\n };\n\n force.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : radius;\n };\n\n return force;\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export {default as forceCenter} from \"./center\";\nexport {default as forceCollide} from \"./collide\";\nexport {default as forceLink} from \"./link\";\nexport {default as forceManyBody} from \"./manyBody\";\nexport {default as forceRadial} from \"./radial\";\nexport {default as forceSimulation} from \"./simulation\";\nexport {default as forceX} from \"./x\";\nexport {default as forceY} from \"./y\";\n","export default function() {\n return (Math.random() - 0.5) * 1e-6;\n}\n","import constant from \"./constant\";\nimport jiggle from \"./jiggle\";\nimport {map} from \"d3-collection\";\n\nfunction index(d) {\n return d.index;\n}\n\nfunction find(nodeById, nodeId) {\n var node = nodeById.get(nodeId);\n if (!node) throw new Error(\"missing: \" + nodeId);\n return node;\n}\n\nexport default function(links) {\n var id = index,\n strength = defaultStrength,\n strengths,\n distance = constant(30),\n distances,\n nodes,\n count,\n bias,\n iterations = 1;\n\n if (links == null) links = [];\n\n function defaultStrength(link) {\n return 1 / Math.min(count[link.source.index], count[link.target.index]);\n }\n\n function force(alpha) {\n for (var k = 0, n = links.length; k < iterations; ++k) {\n for (var i = 0, link, source, target, x, y, l, b; i < n; ++i) {\n link = links[i], source = link.source, target = link.target;\n x = target.x + target.vx - source.x - source.vx || jiggle();\n y = target.y + target.vy - source.y - source.vy || jiggle();\n l = Math.sqrt(x * x + y * y);\n l = (l - distances[i]) / l * alpha * strengths[i];\n x *= l, y *= l;\n target.vx -= x * (b = bias[i]);\n target.vy -= y * b;\n source.vx += x * (b = 1 - b);\n source.vy += y * b;\n }\n }\n }\n\n function initialize() {\n if (!nodes) return;\n\n var i,\n n = nodes.length,\n m = links.length,\n nodeById = map(nodes, id),\n link;\n\n for (i = 0, count = new Array(n); i < m; ++i) {\n link = links[i], link.index = i;\n if (typeof link.source !== \"object\") link.source = find(nodeById, link.source);\n if (typeof link.target !== \"object\") link.target = find(nodeById, link.target);\n count[link.source.index] = (count[link.source.index] || 0) + 1;\n count[link.target.index] = (count[link.target.index] || 0) + 1;\n }\n\n for (i = 0, bias = new Array(m); i < m; ++i) {\n link = links[i], bias[i] = count[link.source.index] / (count[link.source.index] + count[link.target.index]);\n }\n\n strengths = new Array(m), initializeStrength();\n distances = new Array(m), initializeDistance();\n }\n\n function initializeStrength() {\n if (!nodes) return;\n\n for (var i = 0, n = links.length; i < n; ++i) {\n strengths[i] = +strength(links[i], i, links);\n }\n }\n\n function initializeDistance() {\n if (!nodes) return;\n\n for (var i = 0, n = links.length; i < n; ++i) {\n distances[i] = +distance(links[i], i, links);\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.links = function(_) {\n return arguments.length ? (links = _, initialize(), force) : links;\n };\n\n force.id = function(_) {\n return arguments.length ? (id = _, force) : id;\n };\n\n force.iterations = function(_) {\n return arguments.length ? (iterations = +_, force) : iterations;\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initializeStrength(), force) : strength;\n };\n\n force.distance = function(_) {\n return arguments.length ? (distance = typeof _ === \"function\" ? _ : constant(+_), initializeDistance(), force) : distance;\n };\n\n return force;\n}\n","import constant from \"./constant\";\nimport jiggle from \"./jiggle\";\nimport {quadtree} from \"d3-quadtree\";\nimport {x, y} from \"./simulation\";\n\nexport default function() {\n var nodes,\n node,\n alpha,\n strength = constant(-30),\n strengths,\n distanceMin2 = 1,\n distanceMax2 = Infinity,\n theta2 = 0.81;\n\n function force(_) {\n var i, n = nodes.length, tree = quadtree(nodes, x, y).visitAfter(accumulate);\n for (alpha = _, i = 0; i < n; ++i) node = nodes[i], tree.visit(apply);\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length, node;\n strengths = new Array(n);\n for (i = 0; i < n; ++i) node = nodes[i], strengths[node.index] = +strength(node, i, nodes);\n }\n\n function accumulate(quad) {\n var strength = 0, q, c, weight = 0, x, y, i;\n\n // For internal nodes, accumulate forces from child quadrants.\n if (quad.length) {\n for (x = y = i = 0; i < 4; ++i) {\n if ((q = quad[i]) && (c = Math.abs(q.value))) {\n strength += q.value, weight += c, x += c * q.x, y += c * q.y;\n }\n }\n quad.x = x / weight;\n quad.y = y / weight;\n }\n\n // For leaf nodes, accumulate forces from coincident quadrants.\n else {\n q = quad;\n q.x = q.data.x;\n q.y = q.data.y;\n do strength += strengths[q.data.index];\n while (q = q.next);\n }\n\n quad.value = strength;\n }\n\n function apply(quad, x1, _, x2) {\n if (!quad.value) return true;\n\n var x = quad.x - node.x,\n y = quad.y - node.y,\n w = x2 - x1,\n l = x * x + y * y;\n\n // Apply the Barnes-Hut approximation if possible.\n // Limit forces for very close nodes; randomize direction if coincident.\n if (w * w / theta2 < l) {\n if (l < distanceMax2) {\n if (x === 0) x = jiggle(), l += x * x;\n if (y === 0) y = jiggle(), l += y * y;\n if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);\n node.vx += x * quad.value * alpha / l;\n node.vy += y * quad.value * alpha / l;\n }\n return true;\n }\n\n // Otherwise, process points directly.\n else if (quad.length || l >= distanceMax2) return;\n\n // Limit forces for very close nodes; randomize direction if coincident.\n if (quad.data !== node || quad.next) {\n if (x === 0) x = jiggle(), l += x * x;\n if (y === 0) y = jiggle(), l += y * y;\n if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);\n }\n\n do if (quad.data !== node) {\n w = strengths[quad.data.index] * alpha / l;\n node.vx += x * w;\n node.vy += y * w;\n } while (quad = quad.next);\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.distanceMin = function(_) {\n return arguments.length ? (distanceMin2 = _ * _, force) : Math.sqrt(distanceMin2);\n };\n\n force.distanceMax = function(_) {\n return arguments.length ? (distanceMax2 = _ * _, force) : Math.sqrt(distanceMax2);\n };\n\n force.theta = function(_) {\n return arguments.length ? (theta2 = _ * _, force) : Math.sqrt(theta2);\n };\n\n return force;\n}\n","import constant from \"./constant\";\n\nexport default function(radius, x, y) {\n var nodes,\n strength = constant(0.1),\n strengths,\n radiuses;\n\n if (typeof radius !== \"function\") radius = constant(+radius);\n if (x == null) x = 0;\n if (y == null) y = 0;\n\n function force(alpha) {\n for (var i = 0, n = nodes.length; i < n; ++i) {\n var node = nodes[i],\n dx = node.x - x || 1e-6,\n dy = node.y - y || 1e-6,\n r = Math.sqrt(dx * dx + dy * dy),\n k = (radiuses[i] - r) * strengths[i] * alpha / r;\n node.vx += dx * k;\n node.vy += dy * k;\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length;\n strengths = new Array(n);\n radiuses = new Array(n);\n for (i = 0; i < n; ++i) {\n radiuses[i] = +radius(nodes[i], i, nodes);\n strengths[i] = isNaN(radiuses[i]) ? 0 : +strength(nodes[i], i, nodes);\n }\n }\n\n force.initialize = function(_) {\n nodes = _, initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : radius;\n };\n\n force.x = function(_) {\n return arguments.length ? (x = +_, force) : x;\n };\n\n force.y = function(_) {\n return arguments.length ? (y = +_, force) : y;\n };\n\n return force;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {map} from \"d3-collection\";\nimport {timer} from \"d3-timer\";\n\nexport function x(d) {\n return d.x;\n}\n\nexport function y(d) {\n return d.y;\n}\n\nvar initialRadius = 10,\n initialAngle = Math.PI * (3 - Math.sqrt(5));\n\nexport default function(nodes) {\n var simulation,\n alpha = 1,\n alphaMin = 0.001,\n alphaDecay = 1 - Math.pow(alphaMin, 1 / 300),\n alphaTarget = 0,\n velocityDecay = 0.6,\n forces = map(),\n stepper = timer(step),\n event = dispatch(\"tick\", \"end\");\n\n if (nodes == null) nodes = [];\n\n function step() {\n tick();\n event.call(\"tick\", simulation);\n if (alpha < alphaMin) {\n stepper.stop();\n event.call(\"end\", simulation);\n }\n }\n\n function tick(iterations) {\n var i, n = nodes.length, node;\n\n if (iterations === undefined) iterations = 1;\n\n for (var k = 0; k < iterations; ++k) {\n alpha += (alphaTarget - alpha) * alphaDecay;\n\n forces.each(function (force) {\n force(alpha);\n });\n\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n if (node.fx == null) node.x += node.vx *= velocityDecay;\n else node.x = node.fx, node.vx = 0;\n if (node.fy == null) node.y += node.vy *= velocityDecay;\n else node.y = node.fy, node.vy = 0;\n }\n }\n\n return simulation;\n }\n\n function initializeNodes() {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.index = i;\n if (node.fx != null) node.x = node.fx;\n if (node.fy != null) node.y = node.fy;\n if (isNaN(node.x) || isNaN(node.y)) {\n var radius = initialRadius * Math.sqrt(i), angle = i * initialAngle;\n node.x = radius * Math.cos(angle);\n node.y = radius * Math.sin(angle);\n }\n if (isNaN(node.vx) || isNaN(node.vy)) {\n node.vx = node.vy = 0;\n }\n }\n }\n\n function initializeForce(force) {\n if (force.initialize) force.initialize(nodes);\n return force;\n }\n\n initializeNodes();\n\n return simulation = {\n tick: tick,\n\n restart: function() {\n return stepper.restart(step), simulation;\n },\n\n stop: function() {\n return stepper.stop(), simulation;\n },\n\n nodes: function(_) {\n return arguments.length ? (nodes = _, initializeNodes(), forces.each(initializeForce), simulation) : nodes;\n },\n\n alpha: function(_) {\n return arguments.length ? (alpha = +_, simulation) : alpha;\n },\n\n alphaMin: function(_) {\n return arguments.length ? (alphaMin = +_, simulation) : alphaMin;\n },\n\n alphaDecay: function(_) {\n return arguments.length ? (alphaDecay = +_, simulation) : +alphaDecay;\n },\n\n alphaTarget: function(_) {\n return arguments.length ? (alphaTarget = +_, simulation) : alphaTarget;\n },\n\n velocityDecay: function(_) {\n return arguments.length ? (velocityDecay = 1 - _, simulation) : 1 - velocityDecay;\n },\n\n force: function(name, _) {\n return arguments.length > 1 ? ((_ == null ? forces.remove(name) : forces.set(name, initializeForce(_))), simulation) : forces.get(name);\n },\n\n find: function(x, y, radius) {\n var i = 0,\n n = nodes.length,\n dx,\n dy,\n d2,\n node,\n closest;\n\n if (radius == null) radius = Infinity;\n else radius *= radius;\n\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n dx = x - node.x;\n dy = y - node.y;\n d2 = dx * dx + dy * dy;\n if (d2 < radius) closest = node, radius = d2;\n }\n\n return closest;\n },\n\n on: function(name, _) {\n return arguments.length > 1 ? (event.on(name, _), simulation) : event.on(name);\n }\n };\n}\n","import constant from \"./constant\";\n\nexport default function(x) {\n var strength = constant(0.1),\n nodes,\n strengths,\n xz;\n\n if (typeof x !== \"function\") x = constant(x == null ? 0 : +x);\n\n function force(alpha) {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.vx += (xz[i] - node.x) * strengths[i] * alpha;\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length;\n strengths = new Array(n);\n xz = new Array(n);\n for (i = 0; i < n; ++i) {\n strengths[i] = isNaN(xz[i] = +x(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes);\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : x;\n };\n\n return force;\n}\n","import constant from \"./constant\";\n\nexport default function(y) {\n var strength = constant(0.1),\n nodes,\n strengths,\n yz;\n\n if (typeof y !== \"function\") y = constant(y == null ? 0 : +y);\n\n function force(alpha) {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.vy += (yz[i] - node.y) * strengths[i] * alpha;\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length;\n strengths = new Array(n);\n yz = new Array(n);\n for (i = 0; i < n; ++i) {\n strengths[i] = isNaN(yz[i] = +y(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes);\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : y;\n };\n\n return force;\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n decimal: \".\",\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"],\n minus: \"-\"\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n format = locale.format;\n formatPrefix = locale.formatPrefix;\n return locale;\n}\n","import formatDecimal from \"./formatDecimal.js\";\n\nexport default function(x) {\n return x = formatDecimal(Math.abs(x)), x ? x[1] : NaN;\n}\n","// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimal(1.23) returns [\"123\", 0].\nexport default function(x, p) {\n if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n var i, coefficient = x.slice(0, i);\n\n // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n return [\n coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n +x.slice(i + 1)\n ];\n}\n","export default function(grouping, thousands) {\n return function(value, width) {\n var i = value.length,\n t = [],\n j = 0,\n g = grouping[0],\n length = 0;\n\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) g = Math.max(1, width - length);\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) break;\n g = grouping[j = (j + 1) % grouping.length];\n }\n\n return t.reverse().join(thousands);\n };\n}\n","export default function(numerals) {\n return function(value) {\n return value.replace(/[0-9]/g, function(i) {\n return numerals[+i];\n });\n };\n}\n","import formatDecimal from \"./formatDecimal.js\";\n\nexport var prefixExponent;\n\nexport default function(x, p) {\n var d = formatDecimal(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1],\n i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n n = coefficient.length;\n return i === n ? coefficient\n : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimal(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n","import formatDecimal from \"./formatDecimal.js\";\n\nexport default function(x, p) {\n var d = formatDecimal(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1];\n return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}\n","// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nexport default function formatSpecifier(specifier) {\n if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n var match;\n return new FormatSpecifier({\n fill: match[1],\n align: match[2],\n sign: match[3],\n symbol: match[4],\n zero: match[5],\n width: match[6],\n comma: match[7],\n precision: match[8] && match[8].slice(1),\n trim: match[9],\n type: match[10]\n });\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nexport function FormatSpecifier(specifier) {\n this.fill = specifier.fill === undefined ? \" \" : specifier.fill + \"\";\n this.align = specifier.align === undefined ? \">\" : specifier.align + \"\";\n this.sign = specifier.sign === undefined ? \"-\" : specifier.sign + \"\";\n this.symbol = specifier.symbol === undefined ? \"\" : specifier.symbol + \"\";\n this.zero = !!specifier.zero;\n this.width = specifier.width === undefined ? undefined : +specifier.width;\n this.comma = !!specifier.comma;\n this.precision = specifier.precision === undefined ? undefined : +specifier.precision;\n this.trim = !!specifier.trim;\n this.type = specifier.type === undefined ? \"\" : specifier.type + \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n return this.fill\n + this.align\n + this.sign\n + this.symbol\n + (this.zero ? \"0\" : \"\")\n + (this.width === undefined ? \"\" : Math.max(1, this.width | 0))\n + (this.comma ? \",\" : \"\")\n + (this.precision === undefined ? \"\" : \".\" + Math.max(0, this.precision | 0))\n + (this.trim ? \"~\" : \"\")\n + this.type;\n};\n","// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nexport default function(s) {\n out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n switch (s[i]) {\n case \".\": i0 = i1 = i; break;\n case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n default: if (!+s[i]) break out; if (i0 > 0) i0 = 0; break;\n }\n }\n return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\n","import formatPrefixAuto from \"./formatPrefixAuto.js\";\nimport formatRounded from \"./formatRounded.js\";\n\nexport default {\n \"%\": function(x, p) { return (x * 100).toFixed(p); },\n \"b\": function(x) { return Math.round(x).toString(2); },\n \"c\": function(x) { return x + \"\"; },\n \"d\": function(x) { return Math.round(x).toString(10); },\n \"e\": function(x, p) { return x.toExponential(p); },\n \"f\": function(x, p) { return x.toFixed(p); },\n \"g\": function(x, p) { return x.toPrecision(p); },\n \"o\": function(x) { return Math.round(x).toString(8); },\n \"p\": function(x, p) { return formatRounded(x * 100, p); },\n \"r\": formatRounded,\n \"s\": formatPrefixAuto,\n \"X\": function(x) { return Math.round(x).toString(16).toUpperCase(); },\n \"x\": function(x) { return Math.round(x).toString(16); }\n};\n","export default function(x) {\n return x;\n}\n","export {default as formatDefaultLocale, format, formatPrefix} from \"./defaultLocale.js\";\nexport {default as formatLocale} from \"./locale.js\";\nexport {default as formatSpecifier, FormatSpecifier} from \"./formatSpecifier.js\";\nexport {default as precisionFixed} from \"./precisionFixed.js\";\nexport {default as precisionPrefix} from \"./precisionPrefix.js\";\nexport {default as precisionRound} from \"./precisionRound.js\";\n","import exponent from \"./exponent.js\";\nimport formatGroup from \"./formatGroup.js\";\nimport formatNumerals from \"./formatNumerals.js\";\nimport formatSpecifier from \"./formatSpecifier.js\";\nimport formatTrim from \"./formatTrim.js\";\nimport formatTypes from \"./formatTypes.js\";\nimport {prefixExponent} from \"./formatPrefixAuto.js\";\nimport identity from \"./identity.js\";\n\nvar map = Array.prototype.map,\n prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nexport default function(locale) {\n var group = locale.grouping === undefined || locale.thousands === undefined ? identity : formatGroup(map.call(locale.grouping, Number), locale.thousands + \"\"),\n currencyPrefix = locale.currency === undefined ? \"\" : locale.currency[0] + \"\",\n currencySuffix = locale.currency === undefined ? \"\" : locale.currency[1] + \"\",\n decimal = locale.decimal === undefined ? \".\" : locale.decimal + \"\",\n numerals = locale.numerals === undefined ? identity : formatNumerals(map.call(locale.numerals, String)),\n percent = locale.percent === undefined ? \"%\" : locale.percent + \"\",\n minus = locale.minus === undefined ? \"-\" : locale.minus + \"\",\n nan = locale.nan === undefined ? \"NaN\" : locale.nan + \"\";\n\n function newFormat(specifier) {\n specifier = formatSpecifier(specifier);\n\n var fill = specifier.fill,\n align = specifier.align,\n sign = specifier.sign,\n symbol = specifier.symbol,\n zero = specifier.zero,\n width = specifier.width,\n comma = specifier.comma,\n precision = specifier.precision,\n trim = specifier.trim,\n type = specifier.type;\n\n // The \"n\" type is an alias for \",g\".\n if (type === \"n\") comma = true, type = \"g\";\n\n // The \"\" type, and any invalid type, is an alias for \".12~g\".\n else if (!formatTypes[type]) precision === undefined && (precision = 12), trim = true, type = \"g\";\n\n // If zero fill is specified, padding goes after sign and before digits.\n if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n var prefix = symbol === \"$\" ? currencyPrefix : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n suffix = symbol === \"$\" ? currencySuffix : /[%p]/.test(type) ? percent : \"\";\n\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n var formatType = formatTypes[type],\n maybeSuffix = /[defgprs%]/.test(type);\n\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n precision = precision === undefined ? 6\n : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n : Math.max(0, Math.min(20, precision));\n\n function format(value) {\n var valuePrefix = prefix,\n valueSuffix = suffix,\n i, n, c;\n\n if (type === \"c\") {\n valueSuffix = formatType(value) + valueSuffix;\n value = \"\";\n } else {\n value = +value;\n\n // Perform the initial formatting.\n var valueNegative = value < 0;\n value = isNaN(value) ? nan : formatType(Math.abs(value), precision);\n\n // Trim insignificant zeros.\n if (trim) value = formatTrim(value);\n\n // If a negative value rounds to zero during formatting, treat as positive.\n if (valueNegative && +value === 0) valueNegative = false;\n\n // Compute the prefix and suffix.\n valuePrefix = (valueNegative ? (sign === \"(\" ? sign : minus) : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n\n valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n // Break the formatted value into the integer “value” part that can be\n // grouped, and fractional or exponential “suffix” part that is not.\n if (maybeSuffix) {\n i = -1, n = value.length;\n while (++i < n) {\n if (c = value.charCodeAt(i), 48 > c || c > 57) {\n valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n value = value.slice(0, i);\n break;\n }\n }\n }\n }\n\n // If the fill character is not \"0\", grouping is applied before padding.\n if (comma && !zero) value = group(value, Infinity);\n\n // Compute the padding.\n var length = valuePrefix.length + value.length + valueSuffix.length,\n padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n // If the fill character is \"0\", grouping is applied after padding.\n if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n default: value = padding + valuePrefix + value + valueSuffix; break;\n }\n\n return numerals(value);\n }\n\n format.toString = function() {\n return specifier + \"\";\n };\n\n return format;\n }\n\n function formatPrefix(specifier, value) {\n var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n k = Math.pow(10, -e),\n prefix = prefixes[8 + e / 3];\n return function(value) {\n return f(k * value) + prefix;\n };\n }\n\n return {\n format: newFormat,\n formatPrefix: formatPrefix\n };\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step) {\n return Math.max(0, -exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, value) {\n return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, max) {\n step = Math.abs(step), max = Math.abs(max) - step;\n return Math.max(0, exponent(max) - exponent(step)) + 1;\n}\n","// Adds floating point numbers with twice the normal precision.\n// Reference: J. R. Shewchuk, Adaptive Precision Floating-Point Arithmetic and\n// Fast Robust Geometric Predicates, Discrete & Computational Geometry 18(3)\n// 305–363 (1997).\n// Code adapted from GeographicLib by Charles F. F. Karney,\n// http://geographiclib.sourceforge.net/\n\nexport default function() {\n return new Adder;\n}\n\nfunction Adder() {\n this.reset();\n}\n\nAdder.prototype = {\n constructor: Adder,\n reset: function() {\n this.s = // rounded value\n this.t = 0; // exact error\n },\n add: function(y) {\n add(temp, y, this.t);\n add(this, temp.s, this.s);\n if (this.s) this.t += temp.t;\n else this.s = temp.t;\n },\n valueOf: function() {\n return this.s;\n }\n};\n\nvar temp = new Adder;\n\nfunction add(adder, a, b) {\n var x = adder.s = a + b,\n bv = x - a,\n av = x - bv;\n adder.t = (a - av) + (b - bv);\n}\n","import adder from \"./adder.js\";\nimport {atan2, cos, quarterPi, radians, sin, tau} from \"./math.js\";\nimport noop from \"./noop.js\";\nimport stream from \"./stream.js\";\n\nexport var areaRingSum = adder();\n\nvar areaSum = adder(),\n lambda00,\n phi00,\n lambda0,\n cosPhi0,\n sinPhi0;\n\nexport var areaStream = {\n point: noop,\n lineStart: noop,\n lineEnd: noop,\n polygonStart: function() {\n areaRingSum.reset();\n areaStream.lineStart = areaRingStart;\n areaStream.lineEnd = areaRingEnd;\n },\n polygonEnd: function() {\n var areaRing = +areaRingSum;\n areaSum.add(areaRing < 0 ? tau + areaRing : areaRing);\n this.lineStart = this.lineEnd = this.point = noop;\n },\n sphere: function() {\n areaSum.add(tau);\n }\n};\n\nfunction areaRingStart() {\n areaStream.point = areaPointFirst;\n}\n\nfunction areaRingEnd() {\n areaPoint(lambda00, phi00);\n}\n\nfunction areaPointFirst(lambda, phi) {\n areaStream.point = areaPoint;\n lambda00 = lambda, phi00 = phi;\n lambda *= radians, phi *= radians;\n lambda0 = lambda, cosPhi0 = cos(phi = phi / 2 + quarterPi), sinPhi0 = sin(phi);\n}\n\nfunction areaPoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n phi = phi / 2 + quarterPi; // half the angular distance from south pole\n\n // Spherical excess E for a spherical triangle with vertices: south pole,\n // previous point, current point. Uses a formula derived from Cagnoli’s\n // theorem. See Todhunter, Spherical Trig. (1871), Sec. 103, Eq. (2).\n var dLambda = lambda - lambda0,\n sdLambda = dLambda >= 0 ? 1 : -1,\n adLambda = sdLambda * dLambda,\n cosPhi = cos(phi),\n sinPhi = sin(phi),\n k = sinPhi0 * sinPhi,\n u = cosPhi0 * cosPhi + k * cos(adLambda),\n v = k * sdLambda * sin(adLambda);\n areaRingSum.add(atan2(v, u));\n\n // Advance the previous points.\n lambda0 = lambda, cosPhi0 = cosPhi, sinPhi0 = sinPhi;\n}\n\nexport default function(object) {\n areaSum.reset();\n stream(object, areaStream);\n return areaSum * 2;\n}\n","import adder from \"./adder.js\";\nimport {areaStream, areaRingSum} from \"./area.js\";\nimport {cartesian, cartesianCross, cartesianNormalizeInPlace, spherical} from \"./cartesian.js\";\nimport {abs, degrees, epsilon, radians} from \"./math.js\";\nimport stream from \"./stream.js\";\n\nvar lambda0, phi0, lambda1, phi1, // bounds\n lambda2, // previous lambda-coordinate\n lambda00, phi00, // first point\n p0, // previous 3D point\n deltaSum = adder(),\n ranges,\n range;\n\nvar boundsStream = {\n point: boundsPoint,\n lineStart: boundsLineStart,\n lineEnd: boundsLineEnd,\n polygonStart: function() {\n boundsStream.point = boundsRingPoint;\n boundsStream.lineStart = boundsRingStart;\n boundsStream.lineEnd = boundsRingEnd;\n deltaSum.reset();\n areaStream.polygonStart();\n },\n polygonEnd: function() {\n areaStream.polygonEnd();\n boundsStream.point = boundsPoint;\n boundsStream.lineStart = boundsLineStart;\n boundsStream.lineEnd = boundsLineEnd;\n if (areaRingSum < 0) lambda0 = -(lambda1 = 180), phi0 = -(phi1 = 90);\n else if (deltaSum > epsilon) phi1 = 90;\n else if (deltaSum < -epsilon) phi0 = -90;\n range[0] = lambda0, range[1] = lambda1;\n },\n sphere: function() {\n lambda0 = -(lambda1 = 180), phi0 = -(phi1 = 90);\n }\n};\n\nfunction boundsPoint(lambda, phi) {\n ranges.push(range = [lambda0 = lambda, lambda1 = lambda]);\n if (phi < phi0) phi0 = phi;\n if (phi > phi1) phi1 = phi;\n}\n\nfunction linePoint(lambda, phi) {\n var p = cartesian([lambda * radians, phi * radians]);\n if (p0) {\n var normal = cartesianCross(p0, p),\n equatorial = [normal[1], -normal[0], 0],\n inflection = cartesianCross(equatorial, normal);\n cartesianNormalizeInPlace(inflection);\n inflection = spherical(inflection);\n var delta = lambda - lambda2,\n sign = delta > 0 ? 1 : -1,\n lambdai = inflection[0] * degrees * sign,\n phii,\n antimeridian = abs(delta) > 180;\n if (antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) {\n phii = inflection[1] * degrees;\n if (phii > phi1) phi1 = phii;\n } else if (lambdai = (lambdai + 360) % 360 - 180, antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) {\n phii = -inflection[1] * degrees;\n if (phii < phi0) phi0 = phii;\n } else {\n if (phi < phi0) phi0 = phi;\n if (phi > phi1) phi1 = phi;\n }\n if (antimeridian) {\n if (lambda < lambda2) {\n if (angle(lambda0, lambda) > angle(lambda0, lambda1)) lambda1 = lambda;\n } else {\n if (angle(lambda, lambda1) > angle(lambda0, lambda1)) lambda0 = lambda;\n }\n } else {\n if (lambda1 >= lambda0) {\n if (lambda < lambda0) lambda0 = lambda;\n if (lambda > lambda1) lambda1 = lambda;\n } else {\n if (lambda > lambda2) {\n if (angle(lambda0, lambda) > angle(lambda0, lambda1)) lambda1 = lambda;\n } else {\n if (angle(lambda, lambda1) > angle(lambda0, lambda1)) lambda0 = lambda;\n }\n }\n }\n } else {\n ranges.push(range = [lambda0 = lambda, lambda1 = lambda]);\n }\n if (phi < phi0) phi0 = phi;\n if (phi > phi1) phi1 = phi;\n p0 = p, lambda2 = lambda;\n}\n\nfunction boundsLineStart() {\n boundsStream.point = linePoint;\n}\n\nfunction boundsLineEnd() {\n range[0] = lambda0, range[1] = lambda1;\n boundsStream.point = boundsPoint;\n p0 = null;\n}\n\nfunction boundsRingPoint(lambda, phi) {\n if (p0) {\n var delta = lambda - lambda2;\n deltaSum.add(abs(delta) > 180 ? delta + (delta > 0 ? 360 : -360) : delta);\n } else {\n lambda00 = lambda, phi00 = phi;\n }\n areaStream.point(lambda, phi);\n linePoint(lambda, phi);\n}\n\nfunction boundsRingStart() {\n areaStream.lineStart();\n}\n\nfunction boundsRingEnd() {\n boundsRingPoint(lambda00, phi00);\n areaStream.lineEnd();\n if (abs(deltaSum) > epsilon) lambda0 = -(lambda1 = 180);\n range[0] = lambda0, range[1] = lambda1;\n p0 = null;\n}\n\n// Finds the left-right distance between two longitudes.\n// This is almost the same as (lambda1 - lambda0 + 360°) % 360°, except that we want\n// the distance between ±180° to be 360°.\nfunction angle(lambda0, lambda1) {\n return (lambda1 -= lambda0) < 0 ? lambda1 + 360 : lambda1;\n}\n\nfunction rangeCompare(a, b) {\n return a[0] - b[0];\n}\n\nfunction rangeContains(range, x) {\n return range[0] <= range[1] ? range[0] <= x && x <= range[1] : x < range[0] || range[1] < x;\n}\n\nexport default function(feature) {\n var i, n, a, b, merged, deltaMax, delta;\n\n phi1 = lambda1 = -(lambda0 = phi0 = Infinity);\n ranges = [];\n stream(feature, boundsStream);\n\n // First, sort ranges by their minimum longitudes.\n if (n = ranges.length) {\n ranges.sort(rangeCompare);\n\n // Then, merge any ranges that overlap.\n for (i = 1, a = ranges[0], merged = [a]; i < n; ++i) {\n b = ranges[i];\n if (rangeContains(a, b[0]) || rangeContains(a, b[1])) {\n if (angle(a[0], b[1]) > angle(a[0], a[1])) a[1] = b[1];\n if (angle(b[0], a[1]) > angle(a[0], a[1])) a[0] = b[0];\n } else {\n merged.push(a = b);\n }\n }\n\n // Finally, find the largest gap between the merged ranges.\n // The final bounding box will be the inverse of this gap.\n for (deltaMax = -Infinity, n = merged.length - 1, i = 0, a = merged[n]; i <= n; a = b, ++i) {\n b = merged[i];\n if ((delta = angle(a[1], b[0])) > deltaMax) deltaMax = delta, lambda0 = b[0], lambda1 = a[1];\n }\n }\n\n ranges = range = null;\n\n return lambda0 === Infinity || phi0 === Infinity\n ? [[NaN, NaN], [NaN, NaN]]\n : [[lambda0, phi0], [lambda1, phi1]];\n}\n","import {asin, atan2, cos, sin, sqrt} from \"./math.js\";\n\nexport function spherical(cartesian) {\n return [atan2(cartesian[1], cartesian[0]), asin(cartesian[2])];\n}\n\nexport function cartesian(spherical) {\n var lambda = spherical[0], phi = spherical[1], cosPhi = cos(phi);\n return [cosPhi * cos(lambda), cosPhi * sin(lambda), sin(phi)];\n}\n\nexport function cartesianDot(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n}\n\nexport function cartesianCross(a, b) {\n return [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]];\n}\n\n// TODO return a\nexport function cartesianAddInPlace(a, b) {\n a[0] += b[0], a[1] += b[1], a[2] += b[2];\n}\n\nexport function cartesianScale(vector, k) {\n return [vector[0] * k, vector[1] * k, vector[2] * k];\n}\n\n// TODO return d\nexport function cartesianNormalizeInPlace(d) {\n var l = sqrt(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]);\n d[0] /= l, d[1] /= l, d[2] /= l;\n}\n","import {asin, atan2, cos, degrees, epsilon, epsilon2, radians, sin, sqrt} from \"./math.js\";\nimport noop from \"./noop.js\";\nimport stream from \"./stream.js\";\n\nvar W0, W1,\n X0, Y0, Z0,\n X1, Y1, Z1,\n X2, Y2, Z2,\n lambda00, phi00, // first point\n x0, y0, z0; // previous point\n\nvar centroidStream = {\n sphere: noop,\n point: centroidPoint,\n lineStart: centroidLineStart,\n lineEnd: centroidLineEnd,\n polygonStart: function() {\n centroidStream.lineStart = centroidRingStart;\n centroidStream.lineEnd = centroidRingEnd;\n },\n polygonEnd: function() {\n centroidStream.lineStart = centroidLineStart;\n centroidStream.lineEnd = centroidLineEnd;\n }\n};\n\n// Arithmetic mean of Cartesian vectors.\nfunction centroidPoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n var cosPhi = cos(phi);\n centroidPointCartesian(cosPhi * cos(lambda), cosPhi * sin(lambda), sin(phi));\n}\n\nfunction centroidPointCartesian(x, y, z) {\n ++W0;\n X0 += (x - X0) / W0;\n Y0 += (y - Y0) / W0;\n Z0 += (z - Z0) / W0;\n}\n\nfunction centroidLineStart() {\n centroidStream.point = centroidLinePointFirst;\n}\n\nfunction centroidLinePointFirst(lambda, phi) {\n lambda *= radians, phi *= radians;\n var cosPhi = cos(phi);\n x0 = cosPhi * cos(lambda);\n y0 = cosPhi * sin(lambda);\n z0 = sin(phi);\n centroidStream.point = centroidLinePoint;\n centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidLinePoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n var cosPhi = cos(phi),\n x = cosPhi * cos(lambda),\n y = cosPhi * sin(lambda),\n z = sin(phi),\n w = atan2(sqrt((w = y0 * z - z0 * y) * w + (w = z0 * x - x0 * z) * w + (w = x0 * y - y0 * x) * w), x0 * x + y0 * y + z0 * z);\n W1 += w;\n X1 += w * (x0 + (x0 = x));\n Y1 += w * (y0 + (y0 = y));\n Z1 += w * (z0 + (z0 = z));\n centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidLineEnd() {\n centroidStream.point = centroidPoint;\n}\n\n// See J. E. Brock, The Inertia Tensor for a Spherical Triangle,\n// J. Applied Mechanics 42, 239 (1975).\nfunction centroidRingStart() {\n centroidStream.point = centroidRingPointFirst;\n}\n\nfunction centroidRingEnd() {\n centroidRingPoint(lambda00, phi00);\n centroidStream.point = centroidPoint;\n}\n\nfunction centroidRingPointFirst(lambda, phi) {\n lambda00 = lambda, phi00 = phi;\n lambda *= radians, phi *= radians;\n centroidStream.point = centroidRingPoint;\n var cosPhi = cos(phi);\n x0 = cosPhi * cos(lambda);\n y0 = cosPhi * sin(lambda);\n z0 = sin(phi);\n centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidRingPoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n var cosPhi = cos(phi),\n x = cosPhi * cos(lambda),\n y = cosPhi * sin(lambda),\n z = sin(phi),\n cx = y0 * z - z0 * y,\n cy = z0 * x - x0 * z,\n cz = x0 * y - y0 * x,\n m = sqrt(cx * cx + cy * cy + cz * cz),\n w = asin(m), // line weight = angle\n v = m && -w / m; // area weight multiplier\n X2 += v * cx;\n Y2 += v * cy;\n Z2 += v * cz;\n W1 += w;\n X1 += w * (x0 + (x0 = x));\n Y1 += w * (y0 + (y0 = y));\n Z1 += w * (z0 + (z0 = z));\n centroidPointCartesian(x0, y0, z0);\n}\n\nexport default function(object) {\n W0 = W1 =\n X0 = Y0 = Z0 =\n X1 = Y1 = Z1 =\n X2 = Y2 = Z2 = 0;\n stream(object, centroidStream);\n\n var x = X2,\n y = Y2,\n z = Z2,\n m = x * x + y * y + z * z;\n\n // If the area-weighted ccentroid is undefined, fall back to length-weighted ccentroid.\n if (m < epsilon2) {\n x = X1, y = Y1, z = Z1;\n // If the feature has zero length, fall back to arithmetic mean of point vectors.\n if (W1 < epsilon) x = X0, y = Y0, z = Z0;\n m = x * x + y * y + z * z;\n // If the feature still has an undefined ccentroid, then return.\n if (m < epsilon2) return [NaN, NaN];\n }\n\n return [atan2(y, x) * degrees, asin(z / sqrt(m)) * degrees];\n}\n","import {cartesian, cartesianNormalizeInPlace, spherical} from \"./cartesian.js\";\nimport constant from \"./constant.js\";\nimport {acos, cos, degrees, epsilon, radians, sin, tau} from \"./math.js\";\nimport {rotateRadians} from \"./rotation.js\";\n\n// Generates a circle centered at [0°, 0°], with a given radius and precision.\nexport function circleStream(stream, radius, delta, direction, t0, t1) {\n if (!delta) return;\n var cosRadius = cos(radius),\n sinRadius = sin(radius),\n step = direction * delta;\n if (t0 == null) {\n t0 = radius + direction * tau;\n t1 = radius - step / 2;\n } else {\n t0 = circleRadius(cosRadius, t0);\n t1 = circleRadius(cosRadius, t1);\n if (direction > 0 ? t0 < t1 : t0 > t1) t0 += direction * tau;\n }\n for (var point, t = t0; direction > 0 ? t > t1 : t < t1; t -= step) {\n point = spherical([cosRadius, -sinRadius * cos(t), -sinRadius * sin(t)]);\n stream.point(point[0], point[1]);\n }\n}\n\n// Returns the signed angle of a cartesian point relative to [cosRadius, 0, 0].\nfunction circleRadius(cosRadius, point) {\n point = cartesian(point), point[0] -= cosRadius;\n cartesianNormalizeInPlace(point);\n var radius = acos(-point[1]);\n return ((-point[2] < 0 ? -radius : radius) + tau - epsilon) % tau;\n}\n\nexport default function() {\n var center = constant([0, 0]),\n radius = constant(90),\n precision = constant(6),\n ring,\n rotate,\n stream = {point: point};\n\n function point(x, y) {\n ring.push(x = rotate(x, y));\n x[0] *= degrees, x[1] *= degrees;\n }\n\n function circle() {\n var c = center.apply(this, arguments),\n r = radius.apply(this, arguments) * radians,\n p = precision.apply(this, arguments) * radians;\n ring = [];\n rotate = rotateRadians(-c[0] * radians, -c[1] * radians, 0).invert;\n circleStream(stream, r, p, 1);\n c = {type: \"Polygon\", coordinates: [ring]};\n ring = rotate = null;\n return c;\n }\n\n circle.center = function(_) {\n return arguments.length ? (center = typeof _ === \"function\" ? _ : constant([+_[0], +_[1]]), circle) : center;\n };\n\n circle.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), circle) : radius;\n };\n\n circle.precision = function(_) {\n return arguments.length ? (precision = typeof _ === \"function\" ? _ : constant(+_), circle) : precision;\n };\n\n return circle;\n}\n","import clip from \"./index.js\";\nimport {abs, atan, cos, epsilon, halfPi, pi, sin} from \"../math.js\";\n\nexport default clip(\n function() { return true; },\n clipAntimeridianLine,\n clipAntimeridianInterpolate,\n [-pi, -halfPi]\n);\n\n// Takes a line and cuts into visible segments. Return values: 0 - there were\n// intersections or the line was empty; 1 - no intersections; 2 - there were\n// intersections, and the first and last segments should be rejoined.\nfunction clipAntimeridianLine(stream) {\n var lambda0 = NaN,\n phi0 = NaN,\n sign0 = NaN,\n clean; // no intersections\n\n return {\n lineStart: function() {\n stream.lineStart();\n clean = 1;\n },\n point: function(lambda1, phi1) {\n var sign1 = lambda1 > 0 ? pi : -pi,\n delta = abs(lambda1 - lambda0);\n if (abs(delta - pi) < epsilon) { // line crosses a pole\n stream.point(lambda0, phi0 = (phi0 + phi1) / 2 > 0 ? halfPi : -halfPi);\n stream.point(sign0, phi0);\n stream.lineEnd();\n stream.lineStart();\n stream.point(sign1, phi0);\n stream.point(lambda1, phi0);\n clean = 0;\n } else if (sign0 !== sign1 && delta >= pi) { // line crosses antimeridian\n if (abs(lambda0 - sign0) < epsilon) lambda0 -= sign0 * epsilon; // handle degeneracies\n if (abs(lambda1 - sign1) < epsilon) lambda1 -= sign1 * epsilon;\n phi0 = clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1);\n stream.point(sign0, phi0);\n stream.lineEnd();\n stream.lineStart();\n stream.point(sign1, phi0);\n clean = 0;\n }\n stream.point(lambda0 = lambda1, phi0 = phi1);\n sign0 = sign1;\n },\n lineEnd: function() {\n stream.lineEnd();\n lambda0 = phi0 = NaN;\n },\n clean: function() {\n return 2 - clean; // if intersections, rejoin first and last segments\n }\n };\n}\n\nfunction clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1) {\n var cosPhi0,\n cosPhi1,\n sinLambda0Lambda1 = sin(lambda0 - lambda1);\n return abs(sinLambda0Lambda1) > epsilon\n ? atan((sin(phi0) * (cosPhi1 = cos(phi1)) * sin(lambda1)\n - sin(phi1) * (cosPhi0 = cos(phi0)) * sin(lambda0))\n / (cosPhi0 * cosPhi1 * sinLambda0Lambda1))\n : (phi0 + phi1) / 2;\n}\n\nfunction clipAntimeridianInterpolate(from, to, direction, stream) {\n var phi;\n if (from == null) {\n phi = direction * halfPi;\n stream.point(-pi, phi);\n stream.point(0, phi);\n stream.point(pi, phi);\n stream.point(pi, 0);\n stream.point(pi, -phi);\n stream.point(0, -phi);\n stream.point(-pi, -phi);\n stream.point(-pi, 0);\n stream.point(-pi, phi);\n } else if (abs(from[0] - to[0]) > epsilon) {\n var lambda = from[0] < to[0] ? pi : -pi;\n phi = direction * lambda / 2;\n stream.point(-lambda, phi);\n stream.point(0, phi);\n stream.point(lambda, phi);\n } else {\n stream.point(to[0], to[1]);\n }\n}\n","import noop from \"../noop.js\";\n\nexport default function() {\n var lines = [],\n line;\n return {\n point: function(x, y) {\n line.push([x, y]);\n },\n lineStart: function() {\n lines.push(line = []);\n },\n lineEnd: noop,\n rejoin: function() {\n if (lines.length > 1) lines.push(lines.pop().concat(lines.shift()));\n },\n result: function() {\n var result = lines;\n lines = [];\n line = null;\n return result;\n }\n };\n}\n","import {cartesian, cartesianAddInPlace, cartesianCross, cartesianDot, cartesianScale, spherical} from \"../cartesian.js\";\nimport {circleStream} from \"../circle.js\";\nimport {abs, cos, epsilon, pi, radians, sqrt} from \"../math.js\";\nimport pointEqual from \"../pointEqual.js\";\nimport clip from \"./index.js\";\n\nexport default function(radius) {\n var cr = cos(radius),\n delta = 6 * radians,\n smallRadius = cr > 0,\n notHemisphere = abs(cr) > epsilon; // TODO optimise for this common case\n\n function interpolate(from, to, direction, stream) {\n circleStream(stream, radius, delta, direction, from, to);\n }\n\n function visible(lambda, phi) {\n return cos(lambda) * cos(phi) > cr;\n }\n\n // Takes a line and cuts into visible segments. Return values used for polygon\n // clipping: 0 - there were intersections or the line was empty; 1 - no\n // intersections 2 - there were intersections, and the first and last segments\n // should be rejoined.\n function clipLine(stream) {\n var point0, // previous point\n c0, // code for previous point\n v0, // visibility of previous point\n v00, // visibility of first point\n clean; // no intersections\n return {\n lineStart: function() {\n v00 = v0 = false;\n clean = 1;\n },\n point: function(lambda, phi) {\n var point1 = [lambda, phi],\n point2,\n v = visible(lambda, phi),\n c = smallRadius\n ? v ? 0 : code(lambda, phi)\n : v ? code(lambda + (lambda < 0 ? pi : -pi), phi) : 0;\n if (!point0 && (v00 = v0 = v)) stream.lineStart();\n // Handle degeneracies.\n // TODO ignore if not clipping polygons.\n if (v !== v0) {\n point2 = intersect(point0, point1);\n if (!point2 || pointEqual(point0, point2) || pointEqual(point1, point2)) {\n point1[0] += epsilon;\n point1[1] += epsilon;\n v = visible(point1[0], point1[1]);\n }\n }\n if (v !== v0) {\n clean = 0;\n if (v) {\n // outside going in\n stream.lineStart();\n point2 = intersect(point1, point0);\n stream.point(point2[0], point2[1]);\n } else {\n // inside going out\n point2 = intersect(point0, point1);\n stream.point(point2[0], point2[1]);\n stream.lineEnd();\n }\n point0 = point2;\n } else if (notHemisphere && point0 && smallRadius ^ v) {\n var t;\n // If the codes for two points are different, or are both zero,\n // and there this segment intersects with the small circle.\n if (!(c & c0) && (t = intersect(point1, point0, true))) {\n clean = 0;\n if (smallRadius) {\n stream.lineStart();\n stream.point(t[0][0], t[0][1]);\n stream.point(t[1][0], t[1][1]);\n stream.lineEnd();\n } else {\n stream.point(t[1][0], t[1][1]);\n stream.lineEnd();\n stream.lineStart();\n stream.point(t[0][0], t[0][1]);\n }\n }\n }\n if (v && (!point0 || !pointEqual(point0, point1))) {\n stream.point(point1[0], point1[1]);\n }\n point0 = point1, v0 = v, c0 = c;\n },\n lineEnd: function() {\n if (v0) stream.lineEnd();\n point0 = null;\n },\n // Rejoin first and last segments if there were intersections and the first\n // and last points were visible.\n clean: function() {\n return clean | ((v00 && v0) << 1);\n }\n };\n }\n\n // Intersects the great circle between a and b with the clip circle.\n function intersect(a, b, two) {\n var pa = cartesian(a),\n pb = cartesian(b);\n\n // We have two planes, n1.p = d1 and n2.p = d2.\n // Find intersection line p(t) = c1 n1 + c2 n2 + t (n1 ⨯ n2).\n var n1 = [1, 0, 0], // normal\n n2 = cartesianCross(pa, pb),\n n2n2 = cartesianDot(n2, n2),\n n1n2 = n2[0], // cartesianDot(n1, n2),\n determinant = n2n2 - n1n2 * n1n2;\n\n // Two polar points.\n if (!determinant) return !two && a;\n\n var c1 = cr * n2n2 / determinant,\n c2 = -cr * n1n2 / determinant,\n n1xn2 = cartesianCross(n1, n2),\n A = cartesianScale(n1, c1),\n B = cartesianScale(n2, c2);\n cartesianAddInPlace(A, B);\n\n // Solve |p(t)|^2 = 1.\n var u = n1xn2,\n w = cartesianDot(A, u),\n uu = cartesianDot(u, u),\n t2 = w * w - uu * (cartesianDot(A, A) - 1);\n\n if (t2 < 0) return;\n\n var t = sqrt(t2),\n q = cartesianScale(u, (-w - t) / uu);\n cartesianAddInPlace(q, A);\n q = spherical(q);\n\n if (!two) return q;\n\n // Two intersection points.\n var lambda0 = a[0],\n lambda1 = b[0],\n phi0 = a[1],\n phi1 = b[1],\n z;\n\n if (lambda1 < lambda0) z = lambda0, lambda0 = lambda1, lambda1 = z;\n\n var delta = lambda1 - lambda0,\n polar = abs(delta - pi) < epsilon,\n meridian = polar || delta < epsilon;\n\n if (!polar && phi1 < phi0) z = phi0, phi0 = phi1, phi1 = z;\n\n // Check that the first point is between a and b.\n if (meridian\n ? polar\n ? phi0 + phi1 > 0 ^ q[1] < (abs(q[0] - lambda0) < epsilon ? phi0 : phi1)\n : phi0 <= q[1] && q[1] <= phi1\n : delta > pi ^ (lambda0 <= q[0] && q[0] <= lambda1)) {\n var q1 = cartesianScale(u, (-w + t) / uu);\n cartesianAddInPlace(q1, A);\n return [q, spherical(q1)];\n }\n }\n\n // Generates a 4-bit vector representing the location of a point relative to\n // the small circle's bounding box.\n function code(lambda, phi) {\n var r = smallRadius ? radius : pi - radius,\n code = 0;\n if (lambda < -r) code |= 1; // left\n else if (lambda > r) code |= 2; // right\n if (phi < -r) code |= 4; // below\n else if (phi > r) code |= 8; // above\n return code;\n }\n\n return clip(visible, clipLine, interpolate, smallRadius ? [0, -radius] : [-pi, radius - pi]);\n}\n","import clipRectangle from \"./rectangle.js\";\n\nexport default function() {\n var x0 = 0,\n y0 = 0,\n x1 = 960,\n y1 = 500,\n cache,\n cacheStream,\n clip;\n\n return clip = {\n stream: function(stream) {\n return cache && cacheStream === stream ? cache : cache = clipRectangle(x0, y0, x1, y1)(cacheStream = stream);\n },\n extent: function(_) {\n return arguments.length ? (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1], cache = cacheStream = null, clip) : [[x0, y0], [x1, y1]];\n }\n };\n}\n","import clipBuffer from \"./buffer.js\";\nimport clipRejoin from \"./rejoin.js\";\nimport {epsilon, halfPi} from \"../math.js\";\nimport polygonContains from \"../polygonContains.js\";\nimport {merge} from \"d3-array\";\n\nexport default function(pointVisible, clipLine, interpolate, start) {\n return function(sink) {\n var line = clipLine(sink),\n ringBuffer = clipBuffer(),\n ringSink = clipLine(ringBuffer),\n polygonStarted = false,\n polygon,\n segments,\n ring;\n\n var clip = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function() {\n clip.point = pointRing;\n clip.lineStart = ringStart;\n clip.lineEnd = ringEnd;\n segments = [];\n polygon = [];\n },\n polygonEnd: function() {\n clip.point = point;\n clip.lineStart = lineStart;\n clip.lineEnd = lineEnd;\n segments = merge(segments);\n var startInside = polygonContains(polygon, start);\n if (segments.length) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n clipRejoin(segments, compareIntersection, startInside, interpolate, sink);\n } else if (startInside) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n sink.lineStart();\n interpolate(null, null, 1, sink);\n sink.lineEnd();\n }\n if (polygonStarted) sink.polygonEnd(), polygonStarted = false;\n segments = polygon = null;\n },\n sphere: function() {\n sink.polygonStart();\n sink.lineStart();\n interpolate(null, null, 1, sink);\n sink.lineEnd();\n sink.polygonEnd();\n }\n };\n\n function point(lambda, phi) {\n if (pointVisible(lambda, phi)) sink.point(lambda, phi);\n }\n\n function pointLine(lambda, phi) {\n line.point(lambda, phi);\n }\n\n function lineStart() {\n clip.point = pointLine;\n line.lineStart();\n }\n\n function lineEnd() {\n clip.point = point;\n line.lineEnd();\n }\n\n function pointRing(lambda, phi) {\n ring.push([lambda, phi]);\n ringSink.point(lambda, phi);\n }\n\n function ringStart() {\n ringSink.lineStart();\n ring = [];\n }\n\n function ringEnd() {\n pointRing(ring[0][0], ring[0][1]);\n ringSink.lineEnd();\n\n var clean = ringSink.clean(),\n ringSegments = ringBuffer.result(),\n i, n = ringSegments.length, m,\n segment,\n point;\n\n ring.pop();\n polygon.push(ring);\n ring = null;\n\n if (!n) return;\n\n // No intersections.\n if (clean & 1) {\n segment = ringSegments[0];\n if ((m = segment.length - 1) > 0) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n sink.lineStart();\n for (i = 0; i < m; ++i) sink.point((point = segment[i])[0], point[1]);\n sink.lineEnd();\n }\n return;\n }\n\n // Rejoin connected segments.\n // TODO reuse ringBuffer.rejoin()?\n if (n > 1 && clean & 2) ringSegments.push(ringSegments.pop().concat(ringSegments.shift()));\n\n segments.push(ringSegments.filter(validSegment));\n }\n\n return clip;\n };\n}\n\nfunction validSegment(segment) {\n return segment.length > 1;\n}\n\n// Intersections are sorted along the clip edge. For both antimeridian cutting\n// and circle clipping, the same comparison is used.\nfunction compareIntersection(a, b) {\n return ((a = a.x)[0] < 0 ? a[1] - halfPi - epsilon : halfPi - a[1])\n - ((b = b.x)[0] < 0 ? b[1] - halfPi - epsilon : halfPi - b[1]);\n}\n","export default function(a, b, x0, y0, x1, y1) {\n var ax = a[0],\n ay = a[1],\n bx = b[0],\n by = b[1],\n t0 = 0,\n t1 = 1,\n dx = bx - ax,\n dy = by - ay,\n r;\n\n r = x0 - ax;\n if (!dx && r > 0) return;\n r /= dx;\n if (dx < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dx > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = x1 - ax;\n if (!dx && r < 0) return;\n r /= dx;\n if (dx < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dx > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n r = y0 - ay;\n if (!dy && r > 0) return;\n r /= dy;\n if (dy < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dy > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = y1 - ay;\n if (!dy && r < 0) return;\n r /= dy;\n if (dy < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dy > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n if (t0 > 0) a[0] = ax + t0 * dx, a[1] = ay + t0 * dy;\n if (t1 < 1) b[0] = ax + t1 * dx, b[1] = ay + t1 * dy;\n return true;\n}\n","import {abs, epsilon} from \"../math.js\";\nimport clipBuffer from \"./buffer.js\";\nimport clipLine from \"./line.js\";\nimport clipRejoin from \"./rejoin.js\";\nimport {merge} from \"d3-array\";\n\nvar clipMax = 1e9, clipMin = -clipMax;\n\n// TODO Use d3-polygon’s polygonContains here for the ring check?\n// TODO Eliminate duplicate buffering in clipBuffer and polygon.push?\n\nexport default function clipRectangle(x0, y0, x1, y1) {\n\n function visible(x, y) {\n return x0 <= x && x <= x1 && y0 <= y && y <= y1;\n }\n\n function interpolate(from, to, direction, stream) {\n var a = 0, a1 = 0;\n if (from == null\n || (a = corner(from, direction)) !== (a1 = corner(to, direction))\n || comparePoint(from, to) < 0 ^ direction > 0) {\n do stream.point(a === 0 || a === 3 ? x0 : x1, a > 1 ? y1 : y0);\n while ((a = (a + direction + 4) % 4) !== a1);\n } else {\n stream.point(to[0], to[1]);\n }\n }\n\n function corner(p, direction) {\n return abs(p[0] - x0) < epsilon ? direction > 0 ? 0 : 3\n : abs(p[0] - x1) < epsilon ? direction > 0 ? 2 : 1\n : abs(p[1] - y0) < epsilon ? direction > 0 ? 1 : 0\n : direction > 0 ? 3 : 2; // abs(p[1] - y1) < epsilon\n }\n\n function compareIntersection(a, b) {\n return comparePoint(a.x, b.x);\n }\n\n function comparePoint(a, b) {\n var ca = corner(a, 1),\n cb = corner(b, 1);\n return ca !== cb ? ca - cb\n : ca === 0 ? b[1] - a[1]\n : ca === 1 ? a[0] - b[0]\n : ca === 2 ? a[1] - b[1]\n : b[0] - a[0];\n }\n\n return function(stream) {\n var activeStream = stream,\n bufferStream = clipBuffer(),\n segments,\n polygon,\n ring,\n x__, y__, v__, // first point\n x_, y_, v_, // previous point\n first,\n clean;\n\n var clipStream = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: polygonStart,\n polygonEnd: polygonEnd\n };\n\n function point(x, y) {\n if (visible(x, y)) activeStream.point(x, y);\n }\n\n function polygonInside() {\n var winding = 0;\n\n for (var i = 0, n = polygon.length; i < n; ++i) {\n for (var ring = polygon[i], j = 1, m = ring.length, point = ring[0], a0, a1, b0 = point[0], b1 = point[1]; j < m; ++j) {\n a0 = b0, a1 = b1, point = ring[j], b0 = point[0], b1 = point[1];\n if (a1 <= y1) { if (b1 > y1 && (b0 - a0) * (y1 - a1) > (b1 - a1) * (x0 - a0)) ++winding; }\n else { if (b1 <= y1 && (b0 - a0) * (y1 - a1) < (b1 - a1) * (x0 - a0)) --winding; }\n }\n }\n\n return winding;\n }\n\n // Buffer geometry within a polygon and then clip it en masse.\n function polygonStart() {\n activeStream = bufferStream, segments = [], polygon = [], clean = true;\n }\n\n function polygonEnd() {\n var startInside = polygonInside(),\n cleanInside = clean && startInside,\n visible = (segments = merge(segments)).length;\n if (cleanInside || visible) {\n stream.polygonStart();\n if (cleanInside) {\n stream.lineStart();\n interpolate(null, null, 1, stream);\n stream.lineEnd();\n }\n if (visible) {\n clipRejoin(segments, compareIntersection, startInside, interpolate, stream);\n }\n stream.polygonEnd();\n }\n activeStream = stream, segments = polygon = ring = null;\n }\n\n function lineStart() {\n clipStream.point = linePoint;\n if (polygon) polygon.push(ring = []);\n first = true;\n v_ = false;\n x_ = y_ = NaN;\n }\n\n // TODO rather than special-case polygons, simply handle them separately.\n // Ideally, coincident intersection points should be jittered to avoid\n // clipping issues.\n function lineEnd() {\n if (segments) {\n linePoint(x__, y__);\n if (v__ && v_) bufferStream.rejoin();\n segments.push(bufferStream.result());\n }\n clipStream.point = point;\n if (v_) activeStream.lineEnd();\n }\n\n function linePoint(x, y) {\n var v = visible(x, y);\n if (polygon) ring.push([x, y]);\n if (first) {\n x__ = x, y__ = y, v__ = v;\n first = false;\n if (v) {\n activeStream.lineStart();\n activeStream.point(x, y);\n }\n } else {\n if (v && v_) activeStream.point(x, y);\n else {\n var a = [x_ = Math.max(clipMin, Math.min(clipMax, x_)), y_ = Math.max(clipMin, Math.min(clipMax, y_))],\n b = [x = Math.max(clipMin, Math.min(clipMax, x)), y = Math.max(clipMin, Math.min(clipMax, y))];\n if (clipLine(a, b, x0, y0, x1, y1)) {\n if (!v_) {\n activeStream.lineStart();\n activeStream.point(a[0], a[1]);\n }\n activeStream.point(b[0], b[1]);\n if (!v) activeStream.lineEnd();\n clean = false;\n } else if (v) {\n activeStream.lineStart();\n activeStream.point(x, y);\n clean = false;\n }\n }\n }\n x_ = x, y_ = y, v_ = v;\n }\n\n return clipStream;\n };\n}\n","import pointEqual from \"../pointEqual.js\";\n\nfunction Intersection(point, points, other, entry) {\n this.x = point;\n this.z = points;\n this.o = other; // another intersection\n this.e = entry; // is an entry?\n this.v = false; // visited\n this.n = this.p = null; // next & previous\n}\n\n// A generalized polygon clipping algorithm: given a polygon that has been cut\n// into its visible line segments, and rejoins the segments by interpolating\n// along the clip edge.\nexport default function(segments, compareIntersection, startInside, interpolate, stream) {\n var subject = [],\n clip = [],\n i,\n n;\n\n segments.forEach(function(segment) {\n if ((n = segment.length - 1) <= 0) return;\n var n, p0 = segment[0], p1 = segment[n], x;\n\n // If the first and last points of a segment are coincident, then treat as a\n // closed ring. TODO if all rings are closed, then the winding order of the\n // exterior ring should be checked.\n if (pointEqual(p0, p1)) {\n stream.lineStart();\n for (i = 0; i < n; ++i) stream.point((p0 = segment[i])[0], p0[1]);\n stream.lineEnd();\n return;\n }\n\n subject.push(x = new Intersection(p0, segment, null, true));\n clip.push(x.o = new Intersection(p0, null, x, false));\n subject.push(x = new Intersection(p1, segment, null, false));\n clip.push(x.o = new Intersection(p1, null, x, true));\n });\n\n if (!subject.length) return;\n\n clip.sort(compareIntersection);\n link(subject);\n link(clip);\n\n for (i = 0, n = clip.length; i < n; ++i) {\n clip[i].e = startInside = !startInside;\n }\n\n var start = subject[0],\n points,\n point;\n\n while (1) {\n // Find first unvisited intersection.\n var current = start,\n isSubject = true;\n while (current.v) if ((current = current.n) === start) return;\n points = current.z;\n stream.lineStart();\n do {\n current.v = current.o.v = true;\n if (current.e) {\n if (isSubject) {\n for (i = 0, n = points.length; i < n; ++i) stream.point((point = points[i])[0], point[1]);\n } else {\n interpolate(current.x, current.n.x, 1, stream);\n }\n current = current.n;\n } else {\n if (isSubject) {\n points = current.p.z;\n for (i = points.length - 1; i >= 0; --i) stream.point((point = points[i])[0], point[1]);\n } else {\n interpolate(current.x, current.p.x, -1, stream);\n }\n current = current.p;\n }\n current = current.o;\n points = current.z;\n isSubject = !isSubject;\n } while (!current.v);\n stream.lineEnd();\n }\n}\n\nfunction link(array) {\n if (!(n = array.length)) return;\n var n,\n i = 0,\n a = array[0],\n b;\n while (++i < n) {\n a.n = b = array[i];\n b.p = a;\n a = b;\n }\n a.n = b = array[0];\n b.p = a;\n}\n","export default function(a, b) {\n\n function compose(x, y) {\n return x = a(x, y), b(x[0], x[1]);\n }\n\n if (a.invert && b.invert) compose.invert = function(x, y) {\n return x = b.invert(x, y), x && a.invert(x[0], x[1]);\n };\n\n return compose;\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import {default as polygonContains} from \"./polygonContains.js\";\nimport {default as distance} from \"./distance.js\";\nimport {epsilon2, radians} from \"./math.js\";\n\nvar containsObjectType = {\n Feature: function(object, point) {\n return containsGeometry(object.geometry, point);\n },\n FeatureCollection: function(object, point) {\n var features = object.features, i = -1, n = features.length;\n while (++i < n) if (containsGeometry(features[i].geometry, point)) return true;\n return false;\n }\n};\n\nvar containsGeometryType = {\n Sphere: function() {\n return true;\n },\n Point: function(object, point) {\n return containsPoint(object.coordinates, point);\n },\n MultiPoint: function(object, point) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) if (containsPoint(coordinates[i], point)) return true;\n return false;\n },\n LineString: function(object, point) {\n return containsLine(object.coordinates, point);\n },\n MultiLineString: function(object, point) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) if (containsLine(coordinates[i], point)) return true;\n return false;\n },\n Polygon: function(object, point) {\n return containsPolygon(object.coordinates, point);\n },\n MultiPolygon: function(object, point) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) if (containsPolygon(coordinates[i], point)) return true;\n return false;\n },\n GeometryCollection: function(object, point) {\n var geometries = object.geometries, i = -1, n = geometries.length;\n while (++i < n) if (containsGeometry(geometries[i], point)) return true;\n return false;\n }\n};\n\nfunction containsGeometry(geometry, point) {\n return geometry && containsGeometryType.hasOwnProperty(geometry.type)\n ? containsGeometryType[geometry.type](geometry, point)\n : false;\n}\n\nfunction containsPoint(coordinates, point) {\n return distance(coordinates, point) === 0;\n}\n\nfunction containsLine(coordinates, point) {\n var ao, bo, ab;\n for (var i = 0, n = coordinates.length; i < n; i++) {\n bo = distance(coordinates[i], point);\n if (bo === 0) return true;\n if (i > 0) {\n ab = distance(coordinates[i], coordinates[i - 1]);\n if (\n ab > 0 &&\n ao <= ab &&\n bo <= ab &&\n (ao + bo - ab) * (1 - Math.pow((ao - bo) / ab, 2)) < epsilon2 * ab\n )\n return true;\n }\n ao = bo;\n }\n return false;\n}\n\nfunction containsPolygon(coordinates, point) {\n return !!polygonContains(coordinates.map(ringRadians), pointRadians(point));\n}\n\nfunction ringRadians(ring) {\n return ring = ring.map(pointRadians), ring.pop(), ring;\n}\n\nfunction pointRadians(point) {\n return [point[0] * radians, point[1] * radians];\n}\n\nexport default function(object, point) {\n return (object && containsObjectType.hasOwnProperty(object.type)\n ? containsObjectType[object.type]\n : containsGeometry)(object, point);\n}\n","import length from \"./length.js\";\n\nvar coordinates = [null, null],\n object = {type: \"LineString\", coordinates: coordinates};\n\nexport default function(a, b) {\n coordinates[0] = a;\n coordinates[1] = b;\n return length(object);\n}\n","import {range} from \"d3-array\";\nimport {abs, ceil, epsilon} from \"./math.js\";\n\nfunction graticuleX(y0, y1, dy) {\n var y = range(y0, y1 - epsilon, dy).concat(y1);\n return function(x) { return y.map(function(y) { return [x, y]; }); };\n}\n\nfunction graticuleY(x0, x1, dx) {\n var x = range(x0, x1 - epsilon, dx).concat(x1);\n return function(y) { return x.map(function(x) { return [x, y]; }); };\n}\n\nexport default function graticule() {\n var x1, x0, X1, X0,\n y1, y0, Y1, Y0,\n dx = 10, dy = dx, DX = 90, DY = 360,\n x, y, X, Y,\n precision = 2.5;\n\n function graticule() {\n return {type: \"MultiLineString\", coordinates: lines()};\n }\n\n function lines() {\n return range(ceil(X0 / DX) * DX, X1, DX).map(X)\n .concat(range(ceil(Y0 / DY) * DY, Y1, DY).map(Y))\n .concat(range(ceil(x0 / dx) * dx, x1, dx).filter(function(x) { return abs(x % DX) > epsilon; }).map(x))\n .concat(range(ceil(y0 / dy) * dy, y1, dy).filter(function(y) { return abs(y % DY) > epsilon; }).map(y));\n }\n\n graticule.lines = function() {\n return lines().map(function(coordinates) { return {type: \"LineString\", coordinates: coordinates}; });\n };\n\n graticule.outline = function() {\n return {\n type: \"Polygon\",\n coordinates: [\n X(X0).concat(\n Y(Y1).slice(1),\n X(X1).reverse().slice(1),\n Y(Y0).reverse().slice(1))\n ]\n };\n };\n\n graticule.extent = function(_) {\n if (!arguments.length) return graticule.extentMinor();\n return graticule.extentMajor(_).extentMinor(_);\n };\n\n graticule.extentMajor = function(_) {\n if (!arguments.length) return [[X0, Y0], [X1, Y1]];\n X0 = +_[0][0], X1 = +_[1][0];\n Y0 = +_[0][1], Y1 = +_[1][1];\n if (X0 > X1) _ = X0, X0 = X1, X1 = _;\n if (Y0 > Y1) _ = Y0, Y0 = Y1, Y1 = _;\n return graticule.precision(precision);\n };\n\n graticule.extentMinor = function(_) {\n if (!arguments.length) return [[x0, y0], [x1, y1]];\n x0 = +_[0][0], x1 = +_[1][0];\n y0 = +_[0][1], y1 = +_[1][1];\n if (x0 > x1) _ = x0, x0 = x1, x1 = _;\n if (y0 > y1) _ = y0, y0 = y1, y1 = _;\n return graticule.precision(precision);\n };\n\n graticule.step = function(_) {\n if (!arguments.length) return graticule.stepMinor();\n return graticule.stepMajor(_).stepMinor(_);\n };\n\n graticule.stepMajor = function(_) {\n if (!arguments.length) return [DX, DY];\n DX = +_[0], DY = +_[1];\n return graticule;\n };\n\n graticule.stepMinor = function(_) {\n if (!arguments.length) return [dx, dy];\n dx = +_[0], dy = +_[1];\n return graticule;\n };\n\n graticule.precision = function(_) {\n if (!arguments.length) return precision;\n precision = +_;\n x = graticuleX(y0, y1, 90);\n y = graticuleY(x0, x1, precision);\n X = graticuleX(Y0, Y1, 90);\n Y = graticuleY(X0, X1, precision);\n return graticule;\n };\n\n return graticule\n .extentMajor([[-180, -90 + epsilon], [180, 90 - epsilon]])\n .extentMinor([[-180, -80 - epsilon], [180, 80 + epsilon]]);\n}\n\nexport function graticule10() {\n return graticule()();\n}\n","export default function(x) {\n return x;\n}\n","export {default as geoArea} from \"./area.js\";\nexport {default as geoBounds} from \"./bounds.js\";\nexport {default as geoCentroid} from \"./centroid.js\";\nexport {default as geoCircle} from \"./circle.js\";\nexport {default as geoClipAntimeridian} from \"./clip/antimeridian.js\";\nexport {default as geoClipCircle} from \"./clip/circle.js\";\nexport {default as geoClipExtent} from \"./clip/extent.js\"; // DEPRECATED! Use d3.geoIdentity().clipExtent(…).\nexport {default as geoClipRectangle} from \"./clip/rectangle.js\";\nexport {default as geoContains} from \"./contains.js\";\nexport {default as geoDistance} from \"./distance.js\";\nexport {default as geoGraticule, graticule10 as geoGraticule10} from \"./graticule.js\";\nexport {default as geoInterpolate} from \"./interpolate.js\";\nexport {default as geoLength} from \"./length.js\";\nexport {default as geoPath} from \"./path/index.js\";\nexport {default as geoAlbers} from \"./projection/albers.js\";\nexport {default as geoAlbersUsa} from \"./projection/albersUsa.js\";\nexport {default as geoAzimuthalEqualArea, azimuthalEqualAreaRaw as geoAzimuthalEqualAreaRaw} from \"./projection/azimuthalEqualArea.js\";\nexport {default as geoAzimuthalEquidistant, azimuthalEquidistantRaw as geoAzimuthalEquidistantRaw} from \"./projection/azimuthalEquidistant.js\";\nexport {default as geoConicConformal, conicConformalRaw as geoConicConformalRaw} from \"./projection/conicConformal.js\";\nexport {default as geoConicEqualArea, conicEqualAreaRaw as geoConicEqualAreaRaw} from \"./projection/conicEqualArea.js\";\nexport {default as geoConicEquidistant, conicEquidistantRaw as geoConicEquidistantRaw} from \"./projection/conicEquidistant.js\";\nexport {default as geoEqualEarth, equalEarthRaw as geoEqualEarthRaw} from \"./projection/equalEarth.js\";\nexport {default as geoEquirectangular, equirectangularRaw as geoEquirectangularRaw} from \"./projection/equirectangular.js\";\nexport {default as geoGnomonic, gnomonicRaw as geoGnomonicRaw} from \"./projection/gnomonic.js\";\nexport {default as geoIdentity} from \"./projection/identity.js\";\nexport {default as geoProjection, projectionMutator as geoProjectionMutator} from \"./projection/index.js\";\nexport {default as geoMercator, mercatorRaw as geoMercatorRaw} from \"./projection/mercator.js\";\nexport {default as geoNaturalEarth1, naturalEarth1Raw as geoNaturalEarth1Raw} from \"./projection/naturalEarth1.js\";\nexport {default as geoOrthographic, orthographicRaw as geoOrthographicRaw} from \"./projection/orthographic.js\";\nexport {default as geoStereographic, stereographicRaw as geoStereographicRaw} from \"./projection/stereographic.js\";\nexport {default as geoTransverseMercator, transverseMercatorRaw as geoTransverseMercatorRaw} from \"./projection/transverseMercator.js\";\nexport {default as geoRotation} from \"./rotation.js\";\nexport {default as geoStream} from \"./stream.js\";\nexport {default as geoTransform} from \"./transform.js\";\n","import {asin, atan2, cos, degrees, haversin, radians, sin, sqrt} from \"./math.js\";\n\nexport default function(a, b) {\n var x0 = a[0] * radians,\n y0 = a[1] * radians,\n x1 = b[0] * radians,\n y1 = b[1] * radians,\n cy0 = cos(y0),\n sy0 = sin(y0),\n cy1 = cos(y1),\n sy1 = sin(y1),\n kx0 = cy0 * cos(x0),\n ky0 = cy0 * sin(x0),\n kx1 = cy1 * cos(x1),\n ky1 = cy1 * sin(x1),\n d = 2 * asin(sqrt(haversin(y1 - y0) + cy0 * cy1 * haversin(x1 - x0))),\n k = sin(d);\n\n var interpolate = d ? function(t) {\n var B = sin(t *= d) / k,\n A = sin(d - t) / k,\n x = A * kx0 + B * kx1,\n y = A * ky0 + B * ky1,\n z = A * sy0 + B * sy1;\n return [\n atan2(y, x) * degrees,\n atan2(z, sqrt(x * x + y * y)) * degrees\n ];\n } : function() {\n return [x0 * degrees, y0 * degrees];\n };\n\n interpolate.distance = d;\n\n return interpolate;\n}\n","import adder from \"./adder.js\";\nimport {abs, atan2, cos, radians, sin, sqrt} from \"./math.js\";\nimport noop from \"./noop.js\";\nimport stream from \"./stream.js\";\n\nvar lengthSum = adder(),\n lambda0,\n sinPhi0,\n cosPhi0;\n\nvar lengthStream = {\n sphere: noop,\n point: noop,\n lineStart: lengthLineStart,\n lineEnd: noop,\n polygonStart: noop,\n polygonEnd: noop\n};\n\nfunction lengthLineStart() {\n lengthStream.point = lengthPointFirst;\n lengthStream.lineEnd = lengthLineEnd;\n}\n\nfunction lengthLineEnd() {\n lengthStream.point = lengthStream.lineEnd = noop;\n}\n\nfunction lengthPointFirst(lambda, phi) {\n lambda *= radians, phi *= radians;\n lambda0 = lambda, sinPhi0 = sin(phi), cosPhi0 = cos(phi);\n lengthStream.point = lengthPoint;\n}\n\nfunction lengthPoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n var sinPhi = sin(phi),\n cosPhi = cos(phi),\n delta = abs(lambda - lambda0),\n cosDelta = cos(delta),\n sinDelta = sin(delta),\n x = cosPhi * sinDelta,\n y = cosPhi0 * sinPhi - sinPhi0 * cosPhi * cosDelta,\n z = sinPhi0 * sinPhi + cosPhi0 * cosPhi * cosDelta;\n lengthSum.add(atan2(sqrt(x * x + y * y), z));\n lambda0 = lambda, sinPhi0 = sinPhi, cosPhi0 = cosPhi;\n}\n\nexport default function(object) {\n lengthSum.reset();\n stream(object, lengthStream);\n return +lengthSum;\n}\n","export var epsilon = 1e-6;\nexport var epsilon2 = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var quarterPi = pi / 4;\nexport var tau = pi * 2;\n\nexport var degrees = 180 / pi;\nexport var radians = pi / 180;\n\nexport var abs = Math.abs;\nexport var atan = Math.atan;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var ceil = Math.ceil;\nexport var exp = Math.exp;\nexport var floor = Math.floor;\nexport var log = Math.log;\nexport var pow = Math.pow;\nexport var sin = Math.sin;\nexport var sign = Math.sign || function(x) { return x > 0 ? 1 : x < 0 ? -1 : 0; };\nexport var sqrt = Math.sqrt;\nexport var tan = Math.tan;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x > 1 ? halfPi : x < -1 ? -halfPi : Math.asin(x);\n}\n\nexport function haversin(x) {\n return (x = sin(x / 2)) * x;\n}\n","export default function noop() {}\n","import adder from \"../adder.js\";\nimport {abs} from \"../math.js\";\nimport noop from \"../noop.js\";\n\nvar areaSum = adder(),\n areaRingSum = adder(),\n x00,\n y00,\n x0,\n y0;\n\nvar areaStream = {\n point: noop,\n lineStart: noop,\n lineEnd: noop,\n polygonStart: function() {\n areaStream.lineStart = areaRingStart;\n areaStream.lineEnd = areaRingEnd;\n },\n polygonEnd: function() {\n areaStream.lineStart = areaStream.lineEnd = areaStream.point = noop;\n areaSum.add(abs(areaRingSum));\n areaRingSum.reset();\n },\n result: function() {\n var area = areaSum / 2;\n areaSum.reset();\n return area;\n }\n};\n\nfunction areaRingStart() {\n areaStream.point = areaPointFirst;\n}\n\nfunction areaPointFirst(x, y) {\n areaStream.point = areaPoint;\n x00 = x0 = x, y00 = y0 = y;\n}\n\nfunction areaPoint(x, y) {\n areaRingSum.add(y0 * x - x0 * y);\n x0 = x, y0 = y;\n}\n\nfunction areaRingEnd() {\n areaPoint(x00, y00);\n}\n\nexport default areaStream;\n","import noop from \"../noop.js\";\n\nvar x0 = Infinity,\n y0 = x0,\n x1 = -x0,\n y1 = x1;\n\nvar boundsStream = {\n point: boundsPoint,\n lineStart: noop,\n lineEnd: noop,\n polygonStart: noop,\n polygonEnd: noop,\n result: function() {\n var bounds = [[x0, y0], [x1, y1]];\n x1 = y1 = -(y0 = x0 = Infinity);\n return bounds;\n }\n};\n\nfunction boundsPoint(x, y) {\n if (x < x0) x0 = x;\n if (x > x1) x1 = x;\n if (y < y0) y0 = y;\n if (y > y1) y1 = y;\n}\n\nexport default boundsStream;\n","import {sqrt} from \"../math.js\";\n\n// TODO Enforce positive area for exterior, negative area for interior?\n\nvar X0 = 0,\n Y0 = 0,\n Z0 = 0,\n X1 = 0,\n Y1 = 0,\n Z1 = 0,\n X2 = 0,\n Y2 = 0,\n Z2 = 0,\n x00,\n y00,\n x0,\n y0;\n\nvar centroidStream = {\n point: centroidPoint,\n lineStart: centroidLineStart,\n lineEnd: centroidLineEnd,\n polygonStart: function() {\n centroidStream.lineStart = centroidRingStart;\n centroidStream.lineEnd = centroidRingEnd;\n },\n polygonEnd: function() {\n centroidStream.point = centroidPoint;\n centroidStream.lineStart = centroidLineStart;\n centroidStream.lineEnd = centroidLineEnd;\n },\n result: function() {\n var centroid = Z2 ? [X2 / Z2, Y2 / Z2]\n : Z1 ? [X1 / Z1, Y1 / Z1]\n : Z0 ? [X0 / Z0, Y0 / Z0]\n : [NaN, NaN];\n X0 = Y0 = Z0 =\n X1 = Y1 = Z1 =\n X2 = Y2 = Z2 = 0;\n return centroid;\n }\n};\n\nfunction centroidPoint(x, y) {\n X0 += x;\n Y0 += y;\n ++Z0;\n}\n\nfunction centroidLineStart() {\n centroidStream.point = centroidPointFirstLine;\n}\n\nfunction centroidPointFirstLine(x, y) {\n centroidStream.point = centroidPointLine;\n centroidPoint(x0 = x, y0 = y);\n}\n\nfunction centroidPointLine(x, y) {\n var dx = x - x0, dy = y - y0, z = sqrt(dx * dx + dy * dy);\n X1 += z * (x0 + x) / 2;\n Y1 += z * (y0 + y) / 2;\n Z1 += z;\n centroidPoint(x0 = x, y0 = y);\n}\n\nfunction centroidLineEnd() {\n centroidStream.point = centroidPoint;\n}\n\nfunction centroidRingStart() {\n centroidStream.point = centroidPointFirstRing;\n}\n\nfunction centroidRingEnd() {\n centroidPointRing(x00, y00);\n}\n\nfunction centroidPointFirstRing(x, y) {\n centroidStream.point = centroidPointRing;\n centroidPoint(x00 = x0 = x, y00 = y0 = y);\n}\n\nfunction centroidPointRing(x, y) {\n var dx = x - x0,\n dy = y - y0,\n z = sqrt(dx * dx + dy * dy);\n\n X1 += z * (x0 + x) / 2;\n Y1 += z * (y0 + y) / 2;\n Z1 += z;\n\n z = y0 * x - x0 * y;\n X2 += z * (x0 + x);\n Y2 += z * (y0 + y);\n Z2 += z * 3;\n centroidPoint(x0 = x, y0 = y);\n}\n\nexport default centroidStream;\n","import {tau} from \"../math.js\";\nimport noop from \"../noop.js\";\n\nexport default function PathContext(context) {\n this._context = context;\n}\n\nPathContext.prototype = {\n _radius: 4.5,\n pointRadius: function(_) {\n return this._radius = _, this;\n },\n polygonStart: function() {\n this._line = 0;\n },\n polygonEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line === 0) this._context.closePath();\n this._point = NaN;\n },\n point: function(x, y) {\n switch (this._point) {\n case 0: {\n this._context.moveTo(x, y);\n this._point = 1;\n break;\n }\n case 1: {\n this._context.lineTo(x, y);\n break;\n }\n default: {\n this._context.moveTo(x + this._radius, y);\n this._context.arc(x, y, this._radius, 0, tau);\n break;\n }\n }\n },\n result: noop\n};\n","import identity from \"../identity.js\";\nimport stream from \"../stream.js\";\nimport pathArea from \"./area.js\";\nimport pathBounds from \"./bounds.js\";\nimport pathCentroid from \"./centroid.js\";\nimport PathContext from \"./context.js\";\nimport pathMeasure from \"./measure.js\";\nimport PathString from \"./string.js\";\n\nexport default function(projection, context) {\n var pointRadius = 4.5,\n projectionStream,\n contextStream;\n\n function path(object) {\n if (object) {\n if (typeof pointRadius === \"function\") contextStream.pointRadius(+pointRadius.apply(this, arguments));\n stream(object, projectionStream(contextStream));\n }\n return contextStream.result();\n }\n\n path.area = function(object) {\n stream(object, projectionStream(pathArea));\n return pathArea.result();\n };\n\n path.measure = function(object) {\n stream(object, projectionStream(pathMeasure));\n return pathMeasure.result();\n };\n\n path.bounds = function(object) {\n stream(object, projectionStream(pathBounds));\n return pathBounds.result();\n };\n\n path.centroid = function(object) {\n stream(object, projectionStream(pathCentroid));\n return pathCentroid.result();\n };\n\n path.projection = function(_) {\n return arguments.length ? (projectionStream = _ == null ? (projection = null, identity) : (projection = _).stream, path) : projection;\n };\n\n path.context = function(_) {\n if (!arguments.length) return context;\n contextStream = _ == null ? (context = null, new PathString) : new PathContext(context = _);\n if (typeof pointRadius !== \"function\") contextStream.pointRadius(pointRadius);\n return path;\n };\n\n path.pointRadius = function(_) {\n if (!arguments.length) return pointRadius;\n pointRadius = typeof _ === \"function\" ? _ : (contextStream.pointRadius(+_), +_);\n return path;\n };\n\n return path.projection(projection).context(context);\n}\n","import adder from \"../adder.js\";\nimport {sqrt} from \"../math.js\";\nimport noop from \"../noop.js\";\n\nvar lengthSum = adder(),\n lengthRing,\n x00,\n y00,\n x0,\n y0;\n\nvar lengthStream = {\n point: noop,\n lineStart: function() {\n lengthStream.point = lengthPointFirst;\n },\n lineEnd: function() {\n if (lengthRing) lengthPoint(x00, y00);\n lengthStream.point = noop;\n },\n polygonStart: function() {\n lengthRing = true;\n },\n polygonEnd: function() {\n lengthRing = null;\n },\n result: function() {\n var length = +lengthSum;\n lengthSum.reset();\n return length;\n }\n};\n\nfunction lengthPointFirst(x, y) {\n lengthStream.point = lengthPoint;\n x00 = x0 = x, y00 = y0 = y;\n}\n\nfunction lengthPoint(x, y) {\n x0 -= x, y0 -= y;\n lengthSum.add(sqrt(x0 * x0 + y0 * y0));\n x0 = x, y0 = y;\n}\n\nexport default lengthStream;\n","export default function PathString() {\n this._string = [];\n}\n\nPathString.prototype = {\n _radius: 4.5,\n _circle: circle(4.5),\n pointRadius: function(_) {\n if ((_ = +_) !== this._radius) this._radius = _, this._circle = null;\n return this;\n },\n polygonStart: function() {\n this._line = 0;\n },\n polygonEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line === 0) this._string.push(\"Z\");\n this._point = NaN;\n },\n point: function(x, y) {\n switch (this._point) {\n case 0: {\n this._string.push(\"M\", x, \",\", y);\n this._point = 1;\n break;\n }\n case 1: {\n this._string.push(\"L\", x, \",\", y);\n break;\n }\n default: {\n if (this._circle == null) this._circle = circle(this._radius);\n this._string.push(\"M\", x, \",\", y, this._circle);\n break;\n }\n }\n },\n result: function() {\n if (this._string.length) {\n var result = this._string.join(\"\");\n this._string = [];\n return result;\n } else {\n return null;\n }\n }\n};\n\nfunction circle(radius) {\n return \"m0,\" + radius\n + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + -2 * radius\n + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + 2 * radius\n + \"z\";\n}\n","import {abs, epsilon} from \"./math.js\";\n\nexport default function(a, b) {\n return abs(a[0] - b[0]) < epsilon && abs(a[1] - b[1]) < epsilon;\n}\n","import adder from \"./adder.js\";\nimport {cartesian, cartesianCross, cartesianNormalizeInPlace} from \"./cartesian.js\";\nimport {abs, asin, atan2, cos, epsilon, halfPi, pi, quarterPi, sign, sin, tau} from \"./math.js\";\n\nvar sum = adder();\n\nfunction longitude(point) {\n if (abs(point[0]) <= pi)\n return point[0];\n else\n return sign(point[0]) * ((abs(point[0]) + pi) % tau - pi);\n}\n\nexport default function(polygon, point) {\n var lambda = longitude(point),\n phi = point[1],\n sinPhi = sin(phi),\n normal = [sin(lambda), -cos(lambda), 0],\n angle = 0,\n winding = 0;\n\n sum.reset();\n\n if (sinPhi === 1) phi = halfPi + epsilon;\n else if (sinPhi === -1) phi = -halfPi - epsilon;\n\n for (var i = 0, n = polygon.length; i < n; ++i) {\n if (!(m = (ring = polygon[i]).length)) continue;\n var ring,\n m,\n point0 = ring[m - 1],\n lambda0 = longitude(point0),\n phi0 = point0[1] / 2 + quarterPi,\n sinPhi0 = sin(phi0),\n cosPhi0 = cos(phi0);\n\n for (var j = 0; j < m; ++j, lambda0 = lambda1, sinPhi0 = sinPhi1, cosPhi0 = cosPhi1, point0 = point1) {\n var point1 = ring[j],\n lambda1 = longitude(point1),\n phi1 = point1[1] / 2 + quarterPi,\n sinPhi1 = sin(phi1),\n cosPhi1 = cos(phi1),\n delta = lambda1 - lambda0,\n sign = delta >= 0 ? 1 : -1,\n absDelta = sign * delta,\n antimeridian = absDelta > pi,\n k = sinPhi0 * sinPhi1;\n\n sum.add(atan2(k * sign * sin(absDelta), cosPhi0 * cosPhi1 + k * cos(absDelta)));\n angle += antimeridian ? delta + sign * tau : delta;\n\n // Are the longitudes either side of the point’s meridian (lambda),\n // and are the latitudes smaller than the parallel (phi)?\n if (antimeridian ^ lambda0 >= lambda ^ lambda1 >= lambda) {\n var arc = cartesianCross(cartesian(point0), cartesian(point1));\n cartesianNormalizeInPlace(arc);\n var intersection = cartesianCross(normal, arc);\n cartesianNormalizeInPlace(intersection);\n var phiArc = (antimeridian ^ delta >= 0 ? -1 : 1) * asin(intersection[2]);\n if (phi > phiArc || phi === phiArc && (arc[0] || arc[1])) {\n winding += antimeridian ^ delta >= 0 ? 1 : -1;\n }\n }\n }\n }\n\n // First, determine whether the South pole is inside or outside:\n //\n // It is inside if:\n // * the polygon winds around it in a clockwise direction.\n // * the polygon does not (cumulatively) wind around it, but has a negative\n // (counter-clockwise) area.\n //\n // Second, count the (signed) number of times a segment crosses a lambda\n // from the point to the South pole. If it is zero, then the point is the\n // same side as the South pole.\n\n return (angle < -epsilon || angle < epsilon && sum < -epsilon) ^ (winding & 1);\n}\n","import conicEqualArea from \"./conicEqualArea.js\";\n\nexport default function() {\n return conicEqualArea()\n .parallels([29.5, 45.5])\n .scale(1070)\n .translate([480, 250])\n .rotate([96, 0])\n .center([-0.6, 38.7]);\n}\n","import {epsilon} from \"../math.js\";\nimport albers from \"./albers.js\";\nimport conicEqualArea from \"./conicEqualArea.js\";\nimport {fitExtent, fitSize, fitWidth, fitHeight} from \"./fit.js\";\n\n// The projections must have mutually exclusive clip regions on the sphere,\n// as this will avoid emitting interleaving lines and polygons.\nfunction multiplex(streams) {\n var n = streams.length;\n return {\n point: function(x, y) { var i = -1; while (++i < n) streams[i].point(x, y); },\n sphere: function() { var i = -1; while (++i < n) streams[i].sphere(); },\n lineStart: function() { var i = -1; while (++i < n) streams[i].lineStart(); },\n lineEnd: function() { var i = -1; while (++i < n) streams[i].lineEnd(); },\n polygonStart: function() { var i = -1; while (++i < n) streams[i].polygonStart(); },\n polygonEnd: function() { var i = -1; while (++i < n) streams[i].polygonEnd(); }\n };\n}\n\n// A composite projection for the United States, configured by default for\n// 960×500. The projection also works quite well at 960×600 if you change the\n// scale to 1285 and adjust the translate accordingly. The set of standard\n// parallels for each region comes from USGS, which is published here:\n// http://egsc.usgs.gov/isb/pubs/MapProjections/projections.html#albers\nexport default function() {\n var cache,\n cacheStream,\n lower48 = albers(), lower48Point,\n alaska = conicEqualArea().rotate([154, 0]).center([-2, 58.5]).parallels([55, 65]), alaskaPoint, // EPSG:3338\n hawaii = conicEqualArea().rotate([157, 0]).center([-3, 19.9]).parallels([8, 18]), hawaiiPoint, // ESRI:102007\n point, pointStream = {point: function(x, y) { point = [x, y]; }};\n\n function albersUsa(coordinates) {\n var x = coordinates[0], y = coordinates[1];\n return point = null,\n (lower48Point.point(x, y), point)\n || (alaskaPoint.point(x, y), point)\n || (hawaiiPoint.point(x, y), point);\n }\n\n albersUsa.invert = function(coordinates) {\n var k = lower48.scale(),\n t = lower48.translate(),\n x = (coordinates[0] - t[0]) / k,\n y = (coordinates[1] - t[1]) / k;\n return (y >= 0.120 && y < 0.234 && x >= -0.425 && x < -0.214 ? alaska\n : y >= 0.166 && y < 0.234 && x >= -0.214 && x < -0.115 ? hawaii\n : lower48).invert(coordinates);\n };\n\n albersUsa.stream = function(stream) {\n return cache && cacheStream === stream ? cache : cache = multiplex([lower48.stream(cacheStream = stream), alaska.stream(stream), hawaii.stream(stream)]);\n };\n\n albersUsa.precision = function(_) {\n if (!arguments.length) return lower48.precision();\n lower48.precision(_), alaska.precision(_), hawaii.precision(_);\n return reset();\n };\n\n albersUsa.scale = function(_) {\n if (!arguments.length) return lower48.scale();\n lower48.scale(_), alaska.scale(_ * 0.35), hawaii.scale(_);\n return albersUsa.translate(lower48.translate());\n };\n\n albersUsa.translate = function(_) {\n if (!arguments.length) return lower48.translate();\n var k = lower48.scale(), x = +_[0], y = +_[1];\n\n lower48Point = lower48\n .translate(_)\n .clipExtent([[x - 0.455 * k, y - 0.238 * k], [x + 0.455 * k, y + 0.238 * k]])\n .stream(pointStream);\n\n alaskaPoint = alaska\n .translate([x - 0.307 * k, y + 0.201 * k])\n .clipExtent([[x - 0.425 * k + epsilon, y + 0.120 * k + epsilon], [x - 0.214 * k - epsilon, y + 0.234 * k - epsilon]])\n .stream(pointStream);\n\n hawaiiPoint = hawaii\n .translate([x - 0.205 * k, y + 0.212 * k])\n .clipExtent([[x - 0.214 * k + epsilon, y + 0.166 * k + epsilon], [x - 0.115 * k - epsilon, y + 0.234 * k - epsilon]])\n .stream(pointStream);\n\n return reset();\n };\n\n albersUsa.fitExtent = function(extent, object) {\n return fitExtent(albersUsa, extent, object);\n };\n\n albersUsa.fitSize = function(size, object) {\n return fitSize(albersUsa, size, object);\n };\n\n albersUsa.fitWidth = function(width, object) {\n return fitWidth(albersUsa, width, object);\n };\n\n albersUsa.fitHeight = function(height, object) {\n return fitHeight(albersUsa, height, object);\n };\n\n function reset() {\n cache = cacheStream = null;\n return albersUsa;\n }\n\n return albersUsa.scale(1070);\n}\n","import {asin, atan2, cos, sin, sqrt} from \"../math.js\";\n\nexport function azimuthalRaw(scale) {\n return function(x, y) {\n var cx = cos(x),\n cy = cos(y),\n k = scale(cx * cy);\n return [\n k * cy * sin(x),\n k * sin(y)\n ];\n }\n}\n\nexport function azimuthalInvert(angle) {\n return function(x, y) {\n var z = sqrt(x * x + y * y),\n c = angle(z),\n sc = sin(c),\n cc = cos(c);\n return [\n atan2(x * sc, z * cc),\n asin(z && y * sc / z)\n ];\n }\n}\n","import {asin, sqrt} from \"../math.js\";\nimport {azimuthalRaw, azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport var azimuthalEqualAreaRaw = azimuthalRaw(function(cxcy) {\n return sqrt(2 / (1 + cxcy));\n});\n\nazimuthalEqualAreaRaw.invert = azimuthalInvert(function(z) {\n return 2 * asin(z / 2);\n});\n\nexport default function() {\n return projection(azimuthalEqualAreaRaw)\n .scale(124.75)\n .clipAngle(180 - 1e-3);\n}\n","import {acos, sin} from \"../math.js\";\nimport {azimuthalRaw, azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport var azimuthalEquidistantRaw = azimuthalRaw(function(c) {\n return (c = acos(c)) && c / sin(c);\n});\n\nazimuthalEquidistantRaw.invert = azimuthalInvert(function(z) {\n return z;\n});\n\nexport default function() {\n return projection(azimuthalEquidistantRaw)\n .scale(79.4188)\n .clipAngle(180 - 1e-3);\n}\n","import {degrees, pi, radians} from \"../math.js\";\nimport {projectionMutator} from \"./index.js\";\n\nexport function conicProjection(projectAt) {\n var phi0 = 0,\n phi1 = pi / 3,\n m = projectionMutator(projectAt),\n p = m(phi0, phi1);\n\n p.parallels = function(_) {\n return arguments.length ? m(phi0 = _[0] * radians, phi1 = _[1] * radians) : [phi0 * degrees, phi1 * degrees];\n };\n\n return p;\n}\n","import {abs, atan, atan2, cos, epsilon, halfPi, log, pow, sign, sin, sqrt, tan} from \"../math.js\";\nimport {conicProjection} from \"./conic.js\";\nimport {mercatorRaw} from \"./mercator.js\";\n\nfunction tany(y) {\n return tan((halfPi + y) / 2);\n}\n\nexport function conicConformalRaw(y0, y1) {\n var cy0 = cos(y0),\n n = y0 === y1 ? sin(y0) : log(cy0 / cos(y1)) / log(tany(y1) / tany(y0)),\n f = cy0 * pow(tany(y0), n) / n;\n\n if (!n) return mercatorRaw;\n\n function project(x, y) {\n if (f > 0) { if (y < -halfPi + epsilon) y = -halfPi + epsilon; }\n else { if (y > halfPi - epsilon) y = halfPi - epsilon; }\n var r = f / pow(tany(y), n);\n return [r * sin(n * x), f - r * cos(n * x)];\n }\n\n project.invert = function(x, y) {\n var fy = f - y, r = sign(n) * sqrt(x * x + fy * fy);\n return [atan2(x, abs(fy)) / n * sign(fy), 2 * atan(pow(f / r, 1 / n)) - halfPi];\n };\n\n return project;\n}\n\nexport default function() {\n return conicProjection(conicConformalRaw)\n .scale(109.5)\n .parallels([30, 30]);\n}\n","import {abs, asin, atan2, cos, epsilon, sign, sin, sqrt} from \"../math.js\";\nimport {conicProjection} from \"./conic.js\";\nimport {cylindricalEqualAreaRaw} from \"./cylindricalEqualArea.js\";\n\nexport function conicEqualAreaRaw(y0, y1) {\n var sy0 = sin(y0), n = (sy0 + sin(y1)) / 2;\n\n // Are the parallels symmetrical around the Equator?\n if (abs(n) < epsilon) return cylindricalEqualAreaRaw(y0);\n\n var c = 1 + sy0 * (2 * n - sy0), r0 = sqrt(c) / n;\n\n function project(x, y) {\n var r = sqrt(c - 2 * n * sin(y)) / n;\n return [r * sin(x *= n), r0 - r * cos(x)];\n }\n\n project.invert = function(x, y) {\n var r0y = r0 - y;\n return [atan2(x, abs(r0y)) / n * sign(r0y), asin((c - (x * x + r0y * r0y) * n * n) / (2 * n))];\n };\n\n return project;\n}\n\nexport default function() {\n return conicProjection(conicEqualAreaRaw)\n .scale(155.424)\n .center([0, 33.6442]);\n}\n","import {abs, atan2, cos, epsilon, sign, sin, sqrt} from \"../math.js\";\nimport {conicProjection} from \"./conic.js\";\nimport {equirectangularRaw} from \"./equirectangular.js\";\n\nexport function conicEquidistantRaw(y0, y1) {\n var cy0 = cos(y0),\n n = y0 === y1 ? sin(y0) : (cy0 - cos(y1)) / (y1 - y0),\n g = cy0 / n + y0;\n\n if (abs(n) < epsilon) return equirectangularRaw;\n\n function project(x, y) {\n var gy = g - y, nx = n * x;\n return [gy * sin(nx), g - gy * cos(nx)];\n }\n\n project.invert = function(x, y) {\n var gy = g - y;\n return [atan2(x, abs(gy)) / n * sign(gy), g - sign(n) * sqrt(x * x + gy * gy)];\n };\n\n return project;\n}\n\nexport default function() {\n return conicProjection(conicEquidistantRaw)\n .scale(131.154)\n .center([0, 13.9389]);\n}\n","import {asin, cos, sin} from \"../math.js\";\n\nexport function cylindricalEqualAreaRaw(phi0) {\n var cosPhi0 = cos(phi0);\n\n function forward(lambda, phi) {\n return [lambda * cosPhi0, sin(phi) / cosPhi0];\n }\n\n forward.invert = function(x, y) {\n return [x / cosPhi0, asin(y * cosPhi0)];\n };\n\n return forward;\n}\n","import projection from \"./index.js\";\nimport {abs, asin, cos, epsilon2, sin, sqrt} from \"../math.js\";\n\nvar A1 = 1.340264,\n A2 = -0.081106,\n A3 = 0.000893,\n A4 = 0.003796,\n M = sqrt(3) / 2,\n iterations = 12;\n\nexport function equalEarthRaw(lambda, phi) {\n var l = asin(M * sin(phi)), l2 = l * l, l6 = l2 * l2 * l2;\n return [\n lambda * cos(l) / (M * (A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2))),\n l * (A1 + A2 * l2 + l6 * (A3 + A4 * l2))\n ];\n}\n\nequalEarthRaw.invert = function(x, y) {\n var l = y, l2 = l * l, l6 = l2 * l2 * l2;\n for (var i = 0, delta, fy, fpy; i < iterations; ++i) {\n fy = l * (A1 + A2 * l2 + l6 * (A3 + A4 * l2)) - y;\n fpy = A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2);\n l -= delta = fy / fpy, l2 = l * l, l6 = l2 * l2 * l2;\n if (abs(delta) < epsilon2) break;\n }\n return [\n M * x * (A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2)) / cos(l),\n asin(sin(l) / M)\n ];\n};\n\nexport default function() {\n return projection(equalEarthRaw)\n .scale(177.158);\n}\n","import projection from \"./index.js\";\n\nexport function equirectangularRaw(lambda, phi) {\n return [lambda, phi];\n}\n\nequirectangularRaw.invert = equirectangularRaw;\n\nexport default function() {\n return projection(equirectangularRaw)\n .scale(152.63);\n}\n","import {default as geoStream} from \"../stream.js\";\nimport boundsStream from \"../path/bounds.js\";\n\nfunction fit(projection, fitBounds, object) {\n var clip = projection.clipExtent && projection.clipExtent();\n projection.scale(150).translate([0, 0]);\n if (clip != null) projection.clipExtent(null);\n geoStream(object, projection.stream(boundsStream));\n fitBounds(boundsStream.result());\n if (clip != null) projection.clipExtent(clip);\n return projection;\n}\n\nexport function fitExtent(projection, extent, object) {\n return fit(projection, function(b) {\n var w = extent[1][0] - extent[0][0],\n h = extent[1][1] - extent[0][1],\n k = Math.min(w / (b[1][0] - b[0][0]), h / (b[1][1] - b[0][1])),\n x = +extent[0][0] + (w - k * (b[1][0] + b[0][0])) / 2,\n y = +extent[0][1] + (h - k * (b[1][1] + b[0][1])) / 2;\n projection.scale(150 * k).translate([x, y]);\n }, object);\n}\n\nexport function fitSize(projection, size, object) {\n return fitExtent(projection, [[0, 0], size], object);\n}\n\nexport function fitWidth(projection, width, object) {\n return fit(projection, function(b) {\n var w = +width,\n k = w / (b[1][0] - b[0][0]),\n x = (w - k * (b[1][0] + b[0][0])) / 2,\n y = -k * b[0][1];\n projection.scale(150 * k).translate([x, y]);\n }, object);\n}\n\nexport function fitHeight(projection, height, object) {\n return fit(projection, function(b) {\n var h = +height,\n k = h / (b[1][1] - b[0][1]),\n x = -k * b[0][0],\n y = (h - k * (b[1][1] + b[0][1])) / 2;\n projection.scale(150 * k).translate([x, y]);\n }, object);\n}\n","import {atan, cos, sin} from \"../math.js\";\nimport {azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport function gnomonicRaw(x, y) {\n var cy = cos(y), k = cos(x) * cy;\n return [cy * sin(x) / k, sin(y) / k];\n}\n\ngnomonicRaw.invert = azimuthalInvert(atan);\n\nexport default function() {\n return projection(gnomonicRaw)\n .scale(144.049)\n .clipAngle(60);\n}\n","import clipRectangle from \"../clip/rectangle.js\";\nimport identity from \"../identity.js\";\nimport {transformer} from \"../transform.js\";\nimport {fitExtent, fitSize, fitWidth, fitHeight} from \"./fit.js\";\n\nfunction scaleTranslate(kx, ky, tx, ty) {\n return kx === 1 && ky === 1 && tx === 0 && ty === 0 ? identity : transformer({\n point: function(x, y) {\n this.stream.point(x * kx + tx, y * ky + ty);\n }\n });\n}\n\nexport default function() {\n var k = 1, tx = 0, ty = 0, sx = 1, sy = 1, transform = identity, // scale, translate and reflect\n x0 = null, y0, x1, y1, // clip extent\n postclip = identity,\n cache,\n cacheStream,\n projection;\n\n function reset() {\n cache = cacheStream = null;\n return projection;\n }\n\n return projection = {\n stream: function(stream) {\n return cache && cacheStream === stream ? cache : cache = transform(postclip(cacheStream = stream));\n },\n postclip: function(_) {\n return arguments.length ? (postclip = _, x0 = y0 = x1 = y1 = null, reset()) : postclip;\n },\n clipExtent: function(_) {\n return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, identity) : clipRectangle(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n },\n scale: function(_) {\n return arguments.length ? (transform = scaleTranslate((k = +_) * sx, k * sy, tx, ty), reset()) : k;\n },\n translate: function(_) {\n return arguments.length ? (transform = scaleTranslate(k * sx, k * sy, tx = +_[0], ty = +_[1]), reset()) : [tx, ty];\n },\n reflectX: function(_) {\n return arguments.length ? (transform = scaleTranslate(k * (sx = _ ? -1 : 1), k * sy, tx, ty), reset()) : sx < 0;\n },\n reflectY: function(_) {\n return arguments.length ? (transform = scaleTranslate(k * sx, k * (sy = _ ? -1 : 1), tx, ty), reset()) : sy < 0;\n },\n fitExtent: function(extent, object) {\n return fitExtent(projection, extent, object);\n },\n fitSize: function(size, object) {\n return fitSize(projection, size, object);\n },\n fitWidth: function(width, object) {\n return fitWidth(projection, width, object);\n },\n fitHeight: function(height, object) {\n return fitHeight(projection, height, object);\n }\n };\n}\n","import clipAntimeridian from \"../clip/antimeridian.js\";\nimport clipCircle from \"../clip/circle.js\";\nimport clipRectangle from \"../clip/rectangle.js\";\nimport compose from \"../compose.js\";\nimport identity from \"../identity.js\";\nimport {cos, degrees, radians, sin, sqrt} from \"../math.js\";\nimport {rotateRadians} from \"../rotation.js\";\nimport {transformer} from \"../transform.js\";\nimport {fitExtent, fitSize, fitWidth, fitHeight} from \"./fit.js\";\nimport resample from \"./resample.js\";\n\nvar transformRadians = transformer({\n point: function(x, y) {\n this.stream.point(x * radians, y * radians);\n }\n});\n\nfunction transformRotate(rotate) {\n return transformer({\n point: function(x, y) {\n var r = rotate(x, y);\n return this.stream.point(r[0], r[1]);\n }\n });\n}\n\nfunction scaleTranslate(k, dx, dy) {\n function transform(x, y) {\n return [dx + k * x, dy - k * y];\n }\n transform.invert = function(x, y) {\n return [(x - dx) / k, (dy - y) / k];\n };\n return transform;\n}\n\nfunction scaleTranslateRotate(k, dx, dy, alpha) {\n var cosAlpha = cos(alpha),\n sinAlpha = sin(alpha),\n a = cosAlpha * k,\n b = sinAlpha * k,\n ai = cosAlpha / k,\n bi = sinAlpha / k,\n ci = (sinAlpha * dy - cosAlpha * dx) / k,\n fi = (sinAlpha * dx + cosAlpha * dy) / k;\n function transform(x, y) {\n return [a * x - b * y + dx, dy - b * x - a * y];\n }\n transform.invert = function(x, y) {\n return [ai * x - bi * y + ci, fi - bi * x - ai * y];\n };\n return transform;\n}\n\nexport default function projection(project) {\n return projectionMutator(function() { return project; })();\n}\n\nexport function projectionMutator(projectAt) {\n var project,\n k = 150, // scale\n x = 480, y = 250, // translate\n lambda = 0, phi = 0, // center\n deltaLambda = 0, deltaPhi = 0, deltaGamma = 0, rotate, // pre-rotate\n alpha = 0, // post-rotate\n theta = null, preclip = clipAntimeridian, // pre-clip angle\n x0 = null, y0, x1, y1, postclip = identity, // post-clip extent\n delta2 = 0.5, // precision\n projectResample,\n projectTransform,\n projectRotateTransform,\n cache,\n cacheStream;\n\n function projection(point) {\n return projectRotateTransform(point[0] * radians, point[1] * radians);\n }\n\n function invert(point) {\n point = projectRotateTransform.invert(point[0], point[1]);\n return point && [point[0] * degrees, point[1] * degrees];\n }\n\n projection.stream = function(stream) {\n return cache && cacheStream === stream ? cache : cache = transformRadians(transformRotate(rotate)(preclip(projectResample(postclip(cacheStream = stream)))));\n };\n\n projection.preclip = function(_) {\n return arguments.length ? (preclip = _, theta = undefined, reset()) : preclip;\n };\n\n projection.postclip = function(_) {\n return arguments.length ? (postclip = _, x0 = y0 = x1 = y1 = null, reset()) : postclip;\n };\n\n projection.clipAngle = function(_) {\n return arguments.length ? (preclip = +_ ? clipCircle(theta = _ * radians) : (theta = null, clipAntimeridian), reset()) : theta * degrees;\n };\n\n projection.clipExtent = function(_) {\n return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, identity) : clipRectangle(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n };\n\n projection.scale = function(_) {\n return arguments.length ? (k = +_, recenter()) : k;\n };\n\n projection.translate = function(_) {\n return arguments.length ? (x = +_[0], y = +_[1], recenter()) : [x, y];\n };\n\n projection.center = function(_) {\n return arguments.length ? (lambda = _[0] % 360 * radians, phi = _[1] % 360 * radians, recenter()) : [lambda * degrees, phi * degrees];\n };\n\n projection.rotate = function(_) {\n return arguments.length ? (deltaLambda = _[0] % 360 * radians, deltaPhi = _[1] % 360 * radians, deltaGamma = _.length > 2 ? _[2] % 360 * radians : 0, recenter()) : [deltaLambda * degrees, deltaPhi * degrees, deltaGamma * degrees];\n };\n\n projection.angle = function(_) {\n return arguments.length ? (alpha = _ % 360 * radians, recenter()) : alpha * degrees;\n };\n\n projection.precision = function(_) {\n return arguments.length ? (projectResample = resample(projectTransform, delta2 = _ * _), reset()) : sqrt(delta2);\n };\n\n projection.fitExtent = function(extent, object) {\n return fitExtent(projection, extent, object);\n };\n\n projection.fitSize = function(size, object) {\n return fitSize(projection, size, object);\n };\n\n projection.fitWidth = function(width, object) {\n return fitWidth(projection, width, object);\n };\n\n projection.fitHeight = function(height, object) {\n return fitHeight(projection, height, object);\n };\n\n function recenter() {\n var center = scaleTranslateRotate(k, 0, 0, alpha).apply(null, project(lambda, phi)),\n transform = (alpha ? scaleTranslateRotate : scaleTranslate)(k, x - center[0], y - center[1], alpha);\n rotate = rotateRadians(deltaLambda, deltaPhi, deltaGamma);\n projectTransform = compose(project, transform);\n projectRotateTransform = compose(rotate, projectTransform);\n projectResample = resample(projectTransform, delta2);\n return reset();\n }\n\n function reset() {\n cache = cacheStream = null;\n return projection;\n }\n\n return function() {\n project = projectAt.apply(this, arguments);\n projection.invert = project.invert && invert;\n return recenter();\n };\n}\n","import {atan, exp, halfPi, log, pi, tan, tau} from \"../math.js\";\nimport rotation from \"../rotation.js\";\nimport projection from \"./index.js\";\n\nexport function mercatorRaw(lambda, phi) {\n return [lambda, log(tan((halfPi + phi) / 2))];\n}\n\nmercatorRaw.invert = function(x, y) {\n return [x, 2 * atan(exp(y)) - halfPi];\n};\n\nexport default function() {\n return mercatorProjection(mercatorRaw)\n .scale(961 / tau);\n}\n\nexport function mercatorProjection(project) {\n var m = projection(project),\n center = m.center,\n scale = m.scale,\n translate = m.translate,\n clipExtent = m.clipExtent,\n x0 = null, y0, x1, y1; // clip extent\n\n m.scale = function(_) {\n return arguments.length ? (scale(_), reclip()) : scale();\n };\n\n m.translate = function(_) {\n return arguments.length ? (translate(_), reclip()) : translate();\n };\n\n m.center = function(_) {\n return arguments.length ? (center(_), reclip()) : center();\n };\n\n m.clipExtent = function(_) {\n return arguments.length ? ((_ == null ? x0 = y0 = x1 = y1 = null : (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1])), reclip()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n };\n\n function reclip() {\n var k = pi * scale(),\n t = m(rotation(m.rotate()).invert([0, 0]));\n return clipExtent(x0 == null\n ? [[t[0] - k, t[1] - k], [t[0] + k, t[1] + k]] : project === mercatorRaw\n ? [[Math.max(t[0] - k, x0), y0], [Math.min(t[0] + k, x1), y1]]\n : [[x0, Math.max(t[1] - k, y0)], [x1, Math.min(t[1] + k, y1)]]);\n }\n\n return reclip();\n}\n","import projection from \"./index.js\";\nimport {abs, epsilon} from \"../math.js\";\n\nexport function naturalEarth1Raw(lambda, phi) {\n var phi2 = phi * phi, phi4 = phi2 * phi2;\n return [\n lambda * (0.8707 - 0.131979 * phi2 + phi4 * (-0.013791 + phi4 * (0.003971 * phi2 - 0.001529 * phi4))),\n phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4)))\n ];\n}\n\nnaturalEarth1Raw.invert = function(x, y) {\n var phi = y, i = 25, delta;\n do {\n var phi2 = phi * phi, phi4 = phi2 * phi2;\n phi -= delta = (phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4))) - y) /\n (1.007226 + phi2 * (0.015085 * 3 + phi4 * (-0.044475 * 7 + 0.028874 * 9 * phi2 - 0.005916 * 11 * phi4)));\n } while (abs(delta) > epsilon && --i > 0);\n return [\n x / (0.8707 + (phi2 = phi * phi) * (-0.131979 + phi2 * (-0.013791 + phi2 * phi2 * phi2 * (0.003971 - 0.001529 * phi2)))),\n phi\n ];\n};\n\nexport default function() {\n return projection(naturalEarth1Raw)\n .scale(175.295);\n}\n","import {asin, cos, epsilon, sin} from \"../math.js\";\nimport {azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport function orthographicRaw(x, y) {\n return [cos(y) * sin(x), sin(y)];\n}\n\northographicRaw.invert = azimuthalInvert(asin);\n\nexport default function() {\n return projection(orthographicRaw)\n .scale(249.5)\n .clipAngle(90 + epsilon);\n}\n","import {cartesian} from \"../cartesian.js\";\nimport {abs, asin, atan2, cos, epsilon, radians, sqrt} from \"../math.js\";\nimport {transformer} from \"../transform.js\";\n\nvar maxDepth = 16, // maximum depth of subdivision\n cosMinDistance = cos(30 * radians); // cos(minimum angular distance)\n\nexport default function(project, delta2) {\n return +delta2 ? resample(project, delta2) : resampleNone(project);\n}\n\nfunction resampleNone(project) {\n return transformer({\n point: function(x, y) {\n x = project(x, y);\n this.stream.point(x[0], x[1]);\n }\n });\n}\n\nfunction resample(project, delta2) {\n\n function resampleLineTo(x0, y0, lambda0, a0, b0, c0, x1, y1, lambda1, a1, b1, c1, depth, stream) {\n var dx = x1 - x0,\n dy = y1 - y0,\n d2 = dx * dx + dy * dy;\n if (d2 > 4 * delta2 && depth--) {\n var a = a0 + a1,\n b = b0 + b1,\n c = c0 + c1,\n m = sqrt(a * a + b * b + c * c),\n phi2 = asin(c /= m),\n lambda2 = abs(abs(c) - 1) < epsilon || abs(lambda0 - lambda1) < epsilon ? (lambda0 + lambda1) / 2 : atan2(b, a),\n p = project(lambda2, phi2),\n x2 = p[0],\n y2 = p[1],\n dx2 = x2 - x0,\n dy2 = y2 - y0,\n dz = dy * dx2 - dx * dy2;\n if (dz * dz / d2 > delta2 // perpendicular projected distance\n || abs((dx * dx2 + dy * dy2) / d2 - 0.5) > 0.3 // midpoint close to an end\n || a0 * a1 + b0 * b1 + c0 * c1 < cosMinDistance) { // angular distance\n resampleLineTo(x0, y0, lambda0, a0, b0, c0, x2, y2, lambda2, a /= m, b /= m, c, depth, stream);\n stream.point(x2, y2);\n resampleLineTo(x2, y2, lambda2, a, b, c, x1, y1, lambda1, a1, b1, c1, depth, stream);\n }\n }\n }\n return function(stream) {\n var lambda00, x00, y00, a00, b00, c00, // first point\n lambda0, x0, y0, a0, b0, c0; // previous point\n\n var resampleStream = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function() { stream.polygonStart(); resampleStream.lineStart = ringStart; },\n polygonEnd: function() { stream.polygonEnd(); resampleStream.lineStart = lineStart; }\n };\n\n function point(x, y) {\n x = project(x, y);\n stream.point(x[0], x[1]);\n }\n\n function lineStart() {\n x0 = NaN;\n resampleStream.point = linePoint;\n stream.lineStart();\n }\n\n function linePoint(lambda, phi) {\n var c = cartesian([lambda, phi]), p = project(lambda, phi);\n resampleLineTo(x0, y0, lambda0, a0, b0, c0, x0 = p[0], y0 = p[1], lambda0 = lambda, a0 = c[0], b0 = c[1], c0 = c[2], maxDepth, stream);\n stream.point(x0, y0);\n }\n\n function lineEnd() {\n resampleStream.point = point;\n stream.lineEnd();\n }\n\n function ringStart() {\n lineStart();\n resampleStream.point = ringPoint;\n resampleStream.lineEnd = ringEnd;\n }\n\n function ringPoint(lambda, phi) {\n linePoint(lambda00 = lambda, phi), x00 = x0, y00 = y0, a00 = a0, b00 = b0, c00 = c0;\n resampleStream.point = linePoint;\n }\n\n function ringEnd() {\n resampleLineTo(x0, y0, lambda0, a0, b0, c0, x00, y00, lambda00, a00, b00, c00, maxDepth, stream);\n resampleStream.lineEnd = lineEnd;\n lineEnd();\n }\n\n return resampleStream;\n };\n}\n","import {atan, cos, sin} from \"../math.js\";\nimport {azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport function stereographicRaw(x, y) {\n var cy = cos(y), k = 1 + cos(x) * cy;\n return [cy * sin(x) / k, sin(y) / k];\n}\n\nstereographicRaw.invert = azimuthalInvert(function(z) {\n return 2 * atan(z);\n});\n\nexport default function() {\n return projection(stereographicRaw)\n .scale(250)\n .clipAngle(142);\n}\n","import {atan, exp, halfPi, log, tan} from \"../math.js\";\nimport {mercatorProjection} from \"./mercator.js\";\n\nexport function transverseMercatorRaw(lambda, phi) {\n return [log(tan((halfPi + phi) / 2)), -lambda];\n}\n\ntransverseMercatorRaw.invert = function(x, y) {\n return [-y, 2 * atan(exp(x)) - halfPi];\n};\n\nexport default function() {\n var m = mercatorProjection(transverseMercatorRaw),\n center = m.center,\n rotate = m.rotate;\n\n m.center = function(_) {\n return arguments.length ? center([-_[1], _[0]]) : (_ = center(), [_[1], -_[0]]);\n };\n\n m.rotate = function(_) {\n return arguments.length ? rotate([_[0], _[1], _.length > 2 ? _[2] + 90 : 90]) : (_ = rotate(), [_[0], _[1], _[2] - 90]);\n };\n\n return rotate([0, 0, 90])\n .scale(159.155);\n}\n","import compose from \"./compose.js\";\nimport {abs, asin, atan2, cos, degrees, pi, radians, sin, tau} from \"./math.js\";\n\nfunction rotationIdentity(lambda, phi) {\n return [abs(lambda) > pi ? lambda + Math.round(-lambda / tau) * tau : lambda, phi];\n}\n\nrotationIdentity.invert = rotationIdentity;\n\nexport function rotateRadians(deltaLambda, deltaPhi, deltaGamma) {\n return (deltaLambda %= tau) ? (deltaPhi || deltaGamma ? compose(rotationLambda(deltaLambda), rotationPhiGamma(deltaPhi, deltaGamma))\n : rotationLambda(deltaLambda))\n : (deltaPhi || deltaGamma ? rotationPhiGamma(deltaPhi, deltaGamma)\n : rotationIdentity);\n}\n\nfunction forwardRotationLambda(deltaLambda) {\n return function(lambda, phi) {\n return lambda += deltaLambda, [lambda > pi ? lambda - tau : lambda < -pi ? lambda + tau : lambda, phi];\n };\n}\n\nfunction rotationLambda(deltaLambda) {\n var rotation = forwardRotationLambda(deltaLambda);\n rotation.invert = forwardRotationLambda(-deltaLambda);\n return rotation;\n}\n\nfunction rotationPhiGamma(deltaPhi, deltaGamma) {\n var cosDeltaPhi = cos(deltaPhi),\n sinDeltaPhi = sin(deltaPhi),\n cosDeltaGamma = cos(deltaGamma),\n sinDeltaGamma = sin(deltaGamma);\n\n function rotation(lambda, phi) {\n var cosPhi = cos(phi),\n x = cos(lambda) * cosPhi,\n y = sin(lambda) * cosPhi,\n z = sin(phi),\n k = z * cosDeltaPhi + x * sinDeltaPhi;\n return [\n atan2(y * cosDeltaGamma - k * sinDeltaGamma, x * cosDeltaPhi - z * sinDeltaPhi),\n asin(k * cosDeltaGamma + y * sinDeltaGamma)\n ];\n }\n\n rotation.invert = function(lambda, phi) {\n var cosPhi = cos(phi),\n x = cos(lambda) * cosPhi,\n y = sin(lambda) * cosPhi,\n z = sin(phi),\n k = z * cosDeltaGamma - y * sinDeltaGamma;\n return [\n atan2(y * cosDeltaGamma + z * sinDeltaGamma, x * cosDeltaPhi + k * sinDeltaPhi),\n asin(k * cosDeltaPhi - x * sinDeltaPhi)\n ];\n };\n\n return rotation;\n}\n\nexport default function(rotate) {\n rotate = rotateRadians(rotate[0] * radians, rotate[1] * radians, rotate.length > 2 ? rotate[2] * radians : 0);\n\n function forward(coordinates) {\n coordinates = rotate(coordinates[0] * radians, coordinates[1] * radians);\n return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates;\n }\n\n forward.invert = function(coordinates) {\n coordinates = rotate.invert(coordinates[0] * radians, coordinates[1] * radians);\n return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates;\n };\n\n return forward;\n}\n","function streamGeometry(geometry, stream) {\n if (geometry && streamGeometryType.hasOwnProperty(geometry.type)) {\n streamGeometryType[geometry.type](geometry, stream);\n }\n}\n\nvar streamObjectType = {\n Feature: function(object, stream) {\n streamGeometry(object.geometry, stream);\n },\n FeatureCollection: function(object, stream) {\n var features = object.features, i = -1, n = features.length;\n while (++i < n) streamGeometry(features[i].geometry, stream);\n }\n};\n\nvar streamGeometryType = {\n Sphere: function(object, stream) {\n stream.sphere();\n },\n Point: function(object, stream) {\n object = object.coordinates;\n stream.point(object[0], object[1], object[2]);\n },\n MultiPoint: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) object = coordinates[i], stream.point(object[0], object[1], object[2]);\n },\n LineString: function(object, stream) {\n streamLine(object.coordinates, stream, 0);\n },\n MultiLineString: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) streamLine(coordinates[i], stream, 0);\n },\n Polygon: function(object, stream) {\n streamPolygon(object.coordinates, stream);\n },\n MultiPolygon: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) streamPolygon(coordinates[i], stream);\n },\n GeometryCollection: function(object, stream) {\n var geometries = object.geometries, i = -1, n = geometries.length;\n while (++i < n) streamGeometry(geometries[i], stream);\n }\n};\n\nfunction streamLine(coordinates, stream, closed) {\n var i = -1, n = coordinates.length - closed, coordinate;\n stream.lineStart();\n while (++i < n) coordinate = coordinates[i], stream.point(coordinate[0], coordinate[1], coordinate[2]);\n stream.lineEnd();\n}\n\nfunction streamPolygon(coordinates, stream) {\n var i = -1, n = coordinates.length;\n stream.polygonStart();\n while (++i < n) streamLine(coordinates[i], stream, 1);\n stream.polygonEnd();\n}\n\nexport default function(object, stream) {\n if (object && streamObjectType.hasOwnProperty(object.type)) {\n streamObjectType[object.type](object, stream);\n } else {\n streamGeometry(object, stream);\n }\n}\n","export default function(methods) {\n return {\n stream: transformer(methods)\n };\n}\n\nexport function transformer(methods) {\n return function(stream) {\n var s = new TransformStream;\n for (var key in methods) s[key] = methods[key];\n s.stream = stream;\n return s;\n };\n}\n\nfunction TransformStream() {}\n\nTransformStream.prototype = {\n constructor: TransformStream,\n point: function(x, y) { this.stream.point(x, y); },\n sphere: function() { this.stream.sphere(); },\n lineStart: function() { this.stream.lineStart(); },\n lineEnd: function() { this.stream.lineEnd(); },\n polygonStart: function() { this.stream.polygonStart(); },\n polygonEnd: function() { this.stream.polygonEnd(); }\n};\n","export function optional(f) {\n return f == null ? null : required(f);\n}\n\nexport function required(f) {\n if (typeof f !== \"function\") throw new Error;\n return f;\n}\n","export var slice = Array.prototype.slice;\n\nexport function shuffle(array) {\n var m = array.length,\n t,\n i;\n\n while (m) {\n i = Math.random() * m-- | 0;\n t = array[m];\n array[m] = array[i];\n array[i] = t;\n }\n\n return array;\n}\n","function defaultSeparation(a, b) {\n return a.parent === b.parent ? 1 : 2;\n}\n\nfunction meanX(children) {\n return children.reduce(meanXReduce, 0) / children.length;\n}\n\nfunction meanXReduce(x, c) {\n return x + c.x;\n}\n\nfunction maxY(children) {\n return 1 + children.reduce(maxYReduce, 0);\n}\n\nfunction maxYReduce(y, c) {\n return Math.max(y, c.y);\n}\n\nfunction leafLeft(node) {\n var children;\n while (children = node.children) node = children[0];\n return node;\n}\n\nfunction leafRight(node) {\n var children;\n while (children = node.children) node = children[children.length - 1];\n return node;\n}\n\nexport default function() {\n var separation = defaultSeparation,\n dx = 1,\n dy = 1,\n nodeSize = false;\n\n function cluster(root) {\n var previousNode,\n x = 0;\n\n // First walk, computing the initial x & y values.\n root.eachAfter(function(node) {\n var children = node.children;\n if (children) {\n node.x = meanX(children);\n node.y = maxY(children);\n } else {\n node.x = previousNode ? x += separation(node, previousNode) : 0;\n node.y = 0;\n previousNode = node;\n }\n });\n\n var left = leafLeft(root),\n right = leafRight(root),\n x0 = left.x - separation(left, right) / 2,\n x1 = right.x + separation(right, left) / 2;\n\n // Second walk, normalizing x & y to the desired size.\n return root.eachAfter(nodeSize ? function(node) {\n node.x = (node.x - root.x) * dx;\n node.y = (root.y - node.y) * dy;\n } : function(node) {\n node.x = (node.x - x0) / (x1 - x0) * dx;\n node.y = (1 - (root.y ? node.y / root.y : 1)) * dy;\n });\n }\n\n cluster.separation = function(x) {\n return arguments.length ? (separation = x, cluster) : separation;\n };\n\n cluster.size = function(x) {\n return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], cluster) : (nodeSize ? null : [dx, dy]);\n };\n\n cluster.nodeSize = function(x) {\n return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], cluster) : (nodeSize ? [dx, dy] : null);\n };\n\n return cluster;\n}\n","export function constantZero() {\n return 0;\n}\n\nexport default function(x) {\n return function() {\n return x;\n };\n}\n","export default function() {\n var node = this, nodes = [node];\n while (node = node.parent) {\n nodes.push(node);\n }\n return nodes;\n}\n","function count(node) {\n var sum = 0,\n children = node.children,\n i = children && children.length;\n if (!i) sum = 1;\n else while (--i >= 0) sum += children[i].value;\n node.value = sum;\n}\n\nexport default function() {\n return this.eachAfter(count);\n}\n","export default function() {\n var nodes = [];\n this.each(function(node) {\n nodes.push(node);\n });\n return nodes;\n}\n","export default function(callback) {\n var node = this, current, next = [node], children, i, n;\n do {\n current = next.reverse(), next = [];\n while (node = current.pop()) {\n callback(node), children = node.children;\n if (children) for (i = 0, n = children.length; i < n; ++i) {\n next.push(children[i]);\n }\n }\n } while (next.length);\n return this;\n}\n","export default function(callback) {\n var node = this, nodes = [node], next = [], children, i, n;\n while (node = nodes.pop()) {\n next.push(node), children = node.children;\n if (children) for (i = 0, n = children.length; i < n; ++i) {\n nodes.push(children[i]);\n }\n }\n while (node = next.pop()) {\n callback(node);\n }\n return this;\n}\n","export default function(callback) {\n var node = this, nodes = [node], children, i;\n while (node = nodes.pop()) {\n callback(node), children = node.children;\n if (children) for (i = children.length - 1; i >= 0; --i) {\n nodes.push(children[i]);\n }\n }\n return this;\n}\n","import node_count from \"./count.js\";\nimport node_each from \"./each.js\";\nimport node_eachBefore from \"./eachBefore.js\";\nimport node_eachAfter from \"./eachAfter.js\";\nimport node_sum from \"./sum.js\";\nimport node_sort from \"./sort.js\";\nimport node_path from \"./path.js\";\nimport node_ancestors from \"./ancestors.js\";\nimport node_descendants from \"./descendants.js\";\nimport node_leaves from \"./leaves.js\";\nimport node_links from \"./links.js\";\n\nexport default function hierarchy(data, children) {\n var root = new Node(data),\n valued = +data.value && (root.value = data.value),\n node,\n nodes = [root],\n child,\n childs,\n i,\n n;\n\n if (children == null) children = defaultChildren;\n\n while (node = nodes.pop()) {\n if (valued) node.value = +node.data.value;\n if ((childs = children(node.data)) && (n = childs.length)) {\n node.children = new Array(n);\n for (i = n - 1; i >= 0; --i) {\n nodes.push(child = node.children[i] = new Node(childs[i]));\n child.parent = node;\n child.depth = node.depth + 1;\n }\n }\n }\n\n return root.eachBefore(computeHeight);\n}\n\nfunction node_copy() {\n return hierarchy(this).eachBefore(copyData);\n}\n\nfunction defaultChildren(d) {\n return d.children;\n}\n\nfunction copyData(node) {\n node.data = node.data.data;\n}\n\nexport function computeHeight(node) {\n var height = 0;\n do node.height = height;\n while ((node = node.parent) && (node.height < ++height));\n}\n\nexport function Node(data) {\n this.data = data;\n this.depth =\n this.height = 0;\n this.parent = null;\n}\n\nNode.prototype = hierarchy.prototype = {\n constructor: Node,\n count: node_count,\n each: node_each,\n eachAfter: node_eachAfter,\n eachBefore: node_eachBefore,\n sum: node_sum,\n sort: node_sort,\n path: node_path,\n ancestors: node_ancestors,\n descendants: node_descendants,\n leaves: node_leaves,\n links: node_links,\n copy: node_copy\n};\n","export default function() {\n var leaves = [];\n this.eachBefore(function(node) {\n if (!node.children) {\n leaves.push(node);\n }\n });\n return leaves;\n}\n","export default function() {\n var root = this, links = [];\n root.each(function(node) {\n if (node !== root) { // Don’t include the root’s parent, if any.\n links.push({source: node.parent, target: node});\n }\n });\n return links;\n}\n","export default function(end) {\n var start = this,\n ancestor = leastCommonAncestor(start, end),\n nodes = [start];\n while (start !== ancestor) {\n start = start.parent;\n nodes.push(start);\n }\n var k = nodes.length;\n while (end !== ancestor) {\n nodes.splice(k, 0, end);\n end = end.parent;\n }\n return nodes;\n}\n\nfunction leastCommonAncestor(a, b) {\n if (a === b) return a;\n var aNodes = a.ancestors(),\n bNodes = b.ancestors(),\n c = null;\n a = aNodes.pop();\n b = bNodes.pop();\n while (a === b) {\n c = a;\n a = aNodes.pop();\n b = bNodes.pop();\n }\n return c;\n}\n","export default function(compare) {\n return this.eachBefore(function(node) {\n if (node.children) {\n node.children.sort(compare);\n }\n });\n}\n","export default function(value) {\n return this.eachAfter(function(node) {\n var sum = +value(node.data) || 0,\n children = node.children,\n i = children && children.length;\n while (--i >= 0) sum += children[i].value;\n node.value = sum;\n });\n}\n","export {default as cluster} from \"./cluster.js\";\nexport {default as hierarchy} from \"./hierarchy/index.js\";\nexport {default as pack} from \"./pack/index.js\";\nexport {default as packSiblings} from \"./pack/siblings.js\";\nexport {default as packEnclose} from \"./pack/enclose.js\";\nexport {default as partition} from \"./partition.js\";\nexport {default as stratify} from \"./stratify.js\";\nexport {default as tree} from \"./tree.js\";\nexport {default as treemap} from \"./treemap/index.js\";\nexport {default as treemapBinary} from \"./treemap/binary.js\";\nexport {default as treemapDice} from \"./treemap/dice.js\";\nexport {default as treemapSlice} from \"./treemap/slice.js\";\nexport {default as treemapSliceDice} from \"./treemap/sliceDice.js\";\nexport {default as treemapSquarify} from \"./treemap/squarify.js\";\nexport {default as treemapResquarify} from \"./treemap/resquarify.js\";\n","import {shuffle, slice} from \"../array.js\";\n\nexport default function(circles) {\n var i = 0, n = (circles = shuffle(slice.call(circles))).length, B = [], p, e;\n\n while (i < n) {\n p = circles[i];\n if (e && enclosesWeak(e, p)) ++i;\n else e = encloseBasis(B = extendBasis(B, p)), i = 0;\n }\n\n return e;\n}\n\nfunction extendBasis(B, p) {\n var i, j;\n\n if (enclosesWeakAll(p, B)) return [p];\n\n // If we get here then B must have at least one element.\n for (i = 0; i < B.length; ++i) {\n if (enclosesNot(p, B[i])\n && enclosesWeakAll(encloseBasis2(B[i], p), B)) {\n return [B[i], p];\n }\n }\n\n // If we get here then B must have at least two elements.\n for (i = 0; i < B.length - 1; ++i) {\n for (j = i + 1; j < B.length; ++j) {\n if (enclosesNot(encloseBasis2(B[i], B[j]), p)\n && enclosesNot(encloseBasis2(B[i], p), B[j])\n && enclosesNot(encloseBasis2(B[j], p), B[i])\n && enclosesWeakAll(encloseBasis3(B[i], B[j], p), B)) {\n return [B[i], B[j], p];\n }\n }\n }\n\n // If we get here then something is very wrong.\n throw new Error;\n}\n\nfunction enclosesNot(a, b) {\n var dr = a.r - b.r, dx = b.x - a.x, dy = b.y - a.y;\n return dr < 0 || dr * dr < dx * dx + dy * dy;\n}\n\nfunction enclosesWeak(a, b) {\n var dr = a.r - b.r + 1e-6, dx = b.x - a.x, dy = b.y - a.y;\n return dr > 0 && dr * dr > dx * dx + dy * dy;\n}\n\nfunction enclosesWeakAll(a, B) {\n for (var i = 0; i < B.length; ++i) {\n if (!enclosesWeak(a, B[i])) {\n return false;\n }\n }\n return true;\n}\n\nfunction encloseBasis(B) {\n switch (B.length) {\n case 1: return encloseBasis1(B[0]);\n case 2: return encloseBasis2(B[0], B[1]);\n case 3: return encloseBasis3(B[0], B[1], B[2]);\n }\n}\n\nfunction encloseBasis1(a) {\n return {\n x: a.x,\n y: a.y,\n r: a.r\n };\n}\n\nfunction encloseBasis2(a, b) {\n var x1 = a.x, y1 = a.y, r1 = a.r,\n x2 = b.x, y2 = b.y, r2 = b.r,\n x21 = x2 - x1, y21 = y2 - y1, r21 = r2 - r1,\n l = Math.sqrt(x21 * x21 + y21 * y21);\n return {\n x: (x1 + x2 + x21 / l * r21) / 2,\n y: (y1 + y2 + y21 / l * r21) / 2,\n r: (l + r1 + r2) / 2\n };\n}\n\nfunction encloseBasis3(a, b, c) {\n var x1 = a.x, y1 = a.y, r1 = a.r,\n x2 = b.x, y2 = b.y, r2 = b.r,\n x3 = c.x, y3 = c.y, r3 = c.r,\n a2 = x1 - x2,\n a3 = x1 - x3,\n b2 = y1 - y2,\n b3 = y1 - y3,\n c2 = r2 - r1,\n c3 = r3 - r1,\n d1 = x1 * x1 + y1 * y1 - r1 * r1,\n d2 = d1 - x2 * x2 - y2 * y2 + r2 * r2,\n d3 = d1 - x3 * x3 - y3 * y3 + r3 * r3,\n ab = a3 * b2 - a2 * b3,\n xa = (b2 * d3 - b3 * d2) / (ab * 2) - x1,\n xb = (b3 * c2 - b2 * c3) / ab,\n ya = (a3 * d2 - a2 * d3) / (ab * 2) - y1,\n yb = (a2 * c3 - a3 * c2) / ab,\n A = xb * xb + yb * yb - 1,\n B = 2 * (r1 + xa * xb + ya * yb),\n C = xa * xa + ya * ya - r1 * r1,\n r = -(A ? (B + Math.sqrt(B * B - 4 * A * C)) / (2 * A) : C / B);\n return {\n x: x1 + xa + xb * r,\n y: y1 + ya + yb * r,\n r: r\n };\n}\n","import {packEnclose} from \"./siblings.js\";\nimport {optional} from \"../accessors.js\";\nimport constant, {constantZero} from \"../constant.js\";\n\nfunction defaultRadius(d) {\n return Math.sqrt(d.value);\n}\n\nexport default function() {\n var radius = null,\n dx = 1,\n dy = 1,\n padding = constantZero;\n\n function pack(root) {\n root.x = dx / 2, root.y = dy / 2;\n if (radius) {\n root.eachBefore(radiusLeaf(radius))\n .eachAfter(packChildren(padding, 0.5))\n .eachBefore(translateChild(1));\n } else {\n root.eachBefore(radiusLeaf(defaultRadius))\n .eachAfter(packChildren(constantZero, 1))\n .eachAfter(packChildren(padding, root.r / Math.min(dx, dy)))\n .eachBefore(translateChild(Math.min(dx, dy) / (2 * root.r)));\n }\n return root;\n }\n\n pack.radius = function(x) {\n return arguments.length ? (radius = optional(x), pack) : radius;\n };\n\n pack.size = function(x) {\n return arguments.length ? (dx = +x[0], dy = +x[1], pack) : [dx, dy];\n };\n\n pack.padding = function(x) {\n return arguments.length ? (padding = typeof x === \"function\" ? x : constant(+x), pack) : padding;\n };\n\n return pack;\n}\n\nfunction radiusLeaf(radius) {\n return function(node) {\n if (!node.children) {\n node.r = Math.max(0, +radius(node) || 0);\n }\n };\n}\n\nfunction packChildren(padding, k) {\n return function(node) {\n if (children = node.children) {\n var children,\n i,\n n = children.length,\n r = padding(node) * k || 0,\n e;\n\n if (r) for (i = 0; i < n; ++i) children[i].r += r;\n e = packEnclose(children);\n if (r) for (i = 0; i < n; ++i) children[i].r -= r;\n node.r = e + r;\n }\n };\n}\n\nfunction translateChild(k) {\n return function(node) {\n var parent = node.parent;\n node.r *= k;\n if (parent) {\n node.x = parent.x + k * node.x;\n node.y = parent.y + k * node.y;\n }\n };\n}\n","import enclose from \"./enclose.js\";\n\nfunction place(b, a, c) {\n var dx = b.x - a.x, x, a2,\n dy = b.y - a.y, y, b2,\n d2 = dx * dx + dy * dy;\n if (d2) {\n a2 = a.r + c.r, a2 *= a2;\n b2 = b.r + c.r, b2 *= b2;\n if (a2 > b2) {\n x = (d2 + b2 - a2) / (2 * d2);\n y = Math.sqrt(Math.max(0, b2 / d2 - x * x));\n c.x = b.x - x * dx - y * dy;\n c.y = b.y - x * dy + y * dx;\n } else {\n x = (d2 + a2 - b2) / (2 * d2);\n y = Math.sqrt(Math.max(0, a2 / d2 - x * x));\n c.x = a.x + x * dx - y * dy;\n c.y = a.y + x * dy + y * dx;\n }\n } else {\n c.x = a.x + c.r;\n c.y = a.y;\n }\n}\n\nfunction intersects(a, b) {\n var dr = a.r + b.r - 1e-6, dx = b.x - a.x, dy = b.y - a.y;\n return dr > 0 && dr * dr > dx * dx + dy * dy;\n}\n\nfunction score(node) {\n var a = node._,\n b = node.next._,\n ab = a.r + b.r,\n dx = (a.x * b.r + b.x * a.r) / ab,\n dy = (a.y * b.r + b.y * a.r) / ab;\n return dx * dx + dy * dy;\n}\n\nfunction Node(circle) {\n this._ = circle;\n this.next = null;\n this.previous = null;\n}\n\nexport function packEnclose(circles) {\n if (!(n = circles.length)) return 0;\n\n var a, b, c, n, aa, ca, i, j, k, sj, sk;\n\n // Place the first circle.\n a = circles[0], a.x = 0, a.y = 0;\n if (!(n > 1)) return a.r;\n\n // Place the second circle.\n b = circles[1], a.x = -b.r, b.x = a.r, b.y = 0;\n if (!(n > 2)) return a.r + b.r;\n\n // Place the third circle.\n place(b, a, c = circles[2]);\n\n // Initialize the front-chain using the first three circles a, b and c.\n a = new Node(a), b = new Node(b), c = new Node(c);\n a.next = c.previous = b;\n b.next = a.previous = c;\n c.next = b.previous = a;\n\n // Attempt to place each remaining circle…\n pack: for (i = 3; i < n; ++i) {\n place(a._, b._, c = circles[i]), c = new Node(c);\n\n // Find the closest intersecting circle on the front-chain, if any.\n // “Closeness” is determined by linear distance along the front-chain.\n // “Ahead” or “behind” is likewise determined by linear distance.\n j = b.next, k = a.previous, sj = b._.r, sk = a._.r;\n do {\n if (sj <= sk) {\n if (intersects(j._, c._)) {\n b = j, a.next = b, b.previous = a, --i;\n continue pack;\n }\n sj += j._.r, j = j.next;\n } else {\n if (intersects(k._, c._)) {\n a = k, a.next = b, b.previous = a, --i;\n continue pack;\n }\n sk += k._.r, k = k.previous;\n }\n } while (j !== k.next);\n\n // Success! Insert the new circle c between a and b.\n c.previous = a, c.next = b, a.next = b.previous = b = c;\n\n // Compute the new closest circle pair to the centroid.\n aa = score(a);\n while ((c = c.next) !== b) {\n if ((ca = score(c)) < aa) {\n a = c, aa = ca;\n }\n }\n b = a.next;\n }\n\n // Compute the enclosing circle of the front chain.\n a = [b._], c = b; while ((c = c.next) !== b) a.push(c._); c = enclose(a);\n\n // Translate the circles to put the enclosing circle around the origin.\n for (i = 0; i < n; ++i) a = circles[i], a.x -= c.x, a.y -= c.y;\n\n return c.r;\n}\n\nexport default function(circles) {\n packEnclose(circles);\n return circles;\n}\n","import roundNode from \"./treemap/round.js\";\nimport treemapDice from \"./treemap/dice.js\";\n\nexport default function() {\n var dx = 1,\n dy = 1,\n padding = 0,\n round = false;\n\n function partition(root) {\n var n = root.height + 1;\n root.x0 =\n root.y0 = padding;\n root.x1 = dx;\n root.y1 = dy / n;\n root.eachBefore(positionNode(dy, n));\n if (round) root.eachBefore(roundNode);\n return root;\n }\n\n function positionNode(dy, n) {\n return function(node) {\n if (node.children) {\n treemapDice(node, node.x0, dy * (node.depth + 1) / n, node.x1, dy * (node.depth + 2) / n);\n }\n var x0 = node.x0,\n y0 = node.y0,\n x1 = node.x1 - padding,\n y1 = node.y1 - padding;\n if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n node.x0 = x0;\n node.y0 = y0;\n node.x1 = x1;\n node.y1 = y1;\n };\n }\n\n partition.round = function(x) {\n return arguments.length ? (round = !!x, partition) : round;\n };\n\n partition.size = function(x) {\n return arguments.length ? (dx = +x[0], dy = +x[1], partition) : [dx, dy];\n };\n\n partition.padding = function(x) {\n return arguments.length ? (padding = +x, partition) : padding;\n };\n\n return partition;\n}\n","import {required} from \"./accessors.js\";\nimport {Node, computeHeight} from \"./hierarchy/index.js\";\n\nvar keyPrefix = \"$\", // Protect against keys like “__proto__”.\n preroot = {depth: -1},\n ambiguous = {};\n\nfunction defaultId(d) {\n return d.id;\n}\n\nfunction defaultParentId(d) {\n return d.parentId;\n}\n\nexport default function() {\n var id = defaultId,\n parentId = defaultParentId;\n\n function stratify(data) {\n var d,\n i,\n n = data.length,\n root,\n parent,\n node,\n nodes = new Array(n),\n nodeId,\n nodeKey,\n nodeByKey = {};\n\n for (i = 0; i < n; ++i) {\n d = data[i], node = nodes[i] = new Node(d);\n if ((nodeId = id(d, i, data)) != null && (nodeId += \"\")) {\n nodeKey = keyPrefix + (node.id = nodeId);\n nodeByKey[nodeKey] = nodeKey in nodeByKey ? ambiguous : node;\n }\n }\n\n for (i = 0; i < n; ++i) {\n node = nodes[i], nodeId = parentId(data[i], i, data);\n if (nodeId == null || !(nodeId += \"\")) {\n if (root) throw new Error(\"multiple roots\");\n root = node;\n } else {\n parent = nodeByKey[keyPrefix + nodeId];\n if (!parent) throw new Error(\"missing: \" + nodeId);\n if (parent === ambiguous) throw new Error(\"ambiguous: \" + nodeId);\n if (parent.children) parent.children.push(node);\n else parent.children = [node];\n node.parent = parent;\n }\n }\n\n if (!root) throw new Error(\"no root\");\n root.parent = preroot;\n root.eachBefore(function(node) { node.depth = node.parent.depth + 1; --n; }).eachBefore(computeHeight);\n root.parent = null;\n if (n > 0) throw new Error(\"cycle\");\n\n return root;\n }\n\n stratify.id = function(x) {\n return arguments.length ? (id = required(x), stratify) : id;\n };\n\n stratify.parentId = function(x) {\n return arguments.length ? (parentId = required(x), stratify) : parentId;\n };\n\n return stratify;\n}\n","import {Node} from \"./hierarchy/index.js\";\n\nfunction defaultSeparation(a, b) {\n return a.parent === b.parent ? 1 : 2;\n}\n\n// function radialSeparation(a, b) {\n// return (a.parent === b.parent ? 1 : 2) / a.depth;\n// }\n\n// This function is used to traverse the left contour of a subtree (or\n// subforest). It returns the successor of v on this contour. This successor is\n// either given by the leftmost child of v or by the thread of v. The function\n// returns null if and only if v is on the highest level of its subtree.\nfunction nextLeft(v) {\n var children = v.children;\n return children ? children[0] : v.t;\n}\n\n// This function works analogously to nextLeft.\nfunction nextRight(v) {\n var children = v.children;\n return children ? children[children.length - 1] : v.t;\n}\n\n// Shifts the current subtree rooted at w+. This is done by increasing\n// prelim(w+) and mod(w+) by shift.\nfunction moveSubtree(wm, wp, shift) {\n var change = shift / (wp.i - wm.i);\n wp.c -= change;\n wp.s += shift;\n wm.c += change;\n wp.z += shift;\n wp.m += shift;\n}\n\n// All other shifts, applied to the smaller subtrees between w- and w+, are\n// performed by this function. To prepare the shifts, we have to adjust\n// change(w+), shift(w+), and change(w-).\nfunction executeShifts(v) {\n var shift = 0,\n change = 0,\n children = v.children,\n i = children.length,\n w;\n while (--i >= 0) {\n w = children[i];\n w.z += shift;\n w.m += shift;\n shift += w.s + (change += w.c);\n }\n}\n\n// If vi-’s ancestor is a sibling of v, returns vi-’s ancestor. Otherwise,\n// returns the specified (default) ancestor.\nfunction nextAncestor(vim, v, ancestor) {\n return vim.a.parent === v.parent ? vim.a : ancestor;\n}\n\nfunction TreeNode(node, i) {\n this._ = node;\n this.parent = null;\n this.children = null;\n this.A = null; // default ancestor\n this.a = this; // ancestor\n this.z = 0; // prelim\n this.m = 0; // mod\n this.c = 0; // change\n this.s = 0; // shift\n this.t = null; // thread\n this.i = i; // number\n}\n\nTreeNode.prototype = Object.create(Node.prototype);\n\nfunction treeRoot(root) {\n var tree = new TreeNode(root, 0),\n node,\n nodes = [tree],\n child,\n children,\n i,\n n;\n\n while (node = nodes.pop()) {\n if (children = node._.children) {\n node.children = new Array(n = children.length);\n for (i = n - 1; i >= 0; --i) {\n nodes.push(child = node.children[i] = new TreeNode(children[i], i));\n child.parent = node;\n }\n }\n }\n\n (tree.parent = new TreeNode(null, 0)).children = [tree];\n return tree;\n}\n\n// Node-link tree diagram using the Reingold-Tilford \"tidy\" algorithm\nexport default function() {\n var separation = defaultSeparation,\n dx = 1,\n dy = 1,\n nodeSize = null;\n\n function tree(root) {\n var t = treeRoot(root);\n\n // Compute the layout using Buchheim et al.’s algorithm.\n t.eachAfter(firstWalk), t.parent.m = -t.z;\n t.eachBefore(secondWalk);\n\n // If a fixed node size is specified, scale x and y.\n if (nodeSize) root.eachBefore(sizeNode);\n\n // If a fixed tree size is specified, scale x and y based on the extent.\n // Compute the left-most, right-most, and depth-most nodes for extents.\n else {\n var left = root,\n right = root,\n bottom = root;\n root.eachBefore(function(node) {\n if (node.x < left.x) left = node;\n if (node.x > right.x) right = node;\n if (node.depth > bottom.depth) bottom = node;\n });\n var s = left === right ? 1 : separation(left, right) / 2,\n tx = s - left.x,\n kx = dx / (right.x + s + tx),\n ky = dy / (bottom.depth || 1);\n root.eachBefore(function(node) {\n node.x = (node.x + tx) * kx;\n node.y = node.depth * ky;\n });\n }\n\n return root;\n }\n\n // Computes a preliminary x-coordinate for v. Before that, FIRST WALK is\n // applied recursively to the children of v, as well as the function\n // APPORTION. After spacing out the children by calling EXECUTE SHIFTS, the\n // node v is placed to the midpoint of its outermost children.\n function firstWalk(v) {\n var children = v.children,\n siblings = v.parent.children,\n w = v.i ? siblings[v.i - 1] : null;\n if (children) {\n executeShifts(v);\n var midpoint = (children[0].z + children[children.length - 1].z) / 2;\n if (w) {\n v.z = w.z + separation(v._, w._);\n v.m = v.z - midpoint;\n } else {\n v.z = midpoint;\n }\n } else if (w) {\n v.z = w.z + separation(v._, w._);\n }\n v.parent.A = apportion(v, w, v.parent.A || siblings[0]);\n }\n\n // Computes all real x-coordinates by summing up the modifiers recursively.\n function secondWalk(v) {\n v._.x = v.z + v.parent.m;\n v.m += v.parent.m;\n }\n\n // The core of the algorithm. Here, a new subtree is combined with the\n // previous subtrees. Threads are used to traverse the inside and outside\n // contours of the left and right subtree up to the highest common level. The\n // vertices used for the traversals are vi+, vi-, vo-, and vo+, where the\n // superscript o means outside and i means inside, the subscript - means left\n // subtree and + means right subtree. For summing up the modifiers along the\n // contour, we use respective variables si+, si-, so-, and so+. Whenever two\n // nodes of the inside contours conflict, we compute the left one of the\n // greatest uncommon ancestors using the function ANCESTOR and call MOVE\n // SUBTREE to shift the subtree and prepare the shifts of smaller subtrees.\n // Finally, we add a new thread (if necessary).\n function apportion(v, w, ancestor) {\n if (w) {\n var vip = v,\n vop = v,\n vim = w,\n vom = vip.parent.children[0],\n sip = vip.m,\n sop = vop.m,\n sim = vim.m,\n som = vom.m,\n shift;\n while (vim = nextRight(vim), vip = nextLeft(vip), vim && vip) {\n vom = nextLeft(vom);\n vop = nextRight(vop);\n vop.a = v;\n shift = vim.z + sim - vip.z - sip + separation(vim._, vip._);\n if (shift > 0) {\n moveSubtree(nextAncestor(vim, v, ancestor), v, shift);\n sip += shift;\n sop += shift;\n }\n sim += vim.m;\n sip += vip.m;\n som += vom.m;\n sop += vop.m;\n }\n if (vim && !nextRight(vop)) {\n vop.t = vim;\n vop.m += sim - sop;\n }\n if (vip && !nextLeft(vom)) {\n vom.t = vip;\n vom.m += sip - som;\n ancestor = v;\n }\n }\n return ancestor;\n }\n\n function sizeNode(node) {\n node.x *= dx;\n node.y = node.depth * dy;\n }\n\n tree.separation = function(x) {\n return arguments.length ? (separation = x, tree) : separation;\n };\n\n tree.size = function(x) {\n return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], tree) : (nodeSize ? null : [dx, dy]);\n };\n\n tree.nodeSize = function(x) {\n return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], tree) : (nodeSize ? [dx, dy] : null);\n };\n\n return tree;\n}\n","export default function(parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n i, n = nodes.length,\n sum, sums = new Array(n + 1);\n\n for (sums[0] = sum = i = 0; i < n; ++i) {\n sums[i + 1] = sum += nodes[i].value;\n }\n\n partition(0, n, parent.value, x0, y0, x1, y1);\n\n function partition(i, j, value, x0, y0, x1, y1) {\n if (i >= j - 1) {\n var node = nodes[i];\n node.x0 = x0, node.y0 = y0;\n node.x1 = x1, node.y1 = y1;\n return;\n }\n\n var valueOffset = sums[i],\n valueTarget = (value / 2) + valueOffset,\n k = i + 1,\n hi = j - 1;\n\n while (k < hi) {\n var mid = k + hi >>> 1;\n if (sums[mid] < valueTarget) k = mid + 1;\n else hi = mid;\n }\n\n if ((valueTarget - sums[k - 1]) < (sums[k] - valueTarget) && i + 1 < k) --k;\n\n var valueLeft = sums[k] - valueOffset,\n valueRight = value - valueLeft;\n\n if ((x1 - x0) > (y1 - y0)) {\n var xk = (x0 * valueRight + x1 * valueLeft) / value;\n partition(i, k, valueLeft, x0, y0, xk, y1);\n partition(k, j, valueRight, xk, y0, x1, y1);\n } else {\n var yk = (y0 * valueRight + y1 * valueLeft) / value;\n partition(i, k, valueLeft, x0, y0, x1, yk);\n partition(k, j, valueRight, x0, yk, x1, y1);\n }\n }\n}\n","export default function(parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n node,\n i = -1,\n n = nodes.length,\n k = parent.value && (x1 - x0) / parent.value;\n\n while (++i < n) {\n node = nodes[i], node.y0 = y0, node.y1 = y1;\n node.x0 = x0, node.x1 = x0 += node.value * k;\n }\n}\n","import roundNode from \"./round.js\";\nimport squarify from \"./squarify.js\";\nimport {required} from \"../accessors.js\";\nimport constant, {constantZero} from \"../constant.js\";\n\nexport default function() {\n var tile = squarify,\n round = false,\n dx = 1,\n dy = 1,\n paddingStack = [0],\n paddingInner = constantZero,\n paddingTop = constantZero,\n paddingRight = constantZero,\n paddingBottom = constantZero,\n paddingLeft = constantZero;\n\n function treemap(root) {\n root.x0 =\n root.y0 = 0;\n root.x1 = dx;\n root.y1 = dy;\n root.eachBefore(positionNode);\n paddingStack = [0];\n if (round) root.eachBefore(roundNode);\n return root;\n }\n\n function positionNode(node) {\n var p = paddingStack[node.depth],\n x0 = node.x0 + p,\n y0 = node.y0 + p,\n x1 = node.x1 - p,\n y1 = node.y1 - p;\n if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n node.x0 = x0;\n node.y0 = y0;\n node.x1 = x1;\n node.y1 = y1;\n if (node.children) {\n p = paddingStack[node.depth + 1] = paddingInner(node) / 2;\n x0 += paddingLeft(node) - p;\n y0 += paddingTop(node) - p;\n x1 -= paddingRight(node) - p;\n y1 -= paddingBottom(node) - p;\n if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n tile(node, x0, y0, x1, y1);\n }\n }\n\n treemap.round = function(x) {\n return arguments.length ? (round = !!x, treemap) : round;\n };\n\n treemap.size = function(x) {\n return arguments.length ? (dx = +x[0], dy = +x[1], treemap) : [dx, dy];\n };\n\n treemap.tile = function(x) {\n return arguments.length ? (tile = required(x), treemap) : tile;\n };\n\n treemap.padding = function(x) {\n return arguments.length ? treemap.paddingInner(x).paddingOuter(x) : treemap.paddingInner();\n };\n\n treemap.paddingInner = function(x) {\n return arguments.length ? (paddingInner = typeof x === \"function\" ? x : constant(+x), treemap) : paddingInner;\n };\n\n treemap.paddingOuter = function(x) {\n return arguments.length ? treemap.paddingTop(x).paddingRight(x).paddingBottom(x).paddingLeft(x) : treemap.paddingTop();\n };\n\n treemap.paddingTop = function(x) {\n return arguments.length ? (paddingTop = typeof x === \"function\" ? x : constant(+x), treemap) : paddingTop;\n };\n\n treemap.paddingRight = function(x) {\n return arguments.length ? (paddingRight = typeof x === \"function\" ? x : constant(+x), treemap) : paddingRight;\n };\n\n treemap.paddingBottom = function(x) {\n return arguments.length ? (paddingBottom = typeof x === \"function\" ? x : constant(+x), treemap) : paddingBottom;\n };\n\n treemap.paddingLeft = function(x) {\n return arguments.length ? (paddingLeft = typeof x === \"function\" ? x : constant(+x), treemap) : paddingLeft;\n };\n\n return treemap;\n}\n","import treemapDice from \"./dice.js\";\nimport treemapSlice from \"./slice.js\";\nimport {phi, squarifyRatio} from \"./squarify.js\";\n\nexport default (function custom(ratio) {\n\n function resquarify(parent, x0, y0, x1, y1) {\n if ((rows = parent._squarify) && (rows.ratio === ratio)) {\n var rows,\n row,\n nodes,\n i,\n j = -1,\n n,\n m = rows.length,\n value = parent.value;\n\n while (++j < m) {\n row = rows[j], nodes = row.children;\n for (i = row.value = 0, n = nodes.length; i < n; ++i) row.value += nodes[i].value;\n if (row.dice) treemapDice(row, x0, y0, x1, y0 += (y1 - y0) * row.value / value);\n else treemapSlice(row, x0, y0, x0 += (x1 - x0) * row.value / value, y1);\n value -= row.value;\n }\n } else {\n parent._squarify = rows = squarifyRatio(ratio, parent, x0, y0, x1, y1);\n rows.ratio = ratio;\n }\n }\n\n resquarify.ratio = function(x) {\n return custom((x = +x) > 1 ? x : 1);\n };\n\n return resquarify;\n})(phi);\n","export default function(node) {\n node.x0 = Math.round(node.x0);\n node.y0 = Math.round(node.y0);\n node.x1 = Math.round(node.x1);\n node.y1 = Math.round(node.y1);\n}\n","export default function(parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n node,\n i = -1,\n n = nodes.length,\n k = parent.value && (y1 - y0) / parent.value;\n\n while (++i < n) {\n node = nodes[i], node.x0 = x0, node.x1 = x1;\n node.y0 = y0, node.y1 = y0 += node.value * k;\n }\n}\n","import dice from \"./dice.js\";\nimport slice from \"./slice.js\";\n\nexport default function(parent, x0, y0, x1, y1) {\n (parent.depth & 1 ? slice : dice)(parent, x0, y0, x1, y1);\n}\n","import treemapDice from \"./dice.js\";\nimport treemapSlice from \"./slice.js\";\n\nexport var phi = (1 + Math.sqrt(5)) / 2;\n\nexport function squarifyRatio(ratio, parent, x0, y0, x1, y1) {\n var rows = [],\n nodes = parent.children,\n row,\n nodeValue,\n i0 = 0,\n i1 = 0,\n n = nodes.length,\n dx, dy,\n value = parent.value,\n sumValue,\n minValue,\n maxValue,\n newRatio,\n minRatio,\n alpha,\n beta;\n\n while (i0 < n) {\n dx = x1 - x0, dy = y1 - y0;\n\n // Find the next non-empty node.\n do sumValue = nodes[i1++].value; while (!sumValue && i1 < n);\n minValue = maxValue = sumValue;\n alpha = Math.max(dy / dx, dx / dy) / (value * ratio);\n beta = sumValue * sumValue * alpha;\n minRatio = Math.max(maxValue / beta, beta / minValue);\n\n // Keep adding nodes while the aspect ratio maintains or improves.\n for (; i1 < n; ++i1) {\n sumValue += nodeValue = nodes[i1].value;\n if (nodeValue < minValue) minValue = nodeValue;\n if (nodeValue > maxValue) maxValue = nodeValue;\n beta = sumValue * sumValue * alpha;\n newRatio = Math.max(maxValue / beta, beta / minValue);\n if (newRatio > minRatio) { sumValue -= nodeValue; break; }\n minRatio = newRatio;\n }\n\n // Position and record the row orientation.\n rows.push(row = {value: sumValue, dice: dx < dy, children: nodes.slice(i0, i1)});\n if (row.dice) treemapDice(row, x0, y0, x1, value ? y0 += dy * sumValue / value : y1);\n else treemapSlice(row, x0, y0, value ? x0 += dx * sumValue / value : x1, y1);\n value -= sumValue, i0 = i1;\n }\n\n return rows;\n}\n\nexport default (function custom(ratio) {\n\n function squarify(parent, x0, y0, x1, y1) {\n squarifyRatio(ratio, parent, x0, y0, x1, y1);\n }\n\n squarify.ratio = function(x) {\n return custom((x = +x) > 1 ? x : 1);\n };\n\n return squarify;\n})(phi);\n","import value from \"./value.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n return (isNumberArray(b) ? numberArray : genericArray)(a, b);\n}\n\nexport function genericArray(a, b) {\n var nb = b ? b.length : 0,\n na = a ? Math.min(nb, a.length) : 0,\n x = new Array(na),\n c = new Array(nb),\n i;\n\n for (i = 0; i < na; ++i) x[i] = value(a[i], b[i]);\n for (; i < nb; ++i) c[i] = b[i];\n\n return function(t) {\n for (i = 0; i < na; ++i) c[i] = x[i](t);\n return c;\n };\n}\n","export function basis(t1, v0, v1, v2, v3) {\n var t2 = t1 * t1, t3 = t2 * t1;\n return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n + (4 - 6 * t2 + 3 * t3) * v1\n + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n + t3 * v3) / 6;\n}\n\nexport default function(values) {\n var n = values.length - 1;\n return function(t) {\n var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n v1 = values[i],\n v2 = values[i + 1],\n v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","import {basis} from \"./basis.js\";\n\nexport default function(values) {\n var n = values.length;\n return function(t) {\n var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n v0 = values[(i + n - 1) % n],\n v1 = values[i % n],\n v2 = values[(i + 1) % n],\n v3 = values[(i + 2) % n];\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import {cubehelix as colorCubehelix} from \"d3-color\";\nimport color, {hue} from \"./color.js\";\n\nfunction cubehelix(hue) {\n return (function cubehelixGamma(y) {\n y = +y;\n\n function cubehelix(start, end) {\n var h = hue((start = colorCubehelix(start)).h, (end = colorCubehelix(end)).h),\n s = color(start.s, end.s),\n l = color(start.l, end.l),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.s = s(t);\n start.l = l(Math.pow(t, y));\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n cubehelix.gamma = cubehelixGamma;\n\n return cubehelix;\n })(1);\n}\n\nexport default cubehelix(hue);\nexport var cubehelixLong = cubehelix(color);\n","export default function(a, b) {\n var d = new Date;\n return a = +a, b = +b, function(t) {\n return d.setTime(a * (1 - t) + b * t), d;\n };\n}\n","export default function(range) {\n var n = range.length;\n return function(t) {\n return range[Math.max(0, Math.min(n - 1, Math.floor(t * n)))];\n };\n}\n","import {hcl as colorHcl} from \"d3-color\";\nimport color, {hue} from \"./color.js\";\n\nfunction hcl(hue) {\n return function(start, end) {\n var h = hue((start = colorHcl(start)).h, (end = colorHcl(end)).h),\n c = color(start.c, end.c),\n l = color(start.l, end.l),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.c = c(t);\n start.l = l(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n}\n\nexport default hcl(hue);\nexport var hclLong = hcl(color);\n","import {hsl as colorHsl} from \"d3-color\";\nimport color, {hue} from \"./color.js\";\n\nfunction hsl(hue) {\n return function(start, end) {\n var h = hue((start = colorHsl(start)).h, (end = colorHsl(end)).h),\n s = color(start.s, end.s),\n l = color(start.l, end.l),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.s = s(t);\n start.l = l(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n}\n\nexport default hsl(hue);\nexport var hslLong = hsl(color);\n","import {hue} from \"./color.js\";\n\nexport default function(a, b) {\n var i = hue(+a, +b);\n return function(t) {\n var x = i(t);\n return x - 360 * Math.floor(x / 360);\n };\n}\n","export {default as interpolate} from \"./value.js\";\nexport {default as interpolateArray} from \"./array.js\";\nexport {default as interpolateBasis} from \"./basis.js\";\nexport {default as interpolateBasisClosed} from \"./basisClosed.js\";\nexport {default as interpolateDate} from \"./date.js\";\nexport {default as interpolateDiscrete} from \"./discrete.js\";\nexport {default as interpolateHue} from \"./hue.js\";\nexport {default as interpolateNumber} from \"./number.js\";\nexport {default as interpolateNumberArray} from \"./numberArray.js\";\nexport {default as interpolateObject} from \"./object.js\";\nexport {default as interpolateRound} from \"./round.js\";\nexport {default as interpolateString} from \"./string.js\";\nexport {interpolateTransformCss, interpolateTransformSvg} from \"./transform/index.js\";\nexport {default as interpolateZoom} from \"./zoom.js\";\nexport {default as interpolateRgb, rgbBasis as interpolateRgbBasis, rgbBasisClosed as interpolateRgbBasisClosed} from \"./rgb.js\";\nexport {default as interpolateHsl, hslLong as interpolateHslLong} from \"./hsl.js\";\nexport {default as interpolateLab} from \"./lab.js\";\nexport {default as interpolateHcl, hclLong as interpolateHclLong} from \"./hcl.js\";\nexport {default as interpolateCubehelix, cubehelixLong as interpolateCubehelixLong} from \"./cubehelix.js\";\nexport {default as piecewise} from \"./piecewise.js\";\nexport {default as quantize} from \"./quantize.js\";\n","import {lab as colorLab} from \"d3-color\";\nimport color from \"./color.js\";\n\nexport default function lab(start, end) {\n var l = color((start = colorLab(start)).l, (end = colorLab(end)).l),\n a = color(start.a, end.a),\n b = color(start.b, end.b),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.l = l(t);\n start.a = a(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return a * (1 - t) + b * t;\n };\n}\n","export default function(a, b) {\n if (!b) b = [];\n var n = a ? Math.min(b.length, a.length) : 0,\n c = b.slice(),\n i;\n return function(t) {\n for (i = 0; i < n; ++i) c[i] = a[i] * (1 - t) + b[i] * t;\n return c;\n };\n}\n\nexport function isNumberArray(x) {\n return ArrayBuffer.isView(x) && !(x instanceof DataView);\n}\n","import value from \"./value.js\";\n\nexport default function(a, b) {\n var i = {},\n c = {},\n k;\n\n if (a === null || typeof a !== \"object\") a = {};\n if (b === null || typeof b !== \"object\") b = {};\n\n for (k in b) {\n if (k in a) {\n i[k] = value(a[k], b[k]);\n } else {\n c[k] = b[k];\n }\n }\n\n return function(t) {\n for (k in i) c[k] = i[k](t);\n return c;\n };\n}\n","export default function piecewise(interpolate, values) {\n var i = 0, n = values.length - 1, v = values[0], I = new Array(n < 0 ? 0 : n);\n while (i < n) I[i] = interpolate(v, v = values[++i]);\n return function(t) {\n var i = Math.max(0, Math.min(n - 1, Math.floor(t *= n)));\n return I[i](t - i);\n };\n}\n","export default function(interpolator, n) {\n var samples = new Array(n);\n for (var i = 0; i < n; ++i) samples[i] = interpolator(i / (n - 1));\n return samples;\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return Math.round(a * (1 - t) + b * t);\n };\n}\n","import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n","var degrees = 180 / Math.PI;\n\nexport var identity = {\n translateX: 0,\n translateY: 0,\n rotate: 0,\n skewX: 0,\n scaleX: 1,\n scaleY: 1\n};\n\nexport default function(a, b, c, d, e, f) {\n var scaleX, scaleY, skewX;\n if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n return {\n translateX: e,\n translateY: f,\n rotate: Math.atan2(b, a) * degrees,\n skewX: Math.atan(skewX) * degrees,\n scaleX: scaleX,\n scaleY: scaleY\n };\n}\n","import number from \"../number.js\";\nimport {parseCss, parseSvg} from \"./parse.js\";\n\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n\n function pop(s) {\n return s.length ? s.pop() + \" \" : \"\";\n }\n\n function translate(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb || yb) {\n s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n }\n }\n\n function rotate(a, b, s, q) {\n if (a !== b) {\n if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path\n q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"rotate(\" + b + degParen);\n }\n }\n\n function skewX(a, b, s, q) {\n if (a !== b) {\n q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"skewX(\" + b + degParen);\n }\n }\n\n function scale(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb !== 1 || yb !== 1) {\n s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n }\n }\n\n return function(a, b) {\n var s = [], // string constants and placeholders\n q = []; // number interpolators\n a = parse(a), b = parse(b);\n translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n rotate(a.rotate, b.rotate, s, q);\n skewX(a.skewX, b.skewX, s, q);\n scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n a = b = null; // gc\n return function(t) {\n var i = -1, n = q.length, o;\n while (++i < n) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n };\n };\n}\n\nexport var interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nexport var interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\n","import decompose, {identity} from \"./decompose.js\";\n\nvar cssNode,\n cssRoot,\n cssView,\n svgNode;\n\nexport function parseCss(value) {\n if (value === \"none\") return identity;\n if (!cssNode) cssNode = document.createElement(\"DIV\"), cssRoot = document.documentElement, cssView = document.defaultView;\n cssNode.style.transform = value;\n value = cssView.getComputedStyle(cssRoot.appendChild(cssNode), null).getPropertyValue(\"transform\");\n cssRoot.removeChild(cssNode);\n value = value.slice(7, -1).split(\",\");\n return decompose(+value[0], +value[1], +value[2], +value[3], +value[4], +value[5]);\n}\n\nexport function parseSvg(value) {\n if (value == null) return identity;\n if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n svgNode.setAttribute(\"transform\", value);\n if (!(value = svgNode.transform.baseVal.consolidate())) return identity;\n value = value.matrix;\n return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n}\n","import {color} from \"d3-color\";\nimport rgb from \"./rgb.js\";\nimport {genericArray} from \"./array.js\";\nimport date from \"./date.js\";\nimport number from \"./number.js\";\nimport object from \"./object.js\";\nimport string from \"./string.js\";\nimport constant from \"./constant.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n var t = typeof b, c;\n return b == null || t === \"boolean\" ? constant(b)\n : (t === \"number\" ? number\n : t === \"string\" ? ((c = color(b)) ? (b = c, rgb) : string)\n : b instanceof color ? rgb\n : b instanceof Date ? date\n : isNumberArray(b) ? numberArray\n : Array.isArray(b) ? genericArray\n : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object\n : number)(a, b);\n}\n","var rho = Math.SQRT2,\n rho2 = 2,\n rho4 = 4,\n epsilon2 = 1e-12;\n\nfunction cosh(x) {\n return ((x = Math.exp(x)) + 1 / x) / 2;\n}\n\nfunction sinh(x) {\n return ((x = Math.exp(x)) - 1 / x) / 2;\n}\n\nfunction tanh(x) {\n return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n}\n\n// p0 = [ux0, uy0, w0]\n// p1 = [ux1, uy1, w1]\nexport default function(p0, p1) {\n var ux0 = p0[0], uy0 = p0[1], w0 = p0[2],\n ux1 = p1[0], uy1 = p1[1], w1 = p1[2],\n dx = ux1 - ux0,\n dy = uy1 - uy0,\n d2 = dx * dx + dy * dy,\n i,\n S;\n\n // Special case for u0 ≅ u1.\n if (d2 < epsilon2) {\n S = Math.log(w1 / w0) / rho;\n i = function(t) {\n return [\n ux0 + t * dx,\n uy0 + t * dy,\n w0 * Math.exp(rho * t * S)\n ];\n }\n }\n\n // General case.\n else {\n var d1 = Math.sqrt(d2),\n b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1),\n b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1),\n r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0),\n r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n S = (r1 - r0) / rho;\n i = function(t) {\n var s = t * S,\n coshr0 = cosh(r0),\n u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0));\n return [\n ux0 + u * dx,\n uy0 + u * dy,\n w0 * coshr0 / cosh(rho * s + r0)\n ];\n }\n }\n\n i.duration = S * 1000;\n\n return i;\n}\n","export {default as path} from \"./path.js\";\n","var pi = Math.PI,\n tau = 2 * pi,\n epsilon = 1e-6,\n tauEpsilon = tau - epsilon;\n\nfunction Path() {\n this._x0 = this._y0 = // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n}\n\nfunction path() {\n return new Path;\n}\n\nPath.prototype = path.prototype = {\n constructor: Path,\n moveTo: function(x, y) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y);\n },\n closePath: function() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._ += \"Z\";\n }\n },\n lineTo: function(x, y) {\n this._ += \"L\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n quadraticCurveTo: function(x1, y1, x, y) {\n this._ += \"Q\" + (+x1) + \",\" + (+y1) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) {\n this._ += \"C\" + (+x1) + \",\" + (+y1) + \",\" + (+x2) + \",\" + (+y2) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n arcTo: function(x1, y1, x2, y2, r) {\n x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n var x0 = this._x1,\n y0 = this._y1,\n x21 = x2 - x1,\n y21 = y2 - y1,\n x01 = x0 - x1,\n y01 = y0 - y1,\n l01_2 = x01 * x01 + y01 * y01;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x1,y1).\n if (this._x1 === null) {\n this._ += \"M\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n else if (!(l01_2 > epsilon));\n\n // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n // Equivalently, is (x1,y1) coincident with (x2,y2)?\n // Or, is the radius zero? Line to (x1,y1).\n else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n this._ += \"L\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Otherwise, draw an arc!\n else {\n var x20 = x2 - x0,\n y20 = y2 - y0,\n l21_2 = x21 * x21 + y21 * y21,\n l20_2 = x20 * x20 + y20 * y20,\n l21 = Math.sqrt(l21_2),\n l01 = Math.sqrt(l01_2),\n l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n t01 = l / l01,\n t21 = l / l21;\n\n // If the start tangent is not coincident with (x0,y0), line to.\n if (Math.abs(t01 - 1) > epsilon) {\n this._ += \"L\" + (x1 + t01 * x01) + \",\" + (y1 + t01 * y01);\n }\n\n this._ += \"A\" + r + \",\" + r + \",0,0,\" + (+(y01 * x20 > x01 * y20)) + \",\" + (this._x1 = x1 + t21 * x21) + \",\" + (this._y1 = y1 + t21 * y21);\n }\n },\n arc: function(x, y, r, a0, a1, ccw) {\n x = +x, y = +y, r = +r, ccw = !!ccw;\n var dx = r * Math.cos(a0),\n dy = r * Math.sin(a0),\n x0 = x + dx,\n y0 = y + dy,\n cw = 1 ^ ccw,\n da = ccw ? a0 - a1 : a1 - a0;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x0,y0).\n if (this._x1 === null) {\n this._ += \"M\" + x0 + \",\" + y0;\n }\n\n // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n this._ += \"L\" + x0 + \",\" + y0;\n }\n\n // Is this arc empty? We’re done.\n if (!r) return;\n\n // Does the angle go the wrong way? Flip the direction.\n if (da < 0) da = da % tau + tau;\n\n // Is this a complete circle? Draw two arcs to complete the circle.\n if (da > tauEpsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (x - dx) + \",\" + (y - dy) + \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (this._x1 = x0) + \",\" + (this._y1 = y0);\n }\n\n // Is this arc non-empty? Draw an arc!\n else if (da > epsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,\" + (+(da >= pi)) + \",\" + cw + \",\" + (this._x1 = x + r * Math.cos(a1)) + \",\" + (this._y1 = y + r * Math.sin(a1));\n }\n },\n rect: function(x, y, w, h) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y) + \"h\" + (+w) + \"v\" + (+h) + \"h\" + (-w) + \"Z\";\n },\n toString: function() {\n return this._;\n }\n};\n\nexport default path;\n","export default function(polygon) {\n var i = -1,\n n = polygon.length,\n a,\n b = polygon[n - 1],\n area = 0;\n\n while (++i < n) {\n a = b;\n b = polygon[i];\n area += a[1] * b[0] - a[0] * b[1];\n }\n\n return area / 2;\n}\n","export default function(polygon) {\n var i = -1,\n n = polygon.length,\n x = 0,\n y = 0,\n a,\n b = polygon[n - 1],\n c,\n k = 0;\n\n while (++i < n) {\n a = b;\n b = polygon[i];\n k += c = a[0] * b[1] - b[0] * a[1];\n x += (a[0] + b[0]) * c;\n y += (a[1] + b[1]) * c;\n }\n\n return k *= 3, [x / k, y / k];\n}\n","export default function(polygon, point) {\n var n = polygon.length,\n p = polygon[n - 1],\n x = point[0], y = point[1],\n x0 = p[0], y0 = p[1],\n x1, y1,\n inside = false;\n\n for (var i = 0; i < n; ++i) {\n p = polygon[i], x1 = p[0], y1 = p[1];\n if (((y1 > y) !== (y0 > y)) && (x < (x0 - x1) * (y - y1) / (y0 - y1) + x1)) inside = !inside;\n x0 = x1, y0 = y1;\n }\n\n return inside;\n}\n","// Returns the 2D cross product of AB and AC vectors, i.e., the z-component of\n// the 3D cross product in a quadrant I Cartesian coordinate system (+x is\n// right, +y is up). Returns a positive value if ABC is counter-clockwise,\n// negative if clockwise, and zero if the points are collinear.\nexport default function(a, b, c) {\n return (b[0] - a[0]) * (c[1] - a[1]) - (b[1] - a[1]) * (c[0] - a[0]);\n}\n","import cross from \"./cross.js\";\n\nfunction lexicographicOrder(a, b) {\n return a[0] - b[0] || a[1] - b[1];\n}\n\n// Computes the upper convex hull per the monotone chain algorithm.\n// Assumes points.length >= 3, is sorted by x, unique in y.\n// Returns an array of indices into points in left-to-right order.\nfunction computeUpperHullIndexes(points) {\n var n = points.length,\n indexes = [0, 1],\n size = 2;\n\n for (var i = 2; i < n; ++i) {\n while (size > 1 && cross(points[indexes[size - 2]], points[indexes[size - 1]], points[i]) <= 0) --size;\n indexes[size++] = i;\n }\n\n return indexes.slice(0, size); // remove popped points\n}\n\nexport default function(points) {\n if ((n = points.length) < 3) return null;\n\n var i,\n n,\n sortedPoints = new Array(n),\n flippedPoints = new Array(n);\n\n for (i = 0; i < n; ++i) sortedPoints[i] = [+points[i][0], +points[i][1], i];\n sortedPoints.sort(lexicographicOrder);\n for (i = 0; i < n; ++i) flippedPoints[i] = [sortedPoints[i][0], -sortedPoints[i][1]];\n\n var upperIndexes = computeUpperHullIndexes(sortedPoints),\n lowerIndexes = computeUpperHullIndexes(flippedPoints);\n\n // Construct the hull polygon, removing possible duplicate endpoints.\n var skipLeft = lowerIndexes[0] === upperIndexes[0],\n skipRight = lowerIndexes[lowerIndexes.length - 1] === upperIndexes[upperIndexes.length - 1],\n hull = [];\n\n // Add upper hull in right-to-l order.\n // Then add lower hull in left-to-right order.\n for (i = upperIndexes.length - 1; i >= 0; --i) hull.push(points[sortedPoints[upperIndexes[i]][2]]);\n for (i = +skipLeft; i < lowerIndexes.length - skipRight; ++i) hull.push(points[sortedPoints[lowerIndexes[i]][2]]);\n\n return hull;\n}\n","export {default as polygonArea} from \"./area.js\";\nexport {default as polygonCentroid} from \"./centroid.js\";\nexport {default as polygonHull} from \"./hull.js\";\nexport {default as polygonContains} from \"./contains.js\";\nexport {default as polygonLength} from \"./length.js\";\n","export default function(polygon) {\n var i = -1,\n n = polygon.length,\n b = polygon[n - 1],\n xa,\n ya,\n xb = b[0],\n yb = b[1],\n perimeter = 0;\n\n while (++i < n) {\n xa = xb;\n ya = yb;\n b = polygon[i];\n xb = b[0];\n yb = b[1];\n xa -= xb;\n ya -= yb;\n perimeter += Math.sqrt(xa * xa + ya * ya);\n }\n\n return perimeter;\n}\n","export default function(d) {\n var x = +this._x.call(null, d),\n y = +this._y.call(null, d);\n return add(this.cover(x, y), x, y, d);\n}\n\nfunction add(tree, x, y, d) {\n if (isNaN(x) || isNaN(y)) return tree; // ignore invalid points\n\n var parent,\n node = tree._root,\n leaf = {data: d},\n x0 = tree._x0,\n y0 = tree._y0,\n x1 = tree._x1,\n y1 = tree._y1,\n xm,\n ym,\n xp,\n yp,\n right,\n bottom,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return tree._root = leaf, tree;\n\n // Find the existing leaf for the new point, or add it.\n while (node.length) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n if (parent = node, !(node = node[i = bottom << 1 | right])) return parent[i] = leaf, tree;\n }\n\n // Is the new point is exactly coincident with the existing point?\n xp = +tree._x.call(null, node.data);\n yp = +tree._y.call(null, node.data);\n if (x === xp && y === yp) return leaf.next = node, parent ? parent[i] = leaf : tree._root = leaf, tree;\n\n // Otherwise, split the leaf node until the old and new point are separated.\n do {\n parent = parent ? parent[i] = new Array(4) : tree._root = new Array(4);\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n } while ((i = bottom << 1 | right) === (j = (yp >= ym) << 1 | (xp >= xm)));\n return parent[j] = node, parent[i] = leaf, tree;\n}\n\nexport function addAll(data) {\n var d, i, n = data.length,\n x,\n y,\n xz = new Array(n),\n yz = new Array(n),\n x0 = Infinity,\n y0 = Infinity,\n x1 = -Infinity,\n y1 = -Infinity;\n\n // Compute the points and their extent.\n for (i = 0; i < n; ++i) {\n if (isNaN(x = +this._x.call(null, d = data[i])) || isNaN(y = +this._y.call(null, d))) continue;\n xz[i] = x;\n yz[i] = y;\n if (x < x0) x0 = x;\n if (x > x1) x1 = x;\n if (y < y0) y0 = y;\n if (y > y1) y1 = y;\n }\n\n // If there were no (valid) points, abort.\n if (x0 > x1 || y0 > y1) return this;\n\n // Expand the tree to cover the new points.\n this.cover(x0, y0).cover(x1, y1);\n\n // Add the new points.\n for (i = 0; i < n; ++i) {\n add(this, xz[i], yz[i], data[i]);\n }\n\n return this;\n}\n","export default function(x, y) {\n if (isNaN(x = +x) || isNaN(y = +y)) return this; // ignore invalid points\n\n var x0 = this._x0,\n y0 = this._y0,\n x1 = this._x1,\n y1 = this._y1;\n\n // If the quadtree has no extent, initialize them.\n // Integer extent are necessary so that if we later double the extent,\n // the existing quadrant boundaries don’t change due to floating point error!\n if (isNaN(x0)) {\n x1 = (x0 = Math.floor(x)) + 1;\n y1 = (y0 = Math.floor(y)) + 1;\n }\n\n // Otherwise, double repeatedly to cover.\n else {\n var z = x1 - x0,\n node = this._root,\n parent,\n i;\n\n while (x0 > x || x >= x1 || y0 > y || y >= y1) {\n i = (y < y0) << 1 | (x < x0);\n parent = new Array(4), parent[i] = node, node = parent, z *= 2;\n switch (i) {\n case 0: x1 = x0 + z, y1 = y0 + z; break;\n case 1: x0 = x1 - z, y1 = y0 + z; break;\n case 2: x1 = x0 + z, y0 = y1 - z; break;\n case 3: x0 = x1 - z, y0 = y1 - z; break;\n }\n }\n\n if (this._root && this._root.length) this._root = node;\n }\n\n this._x0 = x0;\n this._y0 = y0;\n this._x1 = x1;\n this._y1 = y1;\n return this;\n}\n","export default function() {\n var data = [];\n this.visit(function(node) {\n if (!node.length) do data.push(node.data); while (node = node.next)\n });\n return data;\n}\n","export default function(_) {\n return arguments.length\n ? this.cover(+_[0][0], +_[0][1]).cover(+_[1][0], +_[1][1])\n : isNaN(this._x0) ? undefined : [[this._x0, this._y0], [this._x1, this._y1]];\n}\n","import Quad from \"./quad.js\";\n\nexport default function(x, y, radius) {\n var data,\n x0 = this._x0,\n y0 = this._y0,\n x1,\n y1,\n x2,\n y2,\n x3 = this._x1,\n y3 = this._y1,\n quads = [],\n node = this._root,\n q,\n i;\n\n if (node) quads.push(new Quad(node, x0, y0, x3, y3));\n if (radius == null) radius = Infinity;\n else {\n x0 = x - radius, y0 = y - radius;\n x3 = x + radius, y3 = y + radius;\n radius *= radius;\n }\n\n while (q = quads.pop()) {\n\n // Stop searching if this quadrant can’t contain a closer node.\n if (!(node = q.node)\n || (x1 = q.x0) > x3\n || (y1 = q.y0) > y3\n || (x2 = q.x1) < x0\n || (y2 = q.y1) < y0) continue;\n\n // Bisect the current quadrant.\n if (node.length) {\n var xm = (x1 + x2) / 2,\n ym = (y1 + y2) / 2;\n\n quads.push(\n new Quad(node[3], xm, ym, x2, y2),\n new Quad(node[2], x1, ym, xm, y2),\n new Quad(node[1], xm, y1, x2, ym),\n new Quad(node[0], x1, y1, xm, ym)\n );\n\n // Visit the closest quadrant first.\n if (i = (y >= ym) << 1 | (x >= xm)) {\n q = quads[quads.length - 1];\n quads[quads.length - 1] = quads[quads.length - 1 - i];\n quads[quads.length - 1 - i] = q;\n }\n }\n\n // Visit this point. (Visiting coincident points isn’t necessary!)\n else {\n var dx = x - +this._x.call(null, node.data),\n dy = y - +this._y.call(null, node.data),\n d2 = dx * dx + dy * dy;\n if (d2 < radius) {\n var d = Math.sqrt(radius = d2);\n x0 = x - d, y0 = y - d;\n x3 = x + d, y3 = y + d;\n data = node.data;\n }\n }\n }\n\n return data;\n}\n","export {default as quadtree} from \"./quadtree.js\";\n","export default function(node, x0, y0, x1, y1) {\n this.node = node;\n this.x0 = x0;\n this.y0 = y0;\n this.x1 = x1;\n this.y1 = y1;\n}\n","import tree_add, {addAll as tree_addAll} from \"./add.js\";\nimport tree_cover from \"./cover.js\";\nimport tree_data from \"./data.js\";\nimport tree_extent from \"./extent.js\";\nimport tree_find from \"./find.js\";\nimport tree_remove, {removeAll as tree_removeAll} from \"./remove.js\";\nimport tree_root from \"./root.js\";\nimport tree_size from \"./size.js\";\nimport tree_visit from \"./visit.js\";\nimport tree_visitAfter from \"./visitAfter.js\";\nimport tree_x, {defaultX} from \"./x.js\";\nimport tree_y, {defaultY} from \"./y.js\";\n\nexport default function quadtree(nodes, x, y) {\n var tree = new Quadtree(x == null ? defaultX : x, y == null ? defaultY : y, NaN, NaN, NaN, NaN);\n return nodes == null ? tree : tree.addAll(nodes);\n}\n\nfunction Quadtree(x, y, x0, y0, x1, y1) {\n this._x = x;\n this._y = y;\n this._x0 = x0;\n this._y0 = y0;\n this._x1 = x1;\n this._y1 = y1;\n this._root = undefined;\n}\n\nfunction leaf_copy(leaf) {\n var copy = {data: leaf.data}, next = copy;\n while (leaf = leaf.next) next = next.next = {data: leaf.data};\n return copy;\n}\n\nvar treeProto = quadtree.prototype = Quadtree.prototype;\n\ntreeProto.copy = function() {\n var copy = new Quadtree(this._x, this._y, this._x0, this._y0, this._x1, this._y1),\n node = this._root,\n nodes,\n child;\n\n if (!node) return copy;\n\n if (!node.length) return copy._root = leaf_copy(node), copy;\n\n nodes = [{source: node, target: copy._root = new Array(4)}];\n while (node = nodes.pop()) {\n for (var i = 0; i < 4; ++i) {\n if (child = node.source[i]) {\n if (child.length) nodes.push({source: child, target: node.target[i] = new Array(4)});\n else node.target[i] = leaf_copy(child);\n }\n }\n }\n\n return copy;\n};\n\ntreeProto.add = tree_add;\ntreeProto.addAll = tree_addAll;\ntreeProto.cover = tree_cover;\ntreeProto.data = tree_data;\ntreeProto.extent = tree_extent;\ntreeProto.find = tree_find;\ntreeProto.remove = tree_remove;\ntreeProto.removeAll = tree_removeAll;\ntreeProto.root = tree_root;\ntreeProto.size = tree_size;\ntreeProto.visit = tree_visit;\ntreeProto.visitAfter = tree_visitAfter;\ntreeProto.x = tree_x;\ntreeProto.y = tree_y;\n","export default function(d) {\n if (isNaN(x = +this._x.call(null, d)) || isNaN(y = +this._y.call(null, d))) return this; // ignore invalid points\n\n var parent,\n node = this._root,\n retainer,\n previous,\n next,\n x0 = this._x0,\n y0 = this._y0,\n x1 = this._x1,\n y1 = this._y1,\n x,\n y,\n xm,\n ym,\n right,\n bottom,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return this;\n\n // Find the leaf node for the point.\n // While descending, also retain the deepest parent with a non-removed sibling.\n if (node.length) while (true) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n if (!(parent = node, node = node[i = bottom << 1 | right])) return this;\n if (!node.length) break;\n if (parent[(i + 1) & 3] || parent[(i + 2) & 3] || parent[(i + 3) & 3]) retainer = parent, j = i;\n }\n\n // Find the point to remove.\n while (node.data !== d) if (!(previous = node, node = node.next)) return this;\n if (next = node.next) delete node.next;\n\n // If there are multiple coincident points, remove just the point.\n if (previous) return (next ? previous.next = next : delete previous.next), this;\n\n // If this is the root point, remove it.\n if (!parent) return this._root = next, this;\n\n // Remove this leaf.\n next ? parent[i] = next : delete parent[i];\n\n // If the parent now contains exactly one leaf, collapse superfluous parents.\n if ((node = parent[0] || parent[1] || parent[2] || parent[3])\n && node === (parent[3] || parent[2] || parent[1] || parent[0])\n && !node.length) {\n if (retainer) retainer[j] = node;\n else this._root = node;\n }\n\n return this;\n}\n\nexport function removeAll(data) {\n for (var i = 0, n = data.length; i < n; ++i) this.remove(data[i]);\n return this;\n}\n","export default function() {\n return this._root;\n}\n","export default function() {\n var size = 0;\n this.visit(function(node) {\n if (!node.length) do ++size; while (node = node.next)\n });\n return size;\n}\n","import Quad from \"./quad.js\";\n\nexport default function(callback) {\n var quads = [], q, node = this._root, child, x0, y0, x1, y1;\n if (node) quads.push(new Quad(node, this._x0, this._y0, this._x1, this._y1));\n while (q = quads.pop()) {\n if (!callback(node = q.node, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1) && node.length) {\n var xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n }\n }\n return this;\n}\n","import Quad from \"./quad.js\";\n\nexport default function(callback) {\n var quads = [], next = [], q;\n if (this._root) quads.push(new Quad(this._root, this._x0, this._y0, this._x1, this._y1));\n while (q = quads.pop()) {\n var node = q.node;\n if (node.length) {\n var child, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1, xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n }\n next.push(q);\n }\n while (q = next.pop()) {\n callback(q.node, q.x0, q.y0, q.x1, q.y1);\n }\n return this;\n}\n","export function defaultX(d) {\n return d[0];\n}\n\nexport default function(_) {\n return arguments.length ? (this._x = _, this) : this._x;\n}\n","export function defaultY(d) {\n return d[1];\n}\n\nexport default function(_) {\n return arguments.length ? (this._y = _, this) : this._y;\n}\n","import defaultSource from \"./defaultSource\";\nimport irwinHall from \"./irwinHall\";\n\nexport default (function sourceRandomBates(source) {\n function randomBates(n) {\n var randomIrwinHall = irwinHall.source(source)(n);\n return function() {\n return randomIrwinHall() / n;\n };\n }\n\n randomBates.source = sourceRandomBates;\n\n return randomBates;\n})(defaultSource);\n","export default function() {\n return Math.random();\n}\n","import defaultSource from \"./defaultSource\";\n\nexport default (function sourceRandomExponential(source) {\n function randomExponential(lambda) {\n return function() {\n return -Math.log(1 - source()) / lambda;\n };\n }\n\n randomExponential.source = sourceRandomExponential;\n\n return randomExponential;\n})(defaultSource);\n","export {default as randomUniform} from \"./uniform\";\nexport {default as randomNormal} from \"./normal\";\nexport {default as randomLogNormal} from \"./logNormal\";\nexport {default as randomBates} from \"./bates\";\nexport {default as randomIrwinHall} from \"./irwinHall\";\nexport {default as randomExponential} from \"./exponential\";\n","import defaultSource from \"./defaultSource\";\n\nexport default (function sourceRandomIrwinHall(source) {\n function randomIrwinHall(n) {\n return function() {\n for (var sum = 0, i = 0; i < n; ++i) sum += source();\n return sum;\n };\n }\n\n randomIrwinHall.source = sourceRandomIrwinHall;\n\n return randomIrwinHall;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\nimport normal from \"./normal\";\n\nexport default (function sourceRandomLogNormal(source) {\n function randomLogNormal() {\n var randomNormal = normal.source(source).apply(this, arguments);\n return function() {\n return Math.exp(randomNormal());\n };\n }\n\n randomLogNormal.source = sourceRandomLogNormal;\n\n return randomLogNormal;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\n\nexport default (function sourceRandomNormal(source) {\n function randomNormal(mu, sigma) {\n var x, r;\n mu = mu == null ? 0 : +mu;\n sigma = sigma == null ? 1 : +sigma;\n return function() {\n var y;\n\n // If available, use the second previously-generated uniform random.\n if (x != null) y = x, x = null;\n\n // Otherwise, generate a new x and y.\n else do {\n x = source() * 2 - 1;\n y = source() * 2 - 1;\n r = x * x + y * y;\n } while (!r || r > 1);\n\n return mu + sigma * y * Math.sqrt(-2 * Math.log(r) / r);\n };\n }\n\n randomNormal.source = sourceRandomNormal;\n\n return randomNormal;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\n\nexport default (function sourceRandomUniform(source) {\n function randomUniform(min, max) {\n min = min == null ? 0 : +min;\n max = max == null ? 1 : +max;\n if (arguments.length === 1) max = min, min = 0;\n else max -= min;\n return function() {\n return source() * max + min;\n };\n }\n\n randomUniform.source = sourceRandomUniform;\n\n return randomUniform;\n})(defaultSource);\n","import colors from \"../colors.js\";\n\nexport default colors(\"7fc97fbeaed4fdc086ffff99386cb0f0027fbf5b17666666\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"1b9e77d95f027570b3e7298a66a61ee6ab02a6761d666666\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"fbb4aeb3cde3ccebc5decbe4fed9a6ffffcce5d8bdfddaecf2f2f2\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"b3e2cdfdcdaccbd5e8f4cae4e6f5c9fff2aef1e2cccccccc\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"e41a1c377eb84daf4a984ea3ff7f00ffff33a65628f781bf999999\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"66c2a5fc8d628da0cbe78ac3a6d854ffd92fe5c494b3b3b3\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9bc80bdccebc5ffed6f\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"4e79a7f28e2ce1575976b7b259a14fedc949af7aa1ff9da79c755fbab0ab\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf\");\n","export default function(specifier) {\n var n = specifier.length / 6 | 0, colors = new Array(n), i = 0;\n while (i < n) colors[i] = \"#\" + specifier.slice(i * 6, ++i * 6);\n return colors;\n}\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"d8b365f5f5f55ab4ac\",\n \"a6611adfc27d80cdc1018571\",\n \"a6611adfc27df5f5f580cdc1018571\",\n \"8c510ad8b365f6e8c3c7eae55ab4ac01665e\",\n \"8c510ad8b365f6e8c3f5f5f5c7eae55ab4ac01665e\",\n \"8c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e\",\n \"8c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e\",\n \"5430058c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e003c30\",\n \"5430058c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e003c30\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"af8dc3f7f7f77fbf7b\",\n \"7b3294c2a5cfa6dba0008837\",\n \"7b3294c2a5cff7f7f7a6dba0008837\",\n \"762a83af8dc3e7d4e8d9f0d37fbf7b1b7837\",\n \"762a83af8dc3e7d4e8f7f7f7d9f0d37fbf7b1b7837\",\n \"762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b7837\",\n \"762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b7837\",\n \"40004b762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b783700441b\",\n \"40004b762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b783700441b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e9a3c9f7f7f7a1d76a\",\n \"d01c8bf1b6dab8e1864dac26\",\n \"d01c8bf1b6daf7f7f7b8e1864dac26\",\n \"c51b7de9a3c9fde0efe6f5d0a1d76a4d9221\",\n \"c51b7de9a3c9fde0eff7f7f7e6f5d0a1d76a4d9221\",\n \"c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221\",\n \"c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221\",\n \"8e0152c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221276419\",\n \"8e0152c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221276419\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"998ec3f7f7f7f1a340\",\n \"5e3c99b2abd2fdb863e66101\",\n \"5e3c99b2abd2f7f7f7fdb863e66101\",\n \"542788998ec3d8daebfee0b6f1a340b35806\",\n \"542788998ec3d8daebf7f7f7fee0b6f1a340b35806\",\n \"5427888073acb2abd2d8daebfee0b6fdb863e08214b35806\",\n \"5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b35806\",\n \"2d004b5427888073acb2abd2d8daebfee0b6fdb863e08214b358067f3b08\",\n \"2d004b5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b358067f3b08\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"ef8a62f7f7f767a9cf\",\n \"ca0020f4a58292c5de0571b0\",\n \"ca0020f4a582f7f7f792c5de0571b0\",\n \"b2182bef8a62fddbc7d1e5f067a9cf2166ac\",\n \"b2182bef8a62fddbc7f7f7f7d1e5f067a9cf2166ac\",\n \"b2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac\",\n \"b2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac\",\n \"67001fb2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac053061\",\n \"67001fb2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac053061\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"ef8a62ffffff999999\",\n \"ca0020f4a582bababa404040\",\n \"ca0020f4a582ffffffbababa404040\",\n \"b2182bef8a62fddbc7e0e0e09999994d4d4d\",\n \"b2182bef8a62fddbc7ffffffe0e0e09999994d4d4d\",\n \"b2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d\",\n \"b2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d\",\n \"67001fb2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d1a1a1a\",\n \"67001fb2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d1a1a1a\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fc8d59ffffbf91bfdb\",\n \"d7191cfdae61abd9e92c7bb6\",\n \"d7191cfdae61ffffbfabd9e92c7bb6\",\n \"d73027fc8d59fee090e0f3f891bfdb4575b4\",\n \"d73027fc8d59fee090ffffbfe0f3f891bfdb4575b4\",\n \"d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4\",\n \"d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4\",\n \"a50026d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4313695\",\n \"a50026d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4313695\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fc8d59ffffbf91cf60\",\n \"d7191cfdae61a6d96a1a9641\",\n \"d7191cfdae61ffffbfa6d96a1a9641\",\n \"d73027fc8d59fee08bd9ef8b91cf601a9850\",\n \"d73027fc8d59fee08bffffbfd9ef8b91cf601a9850\",\n \"d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850\",\n \"d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850\",\n \"a50026d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850006837\",\n \"a50026d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850006837\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fc8d59ffffbf99d594\",\n \"d7191cfdae61abdda42b83ba\",\n \"d7191cfdae61ffffbfabdda42b83ba\",\n \"d53e4ffc8d59fee08be6f59899d5943288bd\",\n \"d53e4ffc8d59fee08bffffbfe6f59899d5943288bd\",\n \"d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd\",\n \"d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd\",\n \"9e0142d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd5e4fa2\",\n \"9e0142d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd5e4fa2\"\n).map(colors);\n\nexport default ramp(scheme);\n","export {default as schemeCategory10} from \"./categorical/category10.js\";\nexport {default as schemeAccent} from \"./categorical/Accent.js\";\nexport {default as schemeDark2} from \"./categorical/Dark2.js\";\nexport {default as schemePaired} from \"./categorical/Paired.js\";\nexport {default as schemePastel1} from \"./categorical/Pastel1.js\";\nexport {default as schemePastel2} from \"./categorical/Pastel2.js\";\nexport {default as schemeSet1} from \"./categorical/Set1.js\";\nexport {default as schemeSet2} from \"./categorical/Set2.js\";\nexport {default as schemeSet3} from \"./categorical/Set3.js\";\nexport {default as schemeTableau10} from \"./categorical/Tableau10.js\";\nexport {default as interpolateBrBG, scheme as schemeBrBG} from \"./diverging/BrBG.js\";\nexport {default as interpolatePRGn, scheme as schemePRGn} from \"./diverging/PRGn.js\";\nexport {default as interpolatePiYG, scheme as schemePiYG} from \"./diverging/PiYG.js\";\nexport {default as interpolatePuOr, scheme as schemePuOr} from \"./diverging/PuOr.js\";\nexport {default as interpolateRdBu, scheme as schemeRdBu} from \"./diverging/RdBu.js\";\nexport {default as interpolateRdGy, scheme as schemeRdGy} from \"./diverging/RdGy.js\";\nexport {default as interpolateRdYlBu, scheme as schemeRdYlBu} from \"./diverging/RdYlBu.js\";\nexport {default as interpolateRdYlGn, scheme as schemeRdYlGn} from \"./diverging/RdYlGn.js\";\nexport {default as interpolateSpectral, scheme as schemeSpectral} from \"./diverging/Spectral.js\";\nexport {default as interpolateBuGn, scheme as schemeBuGn} from \"./sequential-multi/BuGn.js\";\nexport {default as interpolateBuPu, scheme as schemeBuPu} from \"./sequential-multi/BuPu.js\";\nexport {default as interpolateGnBu, scheme as schemeGnBu} from \"./sequential-multi/GnBu.js\";\nexport {default as interpolateOrRd, scheme as schemeOrRd} from \"./sequential-multi/OrRd.js\";\nexport {default as interpolatePuBuGn, scheme as schemePuBuGn} from \"./sequential-multi/PuBuGn.js\";\nexport {default as interpolatePuBu, scheme as schemePuBu} from \"./sequential-multi/PuBu.js\";\nexport {default as interpolatePuRd, scheme as schemePuRd} from \"./sequential-multi/PuRd.js\";\nexport {default as interpolateRdPu, scheme as schemeRdPu} from \"./sequential-multi/RdPu.js\";\nexport {default as interpolateYlGnBu, scheme as schemeYlGnBu} from \"./sequential-multi/YlGnBu.js\";\nexport {default as interpolateYlGn, scheme as schemeYlGn} from \"./sequential-multi/YlGn.js\";\nexport {default as interpolateYlOrBr, scheme as schemeYlOrBr} from \"./sequential-multi/YlOrBr.js\";\nexport {default as interpolateYlOrRd, scheme as schemeYlOrRd} from \"./sequential-multi/YlOrRd.js\";\nexport {default as interpolateBlues, scheme as schemeBlues} from \"./sequential-single/Blues.js\";\nexport {default as interpolateGreens, scheme as schemeGreens} from \"./sequential-single/Greens.js\";\nexport {default as interpolateGreys, scheme as schemeGreys} from \"./sequential-single/Greys.js\";\nexport {default as interpolatePurples, scheme as schemePurples} from \"./sequential-single/Purples.js\";\nexport {default as interpolateReds, scheme as schemeReds} from \"./sequential-single/Reds.js\";\nexport {default as interpolateOranges, scheme as schemeOranges} from \"./sequential-single/Oranges.js\";\nexport {default as interpolateCividis} from \"./sequential-multi/cividis.js\";\nexport {default as interpolateCubehelixDefault} from \"./sequential-multi/cubehelix.js\";\nexport {default as interpolateRainbow, warm as interpolateWarm, cool as interpolateCool} from \"./sequential-multi/rainbow.js\";\nexport {default as interpolateSinebow} from \"./sequential-multi/sinebow.js\";\nexport {default as interpolateTurbo} from \"./sequential-multi/turbo.js\";\nexport {default as interpolateViridis, magma as interpolateMagma, inferno as interpolateInferno, plasma as interpolatePlasma} from \"./sequential-multi/viridis.js\";\n","import {interpolateRgbBasis} from \"d3-interpolate\";\n\nexport default function(scheme) {\n return interpolateRgbBasis(scheme[scheme.length - 1]);\n}\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e5f5f999d8c92ca25f\",\n \"edf8fbb2e2e266c2a4238b45\",\n \"edf8fbb2e2e266c2a42ca25f006d2c\",\n \"edf8fbccece699d8c966c2a42ca25f006d2c\",\n \"edf8fbccece699d8c966c2a441ae76238b45005824\",\n \"f7fcfde5f5f9ccece699d8c966c2a441ae76238b45005824\",\n \"f7fcfde5f5f9ccece699d8c966c2a441ae76238b45006d2c00441b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e0ecf49ebcda8856a7\",\n \"edf8fbb3cde38c96c688419d\",\n \"edf8fbb3cde38c96c68856a7810f7c\",\n \"edf8fbbfd3e69ebcda8c96c68856a7810f7c\",\n \"edf8fbbfd3e69ebcda8c96c68c6bb188419d6e016b\",\n \"f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d6e016b\",\n \"f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d810f7c4d004b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e0f3dba8ddb543a2ca\",\n \"f0f9e8bae4bc7bccc42b8cbe\",\n \"f0f9e8bae4bc7bccc443a2ca0868ac\",\n \"f0f9e8ccebc5a8ddb57bccc443a2ca0868ac\",\n \"f0f9e8ccebc5a8ddb57bccc44eb3d32b8cbe08589e\",\n \"f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe08589e\",\n \"f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe0868ac084081\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fee8c8fdbb84e34a33\",\n \"fef0d9fdcc8afc8d59d7301f\",\n \"fef0d9fdcc8afc8d59e34a33b30000\",\n \"fef0d9fdd49efdbb84fc8d59e34a33b30000\",\n \"fef0d9fdd49efdbb84fc8d59ef6548d7301f990000\",\n \"fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301f990000\",\n \"fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301fb300007f0000\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"ece7f2a6bddb2b8cbe\",\n \"f1eef6bdc9e174a9cf0570b0\",\n \"f1eef6bdc9e174a9cf2b8cbe045a8d\",\n \"f1eef6d0d1e6a6bddb74a9cf2b8cbe045a8d\",\n \"f1eef6d0d1e6a6bddb74a9cf3690c00570b0034e7b\",\n \"fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0034e7b\",\n \"fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0045a8d023858\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"ece2f0a6bddb1c9099\",\n \"f6eff7bdc9e167a9cf02818a\",\n \"f6eff7bdc9e167a9cf1c9099016c59\",\n \"f6eff7d0d1e6a6bddb67a9cf1c9099016c59\",\n \"f6eff7d0d1e6a6bddb67a9cf3690c002818a016450\",\n \"fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016450\",\n \"fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016c59014636\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e7e1efc994c7dd1c77\",\n \"f1eef6d7b5d8df65b0ce1256\",\n \"f1eef6d7b5d8df65b0dd1c77980043\",\n \"f1eef6d4b9dac994c7df65b0dd1c77980043\",\n \"f1eef6d4b9dac994c7df65b0e7298ace125691003f\",\n \"f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125691003f\",\n \"f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125698004367001f\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fde0ddfa9fb5c51b8a\",\n \"feebe2fbb4b9f768a1ae017e\",\n \"feebe2fbb4b9f768a1c51b8a7a0177\",\n \"feebe2fcc5c0fa9fb5f768a1c51b8a7a0177\",\n \"feebe2fcc5c0fa9fb5f768a1dd3497ae017e7a0177\",\n \"fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a0177\",\n \"fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a017749006a\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"f7fcb9addd8e31a354\",\n \"ffffccc2e69978c679238443\",\n \"ffffccc2e69978c67931a354006837\",\n \"ffffccd9f0a3addd8e78c67931a354006837\",\n \"ffffccd9f0a3addd8e78c67941ab5d238443005a32\",\n \"ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443005a32\",\n \"ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443006837004529\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"edf8b17fcdbb2c7fb8\",\n \"ffffcca1dab441b6c4225ea8\",\n \"ffffcca1dab441b6c42c7fb8253494\",\n \"ffffccc7e9b47fcdbb41b6c42c7fb8253494\",\n \"ffffccc7e9b47fcdbb41b6c41d91c0225ea80c2c84\",\n \"ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea80c2c84\",\n \"ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea8253494081d58\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fff7bcfec44fd95f0e\",\n \"ffffd4fed98efe9929cc4c02\",\n \"ffffd4fed98efe9929d95f0e993404\",\n \"ffffd4fee391fec44ffe9929d95f0e993404\",\n \"ffffd4fee391fec44ffe9929ec7014cc4c028c2d04\",\n \"ffffe5fff7bcfee391fec44ffe9929ec7014cc4c028c2d04\",\n \"ffffe5fff7bcfee391fec44ffe9929ec7014cc4c02993404662506\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"ffeda0feb24cf03b20\",\n \"ffffb2fecc5cfd8d3ce31a1c\",\n \"ffffb2fecc5cfd8d3cf03b20bd0026\",\n \"ffffb2fed976feb24cfd8d3cf03b20bd0026\",\n \"ffffb2fed976feb24cfd8d3cfc4e2ae31a1cb10026\",\n \"ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cb10026\",\n \"ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cbd0026800026\"\n).map(colors);\n\nexport default ramp(scheme);\n","export default function(t) {\n t = Math.max(0, Math.min(1, t));\n return \"rgb(\"\n + Math.max(0, Math.min(255, Math.round(-4.54 - t * (35.34 - t * (2381.73 - t * (6402.7 - t * (7024.72 - t * 2710.57))))))) + \", \"\n + Math.max(0, Math.min(255, Math.round(32.49 + t * (170.73 + t * (52.82 - t * (131.46 - t * (176.58 - t * 67.37))))))) + \", \"\n + Math.max(0, Math.min(255, Math.round(81.24 + t * (442.36 - t * (2482.43 - t * (6167.24 - t * (6614.94 - t * 2475.67)))))))\n + \")\";\n}\n","import {cubehelix} from \"d3-color\";\nimport {interpolateCubehelixLong} from \"d3-interpolate\";\n\nexport default interpolateCubehelixLong(cubehelix(300, 0.5, 0.0), cubehelix(-240, 0.5, 1.0));\n","import {cubehelix} from \"d3-color\";\nimport {interpolateCubehelixLong} from \"d3-interpolate\";\n\nexport var warm = interpolateCubehelixLong(cubehelix(-100, 0.75, 0.35), cubehelix(80, 1.50, 0.8));\n\nexport var cool = interpolateCubehelixLong(cubehelix(260, 0.75, 0.35), cubehelix(80, 1.50, 0.8));\n\nvar c = cubehelix();\n\nexport default function(t) {\n if (t < 0 || t > 1) t -= Math.floor(t);\n var ts = Math.abs(t - 0.5);\n c.h = 360 * t - 100;\n c.s = 1.5 - 1.5 * ts;\n c.l = 0.8 - 0.9 * ts;\n return c + \"\";\n}\n","import {rgb} from \"d3-color\";\n\nvar c = rgb(),\n pi_1_3 = Math.PI / 3,\n pi_2_3 = Math.PI * 2 / 3;\n\nexport default function(t) {\n var x;\n t = (0.5 - t) * Math.PI;\n c.r = 255 * (x = Math.sin(t)) * x;\n c.g = 255 * (x = Math.sin(t + pi_1_3)) * x;\n c.b = 255 * (x = Math.sin(t + pi_2_3)) * x;\n return c + \"\";\n}\n","export default function(t) {\n t = Math.max(0, Math.min(1, t));\n return \"rgb(\"\n + Math.max(0, Math.min(255, Math.round(34.61 + t * (1172.33 - t * (10793.56 - t * (33300.12 - t * (38394.49 - t * 14825.05))))))) + \", \"\n + Math.max(0, Math.min(255, Math.round(23.31 + t * (557.33 + t * (1225.33 - t * (3574.96 - t * (1073.77 + t * 707.56))))))) + \", \"\n + Math.max(0, Math.min(255, Math.round(27.2 + t * (3211.1 - t * (15327.97 - t * (27814 - t * (22569.18 - t * 6838.66)))))))\n + \")\";\n}\n","import colors from \"../colors.js\";\n\nfunction ramp(range) {\n var n = range.length;\n return function(t) {\n return range[Math.max(0, Math.min(n - 1, Math.floor(t * n)))];\n };\n}\n\nexport default ramp(colors(\"44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725\"));\n\nexport var magma = ramp(colors(\"00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf\"));\n\nexport var inferno = ramp(colors(\"00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4\"));\n\nexport var plasma = ramp(colors(\"0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d43039e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a45901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a29511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a62098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d04d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5de66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3afba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffdb42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc827fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1f525f0f724f0f921\"));\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"deebf79ecae13182bd\",\n \"eff3ffbdd7e76baed62171b5\",\n \"eff3ffbdd7e76baed63182bd08519c\",\n \"eff3ffc6dbef9ecae16baed63182bd08519c\",\n \"eff3ffc6dbef9ecae16baed64292c62171b5084594\",\n \"f7fbffdeebf7c6dbef9ecae16baed64292c62171b5084594\",\n \"f7fbffdeebf7c6dbef9ecae16baed64292c62171b508519c08306b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e5f5e0a1d99b31a354\",\n \"edf8e9bae4b374c476238b45\",\n \"edf8e9bae4b374c47631a354006d2c\",\n \"edf8e9c7e9c0a1d99b74c47631a354006d2c\",\n \"edf8e9c7e9c0a1d99b74c47641ab5d238b45005a32\",\n \"f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45005a32\",\n \"f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45006d2c00441b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"f0f0f0bdbdbd636363\",\n \"f7f7f7cccccc969696525252\",\n \"f7f7f7cccccc969696636363252525\",\n \"f7f7f7d9d9d9bdbdbd969696636363252525\",\n \"f7f7f7d9d9d9bdbdbd969696737373525252252525\",\n \"fffffff0f0f0d9d9d9bdbdbd969696737373525252252525\",\n \"fffffff0f0f0d9d9d9bdbdbd969696737373525252252525000000\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fee6cefdae6be6550d\",\n \"feeddefdbe85fd8d3cd94701\",\n \"feeddefdbe85fd8d3ce6550da63603\",\n \"feeddefdd0a2fdae6bfd8d3ce6550da63603\",\n \"feeddefdd0a2fdae6bfd8d3cf16913d948018c2d04\",\n \"fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d948018c2d04\",\n \"fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d94801a636037f2704\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"efedf5bcbddc756bb1\",\n \"f2f0f7cbc9e29e9ac86a51a3\",\n \"f2f0f7cbc9e29e9ac8756bb154278f\",\n \"f2f0f7dadaebbcbddc9e9ac8756bb154278f\",\n \"f2f0f7dadaebbcbddc9e9ac8807dba6a51a34a1486\",\n \"fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a34a1486\",\n \"fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a354278f3f007d\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fee0d2fc9272de2d26\",\n \"fee5d9fcae91fb6a4acb181d\",\n \"fee5d9fcae91fb6a4ade2d26a50f15\",\n \"fee5d9fcbba1fc9272fb6a4ade2d26a50f15\",\n \"fee5d9fcbba1fc9272fb6a4aef3b2ccb181d99000d\",\n \"fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181d99000d\",\n \"fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181da50f1567000d\"\n).map(colors);\n\nexport default ramp(scheme);\n","var array = Array.prototype;\n\nexport var map = array.map;\nexport var slice = array.slice;\n","import {range as sequence} from \"d3-array\";\nimport {initRange} from \"./init\";\nimport ordinal from \"./ordinal\";\n\nexport default function band() {\n var scale = ordinal().unknown(undefined),\n domain = scale.domain,\n ordinalRange = scale.range,\n range = [0, 1],\n step,\n bandwidth,\n round = false,\n paddingInner = 0,\n paddingOuter = 0,\n align = 0.5;\n\n delete scale.unknown;\n\n function rescale() {\n var n = domain().length,\n reverse = range[1] < range[0],\n start = range[reverse - 0],\n stop = range[1 - reverse];\n step = (stop - start) / Math.max(1, n - paddingInner + paddingOuter * 2);\n if (round) step = Math.floor(step);\n start += (stop - start - step * (n - paddingInner)) * align;\n bandwidth = step * (1 - paddingInner);\n if (round) start = Math.round(start), bandwidth = Math.round(bandwidth);\n var values = sequence(n).map(function(i) { return start + step * i; });\n return ordinalRange(reverse ? values.reverse() : values);\n }\n\n scale.domain = function(_) {\n return arguments.length ? (domain(_), rescale()) : domain();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = [+_[0], +_[1]], rescale()) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return range = [+_[0], +_[1]], round = true, rescale();\n };\n\n scale.bandwidth = function() {\n return bandwidth;\n };\n\n scale.step = function() {\n return step;\n };\n\n scale.round = function(_) {\n return arguments.length ? (round = !!_, rescale()) : round;\n };\n\n scale.padding = function(_) {\n return arguments.length ? (paddingInner = Math.min(1, paddingOuter = +_), rescale()) : paddingInner;\n };\n\n scale.paddingInner = function(_) {\n return arguments.length ? (paddingInner = Math.min(1, _), rescale()) : paddingInner;\n };\n\n scale.paddingOuter = function(_) {\n return arguments.length ? (paddingOuter = +_, rescale()) : paddingOuter;\n };\n\n scale.align = function(_) {\n return arguments.length ? (align = Math.max(0, Math.min(1, _)), rescale()) : align;\n };\n\n scale.copy = function() {\n return band(domain(), range)\n .round(round)\n .paddingInner(paddingInner)\n .paddingOuter(paddingOuter)\n .align(align);\n };\n\n return initRange.apply(rescale(), arguments);\n}\n\nfunction pointish(scale) {\n var copy = scale.copy;\n\n scale.padding = scale.paddingOuter;\n delete scale.paddingInner;\n delete scale.paddingOuter;\n\n scale.copy = function() {\n return pointish(copy());\n };\n\n return scale;\n}\n\nexport function point() {\n return pointish(band.apply(null, arguments).paddingInner(1));\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import {bisect} from \"d3-array\";\nimport {interpolate as interpolateValue, interpolateNumber, interpolateRound} from \"d3-interpolate\";\nimport {map, slice} from \"./array\";\nimport constant from \"./constant\";\nimport number from \"./number\";\n\nvar unit = [0, 1];\n\nexport function identity(x) {\n return x;\n}\n\nfunction normalize(a, b) {\n return (b -= (a = +a))\n ? function(x) { return (x - a) / b; }\n : constant(isNaN(b) ? NaN : 0.5);\n}\n\nfunction clamper(domain) {\n var a = domain[0], b = domain[domain.length - 1], t;\n if (a > b) t = a, a = b, b = t;\n return function(x) { return Math.max(a, Math.min(b, x)); };\n}\n\n// normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n// interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b].\nfunction bimap(domain, range, interpolate) {\n var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1];\n if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0);\n else d0 = normalize(d0, d1), r0 = interpolate(r0, r1);\n return function(x) { return r0(d0(x)); };\n}\n\nfunction polymap(domain, range, interpolate) {\n var j = Math.min(domain.length, range.length) - 1,\n d = new Array(j),\n r = new Array(j),\n i = -1;\n\n // Reverse descending domains.\n if (domain[j] < domain[0]) {\n domain = domain.slice().reverse();\n range = range.slice().reverse();\n }\n\n while (++i < j) {\n d[i] = normalize(domain[i], domain[i + 1]);\n r[i] = interpolate(range[i], range[i + 1]);\n }\n\n return function(x) {\n var i = bisect(domain, x, 1, j) - 1;\n return r[i](d[i](x));\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .range(source.range())\n .interpolate(source.interpolate())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nexport function transformer() {\n var domain = unit,\n range = unit,\n interpolate = interpolateValue,\n transform,\n untransform,\n unknown,\n clamp = identity,\n piecewise,\n output,\n input;\n\n function rescale() {\n piecewise = Math.min(domain.length, range.length) > 2 ? polymap : bimap;\n output = input = null;\n return scale;\n }\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x)));\n }\n\n scale.invert = function(y) {\n return clamp(untransform((input || (input = piecewise(range, domain.map(transform), interpolateNumber)))(y)));\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain = map.call(_, number), clamp === identity || (clamp = clamper(domain)), rescale()) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = slice.call(_), rescale()) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return range = slice.call(_), interpolate = interpolateRound, rescale();\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = _ ? clamper(domain) : identity, scale) : clamp !== identity;\n };\n\n scale.interpolate = function(_) {\n return arguments.length ? (interpolate = _, rescale()) : interpolate;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t, u) {\n transform = t, untransform = u;\n return rescale();\n };\n}\n\nexport default function continuous(transform, untransform) {\n return transformer()(transform, untransform);\n}\n","import {identity} from \"./continuous\";\nimport {initInterpolator} from \"./init\";\nimport {linearish} from \"./linear\";\nimport {loggish} from \"./log\";\nimport {copy} from \"./sequential\";\nimport {symlogish} from \"./symlog\";\nimport {powish} from \"./pow\";\n\nfunction transformer() {\n var x0 = 0,\n x1 = 0.5,\n x2 = 1,\n t0,\n t1,\n t2,\n k10,\n k21,\n interpolator = identity,\n transform,\n clamp = false,\n unknown;\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : (x = 0.5 + ((x = +transform(x)) - t1) * (x < t1 ? k10 : k21), interpolator(clamp ? Math.max(0, Math.min(1, x)) : x));\n }\n\n scale.domain = function(_) {\n return arguments.length ? (t0 = transform(x0 = +_[0]), t1 = transform(x1 = +_[1]), t2 = transform(x2 = +_[2]), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1), scale) : [x0, x1, x2];\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = !!_, scale) : clamp;\n };\n\n scale.interpolator = function(_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t) {\n transform = t, t0 = t(x0), t1 = t(x1), t2 = t(x2), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1);\n return scale;\n };\n}\n\nexport default function diverging() {\n var scale = linearish(transformer()(identity));\n\n scale.copy = function() {\n return copy(scale, diverging());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingLog() {\n var scale = loggish(transformer()).domain([0.1, 1, 10]);\n\n scale.copy = function() {\n return copy(scale, divergingLog()).base(scale.base());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingSymlog() {\n var scale = symlogish(transformer());\n\n scale.copy = function() {\n return copy(scale, divergingSymlog()).constant(scale.constant());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingPow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, divergingPow()).exponent(scale.exponent());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingSqrt() {\n return divergingPow.apply(null, arguments).exponent(0.5);\n}\n","import {map} from \"./array\";\nimport {linearish} from \"./linear\";\nimport number from \"./number\";\n\nexport default function identity(domain) {\n var unknown;\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : x;\n }\n\n scale.invert = scale;\n\n scale.domain = scale.range = function(_) {\n return arguments.length ? (domain = map.call(_, number), scale) : domain.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return identity(domain).unknown(unknown);\n };\n\n domain = arguments.length ? map.call(domain, number) : [0, 1];\n\n return linearish(scale);\n}\n","export {\n default as scaleBand,\n point as scalePoint\n} from \"./band\";\n\nexport {\n default as scaleIdentity\n} from \"./identity\";\n\nexport {\n default as scaleLinear\n} from \"./linear\";\n\nexport {\n default as scaleLog\n} from \"./log\";\n\nexport {\n default as scaleSymlog\n} from \"./symlog\";\n\nexport {\n default as scaleOrdinal,\n implicit as scaleImplicit\n} from \"./ordinal\";\n\nexport {\n default as scalePow,\n sqrt as scaleSqrt\n} from \"./pow\";\n\nexport {\n default as scaleQuantile\n} from \"./quantile\";\n\nexport {\n default as scaleQuantize\n} from \"./quantize\";\n\nexport {\n default as scaleThreshold\n} from \"./threshold\";\n\nexport {\n default as scaleTime\n} from \"./time\";\n\nexport {\n default as scaleUtc\n} from \"./utcTime\";\n\nexport {\n default as scaleSequential,\n sequentialLog as scaleSequentialLog,\n sequentialPow as scaleSequentialPow,\n sequentialSqrt as scaleSequentialSqrt,\n sequentialSymlog as scaleSequentialSymlog\n} from \"./sequential\";\n\nexport {\n default as scaleSequentialQuantile\n} from \"./sequentialQuantile\";\n\nexport {\n default as scaleDiverging,\n divergingLog as scaleDivergingLog,\n divergingPow as scaleDivergingPow,\n divergingSqrt as scaleDivergingSqrt,\n divergingSymlog as scaleDivergingSymlog\n} from \"./diverging\";\n\nexport {\n default as tickFormat\n} from \"./tickFormat\";\n","export function initRange(domain, range) {\n switch (arguments.length) {\n case 0: break;\n case 1: this.range(domain); break;\n default: this.range(range).domain(domain); break;\n }\n return this;\n}\n\nexport function initInterpolator(domain, interpolator) {\n switch (arguments.length) {\n case 0: break;\n case 1: this.interpolator(domain); break;\n default: this.interpolator(interpolator).domain(domain); break;\n }\n return this;\n}\n","import {ticks, tickIncrement} from \"d3-array\";\nimport continuous, {copy, identity} from \"./continuous\";\nimport {initRange} from \"./init\";\nimport tickFormat from \"./tickFormat\";\n\nexport function linearish(scale) {\n var domain = scale.domain;\n\n scale.ticks = function(count) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], count == null ? 10 : count);\n };\n\n scale.tickFormat = function(count, specifier) {\n var d = domain();\n return tickFormat(d[0], d[d.length - 1], count == null ? 10 : count, specifier);\n };\n\n scale.nice = function(count) {\n if (count == null) count = 10;\n\n var d = domain(),\n i0 = 0,\n i1 = d.length - 1,\n start = d[i0],\n stop = d[i1],\n step;\n\n if (stop < start) {\n step = start, start = stop, stop = step;\n step = i0, i0 = i1, i1 = step;\n }\n\n step = tickIncrement(start, stop, count);\n\n if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n step = tickIncrement(start, stop, count);\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n step = tickIncrement(start, stop, count);\n }\n\n if (step > 0) {\n d[i0] = Math.floor(start / step) * step;\n d[i1] = Math.ceil(stop / step) * step;\n domain(d);\n } else if (step < 0) {\n d[i0] = Math.ceil(start * step) / step;\n d[i1] = Math.floor(stop * step) / step;\n domain(d);\n }\n\n return scale;\n };\n\n return scale;\n}\n\nexport default function linear() {\n var scale = continuous(identity, identity);\n\n scale.copy = function() {\n return copy(scale, linear());\n };\n\n initRange.apply(scale, arguments);\n\n return linearish(scale);\n}\n","import {ticks} from \"d3-array\";\nimport {format} from \"d3-format\";\nimport nice from \"./nice\";\nimport {copy, transformer} from \"./continuous\";\nimport {initRange} from \"./init\";\n\nfunction transformLog(x) {\n return Math.log(x);\n}\n\nfunction transformExp(x) {\n return Math.exp(x);\n}\n\nfunction transformLogn(x) {\n return -Math.log(-x);\n}\n\nfunction transformExpn(x) {\n return -Math.exp(-x);\n}\n\nfunction pow10(x) {\n return isFinite(x) ? +(\"1e\" + x) : x < 0 ? 0 : x;\n}\n\nfunction powp(base) {\n return base === 10 ? pow10\n : base === Math.E ? Math.exp\n : function(x) { return Math.pow(base, x); };\n}\n\nfunction logp(base) {\n return base === Math.E ? Math.log\n : base === 10 && Math.log10\n || base === 2 && Math.log2\n || (base = Math.log(base), function(x) { return Math.log(x) / base; });\n}\n\nfunction reflect(f) {\n return function(x) {\n return -f(-x);\n };\n}\n\nexport function loggish(transform) {\n var scale = transform(transformLog, transformExp),\n domain = scale.domain,\n base = 10,\n logs,\n pows;\n\n function rescale() {\n logs = logp(base), pows = powp(base);\n if (domain()[0] < 0) {\n logs = reflect(logs), pows = reflect(pows);\n transform(transformLogn, transformExpn);\n } else {\n transform(transformLog, transformExp);\n }\n return scale;\n }\n\n scale.base = function(_) {\n return arguments.length ? (base = +_, rescale()) : base;\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain(_), rescale()) : domain();\n };\n\n scale.ticks = function(count) {\n var d = domain(),\n u = d[0],\n v = d[d.length - 1],\n r;\n\n if (r = v < u) i = u, u = v, v = i;\n\n var i = logs(u),\n j = logs(v),\n p,\n k,\n t,\n n = count == null ? 10 : +count,\n z = [];\n\n if (!(base % 1) && j - i < n) {\n i = Math.round(i) - 1, j = Math.round(j) + 1;\n if (u > 0) for (; i < j; ++i) {\n for (k = 1, p = pows(i); k < base; ++k) {\n t = p * k;\n if (t < u) continue;\n if (t > v) break;\n z.push(t);\n }\n } else for (; i < j; ++i) {\n for (k = base - 1, p = pows(i); k >= 1; --k) {\n t = p * k;\n if (t < u) continue;\n if (t > v) break;\n z.push(t);\n }\n }\n } else {\n z = ticks(i, j, Math.min(j - i, n)).map(pows);\n }\n\n return r ? z.reverse() : z;\n };\n\n scale.tickFormat = function(count, specifier) {\n if (specifier == null) specifier = base === 10 ? \".0e\" : \",\";\n if (typeof specifier !== \"function\") specifier = format(specifier);\n if (count === Infinity) return specifier;\n if (count == null) count = 10;\n var k = Math.max(1, base * count / scale.ticks().length); // TODO fast estimate?\n return function(d) {\n var i = d / pows(Math.round(logs(d)));\n if (i * base < base - 0.5) i *= base;\n return i <= k ? specifier(d) : \"\";\n };\n };\n\n scale.nice = function() {\n return domain(nice(domain(), {\n floor: function(x) { return pows(Math.floor(logs(x))); },\n ceil: function(x) { return pows(Math.ceil(logs(x))); }\n }));\n };\n\n return scale;\n}\n\nexport default function log() {\n var scale = loggish(transformer()).domain([1, 10]);\n\n scale.copy = function() {\n return copy(scale, log()).base(scale.base());\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n","export default function(domain, interval) {\n domain = domain.slice();\n\n var i0 = 0,\n i1 = domain.length - 1,\n x0 = domain[i0],\n x1 = domain[i1],\n t;\n\n if (x1 < x0) {\n t = i0, i0 = i1, i1 = t;\n t = x0, x0 = x1, x1 = t;\n }\n\n domain[i0] = interval.floor(x0);\n domain[i1] = interval.ceil(x1);\n return domain;\n}\n","export default function(x) {\n return +x;\n}\n","import {map} from \"d3-collection\";\nimport {slice} from \"./array\";\nimport {initRange} from \"./init\";\n\nexport var implicit = {name: \"implicit\"};\n\nexport default function ordinal() {\n var index = map(),\n domain = [],\n range = [],\n unknown = implicit;\n\n function scale(d) {\n var key = d + \"\", i = index.get(key);\n if (!i) {\n if (unknown !== implicit) return unknown;\n index.set(key, i = domain.push(d));\n }\n return range[(i - 1) % range.length];\n }\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [], index = map();\n var i = -1, n = _.length, d, key;\n while (++i < n) if (!index.has(key = (d = _[i]) + \"\")) index.set(key, domain.push(d));\n return scale;\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = slice.call(_), scale) : range.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return ordinal(domain, range).unknown(unknown);\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n","import {linearish} from \"./linear\";\nimport {copy, identity, transformer} from \"./continuous\";\nimport {initRange} from \"./init\";\n\nfunction transformPow(exponent) {\n return function(x) {\n return x < 0 ? -Math.pow(-x, exponent) : Math.pow(x, exponent);\n };\n}\n\nfunction transformSqrt(x) {\n return x < 0 ? -Math.sqrt(-x) : Math.sqrt(x);\n}\n\nfunction transformSquare(x) {\n return x < 0 ? -x * x : x * x;\n}\n\nexport function powish(transform) {\n var scale = transform(identity, identity),\n exponent = 1;\n\n function rescale() {\n return exponent === 1 ? transform(identity, identity)\n : exponent === 0.5 ? transform(transformSqrt, transformSquare)\n : transform(transformPow(exponent), transformPow(1 / exponent));\n }\n\n scale.exponent = function(_) {\n return arguments.length ? (exponent = +_, rescale()) : exponent;\n };\n\n return linearish(scale);\n}\n\nexport default function pow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, pow()).exponent(scale.exponent());\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n\nexport function sqrt() {\n return pow.apply(null, arguments).exponent(0.5);\n}\n","import {ascending, bisect, quantile as threshold} from \"d3-array\";\nimport {slice} from \"./array\";\nimport {initRange} from \"./init\";\n\nexport default function quantile() {\n var domain = [],\n range = [],\n thresholds = [],\n unknown;\n\n function rescale() {\n var i = 0, n = Math.max(1, range.length);\n thresholds = new Array(n - 1);\n while (++i < n) thresholds[i - 1] = threshold(domain, i / n);\n return scale;\n }\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : range[bisect(thresholds, x)];\n }\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return i < 0 ? [NaN, NaN] : [\n i > 0 ? thresholds[i - 1] : domain[0],\n i < thresholds.length ? thresholds[i] : domain[domain.length - 1]\n ];\n };\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [];\n for (var i = 0, n = _.length, d; i < n; ++i) if (d = _[i], d != null && !isNaN(d = +d)) domain.push(d);\n domain.sort(ascending);\n return rescale();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = slice.call(_), rescale()) : range.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.quantiles = function() {\n return thresholds.slice();\n };\n\n scale.copy = function() {\n return quantile()\n .domain(domain)\n .range(range)\n .unknown(unknown);\n };\n\n return initRange.apply(scale, arguments);\n}\n","import {bisect} from \"d3-array\";\nimport {slice} from \"./array\";\nimport {linearish} from \"./linear\";\nimport {initRange} from \"./init\";\n\nexport default function quantize() {\n var x0 = 0,\n x1 = 1,\n n = 1,\n domain = [0.5],\n range = [0, 1],\n unknown;\n\n function scale(x) {\n return x <= x ? range[bisect(domain, x, 0, n)] : unknown;\n }\n\n function rescale() {\n var i = -1;\n domain = new Array(n);\n while (++i < n) domain[i] = ((i + 1) * x1 - (i - n) * x0) / (n + 1);\n return scale;\n }\n\n scale.domain = function(_) {\n return arguments.length ? (x0 = +_[0], x1 = +_[1], rescale()) : [x0, x1];\n };\n\n scale.range = function(_) {\n return arguments.length ? (n = (range = slice.call(_)).length - 1, rescale()) : range.slice();\n };\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return i < 0 ? [NaN, NaN]\n : i < 1 ? [x0, domain[0]]\n : i >= n ? [domain[n - 1], x1]\n : [domain[i - 1], domain[i]];\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : scale;\n };\n\n scale.thresholds = function() {\n return domain.slice();\n };\n\n scale.copy = function() {\n return quantize()\n .domain([x0, x1])\n .range(range)\n .unknown(unknown);\n };\n\n return initRange.apply(linearish(scale), arguments);\n}\n","import {identity} from \"./continuous\";\nimport {initInterpolator} from \"./init\";\nimport {linearish} from \"./linear\";\nimport {loggish} from \"./log\";\nimport {symlogish} from \"./symlog\";\nimport {powish} from \"./pow\";\n\nfunction transformer() {\n var x0 = 0,\n x1 = 1,\n t0,\n t1,\n k10,\n transform,\n interpolator = identity,\n clamp = false,\n unknown;\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : interpolator(k10 === 0 ? 0.5 : (x = (transform(x) - t0) * k10, clamp ? Math.max(0, Math.min(1, x)) : x));\n }\n\n scale.domain = function(_) {\n return arguments.length ? (t0 = transform(x0 = +_[0]), t1 = transform(x1 = +_[1]), k10 = t0 === t1 ? 0 : 1 / (t1 - t0), scale) : [x0, x1];\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = !!_, scale) : clamp;\n };\n\n scale.interpolator = function(_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t) {\n transform = t, t0 = t(x0), t1 = t(x1), k10 = t0 === t1 ? 0 : 1 / (t1 - t0);\n return scale;\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .interpolator(source.interpolator())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nexport default function sequential() {\n var scale = linearish(transformer()(identity));\n\n scale.copy = function() {\n return copy(scale, sequential());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialLog() {\n var scale = loggish(transformer()).domain([1, 10]);\n\n scale.copy = function() {\n return copy(scale, sequentialLog()).base(scale.base());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialSymlog() {\n var scale = symlogish(transformer());\n\n scale.copy = function() {\n return copy(scale, sequentialSymlog()).constant(scale.constant());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialPow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, sequentialPow()).exponent(scale.exponent());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialSqrt() {\n return sequentialPow.apply(null, arguments).exponent(0.5);\n}\n","import {ascending, bisect} from \"d3-array\";\nimport {identity} from \"./continuous\";\nimport {initInterpolator} from \"./init\";\n\nexport default function sequentialQuantile() {\n var domain = [],\n interpolator = identity;\n\n function scale(x) {\n if (!isNaN(x = +x)) return interpolator((bisect(domain, x) - 1) / (domain.length - 1));\n }\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [];\n for (var i = 0, n = _.length, d; i < n; ++i) if (d = _[i], d != null && !isNaN(d = +d)) domain.push(d);\n domain.sort(ascending);\n return scale;\n };\n\n scale.interpolator = function(_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n scale.copy = function() {\n return sequentialQuantile(interpolator).domain(domain);\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n","import {linearish} from \"./linear\";\nimport {copy, transformer} from \"./continuous\";\nimport {initRange} from \"./init\";\n\nfunction transformSymlog(c) {\n return function(x) {\n return Math.sign(x) * Math.log1p(Math.abs(x / c));\n };\n}\n\nfunction transformSymexp(c) {\n return function(x) {\n return Math.sign(x) * Math.expm1(Math.abs(x)) * c;\n };\n}\n\nexport function symlogish(transform) {\n var c = 1, scale = transform(transformSymlog(c), transformSymexp(c));\n\n scale.constant = function(_) {\n return arguments.length ? transform(transformSymlog(c = +_), transformSymexp(c)) : c;\n };\n\n return linearish(scale);\n}\n\nexport default function symlog() {\n var scale = symlogish(transformer());\n\n scale.copy = function() {\n return copy(scale, symlog()).constant(scale.constant());\n };\n\n return initRange.apply(scale, arguments);\n}\n","import {bisect} from \"d3-array\";\nimport {slice} from \"./array\";\nimport {initRange} from \"./init\";\n\nexport default function threshold() {\n var domain = [0.5],\n range = [0, 1],\n unknown,\n n = 1;\n\n function scale(x) {\n return x <= x ? range[bisect(domain, x, 0, n)] : unknown;\n }\n\n scale.domain = function(_) {\n return arguments.length ? (domain = slice.call(_), n = Math.min(domain.length, range.length - 1), scale) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = slice.call(_), n = Math.min(domain.length, range.length - 1), scale) : range.slice();\n };\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return [domain[i - 1], domain[i]];\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return threshold()\n .domain(domain)\n .range(range)\n .unknown(unknown);\n };\n\n return initRange.apply(scale, arguments);\n}\n","import {tickStep} from \"d3-array\";\nimport {format, formatPrefix, formatSpecifier, precisionFixed, precisionPrefix, precisionRound} from \"d3-format\";\n\nexport default function(start, stop, count, specifier) {\n var step = tickStep(start, stop, count),\n precision;\n specifier = formatSpecifier(specifier == null ? \",f\" : specifier);\n switch (specifier.type) {\n case \"s\": {\n var value = Math.max(Math.abs(start), Math.abs(stop));\n if (specifier.precision == null && !isNaN(precision = precisionPrefix(step, value))) specifier.precision = precision;\n return formatPrefix(specifier, value);\n }\n case \"\":\n case \"e\":\n case \"g\":\n case \"p\":\n case \"r\": {\n if (specifier.precision == null && !isNaN(precision = precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === \"e\");\n break;\n }\n case \"f\":\n case \"%\": {\n if (specifier.precision == null && !isNaN(precision = precisionFixed(step))) specifier.precision = precision - (specifier.type === \"%\") * 2;\n break;\n }\n }\n return format(specifier);\n}\n","import {bisector, tickStep} from \"d3-array\";\nimport {timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeMillisecond} from \"d3-time\";\nimport {timeFormat} from \"d3-time-format\";\nimport {map} from \"./array\";\nimport continuous, {copy, identity} from \"./continuous\";\nimport {initRange} from \"./init\";\nimport nice from \"./nice\";\n\nvar durationSecond = 1000,\n durationMinute = durationSecond * 60,\n durationHour = durationMinute * 60,\n durationDay = durationHour * 24,\n durationWeek = durationDay * 7,\n durationMonth = durationDay * 30,\n durationYear = durationDay * 365;\n\nfunction date(t) {\n return new Date(t);\n}\n\nfunction number(t) {\n return t instanceof Date ? +t : +new Date(+t);\n}\n\nexport function calendar(year, month, week, day, hour, minute, second, millisecond, format) {\n var scale = continuous(identity, identity),\n invert = scale.invert,\n domain = scale.domain;\n\n var formatMillisecond = format(\".%L\"),\n formatSecond = format(\":%S\"),\n formatMinute = format(\"%I:%M\"),\n formatHour = format(\"%I %p\"),\n formatDay = format(\"%a %d\"),\n formatWeek = format(\"%b %d\"),\n formatMonth = format(\"%B\"),\n formatYear = format(\"%Y\");\n\n var tickIntervals = [\n [second, 1, durationSecond],\n [second, 5, 5 * durationSecond],\n [second, 15, 15 * durationSecond],\n [second, 30, 30 * durationSecond],\n [minute, 1, durationMinute],\n [minute, 5, 5 * durationMinute],\n [minute, 15, 15 * durationMinute],\n [minute, 30, 30 * durationMinute],\n [ hour, 1, durationHour ],\n [ hour, 3, 3 * durationHour ],\n [ hour, 6, 6 * durationHour ],\n [ hour, 12, 12 * durationHour ],\n [ day, 1, durationDay ],\n [ day, 2, 2 * durationDay ],\n [ week, 1, durationWeek ],\n [ month, 1, durationMonth ],\n [ month, 3, 3 * durationMonth ],\n [ year, 1, durationYear ]\n ];\n\n function tickFormat(date) {\n return (second(date) < date ? formatMillisecond\n : minute(date) < date ? formatSecond\n : hour(date) < date ? formatMinute\n : day(date) < date ? formatHour\n : month(date) < date ? (week(date) < date ? formatDay : formatWeek)\n : year(date) < date ? formatMonth\n : formatYear)(date);\n }\n\n function tickInterval(interval, start, stop, step) {\n if (interval == null) interval = 10;\n\n // If a desired tick count is specified, pick a reasonable tick interval\n // based on the extent of the domain and a rough estimate of tick size.\n // Otherwise, assume interval is already a time interval and use it.\n if (typeof interval === \"number\") {\n var target = Math.abs(stop - start) / interval,\n i = bisector(function(i) { return i[2]; }).right(tickIntervals, target);\n if (i === tickIntervals.length) {\n step = tickStep(start / durationYear, stop / durationYear, interval);\n interval = year;\n } else if (i) {\n i = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];\n step = i[1];\n interval = i[0];\n } else {\n step = Math.max(tickStep(start, stop, interval), 1);\n interval = millisecond;\n }\n }\n\n return step == null ? interval : interval.every(step);\n }\n\n scale.invert = function(y) {\n return new Date(invert(y));\n };\n\n scale.domain = function(_) {\n return arguments.length ? domain(map.call(_, number)) : domain().map(date);\n };\n\n scale.ticks = function(interval, step) {\n var d = domain(),\n t0 = d[0],\n t1 = d[d.length - 1],\n r = t1 < t0,\n t;\n if (r) t = t0, t0 = t1, t1 = t;\n t = tickInterval(interval, t0, t1, step);\n t = t ? t.range(t0, t1 + 1) : []; // inclusive stop\n return r ? t.reverse() : t;\n };\n\n scale.tickFormat = function(count, specifier) {\n return specifier == null ? tickFormat : format(specifier);\n };\n\n scale.nice = function(interval, step) {\n var d = domain();\n return (interval = tickInterval(interval, d[0], d[d.length - 1], step))\n ? domain(nice(d, interval))\n : scale;\n };\n\n scale.copy = function() {\n return copy(scale, calendar(year, month, week, day, hour, minute, second, millisecond, format));\n };\n\n return scale;\n}\n\nexport default function() {\n return initRange.apply(calendar(timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeMillisecond, timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]), arguments);\n}\n","import {calendar} from \"./time\";\nimport {utcFormat} from \"d3-time-format\";\nimport {utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcMillisecond} from \"d3-time\";\nimport {initRange} from \"./init\";\n\nexport default function() {\n return initRange.apply(calendar(utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcMillisecond, utcFormat).domain([Date.UTC(2000, 0, 1), Date.UTC(2000, 0, 2)]), arguments);\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import creator from \"./creator\";\nimport select from \"./select\";\n\nexport default function(name) {\n return select(creator(name).call(document.documentElement));\n}\n","import namespace from \"./namespace\";\nimport {xhtml} from \"./namespaces\";\n\nfunction creatorInherit(name) {\n return function() {\n var document = this.ownerDocument,\n uri = this.namespaceURI;\n return uri === xhtml && document.documentElement.namespaceURI === xhtml\n ? document.createElement(name)\n : document.createElementNS(uri, name);\n };\n}\n\nfunction creatorFixed(fullname) {\n return function() {\n return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n };\n}\n\nexport default function(name) {\n var fullname = namespace(name);\n return (fullname.local\n ? creatorFixed\n : creatorInherit)(fullname);\n}\n","export {default as create} from \"./create\";\nexport {default as creator} from \"./creator\";\nexport {default as local} from \"./local\";\nexport {default as matcher} from \"./matcher\";\nexport {default as mouse} from \"./mouse\";\nexport {default as namespace} from \"./namespace\";\nexport {default as namespaces} from \"./namespaces\";\nexport {default as clientPoint} from \"./point\";\nexport {default as select} from \"./select\";\nexport {default as selectAll} from \"./selectAll\";\nexport {default as selection} from \"./selection/index\";\nexport {default as selector} from \"./selector\";\nexport {default as selectorAll} from \"./selectorAll\";\nexport {styleValue as style} from \"./selection/style\";\nexport {default as touch} from \"./touch\";\nexport {default as touches} from \"./touches\";\nexport {default as window} from \"./window\";\nexport {event, customEvent} from \"./selection/on\";\n","var nextId = 0;\n\nexport default function local() {\n return new Local;\n}\n\nfunction Local() {\n this._ = \"@\" + (++nextId).toString(36);\n}\n\nLocal.prototype = local.prototype = {\n constructor: Local,\n get: function(node) {\n var id = this._;\n while (!(id in node)) if (!(node = node.parentNode)) return;\n return node[id];\n },\n set: function(node, value) {\n return node[this._] = value;\n },\n remove: function(node) {\n return this._ in node && delete node[this._];\n },\n toString: function() {\n return this._;\n }\n};\n","export default function(selector) {\n return function() {\n return this.matches(selector);\n };\n}\n","import sourceEvent from \"./sourceEvent\";\nimport point from \"./point\";\n\nexport default function(node) {\n var event = sourceEvent();\n if (event.changedTouches) event = event.changedTouches[0];\n return point(node, event);\n}\n","import namespaces from \"./namespaces\";\n\nexport default function(name) {\n var prefix = name += \"\", i = prefix.indexOf(\":\");\n if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name;\n}\n","export var xhtml = \"http://www.w3.org/1999/xhtml\";\n\nexport default {\n svg: \"http://www.w3.org/2000/svg\",\n xhtml: xhtml,\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\",\n xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\n","export default function(node, event) {\n var svg = node.ownerSVGElement || node;\n\n if (svg.createSVGPoint) {\n var point = svg.createSVGPoint();\n point.x = event.clientX, point.y = event.clientY;\n point = point.matrixTransform(node.getScreenCTM().inverse());\n return [point.x, point.y];\n }\n\n var rect = node.getBoundingClientRect();\n return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop];\n}\n","import {Selection, root} from \"./selection/index\";\n\nexport default function(selector) {\n return typeof selector === \"string\"\n ? new Selection([[document.querySelector(selector)]], [document.documentElement])\n : new Selection([[selector]], root);\n}\n","import {Selection, root} from \"./selection/index\";\n\nexport default function(selector) {\n return typeof selector === \"string\"\n ? new Selection([document.querySelectorAll(selector)], [document.documentElement])\n : new Selection([selector == null ? [] : selector], root);\n}\n","import creator from \"../creator\";\n\nexport default function(name) {\n var create = typeof name === \"function\" ? name : creator(name);\n return this.select(function() {\n return this.appendChild(create.apply(this, arguments));\n });\n}\n","import namespace from \"../namespace\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, value) {\n return function() {\n this.setAttribute(name, value);\n };\n}\n\nfunction attrConstantNS(fullname, value) {\n return function() {\n this.setAttributeNS(fullname.space, fullname.local, value);\n };\n}\n\nfunction attrFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttribute(name);\n else this.setAttribute(name, v);\n };\n}\n\nfunction attrFunctionNS(fullname, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttributeNS(fullname.space, fullname.local);\n else this.setAttributeNS(fullname.space, fullname.local, v);\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name);\n\n if (arguments.length < 2) {\n var node = this.node();\n return fullname.local\n ? node.getAttributeNS(fullname.space, fullname.local)\n : node.getAttribute(fullname);\n }\n\n return this.each((value == null\n ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)\n : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));\n}\n","export default function() {\n var callback = arguments[0];\n arguments[0] = this;\n callback.apply(null, arguments);\n return this;\n}\n","function classArray(string) {\n return string.trim().split(/^|\\s+/);\n}\n\nfunction classList(node) {\n return node.classList || new ClassList(node);\n}\n\nfunction ClassList(node) {\n this._node = node;\n this._names = classArray(node.getAttribute(\"class\") || \"\");\n}\n\nClassList.prototype = {\n add: function(name) {\n var i = this._names.indexOf(name);\n if (i < 0) {\n this._names.push(name);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n remove: function(name) {\n var i = this._names.indexOf(name);\n if (i >= 0) {\n this._names.splice(i, 1);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n contains: function(name) {\n return this._names.indexOf(name) >= 0;\n }\n};\n\nfunction classedAdd(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.add(names[i]);\n}\n\nfunction classedRemove(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.remove(names[i]);\n}\n\nfunction classedTrue(names) {\n return function() {\n classedAdd(this, names);\n };\n}\n\nfunction classedFalse(names) {\n return function() {\n classedRemove(this, names);\n };\n}\n\nfunction classedFunction(names, value) {\n return function() {\n (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n };\n}\n\nexport default function(name, value) {\n var names = classArray(name + \"\");\n\n if (arguments.length < 2) {\n var list = classList(this.node()), i = -1, n = names.length;\n while (++i < n) if (!list.contains(names[i])) return false;\n return true;\n }\n\n return this.each((typeof value === \"function\"\n ? classedFunction : value\n ? classedTrue\n : classedFalse)(names, value));\n}\n","function selection_cloneShallow() {\n var clone = this.cloneNode(false), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nfunction selection_cloneDeep() {\n var clone = this.cloneNode(true), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nexport default function(deep) {\n return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n","import {Selection} from \"./index\";\nimport {EnterNode} from \"./enter\";\nimport constant from \"../constant\";\n\nvar keyPrefix = \"$\"; // Protect against keys like “__proto__”.\n\nfunction bindIndex(parent, group, enter, update, exit, data) {\n var i = 0,\n node,\n groupLength = group.length,\n dataLength = data.length;\n\n // Put any non-null nodes that fit into update.\n // Put any null nodes into enter.\n // Put any remaining data into enter.\n for (; i < dataLength; ++i) {\n if (node = group[i]) {\n node.__data__ = data[i];\n update[i] = node;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Put any non-null nodes that don’t fit into exit.\n for (; i < groupLength; ++i) {\n if (node = group[i]) {\n exit[i] = node;\n }\n }\n}\n\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n var i,\n node,\n nodeByKeyValue = {},\n groupLength = group.length,\n dataLength = data.length,\n keyValues = new Array(groupLength),\n keyValue;\n\n // Compute the key for each node.\n // If multiple nodes have the same key, the duplicates are added to exit.\n for (i = 0; i < groupLength; ++i) {\n if (node = group[i]) {\n keyValues[i] = keyValue = keyPrefix + key.call(node, node.__data__, i, group);\n if (keyValue in nodeByKeyValue) {\n exit[i] = node;\n } else {\n nodeByKeyValue[keyValue] = node;\n }\n }\n }\n\n // Compute the key for each datum.\n // If there a node associated with this key, join and add it to update.\n // If there is not (or the key is a duplicate), add it to enter.\n for (i = 0; i < dataLength; ++i) {\n keyValue = keyPrefix + key.call(parent, data[i], i, data);\n if (node = nodeByKeyValue[keyValue]) {\n update[i] = node;\n node.__data__ = data[i];\n nodeByKeyValue[keyValue] = null;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Add any remaining nodes that were not bound to data to exit.\n for (i = 0; i < groupLength; ++i) {\n if ((node = group[i]) && (nodeByKeyValue[keyValues[i]] === node)) {\n exit[i] = node;\n }\n }\n}\n\nexport default function(value, key) {\n if (!value) {\n data = new Array(this.size()), j = -1;\n this.each(function(d) { data[++j] = d; });\n return data;\n }\n\n var bind = key ? bindKey : bindIndex,\n parents = this._parents,\n groups = this._groups;\n\n if (typeof value !== \"function\") value = constant(value);\n\n for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n var parent = parents[j],\n group = groups[j],\n groupLength = group.length,\n data = value.call(parent, parent && parent.__data__, j, parents),\n dataLength = data.length,\n enterGroup = enter[j] = new Array(dataLength),\n updateGroup = update[j] = new Array(dataLength),\n exitGroup = exit[j] = new Array(groupLength);\n\n bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\n // Now connect the enter nodes to their following update node, such that\n // appendChild can insert the materialized enter node before this node,\n // rather than at the end of the parent node.\n for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n if (previous = enterGroup[i0]) {\n if (i0 >= i1) i1 = i0 + 1;\n while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n previous._next = next || null;\n }\n }\n }\n\n update = new Selection(update, parents);\n update._enter = enter;\n update._exit = exit;\n return update;\n}\n","export default function(value) {\n return arguments.length\n ? this.property(\"__data__\", value)\n : this.node().__data__;\n}\n","import defaultView from \"../window\";\n\nfunction dispatchEvent(node, type, params) {\n var window = defaultView(node),\n event = window.CustomEvent;\n\n if (typeof event === \"function\") {\n event = new event(type, params);\n } else {\n event = window.document.createEvent(\"Event\");\n if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n else event.initEvent(type, false, false);\n }\n\n node.dispatchEvent(event);\n}\n\nfunction dispatchConstant(type, params) {\n return function() {\n return dispatchEvent(this, type, params);\n };\n}\n\nfunction dispatchFunction(type, params) {\n return function() {\n return dispatchEvent(this, type, params.apply(this, arguments));\n };\n}\n\nexport default function(type, params) {\n return this.each((typeof params === \"function\"\n ? dispatchFunction\n : dispatchConstant)(type, params));\n}\n","export default function(callback) {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) callback.call(node, node.__data__, i, group);\n }\n }\n\n return this;\n}\n","export default function() {\n return !this.node();\n}\n","import sparse from \"./sparse\";\nimport {Selection} from \"./index\";\n\nexport default function() {\n return new Selection(this._enter || this._groups.map(sparse), this._parents);\n}\n\nexport function EnterNode(parent, datum) {\n this.ownerDocument = parent.ownerDocument;\n this.namespaceURI = parent.namespaceURI;\n this._next = null;\n this._parent = parent;\n this.__data__ = datum;\n}\n\nEnterNode.prototype = {\n constructor: EnterNode,\n appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n querySelector: function(selector) { return this._parent.querySelector(selector); },\n querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n};\n","import sparse from \"./sparse\";\nimport {Selection} from \"./index\";\n\nexport default function() {\n return new Selection(this._exit || this._groups.map(sparse), this._parents);\n}\n","import {Selection} from \"./index\";\nimport matcher from \"../matcher\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","function htmlRemove() {\n this.innerHTML = \"\";\n}\n\nfunction htmlConstant(value) {\n return function() {\n this.innerHTML = value;\n };\n}\n\nfunction htmlFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.innerHTML = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? htmlRemove : (typeof value === \"function\"\n ? htmlFunction\n : htmlConstant)(value))\n : this.node().innerHTML;\n}\n","import selection_select from \"./select\";\nimport selection_selectAll from \"./selectAll\";\nimport selection_filter from \"./filter\";\nimport selection_data from \"./data\";\nimport selection_enter from \"./enter\";\nimport selection_exit from \"./exit\";\nimport selection_join from \"./join\";\nimport selection_merge from \"./merge\";\nimport selection_order from \"./order\";\nimport selection_sort from \"./sort\";\nimport selection_call from \"./call\";\nimport selection_nodes from \"./nodes\";\nimport selection_node from \"./node\";\nimport selection_size from \"./size\";\nimport selection_empty from \"./empty\";\nimport selection_each from \"./each\";\nimport selection_attr from \"./attr\";\nimport selection_style from \"./style\";\nimport selection_property from \"./property\";\nimport selection_classed from \"./classed\";\nimport selection_text from \"./text\";\nimport selection_html from \"./html\";\nimport selection_raise from \"./raise\";\nimport selection_lower from \"./lower\";\nimport selection_append from \"./append\";\nimport selection_insert from \"./insert\";\nimport selection_remove from \"./remove\";\nimport selection_clone from \"./clone\";\nimport selection_datum from \"./datum\";\nimport selection_on from \"./on\";\nimport selection_dispatch from \"./dispatch\";\n\nexport var root = [null];\n\nexport function Selection(groups, parents) {\n this._groups = groups;\n this._parents = parents;\n}\n\nfunction selection() {\n return new Selection([[document.documentElement]], root);\n}\n\nSelection.prototype = selection.prototype = {\n constructor: Selection,\n select: selection_select,\n selectAll: selection_selectAll,\n filter: selection_filter,\n data: selection_data,\n enter: selection_enter,\n exit: selection_exit,\n join: selection_join,\n merge: selection_merge,\n order: selection_order,\n sort: selection_sort,\n call: selection_call,\n nodes: selection_nodes,\n node: selection_node,\n size: selection_size,\n empty: selection_empty,\n each: selection_each,\n attr: selection_attr,\n style: selection_style,\n property: selection_property,\n classed: selection_classed,\n text: selection_text,\n html: selection_html,\n raise: selection_raise,\n lower: selection_lower,\n append: selection_append,\n insert: selection_insert,\n remove: selection_remove,\n clone: selection_clone,\n datum: selection_datum,\n on: selection_on,\n dispatch: selection_dispatch\n};\n\nexport default selection;\n","import creator from \"../creator\";\nimport selector from \"../selector\";\n\nfunction constantNull() {\n return null;\n}\n\nexport default function(name, before) {\n var create = typeof name === \"function\" ? name : creator(name),\n select = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n return this.select(function() {\n return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n });\n}\n","export default function(onenter, onupdate, onexit) {\n var enter = this.enter(), update = this, exit = this.exit();\n enter = typeof onenter === \"function\" ? onenter(enter) : enter.append(onenter + \"\");\n if (onupdate != null) update = onupdate(update);\n if (onexit == null) exit.remove(); else onexit(exit);\n return enter && update ? enter.merge(update).order() : update;\n}\n","function lower() {\n if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\n\nexport default function() {\n return this.each(lower);\n}\n","import {Selection} from \"./index\";\n\nexport default function(selection) {\n\n for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Selection(merges, this._parents);\n}\n","export default function() {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n var node = group[i];\n if (node) return node;\n }\n }\n\n return null;\n}\n","export default function() {\n var nodes = new Array(this.size()), i = -1;\n this.each(function() { nodes[++i] = this; });\n return nodes;\n}\n","var filterEvents = {};\n\nexport var event = null;\n\nif (typeof document !== \"undefined\") {\n var element = document.documentElement;\n if (!(\"onmouseenter\" in element)) {\n filterEvents = {mouseenter: \"mouseover\", mouseleave: \"mouseout\"};\n }\n}\n\nfunction filterContextListener(listener, index, group) {\n listener = contextListener(listener, index, group);\n return function(event) {\n var related = event.relatedTarget;\n if (!related || (related !== this && !(related.compareDocumentPosition(this) & 8))) {\n listener.call(this, event);\n }\n };\n}\n\nfunction contextListener(listener, index, group) {\n return function(event1) {\n var event0 = event; // Events can be reentrant (e.g., focus).\n event = event1;\n try {\n listener.call(this, this.__data__, index, group);\n } finally {\n event = event0;\n }\n };\n}\n\nfunction parseTypenames(typenames) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n return {type: t, name: name};\n });\n}\n\nfunction onRemove(typename) {\n return function() {\n var on = this.__on;\n if (!on) return;\n for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.capture);\n } else {\n on[++i] = o;\n }\n }\n if (++i) on.length = i;\n else delete this.__on;\n };\n}\n\nfunction onAdd(typename, value, capture) {\n var wrap = filterEvents.hasOwnProperty(typename.type) ? filterContextListener : contextListener;\n return function(d, i, group) {\n var on = this.__on, o, listener = wrap(value, i, group);\n if (on) for (var j = 0, m = on.length; j < m; ++j) {\n if ((o = on[j]).type === typename.type && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.capture);\n this.addEventListener(o.type, o.listener = listener, o.capture = capture);\n o.value = value;\n return;\n }\n }\n this.addEventListener(typename.type, listener, capture);\n o = {type: typename.type, name: typename.name, value: value, listener: listener, capture: capture};\n if (!on) this.__on = [o];\n else on.push(o);\n };\n}\n\nexport default function(typename, value, capture) {\n var typenames = parseTypenames(typename + \"\"), i, n = typenames.length, t;\n\n if (arguments.length < 2) {\n var on = this.node().__on;\n if (on) for (var j = 0, m = on.length, o; j < m; ++j) {\n for (i = 0, o = on[j]; i < n; ++i) {\n if ((t = typenames[i]).type === o.type && t.name === o.name) {\n return o.value;\n }\n }\n }\n return;\n }\n\n on = value ? onAdd : onRemove;\n if (capture == null) capture = false;\n for (i = 0; i < n; ++i) this.each(on(typenames[i], value, capture));\n return this;\n}\n\nexport function customEvent(event1, listener, that, args) {\n var event0 = event;\n event1.sourceEvent = event;\n event = event1;\n try {\n return listener.apply(that, args);\n } finally {\n event = event0;\n }\n}\n","export default function() {\n\n for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {\n for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n if (node = group[i]) {\n if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next);\n next = node;\n }\n }\n }\n\n return this;\n}\n","function propertyRemove(name) {\n return function() {\n delete this[name];\n };\n}\n\nfunction propertyConstant(name, value) {\n return function() {\n this[name] = value;\n };\n}\n\nfunction propertyFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) delete this[name];\n else this[name] = v;\n };\n}\n\nexport default function(name, value) {\n return arguments.length > 1\n ? this.each((value == null\n ? propertyRemove : typeof value === \"function\"\n ? propertyFunction\n : propertyConstant)(name, value))\n : this.node()[name];\n}\n","function raise() {\n if (this.nextSibling) this.parentNode.appendChild(this);\n}\n\nexport default function() {\n return this.each(raise);\n}\n","function remove() {\n var parent = this.parentNode;\n if (parent) parent.removeChild(this);\n}\n\nexport default function() {\n return this.each(remove);\n}\n","import {Selection} from \"./index\";\nimport selector from \"../selector\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","import {Selection} from \"./index\";\nimport selectorAll from \"../selectorAll\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n subgroups.push(select.call(node, node.__data__, i, group));\n parents.push(node);\n }\n }\n }\n\n return new Selection(subgroups, parents);\n}\n","export default function() {\n var size = 0;\n this.each(function() { ++size; });\n return size;\n}\n","import {Selection} from \"./index\";\n\nexport default function(compare) {\n if (!compare) compare = ascending;\n\n function compareNode(a, b) {\n return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n }\n\n for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n sortgroup[i] = node;\n }\n }\n sortgroup.sort(compareNode);\n }\n\n return new Selection(sortgroups, this._parents).order();\n}\n\nfunction ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export default function(update) {\n return new Array(update.length);\n}\n","import defaultView from \"../window\";\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, value, priority) {\n return function() {\n this.style.setProperty(name, value, priority);\n };\n}\n\nfunction styleFunction(name, value, priority) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.style.removeProperty(name);\n else this.style.setProperty(name, v, priority);\n };\n}\n\nexport default function(name, value, priority) {\n return arguments.length > 1\n ? this.each((value == null\n ? styleRemove : typeof value === \"function\"\n ? styleFunction\n : styleConstant)(name, value, priority == null ? \"\" : priority))\n : styleValue(this.node(), name);\n}\n\nexport function styleValue(node, name) {\n return node.style.getPropertyValue(name)\n || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n","function textRemove() {\n this.textContent = \"\";\n}\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.textContent = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? textRemove : (typeof value === \"function\"\n ? textFunction\n : textConstant)(value))\n : this.node().textContent;\n}\n","function none() {}\n\nexport default function(selector) {\n return selector == null ? none : function() {\n return this.querySelector(selector);\n };\n}\n","function empty() {\n return [];\n}\n\nexport default function(selector) {\n return selector == null ? empty : function() {\n return this.querySelectorAll(selector);\n };\n}\n","import {event} from \"./selection/on\";\n\nexport default function() {\n var current = event, source;\n while (source = current.sourceEvent) current = source;\n return current;\n}\n","import sourceEvent from \"./sourceEvent\";\nimport point from \"./point\";\n\nexport default function(node, touches, identifier) {\n if (arguments.length < 3) identifier = touches, touches = sourceEvent().changedTouches;\n\n for (var i = 0, n = touches ? touches.length : 0, touch; i < n; ++i) {\n if ((touch = touches[i]).identifier === identifier) {\n return point(node, touch);\n }\n }\n\n return null;\n}\n","import sourceEvent from \"./sourceEvent\";\nimport point from \"./point\";\n\nexport default function(node, touches) {\n if (touches == null) touches = sourceEvent().touches;\n\n for (var i = 0, n = touches ? touches.length : 0, points = new Array(n); i < n; ++i) {\n points[i] = point(node, touches[i]);\n }\n\n return points;\n}\n","export default function(node) {\n return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node\n || (node.document && node) // node is a Window\n || node.defaultView; // node is a Document\n}\n","import {path} from \"d3-path\";\nimport constant from \"./constant.js\";\nimport {abs, acos, asin, atan2, cos, epsilon, halfPi, max, min, pi, sin, sqrt, tau} from \"./math.js\";\n\nfunction arcInnerRadius(d) {\n return d.innerRadius;\n}\n\nfunction arcOuterRadius(d) {\n return d.outerRadius;\n}\n\nfunction arcStartAngle(d) {\n return d.startAngle;\n}\n\nfunction arcEndAngle(d) {\n return d.endAngle;\n}\n\nfunction arcPadAngle(d) {\n return d && d.padAngle; // Note: optional!\n}\n\nfunction intersect(x0, y0, x1, y1, x2, y2, x3, y3) {\n var x10 = x1 - x0, y10 = y1 - y0,\n x32 = x3 - x2, y32 = y3 - y2,\n t = y32 * x10 - x32 * y10;\n if (t * t < epsilon) return;\n t = (x32 * (y0 - y2) - y32 * (x0 - x2)) / t;\n return [x0 + t * x10, y0 + t * y10];\n}\n\n// Compute perpendicular offset line of length rc.\n// http://mathworld.wolfram.com/Circle-LineIntersection.html\nfunction cornerTangents(x0, y0, x1, y1, r1, rc, cw) {\n var x01 = x0 - x1,\n y01 = y0 - y1,\n lo = (cw ? rc : -rc) / sqrt(x01 * x01 + y01 * y01),\n ox = lo * y01,\n oy = -lo * x01,\n x11 = x0 + ox,\n y11 = y0 + oy,\n x10 = x1 + ox,\n y10 = y1 + oy,\n x00 = (x11 + x10) / 2,\n y00 = (y11 + y10) / 2,\n dx = x10 - x11,\n dy = y10 - y11,\n d2 = dx * dx + dy * dy,\n r = r1 - rc,\n D = x11 * y10 - x10 * y11,\n d = (dy < 0 ? -1 : 1) * sqrt(max(0, r * r * d2 - D * D)),\n cx0 = (D * dy - dx * d) / d2,\n cy0 = (-D * dx - dy * d) / d2,\n cx1 = (D * dy + dx * d) / d2,\n cy1 = (-D * dx + dy * d) / d2,\n dx0 = cx0 - x00,\n dy0 = cy0 - y00,\n dx1 = cx1 - x00,\n dy1 = cy1 - y00;\n\n // Pick the closer of the two intersection points.\n // TODO Is there a faster way to determine which intersection to use?\n if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;\n\n return {\n cx: cx0,\n cy: cy0,\n x01: -ox,\n y01: -oy,\n x11: cx0 * (r1 / r - 1),\n y11: cy0 * (r1 / r - 1)\n };\n}\n\nexport default function() {\n var innerRadius = arcInnerRadius,\n outerRadius = arcOuterRadius,\n cornerRadius = constant(0),\n padRadius = null,\n startAngle = arcStartAngle,\n endAngle = arcEndAngle,\n padAngle = arcPadAngle,\n context = null;\n\n function arc() {\n var buffer,\n r,\n r0 = +innerRadius.apply(this, arguments),\n r1 = +outerRadius.apply(this, arguments),\n a0 = startAngle.apply(this, arguments) - halfPi,\n a1 = endAngle.apply(this, arguments) - halfPi,\n da = abs(a1 - a0),\n cw = a1 > a0;\n\n if (!context) context = buffer = path();\n\n // Ensure that the outer radius is always larger than the inner radius.\n if (r1 < r0) r = r1, r1 = r0, r0 = r;\n\n // Is it a point?\n if (!(r1 > epsilon)) context.moveTo(0, 0);\n\n // Or is it a circle or annulus?\n else if (da > tau - epsilon) {\n context.moveTo(r1 * cos(a0), r1 * sin(a0));\n context.arc(0, 0, r1, a0, a1, !cw);\n if (r0 > epsilon) {\n context.moveTo(r0 * cos(a1), r0 * sin(a1));\n context.arc(0, 0, r0, a1, a0, cw);\n }\n }\n\n // Or is it a circular or annular sector?\n else {\n var a01 = a0,\n a11 = a1,\n a00 = a0,\n a10 = a1,\n da0 = da,\n da1 = da,\n ap = padAngle.apply(this, arguments) / 2,\n rp = (ap > epsilon) && (padRadius ? +padRadius.apply(this, arguments) : sqrt(r0 * r0 + r1 * r1)),\n rc = min(abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments)),\n rc0 = rc,\n rc1 = rc,\n t0,\n t1;\n\n // Apply padding? Note that since r1 ≥ r0, da1 ≥ da0.\n if (rp > epsilon) {\n var p0 = asin(rp / r0 * sin(ap)),\n p1 = asin(rp / r1 * sin(ap));\n if ((da0 -= p0 * 2) > epsilon) p0 *= (cw ? 1 : -1), a00 += p0, a10 -= p0;\n else da0 = 0, a00 = a10 = (a0 + a1) / 2;\n if ((da1 -= p1 * 2) > epsilon) p1 *= (cw ? 1 : -1), a01 += p1, a11 -= p1;\n else da1 = 0, a01 = a11 = (a0 + a1) / 2;\n }\n\n var x01 = r1 * cos(a01),\n y01 = r1 * sin(a01),\n x10 = r0 * cos(a10),\n y10 = r0 * sin(a10);\n\n // Apply rounded corners?\n if (rc > epsilon) {\n var x11 = r1 * cos(a11),\n y11 = r1 * sin(a11),\n x00 = r0 * cos(a00),\n y00 = r0 * sin(a00),\n oc;\n\n // Restrict the corner radius according to the sector angle.\n if (da < pi && (oc = intersect(x01, y01, x00, y00, x11, y11, x10, y10))) {\n var ax = x01 - oc[0],\n ay = y01 - oc[1],\n bx = x11 - oc[0],\n by = y11 - oc[1],\n kc = 1 / sin(acos((ax * bx + ay * by) / (sqrt(ax * ax + ay * ay) * sqrt(bx * bx + by * by))) / 2),\n lc = sqrt(oc[0] * oc[0] + oc[1] * oc[1]);\n rc0 = min(rc, (r0 - lc) / (kc - 1));\n rc1 = min(rc, (r1 - lc) / (kc + 1));\n }\n }\n\n // Is the sector collapsed to a line?\n if (!(da1 > epsilon)) context.moveTo(x01, y01);\n\n // Does the sector’s outer ring have rounded corners?\n else if (rc1 > epsilon) {\n t0 = cornerTangents(x00, y00, x01, y01, r1, rc1, cw);\n t1 = cornerTangents(x11, y11, x10, y10, r1, rc1, cw);\n\n context.moveTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc1 < rc) context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r1, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), !cw);\n context.arc(t1.cx, t1.cy, rc1, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the outer ring just a circular arc?\n else context.moveTo(x01, y01), context.arc(0, 0, r1, a01, a11, !cw);\n\n // Is there no inner ring, and it’s a circular sector?\n // Or perhaps it’s an annular sector collapsed due to padding?\n if (!(r0 > epsilon) || !(da0 > epsilon)) context.lineTo(x10, y10);\n\n // Does the sector’s inner ring (or point) have rounded corners?\n else if (rc0 > epsilon) {\n t0 = cornerTangents(x10, y10, x11, y11, r0, -rc0, cw);\n t1 = cornerTangents(x01, y01, x00, y00, r0, -rc0, cw);\n\n context.lineTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc0 < rc) context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r0, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), cw);\n context.arc(t1.cx, t1.cy, rc0, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the inner ring just a circular arc?\n else context.arc(0, 0, r0, a10, a00, cw);\n }\n\n context.closePath();\n\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n arc.centroid = function() {\n var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2,\n a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - pi / 2;\n return [cos(a) * r, sin(a) * r];\n };\n\n arc.innerRadius = function(_) {\n return arguments.length ? (innerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : innerRadius;\n };\n\n arc.outerRadius = function(_) {\n return arguments.length ? (outerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : outerRadius;\n };\n\n arc.cornerRadius = function(_) {\n return arguments.length ? (cornerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : cornerRadius;\n };\n\n arc.padRadius = function(_) {\n return arguments.length ? (padRadius = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), arc) : padRadius;\n };\n\n arc.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : startAngle;\n };\n\n arc.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : endAngle;\n };\n\n arc.padAngle = function(_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : padAngle;\n };\n\n arc.context = function(_) {\n return arguments.length ? ((context = _ == null ? null : _), arc) : context;\n };\n\n return arc;\n}\n","import {path} from \"d3-path\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport line from \"./line.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function() {\n var x0 = pointX,\n x1 = null,\n y0 = constant(0),\n y1 = pointY,\n defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null;\n\n function area(data) {\n var i,\n j,\n k,\n n = data.length,\n d,\n defined0 = false,\n buffer,\n x0z = new Array(n),\n y0z = new Array(n);\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) {\n j = i;\n output.areaStart();\n output.lineStart();\n } else {\n output.lineEnd();\n output.lineStart();\n for (k = i - 1; k >= j; --k) {\n output.point(x0z[k], y0z[k]);\n }\n output.lineEnd();\n output.areaEnd();\n }\n }\n if (defined0) {\n x0z[i] = +x0(d, i, data), y0z[i] = +y0(d, i, data);\n output.point(x1 ? +x1(d, i, data) : x0z[i], y1 ? +y1(d, i, data) : y0z[i]);\n }\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n function arealine() {\n return line().defined(defined).curve(curve).context(context);\n }\n\n area.x = function(_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), x1 = null, area) : x0;\n };\n\n area.x0 = function(_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), area) : x0;\n };\n\n area.x1 = function(_) {\n return arguments.length ? (x1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : x1;\n };\n\n area.y = function(_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), y1 = null, area) : y0;\n };\n\n area.y0 = function(_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), area) : y0;\n };\n\n area.y1 = function(_) {\n return arguments.length ? (y1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : y1;\n };\n\n area.lineX0 =\n area.lineY0 = function() {\n return arealine().x(x0).y(y0);\n };\n\n area.lineY1 = function() {\n return arealine().x(x0).y(y1);\n };\n\n area.lineX1 = function() {\n return arealine().x(x1).y(y0);\n };\n\n area.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), area) : defined;\n };\n\n area.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), area) : curve;\n };\n\n area.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), area) : context;\n };\n\n return area;\n}\n","import curveRadial, {curveRadialLinear} from \"./curve/radial.js\";\nimport area from \"./area.js\";\nimport {lineRadial} from \"./lineRadial.js\";\n\nexport default function() {\n var a = area().curve(curveRadialLinear),\n c = a.curve,\n x0 = a.lineX0,\n x1 = a.lineX1,\n y0 = a.lineY0,\n y1 = a.lineY1;\n\n a.angle = a.x, delete a.x;\n a.startAngle = a.x0, delete a.x0;\n a.endAngle = a.x1, delete a.x1;\n a.radius = a.y, delete a.y;\n a.innerRadius = a.y0, delete a.y0;\n a.outerRadius = a.y1, delete a.y1;\n a.lineStartAngle = function() { return lineRadial(x0()); }, delete a.lineX0;\n a.lineEndAngle = function() { return lineRadial(x1()); }, delete a.lineX1;\n a.lineInnerRadius = function() { return lineRadial(y0()); }, delete a.lineY0;\n a.lineOuterRadius = function() { return lineRadial(y1()); }, delete a.lineY1;\n\n a.curve = function(_) {\n return arguments.length ? c(curveRadial(_)) : c()._curve;\n };\n\n return a;\n}\n","export var slice = Array.prototype.slice;\n","export default function(x) {\n return function constant() {\n return x;\n };\n}\n","export function point(that, x, y) {\n that._context.bezierCurveTo(\n (2 * that._x0 + that._x1) / 3,\n (2 * that._y0 + that._y1) / 3,\n (that._x0 + 2 * that._x1) / 3,\n (that._y0 + 2 * that._y1) / 3,\n (that._x0 + 4 * that._x1 + x) / 6,\n (that._y0 + 4 * that._y1 + y) / 6\n );\n}\n\nexport function Basis(context) {\n this._context = context;\n}\n\nBasis.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 3: point(this, this._x1, this._y1); // proceed\n case 2: this._context.lineTo(this._x1, this._y1); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._context.lineTo((5 * this._x0 + this._x1) / 6, (5 * this._y0 + this._y1) / 6); // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new Basis(context);\n}\n","import noop from \"../noop.js\";\nimport {point} from \"./basis.js\";\n\nfunction BasisClosed(context) {\n this._context = context;\n}\n\nBasisClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x2, this._y2);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.moveTo((this._x2 + 2 * this._x3) / 3, (this._y2 + 2 * this._y3) / 3);\n this._context.lineTo((this._x3 + 2 * this._x2) / 3, (this._y3 + 2 * this._y2) / 3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x2, this._y2);\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._x2 = x, this._y2 = y; break;\n case 1: this._point = 2; this._x3 = x, this._y3 = y; break;\n case 2: this._point = 3; this._x4 = x, this._y4 = y; this._context.moveTo((this._x0 + 4 * this._x1 + x) / 6, (this._y0 + 4 * this._y1 + y) / 6); break;\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new BasisClosed(context);\n}\n","import {point} from \"./basis.js\";\n\nfunction BasisOpen(context) {\n this._context = context;\n}\n\nBasisOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; var x0 = (this._x0 + 4 * this._x1 + x) / 6, y0 = (this._y0 + 4 * this._y1 + y) / 6; this._line ? this._context.lineTo(x0, y0) : this._context.moveTo(x0, y0); break;\n case 3: this._point = 4; // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new BasisOpen(context);\n}\n","import {Basis} from \"./basis.js\";\n\nfunction Bundle(context, beta) {\n this._basis = new Basis(context);\n this._beta = beta;\n}\n\nBundle.prototype = {\n lineStart: function() {\n this._x = [];\n this._y = [];\n this._basis.lineStart();\n },\n lineEnd: function() {\n var x = this._x,\n y = this._y,\n j = x.length - 1;\n\n if (j > 0) {\n var x0 = x[0],\n y0 = y[0],\n dx = x[j] - x0,\n dy = y[j] - y0,\n i = -1,\n t;\n\n while (++i <= j) {\n t = i / j;\n this._basis.point(\n this._beta * x[i] + (1 - this._beta) * (x0 + t * dx),\n this._beta * y[i] + (1 - this._beta) * (y0 + t * dy)\n );\n }\n }\n\n this._x = this._y = null;\n this._basis.lineEnd();\n },\n point: function(x, y) {\n this._x.push(+x);\n this._y.push(+y);\n }\n};\n\nexport default (function custom(beta) {\n\n function bundle(context) {\n return beta === 1 ? new Basis(context) : new Bundle(context, beta);\n }\n\n bundle.beta = function(beta) {\n return custom(+beta);\n };\n\n return bundle;\n})(0.85);\n","export function point(that, x, y) {\n that._context.bezierCurveTo(\n that._x1 + that._k * (that._x2 - that._x0),\n that._y1 + that._k * (that._y2 - that._y0),\n that._x2 + that._k * (that._x1 - x),\n that._y2 + that._k * (that._y1 - y),\n that._x2,\n that._y2\n );\n}\n\nexport function Cardinal(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinal.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x2, this._y2); break;\n case 3: point(this, this._x1, this._y1); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; this._x1 = x, this._y1 = y; break;\n case 2: this._point = 3; // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new Cardinal(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n","import noop from \"../noop.js\";\nimport {point} from \"./cardinal.js\";\n\nexport function CardinalClosed(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinalClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.lineTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n this.point(this._x5, this._y5);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._x3 = x, this._y3 = y; break;\n case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break;\n case 2: this._point = 3; this._x5 = x, this._y5 = y; break;\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new CardinalClosed(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n","import {point} from \"./cardinal.js\";\n\nexport function CardinalOpen(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinalOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break;\n case 3: this._point = 4; // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new CardinalOpen(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n","import {epsilon} from \"../math.js\";\nimport {Cardinal} from \"./cardinal.js\";\n\nexport function point(that, x, y) {\n var x1 = that._x1,\n y1 = that._y1,\n x2 = that._x2,\n y2 = that._y2;\n\n if (that._l01_a > epsilon) {\n var a = 2 * that._l01_2a + 3 * that._l01_a * that._l12_a + that._l12_2a,\n n = 3 * that._l01_a * (that._l01_a + that._l12_a);\n x1 = (x1 * a - that._x0 * that._l12_2a + that._x2 * that._l01_2a) / n;\n y1 = (y1 * a - that._y0 * that._l12_2a + that._y2 * that._l01_2a) / n;\n }\n\n if (that._l23_a > epsilon) {\n var b = 2 * that._l23_2a + 3 * that._l23_a * that._l12_a + that._l12_2a,\n m = 3 * that._l23_a * (that._l23_a + that._l12_a);\n x2 = (x2 * b + that._x1 * that._l23_2a - x * that._l12_2a) / m;\n y2 = (y2 * b + that._y1 * that._l23_2a - y * that._l12_2a) / m;\n }\n\n that._context.bezierCurveTo(x1, y1, x2, y2, that._x2, that._y2);\n}\n\nfunction CatmullRom(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRom.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x2, this._y2); break;\n case 3: this.point(this._x2, this._y2); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; // proceed\n default: point(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRom(context, alpha) : new Cardinal(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n})(0.5);\n","import {CardinalClosed} from \"./cardinalClosed.js\";\nimport noop from \"../noop.js\";\nimport {point} from \"./catmullRom.js\";\n\nfunction CatmullRomClosed(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRomClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.lineTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n this.point(this._x5, this._y5);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; this._x3 = x, this._y3 = y; break;\n case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break;\n case 2: this._point = 3; this._x5 = x, this._y5 = y; break;\n default: point(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRomClosed(context, alpha) : new CardinalClosed(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n})(0.5);\n","import {CardinalOpen} from \"./cardinalOpen.js\";\nimport {point} from \"./catmullRom.js\";\n\nfunction CatmullRomOpen(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRomOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break;\n case 3: this._point = 4; // proceed\n default: point(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRomOpen(context, alpha) : new CardinalOpen(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n})(0.5);\n","function Linear(context) {\n this._context = context;\n}\n\nLinear.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // proceed\n default: this._context.lineTo(x, y); break;\n }\n }\n};\n\nexport default function(context) {\n return new Linear(context);\n}\n","import noop from \"../noop.js\";\n\nfunction LinearClosed(context) {\n this._context = context;\n}\n\nLinearClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._point) this._context.closePath();\n },\n point: function(x, y) {\n x = +x, y = +y;\n if (this._point) this._context.lineTo(x, y);\n else this._point = 1, this._context.moveTo(x, y);\n }\n};\n\nexport default function(context) {\n return new LinearClosed(context);\n}\n","function sign(x) {\n return x < 0 ? -1 : 1;\n}\n\n// Calculate the slopes of the tangents (Hermite-type interpolation) based on\n// the following paper: Steffen, M. 1990. A Simple Method for Monotonic\n// Interpolation in One Dimension. Astronomy and Astrophysics, Vol. 239, NO.\n// NOV(II), P. 443, 1990.\nfunction slope3(that, x2, y2) {\n var h0 = that._x1 - that._x0,\n h1 = x2 - that._x1,\n s0 = (that._y1 - that._y0) / (h0 || h1 < 0 && -0),\n s1 = (y2 - that._y1) / (h1 || h0 < 0 && -0),\n p = (s0 * h1 + s1 * h0) / (h0 + h1);\n return (sign(s0) + sign(s1)) * Math.min(Math.abs(s0), Math.abs(s1), 0.5 * Math.abs(p)) || 0;\n}\n\n// Calculate a one-sided slope.\nfunction slope2(that, t) {\n var h = that._x1 - that._x0;\n return h ? (3 * (that._y1 - that._y0) / h - t) / 2 : t;\n}\n\n// According to https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Representations\n// \"you can express cubic Hermite interpolation in terms of cubic Bézier curves\n// with respect to the four values p0, p0 + m0 / 3, p1 - m1 / 3, p1\".\nfunction point(that, t0, t1) {\n var x0 = that._x0,\n y0 = that._y0,\n x1 = that._x1,\n y1 = that._y1,\n dx = (x1 - x0) / 3;\n that._context.bezierCurveTo(x0 + dx, y0 + dx * t0, x1 - dx, y1 - dx * t1, x1, y1);\n}\n\nfunction MonotoneX(context) {\n this._context = context;\n}\n\nMonotoneX.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 =\n this._t0 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x1, this._y1); break;\n case 3: point(this, this._t0, slope2(this, this._t0)); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n var t1 = NaN;\n\n x = +x, y = +y;\n if (x === this._x1 && y === this._y1) return; // Ignore coincident points.\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; point(this, slope2(this, t1 = slope3(this, x, y)), t1); break;\n default: point(this, this._t0, t1 = slope3(this, x, y)); break;\n }\n\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n this._t0 = t1;\n }\n}\n\nfunction MonotoneY(context) {\n this._context = new ReflectContext(context);\n}\n\n(MonotoneY.prototype = Object.create(MonotoneX.prototype)).point = function(x, y) {\n MonotoneX.prototype.point.call(this, y, x);\n};\n\nfunction ReflectContext(context) {\n this._context = context;\n}\n\nReflectContext.prototype = {\n moveTo: function(x, y) { this._context.moveTo(y, x); },\n closePath: function() { this._context.closePath(); },\n lineTo: function(x, y) { this._context.lineTo(y, x); },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) { this._context.bezierCurveTo(y1, x1, y2, x2, y, x); }\n};\n\nexport function monotoneX(context) {\n return new MonotoneX(context);\n}\n\nexport function monotoneY(context) {\n return new MonotoneY(context);\n}\n","function Natural(context) {\n this._context = context;\n}\n\nNatural.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x = [];\n this._y = [];\n },\n lineEnd: function() {\n var x = this._x,\n y = this._y,\n n = x.length;\n\n if (n) {\n this._line ? this._context.lineTo(x[0], y[0]) : this._context.moveTo(x[0], y[0]);\n if (n === 2) {\n this._context.lineTo(x[1], y[1]);\n } else {\n var px = controlPoints(x),\n py = controlPoints(y);\n for (var i0 = 0, i1 = 1; i1 < n; ++i0, ++i1) {\n this._context.bezierCurveTo(px[0][i0], py[0][i0], px[1][i0], py[1][i0], x[i1], y[i1]);\n }\n }\n }\n\n if (this._line || (this._line !== 0 && n === 1)) this._context.closePath();\n this._line = 1 - this._line;\n this._x = this._y = null;\n },\n point: function(x, y) {\n this._x.push(+x);\n this._y.push(+y);\n }\n};\n\n// See https://www.particleincell.com/2012/bezier-splines/ for derivation.\nfunction controlPoints(x) {\n var i,\n n = x.length - 1,\n m,\n a = new Array(n),\n b = new Array(n),\n r = new Array(n);\n a[0] = 0, b[0] = 2, r[0] = x[0] + 2 * x[1];\n for (i = 1; i < n - 1; ++i) a[i] = 1, b[i] = 4, r[i] = 4 * x[i] + 2 * x[i + 1];\n a[n - 1] = 2, b[n - 1] = 7, r[n - 1] = 8 * x[n - 1] + x[n];\n for (i = 1; i < n; ++i) m = a[i] / b[i - 1], b[i] -= m, r[i] -= m * r[i - 1];\n a[n - 1] = r[n - 1] / b[n - 1];\n for (i = n - 2; i >= 0; --i) a[i] = (r[i] - a[i + 1]) / b[i];\n b[n - 1] = (x[n] + a[n - 1]) / 2;\n for (i = 0; i < n - 1; ++i) b[i] = 2 * x[i + 1] - a[i + 1];\n return [a, b];\n}\n\nexport default function(context) {\n return new Natural(context);\n}\n","import curveLinear from \"./linear.js\";\n\nexport var curveRadialLinear = curveRadial(curveLinear);\n\nfunction Radial(curve) {\n this._curve = curve;\n}\n\nRadial.prototype = {\n areaStart: function() {\n this._curve.areaStart();\n },\n areaEnd: function() {\n this._curve.areaEnd();\n },\n lineStart: function() {\n this._curve.lineStart();\n },\n lineEnd: function() {\n this._curve.lineEnd();\n },\n point: function(a, r) {\n this._curve.point(r * Math.sin(a), r * -Math.cos(a));\n }\n};\n\nexport default function curveRadial(curve) {\n\n function radial(context) {\n return new Radial(curve(context));\n }\n\n radial._curve = curve;\n\n return radial;\n}\n","function Step(context, t) {\n this._context = context;\n this._t = t;\n}\n\nStep.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x = this._y = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (0 < this._t && this._t < 1 && this._point === 2) this._context.lineTo(this._x, this._y);\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n if (this._line >= 0) this._t = 1 - this._t, this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // proceed\n default: {\n if (this._t <= 0) {\n this._context.lineTo(this._x, y);\n this._context.lineTo(x, y);\n } else {\n var x1 = this._x * (1 - this._t) + x * this._t;\n this._context.lineTo(x1, this._y);\n this._context.lineTo(x1, y);\n }\n break;\n }\n }\n this._x = x, this._y = y;\n }\n};\n\nexport default function(context) {\n return new Step(context, 0.5);\n}\n\nexport function stepBefore(context) {\n return new Step(context, 0);\n}\n\nexport function stepAfter(context) {\n return new Step(context, 1);\n}\n","export default function(a, b) {\n return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n}\n","export default function(d) {\n return d;\n}\n","export {default as arc} from \"./arc.js\";\nexport {default as area} from \"./area.js\";\nexport {default as line} from \"./line.js\";\nexport {default as pie} from \"./pie.js\";\nexport {default as areaRadial, default as radialArea} from \"./areaRadial.js\"; // Note: radialArea is deprecated!\nexport {default as lineRadial, default as radialLine} from \"./lineRadial.js\"; // Note: radialLine is deprecated!\nexport {default as pointRadial} from \"./pointRadial.js\";\nexport {linkHorizontal, linkVertical, linkRadial} from \"./link/index.js\";\n\nexport {default as symbol, symbols} from \"./symbol.js\";\nexport {default as symbolCircle} from \"./symbol/circle.js\";\nexport {default as symbolCross} from \"./symbol/cross.js\";\nexport {default as symbolDiamond} from \"./symbol/diamond.js\";\nexport {default as symbolSquare} from \"./symbol/square.js\";\nexport {default as symbolStar} from \"./symbol/star.js\";\nexport {default as symbolTriangle} from \"./symbol/triangle.js\";\nexport {default as symbolWye} from \"./symbol/wye.js\";\n\nexport {default as curveBasisClosed} from \"./curve/basisClosed.js\";\nexport {default as curveBasisOpen} from \"./curve/basisOpen.js\";\nexport {default as curveBasis} from \"./curve/basis.js\";\nexport {default as curveBundle} from \"./curve/bundle.js\";\nexport {default as curveCardinalClosed} from \"./curve/cardinalClosed.js\";\nexport {default as curveCardinalOpen} from \"./curve/cardinalOpen.js\";\nexport {default as curveCardinal} from \"./curve/cardinal.js\";\nexport {default as curveCatmullRomClosed} from \"./curve/catmullRomClosed.js\";\nexport {default as curveCatmullRomOpen} from \"./curve/catmullRomOpen.js\";\nexport {default as curveCatmullRom} from \"./curve/catmullRom.js\";\nexport {default as curveLinearClosed} from \"./curve/linearClosed.js\";\nexport {default as curveLinear} from \"./curve/linear.js\";\nexport {monotoneX as curveMonotoneX, monotoneY as curveMonotoneY} from \"./curve/monotone.js\";\nexport {default as curveNatural} from \"./curve/natural.js\";\nexport {default as curveStep, stepAfter as curveStepAfter, stepBefore as curveStepBefore} from \"./curve/step.js\";\n\nexport {default as stack} from \"./stack.js\";\nexport {default as stackOffsetExpand} from \"./offset/expand.js\";\nexport {default as stackOffsetDiverging} from \"./offset/diverging.js\";\nexport {default as stackOffsetNone} from \"./offset/none.js\";\nexport {default as stackOffsetSilhouette} from \"./offset/silhouette.js\";\nexport {default as stackOffsetWiggle} from \"./offset/wiggle.js\";\nexport {default as stackOrderAppearance} from \"./order/appearance.js\";\nexport {default as stackOrderAscending} from \"./order/ascending.js\";\nexport {default as stackOrderDescending} from \"./order/descending.js\";\nexport {default as stackOrderInsideOut} from \"./order/insideOut.js\";\nexport {default as stackOrderNone} from \"./order/none.js\";\nexport {default as stackOrderReverse} from \"./order/reverse.js\";\n","import {path} from \"d3-path\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function() {\n var x = pointX,\n y = pointY,\n defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null;\n\n function line(data) {\n var i,\n n = data.length,\n d,\n defined0 = false,\n buffer;\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) output.lineStart();\n else output.lineEnd();\n }\n if (defined0) output.point(+x(d, i, data), +y(d, i, data));\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n line.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), line) : x;\n };\n\n line.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), line) : y;\n };\n\n line.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), line) : defined;\n };\n\n line.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve;\n };\n\n line.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context;\n };\n\n return line;\n}\n","import curveRadial, {curveRadialLinear} from \"./curve/radial.js\";\nimport line from \"./line.js\";\n\nexport function lineRadial(l) {\n var c = l.curve;\n\n l.angle = l.x, delete l.x;\n l.radius = l.y, delete l.y;\n\n l.curve = function(_) {\n return arguments.length ? c(curveRadial(_)) : c()._curve;\n };\n\n return l;\n}\n\nexport default function() {\n return lineRadial(line().curve(curveRadialLinear));\n}\n","import {path} from \"d3-path\";\nimport {slice} from \"../array.js\";\nimport constant from \"../constant.js\";\nimport {x as pointX, y as pointY} from \"../point.js\";\nimport pointRadial from \"../pointRadial.js\";\n\nfunction linkSource(d) {\n return d.source;\n}\n\nfunction linkTarget(d) {\n return d.target;\n}\n\nfunction link(curve) {\n var source = linkSource,\n target = linkTarget,\n x = pointX,\n y = pointY,\n context = null;\n\n function link() {\n var buffer, argv = slice.call(arguments), s = source.apply(this, argv), t = target.apply(this, argv);\n if (!context) context = buffer = path();\n curve(context, +x.apply(this, (argv[0] = s, argv)), +y.apply(this, argv), +x.apply(this, (argv[0] = t, argv)), +y.apply(this, argv));\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n link.source = function(_) {\n return arguments.length ? (source = _, link) : source;\n };\n\n link.target = function(_) {\n return arguments.length ? (target = _, link) : target;\n };\n\n link.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), link) : x;\n };\n\n link.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), link) : y;\n };\n\n link.context = function(_) {\n return arguments.length ? ((context = _ == null ? null : _), link) : context;\n };\n\n return link;\n}\n\nfunction curveHorizontal(context, x0, y0, x1, y1) {\n context.moveTo(x0, y0);\n context.bezierCurveTo(x0 = (x0 + x1) / 2, y0, x0, y1, x1, y1);\n}\n\nfunction curveVertical(context, x0, y0, x1, y1) {\n context.moveTo(x0, y0);\n context.bezierCurveTo(x0, y0 = (y0 + y1) / 2, x1, y0, x1, y1);\n}\n\nfunction curveRadial(context, x0, y0, x1, y1) {\n var p0 = pointRadial(x0, y0),\n p1 = pointRadial(x0, y0 = (y0 + y1) / 2),\n p2 = pointRadial(x1, y0),\n p3 = pointRadial(x1, y1);\n context.moveTo(p0[0], p0[1]);\n context.bezierCurveTo(p1[0], p1[1], p2[0], p2[1], p3[0], p3[1]);\n}\n\nexport function linkHorizontal() {\n return link(curveHorizontal);\n}\n\nexport function linkVertical() {\n return link(curveVertical);\n}\n\nexport function linkRadial() {\n var l = link(curveRadial);\n l.angle = l.x, delete l.x;\n l.radius = l.y, delete l.y;\n return l;\n}\n","export var abs = Math.abs;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var max = Math.max;\nexport var min = Math.min;\nexport var sin = Math.sin;\nexport var sqrt = Math.sqrt;\n\nexport var epsilon = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var tau = 2 * pi;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x);\n}\n","export default function() {}\n","export default function(series, order) {\n if (!((n = series.length) > 0)) return;\n for (var i, j = 0, d, dy, yp, yn, n, m = series[order[0]].length; j < m; ++j) {\n for (yp = yn = 0, i = 0; i < n; ++i) {\n if ((dy = (d = series[order[i]][j])[1] - d[0]) > 0) {\n d[0] = yp, d[1] = yp += dy;\n } else if (dy < 0) {\n d[1] = yn, d[0] = yn += dy;\n } else {\n d[0] = 0, d[1] = dy;\n }\n }\n }\n}\n","import none from \"./none.js\";\n\nexport default function(series, order) {\n if (!((n = series.length) > 0)) return;\n for (var i, n, j = 0, m = series[0].length, y; j < m; ++j) {\n for (y = i = 0; i < n; ++i) y += series[i][j][1] || 0;\n if (y) for (i = 0; i < n; ++i) series[i][j][1] /= y;\n }\n none(series, order);\n}\n","export default function(series, order) {\n if (!((n = series.length) > 1)) return;\n for (var i = 1, j, s0, s1 = series[order[0]], n, m = s1.length; i < n; ++i) {\n s0 = s1, s1 = series[order[i]];\n for (j = 0; j < m; ++j) {\n s1[j][1] += s1[j][0] = isNaN(s0[j][1]) ? s0[j][0] : s0[j][1];\n }\n }\n}\n","import none from \"./none.js\";\n\nexport default function(series, order) {\n if (!((n = series.length) > 0)) return;\n for (var j = 0, s0 = series[order[0]], n, m = s0.length; j < m; ++j) {\n for (var i = 0, y = 0; i < n; ++i) y += series[i][j][1] || 0;\n s0[j][1] += s0[j][0] = -y / 2;\n }\n none(series, order);\n}\n","import none from \"./none.js\";\n\nexport default function(series, order) {\n if (!((n = series.length) > 0) || !((m = (s0 = series[order[0]]).length) > 0)) return;\n for (var y = 0, j = 1, s0, m, n; j < m; ++j) {\n for (var i = 0, s1 = 0, s2 = 0; i < n; ++i) {\n var si = series[order[i]],\n sij0 = si[j][1] || 0,\n sij1 = si[j - 1][1] || 0,\n s3 = (sij0 - sij1) / 2;\n for (var k = 0; k < i; ++k) {\n var sk = series[order[k]],\n skj0 = sk[j][1] || 0,\n skj1 = sk[j - 1][1] || 0;\n s3 += skj0 - skj1;\n }\n s1 += sij0, s2 += s3 * sij0;\n }\n s0[j - 1][1] += s0[j - 1][0] = y;\n if (s1) y -= s2 / s1;\n }\n s0[j - 1][1] += s0[j - 1][0] = y;\n none(series, order);\n}\n","import none from \"./none.js\";\n\nexport default function(series) {\n var peaks = series.map(peak);\n return none(series).sort(function(a, b) { return peaks[a] - peaks[b]; });\n}\n\nfunction peak(series) {\n var i = -1, j = 0, n = series.length, vi, vj = -Infinity;\n while (++i < n) if ((vi = +series[i][1]) > vj) vj = vi, j = i;\n return j;\n}\n","import none from \"./none.js\";\n\nexport default function(series) {\n var sums = series.map(sum);\n return none(series).sort(function(a, b) { return sums[a] - sums[b]; });\n}\n\nexport function sum(series) {\n var s = 0, i = -1, n = series.length, v;\n while (++i < n) if (v = +series[i][1]) s += v;\n return s;\n}\n","import ascending from \"./ascending.js\";\n\nexport default function(series) {\n return ascending(series).reverse();\n}\n","import appearance from \"./appearance.js\";\nimport {sum} from \"./ascending.js\";\n\nexport default function(series) {\n var n = series.length,\n i,\n j,\n sums = series.map(sum),\n order = appearance(series),\n top = 0,\n bottom = 0,\n tops = [],\n bottoms = [];\n\n for (i = 0; i < n; ++i) {\n j = order[i];\n if (top < bottom) {\n top += sums[j];\n tops.push(j);\n } else {\n bottom += sums[j];\n bottoms.push(j);\n }\n }\n\n return bottoms.reverse().concat(tops);\n}\n","export default function(series) {\n var n = series.length, o = new Array(n);\n while (--n >= 0) o[n] = n;\n return o;\n}\n","import none from \"./none.js\";\n\nexport default function(series) {\n return none(series).reverse();\n}\n","import constant from \"./constant.js\";\nimport descending from \"./descending.js\";\nimport identity from \"./identity.js\";\nimport {tau} from \"./math.js\";\n\nexport default function() {\n var value = identity,\n sortValues = descending,\n sort = null,\n startAngle = constant(0),\n endAngle = constant(tau),\n padAngle = constant(0);\n\n function pie(data) {\n var i,\n n = data.length,\n j,\n k,\n sum = 0,\n index = new Array(n),\n arcs = new Array(n),\n a0 = +startAngle.apply(this, arguments),\n da = Math.min(tau, Math.max(-tau, endAngle.apply(this, arguments) - a0)),\n a1,\n p = Math.min(Math.abs(da) / n, padAngle.apply(this, arguments)),\n pa = p * (da < 0 ? -1 : 1),\n v;\n\n for (i = 0; i < n; ++i) {\n if ((v = arcs[index[i] = i] = +value(data[i], i, data)) > 0) {\n sum += v;\n }\n }\n\n // Optionally sort the arcs by previously-computed values or by data.\n if (sortValues != null) index.sort(function(i, j) { return sortValues(arcs[i], arcs[j]); });\n else if (sort != null) index.sort(function(i, j) { return sort(data[i], data[j]); });\n\n // Compute the arcs! They are stored in the original data's order.\n for (i = 0, k = sum ? (da - n * pa) / sum : 0; i < n; ++i, a0 = a1) {\n j = index[i], v = arcs[j], a1 = a0 + (v > 0 ? v * k : 0) + pa, arcs[j] = {\n data: data[j],\n index: i,\n value: v,\n startAngle: a0,\n endAngle: a1,\n padAngle: p\n };\n }\n\n return arcs;\n }\n\n pie.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(+_), pie) : value;\n };\n\n pie.sortValues = function(_) {\n return arguments.length ? (sortValues = _, sort = null, pie) : sortValues;\n };\n\n pie.sort = function(_) {\n return arguments.length ? (sort = _, sortValues = null, pie) : sort;\n };\n\n pie.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : startAngle;\n };\n\n pie.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : endAngle;\n };\n\n pie.padAngle = function(_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : padAngle;\n };\n\n return pie;\n}\n","export function x(p) {\n return p[0];\n}\n\nexport function y(p) {\n return p[1];\n}\n","export default function(x, y) {\n return [(y = +y) * Math.cos(x -= Math.PI / 2), y * Math.sin(x)];\n}\n","import {slice} from \"./array.js\";\nimport constant from \"./constant.js\";\nimport offsetNone from \"./offset/none.js\";\nimport orderNone from \"./order/none.js\";\n\nfunction stackValue(d, key) {\n return d[key];\n}\n\nexport default function() {\n var keys = constant([]),\n order = orderNone,\n offset = offsetNone,\n value = stackValue;\n\n function stack(data) {\n var kz = keys.apply(this, arguments),\n i,\n m = data.length,\n n = kz.length,\n sz = new Array(n),\n oz;\n\n for (i = 0; i < n; ++i) {\n for (var ki = kz[i], si = sz[i] = new Array(m), j = 0, sij; j < m; ++j) {\n si[j] = sij = [0, +value(data[j], ki, j, data)];\n sij.data = data[j];\n }\n si.key = ki;\n }\n\n for (i = 0, oz = order(sz); i < n; ++i) {\n sz[oz[i]].index = i;\n }\n\n offset(sz, oz);\n return sz;\n }\n\n stack.keys = function(_) {\n return arguments.length ? (keys = typeof _ === \"function\" ? _ : constant(slice.call(_)), stack) : keys;\n };\n\n stack.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(+_), stack) : value;\n };\n\n stack.order = function(_) {\n return arguments.length ? (order = _ == null ? orderNone : typeof _ === \"function\" ? _ : constant(slice.call(_)), stack) : order;\n };\n\n stack.offset = function(_) {\n return arguments.length ? (offset = _ == null ? offsetNone : _, stack) : offset;\n };\n\n return stack;\n}\n","import {path} from \"d3-path\";\nimport circle from \"./symbol/circle.js\";\nimport cross from \"./symbol/cross.js\";\nimport diamond from \"./symbol/diamond.js\";\nimport star from \"./symbol/star.js\";\nimport square from \"./symbol/square.js\";\nimport triangle from \"./symbol/triangle.js\";\nimport wye from \"./symbol/wye.js\";\nimport constant from \"./constant.js\";\n\nexport var symbols = [\n circle,\n cross,\n diamond,\n square,\n star,\n triangle,\n wye\n];\n\nexport default function() {\n var type = constant(circle),\n size = constant(64),\n context = null;\n\n function symbol() {\n var buffer;\n if (!context) context = buffer = path();\n type.apply(this, arguments).draw(context, +size.apply(this, arguments));\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n symbol.type = function(_) {\n return arguments.length ? (type = typeof _ === \"function\" ? _ : constant(_), symbol) : type;\n };\n\n symbol.size = function(_) {\n return arguments.length ? (size = typeof _ === \"function\" ? _ : constant(+_), symbol) : size;\n };\n\n symbol.context = function(_) {\n return arguments.length ? (context = _ == null ? null : _, symbol) : context;\n };\n\n return symbol;\n}\n","import {pi, tau} from \"../math.js\";\n\nexport default {\n draw: function(context, size) {\n var r = Math.sqrt(size / pi);\n context.moveTo(r, 0);\n context.arc(0, 0, r, 0, tau);\n }\n};\n","export default {\n draw: function(context, size) {\n var r = Math.sqrt(size / 5) / 2;\n context.moveTo(-3 * r, -r);\n context.lineTo(-r, -r);\n context.lineTo(-r, -3 * r);\n context.lineTo(r, -3 * r);\n context.lineTo(r, -r);\n context.lineTo(3 * r, -r);\n context.lineTo(3 * r, r);\n context.lineTo(r, r);\n context.lineTo(r, 3 * r);\n context.lineTo(-r, 3 * r);\n context.lineTo(-r, r);\n context.lineTo(-3 * r, r);\n context.closePath();\n }\n};\n","var tan30 = Math.sqrt(1 / 3),\n tan30_2 = tan30 * 2;\n\nexport default {\n draw: function(context, size) {\n var y = Math.sqrt(size / tan30_2),\n x = y * tan30;\n context.moveTo(0, -y);\n context.lineTo(x, 0);\n context.lineTo(0, y);\n context.lineTo(-x, 0);\n context.closePath();\n }\n};\n","export default {\n draw: function(context, size) {\n var w = Math.sqrt(size),\n x = -w / 2;\n context.rect(x, x, w, w);\n }\n};\n","import {pi, tau} from \"../math.js\";\n\nvar ka = 0.89081309152928522810,\n kr = Math.sin(pi / 10) / Math.sin(7 * pi / 10),\n kx = Math.sin(tau / 10) * kr,\n ky = -Math.cos(tau / 10) * kr;\n\nexport default {\n draw: function(context, size) {\n var r = Math.sqrt(size * ka),\n x = kx * r,\n y = ky * r;\n context.moveTo(0, -r);\n context.lineTo(x, y);\n for (var i = 1; i < 5; ++i) {\n var a = tau * i / 5,\n c = Math.cos(a),\n s = Math.sin(a);\n context.lineTo(s * r, -c * r);\n context.lineTo(c * x - s * y, s * x + c * y);\n }\n context.closePath();\n }\n};\n","var sqrt3 = Math.sqrt(3);\n\nexport default {\n draw: function(context, size) {\n var y = -Math.sqrt(size / (sqrt3 * 3));\n context.moveTo(0, y * 2);\n context.lineTo(-sqrt3 * y, -y);\n context.lineTo(sqrt3 * y, -y);\n context.closePath();\n }\n};\n","var c = -0.5,\n s = Math.sqrt(3) / 2,\n k = 1 / Math.sqrt(12),\n a = (k / 2 + 1) * 3;\n\nexport default {\n draw: function(context, size) {\n var r = Math.sqrt(size / a),\n x0 = r / 2,\n y0 = r * k,\n x1 = x0,\n y1 = r * k + r,\n x2 = -x1,\n y2 = y1;\n context.moveTo(x0, y0);\n context.lineTo(x1, y1);\n context.lineTo(x2, y2);\n context.lineTo(c * x0 - s * y0, s * x0 + c * y0);\n context.lineTo(c * x1 - s * y1, s * x1 + c * y1);\n context.lineTo(c * x2 - s * y2, s * x2 + c * y2);\n context.lineTo(c * x0 + s * y0, c * y0 - s * x0);\n context.lineTo(c * x1 + s * y1, c * y1 - s * x1);\n context.lineTo(c * x2 + s * y2, c * y2 - s * x2);\n context.closePath();\n }\n};\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}\n","export {default as timeFormatDefaultLocale, timeFormat, timeParse, utcFormat, utcParse} from \"./defaultLocale.js\";\nexport {default as timeFormatLocale} from \"./locale.js\";\nexport {default as isoFormat} from \"./isoFormat.js\";\nexport {default as isoParse} from \"./isoParse.js\";\n","import {utcFormat} from \"./defaultLocale.js\";\n\nexport var isoSpecifier = \"%Y-%m-%dT%H:%M:%S.%LZ\";\n\nfunction formatIsoNative(date) {\n return date.toISOString();\n}\n\nvar formatIso = Date.prototype.toISOString\n ? formatIsoNative\n : utcFormat(isoSpecifier);\n\nexport default formatIso;\n","import {isoSpecifier} from \"./isoFormat.js\";\nimport {utcParse} from \"./defaultLocale.js\";\n\nfunction parseIsoNative(string) {\n var date = new Date(string);\n return isNaN(date) ? null : date;\n}\n\nvar parseIso = +new Date(\"2000-01-01T00:00:00.000Z\")\n ? parseIsoNative\n : utcParse(isoSpecifier);\n\nexport default parseIso;\n","import {\n timeDay,\n timeSunday,\n timeMonday,\n timeThursday,\n timeYear,\n utcDay,\n utcSunday,\n utcMonday,\n utcThursday,\n utcYear\n} from \"d3-time\";\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newDate(y, m, d) {\n return {y: y, m: m, d: d, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"f\": formatMicroseconds,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"q\": formatQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatSeconds,\n \"u\": formatWeekdayNumberMonday,\n \"U\": formatWeekNumberSunday,\n \"V\": formatWeekNumberISO,\n \"w\": formatWeekdayNumberSunday,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"f\": formatUTCMicroseconds,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"q\": formatUTCQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatUTCSeconds,\n \"u\": formatUTCWeekdayNumberMonday,\n \"U\": formatUTCWeekNumberSunday,\n \"V\": formatUTCWeekNumberISO,\n \"w\": formatUTCWeekdayNumberSunday,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"f\": parseMicroseconds,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"q\": parseQuarter,\n \"Q\": parseUnixTimestamp,\n \"s\": parseUnixTimestampSeconds,\n \"S\": parseSeconds,\n \"u\": parseWeekdayNumberMonday,\n \"U\": parseWeekNumberSunday,\n \"V\": parseWeekNumberISO,\n \"w\": parseWeekdayNumberSunday,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function(date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, Z) {\n return function(string) {\n var d = newDate(1900, undefined, 1),\n i = parseSpecifier(d, specifier, string += \"\", 0),\n week, day;\n if (i != string.length) return null;\n\n // If a UNIX timestamp is specified, return it.\n if (\"Q\" in d) return new Date(d.Q);\n if (\"s\" in d) return new Date(d.s * 1000 + (\"L\" in d ? d.L : 0));\n\n // If this is utcParse, never use the local timezone.\n if (Z && !(\"Z\" in d)) d.Z = 0;\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // If the month was not specified, inherit from the quarter.\n if (d.m === undefined) d.m = \"q\" in d ? d.q : 0;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"V\" in d) {\n if (d.V < 1 || d.V > 53) return null;\n if (!(\"w\" in d)) d.w = 1;\n if (\"Z\" in d) {\n week = utcDate(newDate(d.y, 0, 1)), day = week.getUTCDay();\n week = day > 4 || day === 0 ? utcMonday.ceil(week) : utcMonday(week);\n week = utcDay.offset(week, (d.V - 1) * 7);\n d.y = week.getUTCFullYear();\n d.m = week.getUTCMonth();\n d.d = week.getUTCDate() + (d.w + 6) % 7;\n } else {\n week = localDate(newDate(d.y, 0, 1)), day = week.getDay();\n week = day > 4 || day === 0 ? timeMonday.ceil(week) : timeMonday(week);\n week = timeDay.offset(week, (d.V - 1) * 7);\n d.y = week.getFullYear();\n d.m = week.getMonth();\n d.d = week.getDate() + (d.w + 6) % 7;\n }\n } else if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n day = \"Z\" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return localDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatQuarter(d) {\n return 1 + ~~(d.getMonth() / 3);\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n function formatUTCQuarter(d) {\n return 1 + ~~(d.getUTCMonth() / 3);\n }\n\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function() { return specifier; };\n return f;\n },\n parse: function(specifier) {\n var p = newParse(specifier += \"\", false);\n p.toString = function() { return specifier; };\n return p;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function() { return specifier; };\n return f;\n },\n utcParse: function(specifier) {\n var p = newParse(specifier += \"\", true);\n p.toString = function() { return specifier; };\n return p;\n }\n };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n numberRe = /^\\s*\\d+/, // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n var map = {}, i = -1, n = names.length;\n while (++i < n) map[names[i].toLowerCase()] = i;\n return map;\n}\n\nfunction parseWeekdayNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekdayNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberISO(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseQuarter(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMicroseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 6));\n return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\n\nfunction parseUnixTimestamp(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseUnixTimestampSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.s = +n[0], i + n[0].length) : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMicroseconds(d, p) {\n return formatMilliseconds(d, p) + \"000\";\n}\n\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekdayNumberMonday(d) {\n var day = d.getDay();\n return day === 0 ? 7 : day;\n}\n\nfunction formatWeekNumberSunday(d, p) {\n return pad(timeSunday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction formatWeekNumberISO(d, p) {\n var day = d.getDay();\n d = (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n return pad(timeThursday.count(timeYear(d), d) + (timeYear(d).getDay() === 4), p, 2);\n}\n\nfunction formatWeekdayNumberSunday(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMicroseconds(d, p) {\n return formatUTCMilliseconds(d, p) + \"000\";\n}\n\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekdayNumberMonday(d) {\n var dow = d.getUTCDay();\n return dow === 0 ? 7 : dow;\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction formatUTCWeekNumberISO(d, p) {\n var day = d.getUTCDay();\n d = (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n return pad(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2);\n}\n\nfunction formatUTCWeekdayNumberSunday(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n\nfunction formatUnixTimestamp(d) {\n return +d;\n}\n\nfunction formatUnixTimestampSeconds(d) {\n return Math.floor(+d / 1000);\n}\n","import interval from \"./interval.js\";\nimport {durationDay, durationMinute} from \"./duration.js\";\n\nvar day = interval(function(date) {\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setDate(date.getDate() + step);\n}, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay;\n}, function(date) {\n return date.getDate() - 1;\n});\n\nexport default day;\nexport var days = day.range;\n","export var durationSecond = 1e3;\nexport var durationMinute = 6e4;\nexport var durationHour = 36e5;\nexport var durationDay = 864e5;\nexport var durationWeek = 6048e5;\n","import interval from \"./interval.js\";\nimport {durationHour, durationMinute, durationSecond} from \"./duration.js\";\n\nvar hour = interval(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getHours();\n});\n\nexport default hour;\nexport var hours = hour.range;\n","export {\n default as timeInterval\n} from \"./interval.js\";\n\nexport {\n default as timeMillisecond,\n milliseconds as timeMilliseconds,\n default as utcMillisecond,\n milliseconds as utcMilliseconds\n} from \"./millisecond.js\";\n\nexport {\n default as timeSecond,\n seconds as timeSeconds,\n default as utcSecond,\n seconds as utcSeconds\n} from \"./second.js\";\n\nexport {\n default as timeMinute,\n minutes as timeMinutes\n} from \"./minute.js\";\n\nexport {\n default as timeHour,\n hours as timeHours\n} from \"./hour.js\";\n\nexport {\n default as timeDay,\n days as timeDays\n} from \"./day.js\";\n\nexport {\n sunday as timeWeek,\n sundays as timeWeeks,\n sunday as timeSunday,\n sundays as timeSundays,\n monday as timeMonday,\n mondays as timeMondays,\n tuesday as timeTuesday,\n tuesdays as timeTuesdays,\n wednesday as timeWednesday,\n wednesdays as timeWednesdays,\n thursday as timeThursday,\n thursdays as timeThursdays,\n friday as timeFriday,\n fridays as timeFridays,\n saturday as timeSaturday,\n saturdays as timeSaturdays\n} from \"./week.js\";\n\nexport {\n default as timeMonth,\n months as timeMonths\n} from \"./month.js\";\n\nexport {\n default as timeYear,\n years as timeYears\n} from \"./year.js\";\n\nexport {\n default as utcMinute,\n utcMinutes as utcMinutes\n} from \"./utcMinute.js\";\n\nexport {\n default as utcHour,\n utcHours as utcHours\n} from \"./utcHour.js\";\n\nexport {\n default as utcDay,\n utcDays as utcDays\n} from \"./utcDay.js\";\n\nexport {\n utcSunday as utcWeek,\n utcSundays as utcWeeks,\n utcSunday as utcSunday,\n utcSundays as utcSundays,\n utcMonday as utcMonday,\n utcMondays as utcMondays,\n utcTuesday as utcTuesday,\n utcTuesdays as utcTuesdays,\n utcWednesday as utcWednesday,\n utcWednesdays as utcWednesdays,\n utcThursday as utcThursday,\n utcThursdays as utcThursdays,\n utcFriday as utcFriday,\n utcFridays as utcFridays,\n utcSaturday as utcSaturday,\n utcSaturdays as utcSaturdays\n} from \"./utcWeek.js\";\n\nexport {\n default as utcMonth,\n utcMonths as utcMonths\n} from \"./utcMonth.js\";\n\nexport {\n default as utcYear,\n utcYears as utcYears\n} from \"./utcYear.js\";\n","var t0 = new Date,\n t1 = new Date;\n\nexport default function newInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date;\n }\n\n interval.floor = function(date) {\n return floori(date = new Date(+date)), date;\n };\n\n interval.ceil = function(date) {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = function(date) {\n var d0 = interval(date),\n d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = function(date, step) {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = function(start, stop, step) {\n var range = [], previous;\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n while (previous < start && start < stop);\n return range;\n };\n\n interval.filter = function(test) {\n return newInterval(function(date) {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, function(date, step) {\n if (date >= date) {\n if (step < 0) while (++step <= 0) {\n while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n } else while (--step >= 0) {\n while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n }\n }\n });\n };\n\n if (count) {\n interval.count = function(start, end) {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = function(step) {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? function(d) { return field(d) % step === 0; }\n : function(d) { return interval.count(0, d) % step === 0; });\n };\n }\n\n return interval;\n}\n","import interval from \"./interval.js\";\n\nvar millisecond = interval(function() {\n // noop\n}, function(date, step) {\n date.setTime(+date + step);\n}, function(start, end) {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = function(k) {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return interval(function(date) {\n date.setTime(Math.floor(date / k) * k);\n }, function(date, step) {\n date.setTime(+date + step * k);\n }, function(start, end) {\n return (end - start) / k;\n });\n};\n\nexport default millisecond;\nexport var milliseconds = millisecond.range;\n","import interval from \"./interval.js\";\nimport {durationMinute, durationSecond} from \"./duration.js\";\n\nvar minute = interval(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getMinutes();\n});\n\nexport default minute;\nexport var minutes = minute.range;\n","import interval from \"./interval.js\";\n\nvar month = interval(function(date) {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setMonth(date.getMonth() + step);\n}, function(start, end) {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, function(date) {\n return date.getMonth();\n});\n\nexport default month;\nexport var months = month.range;\n","import interval from \"./interval.js\";\nimport {durationSecond} from \"./duration.js\";\n\nvar second = interval(function(date) {\n date.setTime(date - date.getMilliseconds());\n}, function(date, step) {\n date.setTime(+date + step * durationSecond);\n}, function(start, end) {\n return (end - start) / durationSecond;\n}, function(date) {\n return date.getUTCSeconds();\n});\n\nexport default second;\nexport var seconds = second.range;\n","import interval from \"./interval.js\";\nimport {durationDay} from \"./duration.js\";\n\nvar utcDay = interval(function(date) {\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step);\n}, function(start, end) {\n return (end - start) / durationDay;\n}, function(date) {\n return date.getUTCDate() - 1;\n});\n\nexport default utcDay;\nexport var utcDays = utcDay.range;\n","import interval from \"./interval.js\";\nimport {durationHour} from \"./duration.js\";\n\nvar utcHour = interval(function(date) {\n date.setUTCMinutes(0, 0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getUTCHours();\n});\n\nexport default utcHour;\nexport var utcHours = utcHour.range;\n","import interval from \"./interval.js\";\nimport {durationMinute} from \"./duration.js\";\n\nvar utcMinute = interval(function(date) {\n date.setUTCSeconds(0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getUTCMinutes();\n});\n\nexport default utcMinute;\nexport var utcMinutes = utcMinute.range;\n","import interval from \"./interval.js\";\n\nvar utcMonth = interval(function(date) {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, function(start, end) {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, function(date) {\n return date.getUTCMonth();\n});\n\nexport default utcMonth;\nexport var utcMonths = utcMonth.range;\n","import interval from \"./interval.js\";\nimport {durationWeek} from \"./duration.js\";\n\nfunction utcWeekday(i) {\n return interval(function(date) {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, function(start, end) {\n return (end - start) / durationWeek;\n });\n}\n\nexport var utcSunday = utcWeekday(0);\nexport var utcMonday = utcWeekday(1);\nexport var utcTuesday = utcWeekday(2);\nexport var utcWednesday = utcWeekday(3);\nexport var utcThursday = utcWeekday(4);\nexport var utcFriday = utcWeekday(5);\nexport var utcSaturday = utcWeekday(6);\n\nexport var utcSundays = utcSunday.range;\nexport var utcMondays = utcMonday.range;\nexport var utcTuesdays = utcTuesday.range;\nexport var utcWednesdays = utcWednesday.range;\nexport var utcThursdays = utcThursday.range;\nexport var utcFridays = utcFriday.range;\nexport var utcSaturdays = utcSaturday.range;\n","import interval from \"./interval.js\";\n\nvar utcYear = interval(function(date) {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, function(start, end) {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, function(date) {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport default utcYear;\nexport var utcYears = utcYear.range;\n","import interval from \"./interval.js\";\nimport {durationMinute, durationWeek} from \"./duration.js\";\n\nfunction weekday(i) {\n return interval(function(date) {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setDate(date.getDate() + step * 7);\n }, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport var sunday = weekday(0);\nexport var monday = weekday(1);\nexport var tuesday = weekday(2);\nexport var wednesday = weekday(3);\nexport var thursday = weekday(4);\nexport var friday = weekday(5);\nexport var saturday = weekday(6);\n\nexport var sundays = sunday.range;\nexport var mondays = monday.range;\nexport var tuesdays = tuesday.range;\nexport var wednesdays = wednesday.range;\nexport var thursdays = thursday.range;\nexport var fridays = friday.range;\nexport var saturdays = saturday.range;\n","import interval from \"./interval.js\";\n\nvar year = interval(function(date) {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setFullYear(date.getFullYear() + step);\n}, function(start, end) {\n return end.getFullYear() - start.getFullYear();\n}, function(date) {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\nyear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport default year;\nexport var years = year.range;\n","export {\n now,\n timer,\n timerFlush\n} from \"./timer.js\";\n\nexport {\n default as timeout\n} from \"./timeout.js\";\n\nexport {\n default as interval\n} from \"./interval.js\";\n","import {Timer, now} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n var t = new Timer, total = delay;\n if (delay == null) return t.restart(callback, delay, time), t;\n delay = +delay, time = time == null ? now() : +time;\n t.restart(function tick(elapsed) {\n elapsed += total;\n t.restart(tick, total += delay, time);\n callback(elapsed);\n }, delay, time);\n return t;\n}\n","import {Timer} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n var t = new Timer;\n delay = delay == null ? 0 : +delay;\n t.restart(function(elapsed) {\n t.stop();\n callback(elapsed + delay);\n }, delay, time);\n return t;\n}\n","var frame = 0, // is an animation frame pending?\n timeout = 0, // is a timeout pending?\n interval = 0, // are any timers active?\n pokeDelay = 1000, // how frequently we check for clock skew\n taskHead,\n taskTail,\n clockLast = 0,\n clockNow = 0,\n clockSkew = 0,\n clock = typeof performance === \"object\" && performance.now ? performance : Date,\n setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n clockNow = 0;\n}\n\nexport function Timer() {\n this._call =\n this._time =\n this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function(callback, delay, time) {\n if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail) taskTail._next = this;\n else taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\n\nexport function timer(callback, delay, time) {\n var t = new Timer;\n t.restart(callback, delay, time);\n return t;\n}\n\nexport function timerFlush() {\n now(); // Get the current time, if not already set.\n ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n var t = taskHead, e;\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(null, e);\n t = t._next;\n }\n --frame;\n}\n\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\n\nfunction poke() {\n var now = clock.now(), delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n var t0, t1 = taskHead, t2, time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\n\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\n","import {Transition} from \"./transition/index.js\";\nimport {SCHEDULED} from \"./transition/schedule.js\";\n\nvar root = [null];\n\nexport default function(node, name) {\n var schedules = node.__transition,\n schedule,\n i;\n\n if (schedules) {\n name = name == null ? null : name + \"\";\n for (i in schedules) {\n if ((schedule = schedules[i]).state > SCHEDULED && schedule.name === name) {\n return new Transition([[node]], root, name, +i);\n }\n }\n }\n\n return null;\n}\n","import \"./selection/index.js\";\nexport {default as transition} from \"./transition/index.js\";\nexport {default as active} from \"./active.js\";\nexport {default as interrupt} from \"./interrupt.js\";\n","import {STARTING, ENDING, ENDED} from \"./transition/schedule.js\";\n\nexport default function(node, name) {\n var schedules = node.__transition,\n schedule,\n active,\n empty = true,\n i;\n\n if (!schedules) return;\n\n name = name == null ? null : name + \"\";\n\n for (i in schedules) {\n if ((schedule = schedules[i]).name !== name) { empty = false; continue; }\n active = schedule.state > STARTING && schedule.state < ENDING;\n schedule.state = ENDED;\n schedule.timer.stop();\n schedule.on.call(active ? \"interrupt\" : \"cancel\", node, node.__data__, schedule.index, schedule.group);\n delete schedules[i];\n }\n\n if (empty) delete node.__transition;\n}\n","import {selection} from \"d3-selection\";\nimport selection_interrupt from \"./interrupt.js\";\nimport selection_transition from \"./transition.js\";\n\nselection.prototype.interrupt = selection_interrupt;\nselection.prototype.transition = selection_transition;\n","import interrupt from \"../interrupt.js\";\n\nexport default function(name) {\n return this.each(function() {\n interrupt(this, name);\n });\n}\n","import {Transition, newId} from \"../transition/index.js\";\nimport schedule from \"../transition/schedule.js\";\nimport {easeCubicInOut} from \"d3-ease\";\nimport {now} from \"d3-timer\";\n\nvar defaultTiming = {\n time: null, // Set on use.\n delay: 0,\n duration: 250,\n ease: easeCubicInOut\n};\n\nfunction inherit(node, id) {\n var timing;\n while (!(timing = node.__transition) || !(timing = timing[id])) {\n if (!(node = node.parentNode)) {\n return defaultTiming.time = now(), defaultTiming;\n }\n }\n return timing;\n}\n\nexport default function(name) {\n var id,\n timing;\n\n if (name instanceof Transition) {\n id = name._id, name = name._name;\n } else {\n id = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + \"\";\n }\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n schedule(node, name, id, i, group, timing || inherit(node, id));\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id);\n}\n","import {interpolateTransformSvg as interpolateTransform} from \"d3-interpolate\";\nimport {namespace} from \"d3-selection\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttribute(name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrConstantNS(fullname, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttributeNS(fullname.space, fullname.local);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttribute(name);\n string0 = this.getAttribute(name);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction attrFunctionNS(fullname, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);\n string0 = this.getAttributeNS(fullname.space, fullname.local);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name), i = fullname === \"transform\" ? interpolateTransform : interpolate;\n return this.attrTween(name, typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, \"attr.\" + name, value))\n : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname)\n : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value));\n}\n","import {namespace} from \"d3-selection\";\n\nfunction attrInterpolate(name, i) {\n return function(t) {\n this.setAttribute(name, i.call(this, t));\n };\n}\n\nfunction attrInterpolateNS(fullname, i) {\n return function(t) {\n this.setAttributeNS(fullname.space, fullname.local, i.call(this, t));\n };\n}\n\nfunction attrTweenNS(fullname, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolateNS(fullname, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nfunction attrTween(name, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolate(name, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value) {\n var key = \"attr.\" + name;\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n var fullname = namespace(name);\n return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n}\n","import {get, init} from \"./schedule.js\";\n\nfunction delayFunction(id, value) {\n return function() {\n init(this, id).delay = +value.apply(this, arguments);\n };\n}\n\nfunction delayConstant(id, value) {\n return value = +value, function() {\n init(this, id).delay = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? delayFunction\n : delayConstant)(id, value))\n : get(this.node(), id).delay;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction durationFunction(id, value) {\n return function() {\n set(this, id).duration = +value.apply(this, arguments);\n };\n}\n\nfunction durationConstant(id, value) {\n return value = +value, function() {\n set(this, id).duration = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? durationFunction\n : durationConstant)(id, value))\n : get(this.node(), id).duration;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction easeConstant(id, value) {\n if (typeof value !== \"function\") throw new Error;\n return function() {\n set(this, id).ease = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each(easeConstant(id, value))\n : get(this.node(), id).ease;\n}\n","import {set} from \"./schedule.js\";\n\nexport default function() {\n var on0, on1, that = this, id = that._id, size = that.size();\n return new Promise(function(resolve, reject) {\n var cancel = {value: reject},\n end = {value: function() { if (--size === 0) resolve(); }};\n\n that.each(function() {\n var schedule = set(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) {\n on1 = (on0 = on).copy();\n on1._.cancel.push(cancel);\n on1._.interrupt.push(cancel);\n on1._.end.push(end);\n }\n\n schedule.on = on1;\n });\n });\n}\n","import {matcher} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Transition(subgroups, this._parents, this._name, this._id);\n}\n","import {selection} from \"d3-selection\";\nimport transition_attr from \"./attr.js\";\nimport transition_attrTween from \"./attrTween.js\";\nimport transition_delay from \"./delay.js\";\nimport transition_duration from \"./duration.js\";\nimport transition_ease from \"./ease.js\";\nimport transition_filter from \"./filter.js\";\nimport transition_merge from \"./merge.js\";\nimport transition_on from \"./on.js\";\nimport transition_remove from \"./remove.js\";\nimport transition_select from \"./select.js\";\nimport transition_selectAll from \"./selectAll.js\";\nimport transition_selection from \"./selection.js\";\nimport transition_style from \"./style.js\";\nimport transition_styleTween from \"./styleTween.js\";\nimport transition_text from \"./text.js\";\nimport transition_textTween from \"./textTween.js\";\nimport transition_transition from \"./transition.js\";\nimport transition_tween from \"./tween.js\";\nimport transition_end from \"./end.js\";\n\nvar id = 0;\n\nexport function Transition(groups, parents, name, id) {\n this._groups = groups;\n this._parents = parents;\n this._name = name;\n this._id = id;\n}\n\nexport default function transition(name) {\n return selection().transition(name);\n}\n\nexport function newId() {\n return ++id;\n}\n\nvar selection_prototype = selection.prototype;\n\nTransition.prototype = transition.prototype = {\n constructor: Transition,\n select: transition_select,\n selectAll: transition_selectAll,\n filter: transition_filter,\n merge: transition_merge,\n selection: transition_selection,\n transition: transition_transition,\n call: selection_prototype.call,\n nodes: selection_prototype.nodes,\n node: selection_prototype.node,\n size: selection_prototype.size,\n empty: selection_prototype.empty,\n each: selection_prototype.each,\n on: transition_on,\n attr: transition_attr,\n attrTween: transition_attrTween,\n style: transition_style,\n styleTween: transition_styleTween,\n text: transition_text,\n textTween: transition_textTween,\n remove: transition_remove,\n tween: transition_tween,\n delay: transition_delay,\n duration: transition_duration,\n ease: transition_ease,\n end: transition_end\n};\n","import {color} from \"d3-color\";\nimport {interpolateNumber, interpolateRgb, interpolateString} from \"d3-interpolate\";\n\nexport default function(a, b) {\n var c;\n return (typeof b === \"number\" ? interpolateNumber\n : b instanceof color ? interpolateRgb\n : (c = color(b)) ? (b = c, interpolateRgb)\n : interpolateString)(a, b);\n}\n","import {Transition} from \"./index.js\";\n\nexport default function(transition) {\n if (transition._id !== this._id) throw new Error;\n\n for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Transition(merges, this._parents, this._name, this._id);\n}\n","import {get, set, init} from \"./schedule.js\";\n\nfunction start(name) {\n return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n var i = t.indexOf(\".\");\n if (i >= 0) t = t.slice(0, i);\n return !t || t === \"start\";\n });\n}\n\nfunction onFunction(id, name, listener) {\n var on0, on1, sit = start(name) ? init : set;\n return function() {\n var schedule = sit(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, listener) {\n var id = this._id;\n\n return arguments.length < 2\n ? get(this.node(), id).on.on(name)\n : this.each(onFunction(id, name, listener));\n}\n","function removeFunction(id) {\n return function() {\n var parent = this.parentNode;\n for (var i in this.__transition) if (+i !== id) return;\n if (parent) parent.removeChild(this);\n };\n}\n\nexport default function() {\n return this.on(\"end.remove\", removeFunction(this._id));\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {timer, timeout} from \"d3-timer\";\n\nvar emptyOn = dispatch(\"start\", \"end\", \"cancel\", \"interrupt\");\nvar emptyTween = [];\n\nexport var CREATED = 0;\nexport var SCHEDULED = 1;\nexport var STARTING = 2;\nexport var STARTED = 3;\nexport var RUNNING = 4;\nexport var ENDING = 5;\nexport var ENDED = 6;\n\nexport default function(node, name, id, index, group, timing) {\n var schedules = node.__transition;\n if (!schedules) node.__transition = {};\n else if (id in schedules) return;\n create(node, id, {\n name: name,\n index: index, // For context during callback.\n group: group, // For context during callback.\n on: emptyOn,\n tween: emptyTween,\n time: timing.time,\n delay: timing.delay,\n duration: timing.duration,\n ease: timing.ease,\n timer: null,\n state: CREATED\n });\n}\n\nexport function init(node, id) {\n var schedule = get(node, id);\n if (schedule.state > CREATED) throw new Error(\"too late; already scheduled\");\n return schedule;\n}\n\nexport function set(node, id) {\n var schedule = get(node, id);\n if (schedule.state > STARTED) throw new Error(\"too late; already running\");\n return schedule;\n}\n\nexport function get(node, id) {\n var schedule = node.__transition;\n if (!schedule || !(schedule = schedule[id])) throw new Error(\"transition not found\");\n return schedule;\n}\n\nfunction create(node, id, self) {\n var schedules = node.__transition,\n tween;\n\n // Initialize the self timer when the transition is created.\n // Note the actual delay is not known until the first callback!\n schedules[id] = self;\n self.timer = timer(schedule, 0, self.time);\n\n function schedule(elapsed) {\n self.state = SCHEDULED;\n self.timer.restart(start, self.delay, self.time);\n\n // If the elapsed delay is less than our first sleep, start immediately.\n if (self.delay <= elapsed) start(elapsed - self.delay);\n }\n\n function start(elapsed) {\n var i, j, n, o;\n\n // If the state is not SCHEDULED, then we previously errored on start.\n if (self.state !== SCHEDULED) return stop();\n\n for (i in schedules) {\n o = schedules[i];\n if (o.name !== self.name) continue;\n\n // While this element already has a starting transition during this frame,\n // defer starting an interrupting transition until that transition has a\n // chance to tick (and possibly end); see d3/d3-transition#54!\n if (o.state === STARTED) return timeout(start);\n\n // Interrupt the active transition, if any.\n if (o.state === RUNNING) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"interrupt\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n\n // Cancel any pre-empted transitions.\n else if (+i < id) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"cancel\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n }\n\n // Defer the first tick to end of the current frame; see d3/d3#1576.\n // Note the transition may be canceled after start and before the first tick!\n // Note this must be scheduled before the start event; see d3/d3-transition#16!\n // Assuming this is successful, subsequent callbacks go straight to tick.\n timeout(function() {\n if (self.state === STARTED) {\n self.state = RUNNING;\n self.timer.restart(tick, self.delay, self.time);\n tick(elapsed);\n }\n });\n\n // Dispatch the start event.\n // Note this must be done before the tween are initialized.\n self.state = STARTING;\n self.on.call(\"start\", node, node.__data__, self.index, self.group);\n if (self.state !== STARTING) return; // interrupted\n self.state = STARTED;\n\n // Initialize the tween, deleting null tween.\n tween = new Array(n = self.tween.length);\n for (i = 0, j = -1; i < n; ++i) {\n if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {\n tween[++j] = o;\n }\n }\n tween.length = j + 1;\n }\n\n function tick(elapsed) {\n var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1),\n i = -1,\n n = tween.length;\n\n while (++i < n) {\n tween[i].call(node, t);\n }\n\n // Dispatch the end event.\n if (self.state === ENDING) {\n self.on.call(\"end\", node, node.__data__, self.index, self.group);\n stop();\n }\n }\n\n function stop() {\n self.state = ENDED;\n self.timer.stop();\n delete schedules[id];\n for (var i in schedules) return; // eslint-disable-line no-unused-vars\n delete node.__transition;\n }\n}\n","import {selector} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n schedule(subgroup[i], name, id, i, subgroup, get(node, id));\n }\n }\n }\n\n return new Transition(subgroups, this._parents, name, id);\n}\n","import {selectorAll} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n for (var children = select.call(node, node.__data__, i, group), child, inherit = get(node, id), k = 0, l = children.length; k < l; ++k) {\n if (child = children[k]) {\n schedule(child, name, id, k, children, inherit);\n }\n }\n subgroups.push(children);\n parents.push(node);\n }\n }\n }\n\n return new Transition(subgroups, parents, name, id);\n}\n","import {selection} from \"d3-selection\";\n\nvar Selection = selection.prototype.constructor;\n\nexport default function() {\n return new Selection(this._groups, this._parents);\n}\n","import {interpolateTransformCss as interpolateTransform} from \"d3-interpolate\";\nimport {style} from \"d3-selection\";\nimport {set} from \"./schedule.js\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction styleNull(name, interpolate) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n string1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, string10 = string1);\n };\n}\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = style(this, name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction styleFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n value1 = value(this),\n string1 = value1 + \"\";\n if (value1 == null) string1 = value1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction styleMaybeRemove(id, name) {\n var on0, on1, listener0, key = \"style.\" + name, event = \"end.\" + key, remove;\n return function() {\n var schedule = set(this, id),\n on = schedule.on,\n listener = schedule.value[key] == null ? remove || (remove = styleRemove(name)) : undefined;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, value, priority) {\n var i = (name += \"\") === \"transform\" ? interpolateTransform : interpolate;\n return value == null ? this\n .styleTween(name, styleNull(name, i))\n .on(\"end.style.\" + name, styleRemove(name))\n : typeof value === \"function\" ? this\n .styleTween(name, styleFunction(name, i, tweenValue(this, \"style.\" + name, value)))\n .each(styleMaybeRemove(this._id, name))\n : this\n .styleTween(name, styleConstant(name, i, value), priority)\n .on(\"end.style.\" + name, null);\n}\n","function styleInterpolate(name, i, priority) {\n return function(t) {\n this.style.setProperty(name, i.call(this, t), priority);\n };\n}\n\nfunction styleTween(name, value, priority) {\n var t, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority);\n return t;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value, priority) {\n var key = \"style.\" + (name += \"\");\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n}\n","import {tweenValue} from \"./tween.js\";\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var value1 = value(this);\n this.textContent = value1 == null ? \"\" : value1;\n };\n}\n\nexport default function(value) {\n return this.tween(\"text\", typeof value === \"function\"\n ? textFunction(tweenValue(this, \"text\", value))\n : textConstant(value == null ? \"\" : value + \"\"));\n}\n","function textInterpolate(i) {\n return function(t) {\n this.textContent = i.call(this, t);\n };\n}\n\nfunction textTween(value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && textInterpolate(i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(value) {\n var key = \"text\";\n if (arguments.length < 1) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, textTween(value));\n}\n","import {Transition, newId} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function() {\n var name = this._name,\n id0 = this._id,\n id1 = newId();\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n var inherit = get(node, id0);\n schedule(node, name, id1, i, group, {\n time: inherit.time + inherit.delay + inherit.duration,\n delay: 0,\n duration: inherit.duration,\n ease: inherit.ease\n });\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id1);\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction tweenRemove(id, name) {\n var tween0, tween1;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = tween0 = tween;\n for (var i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1 = tween1.slice();\n tween1.splice(i, 1);\n break;\n }\n }\n }\n\n schedule.tween = tween1;\n };\n}\n\nfunction tweenFunction(id, name, value) {\n var tween0, tween1;\n if (typeof value !== \"function\") throw new Error;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = (tween0 = tween).slice();\n for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1[i] = t;\n break;\n }\n }\n if (i === n) tween1.push(t);\n }\n\n schedule.tween = tween1;\n };\n}\n\nexport default function(name, value) {\n var id = this._id;\n\n name += \"\";\n\n if (arguments.length < 2) {\n var tween = get(this.node(), id).tween;\n for (var i = 0, n = tween.length, t; i < n; ++i) {\n if ((t = tween[i]).name === name) {\n return t.value;\n }\n }\n return null;\n }\n\n return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value));\n}\n\nexport function tweenValue(transition, name, value) {\n var id = transition._id;\n\n transition.each(function() {\n var schedule = set(this, id);\n (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);\n });\n\n return function(node) {\n return get(node, id).value[name];\n };\n}\n","import {RedBlackNode} from \"./RedBlackTree\";\nimport {createCell} from \"./Cell\";\nimport {attachCircle, detachCircle} from \"./Circle\";\nimport {createEdge, setEdgeEnd} from \"./Edge\";\nimport {beaches, epsilon} from \"./Diagram\";\n\nvar beachPool = [];\n\nfunction Beach() {\n RedBlackNode(this);\n this.edge =\n this.site =\n this.circle = null;\n}\n\nfunction createBeach(site) {\n var beach = beachPool.pop() || new Beach;\n beach.site = site;\n return beach;\n}\n\nfunction detachBeach(beach) {\n detachCircle(beach);\n beaches.remove(beach);\n beachPool.push(beach);\n RedBlackNode(beach);\n}\n\nexport function removeBeach(beach) {\n var circle = beach.circle,\n x = circle.x,\n y = circle.cy,\n vertex = [x, y],\n previous = beach.P,\n next = beach.N,\n disappearing = [beach];\n\n detachBeach(beach);\n\n var lArc = previous;\n while (lArc.circle\n && Math.abs(x - lArc.circle.x) < epsilon\n && Math.abs(y - lArc.circle.cy) < epsilon) {\n previous = lArc.P;\n disappearing.unshift(lArc);\n detachBeach(lArc);\n lArc = previous;\n }\n\n disappearing.unshift(lArc);\n detachCircle(lArc);\n\n var rArc = next;\n while (rArc.circle\n && Math.abs(x - rArc.circle.x) < epsilon\n && Math.abs(y - rArc.circle.cy) < epsilon) {\n next = rArc.N;\n disappearing.push(rArc);\n detachBeach(rArc);\n rArc = next;\n }\n\n disappearing.push(rArc);\n detachCircle(rArc);\n\n var nArcs = disappearing.length,\n iArc;\n for (iArc = 1; iArc < nArcs; ++iArc) {\n rArc = disappearing[iArc];\n lArc = disappearing[iArc - 1];\n setEdgeEnd(rArc.edge, lArc.site, rArc.site, vertex);\n }\n\n lArc = disappearing[0];\n rArc = disappearing[nArcs - 1];\n rArc.edge = createEdge(lArc.site, rArc.site, null, vertex);\n\n attachCircle(lArc);\n attachCircle(rArc);\n}\n\nexport function addBeach(site) {\n var x = site[0],\n directrix = site[1],\n lArc,\n rArc,\n dxl,\n dxr,\n node = beaches._;\n\n while (node) {\n dxl = leftBreakPoint(node, directrix) - x;\n if (dxl > epsilon) node = node.L; else {\n dxr = x - rightBreakPoint(node, directrix);\n if (dxr > epsilon) {\n if (!node.R) {\n lArc = node;\n break;\n }\n node = node.R;\n } else {\n if (dxl > -epsilon) {\n lArc = node.P;\n rArc = node;\n } else if (dxr > -epsilon) {\n lArc = node;\n rArc = node.N;\n } else {\n lArc = rArc = node;\n }\n break;\n }\n }\n }\n\n createCell(site);\n var newArc = createBeach(site);\n beaches.insert(lArc, newArc);\n\n if (!lArc && !rArc) return;\n\n if (lArc === rArc) {\n detachCircle(lArc);\n rArc = createBeach(lArc.site);\n beaches.insert(newArc, rArc);\n newArc.edge = rArc.edge = createEdge(lArc.site, newArc.site);\n attachCircle(lArc);\n attachCircle(rArc);\n return;\n }\n\n if (!rArc) { // && lArc\n newArc.edge = createEdge(lArc.site, newArc.site);\n return;\n }\n\n // else lArc !== rArc\n detachCircle(lArc);\n detachCircle(rArc);\n\n var lSite = lArc.site,\n ax = lSite[0],\n ay = lSite[1],\n bx = site[0] - ax,\n by = site[1] - ay,\n rSite = rArc.site,\n cx = rSite[0] - ax,\n cy = rSite[1] - ay,\n d = 2 * (bx * cy - by * cx),\n hb = bx * bx + by * by,\n hc = cx * cx + cy * cy,\n vertex = [(cy * hb - by * hc) / d + ax, (bx * hc - cx * hb) / d + ay];\n\n setEdgeEnd(rArc.edge, lSite, rSite, vertex);\n newArc.edge = createEdge(lSite, site, null, vertex);\n rArc.edge = createEdge(site, rSite, null, vertex);\n attachCircle(lArc);\n attachCircle(rArc);\n}\n\nfunction leftBreakPoint(arc, directrix) {\n var site = arc.site,\n rfocx = site[0],\n rfocy = site[1],\n pby2 = rfocy - directrix;\n\n if (!pby2) return rfocx;\n\n var lArc = arc.P;\n if (!lArc) return -Infinity;\n\n site = lArc.site;\n var lfocx = site[0],\n lfocy = site[1],\n plby2 = lfocy - directrix;\n\n if (!plby2) return lfocx;\n\n var hl = lfocx - rfocx,\n aby2 = 1 / pby2 - 1 / plby2,\n b = hl / plby2;\n\n if (aby2) return (-b + Math.sqrt(b * b - 2 * aby2 * (hl * hl / (-2 * plby2) - lfocy + plby2 / 2 + rfocy - pby2 / 2))) / aby2 + rfocx;\n\n return (rfocx + lfocx) / 2;\n}\n\nfunction rightBreakPoint(arc, directrix) {\n var rArc = arc.N;\n if (rArc) return leftBreakPoint(rArc, directrix);\n var site = arc.site;\n return site[1] === directrix ? site[0] : Infinity;\n}\n","import {createBorderEdge} from \"./Edge\";\nimport {cells, edges, epsilon} from \"./Diagram\";\n\nexport function createCell(site) {\n return cells[site.index] = {\n site: site,\n halfedges: []\n };\n}\n\nfunction cellHalfedgeAngle(cell, edge) {\n var site = cell.site,\n va = edge.left,\n vb = edge.right;\n if (site === vb) vb = va, va = site;\n if (vb) return Math.atan2(vb[1] - va[1], vb[0] - va[0]);\n if (site === va) va = edge[1], vb = edge[0];\n else va = edge[0], vb = edge[1];\n return Math.atan2(va[0] - vb[0], vb[1] - va[1]);\n}\n\nexport function cellHalfedgeStart(cell, edge) {\n return edge[+(edge.left !== cell.site)];\n}\n\nexport function cellHalfedgeEnd(cell, edge) {\n return edge[+(edge.left === cell.site)];\n}\n\nexport function sortCellHalfedges() {\n for (var i = 0, n = cells.length, cell, halfedges, j, m; i < n; ++i) {\n if ((cell = cells[i]) && (m = (halfedges = cell.halfedges).length)) {\n var index = new Array(m),\n array = new Array(m);\n for (j = 0; j < m; ++j) index[j] = j, array[j] = cellHalfedgeAngle(cell, edges[halfedges[j]]);\n index.sort(function(i, j) { return array[j] - array[i]; });\n for (j = 0; j < m; ++j) array[j] = halfedges[index[j]];\n for (j = 0; j < m; ++j) halfedges[j] = array[j];\n }\n }\n}\n\nexport function clipCells(x0, y0, x1, y1) {\n var nCells = cells.length,\n iCell,\n cell,\n site,\n iHalfedge,\n halfedges,\n nHalfedges,\n start,\n startX,\n startY,\n end,\n endX,\n endY,\n cover = true;\n\n for (iCell = 0; iCell < nCells; ++iCell) {\n if (cell = cells[iCell]) {\n site = cell.site;\n halfedges = cell.halfedges;\n iHalfedge = halfedges.length;\n\n // Remove any dangling clipped edges.\n while (iHalfedge--) {\n if (!edges[halfedges[iHalfedge]]) {\n halfedges.splice(iHalfedge, 1);\n }\n }\n\n // Insert any border edges as necessary.\n iHalfedge = 0, nHalfedges = halfedges.length;\n while (iHalfedge < nHalfedges) {\n end = cellHalfedgeEnd(cell, edges[halfedges[iHalfedge]]), endX = end[0], endY = end[1];\n start = cellHalfedgeStart(cell, edges[halfedges[++iHalfedge % nHalfedges]]), startX = start[0], startY = start[1];\n if (Math.abs(endX - startX) > epsilon || Math.abs(endY - startY) > epsilon) {\n halfedges.splice(iHalfedge, 0, edges.push(createBorderEdge(site, end,\n Math.abs(endX - x0) < epsilon && y1 - endY > epsilon ? [x0, Math.abs(startX - x0) < epsilon ? startY : y1]\n : Math.abs(endY - y1) < epsilon && x1 - endX > epsilon ? [Math.abs(startY - y1) < epsilon ? startX : x1, y1]\n : Math.abs(endX - x1) < epsilon && endY - y0 > epsilon ? [x1, Math.abs(startX - x1) < epsilon ? startY : y0]\n : Math.abs(endY - y0) < epsilon && endX - x0 > epsilon ? [Math.abs(startY - y0) < epsilon ? startX : x0, y0]\n : null)) - 1);\n ++nHalfedges;\n }\n }\n\n if (nHalfedges) cover = false;\n }\n }\n\n // If there weren’t any edges, have the closest site cover the extent.\n // It doesn’t matter which corner of the extent we measure!\n if (cover) {\n var dx, dy, d2, dc = Infinity;\n\n for (iCell = 0, cover = null; iCell < nCells; ++iCell) {\n if (cell = cells[iCell]) {\n site = cell.site;\n dx = site[0] - x0;\n dy = site[1] - y0;\n d2 = dx * dx + dy * dy;\n if (d2 < dc) dc = d2, cover = cell;\n }\n }\n\n if (cover) {\n var v00 = [x0, y0], v01 = [x0, y1], v11 = [x1, y1], v10 = [x1, y0];\n cover.halfedges.push(\n edges.push(createBorderEdge(site = cover.site, v00, v01)) - 1,\n edges.push(createBorderEdge(site, v01, v11)) - 1,\n edges.push(createBorderEdge(site, v11, v10)) - 1,\n edges.push(createBorderEdge(site, v10, v00)) - 1\n );\n }\n }\n\n // Lastly delete any cells with no edges; these were entirely clipped.\n for (iCell = 0; iCell < nCells; ++iCell) {\n if (cell = cells[iCell]) {\n if (!cell.halfedges.length) {\n delete cells[iCell];\n }\n }\n }\n}\n","import {RedBlackNode} from \"./RedBlackTree\";\nimport {circles, epsilon2} from \"./Diagram\";\n\nvar circlePool = [];\n\nexport var firstCircle;\n\nfunction Circle() {\n RedBlackNode(this);\n this.x =\n this.y =\n this.arc =\n this.site =\n this.cy = null;\n}\n\nexport function attachCircle(arc) {\n var lArc = arc.P,\n rArc = arc.N;\n\n if (!lArc || !rArc) return;\n\n var lSite = lArc.site,\n cSite = arc.site,\n rSite = rArc.site;\n\n if (lSite === rSite) return;\n\n var bx = cSite[0],\n by = cSite[1],\n ax = lSite[0] - bx,\n ay = lSite[1] - by,\n cx = rSite[0] - bx,\n cy = rSite[1] - by;\n\n var d = 2 * (ax * cy - ay * cx);\n if (d >= -epsilon2) return;\n\n var ha = ax * ax + ay * ay,\n hc = cx * cx + cy * cy,\n x = (cy * ha - ay * hc) / d,\n y = (ax * hc - cx * ha) / d;\n\n var circle = circlePool.pop() || new Circle;\n circle.arc = arc;\n circle.site = cSite;\n circle.x = x + bx;\n circle.y = (circle.cy = y + by) + Math.sqrt(x * x + y * y); // y bottom\n\n arc.circle = circle;\n\n var before = null,\n node = circles._;\n\n while (node) {\n if (circle.y < node.y || (circle.y === node.y && circle.x <= node.x)) {\n if (node.L) node = node.L;\n else { before = node.P; break; }\n } else {\n if (node.R) node = node.R;\n else { before = node; break; }\n }\n }\n\n circles.insert(before, circle);\n if (!before) firstCircle = circle;\n}\n\nexport function detachCircle(arc) {\n var circle = arc.circle;\n if (circle) {\n if (!circle.P) firstCircle = circle.N;\n circles.remove(circle);\n circlePool.push(circle);\n RedBlackNode(circle);\n arc.circle = null;\n }\n}\n","import {addBeach, removeBeach} from \"./Beach\";\nimport {sortCellHalfedges, cellHalfedgeStart, clipCells} from \"./Cell\";\nimport {firstCircle} from \"./Circle\";\nimport {clipEdges} from \"./Edge\";\nimport RedBlackTree from \"./RedBlackTree\";\n\nexport var epsilon = 1e-6;\nexport var epsilon2 = 1e-12;\nexport var beaches;\nexport var cells;\nexport var circles;\nexport var edges;\n\nfunction triangleArea(a, b, c) {\n return (a[0] - c[0]) * (b[1] - a[1]) - (a[0] - b[0]) * (c[1] - a[1]);\n}\n\nfunction lexicographic(a, b) {\n return b[1] - a[1]\n || b[0] - a[0];\n}\n\nexport default function Diagram(sites, extent) {\n var site = sites.sort(lexicographic).pop(),\n x,\n y,\n circle;\n\n edges = [];\n cells = new Array(sites.length);\n beaches = new RedBlackTree;\n circles = new RedBlackTree;\n\n while (true) {\n circle = firstCircle;\n if (site && (!circle || site[1] < circle.y || (site[1] === circle.y && site[0] < circle.x))) {\n if (site[0] !== x || site[1] !== y) {\n addBeach(site);\n x = site[0], y = site[1];\n }\n site = sites.pop();\n } else if (circle) {\n removeBeach(circle.arc);\n } else {\n break;\n }\n }\n\n sortCellHalfedges();\n\n if (extent) {\n var x0 = +extent[0][0],\n y0 = +extent[0][1],\n x1 = +extent[1][0],\n y1 = +extent[1][1];\n clipEdges(x0, y0, x1, y1);\n clipCells(x0, y0, x1, y1);\n }\n\n this.edges = edges;\n this.cells = cells;\n\n beaches =\n circles =\n edges =\n cells = null;\n}\n\nDiagram.prototype = {\n constructor: Diagram,\n\n polygons: function() {\n var edges = this.edges;\n\n return this.cells.map(function(cell) {\n var polygon = cell.halfedges.map(function(i) { return cellHalfedgeStart(cell, edges[i]); });\n polygon.data = cell.site.data;\n return polygon;\n });\n },\n\n triangles: function() {\n var triangles = [],\n edges = this.edges;\n\n this.cells.forEach(function(cell, i) {\n if (!(m = (halfedges = cell.halfedges).length)) return;\n var site = cell.site,\n halfedges,\n j = -1,\n m,\n s0,\n e1 = edges[halfedges[m - 1]],\n s1 = e1.left === site ? e1.right : e1.left;\n\n while (++j < m) {\n s0 = s1;\n e1 = edges[halfedges[j]];\n s1 = e1.left === site ? e1.right : e1.left;\n if (s0 && s1 && i < s0.index && i < s1.index && triangleArea(site, s0, s1) < 0) {\n triangles.push([site.data, s0.data, s1.data]);\n }\n }\n });\n\n return triangles;\n },\n\n links: function() {\n return this.edges.filter(function(edge) {\n return edge.right;\n }).map(function(edge) {\n return {\n source: edge.left.data,\n target: edge.right.data\n };\n });\n },\n\n find: function(x, y, radius) {\n var that = this, i0, i1 = that._found || 0, n = that.cells.length, cell;\n\n // Use the previously-found cell, or start with an arbitrary one.\n while (!(cell = that.cells[i1])) if (++i1 >= n) return null;\n var dx = x - cell.site[0], dy = y - cell.site[1], d2 = dx * dx + dy * dy;\n\n // Traverse the half-edges to find a closer cell, if any.\n do {\n cell = that.cells[i0 = i1], i1 = null;\n cell.halfedges.forEach(function(e) {\n var edge = that.edges[e], v = edge.left;\n if ((v === cell.site || !v) && !(v = edge.right)) return;\n var vx = x - v[0], vy = y - v[1], v2 = vx * vx + vy * vy;\n if (v2 < d2) d2 = v2, i1 = v.index;\n });\n } while (i1 !== null);\n\n that._found = i0;\n\n return radius == null || d2 <= radius * radius ? cell.site : null;\n }\n}\n","import {cells, edges, epsilon} from \"./Diagram\";\n\nexport function createEdge(left, right, v0, v1) {\n var edge = [null, null],\n index = edges.push(edge) - 1;\n edge.left = left;\n edge.right = right;\n if (v0) setEdgeEnd(edge, left, right, v0);\n if (v1) setEdgeEnd(edge, right, left, v1);\n cells[left.index].halfedges.push(index);\n cells[right.index].halfedges.push(index);\n return edge;\n}\n\nexport function createBorderEdge(left, v0, v1) {\n var edge = [v0, v1];\n edge.left = left;\n return edge;\n}\n\nexport function setEdgeEnd(edge, left, right, vertex) {\n if (!edge[0] && !edge[1]) {\n edge[0] = vertex;\n edge.left = left;\n edge.right = right;\n } else if (edge.left === right) {\n edge[1] = vertex;\n } else {\n edge[0] = vertex;\n }\n}\n\n// Liang–Barsky line clipping.\nfunction clipEdge(edge, x0, y0, x1, y1) {\n var a = edge[0],\n b = edge[1],\n ax = a[0],\n ay = a[1],\n bx = b[0],\n by = b[1],\n t0 = 0,\n t1 = 1,\n dx = bx - ax,\n dy = by - ay,\n r;\n\n r = x0 - ax;\n if (!dx && r > 0) return;\n r /= dx;\n if (dx < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dx > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = x1 - ax;\n if (!dx && r < 0) return;\n r /= dx;\n if (dx < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dx > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n r = y0 - ay;\n if (!dy && r > 0) return;\n r /= dy;\n if (dy < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dy > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = y1 - ay;\n if (!dy && r < 0) return;\n r /= dy;\n if (dy < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dy > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n if (!(t0 > 0) && !(t1 < 1)) return true; // TODO Better check?\n\n if (t0 > 0) edge[0] = [ax + t0 * dx, ay + t0 * dy];\n if (t1 < 1) edge[1] = [ax + t1 * dx, ay + t1 * dy];\n return true;\n}\n\nfunction connectEdge(edge, x0, y0, x1, y1) {\n var v1 = edge[1];\n if (v1) return true;\n\n var v0 = edge[0],\n left = edge.left,\n right = edge.right,\n lx = left[0],\n ly = left[1],\n rx = right[0],\n ry = right[1],\n fx = (lx + rx) / 2,\n fy = (ly + ry) / 2,\n fm,\n fb;\n\n if (ry === ly) {\n if (fx < x0 || fx >= x1) return;\n if (lx > rx) {\n if (!v0) v0 = [fx, y0];\n else if (v0[1] >= y1) return;\n v1 = [fx, y1];\n } else {\n if (!v0) v0 = [fx, y1];\n else if (v0[1] < y0) return;\n v1 = [fx, y0];\n }\n } else {\n fm = (lx - rx) / (ry - ly);\n fb = fy - fm * fx;\n if (fm < -1 || fm > 1) {\n if (lx > rx) {\n if (!v0) v0 = [(y0 - fb) / fm, y0];\n else if (v0[1] >= y1) return;\n v1 = [(y1 - fb) / fm, y1];\n } else {\n if (!v0) v0 = [(y1 - fb) / fm, y1];\n else if (v0[1] < y0) return;\n v1 = [(y0 - fb) / fm, y0];\n }\n } else {\n if (ly < ry) {\n if (!v0) v0 = [x0, fm * x0 + fb];\n else if (v0[0] >= x1) return;\n v1 = [x1, fm * x1 + fb];\n } else {\n if (!v0) v0 = [x1, fm * x1 + fb];\n else if (v0[0] < x0) return;\n v1 = [x0, fm * x0 + fb];\n }\n }\n }\n\n edge[0] = v0;\n edge[1] = v1;\n return true;\n}\n\nexport function clipEdges(x0, y0, x1, y1) {\n var i = edges.length,\n edge;\n\n while (i--) {\n if (!connectEdge(edge = edges[i], x0, y0, x1, y1)\n || !clipEdge(edge, x0, y0, x1, y1)\n || !(Math.abs(edge[0][0] - edge[1][0]) > epsilon\n || Math.abs(edge[0][1] - edge[1][1]) > epsilon)) {\n delete edges[i];\n }\n }\n}\n","function RedBlackTree() {\n this._ = null; // root node\n}\n\nexport function RedBlackNode(node) {\n node.U = // parent node\n node.C = // color - true for red, false for black\n node.L = // left node\n node.R = // right node\n node.P = // previous node\n node.N = null; // next node\n}\n\nRedBlackTree.prototype = {\n constructor: RedBlackTree,\n\n insert: function(after, node) {\n var parent, grandpa, uncle;\n\n if (after) {\n node.P = after;\n node.N = after.N;\n if (after.N) after.N.P = node;\n after.N = node;\n if (after.R) {\n after = after.R;\n while (after.L) after = after.L;\n after.L = node;\n } else {\n after.R = node;\n }\n parent = after;\n } else if (this._) {\n after = RedBlackFirst(this._);\n node.P = null;\n node.N = after;\n after.P = after.L = node;\n parent = after;\n } else {\n node.P = node.N = null;\n this._ = node;\n parent = null;\n }\n node.L = node.R = null;\n node.U = parent;\n node.C = true;\n\n after = node;\n while (parent && parent.C) {\n grandpa = parent.U;\n if (parent === grandpa.L) {\n uncle = grandpa.R;\n if (uncle && uncle.C) {\n parent.C = uncle.C = false;\n grandpa.C = true;\n after = grandpa;\n } else {\n if (after === parent.R) {\n RedBlackRotateLeft(this, parent);\n after = parent;\n parent = after.U;\n }\n parent.C = false;\n grandpa.C = true;\n RedBlackRotateRight(this, grandpa);\n }\n } else {\n uncle = grandpa.L;\n if (uncle && uncle.C) {\n parent.C = uncle.C = false;\n grandpa.C = true;\n after = grandpa;\n } else {\n if (after === parent.L) {\n RedBlackRotateRight(this, parent);\n after = parent;\n parent = after.U;\n }\n parent.C = false;\n grandpa.C = true;\n RedBlackRotateLeft(this, grandpa);\n }\n }\n parent = after.U;\n }\n this._.C = false;\n },\n\n remove: function(node) {\n if (node.N) node.N.P = node.P;\n if (node.P) node.P.N = node.N;\n node.N = node.P = null;\n\n var parent = node.U,\n sibling,\n left = node.L,\n right = node.R,\n next,\n red;\n\n if (!left) next = right;\n else if (!right) next = left;\n else next = RedBlackFirst(right);\n\n if (parent) {\n if (parent.L === node) parent.L = next;\n else parent.R = next;\n } else {\n this._ = next;\n }\n\n if (left && right) {\n red = next.C;\n next.C = node.C;\n next.L = left;\n left.U = next;\n if (next !== right) {\n parent = next.U;\n next.U = node.U;\n node = next.R;\n parent.L = node;\n next.R = right;\n right.U = next;\n } else {\n next.U = parent;\n parent = next;\n node = next.R;\n }\n } else {\n red = node.C;\n node = next;\n }\n\n if (node) node.U = parent;\n if (red) return;\n if (node && node.C) { node.C = false; return; }\n\n do {\n if (node === this._) break;\n if (node === parent.L) {\n sibling = parent.R;\n if (sibling.C) {\n sibling.C = false;\n parent.C = true;\n RedBlackRotateLeft(this, parent);\n sibling = parent.R;\n }\n if ((sibling.L && sibling.L.C)\n || (sibling.R && sibling.R.C)) {\n if (!sibling.R || !sibling.R.C) {\n sibling.L.C = false;\n sibling.C = true;\n RedBlackRotateRight(this, sibling);\n sibling = parent.R;\n }\n sibling.C = parent.C;\n parent.C = sibling.R.C = false;\n RedBlackRotateLeft(this, parent);\n node = this._;\n break;\n }\n } else {\n sibling = parent.L;\n if (sibling.C) {\n sibling.C = false;\n parent.C = true;\n RedBlackRotateRight(this, parent);\n sibling = parent.L;\n }\n if ((sibling.L && sibling.L.C)\n || (sibling.R && sibling.R.C)) {\n if (!sibling.L || !sibling.L.C) {\n sibling.R.C = false;\n sibling.C = true;\n RedBlackRotateLeft(this, sibling);\n sibling = parent.L;\n }\n sibling.C = parent.C;\n parent.C = sibling.L.C = false;\n RedBlackRotateRight(this, parent);\n node = this._;\n break;\n }\n }\n sibling.C = true;\n node = parent;\n parent = parent.U;\n } while (!node.C);\n\n if (node) node.C = false;\n }\n};\n\nfunction RedBlackRotateLeft(tree, node) {\n var p = node,\n q = node.R,\n parent = p.U;\n\n if (parent) {\n if (parent.L === p) parent.L = q;\n else parent.R = q;\n } else {\n tree._ = q;\n }\n\n q.U = parent;\n p.U = q;\n p.R = q.L;\n if (p.R) p.R.U = p;\n q.L = p;\n}\n\nfunction RedBlackRotateRight(tree, node) {\n var p = node,\n q = node.L,\n parent = p.U;\n\n if (parent) {\n if (parent.L === p) parent.L = q;\n else parent.R = q;\n } else {\n tree._ = q;\n }\n\n q.U = parent;\n p.U = q;\n p.L = q.R;\n if (p.L) p.L.U = p;\n q.R = p;\n}\n\nfunction RedBlackFirst(node) {\n while (node.L) node = node.L;\n return node;\n}\n\nexport default RedBlackTree;\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export {default as voronoi} from \"./voronoi\";\n","export function x(d) {\n return d[0];\n}\n\nexport function y(d) {\n return d[1];\n}\n","import constant from \"./constant\";\nimport {x as pointX, y as pointY} from \"./point\";\nimport Diagram, {epsilon} from \"./Diagram\";\n\nexport default function() {\n var x = pointX,\n y = pointY,\n extent = null;\n\n function voronoi(data) {\n return new Diagram(data.map(function(d, i) {\n var s = [Math.round(x(d, i, data) / epsilon) * epsilon, Math.round(y(d, i, data) / epsilon) * epsilon];\n s.index = i;\n s.data = d;\n return s;\n }), extent);\n }\n\n voronoi.polygons = function(data) {\n return voronoi(data).polygons();\n };\n\n voronoi.links = function(data) {\n return voronoi(data).links();\n };\n\n voronoi.triangles = function(data) {\n return voronoi(data).triangles();\n };\n\n voronoi.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), voronoi) : x;\n };\n\n voronoi.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), voronoi) : y;\n };\n\n voronoi.extent = function(_) {\n return arguments.length ? (extent = _ == null ? null : [[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]], voronoi) : extent && [[extent[0][0], extent[0][1]], [extent[1][0], extent[1][1]]];\n };\n\n voronoi.size = function(_) {\n return arguments.length ? (extent = _ == null ? null : [[0, 0], [+_[0], +_[1]]], voronoi) : extent && [extent[1][0] - extent[0][0], extent[1][1] - extent[0][1]];\n };\n\n return voronoi;\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function ZoomEvent(target, type, transform) {\n this.target = target;\n this.type = type;\n this.transform = transform;\n}\n","export {default as zoom} from \"./zoom.js\";\nexport {default as zoomTransform, identity as zoomIdentity} from \"./transform.js\";\n","import {event} from \"d3-selection\";\n\nexport function nopropagation() {\n event.stopImmediatePropagation();\n}\n\nexport default function() {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n","export function Transform(k, x, y) {\n this.k = k;\n this.x = x;\n this.y = y;\n}\n\nTransform.prototype = {\n constructor: Transform,\n scale: function(k) {\n return k === 1 ? this : new Transform(this.k * k, this.x, this.y);\n },\n translate: function(x, y) {\n return x === 0 & y === 0 ? this : new Transform(this.k, this.x + this.k * x, this.y + this.k * y);\n },\n apply: function(point) {\n return [point[0] * this.k + this.x, point[1] * this.k + this.y];\n },\n applyX: function(x) {\n return x * this.k + this.x;\n },\n applyY: function(y) {\n return y * this.k + this.y;\n },\n invert: function(location) {\n return [(location[0] - this.x) / this.k, (location[1] - this.y) / this.k];\n },\n invertX: function(x) {\n return (x - this.x) / this.k;\n },\n invertY: function(y) {\n return (y - this.y) / this.k;\n },\n rescaleX: function(x) {\n return x.copy().domain(x.range().map(this.invertX, this).map(x.invert, x));\n },\n rescaleY: function(y) {\n return y.copy().domain(y.range().map(this.invertY, this).map(y.invert, y));\n },\n toString: function() {\n return \"translate(\" + this.x + \",\" + this.y + \") scale(\" + this.k + \")\";\n }\n};\n\nexport var identity = new Transform(1, 0, 0);\n\ntransform.prototype = Transform.prototype;\n\nexport default function transform(node) {\n while (!node.__zoom) if (!(node = node.parentNode)) return identity;\n return node.__zoom;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolateZoom} from \"d3-interpolate\";\nimport {event, customEvent, select, mouse, touch} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant.js\";\nimport ZoomEvent from \"./event.js\";\nimport {Transform, identity} from \"./transform.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter() {\n return !event.ctrlKey && !event.button;\n}\n\nfunction defaultExtent() {\n var e = this;\n if (e instanceof SVGElement) {\n e = e.ownerSVGElement || e;\n if (e.hasAttribute(\"viewBox\")) {\n e = e.viewBox.baseVal;\n return [[e.x, e.y], [e.x + e.width, e.y + e.height]];\n }\n return [[0, 0], [e.width.baseVal.value, e.height.baseVal.value]];\n }\n return [[0, 0], [e.clientWidth, e.clientHeight]];\n}\n\nfunction defaultTransform() {\n return this.__zoom || identity;\n}\n\nfunction defaultWheelDelta() {\n return -event.deltaY * (event.deltaMode === 1 ? 0.05 : event.deltaMode ? 1 : 0.002);\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\nfunction defaultConstrain(transform, extent, translateExtent) {\n var dx0 = transform.invertX(extent[0][0]) - translateExtent[0][0],\n dx1 = transform.invertX(extent[1][0]) - translateExtent[1][0],\n dy0 = transform.invertY(extent[0][1]) - translateExtent[0][1],\n dy1 = transform.invertY(extent[1][1]) - translateExtent[1][1];\n return transform.translate(\n dx1 > dx0 ? (dx0 + dx1) / 2 : Math.min(0, dx0) || Math.max(0, dx1),\n dy1 > dy0 ? (dy0 + dy1) / 2 : Math.min(0, dy0) || Math.max(0, dy1)\n );\n}\n\nexport default function() {\n var filter = defaultFilter,\n extent = defaultExtent,\n constrain = defaultConstrain,\n wheelDelta = defaultWheelDelta,\n touchable = defaultTouchable,\n scaleExtent = [0, Infinity],\n translateExtent = [[-Infinity, -Infinity], [Infinity, Infinity]],\n duration = 250,\n interpolate = interpolateZoom,\n listeners = dispatch(\"start\", \"zoom\", \"end\"),\n touchstarting,\n touchending,\n touchDelay = 500,\n wheelDelay = 150,\n clickDistance2 = 0;\n\n function zoom(selection) {\n selection\n .property(\"__zoom\", defaultTransform)\n .on(\"wheel.zoom\", wheeled)\n .on(\"mousedown.zoom\", mousedowned)\n .on(\"dblclick.zoom\", dblclicked)\n .filter(touchable)\n .on(\"touchstart.zoom\", touchstarted)\n .on(\"touchmove.zoom\", touchmoved)\n .on(\"touchend.zoom touchcancel.zoom\", touchended)\n .style(\"touch-action\", \"none\")\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n zoom.transform = function(collection, transform, point) {\n var selection = collection.selection ? collection.selection() : collection;\n selection.property(\"__zoom\", defaultTransform);\n if (collection !== selection) {\n schedule(collection, transform, point);\n } else {\n selection.interrupt().each(function() {\n gesture(this, arguments)\n .start()\n .zoom(null, typeof transform === \"function\" ? transform.apply(this, arguments) : transform)\n .end();\n });\n }\n };\n\n zoom.scaleBy = function(selection, k, p) {\n zoom.scaleTo(selection, function() {\n var k0 = this.__zoom.k,\n k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n return k0 * k1;\n }, p);\n };\n\n zoom.scaleTo = function(selection, k, p) {\n zoom.transform(selection, function() {\n var e = extent.apply(this, arguments),\n t0 = this.__zoom,\n p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p,\n p1 = t0.invert(p0),\n k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n return constrain(translate(scale(t0, k1), p0, p1), e, translateExtent);\n }, p);\n };\n\n zoom.translateBy = function(selection, x, y) {\n zoom.transform(selection, function() {\n return constrain(this.__zoom.translate(\n typeof x === \"function\" ? x.apply(this, arguments) : x,\n typeof y === \"function\" ? y.apply(this, arguments) : y\n ), extent.apply(this, arguments), translateExtent);\n });\n };\n\n zoom.translateTo = function(selection, x, y, p) {\n zoom.transform(selection, function() {\n var e = extent.apply(this, arguments),\n t = this.__zoom,\n p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p;\n return constrain(identity.translate(p0[0], p0[1]).scale(t.k).translate(\n typeof x === \"function\" ? -x.apply(this, arguments) : -x,\n typeof y === \"function\" ? -y.apply(this, arguments) : -y\n ), e, translateExtent);\n }, p);\n };\n\n function scale(transform, k) {\n k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], k));\n return k === transform.k ? transform : new Transform(k, transform.x, transform.y);\n }\n\n function translate(transform, p0, p1) {\n var x = p0[0] - p1[0] * transform.k, y = p0[1] - p1[1] * transform.k;\n return x === transform.x && y === transform.y ? transform : new Transform(transform.k, x, y);\n }\n\n function centroid(extent) {\n return [(+extent[0][0] + +extent[1][0]) / 2, (+extent[0][1] + +extent[1][1]) / 2];\n }\n\n function schedule(transition, transform, point) {\n transition\n .on(\"start.zoom\", function() { gesture(this, arguments).start(); })\n .on(\"interrupt.zoom end.zoom\", function() { gesture(this, arguments).end(); })\n .tween(\"zoom\", function() {\n var that = this,\n args = arguments,\n g = gesture(that, args),\n e = extent.apply(that, args),\n p = point == null ? centroid(e) : typeof point === \"function\" ? point.apply(that, args) : point,\n w = Math.max(e[1][0] - e[0][0], e[1][1] - e[0][1]),\n a = that.__zoom,\n b = typeof transform === \"function\" ? transform.apply(that, args) : transform,\n i = interpolate(a.invert(p).concat(w / a.k), b.invert(p).concat(w / b.k));\n return function(t) {\n if (t === 1) t = b; // Avoid rounding error on end.\n else { var l = i(t), k = w / l[2]; t = new Transform(k, p[0] - l[0] * k, p[1] - l[1] * k); }\n g.zoom(null, t);\n };\n });\n }\n\n function gesture(that, args, clean) {\n return (!clean && that.__zooming) || new Gesture(that, args);\n }\n\n function Gesture(that, args) {\n this.that = that;\n this.args = args;\n this.active = 0;\n this.extent = extent.apply(that, args);\n this.taps = 0;\n }\n\n Gesture.prototype = {\n start: function() {\n if (++this.active === 1) {\n this.that.__zooming = this;\n this.emit(\"start\");\n }\n return this;\n },\n zoom: function(key, transform) {\n if (this.mouse && key !== \"mouse\") this.mouse[1] = transform.invert(this.mouse[0]);\n if (this.touch0 && key !== \"touch\") this.touch0[1] = transform.invert(this.touch0[0]);\n if (this.touch1 && key !== \"touch\") this.touch1[1] = transform.invert(this.touch1[0]);\n this.that.__zoom = transform;\n this.emit(\"zoom\");\n return this;\n },\n end: function() {\n if (--this.active === 0) {\n delete this.that.__zooming;\n this.emit(\"end\");\n }\n return this;\n },\n emit: function(type) {\n customEvent(new ZoomEvent(zoom, type, this.that.__zoom), listeners.apply, listeners, [type, this.that, this.args]);\n }\n };\n\n function wheeled() {\n if (!filter.apply(this, arguments)) return;\n var g = gesture(this, arguments),\n t = this.__zoom,\n k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], t.k * Math.pow(2, wheelDelta.apply(this, arguments)))),\n p = mouse(this);\n\n // If the mouse is in the same location as before, reuse it.\n // If there were recent wheel events, reset the wheel idle timeout.\n if (g.wheel) {\n if (g.mouse[0][0] !== p[0] || g.mouse[0][1] !== p[1]) {\n g.mouse[1] = t.invert(g.mouse[0] = p);\n }\n clearTimeout(g.wheel);\n }\n\n // If this wheel event won’t trigger a transform change, ignore it.\n else if (t.k === k) return;\n\n // Otherwise, capture the mouse point and location at the start.\n else {\n g.mouse = [p, t.invert(p)];\n interrupt(this);\n g.start();\n }\n\n noevent();\n g.wheel = setTimeout(wheelidled, wheelDelay);\n g.zoom(\"mouse\", constrain(translate(scale(t, k), g.mouse[0], g.mouse[1]), g.extent, translateExtent));\n\n function wheelidled() {\n g.wheel = null;\n g.end();\n }\n }\n\n function mousedowned() {\n if (touchending || !filter.apply(this, arguments)) return;\n var g = gesture(this, arguments, true),\n v = select(event.view).on(\"mousemove.zoom\", mousemoved, true).on(\"mouseup.zoom\", mouseupped, true),\n p = mouse(this),\n x0 = event.clientX,\n y0 = event.clientY;\n\n dragDisable(event.view);\n nopropagation();\n g.mouse = [p, this.__zoom.invert(p)];\n interrupt(this);\n g.start();\n\n function mousemoved() {\n noevent();\n if (!g.moved) {\n var dx = event.clientX - x0, dy = event.clientY - y0;\n g.moved = dx * dx + dy * dy > clickDistance2;\n }\n g.zoom(\"mouse\", constrain(translate(g.that.__zoom, g.mouse[0] = mouse(g.that), g.mouse[1]), g.extent, translateExtent));\n }\n\n function mouseupped() {\n v.on(\"mousemove.zoom mouseup.zoom\", null);\n dragEnable(event.view, g.moved);\n noevent();\n g.end();\n }\n }\n\n function dblclicked() {\n if (!filter.apply(this, arguments)) return;\n var t0 = this.__zoom,\n p0 = mouse(this),\n p1 = t0.invert(p0),\n k1 = t0.k * (event.shiftKey ? 0.5 : 2),\n t1 = constrain(translate(scale(t0, k1), p0, p1), extent.apply(this, arguments), translateExtent);\n\n noevent();\n if (duration > 0) select(this).transition().duration(duration).call(schedule, t1, p0);\n else select(this).call(zoom.transform, t1);\n }\n\n function touchstarted() {\n if (!filter.apply(this, arguments)) return;\n var touches = event.touches,\n n = touches.length,\n g = gesture(this, arguments, event.changedTouches.length === n),\n started, i, t, p;\n\n nopropagation();\n for (i = 0; i < n; ++i) {\n t = touches[i], p = touch(this, touches, t.identifier);\n p = [p, this.__zoom.invert(p), t.identifier];\n if (!g.touch0) g.touch0 = p, started = true, g.taps = 1 + !!touchstarting;\n else if (!g.touch1 && g.touch0[2] !== p[2]) g.touch1 = p, g.taps = 0;\n }\n\n if (touchstarting) touchstarting = clearTimeout(touchstarting);\n\n if (started) {\n if (g.taps < 2) touchstarting = setTimeout(function() { touchstarting = null; }, touchDelay);\n interrupt(this);\n g.start();\n }\n }\n\n function touchmoved() {\n if (!this.__zooming) return;\n var g = gesture(this, arguments),\n touches = event.changedTouches,\n n = touches.length, i, t, p, l;\n\n noevent();\n if (touchstarting) touchstarting = clearTimeout(touchstarting);\n g.taps = 0;\n for (i = 0; i < n; ++i) {\n t = touches[i], p = touch(this, touches, t.identifier);\n if (g.touch0 && g.touch0[2] === t.identifier) g.touch0[0] = p;\n else if (g.touch1 && g.touch1[2] === t.identifier) g.touch1[0] = p;\n }\n t = g.that.__zoom;\n if (g.touch1) {\n var p0 = g.touch0[0], l0 = g.touch0[1],\n p1 = g.touch1[0], l1 = g.touch1[1],\n dp = (dp = p1[0] - p0[0]) * dp + (dp = p1[1] - p0[1]) * dp,\n dl = (dl = l1[0] - l0[0]) * dl + (dl = l1[1] - l0[1]) * dl;\n t = scale(t, Math.sqrt(dp / dl));\n p = [(p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2];\n l = [(l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2];\n }\n else if (g.touch0) p = g.touch0[0], l = g.touch0[1];\n else return;\n g.zoom(\"touch\", constrain(translate(t, p, l), g.extent, translateExtent));\n }\n\n function touchended() {\n if (!this.__zooming) return;\n var g = gesture(this, arguments),\n touches = event.changedTouches,\n n = touches.length, i, t;\n\n nopropagation();\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, touchDelay);\n for (i = 0; i < n; ++i) {\n t = touches[i];\n if (g.touch0 && g.touch0[2] === t.identifier) delete g.touch0;\n else if (g.touch1 && g.touch1[2] === t.identifier) delete g.touch1;\n }\n if (g.touch1 && !g.touch0) g.touch0 = g.touch1, delete g.touch1;\n if (g.touch0) g.touch0[1] = this.__zoom.invert(g.touch0[0]);\n else {\n g.end();\n // If this was a dbltap, reroute to the (optional) dblclick.zoom handler.\n if (g.taps === 2) {\n var p = select(this).on(\"dblclick.zoom\");\n if (p) p.apply(this, arguments);\n }\n }\n }\n\n zoom.wheelDelta = function(_) {\n return arguments.length ? (wheelDelta = typeof _ === \"function\" ? _ : constant(+_), zoom) : wheelDelta;\n };\n\n zoom.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), zoom) : filter;\n };\n\n zoom.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), zoom) : touchable;\n };\n\n zoom.extent = function(_) {\n return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant([[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]]), zoom) : extent;\n };\n\n zoom.scaleExtent = function(_) {\n return arguments.length ? (scaleExtent[0] = +_[0], scaleExtent[1] = +_[1], zoom) : [scaleExtent[0], scaleExtent[1]];\n };\n\n zoom.translateExtent = function(_) {\n return arguments.length ? (translateExtent[0][0] = +_[0][0], translateExtent[1][0] = +_[1][0], translateExtent[0][1] = +_[0][1], translateExtent[1][1] = +_[1][1], zoom) : [[translateExtent[0][0], translateExtent[0][1]], [translateExtent[1][0], translateExtent[1][1]]];\n };\n\n zoom.constrain = function(_) {\n return arguments.length ? (constrain = _, zoom) : constrain;\n };\n\n zoom.duration = function(_) {\n return arguments.length ? (duration = +_, zoom) : duration;\n };\n\n zoom.interpolate = function(_) {\n return arguments.length ? (interpolate = _, zoom) : interpolate;\n };\n\n zoom.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? zoom : value;\n };\n\n zoom.clickDistance = function(_) {\n return arguments.length ? (clickDistance2 = (_ = +_) * _, zoom) : Math.sqrt(clickDistance2);\n };\n\n return zoom;\n}\n","export var name = \"d3\";\nexport var version = \"5.15.0\";\nexport var description = \"Data-Driven Documents\";\nexport var keywords = [\"dom\",\"visualization\",\"svg\",\"animation\",\"canvas\"];\nexport var homepage = \"https://d3js.org\";\nexport var license = \"BSD-3-Clause\";\nexport var author = {\"name\":\"Mike Bostock\",\"url\":\"https://bost.ocks.org/mike\"};\nexport var main = \"dist/d3.node.js\";\nexport var unpkg = \"dist/d3.min.js\";\nexport var jsdelivr = \"dist/d3.min.js\";\nexport var module = \"index.js\";\nexport var repository = {\"type\":\"git\",\"url\":\"https://github.com/d3/d3.git\"};\nexport var files = [\"dist/**/*.js\",\"index.js\"];\nexport var scripts = {\"pretest\":\"rimraf dist && mkdir dist && json2module package.json > dist/package.js && rollup -c\",\"test\":\"tape 'test/**/*-test.js'\",\"prepublishOnly\":\"yarn test\",\"postpublish\":\"git push && git push --tags && cd ../d3.github.com && git pull && cp ../d3/dist/d3.js d3.v5.js && cp ../d3/dist/d3.min.js d3.v5.min.js && git add d3.v5.js d3.v5.min.js && git commit -m \\\"d3 ${npm_package_version}\\\" && git push && cd - && cd ../d3-bower && git pull && cp ../d3/LICENSE ../d3/README.md ../d3/dist/d3.js ../d3/dist/d3.min.js . && git add -- LICENSE README.md d3.js d3.min.js && git commit -m \\\"${npm_package_version}\\\" && git tag -am \\\"${npm_package_version}\\\" v${npm_package_version} && git push && git push --tags && cd - && zip -j dist/d3.zip -- LICENSE README.md API.md CHANGES.md dist/d3.js dist/d3.min.js\"};\nexport var devDependencies = {\"json2module\":\"0.0\",\"rimraf\":\"2\",\"rollup\":\"1\",\"rollup-plugin-ascii\":\"0.0\",\"rollup-plugin-node-resolve\":\"3\",\"rollup-plugin-terser\":\"5\",\"tape\":\"4\"};\nexport var dependencies = {\"d3-array\":\"1\",\"d3-axis\":\"1\",\"d3-brush\":\"1\",\"d3-chord\":\"1\",\"d3-collection\":\"1\",\"d3-color\":\"1\",\"d3-contour\":\"1\",\"d3-dispatch\":\"1\",\"d3-drag\":\"1\",\"d3-dsv\":\"1\",\"d3-ease\":\"1\",\"d3-fetch\":\"1\",\"d3-force\":\"1\",\"d3-format\":\"1\",\"d3-geo\":\"1\",\"d3-hierarchy\":\"1\",\"d3-interpolate\":\"1\",\"d3-path\":\"1\",\"d3-polygon\":\"1\",\"d3-quadtree\":\"1\",\"d3-random\":\"1\",\"d3-scale\":\"2\",\"d3-scale-chromatic\":\"1\",\"d3-selection\":\"1\",\"d3-shape\":\"1\",\"d3-time\":\"1\",\"d3-time-format\":\"2\",\"d3-timer\":\"1\",\"d3-transition\":\"1\",\"d3-voronoi\":\"1\",\"d3-zoom\":\"1\"};\n","export {version} from \"./dist/package.js\";\nexport * from \"d3-array\";\nexport * from \"d3-axis\";\nexport * from \"d3-brush\";\nexport * from \"d3-chord\";\nexport * from \"d3-collection\";\nexport * from \"d3-color\";\nexport * from \"d3-contour\";\nexport * from \"d3-dispatch\";\nexport * from \"d3-drag\";\nexport * from \"d3-dsv\";\nexport * from \"d3-ease\";\nexport * from \"d3-fetch\";\nexport * from \"d3-force\";\nexport * from \"d3-format\";\nexport * from \"d3-geo\";\nexport * from \"d3-hierarchy\";\nexport * from \"d3-interpolate\";\nexport * from \"d3-path\";\nexport * from \"d3-polygon\";\nexport * from \"d3-quadtree\";\nexport * from \"d3-random\";\nexport * from \"d3-scale\";\nexport * from \"d3-scale-chromatic\";\nexport * from \"d3-selection\";\nexport * from \"d3-shape\";\nexport * from \"d3-time\";\nexport * from \"d3-time-format\";\nexport * from \"d3-timer\";\nexport * from \"d3-transition\";\nexport * from \"d3-voronoi\";\nexport * from \"d3-zoom\";\n","/**\n * @license\n * Copyright (c) 2012-2013 Chris Pettitt\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\nmodule.exports = {\n graphlib: require(\"./lib/graphlib\"),\n dagre: require(\"./lib/dagre\"),\n intersect: require(\"./lib/intersect\"),\n render: require(\"./lib/render\"),\n util: require(\"./lib/util\"),\n version: require(\"./lib/version\")\n};\n","var util = require(\"./util\");\n\nmodule.exports = {\n \"default\": normal,\n \"normal\": normal,\n \"vee\": vee,\n \"undirected\": undirected\n};\n\nfunction normal(parent, id, edge, type) {\n var marker = parent.append(\"marker\")\n .attr(\"id\", id)\n .attr(\"viewBox\", \"0 0 10 10\")\n .attr(\"refX\", 9)\n .attr(\"refY\", 5)\n .attr(\"markerUnits\", \"strokeWidth\")\n .attr(\"markerWidth\", 8)\n .attr(\"markerHeight\", 6)\n .attr(\"orient\", \"auto\");\n\n var path = marker.append(\"path\")\n .attr(\"d\", \"M 0 0 L 10 5 L 0 10 z\")\n .style(\"stroke-width\", 1)\n .style(\"stroke-dasharray\", \"1,0\");\n util.applyStyle(path, edge[type + \"Style\"]);\n if (edge[type + \"Class\"]) {\n path.attr(\"class\", edge[type + \"Class\"]);\n }\n}\n\nfunction vee(parent, id, edge, type) {\n var marker = parent.append(\"marker\")\n .attr(\"id\", id)\n .attr(\"viewBox\", \"0 0 10 10\")\n .attr(\"refX\", 9)\n .attr(\"refY\", 5)\n .attr(\"markerUnits\", \"strokeWidth\")\n .attr(\"markerWidth\", 8)\n .attr(\"markerHeight\", 6)\n .attr(\"orient\", \"auto\");\n\n var path = marker.append(\"path\")\n .attr(\"d\", \"M 0 0 L 10 5 L 0 10 L 4 5 z\")\n .style(\"stroke-width\", 1)\n .style(\"stroke-dasharray\", \"1,0\");\n util.applyStyle(path, edge[type + \"Style\"]);\n if (edge[type + \"Class\"]) {\n path.attr(\"class\", edge[type + \"Class\"]);\n }\n}\n\nfunction undirected(parent, id, edge, type) {\n var marker = parent.append(\"marker\")\n .attr(\"id\", id)\n .attr(\"viewBox\", \"0 0 10 10\")\n .attr(\"refX\", 9)\n .attr(\"refY\", 5)\n .attr(\"markerUnits\", \"strokeWidth\")\n .attr(\"markerWidth\", 8)\n .attr(\"markerHeight\", 6)\n .attr(\"orient\", \"auto\");\n\n var path = marker.append(\"path\")\n .attr(\"d\", \"M 0 5 L 10 5\")\n .style(\"stroke-width\", 1)\n .style(\"stroke-dasharray\", \"1,0\");\n util.applyStyle(path, edge[type + \"Style\"]);\n if (edge[type + \"Class\"]) {\n path.attr(\"class\", edge[type + \"Class\"]);\n }\n}\n","var util = require(\"./util\");\nvar d3 = require(\"./d3\");\nvar addLabel = require(\"./label/add-label\");\n\nmodule.exports = createClusters;\n\nfunction createClusters(selection, g) {\n var clusters = g.nodes().filter(function(v) { return util.isSubgraph(g, v); });\n var svgClusters = selection.selectAll(\"g.cluster\")\n .data(clusters, function(v) { return v; });\n\n svgClusters.selectAll(\"*\").remove();\n svgClusters.enter().append(\"g\")\n .attr(\"class\", \"cluster\")\n .attr(\"id\",function(v){\n var node = g.node(v);\n return node.id;\n })\n .style(\"opacity\", 0);\n \n svgClusters = selection.selectAll(\"g.cluster\");\n\n util.applyTransition(svgClusters, g)\n .style(\"opacity\", 1);\n\n svgClusters.each(function(v) {\n var node = g.node(v);\n var thisGroup = d3.select(this);\n d3.select(this).append(\"rect\");\n var labelGroup = thisGroup.append(\"g\").attr(\"class\", \"label\");\n addLabel(labelGroup, node, node.clusterLabelPos);\n });\n\n svgClusters.selectAll(\"rect\").each(function(c) {\n var node = g.node(c);\n var domCluster = d3.select(this);\n util.applyStyle(domCluster, node.style);\n });\n\n var exitSelection;\n\n if (svgClusters.exit) {\n exitSelection = svgClusters.exit();\n } else {\n exitSelection = svgClusters.selectAll(null); // empty selection\n }\n\n util.applyTransition(exitSelection, g)\n .style(\"opacity\", 0)\n .remove();\n\n return svgClusters;\n}\n","\"use strict\";\n\nvar _ = require(\"./lodash\");\nvar addLabel = require(\"./label/add-label\");\nvar util = require(\"./util\");\nvar d3 = require(\"./d3\");\n\nmodule.exports = createEdgeLabels;\n\nfunction createEdgeLabels(selection, g) {\n var svgEdgeLabels = selection.selectAll(\"g.edgeLabel\")\n .data(g.edges(), function(e) { return util.edgeToId(e); })\n .classed(\"update\", true);\n\n svgEdgeLabels.exit().remove();\n svgEdgeLabels.enter().append(\"g\")\n .classed(\"edgeLabel\", true)\n .style(\"opacity\", 0);\n\n svgEdgeLabels = selection.selectAll(\"g.edgeLabel\");\n\n svgEdgeLabels.each(function(e) {\n var root = d3.select(this);\n root.select(\".label\").remove();\n var edge = g.edge(e);\n var label = addLabel(root, g.edge(e), 0, 0).classed(\"label\", true);\n var bbox = label.node().getBBox();\n\n if (edge.labelId) { label.attr(\"id\", edge.labelId); }\n if (!_.has(edge, \"width\")) { edge.width = bbox.width; }\n if (!_.has(edge, \"height\")) { edge.height = bbox.height; }\n });\n\n var exitSelection;\n\n if (svgEdgeLabels.exit) {\n exitSelection = svgEdgeLabels.exit();\n } else {\n exitSelection = svgEdgeLabels.selectAll(null); // empty selection\n }\n\n util.applyTransition(exitSelection, g)\n .style(\"opacity\", 0)\n .remove();\n\n return svgEdgeLabels;\n}\n","\"use strict\";\n\nvar _ = require(\"./lodash\");\nvar intersectNode = require(\"./intersect/intersect-node\");\nvar util = require(\"./util\");\nvar d3 = require(\"./d3\");\nmodule.exports = createEdgePaths;\n\nfunction createEdgePaths(selection, g, arrows) {\n var previousPaths = selection.selectAll(\"g.edgePath\")\n .data(g.edges(), function(e) { return util.edgeToId(e); })\n .classed(\"update\", true);\n\n var newPaths = enter(previousPaths, g);\n exit(previousPaths, g);\n\n var svgPaths = previousPaths.merge !== undefined ? previousPaths.merge(newPaths) : previousPaths;\n util.applyTransition(svgPaths, g)\n .style(\"opacity\", 1);\n\n // Save DOM element in the path group, and set ID and class\n svgPaths.each(function(e) {\n var domEdge = d3.select(this);\n var edge = g.edge(e);\n edge.elem = this;\n\n if (edge.id) {\n domEdge.attr(\"id\", edge.id);\n }\n\n util.applyClass(domEdge, edge[\"class\"],\n (domEdge.classed(\"update\") ? \"update \" : \"\") + \"edgePath\");\n });\n\n svgPaths.selectAll(\"path.path\")\n .each(function(e) {\n var edge = g.edge(e);\n edge.arrowheadId = _.uniqueId(\"arrowhead\");\n\n var domEdge = d3.select(this)\n .attr(\"marker-end\", function() {\n return \"url(\" + makeFragmentRef(location.href, edge.arrowheadId) + \")\";\n })\n .style(\"fill\", \"none\");\n\n util.applyTransition(domEdge, g)\n .attr(\"d\", function(e) { return calcPoints(g, e); });\n\n util.applyStyle(domEdge, edge.style);\n });\n\n svgPaths.selectAll(\"defs *\").remove();\n svgPaths.selectAll(\"defs\")\n .each(function(e) {\n var edge = g.edge(e);\n var arrowhead = arrows[edge.arrowhead];\n arrowhead(d3.select(this), edge.arrowheadId, edge, \"arrowhead\");\n });\n\n return svgPaths;\n}\n\nfunction makeFragmentRef(url, fragmentId) {\n var baseUrl = url.split(\"#\")[0];\n return baseUrl + \"#\" + fragmentId;\n}\n\nfunction calcPoints(g, e) {\n var edge = g.edge(e);\n var tail = g.node(e.v);\n var head = g.node(e.w);\n var points = edge.points.slice(1, edge.points.length - 1);\n points.unshift(intersectNode(tail, points[0]));\n points.push(intersectNode(head, points[points.length - 1]));\n\n return createLine(edge, points);\n}\n\nfunction createLine(edge, points) {\n var line = (d3.line || d3.svg.line)()\n .x(function(d) { return d.x; })\n .y(function(d) { return d.y; });\n \n (line.curve || line.interpolate)(edge.curve);\n\n return line(points);\n}\n\nfunction getCoords(elem) {\n var bbox = elem.getBBox();\n var matrix = elem.ownerSVGElement.getScreenCTM()\n .inverse()\n .multiply(elem.getScreenCTM())\n .translate(bbox.width / 2, bbox.height / 2);\n return { x: matrix.e, y: matrix.f };\n}\n\nfunction enter(svgPaths, g) {\n var svgPathsEnter = svgPaths.enter().append(\"g\")\n .attr(\"class\", \"edgePath\")\n .style(\"opacity\", 0);\n svgPathsEnter.append(\"path\")\n .attr(\"class\", \"path\")\n .attr(\"d\", function(e) {\n var edge = g.edge(e);\n var sourceElem = g.node(e.v).elem;\n var points = _.range(edge.points.length).map(function() { return getCoords(sourceElem); });\n return createLine(edge, points);\n });\n svgPathsEnter.append(\"defs\");\n return svgPathsEnter;\n}\n\nfunction exit(svgPaths, g) {\n var svgPathExit = svgPaths.exit();\n util.applyTransition(svgPathExit, g)\n .style(\"opacity\", 0)\n .remove();\n}\n","\"use strict\";\n\nvar _ = require(\"./lodash\");\nvar addLabel = require(\"./label/add-label\");\nvar util = require(\"./util\");\nvar d3 = require(\"./d3\");\n\nmodule.exports = createNodes;\n\nfunction createNodes(selection, g, shapes) {\n var simpleNodes = g.nodes().filter(function(v) { return !util.isSubgraph(g, v); });\n var svgNodes = selection.selectAll(\"g.node\")\n .data(simpleNodes, function(v) { return v; })\n .classed(\"update\", true);\n\n svgNodes.exit().remove();\n\n svgNodes.enter().append(\"g\")\n .attr(\"class\", \"node\")\n .style(\"opacity\", 0);\n\n svgNodes = selection.selectAll(\"g.node\"); \n\n svgNodes.each(function(v) {\n var node = g.node(v);\n var thisGroup = d3.select(this);\n util.applyClass(thisGroup, node[\"class\"],\n (thisGroup.classed(\"update\") ? \"update \" : \"\") + \"node\");\n\n thisGroup.select(\"g.label\").remove();\n var labelGroup = thisGroup.append(\"g\").attr(\"class\", \"label\");\n var labelDom = addLabel(labelGroup, node);\n var shape = shapes[node.shape];\n var bbox = _.pick(labelDom.node().getBBox(), \"width\", \"height\");\n\n node.elem = this;\n\n if (node.id) { thisGroup.attr(\"id\", node.id); }\n if (node.labelId) { labelGroup.attr(\"id\", node.labelId); }\n\n if (_.has(node, \"width\")) { bbox.width = node.width; }\n if (_.has(node, \"height\")) { bbox.height = node.height; }\n\n bbox.width += node.paddingLeft + node.paddingRight;\n bbox.height += node.paddingTop + node.paddingBottom;\n labelGroup.attr(\"transform\", \"translate(\" +\n ((node.paddingLeft - node.paddingRight) / 2) + \",\" +\n ((node.paddingTop - node.paddingBottom) / 2) + \")\");\n\n var root = d3.select(this);\n root.select(\".label-container\").remove();\n var shapeSvg = shape(root, bbox, node).classed(\"label-container\", true);\n util.applyStyle(shapeSvg, node.style);\n\n var shapeBBox = shapeSvg.node().getBBox();\n node.width = shapeBBox.width;\n node.height = shapeBBox.height;\n });\n\n var exitSelection;\n\n if (svgNodes.exit) {\n exitSelection = svgNodes.exit();\n } else {\n exitSelection = svgNodes.selectAll(null); // empty selection\n }\n\n util.applyTransition(exitSelection, g)\n .style(\"opacity\", 0)\n .remove();\n\n return svgNodes;\n}\n","// Stub to get D3 either via NPM or from the global object\nvar d3;\n\nif (!d3) {\n if (typeof require === \"function\") {\n try {\n d3 = require(\"d3\");\n }\n catch (e) {\n // continue regardless of error\n }\n }\n}\n\nif (!d3) {\n d3 = window.d3;\n}\n\nmodule.exports = d3;\n","/* global window */\n\nvar dagre;\n\nif (typeof require === \"function\") {\n try {\n dagre = require(\"dagre\");\n } catch (e) {\n // continue regardless of error\n }\n}\n\nif (!dagre) {\n dagre = window.dagre;\n}\n\nmodule.exports = dagre;\n","/* global window */\n\nvar graphlib;\n\nif (typeof require === \"function\") {\n try {\n graphlib = require(\"graphlib\");\n }\n catch (e) {\n // continue regardless of error\n }\n}\n\nif (!graphlib) {\n graphlib = window.graphlib;\n}\n\nmodule.exports = graphlib;\n","module.exports = {\n node: require(\"./intersect-node\"),\n circle: require(\"./intersect-circle\"),\n ellipse: require(\"./intersect-ellipse\"),\n polygon: require(\"./intersect-polygon\"),\n rect: require(\"./intersect-rect\")\n};\n","var intersectEllipse = require(\"./intersect-ellipse\");\n\nmodule.exports = intersectCircle;\n\nfunction intersectCircle(node, rx, point) {\n return intersectEllipse(node, rx, rx, point);\n}\n","module.exports = intersectEllipse;\n\nfunction intersectEllipse(node, rx, ry, point) {\n // Formulae from: http://mathworld.wolfram.com/Ellipse-LineIntersection.html\n\n var cx = node.x;\n var cy = node.y;\n\n var px = cx - point.x;\n var py = cy - point.y;\n\n var det = Math.sqrt(rx * rx * py * py + ry * ry * px * px);\n\n var dx = Math.abs(rx * ry * px / det);\n if (point.x < cx) {\n dx = -dx;\n }\n var dy = Math.abs(rx * ry * py / det);\n if (point.y < cy) {\n dy = -dy;\n }\n\n return {x: cx + dx, y: cy + dy};\n}\n\n","module.exports = intersectLine;\n\n/*\n * Returns the point at which two lines, p and q, intersect or returns\n * undefined if they do not intersect.\n */\nfunction intersectLine(p1, p2, q1, q2) {\n // Algorithm from J. Avro, (ed.) Graphics Gems, No 2, Morgan Kaufmann, 1994,\n // p7 and p473.\n\n var a1, a2, b1, b2, c1, c2;\n var r1, r2 , r3, r4;\n var denom, offset, num;\n var x, y;\n\n // Compute a1, b1, c1, where line joining points 1 and 2 is F(x,y) = a1 x +\n // b1 y + c1 = 0.\n a1 = p2.y - p1.y;\n b1 = p1.x - p2.x;\n c1 = (p2.x * p1.y) - (p1.x * p2.y);\n\n // Compute r3 and r4.\n r3 = ((a1 * q1.x) + (b1 * q1.y) + c1);\n r4 = ((a1 * q2.x) + (b1 * q2.y) + c1);\n\n // Check signs of r3 and r4. If both point 3 and point 4 lie on\n // same side of line 1, the line segments do not intersect.\n if ((r3 !== 0) && (r4 !== 0) && sameSign(r3, r4)) {\n return /*DONT_INTERSECT*/;\n }\n\n // Compute a2, b2, c2 where line joining points 3 and 4 is G(x,y) = a2 x + b2 y + c2 = 0\n a2 = q2.y - q1.y;\n b2 = q1.x - q2.x;\n c2 = (q2.x * q1.y) - (q1.x * q2.y);\n\n // Compute r1 and r2\n r1 = (a2 * p1.x) + (b2 * p1.y) + c2;\n r2 = (a2 * p2.x) + (b2 * p2.y) + c2;\n\n // Check signs of r1 and r2. If both point 1 and point 2 lie\n // on same side of second line segment, the line segments do\n // not intersect.\n if ((r1 !== 0) && (r2 !== 0) && (sameSign(r1, r2))) {\n return /*DONT_INTERSECT*/;\n }\n\n // Line segments intersect: compute intersection point.\n denom = (a1 * b2) - (a2 * b1);\n if (denom === 0) {\n return /*COLLINEAR*/;\n }\n\n offset = Math.abs(denom / 2);\n\n // The denom/2 is to get rounding instead of truncating. It\n // is added or subtracted to the numerator, depending upon the\n // sign of the numerator.\n num = (b1 * c2) - (b2 * c1);\n x = (num < 0) ? ((num - offset) / denom) : ((num + offset) / denom);\n\n num = (a2 * c1) - (a1 * c2);\n y = (num < 0) ? ((num - offset) / denom) : ((num + offset) / denom);\n\n return { x: x, y: y };\n}\n\nfunction sameSign(r1, r2) {\n return r1 * r2 > 0;\n}\n","module.exports = intersectNode;\n\nfunction intersectNode(node, point) {\n return node.intersect(point);\n}\n","/* eslint \"no-console\": off */\n\nvar intersectLine = require(\"./intersect-line\");\n\nmodule.exports = intersectPolygon;\n\n/*\n * Returns the point ({x, y}) at which the point argument intersects with the\n * node argument assuming that it has the shape specified by polygon.\n */\nfunction intersectPolygon(node, polyPoints, point) {\n var x1 = node.x;\n var y1 = node.y;\n\n var intersections = [];\n\n var minX = Number.POSITIVE_INFINITY;\n var minY = Number.POSITIVE_INFINITY;\n polyPoints.forEach(function(entry) {\n minX = Math.min(minX, entry.x);\n minY = Math.min(minY, entry.y);\n });\n\n var left = x1 - node.width / 2 - minX;\n var top = y1 - node.height / 2 - minY;\n\n for (var i = 0; i < polyPoints.length; i++) {\n var p1 = polyPoints[i];\n var p2 = polyPoints[i < polyPoints.length - 1 ? i + 1 : 0];\n var intersect = intersectLine(node, point,\n {x: left + p1.x, y: top + p1.y}, {x: left + p2.x, y: top + p2.y});\n if (intersect) {\n intersections.push(intersect);\n }\n }\n\n if (!intersections.length) {\n console.log(\"NO INTERSECTION FOUND, RETURN NODE CENTER\", node);\n return node;\n }\n\n if (intersections.length > 1) {\n // More intersections, find the one nearest to edge end point\n intersections.sort(function(p, q) {\n var pdx = p.x - point.x;\n var pdy = p.y - point.y;\n var distp = Math.sqrt(pdx * pdx + pdy * pdy);\n\n var qdx = q.x - point.x;\n var qdy = q.y - point.y;\n var distq = Math.sqrt(qdx * qdx + qdy * qdy);\n\n return (distp < distq) ? -1 : (distp === distq ? 0 : 1);\n });\n }\n return intersections[0];\n}\n","module.exports = intersectRect;\n\nfunction intersectRect(node, point) {\n var x = node.x;\n var y = node.y;\n\n // Rectangle intersection algorithm from:\n // http://math.stackexchange.com/questions/108113/find-edge-between-two-boxes\n var dx = point.x - x;\n var dy = point.y - y;\n var w = node.width / 2;\n var h = node.height / 2;\n\n var sx, sy;\n if (Math.abs(dy) * w > Math.abs(dx) * h) {\n // Intersection is top or bottom of rect.\n if (dy < 0) {\n h = -h;\n }\n sx = dy === 0 ? 0 : h * dx / dy;\n sy = h;\n } else {\n // Intersection is left or right of rect.\n if (dx < 0) {\n w = -w;\n }\n sx = w;\n sy = dx === 0 ? 0 : w * dy / dx;\n }\n\n return {x: x + sx, y: y + sy};\n}\n","var util = require(\"../util\");\n\nmodule.exports = addHtmlLabel;\n\nfunction addHtmlLabel(root, node) {\n var fo = root\n .append(\"foreignObject\")\n .attr(\"width\", \"100000\");\n\n var div = fo\n .append(\"xhtml:div\");\n div.attr(\"xmlns\", \"http://www.w3.org/1999/xhtml\");\n\n var label = node.label;\n switch(typeof label) {\n case \"function\":\n div.insert(label);\n break;\n case \"object\":\n // Currently we assume this is a DOM object.\n div.insert(function() { return label; });\n break;\n default: div.html(label);\n }\n\n util.applyStyle(div, node.labelStyle);\n div.style(\"display\", \"inline-block\");\n // Fix for firefox\n div.style(\"white-space\", \"nowrap\");\n\n var client = div.node().getBoundingClientRect();\n fo\n .attr(\"width\", client.width)\n .attr(\"height\", client.height); \n\n return fo;\n}\n","var addTextLabel = require(\"./add-text-label\");\nvar addHtmlLabel = require(\"./add-html-label\");\nvar addSVGLabel = require(\"./add-svg-label\");\n\nmodule.exports = addLabel;\n\nfunction addLabel(root, node, location) {\n var label = node.label;\n var labelSvg = root.append(\"g\");\n\n // Allow the label to be a string, a function that returns a DOM element, or\n // a DOM element itself.\n if (node.labelType === \"svg\") {\n addSVGLabel(labelSvg, node);\n } else if (typeof label !== \"string\" || node.labelType === \"html\") {\n addHtmlLabel(labelSvg, node);\n } else {\n addTextLabel(labelSvg, node);\n }\n\n var labelBBox = labelSvg.node().getBBox();\n var y;\n switch(location) {\n case \"top\":\n y = (-node.height / 2);\n break;\n case \"bottom\":\n y = (node.height / 2) - labelBBox.height;\n break;\n default:\n y = (-labelBBox.height / 2);\n }\n labelSvg.attr(\n \"transform\",\n \"translate(\" + (-labelBBox.width / 2) + \",\" + y + \")\");\n\n return labelSvg;\n}\n","var util = require(\"../util\");\n\nmodule.exports = addSVGLabel;\n\nfunction addSVGLabel(root, node) {\n var domNode = root;\n\n domNode.node().appendChild(node.label);\n\n util.applyStyle(domNode, node.labelStyle);\n\n return domNode;\n}\n","var util = require(\"../util\");\n\nmodule.exports = addTextLabel;\n\n/*\n * Attaches a text label to the specified root. Handles escape sequences.\n */\nfunction addTextLabel(root, node) {\n var domNode = root.append(\"text\");\n\n var lines = processEscapeSequences(node.label).split(\"\\n\");\n for (var i = 0; i < lines.length; i++) {\n domNode.append(\"tspan\")\n .attr(\"xml:space\", \"preserve\")\n .attr(\"dy\", \"1em\")\n .attr(\"x\", \"1\")\n .text(lines[i]);\n }\n\n util.applyStyle(domNode, node.labelStyle);\n\n return domNode;\n}\n\nfunction processEscapeSequences(text) {\n var newText = \"\";\n var escaped = false;\n var ch;\n for (var i = 0; i < text.length; ++i) {\n ch = text[i];\n if (escaped) {\n switch(ch) {\n case \"n\": newText += \"\\n\"; break;\n default: newText += ch;\n }\n escaped = false;\n } else if (ch === \"\\\\\") {\n escaped = true;\n } else {\n newText += ch;\n }\n }\n return newText;\n}\n","/* global window */\n\nvar lodash;\n\nif (typeof require === \"function\") {\n try {\n lodash = {\n defaults: require(\"lodash/defaults\"),\n each: require(\"lodash/each\"),\n isFunction: require(\"lodash/isFunction\"),\n isPlainObject: require(\"lodash/isPlainObject\"),\n pick: require(\"lodash/pick\"),\n has: require(\"lodash/has\"),\n range: require(\"lodash/range\"),\n uniqueId: require(\"lodash/uniqueId\")\n };\n }\n catch (e) {\n // continue regardless of error\n }\n}\n\nif (!lodash) {\n lodash = window._;\n}\n\nmodule.exports = lodash;\n","\"use strict\";\n\nvar util = require(\"./util\");\nvar d3 = require(\"./d3\");\n\nmodule.exports = positionClusters;\n\nfunction positionClusters(selection, g) {\n var created = selection.filter(function() { return !d3.select(this).classed(\"update\"); });\n\n function translate(v) {\n var node = g.node(v);\n return \"translate(\" + node.x + \",\" + node.y + \")\";\n }\n\n created.attr(\"transform\", translate);\n\n util.applyTransition(selection, g)\n .style(\"opacity\", 1)\n .attr(\"transform\", translate);\n\n util.applyTransition(created.selectAll(\"rect\"), g)\n .attr(\"width\", function(v) { return g.node(v).width; })\n .attr(\"height\", function(v) { return g.node(v).height; })\n .attr(\"x\", function(v) {\n var node = g.node(v);\n return -node.width / 2;\n })\n .attr(\"y\", function(v) {\n var node = g.node(v);\n return -node.height / 2;\n });\n}\n","\"use strict\";\n\nvar util = require(\"./util\");\nvar d3 = require(\"./d3\");\nvar _ = require(\"./lodash\");\n\nmodule.exports = positionEdgeLabels;\n\nfunction positionEdgeLabels(selection, g) {\n var created = selection.filter(function() { return !d3.select(this).classed(\"update\"); });\n\n function translate(e) {\n var edge = g.edge(e);\n return _.has(edge, \"x\") ? \"translate(\" + edge.x + \",\" + edge.y + \")\" : \"\";\n }\n\n created.attr(\"transform\", translate);\n\n util.applyTransition(selection, g)\n .style(\"opacity\", 1)\n .attr(\"transform\", translate);\n}\n","\"use strict\";\n\nvar util = require(\"./util\");\nvar d3 = require(\"./d3\");\n\nmodule.exports = positionNodes;\n\nfunction positionNodes(selection, g) {\n var created = selection.filter(function() { return !d3.select(this).classed(\"update\"); });\n\n function translate(v) {\n var node = g.node(v);\n return \"translate(\" + node.x + \",\" + node.y + \")\";\n }\n\n created.attr(\"transform\", translate);\n\n util.applyTransition(selection, g)\n .style(\"opacity\", 1)\n .attr(\"transform\", translate);\n}\n","var _ = require(\"./lodash\");\nvar d3 = require(\"./d3\");\nvar layout = require(\"./dagre\").layout;\n\nmodule.exports = render;\n\n// This design is based on http://bost.ocks.org/mike/chart/.\nfunction render() {\n var createNodes = require(\"./create-nodes\");\n var createClusters = require(\"./create-clusters\");\n var createEdgeLabels = require(\"./create-edge-labels\");\n var createEdgePaths = require(\"./create-edge-paths\");\n var positionNodes = require(\"./position-nodes\");\n var positionEdgeLabels = require(\"./position-edge-labels\");\n var positionClusters = require(\"./position-clusters\");\n var shapes = require(\"./shapes\");\n var arrows = require(\"./arrows\");\n\n var fn = function(svg, g) {\n preProcessGraph(g);\n\n var outputGroup = createOrSelectGroup(svg, \"output\");\n var clustersGroup = createOrSelectGroup(outputGroup, \"clusters\");\n var edgePathsGroup = createOrSelectGroup(outputGroup, \"edgePaths\");\n var edgeLabels = createEdgeLabels(createOrSelectGroup(outputGroup, \"edgeLabels\"), g);\n var nodes = createNodes(createOrSelectGroup(outputGroup, \"nodes\"), g, shapes);\n\n layout(g);\n\n positionNodes(nodes, g);\n positionEdgeLabels(edgeLabels, g);\n createEdgePaths(edgePathsGroup, g, arrows);\n\n var clusters = createClusters(clustersGroup, g);\n positionClusters(clusters, g);\n\n postProcessGraph(g);\n };\n\n fn.createNodes = function(value) {\n if (!arguments.length) return createNodes;\n createNodes = value;\n return fn;\n };\n\n fn.createClusters = function(value) {\n if (!arguments.length) return createClusters;\n createClusters = value;\n return fn;\n };\n\n fn.createEdgeLabels = function(value) {\n if (!arguments.length) return createEdgeLabels;\n createEdgeLabels = value;\n return fn;\n };\n\n fn.createEdgePaths = function(value) {\n if (!arguments.length) return createEdgePaths;\n createEdgePaths = value;\n return fn;\n };\n\n fn.shapes = function(value) {\n if (!arguments.length) return shapes;\n shapes = value;\n return fn;\n };\n\n fn.arrows = function(value) {\n if (!arguments.length) return arrows;\n arrows = value;\n return fn;\n };\n\n return fn;\n}\n\nvar NODE_DEFAULT_ATTRS = {\n paddingLeft: 10,\n paddingRight: 10,\n paddingTop: 10,\n paddingBottom: 10,\n rx: 0,\n ry: 0,\n shape: \"rect\"\n};\n\nvar EDGE_DEFAULT_ATTRS = {\n arrowhead: \"normal\",\n curve: d3.curveLinear\n};\n\nfunction preProcessGraph(g) {\n g.nodes().forEach(function(v) {\n var node = g.node(v);\n if (!_.has(node, \"label\") && !g.children(v).length) { node.label = v; }\n\n if (_.has(node, \"paddingX\")) {\n _.defaults(node, {\n paddingLeft: node.paddingX,\n paddingRight: node.paddingX\n });\n }\n\n if (_.has(node, \"paddingY\")) {\n _.defaults(node, {\n paddingTop: node.paddingY,\n paddingBottom: node.paddingY\n });\n }\n\n if (_.has(node, \"padding\")) {\n _.defaults(node, {\n paddingLeft: node.padding,\n paddingRight: node.padding,\n paddingTop: node.padding,\n paddingBottom: node.padding\n });\n }\n\n _.defaults(node, NODE_DEFAULT_ATTRS);\n\n _.each([\"paddingLeft\", \"paddingRight\", \"paddingTop\", \"paddingBottom\"], function(k) {\n node[k] = Number(node[k]);\n });\n\n // Save dimensions for restore during post-processing\n if (_.has(node, \"width\")) { node._prevWidth = node.width; }\n if (_.has(node, \"height\")) { node._prevHeight = node.height; }\n });\n\n g.edges().forEach(function(e) {\n var edge = g.edge(e);\n if (!_.has(edge, \"label\")) { edge.label = \"\"; }\n _.defaults(edge, EDGE_DEFAULT_ATTRS);\n });\n}\n\nfunction postProcessGraph(g) {\n _.each(g.nodes(), function(v) {\n var node = g.node(v);\n\n // Restore original dimensions\n if (_.has(node, \"_prevWidth\")) {\n node.width = node._prevWidth;\n } else {\n delete node.width;\n }\n\n if (_.has(node, \"_prevHeight\")) {\n node.height = node._prevHeight;\n } else {\n delete node.height;\n }\n\n delete node._prevWidth;\n delete node._prevHeight;\n });\n}\n\nfunction createOrSelectGroup(root, name) {\n var selection = root.select(\"g.\" + name);\n if (selection.empty()) {\n selection = root.append(\"g\").attr(\"class\", name);\n }\n return selection;\n}\n","\"use strict\";\n\nvar intersectRect = require(\"./intersect/intersect-rect\");\nvar intersectEllipse = require(\"./intersect/intersect-ellipse\");\nvar intersectCircle = require(\"./intersect/intersect-circle\");\nvar intersectPolygon = require(\"./intersect/intersect-polygon\");\n\nmodule.exports = {\n rect: rect,\n ellipse: ellipse,\n circle: circle,\n diamond: diamond\n};\n\nfunction rect(parent, bbox, node) {\n var shapeSvg = parent.insert(\"rect\", \":first-child\")\n .attr(\"rx\", node.rx)\n .attr(\"ry\", node.ry)\n .attr(\"x\", -bbox.width / 2)\n .attr(\"y\", -bbox.height / 2)\n .attr(\"width\", bbox.width)\n .attr(\"height\", bbox.height);\n\n node.intersect = function(point) {\n return intersectRect(node, point);\n };\n\n return shapeSvg;\n}\n\nfunction ellipse(parent, bbox, node) {\n var rx = bbox.width / 2;\n var ry = bbox.height / 2;\n var shapeSvg = parent.insert(\"ellipse\", \":first-child\")\n .attr(\"x\", -bbox.width / 2)\n .attr(\"y\", -bbox.height / 2)\n .attr(\"rx\", rx)\n .attr(\"ry\", ry);\n\n node.intersect = function(point) {\n return intersectEllipse(node, rx, ry, point);\n };\n\n return shapeSvg;\n}\n\nfunction circle(parent, bbox, node) {\n var r = Math.max(bbox.width, bbox.height) / 2;\n var shapeSvg = parent.insert(\"circle\", \":first-child\")\n .attr(\"x\", -bbox.width / 2)\n .attr(\"y\", -bbox.height / 2)\n .attr(\"r\", r);\n\n node.intersect = function(point) {\n return intersectCircle(node, r, point);\n };\n\n return shapeSvg;\n}\n\n// Circumscribe an ellipse for the bounding box with a diamond shape. I derived\n// the function to calculate the diamond shape from:\n// http://mathforum.org/kb/message.jspa?messageID=3750236\nfunction diamond(parent, bbox, node) {\n var w = (bbox.width * Math.SQRT2) / 2;\n var h = (bbox.height * Math.SQRT2) / 2;\n var points = [\n { x: 0, y: -h },\n { x: -w, y: 0 },\n { x: 0, y: h },\n { x: w, y: 0 }\n ];\n var shapeSvg = parent.insert(\"polygon\", \":first-child\")\n .attr(\"points\", points.map(function(p) { return p.x + \",\" + p.y; }).join(\" \"));\n\n node.intersect = function(p) {\n return intersectPolygon(node, points, p);\n };\n\n return shapeSvg;\n}\n","var _ = require(\"./lodash\");\n\n// Public utility functions\nmodule.exports = {\n isSubgraph: isSubgraph,\n edgeToId: edgeToId,\n applyStyle: applyStyle,\n applyClass: applyClass,\n applyTransition: applyTransition\n};\n\n/*\n * Returns true if the specified node in the graph is a subgraph node. A\n * subgraph node is one that contains other nodes.\n */\nfunction isSubgraph(g, v) {\n return !!g.children(v).length;\n}\n\nfunction edgeToId(e) {\n return escapeId(e.v) + \":\" + escapeId(e.w) + \":\" + escapeId(e.name);\n}\n\nvar ID_DELIM = /:/g;\nfunction escapeId(str) {\n return str ? String(str).replace(ID_DELIM, \"\\\\:\") : \"\";\n}\n\nfunction applyStyle(dom, styleFn) {\n if (styleFn) {\n dom.attr(\"style\", styleFn);\n }\n}\n\nfunction applyClass(dom, classFn, otherClasses) {\n if (classFn) {\n dom\n .attr(\"class\", classFn)\n .attr(\"class\", otherClasses + \" \" + dom.attr(\"class\"));\n }\n}\n\nfunction applyTransition(selection, g) {\n var graph = g.graph();\n\n if (_.isPlainObject(graph)) {\n var transition = graph.transition;\n if (_.isFunction(transition)) {\n return transition(selection);\n }\n }\n\n return selection;\n}\n","module.exports = \"0.6.4\";\n","/*\nCopyright (c) 2012-2014 Chris Pettitt\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n*/\n\nmodule.exports = {\n graphlib: require(\"./lib/graphlib\"),\n\n layout: require(\"./lib/layout\"),\n debug: require(\"./lib/debug\"),\n util: {\n time: require(\"./lib/util\").time,\n notime: require(\"./lib/util\").notime\n },\n version: require(\"./lib/version\")\n};\n","\"use strict\";\n\nvar _ = require(\"./lodash\");\nvar greedyFAS = require(\"./greedy-fas\");\n\nmodule.exports = {\n run: run,\n undo: undo\n};\n\nfunction run(g) {\n var fas = (g.graph().acyclicer === \"greedy\"\n ? greedyFAS(g, weightFn(g))\n : dfsFAS(g));\n _.forEach(fas, function(e) {\n var label = g.edge(e);\n g.removeEdge(e);\n label.forwardName = e.name;\n label.reversed = true;\n g.setEdge(e.w, e.v, label, _.uniqueId(\"rev\"));\n });\n\n function weightFn(g) {\n return function(e) {\n return g.edge(e).weight;\n };\n }\n}\n\nfunction dfsFAS(g) {\n var fas = [];\n var stack = {};\n var visited = {};\n\n function dfs(v) {\n if (_.has(visited, v)) {\n return;\n }\n visited[v] = true;\n stack[v] = true;\n _.forEach(g.outEdges(v), function(e) {\n if (_.has(stack, e.w)) {\n fas.push(e);\n } else {\n dfs(e.w);\n }\n });\n delete stack[v];\n }\n\n _.forEach(g.nodes(), dfs);\n return fas;\n}\n\nfunction undo(g) {\n _.forEach(g.edges(), function(e) {\n var label = g.edge(e);\n if (label.reversed) {\n g.removeEdge(e);\n\n var forwardName = label.forwardName;\n delete label.reversed;\n delete label.forwardName;\n g.setEdge(e.w, e.v, label, forwardName);\n }\n });\n}\n","var _ = require(\"./lodash\");\nvar util = require(\"./util\");\n\nmodule.exports = addBorderSegments;\n\nfunction addBorderSegments(g) {\n function dfs(v) {\n var children = g.children(v);\n var node = g.node(v);\n if (children.length) {\n _.forEach(children, dfs);\n }\n\n if (_.has(node, \"minRank\")) {\n node.borderLeft = [];\n node.borderRight = [];\n for (var rank = node.minRank, maxRank = node.maxRank + 1;\n rank < maxRank;\n ++rank) {\n addBorderNode(g, \"borderLeft\", \"_bl\", v, node, rank);\n addBorderNode(g, \"borderRight\", \"_br\", v, node, rank);\n }\n }\n }\n\n _.forEach(g.children(), dfs);\n}\n\nfunction addBorderNode(g, prop, prefix, sg, sgNode, rank) {\n var label = { width: 0, height: 0, rank: rank, borderType: prop };\n var prev = sgNode[prop][rank - 1];\n var curr = util.addDummyNode(g, \"border\", label, prefix);\n sgNode[prop][rank] = curr;\n g.setParent(curr, sg);\n if (prev) {\n g.setEdge(prev, curr, { weight: 1 });\n }\n}\n","\"use strict\";\n\nvar _ = require(\"./lodash\");\n\nmodule.exports = {\n adjust: adjust,\n undo: undo\n};\n\nfunction adjust(g) {\n var rankDir = g.graph().rankdir.toLowerCase();\n if (rankDir === \"lr\" || rankDir === \"rl\") {\n swapWidthHeight(g);\n }\n}\n\nfunction undo(g) {\n var rankDir = g.graph().rankdir.toLowerCase();\n if (rankDir === \"bt\" || rankDir === \"rl\") {\n reverseY(g);\n }\n\n if (rankDir === \"lr\" || rankDir === \"rl\") {\n swapXY(g);\n swapWidthHeight(g);\n }\n}\n\nfunction swapWidthHeight(g) {\n _.forEach(g.nodes(), function(v) { swapWidthHeightOne(g.node(v)); });\n _.forEach(g.edges(), function(e) { swapWidthHeightOne(g.edge(e)); });\n}\n\nfunction swapWidthHeightOne(attrs) {\n var w = attrs.width;\n attrs.width = attrs.height;\n attrs.height = w;\n}\n\nfunction reverseY(g) {\n _.forEach(g.nodes(), function(v) { reverseYOne(g.node(v)); });\n\n _.forEach(g.edges(), function(e) {\n var edge = g.edge(e);\n _.forEach(edge.points, reverseYOne);\n if (_.has(edge, \"y\")) {\n reverseYOne(edge);\n }\n });\n}\n\nfunction reverseYOne(attrs) {\n attrs.y = -attrs.y;\n}\n\nfunction swapXY(g) {\n _.forEach(g.nodes(), function(v) { swapXYOne(g.node(v)); });\n\n _.forEach(g.edges(), function(e) {\n var edge = g.edge(e);\n _.forEach(edge.points, swapXYOne);\n if (_.has(edge, \"x\")) {\n swapXYOne(edge);\n }\n });\n}\n\nfunction swapXYOne(attrs) {\n var x = attrs.x;\n attrs.x = attrs.y;\n attrs.y = x;\n}\n","/*\n * Simple doubly linked list implementation derived from Cormen, et al.,\n * \"Introduction to Algorithms\".\n */\n\nmodule.exports = List;\n\nfunction List() {\n var sentinel = {};\n sentinel._next = sentinel._prev = sentinel;\n this._sentinel = sentinel;\n}\n\nList.prototype.dequeue = function() {\n var sentinel = this._sentinel;\n var entry = sentinel._prev;\n if (entry !== sentinel) {\n unlink(entry);\n return entry;\n }\n};\n\nList.prototype.enqueue = function(entry) {\n var sentinel = this._sentinel;\n if (entry._prev && entry._next) {\n unlink(entry);\n }\n entry._next = sentinel._next;\n sentinel._next._prev = entry;\n sentinel._next = entry;\n entry._prev = sentinel;\n};\n\nList.prototype.toString = function() {\n var strs = [];\n var sentinel = this._sentinel;\n var curr = sentinel._prev;\n while (curr !== sentinel) {\n strs.push(JSON.stringify(curr, filterOutLinks));\n curr = curr._prev;\n }\n return \"[\" + strs.join(\", \") + \"]\";\n};\n\nfunction unlink(entry) {\n entry._prev._next = entry._next;\n entry._next._prev = entry._prev;\n delete entry._next;\n delete entry._prev;\n}\n\nfunction filterOutLinks(k, v) {\n if (k !== \"_next\" && k !== \"_prev\") {\n return v;\n }\n}\n","var _ = require(\"./lodash\");\nvar util = require(\"./util\");\nvar Graph = require(\"./graphlib\").Graph;\n\nmodule.exports = {\n debugOrdering: debugOrdering\n};\n\n/* istanbul ignore next */\nfunction debugOrdering(g) {\n var layerMatrix = util.buildLayerMatrix(g);\n\n var h = new Graph({ compound: true, multigraph: true }).setGraph({});\n\n _.forEach(g.nodes(), function(v) {\n h.setNode(v, { label: v });\n h.setParent(v, \"layer\" + g.node(v).rank);\n });\n\n _.forEach(g.edges(), function(e) {\n h.setEdge(e.v, e.w, {}, e.name);\n });\n\n _.forEach(layerMatrix, function(layer, i) {\n var layerV = \"layer\" + i;\n h.setNode(layerV, { rank: \"same\" });\n _.reduce(layer, function(u, v) {\n h.setEdge(u, v, { style: \"invis\" });\n return v;\n });\n });\n\n return h;\n}\n","/* global window */\n\nvar graphlib;\n\nif (typeof require === \"function\") {\n try {\n graphlib = require(\"graphlib\");\n } catch (e) {\n // continue regardless of error\n }\n}\n\nif (!graphlib) {\n graphlib = window.graphlib;\n}\n\nmodule.exports = graphlib;\n","var _ = require(\"./lodash\");\nvar Graph = require(\"./graphlib\").Graph;\nvar List = require(\"./data/list\");\n\n/*\n * A greedy heuristic for finding a feedback arc set for a graph. A feedback\n * arc set is a set of edges that can be removed to make a graph acyclic.\n * The algorithm comes from: P. Eades, X. Lin, and W. F. Smyth, \"A fast and\n * effective heuristic for the feedback arc set problem.\" This implementation\n * adjusts that from the paper to allow for weighted edges.\n */\nmodule.exports = greedyFAS;\n\nvar DEFAULT_WEIGHT_FN = _.constant(1);\n\nfunction greedyFAS(g, weightFn) {\n if (g.nodeCount() <= 1) {\n return [];\n }\n var state = buildState(g, weightFn || DEFAULT_WEIGHT_FN);\n var results = doGreedyFAS(state.graph, state.buckets, state.zeroIdx);\n\n // Expand multi-edges\n return _.flatten(_.map(results, function(e) {\n return g.outEdges(e.v, e.w);\n }), true);\n}\n\nfunction doGreedyFAS(g, buckets, zeroIdx) {\n var results = [];\n var sources = buckets[buckets.length - 1];\n var sinks = buckets[0];\n\n var entry;\n while (g.nodeCount()) {\n while ((entry = sinks.dequeue())) { removeNode(g, buckets, zeroIdx, entry); }\n while ((entry = sources.dequeue())) { removeNode(g, buckets, zeroIdx, entry); }\n if (g.nodeCount()) {\n for (var i = buckets.length - 2; i > 0; --i) {\n entry = buckets[i].dequeue();\n if (entry) {\n results = results.concat(removeNode(g, buckets, zeroIdx, entry, true));\n break;\n }\n }\n }\n }\n\n return results;\n}\n\nfunction removeNode(g, buckets, zeroIdx, entry, collectPredecessors) {\n var results = collectPredecessors ? [] : undefined;\n\n _.forEach(g.inEdges(entry.v), function(edge) {\n var weight = g.edge(edge);\n var uEntry = g.node(edge.v);\n\n if (collectPredecessors) {\n results.push({ v: edge.v, w: edge.w });\n }\n\n uEntry.out -= weight;\n assignBucket(buckets, zeroIdx, uEntry);\n });\n\n _.forEach(g.outEdges(entry.v), function(edge) {\n var weight = g.edge(edge);\n var w = edge.w;\n var wEntry = g.node(w);\n wEntry[\"in\"] -= weight;\n assignBucket(buckets, zeroIdx, wEntry);\n });\n\n g.removeNode(entry.v);\n\n return results;\n}\n\nfunction buildState(g, weightFn) {\n var fasGraph = new Graph();\n var maxIn = 0;\n var maxOut = 0;\n\n _.forEach(g.nodes(), function(v) {\n fasGraph.setNode(v, { v: v, \"in\": 0, out: 0 });\n });\n\n // Aggregate weights on nodes, but also sum the weights across multi-edges\n // into a single edge for the fasGraph.\n _.forEach(g.edges(), function(e) {\n var prevWeight = fasGraph.edge(e.v, e.w) || 0;\n var weight = weightFn(e);\n var edgeWeight = prevWeight + weight;\n fasGraph.setEdge(e.v, e.w, edgeWeight);\n maxOut = Math.max(maxOut, fasGraph.node(e.v).out += weight);\n maxIn = Math.max(maxIn, fasGraph.node(e.w)[\"in\"] += weight);\n });\n\n var buckets = _.range(maxOut + maxIn + 3).map(function() { return new List(); });\n var zeroIdx = maxIn + 1;\n\n _.forEach(fasGraph.nodes(), function(v) {\n assignBucket(buckets, zeroIdx, fasGraph.node(v));\n });\n\n return { graph: fasGraph, buckets: buckets, zeroIdx: zeroIdx };\n}\n\nfunction assignBucket(buckets, zeroIdx, entry) {\n if (!entry.out) {\n buckets[0].enqueue(entry);\n } else if (!entry[\"in\"]) {\n buckets[buckets.length - 1].enqueue(entry);\n } else {\n buckets[entry.out - entry[\"in\"] + zeroIdx].enqueue(entry);\n }\n}\n","\"use strict\";\n\nvar _ = require(\"./lodash\");\nvar acyclic = require(\"./acyclic\");\nvar normalize = require(\"./normalize\");\nvar rank = require(\"./rank\");\nvar normalizeRanks = require(\"./util\").normalizeRanks;\nvar parentDummyChains = require(\"./parent-dummy-chains\");\nvar removeEmptyRanks = require(\"./util\").removeEmptyRanks;\nvar nestingGraph = require(\"./nesting-graph\");\nvar addBorderSegments = require(\"./add-border-segments\");\nvar coordinateSystem = require(\"./coordinate-system\");\nvar order = require(\"./order\");\nvar position = require(\"./position\");\nvar util = require(\"./util\");\nvar Graph = require(\"./graphlib\").Graph;\n\nmodule.exports = layout;\n\nfunction layout(g, opts) {\n var time = opts && opts.debugTiming ? util.time : util.notime;\n time(\"layout\", function() {\n var layoutGraph = \n time(\" buildLayoutGraph\", function() { return buildLayoutGraph(g); });\n time(\" runLayout\", function() { runLayout(layoutGraph, time); });\n time(\" updateInputGraph\", function() { updateInputGraph(g, layoutGraph); });\n });\n}\n\nfunction runLayout(g, time) {\n time(\" makeSpaceForEdgeLabels\", function() { makeSpaceForEdgeLabels(g); });\n time(\" removeSelfEdges\", function() { removeSelfEdges(g); });\n time(\" acyclic\", function() { acyclic.run(g); });\n time(\" nestingGraph.run\", function() { nestingGraph.run(g); });\n time(\" rank\", function() { rank(util.asNonCompoundGraph(g)); });\n time(\" injectEdgeLabelProxies\", function() { injectEdgeLabelProxies(g); });\n time(\" removeEmptyRanks\", function() { removeEmptyRanks(g); });\n time(\" nestingGraph.cleanup\", function() { nestingGraph.cleanup(g); });\n time(\" normalizeRanks\", function() { normalizeRanks(g); });\n time(\" assignRankMinMax\", function() { assignRankMinMax(g); });\n time(\" removeEdgeLabelProxies\", function() { removeEdgeLabelProxies(g); });\n time(\" normalize.run\", function() { normalize.run(g); });\n time(\" parentDummyChains\", function() { parentDummyChains(g); });\n time(\" addBorderSegments\", function() { addBorderSegments(g); });\n time(\" order\", function() { order(g); });\n time(\" insertSelfEdges\", function() { insertSelfEdges(g); });\n time(\" adjustCoordinateSystem\", function() { coordinateSystem.adjust(g); });\n time(\" position\", function() { position(g); });\n time(\" positionSelfEdges\", function() { positionSelfEdges(g); });\n time(\" removeBorderNodes\", function() { removeBorderNodes(g); });\n time(\" normalize.undo\", function() { normalize.undo(g); });\n time(\" fixupEdgeLabelCoords\", function() { fixupEdgeLabelCoords(g); });\n time(\" undoCoordinateSystem\", function() { coordinateSystem.undo(g); });\n time(\" translateGraph\", function() { translateGraph(g); });\n time(\" assignNodeIntersects\", function() { assignNodeIntersects(g); });\n time(\" reversePoints\", function() { reversePointsForReversedEdges(g); });\n time(\" acyclic.undo\", function() { acyclic.undo(g); });\n}\n\n/*\n * Copies final layout information from the layout graph back to the input\n * graph. This process only copies whitelisted attributes from the layout graph\n * to the input graph, so it serves as a good place to determine what\n * attributes can influence layout.\n */\nfunction updateInputGraph(inputGraph, layoutGraph) {\n _.forEach(inputGraph.nodes(), function(v) {\n var inputLabel = inputGraph.node(v);\n var layoutLabel = layoutGraph.node(v);\n\n if (inputLabel) {\n inputLabel.x = layoutLabel.x;\n inputLabel.y = layoutLabel.y;\n\n if (layoutGraph.children(v).length) {\n inputLabel.width = layoutLabel.width;\n inputLabel.height = layoutLabel.height;\n }\n }\n });\n\n _.forEach(inputGraph.edges(), function(e) {\n var inputLabel = inputGraph.edge(e);\n var layoutLabel = layoutGraph.edge(e);\n\n inputLabel.points = layoutLabel.points;\n if (_.has(layoutLabel, \"x\")) {\n inputLabel.x = layoutLabel.x;\n inputLabel.y = layoutLabel.y;\n }\n });\n\n inputGraph.graph().width = layoutGraph.graph().width;\n inputGraph.graph().height = layoutGraph.graph().height;\n}\n\nvar graphNumAttrs = [\"nodesep\", \"edgesep\", \"ranksep\", \"marginx\", \"marginy\"];\nvar graphDefaults = { ranksep: 50, edgesep: 20, nodesep: 50, rankdir: \"tb\" };\nvar graphAttrs = [\"acyclicer\", \"ranker\", \"rankdir\", \"align\"];\nvar nodeNumAttrs = [\"width\", \"height\"];\nvar nodeDefaults = { width: 0, height: 0 };\nvar edgeNumAttrs = [\"minlen\", \"weight\", \"width\", \"height\", \"labeloffset\"];\nvar edgeDefaults = {\n minlen: 1, weight: 1, width: 0, height: 0,\n labeloffset: 10, labelpos: \"r\"\n};\nvar edgeAttrs = [\"labelpos\"];\n\n/*\n * Constructs a new graph from the input graph, which can be used for layout.\n * This process copies only whitelisted attributes from the input graph to the\n * layout graph. Thus this function serves as a good place to determine what\n * attributes can influence layout.\n */\nfunction buildLayoutGraph(inputGraph) {\n var g = new Graph({ multigraph: true, compound: true });\n var graph = canonicalize(inputGraph.graph());\n\n g.setGraph(_.merge({},\n graphDefaults,\n selectNumberAttrs(graph, graphNumAttrs),\n _.pick(graph, graphAttrs)));\n\n _.forEach(inputGraph.nodes(), function(v) {\n var node = canonicalize(inputGraph.node(v));\n g.setNode(v, _.defaults(selectNumberAttrs(node, nodeNumAttrs), nodeDefaults));\n g.setParent(v, inputGraph.parent(v));\n });\n\n _.forEach(inputGraph.edges(), function(e) {\n var edge = canonicalize(inputGraph.edge(e));\n g.setEdge(e, _.merge({},\n edgeDefaults,\n selectNumberAttrs(edge, edgeNumAttrs),\n _.pick(edge, edgeAttrs)));\n });\n\n return g;\n}\n\n/*\n * This idea comes from the Gansner paper: to account for edge labels in our\n * layout we split each rank in half by doubling minlen and halving ranksep.\n * Then we can place labels at these mid-points between nodes.\n *\n * We also add some minimal padding to the width to push the label for the edge\n * away from the edge itself a bit.\n */\nfunction makeSpaceForEdgeLabels(g) {\n var graph = g.graph();\n graph.ranksep /= 2;\n _.forEach(g.edges(), function(e) {\n var edge = g.edge(e);\n edge.minlen *= 2;\n if (edge.labelpos.toLowerCase() !== \"c\") {\n if (graph.rankdir === \"TB\" || graph.rankdir === \"BT\") {\n edge.width += edge.labeloffset;\n } else {\n edge.height += edge.labeloffset;\n }\n }\n });\n}\n\n/*\n * Creates temporary dummy nodes that capture the rank in which each edge's\n * label is going to, if it has one of non-zero width and height. We do this\n * so that we can safely remove empty ranks while preserving balance for the\n * label's position.\n */\nfunction injectEdgeLabelProxies(g) {\n _.forEach(g.edges(), function(e) {\n var edge = g.edge(e);\n if (edge.width && edge.height) {\n var v = g.node(e.v);\n var w = g.node(e.w);\n var label = { rank: (w.rank - v.rank) / 2 + v.rank, e: e };\n util.addDummyNode(g, \"edge-proxy\", label, \"_ep\");\n }\n });\n}\n\nfunction assignRankMinMax(g) {\n var maxRank = 0;\n _.forEach(g.nodes(), function(v) {\n var node = g.node(v);\n if (node.borderTop) {\n node.minRank = g.node(node.borderTop).rank;\n node.maxRank = g.node(node.borderBottom).rank;\n maxRank = _.max(maxRank, node.maxRank);\n }\n });\n g.graph().maxRank = maxRank;\n}\n\nfunction removeEdgeLabelProxies(g) {\n _.forEach(g.nodes(), function(v) {\n var node = g.node(v);\n if (node.dummy === \"edge-proxy\") {\n g.edge(node.e).labelRank = node.rank;\n g.removeNode(v);\n }\n });\n}\n\nfunction translateGraph(g) {\n var minX = Number.POSITIVE_INFINITY;\n var maxX = 0;\n var minY = Number.POSITIVE_INFINITY;\n var maxY = 0;\n var graphLabel = g.graph();\n var marginX = graphLabel.marginx || 0;\n var marginY = graphLabel.marginy || 0;\n\n function getExtremes(attrs) {\n var x = attrs.x;\n var y = attrs.y;\n var w = attrs.width;\n var h = attrs.height;\n minX = Math.min(minX, x - w / 2);\n maxX = Math.max(maxX, x + w / 2);\n minY = Math.min(minY, y - h / 2);\n maxY = Math.max(maxY, y + h / 2);\n }\n\n _.forEach(g.nodes(), function(v) { getExtremes(g.node(v)); });\n _.forEach(g.edges(), function(e) {\n var edge = g.edge(e);\n if (_.has(edge, \"x\")) {\n getExtremes(edge);\n }\n });\n\n minX -= marginX;\n minY -= marginY;\n\n _.forEach(g.nodes(), function(v) {\n var node = g.node(v);\n node.x -= minX;\n node.y -= minY;\n });\n\n _.forEach(g.edges(), function(e) {\n var edge = g.edge(e);\n _.forEach(edge.points, function(p) {\n p.x -= minX;\n p.y -= minY;\n });\n if (_.has(edge, \"x\")) { edge.x -= minX; }\n if (_.has(edge, \"y\")) { edge.y -= minY; }\n });\n\n graphLabel.width = maxX - minX + marginX;\n graphLabel.height = maxY - minY + marginY;\n}\n\nfunction assignNodeIntersects(g) {\n _.forEach(g.edges(), function(e) {\n var edge = g.edge(e);\n var nodeV = g.node(e.v);\n var nodeW = g.node(e.w);\n var p1, p2;\n if (!edge.points) {\n edge.points = [];\n p1 = nodeW;\n p2 = nodeV;\n } else {\n p1 = edge.points[0];\n p2 = edge.points[edge.points.length - 1];\n }\n edge.points.unshift(util.intersectRect(nodeV, p1));\n edge.points.push(util.intersectRect(nodeW, p2));\n });\n}\n\nfunction fixupEdgeLabelCoords(g) {\n _.forEach(g.edges(), function(e) {\n var edge = g.edge(e);\n if (_.has(edge, \"x\")) {\n if (edge.labelpos === \"l\" || edge.labelpos === \"r\") {\n edge.width -= edge.labeloffset;\n }\n switch (edge.labelpos) {\n case \"l\": edge.x -= edge.width / 2 + edge.labeloffset; break;\n case \"r\": edge.x += edge.width / 2 + edge.labeloffset; break;\n }\n }\n });\n}\n\nfunction reversePointsForReversedEdges(g) {\n _.forEach(g.edges(), function(e) {\n var edge = g.edge(e);\n if (edge.reversed) {\n edge.points.reverse();\n }\n });\n}\n\nfunction removeBorderNodes(g) {\n _.forEach(g.nodes(), function(v) {\n if (g.children(v).length) {\n var node = g.node(v);\n var t = g.node(node.borderTop);\n var b = g.node(node.borderBottom);\n var l = g.node(_.last(node.borderLeft));\n var r = g.node(_.last(node.borderRight));\n\n node.width = Math.abs(r.x - l.x);\n node.height = Math.abs(b.y - t.y);\n node.x = l.x + node.width / 2;\n node.y = t.y + node.height / 2;\n }\n });\n\n _.forEach(g.nodes(), function(v) {\n if (g.node(v).dummy === \"border\") {\n g.removeNode(v);\n }\n });\n}\n\nfunction removeSelfEdges(g) {\n _.forEach(g.edges(), function(e) {\n if (e.v === e.w) {\n var node = g.node(e.v);\n if (!node.selfEdges) {\n node.selfEdges = [];\n }\n node.selfEdges.push({ e: e, label: g.edge(e) });\n g.removeEdge(e);\n }\n });\n}\n\nfunction insertSelfEdges(g) {\n var layers = util.buildLayerMatrix(g);\n _.forEach(layers, function(layer) {\n var orderShift = 0;\n _.forEach(layer, function(v, i) {\n var node = g.node(v);\n node.order = i + orderShift;\n _.forEach(node.selfEdges, function(selfEdge) {\n util.addDummyNode(g, \"selfedge\", {\n width: selfEdge.label.width,\n height: selfEdge.label.height,\n rank: node.rank,\n order: i + (++orderShift),\n e: selfEdge.e,\n label: selfEdge.label\n }, \"_se\");\n });\n delete node.selfEdges;\n });\n });\n}\n\nfunction positionSelfEdges(g) {\n _.forEach(g.nodes(), function(v) {\n var node = g.node(v);\n if (node.dummy === \"selfedge\") {\n var selfNode = g.node(node.e.v);\n var x = selfNode.x + selfNode.width / 2;\n var y = selfNode.y;\n var dx = node.x - x;\n var dy = selfNode.height / 2;\n g.setEdge(node.e, node.label);\n g.removeNode(v);\n node.label.points = [\n { x: x + 2 * dx / 3, y: y - dy },\n { x: x + 5 * dx / 6, y: y - dy },\n { x: x + dx , y: y },\n { x: x + 5 * dx / 6, y: y + dy },\n { x: x + 2 * dx / 3, y: y + dy }\n ];\n node.label.x = node.x;\n node.label.y = node.y;\n }\n });\n}\n\nfunction selectNumberAttrs(obj, attrs) {\n return _.mapValues(_.pick(obj, attrs), Number);\n}\n\nfunction canonicalize(attrs) {\n var newAttrs = {};\n _.forEach(attrs, function(v, k) {\n newAttrs[k.toLowerCase()] = v;\n });\n return newAttrs;\n}\n","/* global window */\n\nvar lodash;\n\nif (typeof require === \"function\") {\n try {\n lodash = {\n cloneDeep: require(\"lodash/cloneDeep\"),\n constant: require(\"lodash/constant\"),\n defaults: require(\"lodash/defaults\"),\n each: require(\"lodash/each\"),\n filter: require(\"lodash/filter\"),\n find: require(\"lodash/find\"),\n flatten: require(\"lodash/flatten\"),\n forEach: require(\"lodash/forEach\"),\n forIn: require(\"lodash/forIn\"),\n has: require(\"lodash/has\"),\n isUndefined: require(\"lodash/isUndefined\"),\n last: require(\"lodash/last\"),\n map: require(\"lodash/map\"),\n mapValues: require(\"lodash/mapValues\"),\n max: require(\"lodash/max\"),\n merge: require(\"lodash/merge\"),\n min: require(\"lodash/min\"),\n minBy: require(\"lodash/minBy\"),\n now: require(\"lodash/now\"),\n pick: require(\"lodash/pick\"),\n range: require(\"lodash/range\"),\n reduce: require(\"lodash/reduce\"),\n sortBy: require(\"lodash/sortBy\"),\n uniqueId: require(\"lodash/uniqueId\"),\n values: require(\"lodash/values\"),\n zipObject: require(\"lodash/zipObject\"),\n };\n } catch (e) {\n // continue regardless of error\n }\n}\n\nif (!lodash) {\n lodash = window._;\n}\n\nmodule.exports = lodash;\n","var _ = require(\"./lodash\");\nvar util = require(\"./util\");\n\nmodule.exports = {\n run: run,\n cleanup: cleanup\n};\n\n/*\n * A nesting graph creates dummy nodes for the tops and bottoms of subgraphs,\n * adds appropriate edges to ensure that all cluster nodes are placed between\n * these boundries, and ensures that the graph is connected.\n *\n * In addition we ensure, through the use of the minlen property, that nodes\n * and subgraph border nodes to not end up on the same rank.\n *\n * Preconditions:\n *\n * 1. Input graph is a DAG\n * 2. Nodes in the input graph has a minlen attribute\n *\n * Postconditions:\n *\n * 1. Input graph is connected.\n * 2. Dummy nodes are added for the tops and bottoms of subgraphs.\n * 3. The minlen attribute for nodes is adjusted to ensure nodes do not\n * get placed on the same rank as subgraph border nodes.\n *\n * The nesting graph idea comes from Sander, \"Layout of Compound Directed\n * Graphs.\"\n */\nfunction run(g) {\n var root = util.addDummyNode(g, \"root\", {}, \"_root\");\n var depths = treeDepths(g);\n var height = _.max(_.values(depths)) - 1; // Note: depths is an Object not an array\n var nodeSep = 2 * height + 1;\n\n g.graph().nestingRoot = root;\n\n // Multiply minlen by nodeSep to align nodes on non-border ranks.\n _.forEach(g.edges(), function(e) { g.edge(e).minlen *= nodeSep; });\n\n // Calculate a weight that is sufficient to keep subgraphs vertically compact\n var weight = sumWeights(g) + 1;\n\n // Create border nodes and link them up\n _.forEach(g.children(), function(child) {\n dfs(g, root, nodeSep, weight, height, depths, child);\n });\n\n // Save the multiplier for node layers for later removal of empty border\n // layers.\n g.graph().nodeRankFactor = nodeSep;\n}\n\nfunction dfs(g, root, nodeSep, weight, height, depths, v) {\n var children = g.children(v);\n if (!children.length) {\n if (v !== root) {\n g.setEdge(root, v, { weight: 0, minlen: nodeSep });\n }\n return;\n }\n\n var top = util.addBorderNode(g, \"_bt\");\n var bottom = util.addBorderNode(g, \"_bb\");\n var label = g.node(v);\n\n g.setParent(top, v);\n label.borderTop = top;\n g.setParent(bottom, v);\n label.borderBottom = bottom;\n\n _.forEach(children, function(child) {\n dfs(g, root, nodeSep, weight, height, depths, child);\n\n var childNode = g.node(child);\n var childTop = childNode.borderTop ? childNode.borderTop : child;\n var childBottom = childNode.borderBottom ? childNode.borderBottom : child;\n var thisWeight = childNode.borderTop ? weight : 2 * weight;\n var minlen = childTop !== childBottom ? 1 : height - depths[v] + 1;\n\n g.setEdge(top, childTop, {\n weight: thisWeight,\n minlen: minlen,\n nestingEdge: true\n });\n\n g.setEdge(childBottom, bottom, {\n weight: thisWeight,\n minlen: minlen,\n nestingEdge: true\n });\n });\n\n if (!g.parent(v)) {\n g.setEdge(root, top, { weight: 0, minlen: height + depths[v] });\n }\n}\n\nfunction treeDepths(g) {\n var depths = {};\n function dfs(v, depth) {\n var children = g.children(v);\n if (children && children.length) {\n _.forEach(children, function(child) {\n dfs(child, depth + 1);\n });\n }\n depths[v] = depth;\n }\n _.forEach(g.children(), function(v) { dfs(v, 1); });\n return depths;\n}\n\nfunction sumWeights(g) {\n return _.reduce(g.edges(), function(acc, e) {\n return acc + g.edge(e).weight;\n }, 0);\n}\n\nfunction cleanup(g) {\n var graphLabel = g.graph();\n g.removeNode(graphLabel.nestingRoot);\n delete graphLabel.nestingRoot;\n _.forEach(g.edges(), function(e) {\n var edge = g.edge(e);\n if (edge.nestingEdge) {\n g.removeEdge(e);\n }\n });\n}\n","\"use strict\";\n\nvar _ = require(\"./lodash\");\nvar util = require(\"./util\");\n\nmodule.exports = {\n run: run,\n undo: undo\n};\n\n/*\n * Breaks any long edges in the graph into short segments that span 1 layer\n * each. This operation is undoable with the denormalize function.\n *\n * Pre-conditions:\n *\n * 1. The input graph is a DAG.\n * 2. Each node in the graph has a \"rank\" property.\n *\n * Post-condition:\n *\n * 1. All edges in the graph have a length of 1.\n * 2. Dummy nodes are added where edges have been split into segments.\n * 3. The graph is augmented with a \"dummyChains\" attribute which contains\n * the first dummy in each chain of dummy nodes produced.\n */\nfunction run(g) {\n g.graph().dummyChains = [];\n _.forEach(g.edges(), function(edge) { normalizeEdge(g, edge); });\n}\n\nfunction normalizeEdge(g, e) {\n var v = e.v;\n var vRank = g.node(v).rank;\n var w = e.w;\n var wRank = g.node(w).rank;\n var name = e.name;\n var edgeLabel = g.edge(e);\n var labelRank = edgeLabel.labelRank;\n\n if (wRank === vRank + 1) return;\n\n g.removeEdge(e);\n\n var dummy, attrs, i;\n for (i = 0, ++vRank; vRank < wRank; ++i, ++vRank) {\n edgeLabel.points = [];\n attrs = {\n width: 0, height: 0,\n edgeLabel: edgeLabel, edgeObj: e,\n rank: vRank\n };\n dummy = util.addDummyNode(g, \"edge\", attrs, \"_d\");\n if (vRank === labelRank) {\n attrs.width = edgeLabel.width;\n attrs.height = edgeLabel.height;\n attrs.dummy = \"edge-label\";\n attrs.labelpos = edgeLabel.labelpos;\n }\n g.setEdge(v, dummy, { weight: edgeLabel.weight }, name);\n if (i === 0) {\n g.graph().dummyChains.push(dummy);\n }\n v = dummy;\n }\n\n g.setEdge(v, w, { weight: edgeLabel.weight }, name);\n}\n\nfunction undo(g) {\n _.forEach(g.graph().dummyChains, function(v) {\n var node = g.node(v);\n var origLabel = node.edgeLabel;\n var w;\n g.setEdge(node.edgeObj, origLabel);\n while (node.dummy) {\n w = g.successors(v)[0];\n g.removeNode(v);\n origLabel.points.push({ x: node.x, y: node.y });\n if (node.dummy === \"edge-label\") {\n origLabel.x = node.x;\n origLabel.y = node.y;\n origLabel.width = node.width;\n origLabel.height = node.height;\n }\n v = w;\n node = g.node(v);\n }\n });\n}\n","var _ = require(\"../lodash\");\n\nmodule.exports = addSubgraphConstraints;\n\nfunction addSubgraphConstraints(g, cg, vs) {\n var prev = {},\n rootPrev;\n\n _.forEach(vs, function(v) {\n var child = g.parent(v),\n parent,\n prevChild;\n while (child) {\n parent = g.parent(child);\n if (parent) {\n prevChild = prev[parent];\n prev[parent] = child;\n } else {\n prevChild = rootPrev;\n rootPrev = child;\n }\n if (prevChild && prevChild !== child) {\n cg.setEdge(prevChild, child);\n return;\n }\n child = parent;\n }\n });\n\n /*\n function dfs(v) {\n var children = v ? g.children(v) : g.children();\n if (children.length) {\n var min = Number.POSITIVE_INFINITY,\n subgraphs = [];\n _.each(children, function(child) {\n var childMin = dfs(child);\n if (g.children(child).length) {\n subgraphs.push({ v: child, order: childMin });\n }\n min = Math.min(min, childMin);\n });\n _.reduce(_.sortBy(subgraphs, \"order\"), function(prev, curr) {\n cg.setEdge(prev.v, curr.v);\n return curr;\n });\n return min;\n }\n return g.node(v).order;\n }\n dfs(undefined);\n */\n}\n","var _ = require(\"../lodash\");\n\nmodule.exports = barycenter;\n\nfunction barycenter(g, movable) {\n return _.map(movable, function(v) {\n var inV = g.inEdges(v);\n if (!inV.length) {\n return { v: v };\n } else {\n var result = _.reduce(inV, function(acc, e) {\n var edge = g.edge(e),\n nodeU = g.node(e.v);\n return {\n sum: acc.sum + (edge.weight * nodeU.order),\n weight: acc.weight + edge.weight\n };\n }, { sum: 0, weight: 0 });\n\n return {\n v: v,\n barycenter: result.sum / result.weight,\n weight: result.weight\n };\n }\n });\n}\n\n","var _ = require(\"../lodash\");\nvar Graph = require(\"../graphlib\").Graph;\n\nmodule.exports = buildLayerGraph;\n\n/*\n * Constructs a graph that can be used to sort a layer of nodes. The graph will\n * contain all base and subgraph nodes from the request layer in their original\n * hierarchy and any edges that are incident on these nodes and are of the type\n * requested by the \"relationship\" parameter.\n *\n * Nodes from the requested rank that do not have parents are assigned a root\n * node in the output graph, which is set in the root graph attribute. This\n * makes it easy to walk the hierarchy of movable nodes during ordering.\n *\n * Pre-conditions:\n *\n * 1. Input graph is a DAG\n * 2. Base nodes in the input graph have a rank attribute\n * 3. Subgraph nodes in the input graph has minRank and maxRank attributes\n * 4. Edges have an assigned weight\n *\n * Post-conditions:\n *\n * 1. Output graph has all nodes in the movable rank with preserved\n * hierarchy.\n * 2. Root nodes in the movable layer are made children of the node\n * indicated by the root attribute of the graph.\n * 3. Non-movable nodes incident on movable nodes, selected by the\n * relationship parameter, are included in the graph (without hierarchy).\n * 4. Edges incident on movable nodes, selected by the relationship\n * parameter, are added to the output graph.\n * 5. The weights for copied edges are aggregated as need, since the output\n * graph is not a multi-graph.\n */\nfunction buildLayerGraph(g, rank, relationship) {\n var root = createRootNode(g),\n result = new Graph({ compound: true }).setGraph({ root: root })\n .setDefaultNodeLabel(function(v) { return g.node(v); });\n\n _.forEach(g.nodes(), function(v) {\n var node = g.node(v),\n parent = g.parent(v);\n\n if (node.rank === rank || node.minRank <= rank && rank <= node.maxRank) {\n result.setNode(v);\n result.setParent(v, parent || root);\n\n // This assumes we have only short edges!\n _.forEach(g[relationship](v), function(e) {\n var u = e.v === v ? e.w : e.v,\n edge = result.edge(u, v),\n weight = !_.isUndefined(edge) ? edge.weight : 0;\n result.setEdge(u, v, { weight: g.edge(e).weight + weight });\n });\n\n if (_.has(node, \"minRank\")) {\n result.setNode(v, {\n borderLeft: node.borderLeft[rank],\n borderRight: node.borderRight[rank]\n });\n }\n }\n });\n\n return result;\n}\n\nfunction createRootNode(g) {\n var v;\n while (g.hasNode((v = _.uniqueId(\"_root\"))));\n return v;\n}\n","\"use strict\";\n\nvar _ = require(\"../lodash\");\n\nmodule.exports = crossCount;\n\n/*\n * A function that takes a layering (an array of layers, each with an array of\n * ordererd nodes) and a graph and returns a weighted crossing count.\n *\n * Pre-conditions:\n *\n * 1. Input graph must be simple (not a multigraph), directed, and include\n * only simple edges.\n * 2. Edges in the input graph must have assigned weights.\n *\n * Post-conditions:\n *\n * 1. The graph and layering matrix are left unchanged.\n *\n * This algorithm is derived from Barth, et al., \"Bilayer Cross Counting.\"\n */\nfunction crossCount(g, layering) {\n var cc = 0;\n for (var i = 1; i < layering.length; ++i) {\n cc += twoLayerCrossCount(g, layering[i-1], layering[i]);\n }\n return cc;\n}\n\nfunction twoLayerCrossCount(g, northLayer, southLayer) {\n // Sort all of the edges between the north and south layers by their position\n // in the north layer and then the south. Map these edges to the position of\n // their head in the south layer.\n var southPos = _.zipObject(southLayer,\n _.map(southLayer, function (v, i) { return i; }));\n var southEntries = _.flatten(_.map(northLayer, function(v) {\n return _.sortBy(_.map(g.outEdges(v), function(e) {\n return { pos: southPos[e.w], weight: g.edge(e).weight };\n }), \"pos\");\n }), true);\n\n // Build the accumulator tree\n var firstIndex = 1;\n while (firstIndex < southLayer.length) firstIndex <<= 1;\n var treeSize = 2 * firstIndex - 1;\n firstIndex -= 1;\n var tree = _.map(new Array(treeSize), function() { return 0; });\n\n // Calculate the weighted crossings\n var cc = 0;\n _.forEach(southEntries.forEach(function(entry) {\n var index = entry.pos + firstIndex;\n tree[index] += entry.weight;\n var weightSum = 0;\n while (index > 0) {\n if (index % 2) {\n weightSum += tree[index + 1];\n }\n index = (index - 1) >> 1;\n tree[index] += entry.weight;\n }\n cc += entry.weight * weightSum;\n }));\n\n return cc;\n}\n","\"use strict\";\n\nvar _ = require(\"../lodash\");\nvar initOrder = require(\"./init-order\");\nvar crossCount = require(\"./cross-count\");\nvar sortSubgraph = require(\"./sort-subgraph\");\nvar buildLayerGraph = require(\"./build-layer-graph\");\nvar addSubgraphConstraints = require(\"./add-subgraph-constraints\");\nvar Graph = require(\"../graphlib\").Graph;\nvar util = require(\"../util\");\n\nmodule.exports = order;\n\n/*\n * Applies heuristics to minimize edge crossings in the graph and sets the best\n * order solution as an order attribute on each node.\n *\n * Pre-conditions:\n *\n * 1. Graph must be DAG\n * 2. Graph nodes must be objects with a \"rank\" attribute\n * 3. Graph edges must have the \"weight\" attribute\n *\n * Post-conditions:\n *\n * 1. Graph nodes will have an \"order\" attribute based on the results of the\n * algorithm.\n */\nfunction order(g) {\n var maxRank = util.maxRank(g),\n downLayerGraphs = buildLayerGraphs(g, _.range(1, maxRank + 1), \"inEdges\"),\n upLayerGraphs = buildLayerGraphs(g, _.range(maxRank - 1, -1, -1), \"outEdges\");\n\n var layering = initOrder(g);\n assignOrder(g, layering);\n\n var bestCC = Number.POSITIVE_INFINITY,\n best;\n\n for (var i = 0, lastBest = 0; lastBest < 4; ++i, ++lastBest) {\n sweepLayerGraphs(i % 2 ? downLayerGraphs : upLayerGraphs, i % 4 >= 2);\n\n layering = util.buildLayerMatrix(g);\n var cc = crossCount(g, layering);\n if (cc < bestCC) {\n lastBest = 0;\n best = _.cloneDeep(layering);\n bestCC = cc;\n }\n }\n\n assignOrder(g, best);\n}\n\nfunction buildLayerGraphs(g, ranks, relationship) {\n return _.map(ranks, function(rank) {\n return buildLayerGraph(g, rank, relationship);\n });\n}\n\nfunction sweepLayerGraphs(layerGraphs, biasRight) {\n var cg = new Graph();\n _.forEach(layerGraphs, function(lg) {\n var root = lg.graph().root;\n var sorted = sortSubgraph(lg, root, cg, biasRight);\n _.forEach(sorted.vs, function(v, i) {\n lg.node(v).order = i;\n });\n addSubgraphConstraints(lg, cg, sorted.vs);\n });\n}\n\nfunction assignOrder(g, layering) {\n _.forEach(layering, function(layer) {\n _.forEach(layer, function(v, i) {\n g.node(v).order = i;\n });\n });\n}\n","\"use strict\";\n\nvar _ = require(\"../lodash\");\n\nmodule.exports = initOrder;\n\n/*\n * Assigns an initial order value for each node by performing a DFS search\n * starting from nodes in the first rank. Nodes are assigned an order in their\n * rank as they are first visited.\n *\n * This approach comes from Gansner, et al., \"A Technique for Drawing Directed\n * Graphs.\"\n *\n * Returns a layering matrix with an array per layer and each layer sorted by\n * the order of its nodes.\n */\nfunction initOrder(g) {\n var visited = {};\n var simpleNodes = _.filter(g.nodes(), function(v) {\n return !g.children(v).length;\n });\n var maxRank = _.max(_.map(simpleNodes, function(v) { return g.node(v).rank; }));\n var layers = _.map(_.range(maxRank + 1), function() { return []; });\n\n function dfs(v) {\n if (_.has(visited, v)) return;\n visited[v] = true;\n var node = g.node(v);\n layers[node.rank].push(v);\n _.forEach(g.successors(v), dfs);\n }\n\n var orderedVs = _.sortBy(simpleNodes, function(v) { return g.node(v).rank; });\n _.forEach(orderedVs, dfs);\n\n return layers;\n}\n","\"use strict\";\n\nvar _ = require(\"../lodash\");\n\nmodule.exports = resolveConflicts;\n\n/*\n * Given a list of entries of the form {v, barycenter, weight} and a\n * constraint graph this function will resolve any conflicts between the\n * constraint graph and the barycenters for the entries. If the barycenters for\n * an entry would violate a constraint in the constraint graph then we coalesce\n * the nodes in the conflict into a new node that respects the contraint and\n * aggregates barycenter and weight information.\n *\n * This implementation is based on the description in Forster, \"A Fast and\n * Simple Hueristic for Constrained Two-Level Crossing Reduction,\" thought it\n * differs in some specific details.\n *\n * Pre-conditions:\n *\n * 1. Each entry has the form {v, barycenter, weight}, or if the node has\n * no barycenter, then {v}.\n *\n * Returns:\n *\n * A new list of entries of the form {vs, i, barycenter, weight}. The list\n * `vs` may either be a singleton or it may be an aggregation of nodes\n * ordered such that they do not violate constraints from the constraint\n * graph. The property `i` is the lowest original index of any of the\n * elements in `vs`.\n */\nfunction resolveConflicts(entries, cg) {\n var mappedEntries = {};\n _.forEach(entries, function(entry, i) {\n var tmp = mappedEntries[entry.v] = {\n indegree: 0,\n \"in\": [],\n out: [],\n vs: [entry.v],\n i: i\n };\n if (!_.isUndefined(entry.barycenter)) {\n tmp.barycenter = entry.barycenter;\n tmp.weight = entry.weight;\n }\n });\n\n _.forEach(cg.edges(), function(e) {\n var entryV = mappedEntries[e.v];\n var entryW = mappedEntries[e.w];\n if (!_.isUndefined(entryV) && !_.isUndefined(entryW)) {\n entryW.indegree++;\n entryV.out.push(mappedEntries[e.w]);\n }\n });\n\n var sourceSet = _.filter(mappedEntries, function(entry) {\n return !entry.indegree;\n });\n\n return doResolveConflicts(sourceSet);\n}\n\nfunction doResolveConflicts(sourceSet) {\n var entries = [];\n\n function handleIn(vEntry) {\n return function(uEntry) {\n if (uEntry.merged) {\n return;\n }\n if (_.isUndefined(uEntry.barycenter) ||\n _.isUndefined(vEntry.barycenter) ||\n uEntry.barycenter >= vEntry.barycenter) {\n mergeEntries(vEntry, uEntry);\n }\n };\n }\n\n function handleOut(vEntry) {\n return function(wEntry) {\n wEntry[\"in\"].push(vEntry);\n if (--wEntry.indegree === 0) {\n sourceSet.push(wEntry);\n }\n };\n }\n\n while (sourceSet.length) {\n var entry = sourceSet.pop();\n entries.push(entry);\n _.forEach(entry[\"in\"].reverse(), handleIn(entry));\n _.forEach(entry.out, handleOut(entry));\n }\n\n return _.map(_.filter(entries, function(entry) { return !entry.merged; }),\n function(entry) {\n return _.pick(entry, [\"vs\", \"i\", \"barycenter\", \"weight\"]);\n });\n\n}\n\nfunction mergeEntries(target, source) {\n var sum = 0;\n var weight = 0;\n\n if (target.weight) {\n sum += target.barycenter * target.weight;\n weight += target.weight;\n }\n\n if (source.weight) {\n sum += source.barycenter * source.weight;\n weight += source.weight;\n }\n\n target.vs = source.vs.concat(target.vs);\n target.barycenter = sum / weight;\n target.weight = weight;\n target.i = Math.min(source.i, target.i);\n source.merged = true;\n}\n","var _ = require(\"../lodash\");\nvar barycenter = require(\"./barycenter\");\nvar resolveConflicts = require(\"./resolve-conflicts\");\nvar sort = require(\"./sort\");\n\nmodule.exports = sortSubgraph;\n\nfunction sortSubgraph(g, v, cg, biasRight) {\n var movable = g.children(v);\n var node = g.node(v);\n var bl = node ? node.borderLeft : undefined;\n var br = node ? node.borderRight: undefined;\n var subgraphs = {};\n\n if (bl) {\n movable = _.filter(movable, function(w) {\n return w !== bl && w !== br;\n });\n }\n\n var barycenters = barycenter(g, movable);\n _.forEach(barycenters, function(entry) {\n if (g.children(entry.v).length) {\n var subgraphResult = sortSubgraph(g, entry.v, cg, biasRight);\n subgraphs[entry.v] = subgraphResult;\n if (_.has(subgraphResult, \"barycenter\")) {\n mergeBarycenters(entry, subgraphResult);\n }\n }\n });\n\n var entries = resolveConflicts(barycenters, cg);\n expandSubgraphs(entries, subgraphs);\n\n var result = sort(entries, biasRight);\n\n if (bl) {\n result.vs = _.flatten([bl, result.vs, br], true);\n if (g.predecessors(bl).length) {\n var blPred = g.node(g.predecessors(bl)[0]),\n brPred = g.node(g.predecessors(br)[0]);\n if (!_.has(result, \"barycenter\")) {\n result.barycenter = 0;\n result.weight = 0;\n }\n result.barycenter = (result.barycenter * result.weight +\n blPred.order + brPred.order) / (result.weight + 2);\n result.weight += 2;\n }\n }\n\n return result;\n}\n\nfunction expandSubgraphs(entries, subgraphs) {\n _.forEach(entries, function(entry) {\n entry.vs = _.flatten(entry.vs.map(function(v) {\n if (subgraphs[v]) {\n return subgraphs[v].vs;\n }\n return v;\n }), true);\n });\n}\n\nfunction mergeBarycenters(target, other) {\n if (!_.isUndefined(target.barycenter)) {\n target.barycenter = (target.barycenter * target.weight +\n other.barycenter * other.weight) /\n (target.weight + other.weight);\n target.weight += other.weight;\n } else {\n target.barycenter = other.barycenter;\n target.weight = other.weight;\n }\n}\n","var _ = require(\"../lodash\");\nvar util = require(\"../util\");\n\nmodule.exports = sort;\n\nfunction sort(entries, biasRight) {\n var parts = util.partition(entries, function(entry) {\n return _.has(entry, \"barycenter\");\n });\n var sortable = parts.lhs,\n unsortable = _.sortBy(parts.rhs, function(entry) { return -entry.i; }),\n vs = [],\n sum = 0,\n weight = 0,\n vsIndex = 0;\n\n sortable.sort(compareWithBias(!!biasRight));\n\n vsIndex = consumeUnsortable(vs, unsortable, vsIndex);\n\n _.forEach(sortable, function (entry) {\n vsIndex += entry.vs.length;\n vs.push(entry.vs);\n sum += entry.barycenter * entry.weight;\n weight += entry.weight;\n vsIndex = consumeUnsortable(vs, unsortable, vsIndex);\n });\n\n var result = { vs: _.flatten(vs, true) };\n if (weight) {\n result.barycenter = sum / weight;\n result.weight = weight;\n }\n return result;\n}\n\nfunction consumeUnsortable(vs, unsortable, index) {\n var last;\n while (unsortable.length && (last = _.last(unsortable)).i <= index) {\n unsortable.pop();\n vs.push(last.vs);\n index++;\n }\n return index;\n}\n\nfunction compareWithBias(bias) {\n return function(entryV, entryW) {\n if (entryV.barycenter < entryW.barycenter) {\n return -1;\n } else if (entryV.barycenter > entryW.barycenter) {\n return 1;\n }\n\n return !bias ? entryV.i - entryW.i : entryW.i - entryV.i;\n };\n}\n","var _ = require(\"./lodash\");\n\nmodule.exports = parentDummyChains;\n\nfunction parentDummyChains(g) {\n var postorderNums = postorder(g);\n\n _.forEach(g.graph().dummyChains, function(v) {\n var node = g.node(v);\n var edgeObj = node.edgeObj;\n var pathData = findPath(g, postorderNums, edgeObj.v, edgeObj.w);\n var path = pathData.path;\n var lca = pathData.lca;\n var pathIdx = 0;\n var pathV = path[pathIdx];\n var ascending = true;\n\n while (v !== edgeObj.w) {\n node = g.node(v);\n\n if (ascending) {\n while ((pathV = path[pathIdx]) !== lca &&\n g.node(pathV).maxRank < node.rank) {\n pathIdx++;\n }\n\n if (pathV === lca) {\n ascending = false;\n }\n }\n\n if (!ascending) {\n while (pathIdx < path.length - 1 &&\n g.node(pathV = path[pathIdx + 1]).minRank <= node.rank) {\n pathIdx++;\n }\n pathV = path[pathIdx];\n }\n\n g.setParent(v, pathV);\n v = g.successors(v)[0];\n }\n });\n}\n\n// Find a path from v to w through the lowest common ancestor (LCA). Return the\n// full path and the LCA.\nfunction findPath(g, postorderNums, v, w) {\n var vPath = [];\n var wPath = [];\n var low = Math.min(postorderNums[v].low, postorderNums[w].low);\n var lim = Math.max(postorderNums[v].lim, postorderNums[w].lim);\n var parent;\n var lca;\n\n // Traverse up from v to find the LCA\n parent = v;\n do {\n parent = g.parent(parent);\n vPath.push(parent);\n } while (parent &&\n (postorderNums[parent].low > low || lim > postorderNums[parent].lim));\n lca = parent;\n\n // Traverse from w to LCA\n parent = w;\n while ((parent = g.parent(parent)) !== lca) {\n wPath.push(parent);\n }\n\n return { path: vPath.concat(wPath.reverse()), lca: lca };\n}\n\nfunction postorder(g) {\n var result = {};\n var lim = 0;\n\n function dfs(v) {\n var low = lim;\n _.forEach(g.children(v), dfs);\n result[v] = { low: low, lim: lim++ };\n }\n _.forEach(g.children(), dfs);\n\n return result;\n}\n","\"use strict\";\n\nvar _ = require(\"../lodash\");\nvar Graph = require(\"../graphlib\").Graph;\nvar util = require(\"../util\");\n\n/*\n * This module provides coordinate assignment based on Brandes and Köpf, \"Fast\n * and Simple Horizontal Coordinate Assignment.\"\n */\n\nmodule.exports = {\n positionX: positionX,\n findType1Conflicts: findType1Conflicts,\n findType2Conflicts: findType2Conflicts,\n addConflict: addConflict,\n hasConflict: hasConflict,\n verticalAlignment: verticalAlignment,\n horizontalCompaction: horizontalCompaction,\n alignCoordinates: alignCoordinates,\n findSmallestWidthAlignment: findSmallestWidthAlignment,\n balance: balance\n};\n\n/*\n * Marks all edges in the graph with a type-1 conflict with the \"type1Conflict\"\n * property. A type-1 conflict is one where a non-inner segment crosses an\n * inner segment. An inner segment is an edge with both incident nodes marked\n * with the \"dummy\" property.\n *\n * This algorithm scans layer by layer, starting with the second, for type-1\n * conflicts between the current layer and the previous layer. For each layer\n * it scans the nodes from left to right until it reaches one that is incident\n * on an inner segment. It then scans predecessors to determine if they have\n * edges that cross that inner segment. At the end a final scan is done for all\n * nodes on the current rank to see if they cross the last visited inner\n * segment.\n *\n * This algorithm (safely) assumes that a dummy node will only be incident on a\n * single node in the layers being scanned.\n */\nfunction findType1Conflicts(g, layering) {\n var conflicts = {};\n\n function visitLayer(prevLayer, layer) {\n var\n // last visited node in the previous layer that is incident on an inner\n // segment.\n k0 = 0,\n // Tracks the last node in this layer scanned for crossings with a type-1\n // segment.\n scanPos = 0,\n prevLayerLength = prevLayer.length,\n lastNode = _.last(layer);\n\n _.forEach(layer, function(v, i) {\n var w = findOtherInnerSegmentNode(g, v),\n k1 = w ? g.node(w).order : prevLayerLength;\n\n if (w || v === lastNode) {\n _.forEach(layer.slice(scanPos, i +1), function(scanNode) {\n _.forEach(g.predecessors(scanNode), function(u) {\n var uLabel = g.node(u),\n uPos = uLabel.order;\n if ((uPos < k0 || k1 < uPos) &&\n !(uLabel.dummy && g.node(scanNode).dummy)) {\n addConflict(conflicts, u, scanNode);\n }\n });\n });\n scanPos = i + 1;\n k0 = k1;\n }\n });\n\n return layer;\n }\n\n _.reduce(layering, visitLayer);\n return conflicts;\n}\n\nfunction findType2Conflicts(g, layering) {\n var conflicts = {};\n\n function scan(south, southPos, southEnd, prevNorthBorder, nextNorthBorder) {\n var v;\n _.forEach(_.range(southPos, southEnd), function(i) {\n v = south[i];\n if (g.node(v).dummy) {\n _.forEach(g.predecessors(v), function(u) {\n var uNode = g.node(u);\n if (uNode.dummy &&\n (uNode.order < prevNorthBorder || uNode.order > nextNorthBorder)) {\n addConflict(conflicts, u, v);\n }\n });\n }\n });\n }\n\n\n function visitLayer(north, south) {\n var prevNorthPos = -1,\n nextNorthPos,\n southPos = 0;\n\n _.forEach(south, function(v, southLookahead) {\n if (g.node(v).dummy === \"border\") {\n var predecessors = g.predecessors(v);\n if (predecessors.length) {\n nextNorthPos = g.node(predecessors[0]).order;\n scan(south, southPos, southLookahead, prevNorthPos, nextNorthPos);\n southPos = southLookahead;\n prevNorthPos = nextNorthPos;\n }\n }\n scan(south, southPos, south.length, nextNorthPos, north.length);\n });\n\n return south;\n }\n\n _.reduce(layering, visitLayer);\n return conflicts;\n}\n\nfunction findOtherInnerSegmentNode(g, v) {\n if (g.node(v).dummy) {\n return _.find(g.predecessors(v), function(u) {\n return g.node(u).dummy;\n });\n }\n}\n\nfunction addConflict(conflicts, v, w) {\n if (v > w) {\n var tmp = v;\n v = w;\n w = tmp;\n }\n\n var conflictsV = conflicts[v];\n if (!conflictsV) {\n conflicts[v] = conflictsV = {};\n }\n conflictsV[w] = true;\n}\n\nfunction hasConflict(conflicts, v, w) {\n if (v > w) {\n var tmp = v;\n v = w;\n w = tmp;\n }\n return _.has(conflicts[v], w);\n}\n\n/*\n * Try to align nodes into vertical \"blocks\" where possible. This algorithm\n * attempts to align a node with one of its median neighbors. If the edge\n * connecting a neighbor is a type-1 conflict then we ignore that possibility.\n * If a previous node has already formed a block with a node after the node\n * we're trying to form a block with, we also ignore that possibility - our\n * blocks would be split in that scenario.\n */\nfunction verticalAlignment(g, layering, conflicts, neighborFn) {\n var root = {},\n align = {},\n pos = {};\n\n // We cache the position here based on the layering because the graph and\n // layering may be out of sync. The layering matrix is manipulated to\n // generate different extreme alignments.\n _.forEach(layering, function(layer) {\n _.forEach(layer, function(v, order) {\n root[v] = v;\n align[v] = v;\n pos[v] = order;\n });\n });\n\n _.forEach(layering, function(layer) {\n var prevIdx = -1;\n _.forEach(layer, function(v) {\n var ws = neighborFn(v);\n if (ws.length) {\n ws = _.sortBy(ws, function(w) { return pos[w]; });\n var mp = (ws.length - 1) / 2;\n for (var i = Math.floor(mp), il = Math.ceil(mp); i <= il; ++i) {\n var w = ws[i];\n if (align[v] === v &&\n prevIdx < pos[w] &&\n !hasConflict(conflicts, v, w)) {\n align[w] = v;\n align[v] = root[v] = root[w];\n prevIdx = pos[w];\n }\n }\n }\n });\n });\n\n return { root: root, align: align };\n}\n\nfunction horizontalCompaction(g, layering, root, align, reverseSep) {\n // This portion of the algorithm differs from BK due to a number of problems.\n // Instead of their algorithm we construct a new block graph and do two\n // sweeps. The first sweep places blocks with the smallest possible\n // coordinates. The second sweep removes unused space by moving blocks to the\n // greatest coordinates without violating separation.\n var xs = {},\n blockG = buildBlockGraph(g, layering, root, reverseSep),\n borderType = reverseSep ? \"borderLeft\" : \"borderRight\";\n\n function iterate(setXsFunc, nextNodesFunc) {\n var stack = blockG.nodes();\n var elem = stack.pop();\n var visited = {};\n while (elem) {\n if (visited[elem]) {\n setXsFunc(elem);\n } else {\n visited[elem] = true;\n stack.push(elem);\n stack = stack.concat(nextNodesFunc(elem));\n }\n\n elem = stack.pop();\n }\n }\n\n // First pass, assign smallest coordinates\n function pass1(elem) {\n xs[elem] = blockG.inEdges(elem).reduce(function(acc, e) {\n return Math.max(acc, xs[e.v] + blockG.edge(e));\n }, 0);\n }\n\n // Second pass, assign greatest coordinates\n function pass2(elem) {\n var min = blockG.outEdges(elem).reduce(function(acc, e) {\n return Math.min(acc, xs[e.w] - blockG.edge(e));\n }, Number.POSITIVE_INFINITY);\n\n var node = g.node(elem);\n if (min !== Number.POSITIVE_INFINITY && node.borderType !== borderType) {\n xs[elem] = Math.max(xs[elem], min);\n }\n }\n\n iterate(pass1, blockG.predecessors.bind(blockG));\n iterate(pass2, blockG.successors.bind(blockG));\n\n // Assign x coordinates to all nodes\n _.forEach(align, function(v) {\n xs[v] = xs[root[v]];\n });\n\n return xs;\n}\n\n\nfunction buildBlockGraph(g, layering, root, reverseSep) {\n var blockGraph = new Graph(),\n graphLabel = g.graph(),\n sepFn = sep(graphLabel.nodesep, graphLabel.edgesep, reverseSep);\n\n _.forEach(layering, function(layer) {\n var u;\n _.forEach(layer, function(v) {\n var vRoot = root[v];\n blockGraph.setNode(vRoot);\n if (u) {\n var uRoot = root[u],\n prevMax = blockGraph.edge(uRoot, vRoot);\n blockGraph.setEdge(uRoot, vRoot, Math.max(sepFn(g, v, u), prevMax || 0));\n }\n u = v;\n });\n });\n\n return blockGraph;\n}\n\n/*\n * Returns the alignment that has the smallest width of the given alignments.\n */\nfunction findSmallestWidthAlignment(g, xss) {\n return _.minBy(_.values(xss), function (xs) {\n var max = Number.NEGATIVE_INFINITY;\n var min = Number.POSITIVE_INFINITY;\n\n _.forIn(xs, function (x, v) {\n var halfWidth = width(g, v) / 2;\n\n max = Math.max(x + halfWidth, max);\n min = Math.min(x - halfWidth, min);\n });\n\n return max - min;\n });\n}\n\n/*\n * Align the coordinates of each of the layout alignments such that\n * left-biased alignments have their minimum coordinate at the same point as\n * the minimum coordinate of the smallest width alignment and right-biased\n * alignments have their maximum coordinate at the same point as the maximum\n * coordinate of the smallest width alignment.\n */\nfunction alignCoordinates(xss, alignTo) {\n var alignToVals = _.values(alignTo),\n alignToMin = _.min(alignToVals),\n alignToMax = _.max(alignToVals);\n\n _.forEach([\"u\", \"d\"], function(vert) {\n _.forEach([\"l\", \"r\"], function(horiz) {\n var alignment = vert + horiz,\n xs = xss[alignment],\n delta;\n if (xs === alignTo) return;\n\n var xsVals = _.values(xs);\n delta = horiz === \"l\" ? alignToMin - _.min(xsVals) : alignToMax - _.max(xsVals);\n\n if (delta) {\n xss[alignment] = _.mapValues(xs, function(x) { return x + delta; });\n }\n });\n });\n}\n\nfunction balance(xss, align) {\n return _.mapValues(xss.ul, function(ignore, v) {\n if (align) {\n return xss[align.toLowerCase()][v];\n } else {\n var xs = _.sortBy(_.map(xss, v));\n return (xs[1] + xs[2]) / 2;\n }\n });\n}\n\nfunction positionX(g) {\n var layering = util.buildLayerMatrix(g);\n var conflicts = _.merge(\n findType1Conflicts(g, layering),\n findType2Conflicts(g, layering));\n\n var xss = {};\n var adjustedLayering;\n _.forEach([\"u\", \"d\"], function(vert) {\n adjustedLayering = vert === \"u\" ? layering : _.values(layering).reverse();\n _.forEach([\"l\", \"r\"], function(horiz) {\n if (horiz === \"r\") {\n adjustedLayering = _.map(adjustedLayering, function(inner) {\n return _.values(inner).reverse();\n });\n }\n\n var neighborFn = (vert === \"u\" ? g.predecessors : g.successors).bind(g);\n var align = verticalAlignment(g, adjustedLayering, conflicts, neighborFn);\n var xs = horizontalCompaction(g, adjustedLayering,\n align.root, align.align, horiz === \"r\");\n if (horiz === \"r\") {\n xs = _.mapValues(xs, function(x) { return -x; });\n }\n xss[vert + horiz] = xs;\n });\n });\n\n var smallestWidth = findSmallestWidthAlignment(g, xss);\n alignCoordinates(xss, smallestWidth);\n return balance(xss, g.graph().align);\n}\n\nfunction sep(nodeSep, edgeSep, reverseSep) {\n return function(g, v, w) {\n var vLabel = g.node(v);\n var wLabel = g.node(w);\n var sum = 0;\n var delta;\n\n sum += vLabel.width / 2;\n if (_.has(vLabel, \"labelpos\")) {\n switch (vLabel.labelpos.toLowerCase()) {\n case \"l\": delta = -vLabel.width / 2; break;\n case \"r\": delta = vLabel.width / 2; break;\n }\n }\n if (delta) {\n sum += reverseSep ? delta : -delta;\n }\n delta = 0;\n\n sum += (vLabel.dummy ? edgeSep : nodeSep) / 2;\n sum += (wLabel.dummy ? edgeSep : nodeSep) / 2;\n\n sum += wLabel.width / 2;\n if (_.has(wLabel, \"labelpos\")) {\n switch (wLabel.labelpos.toLowerCase()) {\n case \"l\": delta = wLabel.width / 2; break;\n case \"r\": delta = -wLabel.width / 2; break;\n }\n }\n if (delta) {\n sum += reverseSep ? delta : -delta;\n }\n delta = 0;\n\n return sum;\n };\n}\n\nfunction width(g, v) {\n return g.node(v).width;\n}\n","\"use strict\";\n\nvar _ = require(\"../lodash\");\nvar util = require(\"../util\");\nvar positionX = require(\"./bk\").positionX;\n\nmodule.exports = position;\n\nfunction position(g) {\n g = util.asNonCompoundGraph(g);\n\n positionY(g);\n _.forEach(positionX(g), function(x, v) {\n g.node(v).x = x;\n });\n}\n\nfunction positionY(g) {\n var layering = util.buildLayerMatrix(g);\n var rankSep = g.graph().ranksep;\n var prevY = 0;\n _.forEach(layering, function(layer) {\n var maxHeight = _.max(_.map(layer, function(v) { return g.node(v).height; }));\n _.forEach(layer, function(v) {\n g.node(v).y = prevY + maxHeight / 2;\n });\n prevY += maxHeight + rankSep;\n });\n}\n\n","\"use strict\";\n\nvar _ = require(\"../lodash\");\nvar Graph = require(\"../graphlib\").Graph;\nvar slack = require(\"./util\").slack;\n\nmodule.exports = feasibleTree;\n\n/*\n * Constructs a spanning tree with tight edges and adjusted the input node's\n * ranks to achieve this. A tight edge is one that is has a length that matches\n * its \"minlen\" attribute.\n *\n * The basic structure for this function is derived from Gansner, et al., \"A\n * Technique for Drawing Directed Graphs.\"\n *\n * Pre-conditions:\n *\n * 1. Graph must be a DAG.\n * 2. Graph must be connected.\n * 3. Graph must have at least one node.\n * 5. Graph nodes must have been previously assigned a \"rank\" property that\n * respects the \"minlen\" property of incident edges.\n * 6. Graph edges must have a \"minlen\" property.\n *\n * Post-conditions:\n *\n * - Graph nodes will have their rank adjusted to ensure that all edges are\n * tight.\n *\n * Returns a tree (undirected graph) that is constructed using only \"tight\"\n * edges.\n */\nfunction feasibleTree(g) {\n var t = new Graph({ directed: false });\n\n // Choose arbitrary node from which to start our tree\n var start = g.nodes()[0];\n var size = g.nodeCount();\n t.setNode(start, {});\n\n var edge, delta;\n while (tightTree(t, g) < size) {\n edge = findMinSlackEdge(t, g);\n delta = t.hasNode(edge.v) ? slack(g, edge) : -slack(g, edge);\n shiftRanks(t, g, delta);\n }\n\n return t;\n}\n\n/*\n * Finds a maximal tree of tight edges and returns the number of nodes in the\n * tree.\n */\nfunction tightTree(t, g) {\n function dfs(v) {\n _.forEach(g.nodeEdges(v), function(e) {\n var edgeV = e.v,\n w = (v === edgeV) ? e.w : edgeV;\n if (!t.hasNode(w) && !slack(g, e)) {\n t.setNode(w, {});\n t.setEdge(v, w, {});\n dfs(w);\n }\n });\n }\n\n _.forEach(t.nodes(), dfs);\n return t.nodeCount();\n}\n\n/*\n * Finds the edge with the smallest slack that is incident on tree and returns\n * it.\n */\nfunction findMinSlackEdge(t, g) {\n return _.minBy(g.edges(), function(e) {\n if (t.hasNode(e.v) !== t.hasNode(e.w)) {\n return slack(g, e);\n }\n });\n}\n\nfunction shiftRanks(t, g, delta) {\n _.forEach(t.nodes(), function(v) {\n g.node(v).rank += delta;\n });\n}\n","\"use strict\";\n\nvar rankUtil = require(\"./util\");\nvar longestPath = rankUtil.longestPath;\nvar feasibleTree = require(\"./feasible-tree\");\nvar networkSimplex = require(\"./network-simplex\");\n\nmodule.exports = rank;\n\n/*\n * Assigns a rank to each node in the input graph that respects the \"minlen\"\n * constraint specified on edges between nodes.\n *\n * This basic structure is derived from Gansner, et al., \"A Technique for\n * Drawing Directed Graphs.\"\n *\n * Pre-conditions:\n *\n * 1. Graph must be a connected DAG\n * 2. Graph nodes must be objects\n * 3. Graph edges must have \"weight\" and \"minlen\" attributes\n *\n * Post-conditions:\n *\n * 1. Graph nodes will have a \"rank\" attribute based on the results of the\n * algorithm. Ranks can start at any index (including negative), we'll\n * fix them up later.\n */\nfunction rank(g) {\n switch(g.graph().ranker) {\n case \"network-simplex\": networkSimplexRanker(g); break;\n case \"tight-tree\": tightTreeRanker(g); break;\n case \"longest-path\": longestPathRanker(g); break;\n default: networkSimplexRanker(g);\n }\n}\n\n// A fast and simple ranker, but results are far from optimal.\nvar longestPathRanker = longestPath;\n\nfunction tightTreeRanker(g) {\n longestPath(g);\n feasibleTree(g);\n}\n\nfunction networkSimplexRanker(g) {\n networkSimplex(g);\n}\n","\"use strict\";\n\nvar _ = require(\"../lodash\");\nvar feasibleTree = require(\"./feasible-tree\");\nvar slack = require(\"./util\").slack;\nvar initRank = require(\"./util\").longestPath;\nvar preorder = require(\"../graphlib\").alg.preorder;\nvar postorder = require(\"../graphlib\").alg.postorder;\nvar simplify = require(\"../util\").simplify;\n\nmodule.exports = networkSimplex;\n\n// Expose some internals for testing purposes\nnetworkSimplex.initLowLimValues = initLowLimValues;\nnetworkSimplex.initCutValues = initCutValues;\nnetworkSimplex.calcCutValue = calcCutValue;\nnetworkSimplex.leaveEdge = leaveEdge;\nnetworkSimplex.enterEdge = enterEdge;\nnetworkSimplex.exchangeEdges = exchangeEdges;\n\n/*\n * The network simplex algorithm assigns ranks to each node in the input graph\n * and iteratively improves the ranking to reduce the length of edges.\n *\n * Preconditions:\n *\n * 1. The input graph must be a DAG.\n * 2. All nodes in the graph must have an object value.\n * 3. All edges in the graph must have \"minlen\" and \"weight\" attributes.\n *\n * Postconditions:\n *\n * 1. All nodes in the graph will have an assigned \"rank\" attribute that has\n * been optimized by the network simplex algorithm. Ranks start at 0.\n *\n *\n * A rough sketch of the algorithm is as follows:\n *\n * 1. Assign initial ranks to each node. We use the longest path algorithm,\n * which assigns ranks to the lowest position possible. In general this\n * leads to very wide bottom ranks and unnecessarily long edges.\n * 2. Construct a feasible tight tree. A tight tree is one such that all\n * edges in the tree have no slack (difference between length of edge\n * and minlen for the edge). This by itself greatly improves the assigned\n * rankings by shorting edges.\n * 3. Iteratively find edges that have negative cut values. Generally a\n * negative cut value indicates that the edge could be removed and a new\n * tree edge could be added to produce a more compact graph.\n *\n * Much of the algorithms here are derived from Gansner, et al., \"A Technique\n * for Drawing Directed Graphs.\" The structure of the file roughly follows the\n * structure of the overall algorithm.\n */\nfunction networkSimplex(g) {\n g = simplify(g);\n initRank(g);\n var t = feasibleTree(g);\n initLowLimValues(t);\n initCutValues(t, g);\n\n var e, f;\n while ((e = leaveEdge(t))) {\n f = enterEdge(t, g, e);\n exchangeEdges(t, g, e, f);\n }\n}\n\n/*\n * Initializes cut values for all edges in the tree.\n */\nfunction initCutValues(t, g) {\n var vs = postorder(t, t.nodes());\n vs = vs.slice(0, vs.length - 1);\n _.forEach(vs, function(v) {\n assignCutValue(t, g, v);\n });\n}\n\nfunction assignCutValue(t, g, child) {\n var childLab = t.node(child);\n var parent = childLab.parent;\n t.edge(child, parent).cutvalue = calcCutValue(t, g, child);\n}\n\n/*\n * Given the tight tree, its graph, and a child in the graph calculate and\n * return the cut value for the edge between the child and its parent.\n */\nfunction calcCutValue(t, g, child) {\n var childLab = t.node(child);\n var parent = childLab.parent;\n // True if the child is on the tail end of the edge in the directed graph\n var childIsTail = true;\n // The graph's view of the tree edge we're inspecting\n var graphEdge = g.edge(child, parent);\n // The accumulated cut value for the edge between this node and its parent\n var cutValue = 0;\n\n if (!graphEdge) {\n childIsTail = false;\n graphEdge = g.edge(parent, child);\n }\n\n cutValue = graphEdge.weight;\n\n _.forEach(g.nodeEdges(child), function(e) {\n var isOutEdge = e.v === child,\n other = isOutEdge ? e.w : e.v;\n\n if (other !== parent) {\n var pointsToHead = isOutEdge === childIsTail,\n otherWeight = g.edge(e).weight;\n\n cutValue += pointsToHead ? otherWeight : -otherWeight;\n if (isTreeEdge(t, child, other)) {\n var otherCutValue = t.edge(child, other).cutvalue;\n cutValue += pointsToHead ? -otherCutValue : otherCutValue;\n }\n }\n });\n\n return cutValue;\n}\n\nfunction initLowLimValues(tree, root) {\n if (arguments.length < 2) {\n root = tree.nodes()[0];\n }\n dfsAssignLowLim(tree, {}, 1, root);\n}\n\nfunction dfsAssignLowLim(tree, visited, nextLim, v, parent) {\n var low = nextLim;\n var label = tree.node(v);\n\n visited[v] = true;\n _.forEach(tree.neighbors(v), function(w) {\n if (!_.has(visited, w)) {\n nextLim = dfsAssignLowLim(tree, visited, nextLim, w, v);\n }\n });\n\n label.low = low;\n label.lim = nextLim++;\n if (parent) {\n label.parent = parent;\n } else {\n // TODO should be able to remove this when we incrementally update low lim\n delete label.parent;\n }\n\n return nextLim;\n}\n\nfunction leaveEdge(tree) {\n return _.find(tree.edges(), function(e) {\n return tree.edge(e).cutvalue < 0;\n });\n}\n\nfunction enterEdge(t, g, edge) {\n var v = edge.v;\n var w = edge.w;\n\n // For the rest of this function we assume that v is the tail and w is the\n // head, so if we don't have this edge in the graph we should flip it to\n // match the correct orientation.\n if (!g.hasEdge(v, w)) {\n v = edge.w;\n w = edge.v;\n }\n\n var vLabel = t.node(v);\n var wLabel = t.node(w);\n var tailLabel = vLabel;\n var flip = false;\n\n // If the root is in the tail of the edge then we need to flip the logic that\n // checks for the head and tail nodes in the candidates function below.\n if (vLabel.lim > wLabel.lim) {\n tailLabel = wLabel;\n flip = true;\n }\n\n var candidates = _.filter(g.edges(), function(edge) {\n return flip === isDescendant(t, t.node(edge.v), tailLabel) &&\n flip !== isDescendant(t, t.node(edge.w), tailLabel);\n });\n\n return _.minBy(candidates, function(edge) { return slack(g, edge); });\n}\n\nfunction exchangeEdges(t, g, e, f) {\n var v = e.v;\n var w = e.w;\n t.removeEdge(v, w);\n t.setEdge(f.v, f.w, {});\n initLowLimValues(t);\n initCutValues(t, g);\n updateRanks(t, g);\n}\n\nfunction updateRanks(t, g) {\n var root = _.find(t.nodes(), function(v) { return !g.node(v).parent; });\n var vs = preorder(t, root);\n vs = vs.slice(1);\n _.forEach(vs, function(v) {\n var parent = t.node(v).parent,\n edge = g.edge(v, parent),\n flipped = false;\n\n if (!edge) {\n edge = g.edge(parent, v);\n flipped = true;\n }\n\n g.node(v).rank = g.node(parent).rank + (flipped ? edge.minlen : -edge.minlen);\n });\n}\n\n/*\n * Returns true if the edge is in the tree.\n */\nfunction isTreeEdge(tree, u, v) {\n return tree.hasEdge(u, v);\n}\n\n/*\n * Returns true if the specified node is descendant of the root node per the\n * assigned low and lim attributes in the tree.\n */\nfunction isDescendant(tree, vLabel, rootLabel) {\n return rootLabel.low <= vLabel.lim && vLabel.lim <= rootLabel.lim;\n}\n","\"use strict\";\n\nvar _ = require(\"../lodash\");\n\nmodule.exports = {\n longestPath: longestPath,\n slack: slack\n};\n\n/*\n * Initializes ranks for the input graph using the longest path algorithm. This\n * algorithm scales well and is fast in practice, it yields rather poor\n * solutions. Nodes are pushed to the lowest layer possible, leaving the bottom\n * ranks wide and leaving edges longer than necessary. However, due to its\n * speed, this algorithm is good for getting an initial ranking that can be fed\n * into other algorithms.\n *\n * This algorithm does not normalize layers because it will be used by other\n * algorithms in most cases. If using this algorithm directly, be sure to\n * run normalize at the end.\n *\n * Pre-conditions:\n *\n * 1. Input graph is a DAG.\n * 2. Input graph node labels can be assigned properties.\n *\n * Post-conditions:\n *\n * 1. Each node will be assign an (unnormalized) \"rank\" property.\n */\nfunction longestPath(g) {\n var visited = {};\n\n function dfs(v) {\n var label = g.node(v);\n if (_.has(visited, v)) {\n return label.rank;\n }\n visited[v] = true;\n\n var rank = _.min(_.map(g.outEdges(v), function(e) {\n return dfs(e.w) - g.edge(e).minlen;\n }));\n\n if (rank === Number.POSITIVE_INFINITY || // return value of _.map([]) for Lodash 3\n rank === undefined || // return value of _.map([]) for Lodash 4\n rank === null) { // return value of _.map([null])\n rank = 0;\n }\n\n return (label.rank = rank);\n }\n\n _.forEach(g.sources(), dfs);\n}\n\n/*\n * Returns the amount of slack for the given edge. The slack is defined as the\n * difference between the length of the edge and its minimum length.\n */\nfunction slack(g, e) {\n return g.node(e.w).rank - g.node(e.v).rank - g.edge(e).minlen;\n}\n","/* eslint \"no-console\": off */\n\n\"use strict\";\n\nvar _ = require(\"./lodash\");\nvar Graph = require(\"./graphlib\").Graph;\n\nmodule.exports = {\n addDummyNode: addDummyNode,\n simplify: simplify,\n asNonCompoundGraph: asNonCompoundGraph,\n successorWeights: successorWeights,\n predecessorWeights: predecessorWeights,\n intersectRect: intersectRect,\n buildLayerMatrix: buildLayerMatrix,\n normalizeRanks: normalizeRanks,\n removeEmptyRanks: removeEmptyRanks,\n addBorderNode: addBorderNode,\n maxRank: maxRank,\n partition: partition,\n time: time,\n notime: notime\n};\n\n/*\n * Adds a dummy node to the graph and return v.\n */\nfunction addDummyNode(g, type, attrs, name) {\n var v;\n do {\n v = _.uniqueId(name);\n } while (g.hasNode(v));\n\n attrs.dummy = type;\n g.setNode(v, attrs);\n return v;\n}\n\n/*\n * Returns a new graph with only simple edges. Handles aggregation of data\n * associated with multi-edges.\n */\nfunction simplify(g) {\n var simplified = new Graph().setGraph(g.graph());\n _.forEach(g.nodes(), function(v) { simplified.setNode(v, g.node(v)); });\n _.forEach(g.edges(), function(e) {\n var simpleLabel = simplified.edge(e.v, e.w) || { weight: 0, minlen: 1 };\n var label = g.edge(e);\n simplified.setEdge(e.v, e.w, {\n weight: simpleLabel.weight + label.weight,\n minlen: Math.max(simpleLabel.minlen, label.minlen)\n });\n });\n return simplified;\n}\n\nfunction asNonCompoundGraph(g) {\n var simplified = new Graph({ multigraph: g.isMultigraph() }).setGraph(g.graph());\n _.forEach(g.nodes(), function(v) {\n if (!g.children(v).length) {\n simplified.setNode(v, g.node(v));\n }\n });\n _.forEach(g.edges(), function(e) {\n simplified.setEdge(e, g.edge(e));\n });\n return simplified;\n}\n\nfunction successorWeights(g) {\n var weightMap = _.map(g.nodes(), function(v) {\n var sucs = {};\n _.forEach(g.outEdges(v), function(e) {\n sucs[e.w] = (sucs[e.w] || 0) + g.edge(e).weight;\n });\n return sucs;\n });\n return _.zipObject(g.nodes(), weightMap);\n}\n\nfunction predecessorWeights(g) {\n var weightMap = _.map(g.nodes(), function(v) {\n var preds = {};\n _.forEach(g.inEdges(v), function(e) {\n preds[e.v] = (preds[e.v] || 0) + g.edge(e).weight;\n });\n return preds;\n });\n return _.zipObject(g.nodes(), weightMap);\n}\n\n/*\n * Finds where a line starting at point ({x, y}) would intersect a rectangle\n * ({x, y, width, height}) if it were pointing at the rectangle's center.\n */\nfunction intersectRect(rect, point) {\n var x = rect.x;\n var y = rect.y;\n\n // Rectangle intersection algorithm from:\n // http://math.stackexchange.com/questions/108113/find-edge-between-two-boxes\n var dx = point.x - x;\n var dy = point.y - y;\n var w = rect.width / 2;\n var h = rect.height / 2;\n\n if (!dx && !dy) {\n throw new Error(\"Not possible to find intersection inside of the rectangle\");\n }\n\n var sx, sy;\n if (Math.abs(dy) * w > Math.abs(dx) * h) {\n // Intersection is top or bottom of rect.\n if (dy < 0) {\n h = -h;\n }\n sx = h * dx / dy;\n sy = h;\n } else {\n // Intersection is left or right of rect.\n if (dx < 0) {\n w = -w;\n }\n sx = w;\n sy = w * dy / dx;\n }\n\n return { x: x + sx, y: y + sy };\n}\n\n/*\n * Given a DAG with each node assigned \"rank\" and \"order\" properties, this\n * function will produce a matrix with the ids of each node.\n */\nfunction buildLayerMatrix(g) {\n var layering = _.map(_.range(maxRank(g) + 1), function() { return []; });\n _.forEach(g.nodes(), function(v) {\n var node = g.node(v);\n var rank = node.rank;\n if (!_.isUndefined(rank)) {\n layering[rank][node.order] = v;\n }\n });\n return layering;\n}\n\n/*\n * Adjusts the ranks for all nodes in the graph such that all nodes v have\n * rank(v) >= 0 and at least one node w has rank(w) = 0.\n */\nfunction normalizeRanks(g) {\n var min = _.min(_.map(g.nodes(), function(v) { return g.node(v).rank; }));\n _.forEach(g.nodes(), function(v) {\n var node = g.node(v);\n if (_.has(node, \"rank\")) {\n node.rank -= min;\n }\n });\n}\n\nfunction removeEmptyRanks(g) {\n // Ranks may not start at 0, so we need to offset them\n var offset = _.min(_.map(g.nodes(), function(v) { return g.node(v).rank; }));\n\n var layers = [];\n _.forEach(g.nodes(), function(v) {\n var rank = g.node(v).rank - offset;\n if (!layers[rank]) {\n layers[rank] = [];\n }\n layers[rank].push(v);\n });\n\n var delta = 0;\n var nodeRankFactor = g.graph().nodeRankFactor;\n _.forEach(layers, function(vs, i) {\n if (_.isUndefined(vs) && i % nodeRankFactor !== 0) {\n --delta;\n } else if (delta) {\n _.forEach(vs, function(v) { g.node(v).rank += delta; });\n }\n });\n}\n\nfunction addBorderNode(g, prefix, rank, order) {\n var node = {\n width: 0,\n height: 0\n };\n if (arguments.length >= 4) {\n node.rank = rank;\n node.order = order;\n }\n return addDummyNode(g, \"border\", node, prefix);\n}\n\nfunction maxRank(g) {\n return _.max(_.map(g.nodes(), function(v) {\n var rank = g.node(v).rank;\n if (!_.isUndefined(rank)) {\n return rank;\n }\n }));\n}\n\n/*\n * Partition a collection into two groups: `lhs` and `rhs`. If the supplied\n * function returns true for an entry it goes into `lhs`. Otherwise it goes\n * into `rhs.\n */\nfunction partition(collection, fn) {\n var result = { lhs: [], rhs: [] };\n _.forEach(collection, function(value) {\n if (fn(value)) {\n result.lhs.push(value);\n } else {\n result.rhs.push(value);\n }\n });\n return result;\n}\n\n/*\n * Returns a new function that wraps `fn` with a timer. The wrapper logs the\n * time it takes to execute the function.\n */\nfunction time(name, fn) {\n var start = _.now();\n try {\n return fn();\n } finally {\n console.log(name + \" time: \" + (_.now() - start) + \"ms\");\n }\n}\n\nfunction notime(name, fn) {\n return fn();\n}\n","module.exports = \"0.8.5\";\n","/**\n * @see https://github.com/vuejs/vue/commit/a855dd0564a657a73b7249469490d39817f27cf7#diff-c0a2623ea5896a83e3b630f236b47b52\n * @see https://stackoverflow.com/a/13091266/4936667\n */\n\nvar decoder;\n\nexport default function decode(html) {\n decoder = decoder || document.createElement('div');\n // Escape HTML before decoding for HTML Entities\n html = escape(html).replace(/%26/g,'&').replace(/%23/g,'#').replace(/%3B/g,';');\n // decoding\n decoder.innerHTML = html;\n\n return unescape(decoder.textContent);\n}\n","/**\n * Copyright (c) 2014, Chris Pettitt\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * 1. Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * 2. Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * 3. Neither the name of the copyright holder nor the names of its contributors\n * may be used to endorse or promote products derived from this software without\n * specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\n * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nvar lib = require(\"./lib\");\n\nmodule.exports = {\n Graph: lib.Graph,\n json: require(\"./lib/json\"),\n alg: require(\"./lib/alg\"),\n version: lib.version\n};\n","var _ = require(\"../lodash\");\n\nmodule.exports = components;\n\nfunction components(g) {\n var visited = {};\n var cmpts = [];\n var cmpt;\n\n function dfs(v) {\n if (_.has(visited, v)) return;\n visited[v] = true;\n cmpt.push(v);\n _.each(g.successors(v), dfs);\n _.each(g.predecessors(v), dfs);\n }\n\n _.each(g.nodes(), function(v) {\n cmpt = [];\n dfs(v);\n if (cmpt.length) {\n cmpts.push(cmpt);\n }\n });\n\n return cmpts;\n}\n","var _ = require(\"../lodash\");\n\nmodule.exports = dfs;\n\n/*\n * A helper that preforms a pre- or post-order traversal on the input graph\n * and returns the nodes in the order they were visited. If the graph is\n * undirected then this algorithm will navigate using neighbors. If the graph\n * is directed then this algorithm will navigate using successors.\n *\n * Order must be one of \"pre\" or \"post\".\n */\nfunction dfs(g, vs, order) {\n if (!_.isArray(vs)) {\n vs = [vs];\n }\n\n var navigation = (g.isDirected() ? g.successors : g.neighbors).bind(g);\n\n var acc = [];\n var visited = {};\n _.each(vs, function(v) {\n if (!g.hasNode(v)) {\n throw new Error(\"Graph does not have node: \" + v);\n }\n\n doDfs(g, v, order === \"post\", visited, navigation, acc);\n });\n return acc;\n}\n\nfunction doDfs(g, v, postorder, visited, navigation, acc) {\n if (!_.has(visited, v)) {\n visited[v] = true;\n\n if (!postorder) { acc.push(v); }\n _.each(navigation(v), function(w) {\n doDfs(g, w, postorder, visited, navigation, acc);\n });\n if (postorder) { acc.push(v); }\n }\n}\n","var dijkstra = require(\"./dijkstra\");\nvar _ = require(\"../lodash\");\n\nmodule.exports = dijkstraAll;\n\nfunction dijkstraAll(g, weightFunc, edgeFunc) {\n return _.transform(g.nodes(), function(acc, v) {\n acc[v] = dijkstra(g, v, weightFunc, edgeFunc);\n }, {});\n}\n","var _ = require(\"../lodash\");\nvar PriorityQueue = require(\"../data/priority-queue\");\n\nmodule.exports = dijkstra;\n\nvar DEFAULT_WEIGHT_FUNC = _.constant(1);\n\nfunction dijkstra(g, source, weightFn, edgeFn) {\n return runDijkstra(g, String(source),\n weightFn || DEFAULT_WEIGHT_FUNC,\n edgeFn || function(v) { return g.outEdges(v); });\n}\n\nfunction runDijkstra(g, source, weightFn, edgeFn) {\n var results = {};\n var pq = new PriorityQueue();\n var v, vEntry;\n\n var updateNeighbors = function(edge) {\n var w = edge.v !== v ? edge.v : edge.w;\n var wEntry = results[w];\n var weight = weightFn(edge);\n var distance = vEntry.distance + weight;\n\n if (weight < 0) {\n throw new Error(\"dijkstra does not allow negative edge weights. \" +\n \"Bad edge: \" + edge + \" Weight: \" + weight);\n }\n\n if (distance < wEntry.distance) {\n wEntry.distance = distance;\n wEntry.predecessor = v;\n pq.decrease(w, distance);\n }\n };\n\n g.nodes().forEach(function(v) {\n var distance = v === source ? 0 : Number.POSITIVE_INFINITY;\n results[v] = { distance: distance };\n pq.add(v, distance);\n });\n\n while (pq.size() > 0) {\n v = pq.removeMin();\n vEntry = results[v];\n if (vEntry.distance === Number.POSITIVE_INFINITY) {\n break;\n }\n\n edgeFn(v).forEach(updateNeighbors);\n }\n\n return results;\n}\n","var _ = require(\"../lodash\");\nvar tarjan = require(\"./tarjan\");\n\nmodule.exports = findCycles;\n\nfunction findCycles(g) {\n return _.filter(tarjan(g), function(cmpt) {\n return cmpt.length > 1 || (cmpt.length === 1 && g.hasEdge(cmpt[0], cmpt[0]));\n });\n}\n","var _ = require(\"../lodash\");\n\nmodule.exports = floydWarshall;\n\nvar DEFAULT_WEIGHT_FUNC = _.constant(1);\n\nfunction floydWarshall(g, weightFn, edgeFn) {\n return runFloydWarshall(g,\n weightFn || DEFAULT_WEIGHT_FUNC,\n edgeFn || function(v) { return g.outEdges(v); });\n}\n\nfunction runFloydWarshall(g, weightFn, edgeFn) {\n var results = {};\n var nodes = g.nodes();\n\n nodes.forEach(function(v) {\n results[v] = {};\n results[v][v] = { distance: 0 };\n nodes.forEach(function(w) {\n if (v !== w) {\n results[v][w] = { distance: Number.POSITIVE_INFINITY };\n }\n });\n edgeFn(v).forEach(function(edge) {\n var w = edge.v === v ? edge.w : edge.v;\n var d = weightFn(edge);\n results[v][w] = { distance: d, predecessor: v };\n });\n });\n\n nodes.forEach(function(k) {\n var rowK = results[k];\n nodes.forEach(function(i) {\n var rowI = results[i];\n nodes.forEach(function(j) {\n var ik = rowI[k];\n var kj = rowK[j];\n var ij = rowI[j];\n var altDistance = ik.distance + kj.distance;\n if (altDistance < ij.distance) {\n ij.distance = altDistance;\n ij.predecessor = kj.predecessor;\n }\n });\n });\n });\n\n return results;\n}\n","module.exports = {\n components: require(\"./components\"),\n dijkstra: require(\"./dijkstra\"),\n dijkstraAll: require(\"./dijkstra-all\"),\n findCycles: require(\"./find-cycles\"),\n floydWarshall: require(\"./floyd-warshall\"),\n isAcyclic: require(\"./is-acyclic\"),\n postorder: require(\"./postorder\"),\n preorder: require(\"./preorder\"),\n prim: require(\"./prim\"),\n tarjan: require(\"./tarjan\"),\n topsort: require(\"./topsort\")\n};\n","var topsort = require(\"./topsort\");\n\nmodule.exports = isAcyclic;\n\nfunction isAcyclic(g) {\n try {\n topsort(g);\n } catch (e) {\n if (e instanceof topsort.CycleException) {\n return false;\n }\n throw e;\n }\n return true;\n}\n","var dfs = require(\"./dfs\");\n\nmodule.exports = postorder;\n\nfunction postorder(g, vs) {\n return dfs(g, vs, \"post\");\n}\n","var dfs = require(\"./dfs\");\n\nmodule.exports = preorder;\n\nfunction preorder(g, vs) {\n return dfs(g, vs, \"pre\");\n}\n","var _ = require(\"../lodash\");\nvar Graph = require(\"../graph\");\nvar PriorityQueue = require(\"../data/priority-queue\");\n\nmodule.exports = prim;\n\nfunction prim(g, weightFunc) {\n var result = new Graph();\n var parents = {};\n var pq = new PriorityQueue();\n var v;\n\n function updateNeighbors(edge) {\n var w = edge.v === v ? edge.w : edge.v;\n var pri = pq.priority(w);\n if (pri !== undefined) {\n var edgeWeight = weightFunc(edge);\n if (edgeWeight < pri) {\n parents[w] = v;\n pq.decrease(w, edgeWeight);\n }\n }\n }\n\n if (g.nodeCount() === 0) {\n return result;\n }\n\n _.each(g.nodes(), function(v) {\n pq.add(v, Number.POSITIVE_INFINITY);\n result.setNode(v);\n });\n\n // Start from an arbitrary node\n pq.decrease(g.nodes()[0], 0);\n\n var init = false;\n while (pq.size() > 0) {\n v = pq.removeMin();\n if (_.has(parents, v)) {\n result.setEdge(v, parents[v]);\n } else if (init) {\n throw new Error(\"Input graph is not connected: \" + g);\n } else {\n init = true;\n }\n\n g.nodeEdges(v).forEach(updateNeighbors);\n }\n\n return result;\n}\n","var _ = require(\"../lodash\");\n\nmodule.exports = tarjan;\n\nfunction tarjan(g) {\n var index = 0;\n var stack = [];\n var visited = {}; // node id -> { onStack, lowlink, index }\n var results = [];\n\n function dfs(v) {\n var entry = visited[v] = {\n onStack: true,\n lowlink: index,\n index: index++\n };\n stack.push(v);\n\n g.successors(v).forEach(function(w) {\n if (!_.has(visited, w)) {\n dfs(w);\n entry.lowlink = Math.min(entry.lowlink, visited[w].lowlink);\n } else if (visited[w].onStack) {\n entry.lowlink = Math.min(entry.lowlink, visited[w].index);\n }\n });\n\n if (entry.lowlink === entry.index) {\n var cmpt = [];\n var w;\n do {\n w = stack.pop();\n visited[w].onStack = false;\n cmpt.push(w);\n } while (v !== w);\n results.push(cmpt);\n }\n }\n\n g.nodes().forEach(function(v) {\n if (!_.has(visited, v)) {\n dfs(v);\n }\n });\n\n return results;\n}\n","var _ = require(\"../lodash\");\n\nmodule.exports = topsort;\ntopsort.CycleException = CycleException;\n\nfunction topsort(g) {\n var visited = {};\n var stack = {};\n var results = [];\n\n function visit(node) {\n if (_.has(stack, node)) {\n throw new CycleException();\n }\n\n if (!_.has(visited, node)) {\n stack[node] = true;\n visited[node] = true;\n _.each(g.predecessors(node), visit);\n delete stack[node];\n results.push(node);\n }\n }\n\n _.each(g.sinks(), visit);\n\n if (_.size(visited) !== g.nodeCount()) {\n throw new CycleException();\n }\n\n return results;\n}\n\nfunction CycleException() {}\nCycleException.prototype = new Error(); // must be an instance of Error to pass testing","var _ = require(\"../lodash\");\n\nmodule.exports = PriorityQueue;\n\n/**\n * A min-priority queue data structure. This algorithm is derived from Cormen,\n * et al., \"Introduction to Algorithms\". The basic idea of a min-priority\n * queue is that you can efficiently (in O(1) time) get the smallest key in\n * the queue. Adding and removing elements takes O(log n) time. A key can\n * have its priority decreased in O(log n) time.\n */\nfunction PriorityQueue() {\n this._arr = [];\n this._keyIndices = {};\n}\n\n/**\n * Returns the number of elements in the queue. Takes `O(1)` time.\n */\nPriorityQueue.prototype.size = function() {\n return this._arr.length;\n};\n\n/**\n * Returns the keys that are in the queue. Takes `O(n)` time.\n */\nPriorityQueue.prototype.keys = function() {\n return this._arr.map(function(x) { return x.key; });\n};\n\n/**\n * Returns `true` if **key** is in the queue and `false` if not.\n */\nPriorityQueue.prototype.has = function(key) {\n return _.has(this._keyIndices, key);\n};\n\n/**\n * Returns the priority for **key**. If **key** is not present in the queue\n * then this function returns `undefined`. Takes `O(1)` time.\n *\n * @param {Object} key\n */\nPriorityQueue.prototype.priority = function(key) {\n var index = this._keyIndices[key];\n if (index !== undefined) {\n return this._arr[index].priority;\n }\n};\n\n/**\n * Returns the key for the minimum element in this queue. If the queue is\n * empty this function throws an Error. Takes `O(1)` time.\n */\nPriorityQueue.prototype.min = function() {\n if (this.size() === 0) {\n throw new Error(\"Queue underflow\");\n }\n return this._arr[0].key;\n};\n\n/**\n * Inserts a new key into the priority queue. If the key already exists in\n * the queue this function returns `false`; otherwise it will return `true`.\n * Takes `O(n)` time.\n *\n * @param {Object} key the key to add\n * @param {Number} priority the initial priority for the key\n */\nPriorityQueue.prototype.add = function(key, priority) {\n var keyIndices = this._keyIndices;\n key = String(key);\n if (!_.has(keyIndices, key)) {\n var arr = this._arr;\n var index = arr.length;\n keyIndices[key] = index;\n arr.push({key: key, priority: priority});\n this._decrease(index);\n return true;\n }\n return false;\n};\n\n/**\n * Removes and returns the smallest key in the queue. Takes `O(log n)` time.\n */\nPriorityQueue.prototype.removeMin = function() {\n this._swap(0, this._arr.length - 1);\n var min = this._arr.pop();\n delete this._keyIndices[min.key];\n this._heapify(0);\n return min.key;\n};\n\n/**\n * Decreases the priority for **key** to **priority**. If the new priority is\n * greater than the previous priority, this function will throw an Error.\n *\n * @param {Object} key the key for which to raise priority\n * @param {Number} priority the new priority for the key\n */\nPriorityQueue.prototype.decrease = function(key, priority) {\n var index = this._keyIndices[key];\n if (priority > this._arr[index].priority) {\n throw new Error(\"New priority is greater than current priority. \" +\n \"Key: \" + key + \" Old: \" + this._arr[index].priority + \" New: \" + priority);\n }\n this._arr[index].priority = priority;\n this._decrease(index);\n};\n\nPriorityQueue.prototype._heapify = function(i) {\n var arr = this._arr;\n var l = 2 * i;\n var r = l + 1;\n var largest = i;\n if (l < arr.length) {\n largest = arr[l].priority < arr[largest].priority ? l : largest;\n if (r < arr.length) {\n largest = arr[r].priority < arr[largest].priority ? r : largest;\n }\n if (largest !== i) {\n this._swap(i, largest);\n this._heapify(largest);\n }\n }\n};\n\nPriorityQueue.prototype._decrease = function(index) {\n var arr = this._arr;\n var priority = arr[index].priority;\n var parent;\n while (index !== 0) {\n parent = index >> 1;\n if (arr[parent].priority < priority) {\n break;\n }\n this._swap(index, parent);\n index = parent;\n }\n};\n\nPriorityQueue.prototype._swap = function(i, j) {\n var arr = this._arr;\n var keyIndices = this._keyIndices;\n var origArrI = arr[i];\n var origArrJ = arr[j];\n arr[i] = origArrJ;\n arr[j] = origArrI;\n keyIndices[origArrJ.key] = i;\n keyIndices[origArrI.key] = j;\n};\n","\"use strict\";\n\nvar _ = require(\"./lodash\");\n\nmodule.exports = Graph;\n\nvar DEFAULT_EDGE_NAME = \"\\x00\";\nvar GRAPH_NODE = \"\\x00\";\nvar EDGE_KEY_DELIM = \"\\x01\";\n\n// Implementation notes:\n//\n// * Node id query functions should return string ids for the nodes\n// * Edge id query functions should return an \"edgeObj\", edge object, that is\n// composed of enough information to uniquely identify an edge: {v, w, name}.\n// * Internally we use an \"edgeId\", a stringified form of the edgeObj, to\n// reference edges. This is because we need a performant way to look these\n// edges up and, object properties, which have string keys, are the closest\n// we're going to get to a performant hashtable in JavaScript.\n\nfunction Graph(opts) {\n this._isDirected = _.has(opts, \"directed\") ? opts.directed : true;\n this._isMultigraph = _.has(opts, \"multigraph\") ? opts.multigraph : false;\n this._isCompound = _.has(opts, \"compound\") ? opts.compound : false;\n\n // Label for the graph itself\n this._label = undefined;\n\n // Defaults to be set when creating a new node\n this._defaultNodeLabelFn = _.constant(undefined);\n\n // Defaults to be set when creating a new edge\n this._defaultEdgeLabelFn = _.constant(undefined);\n\n // v -> label\n this._nodes = {};\n\n if (this._isCompound) {\n // v -> parent\n this._parent = {};\n\n // v -> children\n this._children = {};\n this._children[GRAPH_NODE] = {};\n }\n\n // v -> edgeObj\n this._in = {};\n\n // u -> v -> Number\n this._preds = {};\n\n // v -> edgeObj\n this._out = {};\n\n // v -> w -> Number\n this._sucs = {};\n\n // e -> edgeObj\n this._edgeObjs = {};\n\n // e -> label\n this._edgeLabels = {};\n}\n\n/* Number of nodes in the graph. Should only be changed by the implementation. */\nGraph.prototype._nodeCount = 0;\n\n/* Number of edges in the graph. Should only be changed by the implementation. */\nGraph.prototype._edgeCount = 0;\n\n\n/* === Graph functions ========= */\n\nGraph.prototype.isDirected = function() {\n return this._isDirected;\n};\n\nGraph.prototype.isMultigraph = function() {\n return this._isMultigraph;\n};\n\nGraph.prototype.isCompound = function() {\n return this._isCompound;\n};\n\nGraph.prototype.setGraph = function(label) {\n this._label = label;\n return this;\n};\n\nGraph.prototype.graph = function() {\n return this._label;\n};\n\n\n/* === Node functions ========== */\n\nGraph.prototype.setDefaultNodeLabel = function(newDefault) {\n if (!_.isFunction(newDefault)) {\n newDefault = _.constant(newDefault);\n }\n this._defaultNodeLabelFn = newDefault;\n return this;\n};\n\nGraph.prototype.nodeCount = function() {\n return this._nodeCount;\n};\n\nGraph.prototype.nodes = function() {\n return _.keys(this._nodes);\n};\n\nGraph.prototype.sources = function() {\n var self = this;\n return _.filter(this.nodes(), function(v) {\n return _.isEmpty(self._in[v]);\n });\n};\n\nGraph.prototype.sinks = function() {\n var self = this;\n return _.filter(this.nodes(), function(v) {\n return _.isEmpty(self._out[v]);\n });\n};\n\nGraph.prototype.setNodes = function(vs, value) {\n var args = arguments;\n var self = this;\n _.each(vs, function(v) {\n if (args.length > 1) {\n self.setNode(v, value);\n } else {\n self.setNode(v);\n }\n });\n return this;\n};\n\nGraph.prototype.setNode = function(v, value) {\n if (_.has(this._nodes, v)) {\n if (arguments.length > 1) {\n this._nodes[v] = value;\n }\n return this;\n }\n\n this._nodes[v] = arguments.length > 1 ? value : this._defaultNodeLabelFn(v);\n if (this._isCompound) {\n this._parent[v] = GRAPH_NODE;\n this._children[v] = {};\n this._children[GRAPH_NODE][v] = true;\n }\n this._in[v] = {};\n this._preds[v] = {};\n this._out[v] = {};\n this._sucs[v] = {};\n ++this._nodeCount;\n return this;\n};\n\nGraph.prototype.node = function(v) {\n return this._nodes[v];\n};\n\nGraph.prototype.hasNode = function(v) {\n return _.has(this._nodes, v);\n};\n\nGraph.prototype.removeNode = function(v) {\n var self = this;\n if (_.has(this._nodes, v)) {\n var removeEdge = function(e) { self.removeEdge(self._edgeObjs[e]); };\n delete this._nodes[v];\n if (this._isCompound) {\n this._removeFromParentsChildList(v);\n delete this._parent[v];\n _.each(this.children(v), function(child) {\n self.setParent(child);\n });\n delete this._children[v];\n }\n _.each(_.keys(this._in[v]), removeEdge);\n delete this._in[v];\n delete this._preds[v];\n _.each(_.keys(this._out[v]), removeEdge);\n delete this._out[v];\n delete this._sucs[v];\n --this._nodeCount;\n }\n return this;\n};\n\nGraph.prototype.setParent = function(v, parent) {\n if (!this._isCompound) {\n throw new Error(\"Cannot set parent in a non-compound graph\");\n }\n\n if (_.isUndefined(parent)) {\n parent = GRAPH_NODE;\n } else {\n // Coerce parent to string\n parent += \"\";\n for (var ancestor = parent;\n !_.isUndefined(ancestor);\n ancestor = this.parent(ancestor)) {\n if (ancestor === v) {\n throw new Error(\"Setting \" + parent+ \" as parent of \" + v +\n \" would create a cycle\");\n }\n }\n\n this.setNode(parent);\n }\n\n this.setNode(v);\n this._removeFromParentsChildList(v);\n this._parent[v] = parent;\n this._children[parent][v] = true;\n return this;\n};\n\nGraph.prototype._removeFromParentsChildList = function(v) {\n delete this._children[this._parent[v]][v];\n};\n\nGraph.prototype.parent = function(v) {\n if (this._isCompound) {\n var parent = this._parent[v];\n if (parent !== GRAPH_NODE) {\n return parent;\n }\n }\n};\n\nGraph.prototype.children = function(v) {\n if (_.isUndefined(v)) {\n v = GRAPH_NODE;\n }\n\n if (this._isCompound) {\n var children = this._children[v];\n if (children) {\n return _.keys(children);\n }\n } else if (v === GRAPH_NODE) {\n return this.nodes();\n } else if (this.hasNode(v)) {\n return [];\n }\n};\n\nGraph.prototype.predecessors = function(v) {\n var predsV = this._preds[v];\n if (predsV) {\n return _.keys(predsV);\n }\n};\n\nGraph.prototype.successors = function(v) {\n var sucsV = this._sucs[v];\n if (sucsV) {\n return _.keys(sucsV);\n }\n};\n\nGraph.prototype.neighbors = function(v) {\n var preds = this.predecessors(v);\n if (preds) {\n return _.union(preds, this.successors(v));\n }\n};\n\nGraph.prototype.isLeaf = function (v) {\n var neighbors;\n if (this.isDirected()) {\n neighbors = this.successors(v);\n } else {\n neighbors = this.neighbors(v);\n }\n return neighbors.length === 0;\n};\n\nGraph.prototype.filterNodes = function(filter) {\n var copy = new this.constructor({\n directed: this._isDirected,\n multigraph: this._isMultigraph,\n compound: this._isCompound\n });\n\n copy.setGraph(this.graph());\n\n var self = this;\n _.each(this._nodes, function(value, v) {\n if (filter(v)) {\n copy.setNode(v, value);\n }\n });\n\n _.each(this._edgeObjs, function(e) {\n if (copy.hasNode(e.v) && copy.hasNode(e.w)) {\n copy.setEdge(e, self.edge(e));\n }\n });\n\n var parents = {};\n function findParent(v) {\n var parent = self.parent(v);\n if (parent === undefined || copy.hasNode(parent)) {\n parents[v] = parent;\n return parent;\n } else if (parent in parents) {\n return parents[parent];\n } else {\n return findParent(parent);\n }\n }\n\n if (this._isCompound) {\n _.each(copy.nodes(), function(v) {\n copy.setParent(v, findParent(v));\n });\n }\n\n return copy;\n};\n\n/* === Edge functions ========== */\n\nGraph.prototype.setDefaultEdgeLabel = function(newDefault) {\n if (!_.isFunction(newDefault)) {\n newDefault = _.constant(newDefault);\n }\n this._defaultEdgeLabelFn = newDefault;\n return this;\n};\n\nGraph.prototype.edgeCount = function() {\n return this._edgeCount;\n};\n\nGraph.prototype.edges = function() {\n return _.values(this._edgeObjs);\n};\n\nGraph.prototype.setPath = function(vs, value) {\n var self = this;\n var args = arguments;\n _.reduce(vs, function(v, w) {\n if (args.length > 1) {\n self.setEdge(v, w, value);\n } else {\n self.setEdge(v, w);\n }\n return w;\n });\n return this;\n};\n\n/*\n * setEdge(v, w, [value, [name]])\n * setEdge({ v, w, [name] }, [value])\n */\nGraph.prototype.setEdge = function() {\n var v, w, name, value;\n var valueSpecified = false;\n var arg0 = arguments[0];\n\n if (typeof arg0 === \"object\" && arg0 !== null && \"v\" in arg0) {\n v = arg0.v;\n w = arg0.w;\n name = arg0.name;\n if (arguments.length === 2) {\n value = arguments[1];\n valueSpecified = true;\n }\n } else {\n v = arg0;\n w = arguments[1];\n name = arguments[3];\n if (arguments.length > 2) {\n value = arguments[2];\n valueSpecified = true;\n }\n }\n\n v = \"\" + v;\n w = \"\" + w;\n if (!_.isUndefined(name)) {\n name = \"\" + name;\n }\n\n var e = edgeArgsToId(this._isDirected, v, w, name);\n if (_.has(this._edgeLabels, e)) {\n if (valueSpecified) {\n this._edgeLabels[e] = value;\n }\n return this;\n }\n\n if (!_.isUndefined(name) && !this._isMultigraph) {\n throw new Error(\"Cannot set a named edge when isMultigraph = false\");\n }\n\n // It didn't exist, so we need to create it.\n // First ensure the nodes exist.\n this.setNode(v);\n this.setNode(w);\n\n this._edgeLabels[e] = valueSpecified ? value : this._defaultEdgeLabelFn(v, w, name);\n\n var edgeObj = edgeArgsToObj(this._isDirected, v, w, name);\n // Ensure we add undirected edges in a consistent way.\n v = edgeObj.v;\n w = edgeObj.w;\n\n Object.freeze(edgeObj);\n this._edgeObjs[e] = edgeObj;\n incrementOrInitEntry(this._preds[w], v);\n incrementOrInitEntry(this._sucs[v], w);\n this._in[w][e] = edgeObj;\n this._out[v][e] = edgeObj;\n this._edgeCount++;\n return this;\n};\n\nGraph.prototype.edge = function(v, w, name) {\n var e = (arguments.length === 1\n ? edgeObjToId(this._isDirected, arguments[0])\n : edgeArgsToId(this._isDirected, v, w, name));\n return this._edgeLabels[e];\n};\n\nGraph.prototype.hasEdge = function(v, w, name) {\n var e = (arguments.length === 1\n ? edgeObjToId(this._isDirected, arguments[0])\n : edgeArgsToId(this._isDirected, v, w, name));\n return _.has(this._edgeLabels, e);\n};\n\nGraph.prototype.removeEdge = function(v, w, name) {\n var e = (arguments.length === 1\n ? edgeObjToId(this._isDirected, arguments[0])\n : edgeArgsToId(this._isDirected, v, w, name));\n var edge = this._edgeObjs[e];\n if (edge) {\n v = edge.v;\n w = edge.w;\n delete this._edgeLabels[e];\n delete this._edgeObjs[e];\n decrementOrRemoveEntry(this._preds[w], v);\n decrementOrRemoveEntry(this._sucs[v], w);\n delete this._in[w][e];\n delete this._out[v][e];\n this._edgeCount--;\n }\n return this;\n};\n\nGraph.prototype.inEdges = function(v, u) {\n var inV = this._in[v];\n if (inV) {\n var edges = _.values(inV);\n if (!u) {\n return edges;\n }\n return _.filter(edges, function(edge) { return edge.v === u; });\n }\n};\n\nGraph.prototype.outEdges = function(v, w) {\n var outV = this._out[v];\n if (outV) {\n var edges = _.values(outV);\n if (!w) {\n return edges;\n }\n return _.filter(edges, function(edge) { return edge.w === w; });\n }\n};\n\nGraph.prototype.nodeEdges = function(v, w) {\n var inEdges = this.inEdges(v, w);\n if (inEdges) {\n return inEdges.concat(this.outEdges(v, w));\n }\n};\n\nfunction incrementOrInitEntry(map, k) {\n if (map[k]) {\n map[k]++;\n } else {\n map[k] = 1;\n }\n}\n\nfunction decrementOrRemoveEntry(map, k) {\n if (!--map[k]) { delete map[k]; }\n}\n\nfunction edgeArgsToId(isDirected, v_, w_, name) {\n var v = \"\" + v_;\n var w = \"\" + w_;\n if (!isDirected && v > w) {\n var tmp = v;\n v = w;\n w = tmp;\n }\n return v + EDGE_KEY_DELIM + w + EDGE_KEY_DELIM +\n (_.isUndefined(name) ? DEFAULT_EDGE_NAME : name);\n}\n\nfunction edgeArgsToObj(isDirected, v_, w_, name) {\n var v = \"\" + v_;\n var w = \"\" + w_;\n if (!isDirected && v > w) {\n var tmp = v;\n v = w;\n w = tmp;\n }\n var edgeObj = { v: v, w: w };\n if (name) {\n edgeObj.name = name;\n }\n return edgeObj;\n}\n\nfunction edgeObjToId(isDirected, edgeObj) {\n return edgeArgsToId(isDirected, edgeObj.v, edgeObj.w, edgeObj.name);\n}\n","// Includes only the \"core\" of graphlib\nmodule.exports = {\n Graph: require(\"./graph\"),\n version: require(\"./version\")\n};\n","var _ = require(\"./lodash\");\nvar Graph = require(\"./graph\");\n\nmodule.exports = {\n write: write,\n read: read\n};\n\nfunction write(g) {\n var json = {\n options: {\n directed: g.isDirected(),\n multigraph: g.isMultigraph(),\n compound: g.isCompound()\n },\n nodes: writeNodes(g),\n edges: writeEdges(g)\n };\n if (!_.isUndefined(g.graph())) {\n json.value = _.clone(g.graph());\n }\n return json;\n}\n\nfunction writeNodes(g) {\n return _.map(g.nodes(), function(v) {\n var nodeValue = g.node(v);\n var parent = g.parent(v);\n var node = { v: v };\n if (!_.isUndefined(nodeValue)) {\n node.value = nodeValue;\n }\n if (!_.isUndefined(parent)) {\n node.parent = parent;\n }\n return node;\n });\n}\n\nfunction writeEdges(g) {\n return _.map(g.edges(), function(e) {\n var edgeValue = g.edge(e);\n var edge = { v: e.v, w: e.w };\n if (!_.isUndefined(e.name)) {\n edge.name = e.name;\n }\n if (!_.isUndefined(edgeValue)) {\n edge.value = edgeValue;\n }\n return edge;\n });\n}\n\nfunction read(json) {\n var g = new Graph(json.options).setGraph(json.value);\n _.each(json.nodes, function(entry) {\n g.setNode(entry.v, entry.value);\n if (entry.parent) {\n g.setParent(entry.v, entry.parent);\n }\n });\n _.each(json.edges, function(entry) {\n g.setEdge({ v: entry.v, w: entry.w, name: entry.name }, entry.value);\n });\n return g;\n}\n","/* global window */\n\nvar lodash;\n\nif (typeof require === \"function\") {\n try {\n lodash = {\n clone: require(\"lodash/clone\"),\n constant: require(\"lodash/constant\"),\n each: require(\"lodash/each\"),\n filter: require(\"lodash/filter\"),\n has: require(\"lodash/has\"),\n isArray: require(\"lodash/isArray\"),\n isEmpty: require(\"lodash/isEmpty\"),\n isFunction: require(\"lodash/isFunction\"),\n isUndefined: require(\"lodash/isUndefined\"),\n keys: require(\"lodash/keys\"),\n map: require(\"lodash/map\"),\n reduce: require(\"lodash/reduce\"),\n size: require(\"lodash/size\"),\n transform: require(\"lodash/transform\"),\n union: require(\"lodash/union\"),\n values: require(\"lodash/values\")\n };\n } catch (e) {\n // continue regardless of error\n }\n}\n\nif (!lodash) {\n lodash = window._;\n}\n\nmodule.exports = lodash;\n","module.exports = '2.1.8';\n","\"use strict\";\n/* IMPORT */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar utils_1 = require(\"../utils\");\nvar types_1 = require(\"../types\");\nvar type_1 = require(\"./type\");\n/* CHANNELS */\nvar Channels = /** @class */ (function () {\n /* CONSTRUCTOR */\n function Channels(data, color) {\n this.color = color;\n this.changed = false;\n this.data = data; //TSC\n this.type = new type_1.default();\n }\n /* API */\n Channels.prototype.set = function (data, color) {\n this.color = color;\n this.changed = false;\n this.data = data; //TSC\n this.type.type = types_1.TYPE.ALL;\n return this;\n };\n /* HELPERS */\n Channels.prototype._ensureHSL = function () {\n if (this.data.h === undefined)\n this.data.h = utils_1.default.channel.rgb2hsl(this.data, 'h');\n if (this.data.s === undefined)\n this.data.s = utils_1.default.channel.rgb2hsl(this.data, 's');\n if (this.data.l === undefined)\n this.data.l = utils_1.default.channel.rgb2hsl(this.data, 'l');\n };\n Channels.prototype._ensureRGB = function () {\n if (this.data.r === undefined)\n this.data.r = utils_1.default.channel.hsl2rgb(this.data, 'r');\n if (this.data.g === undefined)\n this.data.g = utils_1.default.channel.hsl2rgb(this.data, 'g');\n if (this.data.b === undefined)\n this.data.b = utils_1.default.channel.hsl2rgb(this.data, 'b');\n };\n Object.defineProperty(Channels.prototype, \"r\", {\n /* GETTERS */\n get: function () {\n if (!this.type.is(types_1.TYPE.HSL) && this.data.r !== undefined)\n return this.data.r;\n this._ensureHSL();\n return utils_1.default.channel.hsl2rgb(this.data, 'r');\n },\n /* SETTERS */\n set: function (r) {\n this.type.set(types_1.TYPE.RGB);\n this.changed = true;\n this.data.r = r;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Channels.prototype, \"g\", {\n get: function () {\n if (!this.type.is(types_1.TYPE.HSL) && this.data.g !== undefined)\n return this.data.g;\n this._ensureHSL();\n return utils_1.default.channel.hsl2rgb(this.data, 'g');\n },\n set: function (g) {\n this.type.set(types_1.TYPE.RGB);\n this.changed = true;\n this.data.g = g;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Channels.prototype, \"b\", {\n get: function () {\n if (!this.type.is(types_1.TYPE.HSL) && this.data.b !== undefined)\n return this.data.b;\n this._ensureHSL();\n return utils_1.default.channel.hsl2rgb(this.data, 'b');\n },\n set: function (b) {\n this.type.set(types_1.TYPE.RGB);\n this.changed = true;\n this.data.b = b;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Channels.prototype, \"h\", {\n get: function () {\n if (!this.type.is(types_1.TYPE.RGB) && this.data.h !== undefined)\n return this.data.h;\n this._ensureRGB();\n return utils_1.default.channel.rgb2hsl(this.data, 'h');\n },\n set: function (h) {\n this.type.set(types_1.TYPE.HSL);\n this.changed = true;\n this.data.h = h;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Channels.prototype, \"s\", {\n get: function () {\n if (!this.type.is(types_1.TYPE.RGB) && this.data.s !== undefined)\n return this.data.s;\n this._ensureRGB();\n return utils_1.default.channel.rgb2hsl(this.data, 's');\n },\n set: function (s) {\n this.type.set(types_1.TYPE.HSL);\n this.changed = true;\n this.data.s = s;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Channels.prototype, \"l\", {\n get: function () {\n if (!this.type.is(types_1.TYPE.RGB) && this.data.l !== undefined)\n return this.data.l;\n this._ensureRGB();\n return utils_1.default.channel.rgb2hsl(this.data, 'l');\n },\n set: function (l) {\n this.type.set(types_1.TYPE.HSL);\n this.changed = true;\n this.data.l = l;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Channels.prototype, \"a\", {\n get: function () {\n return this.data.a;\n },\n set: function (a) {\n this.changed = true;\n this.data.a = a;\n },\n enumerable: true,\n configurable: true\n });\n return Channels;\n}());\n/* EXPORT */\nexports.default = Channels;\n","\"use strict\";\n/* IMPORT */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar _1 = require(\".\");\n/* REUSABLE */\nvar channels = new _1.default({ r: 0, g: 0, b: 0, a: 0 }, 'transparent');\n/* EXPORT */\nexports.default = channels;\n","\"use strict\";\n/* IMPORT */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar types_1 = require(\"../types\");\n/* TYPE */\nvar Type = /** @class */ (function () {\n function Type() {\n this.type = types_1.TYPE.ALL;\n }\n Type.prototype.get = function () {\n return this.type;\n };\n Type.prototype.set = function (type) {\n if (this.type && this.type !== type)\n throw new Error('Cannot change both RGB and HSL channels at the same time');\n this.type = type;\n };\n Type.prototype.reset = function () {\n this.type = types_1.TYPE.ALL;\n };\n Type.prototype.is = function (type) {\n return this.type === type;\n };\n return Type;\n}());\n/* EXPORT */\nexports.default = Type;\n","\"use strict\";\n/* IMPORT */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar utils_1 = require(\"../utils\");\nvar reusable_1 = require(\"../channels/reusable\");\nvar consts_1 = require(\"../consts\");\n/* HEX */\nvar Hex = {\n /* VARIABLES */\n re: /^#((?:[a-f0-9]{2}){2,4}|[a-f0-9]{3})$/i,\n /* API */\n parse: function (color) {\n if (color.charCodeAt(0) !== 35)\n return; // '#'\n var match = color.match(Hex.re);\n if (!match)\n return;\n var hex = match[1], dec = parseInt(hex, 16), length = hex.length, hasAlpha = length % 4 === 0, isFullLength = length > 4, multiplier = isFullLength ? 1 : 17, bits = isFullLength ? 8 : 4, bitsOffset = hasAlpha ? 0 : -1, mask = isFullLength ? 255 : 15;\n return reusable_1.default.set({\n r: ((dec >> (bits * (bitsOffset + 3))) & mask) * multiplier,\n g: ((dec >> (bits * (bitsOffset + 2))) & mask) * multiplier,\n b: ((dec >> (bits * (bitsOffset + 1))) & mask) * multiplier,\n a: hasAlpha ? (dec & mask) * multiplier / 255 : 1\n }, color);\n },\n stringify: function (channels) {\n if (channels.a < 1) { // #RRGGBBAA\n return \"#\" + consts_1.DEC2HEX[Math.round(channels.r)] + consts_1.DEC2HEX[Math.round(channels.g)] + consts_1.DEC2HEX[Math.round(channels.b)] + utils_1.default.unit.frac2hex(channels.a);\n }\n else { // #RRGGBB\n return \"#\" + consts_1.DEC2HEX[Math.round(channels.r)] + consts_1.DEC2HEX[Math.round(channels.g)] + consts_1.DEC2HEX[Math.round(channels.b)];\n }\n }\n};\n/* EXPORT */\nexports.default = Hex;\n","\"use strict\";\n/* IMPORT */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar utils_1 = require(\"../utils\");\nvar reusable_1 = require(\"../channels/reusable\");\n/* HSL */\nvar HSL = {\n /* VARIABLES */\n re: /^hsla?\\(\\s*?(-?(?:\\d+(?:\\.\\d+)?|(?:\\.\\d+))(?:e-?\\d+)?(?:deg|grad|rad|turn)?)\\s*?(?:,|\\s)\\s*?(-?(?:\\d+(?:\\.\\d+)?|(?:\\.\\d+))(?:e-?\\d+)?%)\\s*?(?:,|\\s)\\s*?(-?(?:\\d+(?:\\.\\d+)?|(?:\\.\\d+))(?:e-?\\d+)?%)(?:\\s*?(?:,|\\/)\\s*?\\+?(-?(?:\\d+(?:\\.\\d+)?|(?:\\.\\d+))(?:e-?\\d+)?(%)?))?\\s*?\\)$/i,\n hueRe: /^(.+?)(deg|grad|rad|turn)$/i,\n /* HELPERS */\n _hue2deg: function (hue) {\n var match = hue.match(HSL.hueRe);\n if (match) {\n var number = match[1], unit = match[2];\n switch (unit) {\n case 'grad': return utils_1.default.channel.clamp.h(parseFloat(number) * .9);\n case 'rad': return utils_1.default.channel.clamp.h(parseFloat(number) * 180 / Math.PI);\n case 'turn': return utils_1.default.channel.clamp.h(parseFloat(number) * 360);\n }\n }\n return utils_1.default.channel.clamp.h(parseFloat(hue));\n },\n /* API */\n parse: function (color) {\n var charCode = color.charCodeAt(0);\n if (charCode !== 104 && charCode !== 72)\n return; // 'h'/'H'\n var match = color.match(HSL.re);\n if (!match)\n return;\n var h = match[1], s = match[2], l = match[3], a = match[4], isAlphaPercentage = match[5];\n return reusable_1.default.set({\n h: HSL._hue2deg(h),\n s: utils_1.default.channel.clamp.s(parseFloat(s)),\n l: utils_1.default.channel.clamp.l(parseFloat(l)),\n a: a ? utils_1.default.channel.clamp.a(isAlphaPercentage ? parseFloat(a) / 100 : parseFloat(a)) : 1\n }, color);\n },\n stringify: function (channels) {\n if (channels.a < 1) { // HSLA\n return \"hsla(\" + utils_1.default.lang.round(channels.h) + \", \" + utils_1.default.lang.round(channels.s) + \"%, \" + utils_1.default.lang.round(channels.l) + \"%, \" + channels.a + \")\";\n }\n else { // HSL\n return \"hsl(\" + utils_1.default.lang.round(channels.h) + \", \" + utils_1.default.lang.round(channels.s) + \"%, \" + utils_1.default.lang.round(channels.l) + \"%)\";\n }\n }\n};\n/* EXPORT */\nexports.default = HSL;\n","\"use strict\";\n/* IMPORT */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar types_1 = require(\"../types\");\nvar hex_1 = require(\"./hex\");\nvar keyword_1 = require(\"./keyword\");\nvar rgb_1 = require(\"./rgb\");\nvar hsl_1 = require(\"./hsl\");\n/* COLOR */\nvar Color = {\n /* VARIABLES */\n format: {\n keyword: keyword_1.default,\n hex: hex_1.default,\n rgb: rgb_1.default,\n rgba: rgb_1.default,\n hsl: hsl_1.default,\n hsla: hsl_1.default\n },\n /* API */\n parse: function (color) {\n if (typeof color !== 'string')\n return color;\n var channels = hex_1.default.parse(color) || rgb_1.default.parse(color) || hsl_1.default.parse(color) || keyword_1.default.parse(color); // Color providers ordered with performance in mind\n if (channels)\n return channels;\n throw new Error(\"Unsupported color format: \\\"\" + color + \"\\\"\");\n },\n stringify: function (channels) {\n // SASS returns a keyword if possible, but we avoid doing that as it's slower and doesn't really add any value\n if (!channels.changed && channels.color)\n return channels.color;\n if (channels.type.is(types_1.TYPE.HSL) || channels.data.r === undefined) {\n return hsl_1.default.stringify(channels);\n }\n else if (channels.a < 1 || !Number.isInteger(channels.r) || !Number.isInteger(channels.g) || !Number.isInteger(channels.b)) {\n return rgb_1.default.stringify(channels);\n }\n else {\n return hex_1.default.stringify(channels);\n }\n }\n};\n/* EXPORT */\nexports.default = Color;\n","\"use strict\";\n/* IMPORT */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar hex_1 = require(\"./hex\");\n/* KEYWORD */\nvar Keyword = {\n /* VARIABLES */\n colors: {\n aliceblue: '#f0f8ff',\n antiquewhite: '#faebd7',\n aqua: '#00ffff',\n aquamarine: '#7fffd4',\n azure: '#f0ffff',\n beige: '#f5f5dc',\n bisque: '#ffe4c4',\n black: '#000000',\n blanchedalmond: '#ffebcd',\n blue: '#0000ff',\n blueviolet: '#8a2be2',\n brown: '#a52a2a',\n burlywood: '#deb887',\n cadetblue: '#5f9ea0',\n chartreuse: '#7fff00',\n chocolate: '#d2691e',\n coral: '#ff7f50',\n cornflowerblue: '#6495ed',\n cornsilk: '#fff8dc',\n crimson: '#dc143c',\n cyanaqua: '#00ffff',\n darkblue: '#00008b',\n darkcyan: '#008b8b',\n darkgoldenrod: '#b8860b',\n darkgray: '#a9a9a9',\n darkgreen: '#006400',\n darkgrey: '#a9a9a9',\n darkkhaki: '#bdb76b',\n darkmagenta: '#8b008b',\n darkolivegreen: '#556b2f',\n darkorange: '#ff8c00',\n darkorchid: '#9932cc',\n darkred: '#8b0000',\n darksalmon: '#e9967a',\n darkseagreen: '#8fbc8f',\n darkslateblue: '#483d8b',\n darkslategray: '#2f4f4f',\n darkslategrey: '#2f4f4f',\n darkturquoise: '#00ced1',\n darkviolet: '#9400d3',\n deeppink: '#ff1493',\n deepskyblue: '#00bfff',\n dimgray: '#696969',\n dimgrey: '#696969',\n dodgerblue: '#1e90ff',\n firebrick: '#b22222',\n floralwhite: '#fffaf0',\n forestgreen: '#228b22',\n fuchsia: '#ff00ff',\n gainsboro: '#dcdcdc',\n ghostwhite: '#f8f8ff',\n gold: '#ffd700',\n goldenrod: '#daa520',\n gray: '#808080',\n green: '#008000',\n greenyellow: '#adff2f',\n grey: '#808080',\n honeydew: '#f0fff0',\n hotpink: '#ff69b4',\n indianred: '#cd5c5c',\n indigo: '#4b0082',\n ivory: '#fffff0',\n khaki: '#f0e68c',\n lavender: '#e6e6fa',\n lavenderblush: '#fff0f5',\n lawngreen: '#7cfc00',\n lemonchiffon: '#fffacd',\n lightblue: '#add8e6',\n lightcoral: '#f08080',\n lightcyan: '#e0ffff',\n lightgoldenrodyellow: '#fafad2',\n lightgray: '#d3d3d3',\n lightgreen: '#90ee90',\n lightgrey: '#d3d3d3',\n lightpink: '#ffb6c1',\n lightsalmon: '#ffa07a',\n lightseagreen: '#20b2aa',\n lightskyblue: '#87cefa',\n lightslategray: '#778899',\n lightslategrey: '#778899',\n lightsteelblue: '#b0c4de',\n lightyellow: '#ffffe0',\n lime: '#00ff00',\n limegreen: '#32cd32',\n linen: '#faf0e6',\n magenta: '#ff00ff',\n maroon: '#800000',\n mediumaquamarine: '#66cdaa',\n mediumblue: '#0000cd',\n mediumorchid: '#ba55d3',\n mediumpurple: '#9370db',\n mediumseagreen: '#3cb371',\n mediumslateblue: '#7b68ee',\n mediumspringgreen: '#00fa9a',\n mediumturquoise: '#48d1cc',\n mediumvioletred: '#c71585',\n midnightblue: '#191970',\n mintcream: '#f5fffa',\n mistyrose: '#ffe4e1',\n moccasin: '#ffe4b5',\n navajowhite: '#ffdead',\n navy: '#000080',\n oldlace: '#fdf5e6',\n olive: '#808000',\n olivedrab: '#6b8e23',\n orange: '#ffa500',\n orangered: '#ff4500',\n orchid: '#da70d6',\n palegoldenrod: '#eee8aa',\n palegreen: '#98fb98',\n paleturquoise: '#afeeee',\n palevioletred: '#db7093',\n papayawhip: '#ffefd5',\n peachpuff: '#ffdab9',\n peru: '#cd853f',\n pink: '#ffc0cb',\n plum: '#dda0dd',\n powderblue: '#b0e0e6',\n purple: '#800080',\n rebeccapurple: '#663399',\n red: '#ff0000',\n rosybrown: '#bc8f8f',\n royalblue: '#4169e1',\n saddlebrown: '#8b4513',\n salmon: '#fa8072',\n sandybrown: '#f4a460',\n seagreen: '#2e8b57',\n seashell: '#fff5ee',\n sienna: '#a0522d',\n silver: '#c0c0c0',\n skyblue: '#87ceeb',\n slateblue: '#6a5acd',\n slategray: '#708090',\n slategrey: '#708090',\n snow: '#fffafa',\n springgreen: '#00ff7f',\n tan: '#d2b48c',\n teal: '#008080',\n thistle: '#d8bfd8',\n transparent: '#00000000',\n turquoise: '#40e0d0',\n violet: '#ee82ee',\n wheat: '#f5deb3',\n white: '#ffffff',\n whitesmoke: '#f5f5f5',\n yellow: '#ffff00',\n yellowgreen: '#9acd32'\n },\n /* API */\n parse: function (color) {\n color = color.toLowerCase();\n var hex = Keyword.colors[color];\n if (!hex)\n return;\n return hex_1.default.parse(hex);\n },\n stringify: function (channels) {\n var hex = hex_1.default.stringify(channels);\n for (var name_1 in Keyword.colors) {\n if (Keyword.colors[name_1] === hex)\n return name_1;\n }\n }\n};\n/* EXPORT */\nexports.default = Keyword;\n","\"use strict\";\n/* IMPORT */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar utils_1 = require(\"../utils\");\nvar reusable_1 = require(\"../channels/reusable\");\n/* RGB */\nvar RGB = {\n /* VARIABLES */\n re: /^rgba?\\(\\s*?(-?(?:\\d+(?:\\.\\d+)?|(?:\\.\\d+))(?:e\\d+)?(%?))\\s*?(?:,|\\s)\\s*?(-?(?:\\d+(?:\\.\\d+)?|(?:\\.\\d+))(?:e\\d+)?(%?))\\s*?(?:,|\\s)\\s*?(-?(?:\\d+(?:\\.\\d+)?|(?:\\.\\d+))(?:e\\d+)?(%?))(?:\\s*?(?:,|\\/)\\s*?\\+?(-?(?:\\d+(?:\\.\\d+)?|(?:\\.\\d+))(?:e\\d+)?(%?)))?\\s*?\\)$/i,\n /* API */\n parse: function (color) {\n var charCode = color.charCodeAt(0);\n if (charCode !== 114 && charCode !== 82)\n return; // 'r'/'R'\n var match = color.match(RGB.re);\n if (!match)\n return;\n var r = match[1], isRedPercentage = match[2], g = match[3], isGreenPercentage = match[4], b = match[5], isBluePercentage = match[6], a = match[7], isAlphaPercentage = match[8];\n return reusable_1.default.set({\n r: utils_1.default.channel.clamp.r(isRedPercentage ? parseFloat(r) * 2.55 : parseFloat(r)),\n g: utils_1.default.channel.clamp.g(isGreenPercentage ? parseFloat(g) * 2.55 : parseFloat(g)),\n b: utils_1.default.channel.clamp.b(isBluePercentage ? parseFloat(b) * 2.55 : parseFloat(b)),\n a: a ? utils_1.default.channel.clamp.a(isAlphaPercentage ? parseFloat(a) / 100 : parseFloat(a)) : 1\n }, color);\n },\n stringify: function (channels) {\n if (channels.a < 1) { // RGBA\n return \"rgba(\" + utils_1.default.lang.round(channels.r) + \", \" + utils_1.default.lang.round(channels.g) + \", \" + utils_1.default.lang.round(channels.b) + \", \" + utils_1.default.lang.round(channels.a) + \")\";\n }\n else { // RGB\n return \"rgb(\" + utils_1.default.lang.round(channels.r) + \", \" + utils_1.default.lang.round(channels.g) + \", \" + utils_1.default.lang.round(channels.b) + \")\";\n }\n }\n};\n/* EXPORT */\nexports.default = RGB;\n","\"use strict\";\n/* IMPORT */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar utils_1 = require(\"./utils\");\n/* CONSTS */\nvar DEC2HEX = {};\nexports.DEC2HEX = DEC2HEX;\nfor (var i = 0; i <= 255; i++)\n DEC2HEX[i] = utils_1.default.unit.dec2hex(i); // Populating dynamically, striking a balance between code size and performance\n","\"use strict\";\n/* EXPORT */\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__export(require(\"./methods\"));\n","\"use strict\";\n/* IMPORT */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar color_1 = require(\"../color\");\nvar change_1 = require(\"./change\");\n/* ADJUST */\nfunction adjust(color, channels) {\n var ch = color_1.default.parse(color), changes = {};\n for (var c in channels) {\n if (!channels[c])\n continue;\n changes[c] = ch[c] + channels[c];\n }\n return change_1.default(color, changes);\n}\n/* EXPORT */\nexports.default = adjust;\n","\"use strict\";\n/* IMPORT */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar utils_1 = require(\"../utils\");\nvar color_1 = require(\"../color\");\n/* ADJUST CHANNEL */\nfunction adjustChannel(color, channel, amount) {\n var channels = color_1.default.parse(color), amountCurrent = channels[channel], amountNext = utils_1.default.channel.clamp[channel](amountCurrent + amount);\n if (amountCurrent !== amountNext)\n channels[channel] = amountNext;\n return color_1.default.stringify(channels);\n}\n/* EXPORT */\nexports.default = adjustChannel;\n","\"use strict\";\n/* IMPORT */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar channel_1 = require(\"./channel\");\n/* ALPHA */\nfunction alpha(color) {\n return channel_1.default(color, 'a');\n}\n/* EXPORT */\nexports.default = alpha;\n","\"use strict\";\n/* IMPORT */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar channel_1 = require(\"./channel\");\n/* BLUE */\nfunction blue(color) {\n return channel_1.default(color, 'b');\n}\n/* EXPORT */\nexports.default = blue;\n","\"use strict\";\n/* IMPORT */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar utils_1 = require(\"../utils\");\nvar color_1 = require(\"../color\");\n/* CHANGE */\nfunction change(color, channels) {\n var ch = color_1.default.parse(color);\n for (var c in channels) {\n ch[c] = utils_1.default.channel.clamp[c](channels[c]);\n }\n return color_1.default.stringify(ch);\n}\n/* EXPORT */\nexports.default = change;\n","\"use strict\";\n/* IMPORT */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar utils_1 = require(\"../utils\");\nvar color_1 = require(\"../color\");\n/* CHANNEL */\nfunction channel(color, channel) {\n return utils_1.default.lang.round(color_1.default.parse(color)[channel]);\n}\n/* EXPORT */\nexports.default = channel;\n","\"use strict\";\n/* IMPORT */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar adjust_channel_1 = require(\"./adjust_channel\");\n/* COMPLEMENT */\nfunction complement(color) {\n return adjust_channel_1.default(color, 'h', 180);\n}\n/* EXPORT */\nexports.default = complement;\n","\"use strict\";\n/* IMPORT */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar adjust_channel_1 = require(\"./adjust_channel\");\n/* DARKEN */\nfunction darken(color, amount) {\n return adjust_channel_1.default(color, 'l', -amount);\n}\n/* EXPORT */\nexports.default = darken;\n","\"use strict\";\n/* IMPORT */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar adjust_channel_1 = require(\"./adjust_channel\");\n/* DESATURATE */\nfunction desaturate(color, amount) {\n return adjust_channel_1.default(color, 's', -amount);\n}\n/* EXPORT */\nexports.default = desaturate;\n","\"use strict\";\n/* IMPORT */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar change_1 = require(\"./change\");\n/* GRAYSCALE */\nfunction grayscale(color) {\n return change_1.default(color, { s: 0 });\n}\n/* EXPORT */\nexports.default = grayscale;\n","\"use strict\";\n/* IMPORT */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar channel_1 = require(\"./channel\");\n/* GREEN */\nfunction green(color) {\n return channel_1.default(color, 'g');\n}\n/* EXPORT */\nexports.default = green;\n","\"use strict\";\n/* IMPORT */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar utils_1 = require(\"../utils\");\nvar reusable_1 = require(\"../channels/reusable\");\nvar color_1 = require(\"../color\");\n/* HSLA */\nfunction hsla(h, s, l, a) {\n if (a === void 0) { a = 1; }\n var channels = reusable_1.default.set({\n h: utils_1.default.channel.clamp.h(h),\n s: utils_1.default.channel.clamp.s(s),\n l: utils_1.default.channel.clamp.l(l),\n a: utils_1.default.channel.clamp.a(a)\n });\n return color_1.default.stringify(channels);\n}\n/* EXPORT */\nexports.default = hsla;\n","\"use strict\";\n/* IMPORT */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar channel_1 = require(\"./channel\");\n/* HUE */\nfunction hue(color) {\n return channel_1.default(color, 'h');\n}\n/* EXPORT */\nexports.default = hue;\n","\"use strict\";\n/* IMPORT */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar rgba_1 = require(\"./rgba\"); // Alias\nexports.hex = rgba_1.default;\nvar rgba_2 = require(\"./rgba\"); // Alias\nexports.rgb = rgba_2.default;\nvar rgba_3 = require(\"./rgba\");\nexports.rgba = rgba_3.default;\nvar hsla_1 = require(\"./hsla\"); // Alias\nexports.hsl = hsla_1.default;\nvar hsla_2 = require(\"./hsla\");\nexports.hsla = hsla_2.default;\nvar channel_1 = require(\"./channel\");\nexports.channel = channel_1.default;\nvar red_1 = require(\"./red\");\nexports.red = red_1.default;\nvar green_1 = require(\"./green\");\nexports.green = green_1.default;\nvar blue_1 = require(\"./blue\");\nexports.blue = blue_1.default;\nvar hue_1 = require(\"./hue\");\nexports.hue = hue_1.default;\nvar saturation_1 = require(\"./saturation\");\nexports.saturation = saturation_1.default;\nvar lightness_1 = require(\"./lightness\");\nexports.lightness = lightness_1.default;\nvar alpha_1 = require(\"./alpha\");\nexports.alpha = alpha_1.default;\nvar alpha_2 = require(\"./alpha\"); // Alias\nexports.opacity = alpha_2.default;\nvar luminance_1 = require(\"./luminance\");\nexports.luminance = luminance_1.default;\nvar is_dark_1 = require(\"./is_dark\");\nexports.isDark = is_dark_1.default;\nvar is_light_1 = require(\"./is_light\");\nexports.isLight = is_light_1.default;\nvar is_valid_1 = require(\"./is_valid\");\nexports.isValid = is_valid_1.default;\nvar saturate_1 = require(\"./saturate\");\nexports.saturate = saturate_1.default;\nvar desaturate_1 = require(\"./desaturate\");\nexports.desaturate = desaturate_1.default;\nvar lighten_1 = require(\"./lighten\");\nexports.lighten = lighten_1.default;\nvar darken_1 = require(\"./darken\");\nexports.darken = darken_1.default;\nvar opacify_1 = require(\"./opacify\");\nexports.opacify = opacify_1.default;\nvar opacify_2 = require(\"./opacify\"); // Alias\nexports.fadeIn = opacify_2.default;\nvar transparentize_1 = require(\"./transparentize\");\nexports.transparentize = transparentize_1.default;\nvar transparentize_2 = require(\"./transparentize\"); // Alias\nexports.fadeOut = transparentize_2.default;\nvar complement_1 = require(\"./complement\");\nexports.complement = complement_1.default;\nvar grayscale_1 = require(\"./grayscale\");\nexports.grayscale = grayscale_1.default;\nvar adjust_1 = require(\"./adjust\");\nexports.adjust = adjust_1.default;\nvar change_1 = require(\"./change\");\nexports.change = change_1.default;\nvar invert_1 = require(\"./invert\");\nexports.invert = invert_1.default;\nvar mix_1 = require(\"./mix\");\nexports.mix = mix_1.default;\nvar scale_1 = require(\"./scale\");\nexports.scale = scale_1.default;\n","\"use strict\";\n/* IMPORT */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar color_1 = require(\"../color\");\nvar mix_1 = require(\"./mix\");\n/* INVERT */\nfunction invert(color, weight) {\n if (weight === void 0) { weight = 100; }\n var inverse = color_1.default.parse(color);\n inverse.r = 255 - inverse.r;\n inverse.g = 255 - inverse.g;\n inverse.b = 255 - inverse.b;\n return mix_1.default(inverse, color, weight);\n}\n/* EXPORT */\nexports.default = invert;\n","\"use strict\";\n/* IMPORT */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar is_light_1 = require(\"./is_light\");\n/* IS DARK */\nfunction isDark(color) {\n return !is_light_1.default(color);\n}\n/* EXPORT */\nexports.default = isDark;\n","\"use strict\";\n/* IMPORT */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar luminance_1 = require(\"./luminance\");\n/* IS LIGHT */\nfunction isLight(color) {\n return luminance_1.default(color) >= .5;\n}\n/* EXPORT */\nexports.default = isLight;\n","\"use strict\";\n/* IMPORT */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar color_1 = require(\"../color\");\n/* IS VALID */\nfunction isValid(color) {\n try {\n color_1.default.parse(color);\n return true;\n }\n catch (_a) {\n return false;\n }\n}\n/* EXPORT */\nexports.default = isValid;\n","\"use strict\";\n/* IMPORT */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar adjust_channel_1 = require(\"./adjust_channel\");\n/* LIGHTEN */\nfunction lighten(color, amount) {\n return adjust_channel_1.default(color, 'l', amount);\n}\n/* EXPORT */\nexports.default = lighten;\n","\"use strict\";\n/* IMPORT */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar channel_1 = require(\"./channel\");\n/* LIGHTNESS */\nfunction lightness(color) {\n return channel_1.default(color, 'l');\n}\n/* EXPORT */\nexports.default = lightness;\n","\"use strict\";\n/* IMPORT */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar utils_1 = require(\"../utils\");\nvar color_1 = require(\"../color\");\n/* LUMINANCE */\n//SOURCE: https://planetcalc.com/7779\nfunction luminance(color) {\n var _a = color_1.default.parse(color), r = _a.r, g = _a.g, b = _a.b, luminance = .2126 * utils_1.default.channel.toLinear(r) + .7152 * utils_1.default.channel.toLinear(g) + .0722 * utils_1.default.channel.toLinear(b);\n return utils_1.default.lang.round(luminance);\n}\n/* EXPORT */\nexports.default = luminance;\n","\"use strict\";\n/* IMPORT */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar color_1 = require(\"../color\");\nvar rgba_1 = require(\"./rgba\");\n/* MIX */\n//SOURCE: https://github.com/sass/dart-sass/blob/7457d2e9e7e623d9844ffd037a070cf32d39c348/lib/src/functions/color.dart#L718-L756\nfunction mix(color1, color2, weight) {\n if (weight === void 0) { weight = 50; }\n var _a = color_1.default.parse(color1), r1 = _a.r, g1 = _a.g, b1 = _a.b, a1 = _a.a, _b = color_1.default.parse(color2), r2 = _b.r, g2 = _b.g, b2 = _b.b, a2 = _b.a, weightScale = weight / 100, weightNormalized = (weightScale * 2) - 1, alphaDelta = a1 - a2, weight1combined = ((weightNormalized * alphaDelta) === -1) ? weightNormalized : (weightNormalized + alphaDelta) / (1 + weightNormalized * alphaDelta), weight1 = (weight1combined + 1) / 2, weight2 = 1 - weight1, r = (r1 * weight1) + (r2 * weight2), g = (g1 * weight1) + (g2 * weight2), b = (b1 * weight1) + (b2 * weight2), a = (a1 * weightScale) + (a2 * (1 - weightScale));\n return rgba_1.default(r, g, b, a);\n}\n/* EXPORT */\nexports.default = mix;\n","\"use strict\";\n/* IMPORT */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar adjust_channel_1 = require(\"./adjust_channel\");\n/* OPACIFY */\nfunction opacify(color, amount) {\n return adjust_channel_1.default(color, 'a', amount);\n}\n/* EXPORT */\nexports.default = opacify;\n","\"use strict\";\n/* IMPORT */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar channel_1 = require(\"./channel\");\n/* RED */\nfunction red(color) {\n return channel_1.default(color, 'r');\n}\n/* EXPORT */\nexports.default = red;\n","\"use strict\";\n/* IMPORT */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar utils_1 = require(\"../utils\");\nvar reusable_1 = require(\"../channels/reusable\");\nvar color_1 = require(\"../color\");\nvar change_1 = require(\"./change\");\nfunction rgba(r, g, b, a) {\n if (b === void 0) { b = 0; }\n if (a === void 0) { a = 1; }\n if (typeof r !== 'number')\n return change_1.default(r, { a: g });\n var channels = reusable_1.default.set({\n r: utils_1.default.channel.clamp.r(r),\n g: utils_1.default.channel.clamp.g(g),\n b: utils_1.default.channel.clamp.b(b),\n a: utils_1.default.channel.clamp.a(a)\n });\n return color_1.default.stringify(channels);\n}\n/* EXPORT */\nexports.default = rgba;\n","\"use strict\";\n/* IMPORT */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar adjust_channel_1 = require(\"./adjust_channel\");\n/* SATURATE */\nfunction saturate(color, amount) {\n return adjust_channel_1.default(color, 's', amount);\n}\n/* EXPORT */\nexports.default = saturate;\n","\"use strict\";\n/* IMPORT */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar channel_1 = require(\"./channel\");\n/* SATURATION */\nfunction saturation(color) {\n return channel_1.default(color, 's');\n}\n/* EXPORT */\nexports.default = saturation;\n","\"use strict\";\n/* IMPORT */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar utils_1 = require(\"../utils\");\nvar color_1 = require(\"../color\");\nvar adjust_1 = require(\"./adjust\");\n/* SCALE */\nfunction scale(color, channels) {\n var ch = color_1.default.parse(color), adjustments = {}, delta = function (amount, weight, max) { return weight > 0 ? (max - amount) * weight / 100 : amount * weight / 100; };\n for (var c in channels) {\n adjustments[c] = delta(ch[c], channels[c], utils_1.default.channel.max[c]);\n }\n return adjust_1.default(color, adjustments);\n}\n/* EXPORT */\nexports.default = scale;\n","\"use strict\";\n/* IMPORT */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar adjust_channel_1 = require(\"./adjust_channel\");\n/* TRANSPARENTIZE */\nfunction transparentize(color, amount) {\n return adjust_channel_1.default(color, 'a', -amount);\n}\n/* EXPORT */\nexports.default = transparentize;\n","\"use strict\";\n/* ENUMS */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar TYPE;\n(function (TYPE) {\n TYPE[TYPE[\"ALL\"] = 0] = \"ALL\";\n TYPE[TYPE[\"RGB\"] = 1] = \"RGB\";\n TYPE[TYPE[\"HSL\"] = 2] = \"HSL\";\n})(TYPE || (TYPE = {}));\nexports.TYPE = TYPE;\n;\n","\"use strict\";\n/* IMPORT */\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/* CHANNEL */\nvar Channel = {\n /* CLAMP */\n min: {\n r: 0,\n g: 0,\n b: 0,\n s: 0,\n l: 0,\n a: 0\n },\n max: {\n r: 255,\n g: 255,\n b: 255,\n h: 360,\n s: 100,\n l: 100,\n a: 1\n },\n clamp: {\n r: function (r) { return r >= 255 ? 255 : (r < 0 ? 0 : r); },\n g: function (g) { return g >= 255 ? 255 : (g < 0 ? 0 : g); },\n b: function (b) { return b >= 255 ? 255 : (b < 0 ? 0 : b); },\n h: function (h) { return h % 360; },\n s: function (s) { return s >= 100 ? 100 : (s < 0 ? 0 : s); },\n l: function (l) { return l >= 100 ? 100 : (l < 0 ? 0 : l); },\n a: function (a) { return a >= 1 ? 1 : (a < 0 ? 0 : a); }\n },\n /* CONVERSION */\n //SOURCE: https://planetcalc.com/7779\n toLinear: function (c) {\n var n = c / 255;\n return c > .03928 ? Math.pow(((n + .055) / 1.055), 2.4) : n / 12.92;\n },\n //SOURCE: https://gist.github.com/mjackson/5311256\n hue2rgb: function (p, q, t) {\n if (t < 0)\n t += 1;\n if (t > 1)\n t -= 1;\n if (t < 1 / 6)\n return p + (q - p) * 6 * t;\n if (t < 1 / 2)\n return q;\n if (t < 2 / 3)\n return p + (q - p) * (2 / 3 - t) * 6;\n return p;\n },\n hsl2rgb: function (_a, channel) {\n var h = _a.h, s = _a.s, l = _a.l;\n if (s === 100)\n return l * 2.55; // Achromatic\n h /= 360;\n s /= 100;\n l /= 100;\n var q = (l < .5) ? l * (1 + s) : (l + s) - (l * s), p = 2 * l - q;\n switch (channel) {\n case 'r': return Channel.hue2rgb(p, q, h + 1 / 3) * 255;\n case 'g': return Channel.hue2rgb(p, q, h) * 255;\n case 'b': return Channel.hue2rgb(p, q, h - 1 / 3) * 255;\n }\n },\n rgb2hsl: function (_a, channel) {\n var r = _a.r, g = _a.g, b = _a.b;\n r /= 255;\n g /= 255;\n b /= 255;\n var max = Math.max(r, g, b), min = Math.min(r, g, b), l = (max + min) / 2;\n if (channel === 'l')\n return l * 100;\n if (max === min)\n return 0; // Achromatic\n var d = max - min, s = (l > .5) ? d / (2 - max - min) : d / (max + min);\n if (channel === 's')\n return s * 100;\n switch (max) {\n case r: return ((g - b) / d + (g < b ? 6 : 0)) * 60;\n case g: return ((b - r) / d + 2) * 60;\n case b: return ((r - g) / d + 4) * 60;\n default: return -1; //TSC: TypeScript is stupid and complains if there isn't this useless default statement\n }\n }\n};\n/* EXPORT */\nexports.default = Channel;\n","\"use strict\";\n/* IMPORT */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar channel_1 = require(\"./channel\");\nvar lang_1 = require(\"./lang\");\nvar unit_1 = require(\"./unit\");\n/* UTILS */\nvar Utils = {\n channel: channel_1.default,\n lang: lang_1.default,\n unit: unit_1.default\n};\n/* EXPORT */\nexports.default = Utils;\n","\"use strict\";\n/* LANG */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Lang = {\n round: function (number) {\n return Math.round(number * 10000000000) / 10000000000;\n }\n};\n/* EXPORT */\nexports.default = Lang;\n","\"use strict\";\n/* UNIT */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Unit = {\n frac2hex: function (frac) {\n var hex = Math.round(frac * 255).toString(16);\n return hex.length > 1 ? hex : \"0\" + hex;\n },\n dec2hex: function (dec) {\n var hex = Math.round(dec).toString(16);\n return hex.length > 1 ? hex : \"0\" + hex;\n }\n};\n/* EXPORT */\nexports.default = Unit;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nmodule.exports = DataView;\n","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","var listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nmodule.exports = Promise;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n","var MapCache = require('./_MapCache'),\n setCacheAdd = require('./_setCacheAdd'),\n setCacheHas = require('./_setCacheHas');\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n","var ListCache = require('./_ListCache'),\n stackClear = require('./_stackClear'),\n stackDelete = require('./_stackDelete'),\n stackGet = require('./_stackGet'),\n stackHas = require('./_stackHas'),\n stackSet = require('./_stackSet');\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\n","/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\nmodule.exports = apply;\n","/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\nmodule.exports = arrayEach;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nmodule.exports = arrayFilter;\n","var baseIndexOf = require('./_baseIndexOf');\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\nmodule.exports = arrayIncludes;\n","/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arrayIncludesWith;\n","var baseTimes = require('./_baseTimes'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isIndex = require('./_isIndex'),\n isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = arrayLikeKeys;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nmodule.exports = arrayPush;\n","/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n}\n\nmodule.exports = arrayReduce;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arraySome;\n","var baseProperty = require('./_baseProperty');\n\n/**\n * Gets the size of an ASCII `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\nvar asciiSize = baseProperty('length');\n\nmodule.exports = asciiSize;\n","var baseAssignValue = require('./_baseAssignValue'),\n eq = require('./eq');\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignMergeValue;\n","var baseAssignValue = require('./_baseAssignValue'),\n eq = require('./eq');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignValue;\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n","var copyObject = require('./_copyObject'),\n keys = require('./keys');\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\nmodule.exports = baseAssign;\n","var copyObject = require('./_copyObject'),\n keysIn = require('./keysIn');\n\n/**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n}\n\nmodule.exports = baseAssignIn;\n","var defineProperty = require('./_defineProperty');\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nmodule.exports = baseAssignValue;\n","var Stack = require('./_Stack'),\n arrayEach = require('./_arrayEach'),\n assignValue = require('./_assignValue'),\n baseAssign = require('./_baseAssign'),\n baseAssignIn = require('./_baseAssignIn'),\n cloneBuffer = require('./_cloneBuffer'),\n copyArray = require('./_copyArray'),\n copySymbols = require('./_copySymbols'),\n copySymbolsIn = require('./_copySymbolsIn'),\n getAllKeys = require('./_getAllKeys'),\n getAllKeysIn = require('./_getAllKeysIn'),\n getTag = require('./_getTag'),\n initCloneArray = require('./_initCloneArray'),\n initCloneByTag = require('./_initCloneByTag'),\n initCloneObject = require('./_initCloneObject'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isMap = require('./isMap'),\n isObject = require('./isObject'),\n isSet = require('./isSet'),\n keys = require('./keys');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n}\n\nmodule.exports = baseClone;\n","var isObject = require('./isObject');\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\n\nmodule.exports = baseCreate;\n","var baseForOwn = require('./_baseForOwn'),\n createBaseEach = require('./_createBaseEach');\n\n/**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\nvar baseEach = createBaseEach(baseForOwn);\n\nmodule.exports = baseEach;\n","var isSymbol = require('./isSymbol');\n\n/**\n * The base implementation of methods like `_.max` and `_.min` which accepts a\n * `comparator` to determine the extremum value.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The iteratee invoked per iteration.\n * @param {Function} comparator The comparator used to compare values.\n * @returns {*} Returns the extremum value.\n */\nfunction baseExtremum(array, iteratee, comparator) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n var value = array[index],\n current = iteratee(value);\n\n if (current != null && (computed === undefined\n ? (current === current && !isSymbol(current))\n : comparator(current, computed)\n )) {\n var computed = current,\n result = value;\n }\n }\n return result;\n}\n\nmodule.exports = baseExtremum;\n","var baseEach = require('./_baseEach');\n\n/**\n * The base implementation of `_.filter` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction baseFilter(collection, predicate) {\n var result = [];\n baseEach(collection, function(value, index, collection) {\n if (predicate(value, index, collection)) {\n result.push(value);\n }\n });\n return result;\n}\n\nmodule.exports = baseFilter;\n","/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = baseFindIndex;\n","var arrayPush = require('./_arrayPush'),\n isFlattenable = require('./_isFlattenable');\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n\nmodule.exports = baseFlatten;\n","var createBaseFor = require('./_createBaseFor');\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nmodule.exports = baseFor;\n","var baseFor = require('./_baseFor'),\n keys = require('./keys');\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n}\n\nmodule.exports = baseForOwn;\n","var castPath = require('./_castPath'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nmodule.exports = baseGet;\n","var arrayPush = require('./_arrayPush'),\n isArray = require('./isArray');\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nmodule.exports = baseGetAllKeys;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","/**\n * The base implementation of `_.gt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n */\nfunction baseGt(value, other) {\n return value > other;\n}\n\nmodule.exports = baseGt;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHas(object, key) {\n return object != null && hasOwnProperty.call(object, key);\n}\n\nmodule.exports = baseHas;\n","/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\nmodule.exports = baseHasIn;\n","var baseFindIndex = require('./_baseFindIndex'),\n baseIsNaN = require('./_baseIsNaN'),\n strictIndexOf = require('./_strictIndexOf');\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\nmodule.exports = baseIndexOf;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","var baseIsEqualDeep = require('./_baseIsEqualDeep'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nmodule.exports = baseIsEqual;\n","var Stack = require('./_Stack'),\n equalArrays = require('./_equalArrays'),\n equalByTag = require('./_equalByTag'),\n equalObjects = require('./_equalObjects'),\n getTag = require('./_getTag'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isTypedArray = require('./isTypedArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nmodule.exports = baseIsEqualDeep;\n","var getTag = require('./_getTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]';\n\n/**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\nfunction baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n}\n\nmodule.exports = baseIsMap;\n","var Stack = require('./_Stack'),\n baseIsEqual = require('./_baseIsEqual');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\nmodule.exports = baseIsMatch;\n","/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\nmodule.exports = baseIsNaN;\n","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","var getTag = require('./_getTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar setTag = '[object Set]';\n\n/**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\nfunction baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n}\n\nmodule.exports = baseIsSet;\n","var baseGetTag = require('./_baseGetTag'),\n isLength = require('./isLength'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n","var baseMatches = require('./_baseMatches'),\n baseMatchesProperty = require('./_baseMatchesProperty'),\n identity = require('./identity'),\n isArray = require('./isArray'),\n property = require('./property');\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\nmodule.exports = baseIteratee;\n","var isPrototype = require('./_isPrototype'),\n nativeKeys = require('./_nativeKeys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeys;\n","var isObject = require('./isObject'),\n isPrototype = require('./_isPrototype'),\n nativeKeysIn = require('./_nativeKeysIn');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeysIn;\n","/**\n * The base implementation of `_.lt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n */\nfunction baseLt(value, other) {\n return value < other;\n}\n\nmodule.exports = baseLt;\n","var baseEach = require('./_baseEach'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n}\n\nmodule.exports = baseMap;\n","var baseIsMatch = require('./_baseIsMatch'),\n getMatchData = require('./_getMatchData'),\n matchesStrictComparable = require('./_matchesStrictComparable');\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\nmodule.exports = baseMatches;\n","var baseIsEqual = require('./_baseIsEqual'),\n get = require('./get'),\n hasIn = require('./hasIn'),\n isKey = require('./_isKey'),\n isStrictComparable = require('./_isStrictComparable'),\n matchesStrictComparable = require('./_matchesStrictComparable'),\n toKey = require('./_toKey');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n}\n\nmodule.exports = baseMatchesProperty;\n","var Stack = require('./_Stack'),\n assignMergeValue = require('./_assignMergeValue'),\n baseFor = require('./_baseFor'),\n baseMergeDeep = require('./_baseMergeDeep'),\n isObject = require('./isObject'),\n keysIn = require('./keysIn'),\n safeGet = require('./_safeGet');\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n}\n\nmodule.exports = baseMerge;\n","var assignMergeValue = require('./_assignMergeValue'),\n cloneBuffer = require('./_cloneBuffer'),\n cloneTypedArray = require('./_cloneTypedArray'),\n copyArray = require('./_copyArray'),\n initCloneObject = require('./_initCloneObject'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isArrayLikeObject = require('./isArrayLikeObject'),\n isBuffer = require('./isBuffer'),\n isFunction = require('./isFunction'),\n isObject = require('./isObject'),\n isPlainObject = require('./isPlainObject'),\n isTypedArray = require('./isTypedArray'),\n safeGet = require('./_safeGet'),\n toPlainObject = require('./toPlainObject');\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n}\n\nmodule.exports = baseMergeDeep;\n","var arrayMap = require('./_arrayMap'),\n baseIteratee = require('./_baseIteratee'),\n baseMap = require('./_baseMap'),\n baseSortBy = require('./_baseSortBy'),\n baseUnary = require('./_baseUnary'),\n compareMultiple = require('./_compareMultiple'),\n identity = require('./identity');\n\n/**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\nfunction baseOrderBy(collection, iteratees, orders) {\n var index = -1;\n iteratees = arrayMap(iteratees.length ? iteratees : [identity], baseUnary(baseIteratee));\n\n var result = baseMap(collection, function(value, key, collection) {\n var criteria = arrayMap(iteratees, function(iteratee) {\n return iteratee(value);\n });\n return { 'criteria': criteria, 'index': ++index, 'value': value };\n });\n\n return baseSortBy(result, function(object, other) {\n return compareMultiple(object, other, orders);\n });\n}\n\nmodule.exports = baseOrderBy;\n","var basePickBy = require('./_basePickBy'),\n hasIn = require('./hasIn');\n\n/**\n * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @returns {Object} Returns the new object.\n */\nfunction basePick(object, paths) {\n return basePickBy(object, paths, function(value, path) {\n return hasIn(object, path);\n });\n}\n\nmodule.exports = basePick;\n","var baseGet = require('./_baseGet'),\n baseSet = require('./_baseSet'),\n castPath = require('./_castPath');\n\n/**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\nfunction basePickBy(object, paths, predicate) {\n var index = -1,\n length = paths.length,\n result = {};\n\n while (++index < length) {\n var path = paths[index],\n value = baseGet(object, path);\n\n if (predicate(value, path)) {\n baseSet(result, castPath(path, object), value);\n }\n }\n return result;\n}\n\nmodule.exports = basePickBy;\n","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\nmodule.exports = baseProperty;\n","var baseGet = require('./_baseGet');\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\nmodule.exports = basePropertyDeep;\n","/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeCeil = Math.ceil,\n nativeMax = Math.max;\n\n/**\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\n * coerce arguments.\n *\n * @private\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @param {number} step The value to increment or decrement by.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the range of numbers.\n */\nfunction baseRange(start, end, step, fromRight) {\n var index = -1,\n length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n result = Array(length);\n\n while (length--) {\n result[fromRight ? length : ++index] = start;\n start += step;\n }\n return result;\n}\n\nmodule.exports = baseRange;\n","/**\n * The base implementation of `_.reduce` and `_.reduceRight`, without support\n * for iteratee shorthands, which iterates over `collection` using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} accumulator The initial value.\n * @param {boolean} initAccum Specify using the first or last element of\n * `collection` as the initial value.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the accumulated value.\n */\nfunction baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {\n eachFunc(collection, function(value, index, collection) {\n accumulator = initAccum\n ? (initAccum = false, value)\n : iteratee(accumulator, value, index, collection);\n });\n return accumulator;\n}\n\nmodule.exports = baseReduce;\n","var identity = require('./identity'),\n overRest = require('./_overRest'),\n setToString = require('./_setToString');\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\nmodule.exports = baseRest;\n","var assignValue = require('./_assignValue'),\n castPath = require('./_castPath'),\n isIndex = require('./_isIndex'),\n isObject = require('./isObject'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\nfunction baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n}\n\nmodule.exports = baseSet;\n","var constant = require('./constant'),\n defineProperty = require('./_defineProperty'),\n identity = require('./identity');\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\nmodule.exports = baseSetToString;\n","/**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\nfunction baseSortBy(array, comparer) {\n var length = array.length;\n\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n}\n\nmodule.exports = baseSortBy;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nmodule.exports = baseTimes;\n","var Symbol = require('./_Symbol'),\n arrayMap = require('./_arrayMap'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n","var SetCache = require('./_SetCache'),\n arrayIncludes = require('./_arrayIncludes'),\n arrayIncludesWith = require('./_arrayIncludesWith'),\n cacheHas = require('./_cacheHas'),\n createSet = require('./_createSet'),\n setToArray = require('./_setToArray');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\nfunction baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n}\n\nmodule.exports = baseUniq;\n","var arrayMap = require('./_arrayMap');\n\n/**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\nfunction baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n}\n\nmodule.exports = baseValues;\n","/**\n * This base implementation of `_.zipObject` which assigns values using `assignFunc`.\n *\n * @private\n * @param {Array} props The property identifiers.\n * @param {Array} values The property values.\n * @param {Function} assignFunc The function to assign values.\n * @returns {Object} Returns the new object.\n */\nfunction baseZipObject(props, values, assignFunc) {\n var index = -1,\n length = props.length,\n valsLength = values.length,\n result = {};\n\n while (++index < length) {\n var value = index < valsLength ? values[index] : undefined;\n assignFunc(result, props[index], value);\n }\n return result;\n}\n\nmodule.exports = baseZipObject;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nmodule.exports = cacheHas;\n","var identity = require('./identity');\n\n/**\n * Casts `value` to `identity` if it's not a function.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Function} Returns cast function.\n */\nfunction castFunction(value) {\n return typeof value == 'function' ? value : identity;\n}\n\nmodule.exports = castFunction;\n","var isArray = require('./isArray'),\n isKey = require('./_isKey'),\n stringToPath = require('./_stringToPath'),\n toString = require('./toString');\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nmodule.exports = castPath;\n","var Uint8Array = require('./_Uint8Array');\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\nmodule.exports = cloneArrayBuffer;\n","var root = require('./_root');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\nmodule.exports = cloneBuffer;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\nmodule.exports = cloneDataView;\n","/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\nmodule.exports = cloneRegExp;\n","var Symbol = require('./_Symbol');\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\nmodule.exports = cloneSymbol;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nmodule.exports = cloneTypedArray;\n","var isSymbol = require('./isSymbol');\n\n/**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\nfunction compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = isSymbol(value);\n\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n (valIsNull && othIsDefined && othIsReflexive) ||\n (!valIsDefined && othIsReflexive) ||\n !valIsReflexive) {\n return 1;\n }\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n (othIsNull && valIsDefined && valIsReflexive) ||\n (!othIsDefined && valIsReflexive) ||\n !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n}\n\nmodule.exports = compareAscending;\n","var compareAscending = require('./_compareAscending');\n\n/**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\nfunction compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n\n while (++index < length) {\n var result = compareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n}\n\nmodule.exports = compareMultiple;\n","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nmodule.exports = copyArray;\n","var assignValue = require('./_assignValue'),\n baseAssignValue = require('./_baseAssignValue');\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\nmodule.exports = copyObject;\n","var copyObject = require('./_copyObject'),\n getSymbols = require('./_getSymbols');\n\n/**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\n\nmodule.exports = copySymbols;\n","var copyObject = require('./_copyObject'),\n getSymbolsIn = require('./_getSymbolsIn');\n\n/**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n}\n\nmodule.exports = copySymbolsIn;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","var baseRest = require('./_baseRest'),\n isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\nmodule.exports = createAssigner;\n","var isArrayLike = require('./isArrayLike');\n\n/**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n}\n\nmodule.exports = createBaseEach;\n","/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nmodule.exports = createBaseFor;\n","var baseIteratee = require('./_baseIteratee'),\n isArrayLike = require('./isArrayLike'),\n keys = require('./keys');\n\n/**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\nfunction createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = baseIteratee(predicate, 3);\n collection = keys(collection);\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n}\n\nmodule.exports = createFind;\n","var baseRange = require('./_baseRange'),\n isIterateeCall = require('./_isIterateeCall'),\n toFinite = require('./toFinite');\n\n/**\n * Creates a `_.range` or `_.rangeRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new range function.\n */\nfunction createRange(fromRight) {\n return function(start, end, step) {\n if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n end = step = undefined;\n }\n // Ensure the sign of `-0` is preserved.\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n return baseRange(start, end, step, fromRight);\n };\n}\n\nmodule.exports = createRange;\n","var Set = require('./_Set'),\n noop = require('./noop'),\n setToArray = require('./_setToArray');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\nvar createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n};\n\nmodule.exports = createSet;\n","var getNative = require('./_getNative');\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n","var SetCache = require('./_SetCache'),\n arraySome = require('./_arraySome'),\n cacheHas = require('./_cacheHas');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalArrays;\n","var Symbol = require('./_Symbol'),\n Uint8Array = require('./_Uint8Array'),\n eq = require('./eq'),\n equalArrays = require('./_equalArrays'),\n mapToArray = require('./_mapToArray'),\n setToArray = require('./_setToArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nmodule.exports = equalByTag;\n","var getAllKeys = require('./_getAllKeys');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalObjects;\n","var flatten = require('./flatten'),\n overRest = require('./_overRest'),\n setToString = require('./_setToString');\n\n/**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\nfunction flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n}\n\nmodule.exports = flatRest;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbols = require('./_getSymbols'),\n keys = require('./keys');\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nmodule.exports = getAllKeys;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbolsIn = require('./_getSymbolsIn'),\n keysIn = require('./keysIn');\n\n/**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n}\n\nmodule.exports = getAllKeysIn;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n","var isStrictComparable = require('./_isStrictComparable'),\n keys = require('./keys');\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n}\n\nmodule.exports = getMatchData;\n","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var overArg = require('./_overArg');\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nmodule.exports = getPrototype;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","var arrayFilter = require('./_arrayFilter'),\n stubArray = require('./stubArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nmodule.exports = getSymbols;\n","var arrayPush = require('./_arrayPush'),\n getPrototype = require('./_getPrototype'),\n getSymbols = require('./_getSymbols'),\n stubArray = require('./stubArray');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n};\n\nmodule.exports = getSymbolsIn;\n","var DataView = require('./_DataView'),\n Map = require('./_Map'),\n Promise = require('./_Promise'),\n Set = require('./_Set'),\n WeakMap = require('./_WeakMap'),\n baseGetTag = require('./_baseGetTag'),\n toSource = require('./_toSource');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nmodule.exports = getTag;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","var castPath = require('./_castPath'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isIndex = require('./_isIndex'),\n isLength = require('./isLength'),\n toKey = require('./_toKey');\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n}\n\nmodule.exports = hasPath;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsZWJ = '\\\\u200d';\n\n/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\nvar reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n/**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\nfunction hasUnicode(string) {\n return reHasUnicode.test(string);\n}\n\nmodule.exports = hasUnicode;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\n\nmodule.exports = initCloneArray;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer'),\n cloneDataView = require('./_cloneDataView'),\n cloneRegExp = require('./_cloneRegExp'),\n cloneSymbol = require('./_cloneSymbol'),\n cloneTypedArray = require('./_cloneTypedArray');\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n}\n\nmodule.exports = initCloneByTag;\n","var baseCreate = require('./_baseCreate'),\n getPrototype = require('./_getPrototype'),\n isPrototype = require('./_isPrototype');\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\nmodule.exports = initCloneObject;\n","var Symbol = require('./_Symbol'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray');\n\n/** Built-in value references. */\nvar spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\nmodule.exports = isFlattenable;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","var eq = require('./eq'),\n isArrayLike = require('./isArrayLike'),\n isIndex = require('./_isIndex'),\n isObject = require('./isObject');\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\nmodule.exports = isIterateeCall;\n","var isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nmodule.exports = isKey;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n","var isObject = require('./isObject');\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\nmodule.exports = isStrictComparable;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n","var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nmodule.exports = mapToArray;\n","/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\nmodule.exports = matchesStrictComparable;\n","var memoize = require('./memoize');\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nmodule.exports = memoizeCapped;\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = nativeKeysIn;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n","var apply = require('./_apply');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\nmodule.exports = overRest;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","/**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n}\n\nmodule.exports = safeGet;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nmodule.exports = setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nmodule.exports = setToArray;\n","var baseSetToString = require('./_baseSetToString'),\n shortOut = require('./_shortOut');\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nmodule.exports = setToString;\n","/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\nmodule.exports = shortOut;\n","var ListCache = require('./_ListCache');\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nmodule.exports = stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nmodule.exports = stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\n","var ListCache = require('./_ListCache'),\n Map = require('./_Map'),\n MapCache = require('./_MapCache');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nmodule.exports = stackSet;\n","/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = strictIndexOf;\n","var asciiSize = require('./_asciiSize'),\n hasUnicode = require('./_hasUnicode'),\n unicodeSize = require('./_unicodeSize');\n\n/**\n * Gets the number of symbols in `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the string size.\n */\nfunction stringSize(string) {\n return hasUnicode(string)\n ? unicodeSize(string)\n : asciiSize(string);\n}\n\nmodule.exports = stringSize;\n","var memoizeCapped = require('./_memoizeCapped');\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nmodule.exports = stringToPath;\n","var isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = toKey;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/**\n * Gets the size of a Unicode `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\nfunction unicodeSize(string) {\n var result = reUnicode.lastIndex = 0;\n while (reUnicode.test(string)) {\n ++result;\n }\n return result;\n}\n\nmodule.exports = unicodeSize;\n","var baseClone = require('./_baseClone');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\nfunction clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG);\n}\n\nmodule.exports = clone;\n","var baseClone = require('./_baseClone');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\nfunction cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n}\n\nmodule.exports = cloneDeep;\n","/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\nmodule.exports = constant;\n","var baseRest = require('./_baseRest'),\n eq = require('./eq'),\n isIterateeCall = require('./_isIterateeCall'),\n keysIn = require('./keysIn');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns own and inherited enumerable string keyed properties of source\n * objects to the destination object for all destination properties that\n * resolve to `undefined`. Source objects are applied from left to right.\n * Once a property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaultsDeep\n * @example\n *\n * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\nvar defaults = baseRest(function(object, sources) {\n object = Object(object);\n\n var index = -1;\n var length = sources.length;\n var guard = length > 2 ? sources[2] : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n length = 1;\n }\n\n while (++index < length) {\n var source = sources[index];\n var props = keysIn(source);\n var propsIndex = -1;\n var propsLength = props.length;\n\n while (++propsIndex < propsLength) {\n var key = props[propsIndex];\n var value = object[key];\n\n if (value === undefined ||\n (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n object[key] = source[key];\n }\n }\n }\n\n return object;\n});\n\nmodule.exports = defaults;\n","module.exports = require('./forEach');\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","var arrayFilter = require('./_arrayFilter'),\n baseFilter = require('./_baseFilter'),\n baseIteratee = require('./_baseIteratee'),\n isArray = require('./isArray');\n\n/**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n */\nfunction filter(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, baseIteratee(predicate, 3));\n}\n\nmodule.exports = filter;\n","var createFind = require('./_createFind'),\n findIndex = require('./findIndex');\n\n/**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\nvar find = createFind(findIndex);\n\nmodule.exports = find;\n","var baseFindIndex = require('./_baseFindIndex'),\n baseIteratee = require('./_baseIteratee'),\n toInteger = require('./toInteger');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\nfunction findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, baseIteratee(predicate, 3), index);\n}\n\nmodule.exports = findIndex;\n","var baseFlatten = require('./_baseFlatten');\n\n/**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\nfunction flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n}\n\nmodule.exports = flatten;\n","var arrayEach = require('./_arrayEach'),\n baseEach = require('./_baseEach'),\n castFunction = require('./_castFunction'),\n isArray = require('./isArray');\n\n/**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _.forEach([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\nfunction forEach(collection, iteratee) {\n var func = isArray(collection) ? arrayEach : baseEach;\n return func(collection, castFunction(iteratee));\n}\n\nmodule.exports = forEach;\n","var baseFor = require('./_baseFor'),\n castFunction = require('./_castFunction'),\n keysIn = require('./keysIn');\n\n/**\n * Iterates over own and inherited enumerable string keyed properties of an\n * object and invokes `iteratee` for each property. The iteratee is invoked\n * with three arguments: (value, key, object). Iteratee functions may exit\n * iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forInRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forIn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).\n */\nfunction forIn(object, iteratee) {\n return object == null\n ? object\n : baseFor(object, castFunction(iteratee), keysIn);\n}\n\nmodule.exports = forIn;\n","var baseGet = require('./_baseGet');\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n","var baseHas = require('./_baseHas'),\n hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\nfunction has(object, path) {\n return object != null && hasPath(object, path, baseHas);\n}\n\nmodule.exports = has;\n","var baseHasIn = require('./_baseHasIn'),\n hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\nmodule.exports = hasIn;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n","var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","var isFunction = require('./isFunction'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n","var isArrayLike = require('./isArrayLike'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\nmodule.exports = isArrayLikeObject;\n","var root = require('./_root'),\n stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n","var baseKeys = require('./_baseKeys'),\n getTag = require('./_getTag'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isArrayLike = require('./isArrayLike'),\n isBuffer = require('./isBuffer'),\n isPrototype = require('./_isPrototype'),\n isTypedArray = require('./isTypedArray');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n setTag = '[object Set]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\nfunction isEmpty(value) {\n if (value == null) {\n return true;\n }\n if (isArrayLike(value) &&\n (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n return !value.length;\n }\n var tag = getTag(value);\n if (tag == mapTag || tag == setTag) {\n return !value.size;\n }\n if (isPrototype(value)) {\n return !baseKeys(value).length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n}\n\nmodule.exports = isEmpty;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","var baseIsMap = require('./_baseIsMap'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsMap = nodeUtil && nodeUtil.isMap;\n\n/**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\nvar isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\nmodule.exports = isMap;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n getPrototype = require('./_getPrototype'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\nmodule.exports = isPlainObject;\n","var baseIsSet = require('./_baseIsSet'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsSet = nodeUtil && nodeUtil.isSet;\n\n/**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\nvar isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\nmodule.exports = isSet;\n","var baseGetTag = require('./_baseGetTag'),\n isArray = require('./isArray'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n}\n\nmodule.exports = isString;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var baseIsTypedArray = require('./_baseIsTypedArray'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n","/**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\nfunction isUndefined(value) {\n return value === undefined;\n}\n\nmodule.exports = isUndefined;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeys = require('./_baseKeys'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeysIn = require('./_baseKeysIn'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nmodule.exports = keysIn;\n","/**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\nfunction last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n}\n\nmodule.exports = last;\n","var arrayMap = require('./_arrayMap'),\n baseIteratee = require('./_baseIteratee'),\n baseMap = require('./_baseMap'),\n isArray = require('./isArray');\n\n/**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\nfunction map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, baseIteratee(iteratee, 3));\n}\n\nmodule.exports = map;\n","var baseAssignValue = require('./_baseAssignValue'),\n baseForOwn = require('./_baseForOwn'),\n baseIteratee = require('./_baseIteratee');\n\n/**\n * Creates an object with the same keys as `object` and values generated\n * by running each own enumerable string keyed property of `object` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapKeys\n * @example\n *\n * var users = {\n * 'fred': { 'user': 'fred', 'age': 40 },\n * 'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * _.mapValues(users, function(o) { return o.age; });\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n *\n * // The `_.property` iteratee shorthand.\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\nfunction mapValues(object, iteratee) {\n var result = {};\n iteratee = baseIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, key, iteratee(value, key, object));\n });\n return result;\n}\n\nmodule.exports = mapValues;\n","var baseExtremum = require('./_baseExtremum'),\n baseGt = require('./_baseGt'),\n identity = require('./identity');\n\n/**\n * Computes the maximum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the maximum value.\n * @example\n *\n * _.max([4, 2, 8, 6]);\n * // => 8\n *\n * _.max([]);\n * // => undefined\n */\nfunction max(array) {\n return (array && array.length)\n ? baseExtremum(array, identity, baseGt)\n : undefined;\n}\n\nmodule.exports = max;\n","var MapCache = require('./_MapCache');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nmodule.exports = memoize;\n","var baseMerge = require('./_baseMerge'),\n createAssigner = require('./_createAssigner');\n\n/**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\nvar merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n});\n\nmodule.exports = merge;\n","var baseExtremum = require('./_baseExtremum'),\n baseLt = require('./_baseLt'),\n identity = require('./identity');\n\n/**\n * Computes the minimum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the minimum value.\n * @example\n *\n * _.min([4, 2, 8, 6]);\n * // => 2\n *\n * _.min([]);\n * // => undefined\n */\nfunction min(array) {\n return (array && array.length)\n ? baseExtremum(array, identity, baseLt)\n : undefined;\n}\n\nmodule.exports = min;\n","var baseExtremum = require('./_baseExtremum'),\n baseIteratee = require('./_baseIteratee'),\n baseLt = require('./_baseLt');\n\n/**\n * This method is like `_.min` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * the value is ranked. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {*} Returns the minimum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * _.minBy(objects, function(o) { return o.n; });\n * // => { 'n': 1 }\n *\n * // The `_.property` iteratee shorthand.\n * _.minBy(objects, 'n');\n * // => { 'n': 1 }\n */\nfunction minBy(array, iteratee) {\n return (array && array.length)\n ? baseExtremum(array, baseIteratee(iteratee, 2), baseLt)\n : undefined;\n}\n\nmodule.exports = minBy;\n","/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n // No operation performed.\n}\n\nmodule.exports = noop;\n","var root = require('./_root');\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nmodule.exports = now;\n","var basePick = require('./_basePick'),\n flatRest = require('./_flatRest');\n\n/**\n * Creates an object composed of the picked `object` properties.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pick(object, ['a', 'c']);\n * // => { 'a': 1, 'c': 3 }\n */\nvar pick = flatRest(function(object, paths) {\n return object == null ? {} : basePick(object, paths);\n});\n\nmodule.exports = pick;\n","var baseProperty = require('./_baseProperty'),\n basePropertyDeep = require('./_basePropertyDeep'),\n isKey = require('./_isKey'),\n toKey = require('./_toKey');\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = property;\n","var createRange = require('./_createRange');\n\n/**\n * Creates an array of numbers (positive and/or negative) progressing from\n * `start` up to, but not including, `end`. A step of `-1` is used if a negative\n * `start` is specified without an `end` or `step`. If `end` is not specified,\n * it's set to `start` with `start` then set to `0`.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @param {number} [step=1] The value to increment or decrement by.\n * @returns {Array} Returns the range of numbers.\n * @see _.inRange, _.rangeRight\n * @example\n *\n * _.range(4);\n * // => [0, 1, 2, 3]\n *\n * _.range(-4);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 5);\n * // => [1, 2, 3, 4]\n *\n * _.range(0, 20, 5);\n * // => [0, 5, 10, 15]\n *\n * _.range(0, -4, -1);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 4, 0);\n * // => [1, 1, 1]\n *\n * _.range(0);\n * // => []\n */\nvar range = createRange();\n\nmodule.exports = range;\n","var arrayReduce = require('./_arrayReduce'),\n baseEach = require('./_baseEach'),\n baseIteratee = require('./_baseIteratee'),\n baseReduce = require('./_baseReduce'),\n isArray = require('./isArray');\n\n/**\n * Reduces `collection` to a value which is the accumulated result of running\n * each element in `collection` thru `iteratee`, where each successive\n * invocation is supplied the return value of the previous. If `accumulator`\n * is not given, the first element of `collection` is used as the initial\n * value. The iteratee is invoked with four arguments:\n * (accumulator, value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.reduce`, `_.reduceRight`, and `_.transform`.\n *\n * The guarded methods are:\n * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\n * and `sortBy`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduceRight\n * @example\n *\n * _.reduce([1, 2], function(sum, n) {\n * return sum + n;\n * }, 0);\n * // => 3\n *\n * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * return result;\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)\n */\nfunction reduce(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduce : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, baseIteratee(iteratee, 4), accumulator, initAccum, baseEach);\n}\n\nmodule.exports = reduce;\n","var baseKeys = require('./_baseKeys'),\n getTag = require('./_getTag'),\n isArrayLike = require('./isArrayLike'),\n isString = require('./isString'),\n stringSize = require('./_stringSize');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n setTag = '[object Set]';\n\n/**\n * Gets the size of `collection` by returning its length for array-like\n * values or the number of own enumerable string keyed properties for objects.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @returns {number} Returns the collection size.\n * @example\n *\n * _.size([1, 2, 3]);\n * // => 3\n *\n * _.size({ 'a': 1, 'b': 2 });\n * // => 2\n *\n * _.size('pebbles');\n * // => 7\n */\nfunction size(collection) {\n if (collection == null) {\n return 0;\n }\n if (isArrayLike(collection)) {\n return isString(collection) ? stringSize(collection) : collection.length;\n }\n var tag = getTag(collection);\n if (tag == mapTag || tag == setTag) {\n return collection.size;\n }\n return baseKeys(collection).length;\n}\n\nmodule.exports = size;\n","var baseFlatten = require('./_baseFlatten'),\n baseOrderBy = require('./_baseOrderBy'),\n baseRest = require('./_baseRest'),\n isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 40], ['fred', 48]]\n */\nvar sortBy = baseRest(function(collection, iteratees) {\n if (collection == null) {\n return [];\n }\n var length = iteratees.length;\n if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n iteratees = [];\n } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n iteratees = [iteratees[0]];\n }\n return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n});\n\nmodule.exports = sortBy;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nmodule.exports = stubArray;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\n","var toNumber = require('./toNumber');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308;\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\nmodule.exports = toFinite;\n","var toFinite = require('./toFinite');\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\nmodule.exports = toInteger;\n","var isObject = require('./isObject'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n","var copyObject = require('./_copyObject'),\n keysIn = require('./keysIn');\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n return copyObject(value, keysIn(value));\n}\n\nmodule.exports = toPlainObject;\n","var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n","var arrayEach = require('./_arrayEach'),\n baseCreate = require('./_baseCreate'),\n baseForOwn = require('./_baseForOwn'),\n baseIteratee = require('./_baseIteratee'),\n getPrototype = require('./_getPrototype'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isFunction = require('./isFunction'),\n isObject = require('./isObject'),\n isTypedArray = require('./isTypedArray');\n\n/**\n * An alternative to `_.reduce`; this method transforms `object` to a new\n * `accumulator` object which is the result of running each of its own\n * enumerable string keyed properties thru `iteratee`, with each invocation\n * potentially mutating the `accumulator` object. If `accumulator` is not\n * provided, a new object with the same `[[Prototype]]` will be used. The\n * iteratee is invoked with four arguments: (accumulator, value, key, object).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The custom accumulator value.\n * @returns {*} Returns the accumulated value.\n * @example\n *\n * _.transform([2, 3, 4], function(result, n) {\n * result.push(n *= n);\n * return n % 2 == 0;\n * }, []);\n * // => [4, 9]\n *\n * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] }\n */\nfunction transform(object, iteratee, accumulator) {\n var isArr = isArray(object),\n isArrLike = isArr || isBuffer(object) || isTypedArray(object);\n\n iteratee = baseIteratee(iteratee, 4);\n if (accumulator == null) {\n var Ctor = object && object.constructor;\n if (isArrLike) {\n accumulator = isArr ? new Ctor : [];\n }\n else if (isObject(object)) {\n accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};\n }\n else {\n accumulator = {};\n }\n }\n (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) {\n return iteratee(accumulator, value, index, object);\n });\n return accumulator;\n}\n\nmodule.exports = transform;\n","var baseFlatten = require('./_baseFlatten'),\n baseRest = require('./_baseRest'),\n baseUniq = require('./_baseUniq'),\n isArrayLikeObject = require('./isArrayLikeObject');\n\n/**\n * Creates an array of unique values, in order, from all given arrays using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.union([2], [1, 2]);\n * // => [2, 1]\n */\nvar union = baseRest(function(arrays) {\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));\n});\n\nmodule.exports = union;\n","var toString = require('./toString');\n\n/** Used to generate unique IDs. */\nvar idCounter = 0;\n\n/**\n * Generates a unique ID. If `prefix` is given, the ID is appended to it.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {string} [prefix=''] The value to prefix the ID with.\n * @returns {string} Returns the unique ID.\n * @example\n *\n * _.uniqueId('contact_');\n * // => 'contact_104'\n *\n * _.uniqueId();\n * // => '105'\n */\nfunction uniqueId(prefix) {\n var id = ++idCounter;\n return toString(prefix) + id;\n}\n\nmodule.exports = uniqueId;\n","var baseValues = require('./_baseValues'),\n keys = require('./keys');\n\n/**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\nfunction values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n}\n\nmodule.exports = values;\n","var assignValue = require('./_assignValue'),\n baseZipObject = require('./_baseZipObject');\n\n/**\n * This method is like `_.fromPairs` except that it accepts two arrays,\n * one of property identifiers and one of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 0.4.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObject(['a', 'b'], [1, 2]);\n * // => { 'a': 1, 'b': 2 }\n */\nfunction zipObject(props, values) {\n return baseZipObject(props || [], values || [], assignValue);\n}\n\nmodule.exports = zipObject;\n","var map = {\n\t\"./locale\": \"./node_modules/moment-mini/locale/locale.js\",\n\t\"./locale.js\": \"./node_modules/moment-mini/locale/locale.js\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"./node_modules/moment-mini/locale sync recursive ^\\\\.\\\\/.*$\";","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):e.moment=t()}(this,function(){\"use strict\";var e,i;function c(){return e.apply(null,arguments)}function o(e){return e instanceof Array||\"[object Array]\"===Object.prototype.toString.call(e)}function u(e){return null!=e&&\"[object Object]\"===Object.prototype.toString.call(e)}function l(e){return void 0===e}function h(e){return\"number\"==typeof e||\"[object Number]\"===Object.prototype.toString.call(e)}function d(e){return e instanceof Date||\"[object Date]\"===Object.prototype.toString.call(e)}function f(e,t){var n,s=[];for(n=0;n\n * mermaid.initialize({\n * flowchart:{\n * htmlLabels: false\n * }\n * });\n *
\n *\n * **Example 2:**\n * \n * <script>\n * var config = {\n * startOnLoad:true,\n * flowchart:{\n * useMaxWidth:true,\n * htmlLabels:true,\n * curve:'cardinal',\n * },\n *\n * securityLevel:'loose',\n * };\n * mermaid.initialize(config);\n * </script>\n *
\n * A summary of all options and their defaults is found [here](#mermaidapi-configuration-defaults). A description of each option follows below.\n *\n * @name Configuration\n */\nconst config = {\n /** theme , the CSS style sheet\n *\n * theme , the CSS style sheet\n *\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| Theme |Built in Themes| String | Optional | Values include, default, forest, dark, neutral, null|\n *\n ***Notes:**To disable any pre-defined mermaid theme, use \"null\".\n * \n * \"theme\": \"forest\",\n * \"themeCSS\": \".node rect { fill: red; }\"\n *
\n */\n theme: 'default',\n themeVariables: theme['default'].getThemeVariables(),\n themeCSS: undefined,\n /* **maxTextSize** - The maximum allowed size of the users text diamgram */\n maxTextSize: 50000,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *|fontFamily | specifies the font to be used in the rendered diagrams| String | Required | Verdana, Arial, Trebuchet MS,|\n *\n ***notes: Default value is \\\\\"trebuchet ms\\\\\".\n */\n fontFamily: '\"trebuchet ms\", verdana, arial;',\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| logLevel |This option decides the amount of logging to be used.| String | Required | 1, 2, 3, 4, 5 |\n *\n *\n ***Notes:**\n *- debug: 1.\n *- info: 2.\n *- warn: 3.\n *- error: 4.\n *- fatal: 5(default).\n */\n logLevel: 5,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| securitylevel | Level of trust for parsed diagram|String | Required | Strict, Loose, antiscript |\n *\n ***Notes:\n *- **strict**: (**default**) tags in text are encoded, click functionality is disabeled\n *- **loose**: tags in text are allowed, click functionality is enabled\n *- **antiscript**: html tags in text are allowed, (only script element is removed), click functionality is enabled\n */\n securityLevel: 'strict',\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| startOnLoad| Dictates whether mermaind starts on Page load | Boolean | Required | True, False |\n *\n ***Notes:**\n ***Default value: true**\n */\n startOnLoad: true,\n\n /**\n *| Parameter | Description |Type | Required |Values|\n *| --- | --- | --- | --- | --- |\n *| arrowMarkerAbsolute | Controls whether or arrow markers in html code are absolute paths or anchors | Boolean | Required | True, False |\n *\n *\n *## Notes**: This matters if you are using base tag settings.\n ***Default value: false**.\n */\n arrowMarkerAbsolute: false,\n\n /**\n * This option controls which currentConfig keys are considered _secure_ and can only be changed via\n * call to mermaidAPI.initialize. Calls to mermaidAPI.reinitialize cannot make changes to\n * the `secure` keys in the current currentConfig. This prevents malicious graph directives from\n * overriding a site's default security.\n */\n secure: ['secure', 'securityLevel', 'startOnLoad', 'maxTextSize'],\n\n /**\n * The object containing configurations specific for flowcharts\n */\n flowchart: {\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| diagramPadding | amount of padding around the diagram as a whole | Integer | Required | Any Positive Value |\n *\n ***Notes:**The amount of padding around the diagram as a whole so that embedded diagrams have margins, expressed in pixels\n ***Default value: 8**.\n */\n diagramPadding: 8,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| htmlLabels | Flag for setting whether or not a html tag should be used for rendering labels on the edges. | Boolean| Required | True, False|\n *\n ***Notes: Default value: true**.\n */\n htmlLabels: true,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| nodeSpacing | Defines the spacing between nodes on the same level | Integer| Required | Any positive Numbers |\n *\n ***Notes:\n *Pertains to horizontal spacing for TB (top to bottom) or BT (bottom to top) graphs, and the vertical spacing for LR as well as RL graphs.**\n ***Default value 50**.\n */\n nodeSpacing: 50,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| rankSpacing | Defines the spacing between nodes on different levels | Integer | Required| Any Positive Numbers |\n *\n ***Notes: pertains to vertical spacing for TB (top to bottom) or BT (bottom to top), and the horizontal spacing for LR as well as RL graphs.\n ***Default value 50**.\n */\n rankSpacing: 50,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| curve | Defines how mermaid renders curves for flowcharts. | String | Required | Basis, Linear, Cardinal|\n *\n ***Notes:\n *Default Vaue: Linear**\n */\n curve: 'linear',\n // Only used in new experimental rendering\n // repreesents the padding between the labels and the shape\n padding: 15\n },\n\n /**\n * The object containing configurations specific for sequence diagrams\n */\n sequence: {\n /**\n * widt of the activation rect\n * **Default value 10**.\n */\n activationWidth: 10,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| diagramMarginX | margin to the right and left of the sequence diagram | Integer | Required | Any Positive Values |\n *\n ***Notes:**\n ***Default value 50**.\n */\n diagramMarginX: 50,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| diagramMarginY | Margin to the over and under the sequence diagram | Integer | Required | Any Positive Values|\n *\n ***Notes:**\n ***Default value 10**.\n */\n diagramMarginY: 10,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| actorMargin | Margin between actors. | Integer | Required | Any Positive Value |\n *\n ***Notes:**\n ***Default value 50**.\n */\n actorMargin: 50,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| width | Width of actor boxes | Integer | Required | Any Positive Value |\n *\n ***Notes:**\n ***Default value 150**.\n */\n width: 150,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| height | Height of actor boxes | Integer | Required | Any Positive Value|\n *\n ***Notes:**\n ***Default value 65**..\n */\n height: 65,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| boxMargin | Margin around loop boxes | Integer | Required | Any Positive Value |\n *\n ***Notes:**\n *\n ***Default value 10**.\n */\n boxMargin: 10,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| boxTextMargin| margin around the text in loop/alt/opt boxes | Integer | Required| Any Positive Value|\n *\n ***Notes:**\n *\n ***Default value 5**.\n */\n boxTextMargin: 5,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| noteMargin | margin around notes. | Integer | Required | Any Positive Value |\n *\n ***Notes:**\n *\n ***Default value 10**.\n */\n noteMargin: 10,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| messageMargin | Space between messages. | Integer | Required | Any Positive Value |\n *\n ***Notes:**\n *\n *Space between messages.\n ***Default value 35**.\n */\n messageMargin: 35,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| messageAlign | Multiline message alignment | Integer | Required | left, center, right |\n *\n ***Notes:**center **default**\n */\n messageAlign: 'center',\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| mirrorActors | mirror actors under diagram. | Boolean| Required | True, False |\n *\n ***Notes:**\n *\n ***Default value true**.\n */\n mirrorActors: true,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| bottomMarginAdj | Prolongs the edge of the diagram downwards. | Integer | Required | Any Positive Value |\n *\n ***Notes:**Depending on css styling this might need adjustment.\n ***Default value 1**.\n */\n bottomMarginAdj: 1,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| useMaxWidth | See Notes | Boolean | Required | True, False |\n *\n ***Notes:**\n *when this flag is set to true, the height and width is set to 100% and is then scaling with the\n *available space. If set to false, the absolute space required is used.\n ***Default value: True**.\n */\n useMaxWidth: true,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| rightAngles | display curve arrows as right angles| Boolean | Required | True, False |\n *\n ***Notes:**\n *\n *This will display arrows that start and begin at the same node as right angles, rather than a curve\n ***Default value false**.\n */\n rightAngles: false,\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| showSequenceNumbers | This will show the node numbers | Boolean | Required | True, False |\n *\n ***Notes:**\n ***Default value false**.\n */\n showSequenceNumbers: false,\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| actorFontSize| This sets the font size of the actor's description | Integer | Require | Any Positive Value |\n *\n ***Notes:**\n ***Default value 14**..\n */\n actorFontSize: 14,\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| actorFontFamily |This sets the font family of the actor's description | 3 | 4 | Open-Sans, Sans-Serif |\n *\n ***Notes:**\n ***Default value \"Open-Sans\", \"sans-serif\"**.\n */\n actorFontFamily: '\"Open-Sans\", \"sans-serif\"',\n /**\n * This sets the font weight of the actor's description\n * **Default value 400.\n */\n actorFontWeight: 400,\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| noteFontSize |This sets the font size of actor-attached notes. | Integer | Required | Any Positive Value |\n *\n ***Notes:**\n ***Default value 14**..\n */\n noteFontSize: 14,\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| noteFontFamily| This sets the font family of actor-attached notes. | String | Required | trebuchet ms, verdana, arial |\n *\n ***Notes:**\n ***Default value: trebuchet ms **.\n */\n noteFontFamily: '\"trebuchet ms\", verdana, arial',\n /**\n * This sets the font weight of the note's description\n * **Default value 400.\n */\n noteFontWeight: 400,\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| noteAlign | This sets the text alignment of actor-attached notes. | string | required | left, center, right|\n *\n ***Notes:**\n ***Default value center**.\n */\n noteAlign: 'center',\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| messageFontSize | This sets the font size of actor messages. | Integer | Required | Any Positive Number |\n *\n ***Notes:**\n ***Default value 16**.\n */\n messageFontSize: 16,\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| messageFontFamily | This sets the font family of actor messages. | String| Required | trebuchet ms\", verdana, aria |\n *\n ***Notes:**\n ***Default value:\"trebuchet ms**.\n */\n messageFontFamily: '\"trebuchet ms\", verdana, arial',\n /**\n * This sets the font weight of the message's description\n * **Default value 400.\n */\n messageFontWeight: 400,\n /**\n * This sets the auto-wrap state for the diagram\n * **Default value false.\n */\n wrap: false,\n /**\n * This sets the auto-wrap padding for the diagram (sides only)\n * **Default value 10.\n */\n wrapPadding: 10,\n /**\n * This sets the width of the loop-box (loop, alt, opt, par)\n * **Default value 50.\n */\n labelBoxWidth: 50,\n /**\n * This sets the height of the loop-box (loop, alt, opt, par)\n * **Default value 20.\n */\n labelBoxHeight: 20,\n messageFont: function() {\n return {\n fontFamily: this.messageFontFamily,\n fontSize: this.messageFontSize,\n fontWeight: this.messageFontWeight\n };\n },\n noteFont: function() {\n return {\n fontFamily: this.noteFontFamily,\n fontSize: this.noteFontSize,\n fontWeight: this.noteFontWeight\n };\n },\n actorFont: function() {\n return {\n fontFamily: this.actorFontFamily,\n fontSize: this.actorFontSize,\n fontWeight: this.actorFontWeight\n };\n }\n },\n\n /**\n * The object containing configurations specific for gantt diagrams*\n */\n gantt: {\n /**\n *### titleTopMargin\n *\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| titleTopMargin | Margin top for the text over the gantt diagram | Integer | Required | Any Positive Value |\n *\n ***Notes:**\n ***Default value 25**.\n */\n titleTopMargin: 25,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| barHeight | The height of the bars in the graph | Integer | Required | Any Positive Value |\n *\n ***Notes:**\n ***Default value 20**.\n */\n barHeight: 20,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| barGap | The margin between the different activities in the gantt diagram. | Integer | Optional |Any Positive Value |\n *\n ***Notes:**\n ***Default value 4**.\n */\n barGap: 4,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| topPadding | Margin between title and gantt diagram and between axis and gantt diagram. | Integer | Required | Any Positive Value |\n *\n ***Notes:**\n ***Default value 50**.\n */\n topPadding: 50,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| leftPadding | The space allocated for the section name to the left of the activities. | Integer| Required | Any Positive Value |\n *\n ***Notes:**\n ***Default value 75**.\n */\n leftPadding: 75,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| gridLineStartPadding | Vertical starting position of the grid lines. | Integer | Required | Any Positive Value |\n *\n ***Notes:**\n ***Default value 35**.\n */\n gridLineStartPadding: 35,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| fontSize | Font size| Integer | Required | Any Positive Value |\n *\n ***Notes:**\n ***Default value 11**.\n */\n fontSize: 11,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| fontFamily | font Family | string | required |\"Open-Sans\", \"sans-serif\" |\n *\n ***Notes:**\n *\n ***Default value '\"Open-Sans\", \"sans-serif\"'**.\n */\n fontFamily: '\"Open-Sans\", \"sans-serif\"',\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| numberSectionStyles | The number of alternating section styles | Integer | 4 | Any Positive Value |\n *\n ***Notes:**\n ***Default value 4**.\n */\n numberSectionStyles: 4,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| axisFormat | Datetime format of the axis. | 3 | Required | Date in yy-mm-dd |\n *\n ***Notes:**\n *\n * This might need adjustment to match your locale and preferences\n ***Default value '%Y-%m-%d'**.\n */\n axisFormat: '%Y-%m-%d'\n },\n /**\n * The object containing configurations specific for sequence diagrams\n */\n journey: {\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| diagramMarginX | margin to the right and left of the sequence diagram | Integer | Required | Any Positive Value |\n *\n ***Notes:**\n ***Default value 50**.\n */\n diagramMarginX: 50,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| diagramMarginY | margin to the over and under the sequence diagram. | Integer | Required | Any Positive Value|\n *\n ***Notes:**\n ***Default value 10**..\n */\n diagramMarginY: 10,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| actorMargin | Margin between actors. | Integer | Required | Any Positive Value|\n *\n ***Notes:**\n ***Default value 50**.\n */\n actorMargin: 50,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| width | Width of actor boxes | Integer | Required | Any Positive Value |\n *\n ***Notes:**\n ***Default value 150**.\n */\n width: 150,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| height | Height of actor boxes | Integer | Required | Any Positive Value |\n *\n ***Notes:**\n ***Default value 65**.\n */\n height: 65,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| boxMargin | Margin around loop boxes | Integer | Required | Any Positive Value |\n *\n ***Notes:**\n ***Default value 10**.\n */\n boxMargin: 10,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| boxTextMargin | margin around the text in loop/alt/opt boxes | Integer | Required | Any Positive Value |\n *\n ***Notes:**\n */\n boxTextMargin: 5,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| noteMargin | margin around notes. | Integer | Required | Any Positive Value |\n *\n ***Notes:**\n ***Default value 10**.\n */\n noteMargin: 10,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| messageMargin |Space between messages. | Integer | Required | Any Positive Value |\n *\n ***Notes:**\n *\n *Space between messages.\n ***Default value 35**.\n */\n messageMargin: 35,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| messageAlign |Multiline message alignment | 3 | 4 | left, center, right |\n *\n ***Notes:**default:center**\n */\n messageAlign: 'center',\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| bottomMarginAdj | Prolongs the edge of the diagram downwards. | Integer | 4 | Any Positive Value |\n *\n ***Notes:**Depending on css styling this might need adjustment.\n ***Default value 1**.\n */\n bottomMarginAdj: 1,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| useMaxWidth | See notes | Boolean | 4 | True, False |\n *\n ***Notes:**when this flag is set the height and width is set to 100% and is then scaling with the\n *available space if not the absolute space required is used.\n *\n ***Default value true**.\n */\n useMaxWidth: true,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| rightAngles | Curved Arrows become Right Angles, | 3 | 4 | True, False |\n *\n ***Notes:**This will display arrows that start and begin at the same node as right angles, rather than a curves\n ***Default value false**.\n */\n rightAngles: false\n },\n class: {\n arrowMarkerAbsolute: false\n },\n git: {\n arrowMarkerAbsolute: false\n },\n state: {\n dividerMargin: 10,\n sizeUnit: 5,\n padding: 8,\n textHeight: 10,\n titleShift: -15,\n noteMargin: 10,\n forkWidth: 70,\n forkHeight: 7,\n // Used\n miniPadding: 2,\n // Font size factor, this is used to guess the width of the edges labels before rendering by dagre\n // layout. This might need updating if/when switching font\n fontSizeFactor: 5.02,\n fontSize: 24,\n labelHeight: 16,\n edgeLengthFactor: '20',\n compositTitleSize: 35,\n radius: 5\n },\n\n /**\n * The object containing configurations specific for entity relationship diagrams\n */\n er: {\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| diagramPadding | amount of padding around the diagram as a whole | Integer | Required | Any Positive Value |\n *\n ***Notes:**The amount of padding around the diagram as a whole so that embedded diagrams have margins, expressed in pixels\n ***Default value: 20**.\n */\n diagramPadding: 20,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| layoutDirection | Directional bias for layout of entities. | String | Required | \"TB\", \"BT\",\"LR\",\"RL\" |\n *\n ***Notes:**\n *'TB' for Top-Bottom, 'BT'for Bottom-Top, 'LR' for Left-Right, or 'RL' for Right to Left.\n * T = top, B = bottom, L = left, and R = right.\n ***Default value: TB **.\n */\n layoutDirection: 'TB',\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| minEntityWidth | The mimimum width of an entity box, | Integer | Required| Any Positive Value |\n *\n ***Notes:**expressed in pixels\n ***Default value: 100**.\n */\n minEntityWidth: 100,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| minEntityHeight| The minimum height of an entity box, | Integer | 4 | Any Positive Value |\n *\n ***Notes:**expressed in pixels\n ***Default value: 75 **\n */\n minEntityHeight: 75,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| entityPadding|minimum internal padding betweentext in box and box borders| Integer | 4 | Any Positive Value |\n *\n ***Notes:**The minimum internal padding betweentext in an entity box and the enclosing box borders, expressed in pixels.\n ***Default value: 15 **\n */\n entityPadding: 15,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| stroke | Stroke color of box edges and lines | String | 4 | Any recognized color |\n ***Default value: gray **\n */\n stroke: 'gray',\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| fill | Fill color of entity boxes | String | 4 | Any recognized color |\n *\n ***Notes:**\n ***Default value:'honeydew'**\n */\n fill: 'honeydew',\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| fontSize| Font Size in pixels| Integer | | Any Positive Value |\n *\n ***Notes:**Font size (expressed as an integer representing a number of pixels)\n ***Default value: 12 **\n */\n fontSize: 12,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| useMaxWidth | See Notes | Boolean | Required | true, false |\n *\n ***Notes:**\n *When this flag is set to true, the diagram width is locked to 100% and\n *scaled based on available space. If set to false, the diagram reserves its\n *absolute width.\n ***Default value: true**.\n */\n useMaxWidth: true\n }\n};\n\n// debugger;\nconfig.class.arrowMarkerAbsolute = config.arrowMarkerAbsolute;\nconfig.git.arrowMarkerAbsolute = config.arrowMarkerAbsolute;\nexport const defaultConfig = Object.freeze(config);\n\nconst siteConfig = assignWithDepth({}, defaultConfig);\nconst currentConfig = assignWithDepth({}, defaultConfig);\n\n/**\n *## setSiteConfig\n *| Function | Description | Type | Values |\n *| --------- | ------------------- | ------- | ------------------ |\n *| setSiteConfig|Sets the siteConfig to desired values | Put Request | Any Values, except ones in secure array|\n ***Notes:**\n *Sets the siteConfig. The siteConfig is a protected configuration for repeat use. Calls to reset() will reset\n *the currentConfig to siteConfig. Calls to reset(configApi.defaultConfig) will reset siteConfig and currentConfig\n *to the defaultConfig\n *Note: currentConfig is set in this function\n **Default value: At default, will mirror Global Config**\n * @param conf - the base currentConfig to use as siteConfig\n * @returns {*} - the siteConfig\n */\nexport const setSiteConfig = conf => {\n Object.keys(conf).forEach(key => {\n const manipulator = manipulators[key];\n conf[key] = manipulator ? manipulator(conf[key]) : conf[key];\n });\n\n assignWithDepth(currentConfig, conf, { clobber: true });\n // Set theme variables if user has set the theme option\n assignWithDepth(siteConfig, conf);\n\n return getSiteConfig();\n};\n/**\n *## getSiteConfig\n *| Function | Description | Type | Values |\n *| --------- | ------------------- | ------- | ------------------ |\n *| setSiteConfig|Returns the current siteConfig base configuration | Get Request | Returns Any Values in siteConfig|\n ***Notes**:\n *Returns **any** values in siteConfig.\n * @returns {*}\n */\nexport const getSiteConfig = () => {\n return assignWithDepth({}, siteConfig);\n};\n/**\n *## setConfig\n *| Function | Description | Type | Values |\n *| --------- | ------------------- | ------- | ------------------ |\n *| setSiteConfig|Sets the siteConfig to desired values | Put Request| Any Values, except ones in secure array|\n ***Notes**:\n *Sets the currentConfig. The parameter conf is sanitized based on the siteConfig.secure keys. Any\n *values found in conf with key found in siteConfig.secure will be replaced with the corresponding\n *siteConfig value.\n * @param conf - the potential currentConfig\n * @returns {*} - the currentConfig merged with the sanitized conf\n */\nexport const setConfig = conf => {\n sanitize(conf);\n Object.keys(conf).forEach(key => {\n const manipulator = manipulators[key];\n conf[key] = manipulator ? manipulator(conf[key]) : conf[key];\n });\n\n assignWithDepth(currentConfig, conf);\n return getConfig();\n};\n/**\n * ## getConfig\n *| Function | Description | Type | Return Values |\n *| --------- | ------------------- | ------- | ------------------ |\n *| getConfig |Obtains the currentConfig | Get Request | Any Values from currentConfig|\n ***Notes**:\n *Returns **any** the currentConfig\n * @returns {*} - the currentConfig\n */\nexport const getConfig = () => {\n return assignWithDepth({}, currentConfig);\n};\n/**\n *## sanitize\n *| Function | Description | Type | Values |\n *| --------- | ------------------- | ------- | ------------------ |\n *| sanitize |Sets the siteConfig to desired values. | Put Request |None|\n *Ensures options parameter does not attempt to override siteConfig secure keys\n *Note: modifies options in-place\n * @param options - the potential setConfig parameter\n */\nexport const sanitize = options => {\n Object.keys(siteConfig.secure).forEach(key => {\n if (typeof options[siteConfig.secure[key]] !== 'undefined') {\n // DO NOT attempt to print options[siteConfig.secure[key]] within `${}` as a malicious script\n // can exploit the logger's attempt to stringify the value and execute arbitrary code\n logger.warn(\n `Denied attempt to modify a secure key ${siteConfig.secure[key]}`,\n options[siteConfig.secure[key]]\n );\n delete options[siteConfig.secure[key]];\n }\n });\n};\n/**\n *## reset\n *| Function | Description | Type | Required | Values |\n *| --------- | ------------------- | ------- | -------- | ------------------ |\n *| reset|Resets currentConfig to conf| Put Request | Required | None|\n *\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| conf| base set of values, which currentConfig coul be **reset** to.| Dictionary | Required | Any Values, with respect to the secure Array|\n *\n **Notes :\n (default: current siteConfig ) (optional, default `getSiteConfig()`)\n * @param conf - the base currentConfig to reset to (default: current siteConfig )\n */\nexport const reset = (conf = getSiteConfig()) => {\n Object.keys(siteConfig).forEach(key => delete siteConfig[key]);\n Object.keys(currentConfig).forEach(key => delete currentConfig[key]);\n assignWithDepth(siteConfig, conf, { clobber: true });\n assignWithDepth(currentConfig, conf, { clobber: true });\n};\n\nconst configApi = Object.freeze({\n sanitize,\n setSiteConfig,\n getSiteConfig,\n setConfig,\n getConfig,\n reset,\n defaultConfig\n});\nexport default configApi;\n","import intersectRect from './intersect/intersect-rect';\nimport { logger as log } from '../logger'; // eslint-disable-line\nimport createLabel from './createLabel';\nimport { select } from 'd3';\nimport { getConfig } from '../config';\n\nconst rect = (parent, node) => {\n log.trace('Creating subgraph rect for ', node.id, node);\n\n // Add outer g element\n const shapeSvg = parent\n .insert('g')\n .attr('class', 'cluster')\n .attr('id', node.id);\n\n // add the rect\n const rect = shapeSvg.insert('rect', ':first-child');\n\n // Create the label and insert it after the rect\n const label = shapeSvg.insert('g').attr('class', 'cluster-label');\n\n const text = label\n .node()\n .appendChild(createLabel(node.labelText, node.labelStyle, undefined, true));\n\n // Get the size of the label\n let bbox = text.getBBox();\n\n if (getConfig().flowchart.htmlLabels) {\n const div = text.children[0];\n const dv = select(text);\n bbox = div.getBoundingClientRect();\n dv.attr('width', bbox.width);\n dv.attr('height', bbox.height);\n }\n\n const padding = 0 * node.padding;\n const halfPadding = padding / 2;\n\n log.trace('Data ', node, JSON.stringify(node));\n // center the rect around its coordinate\n rect\n .attr('rx', node.rx)\n .attr('ry', node.ry)\n .attr('x', node.x - node.width / 2 - halfPadding)\n .attr('y', node.y - node.height / 2 - halfPadding)\n .attr('width', node.width + padding)\n .attr('height', node.height + padding);\n\n // Center the label\n label.attr(\n 'transform',\n 'translate(' +\n (node.x - bbox.width / 2) +\n ', ' +\n (node.y - node.height / 2 - node.padding / 3 + 3) +\n ')'\n );\n\n const rectBox = rect.node().getBBox();\n node.width = rectBox.width;\n node.height = rectBox.height;\n\n node.intersect = function(point) {\n return intersectRect(node, point);\n };\n\n return shapeSvg;\n};\n\n/**\n * Non visiable cluster where the note is group with its\n */\nconst noteGroup = (parent, node) => {\n // Add outer g element\n const shapeSvg = parent\n .insert('g')\n .attr('class', 'note-cluster')\n .attr('id', node.id);\n\n // add the rect\n const rect = shapeSvg.insert('rect', ':first-child');\n\n const padding = 0 * node.padding;\n const halfPadding = padding / 2;\n\n // center the rect around its coordinate\n rect\n .attr('rx', node.rx)\n .attr('ry', node.ry)\n .attr('x', node.x - node.width / 2 - halfPadding)\n .attr('y', node.y - node.height / 2 - halfPadding)\n .attr('width', node.width + padding)\n .attr('height', node.height + padding)\n .attr('fill', 'none');\n\n const rectBox = rect.node().getBBox();\n node.width = rectBox.width;\n node.height = rectBox.height;\n\n node.intersect = function(point) {\n return intersectRect(node, point);\n };\n\n return shapeSvg;\n};\nconst roundedWithTitle = (parent, node) => {\n // Add outer g element\n const shapeSvg = parent\n .insert('g')\n .attr('class', node.classes)\n .attr('id', node.id);\n\n // add the rect\n const rect = shapeSvg.insert('rect', ':first-child');\n\n // Create the label and insert it after the rect\n const label = shapeSvg.insert('g').attr('class', 'cluster-label');\n const innerRect = shapeSvg.append('rect');\n\n const text = label\n .node()\n .appendChild(createLabel(node.labelText, node.labelStyle, undefined, true));\n\n // Get the size of the label\n let bbox = text.getBBox();\n if (getConfig().flowchart.htmlLabels) {\n const div = text.children[0];\n const dv = select(text);\n bbox = div.getBoundingClientRect();\n dv.attr('width', bbox.width);\n dv.attr('height', bbox.height);\n }\n bbox = text.getBBox();\n const padding = 0 * node.padding;\n const halfPadding = padding / 2;\n\n // center the rect around its coordinate\n rect\n .attr('class', 'outer')\n .attr('x', node.x - node.width / 2 - halfPadding)\n .attr('y', node.y - node.height / 2 - halfPadding)\n .attr('width', node.width + padding)\n .attr('height', node.height + padding);\n innerRect\n .attr('class', 'inner')\n .attr('x', node.x - node.width / 2 - halfPadding)\n .attr('y', node.y - node.height / 2 - halfPadding + bbox.height - 1)\n .attr('width', node.width + padding)\n .attr('height', node.height + padding - bbox.height - 3);\n\n // Center the label\n label.attr(\n 'transform',\n 'translate(' +\n (node.x - bbox.width / 2) +\n ', ' +\n (node.y - node.height / 2 - node.padding / 3 + (getConfig().flowchart.htmlLabels ? 5 : 3)) +\n ')'\n );\n\n const rectBox = rect.node().getBBox();\n node.width = rectBox.width;\n node.height = rectBox.height;\n\n node.intersect = function(point) {\n return intersectRect(node, point);\n };\n\n return shapeSvg;\n};\n\nconst divider = (parent, node) => {\n // Add outer g element\n const shapeSvg = parent\n .insert('g')\n .attr('class', node.classes)\n .attr('id', node.id);\n\n // add the rect\n const rect = shapeSvg.insert('rect', ':first-child');\n\n const padding = 0 * node.padding;\n const halfPadding = padding / 2;\n\n // center the rect around its coordinate\n rect\n .attr('class', 'divider')\n .attr('x', node.x - node.width / 2 - halfPadding)\n .attr('y', node.y - node.height / 2)\n .attr('width', node.width + padding)\n .attr('height', node.height + padding);\n\n const rectBox = rect.node().getBBox();\n node.width = rectBox.width;\n node.height = rectBox.height;\n\n node.intersect = function(point) {\n return intersectRect(node, point);\n };\n\n return shapeSvg;\n};\n\nconst shapes = { rect, roundedWithTitle, noteGroup, divider };\n\nlet clusterElems = {};\n\nexport const insertCluster = (elem, node) => {\n log.trace('Inserting cluster');\n const shape = node.shape || 'rect';\n clusterElems[node.id] = shapes[shape](elem, node);\n};\nexport const getClusterTitleWidth = (elem, node) => {\n const label = createLabel(node.labelText, node.labelStyle, undefined, true);\n elem.node().appendChild(label);\n const width = label.getBBox().width;\n elem.node().removeChild(label);\n return width;\n};\n\nexport const clear = () => {\n clusterElems = {};\n};\n\nexport const positionCluster = node => {\n log.info('Position cluster');\n const el = clusterElems[node.id];\n\n el.attr('transform', 'translate(' + node.x + ', ' + node.y + ')');\n};\n","import { select } from 'd3';\nimport { logger } from '../logger'; // eslint-disable-line\n// let vertexNode;\n// if (getConfig().flowchart.htmlLabels) {\n// // TODO: addHtmlLabel accepts a labelStyle. Do we possibly have that?\n// const node = {\n// label: vertexText.replace(/fa[lrsb]?:fa-[\\w-]+/g, s => ``)\n// };\n// vertexNode = addHtmlLabel(svg, node).node();\n// vertexNode.parentNode.removeChild(vertexNode);\n// } else {\n// const svgLabel = document.createElementNS('http://www.w3.org/2000/svg', 'text');\n// svgLabel.setAttribute('style', styles.labelStyle.replace('color:', 'fill:'));\n\n// const rows = vertexText.split(common.lineBreakRegex);\n\n// for (let j = 0; j < rows.length; j++) {\n// const tspan = document.createElementNS('http://www.w3.org/2000/svg', 'tspan');\n// tspan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\n// tspan.setAttribute('dy', '1em');\n// tspan.setAttribute('x', '1');\n// tspan.textContent = rows[j];\n// svgLabel.appendChild(tspan);\n// }\n// vertexNode = svgLabel;\n// }\nimport { getConfig } from '../config';\n\nfunction applyStyle(dom, styleFn) {\n if (styleFn) {\n dom.attr('style', styleFn);\n }\n}\n\nfunction addHtmlLabel(node) {\n // var fo = root.append('foreignObject').attr('width', '100000');\n\n // var div = fo.append('xhtml:div');\n // div.attr('xmlns', 'http://www.w3.org/1999/xhtml');\n\n // var label = node.label;\n // switch (typeof label) {\n // case 'function':\n // div.insert(label);\n // break;\n // case 'object':\n // // Currently we assume this is a DOM object.\n // div.insert(function() {\n // return label;\n // });\n // break;\n // default:\n // div.html(label);\n // }\n\n // applyStyle(div, node.labelStyle);\n // div.style('display', 'inline-block');\n // // Fix for firefox\n // div.style('white-space', 'nowrap');\n\n // var client = div.node().getBoundingClientRect();\n // fo.attr('width', client.width).attr('height', client.height);\n const fo = select(document.createElementNS('http://www.w3.org/2000/svg', 'foreignObject'));\n const div = fo.append('xhtml:div');\n\n const label = node.label;\n const labelClass = node.isNode ? 'nodeLabel' : 'edgeLabel';\n div.html('' + label + '');\n\n applyStyle(div, node.labelStyle);\n div.style('display', 'inline-block');\n // Fix for firefox\n div.style('white-space', 'nowrap');\n div.attr('xmlns', 'http://www.w3.org/1999/xhtml');\n return fo.node();\n}\n\nconst createLabel = (_vertexText, style, isTitle, isNode) => {\n let vertexText = _vertexText || '';\n if (getConfig().flowchart.htmlLabels) {\n // TODO: addHtmlLabel accepts a labelStyle. Do we possibly have that?\n vertexText = vertexText.replace(/\\\\n|\\n/g, '
');\n logger.info('vertexText' + vertexText);\n const node = {\n isNode,\n label: vertexText.replace(\n /fa[lrsb]?:fa-[\\w-]+/g,\n s => ``\n )\n };\n let vertexNode = addHtmlLabel(node);\n // vertexNode.parentNode.removeChild(vertexNode);\n return vertexNode;\n } else {\n const svgLabel = document.createElementNS('http://www.w3.org/2000/svg', 'text');\n svgLabel.setAttribute('style', style.replace('color:', 'fill:'));\n let rows = [];\n if (typeof vertexText === 'string') {\n rows = vertexText.split(/\\\\n|\\n|
/gi);\n } else if (Array.isArray(vertexText)) {\n rows = vertexText;\n } else {\n rows = [];\n }\n\n for (let j = 0; j < rows.length; j++) {\n const tspan = document.createElementNS('http://www.w3.org/2000/svg', 'tspan');\n tspan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\n tspan.setAttribute('dy', '1em');\n tspan.setAttribute('x', '0');\n if (isTitle) {\n tspan.setAttribute('class', 'title-row');\n } else {\n tspan.setAttribute('class', 'row');\n }\n tspan.textContent = rows[j].trim();\n svgLabel.appendChild(tspan);\n }\n return svgLabel;\n }\n};\n\nexport default createLabel;\n","import { logger } from '../logger'; // eslint-disable-line\nimport createLabel from './createLabel';\nimport { line, curveBasis, select } from 'd3';\nimport { getConfig } from '../config';\nimport utils from '../utils';\n// import { calcLabelPosition } from '../utils';\n\nlet edgeLabels = {};\n\nexport const clear = () => {\n edgeLabels = {};\n};\n\nexport const insertEdgeLabel = (elem, edge) => {\n // Create the actual text element\n const labelElement = createLabel(edge.label, edge.labelStyle);\n\n // Create outer g, edgeLabel, this will be positioned after graph layout\n const edgeLabel = elem.insert('g').attr('class', 'edgeLabel');\n\n // Create inner g, label, this will be positioned now for centering the text\n const label = edgeLabel.insert('g').attr('class', 'label');\n label.node().appendChild(labelElement);\n\n // Center the label\n let bbox = labelElement.getBBox();\n if (getConfig().flowchart.htmlLabels) {\n const div = labelElement.children[0];\n const dv = select(labelElement);\n bbox = div.getBoundingClientRect();\n dv.attr('width', bbox.width);\n dv.attr('height', bbox.height);\n }\n label.attr('transform', 'translate(' + -bbox.width / 2 + ', ' + -bbox.height / 2 + ')');\n\n // Make element accessible by id for positioning\n edgeLabels[edge.id] = edgeLabel;\n\n // Update the abstract data of the edge with the new information about its width and height\n edge.width = bbox.width;\n edge.height = bbox.height;\n};\n\nexport const positionEdgeLabel = (edge, points) => {\n logger.info('Moving label', edge.id, edge.label, edgeLabels[edge.id]);\n if (edge.label) {\n const el = edgeLabels[edge.id];\n let x = edge.x;\n let y = edge.y;\n if (points) {\n // debugger;\n const pos = utils.calcLabelPosition(points);\n x = pos.x;\n y = pos.y;\n }\n el.attr('transform', 'translate(' + x + ', ' + y + ')');\n }\n};\n\n// const getRelationType = function(type) {\n// switch (type) {\n// case stateDb.relationType.AGGREGATION:\n// return 'aggregation';\n// case stateDb.relationType.EXTENSION:\n// return 'extension';\n// case stateDb.relationType.COMPOSITION:\n// return 'composition';\n// case stateDb.relationType.DEPENDENCY:\n// return 'dependency';\n// }\n// };\n\nconst outsideNode = (node, point) => {\n // logger.warn('Checking bounds ', node, point);\n const x = node.x;\n const y = node.y;\n const dx = Math.abs(point.x - x);\n const dy = Math.abs(point.y - y);\n const w = node.width / 2;\n const h = node.height / 2;\n if (dx >= w || dy >= h) {\n return true;\n }\n return false;\n};\n\nexport const intersection = (node, outsidePoint, insidePoint) => {\n logger.warn('intersection calc o:', outsidePoint, ' i:', insidePoint, node);\n const x = node.x;\n const y = node.y;\n\n const dx = Math.abs(x - insidePoint.x);\n const w = node.width / 2;\n let r = insidePoint.x < outsidePoint.x ? w - dx : w + dx;\n const h = node.height / 2;\n\n const edges = {\n x1: x - w,\n x2: x + w,\n y1: y - h,\n y2: y + h\n };\n\n if (\n outsidePoint.x === edges.x1 ||\n outsidePoint.x === edges.x2 ||\n outsidePoint.y === edges.y1 ||\n outsidePoint.y === edges.y2\n ) {\n logger.warn('calc equals on edge');\n return outsidePoint;\n }\n\n const Q = Math.abs(outsidePoint.y - insidePoint.y);\n const R = Math.abs(outsidePoint.x - insidePoint.x);\n // log.warn();\n if (Math.abs(y - outsidePoint.y) * w > Math.abs(x - outsidePoint.x) * h) { // eslint-disable-line\n // Intersection is top or bottom of rect.\n // let q = insidePoint.y < outsidePoint.y ? outsidePoint.y - h - y : y - h - outsidePoint.y;\n let q = insidePoint.y < outsidePoint.y ? outsidePoint.y - h - y : y - h - outsidePoint.y;\n r = (R * q) / Q;\n const res = {\n x: insidePoint.x < outsidePoint.x ? insidePoint.x + R - r : insidePoint.x - r,\n y: outsidePoint.y + q\n };\n logger.warn(`topp/bott calc, Q ${Q}, q ${q}, R ${R}, r ${r}`, res);\n\n return res;\n } else {\n // Intersection onn sides of rect\n // q = (Q * r) / R;\n // q = 2;\n // r = (R * q) / Q;\n if (insidePoint.x < outsidePoint.x) {\n r = outsidePoint.x - w - x;\n } else {\n // r = outsidePoint.x - w - x;\n r = x - w - outsidePoint.x;\n }\n let q = (q = (Q * r) / R);\n logger.warn(`sides calc, Q ${Q}, q ${q}, R ${R}, r ${r}`, {\n x: insidePoint.x < outsidePoint.x ? insidePoint.x + R - r : insidePoint.x + dx - w,\n y: insidePoint.y < outsidePoint.y ? insidePoint.y + q : insidePoint.y - q\n });\n\n return {\n x: insidePoint.x < outsidePoint.x ? insidePoint.x + R - r : insidePoint.x + dx - w,\n y: insidePoint.y < outsidePoint.y ? insidePoint.y + q : insidePoint.y - q\n };\n }\n};\n\n//(edgePaths, e, edge, clusterDb, diagramtype, graph)\nexport const insertEdge = function(elem, e, edge, clusterDb, diagramType, graph) {\n let points = edge.points;\n let pointsHasChanged = false;\n const tail = graph.node(e.v);\n var head = graph.node(e.w);\n\n if (head.intersect && tail.intersect) {\n points = points.slice(1, edge.points.length - 1);\n points.unshift(tail.intersect(points[0]));\n logger.info(\n 'Last point',\n points[points.length - 1],\n head,\n head.intersect(points[points.length - 1])\n );\n points.push(head.intersect(points[points.length - 1]));\n }\n if (edge.toCluster) {\n logger.trace('edge', edge);\n logger.trace('to cluster', clusterDb[edge.toCluster]);\n points = [];\n let lastPointOutside;\n let isInside = false;\n edge.points.forEach(point => {\n const node = clusterDb[edge.toCluster].node;\n\n if (!outsideNode(node, point) && !isInside) {\n logger.trace('inside', edge.toCluster, point, lastPointOutside);\n\n // First point inside the rect\n const inter = intersection(node, lastPointOutside, point);\n\n let pointPresent = false;\n points.forEach(p => {\n pointPresent = pointPresent || (p.x === inter.x && p.y === inter.y);\n });\n // if (!pointPresent) {\n if (!points.find(e => e.x === inter.x && e.y === inter.y)) {\n points.push(inter);\n } else {\n logger.warn('no intersect', inter, points);\n }\n isInside = true;\n } else {\n if (!isInside) points.push(point);\n }\n lastPointOutside = point;\n });\n pointsHasChanged = true;\n }\n\n if (edge.fromCluster) {\n logger.trace('edge', edge);\n logger.warn('from cluster', clusterDb[edge.fromCluster]);\n const updatedPoints = [];\n let lastPointOutside;\n let isInside = false;\n for (let i = points.length - 1; i >= 0; i--) {\n const point = points[i];\n const node = clusterDb[edge.fromCluster].node;\n\n if (!outsideNode(node, point) && !isInside) {\n logger.warn('inside', edge.fromCluster, point, node);\n\n // First point inside the rect\n const insterection = intersection(node, lastPointOutside, point);\n // logger.trace('intersect', intersection(node, lastPointOutside, point));\n updatedPoints.unshift(insterection);\n // points.push(insterection);\n isInside = true;\n } else {\n // at the outside\n logger.trace('Outside point', point);\n if (!isInside) updatedPoints.unshift(point);\n }\n lastPointOutside = point;\n }\n points = updatedPoints;\n pointsHasChanged = true;\n }\n\n // The data for our line\n const lineData = points.filter(p => !Number.isNaN(p.y));\n\n // This is the accessor function we talked about above\n const lineFunction = line()\n .x(function(d) {\n return d.x;\n })\n .y(function(d) {\n return d.y;\n })\n .curve(curveBasis);\n\n // Contruct stroke classes based on properties\n let strokeClasses;\n switch (edge.thickness) {\n case 'normal':\n strokeClasses = 'edge-thickness-normal';\n break;\n case 'thick':\n strokeClasses = 'edge-thickness-thick';\n break;\n default:\n strokeClasses = '';\n }\n switch (edge.pattern) {\n case 'solid':\n strokeClasses += ' edge-pattern-solid';\n break;\n case 'dotted':\n strokeClasses += ' edge-pattern-dotted';\n break;\n case 'dashed':\n strokeClasses += ' edge-pattern-dashed';\n break;\n }\n\n const svgPath = elem\n .append('path')\n .attr('d', lineFunction(lineData))\n .attr('id', edge.id)\n .attr('class', ' ' + strokeClasses + (edge.classes ? ' ' + edge.classes : ''));\n\n // DEBUG code, adds a red circle at each edge coordinate\n // edge.points.forEach(point => {\n // elem\n // .append('circle')\n // .style('stroke', 'red')\n // .style('fill', 'red')\n // .attr('r', 1)\n // .attr('cx', point.x)\n // .attr('cy', point.y);\n // });\n\n let url = '';\n if (getConfig().state.arrowMarkerAbsolute) {\n url =\n window.location.protocol +\n '//' +\n window.location.host +\n window.location.pathname +\n window.location.search;\n url = url.replace(/\\(/g, '\\\\(');\n url = url.replace(/\\)/g, '\\\\)');\n }\n logger.info('arrowTypeStart', edge.arrowTypeStart);\n logger.info('arrowTypeEnd', edge.arrowTypeEnd);\n\n switch (edge.arrowTypeStart) {\n case 'arrow_cross':\n svgPath.attr('marker-start', 'url(' + url + '#' + diagramType + '-crossStart' + ')');\n break;\n case 'arrow_point':\n svgPath.attr('marker-start', 'url(' + url + '#' + diagramType + '-pointStart' + ')');\n break;\n case 'arrow_barb':\n svgPath.attr('marker-start', 'url(' + url + '#' + diagramType + '-barbStart' + ')');\n break;\n case 'arrow_circle':\n svgPath.attr('marker-start', 'url(' + url + '#' + diagramType + '-circleStart' + ')');\n break;\n case 'aggregation':\n svgPath.attr('marker-start', 'url(' + url + '#' + diagramType + '-aggregationStart' + ')');\n break;\n case 'extension':\n svgPath.attr('marker-start', 'url(' + url + '#' + diagramType + '-extensionStart' + ')');\n break;\n case 'composition':\n svgPath.attr('marker-start', 'url(' + url + '#' + diagramType + '-compositionStart' + ')');\n break;\n case 'dependency':\n svgPath.attr('marker-start', 'url(' + url + '#' + diagramType + '-dependencyStart' + ')');\n break;\n default:\n }\n switch (edge.arrowTypeEnd) {\n case 'arrow_cross':\n svgPath.attr('marker-end', 'url(' + url + '#' + diagramType + '-crossEnd' + ')');\n break;\n case 'arrow_point':\n svgPath.attr('marker-end', 'url(' + url + '#' + diagramType + '-pointEnd' + ')');\n break;\n case 'arrow_barb':\n svgPath.attr('marker-end', 'url(' + url + '#' + diagramType + '-barbEnd' + ')');\n break;\n case 'arrow_circle':\n svgPath.attr('marker-end', 'url(' + url + '#' + diagramType + '-circleEnd' + ')');\n break;\n case 'aggregation':\n svgPath.attr('marker-end', 'url(' + url + '#' + diagramType + '-aggregationEnd' + ')');\n break;\n case 'extension':\n svgPath.attr('marker-end', 'url(' + url + '#' + diagramType + '-extensionEnd' + ')');\n break;\n case 'composition':\n svgPath.attr('marker-end', 'url(' + url + '#' + diagramType + '-compositionEnd' + ')');\n break;\n case 'dependency':\n svgPath.attr('marker-end', 'url(' + url + '#' + diagramType + '-dependencyEnd' + ')');\n break;\n default:\n }\n\n if (pointsHasChanged) {\n return points;\n }\n};\n","import dagre from 'dagre';\nimport graphlib from 'graphlib';\nimport insertMarkers from './markers';\nimport { updateNodeBounds } from './shapes/util';\nimport {\n clear as clearGraphlib,\n clusterDb,\n adjustClustersAndEdges,\n findNonClusterChild\n} from './mermaid-graphlib';\nimport { insertNode, positionNode, clear as clearNodes, setNodeElem } from './nodes';\nimport { insertCluster, clear as clearClusters } from './clusters';\nimport { insertEdgeLabel, positionEdgeLabel, insertEdge, clear as clearEdges } from './edges';\nimport { logger as log } from '../logger';\n\nconst recursiveRender = (_elem, graph, diagramtype, parentCluster) => {\n log.info('Graph in recursive render:', graphlib.json.write(graph), parentCluster);\n const dir = graph.graph().rankdir;\n log.warn('Dir in recursive render - dir:', dir);\n\n const elem = _elem.insert('g').attr('class', 'root'); // eslint-disable-line\n if (!graph.nodes()) {\n log.info('No nodes found for', graph);\n } else {\n log.info('Recursive render', graph.nodes());\n }\n if (graph.edges().length > 0) {\n log.info('Recursive edges', graph.edge(graph.edges()[0]));\n }\n const clusters = elem.insert('g').attr('class', 'clusters'); // eslint-disable-line\n const edgePaths = elem.insert('g').attr('class', 'edgePaths');\n const edgeLabels = elem.insert('g').attr('class', 'edgeLabels');\n const nodes = elem.insert('g').attr('class', 'nodes');\n\n // Insert nodes, this will insert them into the dom and each node will get a size. The size is updated\n // to the abstract node and is later used by dagre for the layout\n graph.nodes().forEach(function(v) {\n const node = graph.node(v);\n if (typeof parentCluster !== 'undefined') {\n const data = JSON.parse(JSON.stringify(parentCluster.clusterData));\n // data.clusterPositioning = true;\n log.info('Setting data for cluster', data);\n graph.setNode(parentCluster.id, data);\n graph.setParent(v, parentCluster.id, data);\n }\n log.info('(Insert) Node ' + v + ': ' + JSON.stringify(graph.node(v)));\n if (node && node.clusterNode) {\n // const children = graph.children(v);\n log.info('Cluster identified', v, node, graph.node(v));\n const newEl = recursiveRender(nodes, node.graph, diagramtype, graph.node(v));\n updateNodeBounds(node, newEl);\n setNodeElem(newEl, node);\n\n log.warn('Recursive render complete', newEl, node);\n } else {\n if (graph.children(v).length > 0) {\n // This is a cluster but not to be rendered recusively\n // Render as before\n log.info('Cluster - the non recursive path', v, node.id, node, graph);\n log.info(findNonClusterChild(node.id, graph));\n clusterDb[node.id] = { id: findNonClusterChild(node.id, graph), node };\n // insertCluster(clusters, graph.node(v));\n } else {\n log.info('Node - the non recursive path', v, node.id, node);\n insertNode(nodes, graph.node(v), dir);\n }\n }\n });\n\n // Insert labels, this will insert them into the dom so that the width can be calculated\n // Also figure out which edges point to/from clusters and adjust them accordingly\n // Edges from/to clusters really points to the first child in the cluster.\n // TODO: pick optimal child in the cluster to us as link anchor\n graph.edges().forEach(function(e) {\n const edge = graph.edge(e.v, e.w, e.name);\n log.info('Edge ' + e.v + ' -> ' + e.w + ': ' + JSON.stringify(e));\n log.info('Edge ' + e.v + ' -> ' + e.w + ': ', e, ' ', JSON.stringify(graph.edge(e)));\n\n // Check if link is either from or to a cluster\n log.info('Fix', clusterDb, 'ids:', e.v, e.w, 'Translateing: ', clusterDb[e.v], clusterDb[e.w]);\n insertEdgeLabel(edgeLabels, edge);\n });\n\n graph.edges().forEach(function(e) {\n log.info('Edge ' + e.v + ' -> ' + e.w + ': ' + JSON.stringify(e));\n });\n log.info('#############################################');\n log.info('### Layout ###');\n log.info('#############################################');\n log.info(graph);\n dagre.layout(graph);\n log.info('Graph after layout:', graphlib.json.write(graph));\n // Move the nodes to the correct place\n graph.nodes().forEach(function(v) {\n const node = graph.node(v);\n log.info('Position ' + v + ': ' + JSON.stringify(graph.node(v)));\n log.info(\n 'Position ' + v + ': (' + node.x,\n ',' + node.y,\n ') width: ',\n node.width,\n ' height: ',\n node.height\n );\n if (node && node.clusterNode) {\n // clusterDb[node.id].node = node;\n\n positionNode(node);\n } else {\n // Non cluster node\n if (graph.children(v).length > 0) {\n // A cluster in the non-recurive way\n // positionCluster(node);\n insertCluster(clusters, node);\n clusterDb[node.id].node = node;\n } else {\n positionNode(node);\n }\n }\n });\n\n // Move the edge labels to the correct place after layout\n graph.edges().forEach(function(e) {\n const edge = graph.edge(e);\n log.info('Edge ' + e.v + ' -> ' + e.w + ': ' + JSON.stringify(edge), edge);\n\n const updatedPath = insertEdge(edgePaths, e, edge, clusterDb, diagramtype, graph);\n positionEdgeLabel(edge, updatedPath);\n });\n\n return elem;\n};\n\nexport const render = (elem, graph, markers, diagramtype, id) => {\n insertMarkers(elem, markers, diagramtype, id);\n clearNodes();\n clearEdges();\n clearClusters();\n clearGraphlib();\n\n log.warn('Graph before:', graphlib.json.write(graph));\n adjustClustersAndEdges(graph);\n log.warn('Graph after:', graphlib.json.write(graph));\n log.warn('Graph ever after:', graph.graph());\n recursiveRender(elem, graph, diagramtype);\n};\n\n// const shapeDefinitions = {};\n// export const addShape = ({ shapeType: fun }) => {\n// shapeDefinitions[shapeType] = fun;\n// };\n\n// const arrowDefinitions = {};\n// export const addArrow = ({ arrowType: fun }) => {\n// arrowDefinitions[arrowType] = fun;\n// };\n","/*\n * Borrowed with love from from dagrge-d3. Many thanks to cpettitt!\n */\n\nimport node from './intersect-node.js';\nimport circle from './intersect-circle.js';\nimport ellipse from './intersect-ellipse.js';\nimport polygon from './intersect-polygon.js';\nimport rect from './intersect-rect.js';\n\nexport default {\n node,\n circle,\n ellipse,\n polygon,\n rect\n};\n","import intersectEllipse from './intersect-ellipse';\n\nfunction intersectCircle(node, rx, point) {\n return intersectEllipse(node, rx, rx, point);\n}\n\nexport default intersectCircle;\n","function intersectEllipse(node, rx, ry, point) {\n // Formulae from: http://mathworld.wolfram.com/Ellipse-LineIntersection.html\n\n var cx = node.x;\n var cy = node.y;\n\n var px = cx - point.x;\n var py = cy - point.y;\n\n var det = Math.sqrt(rx * rx * py * py + ry * ry * px * px);\n\n var dx = Math.abs((rx * ry * px) / det);\n if (point.x < cx) {\n dx = -dx;\n }\n var dy = Math.abs((rx * ry * py) / det);\n if (point.y < cy) {\n dy = -dy;\n }\n\n return { x: cx + dx, y: cy + dy };\n}\n\nexport default intersectEllipse;\n","/*\n * Returns the point at which two lines, p and q, intersect or returns\n * undefined if they do not intersect.\n */\nfunction intersectLine(p1, p2, q1, q2) {\n // Algorithm from J. Avro, (ed.) Graphics Gems, No 2, Morgan Kaufmann, 1994,\n // p7 and p473.\n\n var a1, a2, b1, b2, c1, c2;\n var r1, r2, r3, r4;\n var denom, offset, num;\n var x, y;\n\n // Compute a1, b1, c1, where line joining points 1 and 2 is F(x,y) = a1 x +\n // b1 y + c1 = 0.\n a1 = p2.y - p1.y;\n b1 = p1.x - p2.x;\n c1 = p2.x * p1.y - p1.x * p2.y;\n\n // Compute r3 and r4.\n r3 = a1 * q1.x + b1 * q1.y + c1;\n r4 = a1 * q2.x + b1 * q2.y + c1;\n\n // Check signs of r3 and r4. If both point 3 and point 4 lie on\n // same side of line 1, the line segments do not intersect.\n if (r3 !== 0 && r4 !== 0 && sameSign(r3, r4)) {\n return /*DONT_INTERSECT*/;\n }\n\n // Compute a2, b2, c2 where line joining points 3 and 4 is G(x,y) = a2 x + b2 y + c2 = 0\n a2 = q2.y - q1.y;\n b2 = q1.x - q2.x;\n c2 = q2.x * q1.y - q1.x * q2.y;\n\n // Compute r1 and r2\n r1 = a2 * p1.x + b2 * p1.y + c2;\n r2 = a2 * p2.x + b2 * p2.y + c2;\n\n // Check signs of r1 and r2. If both point 1 and point 2 lie\n // on same side of second line segment, the line segments do\n // not intersect.\n if (r1 !== 0 && r2 !== 0 && sameSign(r1, r2)) {\n return /*DONT_INTERSECT*/;\n }\n\n // Line segments intersect: compute intersection point.\n denom = a1 * b2 - a2 * b1;\n if (denom === 0) {\n return /*COLLINEAR*/;\n }\n\n offset = Math.abs(denom / 2);\n\n // The denom/2 is to get rounding instead of truncating. It\n // is added or subtracted to the numerator, depending upon the\n // sign of the numerator.\n num = b1 * c2 - b2 * c1;\n x = num < 0 ? (num - offset) / denom : (num + offset) / denom;\n\n num = a2 * c1 - a1 * c2;\n y = num < 0 ? (num - offset) / denom : (num + offset) / denom;\n\n return { x: x, y: y };\n}\n\nfunction sameSign(r1, r2) {\n return r1 * r2 > 0;\n}\n\nexport default intersectLine;\n","module.exports = intersectNode;\n\nfunction intersectNode(node, point) {\n console.info('Intersect Node');\n return node.intersect(point);\n}\n","/* eslint \"no-console\": off */\n\nimport intersectLine from './intersect-line';\n\nexport default intersectPolygon;\n\n/*\n * Returns the point ({x, y}) at which the point argument intersects with the\n * node argument assuming that it has the shape specified by polygon.\n */\nfunction intersectPolygon(node, polyPoints, point) {\n var x1 = node.x;\n var y1 = node.y;\n\n var intersections = [];\n\n var minX = Number.POSITIVE_INFINITY;\n var minY = Number.POSITIVE_INFINITY;\n if (typeof polyPoints.forEach === 'function') {\n polyPoints.forEach(function(entry) {\n minX = Math.min(minX, entry.x);\n minY = Math.min(minY, entry.y);\n });\n } else {\n minX = Math.min(minX, polyPoints.x);\n minY = Math.min(minY, polyPoints.y);\n }\n\n var left = x1 - node.width / 2 - minX;\n var top = y1 - node.height / 2 - minY;\n\n for (var i = 0; i < polyPoints.length; i++) {\n var p1 = polyPoints[i];\n var p2 = polyPoints[i < polyPoints.length - 1 ? i + 1 : 0];\n var intersect = intersectLine(\n node,\n point,\n { x: left + p1.x, y: top + p1.y },\n { x: left + p2.x, y: top + p2.y }\n );\n if (intersect) {\n intersections.push(intersect);\n }\n }\n\n if (!intersections.length) {\n console.log('NO INTERSECTION FOUND, RETURN NODE CENTER', node);\n return node;\n }\n\n if (intersections.length > 1) {\n // More intersections, find the one nearest to edge end point\n intersections.sort(function(p, q) {\n var pdx = p.x - point.x;\n var pdy = p.y - point.y;\n var distp = Math.sqrt(pdx * pdx + pdy * pdy);\n\n var qdx = q.x - point.x;\n var qdy = q.y - point.y;\n var distq = Math.sqrt(qdx * qdx + qdy * qdy);\n\n return distp < distq ? -1 : distp === distq ? 0 : 1;\n });\n }\n return intersections[0];\n}\n","const intersectRect = (node, point) => {\n var x = node.x;\n var y = node.y;\n\n // Rectangle intersection algorithm from:\n // http://math.stackexchange.com/questions/108113/find-edge-between-two-boxes\n var dx = point.x - x;\n var dy = point.y - y;\n var w = node.width / 2;\n var h = node.height / 2;\n\n var sx, sy;\n if (Math.abs(dy) * w > Math.abs(dx) * h) {\n // Intersection is top or bottom of rect.\n if (dy < 0) {\n h = -h;\n }\n sx = dy === 0 ? 0 : (h * dx) / dy;\n sy = h;\n } else {\n // Intersection is left or right of rect.\n if (dx < 0) {\n w = -w;\n }\n sx = w;\n sy = dx === 0 ? 0 : (w * dy) / dx;\n }\n\n return { x: x + sx, y: y + sy };\n};\n\nexport default intersectRect;\n","/**\n * Setup arrow head and define the marker. The result is appended to the svg.\n */\n\nimport { logger } from '../logger';\n\n// Only add the number of markers that the diagram needs\nconst insertMarkers = (elem, markerArray, type, id) => {\n markerArray.forEach(markerName => {\n markers[markerName](elem, type, id);\n });\n};\n\nconst extension = (elem, type, id) => {\n logger.trace('Making markers for ', id);\n elem\n .append('defs')\n .append('marker')\n .attr('id', type + '-extensionStart')\n .attr('class', 'marker extension ' + type)\n .attr('refX', 0)\n .attr('refY', 7)\n .attr('markerWidth', 190)\n .attr('markerHeight', 240)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 1,7 L18,13 V 1 Z');\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', type + '-extensionEnd')\n .attr('class', 'marker extension ' + type)\n .attr('refX', 19)\n .attr('refY', 7)\n .attr('markerWidth', 20)\n .attr('markerHeight', 28)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 1,1 V 13 L18,7 Z'); // this is actual shape for arrowhead\n};\n\nconst composition = (elem, type) => {\n elem\n .append('defs')\n .append('marker')\n .attr('id', type + '-compositionStart')\n .attr('class', 'marker composition ' + type)\n .attr('refX', 0)\n .attr('refY', 7)\n .attr('markerWidth', 190)\n .attr('markerHeight', 240)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z');\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', type + '-compositionEnd')\n .attr('class', 'marker composition ' + type)\n .attr('refX', 19)\n .attr('refY', 7)\n .attr('markerWidth', 20)\n .attr('markerHeight', 28)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z');\n};\nconst aggregation = (elem, type) => {\n elem\n .append('defs')\n .append('marker')\n .attr('id', type + '-aggregationStart')\n .attr('class', 'marker aggregation ' + type)\n .attr('refX', 0)\n .attr('refY', 7)\n .attr('markerWidth', 190)\n .attr('markerHeight', 240)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z');\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', type + '-aggregationEnd')\n .attr('class', 'marker aggregation ' + type)\n .attr('refX', 19)\n .attr('refY', 7)\n .attr('markerWidth', 20)\n .attr('markerHeight', 28)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z');\n};\nconst dependency = (elem, type) => {\n elem\n .append('defs')\n .append('marker')\n .attr('id', type + '-dependencyStart')\n .attr('class', 'marker dependency ' + type)\n .attr('refX', 0)\n .attr('refY', 7)\n .attr('markerWidth', 190)\n .attr('markerHeight', 240)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 5,7 L9,13 L1,7 L9,1 Z');\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', type + '-dependencyEnd')\n .attr('class', 'marker dependency ' + type)\n .attr('refX', 19)\n .attr('refY', 7)\n .attr('markerWidth', 20)\n .attr('markerHeight', 28)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 18,7 L9,13 L14,7 L9,1 Z');\n};\nconst point = (elem, type) => {\n elem\n .append('marker')\n .attr('id', type + '-pointEnd')\n .attr('class', 'marker ' + type)\n .attr('viewBox', '0 0 10 10')\n .attr('refX', 9)\n .attr('refY', 5)\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('markerWidth', 12)\n .attr('markerHeight', 12)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 0 0 L 10 5 L 0 10 z')\n .attr('class', 'arrowMarkerPath')\n .style('stroke-width', 1)\n .style('stroke-dasharray', '1,0');\n elem\n .append('marker')\n .attr('id', type + '-pointStart')\n .attr('class', 'marker ' + type)\n .attr('viewBox', '0 0 10 10')\n .attr('refX', 0)\n .attr('refY', 5)\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('markerWidth', 12)\n .attr('markerHeight', 12)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 0 5 L 10 10 L 10 0 z')\n .attr('class', 'arrowMarkerPath')\n .style('stroke-width', 1)\n .style('stroke-dasharray', '1,0');\n};\nconst circle = (elem, type) => {\n elem\n .append('marker')\n .attr('id', type + '-circleEnd')\n .attr('class', 'marker ' + type)\n .attr('viewBox', '0 0 10 10')\n .attr('refX', 11)\n .attr('refY', 5)\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('markerWidth', 11)\n .attr('markerHeight', 11)\n .attr('orient', 'auto')\n .append('circle')\n .attr('cx', '5')\n .attr('cy', '5')\n .attr('r', '5')\n .attr('class', 'arrowMarkerPath')\n .style('stroke-width', 1)\n .style('stroke-dasharray', '1,0');\n\n elem\n .append('marker')\n .attr('id', type + '-circleStart')\n .attr('class', 'marker ' + type)\n .attr('viewBox', '0 0 10 10')\n .attr('refX', -1)\n .attr('refY', 5)\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('markerWidth', 11)\n .attr('markerHeight', 11)\n .attr('orient', 'auto')\n .append('circle')\n .attr('cx', '5')\n .attr('cy', '5')\n .attr('r', '5')\n .attr('class', 'arrowMarkerPath')\n .style('stroke-width', 1)\n .style('stroke-dasharray', '1,0');\n};\nconst cross = (elem, type) => {\n elem\n .append('marker')\n .attr('id', type + '-crossEnd')\n .attr('class', 'marker cross ' + type)\n .attr('viewBox', '0 0 11 11')\n .attr('refX', 12)\n .attr('refY', 5.2)\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('markerWidth', 11)\n .attr('markerHeight', 11)\n .attr('orient', 'auto')\n .append('path')\n // .attr('stroke', 'black')\n .attr('d', 'M 1,1 l 9,9 M 10,1 l -9,9')\n .attr('class', 'arrowMarkerPath')\n .style('stroke-width', 2)\n .style('stroke-dasharray', '1,0');\n\n elem\n .append('marker')\n .attr('id', type + '-crossStart')\n .attr('class', 'marker cross ' + type)\n .attr('viewBox', '0 0 11 11')\n .attr('refX', -1)\n .attr('refY', 5.2)\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('markerWidth', 11)\n .attr('markerHeight', 11)\n .attr('orient', 'auto')\n .append('path')\n // .attr('stroke', 'black')\n .attr('d', 'M 1,1 l 9,9 M 10,1 l -9,9')\n .attr('class', 'arrowMarkerPath')\n .style('stroke-width', 2)\n .style('stroke-dasharray', '1,0');\n};\nconst barb = (elem, type) => {\n elem\n .append('defs')\n .append('marker')\n .attr('id', type + '-barbEnd')\n .attr('refX', 19)\n .attr('refY', 7)\n .attr('markerWidth', 20)\n .attr('markerHeight', 14)\n .attr('markerUnits', 0)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 19,7 L9,13 L14,7 L9,1 Z');\n};\n\n// TODO rename the class diagram markers to something shape descriptive and semanitc free\nconst markers = {\n extension,\n composition,\n aggregation,\n dependency,\n point,\n circle,\n cross,\n barb\n};\nexport default insertMarkers;\n","/**\n * Decorates with functions required by mermaids dagre-wrapper.\n */\nimport { logger as log } from '../logger';\nimport graphlib from 'graphlib';\n\nexport let clusterDb = {};\nlet decendants = {};\nlet parents = {};\n\nexport const clear = () => {\n decendants = {};\n parents = {};\n clusterDb = {};\n};\n\nconst isDecendant = (id, ancenstorId) => {\n // if (id === ancenstorId) return true;\n\n log.debug(\n 'In isDecendant',\n ancenstorId,\n ' ',\n id,\n ' = ',\n decendants[ancenstorId].indexOf(id) >= 0\n );\n if (decendants[ancenstorId].indexOf(id) >= 0) return true;\n\n return false;\n};\n\nconst edgeInCluster = (edge, clusterId) => {\n log.info('Decendants of ', clusterId, ' is ', decendants[clusterId]);\n log.info('Edge is ', edge);\n // Edges to/from the cluster is not in the cluster, they are in the parent\n if (edge.v === clusterId) return false;\n if (edge.w === clusterId) return false;\n\n if (!decendants[clusterId]) {\n log.debug('Tilt, ', clusterId, ',not in decendants');\n return false;\n }\n log.info('Here ');\n\n if (decendants[clusterId].indexOf(edge.v) >= 0) return true;\n if (isDecendant(edge.v, clusterId)) return true;\n if (isDecendant(edge.w, clusterId)) return true;\n if (decendants[clusterId].indexOf(edge.w) >= 0) return true;\n\n return false;\n};\n\nconst copy = (clusterId, graph, newGraph, rootId) => {\n log.info(\n 'Copying children of ',\n clusterId,\n 'root',\n rootId,\n 'data',\n graph.node(clusterId),\n rootId\n );\n const nodes = graph.children(clusterId) || [];\n\n // Include cluster node if it is not the root\n if (clusterId !== rootId) {\n nodes.push(clusterId);\n }\n\n log.debug('Copying (nodes) clusterId', clusterId, 'nodes', nodes);\n\n nodes.forEach(node => {\n if (graph.children(node).length > 0) {\n copy(node, graph, newGraph, rootId);\n } else {\n const data = graph.node(node);\n log.info('cp ', node, ' to ', rootId, ' with parent ', clusterId); //,node, data, ' parent is ', clusterId);\n newGraph.setNode(node, data);\n log.debug('Setting parent', node, graph.parent(node));\n if (rootId !== graph.parent(node)) {\n newGraph.setParent(node, graph.parent(node));\n }\n\n if (clusterId !== rootId && node !== clusterId) {\n log.debug('Setting parent', node, clusterId);\n newGraph.setParent(node, clusterId);\n } else {\n log.info('In copy ', clusterId, 'root', rootId, 'data', graph.node(clusterId), rootId);\n log.debug(\n 'Not Setting parent for node=',\n node,\n 'cluster!==rootId',\n clusterId !== rootId,\n 'node!==clusterId',\n node !== clusterId\n );\n }\n const edges = graph.edges(node);\n log.debug('Copying Edges', edges);\n edges.forEach(edge => {\n log.info('Edge', edge);\n const data = graph.edge(edge.v, edge.w, edge.name);\n log.info('Edge data', data, rootId);\n try {\n // Do not copy edges in and out of the root cluster, they belong to the parent graph\n if (edgeInCluster(edge, rootId)) {\n log.info('Copying as ', edge.v, edge.w, data, edge.name);\n newGraph.setEdge(edge.v, edge.w, data, edge.name);\n log.info('newGraph edges ', newGraph.edges(), newGraph.edge(newGraph.edges()[0]));\n } else {\n log.info(\n 'Skipping copy of edge ',\n edge.v,\n '-->',\n edge.w,\n ' rootId: ',\n rootId,\n ' clusterId:',\n clusterId\n );\n }\n } catch (e) {\n log.error(e);\n }\n });\n }\n log.debug('Removing node', node);\n graph.removeNode(node);\n });\n};\nexport const extractDecendants = (id, graph) => {\n // log.debug('Extracting ', id);\n const children = graph.children(id);\n let res = [].concat(children);\n\n for (let i = 0; i < children.length; i++) {\n parents[children[i]] = id;\n res = res.concat(extractDecendants(children[i], graph));\n }\n\n return res;\n};\n\n/**\n * Validates the graph, checking that all parent child relation points to existing nodes and that\n * edges between nodes also ia correct. When not correct the function logs the discrepancies.\n * @param {graphlib graph} g\n */\nexport const validate = graph => {\n const edges = graph.edges();\n log.trace('Edges: ', edges);\n for (let i = 0; i < edges.length; i++) {\n if (graph.children(edges[i].v).length > 0) {\n log.trace('The node ', edges[i].v, ' is part of and edge even though it has children');\n return false;\n }\n if (graph.children(edges[i].w).length > 0) {\n log.trace('The node ', edges[i].w, ' is part of and edge even though it has children');\n return false;\n }\n }\n return true;\n};\n\n/**\n * Finds a child that is not a cluster. When faking a edge between a node and a cluster.\n * @param {Finds a } id\n * @param {*} graph\n */\nexport const findNonClusterChild = (id, graph) => {\n // const node = graph.node(id);\n log.trace('Searching', id);\n // const children = graph.children(id).reverse();\n const children = graph.children(id); //.reverse();\n log.trace('Searching children of id ', id, children);\n if (children.length < 1) {\n log.trace('This is a valid node', id);\n return id;\n }\n for (let i = 0; i < children.length; i++) {\n const _id = findNonClusterChild(children[i], graph);\n if (_id) {\n log.trace('Found replacement for', id, ' => ', _id);\n return _id;\n }\n }\n};\n\nconst getAnchorId = id => {\n if (!clusterDb[id]) {\n return id;\n }\n // If the cluster has no external connections\n if (!clusterDb[id].externalConnections) {\n return id;\n }\n\n // Return the replacement node\n if (clusterDb[id]) {\n return clusterDb[id].id;\n }\n return id;\n};\n\nexport const adjustClustersAndEdges = (graph, depth) => {\n if (!graph || depth > 10) {\n log.debug('Opting out, no graph ');\n return;\n } else {\n log.debug('Opting in, graph ');\n }\n // Go through the nodes and for each cluster found, save a replacment node, this can be used when\n // faking a link to a cluster\n graph.nodes().forEach(function(id) {\n const children = graph.children(id);\n if (children.length > 0) {\n log.warn(\n 'Cluster identified',\n id,\n ' Replacement id in edges: ',\n findNonClusterChild(id, graph)\n );\n decendants[id] = extractDecendants(id, graph);\n clusterDb[id] = { id: findNonClusterChild(id, graph), clusterData: graph.node(id) };\n }\n });\n\n // Check incoming and outgoing edges for each cluster\n graph.nodes().forEach(function(id) {\n const children = graph.children(id);\n const edges = graph.edges();\n if (children.length > 0) {\n log.debug('Cluster identified', id, decendants);\n edges.forEach(edge => {\n // log.debug('Edge, decendants: ', edge, decendants[id]);\n\n // Check if any edge leaves the cluster (not the actual cluster, thats a link from the box)\n if (edge.v !== id && edge.w !== id) {\n // Any edge where either the one of the nodes is decending to the cluster but not the other\n // if (decendants[id].indexOf(edge.v) < 0 && decendants[id].indexOf(edge.w) < 0) {\n\n const d1 = isDecendant(edge.v, id);\n const d2 = isDecendant(edge.w, id);\n\n // d1 xor d2 - if either d1 is true and d2 is false or the other way around\n if (d1 ^ d2) {\n log.debug('Edge: ', edge, ' leaves cluster ', id);\n log.debug('Decendants of ', id, ': ', decendants[id]);\n clusterDb[id].externalConnections = true;\n }\n }\n });\n }\n });\n\n extractor(graph, 0);\n\n // For clusters with incoming and/or outgoing edges translate those edges to a real node\n // in the cluster inorder to fake the edge\n graph.edges().forEach(function(e) {\n const edge = graph.edge(e);\n log.trace('Edge ' + e.v + ' -> ' + e.w + ': ' + JSON.stringify(e));\n log.trace('Edge ' + e.v + ' -> ' + e.w + ': ' + JSON.stringify(graph.edge(e)));\n\n let v = e.v;\n let w = e.w;\n // Check if link is either from or to a cluster\n log.trace('Fix', clusterDb, 'ids:', e.v, e.w, 'Translateing: ', clusterDb[e.v], clusterDb[e.w]);\n if (clusterDb[e.v] || clusterDb[e.w]) {\n log.warn('Fixing and trixing - removing', e.v, e.w, e.name);\n v = getAnchorId(e.v);\n w = getAnchorId(e.w);\n graph.removeEdge(e.v, e.w, e.name);\n if (v !== e.v) edge.fromCluster = e.v;\n if (w !== e.w) edge.toCluster = e.w;\n log.warn('Replacing with', v, w, e.name);\n graph.setEdge(v, w, edge, e.name);\n }\n });\n log.warn('Adjusted Graph', graphlib.json.write(graph));\n\n log.trace(clusterDb);\n\n // Remove references to extracted cluster\n // graph.edges().forEach(edge => {\n // if (isDecendant(edge.v, clusterId) || isDecendant(edge.w, clusterId)) {\n // graph.removeEdge(edge);\n // }\n // });\n};\n\nexport const extractor = (graph, depth) => {\n log.debug('extractor - ', depth, graphlib.json.write(graph), graph.children('D'));\n if (depth > 10) {\n log.error('Bailing out');\n return;\n }\n // For clusters without incoming and/or outgoing edges, create a new cluster-node\n // containing the nodes and edges in the custer in a new graph\n // for (let i = 0;)\n let nodes = graph.nodes();\n let hasChildren = false;\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n const children = graph.children(node);\n hasChildren = hasChildren || children.length > 0;\n }\n\n if (!hasChildren) {\n log.debug('Done, no node has children', graph.nodes());\n return;\n }\n // const clusters = Object.keys(clusterDb);\n // clusters.forEach(clusterId => {\n log.debug('Nodes = ', nodes, depth);\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n\n log.debug(\n 'Extracting node',\n node,\n clusterDb,\n clusterDb[node] && !clusterDb[node].externalConnections,\n !graph.parent(node),\n graph.node(node),\n graph.children('D'),\n ' Depth ',\n depth\n );\n // Note that the node might have been removed after the Object.keys call so better check\n // that it still is in the game\n if (!clusterDb[node]) {\n // Skip if the node is not a cluster\n log.debug('Not a cluster', node, depth);\n // break;\n } else if (\n !clusterDb[node].externalConnections &&\n !graph.parent(node) &&\n graph.children(node) &&\n graph.children(node).length > 0\n ) {\n log.debug(\n 'Cluster without external connections, without a parent and with children',\n node,\n depth\n );\n\n const graphSettings = graph.graph();\n\n const clusterGraph = new graphlib.Graph({\n multigraph: true,\n compound: true\n })\n .setGraph({\n rankdir: graphSettings.rankdir === 'TB' ? 'LR' : 'TB',\n // Todo: set proper spacing\n nodesep: 50,\n ranksep: 50,\n marginx: 8,\n marginy: 8\n })\n .setDefaultEdgeLabel(function() {\n return {};\n });\n\n log.debug('Old graph before copy', graphlib.json.write(graph));\n copy(node, graph, clusterGraph, node);\n graph.setNode(node, {\n clusterNode: true,\n id: node,\n clusterData: clusterDb[node].clusterData,\n labelText: clusterDb[node].labelText,\n graph: clusterGraph\n });\n log.debug('New graph after copy', graphlib.json.write(clusterGraph));\n log.debug('Old graph after copy', graphlib.json.write(graph));\n } else {\n log.debug(\n 'Cluster ** ',\n node,\n ' **not meeting the criteria !externalConnections:',\n !clusterDb[node].externalConnections,\n ' no parent: ',\n !graph.parent(node),\n ' children ',\n graph.children(node) && graph.children(node).length > 0,\n graph.children('D'),\n depth\n );\n log.debug(clusterDb);\n }\n }\n\n nodes = graph.nodes();\n log.debug('New list of nodes', nodes);\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n const data = graph.node(node);\n log.debug(' Now next leveö', node, data);\n if (data.clusterNode) {\n extractor(data.graph, depth + 1);\n }\n }\n};\n","import { select } from 'd3';\nimport { logger } from '../logger'; // eslint-disable-line\nimport { labelHelper, updateNodeBounds, insertPolygonShape } from './shapes/util';\nimport { getConfig } from '../config';\nimport intersect from './intersect/index.js';\nimport createLabel from './createLabel';\nimport note from './shapes/note';\n\nconst question = (parent, node) => {\n const { shapeSvg, bbox } = labelHelper(parent, node, undefined, true);\n\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const s = w + h;\n const points = [\n { x: s / 2, y: 0 },\n { x: s, y: -s / 2 },\n { x: s / 2, y: -s },\n { x: 0, y: -s / 2 }\n ];\n\n logger.info('Question main (Circle)');\n\n const questionElem = insertPolygonShape(shapeSvg, s, s, points);\n updateNodeBounds(node, questionElem);\n node.intersect = function(point) {\n logger.warn('Intersect called');\n return intersect.polygon(node, points, point);\n };\n\n return shapeSvg;\n};\n\nconst hexagon = (parent, node) => {\n const { shapeSvg, bbox } = labelHelper(parent, node, undefined, true);\n\n const f = 4;\n const h = bbox.height + node.padding;\n const m = h / f;\n const w = bbox.width + 2 * m + node.padding;\n const points = [\n { x: m, y: 0 },\n { x: w - m, y: 0 },\n { x: w, y: -h / 2 },\n { x: w - m, y: -h },\n { x: m, y: -h },\n { x: 0, y: -h / 2 }\n ];\n const hex = insertPolygonShape(shapeSvg, w, h, points);\n updateNodeBounds(node, hex);\n\n node.intersect = function(point) {\n return intersect.polygon(node, point);\n };\n\n return shapeSvg;\n};\n\nconst rect_left_inv_arrow = (parent, node) => {\n const { shapeSvg, bbox } = labelHelper(parent, node, undefined, true);\n\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: -h / 2, y: 0 },\n { x: w, y: 0 },\n { x: w, y: -h },\n { x: -h / 2, y: -h },\n { x: 0, y: -h / 2 }\n ];\n\n const el = insertPolygonShape(shapeSvg, w, h, points);\n updateNodeBounds(node, el);\n\n node.intersect = function(point) {\n return intersect.polygon(node, point);\n };\n\n return shapeSvg;\n};\nconst lean_right = (parent, node) => {\n const { shapeSvg, bbox } = labelHelper(parent, node, undefined, true);\n\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: (-2 * h) / 6, y: 0 },\n { x: w - h / 6, y: 0 },\n { x: w + (2 * h) / 6, y: -h },\n { x: h / 6, y: -h }\n ];\n\n const el = insertPolygonShape(shapeSvg, w, h, points);\n updateNodeBounds(node, el);\n\n node.intersect = function(point) {\n return intersect.polygon(node, point);\n };\n\n return shapeSvg;\n};\n\nconst lean_left = (parent, node) => {\n const { shapeSvg, bbox } = labelHelper(parent, node, undefined, true);\n\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: (2 * h) / 6, y: 0 },\n { x: w + h / 6, y: 0 },\n { x: w - (2 * h) / 6, y: -h },\n { x: -h / 6, y: -h }\n ];\n\n const el = insertPolygonShape(shapeSvg, w, h, points);\n updateNodeBounds(node, el);\n\n node.intersect = function(point) {\n return intersect.polygon(node, point);\n };\n\n return shapeSvg;\n};\n\nconst trapezoid = (parent, node) => {\n const { shapeSvg, bbox } = labelHelper(parent, node, undefined, true);\n\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: (-2 * h) / 6, y: 0 },\n { x: w + (2 * h) / 6, y: 0 },\n { x: w - h / 6, y: -h },\n { x: h / 6, y: -h }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n updateNodeBounds(node, el);\n\n node.intersect = function(point) {\n return intersect.polygon(node, point);\n };\n\n return shapeSvg;\n};\n\nconst inv_trapezoid = (parent, node) => {\n const { shapeSvg, bbox } = labelHelper(parent, node, undefined, true);\n\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: h / 6, y: 0 },\n { x: w - h / 6, y: 0 },\n { x: w + (2 * h) / 6, y: -h },\n { x: (-2 * h) / 6, y: -h }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n updateNodeBounds(node, el);\n\n node.intersect = function(point) {\n return intersect.polygon(node, point);\n };\n\n return shapeSvg;\n};\nconst rect_right_inv_arrow = (parent, node) => {\n const { shapeSvg, bbox } = labelHelper(parent, node, undefined, true);\n\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: 0, y: 0 },\n { x: w + h / 2, y: 0 },\n { x: w, y: -h / 2 },\n { x: w + h / 2, y: -h },\n { x: 0, y: -h }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n updateNodeBounds(node, el);\n\n node.intersect = function(point) {\n return intersect.polygon(node, point);\n };\n\n return shapeSvg;\n};\nconst cylinder = (parent, node) => {\n const { shapeSvg, bbox } = labelHelper(parent, node, undefined, true);\n\n const w = bbox.width + node.padding;\n const rx = w / 2;\n const ry = rx / (2.5 + w / 50);\n const h = bbox.height + ry + node.padding;\n\n const shape =\n 'M 0,' +\n ry +\n ' a ' +\n rx +\n ',' +\n ry +\n ' 0,0,0 ' +\n w +\n ' 0 a ' +\n rx +\n ',' +\n ry +\n ' 0,0,0 ' +\n -w +\n ' 0 l 0,' +\n h +\n ' a ' +\n rx +\n ',' +\n ry +\n ' 0,0,0 ' +\n w +\n ' 0 l 0,' +\n -h;\n\n const el = shapeSvg\n .attr('label-offset-y', ry)\n .insert('path', ':first-child')\n .attr('d', shape)\n .attr('transform', 'translate(' + -w / 2 + ',' + -(h / 2 + ry) + ')');\n\n updateNodeBounds(node, el);\n\n node.intersect = function(point) {\n const pos = intersect.rect(node, point);\n const x = pos.x - node.x;\n\n if (\n rx != 0 &&\n (Math.abs(x) < node.width / 2 ||\n (Math.abs(x) == node.width / 2 && Math.abs(pos.y - node.y) > node.height / 2 - ry))\n ) {\n // ellipsis equation: x*x / a*a + y*y / b*b = 1\n // solve for y to get adjustion value for pos.y\n let y = ry * ry * (1 - (x * x) / (rx * rx));\n if (y != 0) y = Math.sqrt(y);\n y = ry - y;\n if (point.y - node.y > 0) y = -y;\n\n pos.y += y;\n }\n\n return pos;\n };\n\n return shapeSvg;\n};\n\nconst rect = (parent, node) => {\n const { shapeSvg, bbox, halfPadding } = labelHelper(parent, node, 'node ' + node.classes, true);\n\n logger.trace('Classes = ', node.classes);\n // add the rect\n const rect = shapeSvg.insert('rect', ':first-child');\n\n rect\n .attr('class', 'basic label-container')\n .attr('rx', node.rx)\n .attr('ry', node.ry)\n .attr('x', -bbox.width / 2 - halfPadding)\n .attr('y', -bbox.height / 2 - halfPadding)\n .attr('width', bbox.width + node.padding)\n .attr('height', bbox.height + node.padding);\n\n updateNodeBounds(node, rect);\n\n node.intersect = function(point) {\n return intersect.rect(node, point);\n };\n\n return shapeSvg;\n};\nconst rectWithTitle = (parent, node) => {\n // const { shapeSvg, bbox, halfPadding } = labelHelper(parent, node, 'node ' + node.classes);\n\n let classes;\n if (!node.classes) {\n classes = 'node default';\n } else {\n classes = 'node ' + node.classes;\n }\n // Add outer g element\n const shapeSvg = parent\n .insert('g')\n .attr('class', classes)\n .attr('id', node.id);\n\n // Create the title label and insert it after the rect\n const rect = shapeSvg.insert('rect', ':first-child');\n // const innerRect = shapeSvg.insert('rect');\n const innerLine = shapeSvg.insert('line');\n\n const label = shapeSvg.insert('g').attr('class', 'label');\n\n const text2 = node.labelText.flat();\n logger.info('Label text', text2[0]);\n\n const text = label.node().appendChild(createLabel(text2[0], node.labelStyle, true, true));\n let bbox;\n if (getConfig().flowchart.htmlLabels) {\n const div = text.children[0];\n const dv = select(text);\n bbox = div.getBoundingClientRect();\n dv.attr('width', bbox.width);\n dv.attr('height', bbox.height);\n }\n logger.info('Text 2', text2);\n const textRows = text2.slice(1, text2.length);\n let titleBox = text.getBBox();\n const descr = label\n .node()\n .appendChild(createLabel(textRows.join('
'), node.labelStyle, true, true));\n\n if (getConfig().flowchart.htmlLabels) {\n const div = descr.children[0];\n const dv = select(descr);\n bbox = div.getBoundingClientRect();\n dv.attr('width', bbox.width);\n dv.attr('height', bbox.height);\n }\n // bbox = label.getBBox();\n // logger.info(descr);\n const halfPadding = node.padding / 2;\n select(descr).attr(\n 'transform',\n 'translate( ' +\n // (titleBox.width - bbox.width) / 2 +\n (bbox.width > titleBox.width ? 0 : (titleBox.width - bbox.width) / 2) +\n ', ' +\n (titleBox.height + halfPadding + 5) +\n ')'\n );\n select(text).attr(\n 'transform',\n 'translate( ' +\n // (titleBox.width - bbox.width) / 2 +\n (bbox.width < titleBox.width ? 0 : -(titleBox.width - bbox.width) / 2) +\n ', ' +\n 0 +\n ')'\n );\n // Get the size of the label\n\n // Bounding box for title and text\n bbox = label.node().getBBox();\n\n // Center the label\n label.attr(\n 'transform',\n 'translate(' + -bbox.width / 2 + ', ' + (-bbox.height / 2 - halfPadding + 3) + ')'\n );\n\n rect\n .attr('class', 'outer title-state')\n .attr('x', -bbox.width / 2 - halfPadding)\n .attr('y', -bbox.height / 2 - halfPadding)\n .attr('width', bbox.width + node.padding)\n .attr('height', bbox.height + node.padding);\n\n innerLine\n .attr('class', 'divider')\n .attr('x1', -bbox.width / 2 - halfPadding)\n .attr('x2', bbox.width / 2 + halfPadding)\n .attr('y1', -bbox.height / 2 - halfPadding + titleBox.height + halfPadding)\n .attr('y2', -bbox.height / 2 - halfPadding + titleBox.height + halfPadding);\n\n updateNodeBounds(node, rect);\n\n node.intersect = function(point) {\n return intersect.rect(node, point);\n };\n\n return shapeSvg;\n};\n\nconst stadium = (parent, node) => {\n const { shapeSvg, bbox } = labelHelper(parent, node, undefined, true);\n\n const h = bbox.height + node.padding;\n const w = bbox.width + h / 4 + node.padding;\n\n // add the rect\n const rect = shapeSvg\n .insert('rect', ':first-child')\n .attr('rx', h / 2)\n .attr('ry', h / 2)\n .attr('x', -w / 2)\n .attr('y', -h / 2)\n .attr('width', w)\n .attr('height', h);\n\n updateNodeBounds(node, rect);\n\n node.intersect = function(point) {\n return intersect.rect(node, point);\n };\n\n return shapeSvg;\n};\nconst circle = (parent, node) => {\n const { shapeSvg, bbox, halfPadding } = labelHelper(parent, node, undefined, true);\n const circle = shapeSvg.insert('circle', ':first-child');\n\n // center the circle around its coordinate\n circle\n .attr('rx', node.rx)\n .attr('ry', node.ry)\n .attr('r', bbox.width / 2 + halfPadding)\n .attr('width', bbox.width + node.padding)\n .attr('height', bbox.height + node.padding);\n\n logger.info('Circle main');\n\n updateNodeBounds(node, circle);\n\n node.intersect = function(point) {\n logger.info('Circle intersect', node, bbox.width / 2 + halfPadding, point);\n return intersect.circle(node, bbox.width / 2 + halfPadding, point);\n };\n\n return shapeSvg;\n};\n\nconst subroutine = (parent, node) => {\n const { shapeSvg, bbox } = labelHelper(parent, node, undefined, true);\n\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: 0, y: 0 },\n { x: w, y: 0 },\n { x: w, y: -h },\n { x: 0, y: -h },\n { x: 0, y: 0 },\n { x: -8, y: 0 },\n { x: w + 8, y: 0 },\n { x: w + 8, y: -h },\n { x: -8, y: -h },\n { x: -8, y: 0 }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n updateNodeBounds(node, el);\n\n node.intersect = function(point) {\n return intersect.polygon(node, point);\n };\n\n return shapeSvg;\n};\n\nconst start = (parent, node) => {\n const shapeSvg = parent\n .insert('g')\n .attr('class', 'node default')\n .attr('id', node.id);\n const circle = shapeSvg.insert('circle', ':first-child');\n\n // center the circle around its coordinate\n circle\n .attr('class', 'state-start')\n .attr('r', 7)\n .attr('width', 14)\n .attr('height', 14);\n\n updateNodeBounds(node, circle);\n\n node.intersect = function(point) {\n return intersect.circle(node, 7, point);\n };\n\n return shapeSvg;\n};\n\nconst forkJoin = (parent, node, dir) => {\n const shapeSvg = parent\n .insert('g')\n .attr('class', 'node default')\n .attr('id', node.id);\n\n let width = 70;\n let height = 10;\n\n if (dir === 'LR') {\n width = 10;\n height = 70;\n }\n\n const shape = shapeSvg\n .append('rect')\n .style('stroke', 'black')\n .style('fill', 'black')\n .attr('x', (-1 * width) / 2)\n .attr('y', (-1 * height) / 2)\n .attr('width', width)\n .attr('height', height)\n .attr('class', 'fork-join');\n\n updateNodeBounds(node, shape);\n node.height = node.height + node.padding / 2;\n node.width = node.width + node.padding / 2;\n node.intersect = function(point) {\n return intersect.rect(node, point);\n };\n\n return shapeSvg;\n};\n\nconst end = (parent, node) => {\n const shapeSvg = parent\n .insert('g')\n .attr('class', 'node default')\n .attr('id', node.id);\n const innerCircle = shapeSvg.insert('circle', ':first-child');\n const circle = shapeSvg.insert('circle', ':first-child');\n\n circle\n .attr('class', 'state-start')\n .attr('r', 7)\n .attr('width', 14)\n .attr('height', 14);\n\n innerCircle\n .attr('class', 'state-end')\n .attr('r', 5)\n .attr('width', 10)\n .attr('height', 10);\n\n updateNodeBounds(node, circle);\n\n node.intersect = function(point) {\n return intersect.circle(node, 7, point);\n };\n\n return shapeSvg;\n};\n\nconst class_box = (parent, node) => {\n const halfPadding = node.padding / 2;\n const rowPadding = 4;\n const lineHeight = 8;\n\n let classes;\n if (!node.classes) {\n classes = 'node default';\n } else {\n classes = 'node ' + node.classes;\n }\n // Add outer g element\n const shapeSvg = parent\n .insert('g')\n .attr('class', classes)\n .attr('id', node.id);\n\n // Create the title label and insert it after the rect\n const rect = shapeSvg.insert('rect', ':first-child');\n const topLine = shapeSvg.insert('line');\n const bottomLine = shapeSvg.insert('line');\n let maxWidth = 0;\n let maxHeight = rowPadding;\n\n const labelContainer = shapeSvg.insert('g').attr('class', 'label');\n let verticalPos = 0;\n const hasInterface = node.classData.annotations && node.classData.annotations[0];\n\n // 1. Create the labels\n const interfaceLabel = labelContainer\n .node()\n .appendChild(createLabel(node.classData.annotations[0], node.labelStyle, true, true));\n const interfaceBBox = interfaceLabel.getBBox();\n if (node.classData.annotations[0]) {\n maxHeight += interfaceBBox.height + rowPadding;\n maxWidth += interfaceBBox.width;\n }\n\n const classTitleLabel = labelContainer\n .node()\n .appendChild(createLabel(node.labelText, node.labelStyle, true, true));\n const classTitleBBox = classTitleLabel.getBBox();\n maxHeight += classTitleBBox.height + rowPadding;\n if (classTitleBBox.width > maxWidth) {\n maxWidth = classTitleBBox.width;\n }\n const classAttributes = [];\n node.classData.members.forEach(str => {\n const lbl = labelContainer.node().appendChild(createLabel(str, node.labelStyle, true, true));\n const bbox = lbl.getBBox();\n if (bbox.width > maxWidth) {\n maxWidth = bbox.width;\n }\n maxHeight += bbox.height + rowPadding;\n classAttributes.push(lbl);\n });\n\n const classMethods = [];\n node.classData.methods.forEach(str => {\n const lbl = labelContainer.node().appendChild(createLabel(str, node.labelStyle, true, true));\n const bbox = lbl.getBBox();\n if (bbox.width > maxWidth) {\n maxWidth = bbox.width;\n }\n maxHeight += bbox.height + rowPadding;\n\n classMethods.push(lbl);\n });\n\n maxHeight += lineHeight;\n\n // 2. Position the labels\n\n // position the interface label\n if (hasInterface) {\n select(interfaceLabel).attr(\n 'transform',\n 'translate( ' +\n -(maxWidth + node.padding - interfaceBBox.width / 2) / 2 +\n ', ' +\n (-1 * maxHeight) / 2 +\n ')'\n );\n verticalPos = interfaceBBox.height + rowPadding;\n }\n // Positin the class title label\n let diffX = (maxWidth - classTitleBBox.width) / 2;\n select(classTitleLabel).attr(\n 'transform',\n 'translate( ' +\n ((-1 * maxWidth) / 2 + diffX) +\n ', ' +\n ((-1 * maxHeight) / 2 + verticalPos) +\n ')'\n );\n verticalPos += classTitleBBox.height + rowPadding;\n\n topLine\n .attr('class', 'divider')\n .attr('x1', -maxWidth / 2 - halfPadding)\n .attr('x2', maxWidth / 2 + halfPadding)\n .attr('y1', -maxHeight / 2 - halfPadding + lineHeight + verticalPos)\n .attr('y2', -maxHeight / 2 - halfPadding + lineHeight + verticalPos);\n\n verticalPos += lineHeight;\n\n classAttributes.forEach(lbl => {\n select(lbl).attr(\n 'transform',\n 'translate( ' +\n -maxWidth / 2 +\n ', ' +\n ((-1 * maxHeight) / 2 + verticalPos + lineHeight / 2) +\n ')'\n );\n verticalPos += classTitleBBox.height + rowPadding;\n });\n\n bottomLine\n .attr('class', 'divider')\n .attr('x1', -maxWidth / 2 - halfPadding)\n .attr('x2', maxWidth / 2 + halfPadding)\n .attr('y1', -maxHeight / 2 - halfPadding + lineHeight + verticalPos)\n .attr('y2', -maxHeight / 2 - halfPadding + lineHeight + verticalPos);\n\n verticalPos += lineHeight;\n\n classMethods.forEach(lbl => {\n select(lbl).attr(\n 'transform',\n 'translate( ' + -maxWidth / 2 + ', ' + ((-1 * maxHeight) / 2 + verticalPos) + ')'\n );\n verticalPos += classTitleBBox.height + rowPadding;\n });\n //\n let bbox;\n if (getConfig().flowchart.htmlLabels) {\n const div = interfaceLabel.children[0];\n const dv = select(interfaceLabel);\n bbox = div.getBoundingClientRect();\n dv.attr('width', bbox.width);\n dv.attr('height', bbox.height);\n }\n // bbox = labelContainer.getBBox();\n\n // logger.info('Text 2', text2);\n // const textRows = text2.slice(1, text2.length);\n // let titleBox = text.getBBox();\n // const descr = label\n // .node()\n // .appendChild(createLabel(textRows.join('
'), node.labelStyle, true, true));\n\n // if (getConfig().flowchart.htmlLabels) {\n // const div = descr.children[0];\n // const dv = select(descr);\n // bbox = div.getBoundingClientRect();\n // dv.attr('width', bbox.width);\n // dv.attr('height', bbox.height);\n // }\n // // bbox = label.getBBox();\n // // logger.info(descr);\n // select(descr).attr(\n // 'transform',\n // 'translate( ' +\n // // (titleBox.width - bbox.width) / 2 +\n // (bbox.width > titleBox.width ? 0 : (titleBox.width - bbox.width) / 2) +\n // ', ' +\n // (titleBox.height + halfPadding + 5) +\n // ')'\n // );\n // select(text).attr(\n // 'transform',\n // 'translate( ' +\n // // (titleBox.width - bbox.width) / 2 +\n // (bbox.width < titleBox.width ? 0 : -(titleBox.width - bbox.width) / 2) +\n // ', ' +\n // 0 +\n // ')'\n // );\n // // Get the size of the label\n\n // // Bounding box for title and text\n // bbox = label.node().getBBox();\n\n // // Center the label\n // label.attr(\n // 'transform',\n // 'translate(' + -bbox.width / 2 + ', ' + (-bbox.height / 2 - halfPadding + 3) + ')'\n // );\n\n rect\n .attr('class', 'outer title-state')\n .attr('x', -maxWidth / 2 - halfPadding)\n .attr('y', -(maxHeight / 2) - halfPadding)\n .attr('width', maxWidth + node.padding)\n .attr('height', maxHeight + node.padding);\n\n // innerLine\n // .attr('class', 'divider')\n // .attr('x1', -bbox.width / 2 - halfPadding)\n // .attr('x2', bbox.width / 2 + halfPadding)\n // .attr('y1', -bbox.height / 2 - halfPadding + titleBox.height + halfPadding)\n // .attr('y2', -bbox.height / 2 - halfPadding + titleBox.height + halfPadding);\n\n updateNodeBounds(node, rect);\n\n node.intersect = function(point) {\n return intersect.rect(node, point);\n };\n\n return shapeSvg;\n};\n\nconst shapes = {\n question,\n rect,\n rectWithTitle,\n circle,\n stadium,\n hexagon,\n rect_left_inv_arrow,\n lean_right,\n lean_left,\n trapezoid,\n inv_trapezoid,\n rect_right_inv_arrow,\n cylinder,\n start,\n end,\n note,\n subroutine,\n fork: forkJoin,\n join: forkJoin,\n class_box\n};\n\nlet nodeElems = {};\n\nexport const insertNode = (elem, node, dir) => {\n nodeElems[node.id] = shapes[node.shape](elem, node, dir);\n};\nexport const setNodeElem = (elem, node) => {\n nodeElems[node.id] = elem;\n};\nexport const clear = () => {\n nodeElems = {};\n};\n\nexport const positionNode = node => {\n const el = nodeElems[node.id];\n logger.trace(\n 'Transforming node',\n node,\n 'translate(' + (node.x - node.width / 2 - 5) + ', ' + (node.y - node.height / 2 - 5) + ')'\n );\n const padding = 8;\n if (node.clusterNode) {\n el.attr(\n 'transform',\n 'translate(' +\n (node.x - node.width / 2 - padding) +\n ', ' +\n (node.y - node.height / 2 - padding) +\n ')'\n );\n } else {\n el.attr('transform', 'translate(' + node.x + ', ' + node.y + ')');\n }\n};\n","import { updateNodeBounds, labelHelper } from './util';\nimport { logger } from '../../logger'; // eslint-disable-line\nimport intersect from '../intersect/index.js';\n\nconst note = (parent, node) => {\n const { shapeSvg, bbox, halfPadding } = labelHelper(parent, node, 'node ' + node.classes, true);\n\n logger.info('Classes = ', node.classes);\n // add the rect\n const rect = shapeSvg.insert('rect', ':first-child');\n\n rect\n .attr('rx', node.rx)\n .attr('ry', node.ry)\n .attr('x', -bbox.width / 2 - halfPadding)\n .attr('y', -bbox.height / 2 - halfPadding)\n .attr('width', bbox.width + node.padding)\n .attr('height', bbox.height + node.padding);\n\n updateNodeBounds(node, rect);\n\n node.intersect = function(point) {\n return intersect.rect(node, point);\n };\n\n return shapeSvg;\n};\n\nexport default note;\n","import createLabel from '../createLabel';\nimport { getConfig } from '../../config';\nimport { select } from 'd3';\nexport const labelHelper = (parent, node, _classes, isNode) => {\n let classes;\n if (!_classes) {\n classes = 'node default';\n } else {\n classes = _classes;\n }\n // Add outer g element\n const shapeSvg = parent\n .insert('g')\n .attr('class', classes)\n .attr('id', node.id);\n\n // Create the label and insert it after the rect\n const label = shapeSvg.insert('g').attr('class', 'label');\n\n const text = label\n .node()\n .appendChild(createLabel(node.labelText, node.labelStyle, false, isNode));\n\n // Get the size of the label\n let bbox = text.getBBox();\n\n if (getConfig().flowchart.htmlLabels) {\n const div = text.children[0];\n const dv = select(text);\n bbox = div.getBoundingClientRect();\n dv.attr('width', bbox.width);\n dv.attr('height', bbox.height);\n }\n\n const halfPadding = node.padding / 2;\n\n // Center the label\n label.attr('transform', 'translate(' + -bbox.width / 2 + ', ' + -bbox.height / 2 + ')');\n\n return { shapeSvg, bbox, halfPadding, label };\n};\n\nexport const updateNodeBounds = (node, element) => {\n const bbox = element.node().getBBox();\n node.width = bbox.width;\n node.height = bbox.height;\n};\n\nexport function insertPolygonShape(parent, w, h, points) {\n return parent\n .insert('polygon', ':first-child')\n .attr(\n 'points',\n points\n .map(function(d) {\n return d.x + ',' + d.y;\n })\n .join(' ')\n )\n .attr('class', 'label-container')\n .attr('transform', 'translate(' + -w / 2 + ',' + h / 2 + ')');\n}\n","import { select } from 'd3';\nimport { logger } from '../../logger';\nimport { getConfig } from '../../config';\nimport common from '../common/common';\nimport utils from '../../utils';\n\nconst MERMAID_DOM_ID_PREFIX = 'classid-';\n\nconst config = getConfig();\n\nlet relations = [];\nlet classes = {};\nlet classCounter = 0;\n\nlet funs = [];\n\nconst splitClassNameAndType = function(id) {\n let genericType = '';\n let className = id;\n\n if (id.indexOf('~') > 0) {\n let split = id.split('~');\n className = split[0];\n genericType = split[1];\n }\n\n return { className: className, type: genericType };\n};\n\n/**\n * Function called by parser when a node definition has been found.\n * @param id\n * @public\n */\nexport const addClass = function(id) {\n let classId = splitClassNameAndType(id);\n // Only add class if not exists\n if (typeof classes[classId.className] !== 'undefined') return;\n\n classes[classId.className] = {\n id: classId.className,\n type: classId.type,\n cssClasses: [],\n methods: [],\n members: [],\n annotations: [],\n domId: MERMAID_DOM_ID_PREFIX + classId.className + '-' + classCounter\n };\n classCounter++;\n};\n\n/**\n * Function to lookup domId from id in the graph definition.\n * @param id\n * @public\n */\nexport const lookUpDomId = function(id) {\n const classKeys = Object.keys(classes);\n for (let i = 0; i < classKeys.length; i++) {\n if (classes[classKeys[i]].id === id) {\n return classes[classKeys[i]].domId;\n }\n }\n};\n\nexport const clear = function() {\n relations = [];\n classes = {};\n funs = [];\n funs.push(setupToolTips);\n};\n\nexport const getClass = function(id) {\n return classes[id];\n};\nexport const getClasses = function() {\n return classes;\n};\n\nexport const getRelations = function() {\n return relations;\n};\n\nexport const addRelation = function(relation) {\n logger.debug('Adding relation: ' + JSON.stringify(relation));\n addClass(relation.id1);\n addClass(relation.id2);\n\n relation.id1 = splitClassNameAndType(relation.id1).className;\n relation.id2 = splitClassNameAndType(relation.id2).className;\n\n relations.push(relation);\n};\n\n/**\n * Adds an annotation to the specified class\n * Annotations mark special properties of the given type (like 'interface' or 'service')\n * @param className The class name\n * @param annotation The name of the annotation without any brackets\n * @public\n */\nexport const addAnnotation = function(className, annotation) {\n const validatedClassName = splitClassNameAndType(className).className;\n classes[validatedClassName].annotations.push(annotation);\n};\n\n/**\n * Adds a member to the specified class\n * @param className The class name\n * @param member The full name of the member.\n * If the member is enclosed in <
/gi;\n\nexport const hasBreaks = text => {\n return /
/gi.test(text);\n};\n\nexport const splitBreaks = text => {\n return text.split(/
/gi);\n};\n\nconst breakToPlaceholder = s => {\n return s.replace(lineBreakRegex, '#br#');\n};\n\nconst placeholderToBreak = s => {\n return s.replace(/#br#/g, '
');\n};\n\nexport default {\n getRows,\n sanitizeText,\n hasBreaks,\n splitBreaks,\n lineBreakRegex,\n removeScript\n};\n","/**\n *\n */\nimport { logger } from '../../logger';\n\nlet entities = {};\nlet relationships = [];\nlet title = '';\n\nconst Cardinality = {\n ZERO_OR_ONE: 'ZERO_OR_ONE',\n ZERO_OR_MORE: 'ZERO_OR_MORE',\n ONE_OR_MORE: 'ONE_OR_MORE',\n ONLY_ONE: 'ONLY_ONE'\n};\n\nconst Identification = {\n NON_IDENTIFYING: 'NON_IDENTIFYING',\n IDENTIFYING: 'IDENTIFYING'\n};\n\nconst addEntity = function(name) {\n if (typeof entities[name] === 'undefined') {\n entities[name] = name;\n logger.debug('Added new entity :', name);\n }\n};\n\nconst getEntities = () => entities;\n\n/**\n * Add a relationship\n * @param entA The first entity in the relationship\n * @param rolA The role played by the first entity in relation to the second\n * @param entB The second entity in the relationship\n * @param rSpec The details of the relationship between the two entities\n */\nconst addRelationship = function(entA, rolA, entB, rSpec) {\n let rel = {\n entityA: entA,\n roleA: rolA,\n entityB: entB,\n relSpec: rSpec\n };\n\n relationships.push(rel);\n logger.debug('Added new relationship :', rel);\n};\n\nconst getRelationships = () => relationships;\n\n// Keep this - TODO: revisit...allow the diagram to have a title\nconst setTitle = function(txt) {\n title = txt;\n};\n\nconst getTitle = function() {\n return title;\n};\n\nconst clear = function() {\n entities = {};\n relationships = [];\n title = '';\n};\n\nexport default {\n Cardinality,\n Identification,\n addEntity,\n getEntities,\n addRelationship,\n getRelationships,\n clear,\n setTitle,\n getTitle\n};\n","const ERMarkers = {\n ONLY_ONE_START: 'ONLY_ONE_START',\n ONLY_ONE_END: 'ONLY_ONE_END',\n ZERO_OR_ONE_START: 'ZERO_OR_ONE_START',\n ZERO_OR_ONE_END: 'ZERO_OR_ONE_END',\n ONE_OR_MORE_START: 'ONE_OR_MORE_START',\n ONE_OR_MORE_END: 'ONE_OR_MORE_END',\n ZERO_OR_MORE_START: 'ZERO_OR_MORE_START',\n ZERO_OR_MORE_END: 'ZERO_OR_MORE_END'\n};\n\n/**\n * Put the markers into the svg DOM for later use with edge paths\n */\nconst insertMarkers = function(elem, conf) {\n let marker;\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', ERMarkers.ONLY_ONE_START)\n .attr('refX', 0)\n .attr('refY', 9)\n .attr('markerWidth', 18)\n .attr('markerHeight', 18)\n .attr('orient', 'auto')\n .append('path')\n .attr('stroke', conf.stroke)\n .attr('fill', 'none')\n .attr('d', 'M9,0 L9,18 M15,0 L15,18');\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', ERMarkers.ONLY_ONE_END)\n .attr('refX', 18)\n .attr('refY', 9)\n .attr('markerWidth', 18)\n .attr('markerHeight', 18)\n .attr('orient', 'auto')\n .append('path')\n .attr('stroke', conf.stroke)\n .attr('fill', 'none')\n .attr('d', 'M3,0 L3,18 M9,0 L9,18');\n\n marker = elem\n .append('defs')\n .append('marker')\n .attr('id', ERMarkers.ZERO_OR_ONE_START)\n .attr('refX', 0)\n .attr('refY', 9)\n .attr('markerWidth', 30)\n .attr('markerHeight', 18)\n .attr('orient', 'auto');\n marker\n .append('circle')\n .attr('stroke', conf.stroke)\n .attr('fill', 'white')\n .attr('cx', 21)\n .attr('cy', 9)\n .attr('r', 6);\n marker\n .append('path')\n .attr('stroke', conf.stroke)\n .attr('fill', 'none')\n .attr('d', 'M9,0 L9,18');\n\n marker = elem\n .append('defs')\n .append('marker')\n .attr('id', ERMarkers.ZERO_OR_ONE_END)\n .attr('refX', 30)\n .attr('refY', 9)\n .attr('markerWidth', 30)\n .attr('markerHeight', 18)\n .attr('orient', 'auto');\n marker\n .append('circle')\n .attr('stroke', conf.stroke)\n .attr('fill', 'white')\n .attr('cx', 9)\n .attr('cy', 9)\n .attr('r', 6);\n marker\n .append('path')\n .attr('stroke', conf.stroke)\n .attr('fill', 'none')\n .attr('d', 'M21,0 L21,18');\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', ERMarkers.ONE_OR_MORE_START)\n .attr('refX', 18)\n .attr('refY', 18)\n .attr('markerWidth', 45)\n .attr('markerHeight', 36)\n .attr('orient', 'auto')\n .append('path')\n .attr('stroke', conf.stroke)\n .attr('fill', 'none')\n .attr('d', 'M0,18 Q 18,0 36,18 Q 18,36 0,18 M42,9 L42,27');\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', ERMarkers.ONE_OR_MORE_END)\n .attr('refX', 27)\n .attr('refY', 18)\n .attr('markerWidth', 45)\n .attr('markerHeight', 36)\n .attr('orient', 'auto')\n .append('path')\n .attr('stroke', conf.stroke)\n .attr('fill', 'none')\n .attr('d', 'M3,9 L3,27 M9,18 Q27,0 45,18 Q27,36 9,18');\n\n marker = elem\n .append('defs')\n .append('marker')\n .attr('id', ERMarkers.ZERO_OR_MORE_START)\n .attr('refX', 18)\n .attr('refY', 18)\n .attr('markerWidth', 57)\n .attr('markerHeight', 36)\n .attr('orient', 'auto');\n marker\n .append('circle')\n .attr('stroke', conf.stroke)\n .attr('fill', 'white')\n .attr('cx', 48)\n .attr('cy', 18)\n .attr('r', 6);\n marker\n .append('path')\n .attr('stroke', conf.stroke)\n .attr('fill', 'none')\n .attr('d', 'M0,18 Q18,0 36,18 Q18,36 0,18');\n\n marker = elem\n .append('defs')\n .append('marker')\n .attr('id', ERMarkers.ZERO_OR_MORE_END)\n .attr('refX', 39)\n .attr('refY', 18)\n .attr('markerWidth', 57)\n .attr('markerHeight', 36)\n .attr('orient', 'auto');\n marker\n .append('circle')\n .attr('stroke', conf.stroke)\n .attr('fill', 'white')\n .attr('cx', 9)\n .attr('cy', 18)\n .attr('r', 6);\n marker\n .append('path')\n .attr('stroke', conf.stroke)\n .attr('fill', 'none')\n .attr('d', 'M21,18 Q39,0 57,18 Q39,36 21,18');\n\n return;\n};\n\nexport default {\n ERMarkers,\n insertMarkers\n};\n","import graphlib from 'graphlib';\nimport { line, curveBasis, select } from 'd3';\nimport erDb from './erDb';\nimport erParser from './parser/erDiagram';\nimport dagre from 'dagre';\nimport { getConfig } from '../../config';\nimport { logger } from '../../logger';\nimport erMarkers from './erMarkers';\n\nconst conf = {};\n\n/**\n * Allows the top-level API module to inject config specific to this renderer,\n * storing it in the local conf object. Note that generic config still needs to be\n * retrieved using getConfig() imported from the config module\n */\nexport const setConf = function(cnf) {\n const keys = Object.keys(cnf);\n for (let i = 0; i < keys.length; i++) {\n conf[keys[i]] = cnf[keys[i]];\n }\n};\n\n/**\n * Use D3 to construct the svg elements for the entities\n * @param svgNode the svg node that contains the diagram\n * @param entities The entities to be drawn\n * @param graph The graph that contains the vertex and edge definitions post-layout\n * @return The first entity that was inserted\n */\nconst drawEntities = function(svgNode, entities, graph) {\n const keys = Object.keys(entities);\n let firstOne;\n\n keys.forEach(function(id) {\n // Create a group for each entity\n const groupNode = svgNode.append('g').attr('id', id);\n\n firstOne = firstOne === undefined ? id : firstOne;\n\n // Label the entity - this is done first so that we can get the bounding box\n // which then determines the size of the rectangle\n const textId = 'entity-' + id;\n const textNode = groupNode\n .append('text')\n .attr('class', 'er entityLabel')\n .attr('id', textId)\n .attr('x', 0)\n .attr('y', 0)\n .attr('dominant-baseline', 'middle')\n .attr('text-anchor', 'middle')\n .attr(\n 'style',\n 'font-family: ' + getConfig().fontFamily + '; font-size: ' + conf.fontSize + 'px'\n )\n .text(id);\n\n // Calculate the width and height of the entity\n const textBBox = textNode.node().getBBox();\n const entityWidth = Math.max(conf.minEntityWidth, textBBox.width + conf.entityPadding * 2);\n const entityHeight = Math.max(conf.minEntityHeight, textBBox.height + conf.entityPadding * 2);\n\n // Make sure the text gets centred relative to the entity box\n textNode.attr('transform', 'translate(' + entityWidth / 2 + ',' + entityHeight / 2 + ')');\n\n // Draw the rectangle - insert it before the text so that the text is not obscured\n const rectNode = groupNode\n .insert('rect', '#' + textId)\n .attr('class', 'er entityBox')\n .attr('fill', conf.fill)\n .attr('fill-opacity', '100%')\n .attr('stroke', conf.stroke)\n .attr('x', 0)\n .attr('y', 0)\n .attr('width', entityWidth)\n .attr('height', entityHeight);\n\n const rectBBox = rectNode.node().getBBox();\n\n // Add the entity to the graph\n graph.setNode(id, {\n width: rectBBox.width,\n height: rectBBox.height,\n shape: 'rect',\n id: id\n });\n });\n return firstOne;\n}; // drawEntities\n\nconst adjustEntities = function(svgNode, graph) {\n graph.nodes().forEach(function(v) {\n if (typeof v !== 'undefined' && typeof graph.node(v) !== 'undefined') {\n svgNode\n .select('#' + v)\n .attr(\n 'transform',\n 'translate(' +\n (graph.node(v).x - graph.node(v).width / 2) +\n ',' +\n (graph.node(v).y - graph.node(v).height / 2) +\n ' )'\n );\n }\n });\n return;\n};\n\nconst getEdgeName = function(rel) {\n return (rel.entityA + rel.roleA + rel.entityB).replace(/\\s/g, '');\n};\n\n/**\n * Add each relationship to the graph\n * @param relationships the relationships to be added\n * @param g the graph\n * @return {Array} The array of relationships\n */\nconst addRelationships = function(relationships, g) {\n relationships.forEach(function(r) {\n g.setEdge(r.entityA, r.entityB, { relationship: r }, getEdgeName(r));\n });\n return relationships;\n}; // addRelationships\n\nlet relCnt = 0;\n/**\n * Draw a relationship using edge information from the graph\n * @param svg the svg node\n * @param rel the relationship to draw in the svg\n * @param g the graph containing the edge information\n * @param insert the insertion point in the svg DOM (because relationships have markers that need to sit 'behind' opaque entity boxes)\n */\nconst drawRelationshipFromLayout = function(svg, rel, g, insert) {\n relCnt++;\n\n // Find the edge relating to this relationship\n const edge = g.edge(rel.entityA, rel.entityB, getEdgeName(rel));\n\n // Get a function that will generate the line path\n const lineFunction = line()\n .x(function(d) {\n return d.x;\n })\n .y(function(d) {\n return d.y;\n })\n .curve(curveBasis);\n\n // Insert the line at the right place\n const svgPath = svg\n .insert('path', '#' + insert)\n .attr('class', 'er relationshipLine')\n .attr('d', lineFunction(edge.points))\n .attr('stroke', conf.stroke)\n .attr('fill', 'none');\n\n // ...and with dashes if necessary\n if (rel.relSpec.relType === erDb.Identification.NON_IDENTIFYING) {\n svgPath.attr('stroke-dasharray', '8,8');\n }\n\n // TODO: Understand this better\n let url = '';\n if (conf.arrowMarkerAbsolute) {\n url =\n window.location.protocol +\n '//' +\n window.location.host +\n window.location.pathname +\n window.location.search;\n url = url.replace(/\\(/g, '\\\\(');\n url = url.replace(/\\)/g, '\\\\)');\n }\n\n // Decide which start and end markers it needs. It may be possible to be more concise here\n // by reversing a start marker to make an end marker...but this will do for now\n\n // Note that the 'A' entity's marker is at the end of the relationship and the 'B' entity's marker is at the start\n switch (rel.relSpec.cardA) {\n case erDb.Cardinality.ZERO_OR_ONE:\n svgPath.attr('marker-end', 'url(' + url + '#' + erMarkers.ERMarkers.ZERO_OR_ONE_END + ')');\n break;\n case erDb.Cardinality.ZERO_OR_MORE:\n svgPath.attr('marker-end', 'url(' + url + '#' + erMarkers.ERMarkers.ZERO_OR_MORE_END + ')');\n break;\n case erDb.Cardinality.ONE_OR_MORE:\n svgPath.attr('marker-end', 'url(' + url + '#' + erMarkers.ERMarkers.ONE_OR_MORE_END + ')');\n break;\n case erDb.Cardinality.ONLY_ONE:\n svgPath.attr('marker-end', 'url(' + url + '#' + erMarkers.ERMarkers.ONLY_ONE_END + ')');\n break;\n }\n\n switch (rel.relSpec.cardB) {\n case erDb.Cardinality.ZERO_OR_ONE:\n svgPath.attr(\n 'marker-start',\n 'url(' + url + '#' + erMarkers.ERMarkers.ZERO_OR_ONE_START + ')'\n );\n break;\n case erDb.Cardinality.ZERO_OR_MORE:\n svgPath.attr(\n 'marker-start',\n 'url(' + url + '#' + erMarkers.ERMarkers.ZERO_OR_MORE_START + ')'\n );\n break;\n case erDb.Cardinality.ONE_OR_MORE:\n svgPath.attr(\n 'marker-start',\n 'url(' + url + '#' + erMarkers.ERMarkers.ONE_OR_MORE_START + ')'\n );\n break;\n case erDb.Cardinality.ONLY_ONE:\n svgPath.attr('marker-start', 'url(' + url + '#' + erMarkers.ERMarkers.ONLY_ONE_START + ')');\n break;\n }\n\n // Now label the relationship\n\n // Find the half-way point\n const len = svgPath.node().getTotalLength();\n const labelPoint = svgPath.node().getPointAtLength(len * 0.5);\n\n // Append a text node containing the label\n const labelId = 'rel' + relCnt;\n\n const labelNode = svg\n .append('text')\n .attr('class', 'er relationshipLabel')\n .attr('id', labelId)\n .attr('x', labelPoint.x)\n .attr('y', labelPoint.y)\n .attr('text-anchor', 'middle')\n .attr('dominant-baseline', 'middle')\n .attr(\n 'style',\n 'font-family: ' + getConfig().fontFamily + '; font-size: ' + conf.fontSize + 'px'\n )\n .text(rel.roleA);\n\n // Figure out how big the opaque 'container' rectangle needs to be\n const labelBBox = labelNode.node().getBBox();\n\n // Insert the opaque rectangle before the text label\n svg\n .insert('rect', '#' + labelId)\n .attr('class', 'er relationshipLabelBox')\n .attr('x', labelPoint.x - labelBBox.width / 2)\n .attr('y', labelPoint.y - labelBBox.height / 2)\n .attr('width', labelBBox.width)\n .attr('height', labelBBox.height)\n .attr('fill', 'white')\n .attr('fill-opacity', '85%');\n\n return;\n};\n\n/**\n * Draw en E-R diagram in the tag with id: id based on the text definition of the diagram\n * @param text the text of the diagram\n * @param id the unique id of the DOM node that contains the diagram\n */\nexport const draw = function(text, id) {\n logger.info('Drawing ER diagram');\n erDb.clear();\n const parser = erParser.parser;\n parser.yy = erDb;\n\n // Parse the text to populate erDb\n try {\n parser.parse(text);\n } catch (err) {\n logger.debug('Parsing failed');\n }\n\n // Get a reference to the svg node that contains the text\n const svg = select(`[id='${id}']`);\n\n // Add cardinality marker definitions to the svg\n erMarkers.insertMarkers(svg, conf);\n\n // Now we have to construct the diagram in a specific way:\n // ---\n // 1. Create all the entities in the svg node at 0,0, but with the correct dimensions (allowing for text content)\n // 2. Make sure they are all added to the graph\n // 3. Add all the edges (relationships) to the graph aswell\n // 4. Let dagre do its magic to layout the graph. This assigns:\n // - the centre co-ordinates for each node, bearing in mind the dimensions and edge relationships\n // - the path co-ordinates for each edge\n // But it has no impact on the svg child nodes - the diagram remains with every entity rooted at 0,0\n // 5. Now assign a transform to each entity in the svg node so that it gets drawn in the correct place, as determined by\n // its centre point, which is obtained from the graph, and it's width and height\n // 6. And finally, create all the edges in the svg node using information from the graph\n // ---\n\n // Create the graph\n let g;\n\n // TODO: Explore directed vs undirected graphs, and how the layout is affected\n // An E-R diagram could be said to be undirected, but there is merit in setting\n // the direction from parent to child in a one-to-many as this influences graphlib to\n // put the parent above the child (does it?), which is intuitive. Most relationships\n // in ER diagrams are one-to-many.\n g = new graphlib.Graph({\n multigraph: true,\n directed: true,\n compound: false\n })\n .setGraph({\n rankdir: conf.layoutDirection,\n marginx: 20,\n marginy: 20,\n nodesep: 100,\n edgesep: 100,\n ranksep: 100\n })\n .setDefaultEdgeLabel(function() {\n return {};\n });\n\n // Draw the entities (at 0,0), returning the first svg node that got\n // inserted - this represents the insertion point for relationship paths\n const firstEntity = drawEntities(svg, erDb.getEntities(), g);\n\n // TODO: externalise the addition of entities to the graph - it's a bit 'buried' in the above\n\n // Add all the relationships to the graph\n const relationships = addRelationships(erDb.getRelationships(), g);\n\n dagre.layout(g); // Node and edge positions will be updated\n\n // Adjust the positions of the entities so that they adhere to the layout\n adjustEntities(svg, g);\n\n // Draw the relationships\n relationships.forEach(function(rel) {\n drawRelationshipFromLayout(svg, rel, g, firstEntity);\n });\n\n const padding = conf.diagramPadding;\n\n const svgBounds = svg.node().getBBox();\n const width = svgBounds.width + padding * 2;\n const height = svgBounds.height + padding * 2;\n\n if (conf.useMaxWidth) {\n svg.attr('width', '100%');\n svg.attr('style', `max-width: ${width}px;`);\n } else {\n svg.attr('height', height);\n svg.attr('width', width);\n }\n\n svg.attr('viewBox', `${svgBounds.x - padding} ${svgBounds.y - padding} ${width} ${height}`);\n}; // draw\n\nexport default {\n setConf,\n draw\n};\n","/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[6,12],$V1=[1,7],$V2=[1,10],$V3=[1,11],$V4=[1,12],$V5=[1,13],$V6=[12,19,20],$V7=[15,16,17,18];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"ER_DIAGRAM\":4,\"document\":5,\"EOF\":6,\"statement\":7,\"entityName\":8,\"relSpec\":9,\":\":10,\"role\":11,\"ALPHANUM\":12,\"cardinality\":13,\"relType\":14,\"ZERO_OR_ONE\":15,\"ZERO_OR_MORE\":16,\"ONE_OR_MORE\":17,\"ONLY_ONE\":18,\"NON_IDENTIFYING\":19,\"IDENTIFYING\":20,\"WORD\":21,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",4:\"ER_DIAGRAM\",6:\"EOF\",10:\":\",12:\"ALPHANUM\",15:\"ZERO_OR_ONE\",16:\"ZERO_OR_MORE\",17:\"ONE_OR_MORE\",18:\"ONLY_ONE\",19:\"NON_IDENTIFYING\",20:\"IDENTIFYING\",21:\"WORD\"},\nproductions_: [0,[3,3],[5,0],[5,2],[7,5],[8,1],[9,3],[13,1],[13,1],[13,1],[13,1],[14,1],[14,1],[11,1],[11,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 1:\n /*console.log('finished parsing');*/ \nbreak;\ncase 4:\n\n yy.addEntity($$[$0-4]); \n yy.addEntity($$[$0-2]); \n yy.addRelationship($$[$0-4], $$[$0], $$[$0-2], $$[$0-3]);\n /*console.log($$[$0-4] + $$[$0-3] + $$[$0-2] + ':' + $$[$0]);*/\n \nbreak;\ncase 5:\n this.$ = $$[$0]; /*console.log('Entity: ' + $$[$0]);*/ \nbreak;\ncase 6:\n\n this.$ = { cardA: $$[$0], relType: $$[$0-1], cardB: $$[$0-2] };\n /*console.log('relSpec: ' + $$[$0] + $$[$0-1] + $$[$0-2]);*/\n \nbreak;\ncase 7:\n this.$ = yy.Cardinality.ZERO_OR_ONE; \nbreak;\ncase 8:\n this.$ = yy.Cardinality.ZERO_OR_MORE; \nbreak;\ncase 9:\n this.$ = yy.Cardinality.ONE_OR_MORE; \nbreak;\ncase 10:\n this.$ = yy.Cardinality.ONLY_ONE; \nbreak;\ncase 11:\n this.$ = yy.Identification.NON_IDENTIFYING; \nbreak;\ncase 12:\n this.$ = yy.Identification.IDENTIFYING; \nbreak;\ncase 13:\n this.$ = $$[$0].replace(/\"/g, ''); \nbreak;\ncase 14:\n this.$ = $$[$0]; \nbreak;\n}\n},\ntable: [{3:1,4:[1,2]},{1:[3]},o($V0,[2,2],{5:3}),{6:[1,4],7:5,8:6,12:$V1},{1:[2,1]},o($V0,[2,3]),{9:8,13:9,15:$V2,16:$V3,17:$V4,18:$V5},o([10,15,16,17,18],[2,5]),{8:14,12:$V1},{14:15,19:[1,16],20:[1,17]},o($V6,[2,7]),o($V6,[2,8]),o($V6,[2,9]),o($V6,[2,10]),{10:[1,18]},{13:19,15:$V2,16:$V3,17:$V4,18:$V5},o($V7,[2,11]),o($V7,[2,12]),{11:20,12:[1,22],21:[1,21]},{12:[2,6]},o($V0,[2,4]),o($V0,[2,13]),o($V0,[2,14])],\ndefaultActions: {4:[2,1],19:[2,6]},\nparseError: function parseError (str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer.lex() || EOF;\n if (typeof token !== 'number') {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {\"case-insensitive\":true},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0:/* skip whitespace */\nbreak;\ncase 1:return 'SPACE';\nbreak;\ncase 2:return 21;\nbreak;\ncase 3:return 4;\nbreak;\ncase 4:return 15;\nbreak;\ncase 5:return 16;\nbreak;\ncase 6:return 17;\nbreak;\ncase 7:return 18;\nbreak;\ncase 8:return 15;\nbreak;\ncase 9:return 16;\nbreak;\ncase 10:return 17;\nbreak;\ncase 11:return 19;\nbreak;\ncase 12:return 20;\nbreak;\ncase 13:return 19;\nbreak;\ncase 14:return 19;\nbreak;\ncase 15:return 12;\nbreak;\ncase 16:return yy_.yytext[0];\nbreak;\ncase 17:return 6;\nbreak;\n}\n},\nrules: [/^(?:\\s+)/i,/^(?:[\\s]+)/i,/^(?:\"[^\"]*\")/i,/^(?:erDiagram\\b)/i,/^(?:\\|o\\b)/i,/^(?:\\}o\\b)/i,/^(?:\\}\\|)/i,/^(?:\\|\\|)/i,/^(?:o\\|)/i,/^(?:o\\{)/i,/^(?:\\|\\{)/i,/^(?:\\.\\.)/i,/^(?:--)/i,/^(?:\\.-)/i,/^(?:-\\.)/i,/^(?:[A-Za-z][A-Za-z0-9\\-]*)/i,/^(?:.)/i,/^(?:$)/i],\nconditions: {\"INITIAL\":{\"rules\":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain (args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}","const getStyles = options =>\n `\n .entityBox {\n fill: ${options.mainBkg};\n stroke: ${options.nodeBorder};\n }\n\n .relationshipLabelBox {\n fill: ${options.edgeLabelBackground};\n fillopactity: 0;\n background-color: ${options.edgeLabelBackground};\n rect {\n opacity: 0.5;\n }\n }\n\n .relationshipLine {\n stroke: ${options.lineColor};\n }\n`;\n\nexport default getStyles;\n","import dagreD3 from 'dagre-d3';\n\nfunction question(parent, bbox, node) {\n const w = bbox.width;\n const h = bbox.height;\n const s = (w + h) * 0.9;\n const points = [\n { x: s / 2, y: 0 },\n { x: s, y: -s / 2 },\n { x: s / 2, y: -s },\n { x: 0, y: -s / 2 }\n ];\n const shapeSvg = insertPolygonShape(parent, s, s, points);\n node.intersect = function(point) {\n return dagreD3.intersect.polygon(node, points, point);\n };\n return shapeSvg;\n}\n\nfunction hexagon(parent, bbox, node) {\n const f = 4;\n const h = bbox.height;\n const m = h / f;\n const w = bbox.width + 2 * m;\n const points = [\n { x: m, y: 0 },\n { x: w - m, y: 0 },\n { x: w, y: -h / 2 },\n { x: w - m, y: -h },\n { x: m, y: -h },\n { x: 0, y: -h / 2 }\n ];\n const shapeSvg = insertPolygonShape(parent, w, h, points);\n node.intersect = function(point) {\n return dagreD3.intersect.polygon(node, points, point);\n };\n return shapeSvg;\n}\n\nfunction rect_left_inv_arrow(parent, bbox, node) {\n const w = bbox.width;\n const h = bbox.height;\n const points = [\n { x: -h / 2, y: 0 },\n { x: w, y: 0 },\n { x: w, y: -h },\n { x: -h / 2, y: -h },\n { x: 0, y: -h / 2 }\n ];\n const shapeSvg = insertPolygonShape(parent, w, h, points);\n node.intersect = function(point) {\n return dagreD3.intersect.polygon(node, points, point);\n };\n return shapeSvg;\n}\n\nfunction lean_right(parent, bbox, node) {\n const w = bbox.width;\n const h = bbox.height;\n const points = [\n { x: (-2 * h) / 6, y: 0 },\n { x: w - h / 6, y: 0 },\n { x: w + (2 * h) / 6, y: -h },\n { x: h / 6, y: -h }\n ];\n const shapeSvg = insertPolygonShape(parent, w, h, points);\n node.intersect = function(point) {\n return dagreD3.intersect.polygon(node, points, point);\n };\n return shapeSvg;\n}\n\nfunction lean_left(parent, bbox, node) {\n const w = bbox.width;\n const h = bbox.height;\n const points = [\n { x: (2 * h) / 6, y: 0 },\n { x: w + h / 6, y: 0 },\n { x: w - (2 * h) / 6, y: -h },\n { x: -h / 6, y: -h }\n ];\n const shapeSvg = insertPolygonShape(parent, w, h, points);\n node.intersect = function(point) {\n return dagreD3.intersect.polygon(node, points, point);\n };\n return shapeSvg;\n}\n\nfunction trapezoid(parent, bbox, node) {\n const w = bbox.width;\n const h = bbox.height;\n const points = [\n { x: (-2 * h) / 6, y: 0 },\n { x: w + (2 * h) / 6, y: 0 },\n { x: w - h / 6, y: -h },\n { x: h / 6, y: -h }\n ];\n const shapeSvg = insertPolygonShape(parent, w, h, points);\n node.intersect = function(point) {\n return dagreD3.intersect.polygon(node, points, point);\n };\n return shapeSvg;\n}\n\nfunction inv_trapezoid(parent, bbox, node) {\n const w = bbox.width;\n const h = bbox.height;\n const points = [\n { x: h / 6, y: 0 },\n { x: w - h / 6, y: 0 },\n { x: w + (2 * h) / 6, y: -h },\n { x: (-2 * h) / 6, y: -h }\n ];\n const shapeSvg = insertPolygonShape(parent, w, h, points);\n node.intersect = function(point) {\n return dagreD3.intersect.polygon(node, points, point);\n };\n return shapeSvg;\n}\n\nfunction rect_right_inv_arrow(parent, bbox, node) {\n const w = bbox.width;\n const h = bbox.height;\n const points = [\n { x: 0, y: 0 },\n { x: w + h / 2, y: 0 },\n { x: w, y: -h / 2 },\n { x: w + h / 2, y: -h },\n { x: 0, y: -h }\n ];\n const shapeSvg = insertPolygonShape(parent, w, h, points);\n node.intersect = function(point) {\n return dagreD3.intersect.polygon(node, points, point);\n };\n return shapeSvg;\n}\n\nfunction stadium(parent, bbox, node) {\n const h = bbox.height;\n const w = bbox.width + h / 4;\n\n const shapeSvg = parent\n .insert('rect', ':first-child')\n .attr('rx', h / 2)\n .attr('ry', h / 2)\n .attr('x', -w / 2)\n .attr('y', -h / 2)\n .attr('width', w)\n .attr('height', h);\n\n node.intersect = function(point) {\n return dagreD3.intersect.rect(node, point);\n };\n return shapeSvg;\n}\n\nfunction subroutine(parent, bbox, node) {\n const w = bbox.width;\n const h = bbox.height;\n const points = [\n { x: 0, y: 0 },\n { x: w, y: 0 },\n { x: w, y: -h },\n { x: 0, y: -h },\n { x: 0, y: 0 },\n { x: -8, y: 0 },\n { x: w + 8, y: 0 },\n { x: w + 8, y: -h },\n { x: -8, y: -h },\n { x: -8, y: 0 }\n ];\n const shapeSvg = insertPolygonShape(parent, w, h, points);\n node.intersect = function(point) {\n return dagreD3.intersect.polygon(node, points, point);\n };\n return shapeSvg;\n}\n\nfunction cylinder(parent, bbox, node) {\n const w = bbox.width;\n const rx = w / 2;\n const ry = rx / (2.5 + w / 50);\n const h = bbox.height + ry;\n\n const shape =\n 'M 0,' +\n ry +\n ' a ' +\n rx +\n ',' +\n ry +\n ' 0,0,0 ' +\n w +\n ' 0 a ' +\n rx +\n ',' +\n ry +\n ' 0,0,0 ' +\n -w +\n ' 0 l 0,' +\n h +\n ' a ' +\n rx +\n ',' +\n ry +\n ' 0,0,0 ' +\n w +\n ' 0 l 0,' +\n -h;\n\n const shapeSvg = parent\n .attr('label-offset-y', ry)\n .insert('path', ':first-child')\n .attr('d', shape)\n .attr('transform', 'translate(' + -w / 2 + ',' + -(h / 2 + ry) + ')');\n\n node.intersect = function(point) {\n const pos = dagreD3.intersect.rect(node, point);\n const x = pos.x - node.x;\n\n if (\n rx != 0 &&\n (Math.abs(x) < node.width / 2 ||\n (Math.abs(x) == node.width / 2 && Math.abs(pos.y - node.y) > node.height / 2 - ry))\n ) {\n // ellipsis equation: x*x / a*a + y*y / b*b = 1\n // solve for y to get adjustion value for pos.y\n let y = ry * ry * (1 - (x * x) / (rx * rx));\n if (y != 0) y = Math.sqrt(y);\n y = ry - y;\n if (point.y - node.y > 0) y = -y;\n\n pos.y += y;\n }\n\n return pos;\n };\n\n return shapeSvg;\n}\n\nexport function addToRender(render) {\n render.shapes().question = question;\n render.shapes().hexagon = hexagon;\n render.shapes().stadium = stadium;\n render.shapes().subroutine = subroutine;\n render.shapes().cylinder = cylinder;\n\n // Add custom shape for box with inverted arrow on left side\n render.shapes().rect_left_inv_arrow = rect_left_inv_arrow;\n\n // Add custom shape for box with inverted arrow on left side\n render.shapes().lean_right = lean_right;\n\n // Add custom shape for box with inverted arrow on left side\n render.shapes().lean_left = lean_left;\n\n // Add custom shape for box with inverted arrow on left side\n render.shapes().trapezoid = trapezoid;\n\n // Add custom shape for box with inverted arrow on left side\n render.shapes().inv_trapezoid = inv_trapezoid;\n\n // Add custom shape for box with inverted arrow on right side\n render.shapes().rect_right_inv_arrow = rect_right_inv_arrow;\n}\n\nexport function addToRenderV2(addShape) {\n addShape({ question });\n addShape({ hexagon });\n addShape({ stadium });\n addShape({ subroutine });\n addShape({ cylinder });\n\n // Add custom shape for box with inverted arrow on left side\n addShape({ rect_left_inv_arrow });\n\n // Add custom shape for box with inverted arrow on left side\n addShape({ lean_right });\n\n // Add custom shape for box with inverted arrow on left side\n addShape({ lean_left });\n\n // Add custom shape for box with inverted arrow on left side\n addShape({ trapezoid });\n\n // Add custom shape for box with inverted arrow on left side\n addShape({ inv_trapezoid });\n\n // Add custom shape for box with inverted arrow on right side\n addShape({ rect_right_inv_arrow });\n}\n\nfunction insertPolygonShape(parent, w, h, points) {\n return parent\n .insert('polygon', ':first-child')\n .attr(\n 'points',\n points\n .map(function(d) {\n return d.x + ',' + d.y;\n })\n .join(' ')\n )\n .attr('transform', 'translate(' + -w / 2 + ',' + h / 2 + ')');\n}\n\nexport default {\n addToRender,\n addToRenderV2\n};\n","import { select } from 'd3';\nimport { logger } from '../../logger'; // eslint-disable-line\nimport utils from '../../utils';\nimport { getConfig } from '../../config';\nimport common from '../common/common';\n\n// const MERMAID_DOM_ID_PREFIX = 'mermaid-dom-id-';\nconst MERMAID_DOM_ID_PREFIX = '';\n\nlet config = getConfig();\nlet vertices = {};\nlet edges = [];\nlet classes = [];\nlet subGraphs = [];\nlet subGraphLookup = {};\nlet tooltips = {};\nlet subCount = 0;\nlet firstGraphFlag = true;\nlet direction;\n// Functions to be run after graph rendering\nlet funs = [];\n\n/**\n * Function called by parser when a node definition has been found\n * @param id\n * @param text\n * @param type\n * @param style\n * @param classes\n */\nexport const addVertex = function(_id, text, type, style, classes) {\n let txt;\n let id = _id;\n if (typeof id === 'undefined') {\n return;\n }\n if (id.trim().length === 0) {\n return;\n }\n\n if (id[0].match(/\\d/)) id = MERMAID_DOM_ID_PREFIX + id;\n\n if (typeof vertices[id] === 'undefined') {\n vertices[id] = { id: id, styles: [], classes: [] };\n }\n if (typeof text !== 'undefined') {\n config = getConfig();\n txt = common.sanitizeText(text.trim(), config);\n\n // strip quotes if string starts and ends with a quote\n if (txt[0] === '\"' && txt[txt.length - 1] === '\"') {\n txt = txt.substring(1, txt.length - 1);\n }\n\n vertices[id].text = txt;\n } else {\n if (typeof vertices[id].text === 'undefined') {\n vertices[id].text = _id;\n }\n }\n if (typeof type !== 'undefined') {\n vertices[id].type = type;\n }\n if (typeof style !== 'undefined') {\n if (style !== null) {\n style.forEach(function(s) {\n vertices[id].styles.push(s);\n });\n }\n }\n if (typeof classes !== 'undefined') {\n if (classes !== null) {\n classes.forEach(function(s) {\n vertices[id].classes.push(s);\n });\n }\n }\n};\n\n/**\n * Function called by parser when a link/edge definition has been found\n * @param start\n * @param end\n * @param type\n * @param linktext\n */\nexport const addSingleLink = function(_start, _end, type, linktext) {\n let start = _start;\n let end = _end;\n if (start[0].match(/\\d/)) start = MERMAID_DOM_ID_PREFIX + start;\n if (end[0].match(/\\d/)) end = MERMAID_DOM_ID_PREFIX + end;\n // logger.info('Got edge...', start, end);\n\n const edge = { start: start, end: end, type: undefined, text: '' };\n linktext = type.text;\n\n if (typeof linktext !== 'undefined') {\n edge.text = common.sanitizeText(linktext.trim(), config);\n\n // strip quotes if string starts and exnds with a quote\n if (edge.text[0] === '\"' && edge.text[edge.text.length - 1] === '\"') {\n edge.text = edge.text.substring(1, edge.text.length - 1);\n }\n }\n\n if (typeof type !== 'undefined') {\n edge.type = type.type;\n edge.stroke = type.stroke;\n }\n edges.push(edge);\n};\nexport const addLink = function(_start, _end, type, linktext) {\n let i, j;\n for (i = 0; i < _start.length; i++) {\n for (j = 0; j < _end.length; j++) {\n addSingleLink(_start[i], _end[j], type, linktext);\n }\n }\n};\n\n/**\n * Updates a link's line interpolation algorithm\n * @param pos\n * @param interpolate\n */\nexport const updateLinkInterpolate = function(positions, interp) {\n positions.forEach(function(pos) {\n if (pos === 'default') {\n edges.defaultInterpolate = interp;\n } else {\n edges[pos].interpolate = interp;\n }\n });\n};\n\n/**\n * Updates a link with a style\n * @param pos\n * @param style\n */\nexport const updateLink = function(positions, style) {\n positions.forEach(function(pos) {\n if (pos === 'default') {\n edges.defaultStyle = style;\n } else {\n if (utils.isSubstringInArray('fill', style) === -1) {\n style.push('fill:none');\n }\n edges[pos].style = style;\n }\n });\n};\n\nexport const addClass = function(id, style) {\n if (typeof classes[id] === 'undefined') {\n classes[id] = { id: id, styles: [], textStyles: [] };\n }\n\n if (typeof style !== 'undefined') {\n if (style !== null) {\n style.forEach(function(s) {\n if (s.match('color')) {\n const newStyle1 = s.replace('fill', 'bgFill');\n const newStyle2 = newStyle1.replace('color', 'fill');\n classes[id].textStyles.push(newStyle2);\n }\n classes[id].styles.push(s);\n });\n }\n }\n};\n\n/**\n * Called by parser when a graph definition is found, stores the direction of the chart.\n * @param dir\n */\nexport const setDirection = function(dir) {\n direction = dir;\n if (direction.match(/.*)) {\n direction = 'RL';\n }\n if (direction.match(/.*\\^/)) {\n direction = 'BT';\n }\n if (direction.match(/.*>/)) {\n direction = 'LR';\n }\n if (direction.match(/.*v/)) {\n direction = 'TB';\n }\n};\n\n/**\n * Called by parser when a special node is found, e.g. a clickable element.\n * @param ids Comma separated list of ids\n * @param className Class to add\n */\nexport const setClass = function(ids, className) {\n ids.split(',').forEach(function(_id) {\n let id = _id;\n if (_id[0].match(/\\d/)) id = MERMAID_DOM_ID_PREFIX + id;\n if (typeof vertices[id] !== 'undefined') {\n vertices[id].classes.push(className);\n }\n\n if (typeof subGraphLookup[id] !== 'undefined') {\n subGraphLookup[id].classes.push(className);\n }\n });\n};\n\nconst setTooltip = function(ids, tooltip) {\n ids.split(',').forEach(function(id) {\n if (typeof tooltip !== 'undefined') {\n tooltips[id] = common.sanitizeText(tooltip, config);\n }\n });\n};\n\nconst setClickFun = function(_id, functionName) {\n let id = _id;\n if (_id[0].match(/\\d/)) id = MERMAID_DOM_ID_PREFIX + id;\n if (getConfig().securityLevel !== 'loose') {\n return;\n }\n if (typeof functionName === 'undefined') {\n return;\n }\n if (typeof vertices[id] !== 'undefined') {\n funs.push(function() {\n const elem = document.querySelector(`[id=\"${id}\"]`);\n if (elem !== null) {\n elem.addEventListener(\n 'click',\n function() {\n utils.runFunc(functionName, id);\n },\n false\n );\n }\n });\n }\n};\n\n/**\n * Called by parser when a link is found. Adds the URL to the vertex data.\n * @param ids Comma separated list of ids\n * @param linkStr URL to create a link for\n * @param tooltip Tooltip for the clickable element\n */\nexport const setLink = function(ids, linkStr, tooltip) {\n ids.split(',').forEach(function(_id) {\n let id = _id;\n if (_id[0].match(/\\d/)) id = MERMAID_DOM_ID_PREFIX + id;\n if (typeof vertices[id] !== 'undefined') {\n vertices[id].link = utils.formatUrl(linkStr, config);\n }\n });\n setTooltip(ids, tooltip);\n setClass(ids, 'clickable');\n};\nexport const getTooltip = function(id) {\n return tooltips[id];\n};\n\n/**\n * Called by parser when a click definition is found. Registers an event handler.\n * @param ids Comma separated list of ids\n * @param functionName Function to be called on click\n * @param tooltip Tooltip for the clickable element\n */\nexport const setClickEvent = function(ids, functionName, tooltip) {\n ids.split(',').forEach(function(id) {\n setClickFun(id, functionName);\n });\n setTooltip(ids, tooltip);\n setClass(ids, 'clickable');\n};\n\nexport const bindFunctions = function(element) {\n funs.forEach(function(fun) {\n fun(element);\n });\n};\nexport const getDirection = function() {\n return direction.trim();\n};\n/**\n * Retrieval function for fetching the found nodes after parsing has completed.\n * @returns {{}|*|vertices}\n */\nexport const getVertices = function() {\n return vertices;\n};\n\n/**\n * Retrieval function for fetching the found links after parsing has completed.\n * @returns {{}|*|edges}\n */\nexport const getEdges = function() {\n return edges;\n};\n\n/**\n * Retrieval function for fetching the found class definitions after parsing has completed.\n * @returns {{}|*|classes}\n */\nexport const getClasses = function() {\n return classes;\n};\n\nconst setupToolTips = function(element) {\n let tooltipElem = select('.mermaidTooltip');\n if ((tooltipElem._groups || tooltipElem)[0][0] === null) {\n tooltipElem = select('body')\n .append('div')\n .attr('class', 'mermaidTooltip')\n .style('opacity', 0);\n }\n\n const svg = select(element).select('svg');\n\n const nodes = svg.selectAll('g.node');\n nodes\n .on('mouseover', function() {\n const el = select(this);\n const title = el.attr('title');\n\n // Dont try to draw a tooltip if no data is provided\n if (title === null) {\n return;\n }\n const rect = this.getBoundingClientRect();\n\n tooltipElem\n .transition()\n .duration(200)\n .style('opacity', '.9');\n tooltipElem\n .html(el.attr('title'))\n .style('left', window.scrollX + rect.left + (rect.right - rect.left) / 2 + 'px')\n .style('top', window.scrollY + rect.top - 14 + document.body.scrollTop + 'px');\n el.classed('hover', true);\n })\n .on('mouseout', function() {\n tooltipElem\n .transition()\n .duration(500)\n .style('opacity', 0);\n const el = select(this);\n el.classed('hover', false);\n });\n};\nfuns.push(setupToolTips);\n\n/**\n * Clears the internal graph db so that a new graph can be parsed.\n */\nexport const clear = function() {\n vertices = {};\n classes = {};\n edges = [];\n funs = [];\n funs.push(setupToolTips);\n subGraphs = [];\n subGraphLookup = {};\n subCount = 0;\n tooltips = [];\n firstGraphFlag = true;\n};\n/**\n *\n * @returns {string}\n */\nexport const defaultStyle = function() {\n return 'fill:#ffa;stroke: #f66; stroke-width: 3px; stroke-dasharray: 5, 5;fill:#ffa;stroke: #666;';\n};\n\n/**\n * Clears the internal graph db so that a new graph can be parsed.\n */\nexport const addSubGraph = function(_id, list, _title) {\n let id = _id.trim();\n let title = _title;\n if (_id === _title && _title.match(/\\s/)) {\n id = undefined;\n }\n function uniq(a) {\n const prims = { boolean: {}, number: {}, string: {} };\n const objs = [];\n\n return a.filter(function(item) {\n const type = typeof item;\n if (item.trim() === '') {\n return false;\n }\n if (type in prims) {\n return prims[type].hasOwnProperty(item) ? false : (prims[type][item] = true); // eslint-disable-line\n } else {\n return objs.indexOf(item) >= 0 ? false : objs.push(item);\n }\n });\n }\n\n let nodeList = [];\n\n nodeList = uniq(nodeList.concat.apply(nodeList, list));\n for (let i = 0; i < nodeList.length; i++) {\n if (nodeList[i][0].match(/\\d/)) nodeList[i] = MERMAID_DOM_ID_PREFIX + nodeList[i];\n }\n\n id = id || 'subGraph' + subCount;\n if (id[0].match(/\\d/)) id = MERMAID_DOM_ID_PREFIX + id;\n title = title || '';\n title = common.sanitizeText(title, config);\n subCount = subCount + 1;\n const subGraph = { id: id, nodes: nodeList, title: title.trim(), classes: [] };\n subGraphs.push(subGraph);\n subGraphLookup[id] = subGraph;\n return id;\n};\n\nconst getPosForId = function(id) {\n for (let i = 0; i < subGraphs.length; i++) {\n if (subGraphs[i].id === id) {\n return i;\n }\n }\n return -1;\n};\nlet secCount = -1;\nconst posCrossRef = [];\nconst indexNodes2 = function(id, pos) {\n const nodes = subGraphs[pos].nodes;\n secCount = secCount + 1;\n if (secCount > 2000) {\n return;\n }\n posCrossRef[secCount] = pos;\n // Check if match\n if (subGraphs[pos].id === id) {\n return {\n result: true,\n count: 0\n };\n }\n\n let count = 0;\n let posCount = 1;\n while (count < nodes.length) {\n const childPos = getPosForId(nodes[count]);\n // Ignore regular nodes (pos will be -1)\n if (childPos >= 0) {\n const res = indexNodes2(id, childPos);\n if (res.result) {\n return {\n result: true,\n count: posCount + res.count\n };\n } else {\n posCount = posCount + res.count;\n }\n }\n count = count + 1;\n }\n\n return {\n result: false,\n count: posCount\n };\n};\n\nexport const getDepthFirstPos = function(pos) {\n return posCrossRef[pos];\n};\nexport const indexNodes = function() {\n secCount = -1;\n if (subGraphs.length > 0) {\n indexNodes2('none', subGraphs.length - 1, 0);\n }\n};\n\nexport const getSubGraphs = function() {\n return subGraphs;\n};\n\nexport const firstGraph = () => {\n if (firstGraphFlag) {\n firstGraphFlag = false;\n return true;\n }\n return false;\n};\n\nconst destructStartLink = _str => {\n const str = _str.trim();\n\n switch (str) {\n case '<--':\n return { type: 'arrow_point', stroke: 'normal' };\n case 'x--':\n return { type: 'arrow_cross', stroke: 'normal' };\n case 'o--':\n return { type: 'arrow_circle', stroke: 'normal' };\n case '<-.':\n return { type: 'arrow_point', stroke: 'dotted' };\n case 'x-.':\n return { type: 'arrow_cross', stroke: 'dotted' };\n case 'o-.':\n return { type: 'arrow_circle', stroke: 'dotted' };\n case '<==':\n return { type: 'arrow_point', stroke: 'thick' };\n case 'x==':\n return { type: 'arrow_cross', stroke: 'thick' };\n case 'o==':\n return { type: 'arrow_circle', stroke: 'thick' };\n case '--':\n return { type: 'arrow_open', stroke: 'normal' };\n case '==':\n return { type: 'arrow_open', stroke: 'thick' };\n case '-.':\n return { type: 'arrow_open', stroke: 'dotted' };\n }\n};\n\nconst destructEndLink = _str => {\n const str = _str.trim();\n\n switch (str) {\n case '--x':\n return { type: 'arrow_cross', stroke: 'normal' };\n case '-->':\n return { type: 'arrow_point', stroke: 'normal' };\n case '<-->':\n return { type: 'double_arrow_point', stroke: 'normal' };\n case 'x--x':\n return { type: 'double_arrow_cross', stroke: 'normal' };\n case 'o--o':\n return { type: 'double_arrow_circle', stroke: 'normal' };\n case 'o.-o':\n return { type: 'double_arrow_circle', stroke: 'dotted' };\n case '<==>':\n return { type: 'double_arrow_point', stroke: 'thick' };\n case 'o==o':\n return { type: 'double_arrow_circle', stroke: 'thick' };\n case 'x==x':\n return { type: 'double_arrow_cross', stroke: 'thick' };\n case 'x.-x':\n return { type: 'double_arrow_cross', stroke: 'dotted' };\n case 'x-.-x':\n return { type: 'double_arrow_cross', stroke: 'dotted' };\n case '<.->':\n return { type: 'double_arrow_point', stroke: 'dotted' };\n case '<-.->':\n return { type: 'double_arrow_point', stroke: 'dotted' };\n case 'o-.-o':\n return { type: 'double_arrow_circle', stroke: 'dotted' };\n case '--o':\n return { type: 'arrow_circle', stroke: 'normal' };\n case '---':\n return { type: 'arrow_open', stroke: 'normal' };\n case '-.-x':\n return { type: 'arrow_cross', stroke: 'dotted' };\n case '-.->':\n return { type: 'arrow_point', stroke: 'dotted' };\n case '-.-o':\n return { type: 'arrow_circle', stroke: 'dotted' };\n case '-.-':\n return { type: 'arrow_open', stroke: 'dotted' };\n case '.-x':\n return { type: 'arrow_cross', stroke: 'dotted' };\n case '.->':\n return { type: 'arrow_point', stroke: 'dotted' };\n case '.-o':\n return { type: 'arrow_circle', stroke: 'dotted' };\n case '.-':\n return { type: 'arrow_open', stroke: 'dotted' };\n case '==x':\n return { type: 'arrow_cross', stroke: 'thick' };\n case '==>':\n return { type: 'arrow_point', stroke: 'thick' };\n case '==o':\n return { type: 'arrow_circle', stroke: 'thick' };\n case '===':\n return { type: 'arrow_open', stroke: 'thick' };\n }\n};\n\nconst destructLink = (_str, _startStr) => {\n const info = destructEndLink(_str);\n let startInfo;\n if (_startStr) {\n startInfo = destructStartLink(_startStr);\n\n if (startInfo.stroke !== info.stroke) {\n return { type: 'INVALID', stroke: 'INVALID' };\n }\n\n if (startInfo.type === 'arrow_open') {\n // -- xyz --> - take arrow type form ending\n startInfo.type = info.type;\n } else {\n // x-- xyz --> - not supported\n if (startInfo.type !== info.type) return { type: 'INVALID', stroke: 'INVALID' };\n\n startInfo.type = 'double_' + startInfo.type;\n }\n\n if (startInfo.type === 'double_arrow') {\n startInfo.type = 'double_arrow_point';\n }\n\n return startInfo;\n }\n\n return info;\n};\n\nexport default {\n addVertex,\n addLink,\n updateLinkInterpolate,\n updateLink,\n addClass,\n setDirection,\n setClass,\n getTooltip,\n setClickEvent,\n setLink,\n bindFunctions,\n getDirection,\n getVertices,\n getEdges,\n getClasses,\n clear,\n defaultStyle,\n addSubGraph,\n getDepthFirstPos,\n indexNodes,\n getSubGraphs,\n destructLink,\n lex: {\n firstGraph\n }\n};\n","import graphlib from 'graphlib';\nimport { select, curveLinear, selectAll } from 'd3';\n\nimport flowDb from './flowDb';\nimport flow from './parser/flow';\nimport { getConfig } from '../../config';\n\nimport { render } from '../../dagre-wrapper/index.js';\nimport addHtmlLabel from 'dagre-d3/lib/label/add-html-label.js';\nimport { logger } from '../../logger';\nimport common from '../common/common';\nimport { interpolateToCurve, getStylesFromArray } from '../../utils';\n\nconst conf = {};\nexport const setConf = function(cnf) {\n const keys = Object.keys(cnf);\n for (let i = 0; i < keys.length; i++) {\n conf[keys[i]] = cnf[keys[i]];\n }\n};\n\n/**\n * Function that adds the vertices found during parsing to the graph to be rendered.\n * @param vert Object containing the vertices.\n * @param g The graph that is to be drawn.\n */\nexport const addVertices = function(vert, g, svgId) {\n const svg = select(`[id=\"${svgId}\"]`);\n const keys = Object.keys(vert);\n\n // Iterate through each item in the vertex object (containing all the vertices found) in the graph definition\n keys.forEach(function(id) {\n const vertex = vert[id];\n\n /**\n * Variable for storing the classes for the vertex\n * @type {string}\n */\n let classStr = 'default';\n if (vertex.classes.length > 0) {\n classStr = vertex.classes.join(' ');\n }\n\n const styles = getStylesFromArray(vertex.styles);\n\n // Use vertex id as text in the box if no text is provided by the graph definition\n let vertexText = vertex.text !== undefined ? vertex.text : vertex.id;\n\n // We create a SVG label, either by delegating to addHtmlLabel or manually\n let vertexNode;\n if (getConfig().flowchart.htmlLabels) {\n // TODO: addHtmlLabel accepts a labelStyle. Do we possibly have that?\n const node = {\n label: vertexText.replace(\n /fa[lrsb]?:fa-[\\w-]+/g,\n s => ``\n )\n };\n vertexNode = addHtmlLabel(svg, node).node();\n vertexNode.parentNode.removeChild(vertexNode);\n } else {\n const svgLabel = document.createElementNS('http://www.w3.org/2000/svg', 'text');\n svgLabel.setAttribute('style', styles.labelStyle.replace('color:', 'fill:'));\n\n const rows = vertexText.split(common.lineBreakRegex);\n\n for (let j = 0; j < rows.length; j++) {\n const tspan = document.createElementNS('http://www.w3.org/2000/svg', 'tspan');\n tspan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\n tspan.setAttribute('dy', '1em');\n tspan.setAttribute('x', '1');\n tspan.textContent = rows[j];\n svgLabel.appendChild(tspan);\n }\n vertexNode = svgLabel;\n }\n\n let radious = 0;\n let _shape = '';\n // Set the shape based parameters\n switch (vertex.type) {\n case 'round':\n radious = 5;\n _shape = 'rect';\n break;\n case 'square':\n _shape = 'rect';\n break;\n case 'diamond':\n _shape = 'question';\n break;\n case 'hexagon':\n _shape = 'hexagon';\n break;\n case 'odd':\n _shape = 'rect_left_inv_arrow';\n break;\n case 'lean_right':\n _shape = 'lean_right';\n break;\n case 'lean_left':\n _shape = 'lean_left';\n break;\n case 'trapezoid':\n _shape = 'trapezoid';\n break;\n case 'inv_trapezoid':\n _shape = 'inv_trapezoid';\n break;\n case 'odd_right':\n _shape = 'rect_left_inv_arrow';\n break;\n case 'circle':\n _shape = 'circle';\n break;\n case 'ellipse':\n _shape = 'ellipse';\n break;\n case 'stadium':\n _shape = 'stadium';\n break;\n case 'subroutine':\n _shape = 'subroutine';\n break;\n case 'cylinder':\n _shape = 'cylinder';\n break;\n case 'group':\n _shape = 'rect';\n break;\n default:\n _shape = 'rect';\n }\n // Add the node\n g.setNode(vertex.id, {\n labelStyle: styles.labelStyle,\n shape: _shape,\n labelText: vertexText,\n rx: radious,\n ry: radious,\n class: classStr,\n style: styles.style,\n id: vertex.id,\n width: vertex.type === 'group' ? 500 : undefined,\n type: vertex.type,\n padding: getConfig().flowchart.padding\n });\n\n logger.info('setNode', {\n labelStyle: styles.labelStyle,\n shape: _shape,\n labelText: vertexText,\n rx: radious,\n ry: radious,\n class: classStr,\n style: styles.style,\n id: vertex.id,\n width: vertex.type === 'group' ? 500 : undefined,\n type: vertex.type,\n padding: getConfig().flowchart.padding\n });\n });\n};\n\n/**\n * Add edges to graph based on parsed graph defninition\n * @param {Object} edges The edges to add to the graph\n * @param {Object} g The graph object\n */\nexport const addEdges = function(edges, g) {\n let cnt = 0;\n\n let defaultStyle;\n let defaultLabelStyle;\n\n if (typeof edges.defaultStyle !== 'undefined') {\n const defaultStyles = getStylesFromArray(edges.defaultStyle);\n defaultStyle = defaultStyles.style;\n defaultLabelStyle = defaultStyles.labelStyle;\n }\n\n edges.forEach(function(edge) {\n cnt++;\n\n // Identify Link\n var linkId = 'L-' + edge.start + '-' + edge.end;\n var linkNameStart = 'LS-' + edge.start;\n var linkNameEnd = 'LE-' + edge.end;\n\n const edgeData = {};\n //edgeData.id = 'id' + cnt;\n\n // Set link type for rendering\n if (edge.type === 'arrow_open') {\n edgeData.arrowhead = 'none';\n } else {\n edgeData.arrowhead = 'normal';\n }\n\n // Check of arrow types, placed here in order not to break old rendering\n edgeData.arrowTypeStart = 'arrow_open';\n edgeData.arrowTypeEnd = 'arrow_open';\n\n /* eslint-disable no-fallthrough */\n switch (edge.type) {\n case 'double_arrow_cross':\n edgeData.arrowTypeStart = 'arrow_cross';\n case 'arrow_cross':\n edgeData.arrowTypeEnd = 'arrow_cross';\n break;\n case 'double_arrow_point':\n edgeData.arrowTypeStart = 'arrow_point';\n case 'arrow_point':\n edgeData.arrowTypeEnd = 'arrow_point';\n break;\n case 'double_arrow_circle':\n edgeData.arrowTypeStart = 'arrow_circle';\n case 'arrow_circle':\n edgeData.arrowTypeEnd = 'arrow_circle';\n break;\n }\n\n // logger.info('apa', edgeData, edge);\n // edgeData.arrowTypeStart = edge.arrowTypeStart;\n // edgeData.arrowTypeStart = edge.arrowTypeStart;\n // edgeData.arrowType = edgeData.arrowTypeEnd;\n // logger.info('apa', edgeData, edge);\n\n let style = '';\n let labelStyle = '';\n\n if (typeof edge.style !== 'undefined') {\n const styles = getStylesFromArray(edge.style);\n style = styles.style;\n labelStyle = styles.labelStyle;\n } else {\n switch (edge.stroke) {\n case 'normal':\n style = 'fill:none';\n if (typeof defaultStyle !== 'undefined') {\n style = defaultStyle;\n }\n if (typeof defaultLabelStyle !== 'undefined') {\n labelStyle = defaultLabelStyle;\n }\n edgeData.thickness = 'normal';\n edgeData.pattern = 'solid';\n break;\n case 'dotted':\n edgeData.thickness = 'normal';\n edgeData.pattern = 'dotted';\n break;\n case 'thick':\n edgeData.thickness = 'thick';\n edgeData.pattern = 'solid';\n break;\n }\n }\n\n edgeData.style = style;\n edgeData.labelStyle = labelStyle;\n\n if (typeof edge.interpolate !== 'undefined') {\n edgeData.curve = interpolateToCurve(edge.interpolate, curveLinear);\n } else if (typeof edges.defaultInterpolate !== 'undefined') {\n edgeData.curve = interpolateToCurve(edges.defaultInterpolate, curveLinear);\n } else {\n edgeData.curve = interpolateToCurve(conf.curve, curveLinear);\n }\n\n if (typeof edge.text === 'undefined') {\n if (typeof edge.style !== 'undefined') {\n edgeData.arrowheadStyle = 'fill: #333';\n }\n } else {\n edgeData.arrowheadStyle = 'fill: #333';\n edgeData.labelpos = 'c';\n\n if (getConfig().flowchart.htmlLabels && false) { // eslint-disable-line\n edgeData.labelType = 'html';\n edgeData.label = `${edge.text}`;\n } else {\n edgeData.labelType = 'text';\n edgeData.label = edge.text.replace(common.lineBreakRegex, '\\n');\n\n if (typeof edge.style === 'undefined') {\n edgeData.style = edgeData.style || 'stroke: #333; stroke-width: 1.5px;fill:none';\n }\n\n edgeData.labelStyle = edgeData.labelStyle.replace('color:', 'fill:');\n }\n }\n\n edgeData.id = linkId;\n edgeData.classes = 'flowchart-link ' + linkNameStart + ' ' + linkNameEnd;\n\n // Add the edge to the graph\n g.setEdge(edge.start, edge.end, edgeData, cnt);\n });\n};\n\n/**\n * Returns the all the styles from classDef statements in the graph definition.\n * @returns {object} classDef styles\n */\nexport const getClasses = function(text) {\n logger.info('Extracting classes');\n flowDb.clear();\n const parser = flow.parser;\n parser.yy = flowDb;\n\n try {\n // Parse the graph definition\n parser.parse(text);\n } catch (e) {\n return;\n }\n\n return flowDb.getClasses();\n};\n\n/**\n * Draws a flowchart in the tag with id: id based on the graph definition in text.\n * @param text\n * @param id\n */\n\nexport const draw = function(text, id) {\n logger.info('Drawing flowchart');\n flowDb.clear();\n const parser = flow.parser;\n parser.yy = flowDb;\n\n // Parse the graph definition\n // try {\n parser.parse(text);\n // } catch (err) {\n // logger.debug('Parsing failed');\n // }\n\n // Fetch the default direction, use TD if none was found\n let dir = flowDb.getDirection();\n if (typeof dir === 'undefined') {\n dir = 'TD';\n }\n\n const conf = getConfig().flowchart;\n const nodeSpacing = conf.nodeSpacing || 50;\n const rankSpacing = conf.rankSpacing || 50;\n\n // Create the input mermaid.graph\n const g = new graphlib.Graph({\n multigraph: true,\n compound: true\n })\n .setGraph({\n rankdir: dir,\n nodesep: nodeSpacing,\n ranksep: rankSpacing,\n marginx: 8,\n marginy: 8\n })\n .setDefaultEdgeLabel(function() {\n return {};\n });\n\n let subG;\n const subGraphs = flowDb.getSubGraphs();\n logger.info('Subgraphs - ', subGraphs);\n for (let i = subGraphs.length - 1; i >= 0; i--) {\n subG = subGraphs[i];\n logger.info('Subgraph - ', subG);\n flowDb.addVertex(subG.id, subG.title, 'group', undefined, subG.classes);\n }\n\n // Fetch the verices/nodes and edges/links from the parsed graph definition\n const vert = flowDb.getVertices();\n\n const edges = flowDb.getEdges();\n\n logger.info(edges);\n let i = 0;\n for (i = subGraphs.length - 1; i >= 0; i--) {\n subG = subGraphs[i];\n\n selectAll('cluster').append('text');\n\n for (let j = 0; j < subG.nodes.length; j++) {\n g.setParent(subG.nodes[j], subG.id);\n }\n }\n addVertices(vert, g, id);\n addEdges(edges, g);\n\n // Add custom shapes\n // flowChartShapes.addToRenderV2(addShape);\n\n // Set up an SVG group so that we can translate the final graph.\n const svg = select(`[id=\"${id}\"]`);\n\n // Run the renderer. This is what draws the final graph.\n const element = select('#' + id + ' g');\n render(element, g, ['point', 'circle', 'cross'], 'flowchart', id);\n // dagre.layout(g);\n\n element.selectAll('g.node').attr('title', function() {\n return flowDb.getTooltip(this.id);\n });\n\n const padding = conf.diagramPadding;\n const svgBounds = svg.node().getBBox();\n const width = svgBounds.width + padding * 2;\n const height = svgBounds.height + padding * 2;\n logger.debug(\n `new ViewBox 0 0 ${width} ${height}`,\n `translate(${padding - g._label.marginx}, ${padding - g._label.marginy})`\n );\n\n if (conf.useMaxWidth) {\n svg.attr('width', '100%');\n svg.attr('style', `max-width: ${width}px;`);\n } else {\n svg.attr('height', height);\n svg.attr('width', width);\n }\n\n svg.attr('viewBox', `0 0 ${width} ${height}`);\n svg\n .select('g')\n .attr('transform', `translate(${padding - g._label.marginx}, ${padding - svgBounds.y})`);\n\n // Index nodes\n flowDb.indexNodes('subGraph' + i);\n\n // // reposition labels\n // for (i = 0; i < subGraphs.length; i++) {\n // subG = subGraphs[i];\n\n // if (subG.title !== 'undefined') {\n // const clusterRects = document.querySelectorAll('#' + id + ' [id=\"' + subG.id + '\"] rect');\n // const clusterEl = document.querySelectorAll('#' + id + ' [id=\"' + subG.id + '\"]');\n\n // const xPos = clusterRects[0].x.baseVal.value;\n // const yPos = clusterRects[0].y.baseVal.value;\n // const width = clusterRects[0].width.baseVal.value;\n // const cluster = d3.select(clusterEl[0]);\n // const te = cluster.select('.label');\n // te.attr('transform', `translate(${xPos + width / 2}, ${yPos + 14})`);\n // te.attr('id', id + 'Text');\n\n // for (let j = 0; j < subG.classes.length; j++) {\n // clusterEl[0].classList.add(subG.classes[j]);\n // }\n // }\n // }\n\n // Add label rects for non html labels\n if (!conf.htmlLabels) {\n const labels = document.querySelectorAll('[id=\"' + id + '\"] .edgeLabel .label');\n for (let k = 0; k < labels.length; k++) {\n const label = labels[k];\n\n // Get dimensions of label\n const dim = label.getBBox();\n\n const rect = document.createElementNS('http://www.w3.org/2000/svg', 'rect');\n rect.setAttribute('rx', 0);\n rect.setAttribute('ry', 0);\n rect.setAttribute('width', dim.width);\n rect.setAttribute('height', dim.height);\n rect.setAttribute('style', 'fill:#e8e8e8;');\n\n label.insertBefore(rect, label.firstChild);\n }\n }\n\n // If node has a link, wrap it in an anchor SVG object.\n const keys = Object.keys(vert);\n keys.forEach(function(key) {\n const vertex = vert[key];\n\n if (vertex.link) {\n const node = select('#' + id + ' [id=\"' + key + '\"]');\n if (node) {\n const link = document.createElementNS('http://www.w3.org/2000/svg', 'a');\n link.setAttributeNS('http://www.w3.org/2000/svg', 'class', vertex.classes.join(' '));\n link.setAttributeNS('http://www.w3.org/2000/svg', 'href', vertex.link);\n link.setAttributeNS('http://www.w3.org/2000/svg', 'rel', 'noopener');\n\n const linkNode = node.insert(function() {\n return link;\n }, ':first-child');\n\n const shape = node.select('.label-container');\n if (shape) {\n linkNode.append(function() {\n return shape.node();\n });\n }\n\n const label = node.select('.label');\n if (label) {\n linkNode.append(function() {\n return label.node();\n });\n }\n }\n }\n });\n};\n\nexport default {\n setConf,\n addVertices,\n addEdges,\n getClasses,\n draw\n};\n","import graphlib from 'graphlib';\nimport { select, curveLinear, selectAll } from 'd3';\n\nimport flowDb from './flowDb';\nimport flow from './parser/flow';\nimport { getConfig } from '../../config';\n\nimport dagreD3 from 'dagre-d3';\nimport addHtmlLabel from 'dagre-d3/lib/label/add-html-label.js';\nimport { logger } from '../../logger';\nimport common from '../common/common';\nimport { interpolateToCurve, getStylesFromArray } from '../../utils';\nimport flowChartShapes from './flowChartShapes';\n\nconst conf = {};\nexport const setConf = function(cnf) {\n const keys = Object.keys(cnf);\n for (let i = 0; i < keys.length; i++) {\n conf[keys[i]] = cnf[keys[i]];\n }\n};\n\n/**\n * Function that adds the vertices found in the graph definition to the graph to be rendered.\n * @param vert Object containing the vertices.\n * @param g The graph that is to be drawn.\n */\nexport const addVertices = function(vert, g, svgId) {\n const svg = select(`[id=\"${svgId}\"]`);\n const keys = Object.keys(vert);\n\n // Iterate through each item in the vertex object (containing all the vertices found) in the graph definition\n keys.forEach(function(id) {\n const vertex = vert[id];\n\n /**\n * Variable for storing the classes for the vertex\n * @type {string}\n */\n let classStr = 'default';\n if (vertex.classes.length > 0) {\n classStr = vertex.classes.join(' ');\n }\n\n const styles = getStylesFromArray(vertex.styles);\n\n // Use vertex id as text in the box if no text is provided by the graph definition\n let vertexText = vertex.text !== undefined ? vertex.text : vertex.id;\n\n // We create a SVG label, either by delegating to addHtmlLabel or manually\n let vertexNode;\n if (getConfig().flowchart.htmlLabels) {\n // TODO: addHtmlLabel accepts a labelStyle. Do we possibly have that?\n const node = {\n label: vertexText.replace(\n /fa[lrsb]?:fa-[\\w-]+/g,\n s => ``\n )\n };\n vertexNode = addHtmlLabel(svg, node).node();\n vertexNode.parentNode.removeChild(vertexNode);\n } else {\n const svgLabel = document.createElementNS('http://www.w3.org/2000/svg', 'text');\n svgLabel.setAttribute('style', styles.labelStyle.replace('color:', 'fill:'));\n\n const rows = vertexText.split(common.lineBreakRegex);\n\n for (let j = 0; j < rows.length; j++) {\n const tspan = document.createElementNS('http://www.w3.org/2000/svg', 'tspan');\n tspan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\n tspan.setAttribute('dy', '1em');\n tspan.setAttribute('x', '1');\n tspan.textContent = rows[j];\n svgLabel.appendChild(tspan);\n }\n vertexNode = svgLabel;\n }\n\n let radious = 0;\n let _shape = '';\n // Set the shape based parameters\n switch (vertex.type) {\n case 'round':\n radious = 5;\n _shape = 'rect';\n break;\n case 'square':\n _shape = 'rect';\n break;\n case 'diamond':\n _shape = 'question';\n break;\n case 'hexagon':\n _shape = 'hexagon';\n break;\n case 'odd':\n _shape = 'rect_left_inv_arrow';\n break;\n case 'lean_right':\n _shape = 'lean_right';\n break;\n case 'lean_left':\n _shape = 'lean_left';\n break;\n case 'trapezoid':\n _shape = 'trapezoid';\n break;\n case 'inv_trapezoid':\n _shape = 'inv_trapezoid';\n break;\n case 'odd_right':\n _shape = 'rect_left_inv_arrow';\n break;\n case 'circle':\n _shape = 'circle';\n break;\n case 'ellipse':\n _shape = 'ellipse';\n break;\n case 'stadium':\n _shape = 'stadium';\n break;\n case 'subroutine':\n _shape = 'subroutine';\n break;\n case 'cylinder':\n _shape = 'cylinder';\n break;\n case 'group':\n _shape = 'rect';\n break;\n default:\n _shape = 'rect';\n }\n // Add the node\n g.setNode(vertex.id, {\n labelType: 'svg',\n labelStyle: styles.labelStyle,\n shape: _shape,\n label: vertexNode,\n rx: radious,\n ry: radious,\n class: classStr,\n style: styles.style,\n id: vertex.id\n });\n });\n};\n\n/**\n * Add edges to graph based on parsed graph defninition\n * @param {Object} edges The edges to add to the graph\n * @param {Object} g The graph object\n */\nexport const addEdges = function(edges, g) {\n let cnt = 0;\n\n let defaultStyle;\n let defaultLabelStyle;\n\n if (typeof edges.defaultStyle !== 'undefined') {\n const defaultStyles = getStylesFromArray(edges.defaultStyle);\n defaultStyle = defaultStyles.style;\n defaultLabelStyle = defaultStyles.labelStyle;\n }\n\n edges.forEach(function(edge) {\n cnt++;\n\n // Identify Link\n var linkId = 'L-' + edge.start + '-' + edge.end;\n var linkNameStart = 'LS-' + edge.start;\n var linkNameEnd = 'LE-' + edge.end;\n\n const edgeData = {};\n\n // Set link type for rendering\n if (edge.type === 'arrow_open') {\n edgeData.arrowhead = 'none';\n } else {\n edgeData.arrowhead = 'normal';\n }\n\n let style = '';\n let labelStyle = '';\n\n if (typeof edge.style !== 'undefined') {\n const styles = getStylesFromArray(edge.style);\n style = styles.style;\n labelStyle = styles.labelStyle;\n } else {\n switch (edge.stroke) {\n case 'normal':\n style = 'fill:none';\n if (typeof defaultStyle !== 'undefined') {\n style = defaultStyle;\n }\n if (typeof defaultLabelStyle !== 'undefined') {\n labelStyle = defaultLabelStyle;\n }\n break;\n case 'dotted':\n style = 'fill:none;stroke-width:2px;stroke-dasharray:3;';\n break;\n case 'thick':\n style = ' stroke-width: 3.5px;fill:none';\n break;\n }\n }\n\n edgeData.style = style;\n edgeData.labelStyle = labelStyle;\n\n if (typeof edge.interpolate !== 'undefined') {\n edgeData.curve = interpolateToCurve(edge.interpolate, curveLinear);\n } else if (typeof edges.defaultInterpolate !== 'undefined') {\n edgeData.curve = interpolateToCurve(edges.defaultInterpolate, curveLinear);\n } else {\n edgeData.curve = interpolateToCurve(conf.curve, curveLinear);\n }\n\n if (typeof edge.text === 'undefined') {\n if (typeof edge.style !== 'undefined') {\n edgeData.arrowheadStyle = 'fill: #333';\n }\n } else {\n edgeData.arrowheadStyle = 'fill: #333';\n edgeData.labelpos = 'c';\n\n if (getConfig().flowchart.htmlLabels) {\n edgeData.labelType = 'html';\n edgeData.label = `${edge.text}`;\n } else {\n edgeData.labelType = 'text';\n edgeData.label = edge.text.replace(common.lineBreakRegex, '\\n');\n\n if (typeof edge.style === 'undefined') {\n edgeData.style = edgeData.style || 'stroke: #333; stroke-width: 1.5px;fill:none';\n }\n\n edgeData.labelStyle = edgeData.labelStyle.replace('color:', 'fill:');\n }\n }\n\n edgeData.id = linkId;\n edgeData.class = linkNameStart + ' ' + linkNameEnd;\n\n // Add the edge to the graph\n g.setEdge(edge.start, edge.end, edgeData, cnt);\n });\n};\n\n/**\n * Returns the all the styles from classDef statements in the graph definition.\n * @returns {object} classDef styles\n */\nexport const getClasses = function(text) {\n logger.info('Extracting classes');\n flowDb.clear();\n try {\n const parser = flow.parser;\n parser.yy = flowDb;\n\n // Parse the graph definition\n parser.parse(text);\n return flowDb.getClasses();\n } catch (e) {\n return;\n }\n};\n\n/**\n * Draws a flowchart in the tag with id: id based on the graph definition in text.\n * @param text\n * @param id\n */\nexport const draw = function(text, id) {\n logger.info('Drawing flowchart');\n flowDb.clear();\n const parser = flow.parser;\n parser.yy = flowDb;\n\n // Parse the graph definition\n // try {\n parser.parse(text);\n // } catch (err) {\n // logger.debug('Parsing failed');\n // }\n\n // Fetch the default direction, use TD if none was found\n let dir = flowDb.getDirection();\n if (typeof dir === 'undefined') {\n dir = 'TD';\n }\n\n const conf = getConfig().flowchart;\n const nodeSpacing = conf.nodeSpacing || 50;\n const rankSpacing = conf.rankSpacing || 50;\n\n // Create the input mermaid.graph\n const g = new graphlib.Graph({\n multigraph: true,\n compound: true\n })\n .setGraph({\n rankdir: dir,\n nodesep: nodeSpacing,\n ranksep: rankSpacing,\n marginx: 8,\n marginy: 8\n })\n .setDefaultEdgeLabel(function() {\n return {};\n });\n\n let subG;\n const subGraphs = flowDb.getSubGraphs();\n for (let i = subGraphs.length - 1; i >= 0; i--) {\n subG = subGraphs[i];\n flowDb.addVertex(subG.id, subG.title, 'group', undefined, subG.classes);\n }\n\n // Fetch the verices/nodes and edges/links from the parsed graph definition\n const vert = flowDb.getVertices();\n\n const edges = flowDb.getEdges();\n\n let i = 0;\n for (i = subGraphs.length - 1; i >= 0; i--) {\n subG = subGraphs[i];\n\n selectAll('cluster').append('text');\n\n for (let j = 0; j < subG.nodes.length; j++) {\n g.setParent(subG.nodes[j], subG.id);\n }\n }\n addVertices(vert, g, id);\n addEdges(edges, g);\n\n // Create the renderer\n const Render = dagreD3.render;\n const render = new Render();\n\n // Add custom shapes\n flowChartShapes.addToRender(render);\n\n // Add our custom arrow - an empty arrowhead\n render.arrows().none = function normal(parent, id, edge, type) {\n const marker = parent\n .append('marker')\n .attr('id', id)\n .attr('viewBox', '0 0 10 10')\n .attr('refX', 9)\n .attr('refY', 5)\n .attr('markerUnits', 'strokeWidth')\n .attr('markerWidth', 8)\n .attr('markerHeight', 6)\n .attr('orient', 'auto');\n\n const path = marker.append('path').attr('d', 'M 0 0 L 0 0 L 0 0 z');\n dagreD3.util.applyStyle(path, edge[type + 'Style']);\n };\n\n // Override normal arrowhead defined in d3. Remove style & add class to allow css styling.\n render.arrows().normal = function normal(parent, id) {\n const marker = parent\n .append('marker')\n .attr('id', id)\n .attr('viewBox', '0 0 10 10')\n .attr('refX', 9)\n .attr('refY', 5)\n .attr('markerUnits', 'strokeWidth')\n .attr('markerWidth', 8)\n .attr('markerHeight', 6)\n .attr('orient', 'auto');\n\n marker\n .append('path')\n .attr('d', 'M 0 0 L 10 5 L 0 10 z')\n .attr('class', 'arrowheadPath')\n .style('stroke-width', 1)\n .style('stroke-dasharray', '1,0');\n };\n\n // Set up an SVG group so that we can translate the final graph.\n const svg = select(`[id=\"${id}\"]`);\n\n // Run the renderer. This is what draws the final graph.\n const element = select('#' + id + ' g');\n render(element, g);\n\n element.selectAll('g.node').attr('title', function() {\n return flowDb.getTooltip(this.id);\n });\n\n const padding = conf.diagramPadding;\n const svgBounds = svg.node().getBBox();\n const width = svgBounds.width + padding * 2;\n const height = svgBounds.height + padding * 2;\n\n if (conf.useMaxWidth) {\n svg.attr('width', '100%');\n svg.attr('style', `max-width: ${width}px;`);\n } else {\n svg.attr('height', height);\n svg.attr('width', width);\n }\n\n // Ensure the viewBox includes the whole svgBounds area with extra space for padding\n const vBox = `${svgBounds.x - padding} ${svgBounds.y - padding} ${width} ${height}`;\n logger.debug(`viewBox ${vBox}`);\n svg.attr('viewBox', vBox);\n\n // Index nodes\n flowDb.indexNodes('subGraph' + i);\n\n // reposition labels\n for (i = 0; i < subGraphs.length; i++) {\n subG = subGraphs[i];\n\n if (subG.title !== 'undefined') {\n const clusterRects = document.querySelectorAll('#' + id + ' [id=\"' + subG.id + '\"] rect');\n const clusterEl = document.querySelectorAll('#' + id + ' [id=\"' + subG.id + '\"]');\n\n const xPos = clusterRects[0].x.baseVal.value;\n const yPos = clusterRects[0].y.baseVal.value;\n const width = clusterRects[0].width.baseVal.value;\n const cluster = select(clusterEl[0]);\n const te = cluster.select('.label');\n te.attr('transform', `translate(${xPos + width / 2}, ${yPos + 14})`);\n te.attr('id', id + 'Text');\n\n for (let j = 0; j < subG.classes.length; j++) {\n clusterEl[0].classList.add(subG.classes[j]);\n }\n }\n }\n\n // Add label rects for non html labels\n if (!conf.htmlLabels || true) { // eslint-disable-line\n const labels = document.querySelectorAll('[id=\"' + id + '\"] .edgeLabel .label');\n for (let k = 0; k < labels.length; k++) {\n const label = labels[k];\n\n // Get dimensions of label\n const dim = label.getBBox();\n\n const rect = document.createElementNS('http://www.w3.org/2000/svg', 'rect');\n rect.setAttribute('rx', 0);\n rect.setAttribute('ry', 0);\n rect.setAttribute('width', dim.width);\n rect.setAttribute('height', dim.height);\n rect.setAttribute('style', 'fill:#e8e8e8;');\n\n label.insertBefore(rect, label.firstChild);\n }\n }\n\n // If node has a link, wrap it in an anchor SVG object.\n const keys = Object.keys(vert);\n keys.forEach(function(key) {\n const vertex = vert[key];\n\n if (vertex.link) {\n const node = select('#' + id + ' [id=\"' + key + '\"]');\n if (node) {\n const link = document.createElementNS('http://www.w3.org/2000/svg', 'a');\n link.setAttributeNS('http://www.w3.org/2000/svg', 'class', vertex.classes.join(' '));\n link.setAttributeNS('http://www.w3.org/2000/svg', 'href', vertex.link);\n link.setAttributeNS('http://www.w3.org/2000/svg', 'rel', 'noopener');\n\n const linkNode = node.insert(function() {\n return link;\n }, ':first-child');\n\n const shape = node.select('.label-container');\n if (shape) {\n linkNode.append(function() {\n return shape.node();\n });\n }\n\n const label = node.select('.label');\n if (label) {\n linkNode.append(function() {\n return label.node();\n });\n }\n }\n }\n });\n};\n\nexport default {\n setConf,\n addVertices,\n addEdges,\n getClasses,\n draw\n};\n","/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,4],$V1=[1,3],$V2=[1,5],$V3=[1,8,9,10,11,26,34,63,64,65,66,67,68,78,79,82,83,84,86,87,93,94,95,96,97,98],$V4=[2,2],$V5=[1,12],$V6=[1,13],$V7=[1,14],$V8=[1,15],$V9=[1,22],$Va=[1,46],$Vb=[1,24],$Vc=[1,25],$Vd=[1,26],$Ve=[1,27],$Vf=[1,28],$Vg=[1,40],$Vh=[1,35],$Vi=[1,37],$Vj=[1,32],$Vk=[1,36],$Vl=[1,39],$Vm=[1,43],$Vn=[1,44],$Vo=[1,45],$Vp=[1,34],$Vq=[1,38],$Vr=[1,41],$Vs=[1,42],$Vt=[1,33],$Vu=[1,51],$Vv=[1,8,9,10,11,26,30,34,63,64,65,66,67,68,78,79,82,83,84,86,87,93,94,95,96,97,98],$Vw=[1,55],$Vx=[1,54],$Vy=[1,56],$Vz=[8,9,11,57,58],$VA=[8,9,10,11,57,58],$VB=[8,9,10,11,35,57,58],$VC=[8,9,10,11,28,34,35,37,39,41,43,45,47,49,50,52,57,58,68,78,79,82,83,84,86,87,93,94,95,96,97,98],$VD=[8,9,11,34,57,58,68,78,79,82,83,84,86,87,93,94,95,96,97,98],$VE=[34,68,78,79,82,83,84,86,87,93,94,95,96,97,98],$VF=[1,101],$VG=[1,122],$VH=[1,123],$VI=[1,124],$VJ=[1,125],$VK=[1,105],$VL=[1,96],$VM=[1,97],$VN=[1,93],$VO=[1,117],$VP=[1,118],$VQ=[1,119],$VR=[1,120],$VS=[1,121],$VT=[1,126],$VU=[1,127],$VV=[1,99],$VW=[1,107],$VX=[1,110],$VY=[1,108],$VZ=[1,109],$V_=[1,102],$V$=[1,115],$V01=[1,114],$V11=[1,98],$V21=[1,95],$V31=[1,104],$V41=[1,106],$V51=[1,111],$V61=[1,112],$V71=[1,113],$V81=[1,116],$V91=[8,9,10,11,26,30,34,63,64,65,66,67,68,78,79,82,83,84,86,87,93,94,95,96,97,98],$Va1=[1,130],$Vb1=[1,134],$Vc1=[1,136],$Vd1=[1,137],$Ve1=[8,9,10,11,12,13,26,28,29,30,34,38,40,42,44,46,48,49,51,53,57,58,59,63,64,65,66,67,68,69,72,78,79,82,83,84,86,87,88,89,93,94,95,96,97,98],$Vf1=[8,9,10,11,13,34,68,78,79,82,83,84,86,87,93,94,95,96,97,98],$Vg1=[10,79],$Vh1=[1,204],$Vi1=[1,208],$Vj1=[1,205],$Vk1=[1,202],$Vl1=[1,199],$Vm1=[1,200],$Vn1=[1,201],$Vo1=[1,203],$Vp1=[1,206],$Vq1=[1,207],$Vr1=[1,209],$Vs1=[8,9,11],$Vt1=[1,225],$Vu1=[8,9,11,79],$Vv1=[8,9,10,11,63,75,78,79,82,83,84,85,86,87,88];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"mermaidDoc\":3,\"graphConfig\":4,\"document\":5,\"line\":6,\"statement\":7,\"SEMI\":8,\"NEWLINE\":9,\"SPACE\":10,\"EOF\":11,\"GRAPH\":12,\"DIR\":13,\"FirstStmtSeperator\":14,\"ending\":15,\"endToken\":16,\"spaceList\":17,\"spaceListNewline\":18,\"verticeStatement\":19,\"separator\":20,\"styleStatement\":21,\"linkStyleStatement\":22,\"classDefStatement\":23,\"classStatement\":24,\"clickStatement\":25,\"subgraph\":26,\"text\":27,\"SQS\":28,\"SQE\":29,\"end\":30,\"link\":31,\"node\":32,\"vertex\":33,\"AMP\":34,\"STYLE_SEPARATOR\":35,\"idString\":36,\"PS\":37,\"PE\":38,\"(-\":39,\"-)\":40,\"STADIUMSTART\":41,\"STADIUMEND\":42,\"SUBROUTINESTART\":43,\"SUBROUTINEEND\":44,\"CYLINDERSTART\":45,\"CYLINDEREND\":46,\"DIAMOND_START\":47,\"DIAMOND_STOP\":48,\"TAGEND\":49,\"TRAPSTART\":50,\"TRAPEND\":51,\"INVTRAPSTART\":52,\"INVTRAPEND\":53,\"linkStatement\":54,\"arrowText\":55,\"TESTSTR\":56,\"START_LINK\":57,\"LINK\":58,\"PIPE\":59,\"textToken\":60,\"STR\":61,\"keywords\":62,\"STYLE\":63,\"LINKSTYLE\":64,\"CLASSDEF\":65,\"CLASS\":66,\"CLICK\":67,\"DOWN\":68,\"UP\":69,\"textNoTags\":70,\"textNoTagsToken\":71,\"DEFAULT\":72,\"stylesOpt\":73,\"alphaNum\":74,\"HEX\":75,\"numList\":76,\"INTERPOLATE\":77,\"NUM\":78,\"COMMA\":79,\"style\":80,\"styleComponent\":81,\"ALPHA\":82,\"COLON\":83,\"MINUS\":84,\"UNIT\":85,\"BRKT\":86,\"DOT\":87,\"PCT\":88,\"TAGSTART\":89,\"alphaNumToken\":90,\"idStringToken\":91,\"alphaNumStatement\":92,\"PUNCTUATION\":93,\"UNICODE_TEXT\":94,\"PLUS\":95,\"EQUALS\":96,\"MULT\":97,\"UNDERSCORE\":98,\"graphCodeTokens\":99,\"ARROW_CROSS\":100,\"ARROW_POINT\":101,\"ARROW_CIRCLE\":102,\"ARROW_OPEN\":103,\"QUOTE\":104,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",8:\"SEMI\",9:\"NEWLINE\",10:\"SPACE\",11:\"EOF\",12:\"GRAPH\",13:\"DIR\",26:\"subgraph\",28:\"SQS\",29:\"SQE\",30:\"end\",34:\"AMP\",35:\"STYLE_SEPARATOR\",37:\"PS\",38:\"PE\",39:\"(-\",40:\"-)\",41:\"STADIUMSTART\",42:\"STADIUMEND\",43:\"SUBROUTINESTART\",44:\"SUBROUTINEEND\",45:\"CYLINDERSTART\",46:\"CYLINDEREND\",47:\"DIAMOND_START\",48:\"DIAMOND_STOP\",49:\"TAGEND\",50:\"TRAPSTART\",51:\"TRAPEND\",52:\"INVTRAPSTART\",53:\"INVTRAPEND\",56:\"TESTSTR\",57:\"START_LINK\",58:\"LINK\",59:\"PIPE\",61:\"STR\",63:\"STYLE\",64:\"LINKSTYLE\",65:\"CLASSDEF\",66:\"CLASS\",67:\"CLICK\",68:\"DOWN\",69:\"UP\",72:\"DEFAULT\",75:\"HEX\",77:\"INTERPOLATE\",78:\"NUM\",79:\"COMMA\",82:\"ALPHA\",83:\"COLON\",84:\"MINUS\",85:\"UNIT\",86:\"BRKT\",87:\"DOT\",88:\"PCT\",89:\"TAGSTART\",93:\"PUNCTUATION\",94:\"UNICODE_TEXT\",95:\"PLUS\",96:\"EQUALS\",97:\"MULT\",98:\"UNDERSCORE\",100:\"ARROW_CROSS\",101:\"ARROW_POINT\",102:\"ARROW_CIRCLE\",103:\"ARROW_OPEN\",104:\"QUOTE\"},\nproductions_: [0,[3,2],[5,0],[5,2],[6,1],[6,1],[6,1],[6,1],[6,1],[4,2],[4,2],[4,3],[15,2],[15,1],[16,1],[16,1],[16,1],[14,1],[14,1],[14,2],[18,2],[18,2],[18,1],[18,1],[17,2],[17,1],[7,2],[7,2],[7,2],[7,2],[7,2],[7,2],[7,9],[7,6],[7,4],[20,1],[20,1],[20,1],[19,3],[19,4],[19,2],[19,1],[32,1],[32,5],[32,3],[33,4],[33,6],[33,4],[33,4],[33,4],[33,4],[33,4],[33,4],[33,6],[33,4],[33,4],[33,4],[33,4],[33,4],[33,1],[31,2],[31,3],[31,3],[31,1],[31,3],[54,1],[55,3],[27,1],[27,2],[27,1],[62,1],[62,1],[62,1],[62,1],[62,1],[62,1],[62,1],[62,1],[62,1],[62,1],[62,1],[70,1],[70,2],[23,5],[23,5],[24,5],[25,5],[25,7],[25,5],[25,7],[21,5],[21,5],[22,5],[22,5],[22,9],[22,9],[22,7],[22,7],[76,1],[76,3],[73,1],[73,3],[80,1],[80,2],[81,1],[81,1],[81,1],[81,1],[81,1],[81,1],[81,1],[81,1],[81,1],[81,1],[81,1],[60,1],[60,1],[60,1],[60,1],[60,1],[60,1],[71,1],[71,1],[71,1],[71,1],[36,1],[36,2],[74,1],[74,2],[92,1],[92,1],[92,1],[92,1],[90,1],[90,1],[90,1],[90,1],[90,1],[90,1],[90,1],[90,1],[90,1],[90,1],[90,1],[90,1],[90,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[99,1],[99,1],[99,1],[99,1],[99,1],[99,1],[99,1],[99,1],[99,1],[99,1],[99,1],[99,1],[99,1],[99,1],[99,1],[99,1],[99,1],[99,1],[99,1],[99,1],[99,1],[99,1],[99,1],[99,1],[99,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 2:\n this.$ = [];\nbreak;\ncase 3:\n\n\t if($$[$0] !== []){\n\t $$[$0-1].push($$[$0]);\n\t }\n\t this.$=$$[$0-1];\nbreak;\ncase 4: case 67: case 69: case 81: case 127: case 129: case 130:\nthis.$=$$[$0];\nbreak;\ncase 11:\n yy.setDirection($$[$0-1]);this.$ = $$[$0-1];\nbreak;\ncase 26:\n /* console.warn('finat vs', $$[$0-1].nodes); */ this.$=$$[$0-1].nodes\nbreak;\ncase 27: case 28: case 29: case 30: case 31:\nthis.$=[];\nbreak;\ncase 32:\nthis.$=yy.addSubGraph($$[$0-6],$$[$0-1],$$[$0-4]);\nbreak;\ncase 33:\nthis.$=yy.addSubGraph($$[$0-3],$$[$0-1],$$[$0-3]);\nbreak;\ncase 34:\nthis.$=yy.addSubGraph(undefined,$$[$0-1],undefined);\nbreak;\ncase 38:\n /* console.warn('vs',$$[$0-2].stmt,$$[$0]); */ yy.addLink($$[$0-2].stmt,$$[$0],$$[$0-1]); this.$ = { stmt: $$[$0], nodes: $$[$0].concat($$[$0-2].nodes) } \nbreak;\ncase 39:\n /* console.warn('vs',$$[$0-3].stmt,$$[$0-1]); */ yy.addLink($$[$0-3].stmt,$$[$0-1],$$[$0-2]); this.$ = { stmt: $$[$0-1], nodes: $$[$0-1].concat($$[$0-3].nodes) } \nbreak;\ncase 40:\n/*console.warn('noda', $$[$0-1]);*/ this.$ = {stmt: $$[$0-1], nodes:$$[$0-1] }\nbreak;\ncase 41:\n /*console.warn('noda', $$[$0]);*/ this.$ = {stmt: $$[$0], nodes:$$[$0] }\nbreak;\ncase 42:\n /* console.warn('nod', $$[$0]); */ this.$ = [$$[$0]];\nbreak;\ncase 43:\n this.$ = $$[$0-4].concat($$[$0]); /* console.warn('pip', $$[$0-4][0], $$[$0], this.$); */ \nbreak;\ncase 44:\nthis.$ = [$$[$0-2]];yy.setClass($$[$0-2],$$[$0])\nbreak;\ncase 45:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'square');\nbreak;\ncase 46:\nthis.$ = $$[$0-5];yy.addVertex($$[$0-5],$$[$0-2],'circle');\nbreak;\ncase 47:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'ellipse');\nbreak;\ncase 48:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'stadium');\nbreak;\ncase 49:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'subroutine');\nbreak;\ncase 50:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'cylinder');\nbreak;\ncase 51:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'round');\nbreak;\ncase 52:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'diamond');\nbreak;\ncase 53:\nthis.$ = $$[$0-5];yy.addVertex($$[$0-5],$$[$0-2],'hexagon');\nbreak;\ncase 54:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'odd');\nbreak;\ncase 55:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'trapezoid');\nbreak;\ncase 56:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'inv_trapezoid');\nbreak;\ncase 57:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'lean_right');\nbreak;\ncase 58:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'lean_left');\nbreak;\ncase 59:\n /*console.warn('h: ', $$[$0]);*/this.$ = $$[$0];yy.addVertex($$[$0]);\nbreak;\ncase 60:\n$$[$0-1].text = $$[$0];this.$ = $$[$0-1];\nbreak;\ncase 61: case 62:\n$$[$0-2].text = $$[$0-1];this.$ = $$[$0-2];\nbreak;\ncase 63:\nthis.$ = $$[$0];\nbreak;\ncase 64:\nvar inf = yy.destructLink($$[$0], $$[$0-2]); this.$ = {\"type\":inf.type,\"stroke\":inf.stroke,\"text\":$$[$0-1]};\nbreak;\ncase 65:\nvar inf = yy.destructLink($$[$0]);this.$ = {\"type\":inf.type,\"stroke\":inf.stroke};\nbreak;\ncase 66:\nthis.$ = $$[$0-1];\nbreak;\ncase 68: case 82: case 128:\nthis.$=$$[$0-1]+''+$$[$0];\nbreak;\ncase 83: case 84:\nthis.$ = $$[$0-4];yy.addClass($$[$0-2],$$[$0]);\nbreak;\ncase 85:\nthis.$ = $$[$0-4];yy.setClass($$[$0-2], $$[$0]);\nbreak;\ncase 86:\nthis.$ = $$[$0-4];yy.setClickEvent($$[$0-2], $$[$0], undefined);\nbreak;\ncase 87:\nthis.$ = $$[$0-6];yy.setClickEvent($$[$0-4], $$[$0-2], $$[$0]) ;\nbreak;\ncase 88:\nthis.$ = $$[$0-4];yy.setLink($$[$0-2], $$[$0], undefined);\nbreak;\ncase 89:\nthis.$ = $$[$0-6];yy.setLink($$[$0-4], $$[$0-2], $$[$0] );\nbreak;\ncase 90:\nthis.$ = $$[$0-4];yy.addVertex($$[$0-2],undefined,undefined,$$[$0]);\nbreak;\ncase 91: case 93:\nthis.$ = $$[$0-4];yy.updateLink($$[$0-2],$$[$0]);\nbreak;\ncase 92:\nthis.$ = $$[$0-4];yy.updateLink([$$[$0-2]],$$[$0]);\nbreak;\ncase 94:\nthis.$ = $$[$0-8];yy.updateLinkInterpolate([$$[$0-6]],$$[$0-2]);yy.updateLink([$$[$0-6]],$$[$0]);\nbreak;\ncase 95:\nthis.$ = $$[$0-8];yy.updateLinkInterpolate($$[$0-6],$$[$0-2]);yy.updateLink($$[$0-6],$$[$0]);\nbreak;\ncase 96:\nthis.$ = $$[$0-6];yy.updateLinkInterpolate([$$[$0-4]],$$[$0]);\nbreak;\ncase 97:\nthis.$ = $$[$0-6];yy.updateLinkInterpolate($$[$0-4],$$[$0]);\nbreak;\ncase 98: case 100:\nthis.$ = [$$[$0]]\nbreak;\ncase 99: case 101:\n$$[$0-2].push($$[$0]);this.$ = $$[$0-2];\nbreak;\ncase 103:\nthis.$ = $$[$0-1] + $$[$0];\nbreak;\ncase 125:\nthis.$=$$[$0]\nbreak;\ncase 126:\nthis.$=$$[$0-1]+''+$$[$0]\nbreak;\ncase 131:\nthis.$='v';\nbreak;\ncase 132:\nthis.$='-';\nbreak;\n}\n},\ntable: [{3:1,4:2,9:$V0,10:$V1,12:$V2},{1:[3]},o($V3,$V4,{5:6}),{4:7,9:$V0,10:$V1,12:$V2},{4:8,9:$V0,10:$V1,12:$V2},{13:[1,9]},{1:[2,1],6:10,7:11,8:$V5,9:$V6,10:$V7,11:$V8,19:16,21:17,22:18,23:19,24:20,25:21,26:$V9,32:23,33:29,34:$Va,36:30,63:$Vb,64:$Vc,65:$Vd,66:$Ve,67:$Vf,68:$Vg,78:$Vh,79:$Vi,82:$Vj,83:$Vk,84:$Vl,86:$Vm,87:$Vn,91:31,93:$Vo,94:$Vp,95:$Vq,96:$Vr,97:$Vs,98:$Vt},o($V3,[2,9]),o($V3,[2,10]),{8:[1,48],9:[1,49],10:$Vu,14:47,17:50},o($Vv,[2,3]),o($Vv,[2,4]),o($Vv,[2,5]),o($Vv,[2,6]),o($Vv,[2,7]),o($Vv,[2,8]),{8:$Vw,9:$Vx,11:$Vy,20:52,31:53,54:57,57:[1,58],58:[1,59]},{8:$Vw,9:$Vx,11:$Vy,20:60},{8:$Vw,9:$Vx,11:$Vy,20:61},{8:$Vw,9:$Vx,11:$Vy,20:62},{8:$Vw,9:$Vx,11:$Vy,20:63},{8:$Vw,9:$Vx,11:$Vy,20:64},{8:$Vw,9:$Vx,10:[1,65],11:$Vy,20:66},o($Vz,[2,41],{17:67,10:$Vu}),{10:[1,68]},{10:[1,69]},{10:[1,70]},{10:[1,71]},{10:[1,72]},o($VA,[2,42],{35:[1,73]}),o($VB,[2,59],{91:84,28:[1,74],34:$Va,37:[1,75],39:[1,76],41:[1,77],43:[1,78],45:[1,79],47:[1,80],49:[1,81],50:[1,82],52:[1,83],68:$Vg,78:$Vh,79:$Vi,82:$Vj,83:$Vk,84:$Vl,86:$Vm,87:$Vn,93:$Vo,94:$Vp,95:$Vq,96:$Vr,97:$Vs,98:$Vt}),o($VC,[2,125]),o($VC,[2,146]),o($VC,[2,147]),o($VC,[2,148]),o($VC,[2,149]),o($VC,[2,150]),o($VC,[2,151]),o($VC,[2,152]),o($VC,[2,153]),o($VC,[2,154]),o($VC,[2,155]),o($VC,[2,156]),o($VC,[2,157]),o($VC,[2,158]),o($VC,[2,159]),o($VC,[2,160]),o($V3,[2,11]),o($V3,[2,17]),o($V3,[2,18]),{9:[1,85]},o($VD,[2,25],{17:86,10:$Vu}),o($Vv,[2,26]),{32:87,33:29,34:$Va,36:30,68:$Vg,78:$Vh,79:$Vi,82:$Vj,83:$Vk,84:$Vl,86:$Vm,87:$Vn,91:31,93:$Vo,94:$Vp,95:$Vq,96:$Vr,97:$Vs,98:$Vt},o($Vv,[2,35]),o($Vv,[2,36]),o($Vv,[2,37]),o($VE,[2,63],{55:88,56:[1,89],59:[1,90]}),{10:$VF,12:$VG,13:$VH,26:$VI,27:91,30:$VJ,34:$VK,49:$VL,57:$VM,60:92,61:$VN,62:103,63:$VO,64:$VP,65:$VQ,66:$VR,67:$VS,68:$VT,69:$VU,71:94,72:$VV,78:$VW,79:$VX,82:$VY,83:$VZ,84:$V_,86:$V$,87:$V01,88:$V11,89:$V21,90:100,93:$V31,94:$V41,95:$V51,96:$V61,97:$V71,98:$V81},o([34,56,59,68,78,79,82,83,84,86,87,93,94,95,96,97,98],[2,65]),o($Vv,[2,27]),o($Vv,[2,28]),o($Vv,[2,29]),o($Vv,[2,30]),o($Vv,[2,31]),{10:$VF,12:$VG,13:$VH,26:$VI,27:128,30:$VJ,34:$VK,49:$VL,57:$VM,60:92,61:$VN,62:103,63:$VO,64:$VP,65:$VQ,66:$VR,67:$VS,68:$VT,69:$VU,71:94,72:$VV,78:$VW,79:$VX,82:$VY,83:$VZ,84:$V_,86:$V$,87:$V01,88:$V11,89:$V21,90:100,93:$V31,94:$V41,95:$V51,96:$V61,97:$V71,98:$V81},o($V91,$V4,{5:129}),o($Vz,[2,40],{34:$Va1}),{13:$Vb1,34:$VK,68:$Vc1,74:131,75:[1,132],78:$VW,79:$VX,82:$VY,83:$VZ,84:$Vd1,86:$V$,87:$V01,90:135,92:133,93:$V31,94:$V41,95:$V51,96:$V61,97:$V71,98:$V81},{72:[1,138],76:139,78:[1,140]},{13:$Vb1,34:$VK,68:$Vc1,72:[1,141],74:142,78:$VW,79:$VX,82:$VY,83:$VZ,84:$Vd1,86:$V$,87:$V01,90:135,92:133,93:$V31,94:$V41,95:$V51,96:$V61,97:$V71,98:$V81},{13:$Vb1,34:$VK,68:$Vc1,74:143,78:$VW,79:$VX,82:$VY,83:$VZ,84:$Vd1,86:$V$,87:$V01,90:135,92:133,93:$V31,94:$V41,95:$V51,96:$V61,97:$V71,98:$V81},{13:$Vb1,34:$VK,68:$Vc1,74:144,78:$VW,79:$VX,82:$VY,83:$VZ,84:$Vd1,86:$V$,87:$V01,90:135,92:133,93:$V31,94:$V41,95:$V51,96:$V61,97:$V71,98:$V81},{34:$Va,36:145,68:$Vg,78:$Vh,79:$Vi,82:$Vj,83:$Vk,84:$Vl,86:$Vm,87:$Vn,91:31,93:$Vo,94:$Vp,95:$Vq,96:$Vr,97:$Vs,98:$Vt},{10:$VF,12:$VG,13:$VH,26:$VI,27:146,30:$VJ,34:$VK,49:$VL,57:$VM,60:92,61:$VN,62:103,63:$VO,64:$VP,65:$VQ,66:$VR,67:$VS,68:$VT,69:$VU,71:94,72:$VV,78:$VW,79:$VX,82:$VY,83:$VZ,84:$V_,86:$V$,87:$V01,88:$V11,89:$V21,90:100,93:$V31,94:$V41,95:$V51,96:$V61,97:$V71,98:$V81},{10:$VF,12:$VG,13:$VH,26:$VI,27:148,30:$VJ,34:$VK,37:[1,147],49:$VL,57:$VM,60:92,61:$VN,62:103,63:$VO,64:$VP,65:$VQ,66:$VR,67:$VS,68:$VT,69:$VU,71:94,72:$VV,78:$VW,79:$VX,82:$VY,83:$VZ,84:$V_,86:$V$,87:$V01,88:$V11,89:$V21,90:100,93:$V31,94:$V41,95:$V51,96:$V61,97:$V71,98:$V81},{10:$VF,12:$VG,13:$VH,26:$VI,27:149,30:$VJ,34:$VK,49:$VL,57:$VM,60:92,61:$VN,62:103,63:$VO,64:$VP,65:$VQ,66:$VR,67:$VS,68:$VT,69:$VU,71:94,72:$VV,78:$VW,79:$VX,82:$VY,83:$VZ,84:$V_,86:$V$,87:$V01,88:$V11,89:$V21,90:100,93:$V31,94:$V41,95:$V51,96:$V61,97:$V71,98:$V81},{10:$VF,12:$VG,13:$VH,26:$VI,27:150,30:$VJ,34:$VK,49:$VL,57:$VM,60:92,61:$VN,62:103,63:$VO,64:$VP,65:$VQ,66:$VR,67:$VS,68:$VT,69:$VU,71:94,72:$VV,78:$VW,79:$VX,82:$VY,83:$VZ,84:$V_,86:$V$,87:$V01,88:$V11,89:$V21,90:100,93:$V31,94:$V41,95:$V51,96:$V61,97:$V71,98:$V81},{10:$VF,12:$VG,13:$VH,26:$VI,27:151,30:$VJ,34:$VK,49:$VL,57:$VM,60:92,61:$VN,62:103,63:$VO,64:$VP,65:$VQ,66:$VR,67:$VS,68:$VT,69:$VU,71:94,72:$VV,78:$VW,79:$VX,82:$VY,83:$VZ,84:$V_,86:$V$,87:$V01,88:$V11,89:$V21,90:100,93:$V31,94:$V41,95:$V51,96:$V61,97:$V71,98:$V81},{10:$VF,12:$VG,13:$VH,26:$VI,27:152,30:$VJ,34:$VK,49:$VL,57:$VM,60:92,61:$VN,62:103,63:$VO,64:$VP,65:$VQ,66:$VR,67:$VS,68:$VT,69:$VU,71:94,72:$VV,78:$VW,79:$VX,82:$VY,83:$VZ,84:$V_,86:$V$,87:$V01,88:$V11,89:$V21,90:100,93:$V31,94:$V41,95:$V51,96:$V61,97:$V71,98:$V81},{10:$VF,12:$VG,13:$VH,26:$VI,27:153,30:$VJ,34:$VK,47:[1,154],49:$VL,57:$VM,60:92,61:$VN,62:103,63:$VO,64:$VP,65:$VQ,66:$VR,67:$VS,68:$VT,69:$VU,71:94,72:$VV,78:$VW,79:$VX,82:$VY,83:$VZ,84:$V_,86:$V$,87:$V01,88:$V11,89:$V21,90:100,93:$V31,94:$V41,95:$V51,96:$V61,97:$V71,98:$V81},{10:$VF,12:$VG,13:$VH,26:$VI,27:155,30:$VJ,34:$VK,49:$VL,57:$VM,60:92,61:$VN,62:103,63:$VO,64:$VP,65:$VQ,66:$VR,67:$VS,68:$VT,69:$VU,71:94,72:$VV,78:$VW,79:$VX,82:$VY,83:$VZ,84:$V_,86:$V$,87:$V01,88:$V11,89:$V21,90:100,93:$V31,94:$V41,95:$V51,96:$V61,97:$V71,98:$V81},{10:$VF,12:$VG,13:$VH,26:$VI,27:156,30:$VJ,34:$VK,49:$VL,57:$VM,60:92,61:$VN,62:103,63:$VO,64:$VP,65:$VQ,66:$VR,67:$VS,68:$VT,69:$VU,71:94,72:$VV,78:$VW,79:$VX,82:$VY,83:$VZ,84:$V_,86:$V$,87:$V01,88:$V11,89:$V21,90:100,93:$V31,94:$V41,95:$V51,96:$V61,97:$V71,98:$V81},{10:$VF,12:$VG,13:$VH,26:$VI,27:157,30:$VJ,34:$VK,49:$VL,57:$VM,60:92,61:$VN,62:103,63:$VO,64:$VP,65:$VQ,66:$VR,67:$VS,68:$VT,69:$VU,71:94,72:$VV,78:$VW,79:$VX,82:$VY,83:$VZ,84:$V_,86:$V$,87:$V01,88:$V11,89:$V21,90:100,93:$V31,94:$V41,95:$V51,96:$V61,97:$V71,98:$V81},o($VC,[2,126]),o($V3,[2,19]),o($VD,[2,24]),o($Vz,[2,38],{17:158,10:$Vu}),o($VE,[2,60],{10:[1,159]}),{10:[1,160]},{10:$VF,12:$VG,13:$VH,26:$VI,27:161,30:$VJ,34:$VK,49:$VL,57:$VM,60:92,61:$VN,62:103,63:$VO,64:$VP,65:$VQ,66:$VR,67:$VS,68:$VT,69:$VU,71:94,72:$VV,78:$VW,79:$VX,82:$VY,83:$VZ,84:$V_,86:$V$,87:$V01,88:$V11,89:$V21,90:100,93:$V31,94:$V41,95:$V51,96:$V61,97:$V71,98:$V81},{10:$VF,12:$VG,13:$VH,26:$VI,30:$VJ,34:$VK,49:$VL,57:$VM,58:[1,162],60:163,62:103,63:$VO,64:$VP,65:$VQ,66:$VR,67:$VS,68:$VT,69:$VU,71:94,72:$VV,78:$VW,79:$VX,82:$VY,83:$VZ,84:$V_,86:$V$,87:$V01,88:$V11,89:$V21,90:100,93:$V31,94:$V41,95:$V51,96:$V61,97:$V71,98:$V81},o($Ve1,[2,67]),o($Ve1,[2,69]),o($Ve1,[2,115]),o($Ve1,[2,116]),o($Ve1,[2,117]),o($Ve1,[2,118]),o($Ve1,[2,119]),o($Ve1,[2,120]),o($Ve1,[2,121]),o($Ve1,[2,122]),o($Ve1,[2,123]),o($Ve1,[2,124]),o($Ve1,[2,133]),o($Ve1,[2,134]),o($Ve1,[2,135]),o($Ve1,[2,136]),o($Ve1,[2,137]),o($Ve1,[2,138]),o($Ve1,[2,139]),o($Ve1,[2,140]),o($Ve1,[2,141]),o($Ve1,[2,142]),o($Ve1,[2,143]),o($Ve1,[2,144]),o($Ve1,[2,145]),o($Ve1,[2,70]),o($Ve1,[2,71]),o($Ve1,[2,72]),o($Ve1,[2,73]),o($Ve1,[2,74]),o($Ve1,[2,75]),o($Ve1,[2,76]),o($Ve1,[2,77]),o($Ve1,[2,78]),o($Ve1,[2,79]),o($Ve1,[2,80]),{8:$Vw,9:$Vx,10:$VF,11:$Vy,12:$VG,13:$VH,20:165,26:$VI,28:[1,164],30:$VJ,34:$VK,49:$VL,57:$VM,60:163,62:103,63:$VO,64:$VP,65:$VQ,66:$VR,67:$VS,68:$VT,69:$VU,71:94,72:$VV,78:$VW,79:$VX,82:$VY,83:$VZ,84:$V_,86:$V$,87:$V01,88:$V11,89:$V21,90:100,93:$V31,94:$V41,95:$V51,96:$V61,97:$V71,98:$V81},{6:10,7:11,8:$V5,9:$V6,10:$V7,11:$V8,19:16,21:17,22:18,23:19,24:20,25:21,26:$V9,30:[1,166],32:23,33:29,34:$Va,36:30,63:$Vb,64:$Vc,65:$Vd,66:$Ve,67:$Vf,68:$Vg,78:$Vh,79:$Vi,82:$Vj,83:$Vk,84:$Vl,86:$Vm,87:$Vn,91:31,93:$Vo,94:$Vp,95:$Vq,96:$Vr,97:$Vs,98:$Vt},{10:$Vu,17:167},{10:[1,168],13:$Vb1,34:$VK,68:$Vc1,78:$VW,79:$VX,82:$VY,83:$VZ,84:$Vd1,86:$V$,87:$V01,90:135,92:169,93:$V31,94:$V41,95:$V51,96:$V61,97:$V71,98:$V81},{10:[1,170]},o($Vf1,[2,127]),o($Vf1,[2,129]),o($Vf1,[2,130]),o($Vf1,[2,131]),o($Vf1,[2,132]),{10:[1,171]},{10:[1,172],79:[1,173]},o($Vg1,[2,98]),{10:[1,174]},{10:[1,175],13:$Vb1,34:$VK,68:$Vc1,78:$VW,79:$VX,82:$VY,83:$VZ,84:$Vd1,86:$V$,87:$V01,90:135,92:169,93:$V31,94:$V41,95:$V51,96:$V61,97:$V71,98:$V81},{10:[1,176],13:$Vb1,34:$VK,68:$Vc1,78:$VW,79:$VX,82:$VY,83:$VZ,84:$Vd1,86:$V$,87:$V01,90:135,92:169,93:$V31,94:$V41,95:$V51,96:$V61,97:$V71,98:$V81},{10:[1,177],13:$Vb1,34:$VK,68:$Vc1,78:$VW,79:$VX,82:$VY,83:$VZ,84:$Vd1,86:$V$,87:$V01,90:135,92:169,93:$V31,94:$V41,95:$V51,96:$V61,97:$V71,98:$V81},o($VA,[2,44],{91:84,34:$Va,68:$Vg,78:$Vh,79:$Vi,82:$Vj,83:$Vk,84:$Vl,86:$Vm,87:$Vn,93:$Vo,94:$Vp,95:$Vq,96:$Vr,97:$Vs,98:$Vt}),{10:$VF,12:$VG,13:$VH,26:$VI,29:[1,178],30:$VJ,34:$VK,49:$VL,57:$VM,60:163,62:103,63:$VO,64:$VP,65:$VQ,66:$VR,67:$VS,68:$VT,69:$VU,71:94,72:$VV,78:$VW,79:$VX,82:$VY,83:$VZ,84:$V_,86:$V$,87:$V01,88:$V11,89:$V21,90:100,93:$V31,94:$V41,95:$V51,96:$V61,97:$V71,98:$V81},{10:$VF,12:$VG,13:$VH,26:$VI,27:179,30:$VJ,34:$VK,49:$VL,57:$VM,60:92,61:$VN,62:103,63:$VO,64:$VP,65:$VQ,66:$VR,67:$VS,68:$VT,69:$VU,71:94,72:$VV,78:$VW,79:$VX,82:$VY,83:$VZ,84:$V_,86:$V$,87:$V01,88:$V11,89:$V21,90:100,93:$V31,94:$V41,95:$V51,96:$V61,97:$V71,98:$V81},{10:$VF,12:$VG,13:$VH,26:$VI,30:$VJ,34:$VK,38:[1,180],49:$VL,57:$VM,60:163,62:103,63:$VO,64:$VP,65:$VQ,66:$VR,67:$VS,68:$VT,69:$VU,71:94,72:$VV,78:$VW,79:$VX,82:$VY,83:$VZ,84:$V_,86:$V$,87:$V01,88:$V11,89:$V21,90:100,93:$V31,94:$V41,95:$V51,96:$V61,97:$V71,98:$V81},{10:$VF,12:$VG,13:$VH,26:$VI,30:$VJ,34:$VK,40:[1,181],49:$VL,57:$VM,60:163,62:103,63:$VO,64:$VP,65:$VQ,66:$VR,67:$VS,68:$VT,69:$VU,71:94,72:$VV,78:$VW,79:$VX,82:$VY,83:$VZ,84:$V_,86:$V$,87:$V01,88:$V11,89:$V21,90:100,93:$V31,94:$V41,95:$V51,96:$V61,97:$V71,98:$V81},{10:$VF,12:$VG,13:$VH,26:$VI,30:$VJ,34:$VK,42:[1,182],49:$VL,57:$VM,60:163,62:103,63:$VO,64:$VP,65:$VQ,66:$VR,67:$VS,68:$VT,69:$VU,71:94,72:$VV,78:$VW,79:$VX,82:$VY,83:$VZ,84:$V_,86:$V$,87:$V01,88:$V11,89:$V21,90:100,93:$V31,94:$V41,95:$V51,96:$V61,97:$V71,98:$V81},{10:$VF,12:$VG,13:$VH,26:$VI,30:$VJ,34:$VK,44:[1,183],49:$VL,57:$VM,60:163,62:103,63:$VO,64:$VP,65:$VQ,66:$VR,67:$VS,68:$VT,69:$VU,71:94,72:$VV,78:$VW,79:$VX,82:$VY,83:$VZ,84:$V_,86:$V$,87:$V01,88:$V11,89:$V21,90:100,93:$V31,94:$V41,95:$V51,96:$V61,97:$V71,98:$V81},{10:$VF,12:$VG,13:$VH,26:$VI,30:$VJ,34:$VK,46:[1,184],49:$VL,57:$VM,60:163,62:103,63:$VO,64:$VP,65:$VQ,66:$VR,67:$VS,68:$VT,69:$VU,71:94,72:$VV,78:$VW,79:$VX,82:$VY,83:$VZ,84:$V_,86:$V$,87:$V01,88:$V11,89:$V21,90:100,93:$V31,94:$V41,95:$V51,96:$V61,97:$V71,98:$V81},{10:$VF,12:$VG,13:$VH,26:$VI,30:$VJ,34:$VK,48:[1,185],49:$VL,57:$VM,60:163,62:103,63:$VO,64:$VP,65:$VQ,66:$VR,67:$VS,68:$VT,69:$VU,71:94,72:$VV,78:$VW,79:$VX,82:$VY,83:$VZ,84:$V_,86:$V$,87:$V01,88:$V11,89:$V21,90:100,93:$V31,94:$V41,95:$V51,96:$V61,97:$V71,98:$V81},{10:$VF,12:$VG,13:$VH,26:$VI,27:186,30:$VJ,34:$VK,49:$VL,57:$VM,60:92,61:$VN,62:103,63:$VO,64:$VP,65:$VQ,66:$VR,67:$VS,68:$VT,69:$VU,71:94,72:$VV,78:$VW,79:$VX,82:$VY,83:$VZ,84:$V_,86:$V$,87:$V01,88:$V11,89:$V21,90:100,93:$V31,94:$V41,95:$V51,96:$V61,97:$V71,98:$V81},{10:$VF,12:$VG,13:$VH,26:$VI,29:[1,187],30:$VJ,34:$VK,49:$VL,57:$VM,60:163,62:103,63:$VO,64:$VP,65:$VQ,66:$VR,67:$VS,68:$VT,69:$VU,71:94,72:$VV,78:$VW,79:$VX,82:$VY,83:$VZ,84:$V_,86:$V$,87:$V01,88:$V11,89:$V21,90:100,93:$V31,94:$V41,95:$V51,96:$V61,97:$V71,98:$V81},{10:$VF,12:$VG,13:$VH,26:$VI,30:$VJ,34:$VK,49:$VL,51:[1,188],53:[1,189],57:$VM,60:163,62:103,63:$VO,64:$VP,65:$VQ,66:$VR,67:$VS,68:$VT,69:$VU,71:94,72:$VV,78:$VW,79:$VX,82:$VY,83:$VZ,84:$V_,86:$V$,87:$V01,88:$V11,89:$V21,90:100,93:$V31,94:$V41,95:$V51,96:$V61,97:$V71,98:$V81},{10:$VF,12:$VG,13:$VH,26:$VI,30:$VJ,34:$VK,49:$VL,51:[1,191],53:[1,190],57:$VM,60:163,62:103,63:$VO,64:$VP,65:$VQ,66:$VR,67:$VS,68:$VT,69:$VU,71:94,72:$VV,78:$VW,79:$VX,82:$VY,83:$VZ,84:$V_,86:$V$,87:$V01,88:$V11,89:$V21,90:100,93:$V31,94:$V41,95:$V51,96:$V61,97:$V71,98:$V81},o($Vz,[2,39],{34:$Va1}),o($VE,[2,62]),o($VE,[2,61]),{10:$VF,12:$VG,13:$VH,26:$VI,30:$VJ,34:$VK,49:$VL,57:$VM,59:[1,192],60:163,62:103,63:$VO,64:$VP,65:$VQ,66:$VR,67:$VS,68:$VT,69:$VU,71:94,72:$VV,78:$VW,79:$VX,82:$VY,83:$VZ,84:$V_,86:$V$,87:$V01,88:$V11,89:$V21,90:100,93:$V31,94:$V41,95:$V51,96:$V61,97:$V71,98:$V81},o($VE,[2,64]),o($Ve1,[2,68]),{10:$VF,12:$VG,13:$VH,26:$VI,27:193,30:$VJ,34:$VK,49:$VL,57:$VM,60:92,61:$VN,62:103,63:$VO,64:$VP,65:$VQ,66:$VR,67:$VS,68:$VT,69:$VU,71:94,72:$VV,78:$VW,79:$VX,82:$VY,83:$VZ,84:$V_,86:$V$,87:$V01,88:$V11,89:$V21,90:100,93:$V31,94:$V41,95:$V51,96:$V61,97:$V71,98:$V81},o($V91,$V4,{5:194}),o($Vv,[2,34]),{33:195,34:$Va,36:30,68:$Vg,78:$Vh,79:$Vi,82:$Vj,83:$Vk,84:$Vl,86:$Vm,87:$Vn,91:31,93:$Vo,94:$Vp,95:$Vq,96:$Vr,97:$Vs,98:$Vt},{10:$Vh1,63:$Vi1,73:196,75:$Vj1,78:$Vk1,80:197,81:198,82:$Vl1,83:$Vm1,84:$Vn1,85:$Vo1,86:$Vp1,87:$Vq1,88:$Vr1},o($Vf1,[2,128]),{10:$Vh1,63:$Vi1,73:210,75:$Vj1,78:$Vk1,80:197,81:198,82:$Vl1,83:$Vm1,84:$Vn1,85:$Vo1,86:$Vp1,87:$Vq1,88:$Vr1},{10:$Vh1,63:$Vi1,73:211,75:$Vj1,77:[1,212],78:$Vk1,80:197,81:198,82:$Vl1,83:$Vm1,84:$Vn1,85:$Vo1,86:$Vp1,87:$Vq1,88:$Vr1},{10:$Vh1,63:$Vi1,73:213,75:$Vj1,77:[1,214],78:$Vk1,80:197,81:198,82:$Vl1,83:$Vm1,84:$Vn1,85:$Vo1,86:$Vp1,87:$Vq1,88:$Vr1},{78:[1,215]},{10:$Vh1,63:$Vi1,73:216,75:$Vj1,78:$Vk1,80:197,81:198,82:$Vl1,83:$Vm1,84:$Vn1,85:$Vo1,86:$Vp1,87:$Vq1,88:$Vr1},{10:$Vh1,63:$Vi1,73:217,75:$Vj1,78:$Vk1,80:197,81:198,82:$Vl1,83:$Vm1,84:$Vn1,85:$Vo1,86:$Vp1,87:$Vq1,88:$Vr1},{13:$Vb1,34:$VK,68:$Vc1,74:218,78:$VW,79:$VX,82:$VY,83:$VZ,84:$Vd1,86:$V$,87:$V01,90:135,92:133,93:$V31,94:$V41,95:$V51,96:$V61,97:$V71,98:$V81},{13:$Vb1,34:$VK,61:[1,220],68:$Vc1,74:219,78:$VW,79:$VX,82:$VY,83:$VZ,84:$Vd1,86:$V$,87:$V01,90:135,92:133,93:$V31,94:$V41,95:$V51,96:$V61,97:$V71,98:$V81},o($VB,[2,45]),{10:$VF,12:$VG,13:$VH,26:$VI,30:$VJ,34:$VK,38:[1,221],49:$VL,57:$VM,60:163,62:103,63:$VO,64:$VP,65:$VQ,66:$VR,67:$VS,68:$VT,69:$VU,71:94,72:$VV,78:$VW,79:$VX,82:$VY,83:$VZ,84:$V_,86:$V$,87:$V01,88:$V11,89:$V21,90:100,93:$V31,94:$V41,95:$V51,96:$V61,97:$V71,98:$V81},o($VB,[2,51]),o($VB,[2,47]),o($VB,[2,48]),o($VB,[2,49]),o($VB,[2,50]),o($VB,[2,52]),{10:$VF,12:$VG,13:$VH,26:$VI,30:$VJ,34:$VK,48:[1,222],49:$VL,57:$VM,60:163,62:103,63:$VO,64:$VP,65:$VQ,66:$VR,67:$VS,68:$VT,69:$VU,71:94,72:$VV,78:$VW,79:$VX,82:$VY,83:$VZ,84:$V_,86:$V$,87:$V01,88:$V11,89:$V21,90:100,93:$V31,94:$V41,95:$V51,96:$V61,97:$V71,98:$V81},o($VB,[2,54]),o($VB,[2,55]),o($VB,[2,57]),o($VB,[2,56]),o($VB,[2,58]),o([10,34,68,78,79,82,83,84,86,87,93,94,95,96,97,98],[2,66]),{10:$VF,12:$VG,13:$VH,26:$VI,29:[1,223],30:$VJ,34:$VK,49:$VL,57:$VM,60:163,62:103,63:$VO,64:$VP,65:$VQ,66:$VR,67:$VS,68:$VT,69:$VU,71:94,72:$VV,78:$VW,79:$VX,82:$VY,83:$VZ,84:$V_,86:$V$,87:$V01,88:$V11,89:$V21,90:100,93:$V31,94:$V41,95:$V51,96:$V61,97:$V71,98:$V81},{6:10,7:11,8:$V5,9:$V6,10:$V7,11:$V8,19:16,21:17,22:18,23:19,24:20,25:21,26:$V9,30:[1,224],32:23,33:29,34:$Va,36:30,63:$Vb,64:$Vc,65:$Vd,66:$Ve,67:$Vf,68:$Vg,78:$Vh,79:$Vi,82:$Vj,83:$Vk,84:$Vl,86:$Vm,87:$Vn,91:31,93:$Vo,94:$Vp,95:$Vq,96:$Vr,97:$Vs,98:$Vt},o($VA,[2,43]),o($Vs1,[2,90],{79:$Vt1}),o($Vu1,[2,100],{81:226,10:$Vh1,63:$Vi1,75:$Vj1,78:$Vk1,82:$Vl1,83:$Vm1,84:$Vn1,85:$Vo1,86:$Vp1,87:$Vq1,88:$Vr1}),o($Vv1,[2,102]),o($Vv1,[2,104]),o($Vv1,[2,105]),o($Vv1,[2,106]),o($Vv1,[2,107]),o($Vv1,[2,108]),o($Vv1,[2,109]),o($Vv1,[2,110]),o($Vv1,[2,111]),o($Vv1,[2,112]),o($Vv1,[2,113]),o($Vv1,[2,114]),o($Vs1,[2,91],{79:$Vt1}),o($Vs1,[2,92],{79:$Vt1}),{10:[1,227]},o($Vs1,[2,93],{79:$Vt1}),{10:[1,228]},o($Vg1,[2,99]),o($Vs1,[2,83],{79:$Vt1}),o($Vs1,[2,84],{79:$Vt1}),o($Vs1,[2,85],{90:135,92:169,13:$Vb1,34:$VK,68:$Vc1,78:$VW,79:$VX,82:$VY,83:$VZ,84:$Vd1,86:$V$,87:$V01,93:$V31,94:$V41,95:$V51,96:$V61,97:$V71,98:$V81}),o($Vs1,[2,86],{90:135,92:169,10:[1,229],13:$Vb1,34:$VK,68:$Vc1,78:$VW,79:$VX,82:$VY,83:$VZ,84:$Vd1,86:$V$,87:$V01,93:$V31,94:$V41,95:$V51,96:$V61,97:$V71,98:$V81}),o($Vs1,[2,88],{10:[1,230]}),{38:[1,231]},{48:[1,232]},{8:$Vw,9:$Vx,11:$Vy,20:233},o($Vv,[2,33]),{10:$Vh1,63:$Vi1,75:$Vj1,78:$Vk1,80:234,81:198,82:$Vl1,83:$Vm1,84:$Vn1,85:$Vo1,86:$Vp1,87:$Vq1,88:$Vr1},o($Vv1,[2,103]),{13:$Vb1,34:$VK,68:$Vc1,74:235,78:$VW,79:$VX,82:$VY,83:$VZ,84:$Vd1,86:$V$,87:$V01,90:135,92:133,93:$V31,94:$V41,95:$V51,96:$V61,97:$V71,98:$V81},{13:$Vb1,34:$VK,68:$Vc1,74:236,78:$VW,79:$VX,82:$VY,83:$VZ,84:$Vd1,86:$V$,87:$V01,90:135,92:133,93:$V31,94:$V41,95:$V51,96:$V61,97:$V71,98:$V81},{61:[1,237]},{61:[1,238]},o($VB,[2,46]),o($VB,[2,53]),o($V91,$V4,{5:239}),o($Vu1,[2,101],{81:226,10:$Vh1,63:$Vi1,75:$Vj1,78:$Vk1,82:$Vl1,83:$Vm1,84:$Vn1,85:$Vo1,86:$Vp1,87:$Vq1,88:$Vr1}),o($Vs1,[2,96],{90:135,92:169,10:[1,240],13:$Vb1,34:$VK,68:$Vc1,78:$VW,79:$VX,82:$VY,83:$VZ,84:$Vd1,86:$V$,87:$V01,93:$V31,94:$V41,95:$V51,96:$V61,97:$V71,98:$V81}),o($Vs1,[2,97],{90:135,92:169,10:[1,241],13:$Vb1,34:$VK,68:$Vc1,78:$VW,79:$VX,82:$VY,83:$VZ,84:$Vd1,86:$V$,87:$V01,93:$V31,94:$V41,95:$V51,96:$V61,97:$V71,98:$V81}),o($Vs1,[2,87]),o($Vs1,[2,89]),{6:10,7:11,8:$V5,9:$V6,10:$V7,11:$V8,19:16,21:17,22:18,23:19,24:20,25:21,26:$V9,30:[1,242],32:23,33:29,34:$Va,36:30,63:$Vb,64:$Vc,65:$Vd,66:$Ve,67:$Vf,68:$Vg,78:$Vh,79:$Vi,82:$Vj,83:$Vk,84:$Vl,86:$Vm,87:$Vn,91:31,93:$Vo,94:$Vp,95:$Vq,96:$Vr,97:$Vs,98:$Vt},{10:$Vh1,63:$Vi1,73:243,75:$Vj1,78:$Vk1,80:197,81:198,82:$Vl1,83:$Vm1,84:$Vn1,85:$Vo1,86:$Vp1,87:$Vq1,88:$Vr1},{10:$Vh1,63:$Vi1,73:244,75:$Vj1,78:$Vk1,80:197,81:198,82:$Vl1,83:$Vm1,84:$Vn1,85:$Vo1,86:$Vp1,87:$Vq1,88:$Vr1},o($Vv,[2,32]),o($Vs1,[2,94],{79:$Vt1}),o($Vs1,[2,95],{79:$Vt1})],\ndefaultActions: {},\nparseError: function parseError (str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer.lex() || EOF;\n if (typeof token !== 'number') {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0:/* do nothing */\nbreak;\ncase 1:this.begin(\"string\");\nbreak;\ncase 2:this.popState();\nbreak;\ncase 3:return \"STR\";\nbreak;\ncase 4:return 63;\nbreak;\ncase 5:return 72;\nbreak;\ncase 6:return 64;\nbreak;\ncase 7:return 77;\nbreak;\ncase 8:return 65;\nbreak;\ncase 9:return 66;\nbreak;\ncase 10:return 67;\nbreak;\ncase 11:if(yy.lex.firstGraph()){this.begin(\"dir\");} return 12;\nbreak;\ncase 12:if(yy.lex.firstGraph()){this.begin(\"dir\");} return 12;\nbreak;\ncase 13:return 26;\nbreak;\ncase 14:return 30;\nbreak;\ncase 15: this.popState(); return 13; \nbreak;\ncase 16: this.popState(); return 13; \nbreak;\ncase 17: this.popState(); return 13; \nbreak;\ncase 18: this.popState(); return 13; \nbreak;\ncase 19: this.popState(); return 13; \nbreak;\ncase 20: this.popState(); return 13; \nbreak;\ncase 21: this.popState(); return 13; \nbreak;\ncase 22: this.popState(); return 13; \nbreak;\ncase 23: this.popState(); return 13; \nbreak;\ncase 24: this.popState(); return 13; \nbreak;\ncase 25: return 78;\nbreak;\ncase 26:return 86;\nbreak;\ncase 27:return 35;\nbreak;\ncase 28:return 83;\nbreak;\ncase 29:return 34;\nbreak;\ncase 30:return 8;\nbreak;\ncase 31:return 79;\nbreak;\ncase 32:return 97;\nbreak;\ncase 33:return 58;\nbreak;\ncase 34:return 58;\nbreak;\ncase 35:return 58;\nbreak;\ncase 36:return 58;\nbreak;\ncase 37:return 58;\nbreak;\ncase 38:return 58;\nbreak;\ncase 39:return 58;\nbreak;\ncase 40:return 58;\nbreak;\ncase 41:return 58;\nbreak;\ncase 42:return 58;\nbreak;\ncase 43:return 58;\nbreak;\ncase 44:return 58;\nbreak;\ncase 45:return 58;\nbreak;\ncase 46:return 58;\nbreak;\ncase 47:return 58;\nbreak;\ncase 48:return 58;\nbreak;\ncase 49:return 58;\nbreak;\ncase 50:return 58;\nbreak;\ncase 51:return 58;\nbreak;\ncase 52:return 58;\nbreak;\ncase 53:return 58;\nbreak;\ncase 54:return 58;\nbreak;\ncase 55:return 58;\nbreak;\ncase 56:return 58;\nbreak;\ncase 57:return 58;\nbreak;\ncase 58:return 58;\nbreak;\ncase 59:return 58;\nbreak;\ncase 60:return 58;\nbreak;\ncase 61:return 57;\nbreak;\ncase 62:return 57;\nbreak;\ncase 63:return 57;\nbreak;\ncase 64:return 57;\nbreak;\ncase 65:return 57;\nbreak;\ncase 66:return 57;\nbreak;\ncase 67:return 57;\nbreak;\ncase 68:return 57;\nbreak;\ncase 69:return 57;\nbreak;\ncase 70:return 57;\nbreak;\ncase 71:return 57;\nbreak;\ncase 72:return 57;\nbreak;\ncase 73:return 39;\nbreak;\ncase 74:return 40;\nbreak;\ncase 75:return 41;\nbreak;\ncase 76:return 42;\nbreak;\ncase 77:return 43;\nbreak;\ncase 78:return 44;\nbreak;\ncase 79:return 45;\nbreak;\ncase 80:return 46;\nbreak;\ncase 81:return 84;\nbreak;\ncase 82:return 87;\nbreak;\ncase 83:return 98;\nbreak;\ncase 84:return 95;\nbreak;\ncase 85:return 88;\nbreak;\ncase 86:return 96;\nbreak;\ncase 87:return 96;\nbreak;\ncase 88:return 89;\nbreak;\ncase 89:return 49;\nbreak;\ncase 90:return 69;\nbreak;\ncase 91:return 'SEP';\nbreak;\ncase 92:return 68;\nbreak;\ncase 93:return 82;\nbreak;\ncase 94:return 51;\nbreak;\ncase 95:return 50;\nbreak;\ncase 96:return 53;\nbreak;\ncase 97:return 52;\nbreak;\ncase 98:return 93;\nbreak;\ncase 99:return 94;\nbreak;\ncase 100:return 59;\nbreak;\ncase 101:return 37;\nbreak;\ncase 102:return 38;\nbreak;\ncase 103:return 28;\nbreak;\ncase 104:return 29;\nbreak;\ncase 105:return 47\nbreak;\ncase 106:return 48\nbreak;\ncase 107:return 104;\nbreak;\ncase 108:return 9;\nbreak;\ncase 109:return 10;\nbreak;\ncase 110:return 11;\nbreak;\n}\n},\nrules: [/^(?:%%[^\\n]*\\n*)/,/^(?:[\"])/,/^(?:[\"])/,/^(?:[^\"]*)/,/^(?:style\\b)/,/^(?:default\\b)/,/^(?:linkStyle\\b)/,/^(?:interpolate\\b)/,/^(?:classDef\\b)/,/^(?:class\\b)/,/^(?:click\\b)/,/^(?:graph\\b)/,/^(?:flowchart\\b)/,/^(?:subgraph\\b)/,/^(?:end\\b\\s*)/,/^(?:\\s*LR\\b)/,/^(?:\\s*RL\\b)/,/^(?:\\s*TB\\b)/,/^(?:\\s*BT\\b)/,/^(?:\\s*TD\\b)/,/^(?:\\s*BR\\b)/,/^(?:\\s*<)/,/^(?:\\s*>)/,/^(?:\\s*\\^)/,/^(?:\\s*v\\b)/,/^(?:[0-9]+)/,/^(?:#)/,/^(?::::)/,/^(?::)/,/^(?:&)/,/^(?:;)/,/^(?:,)/,/^(?:\\*)/,/^(?:\\s*--[x]\\s*)/,/^(?:\\s*-->\\s*)/,/^(?:\\s*<-->\\s*)/,/^(?:\\s*[x]--[x]\\s*)/,/^(?:\\s*[o]--[o]\\s*)/,/^(?:\\s*[o]\\.-[o]\\s*)/,/^(?:\\s*<==>\\s*)/,/^(?:\\s*[o]==[o]\\s*)/,/^(?:\\s*[x]==[x]\\s*)/,/^(?:\\s*[x].-[x]\\s*)/,/^(?:\\s*[x]-\\.-[x]\\s*)/,/^(?:\\s*<\\.->\\s*)/,/^(?:\\s*<-\\.->\\s*)/,/^(?:\\s*[o]-\\.-[o]\\s*)/,/^(?:\\s*--[o]\\s*)/,/^(?:\\s*---\\s*)/,/^(?:\\s*-\\.-[x]\\s*)/,/^(?:\\s*-\\.->\\s*)/,/^(?:\\s*-\\.-[o]\\s*)/,/^(?:\\s*-\\.-\\s*)/,/^(?:\\s*.-[x]\\s*)/,/^(?:\\s*\\.->\\s*)/,/^(?:\\s*\\.-[o]\\s*)/,/^(?:\\s*\\.-\\s*)/,/^(?:\\s*==[x]\\s*)/,/^(?:\\s*==>\\s*)/,/^(?:\\s*==[o]\\s*)/,/^(?:\\s*==[\\=]\\s*)/,/^(?:\\s*<--\\s*)/,/^(?:\\s*[x]--\\s*)/,/^(?:\\s*[o]--\\s*)/,/^(?:\\s*<-\\.\\s*)/,/^(?:\\s*[x]-\\.\\s*)/,/^(?:\\s*[o]-\\.\\s*)/,/^(?:\\s*<==\\s*)/,/^(?:\\s*[x]==\\s*)/,/^(?:\\s*[o]==\\s*)/,/^(?:\\s*--\\s*)/,/^(?:\\s*-\\.\\s*)/,/^(?:\\s*==\\s*)/,/^(?:\\(-)/,/^(?:-\\))/,/^(?:\\(\\[)/,/^(?:\\]\\))/,/^(?:\\[\\[)/,/^(?:\\]\\])/,/^(?:\\[\\()/,/^(?:\\)\\])/,/^(?:-)/,/^(?:\\.)/,/^(?:[\\_])/,/^(?:\\+)/,/^(?:%)/,/^(?:=)/,/^(?:=)/,/^(?:<)/,/^(?:>)/,/^(?:\\^)/,/^(?:\\\\\\|)/,/^(?:v\\b)/,/^(?:[A-Za-z]+)/,/^(?:\\\\\\])/,/^(?:\\[\\/)/,/^(?:\\/\\])/,/^(?:\\[\\\\)/,/^(?:[!\"#$%&'*+,-.`?\\\\_/])/,/^(?:[\\u00AA\\u00B5\\u00BA\\u00C0-\\u00D6\\u00D8-\\u00F6]|[\\u00F8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377]|[\\u037A-\\u037D\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5]|[\\u03F7-\\u0481\\u048A-\\u0527\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA]|[\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE]|[\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA]|[\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0]|[\\u08A2-\\u08AC\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0977]|[\\u0979-\\u097F\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2]|[\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A]|[\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39]|[\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8]|[\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C]|[\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C]|[\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99]|[\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0]|[\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C33\\u0C35-\\u0C39\\u0C3D]|[\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3]|[\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10]|[\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1]|[\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81]|[\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3]|[\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6]|[\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A]|[\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081]|[\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D]|[\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0]|[\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310]|[\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C]|[\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u1700-\\u170C\\u170E-\\u1711]|[\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7]|[\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191C]|[\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16]|[\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF]|[\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC]|[\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D]|[\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D]|[\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3]|[\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F]|[\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128]|[\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184]|[\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3]|[\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6]|[\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE]|[\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C]|[\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D]|[\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC]|[\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B]|[\\uA640-\\uA66E\\uA67F-\\uA697\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788]|[\\uA78B-\\uA78E\\uA790-\\uA793\\uA7A0-\\uA7AA\\uA7F8-\\uA801\\uA803-\\uA805]|[\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB]|[\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uAA00-\\uAA28]|[\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA80-\\uAAAF\\uAAB1\\uAAB5]|[\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4]|[\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E]|[\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D]|[\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36]|[\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D]|[\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC]|[\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF]|[\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC])/,/^(?:\\|)/,/^(?:\\()/,/^(?:\\))/,/^(?:\\[)/,/^(?:\\])/,/^(?:\\{)/,/^(?:\\})/,/^(?:\")/,/^(?:(\\r|\\n|\\r\\n)+)/,/^(?:\\s)/,/^(?:$)/],\nconditions: {\"vertex\":{\"rules\":[],\"inclusive\":false},\"dir\":{\"rules\":[15,16,17,18,19,20,21,22,23,24],\"inclusive\":false},\"string\":{\"rules\":[2,3],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,1,4,5,6,7,8,9,10,11,12,13,14,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain (args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}","const getStyles = options =>\n `.label {\n font-family: ${options.fontFamily};\n color: ${options.textColor};\n }\n\n .label text {\n fill: ${options.textColor};\n }\n\n .node rect,\n .node circle,\n .node ellipse,\n .node polygon,\n .node path {\n fill: ${options.mainBkg};\n stroke: ${options.nodeBorder};\n stroke-width: 1px;\n }\n\n .node .label {\n text-align: center;\n }\n .node.clickable {\n cursor: pointer;\n }\n\n .arrowheadPath {\n fill: ${options.arrowheadColor};\n }\n\n .edgePath .path {\n stroke: ${options.lineColor};\n stroke-width: 1.5px;\n }\n\n .flowchart-link {\n stroke: ${options.lineColor};\n fill: none;\n }\n\n .edgeLabel {\n background-color: ${options.edgeLabelBackground};\n rect {\n opacity: 0.5;\n }\n text-align: center;\n }\n\n .cluster rect {\n fill: ${options.secondBkg};\n stroke: ${options.clusterBorder};\n stroke-width: 1px;\n }\n\n .cluster text {\n fill: ${options.titleColor};\n }\n\n div.mermaidTooltip {\n position: absolute;\n text-align: center;\n max-width: 200px;\n padding: 2px;\n font-family: ${options.fontFamily};\n font-size: 12px;\n background: ${options.secondBkg};\n border: 1px solid ${options.border2};\n border-radius: 2px;\n pointer-events: none;\n z-index: 100;\n }\n`;\n\nexport default getStyles;\n","import moment from 'moment-mini';\nimport { sanitizeUrl } from '@braintree/sanitize-url';\nimport { logger } from '../../logger';\nimport { getConfig } from '../../config';\nimport utils from '../../utils';\n\nlet dateFormat = '';\nlet axisFormat = '';\nlet todayMarker = '';\nlet excludes = [];\nlet title = '';\nlet sections = [];\nlet tasks = [];\nlet currentSection = '';\nconst tags = ['active', 'done', 'crit', 'milestone'];\nlet funs = [];\nlet inclusiveEndDates = false;\n\n// The serial order of the task in the script\nlet lastOrder = 0;\n\nexport const clear = function() {\n sections = [];\n tasks = [];\n currentSection = '';\n funs = [];\n title = '';\n taskCnt = 0;\n lastTask = undefined;\n lastTaskID = undefined;\n rawTasks = [];\n dateFormat = '';\n axisFormat = '';\n todayMarker = '';\n excludes = [];\n inclusiveEndDates = false;\n lastOrder = 0;\n};\n\nexport const setAxisFormat = function(txt) {\n axisFormat = txt;\n};\n\nexport const getAxisFormat = function() {\n return axisFormat;\n};\n\nexport const setTodayMarker = function(txt) {\n todayMarker = txt;\n};\n\nexport const getTodayMarker = function() {\n return todayMarker;\n};\n\nexport const setDateFormat = function(txt) {\n dateFormat = txt;\n};\n\nexport const enableInclusiveEndDates = function() {\n inclusiveEndDates = true;\n};\n\nexport const endDatesAreInclusive = function() {\n return inclusiveEndDates;\n};\n\nexport const getDateFormat = function() {\n return dateFormat;\n};\n\nexport const setExcludes = function(txt) {\n excludes = txt.toLowerCase().split(/[\\s,]+/);\n};\n\nexport const getExcludes = function() {\n return excludes;\n};\n\nexport const setTitle = function(txt) {\n title = txt;\n};\n\nexport const getTitle = function() {\n return title;\n};\n\nexport const addSection = function(txt) {\n currentSection = txt;\n sections.push(txt);\n};\n\nexport const getSections = function() {\n return sections;\n};\n\nexport const getTasks = function() {\n let allItemsPricessed = compileTasks();\n const maxDepth = 10;\n let iterationCount = 0;\n while (!allItemsPricessed && iterationCount < maxDepth) {\n allItemsPricessed = compileTasks();\n iterationCount++;\n }\n\n tasks = rawTasks;\n\n return tasks;\n};\n\nconst isInvalidDate = function(date, dateFormat, excludes) {\n if (date.isoWeekday() >= 6 && excludes.indexOf('weekends') >= 0) {\n return true;\n }\n if (excludes.indexOf(date.format('dddd').toLowerCase()) >= 0) {\n return true;\n }\n return excludes.indexOf(date.format(dateFormat.trim())) >= 0;\n};\n\nconst checkTaskDates = function(task, dateFormat, excludes) {\n if (!excludes.length || task.manualEndTime) return;\n let startTime = moment(task.startTime, dateFormat, true);\n startTime.add(1, 'd');\n let endTime = moment(task.endTime, dateFormat, true);\n let renderEndTime = fixTaskDates(startTime, endTime, dateFormat, excludes);\n task.endTime = endTime.toDate();\n task.renderEndTime = renderEndTime;\n};\n\nconst fixTaskDates = function(startTime, endTime, dateFormat, excludes) {\n let invalid = false;\n let renderEndTime = null;\n while (startTime <= endTime) {\n if (!invalid) {\n renderEndTime = endTime.toDate();\n }\n invalid = isInvalidDate(startTime, dateFormat, excludes);\n if (invalid) {\n endTime.add(1, 'd');\n }\n startTime.add(1, 'd');\n }\n return renderEndTime;\n};\n\nconst getStartDate = function(prevTime, dateFormat, str) {\n str = str.trim();\n\n // Test for after\n const re = /^after\\s+([\\d\\w- ]+)/;\n const afterStatement = re.exec(str.trim());\n\n if (afterStatement !== null) {\n // check all after ids and take the latest\n let latestEndingTask = null;\n afterStatement[1].split(' ').forEach(function(id) {\n let task = findTaskById(id);\n if (typeof task !== 'undefined') {\n if (!latestEndingTask) {\n latestEndingTask = task;\n } else {\n if (task.endTime > latestEndingTask.endTime) {\n latestEndingTask = task;\n }\n }\n }\n });\n\n if (!latestEndingTask) {\n const dt = new Date();\n dt.setHours(0, 0, 0, 0);\n return dt;\n } else {\n return latestEndingTask.endTime;\n }\n }\n\n // Check for actual date set\n let mDate = moment(str, dateFormat.trim(), true);\n if (mDate.isValid()) {\n return mDate.toDate();\n } else {\n logger.debug('Invalid date:' + str);\n logger.debug('With date format:' + dateFormat.trim());\n }\n\n // Default date - now\n return new Date();\n};\n\nconst durationToDate = function(durationStatement, relativeTime) {\n if (durationStatement !== null) {\n switch (durationStatement[2]) {\n case 's':\n relativeTime.add(durationStatement[1], 'seconds');\n break;\n case 'm':\n relativeTime.add(durationStatement[1], 'minutes');\n break;\n case 'h':\n relativeTime.add(durationStatement[1], 'hours');\n break;\n case 'd':\n relativeTime.add(durationStatement[1], 'days');\n break;\n case 'w':\n relativeTime.add(durationStatement[1], 'weeks');\n break;\n }\n }\n // Default date - now\n return relativeTime.toDate();\n};\n\nconst getEndDate = function(prevTime, dateFormat, str, inclusive) {\n inclusive = inclusive || false;\n str = str.trim();\n\n // Check for actual date\n let mDate = moment(str, dateFormat.trim(), true);\n if (mDate.isValid()) {\n if (inclusive) {\n mDate.add(1, 'd');\n }\n return mDate.toDate();\n }\n\n return durationToDate(/^([\\d]+)([wdhms])/.exec(str.trim()), moment(prevTime));\n};\n\nlet taskCnt = 0;\nconst parseId = function(idStr) {\n if (typeof idStr === 'undefined') {\n taskCnt = taskCnt + 1;\n return 'task' + taskCnt;\n }\n return idStr;\n};\n// id, startDate, endDate\n// id, startDate, length\n// id, after x, endDate\n// id, after x, length\n// startDate, endDate\n// startDate, length\n// after x, endDate\n// after x, length\n// endDate\n// length\n\nconst compileData = function(prevTask, dataStr) {\n let ds;\n\n if (dataStr.substr(0, 1) === ':') {\n ds = dataStr.substr(1, dataStr.length);\n } else {\n ds = dataStr;\n }\n\n const data = ds.split(',');\n\n const task = {};\n\n // Get tags like active, done, crit and milestone\n getTaskTags(data, task, tags);\n\n for (let i = 0; i < data.length; i++) {\n data[i] = data[i].trim();\n }\n\n let endTimeData = '';\n switch (data.length) {\n case 1:\n task.id = parseId();\n task.startTime = prevTask.endTime;\n endTimeData = data[0];\n break;\n case 2:\n task.id = parseId();\n task.startTime = getStartDate(undefined, dateFormat, data[0]);\n endTimeData = data[1];\n break;\n case 3:\n task.id = parseId(data[0]);\n task.startTime = getStartDate(undefined, dateFormat, data[1]);\n endTimeData = data[2];\n break;\n default:\n }\n\n if (endTimeData) {\n task.endTime = getEndDate(task.startTime, dateFormat, endTimeData, inclusiveEndDates);\n task.manualEndTime = moment(endTimeData, 'YYYY-MM-DD', true).isValid();\n checkTaskDates(task, dateFormat, excludes);\n }\n\n return task;\n};\n\nconst parseData = function(prevTaskId, dataStr) {\n let ds;\n if (dataStr.substr(0, 1) === ':') {\n ds = dataStr.substr(1, dataStr.length);\n } else {\n ds = dataStr;\n }\n\n const data = ds.split(',');\n\n const task = {};\n\n // Get tags like active, done, crit and milestone\n getTaskTags(data, task, tags);\n\n for (let i = 0; i < data.length; i++) {\n data[i] = data[i].trim();\n }\n\n switch (data.length) {\n case 1:\n task.id = parseId();\n task.startTime = {\n type: 'prevTaskEnd',\n id: prevTaskId\n };\n task.endTime = {\n data: data[0]\n };\n break;\n case 2:\n task.id = parseId();\n task.startTime = {\n type: 'getStartDate',\n startData: data[0]\n };\n task.endTime = {\n data: data[1]\n };\n break;\n case 3:\n task.id = parseId(data[0]);\n task.startTime = {\n type: 'getStartDate',\n startData: data[1]\n };\n task.endTime = {\n data: data[2]\n };\n break;\n default:\n }\n\n return task;\n};\n\nlet lastTask;\nlet lastTaskID;\nlet rawTasks = [];\nconst taskDb = {};\nexport const addTask = function(descr, data) {\n const rawTask = {\n section: currentSection,\n type: currentSection,\n processed: false,\n manualEndTime: false,\n renderEndTime: null,\n raw: { data: data },\n task: descr,\n classes: []\n };\n const taskInfo = parseData(lastTaskID, data);\n rawTask.raw.startTime = taskInfo.startTime;\n rawTask.raw.endTime = taskInfo.endTime;\n rawTask.id = taskInfo.id;\n rawTask.prevTaskId = lastTaskID;\n rawTask.active = taskInfo.active;\n rawTask.done = taskInfo.done;\n rawTask.crit = taskInfo.crit;\n rawTask.milestone = taskInfo.milestone;\n rawTask.order = lastOrder;\n\n lastOrder++;\n\n const pos = rawTasks.push(rawTask);\n\n lastTaskID = rawTask.id;\n // Store cross ref\n taskDb[rawTask.id] = pos - 1;\n};\n\nexport const findTaskById = function(id) {\n const pos = taskDb[id];\n return rawTasks[pos];\n};\n\nexport const addTaskOrg = function(descr, data) {\n const newTask = {\n section: currentSection,\n type: currentSection,\n description: descr,\n task: descr,\n classes: []\n };\n const taskInfo = compileData(lastTask, data);\n newTask.startTime = taskInfo.startTime;\n newTask.endTime = taskInfo.endTime;\n newTask.id = taskInfo.id;\n newTask.active = taskInfo.active;\n newTask.done = taskInfo.done;\n newTask.crit = taskInfo.crit;\n newTask.milestone = taskInfo.milestone;\n lastTask = newTask;\n tasks.push(newTask);\n};\n\nconst compileTasks = function() {\n const compileTask = function(pos) {\n const task = rawTasks[pos];\n let startTime = '';\n switch (rawTasks[pos].raw.startTime.type) {\n case 'prevTaskEnd': {\n const prevTask = findTaskById(task.prevTaskId);\n task.startTime = prevTask.endTime;\n break;\n }\n case 'getStartDate':\n startTime = getStartDate(undefined, dateFormat, rawTasks[pos].raw.startTime.startData);\n if (startTime) {\n rawTasks[pos].startTime = startTime;\n }\n break;\n }\n\n if (rawTasks[pos].startTime) {\n rawTasks[pos].endTime = getEndDate(\n rawTasks[pos].startTime,\n dateFormat,\n rawTasks[pos].raw.endTime.data,\n inclusiveEndDates\n );\n if (rawTasks[pos].endTime) {\n rawTasks[pos].processed = true;\n rawTasks[pos].manualEndTime = moment(\n rawTasks[pos].raw.endTime.data,\n 'YYYY-MM-DD',\n true\n ).isValid();\n checkTaskDates(rawTasks[pos], dateFormat, excludes);\n }\n }\n\n return rawTasks[pos].processed;\n };\n\n let allProcessed = true;\n for (let i = 0; i < rawTasks.length; i++) {\n compileTask(i);\n\n allProcessed = allProcessed && rawTasks[i].processed;\n }\n return allProcessed;\n};\n\n/**\n * Called by parser when a link is found. Adds the URL to the vertex data.\n * @param ids Comma separated list of ids\n * @param linkStr URL to create a link for\n */\nexport const setLink = function(ids, _linkStr) {\n let linkStr = _linkStr;\n if (getConfig().securityLevel !== 'loose') {\n linkStr = sanitizeUrl(_linkStr);\n }\n ids.split(',').forEach(function(id) {\n let rawTask = findTaskById(id);\n if (typeof rawTask !== 'undefined') {\n pushFun(id, () => {\n window.open(linkStr, '_self');\n });\n }\n });\n setClass(ids, 'clickable');\n};\n\n/**\n * Called by parser when a special node is found, e.g. a clickable element.\n * @param ids Comma separated list of ids\n * @param className Class to add\n */\nexport const setClass = function(ids, className) {\n ids.split(',').forEach(function(id) {\n let rawTask = findTaskById(id);\n if (typeof rawTask !== 'undefined') {\n rawTask.classes.push(className);\n }\n });\n};\n\nconst setClickFun = function(id, functionName, functionArgs) {\n if (getConfig().securityLevel !== 'loose') {\n return;\n }\n if (typeof functionName === 'undefined') {\n return;\n }\n\n let argList = [];\n if (typeof functionArgs === 'string') {\n /* Splits functionArgs by ',', ignoring all ',' in double quoted strings */\n argList = functionArgs.split(/,(?=(?:(?:[^\"]*\"){2})*[^\"]*$)/);\n for (let i = 0; i < argList.length; i++) {\n let item = argList[i].trim();\n /* Removes all double quotes at the start and end of an argument */\n /* This preserves all starting and ending whitespace inside */\n if (item.charAt(0) === '\"' && item.charAt(item.length - 1) === '\"') {\n item = item.substr(1, item.length - 2);\n }\n argList[i] = item;\n }\n }\n\n /* if no arguments passed into callback, default to passing in id */\n if (argList.length === 0) {\n argList.push(id);\n }\n\n let rawTask = findTaskById(id);\n if (typeof rawTask !== 'undefined') {\n pushFun(id, () => {\n utils.runFunc(functionName, ...argList);\n });\n }\n};\n\n/**\n * The callbackFunction is executed in a click event bound to the task with the specified id or the task's assigned text\n * @param id The task's id\n * @param callbackFunction A function to be executed when clicked on the task or the task's text\n */\nconst pushFun = function(id, callbackFunction) {\n funs.push(function() {\n // const elem = d3.select(element).select(`[id=\"${id}\"]`)\n const elem = document.querySelector(`[id=\"${id}\"]`);\n if (elem !== null) {\n elem.addEventListener('click', function() {\n callbackFunction();\n });\n }\n });\n funs.push(function() {\n // const elem = d3.select(element).select(`[id=\"${id}-text\"]`)\n const elem = document.querySelector(`[id=\"${id}-text\"]`);\n if (elem !== null) {\n elem.addEventListener('click', function() {\n callbackFunction();\n });\n }\n });\n};\n\n/**\n * Called by parser when a click definition is found. Registers an event handler.\n * @param ids Comma separated list of ids\n * @param functionName Function to be called on click\n * @param functionArgs Function args the function should be called with\n */\nexport const setClickEvent = function(ids, functionName, functionArgs) {\n ids.split(',').forEach(function(id) {\n setClickFun(id, functionName, functionArgs);\n });\n setClass(ids, 'clickable');\n};\n\n/**\n * Binds all functions previously added to fun (specified through click) to the element\n * @param element\n */\nexport const bindFunctions = function(element) {\n funs.forEach(function(fun) {\n fun(element);\n });\n};\n\nexport default {\n clear,\n setDateFormat,\n getDateFormat,\n enableInclusiveEndDates,\n endDatesAreInclusive,\n setAxisFormat,\n getAxisFormat,\n setTodayMarker,\n getTodayMarker,\n setTitle,\n getTitle,\n addSection,\n getSections,\n getTasks,\n addTask,\n findTaskById,\n addTaskOrg,\n setExcludes,\n getExcludes,\n setClickEvent,\n setLink,\n bindFunctions,\n durationToDate\n};\n\nfunction getTaskTags(data, task, tags) {\n let matchFound = true;\n while (matchFound) {\n matchFound = false;\n tags.forEach(function(t) {\n const pattern = '^\\\\s*' + t + '\\\\s*$';\n const regex = new RegExp(pattern);\n if (data[0].match(regex)) {\n task[t] = true;\n data.shift(1);\n matchFound = true;\n }\n });\n }\n}\n","import {\n select,\n scaleTime,\n min,\n max,\n scaleLinear,\n interpolateHcl,\n axisBottom,\n timeFormat\n} from 'd3';\nimport { parser } from './parser/gantt';\nimport common from '../common/common';\nimport ganttDb from './ganttDb';\n\nparser.yy = ganttDb;\n\nconst conf = {\n titleTopMargin: 25,\n barHeight: 20,\n barGap: 4,\n topPadding: 50,\n rightPadding: 75,\n leftPadding: 75,\n gridLineStartPadding: 35,\n fontSize: 11,\n fontFamily: '\"Open-Sans\", \"sans-serif\"'\n};\nexport const setConf = function(cnf) {\n const keys = Object.keys(cnf);\n\n keys.forEach(function(key) {\n conf[key] = cnf[key];\n });\n};\nlet w;\nexport const draw = function(text, id) {\n parser.yy.clear();\n parser.parse(text);\n\n const elem = document.getElementById(id);\n w = elem.parentElement.offsetWidth;\n\n if (typeof w === 'undefined') {\n w = 1200;\n }\n\n if (typeof conf.useWidth !== 'undefined') {\n w = conf.useWidth;\n }\n\n const taskArray = parser.yy.getTasks();\n\n // Set height based on number of tasks\n const h = taskArray.length * (conf.barHeight + conf.barGap) + 2 * conf.topPadding;\n\n elem.setAttribute('height', '100%');\n // Set viewBox\n elem.setAttribute('viewBox', '0 0 ' + w + ' ' + h);\n const svg = select(`[id=\"${id}\"]`);\n\n // Set timescale\n const timeScale = scaleTime()\n .domain([\n min(taskArray, function(d) {\n return d.startTime;\n }),\n max(taskArray, function(d) {\n return d.endTime;\n })\n ])\n .rangeRound([0, w - conf.leftPadding - conf.rightPadding]);\n\n let categories = [];\n\n for (let i = 0; i < taskArray.length; i++) {\n categories.push(taskArray[i].type);\n }\n\n const catsUnfiltered = categories; // for vert labels\n\n categories = checkUnique(categories);\n\n function taskCompare(a, b) {\n const taskA = a.startTime;\n const taskB = b.startTime;\n let result = 0;\n if (taskA > taskB) {\n result = 1;\n } else if (taskA < taskB) {\n result = -1;\n }\n return result;\n }\n\n // Sort the task array using the above taskCompare() so that\n // tasks are created based on their order of startTime\n taskArray.sort(taskCompare);\n\n makeGant(taskArray, w, h);\n if (typeof conf.useWidth !== 'undefined') {\n elem.setAttribute('width', w);\n }\n\n svg\n .append('text')\n .text(parser.yy.getTitle())\n .attr('x', w / 2)\n .attr('y', conf.titleTopMargin)\n .attr('class', 'titleText');\n\n function makeGant(tasks, pageWidth, pageHeight) {\n const barHeight = conf.barHeight;\n const gap = barHeight + conf.barGap;\n const topPadding = conf.topPadding;\n const leftPadding = conf.leftPadding;\n\n const colorScale = scaleLinear()\n .domain([0, categories.length])\n .range(['#00B9FA', '#F95002'])\n .interpolate(interpolateHcl);\n\n makeGrid(leftPadding, topPadding, pageWidth, pageHeight);\n drawRects(tasks, gap, topPadding, leftPadding, barHeight, colorScale, pageWidth, pageHeight);\n vertLabels(gap, topPadding, leftPadding, barHeight, colorScale);\n drawToday(leftPadding, topPadding, pageWidth, pageHeight);\n }\n\n function drawRects(theArray, theGap, theTopPad, theSidePad, theBarHeight, theColorScale, w) {\n // Draw background rects covering the entire width of the graph, these form the section rows.\n svg\n .append('g')\n .selectAll('rect')\n .data(theArray)\n .enter()\n .append('rect')\n .attr('x', 0)\n .attr('y', function(d, i) {\n // Ignore the incoming i value and use our order instead\n i = d.order;\n return i * theGap + theTopPad - 2;\n })\n .attr('width', function() {\n return w - conf.rightPadding / 2;\n })\n .attr('height', theGap)\n .attr('class', function(d) {\n for (let i = 0; i < categories.length; i++) {\n if (d.type === categories[i]) {\n return 'section section' + (i % conf.numberSectionStyles);\n }\n }\n return 'section section0';\n });\n\n // Draw the rects representing the tasks\n const rectangles = svg\n .append('g')\n .selectAll('rect')\n .data(theArray)\n .enter();\n\n rectangles\n .append('rect')\n .attr('id', function(d) {\n return d.id;\n })\n .attr('rx', 3)\n .attr('ry', 3)\n .attr('x', function(d) {\n if (d.milestone) {\n return (\n timeScale(d.startTime) +\n theSidePad +\n 0.5 * (timeScale(d.endTime) - timeScale(d.startTime)) -\n 0.5 * theBarHeight\n );\n }\n return timeScale(d.startTime) + theSidePad;\n })\n .attr('y', function(d, i) {\n // Ignore the incoming i value and use our order instead\n i = d.order;\n return i * theGap + theTopPad;\n })\n .attr('width', function(d) {\n if (d.milestone) {\n return theBarHeight;\n }\n return timeScale(d.renderEndTime || d.endTime) - timeScale(d.startTime);\n })\n .attr('height', theBarHeight)\n .attr('transform-origin', function(d, i) {\n return (\n (\n timeScale(d.startTime) +\n theSidePad +\n 0.5 * (timeScale(d.endTime) - timeScale(d.startTime))\n ).toString() +\n 'px ' +\n (i * theGap + theTopPad + 0.5 * theBarHeight).toString() +\n 'px'\n );\n })\n .attr('class', function(d) {\n const res = 'task';\n\n let classStr = '';\n if (d.classes.length > 0) {\n classStr = d.classes.join(' ');\n }\n\n let secNum = 0;\n for (let i = 0; i < categories.length; i++) {\n if (d.type === categories[i]) {\n secNum = i % conf.numberSectionStyles;\n }\n }\n\n let taskClass = '';\n if (d.active) {\n if (d.crit) {\n taskClass += ' activeCrit';\n } else {\n taskClass = ' active';\n }\n } else if (d.done) {\n if (d.crit) {\n taskClass = ' doneCrit';\n } else {\n taskClass = ' done';\n }\n } else {\n if (d.crit) {\n taskClass += ' crit';\n }\n }\n\n if (taskClass.length === 0) {\n taskClass = ' task';\n }\n\n if (d.milestone) {\n taskClass = ' milestone ' + taskClass;\n }\n\n taskClass += secNum;\n\n taskClass += ' ' + classStr;\n\n return res + taskClass;\n });\n\n // Append task labels\n rectangles\n .append('text')\n .attr('id', function(d) {\n return d.id + '-text';\n })\n .text(function(d) {\n return d.task;\n })\n .attr('font-size', conf.fontSize)\n .attr('x', function(d) {\n let startX = timeScale(d.startTime);\n let endX = timeScale(d.renderEndTime || d.endTime);\n if (d.milestone) {\n startX += 0.5 * (timeScale(d.endTime) - timeScale(d.startTime)) - 0.5 * theBarHeight;\n }\n if (d.milestone) {\n endX = startX + theBarHeight;\n }\n const textWidth = this.getBBox().width;\n\n // Check id text width > width of rectangle\n if (textWidth > endX - startX) {\n if (endX + textWidth + 1.5 * conf.leftPadding > w) {\n return startX + theSidePad - 5;\n } else {\n return endX + theSidePad + 5;\n }\n } else {\n return (endX - startX) / 2 + startX + theSidePad;\n }\n })\n .attr('y', function(d, i) {\n // Ignore the incoming i value and use our order instead\n i = d.order;\n return i * theGap + conf.barHeight / 2 + (conf.fontSize / 2 - 2) + theTopPad;\n })\n .attr('text-height', theBarHeight)\n .attr('class', function(d) {\n const startX = timeScale(d.startTime);\n let endX = timeScale(d.endTime);\n if (d.milestone) {\n endX = startX + theBarHeight;\n }\n const textWidth = this.getBBox().width;\n\n let classStr = '';\n if (d.classes.length > 0) {\n classStr = d.classes.join(' ');\n }\n\n let secNum = 0;\n console.log(conf);\n for (let i = 0; i < categories.length; i++) {\n if (d.type === categories[i]) {\n secNum = i % conf.numberSectionStyles;\n }\n }\n\n let taskType = '';\n if (d.active) {\n if (d.crit) {\n taskType = 'activeCritText' + secNum;\n } else {\n taskType = 'activeText' + secNum;\n }\n }\n\n if (d.done) {\n if (d.crit) {\n taskType = taskType + ' doneCritText' + secNum;\n } else {\n taskType = taskType + ' doneText' + secNum;\n }\n } else {\n if (d.crit) {\n taskType = taskType + ' critText' + secNum;\n }\n }\n\n if (d.milestone) {\n taskType += ' milestoneText';\n }\n\n // Check id text width > width of rectangle\n if (textWidth > endX - startX) {\n if (endX + textWidth + 1.5 * conf.leftPadding > w) {\n return classStr + ' taskTextOutsideLeft taskTextOutside' + secNum + ' ' + taskType;\n } else {\n return (\n classStr +\n ' taskTextOutsideRight taskTextOutside' +\n secNum +\n ' ' +\n taskType +\n ' width-' +\n textWidth\n );\n }\n } else {\n return classStr + ' taskText taskText' + secNum + ' ' + taskType + ' width-' + textWidth;\n }\n });\n }\n\n function makeGrid(theSidePad, theTopPad, w, h) {\n let xAxis = axisBottom(timeScale)\n .tickSize(-h + theTopPad + conf.gridLineStartPadding)\n .tickFormat(timeFormat(parser.yy.getAxisFormat() || conf.axisFormat || '%Y-%m-%d'));\n\n svg\n .append('g')\n .attr('class', 'grid')\n .attr('transform', 'translate(' + theSidePad + ', ' + (h - 50) + ')')\n .call(xAxis)\n .selectAll('text')\n .style('text-anchor', 'middle')\n .attr('fill', '#000')\n .attr('stroke', 'none')\n .attr('font-size', 10)\n .attr('dy', '1em');\n }\n\n function vertLabels(theGap, theTopPad) {\n const numOccurances = [];\n let prevGap = 0;\n\n for (let i = 0; i < categories.length; i++) {\n numOccurances[i] = [categories[i], getCount(categories[i], catsUnfiltered)];\n }\n\n svg\n .append('g') // without doing this, impossible to put grid lines behind text\n .selectAll('text')\n .data(numOccurances)\n .enter()\n .append(function(d) {\n const rows = d[0].split(common.lineBreakRegex);\n const dy = -(rows.length - 1) / 2;\n\n const svgLabel = document.createElementNS('http://www.w3.org/2000/svg', 'text');\n svgLabel.setAttribute('dy', dy + 'em');\n\n for (let j = 0; j < rows.length; j++) {\n const tspan = document.createElementNS('http://www.w3.org/2000/svg', 'tspan');\n tspan.setAttribute('alignment-baseline', 'central');\n tspan.setAttribute('x', '10');\n if (j > 0) tspan.setAttribute('dy', '1em');\n tspan.textContent = rows[j];\n svgLabel.appendChild(tspan);\n }\n return svgLabel;\n })\n .attr('x', 10)\n .attr('y', function(d, i) {\n if (i > 0) {\n for (let j = 0; j < i; j++) {\n prevGap += numOccurances[i - 1][1];\n return (d[1] * theGap) / 2 + prevGap * theGap + theTopPad;\n }\n } else {\n return (d[1] * theGap) / 2 + theTopPad;\n }\n })\n .attr('class', function(d) {\n for (let i = 0; i < categories.length; i++) {\n if (d[0] === categories[i]) {\n return 'sectionTitle sectionTitle' + (i % conf.numberSectionStyles);\n }\n }\n return 'sectionTitle';\n });\n }\n\n function drawToday(theSidePad, theTopPad, w, h) {\n const todayMarker = ganttDb.getTodayMarker();\n if (todayMarker === 'off') {\n return;\n }\n\n const todayG = svg.append('g').attr('class', 'today');\n const today = new Date();\n const todayLine = todayG.append('line');\n\n todayLine\n .attr('x1', timeScale(today) + theSidePad)\n .attr('x2', timeScale(today) + theSidePad)\n .attr('y1', conf.titleTopMargin)\n .attr('y2', h - conf.titleTopMargin)\n .attr('class', 'today');\n\n if (todayMarker !== '') {\n todayLine.attr('style', todayMarker.replace(/,/g, ';'));\n }\n }\n\n // from this stackexchange question: http://stackoverflow.com/questions/1890203/unique-for-arrays-in-javascript\n function checkUnique(arr) {\n const hash = {};\n const result = [];\n for (let i = 0, l = arr.length; i < l; ++i) {\n if (!hash.hasOwnProperty(arr[i])) { // eslint-disable-line\n // it works with objects! in FF, at least\n hash[arr[i]] = true;\n result.push(arr[i]);\n }\n }\n return result;\n }\n\n // from this stackexchange question: http://stackoverflow.com/questions/14227981/count-how-many-strings-in-an-array-have-duplicates-in-the-same-array\n function getCounts(arr) {\n let i = arr.length; // const to loop over\n const obj = {}; // obj to store results\n while (i) {\n obj[arr[--i]] = (obj[arr[i]] || 0) + 1; // count occurrences\n }\n return obj;\n }\n\n // get specific from everything\n function getCount(word, arr) {\n return getCounts(arr)[word] || 0;\n }\n};\n\nexport default {\n setConf,\n draw\n};\n","/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[6,8,10,11,12,13,14,15,16,17,19,21],$V1=[1,9],$V2=[1,10],$V3=[1,11],$V4=[1,12],$V5=[1,13],$V6=[1,14],$V7=[1,15],$V8=[1,17],$V9=[1,18];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"gantt\":4,\"document\":5,\"EOF\":6,\"line\":7,\"SPACE\":8,\"statement\":9,\"NL\":10,\"dateFormat\":11,\"inclusiveEndDates\":12,\"axisFormat\":13,\"excludes\":14,\"todayMarker\":15,\"title\":16,\"section\":17,\"clickStatement\":18,\"taskTxt\":19,\"taskData\":20,\"click\":21,\"callbackname\":22,\"callbackargs\":23,\"href\":24,\"clickStatementDebug\":25,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",4:\"gantt\",6:\"EOF\",8:\"SPACE\",10:\"NL\",11:\"dateFormat\",12:\"inclusiveEndDates\",13:\"axisFormat\",14:\"excludes\",15:\"todayMarker\",16:\"title\",17:\"section\",19:\"taskTxt\",20:\"taskData\",21:\"click\",22:\"callbackname\",23:\"callbackargs\",24:\"href\"},\nproductions_: [0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,2],[18,2],[18,3],[18,3],[18,4],[18,3],[18,4],[18,2],[25,2],[25,3],[25,3],[25,4],[25,3],[25,4],[25,2]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 1:\n return $$[$0-1]; \nbreak;\ncase 2:\n this.$ = [] \nbreak;\ncase 3:\n$$[$0-1].push($$[$0]);this.$ = $$[$0-1]\nbreak;\ncase 4: case 5:\n this.$ = $$[$0] \nbreak;\ncase 6: case 7:\n this.$=[];\nbreak;\ncase 8:\nyy.setDateFormat($$[$0].substr(11));this.$=$$[$0].substr(11);\nbreak;\ncase 9:\nyy.enableInclusiveEndDates();this.$=$$[$0].substr(18);\nbreak;\ncase 10:\nyy.setAxisFormat($$[$0].substr(11));this.$=$$[$0].substr(11);\nbreak;\ncase 11:\nyy.setExcludes($$[$0].substr(9));this.$=$$[$0].substr(9);\nbreak;\ncase 12:\nyy.setTodayMarker($$[$0].substr(12));this.$=$$[$0].substr(12);\nbreak;\ncase 13:\nyy.setTitle($$[$0].substr(6));this.$=$$[$0].substr(6);\nbreak;\ncase 14:\nyy.addSection($$[$0].substr(8));this.$=$$[$0].substr(8);\nbreak;\ncase 16:\nyy.addTask($$[$0-1],$$[$0]);this.$='task';\nbreak;\ncase 17:\nthis.$ = $$[$0-1];yy.setClickEvent($$[$0-1], $$[$0], null);\nbreak;\ncase 18:\nthis.$ = $$[$0-2];yy.setClickEvent($$[$0-2], $$[$0-1], $$[$0]);\nbreak;\ncase 19:\nthis.$ = $$[$0-2];yy.setClickEvent($$[$0-2], $$[$0-1], null);yy.setLink($$[$0-2],$$[$0]);\nbreak;\ncase 20:\nthis.$ = $$[$0-3];yy.setClickEvent($$[$0-3], $$[$0-2], $$[$0-1]);yy.setLink($$[$0-3],$$[$0]);\nbreak;\ncase 21:\nthis.$ = $$[$0-2];yy.setClickEvent($$[$0-2], $$[$0], null);yy.setLink($$[$0-2],$$[$0-1]);\nbreak;\ncase 22:\nthis.$ = $$[$0-3];yy.setClickEvent($$[$0-3], $$[$0-1], $$[$0]);yy.setLink($$[$0-3],$$[$0-2]);\nbreak;\ncase 23:\nthis.$ = $$[$0-1];yy.setLink($$[$0-1], $$[$0]);\nbreak;\ncase 24: case 30:\nthis.$=$$[$0-1] + ' ' + $$[$0];\nbreak;\ncase 25: case 26: case 28:\nthis.$=$$[$0-2] + ' ' + $$[$0-1] + ' ' + $$[$0];\nbreak;\ncase 27: case 29:\nthis.$=$$[$0-3] + ' ' + $$[$0-2] + ' ' + $$[$0-1] + ' ' + $$[$0];\nbreak;\n}\n},\ntable: [{3:1,4:[1,2]},{1:[3]},o($V0,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:$V1,12:$V2,13:$V3,14:$V4,15:$V5,16:$V6,17:$V7,18:16,19:$V8,21:$V9},o($V0,[2,7],{1:[2,1]}),o($V0,[2,3]),{9:19,11:$V1,12:$V2,13:$V3,14:$V4,15:$V5,16:$V6,17:$V7,18:16,19:$V8,21:$V9},o($V0,[2,5]),o($V0,[2,6]),o($V0,[2,8]),o($V0,[2,9]),o($V0,[2,10]),o($V0,[2,11]),o($V0,[2,12]),o($V0,[2,13]),o($V0,[2,14]),o($V0,[2,15]),{20:[1,20]},{22:[1,21],24:[1,22]},o($V0,[2,4]),o($V0,[2,16]),o($V0,[2,17],{23:[1,23],24:[1,24]}),o($V0,[2,23],{22:[1,25]}),o($V0,[2,18],{24:[1,26]}),o($V0,[2,19]),o($V0,[2,21],{23:[1,27]}),o($V0,[2,20]),o($V0,[2,22])],\ndefaultActions: {},\nparseError: function parseError (str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer.lex() || EOF;\n if (typeof token !== 'number') {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {\"case-insensitive\":true},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0:return 10;\nbreak;\ncase 1:/* skip whitespace */\nbreak;\ncase 2:/* skip comments */\nbreak;\ncase 3:/* skip comments */\nbreak;\ncase 4:this.begin(\"href\");\nbreak;\ncase 5:this.popState();\nbreak;\ncase 6:return 24;\nbreak;\ncase 7:this.begin(\"callbackname\");\nbreak;\ncase 8:this.popState();\nbreak;\ncase 9:this.popState(); this.begin(\"callbackargs\");\nbreak;\ncase 10:return 22;\nbreak;\ncase 11:this.popState();\nbreak;\ncase 12:return 23;\nbreak;\ncase 13:this.begin(\"click\");\nbreak;\ncase 14:this.popState();\nbreak;\ncase 15:return 21;\nbreak;\ncase 16:return 4;\nbreak;\ncase 17:return 11;\nbreak;\ncase 18:return 12;\nbreak;\ncase 19:return 13;\nbreak;\ncase 20:return 14;\nbreak;\ncase 21:return 15;\nbreak;\ncase 22:return 'date';\nbreak;\ncase 23:return 16;\nbreak;\ncase 24:return 17;\nbreak;\ncase 25:return 19;\nbreak;\ncase 26:return 20;\nbreak;\ncase 27:return ':';\nbreak;\ncase 28:return 6;\nbreak;\ncase 29:return 'INVALID';\nbreak;\n}\n},\nrules: [/^(?:[\\n]+)/i,/^(?:\\s+)/i,/^(?:#[^\\n]*)/i,/^(?:%[^\\n]*)/i,/^(?:href[\\s]+[\"])/i,/^(?:[\"])/i,/^(?:[^\"]*)/i,/^(?:call[\\s]+)/i,/^(?:\\([\\s]*\\))/i,/^(?:\\()/i,/^(?:[^(]*)/i,/^(?:\\))/i,/^(?:[^)]*)/i,/^(?:click[\\s]+)/i,/^(?:[\\s\\n])/i,/^(?:[^\\s\\n]*)/i,/^(?:gantt\\b)/i,/^(?:dateFormat\\s[^#\\n;]+)/i,/^(?:inclusiveEndDates\\b)/i,/^(?:axisFormat\\s[^#\\n;]+)/i,/^(?:excludes\\s[^#\\n;]+)/i,/^(?:todayMarker\\s[^\\n;]+)/i,/^(?:\\d\\d\\d\\d-\\d\\d-\\d\\d\\b)/i,/^(?:title\\s[^#\\n;]+)/i,/^(?:section\\s[^#:\\n;]+)/i,/^(?:[^#:\\n;]+)/i,/^(?::[^#\\n;]+)/i,/^(?::)/i,/^(?:$)/i,/^(?:.)/i],\nconditions: {\"callbackargs\":{\"rules\":[11,12],\"inclusive\":false},\"callbackname\":{\"rules\":[8,9,10],\"inclusive\":false},\"href\":{\"rules\":[5,6],\"inclusive\":false},\"click\":{\"rules\":[14,15],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,1,2,3,4,7,13,16,17,18,19,20,21,22,23,24,25,26,27,28,29],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain (args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}","const getStyles = options =>\n `\n .mermaid-main-font {\n font-family: \"trebuchet ms\", verdana, arial;\n font-family: var(--mermaid-font-family);\n }\n\n .section {\n stroke: none;\n opacity: 0.2;\n }\n\n .section0 {\n fill: ${options.sectionBkgColor};\n }\n\n .section2 {\n fill: ${options.sectionBkgColor2};\n }\n\n .section1,\n .section3 {\n fill: ${options.altSectionBkgColor};\n opacity: 0.2;\n }\n\n .sectionTitle0 {\n fill: ${options.titleColor};\n }\n\n .sectionTitle1 {\n fill: ${options.titleColor};\n }\n\n .sectionTitle2 {\n fill: ${options.titleColor};\n }\n\n .sectionTitle3 {\n fill: ${options.titleColor};\n }\n\n .sectionTitle {\n text-anchor: start;\n font-size: 11px;\n text-height: 14px;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family);\n\n }\n\n\n /* Grid and axis */\n\n .grid .tick {\n stroke: ${options.gridColor};\n opacity: 0.8;\n shape-rendering: crispEdges;\n text {\n font-family: ${options.fontFamily};\n fill: ${options.textColor};\n }\n }\n\n .grid path {\n stroke-width: 0;\n }\n\n\n /* Today line */\n\n .today {\n fill: none;\n stroke: ${options.todayLineColor};\n stroke-width: 2px;\n }\n\n\n /* Task styling */\n\n /* Default task */\n\n .task {\n stroke-width: 2;\n }\n\n .taskText {\n text-anchor: middle;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family);\n }\n\n .taskText:not([font-size]) {\n font-size: 11px;\n }\n\n .taskTextOutsideRight {\n fill: ${options.taskTextDarkColor};\n text-anchor: start;\n font-size: 11px;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family);\n\n }\n\n .taskTextOutsideLeft {\n fill: ${options.taskTextDarkColor};\n text-anchor: end;\n font-size: 11px;\n }\n\n /* Special case clickable */\n .task.clickable {\n cursor: pointer;\n }\n .taskText.clickable {\n cursor: pointer;\n fill: ${options.taskTextClickableColor} !important;\n font-weight: bold;\n }\n\n .taskTextOutsideLeft.clickable {\n cursor: pointer;\n fill: ${options.taskTextClickableColor} !important;\n font-weight: bold;\n }\n\n .taskTextOutsideRight.clickable {\n cursor: pointer;\n fill: ${options.taskTextClickableColor} !important;\n font-weight: bold;\n }\n\n /* Specific task settings for the sections*/\n\n .taskText0,\n .taskText1,\n .taskText2,\n .taskText3 {\n fill: ${options.taskTextColor};\n }\n\n .task0,\n .task1,\n .task2,\n .task3 {\n fill: ${options.taskBkgColor};\n stroke: ${options.taskBorderColor};\n }\n\n .taskTextOutside0,\n .taskTextOutside2\n {\n fill: ${options.taskTextOutsideColor};\n }\n\n .taskTextOutside1,\n .taskTextOutside3 {\n fill: ${options.taskTextOutsideColor};\n }\n\n\n /* Active task */\n\n .active0,\n .active1,\n .active2,\n .active3 {\n fill: ${options.activeTaskBkgColor};\n stroke: ${options.activeTaskBorderColor};\n }\n\n .activeText0,\n .activeText1,\n .activeText2,\n .activeText3 {\n fill: ${options.taskTextDarkColor} !important;\n }\n\n\n /* Completed task */\n\n .done0,\n .done1,\n .done2,\n .done3 {\n stroke: ${options.doneTaskBorderColor};\n fill: ${options.doneTaskBkgColor};\n stroke-width: 2;\n }\n\n .doneText0,\n .doneText1,\n .doneText2,\n .doneText3 {\n fill: ${options.taskTextDarkColor} !important;\n }\n\n\n /* Tasks on the critical line */\n\n .crit0,\n .crit1,\n .crit2,\n .crit3 {\n stroke: ${options.critBorderColor};\n fill: ${options.critBkgColor};\n stroke-width: 2;\n }\n\n .activeCrit0,\n .activeCrit1,\n .activeCrit2,\n .activeCrit3 {\n stroke: ${options.critBorderColor};\n fill: ${options.activeTaskBkgColor};\n stroke-width: 2;\n }\n\n .doneCrit0,\n .doneCrit1,\n .doneCrit2,\n .doneCrit3 {\n stroke: ${options.critBorderColor};\n fill: ${options.doneTaskBkgColor};\n stroke-width: 2;\n cursor: pointer;\n shape-rendering: crispEdges;\n }\n\n .milestone {\n transform: rotate(45deg) scale(0.8,0.8);\n }\n\n .milestoneText {\n font-style: italic;\n }\n .doneCritText0,\n .doneCritText1,\n .doneCritText2,\n .doneCritText3 {\n fill: ${options.taskTextDarkColor} !important;\n }\n\n .activeCritText0,\n .activeCritText1,\n .activeCritText2,\n .activeCritText3 {\n fill: ${options.taskTextDarkColor} !important;\n }\n\n .titleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${options.taskTextDarkColor} ;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family);\n }\n`;\n\nexport default getStyles;\n","import { logger } from '../../logger';\nimport { random } from '../../utils';\nlet commits = {};\nlet head = null;\nlet branches = { master: head };\nlet curBranch = 'master';\nlet direction = 'LR';\nlet seq = 0;\n\nfunction getId() {\n return random({ length: 7 });\n}\n\nfunction isfastforwardable(currentCommit, otherCommit) {\n logger.debug('Entering isfastforwardable:', currentCommit.id, otherCommit.id);\n while (currentCommit.seq <= otherCommit.seq && currentCommit !== otherCommit) {\n // only if other branch has more commits\n if (otherCommit.parent == null) break;\n if (Array.isArray(otherCommit.parent)) {\n logger.debug('In merge commit:', otherCommit.parent);\n return (\n isfastforwardable(currentCommit, commits[otherCommit.parent[0]]) ||\n isfastforwardable(currentCommit, commits[otherCommit.parent[1]])\n );\n } else {\n otherCommit = commits[otherCommit.parent];\n }\n }\n logger.debug(currentCommit.id, otherCommit.id);\n return currentCommit.id === otherCommit.id;\n}\n\nfunction isReachableFrom(currentCommit, otherCommit) {\n const currentSeq = currentCommit.seq;\n const otherSeq = otherCommit.seq;\n if (currentSeq > otherSeq) return isfastforwardable(otherCommit, currentCommit);\n return false;\n}\n\nfunction uniqBy(list, fn) {\n const recordMap = Object.create(null);\n return list.reduce((out, item) => {\n const key = fn(item);\n if (!recordMap[key]) {\n recordMap[key] = true;\n out.push(item);\n }\n return out;\n }, []);\n}\n\nexport const setDirection = function(dir) {\n direction = dir;\n};\nlet options = {};\nexport const setOptions = function(rawOptString) {\n logger.debug('options str', rawOptString);\n rawOptString = rawOptString && rawOptString.trim();\n rawOptString = rawOptString || '{}';\n try {\n options = JSON.parse(rawOptString);\n } catch (e) {\n logger.error('error while parsing gitGraph options', e.message);\n }\n};\n\nexport const getOptions = function() {\n return options;\n};\n\nexport const commit = function(msg) {\n const commit = {\n id: getId(),\n message: msg,\n seq: seq++,\n parent: head == null ? null : head.id\n };\n head = commit;\n commits[commit.id] = commit;\n branches[curBranch] = commit.id;\n logger.debug('in pushCommit ' + commit.id);\n};\n\nexport const branch = function(name) {\n branches[name] = head != null ? head.id : null;\n logger.debug('in createBranch');\n};\n\nexport const merge = function(otherBranch) {\n const currentCommit = commits[branches[curBranch]];\n const otherCommit = commits[branches[otherBranch]];\n if (isReachableFrom(currentCommit, otherCommit)) {\n logger.debug('Already merged');\n return;\n }\n if (isfastforwardable(currentCommit, otherCommit)) {\n branches[curBranch] = branches[otherBranch];\n head = commits[branches[curBranch]];\n } else {\n // create merge commit\n const commit = {\n id: getId(),\n message: 'merged branch ' + otherBranch + ' into ' + curBranch,\n seq: seq++,\n parent: [head == null ? null : head.id, branches[otherBranch]]\n };\n head = commit;\n commits[commit.id] = commit;\n branches[curBranch] = commit.id;\n }\n logger.debug(branches);\n logger.debug('in mergeBranch');\n};\n\nexport const checkout = function(branch) {\n logger.debug('in checkout');\n curBranch = branch;\n const id = branches[curBranch];\n head = commits[id];\n};\n\nexport const reset = function(commitRef) {\n logger.debug('in reset', commitRef);\n const ref = commitRef.split(':')[0];\n let parentCount = parseInt(commitRef.split(':')[1]);\n let commit = ref === 'HEAD' ? head : commits[branches[ref]];\n logger.debug(commit, parentCount);\n while (parentCount > 0) {\n commit = commits[commit.parent];\n parentCount--;\n if (!commit) {\n const err = 'Critical error - unique parent commit not found during reset';\n logger.error(err);\n throw err;\n }\n }\n head = commit;\n branches[curBranch] = commit.id;\n};\n\nfunction upsert(arr, key, newval) {\n const index = arr.indexOf(key);\n if (index === -1) {\n arr.push(newval);\n } else {\n arr.splice(index, 1, newval);\n }\n}\n\nfunction prettyPrintCommitHistory(commitArr) {\n const commit = commitArr.reduce((out, commit) => {\n if (out.seq > commit.seq) return out;\n return commit;\n }, commitArr[0]);\n let line = '';\n commitArr.forEach(function(c) {\n if (c === commit) {\n line += '\\t*';\n } else {\n line += '\\t|';\n }\n });\n const label = [line, commit.id, commit.seq];\n for (let branch in branches) {\n if (branches[branch] === commit.id) label.push(branch);\n }\n logger.debug(label.join(' '));\n if (Array.isArray(commit.parent)) {\n const newCommit = commits[commit.parent[0]];\n upsert(commitArr, commit, newCommit);\n commitArr.push(commits[commit.parent[1]]);\n } else if (commit.parent == null) {\n return;\n } else {\n const nextCommit = commits[commit.parent];\n upsert(commitArr, commit, nextCommit);\n }\n commitArr = uniqBy(commitArr, c => c.id);\n prettyPrintCommitHistory(commitArr);\n}\n\nexport const prettyPrint = function() {\n logger.debug(commits);\n const node = getCommitsArray()[0];\n prettyPrintCommitHistory([node]);\n};\n\nexport const clear = function() {\n commits = {};\n head = null;\n branches = { master: head };\n curBranch = 'master';\n seq = 0;\n};\n\nexport const getBranchesAsObjArray = function() {\n const branchArr = [];\n for (let branch in branches) {\n branchArr.push({ name: branch, commit: commits[branches[branch]] });\n }\n return branchArr;\n};\n\nexport const getBranches = function() {\n return branches;\n};\nexport const getCommits = function() {\n return commits;\n};\nexport const getCommitsArray = function() {\n const commitArr = Object.keys(commits).map(function(key) {\n return commits[key];\n });\n commitArr.forEach(function(o) {\n logger.debug(o.id);\n });\n commitArr.sort((a, b) => b.seq - a.seq);\n return commitArr;\n};\nexport const getCurrentBranch = function() {\n return curBranch;\n};\nexport const getDirection = function() {\n return direction;\n};\nexport const getHead = function() {\n return head;\n};\n\nexport default {\n setDirection,\n setOptions,\n getOptions,\n commit,\n branch,\n merge,\n checkout,\n reset,\n prettyPrint,\n clear,\n getBranchesAsObjArray,\n getBranches,\n getCommits,\n getCommitsArray,\n getCurrentBranch,\n getDirection,\n getHead\n};\n","import { curveBasis, line, select } from 'd3';\n\nimport db from './gitGraphAst';\nimport gitGraphParser from './parser/gitGraph';\nimport { logger } from '../../logger';\nimport { interpolateToCurve } from '../../utils';\n\nlet allCommitsDict = {};\nlet branchNum;\nlet config = {\n nodeSpacing: 150,\n nodeFillColor: 'yellow',\n nodeStrokeWidth: 2,\n nodeStrokeColor: 'grey',\n lineStrokeWidth: 4,\n branchOffset: 50,\n lineColor: 'grey',\n leftMargin: 50,\n branchColors: ['#442f74', '#983351', '#609732', '#AA9A39'],\n nodeRadius: 10,\n nodeLabel: {\n width: 75,\n height: 100,\n x: -25,\n y: 0\n }\n};\nlet apiConfig = {};\nexport const setConf = function(c) {\n apiConfig = c;\n};\n\nfunction svgCreateDefs(svg) {\n svg\n .append('defs')\n .append('g')\n .attr('id', 'def-commit')\n .append('circle')\n .attr('r', config.nodeRadius)\n .attr('cx', 0)\n .attr('cy', 0);\n svg\n .select('#def-commit')\n .append('foreignObject')\n .attr('width', config.nodeLabel.width)\n .attr('height', config.nodeLabel.height)\n .attr('x', config.nodeLabel.x)\n .attr('y', config.nodeLabel.y)\n .attr('class', 'node-label')\n .attr('requiredFeatures', 'http://www.w3.org/TR/SVG11/feature#Extensibility')\n .append('p')\n .html('');\n}\n\nfunction svgDrawLine(svg, points, colorIdx, interpolate) {\n const curve = interpolateToCurve(interpolate, curveBasis);\n const color = config.branchColors[colorIdx % config.branchColors.length];\n const lineGen = line()\n .x(function(d) {\n return Math.round(d.x);\n })\n .y(function(d) {\n return Math.round(d.y);\n })\n .curve(curve);\n\n svg\n .append('svg:path')\n .attr('d', lineGen(points))\n .style('stroke', color)\n .style('stroke-width', config.lineStrokeWidth)\n .style('fill', 'none');\n}\n\n// Pass in the element and its pre-transform coords\nfunction getElementCoords(element, coords) {\n coords = coords || element.node().getBBox();\n const ctm = element.node().getCTM();\n const xn = ctm.e + coords.x * ctm.a;\n const yn = ctm.f + coords.y * ctm.d;\n return {\n left: xn,\n top: yn,\n width: coords.width,\n height: coords.height\n };\n}\n\nfunction svgDrawLineForCommits(svg, fromId, toId, direction, color) {\n logger.debug('svgDrawLineForCommits: ', fromId, toId);\n const fromBbox = getElementCoords(svg.select('#node-' + fromId + ' circle'));\n const toBbox = getElementCoords(svg.select('#node-' + toId + ' circle'));\n switch (direction) {\n case 'LR':\n // (toBbox)\n // +--------\n // + (fromBbox)\n if (fromBbox.left - toBbox.left > config.nodeSpacing) {\n const lineStart = {\n x: fromBbox.left - config.nodeSpacing,\n y: toBbox.top + toBbox.height / 2\n };\n const lineEnd = { x: toBbox.left + toBbox.width, y: toBbox.top + toBbox.height / 2 };\n svgDrawLine(svg, [lineStart, lineEnd], color, 'linear');\n svgDrawLine(\n svg,\n [\n { x: fromBbox.left, y: fromBbox.top + fromBbox.height / 2 },\n { x: fromBbox.left - config.nodeSpacing / 2, y: fromBbox.top + fromBbox.height / 2 },\n { x: fromBbox.left - config.nodeSpacing / 2, y: lineStart.y },\n lineStart\n ],\n color\n );\n } else {\n svgDrawLine(\n svg,\n [\n {\n x: fromBbox.left,\n y: fromBbox.top + fromBbox.height / 2\n },\n {\n x: fromBbox.left - config.nodeSpacing / 2,\n y: fromBbox.top + fromBbox.height / 2\n },\n {\n x: fromBbox.left - config.nodeSpacing / 2,\n y: toBbox.top + toBbox.height / 2\n },\n {\n x: toBbox.left + toBbox.width,\n y: toBbox.top + toBbox.height / 2\n }\n ],\n color\n );\n }\n break;\n case 'BT':\n // + (fromBbox)\n // |\n // |\n // + (toBbox)\n if (toBbox.top - fromBbox.top > config.nodeSpacing) {\n const lineStart = {\n x: toBbox.left + toBbox.width / 2,\n y: fromBbox.top + fromBbox.height + config.nodeSpacing\n };\n const lineEnd = { x: toBbox.left + toBbox.width / 2, y: toBbox.top };\n svgDrawLine(svg, [lineStart, lineEnd], color, 'linear');\n svgDrawLine(\n svg,\n [\n { x: fromBbox.left + fromBbox.width / 2, y: fromBbox.top + fromBbox.height },\n {\n x: fromBbox.left + fromBbox.width / 2,\n y: fromBbox.top + fromBbox.height + config.nodeSpacing / 2\n },\n { x: toBbox.left + toBbox.width / 2, y: lineStart.y - config.nodeSpacing / 2 },\n lineStart\n ],\n color\n );\n } else {\n svgDrawLine(\n svg,\n [\n {\n x: fromBbox.left + fromBbox.width / 2,\n y: fromBbox.top + fromBbox.height\n },\n {\n x: fromBbox.left + fromBbox.width / 2,\n y: fromBbox.top + config.nodeSpacing / 2\n },\n {\n x: toBbox.left + toBbox.width / 2,\n y: toBbox.top - config.nodeSpacing / 2\n },\n {\n x: toBbox.left + toBbox.width / 2,\n y: toBbox.top\n }\n ],\n color\n );\n }\n break;\n }\n}\n\nfunction cloneNode(svg, selector) {\n return svg\n .select(selector)\n .node()\n .cloneNode(true);\n}\n\nfunction renderCommitHistory(svg, commitid, branches, direction) {\n let commit;\n const numCommits = Object.keys(allCommitsDict).length;\n if (typeof commitid === 'string') {\n do {\n commit = allCommitsDict[commitid];\n logger.debug('in renderCommitHistory', commit.id, commit.seq);\n if (svg.select('#node-' + commitid).size() > 0) {\n return;\n }\n svg\n .append(function() {\n return cloneNode(svg, '#def-commit');\n })\n .attr('class', 'commit')\n .attr('id', function() {\n return 'node-' + commit.id;\n })\n .attr('transform', function() {\n switch (direction) {\n case 'LR':\n return (\n 'translate(' +\n (commit.seq * config.nodeSpacing + config.leftMargin) +\n ', ' +\n branchNum * config.branchOffset +\n ')'\n );\n case 'BT':\n return (\n 'translate(' +\n (branchNum * config.branchOffset + config.leftMargin) +\n ', ' +\n (numCommits - commit.seq) * config.nodeSpacing +\n ')'\n );\n }\n })\n .attr('fill', config.nodeFillColor)\n .attr('stroke', config.nodeStrokeColor)\n .attr('stroke-width', config.nodeStrokeWidth);\n\n let branch;\n for (let branchName in branches) {\n if (branches[branchName].commit === commit) {\n branch = branches[branchName];\n break;\n }\n }\n if (branch) {\n logger.debug('found branch ', branch.name);\n svg\n .select('#node-' + commit.id + ' p')\n .append('xhtml:span')\n .attr('class', 'branch-label')\n .text(branch.name + ', ');\n }\n svg\n .select('#node-' + commit.id + ' p')\n .append('xhtml:span')\n .attr('class', 'commit-id')\n .text(commit.id);\n if (commit.message !== '' && direction === 'BT') {\n svg\n .select('#node-' + commit.id + ' p')\n .append('xhtml:span')\n .attr('class', 'commit-msg')\n .text(', ' + commit.message);\n }\n commitid = commit.parent;\n } while (commitid && allCommitsDict[commitid]);\n }\n\n if (Array.isArray(commitid)) {\n logger.debug('found merge commmit', commitid);\n renderCommitHistory(svg, commitid[0], branches, direction);\n branchNum++;\n renderCommitHistory(svg, commitid[1], branches, direction);\n branchNum--;\n }\n}\n\nfunction renderLines(svg, commit, direction, branchColor) {\n branchColor = branchColor || 0;\n while (commit.seq > 0 && !commit.lineDrawn) {\n if (typeof commit.parent === 'string') {\n svgDrawLineForCommits(svg, commit.id, commit.parent, direction, branchColor);\n commit.lineDrawn = true;\n commit = allCommitsDict[commit.parent];\n } else if (Array.isArray(commit.parent)) {\n svgDrawLineForCommits(svg, commit.id, commit.parent[0], direction, branchColor);\n svgDrawLineForCommits(svg, commit.id, commit.parent[1], direction, branchColor + 1);\n renderLines(svg, allCommitsDict[commit.parent[1]], direction, branchColor + 1);\n commit.lineDrawn = true;\n commit = allCommitsDict[commit.parent[0]];\n }\n }\n}\n\nexport const draw = function(txt, id, ver) {\n try {\n const parser = gitGraphParser.parser;\n parser.yy = db;\n parser.yy.clear();\n\n logger.debug('in gitgraph renderer', txt + '\\n', 'id:', id, ver);\n // Parse the graph definition\n parser.parse(txt + '\\n');\n\n config = Object.assign(config, apiConfig, db.getOptions());\n logger.debug('effective options', config);\n const direction = db.getDirection();\n allCommitsDict = db.getCommits();\n const branches = db.getBranchesAsObjArray();\n if (direction === 'BT') {\n config.nodeLabel.x = branches.length * config.branchOffset;\n config.nodeLabel.width = '100%';\n config.nodeLabel.y = -1 * 2 * config.nodeRadius;\n }\n const svg = select(`[id=\"${id}\"]`);\n svgCreateDefs(svg);\n branchNum = 1;\n for (let branch in branches) {\n const v = branches[branch];\n renderCommitHistory(svg, v.commit.id, branches, direction);\n renderLines(svg, v.commit, direction);\n branchNum++;\n }\n svg.attr('height', function() {\n if (direction === 'BT') return Object.keys(allCommitsDict).length * config.nodeSpacing;\n return (branches.length + 1) * config.branchOffset;\n });\n } catch (e) {\n logger.error('Error while rendering gitgraph');\n logger.error(e.message);\n }\n};\n\nexport default {\n setConf,\n draw\n};\n","/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[2,3],$V1=[1,7],$V2=[7,12,15,17,19,20,21],$V3=[7,11,12,15,17,19,20,21],$V4=[2,20],$V5=[1,32];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"GG\":4,\":\":5,\"document\":6,\"EOF\":7,\"DIR\":8,\"options\":9,\"body\":10,\"OPT\":11,\"NL\":12,\"line\":13,\"statement\":14,\"COMMIT\":15,\"commit_arg\":16,\"BRANCH\":17,\"ID\":18,\"CHECKOUT\":19,\"MERGE\":20,\"RESET\":21,\"reset_arg\":22,\"STR\":23,\"HEAD\":24,\"reset_parents\":25,\"CARET\":26,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",4:\"GG\",5:\":\",7:\"EOF\",8:\"DIR\",11:\"OPT\",12:\"NL\",15:\"COMMIT\",17:\"BRANCH\",18:\"ID\",19:\"CHECKOUT\",20:\"MERGE\",21:\"RESET\",23:\"STR\",24:\"HEAD\",26:\"CARET\"},\nproductions_: [0,[3,4],[3,5],[6,0],[6,2],[9,2],[9,1],[10,0],[10,2],[13,2],[13,1],[14,2],[14,2],[14,2],[14,2],[14,2],[16,0],[16,1],[22,2],[22,2],[25,0],[25,2]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 1:\n return $$[$0-1]; \nbreak;\ncase 2:\nyy.setDirection($$[$0-3]); return $$[$0-1];\nbreak;\ncase 4:\n yy.setOptions($$[$0-1]); this.$ = $$[$0]\nbreak;\ncase 5:\n$$[$0-1] +=$$[$0]; this.$=$$[$0-1]\nbreak;\ncase 7:\nthis.$ = []\nbreak;\ncase 8:\n$$[$0-1].push($$[$0]); this.$=$$[$0-1];\nbreak;\ncase 9:\nthis.$ =$$[$0-1]\nbreak;\ncase 11:\nyy.commit($$[$0])\nbreak;\ncase 12:\nyy.branch($$[$0])\nbreak;\ncase 13:\nyy.checkout($$[$0])\nbreak;\ncase 14:\nyy.merge($$[$0])\nbreak;\ncase 15:\nyy.reset($$[$0])\nbreak;\ncase 16:\nthis.$ = \"\"\nbreak;\ncase 17:\nthis.$=$$[$0]\nbreak;\ncase 18:\nthis.$ = $$[$0-1]+ \":\" + $$[$0] \nbreak;\ncase 19:\nthis.$ = $$[$0-1]+ \":\" + yy.count; yy.count = 0\nbreak;\ncase 20:\nyy.count = 0\nbreak;\ncase 21:\n yy.count += 1 \nbreak;\n}\n},\ntable: [{3:1,4:[1,2]},{1:[3]},{5:[1,3],8:[1,4]},{6:5,7:$V0,9:6,12:$V1},{5:[1,8]},{7:[1,9]},o($V2,[2,7],{10:10,11:[1,11]}),o($V3,[2,6]),{6:12,7:$V0,9:6,12:$V1},{1:[2,1]},{7:[2,4],12:[1,15],13:13,14:14,15:[1,16],17:[1,17],19:[1,18],20:[1,19],21:[1,20]},o($V3,[2,5]),{7:[1,21]},o($V2,[2,8]),{12:[1,22]},o($V2,[2,10]),{12:[2,16],16:23,23:[1,24]},{18:[1,25]},{18:[1,26]},{18:[1,27]},{18:[1,30],22:28,24:[1,29]},{1:[2,2]},o($V2,[2,9]),{12:[2,11]},{12:[2,17]},{12:[2,12]},{12:[2,13]},{12:[2,14]},{12:[2,15]},{12:$V4,25:31,26:$V5},{12:$V4,25:33,26:$V5},{12:[2,18]},{12:$V4,25:34,26:$V5},{12:[2,19]},{12:[2,21]}],\ndefaultActions: {9:[2,1],21:[2,2],23:[2,11],24:[2,17],25:[2,12],26:[2,13],27:[2,14],28:[2,15],31:[2,18],33:[2,19],34:[2,21]},\nparseError: function parseError (str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer.lex() || EOF;\n if (typeof token !== 'number') {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {\"case-insensitive\":true},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0:return 12;\nbreak;\ncase 1:/* skip all whitespace */\nbreak;\ncase 2:/* skip comments */\nbreak;\ncase 3:/* skip comments */\nbreak;\ncase 4:return 4;\nbreak;\ncase 5:return 15;\nbreak;\ncase 6:return 17;\nbreak;\ncase 7:return 20;\nbreak;\ncase 8:return 21;\nbreak;\ncase 9:return 19;\nbreak;\ncase 10:return 8;\nbreak;\ncase 11:return 8;\nbreak;\ncase 12:return 5;\nbreak;\ncase 13:return 26\nbreak;\ncase 14:this.begin(\"options\");\nbreak;\ncase 15:this.popState();\nbreak;\ncase 16:return 11;\nbreak;\ncase 17:this.begin(\"string\");\nbreak;\ncase 18:this.popState();\nbreak;\ncase 19:return 23;\nbreak;\ncase 20:return 18;\nbreak;\ncase 21:return 7;\nbreak;\n}\n},\nrules: [/^(?:(\\r?\\n)+)/i,/^(?:\\s+)/i,/^(?:#[^\\n]*)/i,/^(?:%[^\\n]*)/i,/^(?:gitGraph\\b)/i,/^(?:commit\\b)/i,/^(?:branch\\b)/i,/^(?:merge\\b)/i,/^(?:reset\\b)/i,/^(?:checkout\\b)/i,/^(?:LR\\b)/i,/^(?:BT\\b)/i,/^(?::)/i,/^(?:\\^)/i,/^(?:options\\r?\\n)/i,/^(?:end\\r?\\n)/i,/^(?:[^\\n]+\\r?\\n)/i,/^(?:[\"])/i,/^(?:[\"])/i,/^(?:[^\"]*)/i,/^(?:[a-zA-Z][-_\\.a-zA-Z0-9]*[-_a-zA-Z0-9])/i,/^(?:$)/i],\nconditions: {\"options\":{\"rules\":[15,16],\"inclusive\":false},\"string\":{\"rules\":[18,19],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,17,20,21],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain (args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}","const getStyles = () =>\n `\n .commit-id,\n .commit-msg,\n .branch-label {\n fill: lightgrey;\n color: lightgrey;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family);\n }\n`;\n\nexport default getStyles;\n","/**\n * Created by knut on 15-01-14.\n */\nimport { logger } from '../../logger';\n\nvar message = '';\nvar info = false;\n\nexport const setMessage = txt => {\n logger.debug('Setting message to: ' + txt);\n message = txt;\n};\n\nexport const getMessage = () => {\n return message;\n};\n\nexport const setInfo = inf => {\n info = inf;\n};\n\nexport const getInfo = () => {\n return info;\n};\n\n// export const parseError = (err, hash) => {\n// global.mermaidAPI.parseError(err, hash)\n// }\n\nexport default {\n setMessage,\n getMessage,\n setInfo,\n getInfo\n // parseError\n};\n","/**\n * Created by knut on 14-12-11.\n */\nimport { select } from 'd3';\nimport db from './infoDb';\nimport infoParser from './parser/info';\nimport { logger } from '../../logger';\n\nconst conf = {};\nexport const setConf = function(cnf) {\n const keys = Object.keys(cnf);\n\n keys.forEach(function(key) {\n conf[key] = cnf[key];\n });\n};\n\n/**\n * Draws a an info picture in the tag with id: id based on the graph definition in text.\n * @param text\n * @param id\n */\nexport const draw = (txt, id, ver) => {\n try {\n const parser = infoParser.parser;\n parser.yy = db;\n logger.debug('Renering info diagram\\n' + txt);\n // Parse the graph definition\n parser.parse(txt);\n logger.debug('Parsed info diagram');\n // Fetch the default direction, use TD if none was found\n const svg = select('#' + id);\n\n const g = svg.append('g');\n\n g.append('text') // text label for the x axis\n .attr('x', 100)\n .attr('y', 40)\n .attr('class', 'version')\n .attr('font-size', '32px')\n .style('text-anchor', 'middle')\n .text('v ' + ver);\n\n svg.attr('height', 100);\n svg.attr('width', 400);\n // svg.attr('viewBox', '0 0 300 150');\n } catch (e) {\n logger.error('Error while rendering info diagram');\n logger.error(e.message);\n }\n};\n\nexport default {\n setConf,\n draw\n};\n","/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[6,9,10];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"info\":4,\"document\":5,\"EOF\":6,\"line\":7,\"statement\":8,\"NL\":9,\"showInfo\":10,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",4:\"info\",6:\"EOF\",9:\"NL\",10:\"showInfo\"},\nproductions_: [0,[3,3],[5,0],[5,2],[7,1],[7,1],[8,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 1:\n return yy; \nbreak;\ncase 4:\n \nbreak;\ncase 6:\n yy.setInfo(true); \nbreak;\n}\n},\ntable: [{3:1,4:[1,2]},{1:[3]},o($V0,[2,2],{5:3}),{6:[1,4],7:5,8:6,9:[1,7],10:[1,8]},{1:[2,1]},o($V0,[2,3]),o($V0,[2,4]),o($V0,[2,5]),o($V0,[2,6])],\ndefaultActions: {4:[2,1]},\nparseError: function parseError (str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer.lex() || EOF;\n if (typeof token !== 'number') {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {\"case-insensitive\":true},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\n\t// Pre-lexer code can go here\n\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0:return 4 ;\nbreak;\ncase 1:return 9 ;\nbreak;\ncase 2:return 'space';\nbreak;\ncase 3:return 10;\nbreak;\ncase 4:return 6 ;\nbreak;\ncase 5:return 'TXT' ;\nbreak;\n}\n},\nrules: [/^(?:info\\b)/i,/^(?:[\\s\\n\\r]+)/i,/^(?:[\\s]+)/i,/^(?:showInfo\\b)/i,/^(?:$)/i,/^(?:.)/i],\nconditions: {\"INITIAL\":{\"rules\":[0,1,2,3,4,5],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain (args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}","const getStyles = () => ``;\n\nexport default getStyles;\n","/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[6,9,10,12];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"pie\":4,\"document\":5,\"EOF\":6,\"line\":7,\"statement\":8,\"NL\":9,\"STR\":10,\"VALUE\":11,\"title\":12,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",4:\"pie\",6:\"EOF\",9:\"NL\",10:\"STR\",11:\"VALUE\",12:\"title\"},\nproductions_: [0,[3,3],[5,0],[5,2],[7,1],[7,1],[8,2],[8,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 4:\n \nbreak;\ncase 6:\n\n\t\t/*console.log('str:'+$$[$0-1]+' value: '+$$[$0])*/\n\t\tyy.addSection($$[$0-1],yy.cleanupValue($$[$0])); \nbreak;\ncase 7:\nyy.setTitle($$[$0].substr(6));this.$=$$[$0].substr(6);\nbreak;\n}\n},\ntable: [{3:1,4:[1,2]},{1:[3]},o($V0,[2,2],{5:3}),{6:[1,4],7:5,8:6,9:[1,7],10:[1,8],12:[1,9]},{1:[2,1]},o($V0,[2,3]),o($V0,[2,4]),o($V0,[2,5]),{11:[1,10]},o($V0,[2,7]),o($V0,[2,6])],\ndefaultActions: {4:[2,1]},\nparseError: function parseError (str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer.lex() || EOF;\n if (typeof token !== 'number') {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {\"case-insensitive\":true},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\n\t// Pre-lexer code can go here\n\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0:/* do nothing */\nbreak;\ncase 1:/* skip whitespace */\nbreak;\ncase 2:return 4 ;\nbreak;\ncase 3:return 9 ;\nbreak;\ncase 4:return 'space';\nbreak;\ncase 5:return 12;\nbreak;\ncase 6:/*console.log('begin str');*/this.begin(\"string\");\nbreak;\ncase 7:/*console.log('pop-state');*/this.popState();\nbreak;\ncase 8:/*console.log('ending string')*/return \"STR\";\nbreak;\ncase 9:return \"VALUE\";\nbreak;\ncase 10:return 6 ;\nbreak;\n}\n},\nrules: [/^(?:%%[^\\n]*)/i,/^(?:\\s+)/i,/^(?:pie\\b)/i,/^(?:[\\s\\n\\r]+)/i,/^(?:[\\s]+)/i,/^(?:title\\s[^#\\n;]+)/i,/^(?:[\"])/i,/^(?:[\"])/i,/^(?:[^\"]*)/i,/^(?::[\\s]*[\\d]+(?:\\.[\\d]+)?)/i,/^(?:$)/i],\nconditions: {\"string\":{\"rules\":[7,8],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,1,2,3,4,5,6,9,10],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain (args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}","/**\n *\n */\nimport { logger } from '../../logger';\n\nlet sections = {};\nlet title = '';\n\nconst addSection = function(id, value) {\n if (typeof sections[id] === 'undefined') {\n sections[id] = value;\n logger.debug('Added new section :', id);\n }\n};\nconst getSections = () => sections;\n\nconst setTitle = function(txt) {\n title = txt;\n};\n\nconst getTitle = function() {\n return title;\n};\nconst cleanupValue = function(value) {\n if (value.substring(0, 1) === ':') {\n value = value.substring(1).trim();\n return Number(value.trim());\n } else {\n return Number(value.trim());\n }\n};\n\nconst clear = function() {\n sections = {};\n title = '';\n};\n// export const parseError = (err, hash) => {\n// global.mermaidAPI.parseError(err, hash)\n// }\n\nexport default {\n addSection,\n getSections,\n cleanupValue,\n clear,\n setTitle,\n getTitle\n // parseError\n};\n","/**\n * Created by AshishJ on 11-09-2019.\n */\nimport { select, scaleOrdinal, schemeSet2, pie as d3pie, entries, arc } from 'd3';\nimport pieData from './pieDb';\nimport pieParser from './parser/pie';\nimport { logger } from '../../logger';\n\nconst conf = {};\nexport const setConf = function(cnf) {\n const keys = Object.keys(cnf);\n\n keys.forEach(function(key) {\n conf[key] = cnf[key];\n });\n};\n\n/**\n * Draws a Pie Chart with the data given in text.\n * @param text\n * @param id\n */\nlet w;\nexport const draw = (txt, id) => {\n try {\n const parser = pieParser.parser;\n parser.yy = pieData;\n logger.debug('Rendering info diagram\\n' + txt);\n // Parse the Pie Chart definition\n parser.yy.clear();\n parser.parse(txt);\n logger.debug('Parsed info diagram');\n const elem = document.getElementById(id);\n w = elem.parentElement.offsetWidth;\n\n if (typeof w === 'undefined') {\n w = 1200;\n }\n\n if (typeof conf.useWidth !== 'undefined') {\n w = conf.useWidth;\n }\n const h = 450;\n elem.setAttribute('height', '100%');\n // Set viewBox\n elem.setAttribute('viewBox', '0 0 ' + w + ' ' + h);\n\n // Fetch the default direction, use TD if none was found\n\n var width = w; // 450\n var height = 450;\n var margin = 40;\n var legendRectSize = 18;\n var legendSpacing = 4;\n\n var radius = Math.min(width, height) / 2 - margin;\n\n var svg = select('#' + id)\n .append('svg')\n .attr('width', width)\n .attr('height', height)\n .append('g')\n .attr('transform', 'translate(' + width / 2 + ',' + height / 2 + ')');\n\n var data = pieData.getSections();\n var sum = 0;\n Object.keys(data).forEach(function(key) {\n sum += data[key];\n });\n logger.info(data);\n\n // set the color scale\n var color = scaleOrdinal()\n .domain(data)\n .range(schemeSet2);\n\n // Compute the position of each group on the pie:\n var pie = d3pie().value(function(d) {\n return d.value;\n });\n var dataReady = pie(entries(data));\n\n // shape helper to build arcs:\n var arcGenerator = arc()\n .innerRadius(0)\n .outerRadius(radius);\n\n // Build the pie chart: Basically, each part of the pie is a path that we build using the arc function.\n svg\n .selectAll('mySlices')\n .data(dataReady)\n .enter()\n .append('path')\n .attr('d', arcGenerator)\n .attr('fill', function(d) {\n return color(d.data.key);\n })\n .attr('stroke', 'black')\n .style('stroke-width', '2px')\n .style('opacity', 0.7);\n\n // Now add the Percentage. Use the centroid method to get the best coordinates\n svg\n .selectAll('mySlices')\n .data(dataReady)\n .enter()\n .append('text')\n .text(function(d) {\n return ((d.data.value / sum) * 100).toFixed(0) + '%';\n })\n .attr('transform', function(d) {\n return 'translate(' + arcGenerator.centroid(d) + ')';\n })\n .style('text-anchor', 'middle')\n .attr('class', 'slice')\n .style('font-size', 17);\n\n svg\n .append('text')\n .text(parser.yy.getTitle())\n .attr('x', 0)\n .attr('y', -(h - 50) / 2)\n .attr('class', 'pieTitleText');\n\n //Add the slegend/annotations for each section\n var legend = svg\n .selectAll('.legend')\n .data(color.domain())\n .enter()\n .append('g')\n .attr('class', 'legend')\n .attr('transform', function(d, i) {\n var height = legendRectSize + legendSpacing;\n var offset = (height * color.domain().length) / 2;\n var horz = 12 * legendRectSize;\n var vert = i * height - offset;\n return 'translate(' + horz + ',' + vert + ')';\n });\n\n legend\n .append('rect')\n .attr('width', legendRectSize)\n .attr('height', legendRectSize)\n .style('fill', color)\n .style('stroke', color);\n\n legend\n .append('text')\n .attr('x', legendRectSize + legendSpacing)\n .attr('y', legendRectSize - legendSpacing)\n .text(function(d) {\n return d;\n });\n } catch (e) {\n logger.error('Error while rendering info diagram');\n logger.error(e.message);\n }\n};\n\nexport default {\n setConf,\n draw\n};\n","const getStyles = options =>\n `.pieTitleText {\n text-anchor: middle;\n font-size: 25px;\n fill: ${options.taskTextDarkColor};\n font-family: ${options.fontFamily};\n }\n .slice {\n font-family: ${options.fontFamily};\n fill: ${options.textColor};\n // fill: white;\n }\n .legend text {\n fill: ${options.taskTextDarkColor};\n font-family: ${options.fontFamily};\n font-size: 17px;\n }\n`;\n\nexport default getStyles;\n","/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,2],$V1=[1,3],$V2=[1,5],$V3=[1,7],$V4=[2,5],$V5=[1,15],$V6=[1,17],$V7=[1,18],$V8=[1,20],$V9=[1,21],$Va=[1,22],$Vb=[1,24],$Vc=[1,25],$Vd=[1,26],$Ve=[1,27],$Vf=[1,28],$Vg=[1,29],$Vh=[1,32],$Vi=[1,33],$Vj=[1,36],$Vk=[1,4,5,16,21,22,23,25,27,28,29,30,31,33,35,36,37,48,56],$Vl=[1,44],$Vm=[4,5,16,21,22,23,25,27,28,29,30,31,33,37,48,56],$Vn=[4,5,16,21,22,23,25,27,28,29,30,31,33,36,37,48,56],$Vo=[4,5,16,21,22,23,25,27,28,29,30,31,33,35,37,48,56],$Vp=[46,47,48],$Vq=[1,4,5,7,16,21,22,23,25,27,28,29,30,31,33,35,36,37,48,56];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"SPACE\":4,\"NL\":5,\"directive\":6,\"SD\":7,\"document\":8,\"line\":9,\"statement\":10,\"openDirective\":11,\"typeDirective\":12,\"closeDirective\":13,\":\":14,\"argDirective\":15,\"participant\":16,\"actor\":17,\"AS\":18,\"restOfLine\":19,\"signal\":20,\"autonumber\":21,\"activate\":22,\"deactivate\":23,\"note_statement\":24,\"title\":25,\"text2\":26,\"loop\":27,\"end\":28,\"rect\":29,\"opt\":30,\"alt\":31,\"else_sections\":32,\"par\":33,\"par_sections\":34,\"and\":35,\"else\":36,\"note\":37,\"placement\":38,\"over\":39,\"actor_pair\":40,\"spaceList\":41,\",\":42,\"left_of\":43,\"right_of\":44,\"signaltype\":45,\"+\":46,\"-\":47,\"ACTOR\":48,\"SOLID_OPEN_ARROW\":49,\"DOTTED_OPEN_ARROW\":50,\"SOLID_ARROW\":51,\"DOTTED_ARROW\":52,\"SOLID_CROSS\":53,\"DOTTED_CROSS\":54,\"TXT\":55,\"open_directive\":56,\"type_directive\":57,\"arg_directive\":58,\"close_directive\":59,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",4:\"SPACE\",5:\"NL\",7:\"SD\",14:\":\",16:\"participant\",18:\"AS\",19:\"restOfLine\",21:\"autonumber\",22:\"activate\",23:\"deactivate\",25:\"title\",27:\"loop\",28:\"end\",29:\"rect\",30:\"opt\",31:\"alt\",33:\"par\",35:\"and\",36:\"else\",37:\"note\",39:\"over\",42:\",\",43:\"left_of\",44:\"right_of\",46:\"+\",47:\"-\",48:\"ACTOR\",49:\"SOLID_OPEN_ARROW\",50:\"DOTTED_OPEN_ARROW\",51:\"SOLID_ARROW\",52:\"DOTTED_ARROW\",53:\"SOLID_CROSS\",54:\"DOTTED_CROSS\",55:\"TXT\",56:\"open_directive\",57:\"type_directive\",58:\"arg_directive\",59:\"close_directive\"},\nproductions_: [0,[3,2],[3,2],[3,2],[3,2],[8,0],[8,2],[9,2],[9,1],[9,1],[6,4],[6,6],[10,5],[10,3],[10,2],[10,1],[10,3],[10,3],[10,2],[10,3],[10,4],[10,4],[10,4],[10,4],[10,4],[10,1],[34,1],[34,4],[32,1],[32,4],[24,4],[24,4],[41,2],[41,1],[40,3],[40,1],[38,1],[38,1],[20,5],[20,5],[20,4],[17,1],[45,1],[45,1],[45,1],[45,1],[45,1],[45,1],[26,1],[11,1],[12,1],[15,1],[13,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 4:\n yy.apply($$[$0]);return $$[$0]; \nbreak;\ncase 5:\n this.$ = [] \nbreak;\ncase 6:\n$$[$0-1].push($$[$0]);this.$ = $$[$0-1]\nbreak;\ncase 7: case 8:\n this.$ = $$[$0] \nbreak;\ncase 9:\n this.$=[]; \nbreak;\ncase 12:\n$$[$0-3].description=yy.parseMessage($$[$0-1]); this.$=$$[$0-3];\nbreak;\ncase 13:\nthis.$=$$[$0-1];\nbreak;\ncase 15:\nyy.enableSequenceNumbers()\nbreak;\ncase 16:\nthis.$={type: 'activeStart', signalType: yy.LINETYPE.ACTIVE_START, actor: $$[$0-1]};\nbreak;\ncase 17:\nthis.$={type: 'activeEnd', signalType: yy.LINETYPE.ACTIVE_END, actor: $$[$0-1]};\nbreak;\ncase 19:\nthis.$=[{type:'setTitle', text:$$[$0-1]}]\nbreak;\ncase 20:\n\n\t\t$$[$0-1].unshift({type: 'loopStart', loopText:yy.parseMessage($$[$0-2]), signalType: yy.LINETYPE.LOOP_START});\n\t\t$$[$0-1].push({type: 'loopEnd', loopText:$$[$0-2], signalType: yy.LINETYPE.LOOP_END});\n\t\tthis.$=$$[$0-1];\nbreak;\ncase 21:\n\n\t\t$$[$0-1].unshift({type: 'rectStart', color:yy.parseMessage($$[$0-2]), signalType: yy.LINETYPE.RECT_START });\n\t\t$$[$0-1].push({type: 'rectEnd', color:yy.parseMessage($$[$0-2]), signalType: yy.LINETYPE.RECT_END });\n\t\tthis.$=$$[$0-1];\nbreak;\ncase 22:\n\n\t\t$$[$0-1].unshift({type: 'optStart', optText:yy.parseMessage($$[$0-2]), signalType: yy.LINETYPE.OPT_START});\n\t\t$$[$0-1].push({type: 'optEnd', optText:yy.parseMessage($$[$0-2]), signalType: yy.LINETYPE.OPT_END});\n\t\tthis.$=$$[$0-1];\nbreak;\ncase 23:\n\n\t\t// Alt start\n\t\t$$[$0-1].unshift({type: 'altStart', altText:yy.parseMessage($$[$0-2]), signalType: yy.LINETYPE.ALT_START});\n\t\t// Content in alt is already in $$[$0-1]\n\t\t// End\n\t\t$$[$0-1].push({type: 'altEnd', signalType: yy.LINETYPE.ALT_END});\n\t\tthis.$=$$[$0-1];\nbreak;\ncase 24:\n\n\t\t// Parallel start\n\t\t$$[$0-1].unshift({type: 'parStart', parText:yy.parseMessage($$[$0-2]), signalType: yy.LINETYPE.PAR_START});\n\t\t// Content in par is already in $$[$0-1]\n\t\t// End\n\t\t$$[$0-1].push({type: 'parEnd', signalType: yy.LINETYPE.PAR_END});\n\t\tthis.$=$$[$0-1];\nbreak;\ncase 27:\n this.$ = $$[$0-3].concat([{type: 'and', parText:yy.parseMessage($$[$0-1]), signalType: yy.LINETYPE.PAR_AND}, $$[$0]]); \nbreak;\ncase 29:\n this.$ = $$[$0-3].concat([{type: 'else', altText:yy.parseMessage($$[$0-1]), signalType: yy.LINETYPE.ALT_ELSE}, $$[$0]]); \nbreak;\ncase 30:\n\n\t\tthis.$ = [$$[$0-1], {type:'addNote', placement:$$[$0-2], actor:$$[$0-1].actor, text:$$[$0]}];\nbreak;\ncase 31:\n\n\t\t// Coerce actor_pair into a [to, from, ...] array\n\t\t$$[$0-2] = [].concat($$[$0-1], $$[$0-1]).slice(0, 2);\n\t\t$$[$0-2][0] = $$[$0-2][0].actor;\n\t\t$$[$0-2][1] = $$[$0-2][1].actor;\n\t\tthis.$ = [$$[$0-1], {type:'addNote', placement:yy.PLACEMENT.OVER, actor:$$[$0-2].slice(0, 2), text:$$[$0]}];\nbreak;\ncase 34:\n this.$ = [$$[$0-2], $$[$0]]; \nbreak;\ncase 35:\n this.$ = $$[$0]; \nbreak;\ncase 36:\n this.$ = yy.PLACEMENT.LEFTOF; \nbreak;\ncase 37:\n this.$ = yy.PLACEMENT.RIGHTOF; \nbreak;\ncase 38:\n this.$ = [$$[$0-4],$$[$0-1],{type: 'addMessage', from:$$[$0-4].actor, to:$$[$0-1].actor, signalType:$$[$0-3], msg:$$[$0]},\n\t {type: 'activeStart', signalType: yy.LINETYPE.ACTIVE_START, actor: $$[$0-1]}\n\t ]\nbreak;\ncase 39:\n this.$ = [$$[$0-4],$$[$0-1],{type: 'addMessage', from:$$[$0-4].actor, to:$$[$0-1].actor, signalType:$$[$0-3], msg:$$[$0]},\n\t {type: 'activeEnd', signalType: yy.LINETYPE.ACTIVE_END, actor: $$[$0-4]}\n\t ]\nbreak;\ncase 40:\n this.$ = [$$[$0-3],$$[$0-1],{type: 'addMessage', from:$$[$0-3].actor, to:$$[$0-1].actor, signalType:$$[$0-2], msg:$$[$0]}]\nbreak;\ncase 41:\nthis.$={type: 'addActor', actor:$$[$0]}\nbreak;\ncase 42:\n this.$ = yy.LINETYPE.SOLID_OPEN; \nbreak;\ncase 43:\n this.$ = yy.LINETYPE.DOTTED_OPEN; \nbreak;\ncase 44:\n this.$ = yy.LINETYPE.SOLID; \nbreak;\ncase 45:\n this.$ = yy.LINETYPE.DOTTED; \nbreak;\ncase 46:\n this.$ = yy.LINETYPE.SOLID_CROSS; \nbreak;\ncase 47:\n this.$ = yy.LINETYPE.DOTTED_CROSS; \nbreak;\ncase 48:\nthis.$ = yy.parseMessage($$[$0].trim().substring(1)) \nbreak;\ncase 49:\n yy.parseDirective('%%{', 'open_directive'); \nbreak;\ncase 50:\n yy.parseDirective($$[$0], 'type_directive'); \nbreak;\ncase 51:\n $$[$0] = $$[$0].trim().replace(/'/g, '\"'); yy.parseDirective($$[$0], 'arg_directive'); \nbreak;\ncase 52:\n yy.parseDirective('}%%', 'close_directive', 'sequence'); \nbreak;\n}\n},\ntable: [{3:1,4:$V0,5:$V1,6:4,7:$V2,11:6,56:$V3},{1:[3]},{3:8,4:$V0,5:$V1,6:4,7:$V2,11:6,56:$V3},{3:9,4:$V0,5:$V1,6:4,7:$V2,11:6,56:$V3},{3:10,4:$V0,5:$V1,6:4,7:$V2,11:6,56:$V3},o([1,4,5,16,21,22,23,25,27,29,30,31,33,37,48,56],$V4,{8:11}),{12:12,57:[1,13]},{57:[2,49]},{1:[2,1]},{1:[2,2]},{1:[2,3]},{1:[2,4],4:$V5,5:$V6,6:30,9:14,10:16,11:6,16:$V7,17:31,20:19,21:$V8,22:$V9,23:$Va,24:23,25:$Vb,27:$Vc,29:$Vd,30:$Ve,31:$Vf,33:$Vg,37:$Vh,48:$Vi,56:$V3},{13:34,14:[1,35],59:$Vj},o([14,59],[2,50]),o($Vk,[2,6]),{6:30,10:37,11:6,16:$V7,17:31,20:19,21:$V8,22:$V9,23:$Va,24:23,25:$Vb,27:$Vc,29:$Vd,30:$Ve,31:$Vf,33:$Vg,37:$Vh,48:$Vi,56:$V3},o($Vk,[2,8]),o($Vk,[2,9]),{17:38,48:$Vi},{5:[1,39]},o($Vk,[2,15]),{17:40,48:$Vi},{17:41,48:$Vi},{5:[1,42]},{26:43,55:$Vl},{19:[1,45]},{19:[1,46]},{19:[1,47]},{19:[1,48]},{19:[1,49]},o($Vk,[2,25]),{45:50,49:[1,51],50:[1,52],51:[1,53],52:[1,54],53:[1,55],54:[1,56]},{38:57,39:[1,58],43:[1,59],44:[1,60]},o([5,18,42,49,50,51,52,53,54,55],[2,41]),{5:[1,61]},{15:62,58:[1,63]},{5:[2,52]},o($Vk,[2,7]),{5:[1,65],18:[1,64]},o($Vk,[2,14]),{5:[1,66]},{5:[1,67]},o($Vk,[2,18]),{5:[1,68]},{5:[2,48]},o($Vm,$V4,{8:69}),o($Vm,$V4,{8:70}),o($Vm,$V4,{8:71}),o($Vn,$V4,{32:72,8:73}),o($Vo,$V4,{34:74,8:75}),{17:78,46:[1,76],47:[1,77],48:$Vi},o($Vp,[2,42]),o($Vp,[2,43]),o($Vp,[2,44]),o($Vp,[2,45]),o($Vp,[2,46]),o($Vp,[2,47]),{17:79,48:$Vi},{17:81,40:80,48:$Vi},{48:[2,36]},{48:[2,37]},o($Vq,[2,10]),{13:82,59:$Vj},{59:[2,51]},{19:[1,83]},o($Vk,[2,13]),o($Vk,[2,16]),o($Vk,[2,17]),o($Vk,[2,19]),{4:$V5,5:$V6,6:30,9:14,10:16,11:6,16:$V7,17:31,20:19,21:$V8,22:$V9,23:$Va,24:23,25:$Vb,27:$Vc,28:[1,84],29:$Vd,30:$Ve,31:$Vf,33:$Vg,37:$Vh,48:$Vi,56:$V3},{4:$V5,5:$V6,6:30,9:14,10:16,11:6,16:$V7,17:31,20:19,21:$V8,22:$V9,23:$Va,24:23,25:$Vb,27:$Vc,28:[1,85],29:$Vd,30:$Ve,31:$Vf,33:$Vg,37:$Vh,48:$Vi,56:$V3},{4:$V5,5:$V6,6:30,9:14,10:16,11:6,16:$V7,17:31,20:19,21:$V8,22:$V9,23:$Va,24:23,25:$Vb,27:$Vc,28:[1,86],29:$Vd,30:$Ve,31:$Vf,33:$Vg,37:$Vh,48:$Vi,56:$V3},{28:[1,87]},{4:$V5,5:$V6,6:30,9:14,10:16,11:6,16:$V7,17:31,20:19,21:$V8,22:$V9,23:$Va,24:23,25:$Vb,27:$Vc,28:[2,28],29:$Vd,30:$Ve,31:$Vf,33:$Vg,36:[1,88],37:$Vh,48:$Vi,56:$V3},{28:[1,89]},{4:$V5,5:$V6,6:30,9:14,10:16,11:6,16:$V7,17:31,20:19,21:$V8,22:$V9,23:$Va,24:23,25:$Vb,27:$Vc,28:[2,26],29:$Vd,30:$Ve,31:$Vf,33:$Vg,35:[1,90],37:$Vh,48:$Vi,56:$V3},{17:91,48:$Vi},{17:92,48:$Vi},{26:93,55:$Vl},{26:94,55:$Vl},{26:95,55:$Vl},{42:[1,96],55:[2,35]},{5:[1,97]},{5:[1,98]},o($Vk,[2,20]),o($Vk,[2,21]),o($Vk,[2,22]),o($Vk,[2,23]),{19:[1,99]},o($Vk,[2,24]),{19:[1,100]},{26:101,55:$Vl},{26:102,55:$Vl},{5:[2,40]},{5:[2,30]},{5:[2,31]},{17:103,48:$Vi},o($Vq,[2,11]),o($Vk,[2,12]),o($Vn,$V4,{8:73,32:104}),o($Vo,$V4,{8:75,34:105}),{5:[2,38]},{5:[2,39]},{55:[2,34]},{28:[2,29]},{28:[2,27]}],\ndefaultActions: {7:[2,49],8:[2,1],9:[2,2],10:[2,3],36:[2,52],44:[2,48],59:[2,36],60:[2,37],63:[2,51],93:[2,40],94:[2,30],95:[2,31],101:[2,38],102:[2,39],103:[2,34],104:[2,29],105:[2,27]},\nparseError: function parseError (str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer.lex() || EOF;\n if (typeof token !== 'number') {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {\"case-insensitive\":true},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0: this.begin('OPEN_DIRECTIVE'); return 56; \nbreak;\ncase 1: this.begin('TYPE_DIRECTIVE'); return 57; \nbreak;\ncase 2: this.popState(); this.begin('ARG_DIRECTIVE'); return 14; \nbreak;\ncase 3: this.popState(); this.popState(); return 59; \nbreak;\ncase 4:return 58;\nbreak;\ncase 5:return 5;\nbreak;\ncase 6:/* skip all whitespace */\nbreak;\ncase 7:/* skip same-line whitespace */\nbreak;\ncase 8:/* skip comments */\nbreak;\ncase 9:/* skip comments */\nbreak;\ncase 10:/* skip comments */\nbreak;\ncase 11: this.begin('ID'); return 16; \nbreak;\ncase 12: yy_.yytext = yy_.yytext.trim(); this.begin('ALIAS'); return 48; \nbreak;\ncase 13: this.popState(); this.popState(); this.begin('LINE'); return 18; \nbreak;\ncase 14: this.popState(); this.popState(); return 5; \nbreak;\ncase 15: this.begin('LINE'); return 27; \nbreak;\ncase 16: this.begin('LINE'); return 29; \nbreak;\ncase 17: this.begin('LINE'); return 30; \nbreak;\ncase 18: this.begin('LINE'); return 31; \nbreak;\ncase 19: this.begin('LINE'); return 36; \nbreak;\ncase 20: this.begin('LINE'); return 33; \nbreak;\ncase 21: this.begin('LINE'); return 35; \nbreak;\ncase 22: this.popState(); return 19; \nbreak;\ncase 23:return 28;\nbreak;\ncase 24:return 43;\nbreak;\ncase 25:return 44;\nbreak;\ncase 26:return 39;\nbreak;\ncase 27:return 37;\nbreak;\ncase 28: this.begin('ID'); return 22; \nbreak;\ncase 29: this.begin('ID'); return 23; \nbreak;\ncase 30:return 25;\nbreak;\ncase 31:return 7;\nbreak;\ncase 32:return 21;\nbreak;\ncase 33:return 42;\nbreak;\ncase 34:return 5;\nbreak;\ncase 35: yy_.yytext = yy_.yytext.trim(); return 48; \nbreak;\ncase 36:return 51;\nbreak;\ncase 37:return 52;\nbreak;\ncase 38:return 49;\nbreak;\ncase 39:return 50;\nbreak;\ncase 40:return 53;\nbreak;\ncase 41:return 54;\nbreak;\ncase 42:return 55;\nbreak;\ncase 43:return 46;\nbreak;\ncase 44:return 47;\nbreak;\ncase 45:return 5;\nbreak;\ncase 46:return 'INVALID';\nbreak;\n}\n},\nrules: [/^(?:%%\\{)/i,/^(?:((?:(?!\\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\\}%%)/i,/^(?:((?:(?!\\}%%).|\\n)*))/i,/^(?:[\\n]+)/i,/^(?:\\s+)/i,/^(?:((?!\\n)\\s)+)/i,/^(?:#[^\\n]*)/i,/^(?:%(?!\\{)[^\\n]*)/i,/^(?:[^\\}]%%[^\\n]*)/i,/^(?:participant\\b)/i,/^(?:[^\\->:\\n,;]+?(?=((?!\\n)\\s)+as(?!\\n)\\s|[#\\n;]|$))/i,/^(?:as\\b)/i,/^(?:(?:))/i,/^(?:loop\\b)/i,/^(?:rect\\b)/i,/^(?:opt\\b)/i,/^(?:alt\\b)/i,/^(?:else\\b)/i,/^(?:par\\b)/i,/^(?:and\\b)/i,/^(?:(?:[:]?(?:no)?wrap)?[^#\\n;]*)/i,/^(?:end\\b)/i,/^(?:left of\\b)/i,/^(?:right of\\b)/i,/^(?:over\\b)/i,/^(?:note\\b)/i,/^(?:activate\\b)/i,/^(?:deactivate\\b)/i,/^(?:title\\b)/i,/^(?:sequenceDiagram\\b)/i,/^(?:autonumber\\b)/i,/^(?:,)/i,/^(?:;)/i,/^(?:[^\\+\\->:\\n,;]+)/i,/^(?:->>)/i,/^(?:-->>)/i,/^(?:->)/i,/^(?:-->)/i,/^(?:-[x])/i,/^(?:--[x])/i,/^(?::(?:(?:no)?wrap)?[^#\\n;]+)/i,/^(?:\\+)/i,/^(?:-)/i,/^(?:$)/i,/^(?:.)/i],\nconditions: {\"LINE\":{\"rules\":[7,8,22],\"inclusive\":false},\"ARG_DIRECTIVE\":{\"rules\":[3,4,8],\"inclusive\":false},\"TYPE_DIRECTIVE\":{\"rules\":[2,3,8],\"inclusive\":false},\"OPEN_DIRECTIVE\":{\"rules\":[1,8],\"inclusive\":false},\"ALIAS\":{\"rules\":[7,8,13,14],\"inclusive\":false},\"ID\":{\"rules\":[7,8,12],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,5,6,8,9,10,11,15,16,17,18,19,20,21,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain (args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}","import mermaidAPI from '../../mermaidAPI';\nimport configApi from '../../config';\nimport common from '../common/common';\nimport { logger } from '../../logger';\n\nlet prevActor = undefined;\nlet actors = {};\nlet messages = [];\nconst notes = [];\nlet title = '';\nlet titleWrapped = false;\nlet sequenceNumbersEnabled = false;\nlet wrapEnabled = false;\n\nexport const parseDirective = function(statement, context, type) {\n mermaidAPI.parseDirective(statement, context, type);\n};\n\nexport const addActor = function(id, name, description) {\n // Don't allow description nulling\n const old = actors[id];\n if (old && name === old.name && description == null) return;\n\n // Don't allow null descriptions, either\n if (description == null || description.text == null) {\n description = { text: name, wrap: null };\n }\n\n actors[id] = {\n name: name,\n description: description.text,\n wrap: (description.wrap === undefined && autoWrap()) || !!description.wrap,\n prevActor: prevActor\n };\n if (prevActor && actors[prevActor]) {\n actors[prevActor].nextActor = id;\n }\n\n prevActor = id;\n};\n\nconst activationCount = part => {\n let i;\n let count = 0;\n for (i = 0; i < messages.length; i++) {\n // console.warn(i, messages[i]);\n if (messages[i].type === LINETYPE.ACTIVE_START) {\n if (messages[i].from.actor === part) {\n count++;\n }\n }\n if (messages[i].type === LINETYPE.ACTIVE_END) {\n if (messages[i].from.actor === part) {\n count--;\n }\n }\n }\n return count;\n};\n\nexport const addMessage = function(idFrom, idTo, message, answer) {\n messages.push({\n from: idFrom,\n to: idTo,\n message: message.text,\n wrap: (message.wrap === undefined && autoWrap()) || !!message.wrap,\n answer: answer\n });\n};\n\nexport const addSignal = function(\n idFrom,\n idTo,\n message = { text: undefined, wrap: undefined },\n messageType\n) {\n if (messageType === LINETYPE.ACTIVE_END) {\n const cnt = activationCount(idFrom.actor);\n if (cnt < 1) {\n // Bail out as there is an activation signal from an inactive participant\n let error = new Error('Trying to inactivate an inactive participant (' + idFrom.actor + ')');\n error.hash = {\n text: '->>-',\n token: '->>-',\n line: '1',\n loc: { first_line: 1, last_line: 1, first_column: 1, last_column: 1 },\n expected: [\"'ACTIVE_PARTICIPANT'\"]\n };\n throw error;\n }\n }\n messages.push({\n from: idFrom,\n to: idTo,\n message: message.text,\n wrap: (message.wrap === undefined && autoWrap()) || !!message.wrap,\n type: messageType\n });\n return true;\n};\n\nexport const getMessages = function() {\n return messages;\n};\n\nexport const getActors = function() {\n return actors;\n};\nexport const getActor = function(id) {\n return actors[id];\n};\nexport const getActorKeys = function() {\n return Object.keys(actors);\n};\nexport const getTitle = function() {\n return title;\n};\nexport const getTitleWrapped = function() {\n return titleWrapped;\n};\nexport const enableSequenceNumbers = function() {\n sequenceNumbersEnabled = true;\n};\nexport const showSequenceNumbers = () => sequenceNumbersEnabled;\n\nexport const setWrap = function(wrapSetting) {\n wrapEnabled = wrapSetting;\n};\n\nexport const autoWrap = () => wrapEnabled;\n\nexport const clear = function() {\n actors = {};\n messages = [];\n};\n\nexport const parseMessage = function(str) {\n const _str = str.trim();\n const message = {\n text: _str.replace(/^[:]?(?:no)?wrap:/, '').trim(),\n wrap:\n _str.match(/^[:]?(?:no)?wrap:/) === null\n ? common.hasBreaks(_str) || autoWrap()\n : _str.match(/^[:]?wrap:/) !== null\n ? true\n : _str.match(/^[:]?nowrap:/) !== null\n ? false\n : autoWrap()\n };\n logger.debug('parseMessage:', message);\n return message;\n};\n\nexport const LINETYPE = {\n SOLID: 0,\n DOTTED: 1,\n NOTE: 2,\n SOLID_CROSS: 3,\n DOTTED_CROSS: 4,\n SOLID_OPEN: 5,\n DOTTED_OPEN: 6,\n LOOP_START: 10,\n LOOP_END: 11,\n ALT_START: 12,\n ALT_ELSE: 13,\n ALT_END: 14,\n OPT_START: 15,\n OPT_END: 16,\n ACTIVE_START: 17,\n ACTIVE_END: 18,\n PAR_START: 19,\n PAR_AND: 20,\n PAR_END: 21,\n RECT_START: 22,\n RECT_END: 23\n};\n\nexport const ARROWTYPE = {\n FILLED: 0,\n OPEN: 1\n};\n\nexport const PLACEMENT = {\n LEFTOF: 0,\n RIGHTOF: 1,\n OVER: 2\n};\n\nexport const addNote = function(actor, placement, message) {\n const note = {\n actor: actor,\n placement: placement,\n message: message.text,\n wrap: (message.wrap === undefined && autoWrap()) || !!message.wrap\n };\n\n // Coerce actor into a [to, from, ...] array\n const actors = [].concat(actor, actor);\n\n notes.push(note);\n messages.push({\n from: actors[0],\n to: actors[1],\n message: message.text,\n wrap: (message.wrap === undefined && autoWrap()) || !!message.wrap,\n type: LINETYPE.NOTE,\n placement: placement\n });\n};\n\nexport const setTitle = function(titleWrap) {\n title = titleWrap.text;\n titleWrapped = (titleWrap.wrap === undefined && autoWrap()) || !!titleWrap.wrap;\n};\n\nexport const apply = function(param) {\n if (param instanceof Array) {\n param.forEach(function(item) {\n apply(item);\n });\n } else {\n switch (param.type) {\n case 'addActor':\n addActor(param.actor, param.actor, param.description);\n break;\n case 'activeStart':\n addSignal(param.actor, undefined, undefined, param.signalType);\n break;\n case 'activeEnd':\n addSignal(param.actor, undefined, undefined, param.signalType);\n break;\n case 'addNote':\n addNote(param.actor, param.placement, param.text);\n break;\n case 'addMessage':\n addSignal(param.from, param.to, param.msg, param.signalType);\n break;\n case 'loopStart':\n addSignal(undefined, undefined, param.loopText, param.signalType);\n break;\n case 'loopEnd':\n addSignal(undefined, undefined, undefined, param.signalType);\n break;\n case 'rectStart':\n addSignal(undefined, undefined, param.color, param.signalType);\n break;\n case 'rectEnd':\n addSignal(undefined, undefined, undefined, param.signalType);\n break;\n case 'optStart':\n addSignal(undefined, undefined, param.optText, param.signalType);\n break;\n case 'optEnd':\n addSignal(undefined, undefined, undefined, param.signalType);\n break;\n case 'altStart':\n addSignal(undefined, undefined, param.altText, param.signalType);\n break;\n case 'else':\n addSignal(undefined, undefined, param.altText, param.signalType);\n break;\n case 'altEnd':\n addSignal(undefined, undefined, undefined, param.signalType);\n break;\n case 'setTitle':\n setTitle(param.text);\n break;\n case 'parStart':\n addSignal(undefined, undefined, param.parText, param.signalType);\n break;\n case 'and':\n addSignal(undefined, undefined, param.parText, param.signalType);\n break;\n case 'parEnd':\n addSignal(undefined, undefined, undefined, param.signalType);\n break;\n }\n }\n};\n\nexport default {\n addActor,\n addMessage,\n addSignal,\n autoWrap,\n setWrap,\n enableSequenceNumbers,\n showSequenceNumbers,\n getMessages,\n getActors,\n getActor,\n getActorKeys,\n getTitle,\n parseDirective,\n getConfig: () => configApi.getConfig().sequence,\n getTitleWrapped,\n clear,\n parseMessage,\n LINETYPE,\n ARROWTYPE,\n PLACEMENT,\n addNote,\n setTitle,\n apply\n};\n","import { select, selectAll } from 'd3';\nimport svgDraw, { drawText } from './svgDraw';\nimport { logger } from '../../logger';\nimport { parser } from './parser/sequenceDiagram';\nimport common from '../common/common';\nimport sequenceDb from './sequenceDb';\nimport utils, { assignWithDepth } from '../../utils';\n\nparser.yy = sequenceDb;\n\nconst conf = {};\n\nexport const bounds = {\n data: {\n startx: undefined,\n stopx: undefined,\n starty: undefined,\n stopy: undefined\n },\n verticalPos: 0,\n sequenceItems: [],\n activations: [],\n models: {\n getHeight: function() {\n return (\n Math.max.apply(\n null,\n this.actors.length === 0 ? [0] : this.actors.map(actor => actor.height || 0)\n ) +\n (this.loops.length === 0\n ? 0\n : this.loops.map(it => it.height || 0).reduce((acc, h) => acc + h)) +\n (this.messages.length === 0\n ? 0\n : this.messages.map(it => it.height || 0).reduce((acc, h) => acc + h)) +\n (this.notes.length === 0\n ? 0\n : this.notes.map(it => it.height || 0).reduce((acc, h) => acc + h))\n );\n },\n clear: function() {\n this.actors = [];\n this.loops = [];\n this.messages = [];\n this.notes = [];\n },\n addActor: function(actorModel) {\n this.actors.push(actorModel);\n },\n addLoop: function(loopModel) {\n this.loops.push(loopModel);\n },\n addMessage: function(msgModel) {\n this.messages.push(msgModel);\n },\n addNote: function(noteModel) {\n this.notes.push(noteModel);\n },\n lastActor: function() {\n return this.actors[this.actors.length - 1];\n },\n lastLoop: function() {\n return this.loops[this.loops.length - 1];\n },\n lastMessage: function() {\n return this.messages[this.messages.length - 1];\n },\n lastNote: function() {\n return this.notes[this.notes.length - 1];\n },\n actors: [],\n loops: [],\n messages: [],\n notes: []\n },\n init: function() {\n this.sequenceItems = [];\n this.activations = [];\n this.models.clear();\n this.data = {\n startx: undefined,\n stopx: undefined,\n starty: undefined,\n stopy: undefined\n };\n this.verticalPos = 0;\n setConf(parser.yy.getConfig());\n },\n updateVal: function(obj, key, val, fun) {\n if (typeof obj[key] === 'undefined') {\n obj[key] = val;\n } else {\n obj[key] = fun(val, obj[key]);\n }\n },\n updateBounds: function(startx, starty, stopx, stopy) {\n const _self = this;\n let cnt = 0;\n function updateFn(type) {\n return function updateItemBounds(item) {\n cnt++;\n // The loop sequenceItems is a stack so the biggest margins in the beginning of the sequenceItems\n const n = _self.sequenceItems.length - cnt + 1;\n\n _self.updateVal(item, 'starty', starty - n * conf.boxMargin, Math.min);\n _self.updateVal(item, 'stopy', stopy + n * conf.boxMargin, Math.max);\n\n _self.updateVal(bounds.data, 'startx', startx - n * conf.boxMargin, Math.min);\n _self.updateVal(bounds.data, 'stopx', stopx + n * conf.boxMargin, Math.max);\n\n if (!(type === 'activation')) {\n _self.updateVal(item, 'startx', startx - n * conf.boxMargin, Math.min);\n _self.updateVal(item, 'stopx', stopx + n * conf.boxMargin, Math.max);\n\n _self.updateVal(bounds.data, 'starty', starty - n * conf.boxMargin, Math.min);\n _self.updateVal(bounds.data, 'stopy', stopy + n * conf.boxMargin, Math.max);\n }\n };\n }\n\n this.sequenceItems.forEach(updateFn());\n this.activations.forEach(updateFn('activation'));\n },\n insert: function(startx, starty, stopx, stopy) {\n const _startx = Math.min(startx, stopx);\n const _stopx = Math.max(startx, stopx);\n const _starty = Math.min(starty, stopy);\n const _stopy = Math.max(starty, stopy);\n\n this.updateVal(bounds.data, 'startx', _startx, Math.min);\n this.updateVal(bounds.data, 'starty', _starty, Math.min);\n this.updateVal(bounds.data, 'stopx', _stopx, Math.max);\n this.updateVal(bounds.data, 'stopy', _stopy, Math.max);\n\n this.updateBounds(_startx, _starty, _stopx, _stopy);\n },\n newActivation: function(message, diagram, actors) {\n const actorRect = actors[message.from.actor];\n const stackedSize = actorActivations(message.from.actor).length || 0;\n const x = actorRect.x + actorRect.width / 2 + ((stackedSize - 1) * conf.activationWidth) / 2;\n this.activations.push({\n startx: x,\n starty: this.verticalPos + 2,\n stopx: x + conf.activationWidth,\n stopy: undefined,\n actor: message.from.actor,\n anchored: svgDraw.anchorElement(diagram)\n });\n },\n endActivation: function(message) {\n // find most recent activation for given actor\n const lastActorActivationIdx = this.activations\n .map(function(activation) {\n return activation.actor;\n })\n .lastIndexOf(message.from.actor);\n return this.activations.splice(lastActorActivationIdx, 1)[0];\n },\n createLoop: function(title = { message: undefined, wrap: false, width: undefined }, fill) {\n return {\n startx: undefined,\n starty: this.verticalPos,\n stopx: undefined,\n stopy: undefined,\n title: title.message,\n wrap: title.wrap,\n width: title.width,\n height: 0,\n fill: fill\n };\n },\n newLoop: function(title = { message: undefined, wrap: false, width: undefined }, fill) {\n this.sequenceItems.push(this.createLoop(title, fill));\n },\n endLoop: function() {\n return this.sequenceItems.pop();\n },\n addSectionToLoop: function(message) {\n const loop = this.sequenceItems.pop();\n loop.sections = loop.sections || [];\n loop.sectionTitles = loop.sectionTitles || [];\n loop.sections.push({ y: bounds.getVerticalPos(), height: 0 });\n loop.sectionTitles.push(message);\n this.sequenceItems.push(loop);\n },\n bumpVerticalPos: function(bump) {\n this.verticalPos = this.verticalPos + bump;\n this.data.stopy = this.verticalPos;\n },\n getVerticalPos: function() {\n return this.verticalPos;\n },\n getBounds: function() {\n return { bounds: this.data, models: this.models };\n }\n};\n\n/**\n * Draws an note in the diagram with the attached line\n * @param elem - The diagram to draw to.\n * @param noteModel:{x: number, y: number, message: string, width: number} - startx: x axis start position, verticalPos: y axis position, messsage: the message to be shown, width: Set this with a custom width to override the default configured width.\n */\nconst drawNote = function(elem, noteModel) {\n bounds.bumpVerticalPos(conf.boxMargin);\n noteModel.height = conf.boxMargin;\n noteModel.starty = bounds.getVerticalPos();\n const rect = svgDraw.getNoteRect();\n rect.x = noteModel.startx;\n rect.y = noteModel.starty;\n rect.width = noteModel.width || conf.width;\n rect.class = 'note';\n\n let g = elem.append('g');\n const rectElem = svgDraw.drawRect(g, rect);\n const textObj = svgDraw.getTextObj();\n textObj.x = noteModel.startx;\n textObj.y = noteModel.starty;\n textObj.width = rect.width;\n textObj.dy = '1em';\n textObj.text = noteModel.message;\n textObj.class = 'noteText';\n textObj.fontFamily = conf.noteFontFamily;\n textObj.fontSize = conf.noteFontSize;\n textObj.fontWeight = conf.noteFontWeight;\n textObj.anchor = conf.noteAlign;\n textObj.textMargin = conf.noteMargin;\n textObj.valign = conf.noteAlign;\n textObj.wrap = true;\n\n let textElem = drawText(g, textObj);\n\n let textHeight = Math.round(\n textElem.map(te => (te._groups || te)[0][0].getBBox().height).reduce((acc, curr) => acc + curr)\n );\n\n rectElem.attr('height', textHeight + 2 * conf.noteMargin);\n noteModel.height += textHeight + 2 * conf.noteMargin;\n bounds.bumpVerticalPos(textHeight + 2 * conf.noteMargin);\n noteModel.stopy = noteModel.starty + textHeight + 2 * conf.noteMargin;\n noteModel.stopx = noteModel.startx + rect.width;\n bounds.insert(noteModel.startx, noteModel.starty, noteModel.stopx, noteModel.stopy);\n bounds.models.addNote(noteModel);\n};\n\n/**\n * Draws a message\n * @param g - the parent of the message element\n * @param msgModel - the model containing fields describing a message\n */\nconst drawMessage = function(g, msgModel) {\n bounds.bumpVerticalPos(10);\n const { startx, stopx, starty, message, type, sequenceIndex, wrap } = msgModel;\n const lines = common.splitBreaks(message).length;\n let textDims = utils.calculateTextDimensions(message, conf.messageFont());\n const lineHeight = textDims.height / lines;\n msgModel.height += lineHeight;\n\n bounds.bumpVerticalPos(lineHeight);\n const textObj = svgDraw.getTextObj();\n textObj.x = startx;\n textObj.y = starty + 10;\n textObj.width = stopx - startx;\n textObj.class = 'messageText';\n textObj.dy = '1em';\n textObj.text = message;\n textObj.fontFamily = conf.messageFontFamily;\n textObj.fontSize = conf.messageFontSize;\n textObj.fontWeight = conf.messageFontWeight;\n textObj.anchor = conf.messageAlign;\n textObj.valign = conf.messageAlign;\n textObj.textMargin = conf.wrapPadding;\n textObj.tspan = false;\n textObj.wrap = wrap;\n\n drawText(g, textObj);\n\n let totalOffset = textDims.height - 10;\n\n let textWidth = textDims.width;\n\n let line, lineStarty;\n if (startx === stopx) {\n lineStarty = bounds.getVerticalPos() + totalOffset;\n if (conf.rightAngles) {\n line = g\n .append('path')\n .attr(\n 'd',\n `M ${startx},${lineStarty} H ${startx +\n Math.max(conf.width / 2, textWidth / 2)} V ${lineStarty + 25} H ${startx}`\n );\n } else {\n totalOffset += conf.boxMargin;\n\n lineStarty = bounds.getVerticalPos() + totalOffset;\n line = g\n .append('path')\n .attr(\n 'd',\n 'M ' +\n startx +\n ',' +\n lineStarty +\n ' C ' +\n (startx + 60) +\n ',' +\n (lineStarty - 10) +\n ' ' +\n (startx + 60) +\n ',' +\n (lineStarty + 30) +\n ' ' +\n startx +\n ',' +\n (lineStarty + 20)\n );\n }\n\n totalOffset += 30;\n const dx = Math.max(textWidth / 2, conf.width / 2);\n bounds.insert(\n startx - dx,\n bounds.getVerticalPos() - 10 + totalOffset,\n stopx + dx,\n bounds.getVerticalPos() + 30 + totalOffset\n );\n } else {\n totalOffset += conf.boxMargin;\n lineStarty = bounds.getVerticalPos() + totalOffset;\n line = g.append('line');\n line.attr('x1', startx);\n line.attr('y1', lineStarty);\n line.attr('x2', stopx);\n line.attr('y2', lineStarty);\n bounds.insert(startx, lineStarty - 10, stopx, lineStarty);\n }\n // Make an SVG Container\n // Draw the line\n if (\n type === parser.yy.LINETYPE.DOTTED ||\n type === parser.yy.LINETYPE.DOTTED_CROSS ||\n type === parser.yy.LINETYPE.DOTTED_OPEN\n ) {\n line.style('stroke-dasharray', '3, 3');\n line.attr('class', 'messageLine1');\n } else {\n line.attr('class', 'messageLine0');\n }\n\n let url = '';\n if (conf.arrowMarkerAbsolute) {\n url =\n window.location.protocol +\n '//' +\n window.location.host +\n window.location.pathname +\n window.location.search;\n url = url.replace(/\\(/g, '\\\\(');\n url = url.replace(/\\)/g, '\\\\)');\n }\n\n line.attr('stroke-width', 2);\n line.attr('stroke', 'none'); // handled by theme/css anyway\n line.style('fill', 'none'); // remove any fill colour\n if (type === parser.yy.LINETYPE.SOLID || type === parser.yy.LINETYPE.DOTTED) {\n line.attr('marker-end', 'url(' + url + '#arrowhead)');\n }\n\n if (type === parser.yy.LINETYPE.SOLID_CROSS || type === parser.yy.LINETYPE.DOTTED_CROSS) {\n line.attr('marker-end', 'url(' + url + '#crosshead)');\n }\n\n // add node number\n if (sequenceDb.showSequenceNumbers() || conf.showSequenceNumbers) {\n line.attr('marker-start', 'url(' + url + '#sequencenumber)');\n g.append('text')\n .attr('x', startx)\n .attr('y', lineStarty + 4)\n .attr('font-family', 'sans-serif')\n .attr('font-size', '12px')\n .attr('text-anchor', 'middle')\n .attr('textLength', '16px')\n .attr('class', 'sequenceNumber')\n .text(sequenceIndex);\n }\n bounds.bumpVerticalPos(totalOffset);\n msgModel.height += totalOffset;\n msgModel.stopy = msgModel.starty + msgModel.height;\n bounds.insert(msgModel.fromBounds, msgModel.starty, msgModel.toBounds, msgModel.stopy);\n};\n\nexport const drawActors = function(diagram, actors, actorKeys, verticalPos) {\n // Draw the actors\n let prevWidth = 0;\n let prevMargin = 0;\n\n for (let i = 0; i < actorKeys.length; i++) {\n const actor = actors[actorKeys[i]];\n\n // Add some rendering data to the object\n actor.width = actor.width || conf.width;\n actor.height = Math.max(actor.height || conf.height, conf.height);\n actor.margin = actor.margin || conf.actorMargin;\n\n actor.x = prevWidth + prevMargin;\n actor.y = verticalPos;\n\n // Draw the box with the attached line\n svgDraw.drawActor(diagram, actor, conf);\n bounds.insert(actor.x, verticalPos, actor.x + actor.width, actor.height);\n\n prevWidth += actor.width;\n prevMargin += actor.margin;\n bounds.models.addActor(actor);\n }\n\n // Add a margin between the actor boxes and the first arrow\n bounds.bumpVerticalPos(conf.height);\n};\n\nexport const setConf = function(cnf) {\n assignWithDepth(conf, cnf);\n\n if (cnf.fontFamily) {\n conf.actorFontFamily = conf.noteFontFamily = conf.messageFontFamily = cnf.fontFamily;\n }\n if (cnf.fontSize) {\n conf.actorFontSize = conf.noteFontSize = conf.messageFontSize = cnf.fontSize;\n }\n if (cnf.fontWeight) {\n conf.actorFontWeight = conf.noteFontWeight = conf.messageFontWeight = cnf.fontWeight;\n }\n};\n\nconst actorActivations = function(actor) {\n return bounds.activations.filter(function(activation) {\n return activation.actor === actor;\n });\n};\n\nconst activationBounds = function(actor, actors) {\n // handle multiple stacked activations for same actor\n const actorObj = actors[actor];\n const activations = actorActivations(actor);\n\n const left = activations.reduce(function(acc, activation) {\n return Math.min(acc, activation.startx);\n }, actorObj.x + actorObj.width / 2);\n const right = activations.reduce(function(acc, activation) {\n return Math.max(acc, activation.stopx);\n }, actorObj.x + actorObj.width / 2);\n return [left, right];\n};\n\nfunction adjustLoopHeightForWrap(loopWidths, msg, preMargin, postMargin, addLoopFn) {\n bounds.bumpVerticalPos(preMargin);\n let heightAdjust = postMargin;\n if (msg.id && msg.message && loopWidths[msg.id]) {\n let loopWidth = loopWidths[msg.id].width;\n let textConf = conf.messageFont();\n msg.message = utils.wrapLabel(`[${msg.message}]`, loopWidth - 2 * conf.wrapPadding, textConf);\n msg.width = loopWidth;\n msg.wrap = true;\n\n // const lines = common.splitBreaks(msg.message).length;\n const textDims = utils.calculateTextDimensions(msg.message, textConf);\n const totalOffset = Math.max(textDims.height, conf.labelBoxHeight);\n heightAdjust = postMargin + totalOffset;\n logger.debug(`${totalOffset} - ${msg.message}`);\n }\n addLoopFn(msg);\n bounds.bumpVerticalPos(heightAdjust);\n}\n\n/**\n * Draws a sequenceDiagram in the tag with id: id based on the graph definition in text.\n * @param text\n * @param id\n */\nexport const draw = function(text, id) {\n parser.yy.clear();\n parser.yy.setWrap(conf.wrap);\n parser.parse(text + '\\n');\n bounds.init();\n logger.debug(`C:${JSON.stringify(conf, null, 2)}`);\n\n const diagram = select(`[id=\"${id}\"]`);\n\n // Fetch data from the parsing\n const actors = parser.yy.getActors();\n const actorKeys = parser.yy.getActorKeys();\n const messages = parser.yy.getMessages();\n const title = parser.yy.getTitle();\n\n const maxMessageWidthPerActor = getMaxMessageWidthPerActor(actors, messages);\n conf.height = calculateActorMargins(actors, maxMessageWidthPerActor);\n\n drawActors(diagram, actors, actorKeys, 0);\n const loopWidths = calculateLoopBounds(messages, actors, maxMessageWidthPerActor);\n\n // The arrow head definition is attached to the svg once\n svgDraw.insertArrowHead(diagram);\n svgDraw.insertArrowCrossHead(diagram);\n svgDraw.insertSequenceNumber(diagram);\n\n function activeEnd(msg, verticalPos) {\n const activationData = bounds.endActivation(msg);\n if (activationData.starty + 18 > verticalPos) {\n activationData.starty = verticalPos - 6;\n verticalPos += 12;\n }\n svgDraw.drawActivation(\n diagram,\n activationData,\n verticalPos,\n conf,\n actorActivations(msg.from.actor).length\n );\n\n bounds.insert(activationData.startx, verticalPos - 10, activationData.stopx, verticalPos);\n }\n\n // Draw the messages/signals\n let sequenceIndex = 1;\n messages.forEach(function(msg) {\n let loopModel, noteModel, msgModel;\n\n switch (msg.type) {\n case parser.yy.LINETYPE.NOTE:\n noteModel = msg.noteModel;\n drawNote(diagram, noteModel);\n break;\n case parser.yy.LINETYPE.ACTIVE_START:\n bounds.newActivation(msg, diagram, actors);\n break;\n case parser.yy.LINETYPE.ACTIVE_END:\n activeEnd(msg, bounds.getVerticalPos());\n break;\n case parser.yy.LINETYPE.LOOP_START:\n adjustLoopHeightForWrap(\n loopWidths,\n msg,\n conf.boxMargin,\n conf.boxMargin + conf.boxTextMargin,\n message => bounds.newLoop(message)\n );\n break;\n case parser.yy.LINETYPE.LOOP_END:\n loopModel = bounds.endLoop();\n svgDraw.drawLoop(diagram, loopModel, 'loop', conf);\n bounds.bumpVerticalPos(loopModel.stopy - bounds.getVerticalPos());\n bounds.models.addLoop(loopModel);\n break;\n case parser.yy.LINETYPE.RECT_START:\n adjustLoopHeightForWrap(loopWidths, msg, conf.boxMargin, conf.boxMargin, message =>\n bounds.newLoop(undefined, message.message)\n );\n break;\n case parser.yy.LINETYPE.RECT_END:\n loopModel = bounds.endLoop();\n svgDraw.drawBackgroundRect(diagram, loopModel);\n bounds.models.addLoop(loopModel);\n bounds.bumpVerticalPos(loopModel.stopy - bounds.getVerticalPos());\n break;\n case parser.yy.LINETYPE.OPT_START:\n adjustLoopHeightForWrap(\n loopWidths,\n msg,\n conf.boxMargin,\n conf.boxMargin + conf.boxTextMargin,\n message => bounds.newLoop(message)\n );\n break;\n case parser.yy.LINETYPE.OPT_END:\n loopModel = bounds.endLoop();\n svgDraw.drawLoop(diagram, loopModel, 'opt', conf);\n bounds.bumpVerticalPos(loopModel.stopy - bounds.getVerticalPos());\n bounds.models.addLoop(loopModel);\n break;\n case parser.yy.LINETYPE.ALT_START:\n adjustLoopHeightForWrap(\n loopWidths,\n msg,\n conf.boxMargin,\n conf.boxMargin + conf.boxTextMargin,\n message => bounds.newLoop(message)\n );\n break;\n case parser.yy.LINETYPE.ALT_ELSE:\n adjustLoopHeightForWrap(\n loopWidths,\n msg,\n conf.boxMargin + conf.boxTextMargin,\n conf.boxMargin,\n message => bounds.addSectionToLoop(message)\n );\n break;\n case parser.yy.LINETYPE.ALT_END:\n loopModel = bounds.endLoop();\n svgDraw.drawLoop(diagram, loopModel, 'alt', conf);\n bounds.bumpVerticalPos(loopModel.stopy - bounds.getVerticalPos());\n bounds.models.addLoop(loopModel);\n break;\n case parser.yy.LINETYPE.PAR_START:\n adjustLoopHeightForWrap(\n loopWidths,\n msg,\n conf.boxMargin,\n conf.boxMargin + conf.boxTextMargin,\n message => bounds.newLoop(message)\n );\n break;\n case parser.yy.LINETYPE.PAR_AND:\n adjustLoopHeightForWrap(\n loopWidths,\n msg,\n conf.boxMargin + conf.boxTextMargin,\n conf.boxMargin,\n message => bounds.addSectionToLoop(message)\n );\n break;\n case parser.yy.LINETYPE.PAR_END:\n loopModel = bounds.endLoop();\n svgDraw.drawLoop(diagram, loopModel, 'par', conf);\n bounds.bumpVerticalPos(loopModel.stopy - bounds.getVerticalPos());\n bounds.models.addLoop(loopModel);\n break;\n default:\n try {\n // lastMsg = msg\n msgModel = msg.msgModel;\n msgModel.starty = bounds.getVerticalPos();\n msgModel.sequenceIndex = sequenceIndex;\n drawMessage(diagram, msgModel);\n bounds.models.addMessage(msgModel);\n } catch (e) {\n logger.error('error while drawing message', e);\n }\n }\n // Increment sequence counter if msg.type is a line (and not another event like activation or note, etc)\n if (\n [\n parser.yy.LINETYPE.SOLID_OPEN,\n parser.yy.LINETYPE.DOTTED_OPEN,\n parser.yy.LINETYPE.SOLID,\n parser.yy.LINETYPE.DOTTED,\n parser.yy.LINETYPE.SOLID_CROSS,\n parser.yy.LINETYPE.DOTTED_CROSS\n ].includes(msg.type)\n ) {\n sequenceIndex++;\n }\n });\n\n if (conf.mirrorActors) {\n // Draw actors below diagram\n bounds.bumpVerticalPos(conf.boxMargin * 2);\n drawActors(diagram, actors, actorKeys, bounds.getVerticalPos());\n }\n\n const { bounds: box } = bounds.getBounds();\n\n // Adjust line height of actor lines now that the height of the diagram is known\n logger.debug('For line height fix Querying: #' + id + ' .actor-line');\n const actorLines = selectAll('#' + id + ' .actor-line');\n actorLines.attr('y2', box.stopy);\n\n let height = box.stopy - box.starty + 2 * conf.diagramMarginY;\n if (conf.mirrorActors) {\n height = height - conf.boxMargin + conf.bottomMarginAdj;\n }\n\n const width = box.stopx - box.startx + 2 * conf.diagramMarginX;\n\n if (title) {\n diagram\n .append('text')\n .text(title)\n .attr('x', (box.stopx - box.startx) / 2 - 2 * conf.diagramMarginX)\n .attr('y', -25);\n }\n\n if (conf.useMaxWidth) {\n diagram.attr('height', '100%');\n diagram.attr('width', '100%');\n diagram.attr('style', 'max-width:' + width + 'px;');\n // diagram.attr('style', 'max-width:100%;');\n } else {\n diagram.attr('height', height);\n diagram.attr('width', width);\n }\n const extraVertForTitle = title ? 40 : 0;\n diagram.attr(\n 'viewBox',\n box.startx -\n conf.diagramMarginX +\n ' -' +\n (conf.diagramMarginY + extraVertForTitle) +\n ' ' +\n width +\n ' ' +\n (height + extraVertForTitle)\n );\n logger.debug(`models:`, bounds.models);\n};\n\n/**\n * Retrieves the max message width of each actor, supports signals (messages, loops)\n * and notes.\n *\n * It will enumerate each given message, and will determine its text width, in relation\n * to the actor it originates from, and destined to.\n *\n * @param actors - The actors map\n * @param messages - A list of message objects to iterate\n */\nconst getMaxMessageWidthPerActor = function(actors, messages) {\n const maxMessageWidthPerActor = {};\n\n messages.forEach(function(msg) {\n if (actors[msg.to] && actors[msg.from]) {\n const actor = actors[msg.to];\n\n // If this is the first actor, and the message is left of it, no need to calculate the margin\n if (msg.placement === parser.yy.PLACEMENT.LEFTOF && !actor.prevActor) {\n return;\n }\n\n // If this is the last actor, and the message is right of it, no need to calculate the margin\n if (msg.placement === parser.yy.PLACEMENT.RIGHTOF && !actor.nextActor) {\n return;\n }\n\n const isNote = msg.placement !== undefined;\n const isMessage = !isNote;\n\n const textFont = isNote ? conf.noteFont() : conf.messageFont();\n let wrappedMessage = msg.wrap\n ? utils.wrapLabel(msg.message, conf.width - 2 * conf.wrapPadding, textFont)\n : msg.message;\n const messageDimensions = utils.calculateTextDimensions(wrappedMessage, textFont);\n const messageWidth = messageDimensions.width + 2 * conf.wrapPadding;\n\n /*\n * The following scenarios should be supported:\n *\n * - There's a message (non-note) between fromActor and toActor\n * - If fromActor is on the right and toActor is on the left, we should\n * define the toActor's margin\n * - If fromActor is on the left and toActor is on the right, we should\n * define the fromActor's margin\n * - There's a note, in which case fromActor == toActor\n * - If the note is to the left of the actor, we should define the previous actor\n * margin\n * - If the note is on the actor, we should define both the previous and next actor\n * margins, each being the half of the note size\n * - If the note is on the right of the actor, we should define the current actor\n * margin\n */\n if (isMessage && msg.from === actor.nextActor) {\n maxMessageWidthPerActor[msg.to] = Math.max(\n maxMessageWidthPerActor[msg.to] || 0,\n messageWidth\n );\n } else if (isMessage && msg.from === actor.prevActor) {\n maxMessageWidthPerActor[msg.from] = Math.max(\n maxMessageWidthPerActor[msg.from] || 0,\n messageWidth\n );\n } else if (isMessage && msg.from === msg.to) {\n maxMessageWidthPerActor[msg.from] = Math.max(\n maxMessageWidthPerActor[msg.from] || 0,\n messageWidth / 2\n );\n\n maxMessageWidthPerActor[msg.to] = Math.max(\n maxMessageWidthPerActor[msg.to] || 0,\n messageWidth / 2\n );\n } else if (msg.placement === parser.yy.PLACEMENT.RIGHTOF) {\n maxMessageWidthPerActor[msg.from] = Math.max(\n maxMessageWidthPerActor[msg.from] || 0,\n messageWidth\n );\n } else if (msg.placement === parser.yy.PLACEMENT.LEFTOF) {\n maxMessageWidthPerActor[actor.prevActor] = Math.max(\n maxMessageWidthPerActor[actor.prevActor] || 0,\n messageWidth\n );\n } else if (msg.placement === parser.yy.PLACEMENT.OVER) {\n if (actor.prevActor) {\n maxMessageWidthPerActor[actor.prevActor] = Math.max(\n maxMessageWidthPerActor[actor.prevActor] || 0,\n messageWidth / 2\n );\n }\n\n if (actor.nextActor) {\n maxMessageWidthPerActor[msg.from] = Math.max(\n maxMessageWidthPerActor[msg.from] || 0,\n messageWidth / 2\n );\n }\n }\n }\n });\n\n logger.debug('maxMessageWidthPerActor:', maxMessageWidthPerActor);\n return maxMessageWidthPerActor;\n};\n\n/**\n * This will calculate the optimal margin for each given actor, for a given\n * actor->messageWidth map.\n *\n * An actor's margin is determined by the width of the actor, the width of the\n * largest message that originates from it, and the configured conf.actorMargin.\n *\n * @param actors - The actors map to calculate margins for\n * @param actorToMessageWidth - A map of actor key -> max message width it holds\n */\nconst calculateActorMargins = function(actors, actorToMessageWidth) {\n let maxHeight = 0;\n Object.keys(actors).forEach(prop => {\n const actor = actors[prop];\n if (actor.wrap) {\n actor.description = utils.wrapLabel(\n actor.description,\n conf.width - 2 * conf.wrapPadding,\n conf.actorFont()\n );\n }\n const actDims = utils.calculateTextDimensions(actor.description, conf.actorFont());\n actor.width = actor.wrap\n ? conf.width\n : Math.max(conf.width, actDims.width + 2 * conf.wrapPadding);\n\n actor.height = actor.wrap ? Math.max(actDims.height, conf.height) : conf.height;\n maxHeight = Math.max(maxHeight, actor.height);\n });\n\n for (let actorKey in actorToMessageWidth) {\n const actor = actors[actorKey];\n\n if (!actor) {\n continue;\n }\n\n const nextActor = actors[actor.nextActor];\n\n // No need to space out an actor that doesn't have a next link\n if (!nextActor) {\n continue;\n }\n\n const messageWidth = actorToMessageWidth[actorKey];\n const actorWidth = messageWidth + conf.actorMargin - actor.width / 2 - nextActor.width / 2;\n\n actor.margin = Math.max(actorWidth, conf.actorMargin);\n }\n\n return Math.max(maxHeight, conf.height);\n};\n\nconst buildNoteModel = function(msg, actors) {\n let startx = actors[msg.from].x;\n let stopx = actors[msg.to].x;\n let shouldWrap = msg.wrap && msg.message;\n\n let textDimensions = utils.calculateTextDimensions(\n shouldWrap ? utils.wrapLabel(msg.message, conf.width, conf.noteFont()) : msg.message,\n conf.noteFont()\n );\n let noteModel = {\n width: shouldWrap\n ? conf.width\n : Math.max(conf.width, textDimensions.width + 2 * conf.noteMargin),\n height: 0,\n startx: actors[msg.from].x,\n stopx: 0,\n starty: 0,\n stopy: 0,\n message: msg.message\n };\n if (msg.placement === parser.yy.PLACEMENT.RIGHTOF) {\n noteModel.width = shouldWrap\n ? Math.max(conf.width, textDimensions.width)\n : Math.max(\n actors[msg.from].width / 2 + actors[msg.to].width / 2,\n textDimensions.width + 2 * conf.noteMargin\n );\n noteModel.startx = startx + (actors[msg.from].width + conf.actorMargin) / 2;\n } else if (msg.placement === parser.yy.PLACEMENT.LEFTOF) {\n noteModel.width = shouldWrap\n ? Math.max(conf.width, textDimensions.width + 2 * conf.noteMargin)\n : Math.max(\n actors[msg.from].width / 2 + actors[msg.to].width / 2,\n textDimensions.width + 2 * conf.noteMargin\n );\n noteModel.startx = startx - noteModel.width + (actors[msg.from].width - conf.actorMargin) / 2;\n } else if (msg.to === msg.from) {\n textDimensions = utils.calculateTextDimensions(\n shouldWrap\n ? utils.wrapLabel(\n msg.message,\n Math.max(conf.width, actors[msg.from].width),\n conf.noteFont()\n )\n : msg.message,\n conf.noteFont()\n );\n noteModel.width = shouldWrap\n ? Math.max(conf.width, actors[msg.from].width)\n : Math.max(actors[msg.from].width, conf.width, textDimensions.width + 2 * conf.noteMargin);\n noteModel.startx = startx + (actors[msg.from].width - noteModel.width) / 2;\n } else {\n noteModel.width =\n Math.abs(startx + actors[msg.from].width / 2 - (stopx + actors[msg.to].width / 2)) +\n conf.actorMargin;\n noteModel.startx =\n startx < stopx\n ? startx + actors[msg.from].width / 2 - conf.actorMargin / 2\n : stopx + actors[msg.to].width / 2 - conf.actorMargin / 2;\n }\n if (shouldWrap) {\n noteModel.message = utils.wrapLabel(\n msg.message,\n noteModel.width - 2 * conf.wrapPadding,\n conf.noteFont()\n );\n }\n logger.debug(\n `NM:[${noteModel.startx},${noteModel.stopx},${noteModel.starty},${noteModel.stopy}:${noteModel.width},${noteModel.height}=${msg.message}]`\n );\n return noteModel;\n};\n\nconst buildMessageModel = function(msg, actors) {\n let process = false;\n if (\n [\n parser.yy.LINETYPE.SOLID_OPEN,\n parser.yy.LINETYPE.DOTTED_OPEN,\n parser.yy.LINETYPE.SOLID,\n parser.yy.LINETYPE.DOTTED,\n parser.yy.LINETYPE.SOLID_CROSS,\n parser.yy.LINETYPE.DOTTED_CROSS\n ].includes(msg.type)\n ) {\n process = true;\n }\n if (!process) {\n return {};\n }\n const fromBounds = activationBounds(msg.from, actors);\n const toBounds = activationBounds(msg.to, actors);\n const fromIdx = fromBounds[0] <= toBounds[0] ? 1 : 0;\n const toIdx = fromBounds[0] < toBounds[0] ? 0 : 1;\n const allBounds = fromBounds.concat(toBounds);\n const boundedWidth = Math.abs(toBounds[toIdx] - fromBounds[fromIdx]);\n const msgDims = utils.calculateTextDimensions(msg.message, conf.messageFont());\n if (msg.wrap && msg.message) {\n msg.message = utils.wrapLabel(\n msg.message,\n Math.max(boundedWidth + 2 * conf.wrapPadding, conf.width),\n conf.messageFont()\n );\n }\n return {\n width: Math.max(\n msg.wrap ? 0 : msgDims.width + 2 * conf.wrapPadding,\n boundedWidth + 2 * conf.wrapPadding,\n conf.width\n ),\n height: 0,\n startx: fromBounds[fromIdx],\n stopx: toBounds[toIdx],\n starty: 0,\n stopy: 0,\n message: msg.message,\n type: msg.type,\n wrap: msg.wrap,\n fromBounds: Math.min.apply(null, allBounds),\n toBounds: Math.max.apply(null, allBounds)\n };\n};\n\nconst calculateLoopBounds = function(messages, actors) {\n const loops = {};\n const stack = [];\n let current, noteModel, msgModel;\n\n messages.forEach(function(msg) {\n msg.id = utils.random({ length: 10 });\n switch (msg.type) {\n case parser.yy.LINETYPE.LOOP_START:\n case parser.yy.LINETYPE.ALT_START:\n case parser.yy.LINETYPE.OPT_START:\n case parser.yy.LINETYPE.PAR_START:\n stack.push({\n id: msg.id,\n msg: msg.message,\n from: Number.MAX_SAFE_INTEGER,\n to: Number.MIN_SAFE_INTEGER,\n width: 0\n });\n break;\n case parser.yy.LINETYPE.ALT_ELSE:\n case parser.yy.LINETYPE.PAR_AND:\n if (msg.message) {\n current = stack.pop();\n loops[current.id] = current;\n loops[msg.id] = current;\n stack.push(current);\n }\n break;\n case parser.yy.LINETYPE.LOOP_END:\n case parser.yy.LINETYPE.ALT_END:\n case parser.yy.LINETYPE.OPT_END:\n case parser.yy.LINETYPE.PAR_END:\n current = stack.pop();\n loops[current.id] = current;\n break;\n case parser.yy.LINETYPE.ACTIVE_START:\n {\n const actorRect = actors[msg.from ? msg.from.actor : msg.to.actor];\n const stackedSize = actorActivations(msg.from ? msg.from.actor : msg.to.actor).length;\n const x =\n actorRect.x + actorRect.width / 2 + ((stackedSize - 1) * conf.activationWidth) / 2;\n const toAdd = {\n startx: x,\n stopx: x + conf.activationWidth,\n actor: msg.from.actor,\n enabled: true\n };\n bounds.activations.push(toAdd);\n }\n break;\n case parser.yy.LINETYPE.ACTIVE_END:\n {\n const lastActorActivationIdx = bounds.activations\n .map(a => a.actor)\n .lastIndexOf(msg.from.actor);\n delete bounds.activations.splice(lastActorActivationIdx, 1)[0];\n }\n break;\n }\n const isNote = msg.placement !== undefined;\n if (isNote) {\n noteModel = buildNoteModel(msg, actors);\n msg.noteModel = noteModel;\n stack.forEach(stk => {\n current = stk;\n current.from = Math.min(current.from, noteModel.startx);\n current.to = Math.max(current.to, noteModel.startx + noteModel.width);\n current.width =\n Math.max(current.width, Math.abs(current.from - current.to)) - conf.labelBoxWidth;\n });\n } else {\n msgModel = buildMessageModel(msg, actors);\n msg.msgModel = msgModel;\n if (msgModel.startx && msgModel.stopx && stack.length > 0) {\n stack.forEach(stk => {\n current = stk;\n if (msgModel.startx === msgModel.stopx) {\n let from = actors[msg.from];\n let to = actors[msg.to];\n current.from = Math.min(\n from.x - msgModel.width / 2,\n from.x - from.width / 2,\n current.from\n );\n current.to = Math.max(to.x + msgModel.width / 2, to.x + from.width / 2, current.to);\n current.width =\n Math.max(current.width, Math.abs(current.to - current.from)) - conf.labelBoxWidth;\n } else {\n current.from = Math.min(msgModel.startx, current.from);\n current.to = Math.max(msgModel.stopx, current.to);\n current.width = Math.max(current.width, msgModel.width) - conf.labelBoxWidth;\n }\n });\n }\n }\n });\n bounds.activations = [];\n logger.debug('Loop type widths:', loops);\n return loops;\n};\n\nexport default {\n bounds,\n drawActors,\n setConf,\n draw\n};\n","const getStyles = options =>\n `.actor {\n stroke: ${options.actorBorder};\n fill: ${options.actorBkg};\n }\n\n text.actor > tspan {\n fill: ${options.actorTextColor};\n stroke: none;\n }\n\n .actor-line {\n stroke: ${options.actorLineColor};\n }\n\n .messageLine0 {\n stroke-width: 1.5;\n stroke-dasharray: none;\n stroke: ${options.signalColor};\n }\n\n .messageLine1 {\n stroke-width: 1.5;\n stroke-dasharray: 2, 2;\n stroke: ${options.signalColor};\n }\n\n #arrowhead path {\n fill: ${options.signalColor};\n stroke: ${options.signalColor};\n }\n\n .sequenceNumber {\n fill: ${options.sequenceNumberColor};\n }\n\n #sequencenumber {\n fill: ${options.signalColor};\n }\n\n #crosshead path {\n fill: ${options.signalColor};\n stroke: ${options.signalColor};\n }\n\n .messageText {\n fill: ${options.signalTextColor};\n stroke: ${options.signalTextColor};\n }\n\n .labelBox {\n stroke: ${options.labelBoxBorderColor};\n fill: ${options.labelBoxBkgColor};\n }\n\n .labelText, .labelText > tspan {\n fill: ${options.labelTextColor};\n stroke: none;\n }\n\n .loopText, .loopText > tspan {\n fill: ${options.loopTextColor};\n stroke: none;\n }\n\n .loopLine {\n stroke-width: 2px;\n stroke-dasharray: 2, 2;\n stroke: ${options.labelBoxBorderColor};\n fill: ${options.labelBoxBorderColor};\n }\n\n .note {\n //stroke: #decc93;\n stroke: ${options.noteBorderColor};\n fill: ${options.noteBkgColor};\n }\n\n .noteText, .noteText > tspan {\n fill: ${options.noteTextColor};\n stroke: none;\n }\n\n .activation0 {\n fill: ${options.activationBkgColor};\n stroke: ${options.activationBorderColor};\n }\n\n .activation1 {\n fill: ${options.activationBkgColor};\n stroke: ${options.activationBorderColor};\n }\n\n .activation2 {\n fill: ${options.activationBkgColor};\n stroke: ${options.activationBorderColor};\n }\n`;\n\nexport default getStyles;\n","import common from '../common/common';\n\nexport const drawRect = function(elem, rectData) {\n const rectElem = elem.append('rect');\n rectElem.attr('x', rectData.x);\n rectElem.attr('y', rectData.y);\n rectElem.attr('fill', rectData.fill);\n rectElem.attr('stroke', rectData.stroke);\n rectElem.attr('width', rectData.width);\n rectElem.attr('height', rectData.height);\n rectElem.attr('rx', rectData.rx);\n rectElem.attr('ry', rectData.ry);\n\n if (typeof rectData.class !== 'undefined') {\n rectElem.attr('class', rectData.class);\n }\n\n return rectElem;\n};\n\nexport const drawText = function(elem, textData) {\n let prevTextHeight = 0,\n textHeight = 0;\n const lines = textData.wrap\n ? textData.text.split(common.lineBreakRegex)\n : [textData.text.replace(common.lineBreakRegex, ' ')];\n\n let textElems = [];\n let dy = 0;\n let yfunc = () => textData.y;\n if (\n typeof textData.valign !== 'undefined' &&\n typeof textData.textMargin !== 'undefined' &&\n textData.textMargin > 0\n ) {\n switch (textData.valign) {\n case 'top':\n case 'start':\n yfunc = () => Math.round(textData.y + textData.textMargin);\n break;\n case 'middle':\n case 'center':\n yfunc = () =>\n Math.round(textData.y + (prevTextHeight + textHeight + textData.textMargin) / 2);\n break;\n case 'bottom':\n case 'end':\n yfunc = () =>\n Math.round(\n textData.y +\n (prevTextHeight + textHeight + 2 * textData.textMargin) -\n textData.textMargin\n );\n break;\n }\n }\n if (\n typeof textData.anchor !== 'undefined' &&\n typeof textData.textMargin !== 'undefined' &&\n typeof textData.width !== 'undefined'\n ) {\n switch (textData.anchor) {\n case 'left':\n case 'start':\n textData.x = Math.round(textData.x + textData.textMargin);\n textData.anchor = 'start';\n textData.dominantBaseline = 'text-after-edge';\n textData.alignmentBaseline = 'middle';\n break;\n case 'middle':\n case 'center':\n textData.x = Math.round(textData.x + textData.width / 2);\n textData.anchor = 'middle';\n textData.dominantBaseline = 'middle';\n textData.alignmentBaseline = 'middle';\n break;\n case 'right':\n case 'end':\n textData.x = Math.round(textData.x + textData.width - textData.textMargin);\n textData.anchor = 'end';\n textData.dominantBaseline = 'text-before-edge';\n textData.alignmentBaseline = 'middle';\n break;\n }\n }\n for (let i = 0; i < lines.length; i++) {\n let line = lines[i];\n if (\n typeof textData.textMargin !== 'undefined' &&\n textData.textMargin === 0 &&\n typeof textData.fontSize !== 'undefined'\n ) {\n dy = i * textData.fontSize;\n }\n\n const textElem = elem.append('text');\n textElem.attr('x', textData.x);\n textElem.attr('y', yfunc());\n if (typeof textData.anchor !== 'undefined') {\n textElem\n .attr('text-anchor', textData.anchor)\n .attr('dominant-baseline', textData.dominantBaseline)\n .attr('alignment-baseline', textData.alignmentBaseline);\n }\n if (typeof textData.fontFamily !== 'undefined') {\n textElem.style('font-family', textData.fontFamily);\n }\n if (typeof textData.fontSize !== 'undefined') {\n textElem.style('font-size', textData.fontSize);\n }\n if (typeof textData.fontWeight !== 'undefined') {\n textElem.style('font-weight', textData.fontWeight);\n }\n if (typeof textData.fill !== 'undefined') {\n textElem.attr('fill', textData.fill);\n }\n if (typeof textData.class !== 'undefined') {\n textElem.attr('class', textData.class);\n }\n if (typeof textData.dy !== 'undefined') {\n textElem.attr('dy', textData.dy);\n } else if (dy !== 0) {\n textElem.attr('dy', dy);\n }\n\n if (textData.tspan) {\n const span = textElem.append('tspan');\n span.attr('x', textData.x);\n if (typeof textData.fill !== 'undefined') {\n span.attr('fill', textData.fill);\n }\n span.text(line);\n } else {\n textElem.text(line);\n }\n if (\n typeof textData.valign !== 'undefined' &&\n typeof textData.textMargin !== 'undefined' &&\n textData.textMargin > 0\n ) {\n textHeight += (textElem._groups || textElem)[0][0].getBBox().height;\n prevTextHeight = textHeight;\n }\n\n textElems.push(textElem);\n }\n\n return textElems;\n};\n\nexport const drawLabel = function(elem, txtObject) {\n function genPoints(x, y, width, height, cut) {\n return (\n x +\n ',' +\n y +\n ' ' +\n (x + width) +\n ',' +\n y +\n ' ' +\n (x + width) +\n ',' +\n (y + height - cut) +\n ' ' +\n (x + width - cut * 1.2) +\n ',' +\n (y + height) +\n ' ' +\n x +\n ',' +\n (y + height)\n );\n }\n const polygon = elem.append('polygon');\n polygon.attr('points', genPoints(txtObject.x, txtObject.y, txtObject.width, txtObject.height, 7));\n polygon.attr('class', 'labelBox');\n\n txtObject.y = txtObject.y + txtObject.height / 2;\n\n drawText(elem, txtObject);\n return polygon;\n};\n\nlet actorCnt = -1;\n/**\n * Draws an actor in the diagram with the attached line\n * @param elem - The diagram we'll draw to.\n * @param actor - The actor to draw.\n * @param conf - drawText implementation discriminator object\n */\nexport const drawActor = function(elem, actor, conf) {\n const center = actor.x + actor.width / 2;\n\n const g = elem.append('g');\n if (actor.y === 0) {\n actorCnt++;\n g.append('line')\n .attr('id', 'actor' + actorCnt)\n .attr('x1', center)\n .attr('y1', 5)\n .attr('x2', center)\n .attr('y2', 2000)\n .attr('class', 'actor-line')\n .attr('stroke-width', '0.5px')\n .attr('stroke', '#999');\n }\n\n const rect = getNoteRect();\n rect.x = actor.x;\n rect.y = actor.y;\n rect.fill = '#eaeaea';\n rect.width = actor.width;\n rect.height = actor.height;\n rect.class = 'actor';\n rect.rx = 3;\n rect.ry = 3;\n drawRect(g, rect);\n\n _drawTextCandidateFunc(conf)(\n actor.description,\n g,\n rect.x,\n rect.y,\n rect.width,\n rect.height,\n { class: 'actor' },\n conf\n );\n};\n\nexport const anchorElement = function(elem) {\n return elem.append('g');\n};\n/**\n * Draws an activation in the diagram\n * @param elem - element to append activation rect.\n * @param bounds - activation box bounds.\n * @param verticalPos - precise y cooridnate of bottom activation box edge.\n * @param conf - sequence diagram config object.\n * @param actorActivations - number of activations on the actor.\n */\nexport const drawActivation = function(elem, bounds, verticalPos, conf, actorActivations) {\n const rect = getNoteRect();\n const g = bounds.anchored;\n rect.x = bounds.startx;\n rect.y = bounds.starty;\n rect.class = 'activation' + (actorActivations % 3); // Will evaluate to 0, 1 or 2\n rect.width = bounds.stopx - bounds.startx;\n rect.height = verticalPos - bounds.starty;\n drawRect(g, rect);\n};\n\n/**\n * Draws a loop in the diagram\n * @param elem - elemenet to append the loop to.\n * @param loopModel - loopModel of the given loop.\n * @param labelText - Text within the loop.\n * @param conf - diagrom configuration\n */\nexport const drawLoop = function(elem, loopModel, labelText, conf) {\n const {\n boxMargin,\n boxTextMargin,\n labelBoxHeight,\n labelBoxWidth,\n messageFontFamily: fontFamily,\n messageFontSize: fontSize,\n messageFontWeight: fontWeight\n } = conf;\n const g = elem.append('g');\n const drawLoopLine = function(startx, starty, stopx, stopy) {\n return g\n .append('line')\n .attr('x1', startx)\n .attr('y1', starty)\n .attr('x2', stopx)\n .attr('y2', stopy)\n .attr('class', 'loopLine');\n };\n drawLoopLine(loopModel.startx, loopModel.starty, loopModel.stopx, loopModel.starty);\n drawLoopLine(loopModel.stopx, loopModel.starty, loopModel.stopx, loopModel.stopy);\n drawLoopLine(loopModel.startx, loopModel.stopy, loopModel.stopx, loopModel.stopy);\n drawLoopLine(loopModel.startx, loopModel.starty, loopModel.startx, loopModel.stopy);\n if (typeof loopModel.sections !== 'undefined') {\n loopModel.sections.forEach(function(item) {\n drawLoopLine(loopModel.startx, item.y, loopModel.stopx, item.y).style(\n 'stroke-dasharray',\n '3, 3'\n );\n });\n }\n\n let txt = getTextObj();\n txt.text = labelText;\n txt.x = loopModel.startx;\n txt.y = loopModel.starty;\n txt.fontFamily = fontFamily;\n txt.fontSize = fontSize;\n txt.fontWeight = fontWeight;\n txt.anchor = 'middle';\n txt.valign = 'middle';\n txt.tspan = false;\n txt.width = labelBoxWidth || 50;\n txt.height = labelBoxHeight || 20;\n txt.textMargin = boxTextMargin;\n txt.class = 'labelText';\n\n drawLabel(g, txt);\n txt = getTextObj();\n txt.text = loopModel.title;\n txt.x = loopModel.startx + labelBoxWidth / 2 + (loopModel.stopx - loopModel.startx) / 2;\n txt.y = loopModel.starty + boxMargin + boxTextMargin;\n txt.anchor = 'middle';\n txt.valign = 'middle';\n txt.textMargin = boxTextMargin;\n txt.class = 'loopText';\n txt.fontFamily = fontFamily;\n txt.fontSize = fontSize;\n txt.fontWeight = fontWeight;\n txt.wrap = true;\n\n let textElem = drawText(g, txt);\n\n if (typeof loopModel.sectionTitles !== 'undefined') {\n loopModel.sectionTitles.forEach(function(item, idx) {\n if (item.message) {\n txt.text = item.message;\n txt.x = loopModel.startx + (loopModel.stopx - loopModel.startx) / 2;\n txt.y = loopModel.sections[idx].y + boxMargin + boxTextMargin;\n txt.class = 'loopText';\n txt.anchor = 'middle';\n txt.valign = 'middle';\n txt.tspan = false;\n txt.fontFamily = fontFamily;\n txt.fontSize = fontSize;\n txt.fontWeight = fontWeight;\n txt.wrap = loopModel.wrap;\n textElem = drawText(g, txt);\n let sectionHeight = Math.round(\n textElem\n .map(te => (te._groups || te)[0][0].getBBox().height)\n .reduce((acc, curr) => acc + curr)\n );\n loopModel.sections[idx].height += sectionHeight - (boxMargin + boxTextMargin);\n }\n });\n }\n\n loopModel.height = Math.round(loopModel.stopy - loopModel.starty);\n return g;\n};\n\n/**\n * Draws a background rectangle\n * @param elem diagram (reference for bounds)\n * @param bounds shape of the rectangle\n */\nexport const drawBackgroundRect = function(elem, bounds) {\n const rectElem = drawRect(elem, {\n x: bounds.startx,\n y: bounds.starty,\n width: bounds.stopx - bounds.startx,\n height: bounds.stopy - bounds.starty,\n fill: bounds.fill,\n class: 'rect'\n });\n rectElem.lower();\n};\n/**\n * Setup arrow head and define the marker. The result is appended to the svg.\n */\nexport const insertArrowHead = function(elem) {\n elem\n .append('defs')\n .append('marker')\n .attr('id', 'arrowhead')\n .attr('refX', 5)\n .attr('refY', 2)\n .attr('markerWidth', 6)\n .attr('markerHeight', 4)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 0,0 V 4 L6,2 Z'); // this is actual shape for arrowhead\n};\n/**\n * Setup node number. The result is appended to the svg.\n */\nexport const insertSequenceNumber = function(elem) {\n elem\n .append('defs')\n .append('marker')\n .attr('id', 'sequencenumber')\n .attr('refX', 15)\n .attr('refY', 15)\n .attr('markerWidth', 60)\n .attr('markerHeight', 40)\n .attr('orient', 'auto')\n .append('circle')\n .attr('cx', 15)\n .attr('cy', 15)\n .attr('r', 6);\n // .style(\"fill\", '#f00');\n};\n/**\n * Setup arrow head and define the marker. The result is appended to the svg.\n */\nexport const insertArrowCrossHead = function(elem) {\n const defs = elem.append('defs');\n const marker = defs\n .append('marker')\n .attr('id', 'crosshead')\n .attr('markerWidth', 15)\n .attr('markerHeight', 8)\n .attr('orient', 'auto')\n .attr('refX', 16)\n .attr('refY', 4);\n\n // The arrow\n marker\n .append('path')\n .attr('fill', 'black')\n .attr('stroke', '#000000')\n .style('stroke-dasharray', '0, 0')\n .attr('stroke-width', '1px')\n .attr('d', 'M 9,2 V 6 L16,4 Z');\n\n // The cross\n marker\n .append('path')\n .attr('fill', 'none')\n .attr('stroke', '#000000')\n .style('stroke-dasharray', '0, 0')\n .attr('stroke-width', '1px')\n .attr('d', 'M 0,1 L 6,7 M 6,1 L 0,7');\n // this is actual shape for arrowhead\n};\n\nexport const getTextObj = function() {\n return {\n x: 0,\n y: 0,\n fill: undefined,\n anchor: undefined,\n style: '#666',\n width: undefined,\n height: undefined,\n textMargin: 0,\n rx: 0,\n ry: 0,\n tspan: true,\n valign: undefined\n };\n};\n\nexport const getNoteRect = function() {\n return {\n x: 0,\n y: 0,\n fill: '#EDF2AE',\n stroke: '#666',\n width: 100,\n anchor: 'start',\n height: 100,\n rx: 0,\n ry: 0\n };\n};\n\nconst _drawTextCandidateFunc = (function() {\n function byText(content, g, x, y, width, height, textAttrs) {\n const text = g\n .append('text')\n .attr('x', x + width / 2)\n .attr('y', y + height / 2 + 5)\n .style('text-anchor', 'middle')\n .text(content);\n _setTextAttrs(text, textAttrs);\n }\n\n function byTspan(content, g, x, y, width, height, textAttrs, conf) {\n const { actorFontSize, actorFontFamily, actorFontWeight } = conf;\n\n const lines = content.split(common.lineBreakRegex);\n for (let i = 0; i < lines.length; i++) {\n const dy = i * actorFontSize - (actorFontSize * (lines.length - 1)) / 2;\n const text = g\n .append('text')\n .attr('x', x + width / 2)\n .attr('y', y)\n .style('text-anchor', 'middle')\n .style('font-size', actorFontSize)\n .style('font-weight', actorFontWeight)\n .style('font-family', actorFontFamily);\n text\n .append('tspan')\n .attr('x', x + width / 2)\n .attr('dy', dy)\n .text(lines[i]);\n\n text\n .attr('y', y + height / 2.0)\n .attr('dominant-baseline', 'central')\n .attr('alignment-baseline', 'central');\n\n _setTextAttrs(text, textAttrs);\n }\n }\n\n function byFo(content, g, x, y, width, height, textAttrs, conf) {\n const s = g.append('switch');\n const f = s\n .append('foreignObject')\n .attr('x', x)\n .attr('y', y)\n .attr('width', width)\n .attr('height', height);\n\n const text = f\n .append('div')\n .style('display', 'table')\n .style('height', '100%')\n .style('width', '100%');\n\n text\n .append('div')\n .style('display', 'table-cell')\n .style('text-align', 'center')\n .style('vertical-align', 'middle')\n .text(content);\n\n byTspan(content, s, x, y, width, height, textAttrs, conf);\n _setTextAttrs(text, textAttrs);\n }\n\n function _setTextAttrs(toText, fromTextAttrsDict) {\n for (const key in fromTextAttrsDict) {\n if (fromTextAttrsDict.hasOwnProperty(key)) { // eslint-disable-line\n toText.attr(key, fromTextAttrsDict[key]);\n }\n }\n }\n\n return function(conf) {\n return conf.textPlacement === 'fo' ? byFo : conf.textPlacement === 'old' ? byText : byTspan;\n };\n})();\n\nexport default {\n drawRect,\n drawText,\n drawLabel,\n drawActor,\n anchorElement,\n drawActivation,\n drawLoop,\n drawBackgroundRect,\n insertArrowHead,\n insertSequenceNumber,\n insertArrowCrossHead,\n getTextObj,\n getNoteRect\n};\n","const idCache = {};\n\nexport const set = (key, val) => {\n idCache[key] = val;\n};\n\nexport const get = k => idCache[k];\nexport const keys = () => Object.keys(idCache);\nexport const size = () => keys().length;\n\nexport default {\n get,\n set,\n keys,\n size\n};\n","/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,2],$V1=[1,3],$V2=[1,4],$V3=[2,4],$V4=[1,9],$V5=[1,11],$V6=[1,13],$V7=[1,14],$V8=[1,15],$V9=[1,16],$Va=[1,21],$Vb=[1,17],$Vc=[1,18],$Vd=[1,19],$Ve=[1,20],$Vf=[1,22],$Vg=[1,4,5,13,14,16,18,19,21,22,23,24,25,28],$Vh=[1,4,5,11,12,13,14,16,18,19,21,22,23,24,25,28],$Vi=[4,5,13,14,16,18,19,21,22,23,24,25,28];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"SPACE\":4,\"NL\":5,\"SD\":6,\"document\":7,\"line\":8,\"statement\":9,\"idStatement\":10,\"DESCR\":11,\"-->\":12,\"HIDE_EMPTY\":13,\"scale\":14,\"WIDTH\":15,\"COMPOSIT_STATE\":16,\"STRUCT_START\":17,\"STRUCT_STOP\":18,\"STATE_DESCR\":19,\"AS\":20,\"ID\":21,\"FORK\":22,\"JOIN\":23,\"CONCURRENT\":24,\"note\":25,\"notePosition\":26,\"NOTE_TEXT\":27,\"EDGE_STATE\":28,\"left_of\":29,\"right_of\":30,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",4:\"SPACE\",5:\"NL\",6:\"SD\",11:\"DESCR\",12:\"-->\",13:\"HIDE_EMPTY\",14:\"scale\",15:\"WIDTH\",16:\"COMPOSIT_STATE\",17:\"STRUCT_START\",18:\"STRUCT_STOP\",19:\"STATE_DESCR\",20:\"AS\",21:\"ID\",22:\"FORK\",23:\"JOIN\",24:\"CONCURRENT\",25:\"note\",27:\"NOTE_TEXT\",28:\"EDGE_STATE\",29:\"left_of\",30:\"right_of\"},\nproductions_: [0,[3,2],[3,2],[3,2],[7,0],[7,2],[8,2],[8,1],[8,1],[9,1],[9,2],[9,3],[9,4],[9,1],[9,2],[9,1],[9,4],[9,3],[9,6],[9,1],[9,1],[9,1],[9,4],[9,4],[10,1],[10,1],[26,1],[26,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 3:\n /*console.warn('Root document', $$[$0]);*/ yy.setRootDoc($$[$0]);return $$[$0]; \nbreak;\ncase 4:\n this.$ = [] \nbreak;\ncase 5:\n\n if($$[$0]!='nl'){\n $$[$0-1].push($$[$0]);this.$ = $$[$0-1]\n }\n // console.warn('Got document',$$[$0-1], $$[$0]);\n \nbreak;\ncase 6: case 7:\n this.$ = $$[$0] \nbreak;\ncase 8:\n this.$='nl';\nbreak;\ncase 9:\n /*console.warn('got id and descr', $$[$0]);*/this.$={ stmt: 'state', id: $$[$0], type: 'default', description: ''};\nbreak;\ncase 10:\n /*console.warn('got id and descr', $$[$0-1], $$[$0].trim());*/this.$={ stmt: 'state', id: $$[$0-1], type: 'default', description: yy.trimColon($$[$0])};\nbreak;\ncase 11:\n\n /*console.warn('got id', $$[$0-2]);yy.addRelation($$[$0-2], $$[$0]);*/\n this.$={ stmt: 'relation', state1: { stmt: 'state', id: $$[$0-2], type: 'default', description: '' }, state2:{ stmt: 'state', id: $$[$0] ,type: 'default', description: ''}};\n \nbreak;\ncase 12:\n\n /*yy.addRelation($$[$0-3], $$[$0-1], $$[$0].substr(1).trim());*/\n this.$={ stmt: 'relation', state1: { stmt: 'state', id: $$[$0-3], type: 'default', description: '' }, state2:{ stmt: 'state', id: $$[$0-1] ,type: 'default', description: ''}, description: $$[$0].substr(1).trim()};\n \nbreak;\ncase 16:\n\n\n /* console.warn('Adding document for state without id ', $$[$0-3]);*/\n this.$={ stmt: 'state', id: $$[$0-3], type: 'default', description: '', doc: $$[$0-1] }\n \nbreak;\ncase 17:\n\n var id=$$[$0];\n var description = $$[$0-2].trim();\n if($$[$0].match(':')){\n var parts = $$[$0].split(':');\n id=parts[0];\n description = [description, parts[1]];\n }\n this.$={stmt: 'state', id: id, type: 'default', description: description};\n\n \nbreak;\ncase 18:\n\n //console.warn('Adding document for state with id ', $$[$0-3], $$[$0-2]); yy.addDocument($$[$0-3]);\n this.$={ stmt: 'state', id: $$[$0-3], type: 'default', description: $$[$0-5], doc: $$[$0-1] }\n \nbreak;\ncase 19:\n\n this.$={ stmt: 'state', id: $$[$0], type: 'fork' }\n \nbreak;\ncase 20:\n\n this.$={ stmt: 'state', id: $$[$0], type: 'join' }\n \nbreak;\ncase 21:\n\n this.$={ stmt: 'state', id: yy.getDividerId(), type: 'divider' }\n \nbreak;\ncase 22:\n\n /*console.warn('got NOTE, position: ', $$[$0-2].trim(), 'id = ', $$[$0-1].trim(), 'note: ', $$[$0]);*/\n this.$={ stmt: 'state', id: $$[$0-1].trim(), note:{position: $$[$0-2].trim(), text: $$[$0].trim()}};\n \nbreak;\ncase 24: case 25:\nthis.$=$$[$0];\nbreak;\n}\n},\ntable: [{3:1,4:$V0,5:$V1,6:$V2},{1:[3]},{3:5,4:$V0,5:$V1,6:$V2},{3:6,4:$V0,5:$V1,6:$V2},o([1,4,5,13,14,16,19,21,22,23,24,25,28],$V3,{7:7}),{1:[2,1]},{1:[2,2]},{1:[2,3],4:$V4,5:$V5,8:8,9:10,10:12,13:$V6,14:$V7,16:$V8,19:$V9,21:$Va,22:$Vb,23:$Vc,24:$Vd,25:$Ve,28:$Vf},o($Vg,[2,5]),{9:23,10:12,13:$V6,14:$V7,16:$V8,19:$V9,21:$Va,22:$Vb,23:$Vc,24:$Vd,25:$Ve,28:$Vf},o($Vg,[2,7]),o($Vg,[2,8]),o($Vg,[2,9],{11:[1,24],12:[1,25]}),o($Vg,[2,13]),{15:[1,26]},o($Vg,[2,15],{17:[1,27]}),{20:[1,28]},o($Vg,[2,19]),o($Vg,[2,20]),o($Vg,[2,21]),{26:29,27:[1,30],29:[1,31],30:[1,32]},o($Vh,[2,24]),o($Vh,[2,25]),o($Vg,[2,6]),o($Vg,[2,10]),{10:33,21:$Va,28:$Vf},o($Vg,[2,14]),o($Vi,$V3,{7:34}),{21:[1,35]},{21:[1,36]},{20:[1,37]},{21:[2,26]},{21:[2,27]},o($Vg,[2,11],{11:[1,38]}),{4:$V4,5:$V5,8:8,9:10,10:12,13:$V6,14:$V7,16:$V8,18:[1,39],19:$V9,21:$Va,22:$Vb,23:$Vc,24:$Vd,25:$Ve,28:$Vf},o($Vg,[2,17],{17:[1,40]}),{27:[1,41]},{21:[1,42]},o($Vg,[2,12]),o($Vg,[2,16]),o($Vi,$V3,{7:43}),o($Vg,[2,22]),o($Vg,[2,23]),{4:$V4,5:$V5,8:8,9:10,10:12,13:$V6,14:$V7,16:$V8,18:[1,44],19:$V9,21:$Va,22:$Vb,23:$Vc,24:$Vd,25:$Ve,28:$Vf},o($Vg,[2,18])],\ndefaultActions: {5:[2,1],6:[2,2],31:[2,26],32:[2,27]},\nparseError: function parseError (str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer.lex() || EOF;\n if (typeof token !== 'number') {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {\"case-insensitive\":true},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0:return 5;\nbreak;\ncase 1:/* skip all whitespace */\nbreak;\ncase 2:/* skip same-line whitespace */\nbreak;\ncase 3:/* skip comments */\nbreak;\ncase 4:/* skip comments */\nbreak;\ncase 5: this.pushState('SCALE'); /* console.log('Got scale', yy_.yytext);*/ return 14; \nbreak;\ncase 6:return 15;\nbreak;\ncase 7:this.popState();\nbreak;\ncase 8: this.pushState('STATE'); \nbreak;\ncase 9:this.popState();yy_.yytext=yy_.yytext.slice(0,-8).trim(); /*console.warn('Fork Fork: ',yy_.yytext);*/return 22;\nbreak;\ncase 10:this.popState();yy_.yytext=yy_.yytext.slice(0,-8).trim();/*console.warn('Fork Join: ',yy_.yytext);*/return 23;\nbreak;\ncase 11:this.popState();yy_.yytext=yy_.yytext.slice(0,-8).trim();/*console.warn('Fork Fork: ',yy_.yytext);*/return 22;\nbreak;\ncase 12:this.popState();yy_.yytext=yy_.yytext.slice(0,-8).trim();/*console.warn('Fork Join: ',yy_.yytext);*/return 23;\nbreak;\ncase 13:this.begin(\"STATE_STRING\");\nbreak;\ncase 14:this.popState();this.pushState('STATE_ID');return \"AS\";\nbreak;\ncase 15:this.popState();/* console.log('STATE_ID', yy_.yytext);*/return \"ID\";\nbreak;\ncase 16:this.popState();\nbreak;\ncase 17: /*console.log('Long description:', yy_.yytext);*/return \"STATE_DESCR\";\nbreak;\ncase 18:/*console.log('COMPOSIT_STATE', yy_.yytext);*/return 16;\nbreak;\ncase 19:this.popState();\nbreak;\ncase 20:this.popState();this.pushState('struct'); /*console.log('begin struct', yy_.yytext);*/return 17;\nbreak;\ncase 21: /*console.log('Ending struct');*/ this.popState(); return 18;\nbreak;\ncase 22:/* nothing */\nbreak;\ncase 23: this.begin('NOTE'); return 25; \nbreak;\ncase 24: this.popState();this.pushState('NOTE_ID');return 29;\nbreak;\ncase 25: this.popState();this.pushState('NOTE_ID');return 30;\nbreak;\ncase 26: this.popState();this.pushState('FLOATING_NOTE');\nbreak;\ncase 27:this.popState();this.pushState('FLOATING_NOTE_ID');return \"AS\";\nbreak;\ncase 28:/**/\nbreak;\ncase 29: /*console.log('Floating note text: ', yy_.yytext);*/return \"NOTE_TEXT\";\nbreak;\ncase 30:this.popState();/*console.log('Floating note ID', yy_.yytext);*/return \"ID\";\nbreak;\ncase 31: this.popState();this.pushState('NOTE_TEXT');/*console.log('Got ID for note', yy_.yytext);*/return 21;\nbreak;\ncase 32: this.popState();/*console.log('Got NOTE_TEXT for note',yy_.yytext);*/yy_.yytext = yy_.yytext.substr(2).trim();return 27;\nbreak;\ncase 33: this.popState();/*console.log('Got NOTE_TEXT for note',yy_.yytext);*/yy_.yytext = yy_.yytext.slice(0,-8).trim();return 27;\nbreak;\ncase 34: /*console.log('Got state diagram', yy_.yytext,'#');*/return 6; \nbreak;\ncase 35: /*console.log('Got state diagram', yy_.yytext,'#');*/return 6; \nbreak;\ncase 36: /*console.log('HIDE_EMPTY', yy_.yytext,'#');*/return 13; \nbreak;\ncase 37: /*console.log('EDGE_STATE=',yy_.yytext);*/ return 28;\nbreak;\ncase 38: /*console.log('=>ID=',yy_.yytext);*/ return 21;\nbreak;\ncase 39: yy_.yytext = yy_.yytext.trim(); /*console.log('Descr = ', yy_.yytext);*/ return 11; \nbreak;\ncase 40:return 12;\nbreak;\ncase 41:return 24;\nbreak;\ncase 42:return 5;\nbreak;\ncase 43:return 'INVALID';\nbreak;\n}\n},\nrules: [/^(?:[\\n]+)/i,/^(?:\\s+)/i,/^(?:((?!\\n)\\s)+)/i,/^(?:#[^\\n]*)/i,/^(?:%[^\\n]*)/i,/^(?:scale\\s+)/i,/^(?:\\d+)/i,/^(?:\\s+width\\b)/i,/^(?:state\\s+)/i,/^(?:.*<
');\n text = text.replace(/\\n/g, '
');\n const lines = text.split(common.lineBreakRegex);\n\n let tHeight = 1.25 * getConfig().state.noteMargin;\n for (const line of lines) {\n const txt = line.trim();\n\n if (txt.length > 0) {\n const span = textElem.append('tspan');\n span.text(txt);\n if (tHeight === 0) {\n const textBounds = span.node().getBBox();\n tHeight += textBounds.height;\n }\n // console.warn('textBounds', textBounds);\n textHeight += tHeight;\n span.attr('x', x + getConfig().state.noteMargin);\n span.attr('y', y + textHeight + 1.25 * getConfig().state.noteMargin);\n }\n }\n return { textWidth: textElem.node().getBBox().width, textHeight };\n};\n\n/**\n * Draws a note to the diagram\n * @param text - The text of the given note.\n * @param g - The element the note is attached to.\n */\n\nexport const drawNote = (text, g) => {\n g.attr('class', 'state-note');\n const note = g\n .append('rect')\n .attr('x', 0)\n .attr('y', getConfig().state.padding);\n const rectElem = g.append('g');\n\n const { textWidth, textHeight } = _drawLongText(text, 0, 0, rectElem);\n note.attr('height', textHeight + 2 * getConfig().state.noteMargin);\n note.attr('width', textWidth + getConfig().state.noteMargin * 2);\n\n return note;\n};\n\n/**\n * Starting point for drawing a state. The function finds out the specifics\n * about the state and renders with approprtiate function.\n * @param {*} elem\n * @param {*} stateDef\n */\n\nexport const drawState = function(elem, stateDef) {\n const id = stateDef.id;\n const stateInfo = {\n id: id,\n label: stateDef.id,\n width: 0,\n height: 0\n };\n\n const g = elem\n .append('g')\n .attr('id', id)\n .attr('class', 'stateGroup');\n\n if (stateDef.type === 'start') drawStartState(g);\n if (stateDef.type === 'end') drawEndState(g);\n if (stateDef.type === 'fork' || stateDef.type === 'join') drawForkJoinState(g, stateDef);\n if (stateDef.type === 'note') drawNote(stateDef.note.text, g);\n if (stateDef.type === 'divider') drawDivider(g);\n if (stateDef.type === 'default' && stateDef.descriptions.length === 0)\n drawSimpleState(g, stateDef);\n if (stateDef.type === 'default' && stateDef.descriptions.length > 0) drawDescrState(g, stateDef);\n\n const stateBox = g.node().getBBox();\n stateInfo.width = stateBox.width + 2 * getConfig().state.padding;\n stateInfo.height = stateBox.height + 2 * getConfig().state.padding;\n\n idCache.set(id, stateInfo);\n // stateCnt++;\n return stateInfo;\n};\n\nlet edgeCount = 0;\nexport const drawEdge = function(elem, path, relation) {\n const getRelationType = function(type) {\n switch (type) {\n case stateDb.relationType.AGGREGATION:\n return 'aggregation';\n case stateDb.relationType.EXTENSION:\n return 'extension';\n case stateDb.relationType.COMPOSITION:\n return 'composition';\n case stateDb.relationType.DEPENDENCY:\n return 'dependency';\n }\n };\n\n path.points = path.points.filter(p => !Number.isNaN(p.y));\n\n // The data for our line\n const lineData = path.points;\n\n // This is the accessor function we talked about above\n const lineFunction = line()\n .x(function(d) {\n return d.x;\n })\n .y(function(d) {\n return d.y;\n })\n .curve(curveBasis);\n\n const svgPath = elem\n .append('path')\n .attr('d', lineFunction(lineData))\n .attr('id', 'edge' + edgeCount)\n .attr('class', 'transition');\n let url = '';\n if (getConfig().state.arrowMarkerAbsolute) {\n url =\n window.location.protocol +\n '//' +\n window.location.host +\n window.location.pathname +\n window.location.search;\n url = url.replace(/\\(/g, '\\\\(');\n url = url.replace(/\\)/g, '\\\\)');\n }\n\n svgPath.attr(\n 'marker-end',\n 'url(' + url + '#' + getRelationType(stateDb.relationType.DEPENDENCY) + 'End' + ')'\n );\n\n if (typeof relation.title !== 'undefined') {\n const label = elem.append('g').attr('class', 'stateLabel');\n\n const { x, y } = utils.calcLabelPosition(path.points);\n\n const rows = common.getRows(relation.title);\n\n // console.warn(rows);\n\n let titleHeight = 0;\n const titleRows = [];\n let maxWidth = 0;\n let minX = 0;\n\n for (let i = 0; i <= rows.length; i++) {\n const title = label\n .append('text')\n .attr('text-anchor', 'middle')\n .text(rows[i])\n .attr('x', x)\n .attr('y', y + titleHeight);\n\n const boundstmp = title.node().getBBox();\n maxWidth = Math.max(maxWidth, boundstmp.width);\n minX = Math.min(minX, boundstmp.x);\n\n logger.info(boundstmp.x, x, y + titleHeight);\n\n if (titleHeight === 0) {\n const titleBox = title.node().getBBox();\n titleHeight = titleBox.height;\n logger.info('Title height', titleHeight, y);\n }\n titleRows.push(title);\n }\n\n let boxHeight = titleHeight * rows.length;\n if (rows.length > 1) {\n const heightAdj = (rows.length - 1) * titleHeight * 0.5;\n\n titleRows.forEach((title, i) => title.attr('y', y + i * titleHeight - heightAdj));\n boxHeight = titleHeight * rows.length;\n }\n\n const bounds = label.node().getBBox();\n\n label\n .insert('rect', ':first-child')\n .attr('class', 'box')\n .attr('x', x - maxWidth / 2 - getConfig().state.padding / 2)\n .attr('y', y - boxHeight / 2 - getConfig().state.padding / 2 - 3.5)\n .attr('width', maxWidth + getConfig().state.padding)\n .attr('height', boxHeight + getConfig().state.padding);\n\n logger.info(bounds);\n\n //label.attr('transform', '0 -' + (bounds.y / 2));\n\n // Debug points\n // path.points.forEach(point => {\n // g.append('circle')\n // .style('stroke', 'red')\n // .style('fill', 'red')\n // .attr('r', 1)\n // .attr('cx', point.x)\n // .attr('cy', point.y);\n // });\n // g.append('circle')\n // .style('stroke', 'blue')\n // .style('fill', 'blue')\n // .attr('r', 1)\n // .attr('cx', x)\n // .attr('cy', y);\n }\n\n edgeCount++;\n};\n","import { logger } from '../../logger';\nimport { generateId } from '../../utils';\n\nconst clone = o => JSON.parse(JSON.stringify(o));\n\nlet rootDoc = [];\nconst setRootDoc = o => {\n logger.info('Setting root doc', o);\n // rootDoc = { id: 'root', doc: o };\n rootDoc = o;\n};\n\nconst getRootDoc = () => rootDoc;\n\nconst docTranslator = (parent, node, first) => {\n if (node.stmt === 'relation') {\n docTranslator(parent, node.state1, true);\n docTranslator(parent, node.state2, false);\n } else {\n if (node.stmt === 'state') {\n if (node.id === '[*]') {\n node.id = first ? parent.id + '_start' : parent.id + '_end';\n node.start = first;\n }\n }\n\n if (node.doc) {\n const doc = [];\n // Check for concurrency\n let i = 0;\n let currentDoc = [];\n for (i = 0; i < node.doc.length; i++) {\n if (node.doc[i].type === 'divider') {\n // debugger;\n const newNode = clone(node.doc[i]);\n newNode.doc = clone(currentDoc);\n doc.push(newNode);\n currentDoc = [];\n } else {\n currentDoc.push(node.doc[i]);\n }\n }\n\n // If any divider was encountered\n if (doc.length > 0 && currentDoc.length > 0) {\n const newNode = {\n stmt: 'state',\n id: generateId(),\n type: 'divider',\n doc: clone(currentDoc)\n };\n doc.push(clone(newNode));\n node.doc = doc;\n }\n\n node.doc.forEach(docNode => docTranslator(node, docNode, true));\n }\n }\n};\nconst getRootDocV2 = () => {\n docTranslator({ id: 'root' }, { id: 'root', doc: rootDoc }, true);\n return { id: 'root', doc: rootDoc };\n};\n\nconst extract = _doc => {\n // const res = { states: [], relations: [] };\n let doc;\n if (_doc.doc) {\n doc = _doc.doc;\n } else {\n doc = _doc;\n }\n // let doc = root.doc;\n // if (!doc) {\n // doc = root;\n // }\n logger.info(doc);\n clear();\n\n logger.info('Extract', doc);\n\n doc.forEach(item => {\n if (item.stmt === 'state') {\n addState(item.id, item.type, item.doc, item.description, item.note);\n }\n if (item.stmt === 'relation') {\n addRelation(item.state1.id, item.state2.id, item.description);\n }\n });\n};\n\nconst newDoc = () => {\n return {\n relations: [],\n states: {},\n documents: {}\n };\n};\n\nlet documents = {\n root: newDoc()\n};\n\nlet currentDocument = documents.root;\n\nlet startCnt = 0;\nlet endCnt = 0; // eslint-disable-line\n// let stateCnt = 0;\n\n/**\n * Function called by parser when a node definition has been found.\n * @param id\n * @param text\n * @param type\n * @param style\n */\nexport const addState = function(id, type, doc, descr, note) {\n if (typeof currentDocument.states[id] === 'undefined') {\n currentDocument.states[id] = {\n id: id,\n descriptions: [],\n type,\n doc,\n note\n };\n } else {\n if (!currentDocument.states[id].doc) {\n currentDocument.states[id].doc = doc;\n }\n if (!currentDocument.states[id].type) {\n currentDocument.states[id].type = type;\n }\n }\n if (descr) {\n logger.info('Adding state ', id, descr);\n if (typeof descr === 'string') addDescription(id, descr.trim());\n\n if (typeof descr === 'object') {\n descr.forEach(des => addDescription(id, des.trim()));\n }\n }\n\n if (note) currentDocument.states[id].note = note;\n};\n\nexport const clear = function() {\n documents = {\n root: newDoc()\n };\n currentDocument = documents.root;\n\n currentDocument = documents.root;\n\n startCnt = 0;\n endCnt = 0; // eslint-disable-line\n classes = [];\n};\n\nexport const getState = function(id) {\n return currentDocument.states[id];\n};\n\nexport const getStates = function() {\n return currentDocument.states;\n};\nexport const logDocuments = function() {\n logger.info('Documents = ', documents);\n};\nexport const getRelations = function() {\n return currentDocument.relations;\n};\n\nexport const addRelation = function(_id1, _id2, title) {\n let id1 = _id1;\n let id2 = _id2;\n let type1 = 'default';\n let type2 = 'default';\n if (_id1 === '[*]') {\n startCnt++;\n id1 = 'start' + startCnt;\n type1 = 'start';\n }\n if (_id2 === '[*]') {\n endCnt++;\n id2 = 'end' + startCnt;\n type2 = 'end';\n }\n addState(id1, type1);\n addState(id2, type2);\n currentDocument.relations.push({ id1, id2, title });\n};\n\nconst addDescription = function(id, _descr) {\n const theState = currentDocument.states[id];\n let descr = _descr;\n if (descr[0] === ':') {\n descr = descr.substr(1).trim();\n }\n\n theState.descriptions.push(descr);\n};\n\nexport const cleanupLabel = function(label) {\n if (label.substring(0, 1) === ':') {\n return label.substr(2).trim();\n } else {\n return label.trim();\n }\n};\n\nexport const lineType = {\n LINE: 0,\n DOTTED_LINE: 1\n};\n\nlet dividerCnt = 0;\nconst getDividerId = () => {\n dividerCnt++;\n return 'divider-id-' + dividerCnt;\n};\n\nlet classes = [];\n\nconst getClasses = () => classes;\n\nconst getDirection = () => 'TB';\n\nexport const relationType = {\n AGGREGATION: 0,\n EXTENSION: 1,\n COMPOSITION: 2,\n DEPENDENCY: 3\n};\n\nconst trimColon = str => (str && str[0] === ':' ? str.substr(1).trim() : str.trim());\n\nexport default {\n addState,\n clear,\n getState,\n getStates,\n getRelations,\n getClasses,\n getDirection,\n addRelation,\n getDividerId,\n // addDescription,\n cleanupLabel,\n lineType,\n relationType,\n logDocuments,\n getRootDoc,\n setRootDoc,\n getRootDocV2,\n extract,\n trimColon\n};\n","import graphlib from 'graphlib';\nimport { select } from 'd3';\nimport stateDb from './stateDb';\nimport state from './parser/stateDiagram';\nimport { getConfig } from '../../config';\n\nimport { render } from '../../dagre-wrapper/index.js';\nimport { logger } from '../../logger';\n\nconst conf = {};\nexport const setConf = function(cnf) {\n const keys = Object.keys(cnf);\n for (let i = 0; i < keys.length; i++) {\n conf[keys[i]] = cnf[keys[i]];\n }\n};\n\nlet nodeDb = {};\n\n/**\n * Returns the all the styles from classDef statements in the graph definition.\n * @returns {object} classDef styles\n */\nexport const getClasses = function(text) {\n logger.trace('Extracting classes');\n stateDb.clear();\n const parser = state.parser;\n parser.yy = stateDb;\n\n // Parse the graph definition\n parser.parse(text);\n return stateDb.getClasses();\n};\n\nconst setupNode = (g, parent, node, altFlag) => {\n // Add the node\n if (node.id !== 'root') {\n let shape = 'rect';\n if (node.start === true) {\n shape = 'start';\n }\n if (node.start === false) {\n shape = 'end';\n }\n if (node.type !== 'default') {\n shape = node.type;\n }\n\n if (!nodeDb[node.id]) {\n nodeDb[node.id] = {\n id: node.id,\n shape,\n description: node.id,\n classes: 'statediagram-state'\n };\n }\n\n // Build of the array of description strings accordinging\n if (node.description) {\n if (Array.isArray(nodeDb[node.id].description)) {\n // There already is an array of strings,add to it\n nodeDb[node.id].shape = 'rectWithTitle';\n nodeDb[node.id].description.push(node.description);\n } else {\n if (nodeDb[node.id].description.length > 0) {\n // if there is a description already transformit to an array\n nodeDb[node.id].shape = 'rectWithTitle';\n if (nodeDb[node.id].description === node.id) {\n // If the previous description was the is, remove it\n nodeDb[node.id].description = [node.description];\n } else {\n nodeDb[node.id].description = [nodeDb[node.id].description, node.description];\n }\n } else {\n nodeDb[node.id].shape = 'rect';\n nodeDb[node.id].description = node.description;\n }\n }\n }\n\n // Save data for description and group so that for instance a statement without description overwrites\n // one with description\n\n // group\n if (!nodeDb[node.id].type && node.doc) {\n logger.info('Setting cluser for ', node.id);\n nodeDb[node.id].type = 'group';\n nodeDb[node.id].shape = node.type === 'divider' ? 'divider' : 'roundedWithTitle';\n nodeDb[node.id].classes =\n nodeDb[node.id].classes +\n ' ' +\n (altFlag ? 'statediagram-cluster statediagram-cluster-alt' : 'statediagram-cluster');\n }\n\n const nodeData = {\n labelStyle: '',\n shape: nodeDb[node.id].shape,\n labelText: nodeDb[node.id].description,\n classes: nodeDb[node.id].classes, //classStr,\n style: '', //styles.style,\n id: node.id,\n type: nodeDb[node.id].type,\n padding: 15 //getConfig().flowchart.padding\n };\n\n if (node.note) {\n // Todo: set random id\n const noteData = {\n labelStyle: '',\n shape: 'note',\n labelText: node.note.text,\n classes: 'statediagram-note', //classStr,\n style: '', //styles.style,\n id: node.id + '----note',\n type: nodeDb[node.id].type,\n padding: 15 //getConfig().flowchart.padding\n };\n const groupData = {\n labelStyle: '',\n shape: 'noteGroup',\n labelText: node.note.text,\n classes: nodeDb[node.id].classes, //classStr,\n style: '', //styles.style,\n id: node.id + '----parent',\n type: 'group',\n padding: 0 //getConfig().flowchart.padding\n };\n g.setNode(node.id + '----parent', groupData);\n\n g.setNode(noteData.id, noteData);\n g.setNode(node.id, nodeData);\n\n g.setParent(node.id, node.id + '----parent');\n g.setParent(noteData.id, node.id + '----parent');\n\n let from = node.id;\n let to = noteData.id;\n\n if (node.note.position === 'left of') {\n from = noteData.id;\n to = node.id;\n }\n g.setEdge(from, to, {\n arrowhead: 'none',\n arrowType: '',\n style: 'fill:none',\n labelStyle: '',\n classes: 'transition note-edge',\n arrowheadStyle: 'fill: #333',\n labelpos: 'c',\n labelType: 'text',\n thickness: 'normal'\n });\n } else {\n g.setNode(node.id, nodeData);\n }\n }\n\n if (parent) {\n if (parent.id !== 'root') {\n logger.info('Setting node ', node.id, ' to be child of its parent ', parent.id);\n g.setParent(node.id, parent.id);\n }\n }\n if (node.doc) {\n logger.info('Adding nodes children ');\n setupDoc(g, node, node.doc, !altFlag);\n }\n};\nlet cnt = 0;\nconst setupDoc = (g, parent, doc, altFlag) => {\n logger.trace('items', doc);\n doc.forEach(item => {\n if (item.stmt === 'state' || item.stmt === 'default') {\n setupNode(g, parent, item, altFlag);\n } else if (item.stmt === 'relation') {\n setupNode(g, parent, item.state1, altFlag);\n setupNode(g, parent, item.state2, altFlag);\n const edgeData = {\n id: 'edge' + cnt,\n arrowhead: 'normal',\n arrowTypeEnd: 'arrow_barb',\n style: 'fill:none',\n labelStyle: '',\n label: item.description,\n arrowheadStyle: 'fill: #333',\n labelpos: 'c',\n labelType: 'text',\n thickness: 'normal',\n classes: 'transition'\n };\n let startId = item.state1.id;\n let endId = item.state2.id;\n\n g.setEdge(startId, endId, edgeData, cnt);\n cnt++;\n }\n });\n};\n\n/**\n * Draws a flowchart in the tag with id: id based on the graph definition in text.\n * @param text\n * @param id\n */\nexport const draw = function(text, id) {\n logger.info('Drawing state diagram (v2)', id);\n stateDb.clear();\n nodeDb = {};\n const parser = state.parser;\n parser.yy = stateDb;\n\n // Parse the graph definition\n try {\n parser.parse(text);\n } catch (err) {\n logger.debug('Parsing failed');\n }\n\n // Fetch the default direction, use TD if none was found\n let dir = stateDb.getDirection();\n if (typeof dir === 'undefined') {\n dir = 'LR';\n }\n\n const conf = getConfig().state;\n const nodeSpacing = conf.nodeSpacing || 50;\n const rankSpacing = conf.rankSpacing || 50;\n\n // Create the input mermaid.graph\n const g = new graphlib.Graph({\n multigraph: true,\n compound: true\n })\n .setGraph({\n rankdir: 'TB',\n nodesep: nodeSpacing,\n ranksep: rankSpacing,\n marginx: 8,\n marginy: 8\n })\n .setDefaultEdgeLabel(function() {\n return {};\n });\n\n logger.info(stateDb.getRootDocV2());\n stateDb.extract(stateDb.getRootDocV2());\n logger.info(stateDb.getRootDocV2());\n setupNode(g, undefined, stateDb.getRootDocV2(), true);\n\n // Set up an SVG group so that we can translate the final graph.\n const svg = select(`[id=\"${id}\"]`);\n\n // Run the renderer. This is what draws the final graph.\n const element = select('#' + id + ' g');\n render(element, g, ['barb'], 'statediagram', id);\n\n const padding = 8;\n // const svgBounds = svg.node().getBBox();\n // const width = svgBounds.width + padding * 2;\n // const height = svgBounds.height + padding * 2;\n // logger.debug(\n // `new ViewBox 0 0 ${width} ${height}`,\n // `translate(${padding + g._label.marginx}, ${padding + g._label.marginy})`\n // );\n\n // if (conf.useMaxWidth) {\n // svg.attr('width', '100%');\n // svg.attr('style', `max-width: ${width}px;`);\n // } else {\n // svg.attr('height', height);\n // svg.attr('width', width);\n // }\n\n // svg.attr('viewBox', `0 0 ${width} ${height}`);\n // svg\n // .select('g')\n // .attr('transform', `translate(${padding - g._label.marginx}, ${padding - svgBounds.y})`);\n\n const bounds = svg.node().getBBox();\n\n const width = bounds.width + padding * 2;\n const height = bounds.height + padding * 2;\n\n // diagram.attr('height', '100%');\n // diagram.attr('style', `width: ${bounds.width * 3 + conf.padding * 2};`);\n // diagram.attr('height', height);\n\n // Zoom in a bit\n svg.attr('width', width * 1.75);\n svg.attr('class', 'statediagram');\n // diagram.attr('height', bounds.height * 3 + conf.padding * 2);\n // svg.attr(\n // 'viewBox',\n // `${bounds.x - conf.padding} ${bounds.y - conf.padding} ` + width + ' ' + height\n // );\n\n const svgBounds = svg.node().getBBox();\n\n if (conf.useMaxWidth) {\n svg.attr('width', '100%');\n svg.attr('style', `max-width: ${width}px;`);\n } else {\n svg.attr('height', height);\n svg.attr('width', width);\n }\n\n // Ensure the viewBox includes the whole svgBounds area with extra space for padding\n const vBox = `${svgBounds.x - padding} ${svgBounds.y - padding} ${width} ${height}`;\n logger.debug(`viewBox ${vBox}`);\n svg.attr('viewBox', vBox);\n\n // Add label rects for non html labels\n if (!conf.htmlLabels) {\n const labels = document.querySelectorAll('[id=\"' + id + '\"] .edgeLabel .label');\n for (let k = 0; k < labels.length; k++) {\n const label = labels[k];\n\n // Get dimensions of label\n const dim = label.getBBox();\n\n const rect = document.createElementNS('http://www.w3.org/2000/svg', 'rect');\n rect.setAttribute('rx', 0);\n rect.setAttribute('ry', 0);\n rect.setAttribute('width', dim.width);\n rect.setAttribute('height', dim.height);\n rect.setAttribute('style', 'fill:#e8e8e8;');\n\n label.insertBefore(rect, label.firstChild);\n }\n }\n};\n\nexport default {\n setConf,\n getClasses,\n draw\n};\n","import { select } from 'd3';\nimport dagre from 'dagre';\nimport graphlib from 'graphlib';\nimport { logger } from '../../logger';\nimport stateDb from './stateDb';\nimport common from '../common/common';\nimport { parser } from './parser/stateDiagram';\n// import idCache from './id-cache';\nimport { drawState, addTitleAndBox, drawEdge } from './shapes';\nimport { getConfig } from '../../config';\n\nparser.yy = stateDb;\n\n// TODO Move conf object to main conf in mermaidAPI\nlet conf;\n\nconst transformationLog = {};\n\nexport const setConf = function() {};\n\n// Todo optimize\n\n/**\n * Setup arrow head and define the marker. The result is appended to the svg.\n */\nconst insertMarkers = function(elem) {\n elem\n .append('defs')\n .append('marker')\n .attr('id', 'dependencyEnd')\n .attr('refX', 19)\n .attr('refY', 7)\n .attr('markerWidth', 20)\n .attr('markerHeight', 28)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 19,7 L9,13 L14,7 L9,1 Z');\n};\n\n/**\n * Draws a flowchart in the tag with id: id based on the graph definition in text.\n * @param text\n * @param id\n */\nexport const draw = function(text, id) {\n conf = getConfig().state;\n parser.yy.clear();\n parser.parse(text);\n logger.debug('Rendering diagram ' + text);\n\n // Fetch the default direction, use TD if none was found\n const diagram = select(`[id='${id}']`);\n insertMarkers(diagram);\n\n // Layout graph, Create a new directed graph\n const graph = new graphlib.Graph({\n multigraph: true,\n compound: true,\n // acyclicer: 'greedy',\n rankdir: 'RL'\n // ranksep: '20'\n });\n\n // Default to assigning a new object as a label for each new edge.\n graph.setDefaultEdgeLabel(function() {\n return {};\n });\n\n const rootDoc = stateDb.getRootDoc();\n renderDoc(rootDoc, diagram, undefined, false);\n\n const padding = conf.padding;\n const bounds = diagram.node().getBBox();\n\n const width = bounds.width + padding * 2;\n const height = bounds.height + padding * 2;\n\n if (conf.useMaxWidth) {\n diagram.attr('width', '100%');\n diagram.attr('style', `max-width: ${width * 1.75}px;`);\n } else {\n // Zoom in a bit\n diagram.attr('width', width * 1.75);\n }\n // diagram.attr('height', bounds.height * 3 + conf.padding * 2);\n diagram.attr(\n 'viewBox',\n `${bounds.x - conf.padding} ${bounds.y - conf.padding} ` + width + ' ' + height\n );\n};\nconst getLabelWidth = text => {\n return text ? text.length * conf.fontSizeFactor : 1;\n};\n\nconst renderDoc = (doc, diagram, parentId, altBkg) => {\n // // Layout graph, Create a new directed graph\n const graph = new graphlib.Graph({\n compound: true,\n multigraph: true\n });\n\n let i;\n let edgeFreeDoc = true;\n for (i = 0; i < doc.length; i++) {\n if (doc[i].stmt === 'relation') {\n edgeFreeDoc = false;\n break;\n }\n }\n\n // Set an object for the graph label\n if (parentId)\n graph.setGraph({\n rankdir: 'LR',\n multigraph: true,\n compound: true,\n // acyclicer: 'greedy',\n ranker: 'tight-tree',\n ranksep: edgeFreeDoc ? 1 : conf.edgeLengthFactor,\n nodeSep: edgeFreeDoc ? 1 : 50,\n isMultiGraph: true\n // ranksep: 5,\n // nodesep: 1\n });\n else {\n graph.setGraph({\n rankdir: 'TB',\n multigraph: true,\n compound: true,\n // isCompound: true,\n // acyclicer: 'greedy',\n // ranker: 'longest-path'\n ranksep: edgeFreeDoc ? 1 : conf.edgeLengthFactor,\n nodeSep: edgeFreeDoc ? 1 : 50,\n ranker: 'tight-tree',\n // ranker: 'network-simplex'\n isMultiGraph: true\n });\n }\n\n // Default to assigning a new object as a label for each new edge.\n graph.setDefaultEdgeLabel(function() {\n return {};\n });\n\n stateDb.extract(doc);\n const states = stateDb.getStates();\n const relations = stateDb.getRelations();\n\n const keys = Object.keys(states);\n\n let first = true;\n\n for (let i = 0; i < keys.length; i++) {\n const stateDef = states[keys[i]];\n\n if (parentId) {\n stateDef.parentId = parentId;\n }\n\n let node;\n if (stateDef.doc) {\n let sub = diagram\n .append('g')\n .attr('id', stateDef.id)\n .attr('class', 'stateGroup');\n node = renderDoc(stateDef.doc, sub, stateDef.id, !altBkg);\n\n if (first) {\n // first = false;\n sub = addTitleAndBox(sub, stateDef, altBkg);\n let boxBounds = sub.node().getBBox();\n node.width = boxBounds.width;\n node.height = boxBounds.height + conf.padding / 2;\n transformationLog[stateDef.id] = { y: conf.compositTitleSize };\n } else {\n // sub = addIdAndBox(sub, stateDef);\n let boxBounds = sub.node().getBBox();\n node.width = boxBounds.width;\n node.height = boxBounds.height;\n // transformationLog[stateDef.id] = { y: conf.compositTitleSize };\n }\n } else {\n node = drawState(diagram, stateDef, graph);\n }\n\n if (stateDef.note) {\n // Draw note note\n const noteDef = {\n descriptions: [],\n id: stateDef.id + '-note',\n note: stateDef.note,\n type: 'note'\n };\n const note = drawState(diagram, noteDef, graph);\n\n // graph.setNode(node.id, node);\n if (stateDef.note.position === 'left of') {\n graph.setNode(node.id + '-note', note);\n graph.setNode(node.id, node);\n } else {\n graph.setNode(node.id, node);\n graph.setNode(node.id + '-note', note);\n }\n // graph.setNode(node.id);\n graph.setParent(node.id, node.id + '-group');\n graph.setParent(node.id + '-note', node.id + '-group');\n } else {\n // Add nodes to the graph. The first argument is the node id. The second is\n // metadata about the node. In this case we're going to add labels to each of\n // our nodes.\n graph.setNode(node.id, node);\n }\n }\n\n logger.debug('Count=', graph.nodeCount(), graph);\n let cnt = 0;\n relations.forEach(function(relation) {\n cnt++;\n logger.debug('Setting edge', relation);\n graph.setEdge(\n relation.id1,\n relation.id2,\n {\n relation: relation,\n width: getLabelWidth(relation.title),\n height: conf.labelHeight * common.getRows(relation.title).length,\n labelpos: 'c'\n },\n 'id' + cnt\n );\n });\n\n dagre.layout(graph);\n\n logger.debug('Graph after layout', graph.nodes());\n const svgElem = diagram.node();\n\n graph.nodes().forEach(function(v) {\n if (typeof v !== 'undefined' && typeof graph.node(v) !== 'undefined') {\n logger.warn('Node ' + v + ': ' + JSON.stringify(graph.node(v)));\n select('#' + svgElem.id + ' #' + v).attr(\n 'transform',\n 'translate(' +\n (graph.node(v).x - graph.node(v).width / 2) +\n ',' +\n (graph.node(v).y +\n (transformationLog[v] ? transformationLog[v].y : 0) -\n graph.node(v).height / 2) +\n ' )'\n );\n select('#' + svgElem.id + ' #' + v).attr(\n 'data-x-shift',\n graph.node(v).x - graph.node(v).width / 2\n );\n const dividers = document.querySelectorAll('#' + svgElem.id + ' #' + v + ' .divider');\n dividers.forEach(divider => {\n const parent = divider.parentElement;\n let pWidth = 0;\n let pShift = 0;\n if (parent) {\n if (parent.parentElement) pWidth = parent.parentElement.getBBox().width;\n pShift = parseInt(parent.getAttribute('data-x-shift'), 10);\n if (Number.isNaN(pShift)) {\n pShift = 0;\n }\n }\n divider.setAttribute('x1', 0 - pShift + 8);\n divider.setAttribute('x2', pWidth - pShift - 8);\n });\n } else {\n logger.debug('No Node ' + v + ': ' + JSON.stringify(graph.node(v)));\n }\n });\n\n let stateBox = svgElem.getBBox();\n\n graph.edges().forEach(function(e) {\n if (typeof e !== 'undefined' && typeof graph.edge(e) !== 'undefined') {\n logger.debug('Edge ' + e.v + ' -> ' + e.w + ': ' + JSON.stringify(graph.edge(e)));\n drawEdge(diagram, graph.edge(e), graph.edge(e).relation);\n }\n });\n\n stateBox = svgElem.getBBox();\n\n const stateInfo = {\n id: parentId ? parentId : 'root',\n label: parentId ? parentId : 'root',\n width: 0,\n height: 0\n };\n\n stateInfo.width = stateBox.width + 2 * conf.padding;\n stateInfo.height = stateBox.height + 2 * conf.padding;\n\n logger.debug('Doc rendered', stateInfo, graph);\n return stateInfo;\n};\n\nexport default {\n setConf,\n draw\n};\n","const getStyles = options =>\n `g.stateGroup text {\n fill: ${options.nodeBorder};\n stroke: none;\n font-size: 10px;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family);\n}\ng.stateGroup text {\n fill: ${options.textColor};\n stroke: none;\n font-size: 10px;\n\n}\ng.stateGroup .state-title {\n font-weight: bolder;\n fill: ${options.labelColor};\n}\n\ng.stateGroup rect {\n fill: ${options.nodeBkg};\n stroke: ${options.nodeBorder};\n}\n\ng.stateGroup line {\n stroke: ${options.lineColor};\n stroke-width: 1;\n}\n\n.transition {\n stroke: ${options.lineColor};\n stroke-width: 1;\n fill: none;\n}\n\n.stateGroup .composit {\n fill: ${options.background};\n border-bottom: 1px\n}\n\n.stateGroup .alt-composit {\n fill: #e0e0e0;\n border-bottom: 1px\n}\n\n.state-note {\n stroke: ${options.noteBorderColor};\n fill: ${options.noteBkgColor};\n\n text {\n fill: black;\n stroke: none;\n font-size: 10px;\n }\n}\n\n.stateLabel .box {\n stroke: none;\n stroke-width: 0;\n fill: ${options.nodeBkg};\n opacity: 0.5;\n}\n\n.stateLabel text {\n fill: ${options.labelColor};\n font-size: 10px;\n font-weight: bold;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family);\n}\n\n.node circle.state-start {\n fill: black;\n stroke: black;\n}\n.node circle.state-end {\n fill: black;\n stroke: white;\n stroke-width: 1.5\n}\n\n.node rect {\n fill: ${options.mainBkg};\n stroke: ${options.nodeBorder};\n stroke-width: 1px;\n}\n#statediagram-barbEnd {\n fill: ${options.lineColor};\n}\n\n.statediagram-cluster rect {\n fill: ${options.nodeBkg};\n stroke: ${options.nodeBorder};\n stroke-width: 1px;\n}\n\n.cluster-label, .nodeLabel {\n color: ${options.textColor};\n}\n\n.statediagram-cluster rect.outer {\n rx: 5px;\n ry: 5px;\n}\n.statediagram-state .divider {\n stroke: ${options.nodeBorder};\n}\n\n.statediagram-state .title-state {\n rx: 5px;\n ry: 5px;\n}\n.statediagram-cluster.statediagram-cluster .inner {\n fill: ${options.background};\n}\n.statediagram-cluster.statediagram-cluster-alt .inner {\n fill: #e0e0e0;\n}\n\n.statediagram-cluster .inner {\n rx:0;\n ry:0;\n}\n\n.statediagram-state rect.basic {\n rx: 5px;\n ry: 5px;\n}\n.statediagram-state rect.divider {\n stroke-dasharray: 10,10;\n fill: ${options.altBackground ? options.altBackground : '#efefef'};\n}\n\n.note-edge {\n stroke-dasharray: 5;\n}\n\n.statediagram-note rect {\n fill: ${options.noteBkgColor};\n stroke: ${options.noteBorderColor};\n stroke-width: 1px;\n rx: 0;\n ry: 0;\n}\n.statediagram-note rect {\n fill: ${options.noteBkgColor};\n stroke: ${options.noteBorderColor};\n stroke-width: 1px;\n rx: 0;\n ry: 0;\n}\n\n.statediagram-note .nodeLabel {\n color: ${options.noteTextColor};\n}\n\n#dependencyStart, #dependencyEnd {\n fill: ${options.lineColor};\n stroke: ${options.lineColor};\n stroke-width: 1;\n}\n`;\n\nexport default getStyles;\n","let title = '';\nlet currentSection = '';\n\nconst sections = [];\nconst tasks = [];\nconst rawTasks = [];\n\nexport const clear = function() {\n sections.length = 0;\n tasks.length = 0;\n currentSection = '';\n title = '';\n rawTasks.length = 0;\n};\n\nexport const setTitle = function(txt) {\n title = txt;\n};\n\nexport const getTitle = function() {\n return title;\n};\n\nexport const addSection = function(txt) {\n currentSection = txt;\n sections.push(txt);\n};\n\nexport const getSections = function() {\n return sections;\n};\n\nexport const getTasks = function() {\n let allItemsProcessed = compileTasks();\n const maxDepth = 100;\n let iterationCount = 0;\n while (!allItemsProcessed && iterationCount < maxDepth) {\n allItemsProcessed = compileTasks();\n iterationCount++;\n }\n\n tasks.push(...rawTasks);\n\n return tasks;\n};\n\nconst updateActors = function() {\n const tempActors = [];\n tasks.forEach(task => {\n if (task.people) {\n tempActors.push(...task.people);\n }\n });\n\n const unique = new Set(tempActors);\n return [...unique].sort();\n};\n\nexport const addTask = function(descr, taskData) {\n const pieces = taskData.substr(1).split(':');\n\n let score = 0;\n let peeps = [];\n if (pieces.length === 1) {\n score = Number(pieces[0]);\n peeps = [];\n } else {\n score = Number(pieces[0]);\n peeps = pieces[1].split(',');\n }\n const peopleList = peeps.map(s => s.trim());\n\n const rawTask = {\n section: currentSection,\n type: currentSection,\n people: peopleList,\n task: descr,\n score\n };\n\n rawTasks.push(rawTask);\n};\n\nexport const addTaskOrg = function(descr) {\n const newTask = {\n section: currentSection,\n type: currentSection,\n description: descr,\n task: descr,\n classes: []\n };\n tasks.push(newTask);\n};\n\nconst compileTasks = function() {\n const compileTask = function(pos) {\n return rawTasks[pos].processed;\n };\n\n let allProcessed = true;\n for (let i = 0; i < rawTasks.length; i++) {\n compileTask(i);\n\n allProcessed = allProcessed && rawTasks[i].processed;\n }\n return allProcessed;\n};\n\nconst getActors = function() {\n return updateActors();\n};\n\nexport default {\n clear,\n setTitle,\n getTitle,\n addSection,\n getSections,\n getTasks,\n addTask,\n addTaskOrg,\n getActors\n};\n","import { select } from 'd3';\nimport { parser } from './parser/journey';\nimport journeyDb from './journeyDb';\nimport svgDraw from './svgDraw';\n\nparser.yy = journeyDb;\n\nconst conf = {\n leftMargin: 150,\n diagramMarginX: 50,\n diagramMarginY: 20,\n // Margin between tasks\n taskMargin: 50,\n // Width of task boxes\n width: 150,\n // Height of task boxes\n height: 50,\n taskFontSize: 14,\n taskFontFamily: '\"Open-Sans\", \"sans-serif\"',\n // Margin around loop boxes\n boxMargin: 10,\n boxTextMargin: 5,\n noteMargin: 10,\n // Space between messages\n messageMargin: 35,\n // Multiline message alignment\n messageAlign: 'center',\n // Depending on css styling this might need adjustment\n // Projects the edge of the diagram downwards\n bottomMarginAdj: 1,\n\n // width of activation box\n activationWidth: 10,\n\n // text placement as: tspan | fo | old only text as before\n textPlacement: 'fo',\n\n actorColours: ['#8FBC8F', '#7CFC00', '#00FFFF', '#20B2AA', '#B0E0E6', '#FFFFE0'],\n\n sectionFills: ['#191970', '#8B008B', '#4B0082', '#2F4F4F', '#800000', '#8B4513', '#00008B'],\n sectionColours: ['#fff']\n};\n\nexport const setConf = function(cnf) {\n const keys = Object.keys(cnf);\n\n keys.forEach(function(key) {\n conf[key] = cnf[key];\n });\n};\n\nconst actors = {};\n\nfunction drawActorLegend(diagram) {\n // Draw the actors\n let yPos = 60;\n Object.keys(actors).forEach(person => {\n const colour = actors[person];\n\n const circleData = {\n cx: 20,\n cy: yPos,\n r: 7,\n fill: colour,\n stroke: '#000'\n };\n svgDraw.drawCircle(diagram, circleData);\n\n const labelData = {\n x: 40,\n y: yPos + 7,\n fill: '#666',\n text: person\n };\n svgDraw.drawText(diagram, labelData);\n\n yPos += 20;\n });\n}\n\nconst LEFT_MARGIN = conf.leftMargin;\nexport const draw = function(text, id) {\n parser.yy.clear();\n parser.parse(text + '\\n');\n\n bounds.init();\n const diagram = select('#' + id);\n diagram.attr('xmlns:xlink', 'http://www.w3.org/1999/xlink');\n\n svgDraw.initGraphics(diagram);\n\n const tasks = parser.yy.getTasks();\n const title = parser.yy.getTitle();\n\n const actorNames = parser.yy.getActors();\n for (let member in actors) delete actors[member];\n let actorPos = 0;\n actorNames.forEach(actorName => {\n actors[actorName] = conf.actorColours[actorPos % conf.actorColours.length];\n actorPos++;\n });\n\n drawActorLegend(diagram);\n bounds.insert(0, 0, LEFT_MARGIN, Object.keys(actors).length * 50);\n\n drawTasks(diagram, tasks, 0);\n\n const box = bounds.getBounds();\n if (title) {\n diagram\n .append('text')\n .text(title)\n .attr('x', LEFT_MARGIN)\n .attr('font-size', '4ex')\n .attr('font-weight', 'bold')\n .attr('y', 25);\n }\n const height = box.stopy - box.starty + 2 * conf.diagramMarginY;\n const width = LEFT_MARGIN + box.stopx + 2 * conf.diagramMarginX;\n if (conf.useMaxWidth) {\n diagram.attr('height', '100%');\n diagram.attr('width', '100%');\n diagram.attr('style', 'max-width:' + width + 'px;');\n } else {\n diagram.attr('height', height);\n diagram.attr('width', width);\n }\n\n // Draw activity line\n diagram\n .append('line')\n .attr('x1', LEFT_MARGIN)\n .attr('y1', conf.height * 4) // One section head + one task + margins\n .attr('x2', width - LEFT_MARGIN - 4) // Subtract stroke width so arrow point is retained\n .attr('y2', conf.height * 4)\n .attr('stroke-width', 4)\n .attr('stroke', 'black')\n .attr('marker-end', 'url(#arrowhead)');\n\n const extraVertForTitle = title ? 70 : 0;\n diagram.attr('viewBox', `${box.startx} -25 ${width} ${height + extraVertForTitle}`);\n diagram.attr('preserveAspectRatio', 'xMinYMin meet');\n};\n\nexport const bounds = {\n data: {\n startx: undefined,\n stopx: undefined,\n starty: undefined,\n stopy: undefined\n },\n verticalPos: 0,\n\n sequenceItems: [],\n init: function() {\n this.sequenceItems = [];\n this.data = {\n startx: undefined,\n stopx: undefined,\n starty: undefined,\n stopy: undefined\n };\n this.verticalPos = 0;\n },\n updateVal: function(obj, key, val, fun) {\n if (typeof obj[key] === 'undefined') {\n obj[key] = val;\n } else {\n obj[key] = fun(val, obj[key]);\n }\n },\n updateBounds: function(startx, starty, stopx, stopy) {\n const _self = this;\n let cnt = 0;\n function updateFn(type) {\n return function updateItemBounds(item) {\n cnt++;\n // The loop sequenceItems is a stack so the biggest margins in the beginning of the sequenceItems\n const n = _self.sequenceItems.length - cnt + 1;\n\n _self.updateVal(item, 'starty', starty - n * conf.boxMargin, Math.min);\n _self.updateVal(item, 'stopy', stopy + n * conf.boxMargin, Math.max);\n\n _self.updateVal(bounds.data, 'startx', startx - n * conf.boxMargin, Math.min);\n _self.updateVal(bounds.data, 'stopx', stopx + n * conf.boxMargin, Math.max);\n\n if (!(type === 'activation')) {\n _self.updateVal(item, 'startx', startx - n * conf.boxMargin, Math.min);\n _self.updateVal(item, 'stopx', stopx + n * conf.boxMargin, Math.max);\n\n _self.updateVal(bounds.data, 'starty', starty - n * conf.boxMargin, Math.min);\n _self.updateVal(bounds.data, 'stopy', stopy + n * conf.boxMargin, Math.max);\n }\n };\n }\n\n this.sequenceItems.forEach(updateFn());\n },\n insert: function(startx, starty, stopx, stopy) {\n const _startx = Math.min(startx, stopx);\n const _stopx = Math.max(startx, stopx);\n const _starty = Math.min(starty, stopy);\n const _stopy = Math.max(starty, stopy);\n\n this.updateVal(bounds.data, 'startx', _startx, Math.min);\n this.updateVal(bounds.data, 'starty', _starty, Math.min);\n this.updateVal(bounds.data, 'stopx', _stopx, Math.max);\n this.updateVal(bounds.data, 'stopy', _stopy, Math.max);\n\n this.updateBounds(_startx, _starty, _stopx, _stopy);\n },\n bumpVerticalPos: function(bump) {\n this.verticalPos = this.verticalPos + bump;\n this.data.stopy = this.verticalPos;\n },\n getVerticalPos: function() {\n return this.verticalPos;\n },\n getBounds: function() {\n return this.data;\n }\n};\n\nconst fills = conf.sectionFills;\nconst textColours = conf.sectionColours;\n\nexport const drawTasks = function(diagram, tasks, verticalPos) {\n let lastSection = '';\n const sectionVHeight = conf.height * 2 + conf.diagramMarginY;\n const taskPos = verticalPos + sectionVHeight;\n\n let sectionNumber = 0;\n let fill = '#CCC';\n let colour = 'black';\n let num = 0;\n\n // Draw the tasks\n for (let i = 0; i < tasks.length; i++) {\n let task = tasks[i];\n if (lastSection !== task.section) {\n fill = fills[sectionNumber % fills.length];\n num = sectionNumber % fills.length;\n colour = textColours[sectionNumber % textColours.length];\n\n const section = {\n x: i * conf.taskMargin + i * conf.width + LEFT_MARGIN,\n y: 50,\n text: task.section,\n fill,\n num,\n colour\n };\n\n svgDraw.drawSection(diagram, section, conf);\n lastSection = task.section;\n sectionNumber++;\n }\n\n // Collect the actors involved in the task\n const taskActors = task.people.reduce((acc, actorName) => {\n if (actors[actorName]) {\n acc[actorName] = actors[actorName];\n }\n\n return acc;\n }, {});\n\n // Add some rendering data to the object\n task.x = i * conf.taskMargin + i * conf.width + LEFT_MARGIN;\n task.y = taskPos;\n task.width = conf.diagramMarginX;\n task.height = conf.diagramMarginY;\n task.colour = colour;\n task.fill = fill;\n task.num = num;\n task.actors = taskActors;\n\n // Draw the box with the attached line\n svgDraw.drawTask(diagram, task, conf);\n bounds.insert(task.x, task.y, task.x + task.width + conf.taskMargin, 300 + 5 * 30); // stopy is the length of the descenders.\n }\n};\n\nexport default {\n setConf,\n draw\n};\n","/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[6,8,10,11,12,13],$V1=[1,9],$V2=[1,10],$V3=[1,11];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"journey\":4,\"document\":5,\"EOF\":6,\"line\":7,\"SPACE\":8,\"statement\":9,\"NL\":10,\"title\":11,\"section\":12,\"taskName\":13,\"taskData\":14,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",4:\"journey\",6:\"EOF\",8:\"SPACE\",10:\"NL\",11:\"title\",12:\"section\",13:\"taskName\",14:\"taskData\"},\nproductions_: [0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[9,1],[9,1],[9,2]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 1:\n return $$[$0-1]; \nbreak;\ncase 2:\n this.$ = [] \nbreak;\ncase 3:\n$$[$0-1].push($$[$0]);this.$ = $$[$0-1]\nbreak;\ncase 4: case 5:\n this.$ = $$[$0] \nbreak;\ncase 6: case 7:\n this.$=[];\nbreak;\ncase 8:\nyy.setTitle($$[$0].substr(6));this.$=$$[$0].substr(6);\nbreak;\ncase 9:\nyy.addSection($$[$0].substr(8));this.$=$$[$0].substr(8);\nbreak;\ncase 10:\nyy.addTask($$[$0-1], $$[$0]);this.$='task';\nbreak;\n}\n},\ntable: [{3:1,4:[1,2]},{1:[3]},o($V0,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:$V1,12:$V2,13:$V3},o($V0,[2,7],{1:[2,1]}),o($V0,[2,3]),{9:12,11:$V1,12:$V2,13:$V3},o($V0,[2,5]),o($V0,[2,6]),o($V0,[2,8]),o($V0,[2,9]),{14:[1,13]},o($V0,[2,4]),o($V0,[2,10])],\ndefaultActions: {},\nparseError: function parseError (str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer.lex() || EOF;\n if (typeof token !== 'number') {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {\"case-insensitive\":true},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0:return 10;\nbreak;\ncase 1:/* skip whitespace */\nbreak;\ncase 2:/* skip comments */\nbreak;\ncase 3:/* skip comments */\nbreak;\ncase 4:return 4;\nbreak;\ncase 5:return 11;\nbreak;\ncase 6:return 12;\nbreak;\ncase 7:return 13;\nbreak;\ncase 8:return 14;\nbreak;\ncase 9:return ':';\nbreak;\ncase 10:return 6;\nbreak;\ncase 11:return 'INVALID';\nbreak;\n}\n},\nrules: [/^(?:[\\n]+)/i,/^(?:\\s+)/i,/^(?:#[^\\n]*)/i,/^(?:%[^\\n]*)/i,/^(?:journey\\b)/i,/^(?:title\\s[^#\\n;]+)/i,/^(?:section\\s[^#:\\n;]+)/i,/^(?:[^#:\\n;]+)/i,/^(?::[^#\\n;]+)/i,/^(?::)/i,/^(?:$)/i,/^(?:.)/i],\nconditions: {\"INITIAL\":{\"rules\":[0,1,2,3,4,5,6,7,8,9,10,11],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain (args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}","const getStyles = options =>\n `.label {\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family);\n color: ${options.textColor};\n }\n .mouth {\n stroke: #666;\n }\n\n line {\n stroke: ${options.textColor}\n }\n\n .legend {\n fill: ${options.textColor};\n }\n\n .label text {\n fill: #333;\n }\n .label {\n color: ${options.textColor}\n }\n\n .face {\n fill: #FFF8DC;\n stroke: #999;\n }\n\n .node rect,\n .node circle,\n .node ellipse,\n .node polygon,\n .node path {\n fill: ${options.mainBkg};\n stroke: ${options.nodeBorder};\n stroke-width: 1px;\n }\n\n .node .label {\n text-align: center;\n }\n .node.clickable {\n cursor: pointer;\n }\n\n .arrowheadPath {\n fill: ${options.arrowheadColor};\n }\n\n .edgePath .path {\n stroke: ${options.lineColor};\n stroke-width: 1.5px;\n }\n\n .flowchart-link {\n stroke: ${options.lineColor};\n fill: none;\n }\n\n .edgeLabel {\n background-color: ${options.edgeLabelBackground};\n rect {\n opacity: 0.5;\n }\n text-align: center;\n }\n\n .cluster rect {\n fill: ${options.secondBkg};\n stroke: ${options.clusterBorder};\n stroke-width: 1px;\n }\n\n .cluster text {\n fill: ${options.titleColor};\n }\n\n div.mermaidTooltip {\n position: absolute;\n text-align: center;\n max-width: 200px;\n padding: 2px;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family);\n font-size: 12px;\n background: ${options.secondBkg};\n border: 1px solid ${options.border2};\n border-radius: 2px;\n pointer-events: none;\n z-index: 100;\n }\n\n .task-type-0, .section-type-0 {\n ${options.fillType0 ? `fill: ${options.fillType0}` : ''};\n }\n .task-type-1, .section-type-1 {\n ${options.fillType0 ? `fill: ${options.fillType1}` : ''};\n }\n .task-type-2, .section-type-2 {\n ${options.fillType0 ? `fill: ${options.fillType2}` : ''};\n }\n .task-type-3, .section-type-3 {\n ${options.fillType0 ? `fill: ${options.fillType3}` : ''};\n }\n .task-type-4, .section-type-4 {\n ${options.fillType0 ? `fill: ${options.fillType4}` : ''};\n }\n .task-type-5, .section-type-5 {\n ${options.fillType0 ? `fill: ${options.fillType5}` : ''};\n }\n .task-type-6, .section-type-6 {\n ${options.fillType0 ? `fill: ${options.fillType6}` : ''};\n }\n .task-type-7, .section-type-7 {\n ${options.fillType0 ? `fill: ${options.fillType7}` : ''};\n }\n`;\n\nexport default getStyles;\n","import { arc as d3arc } from 'd3';\n\nexport const drawRect = function(elem, rectData) {\n const rectElem = elem.append('rect');\n rectElem.attr('x', rectData.x);\n rectElem.attr('y', rectData.y);\n rectElem.attr('fill', rectData.fill);\n rectElem.attr('stroke', rectData.stroke);\n rectElem.attr('width', rectData.width);\n rectElem.attr('height', rectData.height);\n rectElem.attr('rx', rectData.rx);\n rectElem.attr('ry', rectData.ry);\n\n if (typeof rectData.class !== 'undefined') {\n rectElem.attr('class', rectData.class);\n }\n\n return rectElem;\n};\n\nexport const drawFace = function(element, faceData) {\n const radius = 15;\n const circleElement = element\n .append('circle')\n .attr('cx', faceData.cx)\n .attr('cy', faceData.cy)\n .attr('class', 'face')\n .attr('r', radius)\n .attr('stroke-width', 2)\n .attr('overflow', 'visible');\n\n const face = element.append('g');\n\n //left eye\n face\n .append('circle')\n .attr('cx', faceData.cx - radius / 3)\n .attr('cy', faceData.cy - radius / 3)\n .attr('r', 1.5)\n .attr('stroke-width', 2)\n .attr('fill', '#666')\n .attr('stroke', '#666');\n\n //right eye\n face\n .append('circle')\n .attr('cx', faceData.cx + radius / 3)\n .attr('cy', faceData.cy - radius / 3)\n .attr('r', 1.5)\n .attr('stroke-width', 2)\n .attr('fill', '#666')\n .attr('stroke', '#666');\n\n function smile(face) {\n const arc = d3arc()\n .startAngle(Math.PI / 2)\n .endAngle(3 * (Math.PI / 2))\n .innerRadius(radius / 2)\n .outerRadius(radius / 2.2);\n //mouth\n face\n .append('path')\n .attr('class', 'mouth')\n .attr('d', arc)\n .attr('transform', 'translate(' + faceData.cx + ',' + (faceData.cy + 2) + ')');\n }\n\n function sad(face) {\n const arc = d3arc()\n .startAngle((3 * Math.PI) / 2)\n .endAngle(5 * (Math.PI / 2))\n .innerRadius(radius / 2)\n .outerRadius(radius / 2.2);\n //mouth\n face\n .append('path')\n .attr('class', 'mouth')\n .attr('d', arc)\n .attr('transform', 'translate(' + faceData.cx + ',' + (faceData.cy + 7) + ')');\n }\n\n function ambivalent(face) {\n face\n .append('line')\n .attr('class', 'mouth')\n .attr('stroke', 2)\n .attr('x1', faceData.cx - 5)\n .attr('y1', faceData.cy + 7)\n .attr('x2', faceData.cx + 5)\n .attr('y2', faceData.cy + 7)\n .attr('class', 'mouth')\n .attr('stroke-width', '1px')\n .attr('stroke', '#666');\n }\n\n if (faceData.score > 3) {\n smile(face);\n } else if (faceData.score < 3) {\n sad(face);\n } else {\n ambivalent(face);\n }\n\n return circleElement;\n};\n\nexport const drawCircle = function(element, circleData) {\n const circleElement = element.append('circle');\n circleElement.attr('cx', circleData.cx);\n circleElement.attr('cy', circleData.cy);\n circleElement.attr('fill', circleData.fill);\n circleElement.attr('stroke', circleData.stroke);\n circleElement.attr('r', circleData.r);\n\n if (typeof circleElement.class !== 'undefined') {\n circleElement.attr('class', circleElement.class);\n }\n\n if (typeof circleData.title !== 'undefined') {\n circleElement.append('title').text(circleData.title);\n }\n\n return circleElement;\n};\n\nexport const drawText = function(elem, textData) {\n // Remove and ignore br:s\n const nText = textData.text.replace(/
/gi, ' ');\n\n const textElem = elem.append('text');\n textElem.attr('x', textData.x);\n textElem.attr('y', textData.y);\n textElem.attr('class', 'legend');\n\n textElem.style('text-anchor', textData.anchor);\n\n if (typeof textData.class !== 'undefined') {\n textElem.attr('class', textData.class);\n }\n\n const span = textElem.append('tspan');\n span.attr('x', textData.x + textData.textMargin * 2);\n span.text(nText);\n\n return textElem;\n};\n\nexport const drawLabel = function(elem, txtObject) {\n function genPoints(x, y, width, height, cut) {\n return (\n x +\n ',' +\n y +\n ' ' +\n (x + width) +\n ',' +\n y +\n ' ' +\n (x + width) +\n ',' +\n (y + height - cut) +\n ' ' +\n (x + width - cut * 1.2) +\n ',' +\n (y + height) +\n ' ' +\n x +\n ',' +\n (y + height)\n );\n }\n const polygon = elem.append('polygon');\n polygon.attr('points', genPoints(txtObject.x, txtObject.y, 50, 20, 7));\n polygon.attr('class', 'labelBox');\n\n txtObject.y = txtObject.y + txtObject.labelMargin;\n txtObject.x = txtObject.x + 0.5 * txtObject.labelMargin;\n drawText(elem, txtObject);\n};\n\nexport const drawSection = function(elem, section, conf) {\n const g = elem.append('g');\n\n const rect = getNoteRect();\n rect.x = section.x;\n rect.y = section.y;\n rect.fill = section.fill;\n rect.width = conf.width;\n rect.height = conf.height;\n rect.class = 'journey-section section-type-' + section.num;\n rect.rx = 3;\n rect.ry = 3;\n drawRect(g, rect);\n\n _drawTextCandidateFunc(conf)(\n section.text,\n g,\n rect.x,\n rect.y,\n rect.width,\n rect.height,\n { class: 'journey-section section-type-' + section.num },\n conf,\n section.colour\n );\n};\n\nlet taskCount = -1;\n/**\n * Draws an actor in the diagram with the attaced line\n * @param elem The HTML element\n * @param task The task to render\n * @param conf The global configuration\n */\nexport const drawTask = function(elem, task, conf) {\n const center = task.x + conf.width / 2;\n const g = elem.append('g');\n taskCount++;\n const maxHeight = 300 + 5 * 30;\n g.append('line')\n .attr('id', 'task' + taskCount)\n .attr('x1', center)\n .attr('y1', task.y)\n .attr('x2', center)\n .attr('y2', maxHeight)\n .attr('class', 'task-line')\n .attr('stroke-width', '1px')\n .attr('stroke-dasharray', '4 2')\n .attr('stroke', '#666');\n\n drawFace(g, {\n cx: center,\n cy: 300 + (5 - task.score) * 30,\n score: task.score\n });\n\n const rect = getNoteRect();\n rect.x = task.x;\n rect.y = task.y;\n rect.fill = task.fill;\n rect.width = conf.width;\n rect.height = conf.height;\n rect.class = 'task task-type-' + task.num;\n rect.rx = 3;\n rect.ry = 3;\n drawRect(g, rect);\n\n let xPos = task.x + 14;\n task.people.forEach(person => {\n const colour = task.actors[person];\n\n const circle = {\n cx: xPos,\n cy: task.y,\n r: 7,\n fill: colour,\n stroke: '#000',\n title: person\n };\n\n drawCircle(g, circle);\n xPos += 10;\n });\n\n _drawTextCandidateFunc(conf)(\n task.task,\n g,\n rect.x,\n rect.y,\n rect.width,\n rect.height,\n { class: 'task' },\n conf,\n task.colour\n );\n};\n\n/**\n * Draws a background rectangle\n * @param elem The html element\n * @param bounds The bounds of the drawing\n */\nexport const drawBackgroundRect = function(elem, bounds) {\n const rectElem = drawRect(elem, {\n x: bounds.startx,\n y: bounds.starty,\n width: bounds.stopx - bounds.startx,\n height: bounds.stopy - bounds.starty,\n fill: bounds.fill,\n class: 'rect'\n });\n rectElem.lower();\n};\n\nexport const getTextObj = function() {\n return {\n x: 0,\n y: 0,\n fill: undefined,\n 'text-anchor': 'start',\n width: 100,\n height: 100,\n textMargin: 0,\n rx: 0,\n ry: 0\n };\n};\n\nexport const getNoteRect = function() {\n return {\n x: 0,\n y: 0,\n width: 100,\n anchor: 'start',\n height: 100,\n rx: 0,\n ry: 0\n };\n};\n\nconst _drawTextCandidateFunc = (function() {\n function byText(content, g, x, y, width, height, textAttrs, colour) {\n const text = g\n .append('text')\n .attr('x', x + width / 2)\n .attr('y', y + height / 2 + 5)\n .style('font-color', colour)\n .style('text-anchor', 'middle')\n .text(content);\n _setTextAttrs(text, textAttrs);\n }\n\n function byTspan(content, g, x, y, width, height, textAttrs, conf, colour) {\n const { taskFontSize, taskFontFamily } = conf;\n\n const lines = content.split(/
/gi);\n for (let i = 0; i < lines.length; i++) {\n const dy = i * taskFontSize - (taskFontSize * (lines.length - 1)) / 2;\n const text = g\n .append('text')\n .attr('x', x + width / 2)\n .attr('y', y)\n .attr('fill', colour)\n .style('text-anchor', 'middle')\n .style('font-size', taskFontSize)\n .style('font-family', taskFontFamily);\n text\n .append('tspan')\n .attr('x', x + width / 2)\n .attr('dy', dy)\n .text(lines[i]);\n\n text\n .attr('y', y + height / 2.0)\n .attr('dominant-baseline', 'central')\n .attr('alignment-baseline', 'central');\n\n _setTextAttrs(text, textAttrs);\n }\n }\n\n function byFo(content, g, x, y, width, height, textAttrs, conf) {\n const body = g.append('switch');\n const f = body\n .append('foreignObject')\n .attr('x', x)\n .attr('y', y)\n .attr('width', width)\n .attr('height', height)\n .attr('position', 'fixed');\n\n const text = f\n .append('div')\n .style('display', 'table')\n .style('height', '100%')\n .style('width', '100%');\n\n text\n .append('div')\n .attr('class', 'label')\n .style('display', 'table-cell')\n .style('text-align', 'center')\n .style('vertical-align', 'middle')\n // .style('color', colour)\n .text(content);\n\n byTspan(content, body, x, y, width, height, textAttrs, conf);\n _setTextAttrs(text, textAttrs);\n }\n\n function _setTextAttrs(toText, fromTextAttrsDict) {\n for (const key in fromTextAttrsDict) {\n if (key in fromTextAttrsDict) {\n // eslint-disable-line\n // noinspection JSUnfilteredForInLoop\n toText.attr(key, fromTextAttrsDict[key]);\n }\n }\n }\n\n return function(conf) {\n return conf.textPlacement === 'fo' ? byFo : conf.textPlacement === 'old' ? byText : byTspan;\n };\n})();\n\nconst initGraphics = function(graphics) {\n graphics\n .append('defs')\n .append('marker')\n .attr('id', 'arrowhead')\n .attr('refX', 5)\n .attr('refY', 2)\n .attr('markerWidth', 6)\n .attr('markerHeight', 4)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 0,0 V 4 L6,2 Z'); // this is actual shape for arrowhead\n};\n\nexport default {\n drawRect,\n drawCircle,\n drawSection,\n drawText,\n drawLabel,\n drawTask,\n drawBackgroundRect,\n getTextObj,\n getNoteRect,\n initGraphics\n};\n","/**\n * Created by knut on 14-12-11.\n */\nimport { select } from 'd3';\nimport { logger } from './logger';\n\nconst conf = {};\nexport const setConf = function(cnf) {\n const keys = Object.keys(cnf);\n\n keys.forEach(function(key) {\n conf[key] = cnf[key];\n });\n};\n\n/**\n * Draws a an info picture in the tag with id: id based on the graph definition in text.\n * @param text\n * @param id\n */\nexport const draw = (id, ver) => {\n try {\n logger.debug('Renering svg for syntax error\\n');\n\n const svg = select('#' + id);\n\n const g = svg.append('g');\n\n g.append('path')\n .attr('class', 'error-icon')\n .attr(\n 'd',\n 'm411.313,123.313c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32-9.375,9.375-20.688-20.688c-12.484-12.5-32.766-12.5-45.25,0l-16,16c-1.261,1.261-2.304,2.648-3.31,4.051-21.739-8.561-45.324-13.426-70.065-13.426-105.867,0-192,86.133-192,192s86.133,192 192,192 192-86.133 192-192c0-24.741-4.864-48.327-13.426-70.065 1.402-1.007 2.79-2.049 4.051-3.31l16-16c12.5-12.492 12.5-32.758 0-45.25l-20.688-20.688 9.375-9.375 32.001-31.999zm-219.313,100.687c-52.938,0-96,43.063-96,96 0,8.836-7.164,16-16,16s-16-7.164-16-16c0-70.578 57.422-128 128-128 8.836,0 16,7.164 16,16s-7.164,16-16,16z'\n );\n\n g.append('path')\n .attr('class', 'error-icon')\n .attr(\n 'd',\n 'm459.02,148.98c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l16,16c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16.001-16z'\n );\n\n g.append('path')\n .attr('class', 'error-icon')\n .attr(\n 'd',\n 'm340.395,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16-16c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l15.999,16z'\n );\n\n g.append('path')\n .attr('class', 'error-icon')\n .attr(\n 'd',\n 'm400,64c8.844,0 16-7.164 16-16v-32c0-8.836-7.156-16-16-16-8.844,0-16,7.164-16,16v32c0,8.836 7.156,16 16,16z'\n );\n\n g.append('path')\n .attr('class', 'error-icon')\n .attr(\n 'd',\n 'm496,96.586h-32c-8.844,0-16,7.164-16,16 0,8.836 7.156,16 16,16h32c8.844,0 16-7.164 16-16 0-8.836-7.156-16-16-16z'\n );\n\n g.append('path')\n .attr('class', 'error-icon')\n .attr(\n 'd',\n 'm436.98,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688l32-32c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32c-6.251,6.25-6.251,16.375-0.001,22.625z'\n );\n\n g.append('text') // text label for the x axis\n .attr('class', 'error-text')\n .attr('x', 1240)\n .attr('y', 250)\n .attr('font-size', '150px')\n .style('text-anchor', 'middle')\n .text('Syntax error in graph');\n g.append('text') // text label for the x axis\n .attr('class', 'error-text')\n .attr('x', 1050)\n .attr('y', 400)\n .attr('font-size', '100px')\n .style('text-anchor', 'middle')\n .text('mermaid version ' + ver);\n\n svg.attr('height', 100);\n svg.attr('width', 400);\n svg.attr('viewBox', '768 0 512 512');\n } catch (e) {\n logger.error('Error while rendering info diagram');\n logger.error(e.message);\n }\n};\n\nexport default {\n setConf,\n draw\n};\n","import moment from 'moment-mini';\n//\nexport const LEVELS = {\n debug: 1,\n info: 2,\n warn: 3,\n error: 4,\n fatal: 5\n};\n\nexport const logger = {\n debug: () => {},\n info: () => {},\n warn: () => {},\n error: () => {},\n fatal: () => {}\n};\n\nexport const setLogLevel = function(level = 'fatal') {\n if (isNaN(level)) {\n level = level.toLowerCase();\n if (LEVELS[level] !== undefined) {\n level = LEVELS[level];\n }\n }\n logger.trace = () => {};\n logger.debug = () => {};\n logger.info = () => {};\n logger.warn = () => {};\n logger.error = () => {};\n logger.fatal = () => {};\n if (level <= LEVELS.fatal) {\n logger.fatal = console.error\n ? console.error.bind(console, format('FATAL'), 'color: orange')\n : console.log.bind(console, '\\x1b[35m', format('FATAL'));\n }\n if (level <= LEVELS.error) {\n logger.error = console.error\n ? console.error.bind(console, format('ERROR'), 'color: orange')\n : console.log.bind(console, '\\x1b[31m', format('ERROR'));\n }\n if (level <= LEVELS.warn) {\n logger.warn = console.warn\n ? console.warn.bind(console, format('WARN'), 'color: orange')\n : console.log.bind(console, `\\x1b[33m`, format('WARN'));\n }\n if (level <= LEVELS.info) {\n logger.info = console.info\n ? // ? console.info.bind(console, '\\x1b[34m', format('INFO'), 'color: blue')\n console.info.bind(console, format('INFO'), 'color: lightblue')\n : console.log.bind(console, '\\x1b[34m', format('INFO'));\n }\n if (level <= LEVELS.debug) {\n logger.debug = console.debug\n ? console.debug.bind(console, format('DEBUG'), 'color: lightgreen')\n : console.log.bind(console, '\\x1b[32m', format('DEBUG'));\n }\n};\n\nconst format = level => {\n const time = moment().format('ss.SSS');\n return `%c${time} : ${level} : `;\n};\n","/**\n * Web page integration module for the mermaid framework. It uses the mermaidAPI for mermaid functionality and to render\n * the diagrams to svg code.\n */\n// import { decode } from 'he';\nimport decode from 'entity-decode/browser';\nimport mermaidAPI from './mermaidAPI';\nimport { logger } from './logger';\nimport utils from './utils';\n\n/**\n * ## init\n * Function that goes through the document to find the chart definitions in there and render them.\n *\n * The function tags the processed attributes with the attribute data-processed and ignores found elements with the\n * attribute already set. This way the init function can be triggered several times.\n *\n * Optionally, `init` can accept in the second argument one of the following:\n * - a DOM Node\n * - an array of DOM nodes (as would come from a jQuery selector)\n * - a W3C selector, a la `.mermaid`\n *\n * ```mermaid\n * graph LR;\n * a(Find elements)-->b{Processed}\n * b-->|Yes|c(Leave element)\n * b-->|No |d(Transform)\n * ```\n * Renders the mermaid diagrams\n * @param nodes a css selector or an array of nodes\n */\nconst init = function() {\n const conf = mermaidAPI.getConfig();\n // console.log('Starting rendering diagrams (init) - mermaid.init');\n let nodes;\n if (arguments.length >= 2) {\n /*! sequence config was passed as #1 */\n if (typeof arguments[0] !== 'undefined') {\n mermaid.sequenceConfig = arguments[0];\n }\n\n nodes = arguments[1];\n } else {\n nodes = arguments[0];\n }\n\n // if last argument is a function this is the callback function\n let callback;\n if (typeof arguments[arguments.length - 1] === 'function') {\n callback = arguments[arguments.length - 1];\n logger.debug('Callback function found');\n } else {\n if (typeof conf.mermaid !== 'undefined') {\n if (typeof conf.mermaid.callback === 'function') {\n callback = conf.mermaid.callback;\n logger.debug('Callback function found');\n } else {\n logger.debug('No Callback function found');\n }\n }\n }\n nodes =\n nodes === undefined\n ? document.querySelectorAll('.mermaid')\n : typeof nodes === 'string'\n ? document.querySelectorAll(nodes)\n : nodes instanceof window.Node\n ? [nodes]\n : nodes; // Last case - sequence config was passed pick next\n\n logger.debug('Start On Load before: ' + mermaid.startOnLoad);\n if (typeof mermaid.startOnLoad !== 'undefined') {\n logger.debug('Start On Load inner: ' + mermaid.startOnLoad);\n mermaidAPI.initialize({ startOnLoad: mermaid.startOnLoad });\n }\n\n if (typeof mermaid.ganttConfig !== 'undefined') {\n mermaidAPI.initialize({ gantt: mermaid.ganttConfig });\n }\n\n let txt;\n\n for (let i = 0; i < nodes.length; i++) {\n const element = nodes[i];\n\n /*! Check if previously processed */\n if (!element.getAttribute('data-processed')) {\n element.setAttribute('data-processed', true);\n } else {\n continue;\n }\n\n const id = `mermaid-${Date.now()}`;\n\n // Fetch the graph definition including tags\n txt = element.innerHTML;\n\n // transforms the html to pure text\n txt = decode(txt)\n .trim()\n .replace(/
/gi, '
');\n\n const init = utils.detectInit(txt);\n if (init) {\n logger.debug('Detected early reinit: ', init);\n }\n\n try {\n mermaidAPI.render(\n id,\n txt,\n (svgCode, bindFunctions) => {\n element.innerHTML = svgCode;\n if (typeof callback !== 'undefined') {\n callback(id);\n }\n if (bindFunctions) bindFunctions(element);\n },\n element\n );\n } catch (e) {\n logger.warn('Syntax Error rendering');\n logger.warn(e);\n if (this.parseError) {\n this.parseError(e);\n }\n }\n }\n};\n\nconst initialize = function(config) {\n mermaidAPI.reset();\n if (typeof config.mermaid !== 'undefined') {\n if (typeof config.mermaid.startOnLoad !== 'undefined') {\n mermaid.startOnLoad = config.mermaid.startOnLoad;\n }\n if (typeof config.mermaid.htmlLabels !== 'undefined') {\n mermaid.htmlLabels = config.mermaid.htmlLabels;\n }\n }\n mermaidAPI.initialize(config);\n // mermaidAPI.reset();\n};\n\n/**\n * ##contentLoaded\n * Callback function that is called when page is loaded. This functions fetches configuration for mermaid rendering and\n * calls init for rendering the mermaid diagrams on the page.\n */\nconst contentLoaded = function() {\n let config;\n\n if (mermaid.startOnLoad) {\n // No config found, do check API config\n config = mermaidAPI.getConfig();\n if (config.startOnLoad) {\n mermaid.init();\n }\n } else {\n if (typeof mermaid.startOnLoad === 'undefined') {\n logger.debug('In start, no config');\n config = mermaidAPI.getConfig();\n if (config.startOnLoad) {\n mermaid.init();\n }\n }\n }\n};\n\nif (typeof document !== 'undefined') {\n /*!\n * Wait for document loaded before starting the execution\n */\n window.addEventListener(\n 'load',\n function() {\n contentLoaded();\n },\n false\n );\n}\n\nconst mermaid = {\n startOnLoad: true,\n htmlLabels: true,\n\n mermaidAPI,\n parse: mermaidAPI.parse,\n render: mermaidAPI.render,\n\n init,\n initialize,\n\n contentLoaded\n};\n\nexport default mermaid;\n","/**\n * This is the api to be used when optionally handling the integration with the web page, instead of using the default integration provided by mermaid.js.\n *\n * The core of this api is the [**render**](Setup.md?id=render) function which, given a graph\n * definition as text, renders the graph/diagram and returns an svg element for the graph.\n *\n * It is is then up to the user of the API to make use of the svg, either insert it somewhere in the page or do something completely different.\n *\n * In addition to the render function, a number of behavioral configuration options are available.\n *\n * @name mermaidAPI\n */\nimport Stylis from 'stylis';\nimport { select } from 'd3';\nimport pkg from '../package.json';\nimport { setConfig, getConfig, setSiteConfig, getSiteConfig } from './config';\nimport { logger, setLogLevel } from './logger';\nimport utils, { assignWithDepth } from './utils';\nimport flowRenderer from './diagrams/flowchart/flowRenderer';\nimport flowRendererV2 from './diagrams/flowchart/flowRenderer-v2';\nimport flowParser from './diagrams/flowchart/parser/flow';\nimport flowDb from './diagrams/flowchart/flowDb';\nimport sequenceRenderer from './diagrams/sequence/sequenceRenderer';\nimport sequenceParser from './diagrams/sequence/parser/sequenceDiagram';\nimport sequenceDb from './diagrams/sequence/sequenceDb';\nimport ganttRenderer from './diagrams/gantt/ganttRenderer';\nimport ganttParser from './diagrams/gantt/parser/gantt';\nimport ganttDb from './diagrams/gantt/ganttDb';\nimport classRenderer from './diagrams/class/classRenderer';\nimport classRendererV2 from './diagrams/class/classRenderer-v2';\nimport classParser from './diagrams/class/parser/classDiagram';\nimport classDb from './diagrams/class/classDb';\nimport stateRenderer from './diagrams/state/stateRenderer';\nimport stateRendererV2 from './diagrams/state/stateRenderer-v2';\nimport stateParser from './diagrams/state/parser/stateDiagram';\nimport stateDb from './diagrams/state/stateDb';\nimport gitGraphRenderer from './diagrams/git/gitGraphRenderer';\nimport gitGraphParser from './diagrams/git/parser/gitGraph';\nimport gitGraphAst from './diagrams/git/gitGraphAst';\nimport infoRenderer from './diagrams/info/infoRenderer';\nimport errorRenderer from './errorRenderer';\nimport infoParser from './diagrams/info/parser/info';\nimport infoDb from './diagrams/info/infoDb';\nimport pieRenderer from './diagrams/pie/pieRenderer';\nimport pieParser from './diagrams/pie/parser/pie';\nimport pieDb from './diagrams/pie/pieDb';\nimport erDb from './diagrams/er/erDb';\nimport erParser from './diagrams/er/parser/erDiagram';\nimport erRenderer from './diagrams/er/erRenderer';\nimport journeyParser from './diagrams/user-journey/parser/journey';\nimport journeyDb from './diagrams/user-journey/journeyDb';\nimport journeyRenderer from './diagrams/user-journey/journeyRenderer';\nimport configApi from './config';\nimport getStyles from './styles';\nimport theme from './themes';\n\nfunction parse(text) {\n const graphInit = utils.detectInit(text);\n if (graphInit) {\n reinitialize(graphInit);\n logger.debug('reinit ', graphInit);\n }\n const graphType = utils.detectType(text);\n let parser;\n\n logger.debug('Type ' + graphType);\n switch (graphType) {\n case 'git':\n parser = gitGraphParser;\n parser.parser.yy = gitGraphAst;\n break;\n case 'flowchart':\n flowDb.clear();\n parser = flowParser;\n parser.parser.yy = flowDb;\n break;\n case 'flowchart-v2':\n flowDb.clear();\n parser = flowParser;\n parser.parser.yy = flowDb;\n break;\n case 'sequence':\n parser = sequenceParser;\n parser.parser.yy = sequenceDb;\n break;\n case 'gantt':\n parser = ganttParser;\n parser.parser.yy = ganttDb;\n break;\n case 'class':\n parser = classParser;\n parser.parser.yy = classDb;\n break;\n case 'classDiagram':\n parser = classParser;\n parser.parser.yy = classDb;\n break;\n case 'state':\n parser = stateParser;\n parser.parser.yy = stateDb;\n break;\n case 'stateDiagram':\n parser = stateParser;\n parser.parser.yy = stateDb;\n break;\n case 'info':\n logger.debug('info info info');\n parser = infoParser;\n parser.parser.yy = infoDb;\n break;\n case 'pie':\n logger.debug('pie');\n parser = pieParser;\n parser.parser.yy = pieDb;\n break;\n case 'er':\n logger.debug('er');\n parser = erParser;\n parser.parser.yy = erDb;\n break;\n case 'journey':\n logger.debug('Journey');\n parser = journeyParser;\n parser.parser.yy = journeyDb;\n break;\n }\n parser.parser.yy.graphType = graphType;\n parser.parser.yy.parseError = (str, hash) => {\n const error = { str, hash };\n throw error;\n };\n\n parser.parse(text);\n return parser;\n}\n\nexport const encodeEntities = function(text) {\n let txt = text;\n\n txt = txt.replace(/style.*:\\S*#.*;/g, function(s) {\n const innerTxt = s.substring(0, s.length - 1);\n return innerTxt;\n });\n txt = txt.replace(/classDef.*:\\S*#.*;/g, function(s) {\n const innerTxt = s.substring(0, s.length - 1);\n return innerTxt;\n });\n\n txt = txt.replace(/#\\w+;/g, function(s) {\n const innerTxt = s.substring(1, s.length - 1);\n\n const isInt = /^\\+?\\d+$/.test(innerTxt);\n if (isInt) {\n return 'fl°°' + innerTxt + '¶ß';\n } else {\n return 'fl°' + innerTxt + '¶ß';\n }\n });\n\n return txt;\n};\n\nexport const decodeEntities = function(text) {\n let txt = text;\n\n txt = txt.replace(/fl°°/g, function() {\n return '';\n });\n txt = txt.replace(/fl°/g, function() {\n return '&';\n });\n txt = txt.replace(/¶ß/g, function() {\n return ';';\n });\n\n return txt;\n};\n/**\n * Function that renders an svg with a graph from a chart definition. Usage example below.\n *\n * ```js\n * mermaidAPI.initialize({\n * startOnLoad:true\n * });\n * $(function(){\n * const graphDefinition = 'graph TB\\na-->b';\n * const cb = function(svgGraph){\n * console.log(svgGraph);\n * };\n * mermaidAPI.render('id1',graphDefinition,cb);\n * });\n *```\n * @param id the id of the element to be rendered\n * @param _txt the graph definition\n * @param cb callback which is called after rendering is finished with the svg code as inparam.\n * @param container selector to element in which a div with the graph temporarily will be inserted. In one is\n * provided a hidden div will be inserted in the body of the page instead. The element will be removed when rendering is\n * completed.\n */\nconst render = function(id, _txt, cb, container) {\n let txt = _txt;\n const graphInit = utils.detectInit(txt);\n if (graphInit) {\n reinitialize(graphInit);\n } else {\n configApi.reset();\n const siteConfig = getSiteConfig();\n updateRendererConfigs(siteConfig);\n }\n\n const cnf = getConfig();\n // Check the maximum allowed text size\n if (_txt.length > cnf.maxTextSize) {\n txt = 'graph TB;a[Maximum text size in diagram exceeded];style a fill:#faa';\n }\n\n if (typeof container !== 'undefined') {\n container.innerHTML = '';\n\n select(container)\n .append('div')\n .attr('id', 'd' + id)\n .attr('style', 'font-family: ' + cnf.fontFamily)\n .append('svg')\n .attr('id', id)\n .attr('width', '100%')\n .attr('xmlns', 'http://www.w3.org/2000/svg')\n .append('g');\n } else {\n const existingSvg = document.getElementById(id);\n if (existingSvg) {\n existingSvg.remove();\n }\n const element = document.querySelector('#' + 'd' + id);\n if (element) {\n element.remove();\n }\n\n select('body')\n .append('div')\n .attr('id', 'd' + id)\n .append('svg')\n .attr('id', id)\n .attr('width', '100%')\n .attr('xmlns', 'http://www.w3.org/2000/svg')\n .append('g');\n }\n\n window.txt = txt;\n txt = encodeEntities(txt);\n\n const element = select('#d' + id).node();\n const graphType = utils.detectType(txt);\n\n // insert inline style into svg\n const svg = element.firstChild;\n const firstChild = svg.firstChild;\n\n let userStyles = '';\n // user provided theme CSS\n if (cnf.themeCSS !== undefined) {\n userStyles += `\\n${cnf.themeCSS}`;\n }\n // user provided theme CSS\n if (cnf.fontFamily !== undefined) {\n userStyles += `\\n:root { --mermaid-font-family: ${cnf.fontFamily}}`;\n }\n // user provided theme CSS\n if (cnf.altFontFamily !== undefined) {\n userStyles += `\\n:root { --mermaid-alt-font-family: ${cnf.altFontFamily}}`;\n }\n\n // classDef\n if (graphType === 'flowchart' || graphType === 'flowchart-v2' || graphType === 'graph') {\n const classes = flowRenderer.getClasses(txt);\n for (const className in classes) {\n userStyles += `\\n.${className} > * { ${classes[className].styles.join(\n ' !important; '\n )} !important; }`;\n if (classes[className].textStyles) {\n userStyles += `\\n.${className} tspan { ${classes[className].textStyles.join(\n ' !important; '\n )} !important; }`;\n }\n }\n }\n const stylis = new Stylis();\n const rules = stylis(`#${id}`, getStyles(graphType, userStyles, cnf.themeVariables));\n\n const style1 = document.createElement('style');\n style1.innerHTML = rules;\n svg.insertBefore(style1, firstChild);\n\n // Verify that the generated svgs are ok before removing this\n\n // const style2 = document.createElement('style');\n // const cs = window.getComputedStyle(svg);\n // style2.innerHTML = `#d${id} * {\n // color: ${cs.color};\n // // font: ${cs.font};\n // // font-family: Arial;\n // // font-size: 24px;\n // }`;\n // svg.insertBefore(style2, firstChild);\n\n try {\n switch (graphType) {\n case 'git':\n cnf.flowchart.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;\n gitGraphRenderer.setConf(cnf.git);\n gitGraphRenderer.draw(txt, id, false);\n break;\n case 'flowchart':\n cnf.flowchart.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;\n flowRenderer.setConf(cnf.flowchart);\n flowRenderer.draw(txt, id, false);\n break;\n case 'flowchart-v2':\n cnf.flowchart.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;\n flowRendererV2.setConf(cnf.flowchart);\n flowRendererV2.draw(txt, id, false);\n break;\n case 'sequence':\n cnf.sequence.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;\n if (cnf.sequenceDiagram) {\n // backwards compatibility\n sequenceRenderer.setConf(Object.assign(cnf.sequence, cnf.sequenceDiagram));\n console.error(\n '`mermaid config.sequenceDiagram` has been renamed to `config.sequence`. Please update your mermaid config.'\n );\n } else {\n sequenceRenderer.setConf(cnf.sequence);\n }\n sequenceRenderer.draw(txt, id);\n break;\n case 'gantt':\n cnf.gantt.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;\n ganttRenderer.setConf(cnf.gantt);\n ganttRenderer.draw(txt, id);\n break;\n case 'class':\n cnf.class.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;\n classRenderer.setConf(cnf.class);\n classRenderer.draw(txt, id);\n break;\n case 'classDiagram':\n cnf.class.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;\n classRendererV2.setConf(cnf.class);\n classRendererV2.draw(txt, id);\n break;\n case 'state':\n cnf.class.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;\n stateRenderer.setConf(cnf.state);\n stateRenderer.draw(txt, id);\n break;\n case 'stateDiagram':\n cnf.class.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;\n stateRendererV2.setConf(cnf.state);\n stateRendererV2.draw(txt, id);\n break;\n case 'info':\n cnf.class.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;\n infoRenderer.setConf(cnf.class);\n infoRenderer.draw(txt, id, pkg.version);\n break;\n case 'pie':\n cnf.class.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;\n pieRenderer.setConf(cnf.class);\n pieRenderer.draw(txt, id, pkg.version);\n break;\n case 'er':\n erRenderer.setConf(cnf.er);\n erRenderer.draw(txt, id, pkg.version);\n break;\n case 'journey':\n journeyRenderer.setConf(cnf.journey);\n journeyRenderer.draw(txt, id, pkg.version);\n break;\n }\n } catch (e) {\n // errorRenderer.setConf(cnf.class);\n errorRenderer.draw(id, pkg.version);\n throw e;\n }\n\n select(`[id=\"${id}\"]`)\n .selectAll('foreignobject > *')\n .attr('xmlns', 'http://www.w3.org/1999/xhtml');\n\n // if (cnf.arrowMarkerAbsolute) {\n // url =\n // window.location.protocol +\n // '//' +\n // window.location.host +\n // window.location.pathname +\n // window.location.search;\n // url = url.replace(/\\(/g, '\\\\(');\n // url = url.replace(/\\)/g, '\\\\)');\n // }\n\n // Fix for when the base tag is used\n let svgCode = select('#d' + id).node().innerHTML;\n logger.debug('cnf.arrowMarkerAbsolute', cnf.arrowMarkerAbsolute);\n if (!cnf.arrowMarkerAbsolute || cnf.arrowMarkerAbsolute === 'false') {\n svgCode = svgCode.replace(/marker-end=\"url\\(.*?#/g, 'marker-end=\"url(#', 'g');\n }\n\n svgCode = decodeEntities(svgCode);\n\n if (typeof cb !== 'undefined') {\n switch (graphType) {\n case 'flowchart':\n case 'flowchart-v2':\n cb(svgCode, flowDb.bindFunctions);\n break;\n case 'gantt':\n cb(svgCode, ganttDb.bindFunctions);\n break;\n case 'class':\n cb(svgCode, classDb.bindFunctions);\n break;\n default:\n cb(svgCode);\n }\n } else {\n logger.debug('CB = undefined!');\n }\n\n const node = select('#d' + id).node();\n if (node !== null && typeof node.remove === 'function') {\n select('#d' + id)\n .node()\n .remove();\n }\n\n return svgCode;\n};\n\nlet currentDirective = {};\n\nconst parseDirective = function(statement, context, type) {\n try {\n if (statement !== undefined) {\n statement = statement.trim();\n switch (context) {\n case 'open_directive':\n currentDirective = {};\n break;\n case 'type_directive':\n currentDirective.type = statement.toLowerCase();\n break;\n case 'arg_directive':\n currentDirective.args = JSON.parse(statement);\n break;\n case 'close_directive':\n handleDirective(currentDirective, type);\n currentDirective = null;\n break;\n }\n }\n } catch (error) {\n logger.error(\n `Error while rendering sequenceDiagram directive: ${statement} jison context: ${context}`\n );\n logger.error(error.message);\n }\n};\n\nconst handleDirective = function(directive, type) {\n logger.debug(`Directive type=${directive.type} with args:`, directive.args);\n switch (directive.type) {\n case 'init':\n case 'initialize': {\n ['config'].forEach(prop => {\n if (typeof directive.args[prop] !== 'undefined') {\n if (type === 'flowchart-v2') {\n type = 'flowchart';\n }\n directive.args[type] = directive.args[prop];\n delete directive.args[prop];\n }\n });\n\n reinitialize(directive.args);\n break;\n }\n case 'wrap':\n case 'nowrap':\n directive.args = { config: { wrap: directive.type === 'wrap' } };\n ['config'].forEach(prop => {\n if (typeof directive.args[prop] !== 'undefined') {\n if (type === 'flowchart-v2') {\n type = 'flowchart';\n }\n directive.args[type] = directive.args[prop];\n delete directive.args[prop];\n }\n });\n reinitialize(directive.args);\n break;\n default:\n logger.warn(\n `Unhandled directive: source: '%%{${directive.type}: ${JSON.stringify(\n directive.args ? directive.args : {}\n )}}%%`,\n directive\n );\n break;\n }\n};\n\nfunction updateRendererConfigs(conf) {\n gitGraphRenderer.setConf(conf.git);\n flowRenderer.setConf(conf.flowchart);\n flowRendererV2.setConf(conf.flowchart);\n if (typeof conf['sequenceDiagram'] !== 'undefined') {\n sequenceRenderer.setConf(assignWithDepth(conf.sequence, conf['sequenceDiagram']));\n }\n sequenceRenderer.setConf(conf.sequence);\n ganttRenderer.setConf(conf.gantt);\n classRenderer.setConf(conf.class);\n stateRenderer.setConf(conf.state);\n stateRendererV2.setConf(conf.state);\n infoRenderer.setConf(conf.class);\n pieRenderer.setConf(conf.class);\n erRenderer.setConf(conf.er);\n journeyRenderer.setConf(conf.journey);\n errorRenderer.setConf(conf.class);\n}\n\nfunction reinitialize(options) {\n // console.warn(`mermaidAPI.reinitialize: v${pkg.version}`, options);\n if (options.theme && theme[options.theme]) {\n // Todo merge with user options\n options.themeVariables = options.theme;\n }\n\n // Set default options\n const config = typeof options === 'object' ? setConfig(options) : getSiteConfig();\n updateRendererConfigs(config);\n setLogLevel(config.logLevel);\n logger.debug('mermaidAPI.reinitialize: ', config);\n}\n\nfunction initialize(options) {\n // console.log(`mermaidAPI.initialize: v${pkg.version} ${options}`);\n // Set default options\n\n if (options && options.theme && theme[options.theme]) {\n // Todo merge with user options\n options.themeVariables = theme[options.theme].getThemeVariables(options.themeVariables);\n } else {\n if (options) options.themeVariables = theme.default.getThemeVariables();\n }\n\n const config = typeof options === 'object' ? setSiteConfig(options) : getSiteConfig();\n\n updateRendererConfigs(config);\n setLogLevel(config.logLevel);\n logger.debug('mermaidAPI.initialize: ', config);\n}\n\n// function getConfig () {\n// console.warn('get config')\n// return config\n// }\nconst mermaidAPI = Object.freeze({\n render,\n parse,\n parseDirective,\n initialize,\n reinitialize,\n getConfig,\n getSiteConfig,\n reset: () => {\n // console.warn('reset');\n configApi.reset();\n const siteConfig = getSiteConfig();\n updateRendererConfigs(siteConfig);\n },\n globalReset: () => {\n configApi.reset(configApi.defaultConfig);\n updateRendererConfigs(getConfig());\n },\n defaultConfig: configApi.defaultConfig\n});\n\nsetLogLevel(getConfig().logLevel);\nconfigApi.reset(getConfig());\n\nexport default mermaidAPI;\n/**\n * ## mermaidAPI configuration defaults\n * \n *\n * <script>\n * var config = {\n * theme:'default',\n * logLevel:'fatal',\n * securityLevel:'strict',\n * startOnLoad:true,\n * arrowMarkerAbsolute:false,\n *\n * er:{\n * diagramPadding:20,\n * layoutDirection:'TB',\n * minEntityWidth:100,\n * minEntityHeight:75,\n * entityPadding:15,\n * stroke:'gray',\n * fill:'honeydew',\n * fontSize:12,\n * useMaxWidth:true,\n * },\n * flowchart:{\n * diagramPadding:8,\n * htmlLabels:true,\n * curve:'linear',\n * },\n * sequence:{\n * diagramMarginX:50,\n * diagramMarginY:10,\n * actorMargin:50,\n * width:150,\n * height:65,\n * boxMargin:10,\n * boxTextMargin:5,\n * noteMargin:10,\n * messageMargin:35,\n * messageAlign:'center',\n * mirrorActors:true,\n * bottomMarginAdj:1,\n * useMaxWidth:true,\n * rightAngles:false,\n * showSequenceNumbers:false,\n * },\n * gantt:{\n * titleTopMargin:25,\n * barHeight:20,\n * barGap:4,\n * topPadding:50,\n * leftPadding:75,\n * gridLineStartPadding:35,\n * fontSize:11,\n * fontFamily:'\"Open-Sans\", \"sans-serif\"',\n * numberSectionStyles:4,\n * axisFormat:'%Y-%m-%d',\n * }\n * };\n * mermaid.initialize(config);\n * </script>\n *
\n */\n","import classDiagram from './diagrams/class/styles';\nimport er from './diagrams/er/styles';\nimport flowchart from './diagrams/flowchart/styles';\nimport gantt from './diagrams/gantt/styles';\nimport git from './diagrams/git/styles';\nimport info from './diagrams/info/styles';\nimport pie from './diagrams/pie/styles';\nimport sequence from './diagrams/sequence/styles';\nimport stateDiagram from './diagrams/state/styles';\nimport journey from './diagrams/user-journey/styles';\n\nconst themes = {\n flowchart,\n 'flowchart-v2': flowchart,\n sequence,\n gantt,\n class: classDiagram,\n 'classDiagram-v2': classDiagram,\n stateDiagram,\n state: stateDiagram,\n git,\n info,\n pie,\n er,\n journey\n};\n\nexport const calcThemeVariables = (theme, userOverRides) => theme.calcColors(userOverRides);\n\nconst getStyles = (type, userStyles, options) => {\n return ` {\n font-family: ${options.fontFamily};\n font-size: ${options.fontSize};\n fill: ${options.textColor}\n }\n\n /* Classes common for multiple diagrams */\n\n .error-icon {\n fill: ${options.errorBkgColor};\n }\n .error-text {\n fill: ${options.errorTextColor};\n stroke: ${options.errorTextColor};\n }\n\n .edge-thickness-normal {\n stroke-width: 2px;\n }\n .edge-thickness-thick {\n stroke-width: 3.5px\n }\n .edge-pattern-solid {\n stroke-dasharray: 0;\n }\n\n .edge-pattern-dashed{\n stroke-dasharray: 3;\n }\n .edge-pattern-dotted {\n stroke-dasharray: 2;\n }\n\n .marker {\n fill: ${options.lineColor};\n }\n .marker.cross {\n stroke: ${options.lineColor};\n }\n\n svg {\n font-family: ${options.fontFamily};\n font-size: ${options.fontSize};\n }\n\n ${themes[type](options)}\n\n ${userStyles}\n\n ${type} { fill: apa;}\n`;\n};\n\nexport default getStyles;\n","import { getThemeVariables as baseThemeVariables } from './theme-base';\nimport { getThemeVariables as darkThemeVariables } from './theme-dark';\nimport { getThemeVariables as defaultThemeVariables } from './theme-default';\nimport { getThemeVariables as forestThemeVariables } from './theme-forest';\nimport { getThemeVariables as neutralThemeVariables } from './theme-neutral';\n\nexport default {\n base: {\n getThemeVariables: baseThemeVariables\n },\n dark: {\n getThemeVariables: darkThemeVariables\n },\n default: {\n getThemeVariables: defaultThemeVariables\n },\n forest: {\n getThemeVariables: forestThemeVariables\n },\n neutral: {\n getThemeVariables: neutralThemeVariables\n }\n};\n","import { darken, lighten, adjust } from 'khroma';\n\nclass Theme {\n constructor() {\n /* Base variables */\n this.primaryColor = '#9f33be';\n this.secondaryColor = '#b20238';\n this.tertiaryColor = lighten(this.primaryColor, 30);\n this.relationColor = '#000';\n\n // this.primaryColor = '#fa255e';\n // this.secondaryColor = '#c39ea0';\n // this.tertiaryColor = '#f8e5e5';\n\n // this.primaryColor = '#ECECFF';\n // this.secondaryColor = '#ffffde';\n // this.tertiaryColor = '#ffffde';\n\n this.background = 'white';\n this.lineColor = '#333333';\n this.border1 = '#9370DB';\n this.arrowheadColor = '#333333';\n this.fontFamily = '\"trebuchet ms\", verdana, arial';\n this.fontSize = '16px';\n this.labelBackground = '#e8e8e8';\n this.textColor = '#333';\n this.noteBkgColor = '#fff5ad';\n this.noteBorderColor = '#aaaa33';\n this.updateColors();\n }\n updateColors() {\n this.secondBkg = this.tertiaryColor;\n\n /* Flowchart variables */\n\n this.nodeBkg = this.primaryColor;\n this.mainBkg = this.primaryColor;\n this.nodeBorder = darken(this.primaryColor, 23); // border 1\n this.clusterBkg = this.tertiaryColor;\n this.clusterBorder = darken(this.tertiaryColor, 30);\n this.defaultLinkColor = this.lineColor;\n this.titleColor = this.textColor;\n this.edgeLabelBackground = this.labelBackground;\n\n /* Sequence Diagram variables */\n\n // this.actorBorder = lighten(this.border1, 0.5);\n this.actorBorder = lighten(this.border1, 23);\n this.actorBkg = this.mainBkg;\n this.actorTextColor = 'black';\n this.actorLineColor = 'grey';\n this.labelBoxBkgColor = this.actorBkg;\n this.signalColor = this.textColor;\n this.signalTextColor = this.textColor;\n this.labelBoxBorderColor = this.actorBorder;\n this.labelTextColor = this.actorTextColor;\n this.loopTextColor = this.actorTextColor;\n this.noteBorderColor = this.border2;\n this.noteTextColor = this.actorTextColor;\n this.activationBorderColor = darken(this.secondaryColor, 10);\n this.activationBkgColor = this.secondaryColor;\n this.sequenceNumberColor = 'white';\n\n /* Gantt chart variables */\n\n this.taskTextColor = this.taskTextLightColor;\n this.taskTextOutsideColor = this.taskTextDarkColor;\n this.sectionBkgColor = this.tertiaryColor;\n this.altSectionBkgColor = 'white';\n this.sectionBkgColor = this.secondaryColor;\n this.sectionBkgColor2 = this.tertiaryColor;\n this.altSectionBkgColor = 'white';\n this.sectionBkgColor2 = this.primaryColor;\n this.taskBorderColor = lighten(this.primaryColor, 23);\n this.taskBkgColor = this.primaryColor;\n this.taskTextLightColor = 'white';\n this.taskTextColor = 'calculated';\n this.taskTextDarkColor = 'black';\n this.taskTextOutsideColor = 'calculated';\n this.taskTextClickableColor = '#003163';\n this.activeTaskBorderColor = this.primaryColor;\n this.activeTaskBkgColor = lighten(this.primaryColor, 23);\n this.gridColor = 'lightgrey';\n this.doneTaskBkgColor = 'lightgrey';\n this.doneTaskBorderColor = 'grey';\n this.critBorderColor = '#ff8888';\n this.critBkgColor = 'red';\n this.todayLineColor = 'red';\n\n /* state colors */\n this.labelColor = 'black';\n this.errorBkgColor = '#552222';\n this.errorTextColor = '#552222';\n\n /* state colors */\n\n /* class */\n this.classText = this.textColor;\n\n /* user-journey */\n this.fillType0 = this.primaryColor;\n this.fillType1 = this.secondaryColor;\n this.fillType2 = adjust(this.primaryColor, { h: 64 });\n this.fillType3 = adjust(this.secondaryColor, { h: 64 });\n this.fillType4 = adjust(this.primaryColor, { h: -64 });\n this.fillType5 = adjust(this.secondaryColor, { h: -64 });\n this.fillType6 = adjust(this.primaryColor, { h: 128 });\n this.fillType7 = adjust(this.secondaryColor, { h: 128 });\n }\n calculate(overrides) {\n if (typeof overrides !== 'object') {\n // Calculate colors form base colors\n this.updateColors();\n return;\n }\n\n const keys = Object.keys(overrides);\n\n // Copy values from overrides, this is mainly for base colors\n keys.forEach(k => {\n this[k] = overrides[k];\n });\n\n // Calculate colors form base colors\n this.updateColors();\n // Copy values from overrides again in case of an override of derived value\n keys.forEach(k => {\n this[k] = overrides[k];\n });\n }\n}\n\nexport const getThemeVariables = userOverrides => {\n const theme = new Theme();\n theme.calculate(userOverrides);\n return theme;\n};\n","import { invert, lighten, darken, rgba, adjust } from 'khroma';\n\nclass Theme {\n constructor() {\n this.background = '#333';\n this.primaryColor = '#1f2020';\n this.secondaryColor = lighten(this.primaryColor, 16);\n this.mainBkg = '#1f2020';\n this.secondBkg = 'calculated';\n this.mainContrastColor = 'lightgrey';\n this.darkTextColor = lighten(invert('#323D47'), 10);\n this.lineColor = 'calculated';\n this.border1 = '#81B1DB';\n this.border2 = rgba(255, 255, 255, 0.25);\n this.arrowheadColor = 'calculated';\n this.fontFamily = '\"trebuchet ms\", verdana, arial';\n this.fontSize = '16px';\n this.labelBackground = '#181818';\n this.textColor = '#ccc';\n /* Flowchart variables */\n\n this.nodeBkg = 'calculated';\n this.nodeBorder = 'calculated';\n this.clusterBkg = 'calculated';\n this.clusterBorder = 'calculated';\n this.defaultLinkColor = 'calculated';\n this.titleColor = '#F9FFFE';\n this.edgeLabelBackground = 'calculated';\n\n /* Sequence Diagram variables */\n\n this.actorBorder = 'calculated';\n this.actorBkg = 'calculated';\n this.actorTextColor = 'calculated';\n this.actorLineColor = 'calculated';\n this.signalColor = 'calculated';\n this.signalTextColor = 'calculated';\n this.labelBoxBkgColor = 'calculated';\n this.labelBoxBorderColor = 'calculated';\n this.labelTextColor = 'calculated';\n this.loopTextColor = 'calculated';\n this.noteBorderColor = 'calculated';\n this.noteBkgColor = '#fff5ad';\n this.noteTextColor = 'calculated';\n this.activationBorderColor = 'calculated';\n this.activationBkgColor = 'calculated';\n this.sequenceNumberColor = 'black';\n\n /* Gantt chart variables */\n\n this.sectionBkgColor = darken('#EAE8D9', 30);\n this.altSectionBkgColor = 'calculated';\n this.sectionBkgColor2 = '#EAE8D9';\n this.taskBorderColor = rgba(255, 255, 255, 70);\n this.taskBkgColor = 'calculated';\n this.taskTextColor = 'calculated';\n this.taskTextLightColor = 'calculated';\n this.taskTextOutsideColor = 'calculated';\n this.taskTextClickableColor = '#003163';\n this.activeTaskBorderColor = rgba(255, 255, 255, 50);\n this.activeTaskBkgColor = '#81B1DB';\n this.gridColor = 'calculated';\n this.doneTaskBkgColor = 'calculated';\n this.doneTaskBorderColor = 'grey';\n this.critBorderColor = '#E83737';\n this.critBkgColor = '#E83737';\n this.taskTextDarkColor = 'calculated';\n this.todayLineColor = '#DB5757';\n\n /* state colors */\n this.labelColor = 'calculated';\n\n this.errorBkgColor = '#a44141';\n this.errorTextColor = '#ddd';\n }\n updateColors() {\n this.secondBkg = lighten(this.mainBkg, 16);\n this.lineColor = this.mainContrastColor;\n this.arrowheadColor = this.mainContrastColor;\n /* Flowchart variables */\n\n this.nodeBkg = this.mainBkg;\n this.nodeBorder = this.border1;\n this.clusterBkg = this.secondBkg;\n this.clusterBorder = this.border2;\n this.defaultLinkColor = this.lineColor;\n this.edgeLabelBackground = lighten(this.labelBackground, 25);\n\n /* Sequence Diagram variables */\n\n this.actorBorder = this.border1;\n this.actorBkg = this.mainBkg;\n this.actorTextColor = this.mainContrastColor;\n this.actorLineColor = this.mainContrastColor;\n this.signalColor = this.mainContrastColor;\n this.signalTextColor = this.mainContrastColor;\n this.labelBoxBkgColor = this.actorBkg;\n this.labelBoxBorderColor = this.actorBorder;\n this.labelTextColor = this.mainContrastColor;\n this.loopTextColor = this.mainContrastColor;\n this.noteBorderColor = this.border2;\n this.noteTextColor = this.mainBkg;\n this.activationBorderColor = this.border1;\n this.activationBkgColor = this.secondBkg;\n\n /* Gantt chart variables */\n\n this.altSectionBkgColor = this.background;\n this.taskBkgColor = lighten(this.mainBkg, 23);\n this.taskTextColor = this.darkTextColor;\n this.taskTextLightColor = this.mainContrastColor;\n this.taskTextOutsideColor = this.taskTextLightColor;\n this.gridColor = this.mainContrastColor;\n this.doneTaskBkgColor = this.mainContrastColor;\n this.taskTextDarkColor = this.darkTextColor;\n\n /* state colors */\n this.labelColor = this.textColor;\n this.altBackground = lighten(this.background, 20);\n\n this.fillType0 = this.primaryColor;\n this.fillType1 = this.secondaryColor;\n this.fillType2 = adjust(this.primaryColor, { h: 64 });\n this.fillType3 = adjust(this.secondaryColor, { h: 64 });\n this.fillType4 = adjust(this.primaryColor, { h: -64 });\n this.fillType5 = adjust(this.secondaryColor, { h: -64 });\n this.fillType6 = adjust(this.primaryColor, { h: 128 });\n this.fillType7 = adjust(this.secondaryColor, { h: 128 });\n /* class */\n this.classText = this.nodeBorder;\n }\n calculate(overrides) {\n if (typeof overrides !== 'object') {\n // Calculate colors form base colors\n this.updateColors();\n return;\n }\n\n const keys = Object.keys(overrides);\n\n // Copy values from overrides, this is mainly for base colors\n keys.forEach(k => {\n this[k] = overrides[k];\n });\n\n // Calculate colors form base colors\n this.updateColors();\n // Copy values from overrides again in case of an override of derived value\n keys.forEach(k => {\n this[k] = overrides[k];\n });\n }\n}\n\nexport const getThemeVariables = userOverrides => {\n const theme = new Theme();\n theme.calculate(userOverrides);\n return theme;\n};\n","import { lighten, rgba, adjust } from 'khroma';\n\nclass Theme {\n constructor() {\n /* Base variables */\n this.primaryColor = '#ECECFF';\n this.secondaryColor = '#ffffde';\n this.background = 'white';\n this.mainBkg = '#ECECFF';\n this.secondBkg = '#ffffde';\n this.lineColor = '#333333';\n this.border1 = '#9370DB';\n this.border2 = '#aaaa33';\n this.arrowheadColor = '#333333';\n this.fontFamily = '\"trebuchet ms\", verdana, arial';\n this.fontSize = '16px';\n this.labelBackground = '#e8e8e8';\n this.textColor = '#333';\n\n /* Flowchart variables */\n\n this.nodeBkg = 'calculated';\n this.nodeBorder = 'calculated';\n this.clusterBkg = 'calculated';\n this.clusterBorder = 'calculated';\n this.defaultLinkColor = 'calculated';\n this.titleColor = 'calculated';\n this.edgeLabelBackground = 'calculated';\n\n /* Sequence Diagram variables */\n\n this.actorBorder = 'calculated';\n this.actorBkg = 'calculated';\n this.actorTextColor = 'black';\n this.actorLineColor = 'grey';\n this.signalColor = 'calculated';\n this.signalTextColor = 'calculated';\n this.labelBoxBkgColor = 'calculated';\n this.labelBoxBorderColor = 'calculated';\n this.labelTextColor = 'calculated';\n this.loopTextColor = 'calculated';\n this.noteBorderColor = 'calculated';\n this.noteBkgColor = '#fff5ad';\n this.noteTextColor = 'calculated';\n this.activationBorderColor = '#666';\n this.activationBkgColor = '#f4f4f4';\n this.sequenceNumberColor = 'white';\n\n /* Gantt chart variables */\n\n this.sectionBkgColor = 'calculated';\n this.altSectionBkgColor = 'calculated';\n this.sectionBkgColor2 = 'calculated';\n this.taskBorderColor = 'calculated';\n this.taskBkgColor = 'calculated';\n this.taskTextLightColor = 'calculated';\n this.taskTextColor = this.taskTextLightColor;\n this.taskTextDarkColor = 'calculated';\n this.taskTextOutsideColor = this.taskTextDarkColor;\n this.taskTextClickableColor = 'calculated';\n this.activeTaskBorderColor = 'calculated';\n this.activeTaskBkgColor = 'calculated';\n this.gridColor = 'calculated';\n this.doneTaskBkgColor = 'calculated';\n this.doneTaskBorderColor = 'calculated';\n this.critBorderColor = 'calculated';\n this.critBkgColor = 'calculated';\n this.todayLineColor = 'calculated';\n\n this.sectionBkgColor = rgba(102, 102, 255, 0.49);\n this.altSectionBkgColor = 'white';\n this.sectionBkgColor2 = '#fff400';\n this.taskBorderColor = '#534fbc';\n this.taskBkgColor = '#8a90dd';\n this.taskTextLightColor = 'white';\n this.taskTextColor = 'calculated';\n this.taskTextDarkColor = 'black';\n this.taskTextOutsideColor = 'calculated';\n this.taskTextClickableColor = '#003163';\n this.activeTaskBorderColor = '#534fbc';\n this.activeTaskBkgColor = '#bfc7ff';\n this.gridColor = 'lightgrey';\n this.doneTaskBkgColor = 'lightgrey';\n this.doneTaskBorderColor = 'grey';\n this.critBorderColor = '#ff8888';\n this.critBkgColor = 'red';\n this.todayLineColor = 'red';\n\n /* state colors */\n this.labelColor = 'black';\n this.errorBkgColor = '#552222';\n this.errorTextColor = '#552222';\n this.updateColors();\n }\n updateColors() {\n /* Flowchart variables */\n\n this.nodeBkg = this.mainBkg;\n this.nodeBorder = this.border1; // border 1\n this.clusterBkg = this.secondBkg;\n this.clusterBorder = this.border2;\n this.defaultLinkColor = this.lineColor;\n this.titleColor = this.textColor;\n this.edgeLabelBackground = this.labelBackground;\n\n /* Sequence Diagram variables */\n\n // this.actorBorder = lighten(this.border1, 0.5);\n this.actorBorder = lighten(this.border1, 23);\n this.actorBkg = this.mainBkg;\n this.labelBoxBkgColor = this.actorBkg;\n this.signalColor = this.textColor;\n this.signalTextColor = this.textColor;\n this.labelBoxBorderColor = this.actorBorder;\n this.labelTextColor = this.actorTextColor;\n this.loopTextColor = this.actorTextColor;\n this.noteBorderColor = this.border2;\n this.noteTextColor = this.actorTextColor;\n\n /* Gantt chart variables */\n\n this.taskTextColor = this.taskTextLightColor;\n this.taskTextOutsideColor = this.taskTextDarkColor;\n\n /* state colors */\n /* class */\n this.classText = this.nodeBorder;\n /* journey */\n this.fillType0 = this.primaryColor;\n this.fillType1 = this.secondaryColor;\n this.fillType2 = adjust(this.primaryColor, { h: 64 });\n this.fillType3 = adjust(this.secondaryColor, { h: 64 });\n this.fillType4 = adjust(this.primaryColor, { h: -64 });\n this.fillType5 = adjust(this.secondaryColor, { h: -64 });\n this.fillType6 = adjust(this.primaryColor, { h: 128 });\n this.fillType7 = adjust(this.secondaryColor, { h: 128 });\n }\n calculate(overrides) {\n if (typeof overrides !== 'object') {\n // Calculate colors form base colors\n this.updateColors();\n return;\n }\n\n const keys = Object.keys(overrides);\n\n // Copy values from overrides, this is mainly for base colors\n keys.forEach(k => {\n this[k] = overrides[k];\n });\n\n // Calculate colors form base colors\n this.updateColors();\n // Copy values from overrides again in case of an override of derived value\n keys.forEach(k => {\n this[k] = overrides[k];\n });\n }\n}\n\nexport const getThemeVariables = userOverrides => {\n const theme = new Theme();\n theme.calculate(userOverrides);\n return theme;\n};\n","import { darken, adjust } from 'khroma';\nclass Theme {\n constructor() {\n /* Base vales */\n this.primaryColor = '#cde498';\n this.secondaryColor = '#cdffb2';\n this.background = 'white';\n this.mainBkg = '#cde498';\n this.secondBkg = '#cdffb2';\n this.lineColor = 'green';\n this.border1 = '#13540c';\n this.border2 = '#6eaa49';\n this.arrowheadColor = 'green';\n this.fontFamily = '\"trebuchet ms\", verdana, arial';\n this.fontSize = '16px';\n\n /* Flowchart variables */\n\n this.nodeBkg = 'calculated';\n this.nodeBorder = 'calculated';\n this.clusterBkg = 'calculated';\n this.clusterBorder = 'calculated';\n this.defaultLinkColor = 'calculated';\n this.titleColor = '#333';\n this.edgeLabelBackground = '#e8e8e8';\n\n /* Sequence Diagram variables */\n\n this.actorBorder = 'calculated';\n this.actorBkg = 'calculated';\n this.actorTextColor = 'black';\n this.actorLineColor = 'grey';\n this.signalColor = '#333';\n this.signalTextColor = '#333';\n this.labelBoxBkgColor = 'calculated';\n this.labelBoxBorderColor = '#326932';\n this.labelTextColor = 'calculated';\n this.loopTextColor = 'calculated';\n this.noteBorderColor = 'calculated';\n this.noteBkgColor = '#fff5ad';\n this.noteTextColor = 'calculated';\n this.activationBorderColor = '#666';\n this.activationBkgColor = '#f4f4f4';\n this.sequenceNumberColor = 'white';\n\n /* Gantt chart variables */\n\n this.sectionBkgColor = '#6eaa49';\n this.altSectionBkgColor = 'white';\n this.sectionBkgColor2 = '#6eaa49';\n this.taskBorderColor = 'calculated';\n this.taskBkgColor = '#487e3a';\n this.taskTextLightColor = 'white';\n this.taskTextColor = 'calculated';\n this.taskTextDarkColor = 'black';\n this.taskTextOutsideColor = 'calculated';\n this.taskTextClickableColor = '#003163';\n this.activeTaskBorderColor = 'calculated';\n this.activeTaskBkgColor = 'calculated';\n this.gridColor = 'lightgrey';\n this.doneTaskBkgColor = 'lightgrey';\n this.doneTaskBorderColor = 'grey';\n this.critBorderColor = '#ff8888';\n this.critBkgColor = 'red';\n this.todayLineColor = 'red';\n\n /* state colors */\n this.labelColor = 'black';\n\n this.errorBkgColor = '#552222';\n this.errorTextColor = '#552222';\n }\n updateColors() {\n /* Flowchart variables */\n\n this.nodeBkg = this.mainBkg;\n this.nodeBorder = this.border1;\n this.clusterBkg = this.secondBkg;\n this.clusterBorder = this.border2;\n this.defaultLinkColor = this.lineColor;\n\n /* Sequence Diagram variables */\n\n this.actorBorder = darken(this.mainBkg, 20);\n this.actorBkg = this.mainBkg;\n this.labelBoxBkgColor = this.actorBkg;\n this.labelTextColor = this.actorTextColor;\n this.loopTextColor = this.actorTextColor;\n this.noteBorderColor = this.border2;\n this.noteTextColor = this.actorTextColor;\n\n /* Gantt chart variables */\n\n this.taskBorderColor = this.border1;\n this.taskTextColor = this.taskTextLightColor;\n this.taskTextOutsideColor = this.taskTextDarkColor;\n this.activeTaskBorderColor = this.taskBorderColor;\n this.activeTaskBkgColor = this.mainBkg;\n\n /* state colors */\n /* class */\n this.classText = this.nodeBorder;\n /* journey */\n this.fillType0 = this.primaryColor;\n this.fillType1 = this.secondaryColor;\n this.fillType2 = adjust(this.primaryColor, { h: 64 });\n this.fillType3 = adjust(this.secondaryColor, { h: 64 });\n this.fillType4 = adjust(this.primaryColor, { h: -64 });\n this.fillType5 = adjust(this.secondaryColor, { h: -64 });\n this.fillType6 = adjust(this.primaryColor, { h: 128 });\n this.fillType7 = adjust(this.secondaryColor, { h: 128 });\n }\n calculate(overrides) {\n if (typeof overrides !== 'object') {\n // Calculate colors form base colors\n this.updateColors();\n return;\n }\n\n const keys = Object.keys(overrides);\n\n // Copy values from overrides, this is mainly for base colors\n keys.forEach(k => {\n this[k] = overrides[k];\n });\n\n // Calculate colors form base colors\n this.updateColors();\n // Copy values from overrides again in case of an override of derived value\n keys.forEach(k => {\n this[k] = overrides[k];\n });\n }\n}\n\nexport const getThemeVariables = userOverrides => {\n const theme = new Theme();\n theme.calculate(userOverrides);\n return theme;\n};\n","import { darken, lighten, adjust } from 'khroma';\n\n// const Color = require ( 'khroma/dist/color' ).default\n// Color.format.hex.stringify(Color.parse('hsl(210, 66.6666666667%, 95%)')); // => \"#EAF2FB\"\n\nclass Theme {\n constructor() {\n this.primaryColor = '#eee';\n this.contrast = '#26a';\n this.secondaryColor = lighten(this.contrast, 55);\n this.background = 'white';\n this.mainBkg = '#eee';\n this.secondBkg = 'calculated';\n this.lineColor = '#666';\n this.border1 = '#999';\n this.border2 = 'calculated';\n this.note = '#ffa';\n this.text = '#333';\n this.critical = '#d42';\n this.done = '#bbb';\n this.arrowheadColor = '#333333';\n this.fontFamily = '\"trebuchet ms\", verdana, arial';\n this.fontSize = '16px';\n\n /* Flowchart variables */\n\n this.nodeBkg = 'calculated';\n this.nodeBorder = 'calculated';\n this.clusterBkg = 'calculated';\n this.clusterBorder = 'calculated';\n this.defaultLinkColor = 'calculated';\n this.titleColor = 'calculated';\n this.edgeLabelBackground = 'white';\n\n /* Sequence Diagram variables */\n\n this.actorBorder = 'calculated';\n this.actorBkg = 'calculated';\n this.actorTextColor = 'calculated';\n this.actorLineColor = 'calculated';\n this.signalColor = 'calculated';\n this.signalTextColor = 'calculated';\n this.labelBoxBkgColor = 'calculated';\n this.labelBoxBorderColor = 'calculated';\n this.labelTextColor = 'calculated';\n this.loopTextColor = 'calculated';\n this.noteBorderColor = 'calculated';\n this.noteBkgColor = 'calculated';\n this.noteTextColor = 'calculated';\n this.activationBorderColor = '#666';\n this.activationBkgColor = '#f4f4f4';\n this.sequenceNumberColor = 'white';\n\n /* Gantt chart variables */\n\n this.sectionBkgColor = 'calculated';\n this.altSectionBkgColor = 'white';\n this.sectionBkgColor2 = 'calculated';\n this.taskBorderColor = 'calculated';\n this.taskBkgColor = 'calculated';\n this.taskTextLightColor = 'white';\n this.taskTextColor = 'calculated';\n this.taskTextDarkColor = 'calculated';\n this.taskTextOutsideColor = 'calculated';\n this.taskTextClickableColor = '#003163';\n this.activeTaskBorderColor = 'calculated';\n this.activeTaskBkgColor = 'calculated';\n this.gridColor = 'calculated';\n this.doneTaskBkgColor = 'calculated';\n this.doneTaskBorderColor = 'calculated';\n this.critBkgColor = 'calculated';\n this.critBorderColor = 'calculated';\n this.todayLineColor = 'calculated';\n\n /* state colors */\n this.labelColor = 'black';\n\n this.errorBkgColor = '#552222';\n this.errorTextColor = '#552222';\n }\n updateColors() {\n this.secondBkg = lighten(this.contrast, 55);\n this.border2 = this.contrast;\n\n /* Flowchart variables */\n\n this.nodeBkg = this.mainBkg;\n this.nodeBorder = this.border1;\n this.clusterBkg = this.secondBkg;\n this.clusterBorder = this.border2;\n this.defaultLinkColor = this.lineColor;\n this.titleColor = this.text;\n\n /* Sequence Diagram variables */\n\n this.actorBorder = lighten(this.border1, 23);\n this.actorBkg = this.mainBkg;\n this.actorTextColor = this.text;\n this.actorLineColor = this.lineColor;\n this.signalColor = this.text;\n this.signalTextColor = this.text;\n this.labelBoxBkgColor = this.actorBkg;\n this.labelBoxBorderColor = this.actorBorder;\n this.labelTextColor = this.text;\n this.loopTextColor = this.text;\n this.noteBorderColor = darken(this.note, 60);\n this.noteBkgColor = this.note;\n this.noteTextColor = this.actorTextColor;\n\n /* Gantt chart variables */\n\n this.sectionBkgColor = lighten(this.contrast, 30);\n this.sectionBkgColor2 = lighten(this.contrast, 30);\n\n this.taskBorderColor = darken(this.contrast, 10);\n\n this.taskBkgColor = this.contrast;\n this.taskTextColor = this.taskTextLightColor;\n this.taskTextDarkColor = this.text;\n this.taskTextOutsideColor = this.taskTextDarkColor;\n this.activeTaskBorderColor = this.taskBorderColor;\n this.activeTaskBkgColor = this.mainBkg;\n this.gridColor = lighten(this.border1, 30);\n\n this.doneTaskBkgColor = this.done;\n this.doneTaskBorderColor = this.lineColor;\n this.critBkgColor = this.critical;\n this.critBorderColor = darken(this.critBkgColor, 10);\n\n this.todayLineColor = this.critBkgColor;\n\n /* state colors */\n /* class */\n this.classText = this.nodeBorder;\n /* journey */\n this.fillType0 = this.primaryColor;\n this.fillType1 = this.secondaryColor;\n this.fillType2 = adjust(this.primaryColor, { h: 64 });\n this.fillType3 = adjust(this.secondaryColor, { h: 64 });\n this.fillType4 = adjust(this.primaryColor, { h: -64 });\n this.fillType5 = adjust(this.secondaryColor, { h: -64 });\n this.fillType6 = adjust(this.primaryColor, { h: 128 });\n this.fillType7 = adjust(this.secondaryColor, { h: 128 });\n }\n calculate(overrides) {\n if (typeof overrides !== 'object') {\n // Calculate colors form base colors\n this.updateColors();\n return;\n }\n\n const keys = Object.keys(overrides);\n\n // Copy values from overrides, this is mainly for base colors\n keys.forEach(k => {\n this[k] = overrides[k];\n });\n\n // Calculate colors form base colors\n this.updateColors();\n // Copy values from overrides again in case of an override of derived value\n keys.forEach(k => {\n this[k] = overrides[k];\n });\n }\n}\n\nexport const getThemeVariables = userOverrides => {\n const theme = new Theme();\n theme.calculate(userOverrides);\n console.info('Theme', userOverrides, theme);\n return theme;\n};\n","import {\n curveBasis,\n curveBasisClosed,\n curveBasisOpen,\n curveLinear,\n curveLinearClosed,\n curveMonotoneX,\n curveMonotoneY,\n curveNatural,\n curveStep,\n curveStepAfter,\n curveStepBefore,\n select\n} from 'd3';\nimport { logger } from './logger';\nimport { sanitizeUrl } from '@braintree/sanitize-url';\nimport common from './diagrams/common/common';\n// import cryptoRandomString from 'crypto-random-string';\n\n// Effectively an enum of the supported curve types, accessible by name\nconst d3CurveTypes = {\n curveBasis: curveBasis,\n curveBasisClosed: curveBasisClosed,\n curveBasisOpen: curveBasisOpen,\n curveLinear: curveLinear,\n curveLinearClosed: curveLinearClosed,\n curveMonotoneX: curveMonotoneX,\n curveMonotoneY: curveMonotoneY,\n curveNatural: curveNatural,\n curveStep: curveStep,\n curveStepAfter: curveStepAfter,\n curveStepBefore: curveStepBefore\n};\nconst directive = /[%]{2}[{]\\s*(?:(?:(\\w+)\\s*:|(\\w+))\\s*(?:(?:(\\w+))|((?:(?![}][%]{2}).|\\r?\\n)*))?\\s*)(?:[}][%]{2})?/gi;\nconst directiveWithoutOpen = /\\s*(?:(?:(\\w+)(?=:):|(\\w+))\\s*(?:(?:(\\w+))|((?:(?![}][%]{2}).|\\r?\\n)*))?\\s*)(?:[}][%]{2})?/gi;\nconst anyComment = /\\s*%%.*\\n/gm;\n\n/**\n * @function detectInit\n * Detects the init config object from the text\n * ```mermaid\n * %%{init: {\"theme\": \"debug\", \"logLevel\": 1 }}%%\n * graph LR\n * a-->b\n * b-->c\n * c-->d\n * d-->e\n * e-->f\n * f-->g\n * g-->h\n * ```\n * or\n * ```mermaid\n * %%{initialize: {\"theme\": \"dark\", logLevel: \"debug\" }}%%\n * graph LR\n * a-->b\n * b-->c\n * c-->d\n * d-->e\n * e-->f\n * f-->g\n * g-->h\n * ```\n *\n * @param {string} text The text defining the graph\n * @returns {object} the json object representing the init passed to mermaid.initialize()\n */\nexport const detectInit = function(text) {\n let inits = detectDirective(text, /(?:init\\b)|(?:initialize\\b)/);\n let results = {};\n if (Array.isArray(inits)) {\n let args = inits.map(init => init.args);\n results = assignWithDepth(results, [...args]);\n } else {\n results = inits.args;\n }\n if (results) {\n let type = detectType(text);\n ['config'].forEach(prop => {\n if (typeof results[prop] !== 'undefined') {\n if (type === 'flowchart-v2') {\n type = 'flowchart';\n }\n results[type] = results[prop];\n delete results[prop];\n }\n });\n }\n return results;\n};\n\n/**\n * @function detectDirective\n * Detects the directive from the text. Text can be single line or multiline. If type is null or omitted\n * the first directive encountered in text will be returned\n * ```mermaid\n * graph LR\n * %%{somedirective}%%\n * a-->b\n * b-->c\n * c-->d\n * d-->e\n * e-->f\n * f-->g\n * g-->h\n * ```\n *\n * @param {string} text The text defining the graph\n * @param {string|RegExp} type The directive to return (default: null)\n * @returns {object | Array} An object or Array representing the directive(s): { type: string, args: object|null } matched by the input type\n * if a single directive was found, that directive object will be returned.\n */\nexport const detectDirective = function(text, type = null) {\n try {\n const commentWithoutDirectives = new RegExp(\n `[%]{2}(?![{]${directiveWithoutOpen.source})(?=[}][%]{2}).*\\n`,\n 'ig'\n );\n text = text\n .trim()\n .replace(commentWithoutDirectives, '')\n .replace(/'/gm, '\"');\n logger.debug(\n `Detecting diagram directive${type !== null ? ' type:' + type : ''} based on the text:${text}`\n );\n let match,\n result = [];\n while ((match = directive.exec(text)) !== null) {\n // This is necessary to avoid infinite loops with zero-width matches\n if (match.index === directive.lastIndex) {\n directive.lastIndex++;\n }\n if (\n (match && !type) ||\n (type && match[1] && match[1].match(type)) ||\n (type && match[2] && match[2].match(type))\n ) {\n let type = match[1] ? match[1] : match[2];\n let args = match[3] ? match[3].trim() : match[4] ? JSON.parse(match[4].trim()) : null;\n result.push({ type, args });\n }\n }\n if (result.length === 0) {\n result.push({ type: text, args: null });\n }\n\n return result.length === 1 ? result[0] : result;\n } catch (error) {\n logger.error(\n `ERROR: ${error.message} - Unable to parse directive${\n type !== null ? ' type:' + type : ''\n } based on the text:${text}`\n );\n return { type: null, args: null };\n }\n};\n\n/**\n * @function detectType\n * Detects the type of the graph text. Takes into consideration the possible existence of an %%init\n * directive\n * ```mermaid\n * %%{initialize: {\"startOnLoad\": true, logLevel: \"fatal\" }}%%\n * graph LR\n * a-->b\n * b-->c\n * c-->d\n * d-->e\n * e-->f\n * f-->g\n * g-->h\n * ```\n *\n * @param {string} text The text defining the graph\n * @returns {string} A graph definition key\n */\nexport const detectType = function(text) {\n text = text.replace(directive, '').replace(anyComment, '\\n');\n logger.debug('Detecting diagram type based on the text ' + text);\n if (text.match(/^\\s*sequenceDiagram/)) {\n return 'sequence';\n }\n\n if (text.match(/^\\s*gantt/)) {\n return 'gantt';\n }\n if (text.match(/^\\s*classDiagram-v2/)) {\n return 'classDiagram';\n }\n if (text.match(/^\\s*classDiagram/)) {\n return 'class';\n }\n\n if (text.match(/^\\s*stateDiagram-v2/)) {\n return 'stateDiagram';\n }\n\n if (text.match(/^\\s*stateDiagram/)) {\n return 'state';\n }\n\n if (text.match(/^\\s*gitGraph/)) {\n return 'git';\n }\n if (text.match(/^\\s*flowchart/)) {\n return 'flowchart-v2';\n }\n\n if (text.match(/^\\s*info/)) {\n return 'info';\n }\n if (text.match(/^\\s*pie/)) {\n return 'pie';\n }\n\n if (text.match(/^\\s*erDiagram/)) {\n return 'er';\n }\n\n if (text.match(/^\\s*journey/)) {\n return 'journey';\n }\n\n return 'flowchart';\n};\n\nconst memoize = (fn, resolver) => {\n let cache = {};\n return (...args) => {\n let n = resolver ? resolver.apply(this, args) : args[0];\n if (n in cache) {\n return cache[n];\n } else {\n let result = fn(...args);\n cache[n] = result;\n return result;\n }\n };\n};\n\n/**\n * @function isSubstringInArray\n * Detects whether a substring in present in a given array\n * @param {string} str The substring to detect\n * @param {array} arr The array to search\n * @returns {number} the array index containing the substring or -1 if not present\n **/\nexport const isSubstringInArray = function(str, arr) {\n for (let i = 0; i < arr.length; i++) {\n if (arr[i].match(str)) return i;\n }\n return -1;\n};\n\nexport const interpolateToCurve = (interpolate, defaultCurve) => {\n if (!interpolate) {\n return defaultCurve;\n }\n const curveName = `curve${interpolate.charAt(0).toUpperCase() + interpolate.slice(1)}`;\n return d3CurveTypes[curveName] || defaultCurve;\n};\n\nexport const formatUrl = (linkStr, config) => {\n let url = linkStr.trim();\n\n if (url) {\n if (config.securityLevel !== 'loose') {\n return sanitizeUrl(url);\n }\n\n return url;\n }\n};\n\nexport const runFunc = (functionName, ...params) => {\n const arrPaths = functionName.split('.');\n\n const len = arrPaths.length - 1;\n const fnName = arrPaths[len];\n\n let obj = window;\n for (let i = 0; i < len; i++) {\n obj = obj[arrPaths[i]];\n if (!obj) return;\n }\n\n obj[fnName](...params);\n};\n\nconst distance = (p1, p2) =>\n p1 && p2 ? Math.sqrt(Math.pow(p2.x - p1.x, 2) + Math.pow(p2.y - p1.y, 2)) : 0;\n\nconst traverseEdge = points => {\n let prevPoint;\n let totalDistance = 0;\n\n points.forEach(point => {\n totalDistance += distance(point, prevPoint);\n prevPoint = point;\n });\n\n // Traverse half of total distance along points\n let remainingDistance = totalDistance / 2;\n let center = undefined;\n prevPoint = undefined;\n points.forEach(point => {\n if (prevPoint && !center) {\n const vectorDistance = distance(point, prevPoint);\n if (vectorDistance < remainingDistance) {\n remainingDistance -= vectorDistance;\n } else {\n // The point is remainingDistance from prevPoint in the vector between prevPoint and point\n // Calculate the coordinates\n const distanceRatio = remainingDistance / vectorDistance;\n if (distanceRatio <= 0) center = prevPoint;\n if (distanceRatio >= 1) center = { x: point.x, y: point.y };\n if (distanceRatio > 0 && distanceRatio < 1) {\n center = {\n x: (1 - distanceRatio) * prevPoint.x + distanceRatio * point.x,\n y: (1 - distanceRatio) * prevPoint.y + distanceRatio * point.y\n };\n }\n }\n }\n prevPoint = point;\n });\n return center;\n};\n\nconst calcLabelPosition = points => {\n return traverseEdge(points);\n};\n\nconst calcCardinalityPosition = (isRelationTypePresent, points, initialPosition) => {\n let prevPoint;\n let totalDistance = 0; // eslint-disable-line\n if (points[0] !== initialPosition) {\n points = points.reverse();\n }\n points.forEach(point => {\n totalDistance += distance(point, prevPoint);\n prevPoint = point;\n });\n\n // Traverse only 25 total distance along points to find cardinality point\n const distanceToCardinalityPoint = 25;\n\n let remainingDistance = distanceToCardinalityPoint;\n let center;\n prevPoint = undefined;\n points.forEach(point => {\n if (prevPoint && !center) {\n const vectorDistance = distance(point, prevPoint);\n if (vectorDistance < remainingDistance) {\n remainingDistance -= vectorDistance;\n } else {\n // The point is remainingDistance from prevPoint in the vector between prevPoint and point\n // Calculate the coordinates\n const distanceRatio = remainingDistance / vectorDistance;\n if (distanceRatio <= 0) center = prevPoint;\n if (distanceRatio >= 1) center = { x: point.x, y: point.y };\n if (distanceRatio > 0 && distanceRatio < 1) {\n center = {\n x: (1 - distanceRatio) * prevPoint.x + distanceRatio * point.x,\n y: (1 - distanceRatio) * prevPoint.y + distanceRatio * point.y\n };\n }\n }\n }\n prevPoint = point;\n });\n // if relation is present (Arrows will be added), change cardinality point off-set distance (d)\n let d = isRelationTypePresent ? 10 : 5;\n //Calculate Angle for x and y axis\n let angle = Math.atan2(points[0].y - center.y, points[0].x - center.x);\n let cardinalityPosition = { x: 0, y: 0 };\n //Calculation cardinality position using angle, center point on the line/curve but pendicular and with offset-distance\n cardinalityPosition.x = Math.sin(angle) * d + (points[0].x + center.x) / 2;\n cardinalityPosition.y = -Math.cos(angle) * d + (points[0].y + center.y) / 2;\n return cardinalityPosition;\n};\n\nexport const getStylesFromArray = arr => {\n let style = '';\n let labelStyle = '';\n\n for (let i = 0; i < arr.length; i++) {\n if (typeof arr[i] !== 'undefined') {\n // add text properties to label style definition\n if (arr[i].startsWith('color:') || arr[i].startsWith('text-align:')) {\n labelStyle = labelStyle + arr[i] + ';';\n } else {\n style = style + arr[i] + ';';\n }\n }\n }\n\n return { style: style, labelStyle: labelStyle };\n};\n\nlet cnt = 0;\nexport const generateId = () => {\n cnt++;\n return (\n 'id-' +\n Math.random()\n .toString(36)\n .substr(2, 12) +\n '-' +\n cnt\n );\n};\n\nfunction makeid(length) {\n var result = '';\n var characters = '0123456789abcdef';\n var charactersLength = characters.length;\n for (var i = 0; i < length; i++) {\n result += characters.charAt(Math.floor(Math.random() * charactersLength));\n }\n return result;\n}\n\nexport const random = options => {\n return makeid(options.length);\n};\n\n/**\n * @function assignWithDepth\n * Extends the functionality of {@link ObjectConstructor.assign} with the ability to merge arbitrary-depth objects\n * For each key in src with path `k` (recursively) performs an Object.assign(dst[`k`], src[`k`]) with\n * a slight change from the typical handling of undefined for dst[`k`]: instead of raising an error,\n * dst[`k`] is auto-initialized to {} and effectively merged with src[`k`]\n *
' },\n config\n );\n if (common.lineBreakRegex.test(label)) {\n return label;\n }\n const words = label.split(' ');\n const completedLines = [];\n let nextLine = '';\n words.forEach((word, index) => {\n const wordLength = calculateTextWidth(`${word} `, config);\n const nextLineLength = calculateTextWidth(nextLine, config);\n if (wordLength > maxWidth) {\n const { hyphenatedStrings, remainingWord } = breakString(word, maxWidth, '-', config);\n completedLines.push(nextLine, ...hyphenatedStrings);\n nextLine = remainingWord;\n } else if (nextLineLength + wordLength >= maxWidth) {\n completedLines.push(nextLine);\n nextLine = word;\n } else {\n nextLine = [nextLine, word].filter(Boolean).join(' ');\n }\n const currentWord = index + 1;\n const isLastWord = currentWord === words.length;\n if (isLastWord) {\n completedLines.push(nextLine);\n }\n });\n return completedLines.filter(line => line !== '').join(config.joinWith);\n },\n (label, maxWidth, config) =>\n `${label}-${maxWidth}-${config.fontSize}-${config.fontWeight}-${config.fontFamily}-${config.joinWith}`\n);\n\nconst breakString = memoize(\n (word, maxWidth, hyphenCharacter = '-', config) => {\n config = Object.assign(\n { fontSize: 12, fontWeight: 400, fontFamily: 'Arial', margin: 0 },\n config\n );\n const characters = word.split('');\n const lines = [];\n let currentLine = '';\n characters.forEach((character, index) => {\n const nextLine = `${currentLine}${character}`;\n const lineWidth = calculateTextWidth(nextLine, config);\n if (lineWidth >= maxWidth) {\n const currentCharacter = index + 1;\n const isLastLine = characters.length === currentCharacter;\n const hyphenatedNextLine = `${nextLine}${hyphenCharacter}`;\n lines.push(isLastLine ? nextLine : hyphenatedNextLine);\n currentLine = '';\n } else {\n currentLine = nextLine;\n }\n });\n return { hyphenatedStrings: lines, remainingWord: currentLine };\n },\n (word, maxWidth, hyphenCharacter = '-', config) =>\n `${word}-${maxWidth}-${hyphenCharacter}-${config.fontSize}-${config.fontWeight}-${config.fontFamily}`\n);\n\n/**\n * This calculates the text's height, taking into account the wrap breaks and\n * both the statically configured height, width, and the length of the text (in pixels).\n *\n * If the wrapped text text has greater height, we extend the height, so it's\n * value won't overflow.\n *\n * @return - The height for the given text\n * @param text the text to measure\n * @param config - the config for fontSize, fontFamily, and fontWeight all impacting the resulting size\n */\nexport const calculateTextHeight = function(text, config) {\n config = Object.assign(\n { fontSize: 12, fontWeight: 400, fontFamily: 'Arial', margin: 15 },\n config\n );\n return calculateTextDimensions(text, config).height;\n};\n\n/**\n * This calculates the width of the given text, font size and family.\n *\n * @return - The width for the given text\n * @param text - The text to calculate the width of\n * @param config - the config for fontSize, fontFamily, and fontWeight all impacting the resulting size\n */\nexport const calculateTextWidth = function(text, config) {\n config = Object.assign({ fontSize: 12, fontWeight: 400, fontFamily: 'Arial' }, config);\n return calculateTextDimensions(text, config).width;\n};\n\n/**\n * This calculates the dimensions of the given text, font size, font family, font weight, and margins.\n *\n * @return - The width for the given text\n * @param text - The text to calculate the width of\n * @param config - the config for fontSize, fontFamily, fontWeight, and margin all impacting the resulting size\n */\nexport const calculateTextDimensions = memoize(\n function(text, config) {\n config = Object.assign({ fontSize: 12, fontWeight: 400, fontFamily: 'Arial' }, config);\n const { fontSize, fontFamily, fontWeight } = config;\n if (!text) {\n return { width: 0, height: 0 };\n }\n\n // We can't really know if the user supplied font family will render on the user agent;\n // thus, we'll take the max width between the user supplied font family, and a default\n // of sans-serif.\n const fontFamilies = ['sans-serif', fontFamily];\n const lines = text.split(common.lineBreakRegex);\n let dims = [];\n\n const body = select('body');\n // We don't want to leak DOM elements - if a removal operation isn't available\n // for any reason, do not continue.\n if (!body.remove) {\n return { width: 0, height: 0, lineHeight: 0 };\n }\n\n const g = body.append('svg');\n\n for (let fontFamily of fontFamilies) {\n let cheight = 0;\n let dim = { width: 0, height: 0, lineHeight: 0 };\n for (let line of lines) {\n const textObj = getTextObj();\n textObj.text = line;\n const textElem = drawSimpleText(g, textObj)\n .style('font-size', fontSize)\n .style('font-weight', fontWeight)\n .style('font-family', fontFamily);\n\n let bBox = (textElem._groups || textElem)[0][0].getBBox();\n dim.width = Math.round(Math.max(dim.width, bBox.width));\n cheight = Math.round(bBox.height);\n dim.height += cheight;\n dim.lineHeight = Math.round(Math.max(dim.lineHeight, cheight));\n }\n dims.push(dim);\n }\n\n g.remove();\n\n let index =\n isNaN(dims[1].height) ||\n isNaN(dims[1].width) ||\n isNaN(dims[1].lineHeight) ||\n (dims[0].height > dims[1].height &&\n dims[0].width > dims[1].width &&\n dims[0].lineHeight > dims[1].lineHeight)\n ? 0\n : 1;\n return dims[index];\n },\n (text, config) => `${text}-${config.fontSize}-${config.fontWeight}-${config.fontFamily}`\n);\n\nexport default {\n assignWithDepth,\n wrapLabel,\n calculateTextHeight,\n calculateTextWidth,\n calculateTextDimensions,\n detectInit,\n detectDirective,\n detectType,\n isSubstringInArray,\n interpolateToCurve,\n calcLabelPosition,\n calcCardinalityPosition,\n formatUrl,\n getStylesFromArray,\n generateId,\n random,\n memoize,\n runFunc\n};\n"],"sourceRoot":""}
-=======
-{"version":3,"sources":["webpack://mermaid/webpack/universalModuleDefinition","webpack://mermaid/webpack/bootstrap","webpack://mermaid/./node_modules/@braintree/sanitize-url/index.js","webpack://mermaid/./node_modules/asn1.js/lib/asn1.js","webpack://mermaid/./node_modules/asn1.js/lib/asn1/api.js","webpack://mermaid/./node_modules/asn1.js/lib/asn1/base/buffer.js","webpack://mermaid/./node_modules/asn1.js/lib/asn1/base/index.js","webpack://mermaid/./node_modules/asn1.js/lib/asn1/base/node.js","webpack://mermaid/./node_modules/asn1.js/lib/asn1/base/reporter.js","webpack://mermaid/./node_modules/asn1.js/lib/asn1/constants/der.js","webpack://mermaid/./node_modules/asn1.js/lib/asn1/constants/index.js","webpack://mermaid/./node_modules/asn1.js/lib/asn1/decoders/der.js","webpack://mermaid/./node_modules/asn1.js/lib/asn1/decoders/index.js","webpack://mermaid/./node_modules/asn1.js/lib/asn1/decoders/pem.js","webpack://mermaid/./node_modules/asn1.js/lib/asn1/encoders/der.js","webpack://mermaid/./node_modules/asn1.js/lib/asn1/encoders/index.js","webpack://mermaid/./node_modules/asn1.js/lib/asn1/encoders/pem.js","webpack://mermaid/./node_modules/base64-js/index.js","webpack://mermaid/./node_modules/bn.js/lib/bn.js","webpack://mermaid/./node_modules/brorand/index.js","webpack://mermaid/./node_modules/browserify-aes/aes.js","webpack://mermaid/./node_modules/browserify-aes/authCipher.js","webpack://mermaid/./node_modules/browserify-aes/browser.js","webpack://mermaid/./node_modules/browserify-aes/decrypter.js","webpack://mermaid/./node_modules/browserify-aes/encrypter.js","webpack://mermaid/./node_modules/browserify-aes/ghash.js","webpack://mermaid/./node_modules/browserify-aes/incr32.js","webpack://mermaid/./node_modules/browserify-aes/modes/cbc.js","webpack://mermaid/./node_modules/browserify-aes/modes/cfb.js","webpack://mermaid/./node_modules/browserify-aes/modes/cfb1.js","webpack://mermaid/./node_modules/browserify-aes/modes/cfb8.js","webpack://mermaid/./node_modules/browserify-aes/modes/ctr.js","webpack://mermaid/./node_modules/browserify-aes/modes/ecb.js","webpack://mermaid/./node_modules/browserify-aes/modes/index.js","webpack://mermaid/./node_modules/browserify-aes/modes/ofb.js","webpack://mermaid/./node_modules/browserify-aes/streamCipher.js","webpack://mermaid/./node_modules/browserify-cipher/browser.js","webpack://mermaid/./node_modules/browserify-des/index.js","webpack://mermaid/./node_modules/browserify-des/modes.js","webpack://mermaid/./node_modules/browserify-rsa/index.js","webpack://mermaid/./node_modules/browserify-sign/algos.js","webpack://mermaid/./node_modules/browserify-sign/browser/index.js","webpack://mermaid/./node_modules/browserify-sign/browser/sign.js","webpack://mermaid/./node_modules/browserify-sign/browser/verify.js","webpack://mermaid/./node_modules/buffer-xor/index.js","webpack://mermaid/./node_modules/buffer/index.js","webpack://mermaid/./node_modules/cipher-base/index.js","webpack://mermaid/./node_modules/core-util-is/lib/util.js","webpack://mermaid/./node_modules/create-ecdh/browser.js","webpack://mermaid/./node_modules/create-hash/browser.js","webpack://mermaid/./node_modules/create-hash/md5.js","webpack://mermaid/./node_modules/create-hmac/browser.js","webpack://mermaid/./node_modules/create-hmac/legacy.js","webpack://mermaid/./node_modules/crypto-browserify/index.js","webpack://mermaid/./node_modules/crypto-random-string/index.js","webpack://mermaid/./src/themes/dark/index.scss","webpack://mermaid/./src/themes/default/index.scss","webpack://mermaid/./src/themes/forest/index.scss","webpack://mermaid/./src/themes/neutral/index.scss","webpack://mermaid/./node_modules/css-loader/dist/runtime/api.js","webpack://mermaid/./node_modules/d3-array/src/array.js","webpack://mermaid/./node_modules/d3-array/src/ascending.js","webpack://mermaid/./node_modules/d3-array/src/bisect.js","webpack://mermaid/./node_modules/d3-array/src/bisector.js","webpack://mermaid/./node_modules/d3-array/src/constant.js","webpack://mermaid/./node_modules/d3-array/src/cross.js","webpack://mermaid/./node_modules/d3-array/src/descending.js","webpack://mermaid/./node_modules/d3-array/src/deviation.js","webpack://mermaid/./node_modules/d3-array/src/extent.js","webpack://mermaid/./node_modules/d3-array/src/histogram.js","webpack://mermaid/./node_modules/d3-array/src/identity.js","webpack://mermaid/./node_modules/d3-array/src/index.js","webpack://mermaid/./node_modules/d3-array/src/max.js","webpack://mermaid/./node_modules/d3-array/src/mean.js","webpack://mermaid/./node_modules/d3-array/src/median.js","webpack://mermaid/./node_modules/d3-array/src/merge.js","webpack://mermaid/./node_modules/d3-array/src/min.js","webpack://mermaid/./node_modules/d3-array/src/number.js","webpack://mermaid/./node_modules/d3-array/src/pairs.js","webpack://mermaid/./node_modules/d3-array/src/permute.js","webpack://mermaid/./node_modules/d3-array/src/quantile.js","webpack://mermaid/./node_modules/d3-array/src/range.js","webpack://mermaid/./node_modules/d3-array/src/scan.js","webpack://mermaid/./node_modules/d3-array/src/shuffle.js","webpack://mermaid/./node_modules/d3-array/src/sum.js","webpack://mermaid/./node_modules/d3-array/src/threshold/freedmanDiaconis.js","webpack://mermaid/./node_modules/d3-array/src/threshold/scott.js","webpack://mermaid/./node_modules/d3-array/src/threshold/sturges.js","webpack://mermaid/./node_modules/d3-array/src/ticks.js","webpack://mermaid/./node_modules/d3-array/src/transpose.js","webpack://mermaid/./node_modules/d3-array/src/variance.js","webpack://mermaid/./node_modules/d3-array/src/zip.js","webpack://mermaid/./node_modules/d3-axis/src/array.js","webpack://mermaid/./node_modules/d3-axis/src/axis.js","webpack://mermaid/./node_modules/d3-axis/src/identity.js","webpack://mermaid/./node_modules/d3-axis/src/index.js","webpack://mermaid/./node_modules/d3-brush/src/brush.js","webpack://mermaid/./node_modules/d3-brush/src/constant.js","webpack://mermaid/./node_modules/d3-brush/src/event.js","webpack://mermaid/./node_modules/d3-brush/src/index.js","webpack://mermaid/./node_modules/d3-brush/src/noevent.js","webpack://mermaid/./node_modules/d3-chord/src/array.js","webpack://mermaid/./node_modules/d3-chord/src/chord.js","webpack://mermaid/./node_modules/d3-chord/src/constant.js","webpack://mermaid/./node_modules/d3-chord/src/index.js","webpack://mermaid/./node_modules/d3-chord/src/math.js","webpack://mermaid/./node_modules/d3-chord/src/ribbon.js","webpack://mermaid/./node_modules/d3-collection/src/entries.js","webpack://mermaid/./node_modules/d3-collection/src/index.js","webpack://mermaid/./node_modules/d3-collection/src/keys.js","webpack://mermaid/./node_modules/d3-collection/src/map.js","webpack://mermaid/./node_modules/d3-collection/src/nest.js","webpack://mermaid/./node_modules/d3-collection/src/set.js","webpack://mermaid/./node_modules/d3-collection/src/values.js","webpack://mermaid/./node_modules/d3-color/src/color.js","webpack://mermaid/./node_modules/d3-color/src/cubehelix.js","webpack://mermaid/./node_modules/d3-color/src/define.js","webpack://mermaid/./node_modules/d3-color/src/index.js","webpack://mermaid/./node_modules/d3-color/src/lab.js","webpack://mermaid/./node_modules/d3-color/src/math.js","webpack://mermaid/./node_modules/d3-contour/src/area.js","webpack://mermaid/./node_modules/d3-contour/src/array.js","webpack://mermaid/./node_modules/d3-contour/src/ascending.js","webpack://mermaid/./node_modules/d3-contour/src/blur.js","webpack://mermaid/./node_modules/d3-contour/src/constant.js","webpack://mermaid/./node_modules/d3-contour/src/contains.js","webpack://mermaid/./node_modules/d3-contour/src/contours.js","webpack://mermaid/./node_modules/d3-contour/src/density.js","webpack://mermaid/./node_modules/d3-contour/src/index.js","webpack://mermaid/./node_modules/d3-contour/src/noop.js","webpack://mermaid/./node_modules/d3-dispatch/src/dispatch.js","webpack://mermaid/./node_modules/d3-dispatch/src/index.js","webpack://mermaid/./node_modules/d3-drag/src/constant.js","webpack://mermaid/./node_modules/d3-drag/src/drag.js","webpack://mermaid/./node_modules/d3-drag/src/event.js","webpack://mermaid/./node_modules/d3-drag/src/index.js","webpack://mermaid/./node_modules/d3-drag/src/nodrag.js","webpack://mermaid/./node_modules/d3-drag/src/noevent.js","webpack://mermaid/./node_modules/d3-dsv/src/autoType.js","webpack://mermaid/./node_modules/d3-dsv/src/csv.js","webpack://mermaid/./node_modules/d3-dsv/src/dsv.js","webpack://mermaid/./node_modules/d3-dsv/src/index.js","webpack://mermaid/./node_modules/d3-dsv/src/tsv.js","webpack://mermaid/./node_modules/d3-ease/src/back.js","webpack://mermaid/./node_modules/d3-ease/src/bounce.js","webpack://mermaid/./node_modules/d3-ease/src/circle.js","webpack://mermaid/./node_modules/d3-ease/src/cubic.js","webpack://mermaid/./node_modules/d3-ease/src/elastic.js","webpack://mermaid/./node_modules/d3-ease/src/exp.js","webpack://mermaid/./node_modules/d3-ease/src/index.js","webpack://mermaid/./node_modules/d3-ease/src/linear.js","webpack://mermaid/./node_modules/d3-ease/src/poly.js","webpack://mermaid/./node_modules/d3-ease/src/quad.js","webpack://mermaid/./node_modules/d3-ease/src/sin.js","webpack://mermaid/./node_modules/d3-fetch/src/blob.js","webpack://mermaid/./node_modules/d3-fetch/src/buffer.js","webpack://mermaid/./node_modules/d3-fetch/src/dsv.js","webpack://mermaid/./node_modules/d3-fetch/src/image.js","webpack://mermaid/./node_modules/d3-fetch/src/index.js","webpack://mermaid/./node_modules/d3-fetch/src/json.js","webpack://mermaid/./node_modules/d3-fetch/src/text.js","webpack://mermaid/./node_modules/d3-fetch/src/xml.js","webpack://mermaid/./node_modules/d3-force/src/center.js","webpack://mermaid/./node_modules/d3-force/src/collide.js","webpack://mermaid/./node_modules/d3-force/src/constant.js","webpack://mermaid/./node_modules/d3-force/src/index.js","webpack://mermaid/./node_modules/d3-force/src/jiggle.js","webpack://mermaid/./node_modules/d3-force/src/link.js","webpack://mermaid/./node_modules/d3-force/src/manyBody.js","webpack://mermaid/./node_modules/d3-force/src/radial.js","webpack://mermaid/./node_modules/d3-force/src/simulation.js","webpack://mermaid/./node_modules/d3-force/src/x.js","webpack://mermaid/./node_modules/d3-force/src/y.js","webpack://mermaid/./node_modules/d3-format/src/defaultLocale.js","webpack://mermaid/./node_modules/d3-format/src/exponent.js","webpack://mermaid/./node_modules/d3-format/src/formatDecimal.js","webpack://mermaid/./node_modules/d3-format/src/formatGroup.js","webpack://mermaid/./node_modules/d3-format/src/formatNumerals.js","webpack://mermaid/./node_modules/d3-format/src/formatPrefixAuto.js","webpack://mermaid/./node_modules/d3-format/src/formatRounded.js","webpack://mermaid/./node_modules/d3-format/src/formatSpecifier.js","webpack://mermaid/./node_modules/d3-format/src/formatTrim.js","webpack://mermaid/./node_modules/d3-format/src/formatTypes.js","webpack://mermaid/./node_modules/d3-format/src/identity.js","webpack://mermaid/./node_modules/d3-format/src/index.js","webpack://mermaid/./node_modules/d3-format/src/locale.js","webpack://mermaid/./node_modules/d3-format/src/precisionFixed.js","webpack://mermaid/./node_modules/d3-format/src/precisionPrefix.js","webpack://mermaid/./node_modules/d3-format/src/precisionRound.js","webpack://mermaid/./node_modules/d3-geo/src/adder.js","webpack://mermaid/./node_modules/d3-geo/src/area.js","webpack://mermaid/./node_modules/d3-geo/src/bounds.js","webpack://mermaid/./node_modules/d3-geo/src/cartesian.js","webpack://mermaid/./node_modules/d3-geo/src/centroid.js","webpack://mermaid/./node_modules/d3-geo/src/circle.js","webpack://mermaid/./node_modules/d3-geo/src/clip/antimeridian.js","webpack://mermaid/./node_modules/d3-geo/src/clip/buffer.js","webpack://mermaid/./node_modules/d3-geo/src/clip/circle.js","webpack://mermaid/./node_modules/d3-geo/src/clip/extent.js","webpack://mermaid/./node_modules/d3-geo/src/clip/index.js","webpack://mermaid/./node_modules/d3-geo/src/clip/line.js","webpack://mermaid/./node_modules/d3-geo/src/clip/rectangle.js","webpack://mermaid/./node_modules/d3-geo/src/clip/rejoin.js","webpack://mermaid/./node_modules/d3-geo/src/compose.js","webpack://mermaid/./node_modules/d3-geo/src/constant.js","webpack://mermaid/./node_modules/d3-geo/src/contains.js","webpack://mermaid/./node_modules/d3-geo/src/distance.js","webpack://mermaid/./node_modules/d3-geo/src/graticule.js","webpack://mermaid/./node_modules/d3-geo/src/identity.js","webpack://mermaid/./node_modules/d3-geo/src/index.js","webpack://mermaid/./node_modules/d3-geo/src/interpolate.js","webpack://mermaid/./node_modules/d3-geo/src/length.js","webpack://mermaid/./node_modules/d3-geo/src/math.js","webpack://mermaid/./node_modules/d3-geo/src/noop.js","webpack://mermaid/./node_modules/d3-geo/src/path/area.js","webpack://mermaid/./node_modules/d3-geo/src/path/bounds.js","webpack://mermaid/./node_modules/d3-geo/src/path/centroid.js","webpack://mermaid/./node_modules/d3-geo/src/path/context.js","webpack://mermaid/./node_modules/d3-geo/src/path/index.js","webpack://mermaid/./node_modules/d3-geo/src/path/measure.js","webpack://mermaid/./node_modules/d3-geo/src/path/string.js","webpack://mermaid/./node_modules/d3-geo/src/pointEqual.js","webpack://mermaid/./node_modules/d3-geo/src/polygonContains.js","webpack://mermaid/./node_modules/d3-geo/src/projection/albers.js","webpack://mermaid/./node_modules/d3-geo/src/projection/albersUsa.js","webpack://mermaid/./node_modules/d3-geo/src/projection/azimuthal.js","webpack://mermaid/./node_modules/d3-geo/src/projection/azimuthalEqualArea.js","webpack://mermaid/./node_modules/d3-geo/src/projection/azimuthalEquidistant.js","webpack://mermaid/./node_modules/d3-geo/src/projection/conic.js","webpack://mermaid/./node_modules/d3-geo/src/projection/conicConformal.js","webpack://mermaid/./node_modules/d3-geo/src/projection/conicEqualArea.js","webpack://mermaid/./node_modules/d3-geo/src/projection/conicEquidistant.js","webpack://mermaid/./node_modules/d3-geo/src/projection/cylindricalEqualArea.js","webpack://mermaid/./node_modules/d3-geo/src/projection/equalEarth.js","webpack://mermaid/./node_modules/d3-geo/src/projection/equirectangular.js","webpack://mermaid/./node_modules/d3-geo/src/projection/fit.js","webpack://mermaid/./node_modules/d3-geo/src/projection/gnomonic.js","webpack://mermaid/./node_modules/d3-geo/src/projection/identity.js","webpack://mermaid/./node_modules/d3-geo/src/projection/index.js","webpack://mermaid/./node_modules/d3-geo/src/projection/mercator.js","webpack://mermaid/./node_modules/d3-geo/src/projection/naturalEarth1.js","webpack://mermaid/./node_modules/d3-geo/src/projection/orthographic.js","webpack://mermaid/./node_modules/d3-geo/src/projection/resample.js","webpack://mermaid/./node_modules/d3-geo/src/projection/stereographic.js","webpack://mermaid/./node_modules/d3-geo/src/projection/transverseMercator.js","webpack://mermaid/./node_modules/d3-geo/src/rotation.js","webpack://mermaid/./node_modules/d3-geo/src/stream.js","webpack://mermaid/./node_modules/d3-geo/src/transform.js","webpack://mermaid/./node_modules/d3-hierarchy/src/accessors.js","webpack://mermaid/./node_modules/d3-hierarchy/src/array.js","webpack://mermaid/./node_modules/d3-hierarchy/src/cluster.js","webpack://mermaid/./node_modules/d3-hierarchy/src/constant.js","webpack://mermaid/./node_modules/d3-hierarchy/src/hierarchy/ancestors.js","webpack://mermaid/./node_modules/d3-hierarchy/src/hierarchy/count.js","webpack://mermaid/./node_modules/d3-hierarchy/src/hierarchy/descendants.js","webpack://mermaid/./node_modules/d3-hierarchy/src/hierarchy/each.js","webpack://mermaid/./node_modules/d3-hierarchy/src/hierarchy/eachAfter.js","webpack://mermaid/./node_modules/d3-hierarchy/src/hierarchy/eachBefore.js","webpack://mermaid/./node_modules/d3-hierarchy/src/hierarchy/index.js","webpack://mermaid/./node_modules/d3-hierarchy/src/hierarchy/leaves.js","webpack://mermaid/./node_modules/d3-hierarchy/src/hierarchy/links.js","webpack://mermaid/./node_modules/d3-hierarchy/src/hierarchy/path.js","webpack://mermaid/./node_modules/d3-hierarchy/src/hierarchy/sort.js","webpack://mermaid/./node_modules/d3-hierarchy/src/hierarchy/sum.js","webpack://mermaid/./node_modules/d3-hierarchy/src/index.js","webpack://mermaid/./node_modules/d3-hierarchy/src/pack/enclose.js","webpack://mermaid/./node_modules/d3-hierarchy/src/pack/index.js","webpack://mermaid/./node_modules/d3-hierarchy/src/pack/siblings.js","webpack://mermaid/./node_modules/d3-hierarchy/src/partition.js","webpack://mermaid/./node_modules/d3-hierarchy/src/stratify.js","webpack://mermaid/./node_modules/d3-hierarchy/src/tree.js","webpack://mermaid/./node_modules/d3-hierarchy/src/treemap/binary.js","webpack://mermaid/./node_modules/d3-hierarchy/src/treemap/dice.js","webpack://mermaid/./node_modules/d3-hierarchy/src/treemap/index.js","webpack://mermaid/./node_modules/d3-hierarchy/src/treemap/resquarify.js","webpack://mermaid/./node_modules/d3-hierarchy/src/treemap/round.js","webpack://mermaid/./node_modules/d3-hierarchy/src/treemap/slice.js","webpack://mermaid/./node_modules/d3-hierarchy/src/treemap/sliceDice.js","webpack://mermaid/./node_modules/d3-hierarchy/src/treemap/squarify.js","webpack://mermaid/./node_modules/d3-interpolate/src/array.js","webpack://mermaid/./node_modules/d3-interpolate/src/basis.js","webpack://mermaid/./node_modules/d3-interpolate/src/basisClosed.js","webpack://mermaid/./node_modules/d3-interpolate/src/color.js","webpack://mermaid/./node_modules/d3-interpolate/src/constant.js","webpack://mermaid/./node_modules/d3-interpolate/src/cubehelix.js","webpack://mermaid/./node_modules/d3-interpolate/src/date.js","webpack://mermaid/./node_modules/d3-interpolate/src/discrete.js","webpack://mermaid/./node_modules/d3-interpolate/src/hcl.js","webpack://mermaid/./node_modules/d3-interpolate/src/hsl.js","webpack://mermaid/./node_modules/d3-interpolate/src/hue.js","webpack://mermaid/./node_modules/d3-interpolate/src/index.js","webpack://mermaid/./node_modules/d3-interpolate/src/lab.js","webpack://mermaid/./node_modules/d3-interpolate/src/number.js","webpack://mermaid/./node_modules/d3-interpolate/src/numberArray.js","webpack://mermaid/./node_modules/d3-interpolate/src/object.js","webpack://mermaid/./node_modules/d3-interpolate/src/piecewise.js","webpack://mermaid/./node_modules/d3-interpolate/src/quantize.js","webpack://mermaid/./node_modules/d3-interpolate/src/rgb.js","webpack://mermaid/./node_modules/d3-interpolate/src/round.js","webpack://mermaid/./node_modules/d3-interpolate/src/string.js","webpack://mermaid/./node_modules/d3-interpolate/src/transform/decompose.js","webpack://mermaid/./node_modules/d3-interpolate/src/transform/index.js","webpack://mermaid/./node_modules/d3-interpolate/src/transform/parse.js","webpack://mermaid/./node_modules/d3-interpolate/src/value.js","webpack://mermaid/./node_modules/d3-interpolate/src/zoom.js","webpack://mermaid/./node_modules/d3-path/src/index.js","webpack://mermaid/./node_modules/d3-path/src/path.js","webpack://mermaid/./node_modules/d3-polygon/src/area.js","webpack://mermaid/./node_modules/d3-polygon/src/centroid.js","webpack://mermaid/./node_modules/d3-polygon/src/contains.js","webpack://mermaid/./node_modules/d3-polygon/src/cross.js","webpack://mermaid/./node_modules/d3-polygon/src/hull.js","webpack://mermaid/./node_modules/d3-polygon/src/index.js","webpack://mermaid/./node_modules/d3-polygon/src/length.js","webpack://mermaid/./node_modules/d3-quadtree/src/add.js","webpack://mermaid/./node_modules/d3-quadtree/src/cover.js","webpack://mermaid/./node_modules/d3-quadtree/src/data.js","webpack://mermaid/./node_modules/d3-quadtree/src/extent.js","webpack://mermaid/./node_modules/d3-quadtree/src/find.js","webpack://mermaid/./node_modules/d3-quadtree/src/index.js","webpack://mermaid/./node_modules/d3-quadtree/src/quad.js","webpack://mermaid/./node_modules/d3-quadtree/src/quadtree.js","webpack://mermaid/./node_modules/d3-quadtree/src/remove.js","webpack://mermaid/./node_modules/d3-quadtree/src/root.js","webpack://mermaid/./node_modules/d3-quadtree/src/size.js","webpack://mermaid/./node_modules/d3-quadtree/src/visit.js","webpack://mermaid/./node_modules/d3-quadtree/src/visitAfter.js","webpack://mermaid/./node_modules/d3-quadtree/src/x.js","webpack://mermaid/./node_modules/d3-quadtree/src/y.js","webpack://mermaid/./node_modules/d3-random/src/bates.js","webpack://mermaid/./node_modules/d3-random/src/defaultSource.js","webpack://mermaid/./node_modules/d3-random/src/exponential.js","webpack://mermaid/./node_modules/d3-random/src/index.js","webpack://mermaid/./node_modules/d3-random/src/irwinHall.js","webpack://mermaid/./node_modules/d3-random/src/logNormal.js","webpack://mermaid/./node_modules/d3-random/src/normal.js","webpack://mermaid/./node_modules/d3-random/src/uniform.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/categorical/Accent.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/categorical/Dark2.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/categorical/Paired.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/categorical/Pastel1.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/categorical/Pastel2.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/categorical/Set1.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/categorical/Set2.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/categorical/Set3.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/categorical/Tableau10.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/categorical/category10.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/colors.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/diverging/BrBG.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/diverging/PRGn.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/diverging/PiYG.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/diverging/PuOr.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/diverging/RdBu.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/diverging/RdGy.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/diverging/RdYlBu.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/diverging/RdYlGn.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/diverging/Spectral.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/index.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/ramp.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/sequential-multi/BuGn.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/sequential-multi/BuPu.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/sequential-multi/GnBu.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/sequential-multi/OrRd.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/sequential-multi/PuBu.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/sequential-multi/PuBuGn.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/sequential-multi/PuRd.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/sequential-multi/RdPu.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/sequential-multi/YlGn.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/sequential-multi/YlGnBu.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/sequential-multi/YlOrBr.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/sequential-multi/YlOrRd.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/sequential-multi/cividis.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/sequential-multi/cubehelix.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/sequential-multi/rainbow.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/sequential-multi/sinebow.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/sequential-multi/turbo.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/sequential-multi/viridis.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/sequential-single/Blues.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/sequential-single/Greens.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/sequential-single/Greys.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/sequential-single/Oranges.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/sequential-single/Purples.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/sequential-single/Reds.js","webpack://mermaid/./node_modules/d3-scale/src/array.js","webpack://mermaid/./node_modules/d3-scale/src/band.js","webpack://mermaid/./node_modules/d3-scale/src/constant.js","webpack://mermaid/./node_modules/d3-scale/src/continuous.js","webpack://mermaid/./node_modules/d3-scale/src/diverging.js","webpack://mermaid/./node_modules/d3-scale/src/identity.js","webpack://mermaid/./node_modules/d3-scale/src/index.js","webpack://mermaid/./node_modules/d3-scale/src/init.js","webpack://mermaid/./node_modules/d3-scale/src/linear.js","webpack://mermaid/./node_modules/d3-scale/src/log.js","webpack://mermaid/./node_modules/d3-scale/src/nice.js","webpack://mermaid/./node_modules/d3-scale/src/number.js","webpack://mermaid/./node_modules/d3-scale/src/ordinal.js","webpack://mermaid/./node_modules/d3-scale/src/pow.js","webpack://mermaid/./node_modules/d3-scale/src/quantile.js","webpack://mermaid/./node_modules/d3-scale/src/quantize.js","webpack://mermaid/./node_modules/d3-scale/src/sequential.js","webpack://mermaid/./node_modules/d3-scale/src/sequentialQuantile.js","webpack://mermaid/./node_modules/d3-scale/src/symlog.js","webpack://mermaid/./node_modules/d3-scale/src/threshold.js","webpack://mermaid/./node_modules/d3-scale/src/tickFormat.js","webpack://mermaid/./node_modules/d3-scale/src/time.js","webpack://mermaid/./node_modules/d3-scale/src/utcTime.js","webpack://mermaid/./node_modules/d3-selection/src/constant.js","webpack://mermaid/./node_modules/d3-selection/src/create.js","webpack://mermaid/./node_modules/d3-selection/src/creator.js","webpack://mermaid/./node_modules/d3-selection/src/index.js","webpack://mermaid/./node_modules/d3-selection/src/local.js","webpack://mermaid/./node_modules/d3-selection/src/matcher.js","webpack://mermaid/./node_modules/d3-selection/src/mouse.js","webpack://mermaid/./node_modules/d3-selection/src/namespace.js","webpack://mermaid/./node_modules/d3-selection/src/namespaces.js","webpack://mermaid/./node_modules/d3-selection/src/point.js","webpack://mermaid/./node_modules/d3-selection/src/select.js","webpack://mermaid/./node_modules/d3-selection/src/selectAll.js","webpack://mermaid/./node_modules/d3-selection/src/selection/append.js","webpack://mermaid/./node_modules/d3-selection/src/selection/attr.js","webpack://mermaid/./node_modules/d3-selection/src/selection/call.js","webpack://mermaid/./node_modules/d3-selection/src/selection/classed.js","webpack://mermaid/./node_modules/d3-selection/src/selection/clone.js","webpack://mermaid/./node_modules/d3-selection/src/selection/data.js","webpack://mermaid/./node_modules/d3-selection/src/selection/datum.js","webpack://mermaid/./node_modules/d3-selection/src/selection/dispatch.js","webpack://mermaid/./node_modules/d3-selection/src/selection/each.js","webpack://mermaid/./node_modules/d3-selection/src/selection/empty.js","webpack://mermaid/./node_modules/d3-selection/src/selection/enter.js","webpack://mermaid/./node_modules/d3-selection/src/selection/exit.js","webpack://mermaid/./node_modules/d3-selection/src/selection/filter.js","webpack://mermaid/./node_modules/d3-selection/src/selection/html.js","webpack://mermaid/./node_modules/d3-selection/src/selection/index.js","webpack://mermaid/./node_modules/d3-selection/src/selection/insert.js","webpack://mermaid/./node_modules/d3-selection/src/selection/join.js","webpack://mermaid/./node_modules/d3-selection/src/selection/lower.js","webpack://mermaid/./node_modules/d3-selection/src/selection/merge.js","webpack://mermaid/./node_modules/d3-selection/src/selection/node.js","webpack://mermaid/./node_modules/d3-selection/src/selection/nodes.js","webpack://mermaid/./node_modules/d3-selection/src/selection/on.js","webpack://mermaid/./node_modules/d3-selection/src/selection/order.js","webpack://mermaid/./node_modules/d3-selection/src/selection/property.js","webpack://mermaid/./node_modules/d3-selection/src/selection/raise.js","webpack://mermaid/./node_modules/d3-selection/src/selection/remove.js","webpack://mermaid/./node_modules/d3-selection/src/selection/select.js","webpack://mermaid/./node_modules/d3-selection/src/selection/selectAll.js","webpack://mermaid/./node_modules/d3-selection/src/selection/size.js","webpack://mermaid/./node_modules/d3-selection/src/selection/sort.js","webpack://mermaid/./node_modules/d3-selection/src/selection/sparse.js","webpack://mermaid/./node_modules/d3-selection/src/selection/style.js","webpack://mermaid/./node_modules/d3-selection/src/selection/text.js","webpack://mermaid/./node_modules/d3-selection/src/selector.js","webpack://mermaid/./node_modules/d3-selection/src/selectorAll.js","webpack://mermaid/./node_modules/d3-selection/src/sourceEvent.js","webpack://mermaid/./node_modules/d3-selection/src/touch.js","webpack://mermaid/./node_modules/d3-selection/src/touches.js","webpack://mermaid/./node_modules/d3-selection/src/window.js","webpack://mermaid/./node_modules/d3-shape/src/arc.js","webpack://mermaid/./node_modules/d3-shape/src/area.js","webpack://mermaid/./node_modules/d3-shape/src/areaRadial.js","webpack://mermaid/./node_modules/d3-shape/src/array.js","webpack://mermaid/./node_modules/d3-shape/src/constant.js","webpack://mermaid/./node_modules/d3-shape/src/curve/basis.js","webpack://mermaid/./node_modules/d3-shape/src/curve/basisClosed.js","webpack://mermaid/./node_modules/d3-shape/src/curve/basisOpen.js","webpack://mermaid/./node_modules/d3-shape/src/curve/bundle.js","webpack://mermaid/./node_modules/d3-shape/src/curve/cardinal.js","webpack://mermaid/./node_modules/d3-shape/src/curve/cardinalClosed.js","webpack://mermaid/./node_modules/d3-shape/src/curve/cardinalOpen.js","webpack://mermaid/./node_modules/d3-shape/src/curve/catmullRom.js","webpack://mermaid/./node_modules/d3-shape/src/curve/catmullRomClosed.js","webpack://mermaid/./node_modules/d3-shape/src/curve/catmullRomOpen.js","webpack://mermaid/./node_modules/d3-shape/src/curve/linear.js","webpack://mermaid/./node_modules/d3-shape/src/curve/linearClosed.js","webpack://mermaid/./node_modules/d3-shape/src/curve/monotone.js","webpack://mermaid/./node_modules/d3-shape/src/curve/natural.js","webpack://mermaid/./node_modules/d3-shape/src/curve/radial.js","webpack://mermaid/./node_modules/d3-shape/src/curve/step.js","webpack://mermaid/./node_modules/d3-shape/src/descending.js","webpack://mermaid/./node_modules/d3-shape/src/identity.js","webpack://mermaid/./node_modules/d3-shape/src/index.js","webpack://mermaid/./node_modules/d3-shape/src/line.js","webpack://mermaid/./node_modules/d3-shape/src/lineRadial.js","webpack://mermaid/./node_modules/d3-shape/src/link/index.js","webpack://mermaid/./node_modules/d3-shape/src/math.js","webpack://mermaid/./node_modules/d3-shape/src/noop.js","webpack://mermaid/./node_modules/d3-shape/src/offset/diverging.js","webpack://mermaid/./node_modules/d3-shape/src/offset/expand.js","webpack://mermaid/./node_modules/d3-shape/src/offset/none.js","webpack://mermaid/./node_modules/d3-shape/src/offset/silhouette.js","webpack://mermaid/./node_modules/d3-shape/src/offset/wiggle.js","webpack://mermaid/./node_modules/d3-shape/src/order/appearance.js","webpack://mermaid/./node_modules/d3-shape/src/order/ascending.js","webpack://mermaid/./node_modules/d3-shape/src/order/descending.js","webpack://mermaid/./node_modules/d3-shape/src/order/insideOut.js","webpack://mermaid/./node_modules/d3-shape/src/order/none.js","webpack://mermaid/./node_modules/d3-shape/src/order/reverse.js","webpack://mermaid/./node_modules/d3-shape/src/pie.js","webpack://mermaid/./node_modules/d3-shape/src/point.js","webpack://mermaid/./node_modules/d3-shape/src/pointRadial.js","webpack://mermaid/./node_modules/d3-shape/src/stack.js","webpack://mermaid/./node_modules/d3-shape/src/symbol.js","webpack://mermaid/./node_modules/d3-shape/src/symbol/circle.js","webpack://mermaid/./node_modules/d3-shape/src/symbol/cross.js","webpack://mermaid/./node_modules/d3-shape/src/symbol/diamond.js","webpack://mermaid/./node_modules/d3-shape/src/symbol/square.js","webpack://mermaid/./node_modules/d3-shape/src/symbol/star.js","webpack://mermaid/./node_modules/d3-shape/src/symbol/triangle.js","webpack://mermaid/./node_modules/d3-shape/src/symbol/wye.js","webpack://mermaid/./node_modules/d3-time-format/src/defaultLocale.js","webpack://mermaid/./node_modules/d3-time-format/src/index.js","webpack://mermaid/./node_modules/d3-time-format/src/isoFormat.js","webpack://mermaid/./node_modules/d3-time-format/src/isoParse.js","webpack://mermaid/./node_modules/d3-time-format/src/locale.js","webpack://mermaid/./node_modules/d3-time/src/day.js","webpack://mermaid/./node_modules/d3-time/src/duration.js","webpack://mermaid/./node_modules/d3-time/src/hour.js","webpack://mermaid/./node_modules/d3-time/src/index.js","webpack://mermaid/./node_modules/d3-time/src/interval.js","webpack://mermaid/./node_modules/d3-time/src/millisecond.js","webpack://mermaid/./node_modules/d3-time/src/minute.js","webpack://mermaid/./node_modules/d3-time/src/month.js","webpack://mermaid/./node_modules/d3-time/src/second.js","webpack://mermaid/./node_modules/d3-time/src/utcDay.js","webpack://mermaid/./node_modules/d3-time/src/utcHour.js","webpack://mermaid/./node_modules/d3-time/src/utcMinute.js","webpack://mermaid/./node_modules/d3-time/src/utcMonth.js","webpack://mermaid/./node_modules/d3-time/src/utcWeek.js","webpack://mermaid/./node_modules/d3-time/src/utcYear.js","webpack://mermaid/./node_modules/d3-time/src/week.js","webpack://mermaid/./node_modules/d3-time/src/year.js","webpack://mermaid/./node_modules/d3-timer/src/index.js","webpack://mermaid/./node_modules/d3-timer/src/interval.js","webpack://mermaid/./node_modules/d3-timer/src/timeout.js","webpack://mermaid/./node_modules/d3-timer/src/timer.js","webpack://mermaid/./node_modules/d3-transition/src/active.js","webpack://mermaid/./node_modules/d3-transition/src/index.js","webpack://mermaid/./node_modules/d3-transition/src/interrupt.js","webpack://mermaid/./node_modules/d3-transition/src/selection/index.js","webpack://mermaid/./node_modules/d3-transition/src/selection/interrupt.js","webpack://mermaid/./node_modules/d3-transition/src/selection/transition.js","webpack://mermaid/./node_modules/d3-transition/src/transition/attr.js","webpack://mermaid/./node_modules/d3-transition/src/transition/attrTween.js","webpack://mermaid/./node_modules/d3-transition/src/transition/delay.js","webpack://mermaid/./node_modules/d3-transition/src/transition/duration.js","webpack://mermaid/./node_modules/d3-transition/src/transition/ease.js","webpack://mermaid/./node_modules/d3-transition/src/transition/end.js","webpack://mermaid/./node_modules/d3-transition/src/transition/filter.js","webpack://mermaid/./node_modules/d3-transition/src/transition/index.js","webpack://mermaid/./node_modules/d3-transition/src/transition/interpolate.js","webpack://mermaid/./node_modules/d3-transition/src/transition/merge.js","webpack://mermaid/./node_modules/d3-transition/src/transition/on.js","webpack://mermaid/./node_modules/d3-transition/src/transition/remove.js","webpack://mermaid/./node_modules/d3-transition/src/transition/schedule.js","webpack://mermaid/./node_modules/d3-transition/src/transition/select.js","webpack://mermaid/./node_modules/d3-transition/src/transition/selectAll.js","webpack://mermaid/./node_modules/d3-transition/src/transition/selection.js","webpack://mermaid/./node_modules/d3-transition/src/transition/style.js","webpack://mermaid/./node_modules/d3-transition/src/transition/styleTween.js","webpack://mermaid/./node_modules/d3-transition/src/transition/text.js","webpack://mermaid/./node_modules/d3-transition/src/transition/textTween.js","webpack://mermaid/./node_modules/d3-transition/src/transition/transition.js","webpack://mermaid/./node_modules/d3-transition/src/transition/tween.js","webpack://mermaid/./node_modules/d3-voronoi/src/Beach.js","webpack://mermaid/./node_modules/d3-voronoi/src/Cell.js","webpack://mermaid/./node_modules/d3-voronoi/src/Circle.js","webpack://mermaid/./node_modules/d3-voronoi/src/Diagram.js","webpack://mermaid/./node_modules/d3-voronoi/src/Edge.js","webpack://mermaid/./node_modules/d3-voronoi/src/RedBlackTree.js","webpack://mermaid/./node_modules/d3-voronoi/src/constant.js","webpack://mermaid/./node_modules/d3-voronoi/src/index.js","webpack://mermaid/./node_modules/d3-voronoi/src/point.js","webpack://mermaid/./node_modules/d3-voronoi/src/voronoi.js","webpack://mermaid/./node_modules/d3-zoom/src/constant.js","webpack://mermaid/./node_modules/d3-zoom/src/event.js","webpack://mermaid/./node_modules/d3-zoom/src/index.js","webpack://mermaid/./node_modules/d3-zoom/src/noevent.js","webpack://mermaid/./node_modules/d3-zoom/src/transform.js","webpack://mermaid/./node_modules/d3-zoom/src/zoom.js","webpack://mermaid/./node_modules/d3/dist/package.js","webpack://mermaid/./node_modules/d3/index.js","webpack://mermaid/./node_modules/dagre-d3/index.js","webpack://mermaid/./node_modules/dagre-d3/lib/arrows.js","webpack://mermaid/./node_modules/dagre-d3/lib/create-clusters.js","webpack://mermaid/./node_modules/dagre-d3/lib/create-edge-labels.js","webpack://mermaid/./node_modules/dagre-d3/lib/create-edge-paths.js","webpack://mermaid/./node_modules/dagre-d3/lib/create-nodes.js","webpack://mermaid/./node_modules/dagre-d3/lib/d3.js","webpack://mermaid/./node_modules/dagre-d3/lib/dagre.js","webpack://mermaid/./node_modules/dagre-d3/lib/graphlib.js","webpack://mermaid/./node_modules/dagre-d3/lib/intersect/index.js","webpack://mermaid/./node_modules/dagre-d3/lib/intersect/intersect-circle.js","webpack://mermaid/./node_modules/dagre-d3/lib/intersect/intersect-ellipse.js","webpack://mermaid/./node_modules/dagre-d3/lib/intersect/intersect-line.js","webpack://mermaid/./node_modules/dagre-d3/lib/intersect/intersect-node.js","webpack://mermaid/./node_modules/dagre-d3/lib/intersect/intersect-polygon.js","webpack://mermaid/./node_modules/dagre-d3/lib/intersect/intersect-rect.js","webpack://mermaid/./node_modules/dagre-d3/lib/label/add-html-label.js","webpack://mermaid/./node_modules/dagre-d3/lib/label/add-label.js","webpack://mermaid/./node_modules/dagre-d3/lib/label/add-svg-label.js","webpack://mermaid/./node_modules/dagre-d3/lib/label/add-text-label.js","webpack://mermaid/./node_modules/dagre-d3/lib/lodash.js","webpack://mermaid/./node_modules/dagre-d3/lib/position-clusters.js","webpack://mermaid/./node_modules/dagre-d3/lib/position-edge-labels.js","webpack://mermaid/./node_modules/dagre-d3/lib/position-nodes.js","webpack://mermaid/./node_modules/dagre-d3/lib/render.js","webpack://mermaid/./node_modules/dagre-d3/lib/shapes.js","webpack://mermaid/./node_modules/dagre-d3/lib/util.js","webpack://mermaid/./node_modules/dagre-d3/lib/version.js","webpack://mermaid/./node_modules/dagre/index.js","webpack://mermaid/./node_modules/dagre/lib/acyclic.js","webpack://mermaid/./node_modules/dagre/lib/add-border-segments.js","webpack://mermaid/./node_modules/dagre/lib/coordinate-system.js","webpack://mermaid/./node_modules/dagre/lib/data/list.js","webpack://mermaid/./node_modules/dagre/lib/debug.js","webpack://mermaid/./node_modules/dagre/lib/graphlib.js","webpack://mermaid/./node_modules/dagre/lib/greedy-fas.js","webpack://mermaid/./node_modules/dagre/lib/layout.js","webpack://mermaid/./node_modules/dagre/lib/lodash.js","webpack://mermaid/./node_modules/dagre/lib/nesting-graph.js","webpack://mermaid/./node_modules/dagre/lib/normalize.js","webpack://mermaid/./node_modules/dagre/lib/order/add-subgraph-constraints.js","webpack://mermaid/./node_modules/dagre/lib/order/barycenter.js","webpack://mermaid/./node_modules/dagre/lib/order/build-layer-graph.js","webpack://mermaid/./node_modules/dagre/lib/order/cross-count.js","webpack://mermaid/./node_modules/dagre/lib/order/index.js","webpack://mermaid/./node_modules/dagre/lib/order/init-order.js","webpack://mermaid/./node_modules/dagre/lib/order/resolve-conflicts.js","webpack://mermaid/./node_modules/dagre/lib/order/sort-subgraph.js","webpack://mermaid/./node_modules/dagre/lib/order/sort.js","webpack://mermaid/./node_modules/dagre/lib/parent-dummy-chains.js","webpack://mermaid/./node_modules/dagre/lib/position/bk.js","webpack://mermaid/./node_modules/dagre/lib/position/index.js","webpack://mermaid/./node_modules/dagre/lib/rank/feasible-tree.js","webpack://mermaid/./node_modules/dagre/lib/rank/index.js","webpack://mermaid/./node_modules/dagre/lib/rank/network-simplex.js","webpack://mermaid/./node_modules/dagre/lib/rank/util.js","webpack://mermaid/./node_modules/dagre/lib/util.js","webpack://mermaid/./node_modules/dagre/lib/version.js","webpack://mermaid/./node_modules/des.js/lib/des.js","webpack://mermaid/./node_modules/des.js/lib/des/cbc.js","webpack://mermaid/./node_modules/des.js/lib/des/cipher.js","webpack://mermaid/./node_modules/des.js/lib/des/des.js","webpack://mermaid/./node_modules/des.js/lib/des/ede.js","webpack://mermaid/./node_modules/des.js/lib/des/utils.js","webpack://mermaid/./node_modules/diffie-hellman/browser.js","webpack://mermaid/./node_modules/diffie-hellman/lib/dh.js","webpack://mermaid/./node_modules/diffie-hellman/lib/generatePrime.js","webpack://mermaid/./node_modules/elliptic/lib/elliptic.js","webpack://mermaid/./node_modules/elliptic/lib/elliptic/curve/base.js","webpack://mermaid/./node_modules/elliptic/lib/elliptic/curve/edwards.js","webpack://mermaid/./node_modules/elliptic/lib/elliptic/curve/index.js","webpack://mermaid/./node_modules/elliptic/lib/elliptic/curve/mont.js","webpack://mermaid/./node_modules/elliptic/lib/elliptic/curve/short.js","webpack://mermaid/./node_modules/elliptic/lib/elliptic/curves.js","webpack://mermaid/./node_modules/elliptic/lib/elliptic/ec/index.js","webpack://mermaid/./node_modules/elliptic/lib/elliptic/ec/key.js","webpack://mermaid/./node_modules/elliptic/lib/elliptic/ec/signature.js","webpack://mermaid/./node_modules/elliptic/lib/elliptic/eddsa/index.js","webpack://mermaid/./node_modules/elliptic/lib/elliptic/eddsa/key.js","webpack://mermaid/./node_modules/elliptic/lib/elliptic/eddsa/signature.js","webpack://mermaid/./node_modules/elliptic/lib/elliptic/precomputed/secp256k1.js","webpack://mermaid/./node_modules/elliptic/lib/elliptic/utils.js","webpack://mermaid/./node_modules/entity-decode/browser.js","webpack://mermaid/./node_modules/escaper/dist/escaper.js","webpack://mermaid/./node_modules/events/events.js","webpack://mermaid/./node_modules/evp_bytestokey/index.js","webpack://mermaid/./node_modules/graphlib/index.js","webpack://mermaid/./node_modules/graphlib/lib/alg/components.js","webpack://mermaid/./node_modules/graphlib/lib/alg/dfs.js","webpack://mermaid/./node_modules/graphlib/lib/alg/dijkstra-all.js","webpack://mermaid/./node_modules/graphlib/lib/alg/dijkstra.js","webpack://mermaid/./node_modules/graphlib/lib/alg/find-cycles.js","webpack://mermaid/./node_modules/graphlib/lib/alg/floyd-warshall.js","webpack://mermaid/./node_modules/graphlib/lib/alg/index.js","webpack://mermaid/./node_modules/graphlib/lib/alg/is-acyclic.js","webpack://mermaid/./node_modules/graphlib/lib/alg/postorder.js","webpack://mermaid/./node_modules/graphlib/lib/alg/preorder.js","webpack://mermaid/./node_modules/graphlib/lib/alg/prim.js","webpack://mermaid/./node_modules/graphlib/lib/alg/tarjan.js","webpack://mermaid/./node_modules/graphlib/lib/alg/topsort.js","webpack://mermaid/./node_modules/graphlib/lib/data/priority-queue.js","webpack://mermaid/./node_modules/graphlib/lib/graph.js","webpack://mermaid/./node_modules/graphlib/lib/index.js","webpack://mermaid/./node_modules/graphlib/lib/json.js","webpack://mermaid/./node_modules/graphlib/lib/lodash.js","webpack://mermaid/./node_modules/graphlib/lib/version.js","webpack://mermaid/./node_modules/hash-base/index.js","webpack://mermaid/./node_modules/hash.js/lib/hash.js","webpack://mermaid/./node_modules/hash.js/lib/hash/common.js","webpack://mermaid/./node_modules/hash.js/lib/hash/hmac.js","webpack://mermaid/./node_modules/hash.js/lib/hash/ripemd.js","webpack://mermaid/./node_modules/hash.js/lib/hash/sha.js","webpack://mermaid/./node_modules/hash.js/lib/hash/sha/1.js","webpack://mermaid/./node_modules/hash.js/lib/hash/sha/224.js","webpack://mermaid/./node_modules/hash.js/lib/hash/sha/256.js","webpack://mermaid/./node_modules/hash.js/lib/hash/sha/384.js","webpack://mermaid/./node_modules/hash.js/lib/hash/sha/512.js","webpack://mermaid/./node_modules/hash.js/lib/hash/sha/common.js","webpack://mermaid/./node_modules/hash.js/lib/hash/utils.js","webpack://mermaid/./node_modules/hmac-drbg/lib/hmac-drbg.js","webpack://mermaid/./node_modules/ieee754/index.js","webpack://mermaid/./node_modules/inherits/inherits_browser.js","webpack://mermaid/./node_modules/is-regexp/index.js","webpack://mermaid/./node_modules/isarray/index.js","webpack://mermaid/./node_modules/lodash/_DataView.js","webpack://mermaid/./node_modules/lodash/_Hash.js","webpack://mermaid/./node_modules/lodash/_ListCache.js","webpack://mermaid/./node_modules/lodash/_Map.js","webpack://mermaid/./node_modules/lodash/_MapCache.js","webpack://mermaid/./node_modules/lodash/_Promise.js","webpack://mermaid/./node_modules/lodash/_Set.js","webpack://mermaid/./node_modules/lodash/_SetCache.js","webpack://mermaid/./node_modules/lodash/_Stack.js","webpack://mermaid/./node_modules/lodash/_Symbol.js","webpack://mermaid/./node_modules/lodash/_Uint8Array.js","webpack://mermaid/./node_modules/lodash/_WeakMap.js","webpack://mermaid/./node_modules/lodash/_apply.js","webpack://mermaid/./node_modules/lodash/_arrayEach.js","webpack://mermaid/./node_modules/lodash/_arrayFilter.js","webpack://mermaid/./node_modules/lodash/_arrayIncludes.js","webpack://mermaid/./node_modules/lodash/_arrayIncludesWith.js","webpack://mermaid/./node_modules/lodash/_arrayLikeKeys.js","webpack://mermaid/./node_modules/lodash/_arrayMap.js","webpack://mermaid/./node_modules/lodash/_arrayPush.js","webpack://mermaid/./node_modules/lodash/_arrayReduce.js","webpack://mermaid/./node_modules/lodash/_arraySome.js","webpack://mermaid/./node_modules/lodash/_asciiSize.js","webpack://mermaid/./node_modules/lodash/_assignMergeValue.js","webpack://mermaid/./node_modules/lodash/_assignValue.js","webpack://mermaid/./node_modules/lodash/_assocIndexOf.js","webpack://mermaid/./node_modules/lodash/_baseAssign.js","webpack://mermaid/./node_modules/lodash/_baseAssignIn.js","webpack://mermaid/./node_modules/lodash/_baseAssignValue.js","webpack://mermaid/./node_modules/lodash/_baseClone.js","webpack://mermaid/./node_modules/lodash/_baseCreate.js","webpack://mermaid/./node_modules/lodash/_baseEach.js","webpack://mermaid/./node_modules/lodash/_baseExtremum.js","webpack://mermaid/./node_modules/lodash/_baseFilter.js","webpack://mermaid/./node_modules/lodash/_baseFindIndex.js","webpack://mermaid/./node_modules/lodash/_baseFlatten.js","webpack://mermaid/./node_modules/lodash/_baseFor.js","webpack://mermaid/./node_modules/lodash/_baseForOwn.js","webpack://mermaid/./node_modules/lodash/_baseGet.js","webpack://mermaid/./node_modules/lodash/_baseGetAllKeys.js","webpack://mermaid/./node_modules/lodash/_baseGetTag.js","webpack://mermaid/./node_modules/lodash/_baseGt.js","webpack://mermaid/./node_modules/lodash/_baseHas.js","webpack://mermaid/./node_modules/lodash/_baseHasIn.js","webpack://mermaid/./node_modules/lodash/_baseIndexOf.js","webpack://mermaid/./node_modules/lodash/_baseIsArguments.js","webpack://mermaid/./node_modules/lodash/_baseIsEqual.js","webpack://mermaid/./node_modules/lodash/_baseIsEqualDeep.js","webpack://mermaid/./node_modules/lodash/_baseIsMap.js","webpack://mermaid/./node_modules/lodash/_baseIsMatch.js","webpack://mermaid/./node_modules/lodash/_baseIsNaN.js","webpack://mermaid/./node_modules/lodash/_baseIsNative.js","webpack://mermaid/./node_modules/lodash/_baseIsSet.js","webpack://mermaid/./node_modules/lodash/_baseIsTypedArray.js","webpack://mermaid/./node_modules/lodash/_baseIteratee.js","webpack://mermaid/./node_modules/lodash/_baseKeys.js","webpack://mermaid/./node_modules/lodash/_baseKeysIn.js","webpack://mermaid/./node_modules/lodash/_baseLt.js","webpack://mermaid/./node_modules/lodash/_baseMap.js","webpack://mermaid/./node_modules/lodash/_baseMatches.js","webpack://mermaid/./node_modules/lodash/_baseMatchesProperty.js","webpack://mermaid/./node_modules/lodash/_baseMerge.js","webpack://mermaid/./node_modules/lodash/_baseMergeDeep.js","webpack://mermaid/./node_modules/lodash/_baseOrderBy.js","webpack://mermaid/./node_modules/lodash/_basePick.js","webpack://mermaid/./node_modules/lodash/_basePickBy.js","webpack://mermaid/./node_modules/lodash/_baseProperty.js","webpack://mermaid/./node_modules/lodash/_basePropertyDeep.js","webpack://mermaid/./node_modules/lodash/_baseRange.js","webpack://mermaid/./node_modules/lodash/_baseReduce.js","webpack://mermaid/./node_modules/lodash/_baseRest.js","webpack://mermaid/./node_modules/lodash/_baseSet.js","webpack://mermaid/./node_modules/lodash/_baseSetToString.js","webpack://mermaid/./node_modules/lodash/_baseSortBy.js","webpack://mermaid/./node_modules/lodash/_baseTimes.js","webpack://mermaid/./node_modules/lodash/_baseToString.js","webpack://mermaid/./node_modules/lodash/_baseUnary.js","webpack://mermaid/./node_modules/lodash/_baseUniq.js","webpack://mermaid/./node_modules/lodash/_baseValues.js","webpack://mermaid/./node_modules/lodash/_baseZipObject.js","webpack://mermaid/./node_modules/lodash/_cacheHas.js","webpack://mermaid/./node_modules/lodash/_castFunction.js","webpack://mermaid/./node_modules/lodash/_castPath.js","webpack://mermaid/./node_modules/lodash/_cloneArrayBuffer.js","webpack://mermaid/./node_modules/lodash/_cloneBuffer.js","webpack://mermaid/./node_modules/lodash/_cloneDataView.js","webpack://mermaid/./node_modules/lodash/_cloneRegExp.js","webpack://mermaid/./node_modules/lodash/_cloneSymbol.js","webpack://mermaid/./node_modules/lodash/_cloneTypedArray.js","webpack://mermaid/./node_modules/lodash/_compareAscending.js","webpack://mermaid/./node_modules/lodash/_compareMultiple.js","webpack://mermaid/./node_modules/lodash/_copyArray.js","webpack://mermaid/./node_modules/lodash/_copyObject.js","webpack://mermaid/./node_modules/lodash/_copySymbols.js","webpack://mermaid/./node_modules/lodash/_copySymbolsIn.js","webpack://mermaid/./node_modules/lodash/_coreJsData.js","webpack://mermaid/./node_modules/lodash/_createAssigner.js","webpack://mermaid/./node_modules/lodash/_createBaseEach.js","webpack://mermaid/./node_modules/lodash/_createBaseFor.js","webpack://mermaid/./node_modules/lodash/_createFind.js","webpack://mermaid/./node_modules/lodash/_createRange.js","webpack://mermaid/./node_modules/lodash/_createSet.js","webpack://mermaid/./node_modules/lodash/_defineProperty.js","webpack://mermaid/./node_modules/lodash/_equalArrays.js","webpack://mermaid/./node_modules/lodash/_equalByTag.js","webpack://mermaid/./node_modules/lodash/_equalObjects.js","webpack://mermaid/./node_modules/lodash/_flatRest.js","webpack://mermaid/./node_modules/lodash/_freeGlobal.js","webpack://mermaid/./node_modules/lodash/_getAllKeys.js","webpack://mermaid/./node_modules/lodash/_getAllKeysIn.js","webpack://mermaid/./node_modules/lodash/_getMapData.js","webpack://mermaid/./node_modules/lodash/_getMatchData.js","webpack://mermaid/./node_modules/lodash/_getNative.js","webpack://mermaid/./node_modules/lodash/_getPrototype.js","webpack://mermaid/./node_modules/lodash/_getRawTag.js","webpack://mermaid/./node_modules/lodash/_getSymbols.js","webpack://mermaid/./node_modules/lodash/_getSymbolsIn.js","webpack://mermaid/./node_modules/lodash/_getTag.js","webpack://mermaid/./node_modules/lodash/_getValue.js","webpack://mermaid/./node_modules/lodash/_hasPath.js","webpack://mermaid/./node_modules/lodash/_hasUnicode.js","webpack://mermaid/./node_modules/lodash/_hashClear.js","webpack://mermaid/./node_modules/lodash/_hashDelete.js","webpack://mermaid/./node_modules/lodash/_hashGet.js","webpack://mermaid/./node_modules/lodash/_hashHas.js","webpack://mermaid/./node_modules/lodash/_hashSet.js","webpack://mermaid/./node_modules/lodash/_initCloneArray.js","webpack://mermaid/./node_modules/lodash/_initCloneByTag.js","webpack://mermaid/./node_modules/lodash/_initCloneObject.js","webpack://mermaid/./node_modules/lodash/_isFlattenable.js","webpack://mermaid/./node_modules/lodash/_isIndex.js","webpack://mermaid/./node_modules/lodash/_isIterateeCall.js","webpack://mermaid/./node_modules/lodash/_isKey.js","webpack://mermaid/./node_modules/lodash/_isKeyable.js","webpack://mermaid/./node_modules/lodash/_isMasked.js","webpack://mermaid/./node_modules/lodash/_isPrototype.js","webpack://mermaid/./node_modules/lodash/_isStrictComparable.js","webpack://mermaid/./node_modules/lodash/_listCacheClear.js","webpack://mermaid/./node_modules/lodash/_listCacheDelete.js","webpack://mermaid/./node_modules/lodash/_listCacheGet.js","webpack://mermaid/./node_modules/lodash/_listCacheHas.js","webpack://mermaid/./node_modules/lodash/_listCacheSet.js","webpack://mermaid/./node_modules/lodash/_mapCacheClear.js","webpack://mermaid/./node_modules/lodash/_mapCacheDelete.js","webpack://mermaid/./node_modules/lodash/_mapCacheGet.js","webpack://mermaid/./node_modules/lodash/_mapCacheHas.js","webpack://mermaid/./node_modules/lodash/_mapCacheSet.js","webpack://mermaid/./node_modules/lodash/_mapToArray.js","webpack://mermaid/./node_modules/lodash/_matchesStrictComparable.js","webpack://mermaid/./node_modules/lodash/_memoizeCapped.js","webpack://mermaid/./node_modules/lodash/_nativeCreate.js","webpack://mermaid/./node_modules/lodash/_nativeKeys.js","webpack://mermaid/./node_modules/lodash/_nativeKeysIn.js","webpack://mermaid/./node_modules/lodash/_nodeUtil.js","webpack://mermaid/./node_modules/lodash/_objectToString.js","webpack://mermaid/./node_modules/lodash/_overArg.js","webpack://mermaid/./node_modules/lodash/_overRest.js","webpack://mermaid/./node_modules/lodash/_root.js","webpack://mermaid/./node_modules/lodash/_safeGet.js","webpack://mermaid/./node_modules/lodash/_setCacheAdd.js","webpack://mermaid/./node_modules/lodash/_setCacheHas.js","webpack://mermaid/./node_modules/lodash/_setToArray.js","webpack://mermaid/./node_modules/lodash/_setToString.js","webpack://mermaid/./node_modules/lodash/_shortOut.js","webpack://mermaid/./node_modules/lodash/_stackClear.js","webpack://mermaid/./node_modules/lodash/_stackDelete.js","webpack://mermaid/./node_modules/lodash/_stackGet.js","webpack://mermaid/./node_modules/lodash/_stackHas.js","webpack://mermaid/./node_modules/lodash/_stackSet.js","webpack://mermaid/./node_modules/lodash/_strictIndexOf.js","webpack://mermaid/./node_modules/lodash/_stringSize.js","webpack://mermaid/./node_modules/lodash/_stringToPath.js","webpack://mermaid/./node_modules/lodash/_toKey.js","webpack://mermaid/./node_modules/lodash/_toSource.js","webpack://mermaid/./node_modules/lodash/_unicodeSize.js","webpack://mermaid/./node_modules/lodash/clone.js","webpack://mermaid/./node_modules/lodash/cloneDeep.js","webpack://mermaid/./node_modules/lodash/constant.js","webpack://mermaid/./node_modules/lodash/defaults.js","webpack://mermaid/./node_modules/lodash/each.js","webpack://mermaid/./node_modules/lodash/eq.js","webpack://mermaid/./node_modules/lodash/filter.js","webpack://mermaid/./node_modules/lodash/find.js","webpack://mermaid/./node_modules/lodash/findIndex.js","webpack://mermaid/./node_modules/lodash/flatten.js","webpack://mermaid/./node_modules/lodash/forEach.js","webpack://mermaid/./node_modules/lodash/forIn.js","webpack://mermaid/./node_modules/lodash/get.js","webpack://mermaid/./node_modules/lodash/has.js","webpack://mermaid/./node_modules/lodash/hasIn.js","webpack://mermaid/./node_modules/lodash/identity.js","webpack://mermaid/./node_modules/lodash/isArguments.js","webpack://mermaid/./node_modules/lodash/isArray.js","webpack://mermaid/./node_modules/lodash/isArrayLike.js","webpack://mermaid/./node_modules/lodash/isArrayLikeObject.js","webpack://mermaid/./node_modules/lodash/isBuffer.js","webpack://mermaid/./node_modules/lodash/isEmpty.js","webpack://mermaid/./node_modules/lodash/isFunction.js","webpack://mermaid/./node_modules/lodash/isLength.js","webpack://mermaid/./node_modules/lodash/isMap.js","webpack://mermaid/./node_modules/lodash/isObject.js","webpack://mermaid/./node_modules/lodash/isObjectLike.js","webpack://mermaid/./node_modules/lodash/isPlainObject.js","webpack://mermaid/./node_modules/lodash/isSet.js","webpack://mermaid/./node_modules/lodash/isString.js","webpack://mermaid/./node_modules/lodash/isSymbol.js","webpack://mermaid/./node_modules/lodash/isTypedArray.js","webpack://mermaid/./node_modules/lodash/isUndefined.js","webpack://mermaid/./node_modules/lodash/keys.js","webpack://mermaid/./node_modules/lodash/keysIn.js","webpack://mermaid/./node_modules/lodash/last.js","webpack://mermaid/./node_modules/lodash/map.js","webpack://mermaid/./node_modules/lodash/mapValues.js","webpack://mermaid/./node_modules/lodash/max.js","webpack://mermaid/./node_modules/lodash/memoize.js","webpack://mermaid/./node_modules/lodash/merge.js","webpack://mermaid/./node_modules/lodash/min.js","webpack://mermaid/./node_modules/lodash/minBy.js","webpack://mermaid/./node_modules/lodash/noop.js","webpack://mermaid/./node_modules/lodash/now.js","webpack://mermaid/./node_modules/lodash/pick.js","webpack://mermaid/./node_modules/lodash/property.js","webpack://mermaid/./node_modules/lodash/range.js","webpack://mermaid/./node_modules/lodash/reduce.js","webpack://mermaid/./node_modules/lodash/size.js","webpack://mermaid/./node_modules/lodash/sortBy.js","webpack://mermaid/./node_modules/lodash/stubArray.js","webpack://mermaid/./node_modules/lodash/stubFalse.js","webpack://mermaid/./node_modules/lodash/toFinite.js","webpack://mermaid/./node_modules/lodash/toInteger.js","webpack://mermaid/./node_modules/lodash/toNumber.js","webpack://mermaid/./node_modules/lodash/toPlainObject.js","webpack://mermaid/./node_modules/lodash/toString.js","webpack://mermaid/./node_modules/lodash/transform.js","webpack://mermaid/./node_modules/lodash/union.js","webpack://mermaid/./node_modules/lodash/uniqueId.js","webpack://mermaid/./node_modules/lodash/values.js","webpack://mermaid/./node_modules/lodash/zipObject.js","webpack://mermaid/./node_modules/md5.js/index.js","webpack://mermaid/./node_modules/miller-rabin/lib/mr.js","webpack://mermaid/./node_modules/minimalistic-assert/index.js","webpack://mermaid/./node_modules/minimalistic-crypto-utils/lib/utils.js","webpack://mermaid/./node_modules/moment-mini/locale sync ^\\.\\/.*$","webpack://mermaid/./node_modules/moment-mini/moment.min.js","webpack://mermaid/./node_modules/node-libs-browser/node_modules/string_decoder/lib/string_decoder.js","webpack://mermaid/./node_modules/parse-asn1/asn1.js","webpack://mermaid/./node_modules/parse-asn1/certificate.js","webpack://mermaid/./node_modules/parse-asn1/fixProc.js","webpack://mermaid/./node_modules/parse-asn1/index.js","webpack://mermaid/./node_modules/path-browserify/index.js","webpack://mermaid/./node_modules/pbkdf2/browser.js","webpack://mermaid/./node_modules/pbkdf2/lib/async.js","webpack://mermaid/./node_modules/pbkdf2/lib/default-encoding.js","webpack://mermaid/./node_modules/pbkdf2/lib/precondition.js","webpack://mermaid/./node_modules/pbkdf2/lib/sync-browser.js","webpack://mermaid/./node_modules/process/browser.js","webpack://mermaid/./node_modules/public-encrypt/browser.js","webpack://mermaid/./node_modules/public-encrypt/mgf.js","webpack://mermaid/./node_modules/public-encrypt/privateDecrypt.js","webpack://mermaid/./node_modules/public-encrypt/publicEncrypt.js","webpack://mermaid/./node_modules/public-encrypt/withPublic.js","webpack://mermaid/./node_modules/public-encrypt/xor.js","webpack://mermaid/./node_modules/randombytes/browser.js","webpack://mermaid/./node_modules/randomfill/browser.js","webpack://mermaid/./node_modules/readable-stream/duplex-browser.js","webpack://mermaid/./node_modules/readable-stream/lib/_stream_duplex.js","webpack://mermaid/./node_modules/readable-stream/lib/_stream_passthrough.js","webpack://mermaid/./node_modules/readable-stream/lib/_stream_readable.js","webpack://mermaid/./node_modules/readable-stream/lib/_stream_transform.js","webpack://mermaid/./node_modules/readable-stream/lib/_stream_writable.js","webpack://mermaid/./node_modules/readable-stream/lib/internal/streams/BufferList.js","webpack://mermaid/./node_modules/readable-stream/lib/internal/streams/destroy.js","webpack://mermaid/./node_modules/readable-stream/lib/internal/streams/stream-browser.js","webpack://mermaid/./node_modules/readable-stream/node_modules/process-nextick-args/index.js","webpack://mermaid/./node_modules/readable-stream/node_modules/safe-buffer/index.js","webpack://mermaid/./node_modules/readable-stream/passthrough.js","webpack://mermaid/./node_modules/readable-stream/readable-browser.js","webpack://mermaid/./node_modules/readable-stream/transform.js","webpack://mermaid/./node_modules/readable-stream/writable-browser.js","webpack://mermaid/./node_modules/ripemd160/index.js","webpack://mermaid/./node_modules/safe-buffer/index.js","webpack://mermaid/./node_modules/scope-css/index.js","webpack://mermaid/./node_modules/setimmediate/setImmediate.js","webpack://mermaid/./node_modules/sha.js/hash.js","webpack://mermaid/./node_modules/sha.js/index.js","webpack://mermaid/./node_modules/sha.js/sha.js","webpack://mermaid/./node_modules/sha.js/sha1.js","webpack://mermaid/./node_modules/sha.js/sha224.js","webpack://mermaid/./node_modules/sha.js/sha256.js","webpack://mermaid/./node_modules/sha.js/sha384.js","webpack://mermaid/./node_modules/sha.js/sha512.js","webpack://mermaid/./node_modules/slugify/slugify.js","webpack://mermaid/./node_modules/stream-browserify/index.js","webpack://mermaid/./node_modules/strip-css-comments/index.js","webpack://mermaid/./node_modules/timers-browserify/main.js","webpack://mermaid/./node_modules/util-deprecate/browser.js","webpack://mermaid/./node_modules/vm-browserify/index.js","webpack://mermaid/(webpack)/buildin/global.js","webpack://mermaid/(webpack)/buildin/module.js","webpack://mermaid/./src/config.js","webpack://mermaid/./src/dagre-wrapper/clusters.js","webpack://mermaid/./src/dagre-wrapper/createLabel.js","webpack://mermaid/./src/dagre-wrapper/edges.js","webpack://mermaid/./src/dagre-wrapper/index.js","webpack://mermaid/./src/dagre-wrapper/intersect/index.js","webpack://mermaid/./src/dagre-wrapper/intersect/intersect-circle.js","webpack://mermaid/./src/dagre-wrapper/intersect/intersect-ellipse.js","webpack://mermaid/./src/dagre-wrapper/intersect/intersect-line.js","webpack://mermaid/./src/dagre-wrapper/intersect/intersect-node.js","webpack://mermaid/./src/dagre-wrapper/intersect/intersect-polygon.js","webpack://mermaid/./src/dagre-wrapper/intersect/intersect-rect.js","webpack://mermaid/./src/dagre-wrapper/markers.js","webpack://mermaid/./src/dagre-wrapper/mermaid-graphlib.js","webpack://mermaid/./src/dagre-wrapper/nodes.js","webpack://mermaid/./src/dagre-wrapper/shapes/note.js","webpack://mermaid/./src/dagre-wrapper/shapes/util.js","webpack://mermaid/./src/diagrams/class/classDb.js","webpack://mermaid/./src/diagrams/class/classRenderer.js","webpack://mermaid/./src/diagrams/class/parser/classDiagram.jison","webpack://mermaid/./src/diagrams/class/svgDraw.js","webpack://mermaid/./src/diagrams/common/common.js","webpack://mermaid/./src/diagrams/er/erDb.js","webpack://mermaid/./src/diagrams/er/erMarkers.js","webpack://mermaid/./src/diagrams/er/erRenderer.js","webpack://mermaid/./src/diagrams/er/parser/erDiagram.jison","webpack://mermaid/./src/diagrams/flowchart/flowChartShapes.js","webpack://mermaid/./src/diagrams/flowchart/flowDb.js","webpack://mermaid/./src/diagrams/flowchart/flowRenderer-v2.js","webpack://mermaid/./src/diagrams/flowchart/flowRenderer.js","webpack://mermaid/./src/diagrams/flowchart/parser/flow.jison","webpack://mermaid/./src/diagrams/gantt/ganttDb.js","webpack://mermaid/./src/diagrams/gantt/ganttRenderer.js","webpack://mermaid/./src/diagrams/gantt/parser/gantt.jison","webpack://mermaid/./src/diagrams/git/gitGraphAst.js","webpack://mermaid/./src/diagrams/git/gitGraphRenderer.js","webpack://mermaid/./src/diagrams/git/parser/gitGraph.jison","webpack://mermaid/./src/diagrams/info/infoDb.js","webpack://mermaid/./src/diagrams/info/infoRenderer.js","webpack://mermaid/./src/diagrams/info/parser/info.jison","webpack://mermaid/./src/diagrams/pie/parser/pie.jison","webpack://mermaid/./src/diagrams/pie/pieDb.js","webpack://mermaid/./src/diagrams/pie/pieRenderer.js","webpack://mermaid/./src/diagrams/sequence/parser/sequenceDiagram.jison","webpack://mermaid/./src/diagrams/sequence/sequenceDb.js","webpack://mermaid/./src/diagrams/sequence/sequenceRenderer.js","webpack://mermaid/./src/diagrams/sequence/svgDraw.js","webpack://mermaid/./src/diagrams/state/id-cache.js","webpack://mermaid/./src/diagrams/state/parser/stateDiagram.jison","webpack://mermaid/./src/diagrams/state/shapes.js","webpack://mermaid/./src/diagrams/state/stateDb.js","webpack://mermaid/./src/diagrams/state/stateRenderer-v2.js","webpack://mermaid/./src/diagrams/state/stateRenderer.js","webpack://mermaid/./src/diagrams/user-journey/journeyDb.js","webpack://mermaid/./src/diagrams/user-journey/journeyRenderer.js","webpack://mermaid/./src/diagrams/user-journey/parser/journey.jison","webpack://mermaid/./src/diagrams/user-journey/svgDraw.js","webpack://mermaid/./src/errorRenderer.js","webpack://mermaid/./src/logger.js","webpack://mermaid/./src/mermaid.js","webpack://mermaid/./src/mermaidAPI.js","webpack://mermaid/./src/themes sync ^\\.\\/.*\\/index\\.scss$","webpack://mermaid/./src/themes/dark/index.scss?55a3","webpack://mermaid/./src/themes/default/index.scss?1e22","webpack://mermaid/./src/themes/forest/index.scss?c8cd","webpack://mermaid/./src/themes/neutral/index.scss?96e0","webpack://mermaid/./src/utils.js","webpack://mermaid/util (ignored)","webpack://mermaid/util (ignored)?d0f4","webpack://mermaid/buffer (ignored)","webpack://mermaid/crypto (ignored)"],"names":["config","theme","themeCSS","undefined","maxTextSize","fontFamily","logLevel","securityLevel","startOnLoad","arrowMarkerAbsolute","secure","flowchart","htmlLabels","nodeSpacing","rankSpacing","curve","padding","sequence","activationWidth","diagramMarginX","diagramMarginY","actorMargin","width","height","boxMargin","boxTextMargin","noteMargin","messageMargin","messageAlign","mirrorActors","bottomMarginAdj","useMaxWidth","rightAngles","showSequenceNumbers","actorFontSize","actorFontFamily","actorFontWeight","noteFontSize","noteFontFamily","noteFontWeight","noteAlign","messageFontSize","messageFontFamily","messageFontWeight","wrap","wrapPadding","labelBoxWidth","labelBoxHeight","messageFont","fontSize","fontWeight","noteFont","actorFont","gantt","titleTopMargin","barHeight","barGap","topPadding","leftPadding","gridLineStartPadding","numberSectionStyles","axisFormat","journey","class","git","state","dividerMargin","sizeUnit","textHeight","titleShift","forkWidth","forkHeight","miniPadding","fontSizeFactor","labelHeight","edgeLengthFactor","compositTitleSize","radius","er","diagramPadding","layoutDirection","minEntityWidth","minEntityHeight","entityPadding","stroke","fill","defaultConfig","Object","freeze","siteConfig","assignWithDepth","currentConfig","setSiteConfig","conf","clobber","getSiteConfig","setConfig","sanitize","getConfig","options","keys","forEach","key","logger","warn","reset","configApi","rect","parent","node","log","trace","id","shapeSvg","insert","attr","label","text","appendChild","createLabel","labelText","labelStyle","bbox","getBBox","div","children","dv","select","getBoundingClientRect","halfPadding","JSON","stringify","rx","ry","x","y","rectBox","intersect","point","intersectRect","noteGroup","roundedWithTitle","classes","innerRect","append","divider","shapes","clusterElems","insertCluster","elem","shape","getClusterTitleWidth","removeChild","clear","positionCluster","info","el","applyStyle","dom","styleFn","addHtmlLabel","fo","document","createElementNS","labelClass","isNode","html","style","_vertexText","isTitle","vertexText","replace","s","vertexNode","svgLabel","setAttribute","rows","split","Array","isArray","j","length","tspan","setAttributeNS","textContent","trim","edgeLabels","insertEdgeLabel","edge","labelElement","edgeLabel","positionEdgeLabel","points","pos","utils","calcLabelPosition","outsideNode","dx","Math","abs","dy","w","h","intersection","outsidePoint","insidePoint","r","edges","x1","x2","y1","y2","Q","R","q","res","insertEdge","e","clusterDb","diagramType","graph","pointsHasChanged","tail","v","head","slice","unshift","push","toCluster","lastPointOutside","isInside","insterection","fromCluster","updatedPoints","i","lineData","filter","p","Number","isNaN","lineFunction","line","d","curveBasis","strokeClasses","thickness","pattern","svgPath","url","window","location","protocol","host","pathname","search","arrowType","recursiveRender","_elem","diagramtype","parentCluster","graphlib","json","write","dir","rankdir","nodes","clusters","edgePaths","data","parse","clusterData","setNode","setParent","clusterNode","newEl","updateNodeBounds","setNodeElem","findNonClusterChild","insertNode","name","dagre","layout","positionNode","updatedPath","render","markers","insertMarkers","clearNodes","clearEdges","clearClusters","clearGraphlib","adjustClustersAndEdges","circle","ellipse","polygon","intersectCircle","intersectEllipse","cx","cy","px","py","det","sqrt","intersectLine","p1","p2","q1","q2","a1","a2","b1","b2","c1","c2","r1","r2","r3","r4","denom","offset","num","sameSign","module","exports","intersectNode","console","intersectPolygon","polyPoints","intersections","minX","POSITIVE_INFINITY","minY","entry","min","left","top","sort","pdx","pdy","distp","qdx","qdy","distq","sx","sy","markerArray","type","markerName","extension","composition","aggregation","dependency","cross","barb","decendants","parents","isDecendant","ancenstorId","debug","indexOf","edgeInCluster","clusterId","copy","newGraph","rootId","setEdge","error","removeNode","extractDecendants","concat","validate","_id","getAnchorId","externalConnections","depth","d1","d2","extractor","removeEdge","hasChildren","graphSettings","clusterGraph","Graph","multigraph","compound","setGraph","nodesep","ranksep","marginx","marginy","setDefaultEdgeLabel","question","labelHelper","questionElem","insertPolygonShape","hexagon","f","m","hex","rect_left_inv_arrow","lean_right","lean_left","trapezoid","inv_trapezoid","rect_right_inv_arrow","cylinder","rectWithTitle","innerLine","text2","flat","textRows","titleBox","descr","join","stadium","subroutine","start","forkJoin","end","innerCircle","note","fork","nodeElems","_classes","element","map","MERMAID_DOM_ID_PREFIX","relations","classCounter","funs","splitClassNameAndType","genericType","className","addClass","classId","cssClasses","methods","members","annotations","domId","lookUpDomId","classKeys","setupToolTips","getClass","getClasses","getRelations","addRelation","relation","id1","id2","addAnnotation","annotation","validatedClassName","addMember","member","theClass","memberString","startsWith","endsWith","substring","addMembers","reverse","cleanupLabel","substr","setCssClass","ids","match","setLink","linkStr","tooltip","link","formatUrl","common","sanitizeText","setClickEvent","functionName","setClickFunc","elemId","querySelector","addEventListener","runFunc","bindFunctions","fun","lineType","LINE","DOTTED_LINE","relationType","AGGREGATION","EXTENSION","COMPOSITION","DEPENDENCY","tooltipElem","_groups","svg","selectAll","on","title","transition","duration","scrollX","right","scrollY","body","scrollTop","classed","parser","yy","classDb","idCache","getGraphId","setConf","cnf","draw","diagram","g","isMultiGraph","classDef","svgDraw","drawClass","drawEdge","svgBounds","vBox","edgeCount","path","getRelationType","type1","type2","l","labelPosition","p1_card_x","p1_card_y","p2_card_x","p2_card_y","cardinality_1_point","calcCardinalityPosition","cardinality_2_point","bounds","relationTitle1","relationTitle2","cssClassStr","classInfo","isFirst","titleText2","classTitleString","classTitle","titleHeight","membersLine","addTspan","membersBox","methodsLine","method","classBox","rectWidth","childNodes","parseMember","fieldRegEx","methodRegEx","fieldMatch","methodMatch","buildFieldDisplay","buildMethodDisplay","buildLegacyDisplay","parsedText","displayText","visibility","fieldType","parseGenericTypes","fieldName","err","cssStyle","methodName","parameters","classifier","returnType","parseClassifier","memberText","methodStart","methodEnd","firstChar","textEl","txt","tSpan","cleanedText","getRows","str","breakToPlaceholder","placeholderToBreak","lineBreakRegex","hasBreaks","test","splitBreaks","entities","relationships","Cardinality","ZERO_OR_ONE","ZERO_OR_MORE","ONE_OR_MORE","ONLY_ONE","Identification","NON_IDENTIFYING","IDENTIFYING","addEntity","getEntities","addRelationship","entA","rolA","entB","rSpec","rel","entityA","roleA","entityB","relSpec","getRelationships","setTitle","getTitle","ERMarkers","ONLY_ONE_START","ONLY_ONE_END","ZERO_OR_ONE_START","ZERO_OR_ONE_END","ONE_OR_MORE_START","ONE_OR_MORE_END","ZERO_OR_MORE_START","ZERO_OR_MORE_END","marker","drawEntities","svgNode","firstOne","groupNode","textId","textNode","textBBox","entityWidth","max","entityHeight","rectNode","rectBBox","adjustEntities","getEdgeName","addRelationships","relationship","relCnt","drawRelationshipFromLayout","relType","erDb","cardA","erMarkers","cardB","len","getTotalLength","labelPoint","getPointAtLength","labelId","labelNode","labelBBox","erParser","directed","edgesep","firstEntity","dagreD3","addToRender","addToRenderV2","addShape","vertices","subGraphs","subGraphLookup","tooltips","subCount","firstGraphFlag","direction","addVertex","styles","addSingleLink","_start","_end","linktext","addLink","updateLinkInterpolate","positions","interp","defaultInterpolate","interpolate","updateLink","defaultStyle","isSubstringInArray","textStyles","newStyle1","newStyle2","setDirection","setClass","setTooltip","setClickFun","getTooltip","getDirection","getVertices","getEdges","addSubGraph","list","_title","uniq","a","prims","boolean","number","string","objs","item","hasOwnProperty","nodeList","apply","subGraph","getPosForId","secCount","posCrossRef","indexNodes2","result","count","posCount","childPos","getDepthFirstPos","indexNodes","getSubGraphs","firstGraph","destructStartLink","_str","destructEndLink","destructLink","_startStr","startInfo","lex","addVertices","vert","svgId","vertex","classStr","getStylesFromArray","parentNode","radious","_shape","addEdges","cnt","defaultLabelStyle","defaultStyles","linkId","linkNameStart","linkNameEnd","edgeData","arrowhead","interpolateToCurve","curveLinear","arrowheadStyle","labelpos","labelType","flowDb","flow","subG","_label","labels","querySelectorAll","k","dim","insertBefore","firstChild","linkNode","Render","flowChartShapes","arrows","none","normal","util","clusterRects","clusterEl","xPos","baseVal","value","yPos","cluster","te","classList","add","dateFormat","todayMarker","excludes","sections","tasks","currentSection","tags","inclusiveEndDates","lastOrder","taskCnt","lastTask","lastTaskID","rawTasks","setAxisFormat","getAxisFormat","setTodayMarker","getTodayMarker","setDateFormat","enableInclusiveEndDates","endDatesAreInclusive","getDateFormat","setExcludes","toLowerCase","getExcludes","addSection","getSections","getTasks","allItemsPricessed","compileTasks","maxDepth","iterationCount","isInvalidDate","date","isoWeekday","format","checkTaskDates","task","manualEndTime","startTime","moment","endTime","renderEndTime","fixTaskDates","toDate","invalid","getStartDate","prevTime","re","afterStatement","exec","latestEndingTask","findTaskById","dt","Date","setHours","mDate","isValid","durationToDate","durationStatement","relativeTime","getEndDate","inclusive","parseId","idStr","compileData","prevTask","dataStr","ds","getTaskTags","endTimeData","parseData","prevTaskId","startData","taskDb","addTask","rawTask","section","processed","raw","taskInfo","active","done","crit","milestone","order","addTaskOrg","newTask","description","compileTask","allProcessed","_linkStr","sanitizeUrl","pushFun","open","functionArgs","argList","charAt","callbackFunction","matchFound","t","regex","RegExp","shift","ganttDb","rightPadding","getElementById","parentElement","offsetWidth","useWidth","taskArray","timeScale","scaleTime","domain","rangeRound","categories","catsUnfiltered","checkUnique","taskCompare","b","taskA","taskB","makeGant","pageWidth","pageHeight","gap","colorScale","scaleLinear","range","interpolateHcl","makeGrid","drawRects","vertLabels","drawToday","theArray","theGap","theTopPad","theSidePad","theBarHeight","theColorScale","enter","rectangles","toString","secNum","taskClass","startX","endX","textWidth","taskType","xAxis","axisBottom","tickSize","tickFormat","timeFormat","call","numOccurances","prevGap","getCount","todayG","today","todayLine","arr","hash","getCounts","obj","word","commits","branches","master","curBranch","seq","makeid","characters","charactersLength","floor","random","getId","isfastforwardable","currentCommit","otherCommit","isReachableFrom","currentSeq","otherSeq","uniqBy","fn","recordMap","create","reduce","out","setOptions","rawOptString","message","getOptions","commit","msg","branch","merge","otherBranch","checkout","commitRef","ref","parentCount","parseInt","upsert","newval","index","splice","prettyPrintCommitHistory","commitArr","c","newCommit","nextCommit","prettyPrint","getCommitsArray","getBranchesAsObjArray","branchArr","getBranches","getCommits","o","getCurrentBranch","getHead","allCommitsDict","branchNum","nodeFillColor","nodeStrokeWidth","nodeStrokeColor","lineStrokeWidth","branchOffset","lineColor","leftMargin","branchColors","nodeRadius","nodeLabel","apiConfig","svgCreateDefs","svgDrawLine","colorIdx","color","lineGen","round","getElementCoords","coords","ctm","getCTM","xn","yn","svgDrawLineForCommits","fromId","toId","fromBbox","toBbox","lineStart","lineEnd","cloneNode","selector","renderCommitHistory","commitid","numCommits","size","branchName","renderLines","branchColor","lineDrawn","ver","gitGraphParser","db","assign","setMessage","getMessage","setInfo","inf","getInfo","infoParser","cleanupValue","pieParser","pieData","margin","legendRectSize","legendSpacing","sum","scaleOrdinal","schemeSet2","pie","d3pie","dataReady","entries","arcGenerator","arc","innerRadius","outerRadius","toFixed","centroid","legend","horz","prevActor","actors","messages","notes","titleWrapped","sequenceNumbersEnabled","wrapEnabled","parseDirective","statement","context","mermaidAPI","addActor","old","autoWrap","nextActor","activationCount","part","LINETYPE","ACTIVE_START","from","actor","ACTIVE_END","addMessage","idFrom","idTo","answer","to","addSignal","messageType","Error","token","loc","first_line","last_line","first_column","last_column","expected","getMessages","getActors","getActor","getActorKeys","getTitleWrapped","enableSequenceNumbers","setWrap","wrapSetting","parseMessage","SOLID","DOTTED","NOTE","SOLID_CROSS","DOTTED_CROSS","SOLID_OPEN","DOTTED_OPEN","LOOP_START","LOOP_END","ALT_START","ALT_ELSE","ALT_END","OPT_START","OPT_END","PAR_START","PAR_AND","PAR_END","RECT_START","RECT_END","ARROWTYPE","FILLED","OPEN","PLACEMENT","LEFTOF","RIGHTOF","OVER","addNote","placement","titleWrap","param","signalType","loopText","optText","altText","parText","sequenceDb","startx","stopx","starty","stopy","verticalPos","sequenceItems","activations","models","getHeight","loops","it","acc","actorModel","addLoop","loopModel","msgModel","noteModel","lastActor","lastLoop","lastMessage","lastNote","init","updateVal","val","updateBounds","_self","updateFn","updateItemBounds","n","_startx","_stopx","_starty","_stopy","newActivation","actorRect","stackedSize","actorActivations","anchored","anchorElement","endActivation","lastActorActivationIdx","activation","lastIndexOf","createLoop","newLoop","endLoop","pop","addSectionToLoop","loop","sectionTitles","getVerticalPos","bumpVerticalPos","bump","getBounds","drawNote","getNoteRect","rectElem","drawRect","textObj","getTextObj","anchor","textMargin","valign","textElem","drawText","curr","drawMessage","sequenceIndex","lines","textDims","calculateTextDimensions","lineHeight","totalOffset","lineStarty","fromBounds","toBounds","drawActors","actorKeys","prevWidth","prevMargin","drawActor","activationBounds","actorObj","adjustLoopHeightForWrap","loopWidths","preMargin","postMargin","addLoopFn","heightAdjust","loopWidth","textConf","wrapLabel","maxMessageWidthPerActor","getMaxMessageWidthPerActor","calculateActorMargins","calculateLoopBounds","insertArrowHead","insertArrowCrossHead","insertSequenceNumber","activeEnd","activationData","drawActivation","drawLoop","drawBackgroundRect","includes","box","actorLines","extraVertForTitle","isNote","isMessage","textFont","wrappedMessage","messageDimensions","messageWidth","actorToMessageWidth","maxHeight","prop","actDims","actorKey","actorWidth","buildNoteModel","shouldWrap","textDimensions","buildMessageModel","process","fromIdx","toIdx","allBounds","boundedWidth","msgDims","stack","current","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","toAdd","enabled","stk","rectData","textData","prevTextHeight","textElems","yfunc","dominantBaseline","alignmentBaseline","span","drawLabel","txtObject","genPoints","cut","actorCnt","center","_drawTextCandidateFunc","drawLoopLine","idx","sectionHeight","lower","defs","byText","content","textAttrs","_setTextAttrs","byTspan","byFo","toText","fromTextAttrsDict","textPlacement","set","get","drawStartState","drawDivider","drawSimpleState","stateDef","drawDescrState","descriptions","isSecond","descrLine","descrBox","addTitleAndBox","altBkg","pad","dblPad","orgBox","orgWidth","orgX","titleWidth","graphBox","doc","lineY","drawEndState","drawForkJoinState","parentId","tmp","nText","_drawLongText","_text","tHeight","textBounds","drawState","stateInfo","stateBox","stateDb","titleRows","maxWidth","boundstmp","boxHeight","heightAdj","clone","rootDoc","setRootDoc","getRootDoc","docTranslator","first","stmt","state1","state2","currentDoc","newNode","generateId","docNode","getRootDocV2","extract","_doc","addState","newDoc","states","documents","root","currentDocument","startCnt","endCnt","addDescription","des","getState","getStates","logDocuments","_id1","_id2","_descr","theState","dividerCnt","getDividerId","trimColon","nodeDb","setupNode","altFlag","nodeData","noteData","groupData","position","setupDoc","startId","endId","transformationLog","renderDoc","getLabelWidth","edgeFreeDoc","ranker","nodeSep","sub","boxBounds","noteDef","nodeCount","svgElem","dividers","pWidth","pShift","getAttribute","allItemsProcessed","updateActors","tempActors","people","unique","Set","taskData","pieces","score","peeps","peopleList","journeyDb","taskMargin","taskFontSize","taskFontFamily","actorColours","sectionFills","sectionColours","drawActorLegend","person","colour","circleData","drawCircle","labelData","LEFT_MARGIN","initGraphics","actorNames","actorPos","actorName","drawTasks","fills","textColours","lastSection","sectionVHeight","taskPos","sectionNumber","drawSection","taskActors","drawTask","drawFace","faceData","circleElement","face","smile","d3arc","startAngle","PI","endAngle","sad","ambivalent","labelMargin","taskCount","graphics","LEVELS","fatal","setLogLevel","level","bind","time","arguments","mermaid","sequenceConfig","callback","Node","initialize","ganttConfig","now","innerHTML","decode","detectInit","svgCode","parseError","contentLoaded","themes","themeName","require","graphInit","reinitialize","graphType","detectType","gitGraphAst","flowParser","sequenceParser","ganttParser","classParser","stateParser","infoDb","pieDb","journeyParser","encodeEntities","innerTxt","isInt","decodeEntities","_txt","cb","container","existingSvg","remove","altFontFamily","flowRenderer","style1","createElement","scope","style2","cs","getComputedStyle","font","gitGraphRenderer","flowRendererV2","sequenceDiagram","sequenceRenderer","ganttRenderer","classRenderer","stateRenderer","stateRendererV2","infoRenderer","pkg","version","pieRenderer","erRenderer","journeyRenderer","errorRenderer","currentDirective","args","handleDirective","directive","updateRendererConfigs","globalReset","d3CurveTypes","curveBasisClosed","curveBasisOpen","curveLinearClosed","curveMonotoneX","curveMonotoneY","curveNatural","curveStep","curveStepAfter","curveStepBefore","directiveWithoutOpen","anyComment","inits","detectDirective","results","commentWithoutDirectives","source","lastIndex","memoize","resolver","cache","defaultCurve","curveName","toUpperCase","arrPaths","fnName","params","distance","pow","traverseEdge","prevPoint","totalDistance","remainingDistance","vectorDistance","distanceRatio","isRelationTypePresent","initialPosition","distanceToCardinalityPoint","angle","atan2","cardinalityPosition","sin","cos","cryptoRandomString","dst","src","drawSimpleText","joinWith","words","completedLines","nextLine","wordLength","calculateTextWidth","nextLineLength","breakString","hyphenatedStrings","remainingWord","Boolean","currentWord","isLastWord","hyphenCharacter","currentLine","character","lineWidth","currentCharacter","isLastLine","hyphenatedNextLine","calculateTextHeight","fontFamilies","dims","cheight","bBox"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,O;QCVA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;;;QAGA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA,0CAA0C,gCAAgC;QAC1E;QACA;;QAEA;QACA;QACA;QACA,wDAAwD,kBAAkB;QAC1E;QACA,iDAAiD,cAAc;QAC/D;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,yCAAyC,iCAAiC;QAC1E,gHAAgH,mBAAmB,EAAE;QACrI;QACA;;QAEA;QACA;QACA;QACA,2BAA2B,0BAA0B,EAAE;QACvD,iCAAiC,eAAe;QAChD;QACA;QACA;;QAEA;QACA,sDAAsD,+DAA+D;;QAErH;QACA;;;QAGA;QACA;;;;;;;;;;;;;AClFa;;AAEb;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;ACxCA;;AAEA,cAAc,mBAAO,CAAC,6CAAO;;AAE7B,cAAc,mBAAO,CAAC,0DAAY;AAClC,YAAY,mBAAO,CAAC,kEAAa;AACjC,iBAAiB,mBAAO,CAAC,4EAAkB;AAC3C,gBAAgB,mBAAO,CAAC,0EAAiB;AACzC,gBAAgB,mBAAO,CAAC,0EAAiB;;;;;;;;;;;;ACRzC,WAAW,mBAAO,CAAC,mDAAS;AAC5B,eAAe,mBAAO,CAAC,6DAAU;;AAEjC;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY,mBAAO,CAAC,iDAAI;AACxB,4CAA4C;AAC5C,iCAAiC;AACjC,QAAQ;AACR;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;AC5DA,eAAe,mBAAO,CAAC,6DAAU;AACjC,eAAe,mBAAO,CAAC,8DAAS;AAChC,aAAa,mBAAO,CAAC,8CAAQ;;AAE7B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAU;AACV;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;ACnHA;;AAEA,gBAAgB,mBAAO,CAAC,oEAAY;AACpC,qBAAqB,mBAAO,CAAC,gEAAU;AACvC,qBAAqB,mBAAO,CAAC,gEAAU;AACvC,YAAY,mBAAO,CAAC,4DAAQ;;;;;;;;;;;;ACL5B,eAAe,mBAAO,CAAC,8DAAS;AAChC,oBAAoB,mBAAO,CAAC,8DAAS;AACrC,oBAAoB,mBAAO,CAAC,8DAAS;AACrC,aAAa,mBAAO,CAAC,wEAAqB;;AAE1C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,gBAAgB;AAChB;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,OAAO;AACP,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;ACznBA,eAAe,mBAAO,CAAC,6DAAU;;AAEjC;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,UAAU;AACV;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,KAAK;AACL;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACxHA,gBAAgB,mBAAO,CAAC,wEAAc;;AAEtC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACzCA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA,gBAAgB,mBAAO,CAAC,+DAAO;;;;;;;;;;;;AClB/B,eAAe,mBAAO,CAAC,6DAAU;;AAEjC,WAAW,mBAAO,CAAC,sDAAY;AAC/B;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ,GAAG;AACH;AACA;AACA;;AAEA;AACA,mBAAmB,oBAAoB;AACvC;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;ACnUA;;AAEA,eAAe,mBAAO,CAAC,8DAAO;AAC9B,eAAe,mBAAO,CAAC,8DAAO;;;;;;;;;;;;ACH9B,eAAe,mBAAO,CAAC,6DAAU;AACjC,aAAa,mBAAO,CAAC,8CAAQ;;AAE7B,iBAAiB,mBAAO,CAAC,8DAAO;;AAEhC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,iBAAiB,kBAAkB;AACnC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;AChDA,eAAe,mBAAO,CAAC,6DAAU;AACjC,aAAa,mBAAO,CAAC,8CAAQ;;AAE7B,WAAW,mBAAO,CAAC,sDAAY;AAC/B;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,8BAA8B,YAAY;AAC1C;;AAEA;AACA;AACA;;AAEA,iDAAiD,OAAO;AACxD;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,mBAAmB,gBAAgB;AACnC;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,eAAe;AAClC;AACA,GAAG;AACH;AACA,mBAAmB,eAAe;AAClC;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB,eAAe;AAChC;AACA,gBAAgB,eAAe;AAC/B;AACA;;AAEA;AACA;AACA,6BAA6B,QAAQ;AACrC;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,mBAAmB,YAAY;AAC/B;;AAEA;AACA,8BAA8B,QAAQ;AACtC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,WAAW,iBAAiB;AAC5B;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;;;;;;;;;;;ACtSA;;AAEA,eAAe,mBAAO,CAAC,8DAAO;AAC9B,eAAe,mBAAO,CAAC,8DAAO;;;;;;;;;;;;ACH9B,eAAe,mBAAO,CAAC,6DAAU;;AAEjC,iBAAiB,mBAAO,CAAC,8DAAO;;AAEhC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,iBAAiB,cAAc;AAC/B;AACA;AACA;AACA;;;;;;;;;;;;;ACpBY;;AAEZ;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,kCAAkC,SAAS;AAC3C;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB,SAAS;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,0CAA0C,UAAU;AACpD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;ACvJA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA;AACA,aAAa,mBAAO,CAAC,eAAQ;AAC7B,GAAG;AACH;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,wCAAwC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,iBAAiB;AACpC;AACA;;AAEA;AACA;AACA;AACA,wCAAwC,QAAQ;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,wBAAwB,mBAAmB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,uBAAuB,SAAS;AAChC;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,OAAO;AACP;;AAEA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mBAAmB,iBAAiB;AACpC;AACA;;AAEA;AACA;AACA;AACA,sCAAsC,YAAY;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,uBAAuB,SAAS;AAChC;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,OAAO;AACP;;AAEA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,sCAAsC,sBAAsB;AAC5D;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,uBAAuB,SAAS;AAChC;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;;AAEA,iBAAiB,SAAS;AAC1B;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,iBAAiB;AACpC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,qBAAqB,iBAAiB;AACtC;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB,4BAA4B;AAC7C;AACA;;AAEA,iBAAiB,aAAa;AAC9B;AACA;;AAEA;AACA;AACA,KAAK;AACL,iBAAiB,aAAa;AAC9B;AACA;;AAEA;AACA;;AAEA,YAAY,eAAe;AAC3B;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,qBAAqB,gBAAgB;AACrC;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,mBAAmB,iBAAiB;AACpC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,gBAAgB;AACnC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA,mBAAmB,cAAc;AACjC;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA,mBAAmB,cAAc;AACjC;AACA;;AAEA;AACA,YAAY,cAAc;AAC1B;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,mBAAmB,iBAAiB;AACpC;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA,mBAAmB,cAAc;AACjC;AACA;AACA;AACA;AACA,UAAU,6BAA6B;AACvC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,YAAY,cAAc;AAC1B;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA,mBAAmB,cAAc;AACjC;AACA;AACA;AACA;AACA,UAAU,6BAA6B;AACvC;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAY,cAAc;AAC1B;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,mBAAmB,SAAS;AAC5B;AACA;AACA;AACA;AACA;AACA,oDAAoD,WAAW;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,oBAAoB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,WAAW;AAC/D;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,mBAAmB,OAAO;AAC1B;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B;AACA;AACA;AACA;;AAEA;AACA;;AAEA,mBAAmB,OAAO;AAC1B;;AAEA;AACA;;AAEA,qBAAqB,OAAO;AAC5B;AACA;;AAEA,uBAAuB,OAAO;AAC9B;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,uBAAuB,GAAG;AAC1B;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,mBAAmB,WAAW;AAC9B;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,WAAW;AAC9B;AACA;AACA;;AAEA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,mBAAmB,SAAS;AAC5B;;AAEA,kCAAkC;AAClC,sCAAsC;AACtC;;AAEA;AACA,qBAAqB,OAAO;AAC5B;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,OAAO;AAC1B;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,mBAAmB,OAAO;AAC1B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,iBAAiB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,cAAc;AACjC;AACA;;AAEA;AACA,6BAA6B,cAAc;AAC3C;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,iBAAiB,iBAAiB;AAClC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,+BAA+B,QAAQ;AACvC;AACA;;AAEA,iBAAiB,OAAO;AACxB;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,qBAAqB,OAAO;AAC5B;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,iBAAiB,iBAAiB;AAClC;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA,6BAA6B,mCAAmC;AAChE;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,mBAAmB,+CAA+C;AAClE;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA,qBAAqB,sCAAsC;AAC3D;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,eAAe,gBAAgB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,yBAAyB;AACnC;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,eAAe,iBAAiB;AAChC;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qBAAqB,cAAc;AACnC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,uBAAuB,QAAQ;AAC/B;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,iCAAiC,QAAQ;AACzC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,iCAAiC,QAAQ;AACzC;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,6BAA6B,mCAAmC;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,6BAA6B,mCAAmC;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA,6BAA6B,mCAAmC;AAChE;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,6BAA6B,mCAAmC;AAChE;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,uBAAuB,0BAA0B;AACjD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,gCAAgC;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,iCAAiC,QAAQ;AACzC;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,mBAAmB,YAAY;AAC/B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,gBAAgB,kBAAkB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,gBAAgB;AACnC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,gBAAgB;AACnC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,oBAAoB;AACzC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mBAAmB,gBAAgB;AACnC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,4BAA4B,QAAQ;AACpC;AACA,6BAA6B,QAAQ;AACrC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC,EAAE,MAA6B;;;;;;;;;;;;;ACl2GhC;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,iBAAiB,gBAAgB;AACjC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA,iBAAiB,mBAAO,CAAC,eAAQ;AACjC;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;;;;;;;;;;;AChEA;AACA;AACA;AACA;;AAEA,aAAa,mBAAO,CAAC,wDAAa;;AAElC;AACA;;AAEA;AACA;;AAEA,iBAAiB,SAAS;AAC1B;AACA;;AAEA;AACA;;AAEA;AACA,iBAAiB,cAAc;AAC/B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,qBAAqB,iBAAiB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB,SAAS;AAC1B;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iBAAiB,aAAa;AAC9B;AACA;;AAEA,mBAAmB,YAAY;AAC/B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,kBAAkB,aAAa;AAC/B;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACnOA,UAAU,mBAAO,CAAC,mDAAO;AACzB,aAAa,mBAAO,CAAC,wDAAa;AAClC,gBAAgB,mBAAO,CAAC,wDAAa;AACrC,eAAe,mBAAO,CAAC,6DAAU;AACjC,YAAY,mBAAO,CAAC,uDAAS;AAC7B,UAAU,mBAAO,CAAC,sDAAY;AAC9B,aAAa,mBAAO,CAAC,yDAAU;;AAE/B;AACA;AACA;;AAEA;AACA,iBAAiB,SAAS;AAC1B;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;;;;;;;;;;;ACpHA,cAAc,mBAAO,CAAC,+DAAa;AACnC,gBAAgB,mBAAO,CAAC,+DAAa;AACrC,YAAY,mBAAO,CAAC,wEAAmB;;AAEvC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACZA,iBAAiB,mBAAO,CAAC,iEAAc;AACvC,aAAa,mBAAO,CAAC,wDAAa;AAClC,YAAY,mBAAO,CAAC,6DAAS;AAC7B,mBAAmB,mBAAO,CAAC,qEAAgB;AAC3C,gBAAgB,mBAAO,CAAC,wDAAa;AACrC,UAAU,mBAAO,CAAC,mDAAO;AACzB,WAAW,mBAAO,CAAC,8DAAgB;AACnC,eAAe,mBAAO,CAAC,6DAAU;;AAEjC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;AC3HA,YAAY,mBAAO,CAAC,6DAAS;AAC7B,iBAAiB,mBAAO,CAAC,iEAAc;AACvC,aAAa,mBAAO,CAAC,wDAAa;AAClC,mBAAmB,mBAAO,CAAC,qEAAgB;AAC3C,gBAAgB,mBAAO,CAAC,wDAAa;AACrC,UAAU,mBAAO,CAAC,mDAAO;AACzB,WAAW,mBAAO,CAAC,8DAAgB;AACnC,eAAe,mBAAO,CAAC,6DAAU;;AAEjC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;ACjHA,aAAa,mBAAO,CAAC,wDAAa;AAClC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,eAAe,OAAO;AACtB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;;;;;;;;;;;ACxFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACdA,UAAU,mBAAO,CAAC,sDAAY;;AAE9B;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;;;;;;;;;;;AChBA,aAAa,mBAAO,CAAC,wDAAa;AAClC,UAAU,mBAAO,CAAC,sDAAY;;AAE9B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;AChCA,aAAa,mBAAO,CAAC,wDAAa;;AAElC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;ACzCA,aAAa,mBAAO,CAAC,wDAAa;;AAElC;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;ACxBA,UAAU,mBAAO,CAAC,sDAAY;AAC9B,aAAa,mBAAO,CAAC,wDAAa;AAClC,aAAa,mBAAO,CAAC,0DAAW;;AAEhC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,cAAc;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AC7BA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;ACNA;AACA,OAAO,mBAAO,CAAC,yDAAO;AACtB,OAAO,mBAAO,CAAC,yDAAO;AACtB,OAAO,mBAAO,CAAC,yDAAO;AACtB,QAAQ,mBAAO,CAAC,2DAAQ;AACxB,QAAQ,mBAAO,CAAC,2DAAQ;AACxB,OAAO,mBAAO,CAAC,yDAAO;AACtB,OAAO,mBAAO,CAAC,yDAAO;AACtB,OAAO,mBAAO,CAAC,yDAAO;AACtB;;AAEA,YAAY,mBAAO,CAAC,kEAAa;;AAEjC;AACA;AACA;;AAEA;;;;;;;;;;;;;;;;;;;;;;;ACjBA,wDAAU,mBAAO,CAAC,sDAAY;;AAE9B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;;;;;;;;;;ACfA,UAAU,mBAAO,CAAC,mDAAO;AACzB,aAAa,mBAAO,CAAC,wDAAa;AAClC,gBAAgB,mBAAO,CAAC,wDAAa;AACrC,eAAe,mBAAO,CAAC,6DAAU;;AAEjC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;;;;;;;;;;;AC1BA,UAAU,mBAAO,CAAC,8DAAgB;AAClC,UAAU,mBAAO,CAAC,wEAAwB;AAC1C,eAAe,mBAAO,CAAC,0EAAsB;AAC7C,eAAe,mBAAO,CAAC,oEAAsB;AAC7C,WAAW,mBAAO,CAAC,8DAAgB;;AAEnC;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,uCAAuC,gCAAgC;;AAEvE;AACA;;AAEA;AACA;AACA;AACA,uCAAuC,+CAA+C;;AAEtF;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AClEA,iBAAiB,mBAAO,CAAC,wDAAa;AACtC,UAAU,mBAAO,CAAC,gDAAQ;AAC1B,eAAe,mBAAO,CAAC,6DAAU;AACjC,aAAa,mBAAO,CAAC,wDAAa;;AAElC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACjDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACvBA,uDAAS,mBAAO,CAAC,6CAAO;AACxB,kBAAkB,mBAAO,CAAC,0DAAa;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACvCA,iBAAiB,mBAAO,CAAC,yFAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACApD,+DAAiB,mBAAO,CAAC,0DAAa;AACtC,aAAa,mBAAO,CAAC,yDAAQ;AAC7B,eAAe,mBAAO,CAAC,6DAAU;AACjC,WAAW,mBAAO,CAAC,8DAAQ;AAC3B,aAAa,mBAAO,CAAC,kEAAU;;AAE/B,iBAAiB,mBAAO,CAAC,iFAAmB;AAC5C;AACA;AACA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC1FA;AACA,iBAAiB,mBAAO,CAAC,0DAAa;AACtC,UAAU,mBAAO,CAAC,8DAAgB;AAClC,SAAS,mBAAO,CAAC,yDAAU;AAC3B,SAAS,mBAAO,CAAC,6CAAO;AACxB,gBAAgB,mBAAO,CAAC,sDAAY;AACpC,aAAa,mBAAO,CAAC,yEAAe;;AAEpC;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;;AChJA;AACA,SAAS,mBAAO,CAAC,6CAAO;AACxB,SAAS,mBAAO,CAAC,yDAAU;AAC3B,gBAAgB,mBAAO,CAAC,sDAAY;AACpC,aAAa,mBAAO,CAAC,yEAAe;;AAEpC;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;;AClFA;AACA;AACA;;AAEA,iBAAiB,YAAY;AAC7B;AACA;;AAEA;AACA;;;;;;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEY;;AAEZ,aAAa,mBAAO,CAAC,oDAAW;AAChC,cAAc,mBAAO,CAAC,gDAAS;AAC/B,cAAc,mBAAO,CAAC,gDAAS;;AAE/B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB,mDAAmD;AACxE;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mBAAmB,UAAU;AAC7B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA,uCAAuC,SAAS;AAChD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,iBAAiB;AAChC;AACA;AACA;;AAEA;AACA;AACA,aAAa,iBAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gDAAgD,EAAE;AAClD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA,wBAAwB,eAAe;AACvC;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,wBAAwB,QAAQ;AAChC;AACA,qBAAqB,eAAe;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,qBAAqB,SAAS;AAC9B;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,qBAAqB,SAAS;AAC9B;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,qBAAqB,SAAS;AAC9B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,kBAAkB;AACnC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,mBAAmB,cAAc;AACjC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,uDAAuD,OAAO;AAC9D;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA,uDAAuD,OAAO;AAC9D;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,kBAAkB;AAClB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,qBAAqB,QAAQ;AAC7B;AACA;AACA,GAAG;AACH;AACA,eAAe,SAAS;AACxB;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,mBAAmB,SAAS;AAC5B;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,eAAe,iBAAiB;AAChC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB,YAAY;AAC7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,iBAAiB,gBAAgB;AACjC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,gBAAgB;AACjC;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;;AC5vDA,aAAa,mBAAO,CAAC,wDAAa;AAClC,gBAAgB,mBAAO,CAAC,yDAAQ;AAChC,oBAAoB,mBAAO,CAAC,0GAAgB;AAC5C,eAAe,mBAAO,CAAC,6DAAU;;AAEjC;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;;AClGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;;;;;;;;;;;;AC1GA,6DAAe,mBAAO,CAAC,yDAAU;AACjC,SAAS,mBAAO,CAAC,6CAAO;;AAExB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;;;;;;;;;;;;;AC3HY;AACZ,eAAe,mBAAO,CAAC,6DAAU;AACjC,UAAU,mBAAO,CAAC,8CAAQ;AAC1B,gBAAgB,mBAAO,CAAC,oDAAW;AACnC,UAAU,mBAAO,CAAC,8CAAQ;AAC1B,WAAW,mBAAO,CAAC,wDAAa;;AAEhC;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;AC7BA,UAAU,mBAAO,CAAC,8CAAQ;;AAE1B;AACA;AACA;;;;;;;;;;;;;ACJY;AACZ,eAAe,mBAAO,CAAC,6DAAU;A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;AAErB;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA,WAAW,0DAAS;AACpB;AACA;;;;;;;;;;;;;AChCA;AAAe;AACf;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;ACJD;AAAA;AAA6B;;AAEd;AACf;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,+BAA+B,2CAAI;;AAEnC,kBAAkB,SAAS;AAC3B,sCAAsC,SAAS;AAC/C;AACA;AACA;;AAEA;AACA,CAAC;;;;;;;;;;;;;ACpBD;AAAe;AACf;AACA,CAAC;;;;;;;;;;;;;ACFD;AAAA;AAAkC;;AAEnB;AACf,UAAU,yDAAQ;AAClB;AACA,CAAC;;;;;;;;;;;;;ACLD;AAAe;AACf;AACA;AACA;AACA;AACA;;AAEA;AACA,qBAAqB;AACrB;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,qBAAqB;AACrB;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;;;;;;;;;;;;ACpCD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA8B;AACA;AACI;AACJ;AACI;AACN;AACK;AACS;;AAE3B;AACf,cAAc,iDAAQ;AACtB,eAAe,+CAAM;AACrB,kBAAkB,0DAAO;;AAEzB;AACA;AACA;AACA;AACA;;AAEA,eAAe,OAAO;AACtB;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,uDAAQ;AACnB,WAAW,sDAAK,kCAAkC;AAClD;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;;AAEA;AACA,eAAe,OAAO;AACtB;AACA;AACA,aAAa,uDAAM;AACnB;AACA;;AAEA;AACA;;AAEA;AACA,qEAAqE,yDAAQ;AAC7E;;AAEA;AACA,sEAAsE,yDAAQ;AAC9E;;AAEA;AACA,4FAA4F,yDAAQ,CAAC,4CAAK,YAAY,yDAAQ;AAC9H;;AAEA;AACA,CAAC;;;;;;;;;;;;;AC1ED;AAAe;AACf;AACA,CAAC;;;;;;;;;;;;;ACFD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAoE;AACnB;AACF;AACN;AACU;AACF;AACN;AACM;AACiC;AACtB;AACI;AAC3B;AACE;AACI;AACF;AACJ;AACI;AACI;AACE;AACN;AACF;AACM;AACR;AAC6B;AACjB;AACF;AACV;;;;;;;;;;;;;AC1BrC;AAAe;AACf;AACA;AACA;AACA;;AAEA;AACA,qBAAqB;AACrB;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,qBAAqB;AACrB;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;;;;;;;;;;;;ACjCD;AAAA;AAA8B;;AAEf;AACf;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,yBAAyB,uDAAM;AAC/B;AACA;AACA;;AAEA;AACA;AACA,yBAAyB,uDAAM;AAC/B;AACA;AACA;;AAEA;AACA,CAAC;;;;;;;;;;;;;ACxBD;AAAA;AAAA;AAAA;AAAoC;AACN;AACI;;AAEnB;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA,yBAAyB,uDAAM;AAC/B;AACA;AACA;AACA;;AAEA;AACA;AACA,yBAAyB,uDAAM;AAC/B;AACA;AACA;AACA;;AAEA,SAAS,yDAAQ,cAAc,kDAAS;AACxC,CAAC;;;;;;;;;;;;;AC3BD;AAAe;AACf;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;;;;;;;;;;;;ACpBD;AAAe;AACf;AACA;AACA;AACA;;AAEA;AACA,qBAAqB;AACrB;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,qBAAqB;AACrB;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;;;;;;;;;;;;ACjCD;AAAe;AACf;AACA,CAAC;;;;;;;;;;;;;ACFD;AAAA;AAAe;AACf;AACA;AACA;AACA;AACA,CAAC;;AAEM;AACP;AACA;;;;;;;;;;;;;ACTA;AAAe;AACf;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;ACJD;AAAA;AAA8B;;AAEf;AACf,iCAAiC,+CAAM;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;ACbD;AAAe;AACf;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;;;;;;;;;;;;ACZD;AAAA;AAAoC;;AAErB;AACf;AACA;AACA;AACA;AACA;AACA;;AAEA,iCAAiC,kDAAS;;AAE1C;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;;;;;;;;;;;;ACnBD;AAAe;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;;;;;;;;;;;;ACbD;AAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA,2CAA2C;AAC3C;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;;;;;;;;;;;;ACnBD;AAAA;AAAA;AAAA;AAAA;AAA6B;AACQ;AACN;AACI;;AAEpB;AACf,WAAW,0CAAG,cAAc,+CAAM,OAAO,kDAAS;AAClD,uCAAuC,yDAAQ,iBAAiB,yDAAQ;AACxE,CAAC;;;;;;;;;;;;;ACRD;AAAA;AAAqC;;AAEtB;AACf,wCAAwC,0DAAS;AACjD,CAAC;;;;;;;;;;;;;ACJD;AAAe;AACf;AACA,CAAC;;;;;;;;;;;;;ACFD;AAAA;AAAA;AAAA;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,CAAC;;AAEM;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AClDA;AAAA;AAAwB;;AAET;AACf;AACA,uBAAuB,oDAAG,2CAA2C,SAAS;AAC9E,0DAA0D,SAAS;AACnE;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;;;;;;;;;;;;;ACdA;AAAA;AAA8B;;AAEf;AACf;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,yBAAyB,uDAAM;AAC/B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,yBAAyB,uDAAM;AAC/B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;;;;;;;;;;;;AChCD;AAAA;AAAoC;;AAErB;AACf,SAAS,0DAAS;AAClB,CAAC;;;;;;;;;;;;;ACJD;AAAA;AAAO;;;;;;;;;;;;;ACAP;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA8B;AACI;;AAElC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,sDAAsD;AACtD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,yGAAyG,iDAAQ;AACjH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,0CAA0C,kFAAkF,EAAE;;AAE9H;AACA;AACA,0CAA0C,gCAAgC,6DAA6D,EAAE;AACzI;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,wCAAwC,+BAA+B,EAAE;;AAEzE;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,0BAA0B,wBAAwB,EAAE;AACpD;;AAEA;AACA;AACA;;AAEA;AACA,2BAA2B,4CAAK;AAChC;;AAEA;AACA,gEAAgE,4CAAK;AACrE;;AAEA;AACA,+DAA+D,4CAAK;AACpE;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEO;AACP;AACA;;AAEO;AACP;AACA;;AAEO;AACP;AACA;;AAEO;AACP;AACA;;;;;;;;;;;;;AC7KA;AAAe;AACf;AACA,CAAC;;;;;;;;;;;;;ACFD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKgB;;;;;;;;;;;;;ACLhB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAqC;AACW;AACL;AAC2B;AAC9B;AACH;AACD;AACgB;;AAEpD,iBAAiB,aAAa;AAC9B,kBAAkB,cAAc;AAChC,mBAAmB,eAAe;AAClC,mBAAmB;;AAEnB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,WAAW,0DAAK,SAAS,kDAAK;AAC9B;AACA;;AAEA;AACA;AACA;AACA,yBAAyB,gEAAgE,EAAE;AAC3F,wBAAwB,mCAAmC;AAC3D;;AAEA;AACA;AACA;AACA,yBAAyB,gEAAgE,EAAE;AAC3F,wBAAwB,mCAAmC;AAC3D;;AAEA;AACA;AACA;AACA,uBAAuB,wCAAwC,EAAE;AACjE,wBAAwB,WAAW;AACnC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAU;AACV;;AAEA;AACA;AACA,UAAU,kDAAK,aAAa,kDAAK;AACjC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;;AAEO;AACP;AACA;;AAEO;AACP;AACA;;AAEe;AACf;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,kBAAkB,4DAAQ;AAC1B;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,2DAAM;AAChB;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,sCAAsC,eAAe,EAAE;;AAEvD;;AAEA;AACA,oCAAoC,mCAAmC,EAAE;AACzE,qCAAqC,wBAAwB,EAAE;;AAE/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,yCAAyC,gDAAgD,EAAE;AAC3F,uDAAuD,gCAAgC,EAAE;AACzF;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,kEAAW;;AAE/B;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW;AACX,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,YAAY,+DAAS;AACrB;AACA;AACA;AACA,WAAW;AACX;AACA;;AAEA;AACA;AACA;;AAEA;AACA,gBAAgB,2DAAM;AACtB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,kCAAkC,gHAAgH,EAAE;AACpJ,kCAAkC,gGAAgG,EAAE;AACpI,sCAAsC,uGAAuG,EAAE;AAC/I,uCAAuC,uGAAuG,EAAE;AAChJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA,MAAM,gEAAW,KAAK,iDAAU;AAChC;AACA;;AAEA;AACA,wBAAwB,kDAAK;AAC7B;;AAEA;AACA,eAAe,kDAAK;AACpB,wBAAwB,kDAAK,2EAA2E,kDAAK;AAC7G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,kDAAK;AAClD;AACA;AACA,kBAAkB,kDAAK,mBAAmB,kDAAK,iCAAiC,kDAAK;AACrF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,gBAAgB,2DAAM;AACtB;;AAEA;AACA;;AAEA,QAAQ,kDAAK;AACb;AACA;AACA,KAAK;AACL,iBAAiB,2DAAM,CAAC,kDAAK;AAC7B;AACA;AACA;AACA;AACA;;AAEA,MAAM,2DAAW,CAAC,kDAAK;AACvB;;AAEA,IAAI,iEAAa;AACjB,IAAI,+DAAS;AACb;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,2DAAO;AACb;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,uDAAuD;AACvD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,MAAM,iEAAa;AACnB,UAAU,kDAAK;AACf,YAAY,kDAAK;AACjB;AACA,6CAA6C,oBAAoB,EAAE,OAAO;AAC1E,OAAO;AACP,QAAQ,0DAAU,CAAC,kDAAK;AACxB;AACA;AACA;AACA;AACA,uDAAuD;AACvD;AACA;AACA;;AAEA;AACA,cAAc,kDAAK;AACnB,kBAAkB;AAClB;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,UAAU;AAC5B;AACA,wCAAwC;AACxC,wCAAwC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,2DAAO;AACb;;AAEA;AACA,cAAc,kDAAK;AACnB,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA,mCAAmC;AACnC,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA,gBAAgB,kDAAK;AACrB;AACA;AACA;AACA,aAAa;AACb,qCAAqC;AACrC,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,2DAAO;AACb;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;;AAEA;AACA,sEAAsE,4DAAQ;AAC9E;;AAEA;AACA,sEAAsE,4DAAQ;AAC9E;;AAEA;AACA,yEAAyE,4DAAQ;AACjF;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;AC5kBA;AAAe;AACf;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;ACJD;AAAe;AACf;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;ACJD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKoB;;;;;;;;;;;;;ACLpB;AAAA;AAAA;AAAmC;;AAE5B;AACP,EAAE,kDAAK;AACP;;AAEe;AACf,EAAE,kDAAK;AACP,EAAE,kDAAK;AACP,CAAC;;;;;;;;;;;;;ACTD;AAAA;AAAO;;;;;;;;;;;;;ACAP;AAAA;AAAA;AAA+B;AACC;;AAEhC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB,sDAAK;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,kBAAkB;AAClB,oBAAoB;AACpB;AACA;AACA;AACA,yBAAyB,sDAAK;AAC9B;AACA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;;AAEL;AACA;AACA;AACA,QAAQ,iDAAG,IAAI,yCAAG;AAClB,wBAAwB,yCAAG;;AAE3B;AACA;AACA,kBAAkB;AAClB,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW;AACX,gBAAgB;AAChB;AACA;AACA;AACA;AACA,iBAAiB;AACjB,iBAAiB,+BAA+B;AAChD;AACA;AACA;;AAEA;AACA;;AAEA;AACA,0CAA0C,iDAAG;AAC7C;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;;;;;;;;;;;;ACxHD;AAAe;AACf;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;ACJD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAyC;AACE;;;;;;;;;;;;;ACD3C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAO;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACLP;AAAA;AAAA;AAAA;AAAA;AAA8B;AACI;AACM;AACX;;AAE7B;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,4CAAK;AACpB;AACA;AACA;AACA,6CAA6C,4CAAM;AACnD,2CAA2C,4CAAM;AACjD,mBAAmB,iDAAG;AACtB,mBAAmB,iDAAG;AACtB;AACA,6CAA6C,4CAAM;AACnD,2CAA2C,4CAAM;;AAEjD,qCAAqC,oDAAI;;AAEzC;AACA;AACA,qCAAqC;AACrC,0CAA0C,iDAAG,YAAY,iDAAG;AAC5D;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,sEAAsE,yDAAQ;AAC9E;;AAEA;AACA,0EAA0E,yDAAQ;AAClF;;AAEA;AACA,wEAAwE,yDAAQ;AAChF;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;;;;;;;;;;;;ACtFD;AAAe;AACf;AACA,qCAAqC,0BAA0B;AAC/D;AACA,CAAC;;;;;;;;;;;;;ACJD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAuC;AACF;AACA;AACE;AACI;AACE;;;;;;;;;;;;;ACL7C;AAAe;AACf;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;ACJD;AAAA;AAAO;;AAEP;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,yEAAyE,8CAA8C;AACvH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,+DAA+D,qBAAqB,EAAE;;AAEtF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEe,kEAAG,EAAC;;;;;;;;;;;;;AC1EnB;AAAA;AAAwB;;AAET;AACf;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,sBAAsB,oDAAG;AACzB;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA,8CAA8C,aAAa,kCAAkC,EAAE,EAAE;AACjG,wDAAwD,8BAA8B,EAAE;AACxF;;AAEA;AACA,6BAA6B,iDAAiD,EAAE;AAChF,0BAA0B,2CAA2C,EAAE;AACvE,8BAA8B,uDAAuD,EAAE;AACvF,sBAAsB,cAAc,aAAa,EAAE;AACnD,+BAA+B,mCAAmC,aAAa,EAAE;AACjF,iCAAiC,oBAAoB,aAAa,EAAE;AACpE,yBAAyB,YAAY,aAAa;AAClD;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,SAAS,oDAAG;AACZ;;AAEA;AACA;AACA;;;;;;;;;;;;;ACxEA;AAAA;AAA6C;;AAE7C;;AAEA,YAAY,4CAAG;;AAEf;AACA;AACA;AACA;AACA;AACA,SAAS,2CAAM;AACf;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,0DAA0D,gBAAgB,EAAE;;AAE5E;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEe,kEAAG,EAAC;;;;;;;;;;;;;ACtCnB;AAAe;AACf;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;ACJD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA2C;;AAEpC;;AAEA;AACA;;AAEP;AACA;AACA;AACA,yBAAyB,IAAI;AAC7B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,0DAAM;AACN;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;;AAEA,0DAAM,WAAW,yDAAM;AACvB;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,0DAAM,WAAW,yDAAM;AACvB;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AClXA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA2C;AACyB;AACzB;;AAE3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,qBAAqB,6CAAG,OAAO,4DAAU;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,gDAAO;AACzC;AACA;;AAEe;AACf;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;;AAEA,0DAAM,uBAAuB,yDAAM,CAAC,+CAAK;AACzC;AACA,oBAAoB,kDAAQ,YAAY,kDAAQ;AAChD;AACA,GAAG;AACH;AACA,oBAAoB,gDAAM,YAAY,gDAAM;AAC5C;AACA,GAAG;AACH;AACA,iDAAiD,gDAAO;AACxD;AACA;AACA;AACA;AACA,eAAe,6CAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;AC5DD;AAAA;AAAe;AACf;AACA;AACA,CAAC;;AAEM;AACP;AACA;AACA;AACA;;;;;;;;;;;;;ACTA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAsD;AACE;AACJ;;;;;;;;;;;;;ACFpD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA2C;AACO;AACP;;AAE3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB,6CAAG,OAAO,4DAAU;AACzC;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;;AAEe;AACf;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;;AAEA,0DAAM,WAAW,yDAAM,CAAC,+CAAK;AAC7B;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,6CAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iCAAiC,gDAAO;AACxC;AACA;;AAEO;AACP;AACA;;AAEO;AACP;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,gBAAgB,gDAAO;AACvB;AACA;;AAEA,0DAAM,WAAW,yDAAM,CAAC,+CAAK;AAC7B;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;AC1HD;AAAA;AAAA;AAAO;AACA;;;;;;;;;;;;;ACDP;AAAe;AACf;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;ACJD;AAAA;AAAA;;AAEO;;;;;;;;;;;;;ACFP;AAAe;AACf;AACA,CAAC;;;;;;;;;;;;;ACFD;AAAA;AAAA;AAAA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,iBAAiB,OAAO;AACxB,2BAA2B,WAAW;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,iBAAiB,OAAO;AACxB,2BAA2B,WAAW;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC1CA;AAAe;AACf;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;ACJD;AAAe;AACf;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA,6CAA6C,OAAO;AACpD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,QAAQ;AACR;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;;AC1BA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAmE;AACrC;AACM;AACV;AACQ;AACA;AACR;;AAE1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA;AACA,kBAAkB,yDAAgB;AAClC;;AAEA;AACA;;AAEA;AACA;AACA,mBAAmB,uDAAM;AACzB,WAAW,yDAAQ;AACnB,WAAW,sDAAK;AAChB,KAAK;AACL,2BAA2B,kDAAS;AACpC;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU,qDAAI;AACd;AACA,KAAK;;AAEL;AACA,mDAAmD,OAAO;AAC1D,YAAY,yDAAQ;AACpB;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,+DAA+D;AAC/D;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,+DAA+D;AAC/D;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,OAAO;AACP,iEAAiE;AACjE;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,4FAA4F,yDAAQ,CAAC,4CAAK,YAAY,yDAAQ;AAC9H;;AAEA;AACA,2DAA2D,6CAAI;AAC/D;;AAEA;AACA,CAAC;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;AACP,EAAE,kDAAK;AACP,CAAC;;;;;;;;;;;;;ACTD;AAAA;AAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,IAAI,EAAE;AACpH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,+F;;;;;;;;;;;;ACnBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA2B;;AAE3B,UAAU,uDAAG;;AAEN;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACVP;AAAA,YAAY;AACZ,YAAY;AACZ;AACA;AACA;;AAEA;AACA,oCAAoC;AACpC;AACA,GAAG,gBAAgB;AACnB;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;;AAEpB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,YAAY,yCAAyC;AACrF;AACA;;AAEA;AACA;AACA;AACA,gCAAgC,YAAY,yCAAyC;AACrF;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A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AAQ;AACzB;AACA;AACA;AACA;;AAEA;AACA,oCAAoC,4DAAQ,QAAQ,6CAAC,EAAE,6CAAC;AACxD,0BAA0B,OAAO;AACjC;;AAEA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;;AAEA;AACA;;AAEA;AACA;AACA,yBAAyB,OAAO;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,yCAAyC;AACzC;AACA;AACA,yBAAyB,uDAAM;AAC/B,yBAAyB,uDAAM;AAC/B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,yCAAyC;AACzC;AACA,uBAAuB,uDAAM;AAC7B,uBAAuB,uDAAM;AAC7B;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;AACA,wEAAwE,yDAAQ;AAChF;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;;;;;;;;;;;;ACjHD;AAAA;AAAkC;;AAEnB;AACf;AACA,iBAAiB,yDAAQ;AACzB;AACA;;AAEA,6CAA6C,yDAAQ;AACrD;AACA;;AAEA;AACA,qCAAqC,OAAO;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,wEAAwE,yDAAQ;AAChF;;AAEA;AACA,sEAAsE,yDAAQ;AAC9E;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;;;;;;;;;;;;ACxDD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAqC;AACH;AACH;;AAExB;AACP;AACA;;AAEO;AACP;AACA;;AAEA;AACA;;AAEe;AACf;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,yDAAG;AAClB,gBAAgB,sDAAK;AACrB,cAAc,4DAAQ;;AAEtB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA,mBAAmB,gBAAgB;AACnC;;AAEA;AACA;AACA,OAAO;;AAEP,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,2CAA2C,OAAO;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;ACtJD;AAAA;AAAkC;;AAEnB;AACf,iBAAiB,yDAAQ;AACzB;AACA;AACA;;AAEA,mCAAmC,yDAAQ;;AAE3C;AACA,2CAA2C,OAAO;AAClD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,wEAAwE,yDAAQ;AAChF;;AAEA;AACA,iEAAiE,yDAAQ;AACzE;;AAEA;AACA,CAAC;;;;;;;;;;;;;ACxCD;AAAA;AAAkC;;AAEnB;AACf,iBAAiB,yDAAQ;AACzB;AACA;AACA;;AAEA,mCAAmC,yDAAQ;;AAE3C;AACA,2CAA2C,OAAO;AAClD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,wEAAwE,yDAAQ;AAChF;;AAEA;AACA,iEAAiE,yDAAQ;AACzE;;AAEA;AACA,CAAC;;;;;;;;;;;;;ACxCD;AAAA;AAAA;AAAA;AAAA;AAAuC;;AAEvC;AACO;AACA;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAEc;AACf,WAAW,0DAAY;AACvB;AACA;AACA;AACA;;;;;;;;;;;;;ACnBA;AAAA;AAA+C;;AAEhC;AACf,aAAa,iEAAa;AAC1B,CAAC;;;;;;;;;;;;;ACJD;AAAA;AACA;AACA;AACe;AACf,+FAA+F;AAC/F;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;ACbD;AAAe;AACf;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;;;;;;;;;;;;;ACjBD;AAAe;AACf;AACA;AACA;AACA,KAAK;AACL;AACA,CAAC;;;;;;;;;;;;;ACND;AAAA;AAAA;AAA+C;;AAExC;;AAEQ;AACf,UAAU,iEAAa;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,iEAAa,+BAA+B;AACxF,CAAC;;;;;;;;;;;;;ACfD;AAAA;AAA+C;;AAEhC;AACf,UAAU,iEAAa;AACvB;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;ACVD;AAAA;AAAA;AAAA;AACA;;AAEe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA,sDAAsD;;AAE/C;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC9CA;AAAA;AACe;AACf,iDAAiD,OAAO;AACxD;AACA,4BAA4B;AAC5B,qCAAqC,QAAQ;AAC7C,qCAAqC,oBAAoB;AACzD;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;ACVD;AAAA;AAAA;AAAqD;AACN;;AAEhC;AACf,uBAAuB,6BAA6B,EAAE;AACtD,oBAAoB,kCAAkC,EAAE;AACxD,oBAAoB,eAAe,EAAE;AACrC,oBAAoB,mCAAmC,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e;AACf;AACA,EAAE,0DAAM;AACR;AACA,CAAC;;;;;;;;;;;;;ACzED;AAAA;AAAA;AAAA;AAAA;AAAA;AAA+B;AACmB;AAC6C;AACtC;AACxB;;AAEjC;AACA;AACA;AACA;AACA,eAAe,yDAAK;AACpB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,mDAAU;AACd,GAAG;AACH;AACA,IAAI,mDAAU;AACd;AACA;AACA;AACA,QAAQ,oDAAW;AACnB,wBAAwB,gDAAO;AAC/B,yBAAyB,gDAAO;AAChC;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAU,+DAAS,WAAW,gDAAO,QAAQ,gDAAO;AACpD;AACA,iBAAiB,oEAAc;AAC/B;AACA,qBAAqB,oEAAc;AACnC,IAAI,+EAAyB;AAC7B,iBAAiB,+DAAS;AAC1B;AACA;AACA,kCAAkC,gDAAO;AACzC;AACA,uBAAuB,oDAAG;AAC1B;AACA,6BAA6B,gDAAO;AACpC;AACA,KAAK;AACL,8BAA8B,gDAAO;AACrC;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,oDAAG;AACpB,GAAG;AACH;AACA;AACA,EAAE,mDAAU;AACZ;AACA;;AAEA;AACA,EAAE,mDAAU;AACZ;;AAEA;AACA;AACA,EAAE,mDAAU;AACZ,MAAM,oDAAG,aAAa,gDAAO;AAC7B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEe;AACf;;AAEA;AACA;AACA,EAAE,0DAAM;;AAER;AACA;AACA;;AAEA;AACA,4CAA4C,OAAO;AACnD;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA,2EAA2E,QAAQ;AACnF;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;AClLD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAsD;;AAE/C;AACP,UAAU,sDAAK,8BAA8B,qDAAI;AACjD;;AAEO;AACP,0DAA0D,oDAAG;AAC7D,mBAAmB,oDAAG,mBAAmB,oDAAG,UAAU,oDAAG;AACzD;;AAEO;AACP;AACA;;AAEO;AACP;AACA;;AAEA;AACO;AACP;AACA;;AAEO;AACP;AACA;;AAEA;AACO;AACP,UAAU,qDAAI;AACd;AACA;;;;;;;;;;;;;AChCA;AAAA;AAAA;AAAA;AAA2F;AAC9D;AACI;;AAEjC;AACA;AACA;AACA;AACA;AACA,eAAe;;AAEf;AACA,UAAU,gDAAI;AACd;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAY,gDAAO,SAAS,gDAAO;AACnC,eAAe,oDAAG;AAClB,kCAAkC,oDAAG,mBAAmB,oDAAG,UAAU,oDAAG;AACxE;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,YAAY,gDAAO,SAAS,gDAAO;AACnC,eAAe,oDAAG;AAClB,gBAAgB,oDAAG;AACnB,gBAAgB,oDAAG;AACnB,OAAO,oDAAG;AACV;AACA;AACA;;AAEA;AACA,YAAY,gDAAO,SAAS,gDAAO;AACnC,eAAe,oDAAG;AAClB,mBAAmB,oDAAG;AACtB,mBAAmB,oDAAG;AACtB,UAAU,oDAAG;AACb,UAAU,sDAAK,CAAC,qDAAI;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAY,gDAAO,SAAS,gDAAO;AACnC;AACA,eAAe,oDAAG;AAClB,gBAAgB,oDAAG;AACnB,gBAAgB,oDAAG;AACnB,OAAO,oDAAG;AACV;AACA;;AAEA;AACA,YAAY,gDAAO,SAAS,gDAAO;AACnC,eAAe,oDAAG;AAClB,mBAAmB,oDAAG;AACtB,mBAAmB,oDAAG;AACtB,UAAU,oDAAG;AACb;AACA;AACA;AACA,UAAU,qDAAI;AACd,UAAU,qDAAI;AACd,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA;AACA,EAAE,0DAAM;;AAER;AACA;AACA;AACA;;AAEA;AACA,UAAU,iDAAQ;AAClB;AACA;AACA,aAAa,gDAAO;AACpB;AACA;AACA,YAAY,iDAAQ;AACpB;;AAEA,UAAU,sDAAK,SAAS,gDAAO,EAAE,qDAAI,KAAK,qDAAI,OAAO,gDAAO;AAC5D,CAAC;;;;;;;;;;;;;AC3ID;AAAA;AAAA;AAAA;AAAA;AAAA;AAA+E;AAC1C;AACoC;AAC7B;;AAE5C;AACO;AACP;AACA,kBAAkB,oDAAG;AACrB,kBAAkB,oDAAG;AACrB;AACA;AACA,8BAA8B,4CAAG;AACjC;AACA,GAAG;AACH;AACA;AACA,6DAA6D,4CAAG;AAChE;AACA,yBAAyB,iCAAiC;AAC1D,YAAY,+DAAS,0BAA0B,oDAAG,kBAAkB,oDAAG;AACvE;AACA;AACA;;AAEA;AACA;AACA,UAAU,+DAAS;AACnB,EAAE,+EAAyB;AAC3B,eAAe,qDAAI;AACnB,+CAA+C,4CAAG,GAAG,gDAAO,IAAI,4CAAG;AACnE;;AAEe;AACf,eAAe,4DAAQ;AACvB,eAAe,4DAAQ;AACvB,kBAAkB,4DAAQ;AAC1B;AACA;AACA,gBAAgB;;AAEhB;AACA;AACA,YAAY,gDAAO,UAAU,gDAAO;AACpC;;AAEA;AACA;AACA,4CAA4C,gDAAO;AACnD,+CAA+C,gDAAO;AACtD;AACA,aAAa,kEAAa,SAAS,gDAAO,UAAU,gDAAO;AAC3D;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA,sEAAsE,4DAAQ;AAC9E;;AAEA;AACA,sEAAsE,4DAAQ;AAC9E;;AAEA;AACA,yEAAyE,4DAAQ;AACjF;;AAEA;AACA,CAAC;;;;;;;;;;;;;ACvED;AAAA;AAAA;AAA8B;AACsC;;AAErD,wHAAI;AACnB,cAAc,aAAa,EAAE;AAC7B;AACA;AACA,IAAI,2CAAE,GAAG,+CAAM;AACf,CAAC,EAAC;;AAEF;AACA,uCAAuC,sBAAsB;AAC7D;AACA;AACA;AACA;AACA;AACA,YAAY;;AAEZ;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,gCAAgC,2CAAE,IAAI,2CAAE;AACxC,kBAAkB,oDAAG;AACrB,UAAU,oDAAG,SAAS,2CAAE,IAAI,gDAAO,GAAG;AACtC,6DAA6D,+CAAM,IAAI,+CAAM;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,sCAAsC,2CAAE,GAAG;AAClD,YAAY,oDAAG,oBAAoB,gDAAO,qBAAqB,gDAAO,CAAC;AACvE,YAAY,oDAAG,oBAAoB,gDAAO,qBAAqB,gDAAO;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA,uBAAuB;AACvB;AACA;AACA;;AAEA;AACA;AACA;AACA,0BAA0B,oDAAG;AAC7B,SAAS,oDAAG,sBAAsB,gDAAO;AACzC,QAAQ,qDAAI,EAAE,oDAAG,oBAAoB,oDAAG,UAAU,oDAAG;AACrD,YAAY,oDAAG,oBAAoB,oDAAG,UAAU,oDAAG;AACnD;AACA;AACA;;AAEA;AACA;AACA;AACA,sBAAsB,+CAAM;AAC5B,kBAAkB,2CAAE;AACpB;AACA,iBAAiB,2CAAE;AACnB,iBAAiB,2CAAE;AACnB,iBAAiB,2CAAE;AACnB;AACA,kBAAkB,2CAAE;AACpB,kBAAkB,2CAAE;AACpB,kBAAkB,2CAAE;AACpB,GAAG,UAAU,oDAAG,oBAAoB,gDAAO;AAC3C,mCAAmC,2CAAE,IAAI,2CAAE;AAC3C;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;;;;;;;;;;;;AC3FA;AAAA;AAA8B;;AAEf;AACf;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL,aAAa,gDAAI;AACjB;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;ACvBD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAwH;AAC9E;AACsB;AACtB;AACZ;;AAEf;AACf,WAAW,oDAAG;AACd,kBAAkB,gDAAO;AACzB;AACA,sBAAsB,oDAAG,OAAO,gDAAO,CAAC;;AAExC;AACA,IAAI,+DAAY;AAChB;;AAEA;AACA,WAAW,oDAAG,WAAW,oDAAG;AAC5B;;AAEA;AACA,kEAAkE;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,2CAAE,IAAI,2CAAE;AACxD;AACA;AACA;AACA;AACA;AACA,yBAAyB,8DAAU,oBAAoB,8DAAU;AACjE,yBAAyB,gDAAO;AAChC,yBAAyB,gDAAO;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,8DAAU;AACxC;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,+DAAS;AACtB,aAAa,+DAAS;;AAEtB;AACA;AACA;AACA,aAAa,oEAAc;AAC3B,eAAe,kEAAY;AAC3B;AACA;;AAEA;AACA;;AAEA;AACA;AACA,gBAAgB,oEAAc;AAC9B,YAAY,oEAAc;AAC1B,YAAY,oEAAc;AAC1B,IAAI,yEAAmB;;AAEvB;AACA;AACA,YAAY,kEAAY;AACxB,aAAa,kEAAY;AACzB,2BAA2B,kEAAY;;AAEvC;;AAEA,YAAY,qDAAI;AAChB,YAAY,oEAAc;AAC1B,IAAI,yEAAmB;AACvB,QAAQ,+DAAS;;AAEjB;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,gBAAgB,oDAAG,SAAS,2CAAE,IAAI,gDAAO;AACzC,oCAAoC,gDAAO;;AAE3C;;AAEA;AACA;AACA;AACA,sCAAsC,oDAAG,mBAAmB,gDAAO;AACnE;AACA,kBAAkB,2CAAE;AACpB,eAAe,oEAAc;AAC7B,MAAM,yEAAmB;AACzB,iBAAiB,+DAAS;AAC1B;AACA;;AAEA;AACA;AACA;AACA,mCAAmC,2CAAE;AACrC;AACA,+BAA+B;AAC/B,mCAAmC;AACnC,4BAA4B;AAC5B,gCAAgC;AAChC;AACA;;AAEA,SAAS,yDAAI,gEAAgE,2CAAE,WAAW,2CAAE;AAC5F,CAAC;;;;;;;;;;;;;ACrLD;AAAA;AAA2C;;AAE5B;AACf;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,+DAA+D,6DAAa;AAC5E,KAAK;AACL;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;ACnBD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAqC;AACA;AACM;AACS;AACrB;;AAEhB;AACf;AACA;AACA,qBAAqB,0DAAU;AAC/B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,mBAAmB,sDAAK;AACxB,0BAA0B,mEAAe;AACzC;AACA;AACA,UAAU,0DAAU;AACpB,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,OAAO;AAC5B;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;AACA,oCAAoC,+CAAM,GAAG,gDAAO,GAAG,+CAAM;AAC7D,oCAAoC,+CAAM,GAAG,gDAAO,GAAG,+CAAM;AAC7D;;;;;;;;;;;;;AClIA;AAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;AC1DD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAwC;AACH;AACJ;AACI;AACN;;AAE/B;;AAEA;AACA;;AAEe;;AAEf;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA,WAAW,oDAAG,cAAc,gDAAO;AACnC,UAAU,oDAAG,cAAc,gDAAO;AAClC,UAAU,oDAAG,cAAc,gDAAO;AAClC,gCAAgC;AAChC;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,uBAAuB,0DAAU;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,yCAAyC,OAAO;AAChD,kHAAkH,OAAO;AACzH;AACA,yBAAyB,yEAAyE;AAClG,gBAAgB,0EAA0E;AAC1F;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,gCAAgC,sDAAK;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,0DAAU;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,cAAc,wDAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;;ACvKA;AAAA;AAA0C;;AAE1C;AACA;AACA;AACA,iBAAiB;AACjB,iBAAiB;AACjB,iBAAiB;AACjB,yBAAyB;AACzB;;AAEA;AACA;AACA;AACe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAQ,8DAAU;AAClB;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;;AAEA;AACA;AACA;;AAEA,8BAA8B,OAAO;AACrC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,OAAO;AAC/C,SAAS;AACT;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,qCAAqC,QAAQ;AAC7C,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACpGA;AAAe;;AAEf;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;;;;;;;;;;;;ACXD;AAAe;AACf;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;ACJD;AAAA;AAAA;AAAA;AAAgE;AACd;AACN;;AAE5C;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;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CD;AACD;;AAE9B,cAAc,yDAAK;AACnB,kBAAkB,yDAAK;AACvB;AACA;AACA;AACA;;AAEA;AACA,SAAS,gDAAI;AACb,aAAa,gDAAI;AACjB,WAAW,gDAAI;AACf;AACA;AACA;AACA,GAAG;AACH;AACA,mEAAmE,gDAAI;AACvE,gBAAgB,oDAAG;AACnB;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEe,yEAAU,EAAC;;;;;;;;;;;;;ACjD1B;AAAA;AAA8B;;AAE9B;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,gDAAI;AACjB,WAAW,gDAAI;AACf,gBAAgB,gDAAI;AACpB,cAAc,gDAAI;AAClB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEe,2EAAY,EAAC;;;;;;;;;;;;;AC3B5B;AAAA;AAAgC;;AAEhC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,oCAAoC,qDAAI;AACxC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU,qDAAI;;AAEd;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEe,6EAAc,EAAC;;;;;;;;;;;;;ACnG9B;AAAA;AAAA;AAAA;AAA+B;AACD;;AAEf;AACf;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,4CAAG;AACpD;AACA;AACA;AACA,GAAG;AACH,UAAU,gDAAI;AACd;;;;;;;;;;;;;AC5CA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAsC;AACJ;AACD;AACI;AACI;AACF;AACA;AACF;;AAEtB;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM,0DAAM;AACZ;AACA;AACA;;AAEA;AACA,IAAI,0DAAM,0BAA0B,gDAAQ;AAC5C,WAAW,gDAAQ;AACnB;;AAEA;AACA,IAAI,0DAAM,0BAA0B,mDAAW;AAC/C,WAAW,mDAAW;AACtB;;AAEA;AACA,IAAI,0DAAM,0BAA0B,kDAAU;AAC9C,WAAW,kDAAU;AACrB;;AAEA;AACA,IAAI,0DAAM,0BAA0B,oDAAY;AAChD,WAAW,oDAAY;AACvB;;AAEA;AACA,kFAAkF,oDAAQ;AAC1F;;AAEA;AACA;AACA,qDAAqD,kDAAU,QAAQ,mDAAW;AAClF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;;;;;;;;;;;;AC5DD;AAAA;AAAA;AAAA;AAAgC;AACA;AACF;;AAE9B,gBAAgB,yDAAK;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS,gDAAI;AACb;AACA;AACA,GAAG;AACH;AACA;AACA,yBAAyB,gDAAI;AAC7B,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,gBAAgB,qDAAI;AACpB;AACA;;AAEe,2EAAY,EAAC;;;;;;;;;;;;;AC5C5B;AAAA;AAAe;AACf;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA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AY,oDAAG;AACf,YAAY,oDAAG;AACf;AACA;AACA,MAAM,sDAAK;AACX,MAAM,qDAAI;AACV;AACA;;AAEA;AACA;;AAEe;AACf,qCAAqC,gDAAO,cAAc,gDAAO,kCAAkC,gDAAO;;AAE1G;AACA,0CAA0C,gDAAO,mBAAmB,gDAAO;AAC3E,6BAA6B,gDAAO,oBAAoB,gDAAO;AAC/D;;AAEA;AACA,iDAAiD,gDAAO,mBAAmB,gDAAO;AAClF,6BAA6B,gDAAO,oBAAoB,gDAAO;AAC/D;;AAEA;AACA,CAAC;;;;;;;;;;;;;AC3ED;AAAA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA;AACA,GAAG;AACH;AACA;AACA,CAAC;;;;;;;;;;;;;ACpED;AAAA;AAAe;AACf;AACA;AACA;AACA,CAAC;;AAEM;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,yBAAyB,yBAAyB,EAAE;AACpD,sBAAsB,sBAAsB,EAAE;AAC9C,yBAAyB,yBAAyB,EAAE;AACpD,uBAAuB,uBAAuB,EAAE;AAChD,4BAA4B,4BAA4B,EAAE;AAC1D,0BAA0B,0BAA0B;AACpD;;;;;;;;;;;;;ACzBA;AAAA;AAAA;AAAO;AACP;AACA;;AAEO;AACP;AACA;AACA;;;;;;;;;;;;;ACPA;AAAA;AAAA;AAAO;;AAEA;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;ACfA;AAAA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;;;;;;;;;;;;ACnFD;AAAA;AAAO;AACP;AACA;;AAEe;AACf;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;ACRD;AAAe;AACf;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;ACND;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA,CAAC;;;;;;;;;;;;;ACXD;AAAe;AACf;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;;;;;;;;;;;;ACND;AAAe;AACf;AACA;AACA;AACA;AACA;AACA,oDAAoD,OAAO;AAC3D;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;;;;;;;;;;;;ACZD;AAAe;AACf;AACA;AACA;AACA,kDAAkD,OAAO;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;ACZD;AAAe;AACf;AACA;AACA;AACA,+CAA+C,QAAQ;AACvD;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;ACTD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAoC;AACF;AACY;AACF;AACZ;AACE;AACA;AACU;AACI;AACV;AACF;;AAErB;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,qBAAqB,QAAQ;AAC7B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS,iDAAU;AACnB,QAAQ,gDAAS;AACjB,aAAa,qDAAc;AAC3B,cAAc,sDAAe;AAC7B,OAAO,+CAAQ;AACf,QAAQ,gDAAS;AACjB,QAAQ,gDAAS;AACjB,aAAa,qDAAc;AAC3B,eAAe,uDAAgB;AAC/B,UAAU,kDAAW;AACrB,SAAS,kDAAU;AACnB;AACA;;;;;;;;;;;;;AC9EA;AAAe;AACf;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;;;;;;;;;;;;ACRD;AAAe;AACf;AACA;AACA,wBAAwB;AACxB,kBAAkB,kCAAkC;AACpD;AACA,GAAG;AACH;AACA,CAAC;;;;;;;;;;;;;ACRD;AAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC7BA;AAAe;AACf;AACA;AACA;AACA;AACA,GAAG;AACH,CAAC;;;;;;;;;;;;;ACND;AAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,CAAC;;;;;;;;;;;;;ACRD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAgD;AACU;AACV;AACW;AACF;AACL;AACF;AACR;AACY;AACO;AACJ;AACE;AACQ;AACF;AACI;;;;;;;;;;;;;ACdrE;AAAA;AAA2C;;AAE5B;AACf,4BAA4B,yDAAO,CAAC,+CAAK;;AAEzC;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;;AAEA;;AAEA;AACA,aAAa,cAAc;AAC3B;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa,kBAAkB;AAC/B,mBAAmB,cAAc;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,iBAAiB,cAAc;AAC/B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACrHA;AAAA;AAAA;AAAA;AAA0C;AACD;AACa;;AAEtD;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA,gBAAgB,yDAAY;;AAE5B;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,kCAAkC,yDAAY;AAC9C;AACA;AACA;AACA;AACA;;AAEA;AACA,wCAAwC,8DAAQ;AAChD;;AAEA;AACA;AACA;;AAEA;AACA,uEAAuE,4DAAQ;AAC/E;;AAEA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,wBAAwB,OAAO;AAC/B,UAAU,gEAAW;AACrB,wBAAwB,OAAO;AAC/B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC9EA;AAAA;AAAA;AAAmC;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEO;AACP;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,mBAAmB,OAAO;AAC1B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,mBAAmB,wCAAwC,KAAK,2DAAO;;AAEvE;AACA,aAAa,OAAO;;AAEpB;AACA;;AAEe;AACf;AACA;AACA,CAAC;;;;;;;;;;;;;ACrHD;AAAA;AAAA;AAA2C;AACC;;AAE7B;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,yDAAS;AACxC;AACA;;AAEA;AACA;AACA;AACA,QAAQ,gEAAW;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;;;;;;;;;;;;ACnDD;AAAA;AAAA;AAAwC;AACiB;;AAEzD;AACA,eAAe,UAAU;AACzB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEe;AACf;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,eAAe,OAAO;AACtB,yCAAyC,wDAAI;AAC7C;AACA;AACA;AACA;AACA;;AAEA,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,oCAAoC,oCAAoC,KAAK,EAAE,aAAa,iEAAa;AACzG;AACA;;AAEA;AACA;;AAEA;AACA,oCAAoC,8DAAQ;AAC5C;;AAEA;AACA,0CAA0C,8DAAQ;AAClD;;AAEA;AACA,CAAC;;;;;;;;;;;;;ACxED;AAAA;AAA0C;;AAE1C;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAgB;AAChB,gBAAgB;AAChB,aAAa;AACb,aAAa;AACb,aAAa;AACb,aAAa;AACb,gBAAgB;AAChB,aAAa;AACb;;AAEA,mCAAmC,wDAAI;;AAEvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB,QAAQ;AAC7B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACe;AACf;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;;;;;;;;;;;;AC5OD;AAAe;AACf;AACA;AACA;;AAEA,6BAA6B,OAAO;AACpC;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;AC7CD;AAAe;AACf;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;ACXD;AAAA;AAAA;AAAA;AAAA;AAAmC;AACE;AACI;AACa;;AAEvC;AACf,aAAa,oDAAQ;AACrB;AACA;AACA;AACA;AACA,qBAAqB,yDAAY;AACjC,mBAAmB,yDAAY;AAC/B,qBAAqB,yDAAY;AACjC,sBAAsB,yDAAY;AAClC,oBAAoB,yDAAY;;AAEhC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,iDAAS;AACxC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,sCAAsC,8DAAQ;AAC9C;;AAEA;AACA;AACA;;AAEA;AACA,4EAA4E,4DAAQ;AACpF;;AAEA;AACA;AACA;;AAEA;AACA,0EAA0E,4DAAQ;AAClF;;AAEA;AACA,4EAA4E,4DAAQ;AACpF;;AAEA;AACA,6EAA6E,4DAAQ;AACrF;;AAEA;AACA,2EAA2E,4DAAQ;AACnF;;AAEA;AACA,CAAC;;;;;;;;;;;;;AC7FD;AAAA;AAAA;AAAA;AAAoC;AACE;AACW;;AAElC;;AAEf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iDAAiD,OAAO;AACxD,sBAAsB,wDAAW;AACjC,aAAa,yDAAY;AACzB;AACA;AACA,KAAK;AACL,gCAAgC,kEAAa;AAC7C;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC,EAAE,gDAAG,CAAC,E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ACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,cAAc,oDAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO,yBAAyB,iDAAK;AAC9B,+BAA+B,uDAAW;;;;;;;;;;;;;ACtDjD;AAAe;AACf;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;ACJD;AAAA;AAAiC;;AAEjC;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;;AAEA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA,2BAA2B;AAC3B;AACA;AACA,wCAAwC;AACxC,2BAA2B;AAC3B;AACA,KAAK,OAAO;AACZ;AACA,cAAc,SAAS,0DAAM,SAAS;AACtC;AACA;AACA;;AAEA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,OAAO;AACnC;AACA,SAAS;AACT,CAAC;;;;;;;;;;;;;AC/DD;AAAA;AAAA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;ACzBD;AAAA;AAAA;AAAA;AAAA;AAAkC;AACY;;AAE9C;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc,aAAa,0DAAM,SAAS,GAAG,aAAa,0DAAM,SAAS;AACzE,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,gCAAgC,gCAAgC;AAChE,cAAc,sDAAsD,0DAAM,OAAO;AACjF,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,cAAc,qDAAqD,0DAAM,OAAO;AAChF,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc,aAAa,0DAAM,SAAS,GAAG,aAAa,0DAAM,SAAS;AACzE,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO,mDAAmD,kDAAQ;AAC3D,mDAAmD,kDAAQ;;;;;;;;;;;;;AC9DlE;AAAA;AAAA;AAAA;AAAmD;;AAEnD;AACA;AACA;AACA;;AAEO;AACP,+BAA+B,sDAAQ;AACvC;AACA;AACA;AACA;AACA;AACA,SAAS,6DAAS;AAClB;;AAEO;AACP,4BAA4B,sDAAQ;AACpC;AACA;AACA,iEAAiE,sDAAQ;AACzE;AACA,SAAS,6DAAS;AAClB;;;;;;;;;;;;;ACxBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA+B;AACJ;AACa;AACX;AACI;AACA;AACA;AACI;AACuB;;AAE7C;AACf;AACA,wCAAwC,4DAAQ;AAChD,0BAA0B,kDAAM;AAChC,+BAA+B,sDAAK,eAAe,+CAAG,IAAI,kDAAM;AAChE,qBAAqB,8CAAK,GAAG,+CAAG;AAChC,4BAA4B,gDAAI;AAChC,QAAQ,qEAAa,MAAM,uDAAW;AACtC,2BAA2B,sDAAY;AACvC,0FAA0F,kDAAM;AAChG,QAAQ,kDAAM;AACd,CAAC;;;;;;;;;;;;;ACrBD;AAAA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,CAAC;;;;;;;;;;;;;AC/DD;AAAA;AAAA;AAAA;AAA0C;;;;;;;;;;;;;ACA1C;AAAA;AACA;AACA;AACA;;AAEA;AACA;AACA,6BAA6B;AAC7B;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEe,mEAAI,EAAC;;;;;;;;;;;;;ACjIpB;AAAe;AACf;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;;;;;;;;;;;;ACdD;AAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;;;;;;;;;;;;ACnBD;AAAe;AACf;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;;AAEA;AACA,CAAC;;;;;;;;;;;;;ACfD;AAAA;AACA;AACA;AACA;AACe;AACf;AACA,CAAC;;;;;;;;;;;;;ACND;AAAA;AAA+B;;AAE/B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB,OAAO;AACxB,uBAAuB,yDAAK;AAC5B;AACA;;AAEA,gCAAgC;AAChC;;AAEe;AACf;;AAEA;AACA;AACA;AACA;;AAEA,aAAa,OAAO;AACpB;AACA,aAAa,OAAO;;AAEpB;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,mCAAmC,QAAQ;AAC3C,qBAAqB,qCAAqC;;AAE1D;AACA,CAAC;;;;;;;;;;;;;AChDD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAiD;AACQ;AACR;AACQ;AACJ;;;;;;;;;;;;;ACJrD;AAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;;;;;;;;;;;;ACtBD;AAAA;AAAe;AACf;AACA;AACA;AACA,CAAC;;AAED;AACA,wCAAwC;;AAExC;AACA;AACA,cAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,mDAAmD;AACnD,oDAAoD;AACpD;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mDAAmD;AACnD,oDAAoD;AACpD,GAAG;AACH;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,aAAa,OAAO;AACpB;AACA;;AAEA;AACA;;;;;;;;;;;;;ACnFA;AAAe;AACf,kDAAkD;;AAElD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,yCAAyC;AACzC,yCAAyC;AACzC,yCAAyC;AACzC,yCAAyC;AACzC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;AC1CD;AAAe;AACf;AACA;AACA,8CAA8C;AAC9C,GAAG;AACH;AACA,CAAC;;;;;;;;;;;;;ACND;AAAe;AACf;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;ACJD;AAAA;AAA6B;;AAEd;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,2BAA2B,gDAAI;AAC/B;AACA;AACA;AA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A;AAAA;AAAgC;AACoE;AACjE;AACD;AACJ;;AAE9B;;AAEO;AACP;AACA;;AAEA;AACA;AACA,qBAAqB,oBAAoB;AACzC,QAAQ,yDAAQ;AAChB;;AAEA;AACA;AACA;AACA,sBAAsB,oCAAoC;AAC1D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,kBAAkB;AACxC;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,YAAY,uDAAM;AAClB;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA,oBAAoB,0DAAgB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,wFAAwF,gEAAiB;AACzG;;AAEA;AACA,wCAAwC,0CAAG,SAAS,+CAAM;AAC1D;;AAEA;AACA,uCAAuC,4CAAK;AAC5C;;AAEA;AACA,mBAAmB,4CAAK,wBAAwB,+DAAgB;AAChE;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA;;;;;;;;;;;;;AC3HA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAsC;AACE;AACL;AACL;AACI;AACC;AACN;;AAE7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,oDAAQ;AAC7B;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEe;AACf,cAAc,yDAAS,eAAe,oDAAQ;;AAE9C;AACA,WAAW,wDAAI;AACf;;AAEA,SAAS,sDAAgB;AACzB;;AAEO;AACP,cAAc,oDAAO;;AAErB;AACA,WAAW,wDAAI;AACf;;AAEA,SAAS,sDAAgB;AACzB;;AAEO;AACP,cAAc,yDAAS;;AAEvB;AA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A;;AAEA,SAAS,yDAAS;AAClB;;AAEe;AACf,wBAAwB,+DAAW;;AAEnC;AACA,WAAW,wDAAI;AACf;;AAEA,SAAS,+CAAS;AAClB;;;;;;;;;;;;;AClCA;AAAA;AAAA;AAAA;AAAA;AAAgC;AACF;AACG;;AAElB;AACf;AACA;AACA;AACA;;AAEA;AACA,0BAA0B,uDAAM;AAChC;;AAEA;AACA,wCAAwC,4CAAK;AAC7C;;AAEA;AACA,uCAAuC,4CAAK;AAC5C;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,+CAAS;AAClB;;;;;;;;;;;;;ACvCA;AAAA;AAAA;AAAkC;AAC+E;;AAElG;AACf,aAAa,yDAAQ;AACrB;AACA,cAAc,iEAAe;AAC7B;AACA;AACA;AACA,4DAA4D,iEAAe;AAC3E,aAAa,8DAAY;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D,gEAAc;AAC1E;AACA;AACA;AACA;AACA,4DAA4D,gEAAc;AAC1E;AACA;AACA;AACA,SAAS,wDAAM;AACf,CAAC;;;;;;;;;;;;;AC5BD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA4C;AACsE;AACxE;AACd;AAC4B;AACvB;AACP;;AAE1B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEO;AACP,cAAc,2DAAU,CAAC,oDAAQ,EAAE,oDAAQ;AAC3C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAc,yDAAQ,cAAc,aAAa,EAAE;AACnD;AACA,eAAe,yDAAQ;AACvB;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP,wBAAwB,yDAAQ;AAChC;AACA;AA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CxDD;AAAe;AACf;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;ACLD;AAAA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEe;AACf;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;AC1ED;AAAA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEe;AACf;AACA,CAAC;;;;;;;;;;;;;ACZD;AAAA;AAAA;AAAA;AAAkC;AACA;AACC;;AAEnC,oBAAoB;;AAEpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAQ,gBAAgB;AACxB;AACA;AACA;AACA,KAAK;AACL,qBAAqB,gDAAS;AAC9B;AACA;;AAEA;AACA,QAAQ,iBAAiB;AACzB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,iBAAiB;AAC9B;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,gBAAgB;AAC7B;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,qBAAqB,gDAAS;AAC9B;AACA;;AAEA;AACA,aAAa,iBAAiB;AAC9B;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA;AACA,2BAA2B,eAAe,EAAE;AAC5C;AACA;;AAEA;AACA;AACA;;AAEA,2CAA2C,yDAAQ;;AAEnD,sGAAsG,OAAO;AAC7G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,4CAA4C,iBAAiB;AAC7D;AACA;AACA;AACA;AACA;AACA;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AAe;;AAEf,2DAA2D,OAAO;AAClE,wDAAwD,OAAO;AAC/D;AACA;AACA;AACA;;AAEA;AACA,CAAC;;;;;;;;;;;;;ACVD;AAAe;AACf;AACA,wBAAwB,mBAAmB,EAAE;AAC7C;AACA,CAAC;;;;;;;;;;;;;ACJD;AAAA;AAAA;AAAA;;AAEO;;AAEP;AACA;AACA;AACA,oBAAoB;AACpB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAY;AACZ,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,6CAA6C,OAAO;AACpD;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,0CAA0C,OAAO;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEe;AACf;;AAEA;AACA;AACA,6CAA6C,OAAO;AACpD,4BAA4B,OAAO;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB;AACA,CAAC;;AAEM;AACP;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;;;;;;;;;;;;AC1GA;AAAe;;AAEf,4DAA4D,SAAS;AACrE,4EAA4E,UAAU;AACtF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;;;;;;;;;;;;ACZD;AAAA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;AC3BD;AAAA;AACA;AACA;;AAEe;AACf;AACA,CAAC;;;;;;;;;;;;;ACND;AAAA;AACA;AACA;AACA;;AAEe;AACf;AACA,CAAC;;;;;;;;;;;;;ACPD;AAAA;AAAA;AAAkC;AACC;;AAEpB;AACf,6CAA6C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GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,8CAA8C;AAC9C,uDAAuD;AACvD;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,8BAA8B,sEAAsE;AACpG,8BAA8B;AAC9B,8BAA8B,oFAAoF;AAClH,iCAAiC;AACjC;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA,CAAC;;;;;;;;;;;;;AClDD;AAAA;AAAA;AAA8B;AACG;;AAEjC;AACA;AACA;;AAEA;AACA,aAAa,gDAAI;AACjB,WAAW,gDAAI;AACf;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,8BAA8B,4BAA4B;AAC1D,8BAA8B,4BAA4B;AAC1D,8BAA8B,4BAA4B,4FAA4F;AACtJ,eAAe,uDAAK,aAAa;AACjC;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA,CAAC;;;;;;;;;;;;;ACnDD;AAAA;AAAiC;;AAEjC;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,8BAA8B;AAC9B,8BAA8B;AAC9B,8BAA8B,oFAAoF,0EAA0E;AAC5L,8BAA8B;AAC9B,eAAe,uDAAK,aAAa;AACjC;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA,CAAC;;;;;;;;;;;;;ACtCD;AAAA;AAAiC;;AAEjC;AACA,oBAAoB,+CAAK;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEe;;AAEf;AACA,4BAA4B,+CAAK;AACjC;;AAEA;AACA;AACA;;AAEA;AACA,CAAC,OAAO,EAAC;;;;;;;;;;;;;ACvDT;AAAA;AAAA;AAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,uDAAuD;AACvD,8CAA8C;AAC9C;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,8BAA8B,sEAAsE;AACpG,8BAA8B,4BAA4B;AAC1D,8BAA8B;AAC9B,iCAAiC;AACjC;AACA;AACA;AACA;AACA;;AAEe;;AAEf;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC,IAAI,EAAC;;;;;;;;;;;;;AC5DN;AAAA;AAAA;AAAA;AAA8B;AACM;;AAE7B;AACP;AACA;AACA;;AAEA;AACA,aAAa,gDAAI;AACjB,WAAW,gDAAI;AACf;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,8BAA8B,4BAA4B;AAC1D,8BAA8B,kDAAkD;AAChF,8BAA8B,4BAA4B;AAC1D,eAAe,0DAAK,aAAa;AACjC;AACA;AACA;AACA;AACA;;AAEe;;AAEf;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC,IAAI,EAAC;;;;;;;;;;;;;AC5DN;AAAA;AAAA;AAAoC;;AAE7B;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,8BAA8B;AAC9B,8BAA8B;AAC9B,8BAA8B,kGAAkG;AAChI,8BAA8B;AAC9B,eAAe,0DAAK,aAAa;AACjC;AACA;AACA;AACA;AACA;;AAEe;;AAEf;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC,IAAI,EAAC;;;;;;;;;;;;;AChDN;AAAA;AAAA;AAAA;AAAmC;AACI;;AAEhC;AACP;AACA;AACA;AACA;;AAEA,oBAAoB,gDAAO;AAC3B;AACA;AACA;AACA;AACA;;AAEA,oBAAoB,gDAAO;AAC3B;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,uDAAuD;AACvD,6CAA6C;AAC7C;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,8BAA8B,sEAAsE;AACpG,8BAA8B;AAC9B,8BAA8B;AAC9B,iCAAiC;AACjC;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEe;;AAEf;AACA,wDAAwD,qDAAQ;AAChE;;AAEA;AACA;AACA;;AAEA;AACA,CAAC,MAAM,EAAC;;;;;;;;;;;;;ACvFR;AAAA;AAAA;AAAA;AAAmD;AACrB;AACQ;;AAEtC;AACA;AACA;AACA;;AAEA;AACA,aAAa,gDAAI;AACjB,WAAW,gDAAI;AACf;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,8BAA8B,4BAA4B;AAC1D,8BAA8B,kDAAkD;AAChF,8BAA8B,4BAA4B;AAC1D,eAAe,4DAAK,aAAa;AACjC;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEe;;AAEf;AACA,8DAA8D,iEAAc;AAC5E;;AAEA;AACA;AACA;;AAEA;AACA,CAAC,MAAM,EAAC;;;;;;;;;;;;;ACzER;AAAA;AAAA;AAA+C;AACT;;AAEtC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,8BAA8B;AAC9B,8BAA8B;AAC9B,8BAA8B,kGAAkG;AAChI,8BAA8B;AAC9B,eAAe,4DAAK,aAAa;AACjC;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEe;;AAEf;AACA,4DAA4D,6DAAY;AACxE;;AAEA;AACA;AACA;;AAEA;AACA,CAAC,MAAM,EAAC;;;;;;;;;;;;;AC7DR;AAAA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,8BAA8B,sEAAsE;AACpG,8BAA8B;AAC9B,0CAA0C;AAC1C;AACA;AACA;;AAEe;AACf;AACA,CAAC;;;;;;;;;;;;;AC9BD;AAAA;AAA8B;;AAE9B;AACA;AACA;;AAEA;AACA,aAAa,gDAAI;AACjB,WAAW,gDAAI;AACf;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA,CAAC;;;;;;;;;;;;;ACxBD;AAAA;AAAA;AAAA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,uDAAuD;AACvD,4DAA4D;AAC5D;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA,iDAAiD;AACjD;AACA,8BAA8B,sEAAsE;AACpG,8BAA8B;AAC9B,8BAA8B,wDAAwD;AACtF,8DAA8D;AAC9D;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,0BAA0B,4BAA4B,EAAE;AACxD,yBAAyB,2BAA2B,EAAE;AACtD,0BAA0B,4BAA4B,EAAE;AACxD,iDAAiD,mDAAmD;AACpG;;AAEO;AACP;AACA;;AAEO;AACP;AACA;;;;;;;;;;;;;ACvGA;AAAA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,gCAAgC,QAAQ;AACxC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,WAAW;AACxB;AACA,aAAa,OAAO;AACpB;AACA,iBAAiB,QAAQ;AACzB;AACA,aAAa,WAAW;AACxB;AACA;;AAEe;AACf;AACA,CAAC;;;;;;;;;;;;;AChED;AAAA;AAAA;AAAA;AAAsC;;AAE/B,oCAAoC,kDAAW;;AAEtD;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEe;;AAEf;AACA;AACA;;AAEA;;AAEA;AACA;;;;;;;;;;;;;ACnCA;AAAA;AAAA;AAAA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,8BAA8B,sEAAsE;AACpG,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA,CAAC;;AAEM;AACP;AACA;;AAEO;AACP;AACA;;;;;;;;;;;;;ACpDA;AAAe;AACf;AACA,CAAC;;;;;;;;;;;;;ACFD;AAAe;AACf;AACA,CAAC;;;;;;;;;;;;;ACFD;AAAA;AAAA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CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAEc;AACf,WAAW,0DAAY;AACvB;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC1BA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAkH;AAC1D;AACJ;AACF;;;;;;;;;;;;;ACHlD;AAAA;AAAA;AAA6C;;AAEtC;;AAEP;AACA;AACA;;AAEA;AACA;AACA,MAAM,mEAAS;;AAEA,wEAAS,EAAC;;;;;;;;;;;;;ACZzB;AAAA;AAAA;AAA4C;AACA;;AAE5C;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAM,kEAAQ,CAAC,0DAAY;;AAEZ,uEAAQ,EAAC;;;;;;;;;;;;;ACZxB;AAAA;AAAA;AAWiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAU;AACV;;AAEe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,iDAAS,cAAc,yDAAS;AACxE,iBAAiB,8CAAM;AACvB;AACA;AACA;AACA,SAAS;AACT;AACA,wCAAwC,kDAAU,cAAc,0DAAU;AAC1E,iBAAiB,+CAAO;AACxB;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,+BAA+B,kBAAkB;AACjD;AACA,KAAK;AACL;AACA;AACA,+BAA+B,kBAAkB;AACjD;AACA,KAAK;AACL;AACA;AACA,+BAA+B,kBAAkB;AACjD;AACA,KAAK;AACL;AACA;AACA,+BAA+B,kBAAkB;AACjD;AACA;AACA;AACA;;AAEA,YAAY,4BAA4B;AACxC;AACA;AACA,kCAAkC;;AAElC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,iBAAiB,+CAAO,OAAO,wDAAQ;AACvC;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,aAAa,kDAAU,OAAO,wDAAQ;AACtC;;AAEA;AACA;AACA,gCAAgC,4DAAY,MAAM,oDAAY;AAC9D,aAAa,oDAAY,OAAO,wDAAQ,WAAW,wDAAQ;AAC3D;;AAEA;AACA;AACA;;AAEA;AACA,aAAa,kDAAU,OAAO,wDAAQ;AACtC;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,iBAAiB,8CAAM,OAAO,uDAAO;AACrC;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,aAAa,iDAAS,OAAO,uDAAO;AACpC;;AAEA;AACA;AACA,gCAAgC,2DAAW,MAAM,mDAAW;AAC5D,aAAa,mDAAW,OAAO,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uEAAQ;AAChB;AACA;AACA;;AAEA,aAAa,+DAAU;AACvB,CAAC;;;;;;;;;;;;;ACzCD;AAAA;AAAA;AAAA;AAAA;AAA+E;AACxC;AACD;AACK;;AAE3C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,iBAAiB,8DAAS,uCAAuC,sEAAoB,GAAG,uDAAW;AACnG;AACA,sEAAsE,4DAAU;AAChF;AACA;AACA,CAAC;;;;;;;;;;;;;AC7ED;AAAA;AAAuC;;AAEvC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA;AACA,iBAAiB,8DAAS;AAC1B;AACA,CAAC;;;;;;;;;;;;;AC3CD;AAAA;AAAwC;;AAExC;AACA;AACA,IAAI,yDAAI;AACR;AACA;;AAEA;AACA;AACA,IAAI,yDAAI;AACR;AACA;;AAEe;AACf;;AAEA;AACA;AACA;AACA;AACA,QAAQ,wDAAG;AACX,CAAC;;;;;;;;;;;;;ACtBD;AAAA;AAAuC;;AAEvC;AACA;AACA,IAAI,wDAAG;AACP;AACA;;AAEA;AACA;AACA,IAAI,wDAAG;AACP;AACA;;AAEe;AACf;;AAEA;AACA;AACA;AACA;AACA,QAAQ,wDAAG;AACX,CAAC;;;;;;;;;;;;;ACtBD;AAAA;AAAuC;;AAEvC;AACA;AACA;AACA,IAAI,wDAAG;AACP;AACA;;AAEe;AACf;;AAEA;AACA;AACA,QAAQ,wDAAG;AACX,CAAC;;;;;;;;;;;;;ACfD;AAAA;AAAkC;;AAEnB;AACf;AACA;AACA,kBAAkB,cAAc;AAChC,eAAe,mBAAmB,6BAA6B;;AAE/D;AACA,qBAAqB,wDAAG;AACxB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL,GAAG;AACH,CAAC;;;;;;;;;;;;;ACzBD;AAAA;AAAA;AAAqC;AACC;;AAEvB;AACf,2CAA2C,4DAAO;;AAElD,qFAAqF,OAAO;AAC5F,4FAA4F,OAAO;AACnG;AACA;AACA;AACA;AACA;;AAEA,aAAa,oDAAU;AACvB,CAAC;;;;;;;;;;;;;ACfD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAuC;AACC;AACU;AACR;AACM;AACR;AACI;AACF;AACN;AACQ;AACA;AACM;AACA;AACR;AACU;AACZ;AACU;AACE;AACV;AACJ;;AAEtC;;AAEO;AACP;AACA;AACA;AACA;AACA;;AAEe;AACf,SAAS,8DAAS;AAClB;;AAEO;AACP;AACA;;AAEA,0BAA0B,sDAAS;;AAEnC;AACA;AACA,UAAU,mDAAiB;AAC3B,aAAa,sDAAoB;AACjC,UAAU,kDAAiB;AAC3B,SAAS,iDAAgB;AACzB,aAAa,sDAAoB;AACjC,cAAc,uDAAqB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,8CAAa;AACnB,QAAQ,gDAAe;AACvB,aAAa,qDAAoB;AACjC,SAAS,kDAAgB;AACzB,cAAc,uDAAqB;AACnC,QAAQ,iDAAe;AACvB,aAAa,sDAAoB;AACjC,UAAU,kDAAiB;AAC3B,SAAS,kDAAgB;AACzB,SAAS,iDAAgB;AACzB,YAAY,oDAAmB;AAC/B,QAAQ,gDAAe;AACvB,OAAO,gDAAc;AACrB;;;;;;;;;;;;;ACnEA;AAAA;AAAA;AAA+B;AACqD;;AAErE;AACf;AACA,kCAAkC,gEAAiB;AACnD,qBAAqB,8CAAK,GAAG,6DAAc;AAC3C,aAAa,sDAAK,eAAe,6DAAc;AAC/C,QAAQ,gEAAiB;AACzB,CAAC;;;;;;;;;;;;;ACTD;AAAA;AAAsC;;AAEvB;AACf;;AAEA,+JAA+J,OAAO;AACtK,wHAAwH,OAAO;AAC/H;AACA;AACA;AACA;AACA;;AAEA,QAAQ,QAAQ;AAChB;AACA;;AAEA,aAAa,oDAAU;AACvB,CAAC;;;;;;;;;;;;;AClBD;AAAA;AAA6C;;AAE7C;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA,oCAAoC,iDAAI,GAAG,gDAAG;AAC9C;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEe;AACf;;AAEA;AACA,QAAQ,wDAAG;AACX;AACA,CAAC;;;;;;;;;;;;;AC/BD;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA,CAAC;;;;;;;;;;;;;ACVD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAqC;AACG;;AAExC,cAAc,4DAAQ;AACtB;;AAEO;AACA;AACA;AACA;AACA;AACA;AACA;;AAEQ;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,CAAC;;AAEM;AACP;AACA,0DAA0D;AAC1D;AACA;;AAEO;AACP;AACA,0DAA0D;AAC1D;AACA;;AAEO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,sDAAK;;AAEpB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,2CAA2C;AAC3C,sCAAsC,wDAAO;;AAE7C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,wDAAwD;AACxD;AACA,0DAA0D;AAC1D;AACA,IAAI,wDAAO;AACX;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,wCAAwC;AACxC;;AAEA;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;;;;;;;;;;;;;ACxJA;AAAA;AAAA;AAAA;AAAsC;AACA;AACM;;AAE7B;AACf;AACA;;AAEA,6CAA6C,6DAAQ;;AAErD,qFAAqF,OAAO;AAC5F,+GAA+G,OAAO;AACtH;AACA;AACA;AACA,QAAQ,4DAAQ,qCAAqC,wDAAG;AACxD;AACA;AACA;;AAEA,aAAa,oDAAU;AACvB,CAAC;;;;;;;;;;;;;ACrBD;AAAA;AAAA;AAAA;AAAyC;AACH;AACM;;AAE7B;AACf;AACA;;AAEA,6CAA6C,gEAAW;;AAExD,yFAAyF,OAAO;AAChG,8DAA8D,OAAO;AACrE;AACA,yFAAyF,wDAAG,uCAAuC,OAAO;AAC1I;AACA,YAAY,4DAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,aAAa,oDAAU;AACvB,CAAC;;;;;;;;;;;;;ACzBD;AAAA;AAAuC;;AAEvC,gBAAgB,sDAAS;;AAEV;AACf;AACA,CAAC;;;;;;;;;;;;;ACND;AAAA;AAAA;AAAA;AAAA;AAAA;AAA+E;AAC5C;AACD;AACI;AACK;;AAE3C;AACA;AACA;AACA;AACA;AACA,kBAAkB,0DAAK;AACvB,oDAAoD,0DAAK;AACzD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,kBAAkB,0DAAK;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,kBAAkB,0DAAK;AACvB;AACA;AACA,6EAA6E,0DAAK;AAClF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,wDAAG;AACtB;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEe;AACf,yCAAyC,sEAAoB,GAAG,uDAAW;AAC3E;AACA;AACA;AACA;AACA,+CAA+C,4DAAU;AACzD;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;AC/ED;AAAA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;ACvBD;AAAA;AAAsC;;AAEtC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA,qBAAqB,4DAAU;AAC/B;AACA,CAAC;;;;;;;;;;;;;ACnBD;AAAA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;ACvBD;AAAA;AAAA;AAA6C;AACD;;AAE7B;AACf;AACA;AACA,YAAY,uDAAK;;AAEjB,2DAA2D,OAAO;AAClE,8DAA8D,OAAO;AACrE;AACA,sBAAsB,wDAAG;AACzB,QAAQ,4DAAQ;AAChB;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA,aAAa,oDAAU;AACvB,CAAC;;;;;;;;;;;;;ACvBD;AAAA;AAAA;AAAuC;;AAEvC;AACA;AACA;AACA,mBAAmB,wDAAG;AACtB;;AAEA;AACA;AACA;AACA;AACA;AACA,wCAAwC,OAAO;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mBAAmB,wDAAG;AACtB;;AAEA;AACA;AACA;AACA;AACA;AACA,oBAAoB,yBAAyB,2BAA2B,OAAO;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEe;AACf;;AAEA;;AAEA;AACA,gBAAgB,wDAAG;AACnB,wCAAwC,OAAO;AAC/C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAEM;AACP;;AAEA;AACA,mBAAmB,wDAAG;AACtB,2CAA2C;AAC3C,GAAG;;AAEH;AACA,WAAW,wDAAG;AACd;AACA;;;;;;;;;;;;;AChFA;AAAA;AAAA;AAAA;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AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA,GAAG;;AAEH;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;;AAEL;;AAEA;AACA;AACA;;;;;;;;;;;;;AC7IA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAgD;;AAEzC;AACP;AACA,cAAc,8CAAK;AACnB;AACA;AACA;AACA;AACA,EAAE,8CAAK;AACP,EAAE,8CAAK;AACP;AACA;;AAEO;AACP;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA,0CAA0C;;AAE1C;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEO;AACP,UAAU,8CAAK;AACf;;AAEA;AACA,4BAA4B,8CAAK;AACjC;AACA,iDAAiD,gDAAO;AACxD,mDAAmD,gDAAO;AAC1D,aAAa,8CAAK;AAClB;AACA;AACA;;;;;;;;;;;;;ACvKA;AAAA;AAAA;AACA,gBAAgB;AAChB;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,yBAAyB,gBAAgB,QAAQ;;AAEjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEe,2EAAY,EAAC;;;;;;;;;;;;;AC5O5B;AAAe;AACf;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;ACJD;AAAA;AAAA;AAAA;AAA6C;;;;;;;;;;;;;ACA7C;AAAA;AAAA;AAAO;AACP;AACA;;AAEO;AACP;AACA;;;;;;;;;;;;;ACNA;AAAA;AAAA;AAAA;AAAkC;AACe;AACN;;AAE5B;AACf,UAAU,wCAAM;AAChB,UAAU,wCAAM;AAChB;;AAEA;AACA,eAAe,gDAAO;AACtB,0CAA0C,gDAAO,IAAI,gDAAO,6BAA6B,gDAAO,IAAI,gDAAO;AAC3G;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,iEAAiE,yDAAQ;AACzE;;AAEA;AACA,iEAAiE,yDAAQ;AACzE;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;;;;;;;;;;;;AC/CD;AAAe;AACf;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;ACJD;AAAA;AAAe;AACf;AACA;AACA;AACA;;;;;;;;;;;;;ACJA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA0C;AACwC;;;;;;;;;;;;;ACDlF;AAAA;AAAA;AAAmC;;AAE5B;AACP,EAAE,kDAAK;AACP;;AAEe;AACf,EAAE,kDAAK;AACP,EAAE,kDAAK;AACP,CAAC;;;;;;;;;;;;;ACTD;AAAA;AAAA;AAAA;AAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEO;;AAEP;;AAEe;AACf;AACA;AACA;;;;;;;;;;;;;AClDA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAqC;AACW;AACD;AACuB;AAC9B;AACH;AACF;AACgB;AACC;;AAEpD;AACA;AACA,UAAU,kDAAK,aAAa,kDAAK;AACjC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,wBAAwB,sDAAQ;AAChC;;AAEA;AACA,UAAU,kDAAK,WAAW,kDAAK,0BAA0B,kDAAK;AAC9D;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,8DAAe;AACnC,kBAAkB,4DAAQ;AAC1B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA,uBAAuB,sDAAQ;AAC/B;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA,+CAA+C,uDAAS;AACxD;;AAEA;AACA;AACA,oEAAoE,uDAAS;AAC7E;;AAEA;AACA;AACA;;AAEA;AACA;AACA,sCAAsC,kCAAkC,EAAE;AAC1E,mDAAmD,gCAAgC,EAAE;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B,kBAAkB,4BAA4B,SAAS,uDAAS,sCAAsC;AACtG;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,MAAM,gEAAW,KAAK,iDAAS;AAC/B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAY,0DAAK;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,MAAM,+DAAS;AACf;AACA;;AAEA,IAAI,2DAAO;AACX;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY,2DAAM,CAAC,kDAAK;AACxB,YAAY,0DAAK;AACjB,aAAa,kDAAK;AAClB,aAAa,kDAAK;;AAElB,IAAI,2DAAW,CAAC,kDAAK;AACrB,IAAI,iEAAa;AACjB;AACA,IAAI,+DAAS;AACb;;AAEA;AACA,MAAM,2DAAO;AACb;AACA,iBAAiB,kDAAK,oBAAoB,kDAAK;AAC/C;AACA;AACA,sEAAsE,0DAAK;AAC3E;;AAEA;AACA;AACA,MAAM,0DAAU,CAAC,kDAAK;AACtB,MAAM,2DAAO;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,0DAAK;AAClB;AACA,qBAAqB,kDAAK;AAC1B;;AAEA,IAAI,2DAAO;AACX,sBAAsB,2DAAM;AAC5B,SAAS,2DAAM;AACf;;AAEA;AACA;AACA,kBAAkB,kDAAK;AACvB;AACA,qCAAqC,kDAAK;AAC1C;;AAEA,IAAI,iEAAa;AACjB,eAAe,OAAO;AACtB,0BAA0B,0DAAK;AAC/B;AACA;AACA;AACA;;AAEA;;AAEA;AACA,6DAA6D,sBAAsB,EAAE;AACrF,MAAM,+DAAS;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA,kBAAkB,kDAAK;AACvB;;AAEA,IAAI,2DAAO;AACX;AACA;AACA,eAAe,OAAO;AACtB,0BAA0B,0DAAK;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,kBAAkB,kDAAK;AACvB;;AAEA,IAAI,iEAAa;AACjB;AACA,yCAAyC,oBAAoB,EAAE;AAC/D,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,2DAAM;AACtB;AACA;AACA;AACA;;AAEA;AACA,0EAA0E,4DAAQ;AAClF;;AAEA;AACA,sEAAsE,4DAAQ;AAC9E;;AAEA;AACA,yEAAyE,4DAAQ;AACjF;;AAEA;AACA,sEAAsE,4DAAQ;AAC9E;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;;;;;;;;;;;;AClaD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAO;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA,eAAe,+WAA+W,oBAAoB,sMAAsM,oBAAoB,sBAAsB,oBAAoB,MAAM,oBAAoB;AAChrB,uBAAuB;AACvB,oBAAoB;;;;;;;;;;;;;ACf3B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA0C;AACjB;AACD;AACC;AACA;AACK;AACL;AACE;AACC;AACJ;AACD;AACC;AACC;AACA;AACC;AACH;AACM;AACE;AACP;AACG;AACC;AACF;AACD;AACU;AACN;AACJ;AACD;AACO;AACN;AACK;AACH;AACH;;;;;;;;;;;;AC/BxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,mBAAO,CAAC,+DAAgB;AACpC,SAAS,mBAAO,CAAC,yDAAa;AAC9B,aAAa,mBAAO,CAAC,uEAAiB;AACtC,UAAU,mBAAO,CAAC,2DAAc;AAChC,QAAQ,mBAAO,CAAC,uDAAY;AAC5B,WAAW,mBAAO,CAAC,6DAAe;AAClC;;;;;;;;;;;;AC7BA,WAAW,mBAAO,CAAC,mDAAQ;;AAE3B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACtEA,WAAW,mBAAO,CAAC,mDAAQ;AAC3B,SAAS,mBAAO,CAAC,+CAAM;AACvB,eAAe,mBAAO,CAAC,yEAAmB;;AAE1C;;AAEA;AACA,+CAA+C,8BAA8B,EAAE;AAC/E;AACA,iCAAiC,UAAU,EAAE;;AAE7C;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;;AAEH;;AAEA;AACA;AACA,GAAG;AACH,gDAAgD;AAChD;;AAEA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;ACpDa;;AAEb,QAAQ,mBAAO,CAAC,uDAAU;AAC1B,eAAe,mBAAO,CAAC,yEAAmB;AAC1C,WAAW,mBAAO,CAAC,mDAAQ;AAC3B,SAAS,mB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A;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,UAAU;AACV;;AAEA;AACA;AACA;;;;;;;;;;;;ACrEA;;AAEA;AACA;AACA;;;;;;;;;;;;ACJA;;AAEA,oBAAoB,mBAAO,CAAC,iFAAkB;;AAE9C;;AAEA;AACA,uBAAuB,KAAK;AAC5B;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA,iBAAiB,uBAAuB;AACxC;AACA;AACA;AACA,OAAO,8BAA8B,GAAG,8BAA8B;AACtE;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;;;;;;;;;;;;ACxDA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,UAAU;AACV;;;;;;;;;;;;AC/BA,WAAW,mBAAO,CAAC,oDAAS;;AAE5B;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,cAAc,EAAE;AAC3C;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mC;;AAEA;AACA;;;;;;;;;;;;ACpCA,mBAAmB,mBAAO,CAAC,6EAAkB;AAC7C,mBAAmB,mBAAO,CAAC,6EAAkB;AAC7C,mBAAmB,mBAAO,CAAC,2EAAiB;;AAE5C;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;ACrCA,WAAW,mBAAO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AAc;;AAEtC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;;;;;;;;;;;AClEA,QAAQ,mBAAO,CAAC,oDAAU;AAC1B,WAAW,mBAAO,CAAC,gDAAQ;;AAE3B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA,2BAA2B,YAAY;AACvC;AACA;;;;;;;;;;;;;ACrCa;;AAEb,QAAQ,mBAAO,CAAC,oDAAU;;AAE1B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,oCAAoC,+BAA+B,EAAE;AACrE,oCAAoC,+BAA+B,EAAE;AACrE;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,oCAAoC,wBAAwB,EAAE;;AAE9D;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA,oCAAoC,sBAAsB,EAAE;;AAE5D;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACvEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACvDA,QAAQ,mBAAO,CAAC,oDAAU;AAC1B,WAAW,mBAAO,CAAC,gDAAQ;AAC3B,YAAY,mBAAO,CAAC,wDAAY;;AAEhC;AACA;AACA;;AAEA;AACA;AACA;;AAEA,qBAAqB,mCAAmC,aAAa;;AAErE;AACA,kBAAkB,WAAW;AAC7B;AACA,GAAG;;AAEH;AACA,0BAA0B;AAC1B,GAAG;;AAEH;AACA;AACA,uBAAuB,eAAe;AACtC;AACA,uBAAuB,iBAAiB;AACxC;AACA,KAAK;AACL,GAAG;;AAEH;AACA;;;;;;;;;;;;ACjCA;;AAEA;;AAEA,IAAI,IAA6B;AACjC;AACA,eAAe,mBAAO,CAAC,kDAAU;AACjC,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;;;;;;;;;;;AChBA,QAAQ,mBAAO,CAAC,oDAAU;AAC1B,YAAY,mBAAO,CAAC,wDAAY;AAChC,WAAW,mBAAO,CAAC,0DAAa;;AAEhC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,yCAAyC,wCAAwC;AACjF,yCAAyC,wCAAwC;AACjF;AACA,sCAAsC,OAAO;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,oBAAoB,uBAAuB;AAC3C;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,yBAAyB,wBAAwB;AACjD,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH,4DAA4D,mBAAmB,EAAE;AACjF;;AAEA;AACA;AACA,GAAG;;AAEH,UAAU;AACV;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;;;;;;;;;;;;;ACrHa;;AAEb,QAAQ,mBAAO,CAAC,oDAAU;AAC1B,cAAc,mBAAO,CAAC,sDAAW;AACjC,gBAAgB,mBAAO,CAAC,0DAAa;AACrC,WAAW,mBAAO,CAAC,sDAAQ;AAC3B,qBAAqB,mBAAO,CAAC,gDAAQ;AACrC,wBAAwB,mBAAO,CAAC,8EAAuB;AACvD,uBAAuB,mBAAO,CAAC,gDAAQ;AACvC,mBAAmB,mBAAO,CAAC,kEAAiB;AAC5C,wBAAwB,mBAAO,CAAC,8EAAuB;AACvD,uBAAuB,mBAAO,CAAC,0EAAqB;AACpD,YAAY,mBAAO,CAAC,wDAAS;AAC7B,eAAe,mBAAO,CAAC,8DAAY;AACnC,WAAW,mBAAO,CAAC,gDAAQ;AAC3B,YAAY,mBAAO,CAAC,wDAAY;;AAEhC;;AAEA;AACA;AACA;AACA;AACA,6CAA6C,4BAA4B,EAAE;AAC3E,2CAA2C,8BAA8B,EAAE;AAC3E,2CAA2C,kCAAkC,EAAE;AAC/E,GAAG;AACH;;AAEA;AACA,iDAAiD,2BAA2B,EAAE;AAC9E,iDAAiD,oBAAoB,EAAE;AACvE,iDAAiD,gBAAgB,EAAE;AACnE,iDAAiD,qBAAqB,EAAE;AACxE,iDAAiD,kCAAkC,EAAE;AACrF,iDAAiD,2BAA2B,EAAE;AAC9E,iDAAiD,qBAAqB,EAAE;AACxE,iDAAiD,yBAAyB,EAAE;AAC5E,iDAAiD,mBAAmB,EAAE;AACtE,iDAAiD,qBAAqB,EAAE;AACxE,iDAAiD,2BAA2B,EAAE;AAC9E,iDAAiD,kBAAkB,EAAE;AACrE,iDAAiD,sBAAsB,EAAE;AACzE,iDAAiD,sBAAsB,EAAE;AACzE,iDAAiD,UAAU,EAAE;AAC7D,iDAAiD,oBAAoB,EAAE;AACvE,iDAAiD,4BAA4B,EAAE;AAC/E,iDAAiD,aAAa,EAAE;AAChE,iDAAiD,sBAAsB,EAAE;AACzE,iDAAiD,sBAAsB,EAAE;AACzE,iDAAiD,mBAAmB,EAAE;AACtE,iDAAiD,yBAAyB,EAAE;AAC5E,iDAAiD,0BAA0B,EAAE;AAC7E,iDAAiD,mBAAmB,EAAE;AACtE,iDAAiD,yBAAyB,EAAE;AAC5E,iDAAiD,kCAAkC,EAAE;AACrF,iDAAiD,iBAAiB,EAAE;AACpE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA,qBAAqB;AACrB;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,mCAAmC;AACxD;;AAEA,uBAAuB;AACvB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,oCAAoC,wBAAwB,EAAE;AAC9D;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,2BAA2B,gBAAgB;AAC3C,2BAA2B,gBAAgB;AAC3C,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,GAAG;AAC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AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,wBAAwB,EAAE;AACjE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA,sBAAsB,eAAe;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,2BAA2B;AACpD;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,2BAA2B;AAC9C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,uBAAuB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;;;;;;;;;;;ACzFA,QAAQ,mBAAO,CAAC,qDAAW;;AAE3B;;AAEA;AACA,eAAe;AACf;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,4BAA4B;AACtD;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACpDA,QAAQ,mBAAO,CAAC,qDAAW;;AAE3B;;AAEA;AACA;AACA;AACA;AACA,cAAc;AACd,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,GAAG,oBAAoB;;AAE9B;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;;;;;;;;;;;;AC1BA,QAAQ,mBAAO,CAAC,qDAAW;AAC3B,YAAY,mBAAO,CAAC,yDAAa;;AAEjC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,iBAAiB,YAAY,aAAa;AAClE,wCAAwC,kBAAkB,EAAE;;AAE5D;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,8BAA8B,oCAAoC;AAClE,OAAO;;AAEP;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACxEa;;AAEb,QAAQ,mBAAO,CAAC,qDAAW;;AAE3B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,qBAAqB;AACtC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,uCAAuC,UAAU,EAAE;AACnD;AACA;AACA,cAAc;AACd,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,oDAAoD,UAAU,EAAE;;AAEhE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;;;;;;;;;;;;AClEa;;AAEb,QAAQ,mBAAO,CAAC,qDAAW;AAC3B,gBAAgB,mBAAO,CAAC,kEAAc;AACtC,iBAAiB,mBAAO,CAAC,oEAAe;AACxC,mBAAmB,mBAAO,CAAC,wEAAiB;AAC5C,sBAAsB,mBAAO,CAAC,gFAAqB;AACnD,6BAA6B,mBAAO,CAAC,8FAA4B;AACjE,YAAY,mBAAO,CAAC,yDAAa;AACjC,WAAW,mBAAO,CAAC,iDAAS;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,+BAA+B,cAAc;AAC7C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;;;;;;;;;;;;;AC9Ea;;AAEb,QAAQ,mBAAO,CAAC,qDAAW;;AAE3B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,sDAAsD,uBAAuB,EAAE;AAC/E,uDAAuD,WAAW,EAAE;;AAEpE;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,qDAAqD,uBAAuB,EAAE;AAC9E;;AAEA;AACA;;;;;;;;;;;;;ACrCa;;AAEb,QAAQ,mBAAO,CAAC,qDAAW;;AAE3B;;AAEA;AACA,wCAAwC,sBAAsB;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,sBAAsB;AACxD,8BAA8B,EAAE;AAChC;AACA;AACA;AACA,yCAAyC,0BAA0B;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,kDAAkD,sBAAsB,EAAE;AAC1E;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACzHA,QAAQ,mBAAO,CAAC,qDAAW;AAC3B,iBAAiB,mBAAO,CAAC,kEAAc;AACvC,uBAAuB,mBAAO,CAAC,gFAAqB;AACpD,WAAW,mBAAO,CAAC,sDAAQ;;AAE3B;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;;;;;;;;;;;AC3EA,QAAQ,mBAAO,CAAC,qDAAW;AAC3B,WAAW,mBAAO,CAAC,iDAAS;;AAE5B;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,sDAAsD,iBAAiB,EAAE;AACzE;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;ACxDA,QAAQ,mBAAO,CAAC,oDAAU;;AAE1B;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,UAAU;AACV;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;;AAEA;AACA;;;;;;;;;;;;;ACrFa;;AAEb,QAAQ,mBAAO,CAAC,qDAAW;AAC3B,YAAY,mBAAO,CAAC,yDAAa;AACjC,WAAW,mBAAO,CAAC,iDAAS;;AAE5B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,SAAS;AACT;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf,cAAc;AACd;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,uCAAuC,eAAe,EAAE;AACxD;AACA,wDAAwD,SAAS;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH,UAAU;AACV;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,sDAAsD,kBAAkB,EAAE;AAC1E;AACA,KAAK;AACL,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA,0CAA0C,WAAW,EAAE;AACvD;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,0CAA0C;AAC1C,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,yCAAyC;AACzC,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;;AClaa;;AAEb,QAAQ,mBAAO,CAAC,qDAAW;AAC3B,WAAW,mBAAO,CAAC,iDAAS;AAC5B,gBAAgB,mBAAO,CAAC,qDAAM;;AAE9B;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA,oDAAoD,yBAAyB,EAAE;AAC/E;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;;;;;;;;;;;;;;AC5Ba;;AAEb,QAAQ,mBAAO,CAAC,qDAAW;AAC3B,YAAY,mBAAO,CAAC,yDAAa;AACjC,YAAY,mBAAO,CAAC,qDAAQ;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,kBAAkB;;AAEvC;AACA;AACA;AACA,qBAAqB;;AAErB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB,0BAA0B;AAC1B;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA,GAAG;AACH;;;;;;;;;;;;;ACxFa;;AAEb,eAAe,mBAAO,CAAC,qDAAQ;AAC/B;AACA,mBAAmB,mBAAO,CAAC,uEAAiB;AAC5C,qBAAqB,mBAAO,CAAC,2EAAmB;;AAEhD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD;AAClD,wCAAwC;AACxC,4CAA4C;AAC5C;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;;AC/Ca;;AAEb,QAAQ,mBAAO,CAAC,qDAAW;AAC3B,mBAAmB,mBAAO,CAAC,uEAAiB;AAC5C,YAAY,mBAAO,CAAC,qDAAQ;AAC5B,eAAe,mBAAO,CAAC,qDAAQ;AAC/B,eAAe,mBAAO,CAAC,yDAAa;AACpC,gBAAgB,mBAAO,CAAC,yDAAa;AACrC,eAAe,mBAAO,CAAC,iDAAS;;AAEhC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH,6CAA6C,uBAAuB,EAAE;AACtE;;AAEA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;;AAEA;AACA,4CAA4C,0BAA0B,EAAE;AACxE;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACzOa;;AAEb,QAAQ,mBAAO,CAAC,qDAAW;;AAE3B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA,wBAAwB;AACxB;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC9DA;;AAEa;;AAEb,QAAQ,mBAAO,CAAC,oDAAU;AAC1B,YAAY,mBAAO,CAAC,wDAAY;;AAEhC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,kCAAkC,EAAE;AACxE;AACA,oDAAoD;AACpD;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;;AAEA;AACA,8BAA8B,+BAA+B;AAC7D;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;;AAEA;AACA,0CAA0C,KAAK;AAC/C,KAAK,oBAAoB;AACzB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,UAAU;AACV;;AAEA;AACA;AACA;AACA;AACA;AACA,4DAA4D,WAAW,EAAE;AACzE;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gDAAgD,uBAAuB,EAAE;AACzE;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA,mDAAmD,uBAAuB,EAAE;;AAE5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,iCAAiC,yBAAyB,EAAE;AAC5D;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;AC7OA;;;;;;;;;;;;;ACAa;;AAEb,gBAAgB,mBAAO,CAAC,2DAAa;AACrC,iBAAiB,mBAAO,CAAC,6DAAc;AACvC,cAAc,mBAAO,CAAC,uDAAW;AACjC,cAAc,mBAAO,CAAC,uDAAW;AACjC,cAAc,mBAAO,CAAC,uDAAW;;;;;;;;;;;;;ACNpB;;AAEb,aAAa,mBAAO,CAAC,wEAAqB;AAC1C,eAAe,mBAAO,CAAC,6DAAU;;AAEjC;;AAEA;AACA;;AAEA;AACA,iBAAiB,oBAAoB;AACrC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iBAAiB,iBAAiB;AAClC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,oBAAoB;AACvC;;AAEA;;AAEA,mBAAmB,oBAAoB;AACvC;AACA,GAAG;AACH;;AAEA,mBAAmB,oBAAoB;AACvC;;AAEA,mBAAmB,oBAAoB;AACvC;AACA;AACA;;;;;;;;;;;;;AChEa;;AAEb,aAAa,mBAAO,CAAC,wEAAqB;;AAE1C;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,SAAS;AAC1B;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,QAAQ,gBAAgB;AACxB;AACA;AACA;;AAEA;AACA,QAAQ,wBAAwB;AAChC;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,QAAQ,WAAW;AACnB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;AC5Ia;;AAEb,aAAa,mBAAO,CAAC,wEAAqB;AAC1C,eAAe,mBAAO,CAAC,6DAAU;;AAEjC,YAAY,mBAAO,CAAC,uDAAS;AAC7B,aAAa,mBAAO,CAAC,yDAAU;;AAE/B;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,uBAAuB;AACxC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,mBAAmB;AACtC;;AAEA;AACA;;AAEA;AACA;AACA,mCAAmC,mBAAmB;AACtD;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,iBAAiB,uBAAuB;AACxC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,qCAAqC,QAAQ;AAC7C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;;AC7Ia;;AAEb,aAAa,mBAAO,CAAC,wEAAqB;AAC1C,eAAe,mBAAO,CAAC,6DAAU;;AAEjC,aAAa,mBAAO,CAAC,yDAAU;AAC/B,UAAU,mBAAO,CAAC,mDAAO;;AAEzB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,kBAAkB,2BAA2B;AAC7C,kBAAkB,2BAA2B;AAC7C,kBAAkB,2BAA2B;AAC7C;AACA,GAAG;AACH;AACA,kBAAkB,2BAA2B;AAC7C,kBAAkB,2BAA2B;AAC7C,kBAAkB,2BAA2B;AAC7C;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;ACrDa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,iBAAiB,QAAQ;AACzB,mBAAmB,SAAS;AAC5B;AACA;AACA;AACA,mBAAmB,SAAS;AAC5B;AACA;AACA;AACA;;AAEA,iBAAiB,QAAQ;AACzB,mBAAmB,SAAS;AAC5B;AACA;AACA;AACA,mBAAmB,SAAS;AAC5B;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,iBAAiB,OAAO;AACxB,oBAAoB,QAAQ;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB,oBAAoB,QAAQ;AAC5B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB,QAAQ;AACzB,mBAAmB,SAAS;AAC5B;AACA;AACA;AACA,mBAAmB,SAAS;AAC5B;AACA;AACA;AACA;AACA,iBAAiB,SAAS;AAC1B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB,QAAQ;AACzB,mBAAmB,SAAS;AAC5B;AACA;AACA;AACA,mBAAmB,SAAS;AAC5B;AACA;AACA;AACA;AACA,iBAAiB,SAAS;AAC1B;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA,mBAAmB,qBAAqB;AACxC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,kBAAkB,SAAS;AAC3B;AACA;AACA;AACA,kBAAkB,QAAQ;AAC1B;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB,yBAAyB;AAC1C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,iBAAiB,UAAU;AAC3B;AACA;AACA;;;;;;;;;;;;AC/PA,kEAAoB,mBAAO,CAAC,+EAAqB;AACjD,aAAa,mBAAO,CAAC,wEAAmB;;AAExC,SAAS,mBAAO,CAAC,yDAAU;;AAE3B;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;;;;;;;;;;;;ACzCA,uDAAS,mBAAO,CAAC,6CAAO;AACxB,kBAAkB,mBAAO,CAAC,2DAAc;AACxC;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,mBAAO,CAAC,2EAAiB;AACtC,kBAAkB,mBAAO,CAAC,0DAAa;AACvC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;;;;;;;;;;;;ACnKA,kBAAkB,mBAAO,CAAC,0DAAa;AACvC;AACA;AACA;AACA,SAAS,mBAAO,CAAC,6CAAO;AACxB;AACA,kBAAkB,mBAAO,CAAC,2DAAc;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,wBAAwB,WAAW;AACnC;AACA,mBAAmB,yBAAyB;AAC5C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,iBAAiB,mBAAmB;AACpC;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;;;;;;;;;;;;;ACxGa;;AAEb;;AAEA,mBAAmB,mBAAO,CAAC,6DAAiB;AAC5C,iBAAiB,mBAAO,CAAC,uEAAkB;AAC3C,gBAAgB,mBAAO,CAAC,gDAAS;AACjC,iBAAiB,mBAAO,CAAC,6EAAkB;AAC3C,kBAAkB,mBAAO,CAAC,yEAAmB;;AAE7C;AACA,cAAc,mBAAO,CAAC,uEAAe;AACrC,iBAAiB,mBAAO,CAAC,6EAAkB;;;;;;;;;;;;;ACZ9B;;AAEb,SAAS,mBAAO,CAAC,6CAAO;AACxB,YAAY,mBAAO,CAAC,+DAAU;AAC9B;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB,gBAAgB;AACjC;AACA,sCAAsC,QAAQ;AAC9C;AACA;AACA;;AAEA;AACA;AACA,iBAAiB,OAAO;AACxB,mBAAmB,iBAAiB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,8BAA8B,QAAQ;AACtC;AACA,mBAAmB,wBAAwB;AAC3C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;;AAEA;AACA,uBAAuB,QAAQ;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mBAAmB,SAAS;AAC5B;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,QAAQ;AAC3B;;AAEA;AACA;AACA,qBAAqB,SAAS;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,SAAS;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,SAAS;AAC1B;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB,WAAW;AAC5B,mBAAmB,UAAU;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;;;;;;;;;;;;;ACvXa;;AAEb,YAAY,mBAAO,CAAC,+DAAU;AAC9B,SAAS,mBAAO,CAAC,6CAAO;AACxB,eAAe,mBAAO,CAAC,6DAAU;AACjC,WAAW,mBAAO,CAAC,kEAAQ;;AAE3B;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;;AC/aa;;AAEb;;AAEA,aAAa,mBAAO,CAAC,kEAAQ;AAC7B,cAAc,mBAAO,CAAC,oEAAS;AAC/B,aAAa,mBAAO,CAAC,kEAAQ;AAC7B,gBAAgB,mBAAO,CAAC,wEAAW;;;;;;;;;;;;;ACPtB;;AAEb,SAAS,mBAAO,CAAC,6CAAO;AACxB,eAAe,mBAAO,CAAC,6DAAU;AACjC,WAAW,mBAAO,CAAC,kEAAQ;;AAE3B,YAAY,mBAAO,CAAC,+DAAU;;AAE9B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe;AACf,uCAAuC;AACvC,eAAe;;AAEf,qBAAqB,iBAAiB;AACtC;;AAEA,+BAA+B,QAAQ;AACvC;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;ACjLa;;AAEb,YAAY,mBAAO,CAAC,+DAAU;AAC9B,SAAS,mBAAO,CAAC,6CAAO;AACxB,eAAe,mBAAO,CAAC,6DAAU;AACjC,WAAW,mBAAO,CAAC,kEAAQ;;AAE3B;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,2DAA2D;AAC3D;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK,eAAe;AACpB,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB,mBAAmB;AACpC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iBAAiB,WAAW;AAC5B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,SAAS;AAC5B;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;;;;;;;;;;ACx6Ba;;AAEb;;AAEA,WAAW,mBAAO,CAAC,mDAAS;AAC5B,YAAY,mBAAO,CAAC,oEAAS;AAC7B,YAAY,mBAAO,CAAC,8DAAS;;AAE7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA,QAAQ,mBAAO,CAAC,8FAAyB;AACzC,CAAC;AACD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;AC7MY;;AAEb,SAAS,mBAAO,CAAC,6CAAO;AACxB,eAAe,mBAAO,CAAC,4DAAW;AAClC,YAAY,mBAAO,CAAC,+DAAU;AAC9B,aAAa,mBAAO,CAAC,iEAAW;AAChC,WAAW,mBAAO,CAAC,gDAAS;AAC5B;;AAEA,cAAc,mBAAO,CAAC,6DAAO;AAC7B,gBAAgB,mBAAO,CAAC,yEAAa;;AAErC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,eAAe;;AAEf;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA,oBAAoB,MAAM;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,0BAA0B,2CAA2C;AACrE;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AChPa;;AAEb,SAAS,mBAAO,CAAC,6CAAO;AACxB,YAAY,mBAAO,CAAC,+DAAU;AAC9B;;AAEA;AACA;AACA;AACA;;AAEA,kBAAkB,sBAAsB;AACxC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;;AAEA;AACA,YAAY;AACZ;AACA,YAAY;AACZ;AACA,YAAY;;AAEZ,UAAU;AACV;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;;;;;;;;;;ACrHa;;AAEb,SAAS,mBAAO,CAAC,6CAAO;;AAExB,YAAY,mBAAO,CAAC,+DAAU;AAC9B;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,cAAc;AAC9C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACrIa;;AAEb,WAAW,mBAAO,CAAC,mDAAS;AAC5B,aAAa,mBAAO,CAAC,iEAAW;AAChC,YAAY,mBAAO,CAAC,+DAAU;AAC9B;AACA;AACA,cAAc,mBAAO,CAAC,gEAAO;AAC7B,gBAAgB,mBAAO,CAAC,4EAAa;;AAErC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,UAAU,aAAa;AACvB,UAAU,qBAAqB;AAC/B,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,iCAAiC;AAC9D;;AAEA;AACA,UAAU,MAAM;AAChB,UAAU,uBAAuB;AACjC,UAAU,2BAA2B;AACrC,YAAY,QAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB,sBAAsB;AACvC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;;ACrHa;;AAEb,YAAY,mBAAO,CAAC,+DAAU;AAC9B;AACA;AACA;;AAEA;AACA,UAAU,MAAM;AAChB,UAAU,OAAO;AACjB;AACA,UAAU,YAAY;AACtB,UAAU,MAAM;AAChB,UAAU,YAAY;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,6BAA6B,WAAW;AACxC;;AAEA;AACA;AACA;AACA,6BAA6B,iBAAiB;AAC9C;;AAEA;AACA;AACA;;AAEA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;AACA,CAAC;;AAED;AACA;AACA,CAAC;;AAED;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;;;;;;;;;;;;AC9Fa;;AAEb,SAAS,mBAAO,CAAC,6CAAO;AACxB,YAAY,mBAAO,CAAC,+DAAU;AAC9B;AACA;AACA;;AAEA;AACA,UAAU,MAAM;AAChB,UAAU,oBAAoB;AAC9B,UAAU,mBAAmB;AAC7B,UAAU,gBAAgB;AAC1B,UAAU,aAAa;AACvB,UAAU,aAAa;AACvB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,CAAC;;AAED;AACA;AACA,CAAC;;AAED;AACA;AACA,CAAC;;AAED;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;;;;;;;;;;;AChEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC3wBa;;AAEb;AACA,SAAS,mBAAO,CAAC,6CAAO;AACxB,gBAAgB,mBAAO,CAAC,wEAAqB;AAC7C,eAAe,mBAAO,CAAC,wFAA2B;;AAElD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,iBAAiB,gBAAgB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;ACrHA;AAAA;AAAA;AACA;AACA;AACA;;AAEA;;AAEe;AACf;AACA;AACA,iFAAiF;AACjF;AACA;;AAEA;AACA;;;;;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC,KAA4D;AAC7D,CAAC,SACgC;AACjC,CAAC,4BAA4B;;AAE7B;AACA;AACA,CAAC;AACD;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,iBAAiB;AAC5B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,kBAAkB,IAAI;;AAEtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,mCAAmC;AAC9C;AACA;AACA;AACA;AACA,uEAAuE,IAAI;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,UAAU;AACrB,YAAY;AACZ;AACA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,iBAAiB,qBAAqB;AACtC;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,kBAAkB,mBAAmB;AACrC;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA,kBAAkB;AAClB;AACA,KAAK,oBAAoB;AACzB;AACA;;AAEA;AACA;AACA;AACA;;AAEA,+CAA+C;AAC/C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA,IAAI;AACJ;AACA,qBAAqB,wBAAwB;AAC7C;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB,YAAY;AACZ;AACA;AACA;AACA;AACA,EAAE;AACF;;AAEA;AACA;AACA;;AAEA,8CAA8C,cAAc;;AAE5D,CAAC;;;;;;;;;;;;;ACzdD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEa;;AAEb;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB,sBAAsB;AACvC;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA,cAAc;AACd;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA,mBAAmB,SAAS;AAC5B;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA,iCAAiC,QAAQ;AACzC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mBAAmB,iBAAiB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,OAAO;AACP;AACA,sCAAsC,QAAQ;AAC9C;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;;AAEA;AACA,QAAQ,yBAAyB;AACjC;AACA;AACA;;AAEA;AACA;AACA,iBAAiB,gBAAgB;AACjC;AACA;AACA;AACA;;;;;;;;;;;;AC7bA,aAAa,mBAAO,CAAC,wDAAa;AAClC,UAAU,mBAAO,CAAC,8CAAQ;;AAE1B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAU;AACV;;AAEA;;;;;;;;;;;;AC5CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,+BAA+B;AAC3C;AACA;AACA;AACA;;AAEA,UAAU,mBAAO,CAAC,mDAAO;;AAEzB;AACA;AACA,QAAQ,mBAAO,CAAC,uDAAY;AAC5B,OAAO,mBAAO,CAAC,2DAAW;AAC1B;AACA;;;;;;;;;;;;ACrCA,QAAQ,mBAAO,CAAC,wDAAW;;AAE3B;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;;;;;;;;;;;AC1BA,QAAQ,mBAAO,CAAC,wDAAW;;AAE3B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;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CA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,oCAAoC,cAAc,EAAE;AACpD;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,2CAA2C;AAC3C;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,6BAA6B;AAC3C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACvJa;;AAEb,QAAQ,mBAAO,CAAC,uDAAU;;AAE1B;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,oEAAoE,WAAW;AAC/E;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;;AAGA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,kCAAkC,oCAAoC;AACtE;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA,YAAY,eAAe;AAC3B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,qBAAqB,EAAE;AAClE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,qBAAqB,EAAE;AAClE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA,kBAAkB,eAAe;AACjC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;ACnhBA;AACA;AACA,SAAS,mBAAO,CAAC,qDAAS;AAC1B,WAAW,mBAAO,CAAC,yDAAW;AAC9B;;;;;;;;;;;;ACJA,QAAQ,mBAAO,CAAC,uDAAU;AAC1B,YAAY,mBAAO,CAAC,qDAAS;;AAE7B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;A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;;AAE/B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACjJa;;AAEb,eAAe,mBAAO,CAAC,yDAAS;AAChC,iBAAiB,mBAAO,CAAC,6DAAW;AACpC,iBAAiB,mBAAO,CAAC,6DAAW;AACpC,iBAAiB,mBAAO,CAAC,6DAAW;AACpC,iBAAiB,mBAAO,CAAC,6DAAW;;;;;;;;;;;;;ACNvB;;AAEb,YAAY,mBAAO,CAAC,0DAAU;AAC9B,aAAa,mBAAO,CAAC,4DAAW;AAChC,gBAAgB,mBAAO,CAAC,+DAAU;;AAElC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,iBAAiB,QAAQ;AACzB;;AAEA,OAAO,cAAc;AACrB;;AAEA;AACA;AACA;AACA;AACA;;AAEA,aAAa,cAAc;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACzEa;;AAEb,YAAY,mBAAO,CAAC,0DAAU;AAC9B,aAAa,mBAAO,CAAC,yDAAO;;AAE5B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;AC5Ba;;AAEb,YAAY,mBAAO,CAAC,0DAAU;AAC9B,aAAa,mBAAO,CAAC,4DAAW;AAChC,gBAAgB,mBAAO,CAAC,+DAAU;AAClC,aAAa,mBAAO,CAAC,wEAAqB;;AAE1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,iBAAiB,QAAQ;AACzB;AACA,QAAQ,cAAc;AACtB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa,cAAc;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACxGa;;AAEb,YAAY,mBAAO,CAAC,0DAAU;;AAE9B,aAAa,mBAAO,CAAC,yDAAO;;AAE5B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AClCa;;AAEb,YAAY,mBAAO,CAAC,0DAAU;AAC9B,aAAa,mBAAO,CAAC,4DAAW;AAChC,aAAa,mBAAO,CAAC,wEAAqB;;AAE1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,iBAAiB,QAAQ;AACzB;AACA,QAAQ,cAAc;AACtB,8CAA8C;AAC9C;AACA,0BAA0B;AAC1B;AACA,gDAAgD;AAChD;AACA,0BAA0B;AAC1B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iBAAiB,cAAc;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mCAAmC;AACnC,mCAAmC;;AAEnC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mCAAmC;AACnC,mCAAmC;;AAEnC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mCAAmC;;AAEnC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mCAAmC;;AAEnC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,oCAAoC;AACpC;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,oCAAoC;AACpC;;AAEA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACzUa;;AAEb,YAAY,mBAAO,CAAC,0DAAU;AAC9B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;;;;;;;;;;AChDa;;AAEb,aAAa,mBAAO,CAAC,wEAAqB;AAC1C,eAAe,mBAAO,CAAC,6DAAU;;AAEjC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,gBAAgB;AACrC;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,iBAAiB,gBAAgB;AACjC;AACA;AACA,GAAG;AACH,eAAe,gBAAgB;AAC/B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB,gBAAgB;AACjC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB,gBAAgB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,4BAA4B,gBAAgB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,wBAAwB,gBAAgB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACrRa;;AAEb,WAAW,mBAAO,CAAC,mDAAS;AAC5B,YAAY,mBAAO,CAAC,wFAA2B;AAC/C,aAAa,mBAAO,CAAC,wEAAqB;;AAE1C;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,iBAAiB,mBAAmB;AACpC;AACA;AACA;;AAEA;AACA;AACA,wCAAwC;AACxC;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AChHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,QAAQ,WAAW;;AAEnB;AACA;AACA;AACA,QAAQ,WAAW;;AAEnB;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA,QAAQ,WAAW;;AAEnB;AACA;AACA,QAAQ,UAAU;;AAElB;AACA;;;;;;;;;;;;ACnFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC1Ba;AACb;AACA;AACA;;;;;;;;;;;;ACHA,iBAAiB;;AAEjB;AACA;AACA;;;;;;;;;;;;ACJA,gBAAgB,mBAAO,CAAC,yDAAc;AACtC,WAAW,mBAAO,CAAC,+CAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;;ACNA,gBAAgB,mBAAO,CAAC,yDAAc;AACtC,iBAAiB,mBAAO,CAAC,2DAAe;AACxC,cAAc,mBAAO,CAAC,qDAAY;AAClC,cAAc,mBAAO,CAAC,qDAAY;AAClC,cAAc,mBAAO,CAAC,qDAAY;;AAElC;AACA;AACA;AA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A;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACrBA,gBAAgB,mBAAO,CAAC,yDAAc;AACtC,kBAAkB,mBAAO,CAAC,2DAAe;AACzC,cAAc,mBAAO,CAAC,mDAAW;AACjC,eAAe,mBAAO,CAAC,qDAAY;AACnC,cAAc,mBAAO,CAAC,qDAAY;AAClC,mBAAmB,mBAAO,CAAC,6DAAgB;;AAE3C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,QAAQ;AACnB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AChDA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACpBA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,MAAM;AACjB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACnBA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,WAAW,EAAE;AACb,WAAW,QAAQ;AACnB;AACA,aAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACzBA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACtBA,mBAAmB,mBAAO,CAAC,+DAAiB;;AAE5C;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;;AAEA;;;;;;;;;;;;ACXA,sBAAsB,mBAAO,CAAC,qEAAoB;AAClD,SAAS,mBAAO,CAAC,yCAAM;;AAEvB;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,EAAE;AACb;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACnBA,sBAAsB,mBAAO,CAAC,qEAAoB;AAClD,SAAS,mBAAO,CAAC,yCAAM;;AAEvB;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,EAAE;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC3BA,SAAS,mBAAO,CAAC,yCAAM;;AAEvB;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACpBA,iBAAiB,mBAAO,CAAC,2DAAe;AACxC,WAAW,mBAAO,CAAC,6CAAQ;;AAE3B;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AChBA,iBAAiB,mBAAO,CAAC,2DAAe;AACxC,aAAa,mBAAO,CAAC,iDAAU;;AAE/B;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AChBA,qBAAqB,mBAAO,CAAC,mEAAmB;;AAEhD;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,EAAE;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;;AAEA;;;;;;;;;;;;ACxBA,YAAY,mBAAO,CAAC,iDAAU;AAC9B,gBAAgB,mBAAO,CAAC,yDAAc;AACtC,kBAAkB,mBAAO,CAAC,6DAAgB;AAC1C,iBAAiB,mBAAO,CAAC,2DAAe;AACxC,mBAAmB,mBAAO,CAAC,+DAAiB;AAC5C,kBAAkB,mBAAO,CAAC,6DAAgB;AAC1C,gBAAgB,mBAAO,CAAC,yDAAc;AACtC,kBAAkB,mBAAO,CAAC,6DAAgB;AAC1C,oBAAoB,mBAAO,CAAC,iEAAkB;AAC9C,iBAAiB,mBAAO,CAAC,2DAAe;AACxC,mBAAmB,mBAAO,CAAC,+DAAiB;AAC5C,aAAa,mBAAO,CAAC,mDAAW;AAChC,qBAAqB,mBAAO,CAAC,mEAAmB;AAChD,qBAAqB,mBAAO,CAAC,mEAAmB;AAChD,sBAAsB,mBAAO,CAAC,qEAAoB;AAClD,cAAc,mBAAO,CAAC,mDAAW;AACjC,eAAe,mBAAO,CAAC,qDAAY;AACnC,YAAY,mBAAO,CAAC,+CAAS;AAC7B,eAAe,mBAAO,CAAC,qDAAY;AACnC,YAAY,mBAAO,CAAC,+CAAS;AAC7B,WAAW,mBAAO,CAAC,6CAAQ;;AAE3B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,QAAQ;AACnB;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;;;;;;;;;;;ACpKA,eAAe,mBAAO,CAAC,qDAAY;;AAEnC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;;;;;;;;;;;;AC7BA,iBAAiB,mBAAO,CAAC,2DAAe;AACxC,qBAAqB,mBAAO,CAAC,mEAAmB;;AAEhD;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,WAAW,SAAS;AACpB,aAAa,aAAa;AAC1B;AACA;;AAEA;;;;;;;;;;;;ACbA,eAAe,mBAAO,CAAC,qDAAY;;AAEnC;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,aAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC/BA,eAAe,mBAAO,CAAC,uDAAa;;AAEpC;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;;;;;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACvBA,gBAAgB,mBAAO,CAAC,yDAAc;AACtC,oBAAoB,mBAAO,CAAC,iEAAkB;;AAE9C;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,W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ACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AClFA,aAAa,mBAAO,CAAC,mDAAW;AAChC,mBAAmB,mBAAO,CAAC,6DAAgB;;AAE3C;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACjBA,YAAY,mBAAO,CAAC,iDAAU;AAC9B,kBAAkB,mBAAO,CAAC,6DAAgB;;AAE1C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC7DA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACXA,iBAAiB,mBAAO,CAAC,yDAAc;AACvC,eAAe,mBAAO,CAAC,uDAAa;AACpC,eAAe,mBAAO,CAAC,qDAAY;AACnC,eAAe,mBAAO,CAAC,uDAAa;;AAEpC;AACA;AACA;AACA;AACA,oCAAoC;;AAEpC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC9CA,aAAa,mBAAO,CAAC,mDAAW;AAChC,mBAAmB,mBAAO,CAAC,6DAAgB;;AAE3C;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACjBA,iBAAiB,mBAAO,CAAC,2DAAe;AACxC,eAAe,mBAAO,CAAC,qDAAY;AACnC,mBAAmB,mBAAO,CAAC,6DAAgB;;AAE3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC3DA,kBAAkB,mBAAO,CAAC,6DAAgB;AAC1C,0BAA0B,mBAAO,CAAC,6EAAwB;AAC1D,eAAe,mBAAO,CAAC,qDAAY;AACnC,cAAc,mBAAO,CAAC,mDAAW;AACjC,eAAe,mBAAO,CAAC,qDAAY;;AAEnC;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC9BA,kBAAkB,mBAAO,CAAC,6DAAgB;AAC1C,iBAAiB,mBAAO,CAAC,2DAAe;;AAExC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;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AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACnBA,aAAa,mBAAO,CAAC,mDAAW;AAChC,eAAe,mBAAO,CAAC,uDAAa;AACpC,cAAc,mBAAO,CAAC,mDAAW;AACjC,eAAe,mBAAO,CAAC,qDAAY;;AAEnC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACpCA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACbA,eAAe,mBAAO,CAAC,uDAAa;AACpC,oBAAoB,mBAAO,CAAC,iEAAkB;AAC9C,wBAAwB,mBAAO,CAAC,yEAAsB;AACtD,eAAe,mBAAO,CAAC,uDAAa;AACpC,gBAAgB,mBAAO,CAAC,yDAAc;AACtC,iBAAiB,mBAAO,CAAC,2DAAe;;AAExC;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACvEA,eAAe,mBAAO,CAAC,uDAAa;;AAEpC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,MAAM;AACjB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;;;;;;;;;;;AClBA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACtBA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACZA,eAAe,mBAAO,CAAC,qDAAY;;AAEnC;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,SAAS;AACtB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACbA,cAAc,mBAAO,CAAC,mDAAW;AACjC,YAAY,mBAAO,CAAC,iDAAU;AAC9B,mBAAmB,mBAAO,CAAC,+DAAiB;AAC5C,eAAe,mBAAO,CAAC,qDAAY;;AAEnC;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACpBA,iBAAiB,mBAAO,CAAC,2DAAe;;AAExC;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,aAAa,YAAY;AACzB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACfA,yDAAW,mBAAO,CAAC,+CAAS;;AAE5B;AACA,kBAAkB,KAA0B;;AAE5C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;;;;;;;;;;;;AClCA,uBAAuB,mBAAO,CAAC,uEAAqB;;AAEpD;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACfA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AChBA,aAAa,mBAAO,CAAC,mDAAW;;AAEhC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACjBA,uBAAuB,mBAAO,CAAC,uEAAqB;;AAEpD;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACfA,eAAe,mBAAO,CAAC,qDAAY;;AAEnC;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACxCA,uBAAuB,mBAAO,CAAC,uEAAqB;;AAEpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,mBAAmB;AAC9B,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC3CA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,MAAM;AACjB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACnBA,kBAAkB,mBAAO,CAAC,6DAAgB;AAC1C,sBAAsB,mBAAO,CAAC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ACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AClFA,aAAa,mBAAO,CAAC,mDAAW;AAChC,iBAAiB,mBAAO,CAAC,2DAAe;AACxC,SAAS,mBAAO,CAAC,yCAAM;AACvB,kBAAkB,mBAAO,CAAC,6DAAgB;AAC1C,iBAAiB,mBAAO,CAAC,2DAAe;AACxC,iBAAiB,mBAAO,CAAC,2DAAe;;AAExC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC/GA,iBAAiB,mBAAO,CAAC,2DAAe;;AAExC;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACxFA,cAAc,mBAAO,CAAC,mDAAW;AACjC,eAAe,mBAAO,CAAC,uDAAa;AACpC,kBAAkB,mBAAO,CAAC,6DAAgB;;AAE1C;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACfA;AACA;;AAEA;;;;;;;;;;;;;ACHA,qBAAqB,mBAAO,CAAC,mEAAmB;AAChD,iBAAiB,mBAAO,CAAC,2DAAe;AACxC,WAAW,mBAAO,CAAC,6CAAQ;;AAE3B;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACfA,qBAAqB,mBAAO,CAAC,mEAAmB;AAChD,mBAAmB,mBAAO,CAAC,+DAAiB;AAC5C,aAAa,mBAAO,CAAC,iDAAU;;AAE/B;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AChBA,gBAAgB,mBAAO,CAAC,yDAAc;;AAEtC;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACjBA,yBAAyB,mBAAO,CAAC,2EAAuB;AACxD,WAAW,mBAAO,CAAC,6CAAQ;;AAE3B;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACvBA,mBAAmB,mBAAO,CAAC,+DAAiB;AAC5C,eAAe,mBAAO,CAAC,uDAAa;;AAEpC;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AChBA,cAAc,mBAAO,CAAC,qDAAY;;AAElC;AACA;;AAEA;;;;;;;;;;;;ACLA,aAAa,mBAAO,CAAC,mDAAW;;AAEhC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC7CA,kBAAkB,mBAAO,CAAC,6DAAgB;AAC1C,gBAAgB,mBAAO,CAAC,uDAAa;;AAErC;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;;;;;;;;;;;AC7BA,gBAAgB,mBAAO,CAAC,yDAAc;AACtC,mBAAmB,mBAAO,CAAC,+DAAiB;AAC5C,iBAAiB,mBAAO,CAAC,2DAAe;AACxC,gBAAgB,mBAAO,CAAC,uDAAa;;AAErC;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACxBA,eAAe,mBAAO,CAAC,uDAAa;AACpC,UAAU,mBAAO,CAAC,6CAAQ;AAC1B,cAAc,mBAAO,CAAC,qDAAY;AAClC,UAAU,mBAAO,CAAC,6CAAQ;AAC1B,cAAc,mBAAO,CAAC,qDAAY;AAClC,iBAAiB,mBAAO,CAAC,2DAAe;AACxC,eAAe,mBAAO,CAAC,uDAAa;;AAEpC;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACzDA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACZA,eAAe,mBAAO,CAAC,uDAAa;AACpC,kBAAkB,mBAAO,CAAC,2DAAe;AACzC,cAAc,mBAAO,CAAC,mDAAW;AACjC,cAAc,mBAAO,CAAC,qDAAY;AAClC,eAAe,mBAAO,CAAC,qDAAY;AACnC,YAAY,mBAAO,CAAC,iDAAU;;AAE9B;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,aAAa;AACxB,WAAW,SAAS;AACpB,aAAa,QAAQ;AACrB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACzBA,mBAAmB,mBAAO,CAAC,+DAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AChBA,mBAAmB,mBAAO,CAAC,+DAAiB;;AAE5C;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC7BA,mBAAmB,mBAAO,CAAC,+DAAiB;;AAE5C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACtBA,mBAAmB,mBAAO,CAAC,+DAAiB;;AAE5C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACtBA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACzBA,uBAAuB,mBAAO,CAAC,uEAAqB;AACpD,oBAAoB,mBAAO,CAAC,iEAAkB;AAC9C,kBAAkB,mBAAO,CAAC,6DAAgB;AAC1C,kBAAkB,mBAAO,CAAC,6DAAgB;AAC1C,sBAAsB,mBAAO,CAAC,qEAAoB;;AAElD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC5EA,iBAAiB,mBAAO,CAAC,2DAAe;AACxC,mBAAmB,mBAAO,CAAC,+DAAiB;AAC5C,kBAAkB,mBAAO,CAAC,6DAAgB;;AAE1C;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACjBA,aAAa,mBAAO,CAAC,mDAAW;AAChC,kBAAkB,mBAAO,CAAC,2DAAe;AACzC,cAAc,mBAAO,CAAC,mDAAW;;AAEjC;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACnBA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACxBA,SAAS,mBAAO,CAAC,yCAAM;AACvB,kBAAkB,mBAAO,CAAC,2DAAe;AACzC,cAAc,mBAAO,CAAC,qDAAY;AAClC,eAAe,mBAAO,CAAC,qDAAY;;AAEnC;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC7BA,cAAc,mBAAO,CAAC,mDAAW;AACjC,eAAe,mBAAO,CAAC,qDAAY;;AAEnC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC5BA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACdA,iBAAiB,mBAAO,CAAC,2DAAe;;AAExC;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACnBA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;;ACjBA,eAAe,mBAAO,CAAC,qDAAY;;AAEnC;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACZA,mBAAmB,mBAAO,CAAC,+DAAiB;;AAE5C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AClCA,mBAAmB,mBAAO,CAAC,+DAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;;AClBA,mBAAmB,mBAAO,CAAC,+DAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACfA,mBAAmB,mBAAO,CAAC,+DAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACzBA,WAAW,mBAAO,CAAC,+CAAS;AAC5B,gBAAgB,mBAAO,CAAC,yDAAc;AACtC,UAAU,mBAAO,CAAC,6CAAQ;;AAE1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACpBA,iBAAiB,mBAAO,CAAC,2DAAe;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACjBA,iBAAiB,mBAAO,CAAC,2DAAe;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACfA,iBAAiB,mBAAO,CAAC,2DAAe;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACfA,iBAAiB,mBAAO,CAAC,2DAAe;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACrBA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;;;;;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACnBA,cAAc,mBAAO,CAAC,mDAAW;;AAEjC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;;;;;;;;;;;;ACzBA,gBAAgB,mBAAO,CAAC,yDAAc;;AAEtC;AACA;;AAEA;;;;;;;;;;;;ACLA,cAAc,mBAAO,CAAC,qDAAY;;AAElC;AACA;;AAEA;;;;;;;;;;;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACnBA,+DAAiB,mBAAO,CAAC,2DAAe;;AAExC;AACA,kBAAkB,KAA0B;;AAE5C;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH,CAAC;;AAED;;;;;;;;;;;;;AC7BA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACrBA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACdA,YAAY,mBAAO,CAAC,iDAAU;;AAE9B;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACnCA,iBAAiB,mBAAO,CAAC,2DAAe;;AAExC;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;;ACRA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;;ACpBA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACbA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;;;;;;;;;;;ACjBA,sBAAsB,mBAAO,CAAC,qEAAoB;AAClD,eAAe,mBAAO,CAAC,uDAAa;;AAEpC;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;;AAEA;;;;;;;;;;;;ACbA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACpCA,gBAAgB,mBAAO,CAAC,yDAAc;;AAEtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;;;;;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACbA,gBAAgB,mBAAO,CAAC,yDAAc;AACtC,UAAU,mBAAO,CAAC,6CAAQ;AAC1B,eAAe,mBAAO,CAAC,uDAAa;;AAEpC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACjCA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,EAAE;AACb,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACtBA,gBAAgB,mBAAO,CAAC,yDAAc;AACtC,iBAAiB,mBAAO,CAAC,2DAAe;AACxC,kBAAkB,mBAAO,CAAC,6DAAgB;;AAE1C;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACjBA,oBAAoB,mBAAO,CAAC,iEAAkB;;AAE9C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;AAED;;;;;;;;;;;;AC1BA,eAAe,mBAAO,CAAC,qDAAY;;AAEnC;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,cAAc;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACpBA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;;;;;;;;;;;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,EAAE;AACjD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC3CA,gBAAgB,mBAAO,CAAC,yDAAc;;AAEtC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,EAAE;AACf;AACA;AACA;AACA,mBAAmB,SAAS,GAAG,SAAS;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACnCA,gBAAgB,mBAAO,CAAC,yDAAc;;AAEtC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,EAAE;AACf;AACA;AACA;AACA,mBAAmB,SAAS,GAAG,SAAS;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,SAAS;AACtB;AACA;AACA,wCAAwC,SAAS;AACjD;AACA;AACA,WAAW,SAAS,GAAG,SAAS;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACzBA,eAAe,mBAAO,CAAC,uDAAa;AACpC,SAAS,mBAAO,CAAC,yCAAM;AACvB,qBAAqB,mBAAO,CAAC,mEAAmB;AAChD,aAAa,mBAAO,CAAC,iDAAU;;AAE/B;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,UAAU;AACrB,aAAa,OAAO;AACpB;AACA;AACA;AACA,eAAe,SAAS,GAAG,SAAS,GAAG,SAAS;AAChD,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;;;;;;;;;;;;AC/DA,iBAAiB,mBAAO,CAAC,mDAAW;;;;;;;;;;;;ACApC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA,iBAAiB;AACjB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACpCA,kBAAkB,mBAAO,CAAC,6DAAgB;AAC1C,iBAAiB,mBAAO,CAAC,2DAAe;AACxC,mBAAmB,mBAAO,CAAC,+DAAiB;AAC5C,cAAc,mBAAO,CAAC,mDAAW;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA,MAAM,8CAA8C;AACpD,MAAM;AACN;AACA;AACA,gCAAgC,kBAAkB,EAAE;AACpD;AACA;AACA;AACA,oBAAoB,4BAA4B;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC/CA,iBAAiB,mBAAO,CAAC,2DAAe;AACxC,gBAAgB,mBAAO,CAAC,uDAAa;;AAErC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA,MAAM,+CAA+C;AACrD,MAAM,gDAAgD;AACtD,MAAM;AACN;AACA;AACA,8BAA8B,mBAAmB,EAAE;AACnD;AACA;AACA;AACA,kBAAkB,2BAA2B;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACzCA,oBAAoB,mBAAO,CAAC,iEAAkB;AAC9C,mBAAmB,mBAAO,CAAC,+DAAiB;AAC5C,gBAAgB,mBAAO,CAAC,uDAAa;;AAErC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA,MAAM,qCAAqC;AAC3C,MAAM,qCAAqC;AAC3C,MAAM;AACN;AACA;AACA,mCAAmC,2BAA2B,EAAE;AAChE;AACA;AACA;AACA,uBAAuB,kCAAkC;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACtDA,kBAAkB,mBAAO,CAAC,6DAAgB;;AAE1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACrBA,gBAAgB,mBAAO,CAAC,yDAAc;AACtC,eAAe,mBAAO,CAAC,uDAAa;AACpC,mBAAmB,mBAAO,CAAC,+DAAiB;AAC5C,cAAc,mBAAO,CAAC,mDAAW;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,WAAW,SAAS;AACpB,aAAa,aAAa;AAC1B;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,cAAc,iBAAiB;AAC/B;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACxCA,cAAc,mBAAO,CAAC,qDAAY;AAClC,mBAAmB,mBAAO,CAAC,+DAAiB;AAC5C,aAAa,mBAAO,CAAC,iDAAU;;AAE/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACtCA,cAAc,mBAAO,CAAC,qDAAY;;AAElC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,aAAa;AACxB,WAAW,EAAE;AACb,aAAa,EAAE;AACf;AACA;AACA,iBAAiB,QAAQ,OAAO,SAAS,EAAE;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AChCA,cAAc,mBAAO,CAAC,qDAAY;AAClC,cAAc,mBAAO,CAAC,qDAAY;;AAElC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,aAAa;AACxB,aAAa,QAAQ;AACrB;AACA;AACA,iBAAiB,OAAO,SAAS;AACjC,yBAAyB,gBAAgB,SAAS,GAAG;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AClCA,gBAAgB,mBAAO,CAAC,yDAAc;AACtC,cAAc,mBAAO,CAAC,qDAAY;;AAElC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,aAAa;AACxB,aAAa,QAAQ;AACrB;AACA;AACA,0BAA0B,gBAAgB,SAAS,GAAG;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,EAAE;AACf;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACpBA,sBAAsB,mBAAO,CAAC,qEAAoB;AAClD,mBAAmB,mBAAO,CAAC,6DAAgB;;AAE3C;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA,6BAA6B,kBAAkB,EAAE;AACjD;AACA;AACA;AACA;AACA;AACA,8CAA8C,kBAAkB,EAAE;AAClE;AACA;AACA;;AAEA;;;;;;;;;;;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACzBA,iBAAiB,mBAAO,CAAC,yDAAc;AACvC,eAAe,mBAAO,CAAC,qDAAY;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AChCA,kBAAkB,mBAAO,CAAC,2DAAe;AACzC,mBAAmB,mBAAO,CAAC,6DAAgB;;AAE3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AChCA,yDAAW,mBAAO,CAAC,+CAAS;AAC5B,gBAAgB,mBAAO,CAAC,uDAAa;;AAErC;AACA,kBAAkB,KAA0B;;AAE5C;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;;ACrCA,eAAe,mBAAO,CAAC,uDAAa;AACpC,aAAa,mBAAO,CAAC,mDAAW;AAChC,kBAAkB,mBAAO,CAAC,2DAAe;AACzC,cAAc,mBAAO,CAAC,mDAAW;AACjC,kBAAkB,mBAAO,CAAC,2DAAe;AACzC,eAAe,mBAAO,CAAC,qDAAY;AACnC,kBAAkB,mBAAO,CAAC,6DAAgB;AAC1C,mBAAmB,mBAAO,CAAC,6DAAgB;;AAE3C;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,SAAS;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC5EA,iBAAiB,mBAAO,CAAC,2DAAe;AACxC,eAAe,mBAAO,CAAC,qDAAY;;AAEnC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACpCA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AClCA,gBAAgB,mBAAO,CAAC,yDAAc;AACtC,gBAAgB,mBAAO,CAAC,yDAAc;AACtC,eAAe,mBAAO,CAAC,uDAAa;;AAEpC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC5BA,iBAAiB,mBAAO,CAAC,2DAAe;AACxC,mBAAmB,mBAAO,CAAC,+DAAiB;AAC5C,mBAAmB,mBAAO,CAAC,6DAAgB;;AAE3C;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,iBAAiB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC7DA,gBAAgB,mBAAO,CAAC,yDAAc;AACtC,gBAAgB,mBAAO,CAAC,yDAAc;AACtC,eAAe,mBAAO,CAAC,uDAAa;;AAEpC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC1BA,iBAAiB,mBAAO,CAAC,2DAAe;AACxC,cAAc,mBAAO,CAAC,mDAAW;AACjC,mBAAmB,mBAAO,CAAC,6DAAgB;;AAE3C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC7BA,iBAAiB,mBAAO,CAAC,2DAAe;AACxC,mBAAmB,mBAAO,CAAC,6DAAgB;;AAE3C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC5BA,uBAAuB,mBAAO,CAAC,uEAAqB;AACpD,gBAAgB,mBAAO,CAAC,yDAAc;AACtC,eAAe,mBAAO,CAAC,uDAAa;;AAEpC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACrBA,oBAAoB,mBAAO,CAAC,iEAAkB;AAC9C,eAAe,mBAAO,CAAC,uDAAa;AACpC,kBAAkB,mBAAO,CAAC,2DAAe;;AAEzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACpCA,oBAAoB,mBAAO,CAAC,iEAAkB;AAC9C,iBAAiB,mBAAO,CAAC,2DAAe;AACxC,kBAAkB,mBAAO,CAAC,2DAAe;;AAEzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACnBA,eAAe,mBAAO,CAAC,uDAAa;AACpC,mBAAmB,mBAAO,CAAC,+DAAiB;AAC5C,cAAc,mBAAO,CAAC,qDAAY;AAClC,cAAc,mBAAO,CAAC,mDAAW;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,iBAAiB;AAC3B;AACA;AACA;AACA,MAAM,mBAAmB;AACzB,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACpDA,sBAAsB,mBAAO,CAAC,qEAAoB;AAClD,iBAAiB,mBAAO,CAAC,2DAAe;AACxC,mBAAmB,mBAAO,CAAC,+DAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA,iBAAiB,+BAA+B;AAChD,iBAAiB;AACjB;AACA;AACA,mCAAmC,cAAc,EAAE;AACnD,UAAU,2BAA2B;AACrC;AACA;AACA;AACA,UAAU,2BAA2B;AACrC;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;;;;;;;;;;;AC1CA,mBAAmB,mBAAO,CAAC,+DAAiB;AAC5C,aAAa,mBAAO,CAAC,mDAAW;AAChC,eAAe,mBAAO,CAAC,qDAAY;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC5BA,eAAe,mBAAO,CAAC,uDAAa;;AAEpC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA,iBAAiB;AACjB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;;ACxEA,gBAAgB,mBAAO,CAAC,yDAAc;AACtC,qBAAqB,mBAAO,CAAC,mEAAmB;;AAEhD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,UAAU;AACrB,aAAa,OAAO;AACpB;AACA;AACA;AACA,YAAY,SAAS,GAAG,SAAS;AACjC;AACA;AACA;AACA,YAAY,SAAS,GAAG,SAAS;AACjC;AACA;AACA;AACA,UAAU,QAAQ,iBAAiB,GAAG,iBAAiB;AACvD;AACA;AACA;AACA,CAAC;;AAED;;;;;;;;;;;;ACtCA,mBAAmB,mBAAO,CAAC,+DAAiB;AAC5C,aAAa,mBAAO,CAAC,mDAAW;AAChC,eAAe,mBAAO,CAAC,qDAAY;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC5BA,mBAAmB,mBAAO,CAAC,+DAAiB;AAC5C,mBAAmB,mBAAO,CAAC,+DAAiB;AAC5C,aAAa,mBAAO,CAAC,mDAAW;;AAEhC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,aAAa,EAAE;AACf;AACA;AACA,mBAAmB,SAAS,GAAG,SAAS;AACxC;AACA,iCAAiC,YAAY,EAAE;AAC/C,UAAU;AACV;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AChBA,WAAW,mBAAO,CAAC,+CAAS;;AAE5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACtBA,eAAe,mBAAO,CAAC,uDAAa;AACpC,eAAe,mBAAO,CAAC,uDAAa;;AAEpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,qBAAqB;AAChC,aAAa,OAAO;AACpB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,UAAU;AACV;AACA;AACA,4BAA4B;AAC5B,CAAC;;AAED;;;;;;;;;;;;ACxBA,mBAAmB,mBAAO,CAAC,+DAAiB;AAC5C,uBAAuB,mBAAO,CAAC,uEAAqB;AACpD,YAAY,mBAAO,CAAC,iDAAU;AAC9B,YAAY,mBAAO,CAAC,iDAAU;;AAE9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,aAAa,SAAS;AACtB;AACA;AACA;AACA,MAAM,OAAO,SAAS,EAAE;AACxB,MAAM,OAAO,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC/BA,kBAAkB,mBAAO,CAAC,6DAAgB;;AAE1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC7CA,kBAAkB,mBAAO,CAAC,6DAAgB;AAC1C,eAAe,mBAAO,CAAC,uDAAa;AACpC,mBAAmB,mBAAO,CAAC,+DAAiB;AAC5C,iBAAiB,mBAAO,CAAC,2DAAe;AACxC,cAAc,mBAAO,CAAC,mDAAW;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,WAAW,SAAS;AACpB,WAAW,EAAE;AACb,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,aAAa,yBAAyB;AACtC;AACA;AACA,IAAI,IAAI;AACR,UAAU,8BAA8B;AACxC;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;;AClDA,eAAe,mBAAO,CAAC,uDAAa;AACpC,aAAa,mBAAO,CAAC,mDAAW;AAChC,kBAAkB,mBAAO,CAAC,2DAAe;AACzC,eAAe,mBAAO,CAAC,qDAAY;AACnC,iBAAiB,mBAAO,CAAC,2DAAe;;AAExC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,oBAAoB;AAC/B,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA,WAAW,iBAAiB;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC7CA,kBAAkB,mBAAO,CAAC,6DAAgB;AAC1C,kBAAkB,mBAAO,CAAC,6DAAgB;AAC1C,eAAe,mBAAO,CAAC,uDAAa;AACpC,qBAAqB,mBAAO,CAAC,mEAAmB;;AAEhD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,WAAW,yBAAyB;AACpC;AACA,aAAa,MAAM;AACnB;AACA;AACA;AACA,MAAM,8BAA8B;AACpC,MAAM,8BAA8B;AACpC,MAAM,8BAA8B;AACpC,MAAM;AACN;AACA;AACA,iCAAiC,eAAe,EAAE;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,CAAC;;AAED;;;;;;;;;;;;AC/CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACjBA,eAAe,mBAAO,CAAC,qDAAY;;AAEnC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACzCA,eAAe,mBAAO,CAAC,qDAAY;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;;ACnCA,eAAe,mBAAO,CAAC,qDAAY;AACnC,eAAe,mBAAO,CAAC,qDAAY;;AAEnC;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACjEA,iBAAiB,mBAAO,CAAC,2DAAe;AACxC,aAAa,mBAAO,CAAC,iDAAU;;AAE/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB,UAAU;AACV;AACA,aAAa,SAAS;AACtB,UAAU;AACV;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC/BA,mBAAmB,mBAAO,CAAC,+DAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC3BA,gBAAgB,mBAAO,CAAC,yDAAc;AACtC,iBAAiB,mBAAO,CAAC,2DAAe;AACxC,iBAAiB,mBAAO,CAAC,2DAAe;AACxC,mBAAmB,mBAAO,CAAC,+DAAiB;AAC5C,mBAAmB,mBAAO,CAAC,+DAAiB;AAC5C,cAAc,mBAAO,CAAC,mDAAW;AACjC,eAAe,mBAAO,CAAC,qDAAY;AACnC,iBAAiB,mBAAO,CAAC,yDAAc;AACvC,eAAe,mBAAO,CAAC,qDAAY;AACnC,mBAAmB,mBAAO,CAAC,6DAAgB;;AAE3C;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,WAAW,EAAE;AACb,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,gBAAgB,yBAAyB;AACzC;AACA,IAAI,IAAI;AACR,UAAU;AACV;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;;;;;;;;;;;AChEA,kBAAkB,mBAAO,CAAC,6DAAgB;AAC1C,eAAe,mBAAO,CAAC,uDAAa;AACpC,eAAe,mBAAO,CAAC,uDAAa;AACpC,wBAAwB,mBAAO,CAAC,uEAAqB;;AAErD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;;;;;;;;;;;;ACzBA,eAAe,mBAAO,CAAC,qDAAY;;AAEnC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC3BA,iBAAiB,mBAAO,CAAC,2DAAe;AACxC,WAAW,mBAAO,CAAC,6CAAQ;;AAE3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACjCA,kBAAkB,mBAAO,CAAC,6DAAgB;AAC1C,oBAAoB,mBAAO,CAAC,iEAAkB;;AAE9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,MAAM;AACjB,aAAa,OAAO;AACpB;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;;ACvBY;AACZ,eAAe,mBAAO,CAAC,6DAAU;AACjC,eAAe,mBAAO,CAAC,oDAAW;AAClC,aAAa,mBAAO,CAAC,wDAAa;;AAElC;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,iBAAiB,QAAQ;;AAEzB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;;;;;;;;;;;ACjJA,SAAS,mBAAO,CAAC,6CAAO;AACxB,cAAc,mBAAO,CAAC,gDAAS;;AAE/B;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,iBAAiB,cAAc;AAC/B;;AAEA;;AAEA;AACA,QAAQ,OAAO;AACf;AACA;AACA;;AAEA;AACA;AACA;;AAEA,mBAAmB,OAAO;AAC1B;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,iBAAiB,cAAc;AAC/B;;AAEA;;AAEA,QAAQ,OAAO;AACf;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,mBAAmB,OAAO;AAC1B;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;AClHA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;;;;;;;;;;ACVa;;AAEb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,gBAAgB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,gBAAgB;AACnC;AACA,GAAG;AACH,mBAAmB,gBAAgB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB,gBAAgB;AACjC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACzDA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kF;;;;;;;;;;;;;;;;;;;;;;ACvBA,6DAAe,KAAoD,oBAAoB,SAA4D,CAAC,iBAAiB,aAAa,QAAQ,aAAa,+BAA+B,cAAc,gFAAgF,cAAc,sEAAsE,cAAc,kBAAkB,cAAc,gFAAgF,cAAc,8EAA8E,gBAAgB,WAA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AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,6BAA6B,sCAAsC,sCAAsC;AACzG;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,C;;;;;;;;;;;;;;;;;;;;;;;ACvSA;AACA;AACY;;AAEZ,WAAW,mBAAO,CAAC,mDAAS;;AAE5B,sBAAsB,mBAAO,CAAC,+DAAe;;AAE7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA;AACA;AACA;AACA,GAAG;AACH,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;ACzHD;AACA;;AAEY;;AAEZ,UAAU,mBAAO,CAAC,mDAAS;;AAE3B;AACA;AACA;AACA;AACA,GAAG;AACH,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA,CAAC;;AAED;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,GAAG;AACH,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;;;;;;;;;;;;ACxFA;AACA;AACA;AACA;AACA,UAAU,mBAAO,CAAC,8DAAgB;AAClC,cAAc,mBAAO,CAAC,gEAAgB;AACtC,aAAa,mBAAO,CAAC,wDAAa;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AC9BA,WAAW,mBAAO,CAAC,iDAAQ;AAC3B,YAAY,mBAAO,CAAC,0DAAc;AAClC,cAAc,mBAAO,CAAC,uDAAW;AACjC,cAAc,mBAAO,CAAC,gEAAgB;AACtC,aAAa,mBAAO,CAAC,gDAAQ;AAC7B,aAAa,mBAAO,CAAC,wDAAa;AAClC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AC1GA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,QAAQ;AACxC;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU,MAAM;AAChB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,oCAAoC,8BAA8B;AAClE;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU,oBAAoB;AAC9B;AACA;;AAEA;AACA,UAAU,UAAU;AACpB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;;AAEA;AACA,+BAA+B,sBAAsB;AACrD;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,QAAQ;AACvC;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,2BAA2B,QAAQ;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,QAAQ;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,eAAe;AAClC;AACA;AACA;AACA;;AAEA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC7SA,iBAAiB,mBAAO,CAAC,uDAAa;AACtC,qBAAqB,mBAAO,CAAC,6DAAY;;;;;;;;;;;;ACDzC,6EAAsB,mBAAO,CAAC,iEAAgB;AAC9C,sBAAsB,mBAAO,CAAC,yEAAoB;AAClD,WAAW,mBAAO,CAAC,yDAAQ;AAC3B,aAAa,mBAAO,CAAC,wDAAa;;AAElC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,sBAAsB,eAAe;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,GAAG;AACH;;;;;;;;;;;;;ACnGA;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA;AACA;AACA;;;;;;;;;;;;;ACTA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,8DAA8D;AAC9D;AACA;AACA;;;;;;;;;;;;;AC3BA,UAAU,mBAAO,CAAC,0DAAiB;AACnC,gBAAgB,mBAAO,CAAC,oDAAW;AACnC,UAAU,mBAAO,CAAC,8CAAQ;;AAE1B,sBAAsB,mBAAO,CAAC,iEAAgB;AAC9C,sBAAsB,mBAAO,CAAC,yEAAoB;AAClD,aAAa,mBAAO,CAAC,wDAAa;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA,iBAAiB,eAAe;AAChC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,iBAAiB,QAAQ;AACzB;;AAEA;AACA;;AAEA,mBAAmB,gBAAgB;AACnC;AACA,qBAAqB,UAAU;AAC/B;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;;ACvGA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,qCAAqC;;AAErC;AACA;AACA;;AAEA,2BAA2B;AAC3B;AACA;AACA;AACA,4BAA4B,UAAU;;;;;;;;;;;;ACvLtC,wBAAwB,mBAAO,CAAC,uEAAiB;AACjD,yBAAyB,mBAAO,CAAC,yEAAkB;;AAEnD;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;ACTA,iBAAiB,mBAAO,CAAC,0DAAa;AACtC,aAAa,mBAAO,CAAC,wDAAa;;AAElC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AClBA,gBAAgB,mBAAO,CAAC,sDAAY;AACpC,UAAU,mBAAO,CAAC,mDAAO;AACzB,UAAU,mBAAO,CAAC,mDAAO;AACzB,SAAS,mBAAO,CAAC,6CAAO;AACxB,UAAU,mBAAO,CAAC,8DAAgB;AAClC,iBAAiB,mBAAO,CAAC,0DAAa;AACtC,iBAAiB,mBAAO,CAAC,iEAAc;AACvC,aAAa,mBAAO,CAAC,wDAAa;;AAElC;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACxGA,gBAAgB,mBAAO,CAAC,sDAAY;AACpC,kBAAkB,mBAAO,CAAC,0DAAa;AACvC,iBAAiB,mBAAO,CAAC,0DAAa;AACtC,UAAU,mBAAO,CAAC,mDAAO;AACzB,UAAU,mBAAO,CAAC,mDAAO;AACzB,SAAS,mBAAO,CAAC,6CAAO;AACxB,iBAAiB,mBAAO,CAAC,iEAAc;AACvC,UAAU,mBAAO,CAAC,8DAAgB;AAClC,aAAa,mBAAO,CAAC,wDAAa;;AAElC;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACvFA,SAAS,mBAAO,CAAC,6CAAO;AACxB,aAAa,mBAAO,CAAC,wDAAa;;AAElC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACPA,uDAAY;;AAEZ;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,aAAa,mBAAO,CAAC,wDAAa;AAClC;;AAEA;AACA;AACA,CAAC;AACD;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA,iBAAiB;AACjB,2BAA2B;AAC3B;AACA,6BAA6B,kBAAkB;AAC/C;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;;;;;;;;;;;;;;ACjDA,uDAAY;;AAEZ;AACA;AACA;AACA,iBAAiB,mBAAO,CAAC,wDAAa;AACtC,kBAAkB,mBAAO,CAAC,0DAAa;AACvC;AACA;AACA;AACA;AACA;AACA,wDAAwD;AACxD;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,kDAAkD;AAClD;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;;;;;;;;;;;;AC3GA,iBAAiB,mBAAO,CAAC,qFAAyB;;;;;;;;;;;;;ACAlD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEa;;AAEb;;AAEA,UAAU,mBAAO,CAAC,uGAAsB;AACxC;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;AAEA;AACA,yBAAyB,mBAAO,CAAC,6DAAc;AAC/C,gBAAgB,mBAAO,CAAC,6DAAU;AAClC;;AAEA,eAAe,mBAAO,CAAC,kFAAoB;AAC3C,eAAe,mBAAO,CAAC,kFAAoB;;AAE3C;;AAEA;AACA;AACA;AACA,iBAAiB,iBAAiB;AAClC;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA,E;;;;;;;;;;;;AClIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEa;;AAEb;;AAEA,gBAAgB,mBAAO,CAAC,oFAAqB;;AAE7C;AACA,yBAAyB,mBAAO,CAAC,6DAAc;AAC/C,gBAAgB,mBAAO,CAAC,6DAAU;AAClC;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,E;;;;;;;;;;;;AC9CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEa;;AAEb;;AAEA,UAAU,mBAAO,CAAC,uGAAsB;AACxC;;AAEA;;AAEA;AACA,cAAc,mBAAO,CAAC,gDAAS;AAC/B;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,SAAS,mBAAO,CAAC,+CAAQ;;AAEzB;AACA;AACA;AACA;;AAEA;AACA,aAAa,mBAAO,CAAC,wGAA2B;AAChD;;AAEA;;AAEA,aAAa,mBAAO,CAAC,qFAAa;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,yBAAyB,mBAAO,CAAC,6DAAc;AAC/C,gBAAgB,mBAAO,CAAC,6DAAU;AAClC;;AAEA;AACA,gBAAgB,mBAAO,CAAC,aAAM;AAC9B;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;;AAEA,iBAAiB,mBAAO,CAAC,wGAA+B;AACxD,kBAAkB,mBAAO,CAAC,kGAA4B;AACtD;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,yEAAyE,6EAA6E;AACtJ;;AAEA;AACA,qBAAqB,mBAAO,CAAC,8EAAkB;;AAE/C;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,iDAAiD,0FAA0F;;AAE3I;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,wCAAwC,mBAAO,CAAC,2GAAiB;AACjE;AACA;AACA;AACA;;AAEA;AACA,qBAAqB,mBAAO,CAAC,8EAAkB;;AAE/C;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA,kGAAkG;AAClG,OAAO;AACP;AACA,OAAO;AACP;AACA;AACA;AACA,4FAA4F;AAC5F,SAAS;AACT;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,gDAAgD;;AAEhD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,sCAAsC,mBAAO,CAAC,2GAAiB;AAC/D;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4EAA4E;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,6DAA6D;AAC7D;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,sCAAsC;;AAEtC;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD;AACxD;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,4CAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,oBAAoB;;AAEpB;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,SAAS;AAC5B;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA,4EAA4E;;AAE5E;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA,iBAAiB,yBAAyB;AAC1C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,mDAAmD;AACnD;AACA,mDAAmD,iEAAiE;AACpH;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA,uCAAuC;AACvC,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,gCAAgC,OAAO;AACvC;AACA;AACA;AACA,C;;;;;;;;;;;;;AC1/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,YAAY;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEa;;AAEb;;AAEA,aAAa,mBAAO,CAAC,8EAAkB;;AAEvC;AACA,yBAAyB,mBAAO,CAAC,6DAAc;AAC/C,gBAAgB,mBAAO,CAAC,6DAAU;AAClC;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,C;;;;;;;;;;;;ACrNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEa;;AAEb;;AAEA,UAAU,mBAAO,CAAC,uGAAsB;AACxC;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,yBAAyB,mBAAO,CAAC,6DAAc;AAC/C,gBAAgB,mBAAO,CAAC,6DAAU;AAClC;;AAEA;AACA;AACA,aAAa,mBAAO,CAAC,gEAAgB;AACrC;AACA;;AAEA;AACA,aAAa,mBAAO,CAAC,wGAA2B;AAChD;;AAEA;;AAEA,aAAa,mBAAO,CAAC,qFAAa;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,kBAAkB,mBAAO,CAAC,kGAA4B;;AAEtD;;AAEA;;AAEA;AACA,qBAAqB,mBAAO,CAAC,8EAAkB;;AAE/C;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,iDAAiD,0FAA0F;;AAE3I;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL,GAAG;AACH,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH,CAAC;AACD;AACA;AACA;AACA;;AAEA;AACA,qBAAqB,mBAAO,CAAC,8EAAkB;;AAE/C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,iCAAiC;;AAEjC;;AAEA,2CAA2C;AAC3C;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mDAAmD;AACnD;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA,oDAAoD;AACpD;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,E;;;;;;;;;;;;;AC9qBa;;AAEb,iDAAiD,0CAA0C,0DAA0D,EAAE;;AAEvJ,aAAa,mBAAO,CAAC,qFAAa;AAClC,WAAW,mBAAO,CAAC,aAAM;;AAEzB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,iBAAiB;AACjB,gDAAgD;AAChD;AACA;AACA;;AAEA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,wDAAwD;AACxD;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;AACA,4BAA4B,sBAAsB;AAClD;AACA;AACA,C;;;;;;;;;;;;AC9Ea;;AAEb;;AAEA,UAAU,mBAAO,CAAC,uGAAsB;AACxC;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,E;;;;;;;;;;;ACzEA,iBAAiB,mBAAO,CAAC,+CAAQ;;;;;;;;;;;;;ACAjC,+CAAa;;AAEb;AACA;AACA;AACA;AACA,oBAAoB;AACpB,CAAC;AACD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;;;;;;;;;;;;;AC3CA;AACA,aAAa,mBAAO,CAAC,8CAAQ;AAC7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AC7DA,iBAAiB,mBAAO,CAAC,sEAAY;;;;;;;;;;;;ACArC,2BAA2B,mBAAO,CAAC,yFAA2B;AAC9D;AACA;AACA,mBAAmB,mBAAO,CAAC,yFAA2B;AACtD,iBAAiB,mBAAO,CAAC,qFAAyB;AAClD,oBAAoB,mBAAO,CAAC,2FAA4B;AACxD,sBAAsB,mBAAO,CAAC,+FAA8B;;;;;;;;;;;;ACN5D,iBAAiB,mBAAO,CAAC,sEAAY;;;;;;;;;;;;ACArC,iBAAiB,mBAAO,CAAC,yFAA2B;;;;;;;;;;;;;ACAxC;AACZ,aAAa,mBAAO,CAAC,8CAAQ;AAC7B,eAAe,mBAAO,CAAC,6DAAU;AACjC,eAAe,mBAAO,CAAC,oDAAW;;AAElC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,iBAAiB,QAAQ;;AAEzB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK,OAAO;AACZ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;;;;;;;;;;;AClKA;AACA,aAAa,mBAAO,CAAC,8CAAQ;AAC7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC/DY;;AAEZ,cAAc,mBAAO,CAAC,kDAAS;AAC/B,cAAc,mBAAO,CAAC,uDAAS;AAC/B,oBAAoB,mBAAO,CAAC,sEAAoB;;AAEhD;AACA;;AAEA;AACA;;AAEA;;AAEA,iCAAiC;AACjC,cAAc;;AAEd;;AAEA;AACA,oDAAoD;;AAEpD;AACA,uEAAuE;;AAEvE;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,yDAAyD;AACzD;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,kEAAkE;AAClE;AACA,4DAA4D,0BAA0B;AACtF;AACA,EAAE;AACF;AACA,6HAA6H;;AAE7H;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA,8BAA8B,WAAW,GAAG,MAAM;;AAElD;AACA;;AAEA;AACA;;;;;;;;;;;;;ACxEA;AACA;;AAEA;AACA;AACA;;AAEA,uBAAuB;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,iBAAiB;AACtC;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,0CAA0C,sBAAsB,EAAE;AAClE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA;;AAEA,KAAK;AACL;AACA;;AAEA,KAAK;AACL;AACA;;AAEA,KAAK;AACL;AACA;;AAEA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,CAAC;;;;;;;;;;;;;ACzLD,aAAa,mBAAO,CAAC,wDAAa;;AAElC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,sBAAsB,iBAAiB;AACvC;AACA;;AAEA,mBAAmB,eAAe;AAClC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;;;;;;;;;;;AChFA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,cAAc,mBAAO,CAAC,2CAAO;AAC7B,eAAe,mBAAO,CAAC,6CAAQ;AAC/B,iBAAiB,mBAAO,CAAC,iDAAU;AACnC,iBAAiB,mBAAO,CAAC,iDAAU;AACnC,iBAAiB,mBAAO,CAAC,iDAAU;AACnC,iBAAiB,mBAAO,CAAC,iDAAU;;;;;;;;;;;;ACdnC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,eAAe,mBAAO,CAAC,6DAAU;AACjC,WAAW,mBAAO,CAAC,6CAAQ;AAC3B,aAAa,mBAAO,CAAC,wDAAa;;AAElC;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB,QAAQ;AACzB,QAAQ,QAAQ;;AAEhB,iBAAiB,QAAQ;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;;AC7FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,eAAe,mBAAO,CAAC,6DAAU;AACjC,WAAW,mBAAO,CAAC,6CAAQ;AAC3B,aAAa,mBAAO,CAAC,wDAAa;;AAElC;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB,QAAQ;AACzB,QAAQ,QAAQ;;AAEhB,iBAAiB,QAAQ;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;;AClGA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,eAAe,mBAAO,CAAC,6DAAU;AACjC,aAAa,mBAAO,CAAC,iDAAU;AAC/B,WAAW,mBAAO,CAAC,6CAAQ;AAC3B,aAAa,mBAAO,CAAC,wDAAa;;AAElC;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;;ACpDA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,eAAe,mBAAO,CAAC,6DAAU;AACjC,WAAW,mBAAO,CAAC,6CAAQ;AAC3B,aAAa,mBAAO,CAAC,wDAAa;;AAElC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB,QAAQ;AACzB,QAAQ,QAAQ;;AAEhB,iBAAiB,QAAQ;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;;ACtIA,eAAe,mBAAO,CAAC,6DAAU;AACjC,aAAa,mBAAO,CAAC,iDAAU;AAC/B,WAAW,mBAAO,CAAC,6CAAQ;AAC3B,aAAa,mBAAO,CAAC,wDAAa;;AAElC;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;;ACxDA,eAAe,mBAAO,CAAC,6DAAU;AACjC,WAAW,mBAAO,CAAC,6CAAQ;AAC3B,aAAa,mBAAO,CAAC,wDAAa;;AAElC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA,QAAQ,SAAS;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,iBAAiB,SAAS;AAC1B;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;;;AClQA,CAAC;AACD,MAAM,IAA2B;AACjC;AACA;AACA;AACA;AACA,OAAO,EAKJ;AACH,CAAC;AACD,6BAA6B,82IAA82I;AAC34I,6BAA6B,MAAM,iBAAiB;;AAEpD;AACA;AACA;AACA;;AAEA;AACA,SAAS;AACT;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;;;;;;;;;;;ACjDD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,SAAS,mBAAO,CAAC,+CAAQ;AACzB,eAAe,mBAAO,CAAC,6DAAU;;AAEjC;AACA,kBAAkB,mBAAO,CAAC,uFAA6B;AACvD,kBAAkB,mBAAO,CAAC,uFAA6B;AACvD,gBAAgB,mBAAO,CAAC,mFAA2B;AACnD,mBAAmB,mBAAO,CAAC,iFAA8B;AACzD,qBAAqB,mBAAO,CAAC,qFAAgC;;AAE7D;AACA;;;;AAIA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;;;;;;;;;;;;AC9Ha;AACb,eAAe,mBAAO,CAAC,oDAAW;;AAElC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;;AAEA,gBAAgB,gBAAgB;AAChC;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAU,gBAAgB;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;;;;;;;;;;;ACzEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA,mBAAO,CAAC,iEAAc;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;AC7DA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,aAAa,SAAS;AACtB;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa;AACb;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AClEA;AACA;AACA,wBAAwB,eAAe;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,wBAAwB,eAAe;AACvC;AACA;AACA;;AAEA;AACA;AACA,gCAAgC,SAAS;AACzC;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;;AAEA;AACA,2BAA2B;AAC3B;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;;;;;;;;;;;ACpJA;;AAEA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;;AAEA;AACA;AACA,4CAA4C;;AAE5C;;;;;;;;;;;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;ACrBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;A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A;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iCAAiC;AACjC,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL,qDAAqD;AACrD;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,kCAAkC;AAC/D;AACA;AACA;AACA;AACA;AACA,uCAAuC,kBAAkB;AACzD;AACA;AACA;AACA,mDAAmD;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,+EAA+E,qBAAqB,WAAW,wBAAwB,EAAE,gQAAgQ;AACzY,aAAa,UAAU,kCAAkC,YAAY,kCAAkC,WAAW,sCAAsC,YAAY;AACpK,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA,CAAC;;;AAGD,IAAI,IAAgE;AACpE;AACA;AACA,6BAA6B,8CAA8C;AAC3E;AACA;AACA;AACA;AACA;AACA,iBAAiB,mBAAO,CAAC,0DAAI,eAAe,mBAAO,CAAC,qDAAM;AAC1D;AACA;AACA,IAAI,KAA6B,IAAI,4CAAY;AACjD;AACA;AACA,C;;;;;;;;;;;;;AC7wBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAEA,IAAIU,SAAS,GAAG,CAAhB;AACO,IAAMH,QAAQ,GAAG,SAAXA,QAAW,CAASlX,IAAT,EAAesX,IAAf,EAAqB5E,QAArB,EAA+BlW,IAA/B,EAAqC;AAC3D,MAAM+a,eAAe,GAAG,SAAlBA,eAAkB,CAASlL,IAAT,EAAe;AACrC,YAAQA,IAAR;AACE,WA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AACA;AACA;AACA,wC;AACA;AACA;AACA,mC;AACA;AACA;AACA,iB;AACA;AACA;AACA,CAAC;AACD,SAAS,YAAY,EAAE,MAAM,cAAc,IAAI,GAAG,uBAAuB,EAAE,QAAQ,eAAe,qCAAqC,4BAA4B,YAAY,EAAE,0BAA0B,uDAAuD,UAAU,EAAE,kCAAkC,8BAA8B,0BAA0B,EAAE,SAAS;AACnX,iBAAiB,iBAAiB;AAClC;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iCAAiC;AACjC,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL,qDAAqD;AACrD;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL,UAAU,wBAAwB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,2FAA2F,cAAc,uCAAuC,aAAa;AAC7J,aAAa,WAAW;AACxB,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA,CAAC;;;AAGD,IAAI,IAAgE;AACpE;AACA;AACA,6BAA6B,8CAA8C;AAC3E;AACA;AACA;AACA;AACA;AACA,iBAAiB,mBAAO,CAAC,0DAAI,eAAe,mBAAO,CAAC,qDAAM;AAC1D;AACA;AACA,IAAI,KAA6B,IAAI,4CAAY;AACjD;AACA;AACA,C;;;;;;;;;;;;;ACtqBA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAEA,SAASzH,QAAT,CAAkB3R,MAAlB,EAA0Bc,IAA1B,EAAgCb,IAAhC,EAAsC;AACpC,MAAM4F,CAAC,GAAG/E,IAAI,CAACpG,KAAf;AACA,MAAMoL,CAAC,GAAGhF,IAAI,CAACnG,MAAf;AACA,MAAMqJ,CAAC,GAAG,CAAC6B,CAAC,GAAGC,CAAL,IAAU,GAApB;AACA,MAAMV,MAAM,GAAG,CACb;AAAE1D,KAAC,EAAEsC,CAAC,GAAG,CAAT;AA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CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,8CAA8C,WAAW,qD;AACrG;AACA;AACA,8CAA8C,gDAAgD,WAAW,yD;AACzG;AACA;AACA,iCAAiC,aAAa;AAC9C;AACA;AACA,gCAAgC,aAAa;AAC7C;AACA;AACA,gCAAgC;AAChC;AACA;AACA,kCAAkC,qDAAqD;AACvF;AACA;AACA,oBAAoB;AACpB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,+BAA+B,kBAAkB;AACjD;AACA;AACA,uBAAuB;AACvB;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA,4CAA4C,WAAW;AACvD;AACA;AACA,kCAAkC,UAAU;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB,8CAA8C;AAChE;AACA;AACA,kBAAkB,4CAA4C;AAC9D;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,SAAS,4BAA4B,EAAE,MAAM,YAAY,IAAI,GAAG,wBAAwB,EAAE,wBAAwB,EAAE,SAAS,EAAE,2PAA2P,6BAA6B,qCAAqC,gFAAgF,yDAAyD,EAAE,yBAAyB,EAAE,yBAAyB,EAAE,yBAAyB,EAAE,yBAAyB,EAAE,yBAAyB,EAAE,mCAAmC,eAAe,aAAa,GAAG,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,eAAe,UAAU,gBAAgB,mNAAmN,6RAA6R,SAAS,eAAe,aAAa,iBAAiB,iIAAiI,yDAAyD,0BAA0B,GAAG,yQAAyQ,uIAAuI,0QAA0Q,aAAa,MAAM,gBAAgB,QAAQ,GAAG,0JAA0J,EAAE,6BAA6B,EAAE,0JAA0J,EAAE,+IAA+I,EAAE,+IAA+I,EAAE,sHAAsH,EAAE,0QAA0Q,EAAE,qRAAqR,EAAE,0QAA0Q,EAAE,0QAA0Q,EAAE,0QAA0Q,EAAE,0QAA0Q,EAAE,qRAAqR,EAAE,0QAA0Q,EAAE,0QAA0Q,EAAE,0QAA0Q,0DAA0D,cAAc,gBAAgB,WAAW,GAAG,WAAW,EAAE,0QAA0Q,EAAE,wQAAwQ,qjBAAqjB,kSAAkS,EAAE,8PAA8P,EAAE,cAAc,EAAE,mJAAmJ,EAAE,WAAW,kFAAkF,WAAW,EAAE,sBAAsB,iBAAiB,WAAW,EAAE,mJAAmJ,EAAE,mJAAmJ,EAAE,mJAAmJ,eAAe,+GAA+G,GAAG,wQAAwQ,EAAE,0QAA0Q,EAAE,wQAAwQ,EAAE,wQAAwQ,EAAE,wQAAwQ,EAAE,wQAAwQ,EAAE,wQAAwQ,EAAE,wQAAwQ,EAAE,0QAA0Q,EAAE,wQAAwQ,EAAE,mRAAmR,EAAE,mRAAmR,eAAe,QAAQ,+BAA+B,wQAAwQ,+BAA+B,0QAA0Q,aAAa,MAAM,iBAAiB,4HAA4H,EAAE,6GAA6G,kBAAkB,6GAA6G,EAAE,wHAAwH,EAAE,wHAAwH,EAAE,WAAW,EAAE,6GAA6G,EAAE,6GAA6G,EAAE,+IAA+I,EAAE,0JAA0J,gBAAgB,wQAAwQ,sFAAsF,wQAAwQ,oIAAoI,wQAAwQ,EAAE,8PAA8P,8BAA8B,QAAQ,kBAAkB,+FAA+F,iNAAiN,QAAQ,iBAAiB,QAAQ,GAAG,WAAW,gBAAgB,QAAQ,GAAG,WAAW,+BAA+B,QAAQ,iBAAiB,QAAQ,iBAAiB,wIAAwI,iBAAiB,mJAAmJ,iBAAiB,WAAW,GAAG,WAAW,EAAE,WAAW,EAAE,0BAA0B,gBAAgB,sGAAsG,kBAAkB,+IAA+I,EAAE,+IAA+I,EAAE,WAAW,EAAE,WAAW,yCAAyC,MAAM,kBAAkB,+FAA+F,iBAAiB,mJAAmJ,iBAAiB,mJAAmJ,iCAAiC,8PAA8P,EAAE,6GAA6G,EAAE,6GAA6G,8BAA8B,QAAQ,iBAAiB,QAAQ;AAC5xhB,kBAAkB;AAClB;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iCAAiC;AACjC,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL,qDAAqD;AACrD;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,mBAAmB;AACnD;AACA,gCAAgC,mBAAmB;AACnD;AACA;AACA;AACA;AACA;AACA,2BAA2B,Y;AAC3B;AACA,2BAA2B,Y;AAC3B;AACA,2BAA2B,Y;AAC3B;AACA,2BAA2B,Y;AAC3B;AACA,2BAA2B,Y;AAC3B;AACA,2BAA2B,Y;AAC3B;AACA,2BAA2B,Y;AAC3B;AACA,2BAA2B,Y;AAC3B;AACA,2BAA2B,Y;AAC3B;AACA,2BAA2B,Y;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,icAAic,25KAA25K,UAAU;AACt2L,aAAa,UAAU,6BAA6B,QAAQ,0DAA0D,WAAW,gCAAgC,YAAY;AAC7K,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA,CAAC;;;AAGD,IAAI,IAAgE;AACpE;AACA;AACA,6BAA6B,8CAA8C;AAC3E;AACA;AACA;AACA;AACA;AACA,iBAAiB,mBAAO,CAAC,0DAAI,eAAe,mBAAO,CAAC,qDAAM;AAC1D;AACA;AACA,IAAI,KAA6B,IAAI,4CAAY;AACjD;AACA;AACA,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACt+BA;AACA;AACA;AACA;AACA;AAEA,IAAI6Q,UAAU,GAAG,EAAjB;AACA,IAAIhtB,UAAU,GAAG,EAAjB;AACA,IAAIitB,WAAW,GAAG,EAAlB;AACA,IAAIC,QAAQ,GAAG,EAAf;AACA,IAAI/R,KAAK,GAAG,EAAZ;AACA,IAAIgS,QAAQ,GAAG,EAAf;AACA,IAAIC,KAAK,GAAG,EAAZ;AACA,IAAIC,cAAc,GAAG,EAArB;AACA,IAAMC,IAAI,GAAG,CAAC,QAAD,EAAW,MAAX,EAAmB,MAAnB,EAA2B,WAA3B,CAAb;AACA,IAAItW,IAAI,GA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EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mJAAmJ;AACnJ,SAAS;;AAET;AACA;AACA,qBAAqB,+BAA+B;AACpD;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW,YAAY,IAAI,WAAW,SAAS;AACvE,cAAc,0BAA0B,EAAE;AAC1C,MAAM;AACN,WAAW,gWAAgW;AAC3W,aAAa,gPAAgP;AAC7P;AACA;AACA;;AAEA;AACA;AACA;AACA,iB;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA,6BAA6B;AAC7B;AACA;AACA,oCAAoC;AACpC;AACA;AACA,iCAAiC;AACjC;AACA;AACA,qCAAqC;AACrC;AACA;AACA,8BAA8B;AAC9B;AACA;AACA,gCAAgC;AAChC;AACA;AACA,4BAA4B;AAC5B;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB,2CAA2C;AAC7D;AACA;AACA,kBAAkB,+CAA+C;AACjE;AACA;AACA,kBAAkB,yCAAyC;AAC3D;AACA;AACA,kBAAkB,6CAA6C;AAC/D;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,SAAS,YAAY,EAAE,MAAM,cAAc,IAAI,GAAG,sGAAsG,cAAc,QAAQ,gBAAgB,0EAA0E,0IAA0I,UAAU,EAAE,oBAAoB,0CAA0C,oBAAoB,gBAAgB,UAAU,gBAAgB,UAAU,8BAA8B,UAAU;AAC5kB,kBAAkB;AAClB;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iCAAiC;AACjC,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL,qDAAqD;AACrD;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA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AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mJAAmJ;AACnJ,SAAS;;AAET;AACA;AACA,qBAAqB,+BAA+B;AACpD;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW,YAAY,IAAI,WAAW,SAAS;AACvE,cAAc,0BAA0B,EAAE;AAC1C,MAAM;AACN,WAAW,uSAAuS;AAClT,aAAa,0JAA0J;AACvK;AACA;AACA;;AAEA;AACA;AACA;AACA,iB;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA,yBAAyB;AACzB;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,SAAS,YAAY,EAAE,MAAM,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,QAAQ,EAAE,QAAQ,cAAc,gBAAgB,gBAAgB,sBAAsB,EAAE,QAAQ,EAAE,gFAAgF,eAAe,SAAS,eAAe,UAAU,gBAAgB,0BAA0B,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,0BAA0B,EAAE,QAAQ,eAAe,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,UAAU,EAAE,oBAAoB,EAAE,UAAU,EAAE,UAAU;AAC1lB,iBAAiB,2GAA2G;AAC5H;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iCAAiC;AACjC,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL,qDAAqD;AACrD;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL,UAAU,wBAAwB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;;;;;;;;ACpDA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA,eAAe,kCAAkC;AACjD,iBAAiB,kCAAkC;AACnD;AACA;AACA;AACA,qBAAqB,IAAI;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mJAAmJ;AACnJ,SAAS;;AAET;AACA;AACA,qBAAqB,+BAA+B;AACpD;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW,YAAY,IAAI,WAAW,SAAS;AACvE,cAAc,0BAA0B,EAAE;AAC1C,MAAM;AACN,WAAW,mHAAmH;AAC9H,aAAa,gDAAgD;AAC7D;AACA;AACA;;AAEA;AACA;AACA;AACA,W;AACA;AACA;;AAEA;AACA;AACA,kB;AACA;AACA;AACA,CAAC;AACD,SAAS,YAAY,EAAE,MAAM,cAAc,IAAI,GAAG,iCAAiC,EAAE,QAAQ;AAC7F,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iCAAiC;AACjC,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL,qDAAqD;AACrD;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL,UAAU,wBAAwB;AAClC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,aAAa,WAAW;AACxB,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA,CAAC;;;AAGD,IAAI,IAAgE;AACpE;AACA;AACA,6BAA6B,8CAA8C;AAC3E;AACA;AACA;AACA;AACA;AACA,iBAAiB,mBAAO,CAAC,0DAAI,eAAe,mBAAO,CAAC,qDAAM;AAC1D;AACA;AACA,IAAI,KAA6B,IAAI,4CAAY;AACjD;AACA;AACA,C;;;;;;;;;;;;AC7mBA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA,eAAe,kCAAkC;AACjD,iBAAiB,kCAAkC;AACnD;AACA;AACA;AACA,qBAAqB,IAAI;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mJAAmJ;AACnJ,SAAS;;AAET;AACA;AACA,qBAAqB,+BAA+B;AACpD;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW,YAAY,IAAI,WAAW,SAAS;AACvE,cAAc,0BAA0B,EAAE;AAC1C,MAAM;AACN,WAAW,mIAAmI;AAC9I,aAAa,gEAAgE;AAC7E;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,kD;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA,CAAC;AACD,SAAS,YAAY,EAAE,MAAM,cAAc,IAAI,GAAG,0CAA0C,EAAE,QAAQ,yCAAyC,UAAU;AACzJ,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iCAAiC;AACjC,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL,qDAAqD;AACrD;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL,UAAU,wBAAwB;AAClC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,qGAAqG;AACrG,aAAa,UAAU,gCAAgC,YAAY;AACnE,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA,CAAC;;;AAGD,IAAI,IAAgE;AACpE;AACA;AACA,6BAA6B,8CAA8C;AAC3E;AACA;A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AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW,YAAY,IAAI,WAAW,SAAS;AACvE,cAAc,0BAA0B,EAAE;AAC1C,MAAM;AACN,WAAW,wyBAAwyB;AACnzB,aAAa,ifAAif;AAC9f;AACA;AACA;;AAEA;AACA;AACA;AACA,kBAAkB,c;AAClB;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA,W;AACA;AACA;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA,QAAQ;AACR;AACA;AACA,SAAS,+BAA+B;AACxC;AACA;;AAEA,oBAAoB,0FAA0F;AAC9G,iBAAiB,qEAAqE;AACtF;AACA;AACA;;AAEA,oBAAoB,wFAAwF;AAC5G,iBAAiB,oFAAoF;AACrG;AACA;AACA;;AAEA,oBAAoB,uFAAuF;AAC3G,iBAAiB,mFAAmF;AACpG;AACA;AACA;;AAEA;AACA,oBAAoB,uFAAuF;AAC3G;AACA;AACA,iBAAiB,gDAAgD;AACjE;AACA;AACA;;AAEA;AACA,oBAAoB,uFAAuF;AAC3G;AACA;AACA,iBAAiB,gDAAgD;AACjE;AACA;AACA;AACA,4BAA4B,gFAAgF,W;AAC5G;AACA;AACA,4BAA4B,kFAAkF,W;AAC9G;AACA;;AAEA,uBAAuB,sEAAsE;AAC7F;AACA;;AAEA;AACA;AACA;AACA;AACA,uBAAuB,qFAAqF;AAC5G;AACA;AACA,6B;AACA;AACA;AACA,iB;AACA;AACA;AACA,8B;AACA;AACA;AACA,+B;AACA;AACA;AACA,8BAA8B,4FAA4F;AAC1H,gBAAgB;AAChB;AACA;AACA;AACA,8BAA8B,4FAA4F;AAC1H,eAAe;AACf;AACA;AACA;AACA,8BAA8B,4FAA4F;AAC1H;AACA;AACA,QAAQ;AACR;AACA;AACA,iC;AACA;AACA;AACA,kC;AACA;AACA;AACA,4B;AACA;AACA;AACA,6B;AACA;AACA;AACA,kC;AACA;AACA;AACA,mC;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,qB;AACvB;AACA;AACA,6C;AACA;AACA;AACA,2CAA2C,4C;AAC3C;AACA;AACA,qBAAqB,oC;AACrB;AACA;AACA,CAAC;AACD,SAAS,sCAAsC,EAAE,MAAM,EAAE,sCAAsC,EAAE,sCAAsC,EAAE,uCAAuC,uDAAuD,KAAK,GAAG,gBAAgB,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,sJAAsJ,EAAE,uBAAuB,iCAAiC,6HAA6H,4BAA4B,aAAa,EAAE,SAAS,gBAAgB,aAAa,EAAE,aAAa,EAAE,SAAS,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,gBAAgB,kEAAkE,EAAE,oCAAoC,2CAA2C,SAAS,EAAE,gBAAgB,EAAE,SAAS,eAAe,mBAAmB,gBAAgB,SAAS,EAAE,SAAS,gBAAgB,SAAS,EAAE,SAAS,YAAY,KAAK,aAAa,KAAK,aAAa,KAAK,aAAa,WAAW,aAAa,WAAW,GAAG,iCAAiC,sFAAsF,aAAa,EAAE,mBAAmB,EAAE,UAAU,EAAE,UAAU,gBAAgB,aAAa,EAAE,UAAU,EAAE,UAAU,0DAA0D,wJAAwJ,EAAE,wJAAwJ,EAAE,wJAAwJ,EAAE,UAAU,EAAE,kKAAkK,EAAE,UAAU,EAAE,kKAAkK,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,oBAAoB,EAAE,SAAS,EAAE,SAAS,0DAA0D,UAAU,gBAAgB,WAAW,EAAE,cAAc,EAAE,cAAc,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,cAAc,wCAAwC,YAAY,aAAa,YAAY,GAAG,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AACpsF,iBAAiB,yKAAyK;AAC1L;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iCAAiC;AACjC,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL,qDAAqD;AACrD;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL,UAAU,wBAAwB;AAClC;AACA;AACA;AACA,qCAAqC,W;AA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,UAAU,eAAe,UAAU,GAAG,2GAA2G,eAAe,UAAU,GAAG,UAAU,EAAE,UAAU,wCAAwC,KAAK,+BAA+B,2GAA2G;AAC/kC,iBAAiB,oCAAoC;AACrD;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iCAAiC;AACjC,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL,qDAAqD;AACrD;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL,UAAU,wBAAwB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,yCAAyC,a;AACzE;AACA;AACA;AACA;AACA;AACA,gC;AACA;AACA,uBAAuB,yCAAyC,0CAA0C;AAC1G;AACA,wBAAwB,yCAAyC,yCAAyC;AAC1G;AACA,wBAAwB,yCAAyC,yCAAyC;AAC1G;AACA,wBAAwB,yCAAyC,yCAAyC;AAC1G;AACA;AACA;AACA,wBAAwB,2BAA2B;AACnD;AACA,wBAAwB,uCAAuC;AAC/D;AACA;AACA;AACA,wDAAwD;AACxD;AACA,oDAAoD;AACpD;AACA;AACA;AACA,wBAAwB,yBAAyB,2CAA2C;AAC5F;AACA,wCAAwC,mBAAmB;AAC3D;AACA;AACA;AACA,4BAA4B,W;AAC5B;AACA,yBAAyB,0BAA0B;AACnD;AACA,yBAAyB,0BAA0B;AACnD;AACA,yBAAyB;AACzB;AACA,wBAAwB,mCAAmC;AAC3D;AACA;AACA;AACA,2DAA2D;AAC3D;AACA,wBAAwB,8CAA8C;AACtE;AACA,yBAAyB,4BAA4B,6CAA6C;AAClG;AACA,yBAAyB,mDAAmD,2CAA2C;AACvH;AACA,yBAAyB,mDAAmD,6CAA6C;AACzH;AACA,4DAA4D,W;AAC5D;AACA,4DAA4D,W;AAC5D;AACA,qDAAqD,Y;AACrD;AACA,iDAAiD;AACjD;AACA,2CAA2C;AAC3C;AACA,wCAAwC,uCAAuC,a;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,mRAAmR,6CAA6C,wBAAwB,WAAW,gLAAgL,kBAAkB,mIAAmI,qBAAqB;AAC7rB,aAAa,QA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A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW,YAAY,IAAI,WAAW,SAAS;AACvE,cAAc,0BAA0B,EAAE;AAC1C,MAAM;AACN,WAAW,uKAAuK;AAClL,aAAa,oGAAoG;AACjH;AACA;AACA;;AAEA;AACA;AACA;AACA,iB;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA,gCAAgC;AAChC;AACA;AACA,6BAA6B;AAC7B;AACA;AACA,CAAC;AACD,SAAS,YAAY,EAAE,MAAM,cAAc,IAAI,GAAG,sDAAsD,cAAc,QAAQ,gBAAgB,0BAA0B,sDAAsD,UAAU;AACxO,kBAAkB;AAClB;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iCAAiC;AACjC,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL,qDAAqD;AACrD;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL,UAAU,wBAAwB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,sGAAsG,2BAA2B,kBAAkB,kBAAkB;AACrK,aAAa,WAAW;AACxB,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA,CAAC;;;AAGD,IAAI,IAAgE;AACpE;AACA;AACA,6BAA6B,8CAA8C;AAC3E;AACA;AACA;AACA;AACA;AACA,iBAAiB,mBAAO,CAAC,0DAAI,eAAe,mBAAO,CAAC,qDAAM;AAC1D;AACA;AACA,IAAI,KAA6B,IAAI,4CAAY;AACjD;AACA;AACA,C;;;;;;;;;;;;;ACroBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEO,IAAM6rB,QAAQ,GAAG,SAAXA,QAAW,CAASxiC,IAAT,EAAewnC,QAAf,EAAyB;AAC/C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","file":"mermaid.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"mermaid\"] = factory();\n\telse\n\t\troot[\"mermaid\"] = factory();\n})(typeof self !== \"undefined\" ? self : this, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./src/mermaid.js\");\n","'use strict';\n\nvar invalidPrototcolRegex = /^(%20|\\s)*(javascript|data)/im;\nvar ctrlCharactersRegex = /[^\\x20-\\x7E]/gmi;\nvar urlSchemeRegex = /^([^:]+):/gm;\nvar relativeFirstCharacters = ['.', '/']\n\nfunction isRelativeUrl(url) {\n return relativeFirstCharacters.indexOf(url[0]) > -1;\n}\n\nfunction sanitizeUrl(url) {\n if (!url) {\n return 'about:blank';\n }\n\n var urlScheme, urlSchemeParseResults;\n var sanitizedUrl = url.replace(ctrlCharactersRegex, '').trim();\n\n if (isRelativeUrl(sanitizedUrl)) {\n return sanitizedUrl;\n }\n\n urlSchemeParseResults = sanitizedUrl.match(urlSchemeRegex);\n\n if (!urlSchemeParseResults) {\n return 'about:blank';\n }\n\n urlScheme = urlSchemeParseResults[0];\n\n if (invalidPrototcolRegex.test(urlScheme)) {\n return 'about:blank';\n }\n\n return sanitizedUrl;\n}\n\nmodule.exports = {\n sanitizeUrl: sanitizeUrl\n};\n","var asn1 = exports;\n\nasn1.bignum = require('bn.js');\n\nasn1.define = require('./asn1/api').define;\nasn1.base = require('./asn1/base');\nasn1.constants = require('./asn1/constants');\nasn1.decoders = require('./asn1/decoders');\nasn1.encoders = require('./asn1/encoders');\n","var asn1 = require('../asn1');\nvar inherits = require('inherits');\n\nvar api = exports;\n\napi.define = function define(name, body) {\n return new Entity(name, body);\n};\n\nfunction Entity(name, body) {\n this.name = name;\n this.body = body;\n\n this.decoders = {};\n this.encoders = {};\n};\n\nEntity.prototype._createNamed = function createNamed(base) {\n var named;\n try {\n named = require('vm').runInThisContext(\n '(function ' + this.name + '(entity) {\\n' +\n ' this._initNamed(entity);\\n' +\n '})'\n );\n } catch (e) {\n named = function (entity) {\n this._initNamed(entity);\n };\n }\n inherits(named, base);\n named.prototype._initNamed = function initnamed(entity) {\n base.call(this, entity);\n };\n\n return new named(this);\n};\n\nEntity.prototype._getDecoder = function _getDecoder(enc) {\n enc = enc || 'der';\n // Lazily create decoder\n if (!this.decoders.hasOwnProperty(enc))\n this.decoders[enc] = this._createNamed(asn1.decoders[enc]);\n return this.decoders[enc];\n};\n\nEntity.prototype.decode = function decode(data, enc, options) {\n return this._getDecoder(enc).decode(data, options);\n};\n\nEntity.prototype._getEncoder = function _getEncoder(enc) {\n enc = enc || 'der';\n // Lazily create encoder\n if (!this.encoders.hasOwnProperty(enc))\n this.encoders[enc] = this._createNamed(asn1.encoders[enc]);\n return this.encoders[enc];\n};\n\nEntity.prototype.encode = function encode(data, enc, /* internal */ reporter) {\n return this._getEncoder(enc).encode(data, reporter);\n};\n","var inherits = require('inherits');\nvar Reporter = require('../base').Reporter;\nvar Buffer = require('buffer').Buffer;\n\nfunction DecoderBuffer(base, options) {\n Reporter.call(this, options);\n if (!Buffer.isBuffer(base)) {\n this.error('Input not Buffer');\n return;\n }\n\n this.base = base;\n this.offset = 0;\n this.length = base.length;\n}\ninherits(DecoderBuffer, Reporter);\nexports.DecoderBuffer = DecoderBuffer;\n\nDecoderBuffer.prototype.save = function save() {\n return { offset: this.offset, reporter: Reporter.prototype.save.call(this) };\n};\n\nDecoderBuffer.prototype.restore = function restore(save) {\n // Return skipped data\n var res = new DecoderBuffer(this.base);\n res.offset = save.offset;\n res.length = this.offset;\n\n this.offset = save.offset;\n Reporter.prototype.restore.call(this, save.reporter);\n\n return res;\n};\n\nDecoderBuffer.prototype.isEmpty = function isEmpty() {\n return this.offset === this.length;\n};\n\nDecoderBuffer.prototype.readUInt8 = function readUInt8(fail) {\n if (this.offset + 1 <= this.length)\n return this.base.readUInt8(this.offset++, true);\n else\n return this.error(fail || 'DecoderBuffer overrun');\n}\n\nDecoderBuffer.prototype.skip = function skip(bytes, fail) {\n if (!(this.offset + bytes <= this.length))\n return this.error(fail || 'DecoderBuffer overrun');\n\n var res = new DecoderBuffer(this.base);\n\n // Share reporter state\n res._reporterState = this._reporterState;\n\n res.offset = this.offset;\n res.length = this.offset + bytes;\n this.offset += bytes;\n return res;\n}\n\nDecoderBuffer.prototype.raw = function raw(save) {\n return this.base.slice(save ? save.offset : this.offset, this.length);\n}\n\nfunction EncoderBuffer(value, reporter) {\n if (Array.isArray(value)) {\n this.length = 0;\n this.value = value.map(function(item) {\n if (!(item instanceof EncoderBuffer))\n item = new EncoderBuffer(item, reporter);\n this.length += item.length;\n return item;\n }, this);\n } else if (typeof value === 'number') {\n if (!(0 <= value && value <= 0xff))\n return reporter.error('non-byte EncoderBuffer value');\n this.value = value;\n this.length = 1;\n } else if (typeof value === 'string') {\n this.value = value;\n this.length = Buffer.byteLength(value);\n } else if (Buffer.isBuffer(value)) {\n this.value = value;\n this.length = value.length;\n } else {\n return reporter.error('Unsupported type: ' + typeof value);\n }\n}\nexports.EncoderBuffer = EncoderBuffer;\n\nEncoderBuffer.prototype.join = function join(out, offset) {\n if (!out)\n out = new Buffer(this.length);\n if (!offset)\n offset = 0;\n\n if (this.length === 0)\n return out;\n\n if (Array.isArray(this.value)) {\n this.value.forEach(function(item) {\n item.join(out, offset);\n offset += item.length;\n });\n } else {\n if (typeof this.value === 'number')\n out[offset] = this.value;\n else if (typeof this.value === 'string')\n out.write(this.value, offset);\n else if (Buffer.isBuffer(this.value))\n this.value.copy(out, offset);\n offset += this.length;\n }\n\n return out;\n};\n","var base = exports;\n\nbase.Reporter = require('./reporter').Reporter;\nbase.DecoderBuffer = require('./buffer').DecoderBuffer;\nbase.EncoderBuffer = require('./buffer').EncoderBuffer;\nbase.Node = require('./node');\n","var Reporter = require('../base').Reporter;\nvar EncoderBuffer = require('../base').EncoderBuffer;\nvar DecoderBuffer = require('../base').DecoderBuffer;\nvar assert = require('minimalistic-assert');\n\n// Supported tags\nvar tags = [\n 'seq', 'seqof', 'set', 'setof', 'objid', 'bool',\n 'gentime', 'utctime', 'null_', 'enum', 'int', 'objDesc',\n 'bitstr', 'bmpstr', 'charstr', 'genstr', 'graphstr', 'ia5str', 'iso646str',\n 'numstr', 'octstr', 'printstr', 't61str', 'unistr', 'utf8str', 'videostr'\n];\n\n// Public methods list\nvar methods = [\n 'key', 'obj', 'use', 'optional', 'explicit', 'implicit', 'def', 'choice',\n 'any', 'contains'\n].concat(tags);\n\n// Overrided methods list\nvar overrided = [\n '_peekTag', '_decodeTag', '_use',\n '_decodeStr', '_decodeObjid', '_decodeTime',\n '_decodeNull', '_decodeInt', '_decodeBool', '_decodeList',\n\n '_encodeComposite', '_encodeStr', '_encodeObjid', '_encodeTime',\n '_encodeNull', '_encodeInt', '_encodeBool'\n];\n\nfunction Node(enc, parent) {\n var state = {};\n this._baseState = state;\n\n state.enc = enc;\n\n state.parent = parent || null;\n state.children = null;\n\n // State\n state.tag = null;\n state.args = null;\n state.reverseArgs = null;\n state.choice = null;\n state.optional = false;\n state.any = false;\n state.obj = false;\n state.use = null;\n state.useDecoder = null;\n state.key = null;\n state['default'] = null;\n state.explicit = null;\n state.implicit = null;\n state.contains = null;\n\n // Should create new instance on each method\n if (!state.parent) {\n state.children = [];\n this._wrap();\n }\n}\nmodule.exports = Node;\n\nvar stateProps = [\n 'enc', 'parent', 'children', 'tag', 'args', 'reverseArgs', 'choice',\n 'optional', 'any', 'obj', 'use', 'alteredUse', 'key', 'default', 'explicit',\n 'implicit', 'contains'\n];\n\nNode.prototype.clone = function clone() {\n var state = this._baseState;\n var cstate = {};\n stateProps.forEach(function(prop) {\n cstate[prop] = state[prop];\n });\n var res = new this.constructor(cstate.parent);\n res._baseState = cstate;\n return res;\n};\n\nNode.prototype._wrap = function wrap() {\n var state = this._baseState;\n methods.forEach(function(method) {\n this[method] = function _wrappedMethod() {\n var clone = new this.constructor(this);\n state.children.push(clone);\n return clone[method].apply(clone, arguments);\n };\n }, this);\n};\n\nNode.prototype._init = function init(body) {\n var state = this._baseState;\n\n assert(state.parent === null);\n body.call(this);\n\n // Filter children\n state.children = state.children.filter(function(child) {\n return child._baseState.parent === this;\n }, this);\n assert.equal(state.children.length, 1, 'Root node can have only one child');\n};\n\nNode.prototype._useArgs = function useArgs(args) {\n var state = this._baseState;\n\n // Filter children and args\n var children = args.filter(function(arg) {\n return arg instanceof this.constructor;\n }, this);\n args = args.filter(function(arg) {\n return !(arg instanceof this.constructor);\n }, this);\n\n if (children.length !== 0) {\n assert(state.children === null);\n state.children = children;\n\n // Replace parent to maintain backward link\n children.forEach(function(child) {\n child._baseState.parent = this;\n }, this);\n }\n if (args.length !== 0) {\n assert(state.args === null);\n state.args = args;\n state.reverseArgs = args.map(function(arg) {\n if (typeof arg !== 'object' || arg.constructor !== Object)\n return arg;\n\n var res = {};\n Object.keys(arg).forEach(function(key) {\n if (key == (key | 0))\n key |= 0;\n var value = arg[key];\n res[value] = key;\n });\n return res;\n });\n }\n};\n\n//\n// Overrided methods\n//\n\noverrided.forEach(function(method) {\n Node.prototype[method] = function _overrided() {\n var state = this._baseState;\n throw new Error(method + ' not implemented for encoding: ' + state.enc);\n };\n});\n\n//\n// Public methods\n//\n\ntags.forEach(function(tag) {\n Node.prototype[tag] = function _tagMethod() {\n var state = this._baseState;\n var args = Array.prototype.slice.call(arguments);\n\n assert(state.tag === null);\n state.tag = tag;\n\n this._useArgs(args);\n\n return this;\n };\n});\n\nNode.prototype.use = function use(item) {\n assert(item);\n var state = this._baseState;\n\n assert(state.use === null);\n state.use = item;\n\n return this;\n};\n\nNode.prototype.optional = function optional() {\n var state = this._baseState;\n\n state.optional = true;\n\n return this;\n};\n\nNode.prototype.def = function def(val) {\n var state = this._baseState;\n\n assert(state['default'] === null);\n state['default'] = val;\n state.optional = true;\n\n return this;\n};\n\nNode.prototype.explicit = function explicit(num) {\n var state = this._baseState;\n\n assert(state.explicit === null && state.implicit === null);\n state.explicit = num;\n\n return this;\n};\n\nNode.prototype.implicit = function implicit(num) {\n var state = this._baseState;\n\n assert(state.explicit === null && state.implicit === null);\n state.implicit = num;\n\n return this;\n};\n\nNode.prototype.obj = function obj() {\n var state = this._baseState;\n var args = Array.prototype.slice.call(arguments);\n\n state.obj = true;\n\n if (args.length !== 0)\n this._useArgs(args);\n\n return this;\n};\n\nNode.prototype.key = function key(newKey) {\n var state = this._baseState;\n\n assert(state.key === null);\n state.key = newKey;\n\n return this;\n};\n\nNode.prototype.any = function any() {\n var state = this._baseState;\n\n state.any = true;\n\n return this;\n};\n\nNode.prototype.choice = function choice(obj) {\n var state = this._baseState;\n\n assert(state.choice === null);\n state.choice = obj;\n this._useArgs(Object.keys(obj).map(function(key) {\n return obj[key];\n }));\n\n return this;\n};\n\nNode.prototype.contains = function contains(item) {\n var state = this._baseState;\n\n assert(state.use === null);\n state.contains = item;\n\n return this;\n};\n\n//\n// Decoding\n//\n\nNode.prototype._decode = function decode(input, options) {\n var state = this._baseState;\n\n // Decode root node\n if (state.parent === null)\n return input.wrapResult(state.children[0]._decode(input, options));\n\n var result = state['default'];\n var present = true;\n\n var prevKey = null;\n if (state.key !== null)\n prevKey = input.enterKey(state.key);\n\n // Check if tag is there\n if (state.optional) {\n var tag = null;\n if (state.explicit !== null)\n tag = state.explicit;\n else if (state.implicit !== null)\n tag = state.implicit;\n else if (state.tag !== null)\n tag = state.tag;\n\n if (tag === null && !state.any) {\n // Trial and Error\n var save = input.save();\n try {\n if (state.choice === null)\n this._decodeGeneric(state.tag, input, options);\n else\n this._decodeChoice(input, options);\n present = true;\n } catch (e) {\n present = false;\n }\n input.restore(save);\n } else {\n present = this._peekTag(input, tag, state.any);\n\n if (input.isError(present))\n return present;\n }\n }\n\n // Push object on stack\n var prevObj;\n if (state.obj && present)\n prevObj = input.enterObject();\n\n if (present) {\n // Unwrap explicit values\n if (state.explicit !== null) {\n var explicit = this._decodeTag(input, state.explicit);\n if (input.isError(explicit))\n return explicit;\n input = explicit;\n }\n\n var start = input.offset;\n\n // Unwrap implicit and normal values\n if (state.use === null && state.choice === null) {\n if (state.any)\n var save = input.save();\n var body = this._decodeTag(\n input,\n state.implicit !== null ? state.implicit : state.tag,\n state.any\n );\n if (input.isError(body))\n return body;\n\n if (state.any)\n result = input.raw(save);\n else\n input = body;\n }\n\n if (options && options.track && state.tag !== null)\n options.track(input.path(), start, input.length, 'tagged');\n\n if (options && options.track && state.tag !== null)\n options.track(input.path(), input.offset, input.length, 'content');\n\n // Select proper method for tag\n if (state.any)\n result = result;\n else if (state.choice === null)\n result = this._decodeGeneric(state.tag, input, options);\n else\n result = this._decodeChoice(input, options);\n\n if (input.isError(result))\n return result;\n\n // Decode children\n if (!state.any && state.choice === null && state.children !== null) {\n state.children.forEach(function decodeChildren(child) {\n // NOTE: We are ignoring errors here, to let parser continue with other\n // parts of encoded data\n child._decode(input, options);\n });\n }\n\n // Decode contained/encoded by schema, only in bit or octet strings\n if (state.contains && (state.tag === 'octstr' || state.tag === 'bitstr')) {\n var data = new DecoderBuffer(result);\n result = this._getUse(state.contains, input._reporterState.obj)\n ._decode(data, options);\n }\n }\n\n // Pop object\n if (state.obj && present)\n result = input.leaveObject(prevObj);\n\n // Set key\n if (state.key !== null && (result !== null || present === true))\n input.leaveKey(prevKey, state.key, result);\n else if (prevKey !== null)\n input.exitKey(prevKey);\n\n return result;\n};\n\nNode.prototype._decodeGeneric = function decodeGeneric(tag, input, options) {\n var state = this._baseState;\n\n if (tag === 'seq' || tag === 'set')\n return null;\n if (tag === 'seqof' || tag === 'setof')\n return this._decodeList(input, tag, state.args[0], options);\n else if (/str$/.test(tag))\n return this._decodeStr(input, tag, options);\n else if (tag === 'objid' && state.args)\n return this._decodeObjid(input, state.args[0], state.args[1], options);\n else if (tag === 'objid')\n return this._decodeObjid(input, null, null, options);\n else if (tag === 'gentime' || tag === 'utctime')\n return this._decodeTime(input, tag, options);\n else if (tag === 'null_')\n return this._decodeNull(input, options);\n else if (tag === 'bool')\n return this._decodeBool(input, options);\n else if (tag === 'objDesc')\n return this._decodeStr(input, tag, options);\n else if (tag === 'int' || tag === 'enum')\n return this._decodeInt(input, state.args && state.args[0], options);\n\n if (state.use !== null) {\n return this._getUse(state.use, input._reporterState.obj)\n ._decode(input, options);\n } else {\n return input.error('unknown tag: ' + tag);\n }\n};\n\nNode.prototype._getUse = function _getUse(entity, obj) {\n\n var state = this._baseState;\n // Create altered use decoder if implicit is set\n state.useDecoder = this._use(entity, obj);\n assert(state.useDecoder._baseState.parent === null);\n state.useDecoder = state.useDecoder._baseState.children[0];\n if (state.implicit !== state.useDecoder._baseState.implicit) {\n state.useDecoder = state.useDecoder.clone();\n state.useDecoder._baseState.implicit = state.implicit;\n }\n return state.useDecoder;\n};\n\nNode.prototype._decodeChoice = function decodeChoice(input, options) {\n var state = this._baseState;\n var result = null;\n var match = false;\n\n Object.keys(state.choice).some(function(key) {\n var save = input.save();\n var node = state.choice[key];\n try {\n var value = node._decode(input, options);\n if (input.isError(value))\n return false;\n\n result = { type: key, value: value };\n match = true;\n } catch (e) {\n input.restore(save);\n return false;\n }\n return true;\n }, this);\n\n if (!match)\n return input.error('Choice not matched');\n\n return result;\n};\n\n//\n// Encoding\n//\n\nNode.prototype._createEncoderBuffer = function createEncoderBuffer(data) {\n return new EncoderBuffer(data, this.reporter);\n};\n\nNode.prototype._encode = function encode(data, reporter, parent) {\n var state = this._baseState;\n if (state['default'] !== null && state['default'] === data)\n return;\n\n var result = this._encodeValue(data, reporter, parent);\n if (result === undefined)\n return;\n\n if (this._skipDefault(result, reporter, parent))\n return;\n\n return result;\n};\n\nNode.prototype._encodeValue = function encode(data, reporter, parent) {\n var state = this._baseState;\n\n // Decode root node\n if (state.parent === null)\n return state.children[0]._encode(data, reporter || new Reporter());\n\n var result = null;\n\n // Set reporter to share it with a child class\n this.reporter = reporter;\n\n // Check if data is there\n if (state.optional && data === undefined) {\n if (state['default'] !== null)\n data = state['default']\n else\n return;\n }\n\n // Encode children first\n var content = null;\n var primitive = false;\n if (state.any) {\n // Anything that was given is translated to buffer\n result = this._createEncoderBuffer(data);\n } else if (state.choice) {\n result = this._encodeChoice(data, reporter);\n } else if (state.contains) {\n content = this._getUse(state.contains, parent)._encode(data, reporter);\n primitive = true;\n } else if (state.children) {\n content = state.children.map(function(child) {\n if (child._baseState.tag === 'null_')\n return child._encode(null, reporter, data);\n\n if (child._baseState.key === null)\n return reporter.error('Child should have a key');\n var prevKey = reporter.enterKey(child._baseState.key);\n\n if (typeof data !== 'object')\n return reporter.error('Child expected, but input is not object');\n\n var res = child._encode(data[child._baseState.key], reporter, data);\n reporter.leaveKey(prevKey);\n\n return res;\n }, this).filter(function(child) {\n return child;\n });\n content = this._createEncoderBuffer(content);\n } else {\n if (state.tag === 'seqof' || state.tag === 'setof') {\n // TODO(indutny): this should be thrown on DSL level\n if (!(state.args && state.args.length === 1))\n return reporter.error('Too many args for : ' + state.tag);\n\n if (!Array.isArray(data))\n return reporter.error('seqof/setof, but data is not Array');\n\n var child = this.clone();\n child._baseState.implicit = null;\n content = this._createEncoderBuffer(data.map(function(item) {\n var state = this._baseState;\n\n return this._getUse(state.args[0], data)._encode(item, reporter);\n }, child));\n } else if (state.use !== null) {\n result = this._getUse(state.use, parent)._encode(data, reporter);\n } else {\n content = this._encodePrimitive(state.tag, data);\n primitive = true;\n }\n }\n\n // Encode data itself\n var result;\n if (!state.any && state.choice === null) {\n var tag = state.implicit !== null ? state.implicit : state.tag;\n var cls = state.implicit === null ? 'universal' : 'context';\n\n if (tag === null) {\n if (state.use === null)\n reporter.error('Tag could be omitted only for .use()');\n } else {\n if (state.use === null)\n result = this._encodeComposite(tag, primitive, cls, content);\n }\n }\n\n // Wrap in explicit\n if (state.explicit !== null)\n result = this._encodeComposite(state.explicit, false, 'context', result);\n\n return result;\n};\n\nNode.prototype._encodeChoice = function encodeChoice(data, reporter) {\n var state = this._baseState;\n\n var node = state.choice[data.type];\n if (!node) {\n assert(\n false,\n data.type + ' not found in ' +\n JSON.stringify(Object.keys(state.choice)));\n }\n return node._encode(data.value, reporter);\n};\n\nNode.prototype._encodePrimitive = function encodePrimitive(tag, data) {\n var state = this._baseState;\n\n if (/str$/.test(tag))\n return this._encodeStr(data, tag);\n else if (tag === 'objid' && state.args)\n return this._encodeObjid(data, state.reverseArgs[0], state.args[1]);\n else if (tag === 'objid')\n return this._encodeObjid(data, null, null);\n else if (tag === 'gentime' || tag === 'utctime')\n return this._encodeTime(data, tag);\n else if (tag === 'null_')\n return this._encodeNull();\n else if (tag === 'int' || tag === 'enum')\n return this._encodeInt(data, state.args && state.reverseArgs[0]);\n else if (tag === 'bool')\n return this._encodeBool(data);\n else if (tag === 'objDesc')\n return this._encodeStr(data, tag);\n else\n throw new Error('Unsupported tag: ' + tag);\n};\n\nNode.prototype._isNumstr = function isNumstr(str) {\n return /^[0-9 ]*$/.test(str);\n};\n\nNode.prototype._isPrintstr = function isPrintstr(str) {\n return /^[A-Za-z0-9 '\\(\\)\\+,\\-\\.\\/:=\\?]*$/.test(str);\n};\n","var inherits = require('inherits');\n\nfunction Reporter(options) {\n this._reporterState = {\n obj: null,\n path: [],\n options: options || {},\n errors: []\n };\n}\nexports.Reporter = Reporter;\n\nReporter.prototype.isError = function isError(obj) {\n return obj instanceof ReporterError;\n};\n\nReporter.prototype.save = function save() {\n var state = this._reporterState;\n\n return { obj: state.obj, pathLen: state.path.length };\n};\n\nReporter.prototype.restore = function restore(data) {\n var state = this._reporterState;\n\n state.obj = data.obj;\n state.path = state.path.slice(0, data.pathLen);\n};\n\nReporter.prototype.enterKey = function enterKey(key) {\n return this._reporterState.path.push(key);\n};\n\nReporter.prototype.exitKey = function exitKey(index) {\n var state = this._reporterState;\n\n state.path = state.path.slice(0, index - 1);\n};\n\nReporter.prototype.leaveKey = function leaveKey(index, key, value) {\n var state = this._reporterState;\n\n this.exitKey(index);\n if (state.obj !== null)\n state.obj[key] = value;\n};\n\nReporter.prototype.path = function path() {\n return this._reporterState.path.join('/');\n};\n\nReporter.prototype.enterObject = function enterObject() {\n var state = this._reporterState;\n\n var prev = state.obj;\n state.obj = {};\n return prev;\n};\n\nReporter.prototype.leaveObject = function leaveObject(prev) {\n var state = this._reporterState;\n\n var now = state.obj;\n state.obj = prev;\n return now;\n};\n\nReporter.prototype.error = function error(msg) {\n var err;\n var state = this._reporterState;\n\n var inherited = msg instanceof ReporterError;\n if (inherited) {\n err = msg;\n } else {\n err = new ReporterError(state.path.map(function(elem) {\n return '[' + JSON.stringify(elem) + ']';\n }).join(''), msg.message || msg, msg.stack);\n }\n\n if (!state.options.partial)\n throw err;\n\n if (!inherited)\n state.errors.push(err);\n\n return err;\n};\n\nReporter.prototype.wrapResult = function wrapResult(result) {\n var state = this._reporterState;\n if (!state.options.partial)\n return result;\n\n return {\n result: this.isError(result) ? null : result,\n errors: state.errors\n };\n};\n\nfunction ReporterError(path, msg) {\n this.path = path;\n this.rethrow(msg);\n};\ninherits(ReporterError, Error);\n\nReporterError.prototype.rethrow = function rethrow(msg) {\n this.message = msg + ' at: ' + (this.path || '(shallow)');\n if (Error.captureStackTrace)\n Error.captureStackTrace(this, ReporterError);\n\n if (!this.stack) {\n try {\n // IE only adds stack when thrown\n throw new Error(this.message);\n } catch (e) {\n this.stack = e.stack;\n }\n }\n return this;\n};\n","var constants = require('../constants');\n\nexports.tagClass = {\n 0: 'universal',\n 1: 'application',\n 2: 'context',\n 3: 'private'\n};\nexports.tagClassByName = constants._reverse(exports.tagClass);\n\nexports.tag = {\n 0x00: 'end',\n 0x01: 'bool',\n 0x02: 'int',\n 0x03: 'bitstr',\n 0x04: 'octstr',\n 0x05: 'null_',\n 0x06: 'objid',\n 0x07: 'objDesc',\n 0x08: 'external',\n 0x09: 'real',\n 0x0a: 'enum',\n 0x0b: 'embed',\n 0x0c: 'utf8str',\n 0x0d: 'relativeOid',\n 0x10: 'seq',\n 0x11: 'set',\n 0x12: 'numstr',\n 0x13: 'printstr',\n 0x14: 't61str',\n 0x15: 'videostr',\n 0x16: 'ia5str',\n 0x17: 'utctime',\n 0x18: 'gentime',\n 0x19: 'graphstr',\n 0x1a: 'iso646str',\n 0x1b: 'genstr',\n 0x1c: 'unistr',\n 0x1d: 'charstr',\n 0x1e: 'bmpstr'\n};\nexports.tagByName = constants._reverse(exports.tag);\n","var constants = exports;\n\n// Helper\nconstants._reverse = function reverse(map) {\n var res = {};\n\n Object.keys(map).forEach(function(key) {\n // Convert key to integer if it is stringified\n if ((key | 0) == key)\n key = key | 0;\n\n var value = map[key];\n res[value] = key;\n });\n\n return res;\n};\n\nconstants.der = require('./der');\n","var inherits = require('inherits');\n\nvar asn1 = require('../../asn1');\nvar base = asn1.base;\nvar bignum = asn1.bignum;\n\n// Import DER constants\nvar der = asn1.constants.der;\n\nfunction DERDecoder(entity) {\n this.enc = 'der';\n this.name = entity.name;\n this.entity = entity;\n\n // Construct base tree\n this.tree = new DERNode();\n this.tree._init(entity.body);\n};\nmodule.exports = DERDecoder;\n\nDERDecoder.prototype.decode = function decode(data, options) {\n if (!(data instanceof base.DecoderBuffer))\n data = new base.DecoderBuffer(data, options);\n\n return this.tree._decode(data, options);\n};\n\n// Tree methods\n\nfunction DERNode(parent) {\n base.Node.call(this, 'der', parent);\n}\ninherits(DERNode, base.Node);\n\nDERNode.prototype._peekTag = function peekTag(buffer, tag, any) {\n if (buffer.isEmpty())\n return false;\n\n var state = buffer.save();\n var decodedTag = derDecodeTag(buffer, 'Failed to peek tag: \"' + tag + '\"');\n if (buffer.isError(decodedTag))\n return decodedTag;\n\n buffer.restore(state);\n\n return decodedTag.tag === tag || decodedTag.tagStr === tag ||\n (decodedTag.tagStr + 'of') === tag || any;\n};\n\nDERNode.prototype._decodeTag = function decodeTag(buffer, tag, any) {\n var decodedTag = derDecodeTag(buffer,\n 'Failed to decode tag of \"' + tag + '\"');\n if (buffer.isError(decodedTag))\n return decodedTag;\n\n var len = derDecodeLen(buffer,\n decodedTag.primitive,\n 'Failed to get length of \"' + tag + '\"');\n\n // Failure\n if (buffer.isError(len))\n return len;\n\n if (!any &&\n decodedTag.tag !== tag &&\n decodedTag.tagStr !== tag &&\n decodedTag.tagStr + 'of' !== tag) {\n return buffer.error('Failed to match tag: \"' + tag + '\"');\n }\n\n if (decodedTag.primitive || len !== null)\n return buffer.skip(len, 'Failed to match body of: \"' + tag + '\"');\n\n // Indefinite length... find END tag\n var state = buffer.save();\n var res = this._skipUntilEnd(\n buffer,\n 'Failed to skip indefinite length body: \"' + this.tag + '\"');\n if (buffer.isError(res))\n return res;\n\n len = buffer.offset - state.offset;\n buffer.restore(state);\n return buffer.skip(len, 'Failed to match body of: \"' + tag + '\"');\n};\n\nDERNode.prototype._skipUntilEnd = function skipUntilEnd(buffer, fail) {\n while (true) {\n var tag = derDecodeTag(buffer, fail);\n if (buffer.isError(tag))\n return tag;\n var len = derDecodeLen(buffer, tag.primitive, fail);\n if (buffer.isError(len))\n return len;\n\n var res;\n if (tag.primitive || len !== null)\n res = buffer.skip(len)\n else\n res = this._skipUntilEnd(buffer, fail);\n\n // Failure\n if (buffer.isError(res))\n return res;\n\n if (tag.tagStr === 'end')\n break;\n }\n};\n\nDERNode.prototype._decodeList = function decodeList(buffer, tag, decoder,\n options) {\n var result = [];\n while (!buffer.isEmpty()) {\n var possibleEnd = this._peekTag(buffer, 'end');\n if (buffer.isError(possibleEnd))\n return possibleEnd;\n\n var res = decoder.decode(buffer, 'der', options);\n if (buffer.isError(res) && possibleEnd)\n break;\n result.push(res);\n }\n return result;\n};\n\nDERNode.prototype._decodeStr = function decodeStr(buffer, tag) {\n if (tag === 'bitstr') {\n var unused = buffer.readUInt8();\n if (buffer.isError(unused))\n return unused;\n return { unused: unused, data: buffer.raw() };\n } else if (tag === 'bmpstr') {\n var raw = buffer.raw();\n if (raw.length % 2 === 1)\n return buffer.error('Decoding of string type: bmpstr length mismatch');\n\n var str = '';\n for (var i = 0; i < raw.length / 2; i++) {\n str += String.fromCharCode(raw.readUInt16BE(i * 2));\n }\n return str;\n } else if (tag === 'numstr') {\n var numstr = buffer.raw().toString('ascii');\n if (!this._isNumstr(numstr)) {\n return buffer.error('Decoding of string type: ' +\n 'numstr unsupported characters');\n }\n return numstr;\n } else if (tag === 'octstr') {\n return buffer.raw();\n } else if (tag === 'objDesc') {\n return buffer.raw();\n } else if (tag === 'printstr') {\n var printstr = buffer.raw().toString('ascii');\n if (!this._isPrintstr(printstr)) {\n return buffer.error('Decoding of string type: ' +\n 'printstr unsupported characters');\n }\n return printstr;\n } else if (/str$/.test(tag)) {\n return buffer.raw().toString();\n } else {\n return buffer.error('Decoding of string type: ' + tag + ' unsupported');\n }\n};\n\nDERNode.prototype._decodeObjid = function decodeObjid(buffer, values, relative) {\n var result;\n var identifiers = [];\n var ident = 0;\n while (!buffer.isEmpty()) {\n var subident = buffer.readUInt8();\n ident <<= 7;\n ident |= subident & 0x7f;\n if ((subident & 0x80) === 0) {\n identifiers.push(ident);\n ident = 0;\n }\n }\n if (subident & 0x80)\n identifiers.push(ident);\n\n var first = (identifiers[0] / 40) | 0;\n var second = identifiers[0] % 40;\n\n if (relative)\n result = identifiers;\n else\n result = [first, second].concat(identifiers.slice(1));\n\n if (values) {\n var tmp = values[result.join(' ')];\n if (tmp === undefined)\n tmp = values[result.join('.')];\n if (tmp !== undefined)\n result = tmp;\n }\n\n return result;\n};\n\nDERNode.prototype._decodeTime = function decodeTime(buffer, tag) {\n var str = buffer.raw().toString();\n if (tag === 'gentime') {\n var year = str.slice(0, 4) | 0;\n var mon = str.slice(4, 6) | 0;\n var day = str.slice(6, 8) | 0;\n var hour = str.slice(8, 10) | 0;\n var min = str.slice(10, 12) | 0;\n var sec = str.slice(12, 14) | 0;\n } else if (tag === 'utctime') {\n var year = str.slice(0, 2) | 0;\n var mon = str.slice(2, 4) | 0;\n var day = str.slice(4, 6) | 0;\n var hour = str.slice(6, 8) | 0;\n var min = str.slice(8, 10) | 0;\n var sec = str.slice(10, 12) | 0;\n if (year < 70)\n year = 2000 + year;\n else\n year = 1900 + year;\n } else {\n return buffer.error('Decoding ' + tag + ' time is not supported yet');\n }\n\n return Date.UTC(year, mon - 1, day, hour, min, sec, 0);\n};\n\nDERNode.prototype._decodeNull = function decodeNull(buffer) {\n return null;\n};\n\nDERNode.prototype._decodeBool = function decodeBool(buffer) {\n var res = buffer.readUInt8();\n if (buffer.isError(res))\n return res;\n else\n return res !== 0;\n};\n\nDERNode.prototype._decodeInt = function decodeInt(buffer, values) {\n // Bigint, return as it is (assume big endian)\n var raw = buffer.raw();\n var res = new bignum(raw);\n\n if (values)\n res = values[res.toString(10)] || res;\n\n return res;\n};\n\nDERNode.prototype._use = function use(entity, obj) {\n if (typeof entity === 'function')\n entity = entity(obj);\n return entity._getDecoder('der').tree;\n};\n\n// Utility methods\n\nfunction derDecodeTag(buf, fail) {\n var tag = buf.readUInt8(fail);\n if (buf.isError(tag))\n return tag;\n\n var cls = der.tagClass[tag >> 6];\n var primitive = (tag & 0x20) === 0;\n\n // Multi-octet tag - load\n if ((tag & 0x1f) === 0x1f) {\n var oct = tag;\n tag = 0;\n while ((oct & 0x80) === 0x80) {\n oct = buf.readUInt8(fail);\n if (buf.isError(oct))\n return oct;\n\n tag <<= 7;\n tag |= oct & 0x7f;\n }\n } else {\n tag &= 0x1f;\n }\n var tagStr = der.tag[tag];\n\n return {\n cls: cls,\n primitive: primitive,\n tag: tag,\n tagStr: tagStr\n };\n}\n\nfunction derDecodeLen(buf, primitive, fail) {\n var len = buf.readUInt8(fail);\n if (buf.isError(len))\n return len;\n\n // Indefinite form\n if (!primitive && len === 0x80)\n return null;\n\n // Definite form\n if ((len & 0x80) === 0) {\n // Short form\n return len;\n }\n\n // Long form\n var num = len & 0x7f;\n if (num > 4)\n return buf.error('length octect is too long');\n\n len = 0;\n for (var i = 0; i < num; i++) {\n len <<= 8;\n var j = buf.readUInt8(fail);\n if (buf.isError(j))\n return j;\n len |= j;\n }\n\n return len;\n}\n","var decoders = exports;\n\ndecoders.der = require('./der');\ndecoders.pem = require('./pem');\n","var inherits = require('inherits');\nvar Buffer = require('buffer').Buffer;\n\nvar DERDecoder = require('./der');\n\nfunction PEMDecoder(entity) {\n DERDecoder.call(this, entity);\n this.enc = 'pem';\n};\ninherits(PEMDecoder, DERDecoder);\nmodule.exports = PEMDecoder;\n\nPEMDecoder.prototype.decode = function decode(data, options) {\n var lines = data.toString().split(/[\\r\\n]+/g);\n\n var label = options.label.toUpperCase();\n\n var re = /^-----(BEGIN|END) ([^-]+)-----$/;\n var start = -1;\n var end = -1;\n for (var i = 0; i < lines.length; i++) {\n var match = lines[i].match(re);\n if (match === null)\n continue;\n\n if (match[2] !== label)\n continue;\n\n if (start === -1) {\n if (match[1] !== 'BEGIN')\n break;\n start = i;\n } else {\n if (match[1] !== 'END')\n break;\n end = i;\n break;\n }\n }\n if (start === -1 || end === -1)\n throw new Error('PEM section not found for: ' + label);\n\n var base64 = lines.slice(start + 1, end).join('');\n // Remove excessive symbols\n base64.replace(/[^a-z0-9\\+\\/=]+/gi, '');\n\n var input = new Buffer(base64, 'base64');\n return DERDecoder.prototype.decode.call(this, input, options);\n};\n","var inherits = require('inherits');\nvar Buffer = require('buffer').Buffer;\n\nvar asn1 = require('../../asn1');\nvar base = asn1.base;\n\n// Import DER constants\nvar der = asn1.constants.der;\n\nfunction DEREncoder(entity) {\n this.enc = 'der';\n this.name = entity.name;\n this.entity = entity;\n\n // Construct base tree\n this.tree = new DERNode();\n this.tree._init(entity.body);\n};\nmodule.exports = DEREncoder;\n\nDEREncoder.prototype.encode = function encode(data, reporter) {\n return this.tree._encode(data, reporter).join();\n};\n\n// Tree methods\n\nfunction DERNode(parent) {\n base.Node.call(this, 'der', parent);\n}\ninherits(DERNode, base.Node);\n\nDERNode.prototype._encodeComposite = function encodeComposite(tag,\n primitive,\n cls,\n content) {\n var encodedTag = encodeTag(tag, primitive, cls, this.reporter);\n\n // Short form\n if (content.length < 0x80) {\n var header = new Buffer(2);\n header[0] = encodedTag;\n header[1] = content.length;\n return this._createEncoderBuffer([ header, content ]);\n }\n\n // Long form\n // Count octets required to store length\n var lenOctets = 1;\n for (var i = content.length; i >= 0x100; i >>= 8)\n lenOctets++;\n\n var header = new Buffer(1 + 1 + lenOctets);\n header[0] = encodedTag;\n header[1] = 0x80 | lenOctets;\n\n for (var i = 1 + lenOctets, j = content.length; j > 0; i--, j >>= 8)\n header[i] = j & 0xff;\n\n return this._createEncoderBuffer([ header, content ]);\n};\n\nDERNode.prototype._encodeStr = function encodeStr(str, tag) {\n if (tag === 'bitstr') {\n return this._createEncoderBuffer([ str.unused | 0, str.data ]);\n } else if (tag === 'bmpstr') {\n var buf = new Buffer(str.length * 2);\n for (var i = 0; i < str.length; i++) {\n buf.writeUInt16BE(str.charCodeAt(i), i * 2);\n }\n return this._createEncoderBuffer(buf);\n } else if (tag === 'numstr') {\n if (!this._isNumstr(str)) {\n return this.reporter.error('Encoding of string type: numstr supports ' +\n 'only digits and space');\n }\n return this._createEncoderBuffer(str);\n } else if (tag === 'printstr') {\n if (!this._isPrintstr(str)) {\n return this.reporter.error('Encoding of string type: printstr supports ' +\n 'only latin upper and lower case letters, ' +\n 'digits, space, apostrophe, left and rigth ' +\n 'parenthesis, plus sign, comma, hyphen, ' +\n 'dot, slash, colon, equal sign, ' +\n 'question mark');\n }\n return this._createEncoderBuffer(str);\n } else if (/str$/.test(tag)) {\n return this._createEncoderBuffer(str);\n } else if (tag === 'objDesc') {\n return this._createEncoderBuffer(str);\n } else {\n return this.reporter.error('Encoding of string type: ' + tag +\n ' unsupported');\n }\n};\n\nDERNode.prototype._encodeObjid = function encodeObjid(id, values, relative) {\n if (typeof id === 'string') {\n if (!values)\n return this.reporter.error('string objid given, but no values map found');\n if (!values.hasOwnProperty(id))\n return this.reporter.error('objid not found in values map');\n id = values[id].split(/[\\s\\.]+/g);\n for (var i = 0; i < id.length; i++)\n id[i] |= 0;\n } else if (Array.isArray(id)) {\n id = id.slice();\n for (var i = 0; i < id.length; i++)\n id[i] |= 0;\n }\n\n if (!Array.isArray(id)) {\n return this.reporter.error('objid() should be either array or string, ' +\n 'got: ' + JSON.stringify(id));\n }\n\n if (!relative) {\n if (id[1] >= 40)\n return this.reporter.error('Second objid identifier OOB');\n id.splice(0, 2, id[0] * 40 + id[1]);\n }\n\n // Count number of octets\n var size = 0;\n for (var i = 0; i < id.length; i++) {\n var ident = id[i];\n for (size++; ident >= 0x80; ident >>= 7)\n size++;\n }\n\n var objid = new Buffer(size);\n var offset = objid.length - 1;\n for (var i = id.length - 1; i >= 0; i--) {\n var ident = id[i];\n objid[offset--] = ident & 0x7f;\n while ((ident >>= 7) > 0)\n objid[offset--] = 0x80 | (ident & 0x7f);\n }\n\n return this._createEncoderBuffer(objid);\n};\n\nfunction two(num) {\n if (num < 10)\n return '0' + num;\n else\n return num;\n}\n\nDERNode.prototype._encodeTime = function encodeTime(time, tag) {\n var str;\n var date = new Date(time);\n\n if (tag === 'gentime') {\n str = [\n two(date.getFullYear()),\n two(date.getUTCMonth() + 1),\n two(date.getUTCDate()),\n two(date.getUTCHours()),\n two(date.getUTCMinutes()),\n two(date.getUTCSeconds()),\n 'Z'\n ].join('');\n } else if (tag === 'utctime') {\n str = [\n two(date.getFullYear() % 100),\n two(date.getUTCMonth() + 1),\n two(date.getUTCDate()),\n two(date.getUTCHours()),\n two(date.getUTCMinutes()),\n two(date.getUTCSeconds()),\n 'Z'\n ].join('');\n } else {\n this.reporter.error('Encoding ' + tag + ' time is not supported yet');\n }\n\n return this._encodeStr(str, 'octstr');\n};\n\nDERNode.prototype._encodeNull = function encodeNull() {\n return this._createEncoderBuffer('');\n};\n\nDERNode.prototype._encodeInt = function encodeInt(num, values) {\n if (typeof num === 'string') {\n if (!values)\n return this.reporter.error('String int or enum given, but no values map');\n if (!values.hasOwnProperty(num)) {\n return this.reporter.error('Values map doesn\\'t contain: ' +\n JSON.stringify(num));\n }\n num = values[num];\n }\n\n // Bignum, assume big endian\n if (typeof num !== 'number' && !Buffer.isBuffer(num)) {\n var numArray = num.toArray();\n if (!num.sign && numArray[0] & 0x80) {\n numArray.unshift(0);\n }\n num = new Buffer(numArray);\n }\n\n if (Buffer.isBuffer(num)) {\n var size = num.length;\n if (num.length === 0)\n size++;\n\n var out = new Buffer(size);\n num.copy(out);\n if (num.length === 0)\n out[0] = 0\n return this._createEncoderBuffer(out);\n }\n\n if (num < 0x80)\n return this._createEncoderBuffer(num);\n\n if (num < 0x100)\n return this._createEncoderBuffer([0, num]);\n\n var size = 1;\n for (var i = num; i >= 0x100; i >>= 8)\n size++;\n\n var out = new Array(size);\n for (var i = out.length - 1; i >= 0; i--) {\n out[i] = num & 0xff;\n num >>= 8;\n }\n if(out[0] & 0x80) {\n out.unshift(0);\n }\n\n return this._createEncoderBuffer(new Buffer(out));\n};\n\nDERNode.prototype._encodeBool = function encodeBool(value) {\n return this._createEncoderBuffer(value ? 0xff : 0);\n};\n\nDERNode.prototype._use = function use(entity, obj) {\n if (typeof entity === 'function')\n entity = entity(obj);\n return entity._getEncoder('der').tree;\n};\n\nDERNode.prototype._skipDefault = function skipDefault(dataBuffer, reporter, parent) {\n var state = this._baseState;\n var i;\n if (state['default'] === null)\n return false;\n\n var data = dataBuffer.join();\n if (state.defaultBuffer === undefined)\n state.defaultBuffer = this._encodeValue(state['default'], reporter, parent).join();\n\n if (data.length !== state.defaultBuffer.length)\n return false;\n\n for (i=0; i < data.length; i++)\n if (data[i] !== state.defaultBuffer[i])\n return false;\n\n return true;\n};\n\n// Utility methods\n\nfunction encodeTag(tag, primitive, cls, reporter) {\n var res;\n\n if (tag === 'seqof')\n tag = 'seq';\n else if (tag === 'setof')\n tag = 'set';\n\n if (der.tagByName.hasOwnProperty(tag))\n res = der.tagByName[tag];\n else if (typeof tag === 'number' && (tag | 0) === tag)\n res = tag;\n else\n return reporter.error('Unknown tag: ' + tag);\n\n if (res >= 0x1f)\n return reporter.error('Multi-octet tag encoding unsupported');\n\n if (!primitive)\n res |= 0x20;\n\n res |= (der.tagClassByName[cls || 'universal'] << 6);\n\n return res;\n}\n","var encoders = exports;\n\nencoders.der = require('./der');\nencoders.pem = require('./pem');\n","var inherits = require('inherits');\n\nvar DEREncoder = require('./der');\n\nfunction PEMEncoder(entity) {\n DEREncoder.call(this, entity);\n this.enc = 'pem';\n};\ninherits(PEMEncoder, DEREncoder);\nmodule.exports = PEMEncoder;\n\nPEMEncoder.prototype.encode = function encode(data, options) {\n var buf = DEREncoder.prototype.encode.call(this, data);\n\n var p = buf.toString('base64');\n var out = [ '-----BEGIN ' + options.label + '-----' ];\n for (var i = 0; i < p.length; i += 64)\n out.push(p.slice(i, i + 64));\n out.push('-----END ' + options.label + '-----');\n return out.join('\\n');\n};\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(\n uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)\n ))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n Buffer = require('buffer').Buffer;\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n }\n\n if (base === 16) {\n this._parseHex(number, start);\n } else {\n this._parseBase(number, base, start);\n }\n\n if (number[0] === '-') {\n this.negative = 1;\n }\n\n this.strip();\n\n if (endian !== 'le') return;\n\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex (str, start, end) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r <<= 4;\n\n // 'a' - 'f'\n if (c >= 49 && c <= 54) {\n r |= c - 49 + 0xa;\n\n // 'A' - 'F'\n } else if (c >= 17 && c <= 22) {\n r |= c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r |= c & 0xf;\n }\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n // Scan 24-bit chunks and add them to the number\n var off = 0;\n for (i = number.length - 6, j = 0; i >= start; i -= 6) {\n w = parseHex(number, i, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n // NOTE: `0x3fffff` is intentional here, 26bits max shift + 24bit hex limb\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n if (i + 6 !== start) {\n w = parseHex(number, start, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n }\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '
/gi;\n\nexport const hasBreaks = text => {\n return /
/gi.test(text);\n};\n\nexport const splitBreaks = text => {\n return text.split(/
/gi);\n};\n\nconst breakToPlaceholder = s => {\n return s.replace(lineBreakRegex, '#br#');\n};\n\nconst placeholderToBreak = s => {\n return s.replace(/#br#/g, '
');\n};\n\nexport default {\n getRows,\n sanitizeText,\n hasBreaks,\n splitBreaks,\n lineBreakRegex,\n removeScript\n};\n","/**\n *\n */\nimport { logger } from '../../logger';\n\nlet entities = {};\nlet relationships = [];\nlet title = '';\n\nconst Cardinality = {\n ZERO_OR_ONE: 'ZERO_OR_ONE',\n ZERO_OR_MORE: 'ZERO_OR_MORE',\n ONE_OR_MORE: 'ONE_OR_MORE',\n ONLY_ONE: 'ONLY_ONE'\n};\n\nconst Identification = {\n NON_IDENTIFYING: 'NON_IDENTIFYING',\n IDENTIFYING: 'IDENTIFYING'\n};\n\nconst addEntity = function(name) {\n if (typeof entities[name] === 'undefined') {\n entities[name] = name;\n logger.debug('Added new entity :', name);\n }\n};\n\nconst getEntities = () => entities;\n\n/**\n * Add a relationship\n * @param entA The first entity in the relationship\n * @param rolA The role played by the first entity in relation to the second\n * @param entB The second entity in the relationship\n * @param rSpec The details of the relationship between the two entities\n */\nconst addRelationship = function(entA, rolA, entB, rSpec) {\n let rel = {\n entityA: entA,\n roleA: rolA,\n entityB: entB,\n relSpec: rSpec\n };\n\n relationships.push(rel);\n logger.debug('Added new relationship :', rel);\n};\n\nconst getRelationships = () => relationships;\n\n// Keep this - TODO: revisit...allow the diagram to have a title\nconst setTitle = function(txt) {\n title = txt;\n};\n\nconst getTitle = function() {\n return title;\n};\n\nconst clear = function() {\n entities = {};\n relationships = [];\n title = '';\n};\n\nexport default {\n Cardinality,\n Identification,\n addEntity,\n getEntities,\n addRelationship,\n getRelationships,\n clear,\n setTitle,\n getTitle\n};\n","const ERMarkers = {\n ONLY_ONE_START: 'ONLY_ONE_START',\n ONLY_ONE_END: 'ONLY_ONE_END',\n ZERO_OR_ONE_START: 'ZERO_OR_ONE_START',\n ZERO_OR_ONE_END: 'ZERO_OR_ONE_END',\n ONE_OR_MORE_START: 'ONE_OR_MORE_START',\n ONE_OR_MORE_END: 'ONE_OR_MORE_END',\n ZERO_OR_MORE_START: 'ZERO_OR_MORE_START',\n ZERO_OR_MORE_END: 'ZERO_OR_MORE_END'\n};\n\n/**\n * Put the markers into the svg DOM for later use with edge paths\n */\nconst insertMarkers = function(elem, conf) {\n let marker;\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', ERMarkers.ONLY_ONE_START)\n .attr('refX', 0)\n .attr('refY', 9)\n .attr('markerWidth', 18)\n .attr('markerHeight', 18)\n .attr('orient', 'auto')\n .append('path')\n .attr('stroke', conf.stroke)\n .attr('fill', 'none')\n .attr('d', 'M9,0 L9,18 M15,0 L15,18');\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', ERMarkers.ONLY_ONE_END)\n .attr('refX', 18)\n .attr('refY', 9)\n .attr('markerWidth', 18)\n .attr('markerHeight', 18)\n .attr('orient', 'auto')\n .append('path')\n .attr('stroke', conf.stroke)\n .attr('fill', 'none')\n .attr('d', 'M3,0 L3,18 M9,0 L9,18');\n\n marker = elem\n .append('defs')\n .append('marker')\n .attr('id', ERMarkers.ZERO_OR_ONE_START)\n .attr('refX', 0)\n .attr('refY', 9)\n .attr('markerWidth', 30)\n .attr('markerHeight', 18)\n .attr('orient', 'auto');\n marker\n .append('circle')\n .attr('stroke', conf.stroke)\n .attr('fill', 'white')\n .attr('cx', 21)\n .attr('cy', 9)\n .attr('r', 6);\n marker\n .append('path')\n .attr('stroke', conf.stroke)\n .attr('fill', 'none')\n .attr('d', 'M9,0 L9,18');\n\n marker = elem\n .append('defs')\n .append('marker')\n .attr('id', ERMarkers.ZERO_OR_ONE_END)\n .attr('refX', 30)\n .attr('refY', 9)\n .attr('markerWidth', 30)\n .attr('markerHeight', 18)\n .attr('orient', 'auto');\n marker\n .append('circle')\n .attr('stroke', conf.stroke)\n .attr('fill', 'white')\n .attr('cx', 9)\n .attr('cy', 9)\n .attr('r', 6);\n marker\n .append('path')\n .attr('stroke', conf.stroke)\n .attr('fill', 'none')\n .attr('d', 'M21,0 L21,18');\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', ERMarkers.ONE_OR_MORE_START)\n .attr('refX', 18)\n .attr('refY', 18)\n .attr('markerWidth', 45)\n .attr('markerHeight', 36)\n .attr('orient', 'auto')\n .append('path')\n .attr('stroke', conf.stroke)\n .attr('fill', 'none')\n .attr('d', 'M0,18 Q 18,0 36,18 Q 18,36 0,18 M42,9 L42,27');\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', ERMarkers.ONE_OR_MORE_END)\n .attr('refX', 27)\n .attr('refY', 18)\n .attr('markerWidth', 45)\n .attr('markerHeight', 36)\n .attr('orient', 'auto')\n .append('path')\n .attr('stroke', conf.stroke)\n .attr('fill', 'none')\n .attr('d', 'M3,9 L3,27 M9,18 Q27,0 45,18 Q27,36 9,18');\n\n marker = elem\n .append('defs')\n .append('marker')\n .attr('id', ERMarkers.ZERO_OR_MORE_START)\n .attr('refX', 18)\n .attr('refY', 18)\n .attr('markerWidth', 57)\n .attr('markerHeight', 36)\n .attr('orient', 'auto');\n marker\n .append('circle')\n .attr('stroke', conf.stroke)\n .attr('fill', 'white')\n .attr('cx', 48)\n .attr('cy', 18)\n .attr('r', 6);\n marker\n .append('path')\n .attr('stroke', conf.stroke)\n .attr('fill', 'none')\n .attr('d', 'M0,18 Q18,0 36,18 Q18,36 0,18');\n\n marker = elem\n .append('defs')\n .append('marker')\n .attr('id', ERMarkers.ZERO_OR_MORE_END)\n .attr('refX', 39)\n .attr('refY', 18)\n .attr('markerWidth', 57)\n .attr('markerHeight', 36)\n .attr('orient', 'auto');\n marker\n .append('circle')\n .attr('stroke', conf.stroke)\n .attr('fill', 'white')\n .attr('cx', 9)\n .attr('cy', 18)\n .attr('r', 6);\n marker\n .append('path')\n .attr('stroke', conf.stroke)\n .attr('fill', 'none')\n .attr('d', 'M21,18 Q39,0 57,18 Q39,36 21,18');\n\n return;\n};\n\nexport default {\n ERMarkers,\n insertMarkers\n};\n","import graphlib from 'graphlib';\nimport { line, curveBasis, select } from 'd3';\nimport erDb from './erDb';\nimport erParser from './parser/erDiagram';\nimport dagre from 'dagre';\nimport { getConfig } from '../../config';\nimport { logger } from '../../logger';\nimport erMarkers from './erMarkers';\n\nconst conf = {};\n\n/**\n * Allows the top-level API module to inject config specific to this renderer,\n * storing it in the local conf object. Note that generic config still needs to be\n * retrieved using getConfig() imported from the config module\n */\nexport const setConf = function(cnf) {\n const keys = Object.keys(cnf);\n for (let i = 0; i < keys.length; i++) {\n conf[keys[i]] = cnf[keys[i]];\n }\n};\n\n/**\n * Use D3 to construct the svg elements for the entities\n * @param svgNode the svg node that contains the diagram\n * @param entities The entities to be drawn\n * @param graph The graph that contains the vertex and edge definitions post-layout\n * @return The first entity that was inserted\n */\nconst drawEntities = function(svgNode, entities, graph) {\n const keys = Object.keys(entities);\n let firstOne;\n\n keys.forEach(function(id) {\n // Create a group for each entity\n const groupNode = svgNode.append('g').attr('id', id);\n\n firstOne = firstOne === undefined ? id : firstOne;\n\n // Label the entity - this is done first so that we can get the bounding box\n // which then determines the size of the rectangle\n const textId = 'entity-' + id;\n const textNode = groupNode\n .append('text')\n .attr('class', 'er entityLabel')\n .attr('id', textId)\n .attr('x', 0)\n .attr('y', 0)\n .attr('dominant-baseline', 'middle')\n .attr('text-anchor', 'middle')\n .attr(\n 'style',\n 'font-family: ' + getConfig().fontFamily + '; font-size: ' + conf.fontSize + 'px'\n )\n .text(id);\n\n // Calculate the width and height of the entity\n const textBBox = textNode.node().getBBox();\n const entityWidth = Math.max(conf.minEntityWidth, textBBox.width + conf.entityPadding * 2);\n const entityHeight = Math.max(conf.minEntityHeight, textBBox.height + conf.entityPadding * 2);\n\n // Make sure the text gets centred relative to the entity box\n textNode.attr('transform', 'translate(' + entityWidth / 2 + ',' + entityHeight / 2 + ')');\n\n // Draw the rectangle - insert it before the text so that the text is not obscured\n const rectNode = groupNode\n .insert('rect', '#' + textId)\n .attr('class', 'er entityBox')\n .attr('fill', conf.fill)\n .attr('fill-opacity', '100%')\n .attr('stroke', conf.stroke)\n .attr('x', 0)\n .attr('y', 0)\n .attr('width', entityWidth)\n .attr('height', entityHeight);\n\n const rectBBox = rectNode.node().getBBox();\n\n // Add the entity to the graph\n graph.setNode(id, {\n width: rectBBox.width,\n height: rectBBox.height,\n shape: 'rect',\n id: id\n });\n });\n return firstOne;\n}; // drawEntities\n\nconst adjustEntities = function(svgNode, graph) {\n graph.nodes().forEach(function(v) {\n if (typeof v !== 'undefined' && typeof graph.node(v) !== 'undefined') {\n svgNode\n .select('#' + v)\n .attr(\n 'transform',\n 'translate(' +\n (graph.node(v).x - graph.node(v).width / 2) +\n ',' +\n (graph.node(v).y - graph.node(v).height / 2) +\n ' )'\n );\n }\n });\n return;\n};\n\nconst getEdgeName = function(rel) {\n return (rel.entityA + rel.roleA + rel.entityB).replace(/\\s/g, '');\n};\n\n/**\n * Add each relationship to the graph\n * @param relationships the relationships to be added\n * @param g the graph\n * @return {Array} The array of relationships\n */\nconst addRelationships = function(relationships, g) {\n relationships.forEach(function(r) {\n g.setEdge(r.entityA, r.entityB, { relationship: r }, getEdgeName(r));\n });\n return relationships;\n}; // addRelationships\n\nlet relCnt = 0;\n/**\n * Draw a relationship using edge information from the graph\n * @param svg the svg node\n * @param rel the relationship to draw in the svg\n * @param g the graph containing the edge information\n * @param insert the insertion point in the svg DOM (because relationships have markers that need to sit 'behind' opaque entity boxes)\n */\nconst drawRelationshipFromLayout = function(svg, rel, g, insert) {\n relCnt++;\n\n // Find the edge relating to this relationship\n const edge = g.edge(rel.entityA, rel.entityB, getEdgeName(rel));\n\n // Get a function that will generate the line path\n const lineFunction = line()\n .x(function(d) {\n return d.x;\n })\n .y(function(d) {\n return d.y;\n })\n .curve(curveBasis);\n\n // Insert the line at the right place\n const svgPath = svg\n .insert('path', '#' + insert)\n .attr('class', 'er relationshipLine')\n .attr('d', lineFunction(edge.points))\n .attr('stroke', conf.stroke)\n .attr('fill', 'none');\n\n // ...and with dashes if necessary\n if (rel.relSpec.relType === erDb.Identification.NON_IDENTIFYING) {\n svgPath.attr('stroke-dasharray', '8,8');\n }\n\n // TODO: Understand this better\n let url = '';\n if (conf.arrowMarkerAbsolute) {\n url =\n window.location.protocol +\n '//' +\n window.location.host +\n window.location.pathname +\n window.location.search;\n url = url.replace(/\\(/g, '\\\\(');\n url = url.replace(/\\)/g, '\\\\)');\n }\n\n // Decide which start and end markers it needs. It may be possible to be more concise here\n // by reversing a start marker to make an end marker...but this will do for now\n\n // Note that the 'A' entity's marker is at the end of the relationship and the 'B' entity's marker is at the start\n switch (rel.relSpec.cardA) {\n case erDb.Cardinality.ZERO_OR_ONE:\n svgPath.attr('marker-end', 'url(' + url + '#' + erMarkers.ERMarkers.ZERO_OR_ONE_END + ')');\n break;\n case erDb.Cardinality.ZERO_OR_MORE:\n svgPath.attr('marker-end', 'url(' + url + '#' + erMarkers.ERMarkers.ZERO_OR_MORE_END + ')');\n break;\n case erDb.Cardinality.ONE_OR_MORE:\n svgPath.attr('marker-end', 'url(' + url + '#' + erMarkers.ERMarkers.ONE_OR_MORE_END + ')');\n break;\n case erDb.Cardinality.ONLY_ONE:\n svgPath.attr('marker-end', 'url(' + url + '#' + erMarkers.ERMarkers.ONLY_ONE_END + ')');\n break;\n }\n\n switch (rel.relSpec.cardB) {\n case erDb.Cardinality.ZERO_OR_ONE:\n svgPath.attr(\n 'marker-start',\n 'url(' + url + '#' + erMarkers.ERMarkers.ZERO_OR_ONE_START + ')'\n );\n break;\n case erDb.Cardinality.ZERO_OR_MORE:\n svgPath.attr(\n 'marker-start',\n 'url(' + url + '#' + erMarkers.ERMarkers.ZERO_OR_MORE_START + ')'\n );\n break;\n case erDb.Cardinality.ONE_OR_MORE:\n svgPath.attr(\n 'marker-start',\n 'url(' + url + '#' + erMarkers.ERMarkers.ONE_OR_MORE_START + ')'\n );\n break;\n case erDb.Cardinality.ONLY_ONE:\n svgPath.attr('marker-start', 'url(' + url + '#' + erMarkers.ERMarkers.ONLY_ONE_START + ')');\n break;\n }\n\n // Now label the relationship\n\n // Find the half-way point\n const len = svgPath.node().getTotalLength();\n const labelPoint = svgPath.node().getPointAtLength(len * 0.5);\n\n // Append a text node containing the label\n const labelId = 'rel' + relCnt;\n\n const labelNode = svg\n .append('text')\n .attr('class', 'er relationshipLabel')\n .attr('id', labelId)\n .attr('x', labelPoint.x)\n .attr('y', labelPoint.y)\n .attr('text-anchor', 'middle')\n .attr('dominant-baseline', 'middle')\n .attr(\n 'style',\n 'font-family: ' + getConfig().fontFamily + '; font-size: ' + conf.fontSize + 'px'\n )\n .text(rel.roleA);\n\n // Figure out how big the opaque 'container' rectangle needs to be\n const labelBBox = labelNode.node().getBBox();\n\n // Insert the opaque rectangle before the text label\n svg\n .insert('rect', '#' + labelId)\n .attr('class', 'er relationshipLabelBox')\n .attr('x', labelPoint.x - labelBBox.width / 2)\n .attr('y', labelPoint.y - labelBBox.height / 2)\n .attr('width', labelBBox.width)\n .attr('height', labelBBox.height)\n .attr('fill', 'white')\n .attr('fill-opacity', '85%');\n\n return;\n};\n\n/**\n * Draw en E-R diagram in the tag with id: id based on the text definition of the diagram\n * @param text the text of the diagram\n * @param id the unique id of the DOM node that contains the diagram\n */\nexport const draw = function(text, id) {\n logger.info('Drawing ER diagram');\n erDb.clear();\n const parser = erParser.parser;\n parser.yy = erDb;\n\n // Parse the text to populate erDb\n try {\n parser.parse(text);\n } catch (err) {\n logger.debug('Parsing failed');\n }\n\n // Get a reference to the svg node that contains the text\n const svg = select(`[id='${id}']`);\n\n // Add cardinality marker definitions to the svg\n erMarkers.insertMarkers(svg, conf);\n\n // Now we have to construct the diagram in a specific way:\n // ---\n // 1. Create all the entities in the svg node at 0,0, but with the correct dimensions (allowing for text content)\n // 2. Make sure they are all added to the graph\n // 3. Add all the edges (relationships) to the graph aswell\n // 4. Let dagre do its magic to layout the graph. This assigns:\n // - the centre co-ordinates for each node, bearing in mind the dimensions and edge relationships\n // - the path co-ordinates for each edge\n // But it has no impact on the svg child nodes - the diagram remains with every entity rooted at 0,0\n // 5. Now assign a transform to each entity in the svg node so that it gets drawn in the correct place, as determined by\n // its centre point, which is obtained from the graph, and it's width and height\n // 6. And finally, create all the edges in the svg node using information from the graph\n // ---\n\n // Create the graph\n let g;\n\n // TODO: Explore directed vs undirected graphs, and how the layout is affected\n // An E-R diagram could be said to be undirected, but there is merit in setting\n // the direction from parent to child in a one-to-many as this influences graphlib to\n // put the parent above the child (does it?), which is intuitive. Most relationships\n // in ER diagrams are one-to-many.\n g = new graphlib.Graph({\n multigraph: true,\n directed: true,\n compound: false\n })\n .setGraph({\n rankdir: conf.layoutDirection,\n marginx: 20,\n marginy: 20,\n nodesep: 100,\n edgesep: 100,\n ranksep: 100\n })\n .setDefaultEdgeLabel(function() {\n return {};\n });\n\n // Draw the entities (at 0,0), returning the first svg node that got\n // inserted - this represents the insertion point for relationship paths\n const firstEntity = drawEntities(svg, erDb.getEntities(), g);\n\n // TODO: externalise the addition of entities to the graph - it's a bit 'buried' in the above\n\n // Add all the relationships to the graph\n const relationships = addRelationships(erDb.getRelationships(), g);\n\n dagre.layout(g); // Node and edge positions will be updated\n\n // Adjust the positions of the entities so that they adhere to the layout\n adjustEntities(svg, g);\n\n // Draw the relationships\n relationships.forEach(function(rel) {\n drawRelationshipFromLayout(svg, rel, g, firstEntity);\n });\n\n const padding = conf.diagramPadding;\n\n const svgBounds = svg.node().getBBox();\n const width = svgBounds.width + padding * 2;\n const height = svgBounds.height + padding * 2;\n\n if (conf.useMaxWidth) {\n svg.attr('width', '100%');\n svg.attr('style', `max-width: ${width}px;`);\n } else {\n svg.attr('height', height);\n svg.attr('width', width);\n }\n\n svg.attr('viewBox', `${svgBounds.x - padding} ${svgBounds.y - padding} ${width} ${height}`);\n}; // draw\n\nexport default {\n setConf,\n draw\n};\n","/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[6,12],$V1=[1,7],$V2=[1,10],$V3=[1,11],$V4=[1,12],$V5=[1,13],$V6=[12,19,20],$V7=[15,16,17,18];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"ER_DIAGRAM\":4,\"document\":5,\"EOF\":6,\"statement\":7,\"entityName\":8,\"relSpec\":9,\":\":10,\"role\":11,\"ALPHANUM\":12,\"cardinality\":13,\"relType\":14,\"ZERO_OR_ONE\":15,\"ZERO_OR_MORE\":16,\"ONE_OR_MORE\":17,\"ONLY_ONE\":18,\"NON_IDENTIFYING\":19,\"IDENTIFYING\":20,\"WORD\":21,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",4:\"ER_DIAGRAM\",6:\"EOF\",10:\":\",12:\"ALPHANUM\",15:\"ZERO_OR_ONE\",16:\"ZERO_OR_MORE\",17:\"ONE_OR_MORE\",18:\"ONLY_ONE\",19:\"NON_IDENTIFYING\",20:\"IDENTIFYING\",21:\"WORD\"},\nproductions_: [0,[3,3],[5,0],[5,2],[7,5],[8,1],[9,3],[13,1],[13,1],[13,1],[13,1],[14,1],[14,1],[11,1],[11,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 1:\n /*console.log('finished parsing');*/ \nbreak;\ncase 4:\n\n yy.addEntity($$[$0-4]); \n yy.addEntity($$[$0-2]); \n yy.addRelationship($$[$0-4], $$[$0], $$[$0-2], $$[$0-3]);\n /*console.log($$[$0-4] + $$[$0-3] + $$[$0-2] + ':' + $$[$0]);*/\n \nbreak;\ncase 5:\n this.$ = $$[$0]; /*console.log('Entity: ' + $$[$0]);*/ \nbreak;\ncase 6:\n\n this.$ = { cardA: $$[$0], relType: $$[$0-1], cardB: $$[$0-2] };\n /*console.log('relSpec: ' + $$[$0] + $$[$0-1] + $$[$0-2]);*/\n \nbreak;\ncase 7:\n this.$ = yy.Cardinality.ZERO_OR_ONE; \nbreak;\ncase 8:\n this.$ = yy.Cardinality.ZERO_OR_MORE; \nbreak;\ncase 9:\n this.$ = yy.Cardinality.ONE_OR_MORE; \nbreak;\ncase 10:\n this.$ = yy.Cardinality.ONLY_ONE; \nbreak;\ncase 11:\n this.$ = yy.Identification.NON_IDENTIFYING; \nbreak;\ncase 12:\n this.$ = yy.Identification.IDENTIFYING; \nbreak;\ncase 13:\n this.$ = $$[$0].replace(/\"/g, ''); \nbreak;\ncase 14:\n this.$ = $$[$0]; \nbreak;\n}\n},\ntable: [{3:1,4:[1,2]},{1:[3]},o($V0,[2,2],{5:3}),{6:[1,4],7:5,8:6,12:$V1},{1:[2,1]},o($V0,[2,3]),{9:8,13:9,15:$V2,16:$V3,17:$V4,18:$V5},o([10,15,16,17,18],[2,5]),{8:14,12:$V1},{14:15,19:[1,16],20:[1,17]},o($V6,[2,7]),o($V6,[2,8]),o($V6,[2,9]),o($V6,[2,10]),{10:[1,18]},{13:19,15:$V2,16:$V3,17:$V4,18:$V5},o($V7,[2,11]),o($V7,[2,12]),{11:20,12:[1,22],21:[1,21]},{12:[2,6]},o($V0,[2,4]),o($V0,[2,13]),o($V0,[2,14])],\ndefaultActions: {4:[2,1],19:[2,6]},\nparseError: function parseError (str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer.lex() || EOF;\n if (typeof token !== 'number') {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {\"case-insensitive\":true},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0:/* skip whitespace */\nbreak;\ncase 1:return 'SPACE';\nbreak;\ncase 2:return 21;\nbreak;\ncase 3:return 4;\nbreak;\ncase 4:return 15;\nbreak;\ncase 5:return 16;\nbreak;\ncase 6:return 17;\nbreak;\ncase 7:return 18;\nbreak;\ncase 8:return 15;\nbreak;\ncase 9:return 16;\nbreak;\ncase 10:return 17;\nbreak;\ncase 11:return 19;\nbreak;\ncase 12:return 20;\nbreak;\ncase 13:return 19;\nbreak;\ncase 14:return 19;\nbreak;\ncase 15:return 12;\nbreak;\ncase 16:return yy_.yytext[0];\nbreak;\ncase 17:return 6;\nbreak;\n}\n},\nrules: [/^(?:\\s+)/i,/^(?:[\\s]+)/i,/^(?:\"[^\"]*\")/i,/^(?:erDiagram\\b)/i,/^(?:\\|o\\b)/i,/^(?:\\}o\\b)/i,/^(?:\\}\\|)/i,/^(?:\\|\\|)/i,/^(?:o\\|)/i,/^(?:o\\{)/i,/^(?:\\|\\{)/i,/^(?:\\.\\.)/i,/^(?:--)/i,/^(?:\\.-)/i,/^(?:-\\.)/i,/^(?:[A-Za-z][A-Za-z0-9\\-]*)/i,/^(?:.)/i,/^(?:$)/i],\nconditions: {\"INITIAL\":{\"rules\":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain (args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}","const getStyles = options =>\n `\n .entityBox {\n fill: ${options.mainBkg};\n stroke: ${options.nodeBorder};\n }\n\n .relationshipLabelBox {\n fill: ${options.edgeLabelBackground};\n fillopactity: 0;\n background-color: ${options.edgeLabelBackground};\n rect {\n opacity: 0.5;\n }\n }\n\n .relationshipLine {\n stroke: ${options.lineColor};\n }\n`;\n\nexport default getStyles;\n","import dagreD3 from 'dagre-d3';\n\nfunction question(parent, bbox, node) {\n const w = bbox.width;\n const h = bbox.height;\n const s = (w + h) * 0.9;\n const points = [\n { x: s / 2, y: 0 },\n { x: s, y: -s / 2 },\n { x: s / 2, y: -s },\n { x: 0, y: -s / 2 }\n ];\n const shapeSvg = insertPolygonShape(parent, s, s, points);\n node.intersect = function(point) {\n return dagreD3.intersect.polygon(node, points, point);\n };\n return shapeSvg;\n}\n\nfunction hexagon(parent, bbox, node) {\n const f = 4;\n const h = bbox.height;\n const m = h / f;\n const w = bbox.width + 2 * m;\n const points = [\n { x: m, y: 0 },\n { x: w - m, y: 0 },\n { x: w, y: -h / 2 },\n { x: w - m, y: -h },\n { x: m, y: -h },\n { x: 0, y: -h / 2 }\n ];\n const shapeSvg = insertPolygonShape(parent, w, h, points);\n node.intersect = function(point) {\n return dagreD3.intersect.polygon(node, points, point);\n };\n return shapeSvg;\n}\n\nfunction rect_left_inv_arrow(parent, bbox, node) {\n const w = bbox.width;\n const h = bbox.height;\n const points = [\n { x: -h / 2, y: 0 },\n { x: w, y: 0 },\n { x: w, y: -h },\n { x: -h / 2, y: -h },\n { x: 0, y: -h / 2 }\n ];\n const shapeSvg = insertPolygonShape(parent, w, h, points);\n node.intersect = function(point) {\n return dagreD3.intersect.polygon(node, points, point);\n };\n return shapeSvg;\n}\n\nfunction lean_right(parent, bbox, node) {\n const w = bbox.width;\n const h = bbox.height;\n const points = [\n { x: (-2 * h) / 6, y: 0 },\n { x: w - h / 6, y: 0 },\n { x: w + (2 * h) / 6, y: -h },\n { x: h / 6, y: -h }\n ];\n const shapeSvg = insertPolygonShape(parent, w, h, points);\n node.intersect = function(point) {\n return dagreD3.intersect.polygon(node, points, point);\n };\n return shapeSvg;\n}\n\nfunction lean_left(parent, bbox, node) {\n const w = bbox.width;\n const h = bbox.height;\n const points = [\n { x: (2 * h) / 6, y: 0 },\n { x: w + h / 6, y: 0 },\n { x: w - (2 * h) / 6, y: -h },\n { x: -h / 6, y: -h }\n ];\n const shapeSvg = insertPolygonShape(parent, w, h, points);\n node.intersect = function(point) {\n return dagreD3.intersect.polygon(node, points, point);\n };\n return shapeSvg;\n}\n\nfunction trapezoid(parent, bbox, node) {\n const w = bbox.width;\n const h = bbox.height;\n const points = [\n { x: (-2 * h) / 6, y: 0 },\n { x: w + (2 * h) / 6, y: 0 },\n { x: w - h / 6, y: -h },\n { x: h / 6, y: -h }\n ];\n const shapeSvg = insertPolygonShape(parent, w, h, points);\n node.intersect = function(point) {\n return dagreD3.intersect.polygon(node, points, point);\n };\n return shapeSvg;\n}\n\nfunction inv_trapezoid(parent, bbox, node) {\n const w = bbox.width;\n const h = bbox.height;\n const points = [\n { x: h / 6, y: 0 },\n { x: w - h / 6, y: 0 },\n { x: w + (2 * h) / 6, y: -h },\n { x: (-2 * h) / 6, y: -h }\n ];\n const shapeSvg = insertPolygonShape(parent, w, h, points);\n node.intersect = function(point) {\n return dagreD3.intersect.polygon(node, points, point);\n };\n return shapeSvg;\n}\n\nfunction rect_right_inv_arrow(parent, bbox, node) {\n const w = bbox.width;\n const h = bbox.height;\n const points = [\n { x: 0, y: 0 },\n { x: w + h / 2, y: 0 },\n { x: w, y: -h / 2 },\n { x: w + h / 2, y: -h },\n { x: 0, y: -h }\n ];\n const shapeSvg = insertPolygonShape(parent, w, h, points);\n node.intersect = function(point) {\n return dagreD3.intersect.polygon(node, points, point);\n };\n return shapeSvg;\n}\n\nfunction stadium(parent, bbox, node) {\n const h = bbox.height;\n const w = bbox.width + h / 4;\n\n const shapeSvg = parent\n .insert('rect', ':first-child')\n .attr('rx', h / 2)\n .attr('ry', h / 2)\n .attr('x', -w / 2)\n .attr('y', -h / 2)\n .attr('width', w)\n .attr('height', h);\n\n node.intersect = function(point) {\n return dagreD3.intersect.rect(node, point);\n };\n return shapeSvg;\n}\n\nfunction subroutine(parent, bbox, node) {\n const w = bbox.width;\n const h = bbox.height;\n const points = [\n { x: 0, y: 0 },\n { x: w, y: 0 },\n { x: w, y: -h },\n { x: 0, y: -h },\n { x: 0, y: 0 },\n { x: -8, y: 0 },\n { x: w + 8, y: 0 },\n { x: w + 8, y: -h },\n { x: -8, y: -h },\n { x: -8, y: 0 }\n ];\n const shapeSvg = insertPolygonShape(parent, w, h, points);\n node.intersect = function(point) {\n return dagreD3.intersect.polygon(node, points, point);\n };\n return shapeSvg;\n}\n\nfunction cylinder(parent, bbox, node) {\n const w = bbox.width;\n const rx = w / 2;\n const ry = rx / (2.5 + w / 50);\n const h = bbox.height + ry;\n\n const shape =\n 'M 0,' +\n ry +\n ' a ' +\n rx +\n ',' +\n ry +\n ' 0,0,0 ' +\n w +\n ' 0 a ' +\n rx +\n ',' +\n ry +\n ' 0,0,0 ' +\n -w +\n ' 0 l 0,' +\n h +\n ' a ' +\n rx +\n ',' +\n ry +\n ' 0,0,0 ' +\n w +\n ' 0 l 0,' +\n -h;\n\n const shapeSvg = parent\n .attr('label-offset-y', ry)\n .insert('path', ':first-child')\n .attr('d', shape)\n .attr('transform', 'translate(' + -w / 2 + ',' + -(h / 2 + ry) + ')');\n\n node.intersect = function(point) {\n const pos = dagreD3.intersect.rect(node, point);\n const x = pos.x - node.x;\n\n if (\n rx != 0 &&\n (Math.abs(x) < node.width / 2 ||\n (Math.abs(x) == node.width / 2 && Math.abs(pos.y - node.y) > node.height / 2 - ry))\n ) {\n // ellipsis equation: x*x / a*a + y*y / b*b = 1\n // solve for y to get adjustion value for pos.y\n let y = ry * ry * (1 - (x * x) / (rx * rx));\n if (y != 0) y = Math.sqrt(y);\n y = ry - y;\n if (point.y - node.y > 0) y = -y;\n\n pos.y += y;\n }\n\n return pos;\n };\n\n return shapeSvg;\n}\n\nexport function addToRender(render) {\n render.shapes().question = question;\n render.shapes().hexagon = hexagon;\n render.shapes().stadium = stadium;\n render.shapes().subroutine = subroutine;\n render.shapes().cylinder = cylinder;\n\n // Add custom shape for box with inverted arrow on left side\n render.shapes().rect_left_inv_arrow = rect_left_inv_arrow;\n\n // Add custom shape for box with inverted arrow on left side\n render.shapes().lean_right = lean_right;\n\n // Add custom shape for box with inverted arrow on left side\n render.shapes().lean_left = lean_left;\n\n // Add custom shape for box with inverted arrow on left side\n render.shapes().trapezoid = trapezoid;\n\n // Add custom shape for box with inverted arrow on left side\n render.shapes().inv_trapezoid = inv_trapezoid;\n\n // Add custom shape for box with inverted arrow on right side\n render.shapes().rect_right_inv_arrow = rect_right_inv_arrow;\n}\n\nexport function addToRenderV2(addShape) {\n addShape({ question });\n addShape({ hexagon });\n addShape({ stadium });\n addShape({ subroutine });\n addShape({ cylinder });\n\n // Add custom shape for box with inverted arrow on left side\n addShape({ rect_left_inv_arrow });\n\n // Add custom shape for box with inverted arrow on left side\n addShape({ lean_right });\n\n // Add custom shape for box with inverted arrow on left side\n addShape({ lean_left });\n\n // Add custom shape for box with inverted arrow on left side\n addShape({ trapezoid });\n\n // Add custom shape for box with inverted arrow on left side\n addShape({ inv_trapezoid });\n\n // Add custom shape for box with inverted arrow on right side\n addShape({ rect_right_inv_arrow });\n}\n\nfunction insertPolygonShape(parent, w, h, points) {\n return parent\n .insert('polygon', ':first-child')\n .attr(\n 'points',\n points\n .map(function(d) {\n return d.x + ',' + d.y;\n })\n .join(' ')\n )\n .attr('transform', 'translate(' + -w / 2 + ',' + h / 2 + ')');\n}\n\nexport default {\n addToRender,\n addToRenderV2\n};\n","import { select } from 'd3';\nimport { logger } from '../../logger'; // eslint-disable-line\nimport utils from '../../utils';\nimport { getConfig } from '../../config';\nimport common from '../common/common';\n\n// const MERMAID_DOM_ID_PREFIX = 'mermaid-dom-id-';\nconst MERMAID_DOM_ID_PREFIX = '';\n\nlet config = getConfig();\nlet vertices = {};\nlet edges = [];\nlet classes = [];\nlet subGraphs = [];\nlet subGraphLookup = {};\nlet tooltips = {};\nlet subCount = 0;\nlet firstGraphFlag = true;\nlet direction;\n// Functions to be run after graph rendering\nlet funs = [];\n\n/**\n * Function called by parser when a node definition has been found\n * @param id\n * @param text\n * @param type\n * @param style\n * @param classes\n */\nexport const addVertex = function(_id, text, type, style, classes) {\n let txt;\n let id = _id;\n if (typeof id === 'undefined') {\n return;\n }\n if (id.trim().length === 0) {\n return;\n }\n\n if (id[0].match(/\\d/)) id = MERMAID_DOM_ID_PREFIX + id;\n\n if (typeof vertices[id] === 'undefined') {\n vertices[id] = { id: id, styles: [], classes: [] };\n }\n if (typeof text !== 'undefined') {\n config = getConfig();\n txt = common.sanitizeText(text.trim(), config);\n\n // strip quotes if string starts and ends with a quote\n if (txt[0] === '\"' && txt[txt.length - 1] === '\"') {\n txt = txt.substring(1, txt.length - 1);\n }\n\n vertices[id].text = txt;\n } else {\n if (typeof vertices[id].text === 'undefined') {\n vertices[id].text = _id;\n }\n }\n if (typeof type !== 'undefined') {\n vertices[id].type = type;\n }\n if (typeof style !== 'undefined') {\n if (style !== null) {\n style.forEach(function(s) {\n vertices[id].styles.push(s);\n });\n }\n }\n if (typeof classes !== 'undefined') {\n if (classes !== null) {\n classes.forEach(function(s) {\n vertices[id].classes.push(s);\n });\n }\n }\n};\n\n/**\n * Function called by parser when a link/edge definition has been found\n * @param start\n * @param end\n * @param type\n * @param linktext\n */\nexport const addSingleLink = function(_start, _end, type, linktext) {\n let start = _start;\n let end = _end;\n if (start[0].match(/\\d/)) start = MERMAID_DOM_ID_PREFIX + start;\n if (end[0].match(/\\d/)) end = MERMAID_DOM_ID_PREFIX + end;\n // logger.info('Got edge...', start, end);\n\n const edge = { start: start, end: end, type: undefined, text: '' };\n linktext = type.text;\n\n if (typeof linktext !== 'undefined') {\n edge.text = common.sanitizeText(linktext.trim(), config);\n\n // strip quotes if string starts and exnds with a quote\n if (edge.text[0] === '\"' && edge.text[edge.text.length - 1] === '\"') {\n edge.text = edge.text.substring(1, edge.text.length - 1);\n }\n }\n\n if (typeof type !== 'undefined') {\n edge.type = type.type;\n edge.stroke = type.stroke;\n }\n edges.push(edge);\n};\nexport const addLink = function(_start, _end, type, linktext) {\n let i, j;\n for (i = 0; i < _start.length; i++) {\n for (j = 0; j < _end.length; j++) {\n addSingleLink(_start[i], _end[j], type, linktext);\n }\n }\n};\n\n/**\n * Updates a link's line interpolation algorithm\n * @param pos\n * @param interpolate\n */\nexport const updateLinkInterpolate = function(positions, interp) {\n positions.forEach(function(pos) {\n if (pos === 'default') {\n edges.defaultInterpolate = interp;\n } else {\n edges[pos].interpolate = interp;\n }\n });\n};\n\n/**\n * Updates a link with a style\n * @param pos\n * @param style\n */\nexport const updateLink = function(positions, style) {\n positions.forEach(function(pos) {\n if (pos === 'default') {\n edges.defaultStyle = style;\n } else {\n if (utils.isSubstringInArray('fill', style) === -1) {\n style.push('fill:none');\n }\n edges[pos].style = style;\n }\n });\n};\n\nexport const addClass = function(id, style) {\n if (typeof classes[id] === 'undefined') {\n classes[id] = { id: id, styles: [], textStyles: [] };\n }\n\n if (typeof style !== 'undefined') {\n if (style !== null) {\n style.forEach(function(s) {\n if (s.match('color')) {\n const newStyle1 = s.replace('fill', 'bgFill');\n const newStyle2 = newStyle1.replace('color', 'fill');\n classes[id].textStyles.push(newStyle2);\n }\n classes[id].styles.push(s);\n });\n }\n }\n};\n\n/**\n * Called by parser when a graph definition is found, stores the direction of the chart.\n * @param dir\n */\nexport const setDirection = function(dir) {\n direction = dir;\n if (direction.match(/.*)) {\n direction = 'RL';\n }\n if (direction.match(/.*\\^/)) {\n direction = 'BT';\n }\n if (direction.match(/.*>/)) {\n direction = 'LR';\n }\n if (direction.match(/.*v/)) {\n direction = 'TB';\n }\n};\n\n/**\n * Called by parser when a special node is found, e.g. a clickable element.\n * @param ids Comma separated list of ids\n * @param className Class to add\n */\nexport const setClass = function(ids, className) {\n ids.split(',').forEach(function(_id) {\n let id = _id;\n if (_id[0].match(/\\d/)) id = MERMAID_DOM_ID_PREFIX + id;\n if (typeof vertices[id] !== 'undefined') {\n vertices[id].classes.push(className);\n }\n\n if (typeof subGraphLookup[id] !== 'undefined') {\n subGraphLookup[id].classes.push(className);\n }\n });\n};\n\nconst setTooltip = function(ids, tooltip) {\n ids.split(',').forEach(function(id) {\n if (typeof tooltip !== 'undefined') {\n tooltips[id] = common.sanitizeText(tooltip, config);\n }\n });\n};\n\nconst setClickFun = function(_id, functionName) {\n let id = _id;\n if (_id[0].match(/\\d/)) id = MERMAID_DOM_ID_PREFIX + id;\n if (getConfig().securityLevel !== 'loose') {\n return;\n }\n if (typeof functionName === 'undefined') {\n return;\n }\n if (typeof vertices[id] !== 'undefined') {\n funs.push(function() {\n const elem = document.querySelector(`[id=\"${id}\"]`);\n if (elem !== null) {\n elem.addEventListener(\n 'click',\n function() {\n utils.runFunc(functionName, id);\n },\n false\n );\n }\n });\n }\n};\n\n/**\n * Called by parser when a link is found. Adds the URL to the vertex data.\n * @param ids Comma separated list of ids\n * @param linkStr URL to create a link for\n * @param tooltip Tooltip for the clickable element\n */\nexport const setLink = function(ids, linkStr, tooltip) {\n ids.split(',').forEach(function(_id) {\n let id = _id;\n if (_id[0].match(/\\d/)) id = MERMAID_DOM_ID_PREFIX + id;\n if (typeof vertices[id] !== 'undefined') {\n vertices[id].link = utils.formatUrl(linkStr, config);\n }\n });\n setTooltip(ids, tooltip);\n setClass(ids, 'clickable');\n};\nexport const getTooltip = function(id) {\n return tooltips[id];\n};\n\n/**\n * Called by parser when a click definition is found. Registers an event handler.\n * @param ids Comma separated list of ids\n * @param functionName Function to be called on click\n * @param tooltip Tooltip for the clickable element\n */\nexport const setClickEvent = function(ids, functionName, tooltip) {\n ids.split(',').forEach(function(id) {\n setClickFun(id, functionName);\n });\n setTooltip(ids, tooltip);\n setClass(ids, 'clickable');\n};\n\nexport const bindFunctions = function(element) {\n funs.forEach(function(fun) {\n fun(element);\n });\n};\nexport const getDirection = function() {\n return direction.trim();\n};\n/**\n * Retrieval function for fetching the found nodes after parsing has completed.\n * @returns {{}|*|vertices}\n */\nexport const getVertices = function() {\n return vertices;\n};\n\n/**\n * Retrieval function for fetching the found links after parsing has completed.\n * @returns {{}|*|edges}\n */\nexport const getEdges = function() {\n return edges;\n};\n\n/**\n * Retrieval function for fetching the found class definitions after parsing has completed.\n * @returns {{}|*|classes}\n */\nexport const getClasses = function() {\n return classes;\n};\n\nconst setupToolTips = function(element) {\n let tooltipElem = select('.mermaidTooltip');\n if ((tooltipElem._groups || tooltipElem)[0][0] === null) {\n tooltipElem = select('body')\n .append('div')\n .attr('class', 'mermaidTooltip')\n .style('opacity', 0);\n }\n\n const svg = select(element).select('svg');\n\n const nodes = svg.selectAll('g.node');\n nodes\n .on('mouseover', function() {\n const el = select(this);\n const title = el.attr('title');\n\n // Dont try to draw a tooltip if no data is provided\n if (title === null) {\n return;\n }\n const rect = this.getBoundingClientRect();\n\n tooltipElem\n .transition()\n .duration(200)\n .style('opacity', '.9');\n tooltipElem\n .html(el.attr('title'))\n .style('left', window.scrollX + rect.left + (rect.right - rect.left) / 2 + 'px')\n .style('top', window.scrollY + rect.top - 14 + document.body.scrollTop + 'px');\n el.classed('hover', true);\n })\n .on('mouseout', function() {\n tooltipElem\n .transition()\n .duration(500)\n .style('opacity', 0);\n const el = select(this);\n el.classed('hover', false);\n });\n};\nfuns.push(setupToolTips);\n\n/**\n * Clears the internal graph db so that a new graph can be parsed.\n */\nexport const clear = function() {\n vertices = {};\n classes = {};\n edges = [];\n funs = [];\n funs.push(setupToolTips);\n subGraphs = [];\n subGraphLookup = {};\n subCount = 0;\n tooltips = [];\n firstGraphFlag = true;\n};\n/**\n *\n * @returns {string}\n */\nexport const defaultStyle = function() {\n return 'fill:#ffa;stroke: #f66; stroke-width: 3px; stroke-dasharray: 5, 5;fill:#ffa;stroke: #666;';\n};\n\n/**\n * Clears the internal graph db so that a new graph can be parsed.\n */\nexport const addSubGraph = function(_id, list, _title) {\n let id = _id.trim();\n let title = _title;\n if (_id === _title && _title.match(/\\s/)) {\n id = undefined;\n }\n function uniq(a) {\n const prims = { boolean: {}, number: {}, string: {} };\n const objs = [];\n\n return a.filter(function(item) {\n const type = typeof item;\n if (item.trim() === '') {\n return false;\n }\n if (type in prims) {\n return prims[type].hasOwnProperty(item) ? false : (prims[type][item] = true); // eslint-disable-line\n } else {\n return objs.indexOf(item) >= 0 ? false : objs.push(item);\n }\n });\n }\n\n let nodeList = [];\n\n nodeList = uniq(nodeList.concat.apply(nodeList, list));\n for (let i = 0; i < nodeList.length; i++) {\n if (nodeList[i][0].match(/\\d/)) nodeList[i] = MERMAID_DOM_ID_PREFIX + nodeList[i];\n }\n\n id = id || 'subGraph' + subCount;\n if (id[0].match(/\\d/)) id = MERMAID_DOM_ID_PREFIX + id;\n title = title || '';\n title = common.sanitizeText(title, config);\n subCount = subCount + 1;\n const subGraph = { id: id, nodes: nodeList, title: title.trim(), classes: [] };\n subGraphs.push(subGraph);\n subGraphLookup[id] = subGraph;\n return id;\n};\n\nconst getPosForId = function(id) {\n for (let i = 0; i < subGraphs.length; i++) {\n if (subGraphs[i].id === id) {\n return i;\n }\n }\n return -1;\n};\nlet secCount = -1;\nconst posCrossRef = [];\nconst indexNodes2 = function(id, pos) {\n const nodes = subGraphs[pos].nodes;\n secCount = secCount + 1;\n if (secCount > 2000) {\n return;\n }\n posCrossRef[secCount] = pos;\n // Check if match\n if (subGraphs[pos].id === id) {\n return {\n result: true,\n count: 0\n };\n }\n\n let count = 0;\n let posCount = 1;\n while (count < nodes.length) {\n const childPos = getPosForId(nodes[count]);\n // Ignore regular nodes (pos will be -1)\n if (childPos >= 0) {\n const res = indexNodes2(id, childPos);\n if (res.result) {\n return {\n result: true,\n count: posCount + res.count\n };\n } else {\n posCount = posCount + res.count;\n }\n }\n count = count + 1;\n }\n\n return {\n result: false,\n count: posCount\n };\n};\n\nexport const getDepthFirstPos = function(pos) {\n return posCrossRef[pos];\n};\nexport const indexNodes = function() {\n secCount = -1;\n if (subGraphs.length > 0) {\n indexNodes2('none', subGraphs.length - 1, 0);\n }\n};\n\nexport const getSubGraphs = function() {\n return subGraphs;\n};\n\nexport const firstGraph = () => {\n if (firstGraphFlag) {\n firstGraphFlag = false;\n return true;\n }\n return false;\n};\n\nconst destructStartLink = _str => {\n const str = _str.trim();\n\n switch (str) {\n case '<--':\n return { type: 'arrow_point', stroke: 'normal' };\n case 'x--':\n return { type: 'arrow_cross', stroke: 'normal' };\n case 'o--':\n return { type: 'arrow_circle', stroke: 'normal' };\n case '<-.':\n return { type: 'arrow_point', stroke: 'dotted' };\n case 'x-.':\n return { type: 'arrow_cross', stroke: 'dotted' };\n case 'o-.':\n return { type: 'arrow_circle', stroke: 'dotted' };\n case '<==':\n return { type: 'arrow_point', stroke: 'thick' };\n case 'x==':\n return { type: 'arrow_cross', stroke: 'thick' };\n case 'o==':\n return { type: 'arrow_circle', stroke: 'thick' };\n case '--':\n return { type: 'arrow_open', stroke: 'normal' };\n case '==':\n return { type: 'arrow_open', stroke: 'thick' };\n case '-.':\n return { type: 'arrow_open', stroke: 'dotted' };\n }\n};\n\nconst destructEndLink = _str => {\n const str = _str.trim();\n\n switch (str) {\n case '--x':\n return { type: 'arrow_cross', stroke: 'normal' };\n case '-->':\n return { type: 'arrow_point', stroke: 'normal' };\n case '<-->':\n return { type: 'double_arrow_point', stroke: 'normal' };\n case 'x--x':\n return { type: 'double_arrow_cross', stroke: 'normal' };\n case 'o--o':\n return { type: 'double_arrow_circle', stroke: 'normal' };\n case 'o.-o':\n return { type: 'double_arrow_circle', stroke: 'dotted' };\n case '<==>':\n return { type: 'double_arrow_point', stroke: 'thick' };\n case 'o==o':\n return { type: 'double_arrow_circle', stroke: 'thick' };\n case 'x==x':\n return { type: 'double_arrow_cross', stroke: 'thick' };\n case 'x.-x':\n return { type: 'double_arrow_cross', stroke: 'dotted' };\n case 'x-.-x':\n return { type: 'double_arrow_cross', stroke: 'dotted' };\n case '<.->':\n return { type: 'double_arrow_point', stroke: 'dotted' };\n case '<-.->':\n return { type: 'double_arrow_point', stroke: 'dotted' };\n case 'o-.-o':\n return { type: 'double_arrow_circle', stroke: 'dotted' };\n case '--o':\n return { type: 'arrow_circle', stroke: 'normal' };\n case '---':\n return { type: 'arrow_open', stroke: 'normal' };\n case '-.-x':\n return { type: 'arrow_cross', stroke: 'dotted' };\n case '-.->':\n return { type: 'arrow_point', stroke: 'dotted' };\n case '-.-o':\n return { type: 'arrow_circle', stroke: 'dotted' };\n case '-.-':\n return { type: 'arrow_open', stroke: 'dotted' };\n case '.-x':\n return { type: 'arrow_cross', stroke: 'dotted' };\n case '.->':\n return { type: 'arrow_point', stroke: 'dotted' };\n case '.-o':\n return { type: 'arrow_circle', stroke: 'dotted' };\n case '.-':\n return { type: 'arrow_open', stroke: 'dotted' };\n case '==x':\n return { type: 'arrow_cross', stroke: 'thick' };\n case '==>':\n return { type: 'arrow_point', stroke: 'thick' };\n case '==o':\n return { type: 'arrow_circle', stroke: 'thick' };\n case '===':\n return { type: 'arrow_open', stroke: 'thick' };\n }\n};\n\nconst destructLink = (_str, _startStr) => {\n const info = destructEndLink(_str);\n let startInfo;\n if (_startStr) {\n startInfo = destructStartLink(_startStr);\n\n if (startInfo.stroke !== info.stroke) {\n return { type: 'INVALID', stroke: 'INVALID' };\n }\n\n if (startInfo.type === 'arrow_open') {\n // -- xyz --> - take arrow type form ending\n startInfo.type = info.type;\n } else {\n // x-- xyz --> - not supported\n if (startInfo.type !== info.type) return { type: 'INVALID', stroke: 'INVALID' };\n\n startInfo.type = 'double_' + startInfo.type;\n }\n\n if (startInfo.type === 'double_arrow') {\n startInfo.type = 'double_arrow_point';\n }\n\n return startInfo;\n }\n\n return info;\n};\n\nexport default {\n addVertex,\n addLink,\n updateLinkInterpolate,\n updateLink,\n addClass,\n setDirection,\n setClass,\n getTooltip,\n setClickEvent,\n setLink,\n bindFunctions,\n getDirection,\n getVertices,\n getEdges,\n getClasses,\n clear,\n defaultStyle,\n addSubGraph,\n getDepthFirstPos,\n indexNodes,\n getSubGraphs,\n destructLink,\n lex: {\n firstGraph\n }\n};\n","import graphlib from 'graphlib';\nimport { select, curveLinear, selectAll } from 'd3';\n\nimport flowDb from './flowDb';\nimport flow from './parser/flow';\nimport { getConfig } from '../../config';\n\nimport { render } from '../../dagre-wrapper/index.js';\nimport addHtmlLabel from 'dagre-d3/lib/label/add-html-label.js';\nimport { logger } from '../../logger';\nimport common from '../common/common';\nimport { interpolateToCurve, getStylesFromArray } from '../../utils';\n\nconst conf = {};\nexport const setConf = function(cnf) {\n const keys = Object.keys(cnf);\n for (let i = 0; i < keys.length; i++) {\n conf[keys[i]] = cnf[keys[i]];\n }\n};\n\n/**\n * Function that adds the vertices found during parsing to the graph to be rendered.\n * @param vert Object containing the vertices.\n * @param g The graph that is to be drawn.\n */\nexport const addVertices = function(vert, g, svgId) {\n const svg = select(`[id=\"${svgId}\"]`);\n const keys = Object.keys(vert);\n\n // Iterate through each item in the vertex object (containing all the vertices found) in the graph definition\n keys.forEach(function(id) {\n const vertex = vert[id];\n\n /**\n * Variable for storing the classes for the vertex\n * @type {string}\n */\n let classStr = 'default';\n if (vertex.classes.length > 0) {\n classStr = vertex.classes.join(' ');\n }\n\n const styles = getStylesFromArray(vertex.styles);\n\n // Use vertex id as text in the box if no text is provided by the graph definition\n let vertexText = vertex.text !== undefined ? vertex.text : vertex.id;\n\n // We create a SVG label, either by delegating to addHtmlLabel or manually\n let vertexNode;\n if (getConfig().flowchart.htmlLabels) {\n // TODO: addHtmlLabel accepts a labelStyle. Do we possibly have that?\n const node = {\n label: vertexText.replace(\n /fa[lrsb]?:fa-[\\w-]+/g,\n s => ``\n )\n };\n vertexNode = addHtmlLabel(svg, node).node();\n vertexNode.parentNode.removeChild(vertexNode);\n } else {\n const svgLabel = document.createElementNS('http://www.w3.org/2000/svg', 'text');\n svgLabel.setAttribute('style', styles.labelStyle.replace('color:', 'fill:'));\n\n const rows = vertexText.split(common.lineBreakRegex);\n\n for (let j = 0; j < rows.length; j++) {\n const tspan = document.createElementNS('http://www.w3.org/2000/svg', 'tspan');\n tspan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\n tspan.setAttribute('dy', '1em');\n tspan.setAttribute('x', '1');\n tspan.textContent = rows[j];\n svgLabel.appendChild(tspan);\n }\n vertexNode = svgLabel;\n }\n\n let radious = 0;\n let _shape = '';\n // Set the shape based parameters\n switch (vertex.type) {\n case 'round':\n radious = 5;\n _shape = 'rect';\n break;\n case 'square':\n _shape = 'rect';\n break;\n case 'diamond':\n _shape = 'question';\n break;\n case 'hexagon':\n _shape = 'hexagon';\n break;\n case 'odd':\n _shape = 'rect_left_inv_arrow';\n break;\n case 'lean_right':\n _shape = 'lean_right';\n break;\n case 'lean_left':\n _shape = 'lean_left';\n break;\n case 'trapezoid':\n _shape = 'trapezoid';\n break;\n case 'inv_trapezoid':\n _shape = 'inv_trapezoid';\n break;\n case 'odd_right':\n _shape = 'rect_left_inv_arrow';\n break;\n case 'circle':\n _shape = 'circle';\n break;\n case 'ellipse':\n _shape = 'ellipse';\n break;\n case 'stadium':\n _shape = 'stadium';\n break;\n case 'subroutine':\n _shape = 'subroutine';\n break;\n case 'cylinder':\n _shape = 'cylinder';\n break;\n case 'group':\n _shape = 'rect';\n break;\n default:\n _shape = 'rect';\n }\n // Add the node\n g.setNode(vertex.id, {\n labelStyle: styles.labelStyle,\n shape: _shape,\n labelText: vertexText,\n rx: radious,\n ry: radious,\n class: classStr,\n style: styles.style,\n id: vertex.id,\n width: vertex.type === 'group' ? 500 : undefined,\n type: vertex.type,\n padding: getConfig().flowchart.padding\n });\n\n logger.info('setNode', {\n labelStyle: styles.labelStyle,\n shape: _shape,\n labelText: vertexText,\n rx: radious,\n ry: radious,\n class: classStr,\n style: styles.style,\n id: vertex.id,\n width: vertex.type === 'group' ? 500 : undefined,\n type: vertex.type,\n padding: getConfig().flowchart.padding\n });\n });\n};\n\n/**\n * Add edges to graph based on parsed graph defninition\n * @param {Object} edges The edges to add to the graph\n * @param {Object} g The graph object\n */\nexport const addEdges = function(edges, g) {\n let cnt = 0;\n\n let defaultStyle;\n let defaultLabelStyle;\n\n if (typeof edges.defaultStyle !== 'undefined') {\n const defaultStyles = getStylesFromArray(edges.defaultStyle);\n defaultStyle = defaultStyles.style;\n defaultLabelStyle = defaultStyles.labelStyle;\n }\n\n edges.forEach(function(edge) {\n cnt++;\n\n // Identify Link\n var linkId = 'L-' + edge.start + '-' + edge.end;\n var linkNameStart = 'LS-' + edge.start;\n var linkNameEnd = 'LE-' + edge.end;\n\n const edgeData = {};\n //edgeData.id = 'id' + cnt;\n\n // Set link type for rendering\n if (edge.type === 'arrow_open') {\n edgeData.arrowhead = 'none';\n } else {\n edgeData.arrowhead = 'normal';\n }\n\n // Check of arrow types, placed here in order not to break old rendering\n edgeData.arrowTypeStart = 'arrow_open';\n edgeData.arrowTypeEnd = 'arrow_open';\n\n /* eslint-disable no-fallthrough */\n switch (edge.type) {\n case 'double_arrow_cross':\n edgeData.arrowTypeStart = 'arrow_cross';\n case 'arrow_cross':\n edgeData.arrowTypeEnd = 'arrow_cross';\n break;\n case 'double_arrow_point':\n edgeData.arrowTypeStart = 'arrow_point';\n case 'arrow_point':\n edgeData.arrowTypeEnd = 'arrow_point';\n break;\n case 'double_arrow_circle':\n edgeData.arrowTypeStart = 'arrow_circle';\n case 'arrow_circle':\n edgeData.arrowTypeEnd = 'arrow_circle';\n break;\n }\n\n // logger.info('apa', edgeData, edge);\n // edgeData.arrowTypeStart = edge.arrowTypeStart;\n // edgeData.arrowTypeStart = edge.arrowTypeStart;\n // edgeData.arrowType = edgeData.arrowTypeEnd;\n // logger.info('apa', edgeData, edge);\n\n let style = '';\n let labelStyle = '';\n\n if (typeof edge.style !== 'undefined') {\n const styles = getStylesFromArray(edge.style);\n style = styles.style;\n labelStyle = styles.labelStyle;\n } else {\n switch (edge.stroke) {\n case 'normal':\n style = 'fill:none';\n if (typeof defaultStyle !== 'undefined') {\n style = defaultStyle;\n }\n if (typeof defaultLabelStyle !== 'undefined') {\n labelStyle = defaultLabelStyle;\n }\n edgeData.thickness = 'normal';\n edgeData.pattern = 'solid';\n break;\n case 'dotted':\n edgeData.thickness = 'normal';\n edgeData.pattern = 'dotted';\n break;\n case 'thick':\n edgeData.thickness = 'thick';\n edgeData.pattern = 'solid';\n break;\n }\n }\n\n edgeData.style = style;\n edgeData.labelStyle = labelStyle;\n\n if (typeof edge.interpolate !== 'undefined') {\n edgeData.curve = interpolateToCurve(edge.interpolate, curveLinear);\n } else if (typeof edges.defaultInterpolate !== 'undefined') {\n edgeData.curve = interpolateToCurve(edges.defaultInterpolate, curveLinear);\n } else {\n edgeData.curve = interpolateToCurve(conf.curve, curveLinear);\n }\n\n if (typeof edge.text === 'undefined') {\n if (typeof edge.style !== 'undefined') {\n edgeData.arrowheadStyle = 'fill: #333';\n }\n } else {\n edgeData.arrowheadStyle = 'fill: #333';\n edgeData.labelpos = 'c';\n\n if (getConfig().flowchart.htmlLabels && false) { // eslint-disable-line\n edgeData.labelType = 'html';\n edgeData.label = `${edge.text}`;\n } else {\n edgeData.labelType = 'text';\n edgeData.label = edge.text.replace(common.lineBreakRegex, '\\n');\n\n if (typeof edge.style === 'undefined') {\n edgeData.style = edgeData.style || 'stroke: #333; stroke-width: 1.5px;fill:none';\n }\n\n edgeData.labelStyle = edgeData.labelStyle.replace('color:', 'fill:');\n }\n }\n\n edgeData.id = linkId;\n edgeData.classes = 'flowchart-link ' + linkNameStart + ' ' + linkNameEnd;\n\n // Add the edge to the graph\n g.setEdge(edge.start, edge.end, edgeData, cnt);\n });\n};\n\n/**\n * Returns the all the styles from classDef statements in the graph definition.\n * @returns {object} classDef styles\n */\nexport const getClasses = function(text) {\n logger.info('Extracting classes');\n flowDb.clear();\n const parser = flow.parser;\n parser.yy = flowDb;\n\n try {\n // Parse the graph definition\n parser.parse(text);\n } catch (e) {\n return;\n }\n\n return flowDb.getClasses();\n};\n\n/**\n * Draws a flowchart in the tag with id: id based on the graph definition in text.\n * @param text\n * @param id\n */\n\nexport const draw = function(text, id) {\n logger.info('Drawing flowchart');\n flowDb.clear();\n const parser = flow.parser;\n parser.yy = flowDb;\n\n // Parse the graph definition\n // try {\n parser.parse(text);\n // } catch (err) {\n // logger.debug('Parsing failed');\n // }\n\n // Fetch the default direction, use TD if none was found\n let dir = flowDb.getDirection();\n if (typeof dir === 'undefined') {\n dir = 'TD';\n }\n\n const conf = getConfig().flowchart;\n const nodeSpacing = conf.nodeSpacing || 50;\n const rankSpacing = conf.rankSpacing || 50;\n\n // Create the input mermaid.graph\n const g = new graphlib.Graph({\n multigraph: true,\n compound: true\n })\n .setGraph({\n rankdir: dir,\n nodesep: nodeSpacing,\n ranksep: rankSpacing,\n marginx: 8,\n marginy: 8\n })\n .setDefaultEdgeLabel(function() {\n return {};\n });\n\n let subG;\n const subGraphs = flowDb.getSubGraphs();\n logger.info('Subgraphs - ', subGraphs);\n for (let i = subGraphs.length - 1; i >= 0; i--) {\n subG = subGraphs[i];\n logger.info('Subgraph - ', subG);\n flowDb.addVertex(subG.id, subG.title, 'group', undefined, subG.classes);\n }\n\n // Fetch the verices/nodes and edges/links from the parsed graph definition\n const vert = flowDb.getVertices();\n\n const edges = flowDb.getEdges();\n\n logger.info(edges);\n let i = 0;\n for (i = subGraphs.length - 1; i >= 0; i--) {\n subG = subGraphs[i];\n\n selectAll('cluster').append('text');\n\n for (let j = 0; j < subG.nodes.length; j++) {\n g.setParent(subG.nodes[j], subG.id);\n }\n }\n addVertices(vert, g, id);\n addEdges(edges, g);\n\n // Add custom shapes\n // flowChartShapes.addToRenderV2(addShape);\n\n // Set up an SVG group so that we can translate the final graph.\n const svg = select(`[id=\"${id}\"]`);\n\n // Run the renderer. This is what draws the final graph.\n const element = select('#' + id + ' g');\n render(element, g, ['point', 'circle', 'cross'], 'flowchart', id);\n // dagre.layout(g);\n\n element.selectAll('g.node').attr('title', function() {\n return flowDb.getTooltip(this.id);\n });\n\n const padding = conf.diagramPadding;\n const svgBounds = svg.node().getBBox();\n const width = svgBounds.width + padding * 2;\n const height = svgBounds.height + padding * 2;\n logger.debug(\n `new ViewBox 0 0 ${width} ${height}`,\n `translate(${padding - g._label.marginx}, ${padding - g._label.marginy})`\n );\n\n if (conf.useMaxWidth) {\n svg.attr('width', '100%');\n svg.attr('style', `max-width: ${width}px;`);\n } else {\n svg.attr('height', height);\n svg.attr('width', width);\n }\n\n svg.attr('viewBox', `0 0 ${width} ${height}`);\n svg\n .select('g')\n .attr('transform', `translate(${padding - g._label.marginx}, ${padding - svgBounds.y})`);\n\n // Index nodes\n flowDb.indexNodes('subGraph' + i);\n\n // // reposition labels\n // for (i = 0; i < subGraphs.length; i++) {\n // subG = subGraphs[i];\n\n // if (subG.title !== 'undefined') {\n // const clusterRects = document.querySelectorAll('#' + id + ' [id=\"' + subG.id + '\"] rect');\n // const clusterEl = document.querySelectorAll('#' + id + ' [id=\"' + subG.id + '\"]');\n\n // const xPos = clusterRects[0].x.baseVal.value;\n // const yPos = clusterRects[0].y.baseVal.value;\n // const width = clusterRects[0].width.baseVal.value;\n // const cluster = d3.select(clusterEl[0]);\n // const te = cluster.select('.label');\n // te.attr('transform', `translate(${xPos + width / 2}, ${yPos + 14})`);\n // te.attr('id', id + 'Text');\n\n // for (let j = 0; j < subG.classes.length; j++) {\n // clusterEl[0].classList.add(subG.classes[j]);\n // }\n // }\n // }\n\n // Add label rects for non html labels\n if (!conf.htmlLabels) {\n const labels = document.querySelectorAll('[id=\"' + id + '\"] .edgeLabel .label');\n for (let k = 0; k < labels.length; k++) {\n const label = labels[k];\n\n // Get dimensions of label\n const dim = label.getBBox();\n\n const rect = document.createElementNS('http://www.w3.org/2000/svg', 'rect');\n rect.setAttribute('rx', 0);\n rect.setAttribute('ry', 0);\n rect.setAttribute('width', dim.width);\n rect.setAttribute('height', dim.height);\n rect.setAttribute('style', 'fill:#e8e8e8;');\n\n label.insertBefore(rect, label.firstChild);\n }\n }\n\n // If node has a link, wrap it in an anchor SVG object.\n const keys = Object.keys(vert);\n keys.forEach(function(key) {\n const vertex = vert[key];\n\n if (vertex.link) {\n const node = select('#' + id + ' [id=\"' + key + '\"]');\n if (node) {\n const link = document.createElementNS('http://www.w3.org/2000/svg', 'a');\n link.setAttributeNS('http://www.w3.org/2000/svg', 'class', vertex.classes.join(' '));\n link.setAttributeNS('http://www.w3.org/2000/svg', 'href', vertex.link);\n link.setAttributeNS('http://www.w3.org/2000/svg', 'rel', 'noopener');\n\n const linkNode = node.insert(function() {\n return link;\n }, ':first-child');\n\n const shape = node.select('.label-container');\n if (shape) {\n linkNode.append(function() {\n return shape.node();\n });\n }\n\n const label = node.select('.label');\n if (label) {\n linkNode.append(function() {\n return label.node();\n });\n }\n }\n }\n });\n};\n\nexport default {\n setConf,\n addVertices,\n addEdges,\n getClasses,\n draw\n};\n","import graphlib from 'graphlib';\nimport { select, curveLinear, selectAll } from 'd3';\n\nimport flowDb from './flowDb';\nimport flow from './parser/flow';\nimport { getConfig } from '../../config';\n\nimport dagreD3 from 'dagre-d3';\nimport addHtmlLabel from 'dagre-d3/lib/label/add-html-label.js';\nimport { logger } from '../../logger';\nimport common from '../common/common';\nimport { interpolateToCurve, getStylesFromArray } from '../../utils';\nimport flowChartShapes from './flowChartShapes';\n\nconst conf = {};\nexport const setConf = function(cnf) {\n const keys = Object.keys(cnf);\n for (let i = 0; i < keys.length; i++) {\n conf[keys[i]] = cnf[keys[i]];\n }\n};\n\n/**\n * Function that adds the vertices found in the graph definition to the graph to be rendered.\n * @param vert Object containing the vertices.\n * @param g The graph that is to be drawn.\n */\nexport const addVertices = function(vert, g, svgId) {\n const svg = select(`[id=\"${svgId}\"]`);\n const keys = Object.keys(vert);\n\n // Iterate through each item in the vertex object (containing all the vertices found) in the graph definition\n keys.forEach(function(id) {\n const vertex = vert[id];\n\n /**\n * Variable for storing the classes for the vertex\n * @type {string}\n */\n let classStr = 'default';\n if (vertex.classes.length > 0) {\n classStr = vertex.classes.join(' ');\n }\n\n const styles = getStylesFromArray(vertex.styles);\n\n // Use vertex id as text in the box if no text is provided by the graph definition\n let vertexText = vertex.text !== undefined ? vertex.text : vertex.id;\n\n // We create a SVG label, either by delegating to addHtmlLabel or manually\n let vertexNode;\n if (getConfig().flowchart.htmlLabels) {\n // TODO: addHtmlLabel accepts a labelStyle. Do we possibly have that?\n const node = {\n label: vertexText.replace(\n /fa[lrsb]?:fa-[\\w-]+/g,\n s => ``\n )\n };\n vertexNode = addHtmlLabel(svg, node).node();\n vertexNode.parentNode.removeChild(vertexNode);\n } else {\n const svgLabel = document.createElementNS('http://www.w3.org/2000/svg', 'text');\n svgLabel.setAttribute('style', styles.labelStyle.replace('color:', 'fill:'));\n\n const rows = vertexText.split(common.lineBreakRegex);\n\n for (let j = 0; j < rows.length; j++) {\n const tspan = document.createElementNS('http://www.w3.org/2000/svg', 'tspan');\n tspan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\n tspan.setAttribute('dy', '1em');\n tspan.setAttribute('x', '1');\n tspan.textContent = rows[j];\n svgLabel.appendChild(tspan);\n }\n vertexNode = svgLabel;\n }\n\n let radious = 0;\n let _shape = '';\n // Set the shape based parameters\n switch (vertex.type) {\n case 'round':\n radious = 5;\n _shape = 'rect';\n break;\n case 'square':\n _shape = 'rect';\n break;\n case 'diamond':\n _shape = 'question';\n break;\n case 'hexagon':\n _shape = 'hexagon';\n break;\n case 'odd':\n _shape = 'rect_left_inv_arrow';\n break;\n case 'lean_right':\n _shape = 'lean_right';\n break;\n case 'lean_left':\n _shape = 'lean_left';\n break;\n case 'trapezoid':\n _shape = 'trapezoid';\n break;\n case 'inv_trapezoid':\n _shape = 'inv_trapezoid';\n break;\n case 'odd_right':\n _shape = 'rect_left_inv_arrow';\n break;\n case 'circle':\n _shape = 'circle';\n break;\n case 'ellipse':\n _shape = 'ellipse';\n break;\n case 'stadium':\n _shape = 'stadium';\n break;\n case 'subroutine':\n _shape = 'subroutine';\n break;\n case 'cylinder':\n _shape = 'cylinder';\n break;\n case 'group':\n _shape = 'rect';\n break;\n default:\n _shape = 'rect';\n }\n // Add the node\n g.setNode(vertex.id, {\n labelType: 'svg',\n labelStyle: styles.labelStyle,\n shape: _shape,\n label: vertexNode,\n rx: radious,\n ry: radious,\n class: classStr,\n style: styles.style,\n id: vertex.id\n });\n });\n};\n\n/**\n * Add edges to graph based on parsed graph defninition\n * @param {Object} edges The edges to add to the graph\n * @param {Object} g The graph object\n */\nexport const addEdges = function(edges, g) {\n let cnt = 0;\n\n let defaultStyle;\n let defaultLabelStyle;\n\n if (typeof edges.defaultStyle !== 'undefined') {\n const defaultStyles = getStylesFromArray(edges.defaultStyle);\n defaultStyle = defaultStyles.style;\n defaultLabelStyle = defaultStyles.labelStyle;\n }\n\n edges.forEach(function(edge) {\n cnt++;\n\n // Identify Link\n var linkId = 'L-' + edge.start + '-' + edge.end;\n var linkNameStart = 'LS-' + edge.start;\n var linkNameEnd = 'LE-' + edge.end;\n\n const edgeData = {};\n\n // Set link type for rendering\n if (edge.type === 'arrow_open') {\n edgeData.arrowhead = 'none';\n } else {\n edgeData.arrowhead = 'normal';\n }\n\n let style = '';\n let labelStyle = '';\n\n if (typeof edge.style !== 'undefined') {\n const styles = getStylesFromArray(edge.style);\n style = styles.style;\n labelStyle = styles.labelStyle;\n } else {\n switch (edge.stroke) {\n case 'normal':\n style = 'fill:none';\n if (typeof defaultStyle !== 'undefined') {\n style = defaultStyle;\n }\n if (typeof defaultLabelStyle !== 'undefined') {\n labelStyle = defaultLabelStyle;\n }\n break;\n case 'dotted':\n style = 'fill:none;stroke-width:2px;stroke-dasharray:3;';\n break;\n case 'thick':\n style = ' stroke-width: 3.5px;fill:none';\n break;\n }\n }\n\n edgeData.style = style;\n edgeData.labelStyle = labelStyle;\n\n if (typeof edge.interpolate !== 'undefined') {\n edgeData.curve = interpolateToCurve(edge.interpolate, curveLinear);\n } else if (typeof edges.defaultInterpolate !== 'undefined') {\n edgeData.curve = interpolateToCurve(edges.defaultInterpolate, curveLinear);\n } else {\n edgeData.curve = interpolateToCurve(conf.curve, curveLinear);\n }\n\n if (typeof edge.text === 'undefined') {\n if (typeof edge.style !== 'undefined') {\n edgeData.arrowheadStyle = 'fill: #333';\n }\n } else {\n edgeData.arrowheadStyle = 'fill: #333';\n edgeData.labelpos = 'c';\n\n if (getConfig().flowchart.htmlLabels) {\n edgeData.labelType = 'html';\n edgeData.label = `${edge.text}`;\n } else {\n edgeData.labelType = 'text';\n edgeData.label = edge.text.replace(common.lineBreakRegex, '\\n');\n\n if (typeof edge.style === 'undefined') {\n edgeData.style = edgeData.style || 'stroke: #333; stroke-width: 1.5px;fill:none';\n }\n\n edgeData.labelStyle = edgeData.labelStyle.replace('color:', 'fill:');\n }\n }\n\n edgeData.id = linkId;\n edgeData.class = linkNameStart + ' ' + linkNameEnd;\n\n // Add the edge to the graph\n g.setEdge(edge.start, edge.end, edgeData, cnt);\n });\n};\n\n/**\n * Returns the all the styles from classDef statements in the graph definition.\n * @returns {object} classDef styles\n */\nexport const getClasses = function(text) {\n logger.info('Extracting classes');\n flowDb.clear();\n try {\n const parser = flow.parser;\n parser.yy = flowDb;\n\n // Parse the graph definition\n parser.parse(text);\n return flowDb.getClasses();\n } catch (e) {\n return;\n }\n};\n\n/**\n * Draws a flowchart in the tag with id: id based on the graph definition in text.\n * @param text\n * @param id\n */\nexport const draw = function(text, id) {\n logger.info('Drawing flowchart');\n flowDb.clear();\n const parser = flow.parser;\n parser.yy = flowDb;\n\n // Parse the graph definition\n // try {\n parser.parse(text);\n // } catch (err) {\n // logger.debug('Parsing failed');\n // }\n\n // Fetch the default direction, use TD if none was found\n let dir = flowDb.getDirection();\n if (typeof dir === 'undefined') {\n dir = 'TD';\n }\n\n const conf = getConfig().flowchart;\n const nodeSpacing = conf.nodeSpacing || 50;\n const rankSpacing = conf.rankSpacing || 50;\n\n // Create the input mermaid.graph\n const g = new graphlib.Graph({\n multigraph: true,\n compound: true\n })\n .setGraph({\n rankdir: dir,\n nodesep: nodeSpacing,\n ranksep: rankSpacing,\n marginx: 8,\n marginy: 8\n })\n .setDefaultEdgeLabel(function() {\n return {};\n });\n\n let subG;\n const subGraphs = flowDb.getSubGraphs();\n for (let i = subGraphs.length - 1; i >= 0; i--) {\n subG = subGraphs[i];\n flowDb.addVertex(subG.id, subG.title, 'group', undefined, subG.classes);\n }\n\n // Fetch the verices/nodes and edges/links from the parsed graph definition\n const vert = flowDb.getVertices();\n\n const edges = flowDb.getEdges();\n\n let i = 0;\n for (i = subGraphs.length - 1; i >= 0; i--) {\n subG = subGraphs[i];\n\n selectAll('cluster').append('text');\n\n for (let j = 0; j < subG.nodes.length; j++) {\n g.setParent(subG.nodes[j], subG.id);\n }\n }\n addVertices(vert, g, id);\n addEdges(edges, g);\n\n // Create the renderer\n const Render = dagreD3.render;\n const render = new Render();\n\n // Add custom shapes\n flowChartShapes.addToRender(render);\n\n // Add our custom arrow - an empty arrowhead\n render.arrows().none = function normal(parent, id, edge, type) {\n const marker = parent\n .append('marker')\n .attr('id', id)\n .attr('viewBox', '0 0 10 10')\n .attr('refX', 9)\n .attr('refY', 5)\n .attr('markerUnits', 'strokeWidth')\n .attr('markerWidth', 8)\n .attr('markerHeight', 6)\n .attr('orient', 'auto');\n\n const path = marker.append('path').attr('d', 'M 0 0 L 0 0 L 0 0 z');\n dagreD3.util.applyStyle(path, edge[type + 'Style']);\n };\n\n // Override normal arrowhead defined in d3. Remove style & add class to allow css styling.\n render.arrows().normal = function normal(parent, id) {\n const marker = parent\n .append('marker')\n .attr('id', id)\n .attr('viewBox', '0 0 10 10')\n .attr('refX', 9)\n .attr('refY', 5)\n .attr('markerUnits', 'strokeWidth')\n .attr('markerWidth', 8)\n .attr('markerHeight', 6)\n .attr('orient', 'auto');\n\n marker\n .append('path')\n .attr('d', 'M 0 0 L 10 5 L 0 10 z')\n .attr('class', 'arrowheadPath')\n .style('stroke-width', 1)\n .style('stroke-dasharray', '1,0');\n };\n\n // Set up an SVG group so that we can translate the final graph.\n const svg = select(`[id=\"${id}\"]`);\n\n // Run the renderer. This is what draws the final graph.\n const element = select('#' + id + ' g');\n render(element, g);\n\n element.selectAll('g.node').attr('title', function() {\n return flowDb.getTooltip(this.id);\n });\n\n const padding = conf.diagramPadding;\n const svgBounds = svg.node().getBBox();\n const width = svgBounds.width + padding * 2;\n const height = svgBounds.height + padding * 2;\n\n if (conf.useMaxWidth) {\n svg.attr('width', '100%');\n svg.attr('style', `max-width: ${width}px;`);\n } else {\n svg.attr('height', height);\n svg.attr('width', width);\n }\n\n // Ensure the viewBox includes the whole svgBounds area with extra space for padding\n const vBox = `${svgBounds.x - padding} ${svgBounds.y - padding} ${width} ${height}`;\n logger.debug(`viewBox ${vBox}`);\n svg.attr('viewBox', vBox);\n\n // Index nodes\n flowDb.indexNodes('subGraph' + i);\n\n // reposition labels\n for (i = 0; i < subGraphs.length; i++) {\n subG = subGraphs[i];\n\n if (subG.title !== 'undefined') {\n const clusterRects = document.querySelectorAll('#' + id + ' [id=\"' + subG.id + '\"] rect');\n const clusterEl = document.querySelectorAll('#' + id + ' [id=\"' + subG.id + '\"]');\n\n const xPos = clusterRects[0].x.baseVal.value;\n const yPos = clusterRects[0].y.baseVal.value;\n const width = clusterRects[0].width.baseVal.value;\n const cluster = select(clusterEl[0]);\n const te = cluster.select('.label');\n te.attr('transform', `translate(${xPos + width / 2}, ${yPos + 14})`);\n te.attr('id', id + 'Text');\n\n for (let j = 0; j < subG.classes.length; j++) {\n clusterEl[0].classList.add(subG.classes[j]);\n }\n }\n }\n\n // Add label rects for non html labels\n if (!conf.htmlLabels || true) { // eslint-disable-line\n const labels = document.querySelectorAll('[id=\"' + id + '\"] .edgeLabel .label');\n for (let k = 0; k < labels.length; k++) {\n const label = labels[k];\n\n // Get dimensions of label\n const dim = label.getBBox();\n\n const rect = document.createElementNS('http://www.w3.org/2000/svg', 'rect');\n rect.setAttribute('rx', 0);\n rect.setAttribute('ry', 0);\n rect.setAttribute('width', dim.width);\n rect.setAttribute('height', dim.height);\n rect.setAttribute('style', 'fill:#e8e8e8;');\n\n label.insertBefore(rect, label.firstChild);\n }\n }\n\n // If node has a link, wrap it in an anchor SVG object.\n const keys = Object.keys(vert);\n keys.forEach(function(key) {\n const vertex = vert[key];\n\n if (vertex.link) {\n const node = select('#' + id + ' [id=\"' + key + '\"]');\n if (node) {\n const link = document.createElementNS('http://www.w3.org/2000/svg', 'a');\n link.setAttributeNS('http://www.w3.org/2000/svg', 'class', vertex.classes.join(' '));\n link.setAttributeNS('http://www.w3.org/2000/svg', 'href', vertex.link);\n link.setAttributeNS('http://www.w3.org/2000/svg', 'rel', 'noopener');\n\n const linkNode = node.insert(function() {\n return link;\n }, ':first-child');\n\n const shape = node.select('.label-container');\n if (shape) {\n linkNode.append(function() {\n return shape.node();\n });\n }\n\n const label = node.select('.label');\n if (label) {\n linkNode.append(function() {\n return label.node();\n });\n }\n }\n }\n });\n};\n\nexport default {\n setConf,\n addVertices,\n addEdges,\n getClasses,\n draw\n};\n","/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,4],$V1=[1,3],$V2=[1,5],$V3=[1,8,9,10,11,26,34,63,64,65,66,67,68,78,79,82,83,84,86,87,93,94,95,96,97,98],$V4=[2,2],$V5=[1,12],$V6=[1,13],$V7=[1,14],$V8=[1,15],$V9=[1,22],$Va=[1,46],$Vb=[1,24],$Vc=[1,25],$Vd=[1,26],$Ve=[1,27],$Vf=[1,28],$Vg=[1,40],$Vh=[1,35],$Vi=[1,37],$Vj=[1,32],$Vk=[1,36],$Vl=[1,39],$Vm=[1,43],$Vn=[1,44],$Vo=[1,45],$Vp=[1,34],$Vq=[1,38],$Vr=[1,41],$Vs=[1,42],$Vt=[1,33],$Vu=[1,51],$Vv=[1,8,9,10,11,26,30,34,63,64,65,66,67,68,78,79,82,83,84,86,87,93,94,95,96,97,98],$Vw=[1,55],$Vx=[1,54],$Vy=[1,56],$Vz=[8,9,11,57,58],$VA=[8,9,10,11,57,58],$VB=[8,9,10,11,35,57,58],$VC=[8,9,10,11,28,34,35,37,39,41,43,45,47,49,50,52,57,58,68,78,79,82,83,84,86,87,93,94,95,96,97,98],$VD=[8,9,11,34,57,58,68,78,79,82,83,84,86,87,93,94,95,96,97,98],$VE=[34,68,78,79,82,83,84,86,87,93,94,95,96,97,98],$VF=[1,101],$VG=[1,122],$VH=[1,123],$VI=[1,124],$VJ=[1,125],$VK=[1,105],$VL=[1,96],$VM=[1,97],$VN=[1,93],$VO=[1,117],$VP=[1,118],$VQ=[1,119],$VR=[1,120],$VS=[1,121],$VT=[1,126],$VU=[1,127],$VV=[1,99],$VW=[1,107],$VX=[1,110],$VY=[1,108],$VZ=[1,109],$V_=[1,102],$V$=[1,115],$V01=[1,114],$V11=[1,98],$V21=[1,95],$V31=[1,104],$V41=[1,106],$V51=[1,111],$V61=[1,112],$V71=[1,113],$V81=[1,116],$V91=[8,9,10,11,26,30,34,63,64,65,66,67,68,78,79,82,83,84,86,87,93,94,95,96,97,98],$Va1=[1,130],$Vb1=[1,134],$Vc1=[1,136],$Vd1=[1,137],$Ve1=[8,9,10,11,12,13,26,28,29,30,34,38,40,42,44,46,48,49,51,53,57,58,59,63,64,65,66,67,68,69,72,78,79,82,83,84,86,87,88,89,93,94,95,96,97,98],$Vf1=[8,9,10,11,13,34,68,78,79,82,83,84,86,87,93,94,95,96,97,98],$Vg1=[10,79],$Vh1=[1,204],$Vi1=[1,208],$Vj1=[1,205],$Vk1=[1,202],$Vl1=[1,199],$Vm1=[1,200],$Vn1=[1,201],$Vo1=[1,203],$Vp1=[1,206],$Vq1=[1,207],$Vr1=[1,209],$Vs1=[8,9,11],$Vt1=[1,225],$Vu1=[8,9,11,79],$Vv1=[8,9,10,11,63,75,78,79,82,83,84,85,86,87,88];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"mermaidDoc\":3,\"graphConfig\":4,\"document\":5,\"line\":6,\"statement\":7,\"SEMI\":8,\"NEWLINE\":9,\"SPACE\":10,\"EOF\":11,\"GRAPH\":12,\"DIR\":13,\"FirstStmtSeperator\":14,\"ending\":15,\"endToken\":16,\"spaceList\":17,\"spaceListNewline\":18,\"verticeStatement\":19,\"separator\":20,\"styleStatement\":21,\"linkStyleStatement\":22,\"classDefStatement\":23,\"classStatement\":24,\"clickStatement\":25,\"subgraph\":26,\"text\":27,\"SQS\":28,\"SQE\":29,\"end\":30,\"link\":31,\"node\":32,\"vertex\":33,\"AMP\":34,\"STYLE_SEPARATOR\":35,\"idString\":36,\"PS\":37,\"PE\":38,\"(-\":39,\"-)\":40,\"STADIUMSTART\":41,\"STADIUMEND\":42,\"SUBROUTINESTART\":43,\"SUBROUTINEEND\":44,\"CYLINDERSTART\":45,\"CYLINDEREND\":46,\"DIAMOND_START\":47,\"DIAMOND_STOP\":48,\"TAGEND\":49,\"TRAPSTART\":50,\"TRAPEND\":51,\"INVTRAPSTART\":52,\"INVTRAPEND\":53,\"linkStatement\":54,\"arrowText\":55,\"TESTSTR\":56,\"START_LINK\":57,\"LINK\":58,\"PIPE\":59,\"textToken\":60,\"STR\":61,\"keywords\":62,\"STYLE\":63,\"LINKSTYLE\":64,\"CLASSDEF\":65,\"CLASS\":66,\"CLICK\":67,\"DOWN\":68,\"UP\":69,\"textNoTags\":70,\"textNoTagsToken\":71,\"DEFAULT\":72,\"stylesOpt\":73,\"alphaNum\":74,\"HEX\":75,\"numList\":76,\"INTERPOLATE\":77,\"NUM\":78,\"COMMA\":79,\"style\":80,\"styleComponent\":81,\"ALPHA\":82,\"COLON\":83,\"MINUS\":84,\"UNIT\":85,\"BRKT\":86,\"DOT\":87,\"PCT\":88,\"TAGSTART\":89,\"alphaNumToken\":90,\"idStringToken\":91,\"alphaNumStatement\":92,\"PUNCTUATION\":93,\"UNICODE_TEXT\":94,\"PLUS\":95,\"EQUALS\":96,\"MULT\":97,\"UNDERSCORE\":98,\"graphCodeTokens\":99,\"ARROW_CROSS\":100,\"ARROW_POINT\":101,\"ARROW_CIRCLE\":102,\"ARROW_OPEN\":103,\"QUOTE\":104,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",8:\"SEMI\",9:\"NEWLINE\",10:\"SPACE\",11:\"EOF\",12:\"GRAPH\",13:\"DIR\",26:\"subgraph\",28:\"SQS\",29:\"SQE\",30:\"end\",34:\"AMP\",35:\"STYLE_SEPARATOR\",37:\"PS\",38:\"PE\",39:\"(-\",40:\"-)\",41:\"STADIUMSTART\",42:\"STADIUMEND\",43:\"SUBROUTINESTART\",44:\"SUBROUTINEEND\",45:\"CYLINDERSTART\",46:\"CYLINDEREND\",47:\"DIAMOND_START\",48:\"DIAMOND_STOP\",49:\"TAGEND\",50:\"TRAPSTART\",51:\"TRAPEND\",52:\"INVTRAPSTART\",53:\"INVTRAPEND\",56:\"TESTSTR\",57:\"START_LINK\",58:\"LINK\",59:\"PIPE\",61:\"STR\",63:\"STYLE\",64:\"LINKSTYLE\",65:\"CLASSDEF\",66:\"CLASS\",67:\"CLICK\",68:\"DOWN\",69:\"UP\",72:\"DEFAULT\",75:\"HEX\",77:\"INTERPOLATE\",78:\"NUM\",79:\"COMMA\",82:\"ALPHA\",83:\"COLON\",84:\"MINUS\",85:\"UNIT\",86:\"BRKT\",87:\"DOT\",88:\"PCT\",89:\"TAGSTART\",93:\"PUNCTUATION\",94:\"UNICODE_TEXT\",95:\"PLUS\",96:\"EQUALS\",97:\"MULT\",98:\"UNDERSCORE\",100:\"ARROW_CROSS\",101:\"ARROW_POINT\",102:\"ARROW_CIRCLE\",103:\"ARROW_OPEN\",104:\"QUOTE\"},\nproductions_: [0,[3,2],[5,0],[5,2],[6,1],[6,1],[6,1],[6,1],[6,1],[4,2],[4,2],[4,3],[15,2],[15,1],[16,1],[16,1],[16,1],[14,1],[14,1],[14,2],[18,2],[18,2],[18,1],[18,1],[17,2],[17,1],[7,2],[7,2],[7,2],[7,2],[7,2],[7,2],[7,9],[7,6],[7,4],[20,1],[20,1],[20,1],[19,3],[19,4],[19,2],[19,1],[32,1],[32,5],[32,3],[33,4],[33,6],[33,4],[33,4],[33,4],[33,4],[33,4],[33,4],[33,6],[33,4],[33,4],[33,4],[33,4],[33,4],[33,1],[31,2],[31,3],[31,3],[31,1],[31,3],[54,1],[55,3],[27,1],[27,2],[27,1],[62,1],[62,1],[62,1],[62,1],[62,1],[62,1],[62,1],[62,1],[62,1],[62,1],[62,1],[70,1],[70,2],[23,5],[23,5],[24,5],[25,5],[25,7],[25,5],[25,7],[21,5],[21,5],[22,5],[22,5],[22,9],[22,9],[22,7],[22,7],[76,1],[76,3],[73,1],[73,3],[80,1],[80,2],[81,1],[81,1],[81,1],[81,1],[81,1],[81,1],[81,1],[81,1],[81,1],[81,1],[81,1],[60,1],[60,1],[60,1],[60,1],[60,1],[60,1],[71,1],[71,1],[71,1],[71,1],[36,1],[36,2],[74,1],[74,2],[92,1],[92,1],[92,1],[92,1],[90,1],[90,1],[90,1],[90,1],[90,1],[90,1],[90,1],[90,1],[90,1],[90,1],[90,1],[90,1],[90,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[99,1],[99,1],[99,1],[99,1],[99,1],[99,1],[99,1],[99,1],[99,1],[99,1],[99,1],[99,1],[99,1],[99,1],[99,1],[99,1],[99,1],[99,1],[99,1],[99,1],[99,1],[99,1],[99,1],[99,1],[99,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 2:\n this.$ = [];\nbreak;\ncase 3:\n\n\t if($$[$0] !== []){\n\t $$[$0-1].push($$[$0]);\n\t }\n\t this.$=$$[$0-1];\nbreak;\ncase 4: case 67: case 69: case 81: case 127: case 129: case 130:\nthis.$=$$[$0];\nbreak;\ncase 11:\n yy.setDirection($$[$0-1]);this.$ = $$[$0-1];\nbreak;\ncase 26:\n /* console.warn('finat vs', $$[$0-1].nodes); */ this.$=$$[$0-1].nodes\nbreak;\ncase 27: case 28: case 29: case 30: case 31:\nthis.$=[];\nbreak;\ncase 32:\nthis.$=yy.addSubGraph($$[$0-6],$$[$0-1],$$[$0-4]);\nbreak;\ncase 33:\nthis.$=yy.addSubGraph($$[$0-3],$$[$0-1],$$[$0-3]);\nbreak;\ncase 34:\nthis.$=yy.addSubGraph(undefined,$$[$0-1],undefined);\nbreak;\ncase 38:\n /* console.warn('vs',$$[$0-2].stmt,$$[$0]); */ yy.addLink($$[$0-2].stmt,$$[$0],$$[$0-1]); this.$ = { stmt: $$[$0], nodes: $$[$0].concat($$[$0-2].nodes) } \nbreak;\ncase 39:\n /* console.warn('vs',$$[$0-3].stmt,$$[$0-1]); */ yy.addLink($$[$0-3].stmt,$$[$0-1],$$[$0-2]); this.$ = { stmt: $$[$0-1], nodes: $$[$0-1].concat($$[$0-3].nodes) } \nbreak;\ncase 40:\n/*console.warn('noda', $$[$0-1]);*/ this.$ = {stmt: $$[$0-1], nodes:$$[$0-1] }\nbreak;\ncase 41:\n /*console.warn('noda', $$[$0]);*/ this.$ = {stmt: $$[$0], nodes:$$[$0] }\nbreak;\ncase 42:\n /* console.warn('nod', $$[$0]); */ this.$ = [$$[$0]];\nbreak;\ncase 43:\n this.$ = $$[$0-4].concat($$[$0]); /* console.warn('pip', $$[$0-4][0], $$[$0], this.$); */ \nbreak;\ncase 44:\nthis.$ = [$$[$0-2]];yy.setClass($$[$0-2],$$[$0])\nbreak;\ncase 45:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'square');\nbreak;\ncase 46:\nthis.$ = $$[$0-5];yy.addVertex($$[$0-5],$$[$0-2],'circle');\nbreak;\ncase 47:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'ellipse');\nbreak;\ncase 48:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'stadium');\nbreak;\ncase 49:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'subroutine');\nbreak;\ncase 50:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'cylinder');\nbreak;\ncase 51:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'round');\nbreak;\ncase 52:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'diamond');\nbreak;\ncase 53:\nthis.$ = $$[$0-5];yy.addVertex($$[$0-5],$$[$0-2],'hexagon');\nbreak;\ncase 54:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'odd');\nbreak;\ncase 55:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'trapezoid');\nbreak;\ncase 56:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'inv_trapezoid');\nbreak;\ncase 57:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'lean_right');\nbreak;\ncase 58:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'lean_left');\nbreak;\ncase 59:\n /*console.warn('h: ', $$[$0]);*/this.$ = $$[$0];yy.addVertex($$[$0]);\nbreak;\ncase 60:\n$$[$0-1].text = $$[$0];this.$ = $$[$0-1];\nbreak;\ncase 61: case 62:\n$$[$0-2].text = $$[$0-1];this.$ = $$[$0-2];\nbreak;\ncase 63:\nthis.$ = $$[$0];\nbreak;\ncase 64:\nvar inf = yy.destructLink($$[$0], $$[$0-2]); this.$ = {\"type\":inf.type,\"stroke\":inf.stroke,\"text\":$$[$0-1]};\nbreak;\ncase 65:\nvar inf = yy.destructLink($$[$0]);this.$ = {\"type\":inf.type,\"stroke\":inf.stroke};\nbreak;\ncase 66:\nthis.$ = $$[$0-1];\nbreak;\ncase 68: case 82: case 128:\nthis.$=$$[$0-1]+''+$$[$0];\nbreak;\ncase 83: case 84:\nthis.$ = $$[$0-4];yy.addClass($$[$0-2],$$[$0]);\nbreak;\ncase 85:\nthis.$ = $$[$0-4];yy.setClass($$[$0-2], $$[$0]);\nbreak;\ncase 86:\nthis.$ = $$[$0-4];yy.setClickEvent($$[$0-2], $$[$0], undefined);\nbreak;\ncase 87:\nthis.$ = $$[$0-6];yy.setClickEvent($$[$0-4], $$[$0-2], $$[$0]) ;\nbreak;\ncase 88:\nthis.$ = $$[$0-4];yy.setLink($$[$0-2], $$[$0], undefined);\nbreak;\ncase 89:\nthis.$ = $$[$0-6];yy.setLink($$[$0-4], $$[$0-2], $$[$0] );\nbreak;\ncase 90:\nthis.$ = $$[$0-4];yy.addVertex($$[$0-2],undefined,undefined,$$[$0]);\nbreak;\ncase 91: case 93:\nthis.$ = $$[$0-4];yy.updateLink($$[$0-2],$$[$0]);\nbreak;\ncase 92:\nthis.$ = $$[$0-4];yy.updateLink([$$[$0-2]],$$[$0]);\nbreak;\ncase 94:\nthis.$ = $$[$0-8];yy.updateLinkInterpolate([$$[$0-6]],$$[$0-2]);yy.updateLink([$$[$0-6]],$$[$0]);\nbreak;\ncase 95:\nthis.$ = $$[$0-8];yy.updateLinkInterpolate($$[$0-6],$$[$0-2]);yy.updateLink($$[$0-6],$$[$0]);\nbreak;\ncase 96:\nthis.$ = $$[$0-6];yy.updateLinkInterpolate([$$[$0-4]],$$[$0]);\nbreak;\ncase 97:\nthis.$ = $$[$0-6];yy.updateLinkInterpolate($$[$0-4],$$[$0]);\nbreak;\ncase 98: case 100:\nthis.$ = [$$[$0]]\nbreak;\ncase 99: case 101:\n$$[$0-2].push($$[$0]);this.$ = $$[$0-2];\nbreak;\ncase 103:\nthis.$ = $$[$0-1] + $$[$0];\nbreak;\ncase 125:\nthis.$=$$[$0]\nbreak;\ncase 126:\nthis.$=$$[$0-1]+''+$$[$0]\nbreak;\ncase 131:\nthis.$='v';\nbreak;\ncase 132:\nthis.$='-';\nbreak;\n}\n},\ntable: [{3:1,4:2,9:$V0,10:$V1,12:$V2},{1:[3]},o($V3,$V4,{5:6}),{4:7,9:$V0,10:$V1,12:$V2},{4:8,9:$V0,10:$V1,12:$V2},{13:[1,9]},{1:[2,1],6:10,7:11,8:$V5,9:$V6,10:$V7,11:$V8,19:16,21:17,22:18,23:19,24:20,25:21,26:$V9,32:23,33:29,34:$Va,36:30,63:$Vb,64:$Vc,65:$Vd,66:$Ve,67:$Vf,68:$Vg,78:$Vh,79:$Vi,82:$Vj,83:$Vk,84:$Vl,86:$Vm,87:$Vn,91:31,93:$Vo,94:$Vp,95:$Vq,96:$Vr,97:$Vs,98:$Vt},o($V3,[2,9]),o($V3,[2,10]),{8:[1,48],9:[1,49],10:$Vu,14:47,17:50},o($Vv,[2,3]),o($Vv,[2,4]),o($Vv,[2,5]),o($Vv,[2,6]),o($Vv,[2,7]),o($Vv,[2,8]),{8:$Vw,9:$Vx,11:$Vy,20:52,31:53,54:57,57:[1,58],58:[1,59]},{8:$Vw,9:$Vx,11:$Vy,20:60},{8:$Vw,9:$Vx,11:$Vy,20:61},{8:$Vw,9:$Vx,11:$Vy,20:62},{8:$Vw,9:$Vx,11:$Vy,20:63},{8:$Vw,9:$Vx,11:$Vy,20:64},{8:$Vw,9:$Vx,10:[1,65],11:$Vy,20:66},o($Vz,[2,41],{17:67,10:$Vu}),{10:[1,68]},{10:[1,69]},{10:[1,70]},{10:[1,71]},{10:[1,72]},o($VA,[2,42],{35:[1,73]}),o($VB,[2,59],{91:84,28:[1,74],34:$Va,37:[1,75],39:[1,76],41:[1,77],43:[1,78],45:[1,79],47:[1,80],49:[1,81],50:[1,82],52:[1,83],68:$Vg,78:$Vh,79:$Vi,82:$Vj,83:$Vk,84:$Vl,86:$Vm,87:$Vn,93:$Vo,94:$Vp,95:$Vq,96:$Vr,97:$Vs,98:$Vt}),o($VC,[2,125]),o($VC,[2,146]),o($VC,[2,147]),o($VC,[2,148]),o($VC,[2,149]),o($VC,[2,150]),o($VC,[2,151]),o($VC,[2,152]),o($VC,[2,153]),o($VC,[2,154]),o($VC,[2,155]),o($VC,[2,156]),o($VC,[2,157]),o($VC,[2,158]),o($VC,[2,159]),o($VC,[2,160]),o($V3,[2,11]),o($V3,[2,17]),o($V3,[2,18]),{9:[1,85]},o($VD,[2,25],{17:86,10:$Vu}),o($Vv,[2,26]),{32:87,33:29,34:$Va,36:30,68:$Vg,78:$Vh,79:$Vi,82:$Vj,83:$Vk,84:$Vl,86:$Vm,87:$Vn,91:31,93:$Vo,94:$Vp,95:$Vq,96:$Vr,97:$Vs,98:$Vt},o($Vv,[2,35]),o($Vv,[2,36]),o($Vv,[2,37]),o($VE,[2,63],{55:88,56:[1,89],59:[1,90]}),{10:$VF,12:$VG,13:$VH,26:$VI,27:91,30:$VJ,34:$VK,49:$VL,57:$VM,60:92,61:$VN,62:103,63:$VO,64:$VP,65:$VQ,66:$VR,67:$VS,68:$VT,69:$VU,71:94,72:$VV,78:$VW,79:$VX,82:$VY,83:$VZ,84:$V_,86:$V$,87:$V01,88:$V11,89:$V21,90:100,93:$V31,94:$V41,95:$V51,96:$V61,97:$V71,98:$V81},o([34,56,59,68,78,79,82,83,84,86,87,93,94,95,96,97,98],[2,65]),o($Vv,[2,27]),o($Vv,[2,28]),o($Vv,[2,29]),o($Vv,[2,30]),o($Vv,[2,31]),{10:$VF,12:$VG,13:$VH,26:$VI,27:128,30:$VJ,34:$VK,49:$VL,57:$VM,60:92,61:$VN,62:103,63:$VO,64:$VP,65:$VQ,66:$VR,67:$VS,68:$VT,69:$VU,71:94,72:$VV,78:$VW,79:$VX,82:$VY,83:$VZ,84:$V_,86:$V$,87:$V01,88:$V11,89:$V21,90:100,93:$V31,94:$V41,95:$V51,96:$V61,97:$V71,98:$V81},o($V91,$V4,{5:129}),o($Vz,[2,40],{34:$Va1}),{13:$Vb1,34:$VK,68:$Vc1,74:131,75:[1,132],78:$VW,79:$VX,82:$VY,83:$VZ,84:$Vd1,86:$V$,87:$V01,90:135,92:133,93:$V31,94:$V41,95:$V51,96:$V61,97:$V71,98:$V81},{72:[1,138],76:139,78:[1,140]},{13:$Vb1,34:$VK,68:$Vc1,72:[1,141],74:142,78:$VW,79:$VX,82:$VY,83:$VZ,84:$Vd1,86:$V$,87:$V01,90:135,92:133,93:$V31,94:$V41,95:$V51,96:$V61,97:$V71,98:$V81},{13:$Vb1,34:$VK,68:$Vc1,74:143,78:$VW,79:$VX,82:$VY,83:$VZ,84:$Vd1,86:$V$,87:$V01,90:135,92:133,93:$V31,94:$V41,95:$V51,96:$V61,97:$V71,98:$V81},{13:$Vb1,34:$VK,68:$Vc1,74:144,78:$VW,79:$VX,82:$VY,83:$VZ,84:$Vd1,86:$V$,87:$V01,90:135,92:133,93:$V31,94:$V41,95:$V51,96:$V61,97:$V71,98:$V81},{34:$Va,36:145,68:$Vg,78:$Vh,79:$Vi,82:$Vj,83:$Vk,84:$Vl,86:$Vm,87:$Vn,91:31,93:$Vo,94:$Vp,95:$Vq,96:$Vr,97:$Vs,98:$Vt},{10:$VF,12:$VG,13:$VH,26:$VI,27:146,30:$VJ,34:$VK,49:$VL,57:$VM,60:92,61:$VN,62:103,63:$VO,64:$VP,65:$VQ,66:$VR,67:$VS,68:$VT,69:$VU,71:94,72:$VV,78:$VW,79:$VX,82:$VY,83:$VZ,84:$V_,86:$V$,87:$V01,88:$V11,89:$V21,90:100,93:$V31,94:$V41,95:$V51,96:$V61,97:$V71,98:$V81},{10:$VF,12:$VG,13:$VH,26:$VI,27:148,30:$VJ,34:$VK,37:[1,147],49:$VL,57:$VM,60:92,61:$VN,62:103,63:$VO,64:$VP,65:$VQ,66:$VR,67:$VS,68:$VT,69:$VU,71:94,72:$VV,78:$VW,79:$VX,82:$VY,83:$VZ,84:$V_,86:$V$,87:$V01,88:$V11,89:$V21,90:100,93:$V31,94:$V41,95:$V51,96:$V61,97:$V71,98:$V81},{10:$VF,12:$VG,13:$VH,26:$VI,27:149,30:$VJ,34:$VK,49:$VL,57:$VM,60:92,61:$VN,62:103,63:$VO,64:$VP,65:$VQ,66:$VR,67:$VS,68:$VT,69:$VU,71:94,72:$VV,78:$VW,79:$VX,82:$VY,83:$VZ,84:$V_,86:$V$,87:$V01,88:$V11,89:$V21,90:100,93:$V31,94:$V41,95:$V51,96:$V61,97:$V71,98:$V81},{10:$VF,12:$VG,13:$VH,26:$VI,27:150,30:$VJ,34:$VK,49:$VL,57:$VM,60:92,61:$VN,62:103,63:$VO,64:$VP,65:$VQ,66:$VR,67:$VS,68:$VT,69:$VU,71:94,72:$VV,78:$VW,79:$VX,82:$VY,83:$VZ,84:$V_,86:$V$,87:$V01,88:$V11,89:$V21,90:100,93:$V31,94:$V41,95:$V51,96:$V61,97:$V71,98:$V81},{10:$VF,12:$VG,13:$VH,26:$VI,27:151,30:$VJ,34:$VK,49:$VL,57:$VM,60:92,61:$VN,62:103,63:$VO,64:$VP,65:$VQ,66:$VR,67:$VS,68:$VT,69:$VU,71:94,72:$VV,78:$VW,79:$VX,82:$VY,83:$VZ,84:$V_,86:$V$,87:$V01,88:$V11,89:$V21,90:100,93:$V31,94:$V41,95:$V51,96:$V61,97:$V71,98:$V81},{10:$VF,12:$VG,13:$VH,26:$VI,27:152,30:$VJ,34:$VK,49:$VL,57:$VM,60:92,61:$VN,62:103,63:$VO,64:$VP,65:$VQ,66:$VR,67:$VS,68:$VT,69:$VU,71:94,72:$VV,78:$VW,79:$VX,82:$VY,83:$VZ,84:$V_,86:$V$,87:$V01,88:$V11,89:$V21,90:100,93:$V31,94:$V41,95:$V51,96:$V61,97:$V71,98:$V81},{10:$VF,12:$VG,13:$VH,26:$VI,27:153,30:$VJ,34:$VK,47:[1,154],49:$VL,57:$VM,60:92,61:$VN,62:103,63:$VO,64:$VP,65:$VQ,66:$VR,67:$VS,68:$VT,69:$VU,71:94,72:$VV,78:$VW,79:$VX,82:$VY,83:$VZ,84:$V_,86:$V$,87:$V01,88:$V11,89:$V21,90:100,93:$V31,94:$V41,95:$V51,96:$V61,97:$V71,98:$V81},{10:$VF,12:$VG,13:$VH,26:$VI,27:155,30:$VJ,34:$VK,49:$VL,57:$VM,60:92,61:$VN,62:103,63:$VO,64:$VP,65:$VQ,66:$VR,67:$VS,68:$VT,69:$VU,71:94,72:$VV,78:$VW,79:$VX,82:$VY,83:$VZ,84:$V_,86:$V$,87:$V01,88:$V11,89:$V21,90:100,93:$V31,94:$V41,95:$V51,96:$V61,97:$V71,98:$V81},{10:$VF,12:$VG,13:$VH,26:$VI,27:156,30:$VJ,34:$VK,49:$VL,57:$VM,60:92,61:$VN,62:103,63:$VO,64:$VP,65:$VQ,66:$VR,67:$VS,68:$VT,69:$VU,71:94,72:$VV,78:$VW,79:$VX,82:$VY,83:$VZ,84:$V_,86:$V$,87:$V01,88:$V11,89:$V21,90:100,93:$V31,94:$V41,95:$V51,96:$V61,97:$V71,98:$V81},{10:$VF,12:$VG,13:$VH,26:$VI,27:157,30:$VJ,34:$VK,49:$VL,57:$VM,60:92,61:$VN,62:103,63:$VO,64:$VP,65:$VQ,66:$VR,67:$VS,68:$VT,69:$VU,71:94,72:$VV,78:$VW,79:$VX,82:$VY,83:$VZ,84:$V_,86:$V$,87:$V01,88:$V11,89:$V21,90:100,93:$V31,94:$V41,95:$V51,96:$V61,97:$V71,98:$V81},o($VC,[2,126]),o($V3,[2,19]),o($VD,[2,24]),o($Vz,[2,38],{17:158,10:$Vu}),o($VE,[2,60],{10:[1,159]}),{10:[1,160]},{10:$VF,12:$VG,13:$VH,26:$VI,27:161,30:$VJ,34:$VK,49:$VL,57:$VM,60:92,61:$VN,62:103,63:$VO,64:$VP,65:$VQ,66:$VR,67:$VS,68:$VT,69:$VU,71:94,72:$VV,78:$VW,79:$VX,82:$VY,83:$VZ,84:$V_,86:$V$,87:$V01,88:$V11,89:$V21,90:100,93:$V31,94:$V41,95:$V51,96:$V61,97:$V71,98:$V81},{10:$VF,12:$VG,13:$VH,26:$VI,30:$VJ,34:$VK,49:$VL,57:$VM,58:[1,162],60:163,62:103,63:$VO,64:$VP,65:$VQ,66:$VR,67:$VS,68:$VT,69:$VU,71:94,72:$VV,78:$VW,79:$VX,82:$VY,83:$VZ,84:$V_,86:$V$,87:$V01,88:$V11,89:$V21,90:100,93:$V31,94:$V41,95:$V51,96:$V61,97:$V71,98:$V81},o($Ve1,[2,67]),o($Ve1,[2,69]),o($Ve1,[2,115]),o($Ve1,[2,116]),o($Ve1,[2,117]),o($Ve1,[2,118]),o($Ve1,[2,119]),o($Ve1,[2,120]),o($Ve1,[2,121]),o($Ve1,[2,122]),o($Ve1,[2,123]),o($Ve1,[2,124]),o($Ve1,[2,133]),o($Ve1,[2,134]),o($Ve1,[2,135]),o($Ve1,[2,136]),o($Ve1,[2,137]),o($Ve1,[2,138]),o($Ve1,[2,139]),o($Ve1,[2,140]),o($Ve1,[2,141]),o($Ve1,[2,142]),o($Ve1,[2,143]),o($Ve1,[2,144]),o($Ve1,[2,145]),o($Ve1,[2,70]),o($Ve1,[2,71]),o($Ve1,[2,72]),o($Ve1,[2,73]),o($Ve1,[2,74]),o($Ve1,[2,75]),o($Ve1,[2,76]),o($Ve1,[2,77]),o($Ve1,[2,78]),o($Ve1,[2,79]),o($Ve1,[2,80]),{8:$Vw,9:$Vx,10:$VF,11:$Vy,12:$VG,13:$VH,20:165,26:$VI,28:[1,164],30:$VJ,34:$VK,49:$VL,57:$VM,60:163,62:103,63:$VO,64:$VP,65:$VQ,66:$VR,67:$VS,68:$VT,69:$VU,71:94,72:$VV,78:$VW,79:$VX,82:$VY,83:$VZ,84:$V_,86:$V$,87:$V01,88:$V11,89:$V21,90:100,93:$V31,94:$V41,95:$V51,96:$V61,97:$V71,98:$V81},{6:10,7:11,8:$V5,9:$V6,10:$V7,11:$V8,19:16,21:17,22:18,23:19,24:20,25:21,26:$V9,30:[1,166],32:23,33:29,34:$Va,36:30,63:$Vb,64:$Vc,65:$Vd,66:$Ve,67:$Vf,68:$Vg,78:$Vh,79:$Vi,82:$Vj,83:$Vk,84:$Vl,86:$Vm,87:$Vn,91:31,93:$Vo,94:$Vp,95:$Vq,96:$Vr,97:$Vs,98:$Vt},{10:$Vu,17:167},{10:[1,168],13:$Vb1,34:$VK,68:$Vc1,78:$VW,79:$VX,82:$VY,83:$VZ,84:$Vd1,86:$V$,87:$V01,90:135,92:169,93:$V31,94:$V41,95:$V51,96:$V61,97:$V71,98:$V81},{10:[1,170]},o($Vf1,[2,127]),o($Vf1,[2,129]),o($Vf1,[2,130]),o($Vf1,[2,131]),o($Vf1,[2,132]),{10:[1,171]},{10:[1,172],79:[1,173]},o($Vg1,[2,98]),{10:[1,174]},{10:[1,175],13:$Vb1,34:$VK,68:$Vc1,78:$VW,79:$VX,82:$VY,83:$VZ,84:$Vd1,86:$V$,87:$V01,90:135,92:169,93:$V31,94:$V41,95:$V51,96:$V61,97:$V71,98:$V81},{10:[1,176],13:$Vb1,34:$VK,68:$Vc1,78:$VW,79:$VX,82:$VY,83:$VZ,84:$Vd1,86:$V$,87:$V01,90:135,92:169,93:$V31,94:$V41,95:$V51,96:$V61,97:$V71,98:$V81},{10:[1,177],13:$Vb1,34:$VK,68:$Vc1,78:$VW,79:$VX,82:$VY,83:$VZ,84:$Vd1,86:$V$,87:$V01,90:135,92:169,93:$V31,94:$V41,95:$V51,96:$V61,97:$V71,98:$V81},o($VA,[2,44],{91:84,34:$Va,68:$Vg,78:$Vh,79:$Vi,82:$Vj,83:$Vk,84:$Vl,86:$Vm,87:$Vn,93:$Vo,94:$Vp,95:$Vq,96:$Vr,97:$Vs,98:$Vt}),{10:$VF,12:$VG,13:$VH,26:$VI,29:[1,178],30:$VJ,34:$VK,49:$VL,57:$VM,60:163,62:103,63:$VO,64:$VP,65:$VQ,66:$VR,67:$VS,68:$VT,69:$VU,71:94,72:$VV,78:$VW,79:$VX,82:$VY,83:$VZ,84:$V_,86:$V$,87:$V01,88:$V11,89:$V21,90:100,93:$V31,94:$V41,95:$V51,96:$V61,97:$V71,98:$V81},{10:$VF,12:$VG,13:$VH,26:$VI,27:179,30:$VJ,34:$VK,49:$VL,57:$VM,60:92,61:$VN,62:103,63:$VO,64:$VP,65:$VQ,66:$VR,67:$VS,68:$VT,69:$VU,71:94,72:$VV,78:$VW,79:$VX,82:$VY,83:$VZ,84:$V_,86:$V$,87:$V01,88:$V11,89:$V21,90:100,93:$V31,94:$V41,95:$V51,96:$V61,97:$V71,98:$V81},{10:$VF,12:$VG,13:$VH,26:$VI,30:$VJ,34:$VK,38:[1,180],49:$VL,57:$VM,60:163,62:103,63:$VO,64:$VP,65:$VQ,66:$VR,67:$VS,68:$VT,69:$VU,71:94,72:$VV,78:$VW,79:$VX,82:$VY,83:$VZ,84:$V_,86:$V$,87:$V01,88:$V11,89:$V21,90:100,93:$V31,94:$V41,95:$V51,96:$V61,97:$V71,98:$V81},{10:$VF,12:$VG,13:$VH,26:$VI,30:$VJ,34:$VK,40:[1,181],49:$VL,57:$VM,60:163,62:103,63:$VO,64:$VP,65:$VQ,66:$VR,67:$VS,68:$VT,69:$VU,71:94,72:$VV,78:$VW,79:$VX,82:$VY,83:$VZ,84:$V_,86:$V$,87:$V01,88:$V11,89:$V21,90:100,93:$V31,94:$V41,95:$V51,96:$V61,97:$V71,98:$V81},{10:$VF,12:$VG,13:$VH,26:$VI,30:$VJ,34:$VK,42:[1,182],49:$VL,57:$VM,60:163,62:103,63:$VO,64:$VP,65:$VQ,66:$VR,67:$VS,68:$VT,69:$VU,71:94,72:$VV,78:$VW,79:$VX,82:$VY,83:$VZ,84:$V_,86:$V$,87:$V01,88:$V11,89:$V21,90:100,93:$V31,94:$V41,95:$V51,96:$V61,97:$V71,98:$V81},{10:$VF,12:$VG,13:$VH,26:$VI,30:$VJ,34:$VK,44:[1,183],49:$VL,57:$VM,60:163,62:103,63:$VO,64:$VP,65:$VQ,66:$VR,67:$VS,68:$VT,69:$VU,71:94,72:$VV,78:$VW,79:$VX,82:$VY,83:$VZ,84:$V_,86:$V$,87:$V01,88:$V11,89:$V21,90:100,93:$V31,94:$V41,95:$V51,96:$V61,97:$V71,98:$V81},{10:$VF,12:$VG,13:$VH,26:$VI,30:$VJ,34:$VK,46:[1,184],49:$VL,57:$VM,60:163,62:103,63:$VO,64:$VP,65:$VQ,66:$VR,67:$VS,68:$VT,69:$VU,71:94,72:$VV,78:$VW,79:$VX,82:$VY,83:$VZ,84:$V_,86:$V$,87:$V01,88:$V11,89:$V21,90:100,93:$V31,94:$V41,95:$V51,96:$V61,97:$V71,98:$V81},{10:$VF,12:$VG,13:$VH,26:$VI,30:$VJ,34:$VK,48:[1,185],49:$VL,57:$VM,60:163,62:103,63:$VO,64:$VP,65:$VQ,66:$VR,67:$VS,68:$VT,69:$VU,71:94,72:$VV,78:$VW,79:$VX,82:$VY,83:$VZ,84:$V_,86:$V$,87:$V01,88:$V11,89:$V21,90:100,93:$V31,94:$V41,95:$V51,96:$V61,97:$V71,98:$V81},{10:$VF,12:$VG,13:$VH,26:$VI,27:186,30:$VJ,34:$VK,49:$VL,57:$VM,60:92,61:$VN,62:103,63:$VO,64:$VP,65:$VQ,66:$VR,67:$VS,68:$VT,69:$VU,71:94,72:$VV,78:$VW,79:$VX,82:$VY,83:$VZ,84:$V_,86:$V$,87:$V01,88:$V11,89:$V21,90:100,93:$V31,94:$V41,95:$V51,96:$V61,97:$V71,98:$V81},{10:$VF,12:$VG,13:$VH,26:$VI,29:[1,187],30:$VJ,34:$VK,49:$VL,57:$VM,60:163,62:103,63:$VO,64:$VP,65:$VQ,66:$VR,67:$VS,68:$VT,69:$VU,71:94,72:$VV,78:$VW,79:$VX,82:$VY,83:$VZ,84:$V_,86:$V$,87:$V01,88:$V11,89:$V21,90:100,93:$V31,94:$V41,95:$V51,96:$V61,97:$V71,98:$V81},{10:$VF,12:$VG,13:$VH,26:$VI,30:$VJ,34:$VK,49:$VL,51:[1,188],53:[1,189],57:$VM,60:163,62:103,63:$VO,64:$VP,65:$VQ,66:$VR,67:$VS,68:$VT,69:$VU,71:94,72:$VV,78:$VW,79:$VX,82:$VY,83:$VZ,84:$V_,86:$V$,87:$V01,88:$V11,89:$V21,90:100,93:$V31,94:$V41,95:$V51,96:$V61,97:$V71,98:$V81},{10:$VF,12:$VG,13:$VH,26:$VI,30:$VJ,34:$VK,49:$VL,51:[1,191],53:[1,190],57:$VM,60:163,62:103,63:$VO,64:$VP,65:$VQ,66:$VR,67:$VS,68:$VT,69:$VU,71:94,72:$VV,78:$VW,79:$VX,82:$VY,83:$VZ,84:$V_,86:$V$,87:$V01,88:$V11,89:$V21,90:100,93:$V31,94:$V41,95:$V51,96:$V61,97:$V71,98:$V81},o($Vz,[2,39],{34:$Va1}),o($VE,[2,62]),o($VE,[2,61]),{10:$VF,12:$VG,13:$VH,26:$VI,30:$VJ,34:$VK,49:$VL,57:$VM,59:[1,192],60:163,62:103,63:$VO,64:$VP,65:$VQ,66:$VR,67:$VS,68:$VT,69:$VU,71:94,72:$VV,78:$VW,79:$VX,82:$VY,83:$VZ,84:$V_,86:$V$,87:$V01,88:$V11,89:$V21,90:100,93:$V31,94:$V41,95:$V51,96:$V61,97:$V71,98:$V81},o($VE,[2,64]),o($Ve1,[2,68]),{10:$VF,12:$VG,13:$VH,26:$VI,27:193,30:$VJ,34:$VK,49:$VL,57:$VM,60:92,61:$VN,62:103,63:$VO,64:$VP,65:$VQ,66:$VR,67:$VS,68:$VT,69:$VU,71:94,72:$VV,78:$VW,79:$VX,82:$VY,83:$VZ,84:$V_,86:$V$,87:$V01,88:$V11,89:$V21,90:100,93:$V31,94:$V41,95:$V51,96:$V61,97:$V71,98:$V81},o($V91,$V4,{5:194}),o($Vv,[2,34]),{33:195,34:$Va,36:30,68:$Vg,78:$Vh,79:$Vi,82:$Vj,83:$Vk,84:$Vl,86:$Vm,87:$Vn,91:31,93:$Vo,94:$Vp,95:$Vq,96:$Vr,97:$Vs,98:$Vt},{10:$Vh1,63:$Vi1,73:196,75:$Vj1,78:$Vk1,80:197,81:198,82:$Vl1,83:$Vm1,84:$Vn1,85:$Vo1,86:$Vp1,87:$Vq1,88:$Vr1},o($Vf1,[2,128]),{10:$Vh1,63:$Vi1,73:210,75:$Vj1,78:$Vk1,80:197,81:198,82:$Vl1,83:$Vm1,84:$Vn1,85:$Vo1,86:$Vp1,87:$Vq1,88:$Vr1},{10:$Vh1,63:$Vi1,73:211,75:$Vj1,77:[1,212],78:$Vk1,80:197,81:198,82:$Vl1,83:$Vm1,84:$Vn1,85:$Vo1,86:$Vp1,87:$Vq1,88:$Vr1},{10:$Vh1,63:$Vi1,73:213,75:$Vj1,77:[1,214],78:$Vk1,80:197,81:198,82:$Vl1,83:$Vm1,84:$Vn1,85:$Vo1,86:$Vp1,87:$Vq1,88:$Vr1},{78:[1,215]},{10:$Vh1,63:$Vi1,73:216,75:$Vj1,78:$Vk1,80:197,81:198,82:$Vl1,83:$Vm1,84:$Vn1,85:$Vo1,86:$Vp1,87:$Vq1,88:$Vr1},{10:$Vh1,63:$Vi1,73:217,75:$Vj1,78:$Vk1,80:197,81:198,82:$Vl1,83:$Vm1,84:$Vn1,85:$Vo1,86:$Vp1,87:$Vq1,88:$Vr1},{13:$Vb1,34:$VK,68:$Vc1,74:218,78:$VW,79:$VX,82:$VY,83:$VZ,84:$Vd1,86:$V$,87:$V01,90:135,92:133,93:$V31,94:$V41,95:$V51,96:$V61,97:$V71,98:$V81},{13:$Vb1,34:$VK,61:[1,220],68:$Vc1,74:219,78:$VW,79:$VX,82:$VY,83:$VZ,84:$Vd1,86:$V$,87:$V01,90:135,92:133,93:$V31,94:$V41,95:$V51,96:$V61,97:$V71,98:$V81},o($VB,[2,45]),{10:$VF,12:$VG,13:$VH,26:$VI,30:$VJ,34:$VK,38:[1,221],49:$VL,57:$VM,60:163,62:103,63:$VO,64:$VP,65:$VQ,66:$VR,67:$VS,68:$VT,69:$VU,71:94,72:$VV,78:$VW,79:$VX,82:$VY,83:$VZ,84:$V_,86:$V$,87:$V01,88:$V11,89:$V21,90:100,93:$V31,94:$V41,95:$V51,96:$V61,97:$V71,98:$V81},o($VB,[2,51]),o($VB,[2,47]),o($VB,[2,48]),o($VB,[2,49]),o($VB,[2,50]),o($VB,[2,52]),{10:$VF,12:$VG,13:$VH,26:$VI,30:$VJ,34:$VK,48:[1,222],49:$VL,57:$VM,60:163,62:103,63:$VO,64:$VP,65:$VQ,66:$VR,67:$VS,68:$VT,69:$VU,71:94,72:$VV,78:$VW,79:$VX,82:$VY,83:$VZ,84:$V_,86:$V$,87:$V01,88:$V11,89:$V21,90:100,93:$V31,94:$V41,95:$V51,96:$V61,97:$V71,98:$V81},o($VB,[2,54]),o($VB,[2,55]),o($VB,[2,57]),o($VB,[2,56]),o($VB,[2,58]),o([10,34,68,78,79,82,83,84,86,87,93,94,95,96,97,98],[2,66]),{10:$VF,12:$VG,13:$VH,26:$VI,29:[1,223],30:$VJ,34:$VK,49:$VL,57:$VM,60:163,62:103,63:$VO,64:$VP,65:$VQ,66:$VR,67:$VS,68:$VT,69:$VU,71:94,72:$VV,78:$VW,79:$VX,82:$VY,83:$VZ,84:$V_,86:$V$,87:$V01,88:$V11,89:$V21,90:100,93:$V31,94:$V41,95:$V51,96:$V61,97:$V71,98:$V81},{6:10,7:11,8:$V5,9:$V6,10:$V7,11:$V8,19:16,21:17,22:18,23:19,24:20,25:21,26:$V9,30:[1,224],32:23,33:29,34:$Va,36:30,63:$Vb,64:$Vc,65:$Vd,66:$Ve,67:$Vf,68:$Vg,78:$Vh,79:$Vi,82:$Vj,83:$Vk,84:$Vl,86:$Vm,87:$Vn,91:31,93:$Vo,94:$Vp,95:$Vq,96:$Vr,97:$Vs,98:$Vt},o($VA,[2,43]),o($Vs1,[2,90],{79:$Vt1}),o($Vu1,[2,100],{81:226,10:$Vh1,63:$Vi1,75:$Vj1,78:$Vk1,82:$Vl1,83:$Vm1,84:$Vn1,85:$Vo1,86:$Vp1,87:$Vq1,88:$Vr1}),o($Vv1,[2,102]),o($Vv1,[2,104]),o($Vv1,[2,105]),o($Vv1,[2,106]),o($Vv1,[2,107]),o($Vv1,[2,108]),o($Vv1,[2,109]),o($Vv1,[2,110]),o($Vv1,[2,111]),o($Vv1,[2,112]),o($Vv1,[2,113]),o($Vv1,[2,114]),o($Vs1,[2,91],{79:$Vt1}),o($Vs1,[2,92],{79:$Vt1}),{10:[1,227]},o($Vs1,[2,93],{79:$Vt1}),{10:[1,228]},o($Vg1,[2,99]),o($Vs1,[2,83],{79:$Vt1}),o($Vs1,[2,84],{79:$Vt1}),o($Vs1,[2,85],{90:135,92:169,13:$Vb1,34:$VK,68:$Vc1,78:$VW,79:$VX,82:$VY,83:$VZ,84:$Vd1,86:$V$,87:$V01,93:$V31,94:$V41,95:$V51,96:$V61,97:$V71,98:$V81}),o($Vs1,[2,86],{90:135,92:169,10:[1,229],13:$Vb1,34:$VK,68:$Vc1,78:$VW,79:$VX,82:$VY,83:$VZ,84:$Vd1,86:$V$,87:$V01,93:$V31,94:$V41,95:$V51,96:$V61,97:$V71,98:$V81}),o($Vs1,[2,88],{10:[1,230]}),{38:[1,231]},{48:[1,232]},{8:$Vw,9:$Vx,11:$Vy,20:233},o($Vv,[2,33]),{10:$Vh1,63:$Vi1,75:$Vj1,78:$Vk1,80:234,81:198,82:$Vl1,83:$Vm1,84:$Vn1,85:$Vo1,86:$Vp1,87:$Vq1,88:$Vr1},o($Vv1,[2,103]),{13:$Vb1,34:$VK,68:$Vc1,74:235,78:$VW,79:$VX,82:$VY,83:$VZ,84:$Vd1,86:$V$,87:$V01,90:135,92:133,93:$V31,94:$V41,95:$V51,96:$V61,97:$V71,98:$V81},{13:$Vb1,34:$VK,68:$Vc1,74:236,78:$VW,79:$VX,82:$VY,83:$VZ,84:$Vd1,86:$V$,87:$V01,90:135,92:133,93:$V31,94:$V41,95:$V51,96:$V61,97:$V71,98:$V81},{61:[1,237]},{61:[1,238]},o($VB,[2,46]),o($VB,[2,53]),o($V91,$V4,{5:239}),o($Vu1,[2,101],{81:226,10:$Vh1,63:$Vi1,75:$Vj1,78:$Vk1,82:$Vl1,83:$Vm1,84:$Vn1,85:$Vo1,86:$Vp1,87:$Vq1,88:$Vr1}),o($Vs1,[2,96],{90:135,92:169,10:[1,240],13:$Vb1,34:$VK,68:$Vc1,78:$VW,79:$VX,82:$VY,83:$VZ,84:$Vd1,86:$V$,87:$V01,93:$V31,94:$V41,95:$V51,96:$V61,97:$V71,98:$V81}),o($Vs1,[2,97],{90:135,92:169,10:[1,241],13:$Vb1,34:$VK,68:$Vc1,78:$VW,79:$VX,82:$VY,83:$VZ,84:$Vd1,86:$V$,87:$V01,93:$V31,94:$V41,95:$V51,96:$V61,97:$V71,98:$V81}),o($Vs1,[2,87]),o($Vs1,[2,89]),{6:10,7:11,8:$V5,9:$V6,10:$V7,11:$V8,19:16,21:17,22:18,23:19,24:20,25:21,26:$V9,30:[1,242],32:23,33:29,34:$Va,36:30,63:$Vb,64:$Vc,65:$Vd,66:$Ve,67:$Vf,68:$Vg,78:$Vh,79:$Vi,82:$Vj,83:$Vk,84:$Vl,86:$Vm,87:$Vn,91:31,93:$Vo,94:$Vp,95:$Vq,96:$Vr,97:$Vs,98:$Vt},{10:$Vh1,63:$Vi1,73:243,75:$Vj1,78:$Vk1,80:197,81:198,82:$Vl1,83:$Vm1,84:$Vn1,85:$Vo1,86:$Vp1,87:$Vq1,88:$Vr1},{10:$Vh1,63:$Vi1,73:244,75:$Vj1,78:$Vk1,80:197,81:198,82:$Vl1,83:$Vm1,84:$Vn1,85:$Vo1,86:$Vp1,87:$Vq1,88:$Vr1},o($Vv,[2,32]),o($Vs1,[2,94],{79:$Vt1}),o($Vs1,[2,95],{79:$Vt1})],\ndefaultActions: {},\nparseError: function parseError (str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer.lex() || EOF;\n if (typeof token !== 'number') {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0:/* do nothing */\nbreak;\ncase 1:this.begin(\"string\");\nbreak;\ncase 2:this.popState();\nbreak;\ncase 3:return \"STR\";\nbreak;\ncase 4:return 63;\nbreak;\ncase 5:return 72;\nbreak;\ncase 6:return 64;\nbreak;\ncase 7:return 77;\nbreak;\ncase 8:return 65;\nbreak;\ncase 9:return 66;\nbreak;\ncase 10:return 67;\nbreak;\ncase 11:if(yy.lex.firstGraph()){this.begin(\"dir\");} return 12;\nbreak;\ncase 12:if(yy.lex.firstGraph()){this.begin(\"dir\");} return 12;\nbreak;\ncase 13:return 26;\nbreak;\ncase 14:return 30;\nbreak;\ncase 15: this.popState(); return 13; \nbreak;\ncase 16: this.popState(); return 13; \nbreak;\ncase 17: this.popState(); return 13; \nbreak;\ncase 18: this.popState(); return 13; \nbreak;\ncase 19: this.popState(); return 13; \nbreak;\ncase 20: this.popState(); return 13; \nbreak;\ncase 21: this.popState(); return 13; \nbreak;\ncase 22: this.popState(); return 13; \nbreak;\ncase 23: this.popState(); return 13; \nbreak;\ncase 24: this.popState(); return 13; \nbreak;\ncase 25: return 78;\nbreak;\ncase 26:return 86;\nbreak;\ncase 27:return 35;\nbreak;\ncase 28:return 83;\nbreak;\ncase 29:return 34;\nbreak;\ncase 30:return 8;\nbreak;\ncase 31:return 79;\nbreak;\ncase 32:return 97;\nbreak;\ncase 33:return 58;\nbreak;\ncase 34:return 58;\nbreak;\ncase 35:return 58;\nbreak;\ncase 36:return 58;\nbreak;\ncase 37:return 58;\nbreak;\ncase 38:return 58;\nbreak;\ncase 39:return 58;\nbreak;\ncase 40:return 58;\nbreak;\ncase 41:return 58;\nbreak;\ncase 42:return 58;\nbreak;\ncase 43:return 58;\nbreak;\ncase 44:return 58;\nbreak;\ncase 45:return 58;\nbreak;\ncase 46:return 58;\nbreak;\ncase 47:return 58;\nbreak;\ncase 48:return 58;\nbreak;\ncase 49:return 58;\nbreak;\ncase 50:return 58;\nbreak;\ncase 51:return 58;\nbreak;\ncase 52:return 58;\nbreak;\ncase 53:return 58;\nbreak;\ncase 54:return 58;\nbreak;\ncase 55:return 58;\nbreak;\ncase 56:return 58;\nbreak;\ncase 57:return 58;\nbreak;\ncase 58:return 58;\nbreak;\ncase 59:return 58;\nbreak;\ncase 60:return 58;\nbreak;\ncase 61:return 57;\nbreak;\ncase 62:return 57;\nbreak;\ncase 63:return 57;\nbreak;\ncase 64:return 57;\nbreak;\ncase 65:return 57;\nbreak;\ncase 66:return 57;\nbreak;\ncase 67:return 57;\nbreak;\ncase 68:return 57;\nbreak;\ncase 69:return 57;\nbreak;\ncase 70:return 57;\nbreak;\ncase 71:return 57;\nbreak;\ncase 72:return 57;\nbreak;\ncase 73:return 39;\nbreak;\ncase 74:return 40;\nbreak;\ncase 75:return 41;\nbreak;\ncase 76:return 42;\nbreak;\ncase 77:return 43;\nbreak;\ncase 78:return 44;\nbreak;\ncase 79:return 45;\nbreak;\ncase 80:return 46;\nbreak;\ncase 81:return 84;\nbreak;\ncase 82:return 87;\nbreak;\ncase 83:return 98;\nbreak;\ncase 84:return 95;\nbreak;\ncase 85:return 88;\nbreak;\ncase 86:return 96;\nbreak;\ncase 87:return 96;\nbreak;\ncase 88:return 89;\nbreak;\ncase 89:return 49;\nbreak;\ncase 90:return 69;\nbreak;\ncase 91:return 'SEP';\nbreak;\ncase 92:return 68;\nbreak;\ncase 93:return 82;\nbreak;\ncase 94:return 51;\nbreak;\ncase 95:return 50;\nbreak;\ncase 96:return 53;\nbreak;\ncase 97:return 52;\nbreak;\ncase 98:return 93;\nbreak;\ncase 99:return 94;\nbreak;\ncase 100:return 59;\nbreak;\ncase 101:return 37;\nbreak;\ncase 102:return 38;\nbreak;\ncase 103:return 28;\nbreak;\ncase 104:return 29;\nbreak;\ncase 105:return 47\nbreak;\ncase 106:return 48\nbreak;\ncase 107:return 104;\nbreak;\ncase 108:return 9;\nbreak;\ncase 109:return 10;\nbreak;\ncase 110:return 11;\nbreak;\n}\n},\nrules: [/^(?:%%[^\\n]*\\n*)/,/^(?:[\"])/,/^(?:[\"])/,/^(?:[^\"]*)/,/^(?:style\\b)/,/^(?:default\\b)/,/^(?:linkStyle\\b)/,/^(?:interpolate\\b)/,/^(?:classDef\\b)/,/^(?:class\\b)/,/^(?:click\\b)/,/^(?:graph\\b)/,/^(?:flowchart\\b)/,/^(?:subgraph\\b)/,/^(?:end\\b\\s*)/,/^(?:\\s*LR\\b)/,/^(?:\\s*RL\\b)/,/^(?:\\s*TB\\b)/,/^(?:\\s*BT\\b)/,/^(?:\\s*TD\\b)/,/^(?:\\s*BR\\b)/,/^(?:\\s*<)/,/^(?:\\s*>)/,/^(?:\\s*\\^)/,/^(?:\\s*v\\b)/,/^(?:[0-9]+)/,/^(?:#)/,/^(?::::)/,/^(?::)/,/^(?:&)/,/^(?:;)/,/^(?:,)/,/^(?:\\*)/,/^(?:\\s*--[x]\\s*)/,/^(?:\\s*-->\\s*)/,/^(?:\\s*<-->\\s*)/,/^(?:\\s*[x]--[x]\\s*)/,/^(?:\\s*[o]--[o]\\s*)/,/^(?:\\s*[o]\\.-[o]\\s*)/,/^(?:\\s*<==>\\s*)/,/^(?:\\s*[o]==[o]\\s*)/,/^(?:\\s*[x]==[x]\\s*)/,/^(?:\\s*[x].-[x]\\s*)/,/^(?:\\s*[x]-\\.-[x]\\s*)/,/^(?:\\s*<\\.->\\s*)/,/^(?:\\s*<-\\.->\\s*)/,/^(?:\\s*[o]-\\.-[o]\\s*)/,/^(?:\\s*--[o]\\s*)/,/^(?:\\s*---\\s*)/,/^(?:\\s*-\\.-[x]\\s*)/,/^(?:\\s*-\\.->\\s*)/,/^(?:\\s*-\\.-[o]\\s*)/,/^(?:\\s*-\\.-\\s*)/,/^(?:\\s*.-[x]\\s*)/,/^(?:\\s*\\.->\\s*)/,/^(?:\\s*\\.-[o]\\s*)/,/^(?:\\s*\\.-\\s*)/,/^(?:\\s*==[x]\\s*)/,/^(?:\\s*==>\\s*)/,/^(?:\\s*==[o]\\s*)/,/^(?:\\s*==[\\=]\\s*)/,/^(?:\\s*<--\\s*)/,/^(?:\\s*[x]--\\s*)/,/^(?:\\s*[o]--\\s*)/,/^(?:\\s*<-\\.\\s*)/,/^(?:\\s*[x]-\\.\\s*)/,/^(?:\\s*[o]-\\.\\s*)/,/^(?:\\s*<==\\s*)/,/^(?:\\s*[x]==\\s*)/,/^(?:\\s*[o]==\\s*)/,/^(?:\\s*--\\s*)/,/^(?:\\s*-\\.\\s*)/,/^(?:\\s*==\\s*)/,/^(?:\\(-)/,/^(?:-\\))/,/^(?:\\(\\[)/,/^(?:\\]\\))/,/^(?:\\[\\[)/,/^(?:\\]\\])/,/^(?:\\[\\()/,/^(?:\\)\\])/,/^(?:-)/,/^(?:\\.)/,/^(?:[\\_])/,/^(?:\\+)/,/^(?:%)/,/^(?:=)/,/^(?:=)/,/^(?:<)/,/^(?:>)/,/^(?:\\^)/,/^(?:\\\\\\|)/,/^(?:v\\b)/,/^(?:[A-Za-z]+)/,/^(?:\\\\\\])/,/^(?:\\[\\/)/,/^(?:\\/\\])/,/^(?:\\[\\\\)/,/^(?:[!\"#$%&'*+,-.`?\\\\_/])/,/^(?:[\\u00AA\\u00B5\\u00BA\\u00C0-\\u00D6\\u00D8-\\u00F6]|[\\u00F8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377]|[\\u037A-\\u037D\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5]|[\\u03F7-\\u0481\\u048A-\\u0527\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA]|[\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE]|[\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA]|[\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0]|[\\u08A2-\\u08AC\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0977]|[\\u0979-\\u097F\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2]|[\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A]|[\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39]|[\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8]|[\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C]|[\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C]|[\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99]|[\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0]|[\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C33\\u0C35-\\u0C39\\u0C3D]|[\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3]|[\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10]|[\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1]|[\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81]|[\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3]|[\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6]|[\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A]|[\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081]|[\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D]|[\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0]|[\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310]|[\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C]|[\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u1700-\\u170C\\u170E-\\u1711]|[\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7]|[\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191C]|[\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16]|[\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF]|[\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC]|[\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D]|[\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D]|[\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3]|[\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F]|[\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128]|[\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184]|[\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3]|[\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6]|[\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE]|[\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C]|[\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D]|[\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC]|[\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B]|[\\uA640-\\uA66E\\uA67F-\\uA697\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788]|[\\uA78B-\\uA78E\\uA790-\\uA793\\uA7A0-\\uA7AA\\uA7F8-\\uA801\\uA803-\\uA805]|[\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB]|[\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uAA00-\\uAA28]|[\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA80-\\uAAAF\\uAAB1\\uAAB5]|[\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4]|[\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E]|[\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D]|[\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36]|[\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D]|[\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC]|[\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF]|[\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC])/,/^(?:\\|)/,/^(?:\\()/,/^(?:\\))/,/^(?:\\[)/,/^(?:\\])/,/^(?:\\{)/,/^(?:\\})/,/^(?:\")/,/^(?:(\\r|\\n|\\r\\n)+)/,/^(?:\\s)/,/^(?:$)/],\nconditions: {\"vertex\":{\"rules\":[],\"inclusive\":false},\"dir\":{\"rules\":[15,16,17,18,19,20,21,22,23,24],\"inclusive\":false},\"string\":{\"rules\":[2,3],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,1,4,5,6,7,8,9,10,11,12,13,14,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain (args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}","const getStyles = options =>\n `.label {\n font-family: ${options.fontFamily};\n color: ${options.textColor};\n }\n\n .label text {\n fill: ${options.textColor};\n }\n\n .node rect,\n .node circle,\n .node ellipse,\n .node polygon,\n .node path {\n fill: ${options.mainBkg};\n stroke: ${options.nodeBorder};\n stroke-width: 1px;\n }\n\n .node .label {\n text-align: center;\n }\n .node.clickable {\n cursor: pointer;\n }\n\n .arrowheadPath {\n fill: ${options.arrowheadColor};\n }\n\n .edgePath .path {\n stroke: ${options.lineColor};\n stroke-width: 1.5px;\n }\n\n .flowchart-link {\n stroke: ${options.lineColor};\n fill: none;\n }\n\n .edgeLabel {\n background-color: ${options.edgeLabelBackground};\n rect {\n opacity: 0.5;\n }\n text-align: center;\n }\n\n .cluster rect {\n fill: ${options.secondBkg};\n stroke: ${options.clusterBorder};\n stroke-width: 1px;\n }\n\n .cluster text {\n fill: ${options.titleColor};\n }\n\n div.mermaidTooltip {\n position: absolute;\n text-align: center;\n max-width: 200px;\n padding: 2px;\n font-family: ${options.fontFamily};\n font-size: 12px;\n background: ${options.secondBkg};\n border: 1px solid ${options.border2};\n border-radius: 2px;\n pointer-events: none;\n z-index: 100;\n }\n`;\n\nexport default getStyles;\n","import moment from 'moment-mini';\nimport { sanitizeUrl } from '@braintree/sanitize-url';\nimport { logger } from '../../logger';\nimport { getConfig } from '../../config';\nimport utils from '../../utils';\n\nlet dateFormat = '';\nlet axisFormat = '';\nlet todayMarker = '';\nlet excludes = [];\nlet title = '';\nlet sections = [];\nlet tasks = [];\nlet currentSection = '';\nconst tags = ['active', 'done', 'crit', 'milestone'];\nlet funs = [];\nlet inclusiveEndDates = false;\n\n// The serial order of the task in the script\nlet lastOrder = 0;\n\nexport const clear = function() {\n sections = [];\n tasks = [];\n currentSection = '';\n funs = [];\n title = '';\n taskCnt = 0;\n lastTask = undefined;\n lastTaskID = undefined;\n rawTasks = [];\n dateFormat = '';\n axisFormat = '';\n todayMarker = '';\n excludes = [];\n inclusiveEndDates = false;\n lastOrder = 0;\n};\n\nexport const setAxisFormat = function(txt) {\n axisFormat = txt;\n};\n\nexport const getAxisFormat = function() {\n return axisFormat;\n};\n\nexport const setTodayMarker = function(txt) {\n todayMarker = txt;\n};\n\nexport const getTodayMarker = function() {\n return todayMarker;\n};\n\nexport const setDateFormat = function(txt) {\n dateFormat = txt;\n};\n\nexport const enableInclusiveEndDates = function() {\n inclusiveEndDates = true;\n};\n\nexport const endDatesAreInclusive = function() {\n return inclusiveEndDates;\n};\n\nexport const getDateFormat = function() {\n return dateFormat;\n};\n\nexport const setExcludes = function(txt) {\n excludes = txt.toLowerCase().split(/[\\s,]+/);\n};\n\nexport const getExcludes = function() {\n return excludes;\n};\n\nexport const setTitle = function(txt) {\n title = txt;\n};\n\nexport const getTitle = function() {\n return title;\n};\n\nexport const addSection = function(txt) {\n currentSection = txt;\n sections.push(txt);\n};\n\nexport const getSections = function() {\n return sections;\n};\n\nexport const getTasks = function() {\n let allItemsPricessed = compileTasks();\n const maxDepth = 10;\n let iterationCount = 0;\n while (!allItemsPricessed && iterationCount < maxDepth) {\n allItemsPricessed = compileTasks();\n iterationCount++;\n }\n\n tasks = rawTasks;\n\n return tasks;\n};\n\nconst isInvalidDate = function(date, dateFormat, excludes) {\n if (date.isoWeekday() >= 6 && excludes.indexOf('weekends') >= 0) {\n return true;\n }\n if (excludes.indexOf(date.format('dddd').toLowerCase()) >= 0) {\n return true;\n }\n return excludes.indexOf(date.format(dateFormat.trim())) >= 0;\n};\n\nconst checkTaskDates = function(task, dateFormat, excludes) {\n if (!excludes.length || task.manualEndTime) return;\n let startTime = moment(task.startTime, dateFormat, true);\n startTime.add(1, 'd');\n let endTime = moment(task.endTime, dateFormat, true);\n let renderEndTime = fixTaskDates(startTime, endTime, dateFormat, excludes);\n task.endTime = endTime.toDate();\n task.renderEndTime = renderEndTime;\n};\n\nconst fixTaskDates = function(startTime, endTime, dateFormat, excludes) {\n let invalid = false;\n let renderEndTime = null;\n while (startTime <= endTime) {\n if (!invalid) {\n renderEndTime = endTime.toDate();\n }\n invalid = isInvalidDate(startTime, dateFormat, excludes);\n if (invalid) {\n endTime.add(1, 'd');\n }\n startTime.add(1, 'd');\n }\n return renderEndTime;\n};\n\nconst getStartDate = function(prevTime, dateFormat, str) {\n str = str.trim();\n\n // Test for after\n const re = /^after\\s+([\\d\\w- ]+)/;\n const afterStatement = re.exec(str.trim());\n\n if (afterStatement !== null) {\n // check all after ids and take the latest\n let latestEndingTask = null;\n afterStatement[1].split(' ').forEach(function(id) {\n let task = findTaskById(id);\n if (typeof task !== 'undefined') {\n if (!latestEndingTask) {\n latestEndingTask = task;\n } else {\n if (task.endTime > latestEndingTask.endTime) {\n latestEndingTask = task;\n }\n }\n }\n });\n\n if (!latestEndingTask) {\n const dt = new Date();\n dt.setHours(0, 0, 0, 0);\n return dt;\n } else {\n return latestEndingTask.endTime;\n }\n }\n\n // Check for actual date set\n let mDate = moment(str, dateFormat.trim(), true);\n if (mDate.isValid()) {\n return mDate.toDate();\n } else {\n logger.debug('Invalid date:' + str);\n logger.debug('With date format:' + dateFormat.trim());\n }\n\n // Default date - now\n return new Date();\n};\n\nconst durationToDate = function(durationStatement, relativeTime) {\n if (durationStatement !== null) {\n switch (durationStatement[2]) {\n case 's':\n relativeTime.add(durationStatement[1], 'seconds');\n break;\n case 'm':\n relativeTime.add(durationStatement[1], 'minutes');\n break;\n case 'h':\n relativeTime.add(durationStatement[1], 'hours');\n break;\n case 'd':\n relativeTime.add(durationStatement[1], 'days');\n break;\n case 'w':\n relativeTime.add(durationStatement[1], 'weeks');\n break;\n }\n }\n // Default date - now\n return relativeTime.toDate();\n};\n\nconst getEndDate = function(prevTime, dateFormat, str, inclusive) {\n inclusive = inclusive || false;\n str = str.trim();\n\n // Check for actual date\n let mDate = moment(str, dateFormat.trim(), true);\n if (mDate.isValid()) {\n if (inclusive) {\n mDate.add(1, 'd');\n }\n return mDate.toDate();\n }\n\n return durationToDate(/^([\\d]+)([wdhms])/.exec(str.trim()), moment(prevTime));\n};\n\nlet taskCnt = 0;\nconst parseId = function(idStr) {\n if (typeof idStr === 'undefined') {\n taskCnt = taskCnt + 1;\n return 'task' + taskCnt;\n }\n return idStr;\n};\n// id, startDate, endDate\n// id, startDate, length\n// id, after x, endDate\n// id, after x, length\n// startDate, endDate\n// startDate, length\n// after x, endDate\n// after x, length\n// endDate\n// length\n\nconst compileData = function(prevTask, dataStr) {\n let ds;\n\n if (dataStr.substr(0, 1) === ':') {\n ds = dataStr.substr(1, dataStr.length);\n } else {\n ds = dataStr;\n }\n\n const data = ds.split(',');\n\n const task = {};\n\n // Get tags like active, done, crit and milestone\n getTaskTags(data, task, tags);\n\n for (let i = 0; i < data.length; i++) {\n data[i] = data[i].trim();\n }\n\n let endTimeData = '';\n switch (data.length) {\n case 1:\n task.id = parseId();\n task.startTime = prevTask.endTime;\n endTimeData = data[0];\n break;\n case 2:\n task.id = parseId();\n task.startTime = getStartDate(undefined, dateFormat, data[0]);\n endTimeData = data[1];\n break;\n case 3:\n task.id = parseId(data[0]);\n task.startTime = getStartDate(undefined, dateFormat, data[1]);\n endTimeData = data[2];\n break;\n default:\n }\n\n if (endTimeData) {\n task.endTime = getEndDate(task.startTime, dateFormat, endTimeData, inclusiveEndDates);\n task.manualEndTime = moment(endTimeData, 'YYYY-MM-DD', true).isValid();\n checkTaskDates(task, dateFormat, excludes);\n }\n\n return task;\n};\n\nconst parseData = function(prevTaskId, dataStr) {\n let ds;\n if (dataStr.substr(0, 1) === ':') {\n ds = dataStr.substr(1, dataStr.length);\n } else {\n ds = dataStr;\n }\n\n const data = ds.split(',');\n\n const task = {};\n\n // Get tags like active, done, crit and milestone\n getTaskTags(data, task, tags);\n\n for (let i = 0; i < data.length; i++) {\n data[i] = data[i].trim();\n }\n\n switch (data.length) {\n case 1:\n task.id = parseId();\n task.startTime = {\n type: 'prevTaskEnd',\n id: prevTaskId\n };\n task.endTime = {\n data: data[0]\n };\n break;\n case 2:\n task.id = parseId();\n task.startTime = {\n type: 'getStartDate',\n startData: data[0]\n };\n task.endTime = {\n data: data[1]\n };\n break;\n case 3:\n task.id = parseId(data[0]);\n task.startTime = {\n type: 'getStartDate',\n startData: data[1]\n };\n task.endTime = {\n data: data[2]\n };\n break;\n default:\n }\n\n return task;\n};\n\nlet lastTask;\nlet lastTaskID;\nlet rawTasks = [];\nconst taskDb = {};\nexport const addTask = function(descr, data) {\n const rawTask = {\n section: currentSection,\n type: currentSection,\n processed: false,\n manualEndTime: false,\n renderEndTime: null,\n raw: { data: data },\n task: descr,\n classes: []\n };\n const taskInfo = parseData(lastTaskID, data);\n rawTask.raw.startTime = taskInfo.startTime;\n rawTask.raw.endTime = taskInfo.endTime;\n rawTask.id = taskInfo.id;\n rawTask.prevTaskId = lastTaskID;\n rawTask.active = taskInfo.active;\n rawTask.done = taskInfo.done;\n rawTask.crit = taskInfo.crit;\n rawTask.milestone = taskInfo.milestone;\n rawTask.order = lastOrder;\n\n lastOrder++;\n\n const pos = rawTasks.push(rawTask);\n\n lastTaskID = rawTask.id;\n // Store cross ref\n taskDb[rawTask.id] = pos - 1;\n};\n\nexport const findTaskById = function(id) {\n const pos = taskDb[id];\n return rawTasks[pos];\n};\n\nexport const addTaskOrg = function(descr, data) {\n const newTask = {\n section: currentSection,\n type: currentSection,\n description: descr,\n task: descr,\n classes: []\n };\n const taskInfo = compileData(lastTask, data);\n newTask.startTime = taskInfo.startTime;\n newTask.endTime = taskInfo.endTime;\n newTask.id = taskInfo.id;\n newTask.active = taskInfo.active;\n newTask.done = taskInfo.done;\n newTask.crit = taskInfo.crit;\n newTask.milestone = taskInfo.milestone;\n lastTask = newTask;\n tasks.push(newTask);\n};\n\nconst compileTasks = function() {\n const compileTask = function(pos) {\n const task = rawTasks[pos];\n let startTime = '';\n switch (rawTasks[pos].raw.startTime.type) {\n case 'prevTaskEnd': {\n const prevTask = findTaskById(task.prevTaskId);\n task.startTime = prevTask.endTime;\n break;\n }\n case 'getStartDate':\n startTime = getStartDate(undefined, dateFormat, rawTasks[pos].raw.startTime.startData);\n if (startTime) {\n rawTasks[pos].startTime = startTime;\n }\n break;\n }\n\n if (rawTasks[pos].startTime) {\n rawTasks[pos].endTime = getEndDate(\n rawTasks[pos].startTime,\n dateFormat,\n rawTasks[pos].raw.endTime.data,\n inclusiveEndDates\n );\n if (rawTasks[pos].endTime) {\n rawTasks[pos].processed = true;\n rawTasks[pos].manualEndTime = moment(\n rawTasks[pos].raw.endTime.data,\n 'YYYY-MM-DD',\n true\n ).isValid();\n checkTaskDates(rawTasks[pos], dateFormat, excludes);\n }\n }\n\n return rawTasks[pos].processed;\n };\n\n let allProcessed = true;\n for (let i = 0; i < rawTasks.length; i++) {\n compileTask(i);\n\n allProcessed = allProcessed && rawTasks[i].processed;\n }\n return allProcessed;\n};\n\n/**\n * Called by parser when a link is found. Adds the URL to the vertex data.\n * @param ids Comma separated list of ids\n * @param linkStr URL to create a link for\n */\nexport const setLink = function(ids, _linkStr) {\n let linkStr = _linkStr;\n if (getConfig().securityLevel !== 'loose') {\n linkStr = sanitizeUrl(_linkStr);\n }\n ids.split(',').forEach(function(id) {\n let rawTask = findTaskById(id);\n if (typeof rawTask !== 'undefined') {\n pushFun(id, () => {\n window.open(linkStr, '_self');\n });\n }\n });\n setClass(ids, 'clickable');\n};\n\n/**\n * Called by parser when a special node is found, e.g. a clickable element.\n * @param ids Comma separated list of ids\n * @param className Class to add\n */\nexport const setClass = function(ids, className) {\n ids.split(',').forEach(function(id) {\n let rawTask = findTaskById(id);\n if (typeof rawTask !== 'undefined') {\n rawTask.classes.push(className);\n }\n });\n};\n\nconst setClickFun = function(id, functionName, functionArgs) {\n if (getConfig().securityLevel !== 'loose') {\n return;\n }\n if (typeof functionName === 'undefined') {\n return;\n }\n\n let argList = [];\n if (typeof functionArgs === 'string') {\n /* Splits functionArgs by ',', ignoring all ',' in double quoted strings */\n argList = functionArgs.split(/,(?=(?:(?:[^\"]*\"){2})*[^\"]*$)/);\n for (let i = 0; i < argList.length; i++) {\n let item = argList[i].trim();\n /* Removes all double quotes at the start and end of an argument */\n /* This preserves all starting and ending whitespace inside */\n if (item.charAt(0) === '\"' && item.charAt(item.length - 1) === '\"') {\n item = item.substr(1, item.length - 2);\n }\n argList[i] = item;\n }\n }\n\n /* if no arguments passed into callback, default to passing in id */\n if (argList.length === 0) {\n argList.push(id);\n }\n\n let rawTask = findTaskById(id);\n if (typeof rawTask !== 'undefined') {\n pushFun(id, () => {\n utils.runFunc(functionName, ...argList);\n });\n }\n};\n\n/**\n * The callbackFunction is executed in a click event bound to the task with the specified id or the task's assigned text\n * @param id The task's id\n * @param callbackFunction A function to be executed when clicked on the task or the task's text\n */\nconst pushFun = function(id, callbackFunction) {\n funs.push(function() {\n // const elem = d3.select(element).select(`[id=\"${id}\"]`)\n const elem = document.querySelector(`[id=\"${id}\"]`);\n if (elem !== null) {\n elem.addEventListener('click', function() {\n callbackFunction();\n });\n }\n });\n funs.push(function() {\n // const elem = d3.select(element).select(`[id=\"${id}-text\"]`)\n const elem = document.querySelector(`[id=\"${id}-text\"]`);\n if (elem !== null) {\n elem.addEventListener('click', function() {\n callbackFunction();\n });\n }\n });\n};\n\n/**\n * Called by parser when a click definition is found. Registers an event handler.\n * @param ids Comma separated list of ids\n * @param functionName Function to be called on click\n * @param functionArgs Function args the function should be called with\n */\nexport const setClickEvent = function(ids, functionName, functionArgs) {\n ids.split(',').forEach(function(id) {\n setClickFun(id, functionName, functionArgs);\n });\n setClass(ids, 'clickable');\n};\n\n/**\n * Binds all functions previously added to fun (specified through click) to the element\n * @param element\n */\nexport const bindFunctions = function(element) {\n funs.forEach(function(fun) {\n fun(element);\n });\n};\n\nexport default {\n clear,\n setDateFormat,\n getDateFormat,\n enableInclusiveEndDates,\n endDatesAreInclusive,\n setAxisFormat,\n getAxisFormat,\n setTodayMarker,\n getTodayMarker,\n setTitle,\n getTitle,\n addSection,\n getSections,\n getTasks,\n addTask,\n findTaskById,\n addTaskOrg,\n setExcludes,\n getExcludes,\n setClickEvent,\n setLink,\n bindFunctions,\n durationToDate\n};\n\nfunction getTaskTags(data, task, tags) {\n let matchFound = true;\n while (matchFound) {\n matchFound = false;\n tags.forEach(function(t) {\n const pattern = '^\\\\s*' + t + '\\\\s*$';\n const regex = new RegExp(pattern);\n if (data[0].match(regex)) {\n task[t] = true;\n data.shift(1);\n matchFound = true;\n }\n });\n }\n}\n","import {\n select,\n scaleTime,\n min,\n max,\n scaleLinear,\n interpolateHcl,\n axisBottom,\n timeFormat\n} from 'd3';\nimport { parser } from './parser/gantt';\nimport common from '../common/common';\nimport ganttDb from './ganttDb';\n\nparser.yy = ganttDb;\n\nconst conf = {\n titleTopMargin: 25,\n barHeight: 20,\n barGap: 4,\n topPadding: 50,\n rightPadding: 75,\n leftPadding: 75,\n gridLineStartPadding: 35,\n fontSize: 11,\n fontFamily: '\"Open-Sans\", \"sans-serif\"'\n};\nexport const setConf = function(cnf) {\n const keys = Object.keys(cnf);\n\n keys.forEach(function(key) {\n conf[key] = cnf[key];\n });\n};\nlet w;\nexport const draw = function(text, id) {\n parser.yy.clear();\n parser.parse(text);\n\n const elem = document.getElementById(id);\n w = elem.parentElement.offsetWidth;\n\n if (typeof w === 'undefined') {\n w = 1200;\n }\n\n if (typeof conf.useWidth !== 'undefined') {\n w = conf.useWidth;\n }\n\n const taskArray = parser.yy.getTasks();\n\n // Set height based on number of tasks\n const h = taskArray.length * (conf.barHeight + conf.barGap) + 2 * conf.topPadding;\n\n elem.setAttribute('height', '100%');\n // Set viewBox\n elem.setAttribute('viewBox', '0 0 ' + w + ' ' + h);\n const svg = select(`[id=\"${id}\"]`);\n\n // Set timescale\n const timeScale = scaleTime()\n .domain([\n min(taskArray, function(d) {\n return d.startTime;\n }),\n max(taskArray, function(d) {\n return d.endTime;\n })\n ])\n .rangeRound([0, w - conf.leftPadding - conf.rightPadding]);\n\n let categories = [];\n\n for (let i = 0; i < taskArray.length; i++) {\n categories.push(taskArray[i].type);\n }\n\n const catsUnfiltered = categories; // for vert labels\n\n categories = checkUnique(categories);\n\n function taskCompare(a, b) {\n const taskA = a.startTime;\n const taskB = b.startTime;\n let result = 0;\n if (taskA > taskB) {\n result = 1;\n } else if (taskA < taskB) {\n result = -1;\n }\n return result;\n }\n\n // Sort the task array using the above taskCompare() so that\n // tasks are created based on their order of startTime\n taskArray.sort(taskCompare);\n\n makeGant(taskArray, w, h);\n if (typeof conf.useWidth !== 'undefined') {\n elem.setAttribute('width', w);\n }\n\n svg\n .append('text')\n .text(parser.yy.getTitle())\n .attr('x', w / 2)\n .attr('y', conf.titleTopMargin)\n .attr('class', 'titleText');\n\n function makeGant(tasks, pageWidth, pageHeight) {\n const barHeight = conf.barHeight;\n const gap = barHeight + conf.barGap;\n const topPadding = conf.topPadding;\n const leftPadding = conf.leftPadding;\n\n const colorScale = scaleLinear()\n .domain([0, categories.length])\n .range(['#00B9FA', '#F95002'])\n .interpolate(interpolateHcl);\n\n makeGrid(leftPadding, topPadding, pageWidth, pageHeight);\n drawRects(tasks, gap, topPadding, leftPadding, barHeight, colorScale, pageWidth, pageHeight);\n vertLabels(gap, topPadding, leftPadding, barHeight, colorScale);\n drawToday(leftPadding, topPadding, pageWidth, pageHeight);\n }\n\n function drawRects(theArray, theGap, theTopPad, theSidePad, theBarHeight, theColorScale, w) {\n // Draw background rects covering the entire width of the graph, these form the section rows.\n svg\n .append('g')\n .selectAll('rect')\n .data(theArray)\n .enter()\n .append('rect')\n .attr('x', 0)\n .attr('y', function(d, i) {\n // Ignore the incoming i value and use our order instead\n i = d.order;\n return i * theGap + theTopPad - 2;\n })\n .attr('width', function() {\n return w - conf.rightPadding / 2;\n })\n .attr('height', theGap)\n .attr('class', function(d) {\n for (let i = 0; i < categories.length; i++) {\n if (d.type === categories[i]) {\n return 'section section' + (i % conf.numberSectionStyles);\n }\n }\n return 'section section0';\n });\n\n // Draw the rects representing the tasks\n const rectangles = svg\n .append('g')\n .selectAll('rect')\n .data(theArray)\n .enter();\n\n rectangles\n .append('rect')\n .attr('id', function(d) {\n return d.id;\n })\n .attr('rx', 3)\n .attr('ry', 3)\n .attr('x', function(d) {\n if (d.milestone) {\n return (\n timeScale(d.startTime) +\n theSidePad +\n 0.5 * (timeScale(d.endTime) - timeScale(d.startTime)) -\n 0.5 * theBarHeight\n );\n }\n return timeScale(d.startTime) + theSidePad;\n })\n .attr('y', function(d, i) {\n // Ignore the incoming i value and use our order instead\n i = d.order;\n return i * theGap + theTopPad;\n })\n .attr('width', function(d) {\n if (d.milestone) {\n return theBarHeight;\n }\n return timeScale(d.renderEndTime || d.endTime) - timeScale(d.startTime);\n })\n .attr('height', theBarHeight)\n .attr('transform-origin', function(d, i) {\n return (\n (\n timeScale(d.startTime) +\n theSidePad +\n 0.5 * (timeScale(d.endTime) - timeScale(d.startTime))\n ).toString() +\n 'px ' +\n (i * theGap + theTopPad + 0.5 * theBarHeight).toString() +\n 'px'\n );\n })\n .attr('class', function(d) {\n const res = 'task';\n\n let classStr = '';\n if (d.classes.length > 0) {\n classStr = d.classes.join(' ');\n }\n\n let secNum = 0;\n for (let i = 0; i < categories.length; i++) {\n if (d.type === categories[i]) {\n secNum = i % conf.numberSectionStyles;\n }\n }\n\n let taskClass = '';\n if (d.active) {\n if (d.crit) {\n taskClass += ' activeCrit';\n } else {\n taskClass = ' active';\n }\n } else if (d.done) {\n if (d.crit) {\n taskClass = ' doneCrit';\n } else {\n taskClass = ' done';\n }\n } else {\n if (d.crit) {\n taskClass += ' crit';\n }\n }\n\n if (taskClass.length === 0) {\n taskClass = ' task';\n }\n\n if (d.milestone) {\n taskClass = ' milestone ' + taskClass;\n }\n\n taskClass += secNum;\n\n taskClass += ' ' + classStr;\n\n return res + taskClass;\n });\n\n // Append task labels\n rectangles\n .append('text')\n .attr('id', function(d) {\n return d.id + '-text';\n })\n .text(function(d) {\n return d.task;\n })\n .attr('font-size', conf.fontSize)\n .attr('x', function(d) {\n let startX = timeScale(d.startTime);\n let endX = timeScale(d.renderEndTime || d.endTime);\n if (d.milestone) {\n startX += 0.5 * (timeScale(d.endTime) - timeScale(d.startTime)) - 0.5 * theBarHeight;\n }\n if (d.milestone) {\n endX = startX + theBarHeight;\n }\n const textWidth = this.getBBox().width;\n\n // Check id text width > width of rectangle\n if (textWidth > endX - startX) {\n if (endX + textWidth + 1.5 * conf.leftPadding > w) {\n return startX + theSidePad - 5;\n } else {\n return endX + theSidePad + 5;\n }\n } else {\n return (endX - startX) / 2 + startX + theSidePad;\n }\n })\n .attr('y', function(d, i) {\n // Ignore the incoming i value and use our order instead\n i = d.order;\n return i * theGap + conf.barHeight / 2 + (conf.fontSize / 2 - 2) + theTopPad;\n })\n .attr('text-height', theBarHeight)\n .attr('class', function(d) {\n const startX = timeScale(d.startTime);\n let endX = timeScale(d.endTime);\n if (d.milestone) {\n endX = startX + theBarHeight;\n }\n const textWidth = this.getBBox().width;\n\n let classStr = '';\n if (d.classes.length > 0) {\n classStr = d.classes.join(' ');\n }\n\n let secNum = 0;\n console.log(conf);\n for (let i = 0; i < categories.length; i++) {\n if (d.type === categories[i]) {\n secNum = i % conf.numberSectionStyles;\n }\n }\n\n let taskType = '';\n if (d.active) {\n if (d.crit) {\n taskType = 'activeCritText' + secNum;\n } else {\n taskType = 'activeText' + secNum;\n }\n }\n\n if (d.done) {\n if (d.crit) {\n taskType = taskType + ' doneCritText' + secNum;\n } else {\n taskType = taskType + ' doneText' + secNum;\n }\n } else {\n if (d.crit) {\n taskType = taskType + ' critText' + secNum;\n }\n }\n\n if (d.milestone) {\n taskType += ' milestoneText';\n }\n\n // Check id text width > width of rectangle\n if (textWidth > endX - startX) {\n if (endX + textWidth + 1.5 * conf.leftPadding > w) {\n return classStr + ' taskTextOutsideLeft taskTextOutside' + secNum + ' ' + taskType;\n } else {\n return (\n classStr +\n ' taskTextOutsideRight taskTextOutside' +\n secNum +\n ' ' +\n taskType +\n ' width-' +\n textWidth\n );\n }\n } else {\n return classStr + ' taskText taskText' + secNum + ' ' + taskType + ' width-' + textWidth;\n }\n });\n }\n\n function makeGrid(theSidePad, theTopPad, w, h) {\n let xAxis = axisBottom(timeScale)\n .tickSize(-h + theTopPad + conf.gridLineStartPadding)\n .tickFormat(timeFormat(parser.yy.getAxisFormat() || conf.axisFormat || '%Y-%m-%d'));\n\n svg\n .append('g')\n .attr('class', 'grid')\n .attr('transform', 'translate(' + theSidePad + ', ' + (h - 50) + ')')\n .call(xAxis)\n .selectAll('text')\n .style('text-anchor', 'middle')\n .attr('fill', '#000')\n .attr('stroke', 'none')\n .attr('font-size', 10)\n .attr('dy', '1em');\n }\n\n function vertLabels(theGap, theTopPad) {\n const numOccurances = [];\n let prevGap = 0;\n\n for (let i = 0; i < categories.length; i++) {\n numOccurances[i] = [categories[i], getCount(categories[i], catsUnfiltered)];\n }\n\n svg\n .append('g') // without doing this, impossible to put grid lines behind text\n .selectAll('text')\n .data(numOccurances)\n .enter()\n .append(function(d) {\n const rows = d[0].split(common.lineBreakRegex);\n const dy = -(rows.length - 1) / 2;\n\n const svgLabel = document.createElementNS('http://www.w3.org/2000/svg', 'text');\n svgLabel.setAttribute('dy', dy + 'em');\n\n for (let j = 0; j < rows.length; j++) {\n const tspan = document.createElementNS('http://www.w3.org/2000/svg', 'tspan');\n tspan.setAttribute('alignment-baseline', 'central');\n tspan.setAttribute('x', '10');\n if (j > 0) tspan.setAttribute('dy', '1em');\n tspan.textContent = rows[j];\n svgLabel.appendChild(tspan);\n }\n return svgLabel;\n })\n .attr('x', 10)\n .attr('y', function(d, i) {\n if (i > 0) {\n for (let j = 0; j < i; j++) {\n prevGap += numOccurances[i - 1][1];\n return (d[1] * theGap) / 2 + prevGap * theGap + theTopPad;\n }\n } else {\n return (d[1] * theGap) / 2 + theTopPad;\n }\n })\n .attr('class', function(d) {\n for (let i = 0; i < categories.length; i++) {\n if (d[0] === categories[i]) {\n return 'sectionTitle sectionTitle' + (i % conf.numberSectionStyles);\n }\n }\n return 'sectionTitle';\n });\n }\n\n function drawToday(theSidePad, theTopPad, w, h) {\n const todayMarker = ganttDb.getTodayMarker();\n if (todayMarker === 'off') {\n return;\n }\n\n const todayG = svg.append('g').attr('class', 'today');\n const today = new Date();\n const todayLine = todayG.append('line');\n\n todayLine\n .attr('x1', timeScale(today) + theSidePad)\n .attr('x2', timeScale(today) + theSidePad)\n .attr('y1', conf.titleTopMargin)\n .attr('y2', h - conf.titleTopMargin)\n .attr('class', 'today');\n\n if (todayMarker !== '') {\n todayLine.attr('style', todayMarker.replace(/,/g, ';'));\n }\n }\n\n // from this stackexchange question: http://stackoverflow.com/questions/1890203/unique-for-arrays-in-javascript\n function checkUnique(arr) {\n const hash = {};\n const result = [];\n for (let i = 0, l = arr.length; i < l; ++i) {\n if (!hash.hasOwnProperty(arr[i])) { // eslint-disable-line\n // it works with objects! in FF, at least\n hash[arr[i]] = true;\n result.push(arr[i]);\n }\n }\n return result;\n }\n\n // from this stackexchange question: http://stackoverflow.com/questions/14227981/count-how-many-strings-in-an-array-have-duplicates-in-the-same-array\n function getCounts(arr) {\n let i = arr.length; // const to loop over\n const obj = {}; // obj to store results\n while (i) {\n obj[arr[--i]] = (obj[arr[i]] || 0) + 1; // count occurrences\n }\n return obj;\n }\n\n // get specific from everything\n function getCount(word, arr) {\n return getCounts(arr)[word] || 0;\n }\n};\n\nexport default {\n setConf,\n draw\n};\n","/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[6,8,10,11,12,13,14,15,16,17,19,21],$V1=[1,9],$V2=[1,10],$V3=[1,11],$V4=[1,12],$V5=[1,13],$V6=[1,14],$V7=[1,15],$V8=[1,17],$V9=[1,18];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"gantt\":4,\"document\":5,\"EOF\":6,\"line\":7,\"SPACE\":8,\"statement\":9,\"NL\":10,\"dateFormat\":11,\"inclusiveEndDates\":12,\"axisFormat\":13,\"excludes\":14,\"todayMarker\":15,\"title\":16,\"section\":17,\"clickStatement\":18,\"taskTxt\":19,\"taskData\":20,\"click\":21,\"callbackname\":22,\"callbackargs\":23,\"href\":24,\"clickStatementDebug\":25,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",4:\"gantt\",6:\"EOF\",8:\"SPACE\",10:\"NL\",11:\"dateFormat\",12:\"inclusiveEndDates\",13:\"axisFormat\",14:\"excludes\",15:\"todayMarker\",16:\"title\",17:\"section\",19:\"taskTxt\",20:\"taskData\",21:\"click\",22:\"callbackname\",23:\"callbackargs\",24:\"href\"},\nproductions_: [0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,2],[18,2],[18,3],[18,3],[18,4],[18,3],[18,4],[18,2],[25,2],[25,3],[25,3],[25,4],[25,3],[25,4],[25,2]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 1:\n return $$[$0-1]; \nbreak;\ncase 2:\n this.$ = [] \nbreak;\ncase 3:\n$$[$0-1].push($$[$0]);this.$ = $$[$0-1]\nbreak;\ncase 4: case 5:\n this.$ = $$[$0] \nbreak;\ncase 6: case 7:\n this.$=[];\nbreak;\ncase 8:\nyy.setDateFormat($$[$0].substr(11));this.$=$$[$0].substr(11);\nbreak;\ncase 9:\nyy.enableInclusiveEndDates();this.$=$$[$0].substr(18);\nbreak;\ncase 10:\nyy.setAxisFormat($$[$0].substr(11));this.$=$$[$0].substr(11);\nbreak;\ncase 11:\nyy.setExcludes($$[$0].substr(9));this.$=$$[$0].substr(9);\nbreak;\ncase 12:\nyy.setTodayMarker($$[$0].substr(12));this.$=$$[$0].substr(12);\nbreak;\ncase 13:\nyy.setTitle($$[$0].substr(6));this.$=$$[$0].substr(6);\nbreak;\ncase 14:\nyy.addSection($$[$0].substr(8));this.$=$$[$0].substr(8);\nbreak;\ncase 16:\nyy.addTask($$[$0-1],$$[$0]);this.$='task';\nbreak;\ncase 17:\nthis.$ = $$[$0-1];yy.setClickEvent($$[$0-1], $$[$0], null);\nbreak;\ncase 18:\nthis.$ = $$[$0-2];yy.setClickEvent($$[$0-2], $$[$0-1], $$[$0]);\nbreak;\ncase 19:\nthis.$ = $$[$0-2];yy.setClickEvent($$[$0-2], $$[$0-1], null);yy.setLink($$[$0-2],$$[$0]);\nbreak;\ncase 20:\nthis.$ = $$[$0-3];yy.setClickEvent($$[$0-3], $$[$0-2], $$[$0-1]);yy.setLink($$[$0-3],$$[$0]);\nbreak;\ncase 21:\nthis.$ = $$[$0-2];yy.setClickEvent($$[$0-2], $$[$0], null);yy.setLink($$[$0-2],$$[$0-1]);\nbreak;\ncase 22:\nthis.$ = $$[$0-3];yy.setClickEvent($$[$0-3], $$[$0-1], $$[$0]);yy.setLink($$[$0-3],$$[$0-2]);\nbreak;\ncase 23:\nthis.$ = $$[$0-1];yy.setLink($$[$0-1], $$[$0]);\nbreak;\ncase 24: case 30:\nthis.$=$$[$0-1] + ' ' + $$[$0];\nbreak;\ncase 25: case 26: case 28:\nthis.$=$$[$0-2] + ' ' + $$[$0-1] + ' ' + $$[$0];\nbreak;\ncase 27: case 29:\nthis.$=$$[$0-3] + ' ' + $$[$0-2] + ' ' + $$[$0-1] + ' ' + $$[$0];\nbreak;\n}\n},\ntable: [{3:1,4:[1,2]},{1:[3]},o($V0,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:$V1,12:$V2,13:$V3,14:$V4,15:$V5,16:$V6,17:$V7,18:16,19:$V8,21:$V9},o($V0,[2,7],{1:[2,1]}),o($V0,[2,3]),{9:19,11:$V1,12:$V2,13:$V3,14:$V4,15:$V5,16:$V6,17:$V7,18:16,19:$V8,21:$V9},o($V0,[2,5]),o($V0,[2,6]),o($V0,[2,8]),o($V0,[2,9]),o($V0,[2,10]),o($V0,[2,11]),o($V0,[2,12]),o($V0,[2,13]),o($V0,[2,14]),o($V0,[2,15]),{20:[1,20]},{22:[1,21],24:[1,22]},o($V0,[2,4]),o($V0,[2,16]),o($V0,[2,17],{23:[1,23],24:[1,24]}),o($V0,[2,23],{22:[1,25]}),o($V0,[2,18],{24:[1,26]}),o($V0,[2,19]),o($V0,[2,21],{23:[1,27]}),o($V0,[2,20]),o($V0,[2,22])],\ndefaultActions: {},\nparseError: function parseError (str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer.lex() || EOF;\n if (typeof token !== 'number') {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {\"case-insensitive\":true},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0:return 10;\nbreak;\ncase 1:/* skip whitespace */\nbreak;\ncase 2:/* skip comments */\nbreak;\ncase 3:/* skip comments */\nbreak;\ncase 4:this.begin(\"href\");\nbreak;\ncase 5:this.popState();\nbreak;\ncase 6:return 24;\nbreak;\ncase 7:this.begin(\"callbackname\");\nbreak;\ncase 8:this.popState();\nbreak;\ncase 9:this.popState(); this.begin(\"callbackargs\");\nbreak;\ncase 10:return 22;\nbreak;\ncase 11:this.popState();\nbreak;\ncase 12:return 23;\nbreak;\ncase 13:this.begin(\"click\");\nbreak;\ncase 14:this.popState();\nbreak;\ncase 15:return 21;\nbreak;\ncase 16:return 4;\nbreak;\ncase 17:return 11;\nbreak;\ncase 18:return 12;\nbreak;\ncase 19:return 13;\nbreak;\ncase 20:return 14;\nbreak;\ncase 21:return 15;\nbreak;\ncase 22:return 'date';\nbreak;\ncase 23:return 16;\nbreak;\ncase 24:return 17;\nbreak;\ncase 25:return 19;\nbreak;\ncase 26:return 20;\nbreak;\ncase 27:return ':';\nbreak;\ncase 28:return 6;\nbreak;\ncase 29:return 'INVALID';\nbreak;\n}\n},\nrules: [/^(?:[\\n]+)/i,/^(?:\\s+)/i,/^(?:#[^\\n]*)/i,/^(?:%[^\\n]*)/i,/^(?:href[\\s]+[\"])/i,/^(?:[\"])/i,/^(?:[^\"]*)/i,/^(?:call[\\s]+)/i,/^(?:\\([\\s]*\\))/i,/^(?:\\()/i,/^(?:[^(]*)/i,/^(?:\\))/i,/^(?:[^)]*)/i,/^(?:click[\\s]+)/i,/^(?:[\\s\\n])/i,/^(?:[^\\s\\n]*)/i,/^(?:gantt\\b)/i,/^(?:dateFormat\\s[^#\\n;]+)/i,/^(?:inclusiveEndDates\\b)/i,/^(?:axisFormat\\s[^#\\n;]+)/i,/^(?:excludes\\s[^#\\n;]+)/i,/^(?:todayMarker\\s[^\\n;]+)/i,/^(?:\\d\\d\\d\\d-\\d\\d-\\d\\d\\b)/i,/^(?:title\\s[^#\\n;]+)/i,/^(?:section\\s[^#:\\n;]+)/i,/^(?:[^#:\\n;]+)/i,/^(?::[^#\\n;]+)/i,/^(?::)/i,/^(?:$)/i,/^(?:.)/i],\nconditions: {\"callbackargs\":{\"rules\":[11,12],\"inclusive\":false},\"callbackname\":{\"rules\":[8,9,10],\"inclusive\":false},\"href\":{\"rules\":[5,6],\"inclusive\":false},\"click\":{\"rules\":[14,15],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,1,2,3,4,7,13,16,17,18,19,20,21,22,23,24,25,26,27,28,29],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain (args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}","const getStyles = options =>\n `\n .mermaid-main-font {\n font-family: \"trebuchet ms\", verdana, arial;\n font-family: var(--mermaid-font-family);\n }\n\n .section {\n stroke: none;\n opacity: 0.2;\n }\n\n .section0 {\n fill: ${options.sectionBkgColor};\n }\n\n .section2 {\n fill: ${options.sectionBkgColor2};\n }\n\n .section1,\n .section3 {\n fill: ${options.altSectionBkgColor};\n opacity: 0.2;\n }\n\n .sectionTitle0 {\n fill: ${options.titleColor};\n }\n\n .sectionTitle1 {\n fill: ${options.titleColor};\n }\n\n .sectionTitle2 {\n fill: ${options.titleColor};\n }\n\n .sectionTitle3 {\n fill: ${options.titleColor};\n }\n\n .sectionTitle {\n text-anchor: start;\n font-size: 11px;\n text-height: 14px;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family);\n\n }\n\n\n /* Grid and axis */\n\n .grid .tick {\n stroke: ${options.gridColor};\n opacity: 0.8;\n shape-rendering: crispEdges;\n text {\n font-family: ${options.fontFamily};\n fill: ${options.textColor};\n }\n }\n\n .grid path {\n stroke-width: 0;\n }\n\n\n /* Today line */\n\n .today {\n fill: none;\n stroke: ${options.todayLineColor};\n stroke-width: 2px;\n }\n\n\n /* Task styling */\n\n /* Default task */\n\n .task {\n stroke-width: 2;\n }\n\n .taskText {\n text-anchor: middle;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family);\n }\n\n .taskText:not([font-size]) {\n font-size: 11px;\n }\n\n .taskTextOutsideRight {\n fill: ${options.taskTextDarkColor};\n text-anchor: start;\n font-size: 11px;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family);\n\n }\n\n .taskTextOutsideLeft {\n fill: ${options.taskTextDarkColor};\n text-anchor: end;\n font-size: 11px;\n }\n\n /* Special case clickable */\n .task.clickable {\n cursor: pointer;\n }\n .taskText.clickable {\n cursor: pointer;\n fill: ${options.taskTextClickableColor} !important;\n font-weight: bold;\n }\n\n .taskTextOutsideLeft.clickable {\n cursor: pointer;\n fill: ${options.taskTextClickableColor} !important;\n font-weight: bold;\n }\n\n .taskTextOutsideRight.clickable {\n cursor: pointer;\n fill: ${options.taskTextClickableColor} !important;\n font-weight: bold;\n }\n\n /* Specific task settings for the sections*/\n\n .taskText0,\n .taskText1,\n .taskText2,\n .taskText3 {\n fill: ${options.taskTextColor};\n }\n\n .task0,\n .task1,\n .task2,\n .task3 {\n fill: ${options.taskBkgColor};\n stroke: ${options.taskBorderColor};\n }\n\n .taskTextOutside0,\n .taskTextOutside2\n {\n fill: ${options.taskTextOutsideColor};\n }\n\n .taskTextOutside1,\n .taskTextOutside3 {\n fill: ${options.taskTextOutsideColor};\n }\n\n\n /* Active task */\n\n .active0,\n .active1,\n .active2,\n .active3 {\n fill: ${options.activeTaskBkgColor};\n stroke: ${options.activeTaskBorderColor};\n }\n\n .activeText0,\n .activeText1,\n .activeText2,\n .activeText3 {\n fill: ${options.taskTextDarkColor} !important;\n }\n\n\n /* Completed task */\n\n .done0,\n .done1,\n .done2,\n .done3 {\n stroke: ${options.doneTaskBorderColor};\n fill: ${options.doneTaskBkgColor};\n stroke-width: 2;\n }\n\n .doneText0,\n .doneText1,\n .doneText2,\n .doneText3 {\n fill: ${options.taskTextDarkColor} !important;\n }\n\n\n /* Tasks on the critical line */\n\n .crit0,\n .crit1,\n .crit2,\n .crit3 {\n stroke: ${options.critBorderColor};\n fill: ${options.critBkgColor};\n stroke-width: 2;\n }\n\n .activeCrit0,\n .activeCrit1,\n .activeCrit2,\n .activeCrit3 {\n stroke: ${options.critBorderColor};\n fill: ${options.activeTaskBkgColor};\n stroke-width: 2;\n }\n\n .doneCrit0,\n .doneCrit1,\n .doneCrit2,\n .doneCrit3 {\n stroke: ${options.critBorderColor};\n fill: ${options.doneTaskBkgColor};\n stroke-width: 2;\n cursor: pointer;\n shape-rendering: crispEdges;\n }\n\n .milestone {\n transform: rotate(45deg) scale(0.8,0.8);\n }\n\n .milestoneText {\n font-style: italic;\n }\n .doneCritText0,\n .doneCritText1,\n .doneCritText2,\n .doneCritText3 {\n fill: ${options.taskTextDarkColor} !important;\n }\n\n .activeCritText0,\n .activeCritText1,\n .activeCritText2,\n .activeCritText3 {\n fill: ${options.taskTextDarkColor} !important;\n }\n\n .titleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${options.taskTextDarkColor} ;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family);\n }\n`;\n\nexport default getStyles;\n","import { logger } from '../../logger';\nimport { random } from '../../utils';\nlet commits = {};\nlet head = null;\nlet branches = { master: head };\nlet curBranch = 'master';\nlet direction = 'LR';\nlet seq = 0;\n\nfunction getId() {\n return random({ length: 7 });\n}\n\nfunction isfastforwardable(currentCommit, otherCommit) {\n logger.debug('Entering isfastforwardable:', currentCommit.id, otherCommit.id);\n while (currentCommit.seq <= otherCommit.seq && currentCommit !== otherCommit) {\n // only if other branch has more commits\n if (otherCommit.parent == null) break;\n if (Array.isArray(otherCommit.parent)) {\n logger.debug('In merge commit:', otherCommit.parent);\n return (\n isfastforwardable(currentCommit, commits[otherCommit.parent[0]]) ||\n isfastforwardable(currentCommit, commits[otherCommit.parent[1]])\n );\n } else {\n otherCommit = commits[otherCommit.parent];\n }\n }\n logger.debug(currentCommit.id, otherCommit.id);\n return currentCommit.id === otherCommit.id;\n}\n\nfunction isReachableFrom(currentCommit, otherCommit) {\n const currentSeq = currentCommit.seq;\n const otherSeq = otherCommit.seq;\n if (currentSeq > otherSeq) return isfastforwardable(otherCommit, currentCommit);\n return false;\n}\n\nfunction uniqBy(list, fn) {\n const recordMap = Object.create(null);\n return list.reduce((out, item) => {\n const key = fn(item);\n if (!recordMap[key]) {\n recordMap[key] = true;\n out.push(item);\n }\n return out;\n }, []);\n}\n\nexport const setDirection = function(dir) {\n direction = dir;\n};\nlet options = {};\nexport const setOptions = function(rawOptString) {\n logger.debug('options str', rawOptString);\n rawOptString = rawOptString && rawOptString.trim();\n rawOptString = rawOptString || '{}';\n try {\n options = JSON.parse(rawOptString);\n } catch (e) {\n logger.error('error while parsing gitGraph options', e.message);\n }\n};\n\nexport const getOptions = function() {\n return options;\n};\n\nexport const commit = function(msg) {\n const commit = {\n id: getId(),\n message: msg,\n seq: seq++,\n parent: head == null ? null : head.id\n };\n head = commit;\n commits[commit.id] = commit;\n branches[curBranch] = commit.id;\n logger.debug('in pushCommit ' + commit.id);\n};\n\nexport const branch = function(name) {\n branches[name] = head != null ? head.id : null;\n logger.debug('in createBranch');\n};\n\nexport const merge = function(otherBranch) {\n const currentCommit = commits[branches[curBranch]];\n const otherCommit = commits[branches[otherBranch]];\n if (isReachableFrom(currentCommit, otherCommit)) {\n logger.debug('Already merged');\n return;\n }\n if (isfastforwardable(currentCommit, otherCommit)) {\n branches[curBranch] = branches[otherBranch];\n head = commits[branches[curBranch]];\n } else {\n // create merge commit\n const commit = {\n id: getId(),\n message: 'merged branch ' + otherBranch + ' into ' + curBranch,\n seq: seq++,\n parent: [head == null ? null : head.id, branches[otherBranch]]\n };\n head = commit;\n commits[commit.id] = commit;\n branches[curBranch] = commit.id;\n }\n logger.debug(branches);\n logger.debug('in mergeBranch');\n};\n\nexport const checkout = function(branch) {\n logger.debug('in checkout');\n curBranch = branch;\n const id = branches[curBranch];\n head = commits[id];\n};\n\nexport const reset = function(commitRef) {\n logger.debug('in reset', commitRef);\n const ref = commitRef.split(':')[0];\n let parentCount = parseInt(commitRef.split(':')[1]);\n let commit = ref === 'HEAD' ? head : commits[branches[ref]];\n logger.debug(commit, parentCount);\n while (parentCount > 0) {\n commit = commits[commit.parent];\n parentCount--;\n if (!commit) {\n const err = 'Critical error - unique parent commit not found during reset';\n logger.error(err);\n throw err;\n }\n }\n head = commit;\n branches[curBranch] = commit.id;\n};\n\nfunction upsert(arr, key, newval) {\n const index = arr.indexOf(key);\n if (index === -1) {\n arr.push(newval);\n } else {\n arr.splice(index, 1, newval);\n }\n}\n\nfunction prettyPrintCommitHistory(commitArr) {\n const commit = commitArr.reduce((out, commit) => {\n if (out.seq > commit.seq) return out;\n return commit;\n }, commitArr[0]);\n let line = '';\n commitArr.forEach(function(c) {\n if (c === commit) {\n line += '\\t*';\n } else {\n line += '\\t|';\n }\n });\n const label = [line, commit.id, commit.seq];\n for (let branch in branches) {\n if (branches[branch] === commit.id) label.push(branch);\n }\n logger.debug(label.join(' '));\n if (Array.isArray(commit.parent)) {\n const newCommit = commits[commit.parent[0]];\n upsert(commitArr, commit, newCommit);\n commitArr.push(commits[commit.parent[1]]);\n } else if (commit.parent == null) {\n return;\n } else {\n const nextCommit = commits[commit.parent];\n upsert(commitArr, commit, nextCommit);\n }\n commitArr = uniqBy(commitArr, c => c.id);\n prettyPrintCommitHistory(commitArr);\n}\n\nexport const prettyPrint = function() {\n logger.debug(commits);\n const node = getCommitsArray()[0];\n prettyPrintCommitHistory([node]);\n};\n\nexport const clear = function() {\n commits = {};\n head = null;\n branches = { master: head };\n curBranch = 'master';\n seq = 0;\n};\n\nexport const getBranchesAsObjArray = function() {\n const branchArr = [];\n for (let branch in branches) {\n branchArr.push({ name: branch, commit: commits[branches[branch]] });\n }\n return branchArr;\n};\n\nexport const getBranches = function() {\n return branches;\n};\nexport const getCommits = function() {\n return commits;\n};\nexport const getCommitsArray = function() {\n const commitArr = Object.keys(commits).map(function(key) {\n return commits[key];\n });\n commitArr.forEach(function(o) {\n logger.debug(o.id);\n });\n commitArr.sort((a, b) => b.seq - a.seq);\n return commitArr;\n};\nexport const getCurrentBranch = function() {\n return curBranch;\n};\nexport const getDirection = function() {\n return direction;\n};\nexport const getHead = function() {\n return head;\n};\n\nexport default {\n setDirection,\n setOptions,\n getOptions,\n commit,\n branch,\n merge,\n checkout,\n reset,\n prettyPrint,\n clear,\n getBranchesAsObjArray,\n getBranches,\n getCommits,\n getCommitsArray,\n getCurrentBranch,\n getDirection,\n getHead\n};\n","import { curveBasis, line, select } from 'd3';\n\nimport db from './gitGraphAst';\nimport gitGraphParser from './parser/gitGraph';\nimport { logger } from '../../logger';\nimport { interpolateToCurve } from '../../utils';\n\nlet allCommitsDict = {};\nlet branchNum;\nlet config = {\n nodeSpacing: 150,\n nodeFillColor: 'yellow',\n nodeStrokeWidth: 2,\n nodeStrokeColor: 'grey',\n lineStrokeWidth: 4,\n branchOffset: 50,\n lineColor: 'grey',\n leftMargin: 50,\n branchColors: ['#442f74', '#983351', '#609732', '#AA9A39'],\n nodeRadius: 10,\n nodeLabel: {\n width: 75,\n height: 100,\n x: -25,\n y: 0\n }\n};\nlet apiConfig = {};\nexport const setConf = function(c) {\n apiConfig = c;\n};\n\nfunction svgCreateDefs(svg) {\n svg\n .append('defs')\n .append('g')\n .attr('id', 'def-commit')\n .append('circle')\n .attr('r', config.nodeRadius)\n .attr('cx', 0)\n .attr('cy', 0);\n svg\n .select('#def-commit')\n .append('foreignObject')\n .attr('width', config.nodeLabel.width)\n .attr('height', config.nodeLabel.height)\n .attr('x', config.nodeLabel.x)\n .attr('y', config.nodeLabel.y)\n .attr('class', 'node-label')\n .attr('requiredFeatures', 'http://www.w3.org/TR/SVG11/feature#Extensibility')\n .append('p')\n .html('');\n}\n\nfunction svgDrawLine(svg, points, colorIdx, interpolate) {\n const curve = interpolateToCurve(interpolate, curveBasis);\n const color = config.branchColors[colorIdx % config.branchColors.length];\n const lineGen = line()\n .x(function(d) {\n return Math.round(d.x);\n })\n .y(function(d) {\n return Math.round(d.y);\n })\n .curve(curve);\n\n svg\n .append('svg:path')\n .attr('d', lineGen(points))\n .style('stroke', color)\n .style('stroke-width', config.lineStrokeWidth)\n .style('fill', 'none');\n}\n\n// Pass in the element and its pre-transform coords\nfunction getElementCoords(element, coords) {\n coords = coords || element.node().getBBox();\n const ctm = element.node().getCTM();\n const xn = ctm.e + coords.x * ctm.a;\n const yn = ctm.f + coords.y * ctm.d;\n return {\n left: xn,\n top: yn,\n width: coords.width,\n height: coords.height\n };\n}\n\nfunction svgDrawLineForCommits(svg, fromId, toId, direction, color) {\n logger.debug('svgDrawLineForCommits: ', fromId, toId);\n const fromBbox = getElementCoords(svg.select('#node-' + fromId + ' circle'));\n const toBbox = getElementCoords(svg.select('#node-' + toId + ' circle'));\n switch (direction) {\n case 'LR':\n // (toBbox)\n // +--------\n // + (fromBbox)\n if (fromBbox.left - toBbox.left > config.nodeSpacing) {\n const lineStart = {\n x: fromBbox.left - config.nodeSpacing,\n y: toBbox.top + toBbox.height / 2\n };\n const lineEnd = { x: toBbox.left + toBbox.width, y: toBbox.top + toBbox.height / 2 };\n svgDrawLine(svg, [lineStart, lineEnd], color, 'linear');\n svgDrawLine(\n svg,\n [\n { x: fromBbox.left, y: fromBbox.top + fromBbox.height / 2 },\n { x: fromBbox.left - config.nodeSpacing / 2, y: fromBbox.top + fromBbox.height / 2 },\n { x: fromBbox.left - config.nodeSpacing / 2, y: lineStart.y },\n lineStart\n ],\n color\n );\n } else {\n svgDrawLine(\n svg,\n [\n {\n x: fromBbox.left,\n y: fromBbox.top + fromBbox.height / 2\n },\n {\n x: fromBbox.left - config.nodeSpacing / 2,\n y: fromBbox.top + fromBbox.height / 2\n },\n {\n x: fromBbox.left - config.nodeSpacing / 2,\n y: toBbox.top + toBbox.height / 2\n },\n {\n x: toBbox.left + toBbox.width,\n y: toBbox.top + toBbox.height / 2\n }\n ],\n color\n );\n }\n break;\n case 'BT':\n // + (fromBbox)\n // |\n // |\n // + (toBbox)\n if (toBbox.top - fromBbox.top > config.nodeSpacing) {\n const lineStart = {\n x: toBbox.left + toBbox.width / 2,\n y: fromBbox.top + fromBbox.height + config.nodeSpacing\n };\n const lineEnd = { x: toBbox.left + toBbox.width / 2, y: toBbox.top };\n svgDrawLine(svg, [lineStart, lineEnd], color, 'linear');\n svgDrawLine(\n svg,\n [\n { x: fromBbox.left + fromBbox.width / 2, y: fromBbox.top + fromBbox.height },\n {\n x: fromBbox.left + fromBbox.width / 2,\n y: fromBbox.top + fromBbox.height + config.nodeSpacing / 2\n },\n { x: toBbox.left + toBbox.width / 2, y: lineStart.y - config.nodeSpacing / 2 },\n lineStart\n ],\n color\n );\n } else {\n svgDrawLine(\n svg,\n [\n {\n x: fromBbox.left + fromBbox.width / 2,\n y: fromBbox.top + fromBbox.height\n },\n {\n x: fromBbox.left + fromBbox.width / 2,\n y: fromBbox.top + config.nodeSpacing / 2\n },\n {\n x: toBbox.left + toBbox.width / 2,\n y: toBbox.top - config.nodeSpacing / 2\n },\n {\n x: toBbox.left + toBbox.width / 2,\n y: toBbox.top\n }\n ],\n color\n );\n }\n break;\n }\n}\n\nfunction cloneNode(svg, selector) {\n return svg\n .select(selector)\n .node()\n .cloneNode(true);\n}\n\nfunction renderCommitHistory(svg, commitid, branches, direction) {\n let commit;\n const numCommits = Object.keys(allCommitsDict).length;\n if (typeof commitid === 'string') {\n do {\n commit = allCommitsDict[commitid];\n logger.debug('in renderCommitHistory', commit.id, commit.seq);\n if (svg.select('#node-' + commitid).size() > 0) {\n return;\n }\n svg\n .append(function() {\n return cloneNode(svg, '#def-commit');\n })\n .attr('class', 'commit')\n .attr('id', function() {\n return 'node-' + commit.id;\n })\n .attr('transform', function() {\n switch (direction) {\n case 'LR':\n return (\n 'translate(' +\n (commit.seq * config.nodeSpacing + config.leftMargin) +\n ', ' +\n branchNum * config.branchOffset +\n ')'\n );\n case 'BT':\n return (\n 'translate(' +\n (branchNum * config.branchOffset + config.leftMargin) +\n ', ' +\n (numCommits - commit.seq) * config.nodeSpacing +\n ')'\n );\n }\n })\n .attr('fill', config.nodeFillColor)\n .attr('stroke', config.nodeStrokeColor)\n .attr('stroke-width', config.nodeStrokeWidth);\n\n let branch;\n for (let branchName in branches) {\n if (branches[branchName].commit === commit) {\n branch = branches[branchName];\n break;\n }\n }\n if (branch) {\n logger.debug('found branch ', branch.name);\n svg\n .select('#node-' + commit.id + ' p')\n .append('xhtml:span')\n .attr('class', 'branch-label')\n .text(branch.name + ', ');\n }\n svg\n .select('#node-' + commit.id + ' p')\n .append('xhtml:span')\n .attr('class', 'commit-id')\n .text(commit.id);\n if (commit.message !== '' && direction === 'BT') {\n svg\n .select('#node-' + commit.id + ' p')\n .append('xhtml:span')\n .attr('class', 'commit-msg')\n .text(', ' + commit.message);\n }\n commitid = commit.parent;\n } while (commitid && allCommitsDict[commitid]);\n }\n\n if (Array.isArray(commitid)) {\n logger.debug('found merge commmit', commitid);\n renderCommitHistory(svg, commitid[0], branches, direction);\n branchNum++;\n renderCommitHistory(svg, commitid[1], branches, direction);\n branchNum--;\n }\n}\n\nfunction renderLines(svg, commit, direction, branchColor) {\n branchColor = branchColor || 0;\n while (commit.seq > 0 && !commit.lineDrawn) {\n if (typeof commit.parent === 'string') {\n svgDrawLineForCommits(svg, commit.id, commit.parent, direction, branchColor);\n commit.lineDrawn = true;\n commit = allCommitsDict[commit.parent];\n } else if (Array.isArray(commit.parent)) {\n svgDrawLineForCommits(svg, commit.id, commit.parent[0], direction, branchColor);\n svgDrawLineForCommits(svg, commit.id, commit.parent[1], direction, branchColor + 1);\n renderLines(svg, allCommitsDict[commit.parent[1]], direction, branchColor + 1);\n commit.lineDrawn = true;\n commit = allCommitsDict[commit.parent[0]];\n }\n }\n}\n\nexport const draw = function(txt, id, ver) {\n try {\n const parser = gitGraphParser.parser;\n parser.yy = db;\n parser.yy.clear();\n\n logger.debug('in gitgraph renderer', txt + '\\n', 'id:', id, ver);\n // Parse the graph definition\n parser.parse(txt + '\\n');\n\n config = Object.assign(config, apiConfig, db.getOptions());\n logger.debug('effective options', config);\n const direction = db.getDirection();\n allCommitsDict = db.getCommits();\n const branches = db.getBranchesAsObjArray();\n if (direction === 'BT') {\n config.nodeLabel.x = branches.length * config.branchOffset;\n config.nodeLabel.width = '100%';\n config.nodeLabel.y = -1 * 2 * config.nodeRadius;\n }\n const svg = select(`[id=\"${id}\"]`);\n svgCreateDefs(svg);\n branchNum = 1;\n for (let branch in branches) {\n const v = branches[branch];\n renderCommitHistory(svg, v.commit.id, branches, direction);\n renderLines(svg, v.commit, direction);\n branchNum++;\n }\n svg.attr('height', function() {\n if (direction === 'BT') return Object.keys(allCommitsDict).length * config.nodeSpacing;\n return (branches.length + 1) * config.branchOffset;\n });\n } catch (e) {\n logger.error('Error while rendering gitgraph');\n logger.error(e.message);\n }\n};\n\nexport default {\n setConf,\n draw\n};\n","/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[2,3],$V1=[1,7],$V2=[7,12,15,17,19,20,21],$V3=[7,11,12,15,17,19,20,21],$V4=[2,20],$V5=[1,32];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"GG\":4,\":\":5,\"document\":6,\"EOF\":7,\"DIR\":8,\"options\":9,\"body\":10,\"OPT\":11,\"NL\":12,\"line\":13,\"statement\":14,\"COMMIT\":15,\"commit_arg\":16,\"BRANCH\":17,\"ID\":18,\"CHECKOUT\":19,\"MERGE\":20,\"RESET\":21,\"reset_arg\":22,\"STR\":23,\"HEAD\":24,\"reset_parents\":25,\"CARET\":26,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",4:\"GG\",5:\":\",7:\"EOF\",8:\"DIR\",11:\"OPT\",12:\"NL\",15:\"COMMIT\",17:\"BRANCH\",18:\"ID\",19:\"CHECKOUT\",20:\"MERGE\",21:\"RESET\",23:\"STR\",24:\"HEAD\",26:\"CARET\"},\nproductions_: [0,[3,4],[3,5],[6,0],[6,2],[9,2],[9,1],[10,0],[10,2],[13,2],[13,1],[14,2],[14,2],[14,2],[14,2],[14,2],[16,0],[16,1],[22,2],[22,2],[25,0],[25,2]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 1:\n return $$[$0-1]; \nbreak;\ncase 2:\nyy.setDirection($$[$0-3]); return $$[$0-1];\nbreak;\ncase 4:\n yy.setOptions($$[$0-1]); this.$ = $$[$0]\nbreak;\ncase 5:\n$$[$0-1] +=$$[$0]; this.$=$$[$0-1]\nbreak;\ncase 7:\nthis.$ = []\nbreak;\ncase 8:\n$$[$0-1].push($$[$0]); this.$=$$[$0-1];\nbreak;\ncase 9:\nthis.$ =$$[$0-1]\nbreak;\ncase 11:\nyy.commit($$[$0])\nbreak;\ncase 12:\nyy.branch($$[$0])\nbreak;\ncase 13:\nyy.checkout($$[$0])\nbreak;\ncase 14:\nyy.merge($$[$0])\nbreak;\ncase 15:\nyy.reset($$[$0])\nbreak;\ncase 16:\nthis.$ = \"\"\nbreak;\ncase 17:\nthis.$=$$[$0]\nbreak;\ncase 18:\nthis.$ = $$[$0-1]+ \":\" + $$[$0] \nbreak;\ncase 19:\nthis.$ = $$[$0-1]+ \":\" + yy.count; yy.count = 0\nbreak;\ncase 20:\nyy.count = 0\nbreak;\ncase 21:\n yy.count += 1 \nbreak;\n}\n},\ntable: [{3:1,4:[1,2]},{1:[3]},{5:[1,3],8:[1,4]},{6:5,7:$V0,9:6,12:$V1},{5:[1,8]},{7:[1,9]},o($V2,[2,7],{10:10,11:[1,11]}),o($V3,[2,6]),{6:12,7:$V0,9:6,12:$V1},{1:[2,1]},{7:[2,4],12:[1,15],13:13,14:14,15:[1,16],17:[1,17],19:[1,18],20:[1,19],21:[1,20]},o($V3,[2,5]),{7:[1,21]},o($V2,[2,8]),{12:[1,22]},o($V2,[2,10]),{12:[2,16],16:23,23:[1,24]},{18:[1,25]},{18:[1,26]},{18:[1,27]},{18:[1,30],22:28,24:[1,29]},{1:[2,2]},o($V2,[2,9]),{12:[2,11]},{12:[2,17]},{12:[2,12]},{12:[2,13]},{12:[2,14]},{12:[2,15]},{12:$V4,25:31,26:$V5},{12:$V4,25:33,26:$V5},{12:[2,18]},{12:$V4,25:34,26:$V5},{12:[2,19]},{12:[2,21]}],\ndefaultActions: {9:[2,1],21:[2,2],23:[2,11],24:[2,17],25:[2,12],26:[2,13],27:[2,14],28:[2,15],31:[2,18],33:[2,19],34:[2,21]},\nparseError: function parseError (str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer.lex() || EOF;\n if (typeof token !== 'number') {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {\"case-insensitive\":true},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0:return 12;\nbreak;\ncase 1:/* skip all whitespace */\nbreak;\ncase 2:/* skip comments */\nbreak;\ncase 3:/* skip comments */\nbreak;\ncase 4:return 4;\nbreak;\ncase 5:return 15;\nbreak;\ncase 6:return 17;\nbreak;\ncase 7:return 20;\nbreak;\ncase 8:return 21;\nbreak;\ncase 9:return 19;\nbreak;\ncase 10:return 8;\nbreak;\ncase 11:return 8;\nbreak;\ncase 12:return 5;\nbreak;\ncase 13:return 26\nbreak;\ncase 14:this.begin(\"options\");\nbreak;\ncase 15:this.popState();\nbreak;\ncase 16:return 11;\nbreak;\ncase 17:this.begin(\"string\");\nbreak;\ncase 18:this.popState();\nbreak;\ncase 19:return 23;\nbreak;\ncase 20:return 18;\nbreak;\ncase 21:return 7;\nbreak;\n}\n},\nrules: [/^(?:(\\r?\\n)+)/i,/^(?:\\s+)/i,/^(?:#[^\\n]*)/i,/^(?:%[^\\n]*)/i,/^(?:gitGraph\\b)/i,/^(?:commit\\b)/i,/^(?:branch\\b)/i,/^(?:merge\\b)/i,/^(?:reset\\b)/i,/^(?:checkout\\b)/i,/^(?:LR\\b)/i,/^(?:BT\\b)/i,/^(?::)/i,/^(?:\\^)/i,/^(?:options\\r?\\n)/i,/^(?:end\\r?\\n)/i,/^(?:[^\\n]+\\r?\\n)/i,/^(?:[\"])/i,/^(?:[\"])/i,/^(?:[^\"]*)/i,/^(?:[a-zA-Z][-_\\.a-zA-Z0-9]*[-_a-zA-Z0-9])/i,/^(?:$)/i],\nconditions: {\"options\":{\"rules\":[15,16],\"inclusive\":false},\"string\":{\"rules\":[18,19],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,17,20,21],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain (args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}","const getStyles = () =>\n `\n .commit-id,\n .commit-msg,\n .branch-label {\n fill: lightgrey;\n color: lightgrey;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family);\n }\n`;\n\nexport default getStyles;\n","/**\n * Created by knut on 15-01-14.\n */\nimport { logger } from '../../logger';\n\nvar message = '';\nvar info = false;\n\nexport const setMessage = txt => {\n logger.debug('Setting message to: ' + txt);\n message = txt;\n};\n\nexport const getMessage = () => {\n return message;\n};\n\nexport const setInfo = inf => {\n info = inf;\n};\n\nexport const getInfo = () => {\n return info;\n};\n\n// export const parseError = (err, hash) => {\n// global.mermaidAPI.parseError(err, hash)\n// }\n\nexport default {\n setMessage,\n getMessage,\n setInfo,\n getInfo\n // parseError\n};\n","/**\n * Created by knut on 14-12-11.\n */\nimport { select } from 'd3';\nimport db from './infoDb';\nimport infoParser from './parser/info';\nimport { logger } from '../../logger';\n\nconst conf = {};\nexport const setConf = function(cnf) {\n const keys = Object.keys(cnf);\n\n keys.forEach(function(key) {\n conf[key] = cnf[key];\n });\n};\n\n/**\n * Draws a an info picture in the tag with id: id based on the graph definition in text.\n * @param text\n * @param id\n */\nexport const draw = (txt, id, ver) => {\n try {\n const parser = infoParser.parser;\n parser.yy = db;\n logger.debug('Renering info diagram\\n' + txt);\n // Parse the graph definition\n parser.parse(txt);\n logger.debug('Parsed info diagram');\n // Fetch the default direction, use TD if none was found\n const svg = select('#' + id);\n\n const g = svg.append('g');\n\n g.append('text') // text label for the x axis\n .attr('x', 100)\n .attr('y', 40)\n .attr('class', 'version')\n .attr('font-size', '32px')\n .style('text-anchor', 'middle')\n .text('v ' + ver);\n\n svg.attr('height', 100);\n svg.attr('width', 400);\n // svg.attr('viewBox', '0 0 300 150');\n } catch (e) {\n logger.error('Error while rendering info diagram');\n logger.error(e.message);\n }\n};\n\nexport default {\n setConf,\n draw\n};\n","/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[6,9,10];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"info\":4,\"document\":5,\"EOF\":6,\"line\":7,\"statement\":8,\"NL\":9,\"showInfo\":10,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",4:\"info\",6:\"EOF\",9:\"NL\",10:\"showInfo\"},\nproductions_: [0,[3,3],[5,0],[5,2],[7,1],[7,1],[8,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 1:\n return yy; \nbreak;\ncase 4:\n \nbreak;\ncase 6:\n yy.setInfo(true); \nbreak;\n}\n},\ntable: [{3:1,4:[1,2]},{1:[3]},o($V0,[2,2],{5:3}),{6:[1,4],7:5,8:6,9:[1,7],10:[1,8]},{1:[2,1]},o($V0,[2,3]),o($V0,[2,4]),o($V0,[2,5]),o($V0,[2,6])],\ndefaultActions: {4:[2,1]},\nparseError: function parseError (str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer.lex() || EOF;\n if (typeof token !== 'number') {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {\"case-insensitive\":true},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\n\t// Pre-lexer code can go here\n\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0:return 4 ;\nbreak;\ncase 1:return 9 ;\nbreak;\ncase 2:return 'space';\nbreak;\ncase 3:return 10;\nbreak;\ncase 4:return 6 ;\nbreak;\ncase 5:return 'TXT' ;\nbreak;\n}\n},\nrules: [/^(?:info\\b)/i,/^(?:[\\s\\n\\r]+)/i,/^(?:[\\s]+)/i,/^(?:showInfo\\b)/i,/^(?:$)/i,/^(?:.)/i],\nconditions: {\"INITIAL\":{\"rules\":[0,1,2,3,4,5],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain (args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}","const getStyles = () => ``;\n\nexport default getStyles;\n","/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[6,9,10,12];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"pie\":4,\"document\":5,\"EOF\":6,\"line\":7,\"statement\":8,\"NL\":9,\"STR\":10,\"VALUE\":11,\"title\":12,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",4:\"pie\",6:\"EOF\",9:\"NL\",10:\"STR\",11:\"VALUE\",12:\"title\"},\nproductions_: [0,[3,3],[5,0],[5,2],[7,1],[7,1],[8,2],[8,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 4:\n \nbreak;\ncase 6:\n\n\t\t/*console.log('str:'+$$[$0-1]+' value: '+$$[$0])*/\n\t\tyy.addSection($$[$0-1],yy.cleanupValue($$[$0])); \nbreak;\ncase 7:\nyy.setTitle($$[$0].substr(6));this.$=$$[$0].substr(6);\nbreak;\n}\n},\ntable: [{3:1,4:[1,2]},{1:[3]},o($V0,[2,2],{5:3}),{6:[1,4],7:5,8:6,9:[1,7],10:[1,8],12:[1,9]},{1:[2,1]},o($V0,[2,3]),o($V0,[2,4]),o($V0,[2,5]),{11:[1,10]},o($V0,[2,7]),o($V0,[2,6])],\ndefaultActions: {4:[2,1]},\nparseError: function parseError (str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer.lex() || EOF;\n if (typeof token !== 'number') {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {\"case-insensitive\":true},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\n\t// Pre-lexer code can go here\n\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0:/* do nothing */\nbreak;\ncase 1:/* skip whitespace */\nbreak;\ncase 2:return 4 ;\nbreak;\ncase 3:return 9 ;\nbreak;\ncase 4:return 'space';\nbreak;\ncase 5:return 12;\nbreak;\ncase 6:/*console.log('begin str');*/this.begin(\"string\");\nbreak;\ncase 7:/*console.log('pop-state');*/this.popState();\nbreak;\ncase 8:/*console.log('ending string')*/return \"STR\";\nbreak;\ncase 9:return \"VALUE\";\nbreak;\ncase 10:return 6 ;\nbreak;\n}\n},\nrules: [/^(?:%%[^\\n]*)/i,/^(?:\\s+)/i,/^(?:pie\\b)/i,/^(?:[\\s\\n\\r]+)/i,/^(?:[\\s]+)/i,/^(?:title\\s[^#\\n;]+)/i,/^(?:[\"])/i,/^(?:[\"])/i,/^(?:[^\"]*)/i,/^(?::[\\s]*[\\d]+(?:\\.[\\d]+)?)/i,/^(?:$)/i],\nconditions: {\"string\":{\"rules\":[7,8],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,1,2,3,4,5,6,9,10],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain (args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}","/**\n *\n */\nimport { logger } from '../../logger';\n\nlet sections = {};\nlet title = '';\n\nconst addSection = function(id, value) {\n if (typeof sections[id] === 'undefined') {\n sections[id] = value;\n logger.debug('Added new section :', id);\n }\n};\nconst getSections = () => sections;\n\nconst setTitle = function(txt) {\n title = txt;\n};\n\nconst getTitle = function() {\n return title;\n};\nconst cleanupValue = function(value) {\n if (value.substring(0, 1) === ':') {\n value = value.substring(1).trim();\n return Number(value.trim());\n } else {\n return Number(value.trim());\n }\n};\n\nconst clear = function() {\n sections = {};\n title = '';\n};\n// export const parseError = (err, hash) => {\n// global.mermaidAPI.parseError(err, hash)\n// }\n\nexport default {\n addSection,\n getSections,\n cleanupValue,\n clear,\n setTitle,\n getTitle\n // parseError\n};\n","/**\n * Created by AshishJ on 11-09-2019.\n */\nimport { select, scaleOrdinal, schemeSet2, pie as d3pie, entries, arc } from 'd3';\nimport pieData from './pieDb';\nimport pieParser from './parser/pie';\nimport { logger } from '../../logger';\n\nconst conf = {};\nexport const setConf = function(cnf) {\n const keys = Object.keys(cnf);\n\n keys.forEach(function(key) {\n conf[key] = cnf[key];\n });\n};\n\n/**\n * Draws a Pie Chart with the data given in text.\n * @param text\n * @param id\n */\nlet w;\nexport const draw = (txt, id) => {\n try {\n const parser = pieParser.parser;\n parser.yy = pieData;\n logger.debug('Rendering info diagram\\n' + txt);\n // Parse the Pie Chart definition\n parser.yy.clear();\n parser.parse(txt);\n logger.debug('Parsed info diagram');\n const elem = document.getElementById(id);\n w = elem.parentElement.offsetWidth;\n\n if (typeof w === 'undefined') {\n w = 1200;\n }\n\n if (typeof conf.useWidth !== 'undefined') {\n w = conf.useWidth;\n }\n const h = 450;\n elem.setAttribute('height', '100%');\n // Set viewBox\n elem.setAttribute('viewBox', '0 0 ' + w + ' ' + h);\n\n // Fetch the default direction, use TD if none was found\n\n var width = w; // 450\n var height = 450;\n var margin = 40;\n var legendRectSize = 18;\n var legendSpacing = 4;\n\n var radius = Math.min(width, height) / 2 - margin;\n\n var svg = select('#' + id)\n .append('svg')\n .attr('width', width)\n .attr('height', height)\n .append('g')\n .attr('transform', 'translate(' + width / 2 + ',' + height / 2 + ')');\n\n var data = pieData.getSections();\n var sum = 0;\n Object.keys(data).forEach(function(key) {\n sum += data[key];\n });\n logger.info(data);\n\n // set the color scale\n var color = scaleOrdinal()\n .domain(data)\n .range(schemeSet2);\n\n // Compute the position of each group on the pie:\n var pie = d3pie().value(function(d) {\n return d.value;\n });\n var dataReady = pie(entries(data));\n\n // shape helper to build arcs:\n var arcGenerator = arc()\n .innerRadius(0)\n .outerRadius(radius);\n\n // Build the pie chart: Basically, each part of the pie is a path that we build using the arc function.\n svg\n .selectAll('mySlices')\n .data(dataReady)\n .enter()\n .append('path')\n .attr('d', arcGenerator)\n .attr('fill', function(d) {\n return color(d.data.key);\n })\n .attr('stroke', 'black')\n .style('stroke-width', '2px')\n .style('opacity', 0.7);\n\n // Now add the Percentage. Use the centroid method to get the best coordinates\n svg\n .selectAll('mySlices')\n .data(dataReady)\n .enter()\n .append('text')\n .text(function(d) {\n return ((d.data.value / sum) * 100).toFixed(0) + '%';\n })\n .attr('transform', function(d) {\n return 'translate(' + arcGenerator.centroid(d) + ')';\n })\n .style('text-anchor', 'middle')\n .attr('class', 'slice')\n .style('font-size', 17);\n\n svg\n .append('text')\n .text(parser.yy.getTitle())\n .attr('x', 0)\n .attr('y', -(h - 50) / 2)\n .attr('class', 'pieTitleText');\n\n //Add the slegend/annotations for each section\n var legend = svg\n .selectAll('.legend')\n .data(color.domain())\n .enter()\n .append('g')\n .attr('class', 'legend')\n .attr('transform', function(d, i) {\n var height = legendRectSize + legendSpacing;\n var offset = (height * color.domain().length) / 2;\n var horz = 12 * legendRectSize;\n var vert = i * height - offset;\n return 'translate(' + horz + ',' + vert + ')';\n });\n\n legend\n .append('rect')\n .attr('width', legendRectSize)\n .attr('height', legendRectSize)\n .style('fill', color)\n .style('stroke', color);\n\n legend\n .append('text')\n .attr('x', legendRectSize + legendSpacing)\n .attr('y', legendRectSize - legendSpacing)\n .text(function(d) {\n return d;\n });\n } catch (e) {\n logger.error('Error while rendering info diagram');\n logger.error(e.message);\n }\n};\n\nexport default {\n setConf,\n draw\n};\n","const getStyles = options =>\n `.pieTitleText {\n text-anchor: middle;\n font-size: 25px;\n fill: ${options.taskTextDarkColor};\n font-family: ${options.fontFamily};\n }\n .slice {\n font-family: ${options.fontFamily};\n fill: ${options.textColor};\n // fill: white;\n }\n .legend text {\n fill: ${options.taskTextDarkColor};\n font-family: ${options.fontFamily};\n font-size: 17px;\n }\n`;\n\nexport default getStyles;\n","/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,2],$V1=[1,3],$V2=[1,5],$V3=[1,7],$V4=[2,5],$V5=[1,15],$V6=[1,17],$V7=[1,18],$V8=[1,20],$V9=[1,21],$Va=[1,22],$Vb=[1,24],$Vc=[1,25],$Vd=[1,26],$Ve=[1,27],$Vf=[1,28],$Vg=[1,29],$Vh=[1,32],$Vi=[1,33],$Vj=[1,36],$Vk=[1,4,5,16,21,22,23,25,27,28,29,30,31,33,35,36,37,48,56],$Vl=[1,44],$Vm=[4,5,16,21,22,23,25,27,28,29,30,31,33,37,48,56],$Vn=[4,5,16,21,22,23,25,27,28,29,30,31,33,36,37,48,56],$Vo=[4,5,16,21,22,23,25,27,28,29,30,31,33,35,37,48,56],$Vp=[46,47,48],$Vq=[1,4,5,7,16,21,22,23,25,27,28,29,30,31,33,35,36,37,48,56];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"SPACE\":4,\"NL\":5,\"directive\":6,\"SD\":7,\"document\":8,\"line\":9,\"statement\":10,\"openDirective\":11,\"typeDirective\":12,\"closeDirective\":13,\":\":14,\"argDirective\":15,\"participant\":16,\"actor\":17,\"AS\":18,\"restOfLine\":19,\"signal\":20,\"autonumber\":21,\"activate\":22,\"deactivate\":23,\"note_statement\":24,\"title\":25,\"text2\":26,\"loop\":27,\"end\":28,\"rect\":29,\"opt\":30,\"alt\":31,\"else_sections\":32,\"par\":33,\"par_sections\":34,\"and\":35,\"else\":36,\"note\":37,\"placement\":38,\"over\":39,\"actor_pair\":40,\"spaceList\":41,\",\":42,\"left_of\":43,\"right_of\":44,\"signaltype\":45,\"+\":46,\"-\":47,\"ACTOR\":48,\"SOLID_OPEN_ARROW\":49,\"DOTTED_OPEN_ARROW\":50,\"SOLID_ARROW\":51,\"DOTTED_ARROW\":52,\"SOLID_CROSS\":53,\"DOTTED_CROSS\":54,\"TXT\":55,\"open_directive\":56,\"type_directive\":57,\"arg_directive\":58,\"close_directive\":59,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",4:\"SPACE\",5:\"NL\",7:\"SD\",14:\":\",16:\"participant\",18:\"AS\",19:\"restOfLine\",21:\"autonumber\",22:\"activate\",23:\"deactivate\",25:\"title\",27:\"loop\",28:\"end\",29:\"rect\",30:\"opt\",31:\"alt\",33:\"par\",35:\"and\",36:\"else\",37:\"note\",39:\"over\",42:\",\",43:\"left_of\",44:\"right_of\",46:\"+\",47:\"-\",48:\"ACTOR\",49:\"SOLID_OPEN_ARROW\",50:\"DOTTED_OPEN_ARROW\",51:\"SOLID_ARROW\",52:\"DOTTED_ARROW\",53:\"SOLID_CROSS\",54:\"DOTTED_CROSS\",55:\"TXT\",56:\"open_directive\",57:\"type_directive\",58:\"arg_directive\",59:\"close_directive\"},\nproductions_: [0,[3,2],[3,2],[3,2],[3,2],[8,0],[8,2],[9,2],[9,1],[9,1],[6,4],[6,6],[10,5],[10,3],[10,2],[10,1],[10,3],[10,3],[10,2],[10,3],[10,4],[10,4],[10,4],[10,4],[10,4],[10,1],[34,1],[34,4],[32,1],[32,4],[24,4],[24,4],[41,2],[41,1],[40,3],[40,1],[38,1],[38,1],[20,5],[20,5],[20,4],[17,1],[45,1],[45,1],[45,1],[45,1],[45,1],[45,1],[26,1],[11,1],[12,1],[15,1],[13,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 4:\n yy.apply($$[$0]);return $$[$0]; \nbreak;\ncase 5:\n this.$ = [] \nbreak;\ncase 6:\n$$[$0-1].push($$[$0]);this.$ = $$[$0-1]\nbreak;\ncase 7: case 8:\n this.$ = $$[$0] \nbreak;\ncase 9:\n this.$=[]; \nbreak;\ncase 12:\n$$[$0-3].description=yy.parseMessage($$[$0-1]); this.$=$$[$0-3];\nbreak;\ncase 13:\nthis.$=$$[$0-1];\nbreak;\ncase 15:\nyy.enableSequenceNumbers()\nbreak;\ncase 16:\nthis.$={type: 'activeStart', signalType: yy.LINETYPE.ACTIVE_START, actor: $$[$0-1]};\nbreak;\ncase 17:\nthis.$={type: 'activeEnd', signalType: yy.LINETYPE.ACTIVE_END, actor: $$[$0-1]};\nbreak;\ncase 19:\nthis.$=[{type:'setTitle', text:$$[$0-1]}]\nbreak;\ncase 20:\n\n\t\t$$[$0-1].unshift({type: 'loopStart', loopText:yy.parseMessage($$[$0-2]), signalType: yy.LINETYPE.LOOP_START});\n\t\t$$[$0-1].push({type: 'loopEnd', loopText:$$[$0-2], signalType: yy.LINETYPE.LOOP_END});\n\t\tthis.$=$$[$0-1];\nbreak;\ncase 21:\n\n\t\t$$[$0-1].unshift({type: 'rectStart', color:yy.parseMessage($$[$0-2]), signalType: yy.LINETYPE.RECT_START });\n\t\t$$[$0-1].push({type: 'rectEnd', color:yy.parseMessage($$[$0-2]), signalType: yy.LINETYPE.RECT_END });\n\t\tthis.$=$$[$0-1];\nbreak;\ncase 22:\n\n\t\t$$[$0-1].unshift({type: 'optStart', optText:yy.parseMessage($$[$0-2]), signalType: yy.LINETYPE.OPT_START});\n\t\t$$[$0-1].push({type: 'optEnd', optText:yy.parseMessage($$[$0-2]), signalType: yy.LINETYPE.OPT_END});\n\t\tthis.$=$$[$0-1];\nbreak;\ncase 23:\n\n\t\t// Alt start\n\t\t$$[$0-1].unshift({type: 'altStart', altText:yy.parseMessage($$[$0-2]), signalType: yy.LINETYPE.ALT_START});\n\t\t// Content in alt is already in $$[$0-1]\n\t\t// End\n\t\t$$[$0-1].push({type: 'altEnd', signalType: yy.LINETYPE.ALT_END});\n\t\tthis.$=$$[$0-1];\nbreak;\ncase 24:\n\n\t\t// Parallel start\n\t\t$$[$0-1].unshift({type: 'parStart', parText:yy.parseMessage($$[$0-2]), signalType: yy.LINETYPE.PAR_START});\n\t\t// Content in par is already in $$[$0-1]\n\t\t// End\n\t\t$$[$0-1].push({type: 'parEnd', signalType: yy.LINETYPE.PAR_END});\n\t\tthis.$=$$[$0-1];\nbreak;\ncase 27:\n this.$ = $$[$0-3].concat([{type: 'and', parText:yy.parseMessage($$[$0-1]), signalType: yy.LINETYPE.PAR_AND}, $$[$0]]); \nbreak;\ncase 29:\n this.$ = $$[$0-3].concat([{type: 'else', altText:yy.parseMessage($$[$0-1]), signalType: yy.LINETYPE.ALT_ELSE}, $$[$0]]); \nbreak;\ncase 30:\n\n\t\tthis.$ = [$$[$0-1], {type:'addNote', placement:$$[$0-2], actor:$$[$0-1].actor, text:$$[$0]}];\nbreak;\ncase 31:\n\n\t\t// Coerce actor_pair into a [to, from, ...] array\n\t\t$$[$0-2] = [].concat($$[$0-1], $$[$0-1]).slice(0, 2);\n\t\t$$[$0-2][0] = $$[$0-2][0].actor;\n\t\t$$[$0-2][1] = $$[$0-2][1].actor;\n\t\tthis.$ = [$$[$0-1], {type:'addNote', placement:yy.PLACEMENT.OVER, actor:$$[$0-2].slice(0, 2), text:$$[$0]}];\nbreak;\ncase 34:\n this.$ = [$$[$0-2], $$[$0]]; \nbreak;\ncase 35:\n this.$ = $$[$0]; \nbreak;\ncase 36:\n this.$ = yy.PLACEMENT.LEFTOF; \nbreak;\ncase 37:\n this.$ = yy.PLACEMENT.RIGHTOF; \nbreak;\ncase 38:\n this.$ = [$$[$0-4],$$[$0-1],{type: 'addMessage', from:$$[$0-4].actor, to:$$[$0-1].actor, signalType:$$[$0-3], msg:$$[$0]},\n\t {type: 'activeStart', signalType: yy.LINETYPE.ACTIVE_START, actor: $$[$0-1]}\n\t ]\nbreak;\ncase 39:\n this.$ = [$$[$0-4],$$[$0-1],{type: 'addMessage', from:$$[$0-4].actor, to:$$[$0-1].actor, signalType:$$[$0-3], msg:$$[$0]},\n\t {type: 'activeEnd', signalType: yy.LINETYPE.ACTIVE_END, actor: $$[$0-4]}\n\t ]\nbreak;\ncase 40:\n this.$ = [$$[$0-3],$$[$0-1],{type: 'addMessage', from:$$[$0-3].actor, to:$$[$0-1].actor, signalType:$$[$0-2], msg:$$[$0]}]\nbreak;\ncase 41:\nthis.$={type: 'addActor', actor:$$[$0]}\nbreak;\ncase 42:\n this.$ = yy.LINETYPE.SOLID_OPEN; \nbreak;\ncase 43:\n this.$ = yy.LINETYPE.DOTTED_OPEN; \nbreak;\ncase 44:\n this.$ = yy.LINETYPE.SOLID; \nbreak;\ncase 45:\n this.$ = yy.LINETYPE.DOTTED; \nbreak;\ncase 46:\n this.$ = yy.LINETYPE.SOLID_CROSS; \nbreak;\ncase 47:\n this.$ = yy.LINETYPE.DOTTED_CROSS; \nbreak;\ncase 48:\nthis.$ = yy.parseMessage($$[$0].trim().substring(1)) \nbreak;\ncase 49:\n yy.parseDirective('%%{', 'open_directive'); \nbreak;\ncase 50:\n yy.parseDirective($$[$0], 'type_directive'); \nbreak;\ncase 51:\n $$[$0] = $$[$0].trim().replace(/'/g, '\"'); yy.parseDirective($$[$0], 'arg_directive'); \nbreak;\ncase 52:\n yy.parseDirective('}%%', 'close_directive', 'sequence'); \nbreak;\n}\n},\ntable: [{3:1,4:$V0,5:$V1,6:4,7:$V2,11:6,56:$V3},{1:[3]},{3:8,4:$V0,5:$V1,6:4,7:$V2,11:6,56:$V3},{3:9,4:$V0,5:$V1,6:4,7:$V2,11:6,56:$V3},{3:10,4:$V0,5:$V1,6:4,7:$V2,11:6,56:$V3},o([1,4,5,16,21,22,23,25,27,29,30,31,33,37,48,56],$V4,{8:11}),{12:12,57:[1,13]},{57:[2,49]},{1:[2,1]},{1:[2,2]},{1:[2,3]},{1:[2,4],4:$V5,5:$V6,6:30,9:14,10:16,11:6,16:$V7,17:31,20:19,21:$V8,22:$V9,23:$Va,24:23,25:$Vb,27:$Vc,29:$Vd,30:$Ve,31:$Vf,33:$Vg,37:$Vh,48:$Vi,56:$V3},{13:34,14:[1,35],59:$Vj},o([14,59],[2,50]),o($Vk,[2,6]),{6:30,10:37,11:6,16:$V7,17:31,20:19,21:$V8,22:$V9,23:$Va,24:23,25:$Vb,27:$Vc,29:$Vd,30:$Ve,31:$Vf,33:$Vg,37:$Vh,48:$Vi,56:$V3},o($Vk,[2,8]),o($Vk,[2,9]),{17:38,48:$Vi},{5:[1,39]},o($Vk,[2,15]),{17:40,48:$Vi},{17:41,48:$Vi},{5:[1,42]},{26:43,55:$Vl},{19:[1,45]},{19:[1,46]},{19:[1,47]},{19:[1,48]},{19:[1,49]},o($Vk,[2,25]),{45:50,49:[1,51],50:[1,52],51:[1,53],52:[1,54],53:[1,55],54:[1,56]},{38:57,39:[1,58],43:[1,59],44:[1,60]},o([5,18,42,49,50,51,52,53,54,55],[2,41]),{5:[1,61]},{15:62,58:[1,63]},{5:[2,52]},o($Vk,[2,7]),{5:[1,65],18:[1,64]},o($Vk,[2,14]),{5:[1,66]},{5:[1,67]},o($Vk,[2,18]),{5:[1,68]},{5:[2,48]},o($Vm,$V4,{8:69}),o($Vm,$V4,{8:70}),o($Vm,$V4,{8:71}),o($Vn,$V4,{32:72,8:73}),o($Vo,$V4,{34:74,8:75}),{17:78,46:[1,76],47:[1,77],48:$Vi},o($Vp,[2,42]),o($Vp,[2,43]),o($Vp,[2,44]),o($Vp,[2,45]),o($Vp,[2,46]),o($Vp,[2,47]),{17:79,48:$Vi},{17:81,40:80,48:$Vi},{48:[2,36]},{48:[2,37]},o($Vq,[2,10]),{13:82,59:$Vj},{59:[2,51]},{19:[1,83]},o($Vk,[2,13]),o($Vk,[2,16]),o($Vk,[2,17]),o($Vk,[2,19]),{4:$V5,5:$V6,6:30,9:14,10:16,11:6,16:$V7,17:31,20:19,21:$V8,22:$V9,23:$Va,24:23,25:$Vb,27:$Vc,28:[1,84],29:$Vd,30:$Ve,31:$Vf,33:$Vg,37:$Vh,48:$Vi,56:$V3},{4:$V5,5:$V6,6:30,9:14,10:16,11:6,16:$V7,17:31,20:19,21:$V8,22:$V9,23:$Va,24:23,25:$Vb,27:$Vc,28:[1,85],29:$Vd,30:$Ve,31:$Vf,33:$Vg,37:$Vh,48:$Vi,56:$V3},{4:$V5,5:$V6,6:30,9:14,10:16,11:6,16:$V7,17:31,20:19,21:$V8,22:$V9,23:$Va,24:23,25:$Vb,27:$Vc,28:[1,86],29:$Vd,30:$Ve,31:$Vf,33:$Vg,37:$Vh,48:$Vi,56:$V3},{28:[1,87]},{4:$V5,5:$V6,6:30,9:14,10:16,11:6,16:$V7,17:31,20:19,21:$V8,22:$V9,23:$Va,24:23,25:$Vb,27:$Vc,28:[2,28],29:$Vd,30:$Ve,31:$Vf,33:$Vg,36:[1,88],37:$Vh,48:$Vi,56:$V3},{28:[1,89]},{4:$V5,5:$V6,6:30,9:14,10:16,11:6,16:$V7,17:31,20:19,21:$V8,22:$V9,23:$Va,24:23,25:$Vb,27:$Vc,28:[2,26],29:$Vd,30:$Ve,31:$Vf,33:$Vg,35:[1,90],37:$Vh,48:$Vi,56:$V3},{17:91,48:$Vi},{17:92,48:$Vi},{26:93,55:$Vl},{26:94,55:$Vl},{26:95,55:$Vl},{42:[1,96],55:[2,35]},{5:[1,97]},{5:[1,98]},o($Vk,[2,20]),o($Vk,[2,21]),o($Vk,[2,22]),o($Vk,[2,23]),{19:[1,99]},o($Vk,[2,24]),{19:[1,100]},{26:101,55:$Vl},{26:102,55:$Vl},{5:[2,40]},{5:[2,30]},{5:[2,31]},{17:103,48:$Vi},o($Vq,[2,11]),o($Vk,[2,12]),o($Vn,$V4,{8:73,32:104}),o($Vo,$V4,{8:75,34:105}),{5:[2,38]},{5:[2,39]},{55:[2,34]},{28:[2,29]},{28:[2,27]}],\ndefaultActions: {7:[2,49],8:[2,1],9:[2,2],10:[2,3],36:[2,52],44:[2,48],59:[2,36],60:[2,37],63:[2,51],93:[2,40],94:[2,30],95:[2,31],101:[2,38],102:[2,39],103:[2,34],104:[2,29],105:[2,27]},\nparseError: function parseError (str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer.lex() || EOF;\n if (typeof token !== 'number') {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {\"case-insensitive\":true},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0: this.begin('OPEN_DIRECTIVE'); return 56; \nbreak;\ncase 1: this.begin('TYPE_DIRECTIVE'); return 57; \nbreak;\ncase 2: this.popState(); this.begin('ARG_DIRECTIVE'); return 14; \nbreak;\ncase 3: this.popState(); this.popState(); return 59; \nbreak;\ncase 4:return 58;\nbreak;\ncase 5:return 5;\nbreak;\ncase 6:/* skip all whitespace */\nbreak;\ncase 7:/* skip same-line whitespace */\nbreak;\ncase 8:/* skip comments */\nbreak;\ncase 9:/* skip comments */\nbreak;\ncase 10:/* skip comments */\nbreak;\ncase 11: this.begin('ID'); return 16; \nbreak;\ncase 12: yy_.yytext = yy_.yytext.trim(); this.begin('ALIAS'); return 48; \nbreak;\ncase 13: this.popState(); this.popState(); this.begin('LINE'); return 18; \nbreak;\ncase 14: this.popState(); this.popState(); return 5; \nbreak;\ncase 15: this.begin('LINE'); return 27; \nbreak;\ncase 16: this.begin('LINE'); return 29; \nbreak;\ncase 17: this.begin('LINE'); return 30; \nbreak;\ncase 18: this.begin('LINE'); return 31; \nbreak;\ncase 19: this.begin('LINE'); return 36; \nbreak;\ncase 20: this.begin('LINE'); return 33; \nbreak;\ncase 21: this.begin('LINE'); return 35; \nbreak;\ncase 22: this.popState(); return 19; \nbreak;\ncase 23:return 28;\nbreak;\ncase 24:return 43;\nbreak;\ncase 25:return 44;\nbreak;\ncase 26:return 39;\nbreak;\ncase 27:return 37;\nbreak;\ncase 28: this.begin('ID'); return 22; \nbreak;\ncase 29: this.begin('ID'); return 23; \nbreak;\ncase 30:return 25;\nbreak;\ncase 31:return 7;\nbreak;\ncase 32:return 21;\nbreak;\ncase 33:return 42;\nbreak;\ncase 34:return 5;\nbreak;\ncase 35: yy_.yytext = yy_.yytext.trim(); return 48; \nbreak;\ncase 36:return 51;\nbreak;\ncase 37:return 52;\nbreak;\ncase 38:return 49;\nbreak;\ncase 39:return 50;\nbreak;\ncase 40:return 53;\nbreak;\ncase 41:return 54;\nbreak;\ncase 42:return 55;\nbreak;\ncase 43:return 46;\nbreak;\ncase 44:return 47;\nbreak;\ncase 45:return 5;\nbreak;\ncase 46:return 'INVALID';\nbreak;\n}\n},\nrules: [/^(?:%%\\{)/i,/^(?:((?:(?!\\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\\}%%)/i,/^(?:((?:(?!\\}%%).|\\n)*))/i,/^(?:[\\n]+)/i,/^(?:\\s+)/i,/^(?:((?!\\n)\\s)+)/i,/^(?:#[^\\n]*)/i,/^(?:%(?!\\{)[^\\n]*)/i,/^(?:[^\\}]%%[^\\n]*)/i,/^(?:participant\\b)/i,/^(?:[^\\->:\\n,;]+?(?=((?!\\n)\\s)+as(?!\\n)\\s|[#\\n;]|$))/i,/^(?:as\\b)/i,/^(?:(?:))/i,/^(?:loop\\b)/i,/^(?:rect\\b)/i,/^(?:opt\\b)/i,/^(?:alt\\b)/i,/^(?:else\\b)/i,/^(?:par\\b)/i,/^(?:and\\b)/i,/^(?:(?:[:]?(?:no)?wrap)?[^#\\n;]*)/i,/^(?:end\\b)/i,/^(?:left of\\b)/i,/^(?:right of\\b)/i,/^(?:over\\b)/i,/^(?:note\\b)/i,/^(?:activate\\b)/i,/^(?:deactivate\\b)/i,/^(?:title\\b)/i,/^(?:sequenceDiagram\\b)/i,/^(?:autonumber\\b)/i,/^(?:,)/i,/^(?:;)/i,/^(?:[^\\+\\->:\\n,;]+)/i,/^(?:->>)/i,/^(?:-->>)/i,/^(?:->)/i,/^(?:-->)/i,/^(?:-[x])/i,/^(?:--[x])/i,/^(?::(?:(?:no)?wrap)?[^#\\n;]+)/i,/^(?:\\+)/i,/^(?:-)/i,/^(?:$)/i,/^(?:.)/i],\nconditions: {\"LINE\":{\"rules\":[7,8,22],\"inclusive\":false},\"ARG_DIRECTIVE\":{\"rules\":[3,4,8],\"inclusive\":false},\"TYPE_DIRECTIVE\":{\"rules\":[2,3,8],\"inclusive\":false},\"OPEN_DIRECTIVE\":{\"rules\":[1,8],\"inclusive\":false},\"ALIAS\":{\"rules\":[7,8,13,14],\"inclusive\":false},\"ID\":{\"rules\":[7,8,12],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,5,6,8,9,10,11,15,16,17,18,19,20,21,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain (args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}","import mermaidAPI from '../../mermaidAPI';\nimport configApi from '../../config';\nimport common from '../common/common';\nimport { logger } from '../../logger';\n\nlet prevActor = undefined;\nlet actors = {};\nlet messages = [];\nconst notes = [];\nlet title = '';\nlet titleWrapped = false;\nlet sequenceNumbersEnabled = false;\nlet wrapEnabled = false;\n\nexport const parseDirective = function(statement, context, type) {\n mermaidAPI.parseDirective(statement, context, type);\n};\n\nexport const addActor = function(id, name, description) {\n // Don't allow description nulling\n const old = actors[id];\n if (old && name === old.name && description == null) return;\n\n // Don't allow null descriptions, either\n if (description == null || description.text == null) {\n description = { text: name, wrap: null };\n }\n\n actors[id] = {\n name: name,\n description: description.text,\n wrap: (description.wrap === undefined && autoWrap()) || !!description.wrap,\n prevActor: prevActor\n };\n if (prevActor && actors[prevActor]) {\n actors[prevActor].nextActor = id;\n }\n\n prevActor = id;\n};\n\nconst activationCount = part => {\n let i;\n let count = 0;\n for (i = 0; i < messages.length; i++) {\n // console.warn(i, messages[i]);\n if (messages[i].type === LINETYPE.ACTIVE_START) {\n if (messages[i].from.actor === part) {\n count++;\n }\n }\n if (messages[i].type === LINETYPE.ACTIVE_END) {\n if (messages[i].from.actor === part) {\n count--;\n }\n }\n }\n return count;\n};\n\nexport const addMessage = function(idFrom, idTo, message, answer) {\n messages.push({\n from: idFrom,\n to: idTo,\n message: message.text,\n wrap: (message.wrap === undefined && autoWrap()) || !!message.wrap,\n answer: answer\n });\n};\n\nexport const addSignal = function(\n idFrom,\n idTo,\n message = { text: undefined, wrap: undefined },\n messageType\n) {\n if (messageType === LINETYPE.ACTIVE_END) {\n const cnt = activationCount(idFrom.actor);\n if (cnt < 1) {\n // Bail out as there is an activation signal from an inactive participant\n let error = new Error('Trying to inactivate an inactive participant (' + idFrom.actor + ')');\n error.hash = {\n text: '->>-',\n token: '->>-',\n line: '1',\n loc: { first_line: 1, last_line: 1, first_column: 1, last_column: 1 },\n expected: [\"'ACTIVE_PARTICIPANT'\"]\n };\n throw error;\n }\n }\n messages.push({\n from: idFrom,\n to: idTo,\n message: message.text,\n wrap: (message.wrap === undefined && autoWrap()) || !!message.wrap,\n type: messageType\n });\n return true;\n};\n\nexport const getMessages = function() {\n return messages;\n};\n\nexport const getActors = function() {\n return actors;\n};\nexport const getActor = function(id) {\n return actors[id];\n};\nexport const getActorKeys = function() {\n return Object.keys(actors);\n};\nexport const getTitle = function() {\n return title;\n};\nexport const getTitleWrapped = function() {\n return titleWrapped;\n};\nexport const enableSequenceNumbers = function() {\n sequenceNumbersEnabled = true;\n};\nexport const showSequenceNumbers = () => sequenceNumbersEnabled;\n\nexport const setWrap = function(wrapSetting) {\n wrapEnabled = wrapSetting;\n};\n\nexport const autoWrap = () => wrapEnabled;\n\nexport const clear = function() {\n actors = {};\n messages = [];\n};\n\nexport const parseMessage = function(str) {\n const _str = str.trim();\n const message = {\n text: _str.replace(/^[:]?(?:no)?wrap:/, '').trim(),\n wrap:\n _str.match(/^[:]?(?:no)?wrap:/) === null\n ? common.hasBreaks(_str) || autoWrap()\n : _str.match(/^[:]?wrap:/) !== null\n ? true\n : _str.match(/^[:]?nowrap:/) !== null\n ? false\n : autoWrap()\n };\n logger.debug('parseMessage:', message);\n return message;\n};\n\nexport const LINETYPE = {\n SOLID: 0,\n DOTTED: 1,\n NOTE: 2,\n SOLID_CROSS: 3,\n DOTTED_CROSS: 4,\n SOLID_OPEN: 5,\n DOTTED_OPEN: 6,\n LOOP_START: 10,\n LOOP_END: 11,\n ALT_START: 12,\n ALT_ELSE: 13,\n ALT_END: 14,\n OPT_START: 15,\n OPT_END: 16,\n ACTIVE_START: 17,\n ACTIVE_END: 18,\n PAR_START: 19,\n PAR_AND: 20,\n PAR_END: 21,\n RECT_START: 22,\n RECT_END: 23\n};\n\nexport const ARROWTYPE = {\n FILLED: 0,\n OPEN: 1\n};\n\nexport const PLACEMENT = {\n LEFTOF: 0,\n RIGHTOF: 1,\n OVER: 2\n};\n\nexport const addNote = function(actor, placement, message) {\n const note = {\n actor: actor,\n placement: placement,\n message: message.text,\n wrap: (message.wrap === undefined && autoWrap()) || !!message.wrap\n };\n\n // Coerce actor into a [to, from, ...] array\n const actors = [].concat(actor, actor);\n\n notes.push(note);\n messages.push({\n from: actors[0],\n to: actors[1],\n message: message.text,\n wrap: (message.wrap === undefined && autoWrap()) || !!message.wrap,\n type: LINETYPE.NOTE,\n placement: placement\n });\n};\n\nexport const setTitle = function(titleWrap) {\n title = titleWrap.text;\n titleWrapped = (titleWrap.wrap === undefined && autoWrap()) || !!titleWrap.wrap;\n};\n\nexport const apply = function(param) {\n if (param instanceof Array) {\n param.forEach(function(item) {\n apply(item);\n });\n } else {\n switch (param.type) {\n case 'addActor':\n addActor(param.actor, param.actor, param.description);\n break;\n case 'activeStart':\n addSignal(param.actor, undefined, undefined, param.signalType);\n break;\n case 'activeEnd':\n addSignal(param.actor, undefined, undefined, param.signalType);\n break;\n case 'addNote':\n addNote(param.actor, param.placement, param.text);\n break;\n case 'addMessage':\n addSignal(param.from, param.to, param.msg, param.signalType);\n break;\n case 'loopStart':\n addSignal(undefined, undefined, param.loopText, param.signalType);\n break;\n case 'loopEnd':\n addSignal(undefined, undefined, undefined, param.signalType);\n break;\n case 'rectStart':\n addSignal(undefined, undefined, param.color, param.signalType);\n break;\n case 'rectEnd':\n addSignal(undefined, undefined, undefined, param.signalType);\n break;\n case 'optStart':\n addSignal(undefined, undefined, param.optText, param.signalType);\n break;\n case 'optEnd':\n addSignal(undefined, undefined, undefined, param.signalType);\n break;\n case 'altStart':\n addSignal(undefined, undefined, param.altText, param.signalType);\n break;\n case 'else':\n addSignal(undefined, undefined, param.altText, param.signalType);\n break;\n case 'altEnd':\n addSignal(undefined, undefined, undefined, param.signalType);\n break;\n case 'setTitle':\n setTitle(param.text);\n break;\n case 'parStart':\n addSignal(undefined, undefined, param.parText, param.signalType);\n break;\n case 'and':\n addSignal(undefined, undefined, param.parText, param.signalType);\n break;\n case 'parEnd':\n addSignal(undefined, undefined, undefined, param.signalType);\n break;\n }\n }\n};\n\nexport default {\n addActor,\n addMessage,\n addSignal,\n autoWrap,\n setWrap,\n enableSequenceNumbers,\n showSequenceNumbers,\n getMessages,\n getActors,\n getActor,\n getActorKeys,\n getTitle,\n parseDirective,\n getConfig: () => configApi.getConfig().sequence,\n getTitleWrapped,\n clear,\n parseMessage,\n LINETYPE,\n ARROWTYPE,\n PLACEMENT,\n addNote,\n setTitle,\n apply\n};\n","import { select, selectAll } from 'd3';\nimport svgDraw, { drawText } from './svgDraw';\nimport { logger } from '../../logger';\nimport { parser } from './parser/sequenceDiagram';\nimport common from '../common/common';\nimport sequenceDb from './sequenceDb';\nimport utils, { assignWithDepth } from '../../utils';\n\nparser.yy = sequenceDb;\n\nconst conf = {};\n\nexport const bounds = {\n data: {\n startx: undefined,\n stopx: undefined,\n starty: undefined,\n stopy: undefined\n },\n verticalPos: 0,\n sequenceItems: [],\n activations: [],\n models: {\n getHeight: function() {\n return (\n Math.max.apply(\n null,\n this.actors.length === 0 ? [0] : this.actors.map(actor => actor.height || 0)\n ) +\n (this.loops.length === 0\n ? 0\n : this.loops.map(it => it.height || 0).reduce((acc, h) => acc + h)) +\n (this.messages.length === 0\n ? 0\n : this.messages.map(it => it.height || 0).reduce((acc, h) => acc + h)) +\n (this.notes.length === 0\n ? 0\n : this.notes.map(it => it.height || 0).reduce((acc, h) => acc + h))\n );\n },\n clear: function() {\n this.actors = [];\n this.loops = [];\n this.messages = [];\n this.notes = [];\n },\n addActor: function(actorModel) {\n this.actors.push(actorModel);\n },\n addLoop: function(loopModel) {\n this.loops.push(loopModel);\n },\n addMessage: function(msgModel) {\n this.messages.push(msgModel);\n },\n addNote: function(noteModel) {\n this.notes.push(noteModel);\n },\n lastActor: function() {\n return this.actors[this.actors.length - 1];\n },\n lastLoop: function() {\n return this.loops[this.loops.length - 1];\n },\n lastMessage: function() {\n return this.messages[this.messages.length - 1];\n },\n lastNote: function() {\n return this.notes[this.notes.length - 1];\n },\n actors: [],\n loops: [],\n messages: [],\n notes: []\n },\n init: function() {\n this.sequenceItems = [];\n this.activations = [];\n this.models.clear();\n this.data = {\n startx: undefined,\n stopx: undefined,\n starty: undefined,\n stopy: undefined\n };\n this.verticalPos = 0;\n setConf(parser.yy.getConfig());\n },\n updateVal: function(obj, key, val, fun) {\n if (typeof obj[key] === 'undefined') {\n obj[key] = val;\n } else {\n obj[key] = fun(val, obj[key]);\n }\n },\n updateBounds: function(startx, starty, stopx, stopy) {\n const _self = this;\n let cnt = 0;\n function updateFn(type) {\n return function updateItemBounds(item) {\n cnt++;\n // The loop sequenceItems is a stack so the biggest margins in the beginning of the sequenceItems\n const n = _self.sequenceItems.length - cnt + 1;\n\n _self.updateVal(item, 'starty', starty - n * conf.boxMargin, Math.min);\n _self.updateVal(item, 'stopy', stopy + n * conf.boxMargin, Math.max);\n\n _self.updateVal(bounds.data, 'startx', startx - n * conf.boxMargin, Math.min);\n _self.updateVal(bounds.data, 'stopx', stopx + n * conf.boxMargin, Math.max);\n\n if (!(type === 'activation')) {\n _self.updateVal(item, 'startx', startx - n * conf.boxMargin, Math.min);\n _self.updateVal(item, 'stopx', stopx + n * conf.boxMargin, Math.max);\n\n _self.updateVal(bounds.data, 'starty', starty - n * conf.boxMargin, Math.min);\n _self.updateVal(bounds.data, 'stopy', stopy + n * conf.boxMargin, Math.max);\n }\n };\n }\n\n this.sequenceItems.forEach(updateFn());\n this.activations.forEach(updateFn('activation'));\n },\n insert: function(startx, starty, stopx, stopy) {\n const _startx = Math.min(startx, stopx);\n const _stopx = Math.max(startx, stopx);\n const _starty = Math.min(starty, stopy);\n const _stopy = Math.max(starty, stopy);\n\n this.updateVal(bounds.data, 'startx', _startx, Math.min);\n this.updateVal(bounds.data, 'starty', _starty, Math.min);\n this.updateVal(bounds.data, 'stopx', _stopx, Math.max);\n this.updateVal(bounds.data, 'stopy', _stopy, Math.max);\n\n this.updateBounds(_startx, _starty, _stopx, _stopy);\n },\n newActivation: function(message, diagram, actors) {\n const actorRect = actors[message.from.actor];\n const stackedSize = actorActivations(message.from.actor).length || 0;\n const x = actorRect.x + actorRect.width / 2 + ((stackedSize - 1) * conf.activationWidth) / 2;\n this.activations.push({\n startx: x,\n starty: this.verticalPos + 2,\n stopx: x + conf.activationWidth,\n stopy: undefined,\n actor: message.from.actor,\n anchored: svgDraw.anchorElement(diagram)\n });\n },\n endActivation: function(message) {\n // find most recent activation for given actor\n const lastActorActivationIdx = this.activations\n .map(function(activation) {\n return activation.actor;\n })\n .lastIndexOf(message.from.actor);\n return this.activations.splice(lastActorActivationIdx, 1)[0];\n },\n createLoop: function(title = { message: undefined, wrap: false, width: undefined }, fill) {\n return {\n startx: undefined,\n starty: this.verticalPos,\n stopx: undefined,\n stopy: undefined,\n title: title.message,\n wrap: title.wrap,\n width: title.width,\n height: 0,\n fill: fill\n };\n },\n newLoop: function(title = { message: undefined, wrap: false, width: undefined }, fill) {\n this.sequenceItems.push(this.createLoop(title, fill));\n },\n endLoop: function() {\n return this.sequenceItems.pop();\n },\n addSectionToLoop: function(message) {\n const loop = this.sequenceItems.pop();\n loop.sections = loop.sections || [];\n loop.sectionTitles = loop.sectionTitles || [];\n loop.sections.push({ y: bounds.getVerticalPos(), height: 0 });\n loop.sectionTitles.push(message);\n this.sequenceItems.push(loop);\n },\n bumpVerticalPos: function(bump) {\n this.verticalPos = this.verticalPos + bump;\n this.data.stopy = this.verticalPos;\n },\n getVerticalPos: function() {\n return this.verticalPos;\n },\n getBounds: function() {\n return { bounds: this.data, models: this.models };\n }\n};\n\n/**\n * Draws an note in the diagram with the attached line\n * @param elem - The diagram to draw to.\n * @param noteModel:{x: number, y: number, message: string, width: number} - startx: x axis start position, verticalPos: y axis position, messsage: the message to be shown, width: Set this with a custom width to override the default configured width.\n */\nconst drawNote = function(elem, noteModel) {\n bounds.bumpVerticalPos(conf.boxMargin);\n noteModel.height = conf.boxMargin;\n noteModel.starty = bounds.getVerticalPos();\n const rect = svgDraw.getNoteRect();\n rect.x = noteModel.startx;\n rect.y = noteModel.starty;\n rect.width = noteModel.width || conf.width;\n rect.class = 'note';\n\n let g = elem.append('g');\n const rectElem = svgDraw.drawRect(g, rect);\n const textObj = svgDraw.getTextObj();\n textObj.x = noteModel.startx;\n textObj.y = noteModel.starty;\n textObj.width = rect.width;\n textObj.dy = '1em';\n textObj.text = noteModel.message;\n textObj.class = 'noteText';\n textObj.fontFamily = conf.noteFontFamily;\n textObj.fontSize = conf.noteFontSize;\n textObj.fontWeight = conf.noteFontWeight;\n textObj.anchor = conf.noteAlign;\n textObj.textMargin = conf.noteMargin;\n textObj.valign = conf.noteAlign;\n textObj.wrap = true;\n\n let textElem = drawText(g, textObj);\n\n let textHeight = Math.round(\n textElem.map(te => (te._groups || te)[0][0].getBBox().height).reduce((acc, curr) => acc + curr)\n );\n\n rectElem.attr('height', textHeight + 2 * conf.noteMargin);\n noteModel.height += textHeight + 2 * conf.noteMargin;\n bounds.bumpVerticalPos(textHeight + 2 * conf.noteMargin);\n noteModel.stopy = noteModel.starty + textHeight + 2 * conf.noteMargin;\n noteModel.stopx = noteModel.startx + rect.width;\n bounds.insert(noteModel.startx, noteModel.starty, noteModel.stopx, noteModel.stopy);\n bounds.models.addNote(noteModel);\n};\n\n/**\n * Draws a message\n * @param g - the parent of the message element\n * @param msgModel - the model containing fields describing a message\n */\nconst drawMessage = function(g, msgModel) {\n bounds.bumpVerticalPos(10);\n const { startx, stopx, starty, message, type, sequenceIndex, wrap } = msgModel;\n const lines = common.splitBreaks(message).length;\n let textDims = utils.calculateTextDimensions(message, conf.messageFont());\n const lineHeight = textDims.height / lines;\n msgModel.height += lineHeight;\n\n bounds.bumpVerticalPos(lineHeight);\n const textObj = svgDraw.getTextObj();\n textObj.x = startx;\n textObj.y = starty + 10;\n textObj.width = stopx - startx;\n textObj.class = 'messageText';\n textObj.dy = '1em';\n textObj.text = message;\n textObj.fontFamily = conf.messageFontFamily;\n textObj.fontSize = conf.messageFontSize;\n textObj.fontWeight = conf.messageFontWeight;\n textObj.anchor = conf.messageAlign;\n textObj.valign = conf.messageAlign;\n textObj.textMargin = conf.wrapPadding;\n textObj.tspan = false;\n textObj.wrap = wrap;\n\n drawText(g, textObj);\n\n let totalOffset = textDims.height - 10;\n\n let textWidth = textDims.width;\n\n let line, lineStarty;\n if (startx === stopx) {\n lineStarty = bounds.getVerticalPos() + totalOffset;\n if (conf.rightAngles) {\n line = g\n .append('path')\n .attr(\n 'd',\n `M ${startx},${lineStarty} H ${startx +\n Math.max(conf.width / 2, textWidth / 2)} V ${lineStarty + 25} H ${startx}`\n );\n } else {\n totalOffset += conf.boxMargin;\n\n lineStarty = bounds.getVerticalPos() + totalOffset;\n line = g\n .append('path')\n .attr(\n 'd',\n 'M ' +\n startx +\n ',' +\n lineStarty +\n ' C ' +\n (startx + 60) +\n ',' +\n (lineStarty - 10) +\n ' ' +\n (startx + 60) +\n ',' +\n (lineStarty + 30) +\n ' ' +\n startx +\n ',' +\n (lineStarty + 20)\n );\n }\n\n totalOffset += 30;\n const dx = Math.max(textWidth / 2, conf.width / 2);\n bounds.insert(\n startx - dx,\n bounds.getVerticalPos() - 10 + totalOffset,\n stopx + dx,\n bounds.getVerticalPos() + 30 + totalOffset\n );\n } else {\n totalOffset += conf.boxMargin;\n lineStarty = bounds.getVerticalPos() + totalOffset;\n line = g.append('line');\n line.attr('x1', startx);\n line.attr('y1', lineStarty);\n line.attr('x2', stopx);\n line.attr('y2', lineStarty);\n bounds.insert(startx, lineStarty - 10, stopx, lineStarty);\n }\n // Make an SVG Container\n // Draw the line\n if (\n type === parser.yy.LINETYPE.DOTTED ||\n type === parser.yy.LINETYPE.DOTTED_CROSS ||\n type === parser.yy.LINETYPE.DOTTED_OPEN\n ) {\n line.style('stroke-dasharray', '3, 3');\n line.attr('class', 'messageLine1');\n } else {\n line.attr('class', 'messageLine0');\n }\n\n let url = '';\n if (conf.arrowMarkerAbsolute) {\n url =\n window.location.protocol +\n '//' +\n window.location.host +\n window.location.pathname +\n window.location.search;\n url = url.replace(/\\(/g, '\\\\(');\n url = url.replace(/\\)/g, '\\\\)');\n }\n\n line.attr('stroke-width', 2);\n line.attr('stroke', 'none'); // handled by theme/css anyway\n line.style('fill', 'none'); // remove any fill colour\n if (type === parser.yy.LINETYPE.SOLID || type === parser.yy.LINETYPE.DOTTED) {\n line.attr('marker-end', 'url(' + url + '#arrowhead)');\n }\n\n if (type === parser.yy.LINETYPE.SOLID_CROSS || type === parser.yy.LINETYPE.DOTTED_CROSS) {\n line.attr('marker-end', 'url(' + url + '#crosshead)');\n }\n\n // add node number\n if (sequenceDb.showSequenceNumbers() || conf.showSequenceNumbers) {\n line.attr('marker-start', 'url(' + url + '#sequencenumber)');\n g.append('text')\n .attr('x', startx)\n .attr('y', lineStarty + 4)\n .attr('font-family', 'sans-serif')\n .attr('font-size', '12px')\n .attr('text-anchor', 'middle')\n .attr('textLength', '16px')\n .attr('class', 'sequenceNumber')\n .text(sequenceIndex);\n }\n bounds.bumpVerticalPos(totalOffset);\n msgModel.height += totalOffset;\n msgModel.stopy = msgModel.starty + msgModel.height;\n bounds.insert(msgModel.fromBounds, msgModel.starty, msgModel.toBounds, msgModel.stopy);\n};\n\nexport const drawActors = function(diagram, actors, actorKeys, verticalPos) {\n // Draw the actors\n let prevWidth = 0;\n let prevMargin = 0;\n\n for (let i = 0; i < actorKeys.length; i++) {\n const actor = actors[actorKeys[i]];\n\n // Add some rendering data to the object\n actor.width = actor.width || conf.width;\n actor.height = Math.max(actor.height || conf.height, conf.height);\n actor.margin = actor.margin || conf.actorMargin;\n\n actor.x = prevWidth + prevMargin;\n actor.y = verticalPos;\n\n // Draw the box with the attached line\n svgDraw.drawActor(diagram, actor, conf);\n bounds.insert(actor.x, verticalPos, actor.x + actor.width, actor.height);\n\n prevWidth += actor.width;\n prevMargin += actor.margin;\n bounds.models.addActor(actor);\n }\n\n // Add a margin between the actor boxes and the first arrow\n bounds.bumpVerticalPos(conf.height);\n};\n\nexport const setConf = function(cnf) {\n assignWithDepth(conf, cnf);\n\n if (cnf.fontFamily) {\n conf.actorFontFamily = conf.noteFontFamily = conf.messageFontFamily = cnf.fontFamily;\n }\n if (cnf.fontSize) {\n conf.actorFontSize = conf.noteFontSize = conf.messageFontSize = cnf.fontSize;\n }\n if (cnf.fontWeight) {\n conf.actorFontWeight = conf.noteFontWeight = conf.messageFontWeight = cnf.fontWeight;\n }\n};\n\nconst actorActivations = function(actor) {\n return bounds.activations.filter(function(activation) {\n return activation.actor === actor;\n });\n};\n\nconst activationBounds = function(actor, actors) {\n // handle multiple stacked activations for same actor\n const actorObj = actors[actor];\n const activations = actorActivations(actor);\n\n const left = activations.reduce(function(acc, activation) {\n return Math.min(acc, activation.startx);\n }, actorObj.x + actorObj.width / 2);\n const right = activations.reduce(function(acc, activation) {\n return Math.max(acc, activation.stopx);\n }, actorObj.x + actorObj.width / 2);\n return [left, right];\n};\n\nfunction adjustLoopHeightForWrap(loopWidths, msg, preMargin, postMargin, addLoopFn) {\n bounds.bumpVerticalPos(preMargin);\n let heightAdjust = postMargin;\n if (msg.id && msg.message && loopWidths[msg.id]) {\n let loopWidth = loopWidths[msg.id].width;\n let textConf = conf.messageFont();\n msg.message = utils.wrapLabel(`[${msg.message}]`, loopWidth - 2 * conf.wrapPadding, textConf);\n msg.width = loopWidth;\n msg.wrap = true;\n\n // const lines = common.splitBreaks(msg.message).length;\n const textDims = utils.calculateTextDimensions(msg.message, textConf);\n const totalOffset = Math.max(textDims.height, conf.labelBoxHeight);\n heightAdjust = postMargin + totalOffset;\n logger.debug(`${totalOffset} - ${msg.message}`);\n }\n addLoopFn(msg);\n bounds.bumpVerticalPos(heightAdjust);\n}\n\n/**\n * Draws a sequenceDiagram in the tag with id: id based on the graph definition in text.\n * @param text\n * @param id\n */\nexport const draw = function(text, id) {\n parser.yy.clear();\n parser.yy.setWrap(conf.wrap);\n parser.parse(text + '\\n');\n bounds.init();\n logger.debug(`C:${JSON.stringify(conf, null, 2)}`);\n\n const diagram = select(`[id=\"${id}\"]`);\n\n // Fetch data from the parsing\n const actors = parser.yy.getActors();\n const actorKeys = parser.yy.getActorKeys();\n const messages = parser.yy.getMessages();\n const title = parser.yy.getTitle();\n\n const maxMessageWidthPerActor = getMaxMessageWidthPerActor(actors, messages);\n conf.height = calculateActorMargins(actors, maxMessageWidthPerActor);\n\n drawActors(diagram, actors, actorKeys, 0);\n const loopWidths = calculateLoopBounds(messages, actors, maxMessageWidthPerActor);\n\n // The arrow head definition is attached to the svg once\n svgDraw.insertArrowHead(diagram);\n svgDraw.insertArrowCrossHead(diagram);\n svgDraw.insertSequenceNumber(diagram);\n\n function activeEnd(msg, verticalPos) {\n const activationData = bounds.endActivation(msg);\n if (activationData.starty + 18 > verticalPos) {\n activationData.starty = verticalPos - 6;\n verticalPos += 12;\n }\n svgDraw.drawActivation(\n diagram,\n activationData,\n verticalPos,\n conf,\n actorActivations(msg.from.actor).length\n );\n\n bounds.insert(activationData.startx, verticalPos - 10, activationData.stopx, verticalPos);\n }\n\n // Draw the messages/signals\n let sequenceIndex = 1;\n messages.forEach(function(msg) {\n let loopModel, noteModel, msgModel;\n\n switch (msg.type) {\n case parser.yy.LINETYPE.NOTE:\n noteModel = msg.noteModel;\n drawNote(diagram, noteModel);\n break;\n case parser.yy.LINETYPE.ACTIVE_START:\n bounds.newActivation(msg, diagram, actors);\n break;\n case parser.yy.LINETYPE.ACTIVE_END:\n activeEnd(msg, bounds.getVerticalPos());\n break;\n case parser.yy.LINETYPE.LOOP_START:\n adjustLoopHeightForWrap(\n loopWidths,\n msg,\n conf.boxMargin,\n conf.boxMargin + conf.boxTextMargin,\n message => bounds.newLoop(message)\n );\n break;\n case parser.yy.LINETYPE.LOOP_END:\n loopModel = bounds.endLoop();\n svgDraw.drawLoop(diagram, loopModel, 'loop', conf);\n bounds.bumpVerticalPos(loopModel.stopy - bounds.getVerticalPos());\n bounds.models.addLoop(loopModel);\n break;\n case parser.yy.LINETYPE.RECT_START:\n adjustLoopHeightForWrap(loopWidths, msg, conf.boxMargin, conf.boxMargin, message =>\n bounds.newLoop(undefined, message.message)\n );\n break;\n case parser.yy.LINETYPE.RECT_END:\n loopModel = bounds.endLoop();\n svgDraw.drawBackgroundRect(diagram, loopModel);\n bounds.models.addLoop(loopModel);\n bounds.bumpVerticalPos(loopModel.stopy - bounds.getVerticalPos());\n break;\n case parser.yy.LINETYPE.OPT_START:\n adjustLoopHeightForWrap(\n loopWidths,\n msg,\n conf.boxMargin,\n conf.boxMargin + conf.boxTextMargin,\n message => bounds.newLoop(message)\n );\n break;\n case parser.yy.LINETYPE.OPT_END:\n loopModel = bounds.endLoop();\n svgDraw.drawLoop(diagram, loopModel, 'opt', conf);\n bounds.bumpVerticalPos(loopModel.stopy - bounds.getVerticalPos());\n bounds.models.addLoop(loopModel);\n break;\n case parser.yy.LINETYPE.ALT_START:\n adjustLoopHeightForWrap(\n loopWidths,\n msg,\n conf.boxMargin,\n conf.boxMargin + conf.boxTextMargin,\n message => bounds.newLoop(message)\n );\n break;\n case parser.yy.LINETYPE.ALT_ELSE:\n adjustLoopHeightForWrap(\n loopWidths,\n msg,\n conf.boxMargin + conf.boxTextMargin,\n conf.boxMargin,\n message => bounds.addSectionToLoop(message)\n );\n break;\n case parser.yy.LINETYPE.ALT_END:\n loopModel = bounds.endLoop();\n svgDraw.drawLoop(diagram, loopModel, 'alt', conf);\n bounds.bumpVerticalPos(loopModel.stopy - bounds.getVerticalPos());\n bounds.models.addLoop(loopModel);\n break;\n case parser.yy.LINETYPE.PAR_START:\n adjustLoopHeightForWrap(\n loopWidths,\n msg,\n conf.boxMargin,\n conf.boxMargin + conf.boxTextMargin,\n message => bounds.newLoop(message)\n );\n break;\n case parser.yy.LINETYPE.PAR_AND:\n adjustLoopHeightForWrap(\n loopWidths,\n msg,\n conf.boxMargin + conf.boxTextMargin,\n conf.boxMargin,\n message => bounds.addSectionToLoop(message)\n );\n break;\n case parser.yy.LINETYPE.PAR_END:\n loopModel = bounds.endLoop();\n svgDraw.drawLoop(diagram, loopModel, 'par', conf);\n bounds.bumpVerticalPos(loopModel.stopy - bounds.getVerticalPos());\n bounds.models.addLoop(loopModel);\n break;\n default:\n try {\n // lastMsg = msg\n msgModel = msg.msgModel;\n msgModel.starty = bounds.getVerticalPos();\n msgModel.sequenceIndex = sequenceIndex;\n drawMessage(diagram, msgModel);\n bounds.models.addMessage(msgModel);\n } catch (e) {\n logger.error('error while drawing message', e);\n }\n }\n // Increment sequence counter if msg.type is a line (and not another event like activation or note, etc)\n if (\n [\n parser.yy.LINETYPE.SOLID_OPEN,\n parser.yy.LINETYPE.DOTTED_OPEN,\n parser.yy.LINETYPE.SOLID,\n parser.yy.LINETYPE.DOTTED,\n parser.yy.LINETYPE.SOLID_CROSS,\n parser.yy.LINETYPE.DOTTED_CROSS\n ].includes(msg.type)\n ) {\n sequenceIndex++;\n }\n });\n\n if (conf.mirrorActors) {\n // Draw actors below diagram\n bounds.bumpVerticalPos(conf.boxMargin * 2);\n drawActors(diagram, actors, actorKeys, bounds.getVerticalPos());\n }\n\n const { bounds: box } = bounds.getBounds();\n\n // Adjust line height of actor lines now that the height of the diagram is known\n logger.debug('For line height fix Querying: #' + id + ' .actor-line');\n const actorLines = selectAll('#' + id + ' .actor-line');\n actorLines.attr('y2', box.stopy);\n\n let height = box.stopy - box.starty + 2 * conf.diagramMarginY;\n if (conf.mirrorActors) {\n height = height - conf.boxMargin + conf.bottomMarginAdj;\n }\n\n const width = box.stopx - box.startx + 2 * conf.diagramMarginX;\n\n if (title) {\n diagram\n .append('text')\n .text(title)\n .attr('x', (box.stopx - box.startx) / 2 - 2 * conf.diagramMarginX)\n .attr('y', -25);\n }\n\n if (conf.useMaxWidth) {\n diagram.attr('height', '100%');\n diagram.attr('width', '100%');\n diagram.attr('style', 'max-width:' + width + 'px;');\n // diagram.attr('style', 'max-width:100%;');\n } else {\n diagram.attr('height', height);\n diagram.attr('width', width);\n }\n const extraVertForTitle = title ? 40 : 0;\n diagram.attr(\n 'viewBox',\n box.startx -\n conf.diagramMarginX +\n ' -' +\n (conf.diagramMarginY + extraVertForTitle) +\n ' ' +\n width +\n ' ' +\n (height + extraVertForTitle)\n );\n logger.debug(`models:`, bounds.models);\n};\n\n/**\n * Retrieves the max message width of each actor, supports signals (messages, loops)\n * and notes.\n *\n * It will enumerate each given message, and will determine its text width, in relation\n * to the actor it originates from, and destined to.\n *\n * @param actors - The actors map\n * @param messages - A list of message objects to iterate\n */\nconst getMaxMessageWidthPerActor = function(actors, messages) {\n const maxMessageWidthPerActor = {};\n\n messages.forEach(function(msg) {\n if (actors[msg.to] && actors[msg.from]) {\n const actor = actors[msg.to];\n\n // If this is the first actor, and the message is left of it, no need to calculate the margin\n if (msg.placement === parser.yy.PLACEMENT.LEFTOF && !actor.prevActor) {\n return;\n }\n\n // If this is the last actor, and the message is right of it, no need to calculate the margin\n if (msg.placement === parser.yy.PLACEMENT.RIGHTOF && !actor.nextActor) {\n return;\n }\n\n const isNote = msg.placement !== undefined;\n const isMessage = !isNote;\n\n const textFont = isNote ? conf.noteFont() : conf.messageFont();\n let wrappedMessage = msg.wrap\n ? utils.wrapLabel(msg.message, conf.width - 2 * conf.wrapPadding, textFont)\n : msg.message;\n const messageDimensions = utils.calculateTextDimensions(wrappedMessage, textFont);\n const messageWidth = messageDimensions.width + 2 * conf.wrapPadding;\n\n /*\n * The following scenarios should be supported:\n *\n * - There's a message (non-note) between fromActor and toActor\n * - If fromActor is on the right and toActor is on the left, we should\n * define the toActor's margin\n * - If fromActor is on the left and toActor is on the right, we should\n * define the fromActor's margin\n * - There's a note, in which case fromActor == toActor\n * - If the note is to the left of the actor, we should define the previous actor\n * margin\n * - If the note is on the actor, we should define both the previous and next actor\n * margins, each being the half of the note size\n * - If the note is on the right of the actor, we should define the current actor\n * margin\n */\n if (isMessage && msg.from === actor.nextActor) {\n maxMessageWidthPerActor[msg.to] = Math.max(\n maxMessageWidthPerActor[msg.to] || 0,\n messageWidth\n );\n } else if (isMessage && msg.from === actor.prevActor) {\n maxMessageWidthPerActor[msg.from] = Math.max(\n maxMessageWidthPerActor[msg.from] || 0,\n messageWidth\n );\n } else if (isMessage && msg.from === msg.to) {\n maxMessageWidthPerActor[msg.from] = Math.max(\n maxMessageWidthPerActor[msg.from] || 0,\n messageWidth / 2\n );\n\n maxMessageWidthPerActor[msg.to] = Math.max(\n maxMessageWidthPerActor[msg.to] || 0,\n messageWidth / 2\n );\n } else if (msg.placement === parser.yy.PLACEMENT.RIGHTOF) {\n maxMessageWidthPerActor[msg.from] = Math.max(\n maxMessageWidthPerActor[msg.from] || 0,\n messageWidth\n );\n } else if (msg.placement === parser.yy.PLACEMENT.LEFTOF) {\n maxMessageWidthPerActor[actor.prevActor] = Math.max(\n maxMessageWidthPerActor[actor.prevActor] || 0,\n messageWidth\n );\n } else if (msg.placement === parser.yy.PLACEMENT.OVER) {\n if (actor.prevActor) {\n maxMessageWidthPerActor[actor.prevActor] = Math.max(\n maxMessageWidthPerActor[actor.prevActor] || 0,\n messageWidth / 2\n );\n }\n\n if (actor.nextActor) {\n maxMessageWidthPerActor[msg.from] = Math.max(\n maxMessageWidthPerActor[msg.from] || 0,\n messageWidth / 2\n );\n }\n }\n }\n });\n\n logger.debug('maxMessageWidthPerActor:', maxMessageWidthPerActor);\n return maxMessageWidthPerActor;\n};\n\n/**\n * This will calculate the optimal margin for each given actor, for a given\n * actor->messageWidth map.\n *\n * An actor's margin is determined by the width of the actor, the width of the\n * largest message that originates from it, and the configured conf.actorMargin.\n *\n * @param actors - The actors map to calculate margins for\n * @param actorToMessageWidth - A map of actor key -> max message width it holds\n */\nconst calculateActorMargins = function(actors, actorToMessageWidth) {\n let maxHeight = 0;\n Object.keys(actors).forEach(prop => {\n const actor = actors[prop];\n if (actor.wrap) {\n actor.description = utils.wrapLabel(\n actor.description,\n conf.width - 2 * conf.wrapPadding,\n conf.actorFont()\n );\n }\n const actDims = utils.calculateTextDimensions(actor.description, conf.actorFont());\n actor.width = actor.wrap\n ? conf.width\n : Math.max(conf.width, actDims.width + 2 * conf.wrapPadding);\n\n actor.height = actor.wrap ? Math.max(actDims.height, conf.height) : conf.height;\n maxHeight = Math.max(maxHeight, actor.height);\n });\n\n for (let actorKey in actorToMessageWidth) {\n const actor = actors[actorKey];\n\n if (!actor) {\n continue;\n }\n\n const nextActor = actors[actor.nextActor];\n\n // No need to space out an actor that doesn't have a next link\n if (!nextActor) {\n continue;\n }\n\n const messageWidth = actorToMessageWidth[actorKey];\n const actorWidth = messageWidth + conf.actorMargin - actor.width / 2 - nextActor.width / 2;\n\n actor.margin = Math.max(actorWidth, conf.actorMargin);\n }\n\n return Math.max(maxHeight, conf.height);\n};\n\nconst buildNoteModel = function(msg, actors) {\n let startx = actors[msg.from].x;\n let stopx = actors[msg.to].x;\n let shouldWrap = msg.wrap && msg.message;\n\n let textDimensions = utils.calculateTextDimensions(\n shouldWrap ? utils.wrapLabel(msg.message, conf.width, conf.noteFont()) : msg.message,\n conf.noteFont()\n );\n let noteModel = {\n width: shouldWrap\n ? conf.width\n : Math.max(conf.width, textDimensions.width + 2 * conf.noteMargin),\n height: 0,\n startx: actors[msg.from].x,\n stopx: 0,\n starty: 0,\n stopy: 0,\n message: msg.message\n };\n if (msg.placement === parser.yy.PLACEMENT.RIGHTOF) {\n noteModel.width = shouldWrap\n ? Math.max(conf.width, textDimensions.width)\n : Math.max(\n actors[msg.from].width / 2 + actors[msg.to].width / 2,\n textDimensions.width + 2 * conf.noteMargin\n );\n noteModel.startx = startx + (actors[msg.from].width + conf.actorMargin) / 2;\n } else if (msg.placement === parser.yy.PLACEMENT.LEFTOF) {\n noteModel.width = shouldWrap\n ? Math.max(conf.width, textDimensions.width + 2 * conf.noteMargin)\n : Math.max(\n actors[msg.from].width / 2 + actors[msg.to].width / 2,\n textDimensions.width + 2 * conf.noteMargin\n );\n noteModel.startx = startx - noteModel.width + (actors[msg.from].width - conf.actorMargin) / 2;\n } else if (msg.to === msg.from) {\n textDimensions = utils.calculateTextDimensions(\n shouldWrap\n ? utils.wrapLabel(\n msg.message,\n Math.max(conf.width, actors[msg.from].width),\n conf.noteFont()\n )\n : msg.message,\n conf.noteFont()\n );\n noteModel.width = shouldWrap\n ? Math.max(conf.width, actors[msg.from].width)\n : Math.max(actors[msg.from].width, conf.width, textDimensions.width + 2 * conf.noteMargin);\n noteModel.startx = startx + (actors[msg.from].width - noteModel.width) / 2;\n } else {\n noteModel.width =\n Math.abs(startx + actors[msg.from].width / 2 - (stopx + actors[msg.to].width / 2)) +\n conf.actorMargin;\n noteModel.startx =\n startx < stopx\n ? startx + actors[msg.from].width / 2 - conf.actorMargin / 2\n : stopx + actors[msg.to].width / 2 - conf.actorMargin / 2;\n }\n if (shouldWrap) {\n noteModel.message = utils.wrapLabel(\n msg.message,\n noteModel.width - 2 * conf.wrapPadding,\n conf.noteFont()\n );\n }\n logger.debug(\n `NM:[${noteModel.startx},${noteModel.stopx},${noteModel.starty},${noteModel.stopy}:${noteModel.width},${noteModel.height}=${msg.message}]`\n );\n return noteModel;\n};\n\nconst buildMessageModel = function(msg, actors) {\n let process = false;\n if (\n [\n parser.yy.LINETYPE.SOLID_OPEN,\n parser.yy.LINETYPE.DOTTED_OPEN,\n parser.yy.LINETYPE.SOLID,\n parser.yy.LINETYPE.DOTTED,\n parser.yy.LINETYPE.SOLID_CROSS,\n parser.yy.LINETYPE.DOTTED_CROSS\n ].includes(msg.type)\n ) {\n process = true;\n }\n if (!process) {\n return {};\n }\n const fromBounds = activationBounds(msg.from, actors);\n const toBounds = activationBounds(msg.to, actors);\n const fromIdx = fromBounds[0] <= toBounds[0] ? 1 : 0;\n const toIdx = fromBounds[0] < toBounds[0] ? 0 : 1;\n const allBounds = fromBounds.concat(toBounds);\n const boundedWidth = Math.abs(toBounds[toIdx] - fromBounds[fromIdx]);\n const msgDims = utils.calculateTextDimensions(msg.message, conf.messageFont());\n if (msg.wrap && msg.message) {\n msg.message = utils.wrapLabel(\n msg.message,\n Math.max(boundedWidth + 2 * conf.wrapPadding, conf.width),\n conf.messageFont()\n );\n }\n return {\n width: Math.max(\n msg.wrap ? 0 : msgDims.width + 2 * conf.wrapPadding,\n boundedWidth + 2 * conf.wrapPadding,\n conf.width\n ),\n height: 0,\n startx: fromBounds[fromIdx],\n stopx: toBounds[toIdx],\n starty: 0,\n stopy: 0,\n message: msg.message,\n type: msg.type,\n wrap: msg.wrap,\n fromBounds: Math.min.apply(null, allBounds),\n toBounds: Math.max.apply(null, allBounds)\n };\n};\n\nconst calculateLoopBounds = function(messages, actors) {\n const loops = {};\n const stack = [];\n let current, noteModel, msgModel;\n\n messages.forEach(function(msg) {\n msg.id = utils.random({ length: 10 });\n switch (msg.type) {\n case parser.yy.LINETYPE.LOOP_START:\n case parser.yy.LINETYPE.ALT_START:\n case parser.yy.LINETYPE.OPT_START:\n case parser.yy.LINETYPE.PAR_START:\n stack.push({\n id: msg.id,\n msg: msg.message,\n from: Number.MAX_SAFE_INTEGER,\n to: Number.MIN_SAFE_INTEGER,\n width: 0\n });\n break;\n case parser.yy.LINETYPE.ALT_ELSE:\n case parser.yy.LINETYPE.PAR_AND:\n if (msg.message) {\n current = stack.pop();\n loops[current.id] = current;\n loops[msg.id] = current;\n stack.push(current);\n }\n break;\n case parser.yy.LINETYPE.LOOP_END:\n case parser.yy.LINETYPE.ALT_END:\n case parser.yy.LINETYPE.OPT_END:\n case parser.yy.LINETYPE.PAR_END:\n current = stack.pop();\n loops[current.id] = current;\n break;\n case parser.yy.LINETYPE.ACTIVE_START:\n {\n const actorRect = actors[msg.from ? msg.from.actor : msg.to.actor];\n const stackedSize = actorActivations(msg.from ? msg.from.actor : msg.to.actor).length;\n const x =\n actorRect.x + actorRect.width / 2 + ((stackedSize - 1) * conf.activationWidth) / 2;\n const toAdd = {\n startx: x,\n stopx: x + conf.activationWidth,\n actor: msg.from.actor,\n enabled: true\n };\n bounds.activations.push(toAdd);\n }\n break;\n case parser.yy.LINETYPE.ACTIVE_END:\n {\n const lastActorActivationIdx = bounds.activations\n .map(a => a.actor)\n .lastIndexOf(msg.from.actor);\n delete bounds.activations.splice(lastActorActivationIdx, 1)[0];\n }\n break;\n }\n const isNote = msg.placement !== undefined;\n if (isNote) {\n noteModel = buildNoteModel(msg, actors);\n msg.noteModel = noteModel;\n stack.forEach(stk => {\n current = stk;\n current.from = Math.min(current.from, noteModel.startx);\n current.to = Math.max(current.to, noteModel.startx + noteModel.width);\n current.width =\n Math.max(current.width, Math.abs(current.from - current.to)) - conf.labelBoxWidth;\n });\n } else {\n msgModel = buildMessageModel(msg, actors);\n msg.msgModel = msgModel;\n if (msgModel.startx && msgModel.stopx && stack.length > 0) {\n stack.forEach(stk => {\n current = stk;\n if (msgModel.startx === msgModel.stopx) {\n let from = actors[msg.from];\n let to = actors[msg.to];\n current.from = Math.min(\n from.x - msgModel.width / 2,\n from.x - from.width / 2,\n current.from\n );\n current.to = Math.max(to.x + msgModel.width / 2, to.x + from.width / 2, current.to);\n current.width =\n Math.max(current.width, Math.abs(current.to - current.from)) - conf.labelBoxWidth;\n } else {\n current.from = Math.min(msgModel.startx, current.from);\n current.to = Math.max(msgModel.stopx, current.to);\n current.width = Math.max(current.width, msgModel.width) - conf.labelBoxWidth;\n }\n });\n }\n }\n });\n bounds.activations = [];\n logger.debug('Loop type widths:', loops);\n return loops;\n};\n\nexport default {\n bounds,\n drawActors,\n setConf,\n draw\n};\n","const getStyles = options =>\n `.actor {\n stroke: ${options.actorBorder};\n fill: ${options.actorBkg};\n }\n\n text.actor > tspan {\n fill: ${options.actorTextColor};\n stroke: none;\n }\n\n .actor-line {\n stroke: ${options.actorLineColor};\n }\n\n .messageLine0 {\n stroke-width: 1.5;\n stroke-dasharray: none;\n stroke: ${options.signalColor};\n }\n\n .messageLine1 {\n stroke-width: 1.5;\n stroke-dasharray: 2, 2;\n stroke: ${options.signalColor};\n }\n\n #arrowhead path {\n fill: ${options.signalColor};\n stroke: ${options.signalColor};\n }\n\n .sequenceNumber {\n fill: ${options.sequenceNumberColor};\n }\n\n #sequencenumber {\n fill: ${options.signalColor};\n }\n\n #crosshead path {\n fill: ${options.signalColor};\n stroke: ${options.signalColor};\n }\n\n .messageText {\n fill: ${options.signalTextColor};\n stroke: ${options.signalTextColor};\n }\n\n .labelBox {\n stroke: ${options.labelBoxBorderColor};\n fill: ${options.labelBoxBkgColor};\n }\n\n .labelText, .labelText > tspan {\n fill: ${options.labelTextColor};\n stroke: none;\n }\n\n .loopText, .loopText > tspan {\n fill: ${options.loopTextColor};\n stroke: none;\n }\n\n .loopLine {\n stroke-width: 2px;\n stroke-dasharray: 2, 2;\n stroke: ${options.labelBoxBorderColor};\n fill: ${options.labelBoxBorderColor};\n }\n\n .note {\n //stroke: #decc93;\n stroke: ${options.noteBorderColor};\n fill: ${options.noteBkgColor};\n }\n\n .noteText, .noteText > tspan {\n fill: ${options.noteTextColor};\n stroke: none;\n }\n\n .activation0 {\n fill: ${options.activationBkgColor};\n stroke: ${options.activationBorderColor};\n }\n\n .activation1 {\n fill: ${options.activationBkgColor};\n stroke: ${options.activationBorderColor};\n }\n\n .activation2 {\n fill: ${options.activationBkgColor};\n stroke: ${options.activationBorderColor};\n }\n`;\n\nexport default getStyles;\n","import common from '../common/common';\n\nexport const drawRect = function(elem, rectData) {\n const rectElem = elem.append('rect');\n rectElem.attr('x', rectData.x);\n rectElem.attr('y', rectData.y);\n rectElem.attr('fill', rectData.fill);\n rectElem.attr('stroke', rectData.stroke);\n rectElem.attr('width', rectData.width);\n rectElem.attr('height', rectData.height);\n rectElem.attr('rx', rectData.rx);\n rectElem.attr('ry', rectData.ry);\n\n if (typeof rectData.class !== 'undefined') {\n rectElem.attr('class', rectData.class);\n }\n\n return rectElem;\n};\n\nexport const drawText = function(elem, textData) {\n let prevTextHeight = 0,\n textHeight = 0;\n const lines = textData.wrap\n ? textData.text.split(common.lineBreakRegex)\n : [textData.text.replace(common.lineBreakRegex, ' ')];\n\n let textElems = [];\n let dy = 0;\n let yfunc = () => textData.y;\n if (\n typeof textData.valign !== 'undefined' &&\n typeof textData.textMargin !== 'undefined' &&\n textData.textMargin > 0\n ) {\n switch (textData.valign) {\n case 'top':\n case 'start':\n yfunc = () => Math.round(textData.y + textData.textMargin);\n break;\n case 'middle':\n case 'center':\n yfunc = () =>\n Math.round(textData.y + (prevTextHeight + textHeight + textData.textMargin) / 2);\n break;\n case 'bottom':\n case 'end':\n yfunc = () =>\n Math.round(\n textData.y +\n (prevTextHeight + textHeight + 2 * textData.textMargin) -\n textData.textMargin\n );\n break;\n }\n }\n if (\n typeof textData.anchor !== 'undefined' &&\n typeof textData.textMargin !== 'undefined' &&\n typeof textData.width !== 'undefined'\n ) {\n switch (textData.anchor) {\n case 'left':\n case 'start':\n textData.x = Math.round(textData.x + textData.textMargin);\n textData.anchor = 'start';\n textData.dominantBaseline = 'text-after-edge';\n textData.alignmentBaseline = 'middle';\n break;\n case 'middle':\n case 'center':\n textData.x = Math.round(textData.x + textData.width / 2);\n textData.anchor = 'middle';\n textData.dominantBaseline = 'middle';\n textData.alignmentBaseline = 'middle';\n break;\n case 'right':\n case 'end':\n textData.x = Math.round(textData.x + textData.width - textData.textMargin);\n textData.anchor = 'end';\n textData.dominantBaseline = 'text-before-edge';\n textData.alignmentBaseline = 'middle';\n break;\n }\n }\n for (let i = 0; i < lines.length; i++) {\n let line = lines[i];\n if (\n typeof textData.textMargin !== 'undefined' &&\n textData.textMargin === 0 &&\n typeof textData.fontSize !== 'undefined'\n ) {\n dy = i * textData.fontSize;\n }\n\n const textElem = elem.append('text');\n textElem.attr('x', textData.x);\n textElem.attr('y', yfunc());\n if (typeof textData.anchor !== 'undefined') {\n textElem\n .attr('text-anchor', textData.anchor)\n .attr('dominant-baseline', textData.dominantBaseline)\n .attr('alignment-baseline', textData.alignmentBaseline);\n }\n if (typeof textData.fontFamily !== 'undefined') {\n textElem.style('font-family', textData.fontFamily);\n }\n if (typeof textData.fontSize !== 'undefined') {\n textElem.style('font-size', textData.fontSize);\n }\n if (typeof textData.fontWeight !== 'undefined') {\n textElem.style('font-weight', textData.fontWeight);\n }\n if (typeof textData.fill !== 'undefined') {\n textElem.attr('fill', textData.fill);\n }\n if (typeof textData.class !== 'undefined') {\n textElem.attr('class', textData.class);\n }\n if (typeof textData.dy !== 'undefined') {\n textElem.attr('dy', textData.dy);\n } else if (dy !== 0) {\n textElem.attr('dy', dy);\n }\n\n if (textData.tspan) {\n const span = textElem.append('tspan');\n span.attr('x', textData.x);\n if (typeof textData.fill !== 'undefined') {\n span.attr('fill', textData.fill);\n }\n span.text(line);\n } else {\n textElem.text(line);\n }\n if (\n typeof textData.valign !== 'undefined' &&\n typeof textData.textMargin !== 'undefined' &&\n textData.textMargin > 0\n ) {\n textHeight += (textElem._groups || textElem)[0][0].getBBox().height;\n prevTextHeight = textHeight;\n }\n\n textElems.push(textElem);\n }\n\n return textElems;\n};\n\nexport const drawLabel = function(elem, txtObject) {\n function genPoints(x, y, width, height, cut) {\n return (\n x +\n ',' +\n y +\n ' ' +\n (x + width) +\n ',' +\n y +\n ' ' +\n (x + width) +\n ',' +\n (y + height - cut) +\n ' ' +\n (x + width - cut * 1.2) +\n ',' +\n (y + height) +\n ' ' +\n x +\n ',' +\n (y + height)\n );\n }\n const polygon = elem.append('polygon');\n polygon.attr('points', genPoints(txtObject.x, txtObject.y, txtObject.width, txtObject.height, 7));\n polygon.attr('class', 'labelBox');\n\n txtObject.y = txtObject.y + txtObject.height / 2;\n\n drawText(elem, txtObject);\n return polygon;\n};\n\nlet actorCnt = -1;\n/**\n * Draws an actor in the diagram with the attached line\n * @param elem - The diagram we'll draw to.\n * @param actor - The actor to draw.\n * @param conf - drawText implementation discriminator object\n */\nexport const drawActor = function(elem, actor, conf) {\n const center = actor.x + actor.width / 2;\n\n const g = elem.append('g');\n if (actor.y === 0) {\n actorCnt++;\n g.append('line')\n .attr('id', 'actor' + actorCnt)\n .attr('x1', center)\n .attr('y1', 5)\n .attr('x2', center)\n .attr('y2', 2000)\n .attr('class', 'actor-line')\n .attr('stroke-width', '0.5px')\n .attr('stroke', '#999');\n }\n\n const rect = getNoteRect();\n rect.x = actor.x;\n rect.y = actor.y;\n rect.fill = '#eaeaea';\n rect.width = actor.width;\n rect.height = actor.height;\n rect.class = 'actor';\n rect.rx = 3;\n rect.ry = 3;\n drawRect(g, rect);\n\n _drawTextCandidateFunc(conf)(\n actor.description,\n g,\n rect.x,\n rect.y,\n rect.width,\n rect.height,\n { class: 'actor' },\n conf\n );\n};\n\nexport const anchorElement = function(elem) {\n return elem.append('g');\n};\n/**\n * Draws an activation in the diagram\n * @param elem - element to append activation rect.\n * @param bounds - activation box bounds.\n * @param verticalPos - precise y cooridnate of bottom activation box edge.\n * @param conf - sequence diagram config object.\n * @param actorActivations - number of activations on the actor.\n */\nexport const drawActivation = function(elem, bounds, verticalPos, conf, actorActivations) {\n const rect = getNoteRect();\n const g = bounds.anchored;\n rect.x = bounds.startx;\n rect.y = bounds.starty;\n rect.class = 'activation' + (actorActivations % 3); // Will evaluate to 0, 1 or 2\n rect.width = bounds.stopx - bounds.startx;\n rect.height = verticalPos - bounds.starty;\n drawRect(g, rect);\n};\n\n/**\n * Draws a loop in the diagram\n * @param elem - elemenet to append the loop to.\n * @param loopModel - loopModel of the given loop.\n * @param labelText - Text within the loop.\n * @param conf - diagrom configuration\n */\nexport const drawLoop = function(elem, loopModel, labelText, conf) {\n const {\n boxMargin,\n boxTextMargin,\n labelBoxHeight,\n labelBoxWidth,\n messageFontFamily: fontFamily,\n messageFontSize: fontSize,\n messageFontWeight: fontWeight\n } = conf;\n const g = elem.append('g');\n const drawLoopLine = function(startx, starty, stopx, stopy) {\n return g\n .append('line')\n .attr('x1', startx)\n .attr('y1', starty)\n .attr('x2', stopx)\n .attr('y2', stopy)\n .attr('class', 'loopLine');\n };\n drawLoopLine(loopModel.startx, loopModel.starty, loopModel.stopx, loopModel.starty);\n drawLoopLine(loopModel.stopx, loopModel.starty, loopModel.stopx, loopModel.stopy);\n drawLoopLine(loopModel.startx, loopModel.stopy, loopModel.stopx, loopModel.stopy);\n drawLoopLine(loopModel.startx, loopModel.starty, loopModel.startx, loopModel.stopy);\n if (typeof loopModel.sections !== 'undefined') {\n loopModel.sections.forEach(function(item) {\n drawLoopLine(loopModel.startx, item.y, loopModel.stopx, item.y).style(\n 'stroke-dasharray',\n '3, 3'\n );\n });\n }\n\n let txt = getTextObj();\n txt.text = labelText;\n txt.x = loopModel.startx;\n txt.y = loopModel.starty;\n txt.fontFamily = fontFamily;\n txt.fontSize = fontSize;\n txt.fontWeight = fontWeight;\n txt.anchor = 'middle';\n txt.valign = 'middle';\n txt.tspan = false;\n txt.width = labelBoxWidth || 50;\n txt.height = labelBoxHeight || 20;\n txt.textMargin = boxTextMargin;\n txt.class = 'labelText';\n\n drawLabel(g, txt);\n txt = getTextObj();\n txt.text = loopModel.title;\n txt.x = loopModel.startx + labelBoxWidth / 2 + (loopModel.stopx - loopModel.startx) / 2;\n txt.y = loopModel.starty + boxMargin + boxTextMargin;\n txt.anchor = 'middle';\n txt.valign = 'middle';\n txt.textMargin = boxTextMargin;\n txt.class = 'loopText';\n txt.fontFamily = fontFamily;\n txt.fontSize = fontSize;\n txt.fontWeight = fontWeight;\n txt.wrap = true;\n\n let textElem = drawText(g, txt);\n\n if (typeof loopModel.sectionTitles !== 'undefined') {\n loopModel.sectionTitles.forEach(function(item, idx) {\n if (item.message) {\n txt.text = item.message;\n txt.x = loopModel.startx + (loopModel.stopx - loopModel.startx) / 2;\n txt.y = loopModel.sections[idx].y + boxMargin + boxTextMargin;\n txt.class = 'loopText';\n txt.anchor = 'middle';\n txt.valign = 'middle';\n txt.tspan = false;\n txt.fontFamily = fontFamily;\n txt.fontSize = fontSize;\n txt.fontWeight = fontWeight;\n txt.wrap = loopModel.wrap;\n textElem = drawText(g, txt);\n let sectionHeight = Math.round(\n textElem\n .map(te => (te._groups || te)[0][0].getBBox().height)\n .reduce((acc, curr) => acc + curr)\n );\n loopModel.sections[idx].height += sectionHeight - (boxMargin + boxTextMargin);\n }\n });\n }\n\n loopModel.height = Math.round(loopModel.stopy - loopModel.starty);\n return g;\n};\n\n/**\n * Draws a background rectangle\n * @param elem diagram (reference for bounds)\n * @param bounds shape of the rectangle\n */\nexport const drawBackgroundRect = function(elem, bounds) {\n const rectElem = drawRect(elem, {\n x: bounds.startx,\n y: bounds.starty,\n width: bounds.stopx - bounds.startx,\n height: bounds.stopy - bounds.starty,\n fill: bounds.fill,\n class: 'rect'\n });\n rectElem.lower();\n};\n/**\n * Setup arrow head and define the marker. The result is appended to the svg.\n */\nexport const insertArrowHead = function(elem) {\n elem\n .append('defs')\n .append('marker')\n .attr('id', 'arrowhead')\n .attr('refX', 5)\n .attr('refY', 2)\n .attr('markerWidth', 6)\n .attr('markerHeight', 4)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 0,0 V 4 L6,2 Z'); // this is actual shape for arrowhead\n};\n/**\n * Setup node number. The result is appended to the svg.\n */\nexport const insertSequenceNumber = function(elem) {\n elem\n .append('defs')\n .append('marker')\n .attr('id', 'sequencenumber')\n .attr('refX', 15)\n .attr('refY', 15)\n .attr('markerWidth', 60)\n .attr('markerHeight', 40)\n .attr('orient', 'auto')\n .append('circle')\n .attr('cx', 15)\n .attr('cy', 15)\n .attr('r', 6);\n // .style(\"fill\", '#f00');\n};\n/**\n * Setup arrow head and define the marker. The result is appended to the svg.\n */\nexport const insertArrowCrossHead = function(elem) {\n const defs = elem.append('defs');\n const marker = defs\n .append('marker')\n .attr('id', 'crosshead')\n .attr('markerWidth', 15)\n .attr('markerHeight', 8)\n .attr('orient', 'auto')\n .attr('refX', 16)\n .attr('refY', 4);\n\n // The arrow\n marker\n .append('path')\n .attr('fill', 'black')\n .attr('stroke', '#000000')\n .style('stroke-dasharray', '0, 0')\n .attr('stroke-width', '1px')\n .attr('d', 'M 9,2 V 6 L16,4 Z');\n\n // The cross\n marker\n .append('path')\n .attr('fill', 'none')\n .attr('stroke', '#000000')\n .style('stroke-dasharray', '0, 0')\n .attr('stroke-width', '1px')\n .attr('d', 'M 0,1 L 6,7 M 6,1 L 0,7');\n // this is actual shape for arrowhead\n};\n\nexport const getTextObj = function() {\n return {\n x: 0,\n y: 0,\n fill: undefined,\n anchor: undefined,\n style: '#666',\n width: undefined,\n height: undefined,\n textMargin: 0,\n rx: 0,\n ry: 0,\n tspan: true,\n valign: undefined\n };\n};\n\nexport const getNoteRect = function() {\n return {\n x: 0,\n y: 0,\n fill: '#EDF2AE',\n stroke: '#666',\n width: 100,\n anchor: 'start',\n height: 100,\n rx: 0,\n ry: 0\n };\n};\n\nconst _drawTextCandidateFunc = (function() {\n function byText(content, g, x, y, width, height, textAttrs) {\n const text = g\n .append('text')\n .attr('x', x + width / 2)\n .attr('y', y + height / 2 + 5)\n .style('text-anchor', 'middle')\n .text(content);\n _setTextAttrs(text, textAttrs);\n }\n\n function byTspan(content, g, x, y, width, height, textAttrs, conf) {\n const { actorFontSize, actorFontFamily, actorFontWeight } = conf;\n\n const lines = content.split(common.lineBreakRegex);\n for (let i = 0; i < lines.length; i++) {\n const dy = i * actorFontSize - (actorFontSize * (lines.length - 1)) / 2;\n const text = g\n .append('text')\n .attr('x', x + width / 2)\n .attr('y', y)\n .style('text-anchor', 'middle')\n .style('font-size', actorFontSize)\n .style('font-weight', actorFontWeight)\n .style('font-family', actorFontFamily);\n text\n .append('tspan')\n .attr('x', x + width / 2)\n .attr('dy', dy)\n .text(lines[i]);\n\n text\n .attr('y', y + height / 2.0)\n .attr('dominant-baseline', 'central')\n .attr('alignment-baseline', 'central');\n\n _setTextAttrs(text, textAttrs);\n }\n }\n\n function byFo(content, g, x, y, width, height, textAttrs, conf) {\n const s = g.append('switch');\n const f = s\n .append('foreignObject')\n .attr('x', x)\n .attr('y', y)\n .attr('width', width)\n .attr('height', height);\n\n const text = f\n .append('div')\n .style('display', 'table')\n .style('height', '100%')\n .style('width', '100%');\n\n text\n .append('div')\n .style('display', 'table-cell')\n .style('text-align', 'center')\n .style('vertical-align', 'middle')\n .text(content);\n\n byTspan(content, s, x, y, width, height, textAttrs, conf);\n _setTextAttrs(text, textAttrs);\n }\n\n function _setTextAttrs(toText, fromTextAttrsDict) {\n for (const key in fromTextAttrsDict) {\n if (fromTextAttrsDict.hasOwnProperty(key)) { // eslint-disable-line\n toText.attr(key, fromTextAttrsDict[key]);\n }\n }\n }\n\n return function(conf) {\n return conf.textPlacement === 'fo' ? byFo : conf.textPlacement === 'old' ? byText : byTspan;\n };\n})();\n\nexport default {\n drawRect,\n drawText,\n drawLabel,\n drawActor,\n anchorElement,\n drawActivation,\n drawLoop,\n drawBackgroundRect,\n insertArrowHead,\n insertSequenceNumber,\n insertArrowCrossHead,\n getTextObj,\n getNoteRect\n};\n","const idCache = {};\n\nexport const set = (key, val) => {\n idCache[key] = val;\n};\n\nexport const get = k => idCache[k];\nexport const keys = () => Object.keys(idCache);\nexport const size = () => keys().length;\n\nexport default {\n get,\n set,\n keys,\n size\n};\n","/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,2],$V1=[1,3],$V2=[1,4],$V3=[2,4],$V4=[1,9],$V5=[1,11],$V6=[1,13],$V7=[1,14],$V8=[1,15],$V9=[1,16],$Va=[1,21],$Vb=[1,17],$Vc=[1,18],$Vd=[1,19],$Ve=[1,20],$Vf=[1,22],$Vg=[1,4,5,13,14,16,18,19,21,22,23,24,25,28],$Vh=[1,4,5,11,12,13,14,16,18,19,21,22,23,24,25,28],$Vi=[4,5,13,14,16,18,19,21,22,23,24,25,28];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"SPACE\":4,\"NL\":5,\"SD\":6,\"document\":7,\"line\":8,\"statement\":9,\"idStatement\":10,\"DESCR\":11,\"-->\":12,\"HIDE_EMPTY\":13,\"scale\":14,\"WIDTH\":15,\"COMPOSIT_STATE\":16,\"STRUCT_START\":17,\"STRUCT_STOP\":18,\"STATE_DESCR\":19,\"AS\":20,\"ID\":21,\"FORK\":22,\"JOIN\":23,\"CONCURRENT\":24,\"note\":25,\"notePosition\":26,\"NOTE_TEXT\":27,\"EDGE_STATE\":28,\"left_of\":29,\"right_of\":30,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",4:\"SPACE\",5:\"NL\",6:\"SD\",11:\"DESCR\",12:\"-->\",13:\"HIDE_EMPTY\",14:\"scale\",15:\"WIDTH\",16:\"COMPOSIT_STATE\",17:\"STRUCT_START\",18:\"STRUCT_STOP\",19:\"STATE_DESCR\",20:\"AS\",21:\"ID\",22:\"FORK\",23:\"JOIN\",24:\"CONCURRENT\",25:\"note\",27:\"NOTE_TEXT\",28:\"EDGE_STATE\",29:\"left_of\",30:\"right_of\"},\nproductions_: [0,[3,2],[3,2],[3,2],[7,0],[7,2],[8,2],[8,1],[8,1],[9,1],[9,2],[9,3],[9,4],[9,1],[9,2],[9,1],[9,4],[9,3],[9,6],[9,1],[9,1],[9,1],[9,4],[9,4],[10,1],[10,1],[26,1],[26,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 3:\n /*console.warn('Root document', $$[$0]);*/ yy.setRootDoc($$[$0]);return $$[$0]; \nbreak;\ncase 4:\n this.$ = [] \nbreak;\ncase 5:\n\n if($$[$0]!='nl'){\n $$[$0-1].push($$[$0]);this.$ = $$[$0-1]\n }\n // console.warn('Got document',$$[$0-1], $$[$0]);\n \nbreak;\ncase 6: case 7:\n this.$ = $$[$0] \nbreak;\ncase 8:\n this.$='nl';\nbreak;\ncase 9:\n /*console.warn('got id and descr', $$[$0]);*/this.$={ stmt: 'state', id: $$[$0], type: 'default', description: ''};\nbreak;\ncase 10:\n /*console.warn('got id and descr', $$[$0-1], $$[$0].trim());*/this.$={ stmt: 'state', id: $$[$0-1], type: 'default', description: yy.trimColon($$[$0])};\nbreak;\ncase 11:\n\n /*console.warn('got id', $$[$0-2]);yy.addRelation($$[$0-2], $$[$0]);*/\n this.$={ stmt: 'relation', state1: { stmt: 'state', id: $$[$0-2], type: 'default', description: '' }, state2:{ stmt: 'state', id: $$[$0] ,type: 'default', description: ''}};\n \nbreak;\ncase 12:\n\n /*yy.addRelation($$[$0-3], $$[$0-1], $$[$0].substr(1).trim());*/\n this.$={ stmt: 'relation', state1: { stmt: 'state', id: $$[$0-3], type: 'default', description: '' }, state2:{ stmt: 'state', id: $$[$0-1] ,type: 'default', description: ''}, description: $$[$0].substr(1).trim()};\n \nbreak;\ncase 16:\n\n\n /* console.warn('Adding document for state without id ', $$[$0-3]);*/\n this.$={ stmt: 'state', id: $$[$0-3], type: 'default', description: '', doc: $$[$0-1] }\n \nbreak;\ncase 17:\n\n var id=$$[$0];\n var description = $$[$0-2].trim();\n if($$[$0].match(':')){\n var parts = $$[$0].split(':');\n id=parts[0];\n description = [description, parts[1]];\n }\n this.$={stmt: 'state', id: id, type: 'default', description: description};\n\n \nbreak;\ncase 18:\n\n //console.warn('Adding document for state with id ', $$[$0-3], $$[$0-2]); yy.addDocument($$[$0-3]);\n this.$={ stmt: 'state', id: $$[$0-3], type: 'default', description: $$[$0-5], doc: $$[$0-1] }\n \nbreak;\ncase 19:\n\n this.$={ stmt: 'state', id: $$[$0], type: 'fork' }\n \nbreak;\ncase 20:\n\n this.$={ stmt: 'state', id: $$[$0], type: 'join' }\n \nbreak;\ncase 21:\n\n this.$={ stmt: 'state', id: yy.getDividerId(), type: 'divider' }\n \nbreak;\ncase 22:\n\n /*console.warn('got NOTE, position: ', $$[$0-2].trim(), 'id = ', $$[$0-1].trim(), 'note: ', $$[$0]);*/\n this.$={ stmt: 'state', id: $$[$0-1].trim(), note:{position: $$[$0-2].trim(), text: $$[$0].trim()}};\n \nbreak;\ncase 24: case 25:\nthis.$=$$[$0];\nbreak;\n}\n},\ntable: [{3:1,4:$V0,5:$V1,6:$V2},{1:[3]},{3:5,4:$V0,5:$V1,6:$V2},{3:6,4:$V0,5:$V1,6:$V2},o([1,4,5,13,14,16,19,21,22,23,24,25,28],$V3,{7:7}),{1:[2,1]},{1:[2,2]},{1:[2,3],4:$V4,5:$V5,8:8,9:10,10:12,13:$V6,14:$V7,16:$V8,19:$V9,21:$Va,22:$Vb,23:$Vc,24:$Vd,25:$Ve,28:$Vf},o($Vg,[2,5]),{9:23,10:12,13:$V6,14:$V7,16:$V8,19:$V9,21:$Va,22:$Vb,23:$Vc,24:$Vd,25:$Ve,28:$Vf},o($Vg,[2,7]),o($Vg,[2,8]),o($Vg,[2,9],{11:[1,24],12:[1,25]}),o($Vg,[2,13]),{15:[1,26]},o($Vg,[2,15],{17:[1,27]}),{20:[1,28]},o($Vg,[2,19]),o($Vg,[2,20]),o($Vg,[2,21]),{26:29,27:[1,30],29:[1,31],30:[1,32]},o($Vh,[2,24]),o($Vh,[2,25]),o($Vg,[2,6]),o($Vg,[2,10]),{10:33,21:$Va,28:$Vf},o($Vg,[2,14]),o($Vi,$V3,{7:34}),{21:[1,35]},{21:[1,36]},{20:[1,37]},{21:[2,26]},{21:[2,27]},o($Vg,[2,11],{11:[1,38]}),{4:$V4,5:$V5,8:8,9:10,10:12,13:$V6,14:$V7,16:$V8,18:[1,39],19:$V9,21:$Va,22:$Vb,23:$Vc,24:$Vd,25:$Ve,28:$Vf},o($Vg,[2,17],{17:[1,40]}),{27:[1,41]},{21:[1,42]},o($Vg,[2,12]),o($Vg,[2,16]),o($Vi,$V3,{7:43}),o($Vg,[2,22]),o($Vg,[2,23]),{4:$V4,5:$V5,8:8,9:10,10:12,13:$V6,14:$V7,16:$V8,18:[1,44],19:$V9,21:$Va,22:$Vb,23:$Vc,24:$Vd,25:$Ve,28:$Vf},o($Vg,[2,18])],\ndefaultActions: {5:[2,1],6:[2,2],31:[2,26],32:[2,27]},\nparseError: function parseError (str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer.lex() || EOF;\n if (typeof token !== 'number') {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {\"case-insensitive\":true},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0:return 5;\nbreak;\ncase 1:/* skip all whitespace */\nbreak;\ncase 2:/* skip same-line whitespace */\nbreak;\ncase 3:/* skip comments */\nbreak;\ncase 4:/* skip comments */\nbreak;\ncase 5: this.pushState('SCALE'); /* console.log('Got scale', yy_.yytext);*/ return 14; \nbreak;\ncase 6:return 15;\nbreak;\ncase 7:this.popState();\nbreak;\ncase 8: this.pushState('STATE'); \nbreak;\ncase 9:this.popState();yy_.yytext=yy_.yytext.slice(0,-8).trim(); /*console.warn('Fork Fork: ',yy_.yytext);*/return 22;\nbreak;\ncase 10:this.popState();yy_.yytext=yy_.yytext.slice(0,-8).trim();/*console.warn('Fork Join: ',yy_.yytext);*/return 23;\nbreak;\ncase 11:this.popState();yy_.yytext=yy_.yytext.slice(0,-8).trim();/*console.warn('Fork Fork: ',yy_.yytext);*/return 22;\nbreak;\ncase 12:this.popState();yy_.yytext=yy_.yytext.slice(0,-8).trim();/*console.warn('Fork Join: ',yy_.yytext);*/return 23;\nbreak;\ncase 13:this.begin(\"STATE_STRING\");\nbreak;\ncase 14:this.popState();this.pushState('STATE_ID');return \"AS\";\nbreak;\ncase 15:this.popState();/* console.log('STATE_ID', yy_.yytext);*/return \"ID\";\nbreak;\ncase 16:this.popState();\nbreak;\ncase 17: /*console.log('Long description:', yy_.yytext);*/return \"STATE_DESCR\";\nbreak;\ncase 18:/*console.log('COMPOSIT_STATE', yy_.yytext);*/return 16;\nbreak;\ncase 19:this.popState();\nbreak;\ncase 20:this.popState();this.pushState('struct'); /*console.log('begin struct', yy_.yytext);*/return 17;\nbreak;\ncase 21: /*console.log('Ending struct');*/ this.popState(); return 18;\nbreak;\ncase 22:/* nothing */\nbreak;\ncase 23: this.begin('NOTE'); return 25; \nbreak;\ncase 24: this.popState();this.pushState('NOTE_ID');return 29;\nbreak;\ncase 25: this.popState();this.pushState('NOTE_ID');return 30;\nbreak;\ncase 26: this.popState();this.pushState('FLOATING_NOTE');\nbreak;\ncase 27:this.popState();this.pushState('FLOATING_NOTE_ID');return \"AS\";\nbreak;\ncase 28:/**/\nbreak;\ncase 29: /*console.log('Floating note text: ', yy_.yytext);*/return \"NOTE_TEXT\";\nbreak;\ncase 30:this.popState();/*console.log('Floating note ID', yy_.yytext);*/return \"ID\";\nbreak;\ncase 31: this.popState();this.pushState('NOTE_TEXT');/*console.log('Got ID for note', yy_.yytext);*/return 21;\nbreak;\ncase 32: this.popState();/*console.log('Got NOTE_TEXT for note',yy_.yytext);*/yy_.yytext = yy_.yytext.substr(2).trim();return 27;\nbreak;\ncase 33: this.popState();/*console.log('Got NOTE_TEXT for note',yy_.yytext);*/yy_.yytext = yy_.yytext.slice(0,-8).trim();return 27;\nbreak;\ncase 34: /*console.log('Got state diagram', yy_.yytext,'#');*/return 6; \nbreak;\ncase 35: /*console.log('Got state diagram', yy_.yytext,'#');*/return 6; \nbreak;\ncase 36: /*console.log('HIDE_EMPTY', yy_.yytext,'#');*/return 13; \nbreak;\ncase 37: /*console.log('EDGE_STATE=',yy_.yytext);*/ return 28;\nbreak;\ncase 38: /*console.log('=>ID=',yy_.yytext);*/ return 21;\nbreak;\ncase 39: yy_.yytext = yy_.yytext.trim(); /*console.log('Descr = ', yy_.yytext);*/ return 11; \nbreak;\ncase 40:return 12;\nbreak;\ncase 41:return 24;\nbreak;\ncase 42:return 5;\nbreak;\ncase 43:return 'INVALID';\nbreak;\n}\n},\nrules: [/^(?:[\\n]+)/i,/^(?:\\s+)/i,/^(?:((?!\\n)\\s)+)/i,/^(?:#[^\\n]*)/i,/^(?:%[^\\n]*)/i,/^(?:scale\\s+)/i,/^(?:\\d+)/i,/^(?:\\s+width\\b)/i,/^(?:state\\s+)/i,/^(?:.*<
');\n text = text.replace(/\\n/g, '
');\n const lines = text.split(common.lineBreakRegex);\n\n let tHeight = 1.25 * getConfig().state.noteMargin;\n for (const line of lines) {\n const txt = line.trim();\n\n if (txt.length > 0) {\n const span = textElem.append('tspan');\n span.text(txt);\n if (tHeight === 0) {\n const textBounds = span.node().getBBox();\n tHeight += textBounds.height;\n }\n // console.warn('textBounds', textBounds);\n textHeight += tHeight;\n span.attr('x', x + getConfig().state.noteMargin);\n span.attr('y', y + textHeight + 1.25 * getConfig().state.noteMargin);\n }\n }\n return { textWidth: textElem.node().getBBox().width, textHeight };\n};\n\n/**\n * Draws a note to the diagram\n * @param text - The text of the given note.\n * @param g - The element the note is attached to.\n */\n\nexport const drawNote = (text, g) => {\n g.attr('class', 'state-note');\n const note = g\n .append('rect')\n .attr('x', 0)\n .attr('y', getConfig().state.padding);\n const rectElem = g.append('g');\n\n const { textWidth, textHeight } = _drawLongText(text, 0, 0, rectElem);\n note.attr('height', textHeight + 2 * getConfig().state.noteMargin);\n note.attr('width', textWidth + getConfig().state.noteMargin * 2);\n\n return note;\n};\n\n/**\n * Starting point for drawing a state. The function finds out the specifics\n * about the state and renders with approprtiate function.\n * @param {*} elem\n * @param {*} stateDef\n */\n\nexport const drawState = function(elem, stateDef) {\n const id = stateDef.id;\n const stateInfo = {\n id: id,\n label: stateDef.id,\n width: 0,\n height: 0\n };\n\n const g = elem\n .append('g')\n .attr('id', id)\n .attr('class', 'stateGroup');\n\n if (stateDef.type === 'start') drawStartState(g);\n if (stateDef.type === 'end') drawEndState(g);\n if (stateDef.type === 'fork' || stateDef.type === 'join') drawForkJoinState(g, stateDef);\n if (stateDef.type === 'note') drawNote(stateDef.note.text, g);\n if (stateDef.type === 'divider') drawDivider(g);\n if (stateDef.type === 'default' && stateDef.descriptions.length === 0)\n drawSimpleState(g, stateDef);\n if (stateDef.type === 'default' && stateDef.descriptions.length > 0) drawDescrState(g, stateDef);\n\n const stateBox = g.node().getBBox();\n stateInfo.width = stateBox.width + 2 * getConfig().state.padding;\n stateInfo.height = stateBox.height + 2 * getConfig().state.padding;\n\n idCache.set(id, stateInfo);\n // stateCnt++;\n return stateInfo;\n};\n\nlet edgeCount = 0;\nexport const drawEdge = function(elem, path, relation) {\n const getRelationType = function(type) {\n switch (type) {\n case stateDb.relationType.AGGREGATION:\n return 'aggregation';\n case stateDb.relationType.EXTENSION:\n return 'extension';\n case stateDb.relationType.COMPOSITION:\n return 'composition';\n case stateDb.relationType.DEPENDENCY:\n return 'dependency';\n }\n };\n\n path.points = path.points.filter(p => !Number.isNaN(p.y));\n\n // The data for our line\n const lineData = path.points;\n\n // This is the accessor function we talked about above\n const lineFunction = line()\n .x(function(d) {\n return d.x;\n })\n .y(function(d) {\n return d.y;\n })\n .curve(curveBasis);\n\n const svgPath = elem\n .append('path')\n .attr('d', lineFunction(lineData))\n .attr('id', 'edge' + edgeCount)\n .attr('class', 'transition');\n let url = '';\n if (getConfig().state.arrowMarkerAbsolute) {\n url =\n window.location.protocol +\n '//' +\n window.location.host +\n window.location.pathname +\n window.location.search;\n url = url.replace(/\\(/g, '\\\\(');\n url = url.replace(/\\)/g, '\\\\)');\n }\n\n svgPath.attr(\n 'marker-end',\n 'url(' + url + '#' + getRelationType(stateDb.relationType.DEPENDENCY) + 'End' + ')'\n );\n\n if (typeof relation.title !== 'undefined') {\n const label = elem.append('g').attr('class', 'stateLabel');\n\n const { x, y } = utils.calcLabelPosition(path.points);\n\n const rows = common.getRows(relation.title);\n\n // console.warn(rows);\n\n let titleHeight = 0;\n const titleRows = [];\n let maxWidth = 0;\n let minX = 0;\n\n for (let i = 0; i <= rows.length; i++) {\n const title = label\n .append('text')\n .attr('text-anchor', 'middle')\n .text(rows[i])\n .attr('x', x)\n .attr('y', y + titleHeight);\n\n const boundstmp = title.node().getBBox();\n maxWidth = Math.max(maxWidth, boundstmp.width);\n minX = Math.min(minX, boundstmp.x);\n\n logger.info(boundstmp.x, x, y + titleHeight);\n\n if (titleHeight === 0) {\n const titleBox = title.node().getBBox();\n titleHeight = titleBox.height;\n logger.info('Title height', titleHeight, y);\n }\n titleRows.push(title);\n }\n\n let boxHeight = titleHeight * rows.length;\n if (rows.length > 1) {\n const heightAdj = (rows.length - 1) * titleHeight * 0.5;\n\n titleRows.forEach((title, i) => title.attr('y', y + i * titleHeight - heightAdj));\n boxHeight = titleHeight * rows.length;\n }\n\n const bounds = label.node().getBBox();\n\n label\n .insert('rect', ':first-child')\n .attr('class', 'box')\n .attr('x', x - maxWidth / 2 - getConfig().state.padding / 2)\n .attr('y', y - boxHeight / 2 - getConfig().state.padding / 2 - 3.5)\n .attr('width', maxWidth + getConfig().state.padding)\n .attr('height', boxHeight + getConfig().state.padding);\n\n logger.info(bounds);\n\n //label.attr('transform', '0 -' + (bounds.y / 2));\n\n // Debug points\n // path.points.forEach(point => {\n // g.append('circle')\n // .style('stroke', 'red')\n // .style('fill', 'red')\n // .attr('r', 1)\n // .attr('cx', point.x)\n // .attr('cy', point.y);\n // });\n // g.append('circle')\n // .style('stroke', 'blue')\n // .style('fill', 'blue')\n // .attr('r', 1)\n // .attr('cx', x)\n // .attr('cy', y);\n }\n\n edgeCount++;\n};\n","import { logger } from '../../logger';\nimport { generateId } from '../../utils';\n\nconst clone = o => JSON.parse(JSON.stringify(o));\n\nlet rootDoc = [];\nconst setRootDoc = o => {\n logger.info('Setting root doc', o);\n // rootDoc = { id: 'root', doc: o };\n rootDoc = o;\n};\n\nconst getRootDoc = () => rootDoc;\n\nconst docTranslator = (parent, node, first) => {\n if (node.stmt === 'relation') {\n docTranslator(parent, node.state1, true);\n docTranslator(parent, node.state2, false);\n } else {\n if (node.stmt === 'state') {\n if (node.id === '[*]') {\n node.id = first ? parent.id + '_start' : parent.id + '_end';\n node.start = first;\n }\n }\n\n if (node.doc) {\n const doc = [];\n // Check for concurrency\n let i = 0;\n let currentDoc = [];\n for (i = 0; i < node.doc.length; i++) {\n if (node.doc[i].type === 'divider') {\n // debugger;\n const newNode = clone(node.doc[i]);\n newNode.doc = clone(currentDoc);\n doc.push(newNode);\n currentDoc = [];\n } else {\n currentDoc.push(node.doc[i]);\n }\n }\n\n // If any divider was encountered\n if (doc.length > 0 && currentDoc.length > 0) {\n const newNode = {\n stmt: 'state',\n id: generateId(),\n type: 'divider',\n doc: clone(currentDoc)\n };\n doc.push(clone(newNode));\n node.doc = doc;\n }\n\n node.doc.forEach(docNode => docTranslator(node, docNode, true));\n }\n }\n};\nconst getRootDocV2 = () => {\n docTranslator({ id: 'root' }, { id: 'root', doc: rootDoc }, true);\n return { id: 'root', doc: rootDoc };\n};\n\nconst extract = _doc => {\n // const res = { states: [], relations: [] };\n let doc;\n if (_doc.doc) {\n doc = _doc.doc;\n } else {\n doc = _doc;\n }\n // let doc = root.doc;\n // if (!doc) {\n // doc = root;\n // }\n logger.info(doc);\n clear();\n\n logger.info('Extract', doc);\n\n doc.forEach(item => {\n if (item.stmt === 'state') {\n addState(item.id, item.type, item.doc, item.description, item.note);\n }\n if (item.stmt === 'relation') {\n addRelation(item.state1.id, item.state2.id, item.description);\n }\n });\n};\n\nconst newDoc = () => {\n return {\n relations: [],\n states: {},\n documents: {}\n };\n};\n\nlet documents = {\n root: newDoc()\n};\n\nlet currentDocument = documents.root;\n\nlet startCnt = 0;\nlet endCnt = 0; // eslint-disable-line\n// let stateCnt = 0;\n\n/**\n * Function called by parser when a node definition has been found.\n * @param id\n * @param text\n * @param type\n * @param style\n */\nexport const addState = function(id, type, doc, descr, note) {\n if (typeof currentDocument.states[id] === 'undefined') {\n currentDocument.states[id] = {\n id: id,\n descriptions: [],\n type,\n doc,\n note\n };\n } else {\n if (!currentDocument.states[id].doc) {\n currentDocument.states[id].doc = doc;\n }\n if (!currentDocument.states[id].type) {\n currentDocument.states[id].type = type;\n }\n }\n if (descr) {\n logger.info('Adding state ', id, descr);\n if (typeof descr === 'string') addDescription(id, descr.trim());\n\n if (typeof descr === 'object') {\n descr.forEach(des => addDescription(id, des.trim()));\n }\n }\n\n if (note) currentDocument.states[id].note = note;\n};\n\nexport const clear = function() {\n documents = {\n root: newDoc()\n };\n currentDocument = documents.root;\n\n currentDocument = documents.root;\n\n startCnt = 0;\n endCnt = 0; // eslint-disable-line\n classes = [];\n};\n\nexport const getState = function(id) {\n return currentDocument.states[id];\n};\n\nexport const getStates = function() {\n return currentDocument.states;\n};\nexport const logDocuments = function() {\n logger.info('Documents = ', documents);\n};\nexport const getRelations = function() {\n return currentDocument.relations;\n};\n\nexport const addRelation = function(_id1, _id2, title) {\n let id1 = _id1;\n let id2 = _id2;\n let type1 = 'default';\n let type2 = 'default';\n if (_id1 === '[*]') {\n startCnt++;\n id1 = 'start' + startCnt;\n type1 = 'start';\n }\n if (_id2 === '[*]') {\n endCnt++;\n id2 = 'end' + startCnt;\n type2 = 'end';\n }\n addState(id1, type1);\n addState(id2, type2);\n currentDocument.relations.push({ id1, id2, title });\n};\n\nconst addDescription = function(id, _descr) {\n const theState = currentDocument.states[id];\n let descr = _descr;\n if (descr[0] === ':') {\n descr = descr.substr(1).trim();\n }\n\n theState.descriptions.push(descr);\n};\n\nexport const cleanupLabel = function(label) {\n if (label.substring(0, 1) === ':') {\n return label.substr(2).trim();\n } else {\n return label.trim();\n }\n};\n\nexport const lineType = {\n LINE: 0,\n DOTTED_LINE: 1\n};\n\nlet dividerCnt = 0;\nconst getDividerId = () => {\n dividerCnt++;\n return 'divider-id-' + dividerCnt;\n};\n\nlet classes = [];\n\nconst getClasses = () => classes;\n\nconst getDirection = () => 'TB';\n\nexport const relationType = {\n AGGREGATION: 0,\n EXTENSION: 1,\n COMPOSITION: 2,\n DEPENDENCY: 3\n};\n\nconst trimColon = str => (str && str[0] === ':' ? str.substr(1).trim() : str.trim());\n\nexport default {\n addState,\n clear,\n getState,\n getStates,\n getRelations,\n getClasses,\n getDirection,\n addRelation,\n getDividerId,\n // addDescription,\n cleanupLabel,\n lineType,\n relationType,\n logDocuments,\n getRootDoc,\n setRootDoc,\n getRootDocV2,\n extract,\n trimColon\n};\n","import graphlib from 'graphlib';\nimport { select } from 'd3';\nimport stateDb from './stateDb';\nimport state from './parser/stateDiagram';\nimport { getConfig } from '../../config';\n\nimport { render } from '../../dagre-wrapper/index.js';\nimport { logger } from '../../logger';\n\nconst conf = {};\nexport const setConf = function(cnf) {\n const keys = Object.keys(cnf);\n for (let i = 0; i < keys.length; i++) {\n conf[keys[i]] = cnf[keys[i]];\n }\n};\n\nlet nodeDb = {};\n\n/**\n * Returns the all the styles from classDef statements in the graph definition.\n * @returns {object} classDef styles\n */\nexport const getClasses = function(text) {\n logger.trace('Extracting classes');\n stateDb.clear();\n const parser = state.parser;\n parser.yy = stateDb;\n\n // Parse the graph definition\n parser.parse(text);\n return stateDb.getClasses();\n};\n\nconst setupNode = (g, parent, node, altFlag) => {\n // Add the node\n if (node.id !== 'root') {\n let shape = 'rect';\n if (node.start === true) {\n shape = 'start';\n }\n if (node.start === false) {\n shape = 'end';\n }\n if (node.type !== 'default') {\n shape = node.type;\n }\n\n if (!nodeDb[node.id]) {\n nodeDb[node.id] = {\n id: node.id,\n shape,\n description: node.id,\n classes: 'statediagram-state'\n };\n }\n\n // Build of the array of description strings accordinging\n if (node.description) {\n if (Array.isArray(nodeDb[node.id].description)) {\n // There already is an array of strings,add to it\n nodeDb[node.id].shape = 'rectWithTitle';\n nodeDb[node.id].description.push(node.description);\n } else {\n if (nodeDb[node.id].description.length > 0) {\n // if there is a description already transformit to an array\n nodeDb[node.id].shape = 'rectWithTitle';\n if (nodeDb[node.id].description === node.id) {\n // If the previous description was the is, remove it\n nodeDb[node.id].description = [node.description];\n } else {\n nodeDb[node.id].description = [nodeDb[node.id].description, node.description];\n }\n } else {\n nodeDb[node.id].shape = 'rect';\n nodeDb[node.id].description = node.description;\n }\n }\n }\n\n // Save data for description and group so that for instance a statement without description overwrites\n // one with description\n\n // group\n if (!nodeDb[node.id].type && node.doc) {\n logger.info('Setting cluser for ', node.id);\n nodeDb[node.id].type = 'group';\n nodeDb[node.id].shape = node.type === 'divider' ? 'divider' : 'roundedWithTitle';\n nodeDb[node.id].classes =\n nodeDb[node.id].classes +\n ' ' +\n (altFlag ? 'statediagram-cluster statediagram-cluster-alt' : 'statediagram-cluster');\n }\n\n const nodeData = {\n labelStyle: '',\n shape: nodeDb[node.id].shape,\n labelText: nodeDb[node.id].description,\n classes: nodeDb[node.id].classes, //classStr,\n style: '', //styles.style,\n id: node.id,\n type: nodeDb[node.id].type,\n padding: 15 //getConfig().flowchart.padding\n };\n\n if (node.note) {\n // Todo: set random id\n const noteData = {\n labelStyle: '',\n shape: 'note',\n labelText: node.note.text,\n classes: 'statediagram-note', //classStr,\n style: '', //styles.style,\n id: node.id + '----note',\n type: nodeDb[node.id].type,\n padding: 15 //getConfig().flowchart.padding\n };\n const groupData = {\n labelStyle: '',\n shape: 'noteGroup',\n labelText: node.note.text,\n classes: nodeDb[node.id].classes, //classStr,\n style: '', //styles.style,\n id: node.id + '----parent',\n type: 'group',\n padding: 0 //getConfig().flowchart.padding\n };\n g.setNode(node.id + '----parent', groupData);\n\n g.setNode(noteData.id, noteData);\n g.setNode(node.id, nodeData);\n\n g.setParent(node.id, node.id + '----parent');\n g.setParent(noteData.id, node.id + '----parent');\n\n let from = node.id;\n let to = noteData.id;\n\n if (node.note.position === 'left of') {\n from = noteData.id;\n to = node.id;\n }\n g.setEdge(from, to, {\n arrowhead: 'none',\n arrowType: '',\n style: 'fill:none',\n labelStyle: '',\n classes: 'transition note-edge',\n arrowheadStyle: 'fill: #333',\n labelpos: 'c',\n labelType: 'text',\n thickness: 'normal'\n });\n } else {\n g.setNode(node.id, nodeData);\n }\n }\n\n if (parent) {\n if (parent.id !== 'root') {\n logger.info('Setting node ', node.id, ' to be child of its parent ', parent.id);\n g.setParent(node.id, parent.id);\n }\n }\n if (node.doc) {\n logger.info('Adding nodes children ');\n setupDoc(g, node, node.doc, !altFlag);\n }\n};\nlet cnt = 0;\nconst setupDoc = (g, parent, doc, altFlag) => {\n logger.trace('items', doc);\n doc.forEach(item => {\n if (item.stmt === 'state' || item.stmt === 'default') {\n setupNode(g, parent, item, altFlag);\n } else if (item.stmt === 'relation') {\n setupNode(g, parent, item.state1, altFlag);\n setupNode(g, parent, item.state2, altFlag);\n const edgeData = {\n id: 'edge' + cnt,\n arrowhead: 'normal',\n arrowTypeEnd: 'arrow_barb',\n style: 'fill:none',\n labelStyle: '',\n label: item.description,\n arrowheadStyle: 'fill: #333',\n labelpos: 'c',\n labelType: 'text',\n thickness: 'normal',\n classes: 'transition'\n };\n let startId = item.state1.id;\n let endId = item.state2.id;\n\n g.setEdge(startId, endId, edgeData, cnt);\n cnt++;\n }\n });\n};\n\n/**\n * Draws a flowchart in the tag with id: id based on the graph definition in text.\n * @param text\n * @param id\n */\nexport const draw = function(text, id) {\n logger.info('Drawing state diagram (v2)', id);\n stateDb.clear();\n nodeDb = {};\n const parser = state.parser;\n parser.yy = stateDb;\n\n // Parse the graph definition\n try {\n parser.parse(text);\n } catch (err) {\n logger.debug('Parsing failed');\n }\n\n // Fetch the default direction, use TD if none was found\n let dir = stateDb.getDirection();\n if (typeof dir === 'undefined') {\n dir = 'LR';\n }\n\n const conf = getConfig().state;\n const nodeSpacing = conf.nodeSpacing || 50;\n const rankSpacing = conf.rankSpacing || 50;\n\n // Create the input mermaid.graph\n const g = new graphlib.Graph({\n multigraph: true,\n compound: true\n })\n .setGraph({\n rankdir: 'TB',\n nodesep: nodeSpacing,\n ranksep: rankSpacing,\n marginx: 8,\n marginy: 8\n })\n .setDefaultEdgeLabel(function() {\n return {};\n });\n\n logger.info(stateDb.getRootDocV2());\n stateDb.extract(stateDb.getRootDocV2());\n logger.info(stateDb.getRootDocV2());\n setupNode(g, undefined, stateDb.getRootDocV2(), true);\n\n // Set up an SVG group so that we can translate the final graph.\n const svg = select(`[id=\"${id}\"]`);\n\n // Run the renderer. This is what draws the final graph.\n const element = select('#' + id + ' g');\n render(element, g, ['barb'], 'statediagram', id);\n\n const padding = 8;\n // const svgBounds = svg.node().getBBox();\n // const width = svgBounds.width + padding * 2;\n // const height = svgBounds.height + padding * 2;\n // logger.debug(\n // `new ViewBox 0 0 ${width} ${height}`,\n // `translate(${padding + g._label.marginx}, ${padding + g._label.marginy})`\n // );\n\n // if (conf.useMaxWidth) {\n // svg.attr('width', '100%');\n // svg.attr('style', `max-width: ${width}px;`);\n // } else {\n // svg.attr('height', height);\n // svg.attr('width', width);\n // }\n\n // svg.attr('viewBox', `0 0 ${width} ${height}`);\n // svg\n // .select('g')\n // .attr('transform', `translate(${padding - g._label.marginx}, ${padding - svgBounds.y})`);\n\n const bounds = svg.node().getBBox();\n\n const width = bounds.width + padding * 2;\n const height = bounds.height + padding * 2;\n\n // diagram.attr('height', '100%');\n // diagram.attr('style', `width: ${bounds.width * 3 + conf.padding * 2};`);\n // diagram.attr('height', height);\n\n // Zoom in a bit\n svg.attr('width', width * 1.75);\n svg.attr('class', 'statediagram');\n // diagram.attr('height', bounds.height * 3 + conf.padding * 2);\n // svg.attr(\n // 'viewBox',\n // `${bounds.x - conf.padding} ${bounds.y - conf.padding} ` + width + ' ' + height\n // );\n\n const svgBounds = svg.node().getBBox();\n\n if (conf.useMaxWidth) {\n svg.attr('width', '100%');\n svg.attr('style', `max-width: ${width}px;`);\n } else {\n svg.attr('height', height);\n svg.attr('width', width);\n }\n\n // Ensure the viewBox includes the whole svgBounds area with extra space for padding\n const vBox = `${svgBounds.x - padding} ${svgBounds.y - padding} ${width} ${height}`;\n logger.debug(`viewBox ${vBox}`);\n svg.attr('viewBox', vBox);\n\n // Add label rects for non html labels\n if (!conf.htmlLabels) {\n const labels = document.querySelectorAll('[id=\"' + id + '\"] .edgeLabel .label');\n for (let k = 0; k < labels.length; k++) {\n const label = labels[k];\n\n // Get dimensions of label\n const dim = label.getBBox();\n\n const rect = document.createElementNS('http://www.w3.org/2000/svg', 'rect');\n rect.setAttribute('rx', 0);\n rect.setAttribute('ry', 0);\n rect.setAttribute('width', dim.width);\n rect.setAttribute('height', dim.height);\n rect.setAttribute('style', 'fill:#e8e8e8;');\n\n label.insertBefore(rect, label.firstChild);\n }\n }\n};\n\nexport default {\n setConf,\n getClasses,\n draw\n};\n","import { select } from 'd3';\nimport dagre from 'dagre';\nimport graphlib from 'graphlib';\nimport { logger } from '../../logger';\nimport stateDb from './stateDb';\nimport common from '../common/common';\nimport { parser } from './parser/stateDiagram';\n// import idCache from './id-cache';\nimport { drawState, addTitleAndBox, drawEdge } from './shapes';\nimport { getConfig } from '../../config';\n\nparser.yy = stateDb;\n\n// TODO Move conf object to main conf in mermaidAPI\nlet conf;\n\nconst transformationLog = {};\n\nexport const setConf = function() {};\n\n// Todo optimize\n\n/**\n * Setup arrow head and define the marker. The result is appended to the svg.\n */\nconst insertMarkers = function(elem) {\n elem\n .append('defs')\n .append('marker')\n .attr('id', 'dependencyEnd')\n .attr('refX', 19)\n .attr('refY', 7)\n .attr('markerWidth', 20)\n .attr('markerHeight', 28)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 19,7 L9,13 L14,7 L9,1 Z');\n};\n\n/**\n * Draws a flowchart in the tag with id: id based on the graph definition in text.\n * @param text\n * @param id\n */\nexport const draw = function(text, id) {\n conf = getConfig().state;\n parser.yy.clear();\n parser.parse(text);\n logger.debug('Rendering diagram ' + text);\n\n // Fetch the default direction, use TD if none was found\n const diagram = select(`[id='${id}']`);\n insertMarkers(diagram);\n\n // Layout graph, Create a new directed graph\n const graph = new graphlib.Graph({\n multigraph: true,\n compound: true,\n // acyclicer: 'greedy',\n rankdir: 'RL'\n // ranksep: '20'\n });\n\n // Default to assigning a new object as a label for each new edge.\n graph.setDefaultEdgeLabel(function() {\n return {};\n });\n\n const rootDoc = stateDb.getRootDoc();\n renderDoc(rootDoc, diagram, undefined, false);\n\n const padding = conf.padding;\n const bounds = diagram.node().getBBox();\n\n const width = bounds.width + padding * 2;\n const height = bounds.height + padding * 2;\n\n if (conf.useMaxWidth) {\n diagram.attr('width', '100%');\n diagram.attr('style', `max-width: ${width * 1.75}px;`);\n } else {\n // Zoom in a bit\n diagram.attr('width', width * 1.75);\n }\n // diagram.attr('height', bounds.height * 3 + conf.padding * 2);\n diagram.attr(\n 'viewBox',\n `${bounds.x - conf.padding} ${bounds.y - conf.padding} ` + width + ' ' + height\n );\n};\nconst getLabelWidth = text => {\n return text ? text.length * conf.fontSizeFactor : 1;\n};\n\nconst renderDoc = (doc, diagram, parentId, altBkg) => {\n // // Layout graph, Create a new directed graph\n const graph = new graphlib.Graph({\n compound: true,\n multigraph: true\n });\n\n let i;\n let edgeFreeDoc = true;\n for (i = 0; i < doc.length; i++) {\n if (doc[i].stmt === 'relation') {\n edgeFreeDoc = false;\n break;\n }\n }\n\n // Set an object for the graph label\n if (parentId)\n graph.setGraph({\n rankdir: 'LR',\n multigraph: true,\n compound: true,\n // acyclicer: 'greedy',\n ranker: 'tight-tree',\n ranksep: edgeFreeDoc ? 1 : conf.edgeLengthFactor,\n nodeSep: edgeFreeDoc ? 1 : 50,\n isMultiGraph: true\n // ranksep: 5,\n // nodesep: 1\n });\n else {\n graph.setGraph({\n rankdir: 'TB',\n multigraph: true,\n compound: true,\n // isCompound: true,\n // acyclicer: 'greedy',\n // ranker: 'longest-path'\n ranksep: edgeFreeDoc ? 1 : conf.edgeLengthFactor,\n nodeSep: edgeFreeDoc ? 1 : 50,\n ranker: 'tight-tree',\n // ranker: 'network-simplex'\n isMultiGraph: true\n });\n }\n\n // Default to assigning a new object as a label for each new edge.\n graph.setDefaultEdgeLabel(function() {\n return {};\n });\n\n stateDb.extract(doc);\n const states = stateDb.getStates();\n const relations = stateDb.getRelations();\n\n const keys = Object.keys(states);\n\n let first = true;\n\n for (let i = 0; i < keys.length; i++) {\n const stateDef = states[keys[i]];\n\n if (parentId) {\n stateDef.parentId = parentId;\n }\n\n let node;\n if (stateDef.doc) {\n let sub = diagram\n .append('g')\n .attr('id', stateDef.id)\n .attr('class', 'stateGroup');\n node = renderDoc(stateDef.doc, sub, stateDef.id, !altBkg);\n\n if (first) {\n // first = false;\n sub = addTitleAndBox(sub, stateDef, altBkg);\n let boxBounds = sub.node().getBBox();\n node.width = boxBounds.width;\n node.height = boxBounds.height + conf.padding / 2;\n transformationLog[stateDef.id] = { y: conf.compositTitleSize };\n } else {\n // sub = addIdAndBox(sub, stateDef);\n let boxBounds = sub.node().getBBox();\n node.width = boxBounds.width;\n node.height = boxBounds.height;\n // transformationLog[stateDef.id] = { y: conf.compositTitleSize };\n }\n } else {\n node = drawState(diagram, stateDef, graph);\n }\n\n if (stateDef.note) {\n // Draw note note\n const noteDef = {\n descriptions: [],\n id: stateDef.id + '-note',\n note: stateDef.note,\n type: 'note'\n };\n const note = drawState(diagram, noteDef, graph);\n\n // graph.setNode(node.id, node);\n if (stateDef.note.position === 'left of') {\n graph.setNode(node.id + '-note', note);\n graph.setNode(node.id, node);\n } else {\n graph.setNode(node.id, node);\n graph.setNode(node.id + '-note', note);\n }\n // graph.setNode(node.id);\n graph.setParent(node.id, node.id + '-group');\n graph.setParent(node.id + '-note', node.id + '-group');\n } else {\n // Add nodes to the graph. The first argument is the node id. The second is\n // metadata about the node. In this case we're going to add labels to each of\n // our nodes.\n graph.setNode(node.id, node);\n }\n }\n\n logger.debug('Count=', graph.nodeCount(), graph);\n let cnt = 0;\n relations.forEach(function(relation) {\n cnt++;\n logger.debug('Setting edge', relation);\n graph.setEdge(\n relation.id1,\n relation.id2,\n {\n relation: relation,\n width: getLabelWidth(relation.title),\n height: conf.labelHeight * common.getRows(relation.title).length,\n labelpos: 'c'\n },\n 'id' + cnt\n );\n });\n\n dagre.layout(graph);\n\n logger.debug('Graph after layout', graph.nodes());\n const svgElem = diagram.node();\n\n graph.nodes().forEach(function(v) {\n if (typeof v !== 'undefined' && typeof graph.node(v) !== 'undefined') {\n logger.warn('Node ' + v + ': ' + JSON.stringify(graph.node(v)));\n select('#' + svgElem.id + ' #' + v).attr(\n 'transform',\n 'translate(' +\n (graph.node(v).x - graph.node(v).width / 2) +\n ',' +\n (graph.node(v).y +\n (transformationLog[v] ? transformationLog[v].y : 0) -\n graph.node(v).height / 2) +\n ' )'\n );\n select('#' + svgElem.id + ' #' + v).attr(\n 'data-x-shift',\n graph.node(v).x - graph.node(v).width / 2\n );\n const dividers = document.querySelectorAll('#' + svgElem.id + ' #' + v + ' .divider');\n dividers.forEach(divider => {\n const parent = divider.parentElement;\n let pWidth = 0;\n let pShift = 0;\n if (parent) {\n if (parent.parentElement) pWidth = parent.parentElement.getBBox().width;\n pShift = parseInt(parent.getAttribute('data-x-shift'), 10);\n if (Number.isNaN(pShift)) {\n pShift = 0;\n }\n }\n divider.setAttribute('x1', 0 - pShift + 8);\n divider.setAttribute('x2', pWidth - pShift - 8);\n });\n } else {\n logger.debug('No Node ' + v + ': ' + JSON.stringify(graph.node(v)));\n }\n });\n\n let stateBox = svgElem.getBBox();\n\n graph.edges().forEach(function(e) {\n if (typeof e !== 'undefined' && typeof graph.edge(e) !== 'undefined') {\n logger.debug('Edge ' + e.v + ' -> ' + e.w + ': ' + JSON.stringify(graph.edge(e)));\n drawEdge(diagram, graph.edge(e), graph.edge(e).relation);\n }\n });\n\n stateBox = svgElem.getBBox();\n\n const stateInfo = {\n id: parentId ? parentId : 'root',\n label: parentId ? parentId : 'root',\n width: 0,\n height: 0\n };\n\n stateInfo.width = stateBox.width + 2 * conf.padding;\n stateInfo.height = stateBox.height + 2 * conf.padding;\n\n logger.debug('Doc rendered', stateInfo, graph);\n return stateInfo;\n};\n\nexport default {\n setConf,\n draw\n};\n","const getStyles = options =>\n `g.stateGroup text {\n fill: ${options.nodeBorder};\n stroke: none;\n font-size: 10px;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family);\n}\ng.stateGroup text {\n fill: ${options.textColor};\n stroke: none;\n font-size: 10px;\n\n}\ng.stateGroup .state-title {\n font-weight: bolder;\n fill: ${options.labelColor};\n}\n\ng.stateGroup rect {\n fill: ${options.nodeBkg};\n stroke: ${options.nodeBorder};\n}\n\ng.stateGroup line {\n stroke: ${options.lineColor};\n stroke-width: 1;\n}\n\n.transition {\n stroke: ${options.lineColor};\n stroke-width: 1;\n fill: none;\n}\n\n.stateGroup .composit {\n fill: ${options.background};\n border-bottom: 1px\n}\n\n.stateGroup .alt-composit {\n fill: #e0e0e0;\n border-bottom: 1px\n}\n\n.state-note {\n stroke: ${options.noteBorderColor};\n fill: ${options.noteBkgColor};\n\n text {\n fill: black;\n stroke: none;\n font-size: 10px;\n }\n}\n\n.stateLabel .box {\n stroke: none;\n stroke-width: 0;\n fill: ${options.nodeBkg};\n opacity: 0.5;\n}\n\n.stateLabel text {\n fill: ${options.labelColor};\n font-size: 10px;\n font-weight: bold;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family);\n}\n\n.node circle.state-start {\n fill: black;\n stroke: black;\n}\n.node circle.state-end {\n fill: black;\n stroke: white;\n stroke-width: 1.5\n}\n\n.node rect {\n fill: ${options.mainBkg};\n stroke: ${options.nodeBorder};\n stroke-width: 1px;\n}\n#statediagram-barbEnd {\n fill: ${options.lineColor};\n}\n\n.statediagram-cluster rect {\n fill: ${options.nodeBkg};\n stroke: ${options.nodeBorder};\n stroke-width: 1px;\n}\n\n.cluster-label, .nodeLabel {\n color: ${options.textColor};\n}\n\n.statediagram-cluster rect.outer {\n rx: 5px;\n ry: 5px;\n}\n.statediagram-state .divider {\n stroke: ${options.nodeBorder};\n}\n\n.statediagram-state .title-state {\n rx: 5px;\n ry: 5px;\n}\n.statediagram-cluster.statediagram-cluster .inner {\n fill: ${options.background};\n}\n.statediagram-cluster.statediagram-cluster-alt .inner {\n fill: #e0e0e0;\n}\n\n.statediagram-cluster .inner {\n rx:0;\n ry:0;\n}\n\n.statediagram-state rect.basic {\n rx: 5px;\n ry: 5px;\n}\n.statediagram-state rect.divider {\n stroke-dasharray: 10,10;\n fill: ${options.altBackground ? options.altBackground : '#efefef'};\n}\n\n.note-edge {\n stroke-dasharray: 5;\n}\n\n.statediagram-note rect {\n fill: ${options.noteBkgColor};\n stroke: ${options.noteBorderColor};\n stroke-width: 1px;\n rx: 0;\n ry: 0;\n}\n.statediagram-note rect {\n fill: ${options.noteBkgColor};\n stroke: ${options.noteBorderColor};\n stroke-width: 1px;\n rx: 0;\n ry: 0;\n}\n\n.statediagram-note .nodeLabel {\n color: ${options.noteTextColor};\n}\n\n#dependencyStart, #dependencyEnd {\n fill: ${options.lineColor};\n stroke: ${options.lineColor};\n stroke-width: 1;\n}\n`;\n\nexport default getStyles;\n","let title = '';\nlet currentSection = '';\n\nconst sections = [];\nconst tasks = [];\nconst rawTasks = [];\n\nexport const clear = function() {\n sections.length = 0;\n tasks.length = 0;\n currentSection = '';\n title = '';\n rawTasks.length = 0;\n};\n\nexport const setTitle = function(txt) {\n title = txt;\n};\n\nexport const getTitle = function() {\n return title;\n};\n\nexport const addSection = function(txt) {\n currentSection = txt;\n sections.push(txt);\n};\n\nexport const getSections = function() {\n return sections;\n};\n\nexport const getTasks = function() {\n let allItemsProcessed = compileTasks();\n const maxDepth = 100;\n let iterationCount = 0;\n while (!allItemsProcessed && iterationCount < maxDepth) {\n allItemsProcessed = compileTasks();\n iterationCount++;\n }\n\n tasks.push(...rawTasks);\n\n return tasks;\n};\n\nconst updateActors = function() {\n const tempActors = [];\n tasks.forEach(task => {\n if (task.people) {\n tempActors.push(...task.people);\n }\n });\n\n const unique = new Set(tempActors);\n return [...unique].sort();\n};\n\nexport const addTask = function(descr, taskData) {\n const pieces = taskData.substr(1).split(':');\n\n let score = 0;\n let peeps = [];\n if (pieces.length === 1) {\n score = Number(pieces[0]);\n peeps = [];\n } else {\n score = Number(pieces[0]);\n peeps = pieces[1].split(',');\n }\n const peopleList = peeps.map(s => s.trim());\n\n const rawTask = {\n section: currentSection,\n type: currentSection,\n people: peopleList,\n task: descr,\n score\n };\n\n rawTasks.push(rawTask);\n};\n\nexport const addTaskOrg = function(descr) {\n const newTask = {\n section: currentSection,\n type: currentSection,\n description: descr,\n task: descr,\n classes: []\n };\n tasks.push(newTask);\n};\n\nconst compileTasks = function() {\n const compileTask = function(pos) {\n return rawTasks[pos].processed;\n };\n\n let allProcessed = true;\n for (let i = 0; i < rawTasks.length; i++) {\n compileTask(i);\n\n allProcessed = allProcessed && rawTasks[i].processed;\n }\n return allProcessed;\n};\n\nconst getActors = function() {\n return updateActors();\n};\n\nexport default {\n clear,\n setTitle,\n getTitle,\n addSection,\n getSections,\n getTasks,\n addTask,\n addTaskOrg,\n getActors\n};\n","import { select } from 'd3';\nimport { parser } from './parser/journey';\nimport journeyDb from './journeyDb';\nimport svgDraw from './svgDraw';\n\nparser.yy = journeyDb;\n\nconst conf = {\n leftMargin: 150,\n diagramMarginX: 50,\n diagramMarginY: 20,\n // Margin between tasks\n taskMargin: 50,\n // Width of task boxes\n width: 150,\n // Height of task boxes\n height: 50,\n taskFontSize: 14,\n taskFontFamily: '\"Open-Sans\", \"sans-serif\"',\n // Margin around loop boxes\n boxMargin: 10,\n boxTextMargin: 5,\n noteMargin: 10,\n // Space between messages\n messageMargin: 35,\n // Multiline message alignment\n messageAlign: 'center',\n // Depending on css styling this might need adjustment\n // Projects the edge of the diagram downwards\n bottomMarginAdj: 1,\n\n // width of activation box\n activationWidth: 10,\n\n // text placement as: tspan | fo | old only text as before\n textPlacement: 'fo',\n\n actorColours: ['#8FBC8F', '#7CFC00', '#00FFFF', '#20B2AA', '#B0E0E6', '#FFFFE0'],\n\n sectionFills: ['#191970', '#8B008B', '#4B0082', '#2F4F4F', '#800000', '#8B4513', '#00008B'],\n sectionColours: ['#fff']\n};\n\nexport const setConf = function(cnf) {\n const keys = Object.keys(cnf);\n\n keys.forEach(function(key) {\n conf[key] = cnf[key];\n });\n};\n\nconst actors = {};\n\nfunction drawActorLegend(diagram) {\n // Draw the actors\n let yPos = 60;\n Object.keys(actors).forEach(person => {\n const colour = actors[person];\n\n const circleData = {\n cx: 20,\n cy: yPos,\n r: 7,\n fill: colour,\n stroke: '#000'\n };\n svgDraw.drawCircle(diagram, circleData);\n\n const labelData = {\n x: 40,\n y: yPos + 7,\n fill: '#666',\n text: person\n };\n svgDraw.drawText(diagram, labelData);\n\n yPos += 20;\n });\n}\n\nconst LEFT_MARGIN = conf.leftMargin;\nexport const draw = function(text, id) {\n parser.yy.clear();\n parser.parse(text + '\\n');\n\n bounds.init();\n const diagram = select('#' + id);\n diagram.attr('xmlns:xlink', 'http://www.w3.org/1999/xlink');\n\n svgDraw.initGraphics(diagram);\n\n const tasks = parser.yy.getTasks();\n const title = parser.yy.getTitle();\n\n const actorNames = parser.yy.getActors();\n for (let member in actors) delete actors[member];\n let actorPos = 0;\n actorNames.forEach(actorName => {\n actors[actorName] = conf.actorColours[actorPos % conf.actorColours.length];\n actorPos++;\n });\n\n drawActorLegend(diagram);\n bounds.insert(0, 0, LEFT_MARGIN, Object.keys(actors).length * 50);\n\n drawTasks(diagram, tasks, 0);\n\n const box = bounds.getBounds();\n if (title) {\n diagram\n .append('text')\n .text(title)\n .attr('x', LEFT_MARGIN)\n .attr('font-size', '4ex')\n .attr('font-weight', 'bold')\n .attr('y', 25);\n }\n const height = box.stopy - box.starty + 2 * conf.diagramMarginY;\n const width = LEFT_MARGIN + box.stopx + 2 * conf.diagramMarginX;\n if (conf.useMaxWidth) {\n diagram.attr('height', '100%');\n diagram.attr('width', '100%');\n diagram.attr('style', 'max-width:' + width + 'px;');\n } else {\n diagram.attr('height', height);\n diagram.attr('width', width);\n }\n\n // Draw activity line\n diagram\n .append('line')\n .attr('x1', LEFT_MARGIN)\n .attr('y1', conf.height * 4) // One section head + one task + margins\n .attr('x2', width - LEFT_MARGIN - 4) // Subtract stroke width so arrow point is retained\n .attr('y2', conf.height * 4)\n .attr('stroke-width', 4)\n .attr('stroke', 'black')\n .attr('marker-end', 'url(#arrowhead)');\n\n const extraVertForTitle = title ? 70 : 0;\n diagram.attr('viewBox', `${box.startx} -25 ${width} ${height + extraVertForTitle}`);\n diagram.attr('preserveAspectRatio', 'xMinYMin meet');\n};\n\nexport const bounds = {\n data: {\n startx: undefined,\n stopx: undefined,\n starty: undefined,\n stopy: undefined\n },\n verticalPos: 0,\n\n sequenceItems: [],\n init: function() {\n this.sequenceItems = [];\n this.data = {\n startx: undefined,\n stopx: undefined,\n starty: undefined,\n stopy: undefined\n };\n this.verticalPos = 0;\n },\n updateVal: function(obj, key, val, fun) {\n if (typeof obj[key] === 'undefined') {\n obj[key] = val;\n } else {\n obj[key] = fun(val, obj[key]);\n }\n },\n updateBounds: function(startx, starty, stopx, stopy) {\n const _self = this;\n let cnt = 0;\n function updateFn(type) {\n return function updateItemBounds(item) {\n cnt++;\n // The loop sequenceItems is a stack so the biggest margins in the beginning of the sequenceItems\n const n = _self.sequenceItems.length - cnt + 1;\n\n _self.updateVal(item, 'starty', starty - n * conf.boxMargin, Math.min);\n _self.updateVal(item, 'stopy', stopy + n * conf.boxMargin, Math.max);\n\n _self.updateVal(bounds.data, 'startx', startx - n * conf.boxMargin, Math.min);\n _self.updateVal(bounds.data, 'stopx', stopx + n * conf.boxMargin, Math.max);\n\n if (!(type === 'activation')) {\n _self.updateVal(item, 'startx', startx - n * conf.boxMargin, Math.min);\n _self.updateVal(item, 'stopx', stopx + n * conf.boxMargin, Math.max);\n\n _self.updateVal(bounds.data, 'starty', starty - n * conf.boxMargin, Math.min);\n _self.updateVal(bounds.data, 'stopy', stopy + n * conf.boxMargin, Math.max);\n }\n };\n }\n\n this.sequenceItems.forEach(updateFn());\n },\n insert: function(startx, starty, stopx, stopy) {\n const _startx = Math.min(startx, stopx);\n const _stopx = Math.max(startx, stopx);\n const _starty = Math.min(starty, stopy);\n const _stopy = Math.max(starty, stopy);\n\n this.updateVal(bounds.data, 'startx', _startx, Math.min);\n this.updateVal(bounds.data, 'starty', _starty, Math.min);\n this.updateVal(bounds.data, 'stopx', _stopx, Math.max);\n this.updateVal(bounds.data, 'stopy', _stopy, Math.max);\n\n this.updateBounds(_startx, _starty, _stopx, _stopy);\n },\n bumpVerticalPos: function(bump) {\n this.verticalPos = this.verticalPos + bump;\n this.data.stopy = this.verticalPos;\n },\n getVerticalPos: function() {\n return this.verticalPos;\n },\n getBounds: function() {\n return this.data;\n }\n};\n\nconst fills = conf.sectionFills;\nconst textColours = conf.sectionColours;\n\nexport const drawTasks = function(diagram, tasks, verticalPos) {\n let lastSection = '';\n const sectionVHeight = conf.height * 2 + conf.diagramMarginY;\n const taskPos = verticalPos + sectionVHeight;\n\n let sectionNumber = 0;\n let fill = '#CCC';\n let colour = 'black';\n let num = 0;\n\n // Draw the tasks\n for (let i = 0; i < tasks.length; i++) {\n let task = tasks[i];\n if (lastSection !== task.section) {\n fill = fills[sectionNumber % fills.length];\n num = sectionNumber % fills.length;\n colour = textColours[sectionNumber % textColours.length];\n\n const section = {\n x: i * conf.taskMargin + i * conf.width + LEFT_MARGIN,\n y: 50,\n text: task.section,\n fill,\n num,\n colour\n };\n\n svgDraw.drawSection(diagram, section, conf);\n lastSection = task.section;\n sectionNumber++;\n }\n\n // Collect the actors involved in the task\n const taskActors = task.people.reduce((acc, actorName) => {\n if (actors[actorName]) {\n acc[actorName] = actors[actorName];\n }\n\n return acc;\n }, {});\n\n // Add some rendering data to the object\n task.x = i * conf.taskMargin + i * conf.width + LEFT_MARGIN;\n task.y = taskPos;\n task.width = conf.diagramMarginX;\n task.height = conf.diagramMarginY;\n task.colour = colour;\n task.fill = fill;\n task.num = num;\n task.actors = taskActors;\n\n // Draw the box with the attached line\n svgDraw.drawTask(diagram, task, conf);\n bounds.insert(task.x, task.y, task.x + task.width + conf.taskMargin, 300 + 5 * 30); // stopy is the length of the descenders.\n }\n};\n\nexport default {\n setConf,\n draw\n};\n","/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[6,8,10,11,12,13],$V1=[1,9],$V2=[1,10],$V3=[1,11];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"journey\":4,\"document\":5,\"EOF\":6,\"line\":7,\"SPACE\":8,\"statement\":9,\"NL\":10,\"title\":11,\"section\":12,\"taskName\":13,\"taskData\":14,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",4:\"journey\",6:\"EOF\",8:\"SPACE\",10:\"NL\",11:\"title\",12:\"section\",13:\"taskName\",14:\"taskData\"},\nproductions_: [0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[9,1],[9,1],[9,2]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 1:\n return $$[$0-1]; \nbreak;\ncase 2:\n this.$ = [] \nbreak;\ncase 3:\n$$[$0-1].push($$[$0]);this.$ = $$[$0-1]\nbreak;\ncase 4: case 5:\n this.$ = $$[$0] \nbreak;\ncase 6: case 7:\n this.$=[];\nbreak;\ncase 8:\nyy.setTitle($$[$0].substr(6));this.$=$$[$0].substr(6);\nbreak;\ncase 9:\nyy.addSection($$[$0].substr(8));this.$=$$[$0].substr(8);\nbreak;\ncase 10:\nyy.addTask($$[$0-1], $$[$0]);this.$='task';\nbreak;\n}\n},\ntable: [{3:1,4:[1,2]},{1:[3]},o($V0,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:$V1,12:$V2,13:$V3},o($V0,[2,7],{1:[2,1]}),o($V0,[2,3]),{9:12,11:$V1,12:$V2,13:$V3},o($V0,[2,5]),o($V0,[2,6]),o($V0,[2,8]),o($V0,[2,9]),{14:[1,13]},o($V0,[2,4]),o($V0,[2,10])],\ndefaultActions: {},\nparseError: function parseError (str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer.lex() || EOF;\n if (typeof token !== 'number') {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {\"case-insensitive\":true},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0:return 10;\nbreak;\ncase 1:/* skip whitespace */\nbreak;\ncase 2:/* skip comments */\nbreak;\ncase 3:/* skip comments */\nbreak;\ncase 4:return 4;\nbreak;\ncase 5:return 11;\nbreak;\ncase 6:return 12;\nbreak;\ncase 7:return 13;\nbreak;\ncase 8:return 14;\nbreak;\ncase 9:return ':';\nbreak;\ncase 10:return 6;\nbreak;\ncase 11:return 'INVALID';\nbreak;\n}\n},\nrules: [/^(?:[\\n]+)/i,/^(?:\\s+)/i,/^(?:#[^\\n]*)/i,/^(?:%[^\\n]*)/i,/^(?:journey\\b)/i,/^(?:title\\s[^#\\n;]+)/i,/^(?:section\\s[^#:\\n;]+)/i,/^(?:[^#:\\n;]+)/i,/^(?::[^#\\n;]+)/i,/^(?::)/i,/^(?:$)/i,/^(?:.)/i],\nconditions: {\"INITIAL\":{\"rules\":[0,1,2,3,4,5,6,7,8,9,10,11],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain (args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}","const getStyles = options =>\n `.label {\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family);\n color: ${options.textColor};\n }\n .mouth {\n stroke: #666;\n }\n\n line {\n stroke: ${options.textColor}\n }\n\n .legend {\n fill: ${options.textColor};\n }\n\n .label text {\n fill: #333;\n }\n .label {\n color: ${options.textColor}\n }\n\n .face {\n fill: #FFF8DC;\n stroke: #999;\n }\n\n .node rect,\n .node circle,\n .node ellipse,\n .node polygon,\n .node path {\n fill: ${options.mainBkg};\n stroke: ${options.nodeBorder};\n stroke-width: 1px;\n }\n\n .node .label {\n text-align: center;\n }\n .node.clickable {\n cursor: pointer;\n }\n\n .arrowheadPath {\n fill: ${options.arrowheadColor};\n }\n\n .edgePath .path {\n stroke: ${options.lineColor};\n stroke-width: 1.5px;\n }\n\n .flowchart-link {\n stroke: ${options.lineColor};\n fill: none;\n }\n\n .edgeLabel {\n background-color: ${options.edgeLabelBackground};\n rect {\n opacity: 0.5;\n }\n text-align: center;\n }\n\n .cluster rect {\n fill: ${options.secondBkg};\n stroke: ${options.clusterBorder};\n stroke-width: 1px;\n }\n\n .cluster text {\n fill: ${options.titleColor};\n }\n\n div.mermaidTooltip {\n position: absolute;\n text-align: center;\n max-width: 200px;\n padding: 2px;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family);\n font-size: 12px;\n background: ${options.secondBkg};\n border: 1px solid ${options.border2};\n border-radius: 2px;\n pointer-events: none;\n z-index: 100;\n }\n\n .task-type-0, .section-type-0 {\n ${options.fillType0 ? `fill: ${options.fillType0}` : ''};\n }\n .task-type-1, .section-type-1 {\n ${options.fillType0 ? `fill: ${options.fillType1}` : ''};\n }\n .task-type-2, .section-type-2 {\n ${options.fillType0 ? `fill: ${options.fillType2}` : ''};\n }\n .task-type-3, .section-type-3 {\n ${options.fillType0 ? `fill: ${options.fillType3}` : ''};\n }\n .task-type-4, .section-type-4 {\n ${options.fillType0 ? `fill: ${options.fillType4}` : ''};\n }\n .task-type-5, .section-type-5 {\n ${options.fillType0 ? `fill: ${options.fillType5}` : ''};\n }\n .task-type-6, .section-type-6 {\n ${options.fillType0 ? `fill: ${options.fillType6}` : ''};\n }\n .task-type-7, .section-type-7 {\n ${options.fillType0 ? `fill: ${options.fillType7}` : ''};\n }\n`;\n\nexport default getStyles;\n","import { arc as d3arc } from 'd3';\n\nexport const drawRect = function(elem, rectData) {\n const rectElem = elem.append('rect');\n rectElem.attr('x', rectData.x);\n rectElem.attr('y', rectData.y);\n rectElem.attr('fill', rectData.fill);\n rectElem.attr('stroke', rectData.stroke);\n rectElem.attr('width', rectData.width);\n rectElem.attr('height', rectData.height);\n rectElem.attr('rx', rectData.rx);\n rectElem.attr('ry', rectData.ry);\n\n if (typeof rectData.class !== 'undefined') {\n rectElem.attr('class', rectData.class);\n }\n\n return rectElem;\n};\n\nexport const drawFace = function(element, faceData) {\n const radius = 15;\n const circleElement = element\n .append('circle')\n .attr('cx', faceData.cx)\n .attr('cy', faceData.cy)\n .attr('class', 'face')\n .attr('r', radius)\n .attr('stroke-width', 2)\n .attr('overflow', 'visible');\n\n const face = element.append('g');\n\n //left eye\n face\n .append('circle')\n .attr('cx', faceData.cx - radius / 3)\n .attr('cy', faceData.cy - radius / 3)\n .attr('r', 1.5)\n .attr('stroke-width', 2)\n .attr('fill', '#666')\n .attr('stroke', '#666');\n\n //right eye\n face\n .append('circle')\n .attr('cx', faceData.cx + radius / 3)\n .attr('cy', faceData.cy - radius / 3)\n .attr('r', 1.5)\n .attr('stroke-width', 2)\n .attr('fill', '#666')\n .attr('stroke', '#666');\n\n function smile(face) {\n const arc = d3arc()\n .startAngle(Math.PI / 2)\n .endAngle(3 * (Math.PI / 2))\n .innerRadius(radius / 2)\n .outerRadius(radius / 2.2);\n //mouth\n face\n .append('path')\n .attr('class', 'mouth')\n .attr('d', arc)\n .attr('transform', 'translate(' + faceData.cx + ',' + (faceData.cy + 2) + ')');\n }\n\n function sad(face) {\n const arc = d3arc()\n .startAngle((3 * Math.PI) / 2)\n .endAngle(5 * (Math.PI / 2))\n .innerRadius(radius / 2)\n .outerRadius(radius / 2.2);\n //mouth\n face\n .append('path')\n .attr('class', 'mouth')\n .attr('d', arc)\n .attr('transform', 'translate(' + faceData.cx + ',' + (faceData.cy + 7) + ')');\n }\n\n function ambivalent(face) {\n face\n .append('line')\n .attr('class', 'mouth')\n .attr('stroke', 2)\n .attr('x1', faceData.cx - 5)\n .attr('y1', faceData.cy + 7)\n .attr('x2', faceData.cx + 5)\n .attr('y2', faceData.cy + 7)\n .attr('class', 'mouth')\n .attr('stroke-width', '1px')\n .attr('stroke', '#666');\n }\n\n if (faceData.score > 3) {\n smile(face);\n } else if (faceData.score < 3) {\n sad(face);\n } else {\n ambivalent(face);\n }\n\n return circleElement;\n};\n\nexport const drawCircle = function(element, circleData) {\n const circleElement = element.append('circle');\n circleElement.attr('cx', circleData.cx);\n circleElement.attr('cy', circleData.cy);\n circleElement.attr('fill', circleData.fill);\n circleElement.attr('stroke', circleData.stroke);\n circleElement.attr('r', circleData.r);\n\n if (typeof circleElement.class !== 'undefined') {\n circleElement.attr('class', circleElement.class);\n }\n\n if (typeof circleData.title !== 'undefined') {\n circleElement.append('title').text(circleData.title);\n }\n\n return circleElement;\n};\n\nexport const drawText = function(elem, textData) {\n // Remove and ignore br:s\n const nText = textData.text.replace(/
/gi, ' ');\n\n const textElem = elem.append('text');\n textElem.attr('x', textData.x);\n textElem.attr('y', textData.y);\n textElem.attr('class', 'legend');\n\n textElem.style('text-anchor', textData.anchor);\n\n if (typeof textData.class !== 'undefined') {\n textElem.attr('class', textData.class);\n }\n\n const span = textElem.append('tspan');\n span.attr('x', textData.x + textData.textMargin * 2);\n span.text(nText);\n\n return textElem;\n};\n\nexport const drawLabel = function(elem, txtObject) {\n function genPoints(x, y, width, height, cut) {\n return (\n x +\n ',' +\n y +\n ' ' +\n (x + width) +\n ',' +\n y +\n ' ' +\n (x + width) +\n ',' +\n (y + height - cut) +\n ' ' +\n (x + width - cut * 1.2) +\n ',' +\n (y + height) +\n ' ' +\n x +\n ',' +\n (y + height)\n );\n }\n const polygon = elem.append('polygon');\n polygon.attr('points', genPoints(txtObject.x, txtObject.y, 50, 20, 7));\n polygon.attr('class', 'labelBox');\n\n txtObject.y = txtObject.y + txtObject.labelMargin;\n txtObject.x = txtObject.x + 0.5 * txtObject.labelMargin;\n drawText(elem, txtObject);\n};\n\nexport const drawSection = function(elem, section, conf) {\n const g = elem.append('g');\n\n const rect = getNoteRect();\n rect.x = section.x;\n rect.y = section.y;\n rect.fill = section.fill;\n rect.width = conf.width;\n rect.height = conf.height;\n rect.class = 'journey-section section-type-' + section.num;\n rect.rx = 3;\n rect.ry = 3;\n drawRect(g, rect);\n\n _drawTextCandidateFunc(conf)(\n section.text,\n g,\n rect.x,\n rect.y,\n rect.width,\n rect.height,\n { class: 'journey-section section-type-' + section.num },\n conf,\n section.colour\n );\n};\n\nlet taskCount = -1;\n/**\n * Draws an actor in the diagram with the attaced line\n * @param elem The HTML element\n * @param task The task to render\n * @param conf The global configuration\n */\nexport const drawTask = function(elem, task, conf) {\n const center = task.x + conf.width / 2;\n const g = elem.append('g');\n taskCount++;\n const maxHeight = 300 + 5 * 30;\n g.append('line')\n .attr('id', 'task' + taskCount)\n .attr('x1', center)\n .attr('y1', task.y)\n .attr('x2', center)\n .attr('y2', maxHeight)\n .attr('class', 'task-line')\n .attr('stroke-width', '1px')\n .attr('stroke-dasharray', '4 2')\n .attr('stroke', '#666');\n\n drawFace(g, {\n cx: center,\n cy: 300 + (5 - task.score) * 30,\n score: task.score\n });\n\n const rect = getNoteRect();\n rect.x = task.x;\n rect.y = task.y;\n rect.fill = task.fill;\n rect.width = conf.width;\n rect.height = conf.height;\n rect.class = 'task task-type-' + task.num;\n rect.rx = 3;\n rect.ry = 3;\n drawRect(g, rect);\n\n let xPos = task.x + 14;\n task.people.forEach(person => {\n const colour = task.actors[person];\n\n const circle = {\n cx: xPos,\n cy: task.y,\n r: 7,\n fill: colour,\n stroke: '#000',\n title: person\n };\n\n drawCircle(g, circle);\n xPos += 10;\n });\n\n _drawTextCandidateFunc(conf)(\n task.task,\n g,\n rect.x,\n rect.y,\n rect.width,\n rect.height,\n { class: 'task' },\n conf,\n task.colour\n );\n};\n\n/**\n * Draws a background rectangle\n * @param elem The html element\n * @param bounds The bounds of the drawing\n */\nexport const drawBackgroundRect = function(elem, bounds) {\n const rectElem = drawRect(elem, {\n x: bounds.startx,\n y: bounds.starty,\n width: bounds.stopx - bounds.startx,\n height: bounds.stopy - bounds.starty,\n fill: bounds.fill,\n class: 'rect'\n });\n rectElem.lower();\n};\n\nexport const getTextObj = function() {\n return {\n x: 0,\n y: 0,\n fill: undefined,\n 'text-anchor': 'start',\n width: 100,\n height: 100,\n textMargin: 0,\n rx: 0,\n ry: 0\n };\n};\n\nexport const getNoteRect = function() {\n return {\n x: 0,\n y: 0,\n width: 100,\n anchor: 'start',\n height: 100,\n rx: 0,\n ry: 0\n };\n};\n\nconst _drawTextCandidateFunc = (function() {\n function byText(content, g, x, y, width, height, textAttrs, colour) {\n const text = g\n .append('text')\n .attr('x', x + width / 2)\n .attr('y', y + height / 2 + 5)\n .style('font-color', colour)\n .style('text-anchor', 'middle')\n .text(content);\n _setTextAttrs(text, textAttrs);\n }\n\n function byTspan(content, g, x, y, width, height, textAttrs, conf, colour) {\n const { taskFontSize, taskFontFamily } = conf;\n\n const lines = content.split(/
/gi);\n for (let i = 0; i < lines.length; i++) {\n const dy = i * taskFontSize - (taskFontSize * (lines.length - 1)) / 2;\n const text = g\n .append('text')\n .attr('x', x + width / 2)\n .attr('y', y)\n .attr('fill', colour)\n .style('text-anchor', 'middle')\n .style('font-size', taskFontSize)\n .style('font-family', taskFontFamily);\n text\n .append('tspan')\n .attr('x', x + width / 2)\n .attr('dy', dy)\n .text(lines[i]);\n\n text\n .attr('y', y + height / 2.0)\n .attr('dominant-baseline', 'central')\n .attr('alignment-baseline', 'central');\n\n _setTextAttrs(text, textAttrs);\n }\n }\n\n function byFo(content, g, x, y, width, height, textAttrs, conf) {\n const body = g.append('switch');\n const f = body\n .append('foreignObject')\n .attr('x', x)\n .attr('y', y)\n .attr('width', width)\n .attr('height', height)\n .attr('position', 'fixed');\n\n const text = f\n .append('div')\n .style('display', 'table')\n .style('height', '100%')\n .style('width', '100%');\n\n text\n .append('div')\n .attr('class', 'label')\n .style('display', 'table-cell')\n .style('text-align', 'center')\n .style('vertical-align', 'middle')\n // .style('color', colour)\n .text(content);\n\n byTspan(content, body, x, y, width, height, textAttrs, conf);\n _setTextAttrs(text, textAttrs);\n }\n\n function _setTextAttrs(toText, fromTextAttrsDict) {\n for (const key in fromTextAttrsDict) {\n if (key in fromTextAttrsDict) {\n // eslint-disable-line\n // noinspection JSUnfilteredForInLoop\n toText.attr(key, fromTextAttrsDict[key]);\n }\n }\n }\n\n return function(conf) {\n return conf.textPlacement === 'fo' ? byFo : conf.textPlacement === 'old' ? byText : byTspan;\n };\n})();\n\nconst initGraphics = function(graphics) {\n graphics\n .append('defs')\n .append('marker')\n .attr('id', 'arrowhead')\n .attr('refX', 5)\n .attr('refY', 2)\n .attr('markerWidth', 6)\n .attr('markerHeight', 4)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 0,0 V 4 L6,2 Z'); // this is actual shape for arrowhead\n};\n\nexport default {\n drawRect,\n drawCircle,\n drawSection,\n drawText,\n drawLabel,\n drawTask,\n drawBackgroundRect,\n getTextObj,\n getNoteRect,\n initGraphics\n};\n","/**\n * Created by knut on 14-12-11.\n */\nimport { select } from 'd3';\nimport { logger } from './logger';\n\nconst conf = {};\nexport const setConf = function(cnf) {\n const keys = Object.keys(cnf);\n\n keys.forEach(function(key) {\n conf[key] = cnf[key];\n });\n};\n\n/**\n * Draws a an info picture in the tag with id: id based on the graph definition in text.\n * @param text\n * @param id\n */\nexport const draw = (id, ver) => {\n try {\n logger.debug('Renering svg for syntax error\\n');\n\n const svg = select('#' + id);\n\n const g = svg.append('g');\n\n g.append('path')\n .attr('class', 'error-icon')\n .attr(\n 'd',\n 'm411.313,123.313c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32-9.375,9.375-20.688-20.688c-12.484-12.5-32.766-12.5-45.25,0l-16,16c-1.261,1.261-2.304,2.648-3.31,4.051-21.739-8.561-45.324-13.426-70.065-13.426-105.867,0-192,86.133-192,192s86.133,192 192,192 192-86.133 192-192c0-24.741-4.864-48.327-13.426-70.065 1.402-1.007 2.79-2.049 4.051-3.31l16-16c12.5-12.492 12.5-32.758 0-45.25l-20.688-20.688 9.375-9.375 32.001-31.999zm-219.313,100.687c-52.938,0-96,43.063-96,96 0,8.836-7.164,16-16,16s-16-7.164-16-16c0-70.578 57.422-128 128-128 8.836,0 16,7.164 16,16s-7.164,16-16,16z'\n );\n\n g.append('path')\n .attr('class', 'error-icon')\n .attr(\n 'd',\n 'm459.02,148.98c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l16,16c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16.001-16z'\n );\n\n g.append('path')\n .attr('class', 'error-icon')\n .attr(\n 'd',\n 'm340.395,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16-16c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l15.999,16z'\n );\n\n g.append('path')\n .attr('class', 'error-icon')\n .attr(\n 'd',\n 'm400,64c8.844,0 16-7.164 16-16v-32c0-8.836-7.156-16-16-16-8.844,0-16,7.164-16,16v32c0,8.836 7.156,16 16,16z'\n );\n\n g.append('path')\n .attr('class', 'error-icon')\n .attr(\n 'd',\n 'm496,96.586h-32c-8.844,0-16,7.164-16,16 0,8.836 7.156,16 16,16h32c8.844,0 16-7.164 16-16 0-8.836-7.156-16-16-16z'\n );\n\n g.append('path')\n .attr('class', 'error-icon')\n .attr(\n 'd',\n 'm436.98,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688l32-32c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32c-6.251,6.25-6.251,16.375-0.001,22.625z'\n );\n\n g.append('text') // text label for the x axis\n .attr('class', 'error-text')\n .attr('x', 1240)\n .attr('y', 250)\n .attr('font-size', '150px')\n .style('text-anchor', 'middle')\n .text('Syntax error in graph');\n g.append('text') // text label for the x axis\n .attr('class', 'error-text')\n .attr('x', 1050)\n .attr('y', 400)\n .attr('font-size', '100px')\n .style('text-anchor', 'middle')\n .text('mermaid version ' + ver);\n\n svg.attr('height', 100);\n svg.attr('width', 400);\n svg.attr('viewBox', '768 0 512 512');\n } catch (e) {\n logger.error('Error while rendering info diagram');\n logger.error(e.message);\n }\n};\n\nexport default {\n setConf,\n draw\n};\n","import moment from 'moment-mini';\n//\nexport const LEVELS = {\n debug: 1,\n info: 2,\n warn: 3,\n error: 4,\n fatal: 5\n};\n\nexport const logger = {\n debug: () => {},\n info: () => {},\n warn: () => {},\n error: () => {},\n fatal: () => {}\n};\n\nexport const setLogLevel = function(level = 'fatal') {\n if (isNaN(level)) {\n level = level.toLowerCase();\n if (LEVELS[level] !== undefined) {\n level = LEVELS[level];\n }\n }\n logger.trace = () => {};\n logger.debug = () => {};\n logger.info = () => {};\n logger.warn = () => {};\n logger.error = () => {};\n logger.fatal = () => {};\n if (level <= LEVELS.fatal) {\n logger.fatal = console.error\n ? console.error.bind(console, format('FATAL'), 'color: orange')\n : console.log.bind(console, '\\x1b[35m', format('FATAL'));\n }\n if (level <= LEVELS.error) {\n logger.error = console.error\n ? console.error.bind(console, format('ERROR'), 'color: orange')\n : console.log.bind(console, '\\x1b[31m', format('ERROR'));\n }\n if (level <= LEVELS.warn) {\n logger.warn = console.warn\n ? console.warn.bind(console, format('WARN'), 'color: orange')\n : console.log.bind(console, `\\x1b[33m`, format('WARN'));\n }\n if (level <= LEVELS.info) {\n logger.info = console.info\n ? // ? console.info.bind(console, '\\x1b[34m', format('INFO'), 'color: blue')\n console.info.bind(console, format('INFO'), 'color: lightblue')\n : console.log.bind(console, '\\x1b[34m', format('INFO'));\n }\n if (level <= LEVELS.debug) {\n logger.debug = console.debug\n ? console.debug.bind(console, format('DEBUG'), 'color: lightgreen')\n : console.log.bind(console, '\\x1b[32m', format('DEBUG'));\n }\n};\n\nconst format = level => {\n const time = moment().format('ss.SSS');\n return `%c${time} : ${level} : `;\n};\n","/**\n * Web page integration module for the mermaid framework. It uses the mermaidAPI for mermaid functionality and to render\n * the diagrams to svg code.\n */\n// import { decode } from 'he';\nimport decode from 'entity-decode/browser';\nimport mermaidAPI from './mermaidAPI';\nimport { logger } from './logger';\nimport utils from './utils';\n\n/**\n * ## init\n * Function that goes through the document to find the chart definitions in there and render them.\n *\n * The function tags the processed attributes with the attribute data-processed and ignores found elements with the\n * attribute already set. This way the init function can be triggered several times.\n *\n * Optionally, `init` can accept in the second argument one of the following:\n * - a DOM Node\n * - an array of DOM nodes (as would come from a jQuery selector)\n * - a W3C selector, a la `.mermaid`\n *\n * ```mermaid\n * graph LR;\n * a(Find elements)-->b{Processed}\n * b-->|Yes|c(Leave element)\n * b-->|No |d(Transform)\n * ```\n * Renders the mermaid diagrams\n * @param nodes a css selector or an array of nodes\n */\nconst init = function() {\n const conf = mermaidAPI.getConfig();\n // console.log('Starting rendering diagrams (init) - mermaid.init');\n let nodes;\n if (arguments.length >= 2) {\n /*! sequence config was passed as #1 */\n if (typeof arguments[0] !== 'undefined') {\n mermaid.sequenceConfig = arguments[0];\n }\n\n nodes = arguments[1];\n } else {\n nodes = arguments[0];\n }\n\n // if last argument is a function this is the callback function\n let callback;\n if (typeof arguments[arguments.length - 1] === 'function') {\n callback = arguments[arguments.length - 1];\n logger.debug('Callback function found');\n } else {\n if (typeof conf.mermaid !== 'undefined') {\n if (typeof conf.mermaid.callback === 'function') {\n callback = conf.mermaid.callback;\n logger.debug('Callback function found');\n } else {\n logger.debug('No Callback function found');\n }\n }\n }\n nodes =\n nodes === undefined\n ? document.querySelectorAll('.mermaid')\n : typeof nodes === 'string'\n ? document.querySelectorAll(nodes)\n : nodes instanceof window.Node\n ? [nodes]\n : nodes; // Last case - sequence config was passed pick next\n\n logger.debug('Start On Load before: ' + mermaid.startOnLoad);\n if (typeof mermaid.startOnLoad !== 'undefined') {\n logger.debug('Start On Load inner: ' + mermaid.startOnLoad);\n mermaidAPI.initialize({ startOnLoad: mermaid.startOnLoad });\n }\n\n if (typeof mermaid.ganttConfig !== 'undefined') {\n mermaidAPI.initialize({ gantt: mermaid.ganttConfig });\n }\n\n let txt;\n\n for (let i = 0; i < nodes.length; i++) {\n const element = nodes[i];\n\n /*! Check if previously processed */\n if (!element.getAttribute('data-processed')) {\n element.setAttribute('data-processed', true);\n } else {\n continue;\n }\n\n const id = `mermaid-${Date.now()}`;\n\n // Fetch the graph definition including tags\n txt = element.innerHTML;\n\n // transforms the html to pure text\n txt = decode(txt)\n .trim()\n .replace(/
/gi, '
');\n\n const init = utils.detectInit(txt);\n if (init) {\n logger.debug('Detected early reinit: ', init);\n }\n\n try {\n mermaidAPI.render(\n id,\n txt,\n (svgCode, bindFunctions) => {\n element.innerHTML = svgCode;\n if (typeof callback !== 'undefined') {\n callback(id);\n }\n if (bindFunctions) bindFunctions(element);\n },\n element\n );\n } catch (e) {\n logger.warn('Syntax Error rendering');\n logger.warn(e);\n if (this.parseError) {\n this.parseError(e);\n }\n }\n }\n};\n\nconst initialize = function(config) {\n mermaidAPI.reset();\n if (typeof config.mermaid !== 'undefined') {\n if (typeof config.mermaid.startOnLoad !== 'undefined') {\n mermaid.startOnLoad = config.mermaid.startOnLoad;\n }\n if (typeof config.mermaid.htmlLabels !== 'undefined') {\n mermaid.htmlLabels = config.mermaid.htmlLabels;\n }\n }\n mermaidAPI.initialize(config);\n // mermaidAPI.reset();\n};\n\n/**\n * ##contentLoaded\n * Callback function that is called when page is loaded. This functions fetches configuration for mermaid rendering and\n * calls init for rendering the mermaid diagrams on the page.\n */\nconst contentLoaded = function() {\n let config;\n\n if (mermaid.startOnLoad) {\n // No config found, do check API config\n config = mermaidAPI.getConfig();\n if (config.startOnLoad) {\n mermaid.init();\n }\n } else {\n if (typeof mermaid.startOnLoad === 'undefined') {\n logger.debug('In start, no config');\n config = mermaidAPI.getConfig();\n if (config.startOnLoad) {\n mermaid.init();\n }\n }\n }\n};\n\nif (typeof document !== 'undefined') {\n /*!\n * Wait for document loaded before starting the execution\n */\n window.addEventListener(\n 'load',\n function() {\n contentLoaded();\n },\n false\n );\n}\n\nconst mermaid = {\n startOnLoad: true,\n htmlLabels: true,\n\n mermaidAPI,\n parse: mermaidAPI.parse,\n render: mermaidAPI.render,\n\n init,\n initialize,\n\n contentLoaded\n};\n\nexport default mermaid;\n","/**\n * This is the api to be used when optionally handling the integration with the web page, instead of using the default integration provided by mermaid.js.\n *\n * The core of this api is the [**render**](Setup.md?id=render) function which, given a graph\n * definition as text, renders the graph/diagram and returns an svg element for the graph.\n *\n * It is is then up to the user of the API to make use of the svg, either insert it somewhere in the page or do something completely different.\n *\n * In addition to the render function, a number of behavioral configuration options are available.\n *\n * @name mermaidAPI\n */\nimport Stylis from 'stylis';\nimport { select } from 'd3';\nimport pkg from '../package.json';\nimport { setConfig, getConfig, setSiteConfig, getSiteConfig } from './config';\nimport { logger, setLogLevel } from './logger';\nimport utils, { assignWithDepth } from './utils';\nimport flowRenderer from './diagrams/flowchart/flowRenderer';\nimport flowRendererV2 from './diagrams/flowchart/flowRenderer-v2';\nimport flowParser from './diagrams/flowchart/parser/flow';\nimport flowDb from './diagrams/flowchart/flowDb';\nimport sequenceRenderer from './diagrams/sequence/sequenceRenderer';\nimport sequenceParser from './diagrams/sequence/parser/sequenceDiagram';\nimport sequenceDb from './diagrams/sequence/sequenceDb';\nimport ganttRenderer from './diagrams/gantt/ganttRenderer';\nimport ganttParser from './diagrams/gantt/parser/gantt';\nimport ganttDb from './diagrams/gantt/ganttDb';\nimport classRenderer from './diagrams/class/classRenderer';\nimport classRendererV2 from './diagrams/class/classRenderer-v2';\nimport classParser from './diagrams/class/parser/classDiagram';\nimport classDb from './diagrams/class/classDb';\nimport stateRenderer from './diagrams/state/stateRenderer';\nimport stateRendererV2 from './diagrams/state/stateRenderer-v2';\nimport stateParser from './diagrams/state/parser/stateDiagram';\nimport stateDb from './diagrams/state/stateDb';\nimport gitGraphRenderer from './diagrams/git/gitGraphRenderer';\nimport gitGraphParser from './diagrams/git/parser/gitGraph';\nimport gitGraphAst from './diagrams/git/gitGraphAst';\nimport infoRenderer from './diagrams/info/infoRenderer';\nimport errorRenderer from './errorRenderer';\nimport infoParser from './diagrams/info/parser/info';\nimport infoDb from './diagrams/info/infoDb';\nimport pieRenderer from './diagrams/pie/pieRenderer';\nimport pieParser from './diagrams/pie/parser/pie';\nimport pieDb from './diagrams/pie/pieDb';\nimport erDb from './diagrams/er/erDb';\nimport erParser from './diagrams/er/parser/erDiagram';\nimport erRenderer from './diagrams/er/erRenderer';\nimport journeyParser from './diagrams/user-journey/parser/journey';\nimport journeyDb from './diagrams/user-journey/journeyDb';\nimport journeyRenderer from './diagrams/user-journey/journeyRenderer';\nimport configApi from './config';\nimport getStyles from './styles';\nimport theme from './themes';\n\nfunction parse(text) {\n const graphInit = utils.detectInit(text);\n if (graphInit) {\n reinitialize(graphInit);\n logger.debug('reinit ', graphInit);\n }\n const graphType = utils.detectType(text);\n let parser;\n\n logger.debug('Type ' + graphType);\n switch (graphType) {\n case 'git':\n parser = gitGraphParser;\n parser.parser.yy = gitGraphAst;\n break;\n case 'flowchart':\n flowDb.clear();\n parser = flowParser;\n parser.parser.yy = flowDb;\n break;\n case 'flowchart-v2':\n flowDb.clear();\n parser = flowParser;\n parser.parser.yy = flowDb;\n break;\n case 'sequence':\n parser = sequenceParser;\n parser.parser.yy = sequenceDb;\n break;\n case 'gantt':\n parser = ganttParser;\n parser.parser.yy = ganttDb;\n break;\n case 'class':\n parser = classParser;\n parser.parser.yy = classDb;\n break;\n case 'classDiagram':\n parser = classParser;\n parser.parser.yy = classDb;\n break;\n case 'state':\n parser = stateParser;\n parser.parser.yy = stateDb;\n break;\n case 'stateDiagram':\n parser = stateParser;\n parser.parser.yy = stateDb;\n break;\n case 'info':\n logger.debug('info info info');\n parser = infoParser;\n parser.parser.yy = infoDb;\n break;\n case 'pie':\n logger.debug('pie');\n parser = pieParser;\n parser.parser.yy = pieDb;\n break;\n case 'er':\n logger.debug('er');\n parser = erParser;\n parser.parser.yy = erDb;\n break;\n case 'journey':\n logger.debug('Journey');\n parser = journeyParser;\n parser.parser.yy = journeyDb;\n break;\n }\n parser.parser.yy.graphType = graphType;\n parser.parser.yy.parseError = (str, hash) => {\n const error = { str, hash };\n throw error;\n };\n\n parser.parse(text);\n return parser;\n}\n\nexport const encodeEntities = function(text) {\n let txt = text;\n\n txt = txt.replace(/style.*:\\S*#.*;/g, function(s) {\n const innerTxt = s.substring(0, s.length - 1);\n return innerTxt;\n });\n txt = txt.replace(/classDef.*:\\S*#.*;/g, function(s) {\n const innerTxt = s.substring(0, s.length - 1);\n return innerTxt;\n });\n\n txt = txt.replace(/#\\w+;/g, function(s) {\n const innerTxt = s.substring(1, s.length - 1);\n\n const isInt = /^\\+?\\d+$/.test(innerTxt);\n if (isInt) {\n return 'fl°°' + innerTxt + '¶ß';\n } else {\n return 'fl°' + innerTxt + '¶ß';\n }\n });\n\n return txt;\n};\n\nexport const decodeEntities = function(text) {\n let txt = text;\n\n txt = txt.replace(/fl°°/g, function() {\n return '';\n });\n txt = txt.replace(/fl°/g, function() {\n return '&';\n });\n txt = txt.replace(/¶ß/g, function() {\n return ';';\n });\n\n return txt;\n};\n/**\n * Function that renders an svg with a graph from a chart definition. Usage example below.\n *\n * ```js\n * mermaidAPI.initialize({\n * startOnLoad:true\n * });\n * $(function(){\n * const graphDefinition = 'graph TB\\na-->b';\n * const cb = function(svgGraph){\n * console.log(svgGraph);\n * };\n * mermaidAPI.render('id1',graphDefinition,cb);\n * });\n *```\n * @param id the id of the element to be rendered\n * @param _txt the graph definition\n * @param cb callback which is called after rendering is finished with the svg code as inparam.\n * @param container selector to element in which a div with the graph temporarily will be inserted. In one is\n * provided a hidden div will be inserted in the body of the page instead. The element will be removed when rendering is\n * completed.\n */\nconst render = function(id, _txt, cb, container) {\n let txt = _txt;\n const graphInit = utils.detectInit(txt);\n if (graphInit) {\n reinitialize(graphInit);\n } else {\n configApi.reset();\n const siteConfig = getSiteConfig();\n updateRendererConfigs(siteConfig);\n }\n\n const cnf = getConfig();\n // Check the maximum allowed text size\n if (_txt.length > cnf.maxTextSize) {\n txt = 'graph TB;a[Maximum text size in diagram exceeded];style a fill:#faa';\n }\n\n if (typeof container !== 'undefined') {\n container.innerHTML = '';\n\n select(container)\n .append('div')\n .attr('id', 'd' + id)\n .attr('style', 'font-family: ' + cnf.fontFamily)\n .append('svg')\n .attr('id', id)\n .attr('width', '100%')\n .attr('xmlns', 'http://www.w3.org/2000/svg')\n .append('g');\n } else {\n const existingSvg = document.getElementById(id);\n if (existingSvg) {\n existingSvg.remove();\n }\n const element = document.querySelector('#' + 'd' + id);\n if (element) {\n element.remove();\n }\n\n select('body')\n .append('div')\n .attr('id', 'd' + id)\n .append('svg')\n .attr('id', id)\n .attr('width', '100%')\n .attr('xmlns', 'http://www.w3.org/2000/svg')\n .append('g');\n }\n\n window.txt = txt;\n txt = encodeEntities(txt);\n\n const element = select('#d' + id).node();\n const graphType = utils.detectType(txt);\n\n // insert inline style into svg\n const svg = element.firstChild;\n const firstChild = svg.firstChild;\n\n let userStyles = '';\n // user provided theme CSS\n if (cnf.themeCSS !== undefined) {\n userStyles += `\\n${cnf.themeCSS}`;\n }\n // user provided theme CSS\n if (cnf.fontFamily !== undefined) {\n userStyles += `\\n:root { --mermaid-font-family: ${cnf.fontFamily}}`;\n }\n // user provided theme CSS\n if (cnf.altFontFamily !== undefined) {\n userStyles += `\\n:root { --mermaid-alt-font-family: ${cnf.altFontFamily}}`;\n }\n\n // classDef\n if (graphType === 'flowchart' || graphType === 'flowchart-v2' || graphType === 'graph') {\n const classes = flowRenderer.getClasses(txt);\n for (const className in classes) {\n userStyles += `\\n.${className} > * { ${classes[className].styles.join(\n ' !important; '\n )} !important; }`;\n if (classes[className].textStyles) {\n userStyles += `\\n.${className} tspan { ${classes[className].textStyles.join(\n ' !important; '\n )} !important; }`;\n }\n }\n }\n const stylis = new Stylis();\n const rules = stylis(`#${id}`, getStyles(graphType, userStyles, cnf.themeVariables));\n\n const style1 = document.createElement('style');\n style1.innerHTML = rules;\n svg.insertBefore(style1, firstChild);\n\n // Verify that the generated svgs are ok before removing this\n\n // const style2 = document.createElement('style');\n // const cs = window.getComputedStyle(svg);\n // style2.innerHTML = `#d${id} * {\n // color: ${cs.color};\n // // font: ${cs.font};\n // // font-family: Arial;\n // // font-size: 24px;\n // }`;\n // svg.insertBefore(style2, firstChild);\n\n try {\n switch (graphType) {\n case 'git':\n cnf.flowchart.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;\n gitGraphRenderer.setConf(cnf.git);\n gitGraphRenderer.draw(txt, id, false);\n break;\n case 'flowchart':\n cnf.flowchart.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;\n flowRenderer.setConf(cnf.flowchart);\n flowRenderer.draw(txt, id, false);\n break;\n case 'flowchart-v2':\n cnf.flowchart.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;\n flowRendererV2.setConf(cnf.flowchart);\n flowRendererV2.draw(txt, id, false);\n break;\n case 'sequence':\n cnf.sequence.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;\n if (cnf.sequenceDiagram) {\n // backwards compatibility\n sequenceRenderer.setConf(Object.assign(cnf.sequence, cnf.sequenceDiagram));\n console.error(\n '`mermaid config.sequenceDiagram` has been renamed to `config.sequence`. Please update your mermaid config.'\n );\n } else {\n sequenceRenderer.setConf(cnf.sequence);\n }\n sequenceRenderer.draw(txt, id);\n break;\n case 'gantt':\n cnf.gantt.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;\n ganttRenderer.setConf(cnf.gantt);\n ganttRenderer.draw(txt, id);\n break;\n case 'class':\n cnf.class.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;\n classRenderer.setConf(cnf.class);\n classRenderer.draw(txt, id);\n break;\n case 'classDiagram':\n cnf.class.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;\n classRendererV2.setConf(cnf.class);\n classRendererV2.draw(txt, id);\n break;\n case 'state':\n cnf.class.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;\n stateRenderer.setConf(cnf.state);\n stateRenderer.draw(txt, id);\n break;\n case 'stateDiagram':\n cnf.class.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;\n stateRendererV2.setConf(cnf.state);\n stateRendererV2.draw(txt, id);\n break;\n case 'info':\n cnf.class.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;\n infoRenderer.setConf(cnf.class);\n infoRenderer.draw(txt, id, pkg.version);\n break;\n case 'pie':\n cnf.class.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;\n pieRenderer.setConf(cnf.class);\n pieRenderer.draw(txt, id, pkg.version);\n break;\n case 'er':\n erRenderer.setConf(cnf.er);\n erRenderer.draw(txt, id, pkg.version);\n break;\n case 'journey':\n journeyRenderer.setConf(cnf.journey);\n journeyRenderer.draw(txt, id, pkg.version);\n break;\n }\n } catch (e) {\n // errorRenderer.setConf(cnf.class);\n errorRenderer.draw(id, pkg.version);\n throw e;\n }\n\n select(`[id=\"${id}\"]`)\n .selectAll('foreignobject > *')\n .attr('xmlns', 'http://www.w3.org/1999/xhtml');\n\n // if (cnf.arrowMarkerAbsolute) {\n // url =\n // window.location.protocol +\n // '//' +\n // window.location.host +\n // window.location.pathname +\n // window.location.search;\n // url = url.replace(/\\(/g, '\\\\(');\n // url = url.replace(/\\)/g, '\\\\)');\n // }\n\n // Fix for when the base tag is used\n let svgCode = select('#d' + id).node().innerHTML;\n logger.debug('cnf.arrowMarkerAbsolute', cnf.arrowMarkerAbsolute);\n if (!cnf.arrowMarkerAbsolute || cnf.arrowMarkerAbsolute === 'false') {\n svgCode = svgCode.replace(/marker-end=\"url\\(.*?#/g, 'marker-end=\"url(#', 'g');\n }\n\n svgCode = decodeEntities(svgCode);\n\n if (typeof cb !== 'undefined') {\n switch (graphType) {\n case 'flowchart':\n case 'flowchart-v2':\n cb(svgCode, flowDb.bindFunctions);\n break;\n case 'gantt':\n cb(svgCode, ganttDb.bindFunctions);\n break;\n case 'class':\n cb(svgCode, classDb.bindFunctions);\n break;\n default:\n cb(svgCode);\n }\n } else {\n logger.debug('CB = undefined!');\n }\n\n const node = select('#d' + id).node();\n if (node !== null && typeof node.remove === 'function') {\n select('#d' + id)\n .node()\n .remove();\n }\n\n return svgCode;\n};\n\nlet currentDirective = {};\n\nconst parseDirective = function(statement, context, type) {\n try {\n if (statement !== undefined) {\n statement = statement.trim();\n switch (context) {\n case 'open_directive':\n currentDirective = {};\n break;\n case 'type_directive':\n currentDirective.type = statement.toLowerCase();\n break;\n case 'arg_directive':\n currentDirective.args = JSON.parse(statement);\n break;\n case 'close_directive':\n handleDirective(currentDirective, type);\n currentDirective = null;\n break;\n }\n }\n } catch (error) {\n logger.error(\n `Error while rendering sequenceDiagram directive: ${statement} jison context: ${context}`\n );\n logger.error(error.message);\n }\n};\n\nconst handleDirective = function(directive, type) {\n logger.debug(`Directive type=${directive.type} with args:`, directive.args);\n switch (directive.type) {\n case 'init':\n case 'initialize': {\n ['config'].forEach(prop => {\n if (typeof directive.args[prop] !== 'undefined') {\n if (type === 'flowchart-v2') {\n type = 'flowchart';\n }\n directive.args[type] = directive.args[prop];\n delete directive.args[prop];\n }\n });\n\n reinitialize(directive.args);\n break;\n }\n case 'wrap':\n case 'nowrap':\n directive.args = { config: { wrap: directive.type === 'wrap' } };\n ['config'].forEach(prop => {\n if (typeof directive.args[prop] !== 'undefined') {\n if (type === 'flowchart-v2') {\n type = 'flowchart';\n }\n directive.args[type] = directive.args[prop];\n delete directive.args[prop];\n }\n });\n reinitialize(directive.args);\n break;\n default:\n logger.warn(\n `Unhandled directive: source: '%%{${directive.type}: ${JSON.stringify(\n directive.args ? directive.args : {}\n )}}%%`,\n directive\n );\n break;\n }\n};\n\nfunction updateRendererConfigs(conf) {\n gitGraphRenderer.setConf(conf.git);\n flowRenderer.setConf(conf.flowchart);\n flowRendererV2.setConf(conf.flowchart);\n if (typeof conf['sequenceDiagram'] !== 'undefined') {\n sequenceRenderer.setConf(assignWithDepth(conf.sequence, conf['sequenceDiagram']));\n }\n sequenceRenderer.setConf(conf.sequence);\n ganttRenderer.setConf(conf.gantt);\n classRenderer.setConf(conf.class);\n stateRenderer.setConf(conf.state);\n stateRendererV2.setConf(conf.state);\n infoRenderer.setConf(conf.class);\n pieRenderer.setConf(conf.class);\n erRenderer.setConf(conf.er);\n journeyRenderer.setConf(conf.journey);\n errorRenderer.setConf(conf.class);\n}\n\nfunction reinitialize(options) {\n // console.warn(`mermaidAPI.reinitialize: v${pkg.version}`, options);\n if (options.theme && theme[options.theme]) {\n // Todo merge with user options\n options.themeVariables = options.theme;\n }\n\n // Set default options\n const config = typeof options === 'object' ? setConfig(options) : getSiteConfig();\n updateRendererConfigs(config);\n setLogLevel(config.logLevel);\n logger.debug('mermaidAPI.reinitialize: ', config);\n}\n\nfunction initialize(options) {\n // console.log(`mermaidAPI.initialize: v${pkg.version} ${options}`);\n // Set default options\n\n if (options && options.theme && theme[options.theme]) {\n // Todo merge with user options\n options.themeVariables = theme[options.theme].getThemeVariables(options.themeVariables);\n } else {\n if (options) options.themeVariables = theme.default.getThemeVariables();\n }\n\n const config = typeof options === 'object' ? setSiteConfig(options) : getSiteConfig();\n\n updateRendererConfigs(config);\n setLogLevel(config.logLevel);\n logger.debug('mermaidAPI.initialize: ', config);\n}\n\n// function getConfig () {\n// console.warn('get config')\n// return config\n// }\nconst mermaidAPI = Object.freeze({\n render,\n parse,\n parseDirective,\n initialize,\n reinitialize,\n getConfig,\n getSiteConfig,\n reset: () => {\n // console.warn('reset');\n configApi.reset();\n const siteConfig = getSiteConfig();\n updateRendererConfigs(siteConfig);\n },\n globalReset: () => {\n configApi.reset(configApi.defaultConfig);\n updateRendererConfigs(getConfig());\n },\n defaultConfig: configApi.defaultConfig\n});\n\nsetLogLevel(getConfig().logLevel);\nconfigApi.reset(getConfig());\n\nexport default mermaidAPI;\n/**\n * ## mermaidAPI configuration defaults\n * \n *\n * <script>\n * var config = {\n * theme:'default',\n * logLevel:'fatal',\n * securityLevel:'strict',\n * startOnLoad:true,\n * arrowMarkerAbsolute:false,\n *\n * er:{\n * diagramPadding:20,\n * layoutDirection:'TB',\n * minEntityWidth:100,\n * minEntityHeight:75,\n * entityPadding:15,\n * stroke:'gray',\n * fill:'honeydew',\n * fontSize:12,\n * useMaxWidth:true,\n * },\n * flowchart:{\n * diagramPadding:8,\n * htmlLabels:true,\n * curve:'linear',\n * },\n * sequence:{\n * diagramMarginX:50,\n * diagramMarginY:10,\n * actorMargin:50,\n * width:150,\n * height:65,\n * boxMargin:10,\n * boxTextMargin:5,\n * noteMargin:10,\n * messageMargin:35,\n * messageAlign:'center',\n * mirrorActors:true,\n * bottomMarginAdj:1,\n * useMaxWidth:true,\n * rightAngles:false,\n * showSequenceNumbers:false,\n * },\n * gantt:{\n * titleTopMargin:25,\n * barHeight:20,\n * barGap:4,\n * topPadding:50,\n * leftPadding:75,\n * gridLineStartPadding:35,\n * fontSize:11,\n * fontFamily:'\"Open-Sans\", \"sans-serif\"',\n * numberSectionStyles:4,\n * axisFormat:'%Y-%m-%d',\n * }\n * };\n * mermaid.initialize(config);\n * </script>\n *
\n */\n","import classDiagram from './diagrams/class/styles';\nimport er from './diagrams/er/styles';\nimport flowchart from './diagrams/flowchart/styles';\nimport gantt from './diagrams/gantt/styles';\nimport git from './diagrams/git/styles';\nimport info from './diagrams/info/styles';\nimport pie from './diagrams/pie/styles';\nimport sequence from './diagrams/sequence/styles';\nimport stateDiagram from './diagrams/state/styles';\nimport journey from './diagrams/user-journey/styles';\n\nconst themes = {\n flowchart,\n 'flowchart-v2': flowchart,\n sequence,\n gantt,\n class: classDiagram,\n 'classDiagram-v2': classDiagram,\n stateDiagram,\n state: stateDiagram,\n git,\n info,\n pie,\n er,\n journey\n};\n\nexport const calcThemeVariables = (theme, userOverRides) => theme.calcColors(userOverRides);\n\nconst getStyles = (type, userStyles, options) => {\n return ` {\n font-family: ${options.fontFamily};\n font-size: ${options.fontSize};\n fill: ${options.textColor}\n }\n\n /* Classes common for multiple diagrams */\n\n .error-icon {\n fill: ${options.errorBkgColor};\n }\n .error-text {\n fill: ${options.errorTextColor};\n stroke: ${options.errorTextColor};\n }\n\n .edge-thickness-normal {\n stroke-width: 2px;\n }\n .edge-thickness-thick {\n stroke-width: 3.5px\n }\n .edge-pattern-solid {\n stroke-dasharray: 0;\n }\n\n .edge-pattern-dashed{\n stroke-dasharray: 3;\n }\n .edge-pattern-dotted {\n stroke-dasharray: 2;\n }\n\n .marker {\n fill: ${options.lineColor};\n }\n .marker.cross {\n stroke: ${options.lineColor};\n }\n\n svg {\n font-family: ${options.fontFamily};\n font-size: ${options.fontSize};\n }\n\n ${themes[type](options)}\n\n ${userStyles}\n\n ${type} { fill: apa;}\n`;\n};\n\nexport default getStyles;\n","import { getThemeVariables as baseThemeVariables } from './theme-base';\nimport { getThemeVariables as darkThemeVariables } from './theme-dark';\nimport { getThemeVariables as defaultThemeVariables } from './theme-default';\nimport { getThemeVariables as forestThemeVariables } from './theme-forest';\nimport { getThemeVariables as neutralThemeVariables } from './theme-neutral';\n\nexport default {\n base: {\n getThemeVariables: baseThemeVariables\n },\n dark: {\n getThemeVariables: darkThemeVariables\n },\n default: {\n getThemeVariables: defaultThemeVariables\n },\n forest: {\n getThemeVariables: forestThemeVariables\n },\n neutral: {\n getThemeVariables: neutralThemeVariables\n }\n};\n","import { darken, lighten, adjust } from 'khroma';\n\nclass Theme {\n constructor() {\n /* Base variables */\n this.primaryColor = '#9f33be';\n this.secondaryColor = '#b20238';\n this.tertiaryColor = lighten(this.primaryColor, 30);\n this.relationColor = '#000';\n\n // this.primaryColor = '#fa255e';\n // this.secondaryColor = '#c39ea0';\n // this.tertiaryColor = '#f8e5e5';\n\n // this.primaryColor = '#ECECFF';\n // this.secondaryColor = '#ffffde';\n // this.tertiaryColor = '#ffffde';\n\n this.background = 'white';\n this.lineColor = '#333333';\n this.border1 = '#9370DB';\n this.arrowheadColor = '#333333';\n this.fontFamily = '\"trebuchet ms\", verdana, arial';\n this.fontSize = '16px';\n this.labelBackground = '#e8e8e8';\n this.textColor = '#333';\n this.noteBkgColor = '#fff5ad';\n this.noteBorderColor = '#aaaa33';\n this.updateColors();\n }\n updateColors() {\n this.secondBkg = this.tertiaryColor;\n\n /* Flowchart variables */\n\n this.nodeBkg = this.primaryColor;\n this.mainBkg = this.primaryColor;\n this.nodeBorder = darken(this.primaryColor, 23); // border 1\n this.clusterBkg = this.tertiaryColor;\n this.clusterBorder = darken(this.tertiaryColor, 30);\n this.defaultLinkColor = this.lineColor;\n this.titleColor = this.textColor;\n this.edgeLabelBackground = this.labelBackground;\n\n /* Sequence Diagram variables */\n\n // this.actorBorder = lighten(this.border1, 0.5);\n this.actorBorder = lighten(this.border1, 23);\n this.actorBkg = this.mainBkg;\n this.actorTextColor = 'black';\n this.actorLineColor = 'grey';\n this.labelBoxBkgColor = this.actorBkg;\n this.signalColor = this.textColor;\n this.signalTextColor = this.textColor;\n this.labelBoxBorderColor = this.actorBorder;\n this.labelTextColor = this.actorTextColor;\n this.loopTextColor = this.actorTextColor;\n this.noteBorderColor = this.border2;\n this.noteTextColor = this.actorTextColor;\n this.activationBorderColor = darken(this.secondaryColor, 10);\n this.activationBkgColor = this.secondaryColor;\n this.sequenceNumberColor = 'white';\n\n /* Gantt chart variables */\n\n this.taskTextColor = this.taskTextLightColor;\n this.taskTextOutsideColor = this.taskTextDarkColor;\n this.sectionBkgColor = this.tertiaryColor;\n this.altSectionBkgColor = 'white';\n this.sectionBkgColor = this.secondaryColor;\n this.sectionBkgColor2 = this.tertiaryColor;\n this.altSectionBkgColor = 'white';\n this.sectionBkgColor2 = this.primaryColor;\n this.taskBorderColor = lighten(this.primaryColor, 23);\n this.taskBkgColor = this.primaryColor;\n this.taskTextLightColor = 'white';\n this.taskTextColor = 'calculated';\n this.taskTextDarkColor = 'black';\n this.taskTextOutsideColor = 'calculated';\n this.taskTextClickableColor = '#003163';\n this.activeTaskBorderColor = this.primaryColor;\n this.activeTaskBkgColor = lighten(this.primaryColor, 23);\n this.gridColor = 'lightgrey';\n this.doneTaskBkgColor = 'lightgrey';\n this.doneTaskBorderColor = 'grey';\n this.critBorderColor = '#ff8888';\n this.critBkgColor = 'red';\n this.todayLineColor = 'red';\n\n /* state colors */\n this.labelColor = 'black';\n this.errorBkgColor = '#552222';\n this.errorTextColor = '#552222';\n\n /* state colors */\n\n /* class */\n this.classText = this.textColor;\n\n /* user-journey */\n this.fillType0 = this.primaryColor;\n this.fillType1 = this.secondaryColor;\n this.fillType2 = adjust(this.primaryColor, { h: 64 });\n this.fillType3 = adjust(this.secondaryColor, { h: 64 });\n this.fillType4 = adjust(this.primaryColor, { h: -64 });\n this.fillType5 = adjust(this.secondaryColor, { h: -64 });\n this.fillType6 = adjust(this.primaryColor, { h: 128 });\n this.fillType7 = adjust(this.secondaryColor, { h: 128 });\n }\n calculate(overrides) {\n if (typeof overrides !== 'object') {\n // Calculate colors form base colors\n this.updateColors();\n return;\n }\n\n const keys = Object.keys(overrides);\n\n // Copy values from overrides, this is mainly for base colors\n keys.forEach(k => {\n this[k] = overrides[k];\n });\n\n // Calculate colors form base colors\n this.updateColors();\n // Copy values from overrides again in case of an override of derived value\n keys.forEach(k => {\n this[k] = overrides[k];\n });\n }\n}\n\nexport const getThemeVariables = userOverrides => {\n const theme = new Theme();\n theme.calculate(userOverrides);\n return theme;\n};\n","import { invert, lighten, darken, rgba, adjust } from 'khroma';\n\nclass Theme {\n constructor() {\n this.background = '#333';\n this.primaryColor = '#1f2020';\n this.secondaryColor = lighten(this.primaryColor, 16);\n this.mainBkg = '#1f2020';\n this.secondBkg = 'calculated';\n this.mainContrastColor = 'lightgrey';\n this.darkTextColor = lighten(invert('#323D47'), 10);\n this.lineColor = 'calculated';\n this.border1 = '#81B1DB';\n this.border2 = rgba(255, 255, 255, 0.25);\n this.arrowheadColor = 'calculated';\n this.fontFamily = '\"trebuchet ms\", verdana, arial';\n this.fontSize = '16px';\n this.labelBackground = '#181818';\n this.textColor = '#ccc';\n /* Flowchart variables */\n\n this.nodeBkg = 'calculated';\n this.nodeBorder = 'calculated';\n this.clusterBkg = 'calculated';\n this.clusterBorder = 'calculated';\n this.defaultLinkColor = 'calculated';\n this.titleColor = '#F9FFFE';\n this.edgeLabelBackground = 'calculated';\n\n /* Sequence Diagram variables */\n\n this.actorBorder = 'calculated';\n this.actorBkg = 'calculated';\n this.actorTextColor = 'calculated';\n this.actorLineColor = 'calculated';\n this.signalColor = 'calculated';\n this.signalTextColor = 'calculated';\n this.labelBoxBkgColor = 'calculated';\n this.labelBoxBorderColor = 'calculated';\n this.labelTextColor = 'calculated';\n this.loopTextColor = 'calculated';\n this.noteBorderColor = 'calculated';\n this.noteBkgColor = '#fff5ad';\n this.noteTextColor = 'calculated';\n this.activationBorderColor = 'calculated';\n this.activationBkgColor = 'calculated';\n this.sequenceNumberColor = 'black';\n\n /* Gantt chart variables */\n\n this.sectionBkgColor = darken('#EAE8D9', 30);\n this.altSectionBkgColor = 'calculated';\n this.sectionBkgColor2 = '#EAE8D9';\n this.taskBorderColor = rgba(255, 255, 255, 70);\n this.taskBkgColor = 'calculated';\n this.taskTextColor = 'calculated';\n this.taskTextLightColor = 'calculated';\n this.taskTextOutsideColor = 'calculated';\n this.taskTextClickableColor = '#003163';\n this.activeTaskBorderColor = rgba(255, 255, 255, 50);\n this.activeTaskBkgColor = '#81B1DB';\n this.gridColor = 'calculated';\n this.doneTaskBkgColor = 'calculated';\n this.doneTaskBorderColor = 'grey';\n this.critBorderColor = '#E83737';\n this.critBkgColor = '#E83737';\n this.taskTextDarkColor = 'calculated';\n this.todayLineColor = '#DB5757';\n\n /* state colors */\n this.labelColor = 'calculated';\n\n this.errorBkgColor = '#a44141';\n this.errorTextColor = '#ddd';\n }\n updateColors() {\n this.secondBkg = lighten(this.mainBkg, 16);\n this.lineColor = this.mainContrastColor;\n this.arrowheadColor = this.mainContrastColor;\n /* Flowchart variables */\n\n this.nodeBkg = this.mainBkg;\n this.nodeBorder = this.border1;\n this.clusterBkg = this.secondBkg;\n this.clusterBorder = this.border2;\n this.defaultLinkColor = this.lineColor;\n this.edgeLabelBackground = lighten(this.labelBackground, 25);\n\n /* Sequence Diagram variables */\n\n this.actorBorder = this.border1;\n this.actorBkg = this.mainBkg;\n this.actorTextColor = this.mainContrastColor;\n this.actorLineColor = this.mainContrastColor;\n this.signalColor = this.mainContrastColor;\n this.signalTextColor = this.mainContrastColor;\n this.labelBoxBkgColor = this.actorBkg;\n this.labelBoxBorderColor = this.actorBorder;\n this.labelTextColor = this.mainContrastColor;\n this.loopTextColor = this.mainContrastColor;\n this.noteBorderColor = this.border2;\n this.noteTextColor = this.mainBkg;\n this.activationBorderColor = this.border1;\n this.activationBkgColor = this.secondBkg;\n\n /* Gantt chart variables */\n\n this.altSectionBkgColor = this.background;\n this.taskBkgColor = lighten(this.mainBkg, 23);\n this.taskTextColor = this.darkTextColor;\n this.taskTextLightColor = this.mainContrastColor;\n this.taskTextOutsideColor = this.taskTextLightColor;\n this.gridColor = this.mainContrastColor;\n this.doneTaskBkgColor = this.mainContrastColor;\n this.taskTextDarkColor = this.darkTextColor;\n\n /* state colors */\n this.labelColor = this.textColor;\n this.altBackground = lighten(this.background, 20);\n\n this.fillType0 = this.primaryColor;\n this.fillType1 = this.secondaryColor;\n this.fillType2 = adjust(this.primaryColor, { h: 64 });\n this.fillType3 = adjust(this.secondaryColor, { h: 64 });\n this.fillType4 = adjust(this.primaryColor, { h: -64 });\n this.fillType5 = adjust(this.secondaryColor, { h: -64 });\n this.fillType6 = adjust(this.primaryColor, { h: 128 });\n this.fillType7 = adjust(this.secondaryColor, { h: 128 });\n /* class */\n this.classText = this.nodeBorder;\n }\n calculate(overrides) {\n if (typeof overrides !== 'object') {\n // Calculate colors form base colors\n this.updateColors();\n return;\n }\n\n const keys = Object.keys(overrides);\n\n // Copy values from overrides, this is mainly for base colors\n keys.forEach(k => {\n this[k] = overrides[k];\n });\n\n // Calculate colors form base colors\n this.updateColors();\n // Copy values from overrides again in case of an override of derived value\n keys.forEach(k => {\n this[k] = overrides[k];\n });\n }\n}\n\nexport const getThemeVariables = userOverrides => {\n const theme = new Theme();\n theme.calculate(userOverrides);\n return theme;\n};\n","import { lighten, rgba, adjust } from 'khroma';\n\nclass Theme {\n constructor() {\n /* Base variables */\n this.primaryColor = '#ECECFF';\n this.secondaryColor = '#ffffde';\n this.background = 'white';\n this.mainBkg = '#ECECFF';\n this.secondBkg = '#ffffde';\n this.lineColor = '#333333';\n this.border1 = '#9370DB';\n this.border2 = '#aaaa33';\n this.arrowheadColor = '#333333';\n this.fontFamily = '\"trebuchet ms\", verdana, arial';\n this.fontSize = '16px';\n this.labelBackground = '#e8e8e8';\n this.textColor = '#333';\n\n /* Flowchart variables */\n\n this.nodeBkg = 'calculated';\n this.nodeBorder = 'calculated';\n this.clusterBkg = 'calculated';\n this.clusterBorder = 'calculated';\n this.defaultLinkColor = 'calculated';\n this.titleColor = 'calculated';\n this.edgeLabelBackground = 'calculated';\n\n /* Sequence Diagram variables */\n\n this.actorBorder = 'calculated';\n this.actorBkg = 'calculated';\n this.actorTextColor = 'black';\n this.actorLineColor = 'grey';\n this.signalColor = 'calculated';\n this.signalTextColor = 'calculated';\n this.labelBoxBkgColor = 'calculated';\n this.labelBoxBorderColor = 'calculated';\n this.labelTextColor = 'calculated';\n this.loopTextColor = 'calculated';\n this.noteBorderColor = 'calculated';\n this.noteBkgColor = '#fff5ad';\n this.noteTextColor = 'calculated';\n this.activationBorderColor = '#666';\n this.activationBkgColor = '#f4f4f4';\n this.sequenceNumberColor = 'white';\n\n /* Gantt chart variables */\n\n this.sectionBkgColor = 'calculated';\n this.altSectionBkgColor = 'calculated';\n this.sectionBkgColor2 = 'calculated';\n this.taskBorderColor = 'calculated';\n this.taskBkgColor = 'calculated';\n this.taskTextLightColor = 'calculated';\n this.taskTextColor = this.taskTextLightColor;\n this.taskTextDarkColor = 'calculated';\n this.taskTextOutsideColor = this.taskTextDarkColor;\n this.taskTextClickableColor = 'calculated';\n this.activeTaskBorderColor = 'calculated';\n this.activeTaskBkgColor = 'calculated';\n this.gridColor = 'calculated';\n this.doneTaskBkgColor = 'calculated';\n this.doneTaskBorderColor = 'calculated';\n this.critBorderColor = 'calculated';\n this.critBkgColor = 'calculated';\n this.todayLineColor = 'calculated';\n\n this.sectionBkgColor = rgba(102, 102, 255, 0.49);\n this.altSectionBkgColor = 'white';\n this.sectionBkgColor2 = '#fff400';\n this.taskBorderColor = '#534fbc';\n this.taskBkgColor = '#8a90dd';\n this.taskTextLightColor = 'white';\n this.taskTextColor = 'calculated';\n this.taskTextDarkColor = 'black';\n this.taskTextOutsideColor = 'calculated';\n this.taskTextClickableColor = '#003163';\n this.activeTaskBorderColor = '#534fbc';\n this.activeTaskBkgColor = '#bfc7ff';\n this.gridColor = 'lightgrey';\n this.doneTaskBkgColor = 'lightgrey';\n this.doneTaskBorderColor = 'grey';\n this.critBorderColor = '#ff8888';\n this.critBkgColor = 'red';\n this.todayLineColor = 'red';\n\n /* state colors */\n this.labelColor = 'black';\n this.errorBkgColor = '#552222';\n this.errorTextColor = '#552222';\n this.updateColors();\n }\n updateColors() {\n /* Flowchart variables */\n\n this.nodeBkg = this.mainBkg;\n this.nodeBorder = this.border1; // border 1\n this.clusterBkg = this.secondBkg;\n this.clusterBorder = this.border2;\n this.defaultLinkColor = this.lineColor;\n this.titleColor = this.textColor;\n this.edgeLabelBackground = this.labelBackground;\n\n /* Sequence Diagram variables */\n\n // this.actorBorder = lighten(this.border1, 0.5);\n this.actorBorder = lighten(this.border1, 23);\n this.actorBkg = this.mainBkg;\n this.labelBoxBkgColor = this.actorBkg;\n this.signalColor = this.textColor;\n this.signalTextColor = this.textColor;\n this.labelBoxBorderColor = this.actorBorder;\n this.labelTextColor = this.actorTextColor;\n this.loopTextColor = this.actorTextColor;\n this.noteBorderColor = this.border2;\n this.noteTextColor = this.actorTextColor;\n\n /* Gantt chart variables */\n\n this.taskTextColor = this.taskTextLightColor;\n this.taskTextOutsideColor = this.taskTextDarkColor;\n\n /* state colors */\n /* class */\n this.classText = this.nodeBorder;\n /* journey */\n this.fillType0 = this.primaryColor;\n this.fillType1 = this.secondaryColor;\n this.fillType2 = adjust(this.primaryColor, { h: 64 });\n this.fillType3 = adjust(this.secondaryColor, { h: 64 });\n this.fillType4 = adjust(this.primaryColor, { h: -64 });\n this.fillType5 = adjust(this.secondaryColor, { h: -64 });\n this.fillType6 = adjust(this.primaryColor, { h: 128 });\n this.fillType7 = adjust(this.secondaryColor, { h: 128 });\n }\n calculate(overrides) {\n if (typeof overrides !== 'object') {\n // Calculate colors form base colors\n this.updateColors();\n return;\n }\n\n const keys = Object.keys(overrides);\n\n // Copy values from overrides, this is mainly for base colors\n keys.forEach(k => {\n this[k] = overrides[k];\n });\n\n // Calculate colors form base colors\n this.updateColors();\n // Copy values from overrides again in case of an override of derived value\n keys.forEach(k => {\n this[k] = overrides[k];\n });\n }\n}\n\nexport const getThemeVariables = userOverrides => {\n const theme = new Theme();\n theme.calculate(userOverrides);\n return theme;\n};\n","import { darken, adjust } from 'khroma';\nclass Theme {\n constructor() {\n /* Base vales */\n this.primaryColor = '#cde498';\n this.secondaryColor = '#cdffb2';\n this.background = 'white';\n this.mainBkg = '#cde498';\n this.secondBkg = '#cdffb2';\n this.lineColor = 'green';\n this.border1 = '#13540c';\n this.border2 = '#6eaa49';\n this.arrowheadColor = 'green';\n this.fontFamily = '\"trebuchet ms\", verdana, arial';\n this.fontSize = '16px';\n\n /* Flowchart variables */\n\n this.nodeBkg = 'calculated';\n this.nodeBorder = 'calculated';\n this.clusterBkg = 'calculated';\n this.clusterBorder = 'calculated';\n this.defaultLinkColor = 'calculated';\n this.titleColor = '#333';\n this.edgeLabelBackground = '#e8e8e8';\n\n /* Sequence Diagram variables */\n\n this.actorBorder = 'calculated';\n this.actorBkg = 'calculated';\n this.actorTextColor = 'black';\n this.actorLineColor = 'grey';\n this.signalColor = '#333';\n this.signalTextColor = '#333';\n this.labelBoxBkgColor = 'calculated';\n this.labelBoxBorderColor = '#326932';\n this.labelTextColor = 'calculated';\n this.loopTextColor = 'calculated';\n this.noteBorderColor = 'calculated';\n this.noteBkgColor = '#fff5ad';\n this.noteTextColor = 'calculated';\n this.activationBorderColor = '#666';\n this.activationBkgColor = '#f4f4f4';\n this.sequenceNumberColor = 'white';\n\n /* Gantt chart variables */\n\n this.sectionBkgColor = '#6eaa49';\n this.altSectionBkgColor = 'white';\n this.sectionBkgColor2 = '#6eaa49';\n this.taskBorderColor = 'calculated';\n this.taskBkgColor = '#487e3a';\n this.taskTextLightColor = 'white';\n this.taskTextColor = 'calculated';\n this.taskTextDarkColor = 'black';\n this.taskTextOutsideColor = 'calculated';\n this.taskTextClickableColor = '#003163';\n this.activeTaskBorderColor = 'calculated';\n this.activeTaskBkgColor = 'calculated';\n this.gridColor = 'lightgrey';\n this.doneTaskBkgColor = 'lightgrey';\n this.doneTaskBorderColor = 'grey';\n this.critBorderColor = '#ff8888';\n this.critBkgColor = 'red';\n this.todayLineColor = 'red';\n\n /* state colors */\n this.labelColor = 'black';\n\n this.errorBkgColor = '#552222';\n this.errorTextColor = '#552222';\n }\n updateColors() {\n /* Flowchart variables */\n\n this.nodeBkg = this.mainBkg;\n this.nodeBorder = this.border1;\n this.clusterBkg = this.secondBkg;\n this.clusterBorder = this.border2;\n this.defaultLinkColor = this.lineColor;\n\n /* Sequence Diagram variables */\n\n this.actorBorder = darken(this.mainBkg, 20);\n this.actorBkg = this.mainBkg;\n this.labelBoxBkgColor = this.actorBkg;\n this.labelTextColor = this.actorTextColor;\n this.loopTextColor = this.actorTextColor;\n this.noteBorderColor = this.border2;\n this.noteTextColor = this.actorTextColor;\n\n /* Gantt chart variables */\n\n this.taskBorderColor = this.border1;\n this.taskTextColor = this.taskTextLightColor;\n this.taskTextOutsideColor = this.taskTextDarkColor;\n this.activeTaskBorderColor = this.taskBorderColor;\n this.activeTaskBkgColor = this.mainBkg;\n\n /* state colors */\n /* class */\n this.classText = this.nodeBorder;\n /* journey */\n this.fillType0 = this.primaryColor;\n this.fillType1 = this.secondaryColor;\n this.fillType2 = adjust(this.primaryColor, { h: 64 });\n this.fillType3 = adjust(this.secondaryColor, { h: 64 });\n this.fillType4 = adjust(this.primaryColor, { h: -64 });\n this.fillType5 = adjust(this.secondaryColor, { h: -64 });\n this.fillType6 = adjust(this.primaryColor, { h: 128 });\n this.fillType7 = adjust(this.secondaryColor, { h: 128 });\n }\n calculate(overrides) {\n if (typeof overrides !== 'object') {\n // Calculate colors form base colors\n this.updateColors();\n return;\n }\n\n const keys = Object.keys(overrides);\n\n // Copy values from overrides, this is mainly for base colors\n keys.forEach(k => {\n this[k] = overrides[k];\n });\n\n // Calculate colors form base colors\n this.updateColors();\n // Copy values from overrides again in case of an override of derived value\n keys.forEach(k => {\n this[k] = overrides[k];\n });\n }\n}\n\nexport const getThemeVariables = userOverrides => {\n const theme = new Theme();\n theme.calculate(userOverrides);\n return theme;\n};\n","import { darken, lighten, adjust } from 'khroma';\n\n// const Color = require ( 'khroma/dist/color' ).default\n// Color.format.hex.stringify(Color.parse('hsl(210, 66.6666666667%, 95%)')); // => \"#EAF2FB\"\n\nclass Theme {\n constructor() {\n this.primaryColor = '#eee';\n this.contrast = '#26a';\n this.secondaryColor = lighten(this.contrast, 55);\n this.background = 'white';\n this.mainBkg = '#eee';\n this.secondBkg = 'calculated';\n this.lineColor = '#666';\n this.border1 = '#999';\n this.border2 = 'calculated';\n this.note = '#ffa';\n this.text = '#333';\n this.critical = '#d42';\n this.done = '#bbb';\n this.arrowheadColor = '#333333';\n this.fontFamily = '\"trebuchet ms\", verdana, arial';\n this.fontSize = '16px';\n\n /* Flowchart variables */\n\n this.nodeBkg = 'calculated';\n this.nodeBorder = 'calculated';\n this.clusterBkg = 'calculated';\n this.clusterBorder = 'calculated';\n this.defaultLinkColor = 'calculated';\n this.titleColor = 'calculated';\n this.edgeLabelBackground = 'white';\n\n /* Sequence Diagram variables */\n\n this.actorBorder = 'calculated';\n this.actorBkg = 'calculated';\n this.actorTextColor = 'calculated';\n this.actorLineColor = 'calculated';\n this.signalColor = 'calculated';\n this.signalTextColor = 'calculated';\n this.labelBoxBkgColor = 'calculated';\n this.labelBoxBorderColor = 'calculated';\n this.labelTextColor = 'calculated';\n this.loopTextColor = 'calculated';\n this.noteBorderColor = 'calculated';\n this.noteBkgColor = 'calculated';\n this.noteTextColor = 'calculated';\n this.activationBorderColor = '#666';\n this.activationBkgColor = '#f4f4f4';\n this.sequenceNumberColor = 'white';\n\n /* Gantt chart variables */\n\n this.sectionBkgColor = 'calculated';\n this.altSectionBkgColor = 'white';\n this.sectionBkgColor2 = 'calculated';\n this.taskBorderColor = 'calculated';\n this.taskBkgColor = 'calculated';\n this.taskTextLightColor = 'white';\n this.taskTextColor = 'calculated';\n this.taskTextDarkColor = 'calculated';\n this.taskTextOutsideColor = 'calculated';\n this.taskTextClickableColor = '#003163';\n this.activeTaskBorderColor = 'calculated';\n this.activeTaskBkgColor = 'calculated';\n this.gridColor = 'calculated';\n this.doneTaskBkgColor = 'calculated';\n this.doneTaskBorderColor = 'calculated';\n this.critBkgColor = 'calculated';\n this.critBorderColor = 'calculated';\n this.todayLineColor = 'calculated';\n\n /* state colors */\n this.labelColor = 'black';\n\n this.errorBkgColor = '#552222';\n this.errorTextColor = '#552222';\n }\n updateColors() {\n this.secondBkg = lighten(this.contrast, 55);\n this.border2 = this.contrast;\n\n /* Flowchart variables */\n\n this.nodeBkg = this.mainBkg;\n this.nodeBorder = this.border1;\n this.clusterBkg = this.secondBkg;\n this.clusterBorder = this.border2;\n this.defaultLinkColor = this.lineColor;\n this.titleColor = this.text;\n\n /* Sequence Diagram variables */\n\n this.actorBorder = lighten(this.border1, 23);\n this.actorBkg = this.mainBkg;\n this.actorTextColor = this.text;\n this.actorLineColor = this.lineColor;\n this.signalColor = this.text;\n this.signalTextColor = this.text;\n this.labelBoxBkgColor = this.actorBkg;\n this.labelBoxBorderColor = this.actorBorder;\n this.labelTextColor = this.text;\n this.loopTextColor = this.text;\n this.noteBorderColor = darken(this.note, 60);\n this.noteBkgColor = this.note;\n this.noteTextColor = this.actorTextColor;\n\n /* Gantt chart variables */\n\n this.sectionBkgColor = lighten(this.contrast, 30);\n this.sectionBkgColor2 = lighten(this.contrast, 30);\n\n this.taskBorderColor = darken(this.contrast, 10);\n\n this.taskBkgColor = this.contrast;\n this.taskTextColor = this.taskTextLightColor;\n this.taskTextDarkColor = this.text;\n this.taskTextOutsideColor = this.taskTextDarkColor;\n this.activeTaskBorderColor = this.taskBorderColor;\n this.activeTaskBkgColor = this.mainBkg;\n this.gridColor = lighten(this.border1, 30);\n\n this.doneTaskBkgColor = this.done;\n this.doneTaskBorderColor = this.lineColor;\n this.critBkgColor = this.critical;\n this.critBorderColor = darken(this.critBkgColor, 10);\n\n this.todayLineColor = this.critBkgColor;\n\n /* state colors */\n /* class */\n this.classText = this.nodeBorder;\n /* journey */\n this.fillType0 = this.primaryColor;\n this.fillType1 = this.secondaryColor;\n this.fillType2 = adjust(this.primaryColor, { h: 64 });\n this.fillType3 = adjust(this.secondaryColor, { h: 64 });\n this.fillType4 = adjust(this.primaryColor, { h: -64 });\n this.fillType5 = adjust(this.secondaryColor, { h: -64 });\n this.fillType6 = adjust(this.primaryColor, { h: 128 });\n this.fillType7 = adjust(this.secondaryColor, { h: 128 });\n }\n calculate(overrides) {\n if (typeof overrides !== 'object') {\n // Calculate colors form base colors\n this.updateColors();\n return;\n }\n\n const keys = Object.keys(overrides);\n\n // Copy values from overrides, this is mainly for base colors\n keys.forEach(k => {\n this[k] = overrides[k];\n });\n\n // Calculate colors form base colors\n this.updateColors();\n // Copy values from overrides again in case of an override of derived value\n keys.forEach(k => {\n this[k] = overrides[k];\n });\n }\n}\n\nexport const getThemeVariables = userOverrides => {\n const theme = new Theme();\n theme.calculate(userOverrides);\n console.info('Theme', userOverrides, theme);\n return theme;\n};\n","import {\n curveBasis,\n curveBasisClosed,\n curveBasisOpen,\n curveLinear,\n curveLinearClosed,\n curveMonotoneX,\n curveMonotoneY,\n curveNatural,\n curveStep,\n curveStepAfter,\n curveStepBefore,\n select\n} from 'd3';\nimport { logger } from './logger';\nimport { sanitizeUrl } from '@braintree/sanitize-url';\nimport common from './diagrams/common/common';\n// import cryptoRandomString from 'crypto-random-string';\n\n// Effectively an enum of the supported curve types, accessible by name\nconst d3CurveTypes = {\n curveBasis: curveBasis,\n curveBasisClosed: curveBasisClosed,\n curveBasisOpen: curveBasisOpen,\n curveLinear: curveLinear,\n curveLinearClosed: curveLinearClosed,\n curveMonotoneX: curveMonotoneX,\n curveMonotoneY: curveMonotoneY,\n curveNatural: curveNatural,\n curveStep: curveStep,\n curveStepAfter: curveStepAfter,\n curveStepBefore: curveStepBefore\n};\nconst directive = /[%]{2}[{]\\s*(?:(?:(\\w+)\\s*:|(\\w+))\\s*(?:(?:(\\w+))|((?:(?![}][%]{2}).|\\r?\\n)*))?\\s*)(?:[}][%]{2})?/gi;\nconst directiveWithoutOpen = /\\s*(?:(?:(\\w+)(?=:):|(\\w+))\\s*(?:(?:(\\w+))|((?:(?![}][%]{2}).|\\r?\\n)*))?\\s*)(?:[}][%]{2})?/gi;\nconst anyComment = /\\s*%%.*\\n/gm;\n\n/**\n * @function detectInit\n * Detects the init config object from the text\n * ```mermaid\n * %%{init: {\"theme\": \"debug\", \"logLevel\": 1 }}%%\n * graph LR\n * a-->b\n * b-->c\n * c-->d\n * d-->e\n * e-->f\n * f-->g\n * g-->h\n * ```\n * or\n * ```mermaid\n * %%{initialize: {\"theme\": \"dark\", logLevel: \"debug\" }}%%\n * graph LR\n * a-->b\n * b-->c\n * c-->d\n * d-->e\n * e-->f\n * f-->g\n * g-->h\n * ```\n *\n * @param {string} text The text defining the graph\n * @returns {object} the json object representing the init passed to mermaid.initialize()\n */\nexport const detectInit = function(text) {\n let inits = detectDirective(text, /(?:init\\b)|(?:initialize\\b)/);\n let results = {};\n if (Array.isArray(inits)) {\n let args = inits.map(init => init.args);\n results = assignWithDepth(results, [...args]);\n } else {\n results = inits.args;\n }\n if (results) {\n let type = detectType(text);\n ['config'].forEach(prop => {\n if (typeof results[prop] !== 'undefined') {\n if (type === 'flowchart-v2') {\n type = 'flowchart';\n }\n results[type] = results[prop];\n delete results[prop];\n }\n });\n }\n return results;\n};\n\n/**\n * @function detectDirective\n * Detects the directive from the text. Text can be single line or multiline. If type is null or omitted\n * the first directive encountered in text will be returned\n * ```mermaid\n * graph LR\n * %%{somedirective}%%\n * a-->b\n * b-->c\n * c-->d\n * d-->e\n * e-->f\n * f-->g\n * g-->h\n * ```\n *\n * @param {string} text The text defining the graph\n * @param {string|RegExp} type The directive to return (default: null)\n * @returns {object | Array} An object or Array representing the directive(s): { type: string, args: object|null } matched by the input type\n * if a single directive was found, that directive object will be returned.\n */\nexport const detectDirective = function(text, type = null) {\n try {\n const commentWithoutDirectives = new RegExp(\n `[%]{2}(?![{]${directiveWithoutOpen.source})(?=[}][%]{2}).*\\n`,\n 'ig'\n );\n text = text\n .trim()\n .replace(commentWithoutDirectives, '')\n .replace(/'/gm, '\"');\n logger.debug(\n `Detecting diagram directive${type !== null ? ' type:' + type : ''} based on the text:${text}`\n );\n let match,\n result = [];\n while ((match = directive.exec(text)) !== null) {\n // This is necessary to avoid infinite loops with zero-width matches\n if (match.index === directive.lastIndex) {\n directive.lastIndex++;\n }\n if (\n (match && !type) ||\n (type && match[1] && match[1].match(type)) ||\n (type && match[2] && match[2].match(type))\n ) {\n let type = match[1] ? match[1] : match[2];\n let args = match[3] ? match[3].trim() : match[4] ? JSON.parse(match[4].trim()) : null;\n result.push({ type, args });\n }\n }\n if (result.length === 0) {\n result.push({ type: text, args: null });\n }\n\n return result.length === 1 ? result[0] : result;\n } catch (error) {\n logger.error(\n `ERROR: ${error.message} - Unable to parse directive${\n type !== null ? ' type:' + type : ''\n } based on the text:${text}`\n );\n return { type: null, args: null };\n }\n};\n\n/**\n * @function detectType\n * Detects the type of the graph text. Takes into consideration the possible existence of an %%init\n * directive\n * ```mermaid\n * %%{initialize: {\"startOnLoad\": true, logLevel: \"fatal\" }}%%\n * graph LR\n * a-->b\n * b-->c\n * c-->d\n * d-->e\n * e-->f\n * f-->g\n * g-->h\n * ```\n *\n * @param {string} text The text defining the graph\n * @returns {string} A graph definition key\n */\nexport const detectType = function(text) {\n text = text.replace(directive, '').replace(anyComment, '\\n');\n logger.debug('Detecting diagram type based on the text ' + text);\n if (text.match(/^\\s*sequenceDiagram/)) {\n return 'sequence';\n }\n\n if (text.match(/^\\s*gantt/)) {\n return 'gantt';\n }\n if (text.match(/^\\s*classDiagram-v2/)) {\n return 'classDiagram';\n }\n if (text.match(/^\\s*classDiagram/)) {\n return 'class';\n }\n\n if (text.match(/^\\s*stateDiagram-v2/)) {\n return 'stateDiagram';\n }\n\n if (text.match(/^\\s*stateDiagram/)) {\n return 'state';\n }\n\n if (text.match(/^\\s*gitGraph/)) {\n return 'git';\n }\n if (text.match(/^\\s*flowchart/)) {\n return 'flowchart-v2';\n }\n\n if (text.match(/^\\s*info/)) {\n return 'info';\n }\n if (text.match(/^\\s*pie/)) {\n return 'pie';\n }\n\n if (text.match(/^\\s*erDiagram/)) {\n return 'er';\n }\n\n if (text.match(/^\\s*journey/)) {\n return 'journey';\n }\n\n return 'flowchart';\n};\n\nconst memoize = (fn, resolver) => {\n let cache = {};\n return (...args) => {\n let n = resolver ? resolver.apply(this, args) : args[0];\n if (n in cache) {\n return cache[n];\n } else {\n let result = fn(...args);\n cache[n] = result;\n return result;\n }\n };\n};\n\n/**\n * @function isSubstringInArray\n * Detects whether a substring in present in a given array\n * @param {string} str The substring to detect\n * @param {array} arr The array to search\n * @returns {number} the array index containing the substring or -1 if not present\n **/\nexport const isSubstringInArray = function(str, arr) {\n for (let i = 0; i < arr.length; i++) {\n if (arr[i].match(str)) return i;\n }\n return -1;\n};\n\nexport const interpolateToCurve = (interpolate, defaultCurve) => {\n if (!interpolate) {\n return defaultCurve;\n }\n const curveName = `curve${interpolate.charAt(0).toUpperCase() + interpolate.slice(1)}`;\n return d3CurveTypes[curveName] || defaultCurve;\n};\n\nexport const formatUrl = (linkStr, config) => {\n let url = linkStr.trim();\n\n if (url) {\n if (config.securityLevel !== 'loose') {\n return sanitizeUrl(url);\n }\n\n return url;\n }\n};\n\nexport const runFunc = (functionName, ...params) => {\n const arrPaths = functionName.split('.');\n\n const len = arrPaths.length - 1;\n const fnName = arrPaths[len];\n\n let obj = window;\n for (let i = 0; i < len; i++) {\n obj = obj[arrPaths[i]];\n if (!obj) return;\n }\n\n obj[fnName](...params);\n};\n\nconst distance = (p1, p2) =>\n p1 && p2 ? Math.sqrt(Math.pow(p2.x - p1.x, 2) + Math.pow(p2.y - p1.y, 2)) : 0;\n\nconst traverseEdge = points => {\n let prevPoint;\n let totalDistance = 0;\n\n points.forEach(point => {\n totalDistance += distance(point, prevPoint);\n prevPoint = point;\n });\n\n // Traverse half of total distance along points\n let remainingDistance = totalDistance / 2;\n let center = undefined;\n prevPoint = undefined;\n points.forEach(point => {\n if (prevPoint && !center) {\n const vectorDistance = distance(point, prevPoint);\n if (vectorDistance < remainingDistance) {\n remainingDistance -= vectorDistance;\n } else {\n // The point is remainingDistance from prevPoint in the vector between prevPoint and point\n // Calculate the coordinates\n const distanceRatio = remainingDistance / vectorDistance;\n if (distanceRatio <= 0) center = prevPoint;\n if (distanceRatio >= 1) center = { x: point.x, y: point.y };\n if (distanceRatio > 0 && distanceRatio < 1) {\n center = {\n x: (1 - distanceRatio) * prevPoint.x + distanceRatio * point.x,\n y: (1 - distanceRatio) * prevPoint.y + distanceRatio * point.y\n };\n }\n }\n }\n prevPoint = point;\n });\n return center;\n};\n\nconst calcLabelPosition = points => {\n return traverseEdge(points);\n};\n\nconst calcCardinalityPosition = (isRelationTypePresent, points, initialPosition) => {\n let prevPoint;\n let totalDistance = 0; // eslint-disable-line\n if (points[0] !== initialPosition) {\n points = points.reverse();\n }\n points.forEach(point => {\n totalDistance += distance(point, prevPoint);\n prevPoint = point;\n });\n\n // Traverse only 25 total distance along points to find cardinality point\n const distanceToCardinalityPoint = 25;\n\n let remainingDistance = distanceToCardinalityPoint;\n let center;\n prevPoint = undefined;\n points.forEach(point => {\n if (prevPoint && !center) {\n const vectorDistance = distance(point, prevPoint);\n if (vectorDistance < remainingDistance) {\n remainingDistance -= vectorDistance;\n } else {\n // The point is remainingDistance from prevPoint in the vector between prevPoint and point\n // Calculate the coordinates\n const distanceRatio = remainingDistance / vectorDistance;\n if (distanceRatio <= 0) center = prevPoint;\n if (distanceRatio >= 1) center = { x: point.x, y: point.y };\n if (distanceRatio > 0 && distanceRatio < 1) {\n center = {\n x: (1 - distanceRatio) * prevPoint.x + distanceRatio * point.x,\n y: (1 - distanceRatio) * prevPoint.y + distanceRatio * point.y\n };\n }\n }\n }\n prevPoint = point;\n });\n // if relation is present (Arrows will be added), change cardinality point off-set distance (d)\n let d = isRelationTypePresent ? 10 : 5;\n //Calculate Angle for x and y axis\n let angle = Math.atan2(points[0].y - center.y, points[0].x - center.x);\n let cardinalityPosition = { x: 0, y: 0 };\n //Calculation cardinality position using angle, center point on the line/curve but pendicular and with offset-distance\n cardinalityPosition.x = Math.sin(angle) * d + (points[0].x + center.x) / 2;\n cardinalityPosition.y = -Math.cos(angle) * d + (points[0].y + center.y) / 2;\n return cardinalityPosition;\n};\n\nexport const getStylesFromArray = arr => {\n let style = '';\n let labelStyle = '';\n\n for (let i = 0; i < arr.length; i++) {\n if (typeof arr[i] !== 'undefined') {\n // add text properties to label style definition\n if (arr[i].startsWith('color:') || arr[i].startsWith('text-align:')) {\n labelStyle = labelStyle + arr[i] + ';';\n } else {\n style = style + arr[i] + ';';\n }\n }\n }\n\n return { style: style, labelStyle: labelStyle };\n};\n\nlet cnt = 0;\nexport const generateId = () => {\n cnt++;\n return (\n 'id-' +\n Math.random()\n .toString(36)\n .substr(2, 12) +\n '-' +\n cnt\n );\n};\n\nfunction makeid(length) {\n var result = '';\n var characters = '0123456789abcdef';\n var charactersLength = characters.length;\n for (var i = 0; i < length; i++) {\n result += characters.charAt(Math.floor(Math.random() * charactersLength));\n }\n return result;\n}\n\nexport const random = options => {\n return makeid(options.length);\n};\n\n/**\n * @function assignWithDepth\n * Extends the functionality of {@link ObjectConstructor.assign} with the ability to merge arbitrary-depth objects\n * For each key in src with path `k` (recursively) performs an Object.assign(dst[`k`], src[`k`]) with\n * a slight change from the typical handling of undefined for dst[`k`]: instead of raising an error,\n * dst[`k`] is auto-initialized to {} and effectively merged with src[`k`]\n *
' },\n config\n );\n if (common.lineBreakRegex.test(label)) {\n return label;\n }\n const words = label.split(' ');\n const completedLines = [];\n let nextLine = '';\n words.forEach((word, index) => {\n const wordLength = calculateTextWidth(`${word} `, config);\n const nextLineLength = calculateTextWidth(nextLine, config);\n if (wordLength > maxWidth) {\n const { hyphenatedStrings, remainingWord } = breakString(word, maxWidth, '-', config);\n completedLines.push(nextLine, ...hyphenatedStrings);\n nextLine = remainingWord;\n } else if (nextLineLength + wordLength >= maxWidth) {\n completedLines.push(nextLine);\n nextLine = word;\n } else {\n nextLine = [nextLine, word].filter(Boolean).join(' ');\n }\n const currentWord = index + 1;\n const isLastWord = currentWord === words.length;\n if (isLastWord) {\n completedLines.push(nextLine);\n }\n });\n return completedLines.filter(line => line !== '').join(config.joinWith);\n },\n (label, maxWidth, config) =>\n `${label}-${maxWidth}-${config.fontSize}-${config.fontWeight}-${config.fontFamily}-${config.joinWith}`\n);\n\nconst breakString = memoize(\n (word, maxWidth, hyphenCharacter = '-', config) => {\n config = Object.assign(\n { fontSize: 12, fontWeight: 400, fontFamily: 'Arial', margin: 0 },\n config\n );\n const characters = word.split('');\n const lines = [];\n let currentLine = '';\n characters.forEach((character, index) => {\n const nextLine = `${currentLine}${character}`;\n const lineWidth = calculateTextWidth(nextLine, config);\n if (lineWidth >= maxWidth) {\n const currentCharacter = index + 1;\n const isLastLine = characters.length === currentCharacter;\n const hyphenatedNextLine = `${nextLine}${hyphenCharacter}`;\n lines.push(isLastLine ? nextLine : hyphenatedNextLine);\n currentLine = '';\n } else {\n currentLine = nextLine;\n }\n });\n return { hyphenatedStrings: lines, remainingWord: currentLine };\n },\n (word, maxWidth, hyphenCharacter = '-', config) =>\n `${word}-${maxWidth}-${hyphenCharacter}-${config.fontSize}-${config.fontWeight}-${config.fontFamily}`\n);\n\n/**\n * This calculates the text's height, taking into account the wrap breaks and\n * both the statically configured height, width, and the length of the text (in pixels).\n *\n * If the wrapped text text has greater height, we extend the height, so it's\n * value won't overflow.\n *\n * @return - The height for the given text\n * @param text the text to measure\n * @param config - the config for fontSize, fontFamily, and fontWeight all impacting the resulting size\n */\nexport const calculateTextHeight = function(text, config) {\n config = Object.assign(\n { fontSize: 12, fontWeight: 400, fontFamily: 'Arial', margin: 15 },\n config\n );\n return calculateTextDimensions(text, config).height;\n};\n\n/**\n * This calculates the width of the given text, font size and family.\n *\n * @return - The width for the given text\n * @param text - The text to calculate the width of\n * @param config - the config for fontSize, fontFamily, and fontWeight all impacting the resulting size\n */\nexport const calculateTextWidth = function(text, config) {\n config = Object.assign({ fontSize: 12, fontWeight: 400, fontFamily: 'Arial' }, config);\n return calculateTextDimensions(text, config).width;\n};\n\n/**\n * This calculates the dimensions of the given text, font size, font family, font weight, and margins.\n *\n * @return - The width for the given text\n * @param text - The text to calculate the width of\n * @param config - the config for fontSize, fontFamily, fontWeight, and margin all impacting the resulting size\n */\nexport const calculateTextDimensions = memoize(\n function(text, config) {\n config = Object.assign({ fontSize: 12, fontWeight: 400, fontFamily: 'Arial' }, config);\n const { fontSize, fontFamily, fontWeight } = config;\n if (!text) {\n return { width: 0, height: 0 };\n }\n\n // We can't really know if the user supplied font family will render on the user agent;\n // thus, we'll take the max width between the user supplied font family, and a default\n // of sans-serif.\n const fontFamilies = ['sans-serif', fontFamily];\n const lines = text.split(common.lineBreakRegex);\n let dims = [];\n\n const body = select('body');\n // We don't want to leak DOM elements - if a removal operation isn't available\n // for any reason, do not continue.\n if (!body.remove) {\n return { width: 0, height: 0, lineHeight: 0 };\n }\n\n const g = body.append('svg');\n\n for (let fontFamily of fontFamilies) {\n let cheight = 0;\n let dim = { width: 0, height: 0, lineHeight: 0 };\n for (let line of lines) {\n const textObj = getTextObj();\n textObj.text = line;\n const textElem = drawSimpleText(g, textObj)\n .style('font-size', fontSize)\n .style('font-weight', fontWeight)\n .style('font-family', fontFamily);\n\n let bBox = (textElem._groups || textElem)[0][0].getBBox();\n dim.width = Math.round(Math.max(dim.width, bBox.width));\n cheight = Math.round(bBox.height);\n dim.height += cheight;\n dim.lineHeight = Math.round(Math.max(dim.lineHeight, cheight));\n }\n dims.push(dim);\n }\n\n g.remove();\n\n let index =\n isNaN(dims[1].height) ||\n isNaN(dims[1].width) ||\n isNaN(dims[1].lineHeight) ||\n (dims[0].height > dims[1].height &&\n dims[0].width > dims[1].width &&\n dims[0].lineHeight > dims[1].lineHeight)\n ? 0\n : 1;\n return dims[index];\n },\n (text, config) => `${text}-${config.fontSize}-${config.fontWeight}-${config.fontFamily}`\n);\n\nexport default {\n assignWithDepth,\n wrapLabel,\n calculateTextHeight,\n calculateTextWidth,\n calculateTextDimensions,\n detectInit,\n detectDirective,\n detectType,\n isSubstringInArray,\n interpolateToCurve,\n calcLabelPosition,\n calcCardinalityPosition,\n formatUrl,\n getStylesFromArray,\n generateId,\n random,\n memoize,\n runFunc\n};\n"],"sourceRoot":""}
\ No newline at end of file
diff --git a/dist/mermaid.min.js b/dist/mermaid.min.js
index 5d2089360..7c0b866bc 100644
--- a/dist/mermaid.min.js
+++ b/dist/mermaid.min.js
@@ -21,21 +21,7 @@
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
-<<<<<<< HEAD
-t.exports={graphlib:n(311),dagre:n(153),intersect:n(368),render:n(370),util:n(12),version:n(382)}},function(t,e){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children||(t.children=[]),Object.defineProperty(t,"loaded",{enumerable:!0,get:function(){return t.l}}),Object.defineProperty(t,"id",{enumerable:!0,get:function(){return t.i}}),t.webpackPolyfill=1),t}},function(t,e,n){"use strict";var r=n(4),i=n(17).Graph;function a(t,e,n,i){var a;do{a=r.uniqueId(i)}while(t.hasNode(a));return n.dummy=e,t.setNode(a,n),a}function o(t){return r.max(r.map(t.nodes(),(function(e){var n=t.node(e).rank;if(!r.isUndefined(n))return n})))}t.exports={addDummyNode:a,simplify:function(t){var e=(new i).setGraph(t.graph());return r.forEach(t.nodes(),(function(n){e.setNode(n,t.node(n))})),r.forEach(t.edges(),(function(n){var r=e.edge(n.v,n.w)||{weight:0,minlen:1},i=t.edge(n);e.setEdge(n.v,n.w,{weight:r.weight+i.weight,minlen:Math.max(r.minlen,i.minlen)})})),e},asNonCompoundGraph:function(t){var e=new i({multigraph:t.isMultigraph()}).setGraph(t.graph());return r.forEach(t.nodes(),(function(n){t.children(n).length||e.setNode(n,t.node(n))})),r.forEach(t.edges(),(function(n){e.setEdge(n,t.edge(n))})),e},successorWeights:function(t){var e=r.map(t.nodes(),(function(e){var n={};return r.forEach(t.outEdges(e),(function(e){n[e.w]=(n[e.w]||0)+t.edge(e).weight})),n}));return r.zipObject(t.nodes(),e)},predecessorWeights:function(t){var e=r.map(t.nodes(),(function(e){var n={};return r.forEach(t.inEdges(e),(function(e){n[e.v]=(n[e.v]||0)+t.edge(e).weight})),n}));return r.zipObject(t.nodes(),e)},intersectRect:function(t,e){var n,r,i=t.x,a=t.y,o=e.x-i,s=e.y-a,c=t.width/2,u=t.height/2;if(!o&&!s)throw new Error("Not possible to find intersection inside of the rectangle");Math.abs(s)*c>Math.abs(o)*u?(s<0&&(u=-u),n=u*o/s,r=u):(o<0&&(c=-c),n=c,r=c*s/o);return{x:i+n,y:a+r}},buildLayerMatrix:function(t){var e=r.map(r.range(o(t)+1),(function(){return[]}));return r.forEach(t.nodes(),(function(n){var i=t.node(n),a=i.rank;r.isUndefined(a)||(e[a][i.order]=n)})),e},normalizeRanks:function(t){var e=r.min(r.map(t.nodes(),(function(e){return t.node(e).rank})));r.forEach(t.nodes(),(function(n){var i=t.node(n);r.has(i,"rank")&&(i.rank-=e)}))},removeEmptyRanks:function(t){var e=r.min(r.map(t.nodes(),(function(e){return t.node(e).rank}))),n=[];r.forEach(t.nodes(),(function(r){var i=t.node(r).rank-e;n[i]||(n[i]=[]),n[i].push(r)}));var i=0,a=t.graph().nodeRankFactor;r.forEach(n,(function(e,n){r.isUndefined(e)&&n%a!=0?--i:i&&r.forEach(e,(function(e){t.node(e).rank+=i}))}))},addBorderNode:function(t,e,n,r){var i={width:0,height:0};arguments.length>=4&&(i.rank=n,i.order=r);return a(t,"border",i,e)},maxRank:o,partition:function(t,e){var n={lhs:[],rhs:[]};return r.forEach(t,(function(t){e(t)?n.lhs.push(t):n.rhs.push(t)})),n},time:function(t,e){var n=r.now();try{return e()}finally{console.log(t+" time: "+(r.now()-n)+"ms")}},notime:function(t,e){return e()}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(173),i=n(174),a=n(175),o={channel:r.default,lang:i.default,unit:a.default};e.default=o},function(t,e,n){var r;try{r={clone:n(199),constant:n(86),each:n(87),filter:n(128),has:n(93),isArray:n(5),isEmpty:n(276),isFunction:n(37),isUndefined:n(139),keys:n(30),map:n(140),reduce:n(142),size:n(279),transform:n(285),union:n(286),values:n(147)}}catch(t){}r||(r=window._),t.exports=r},function(t,e){t.exports=function(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)}},function(t,e,n){var r=n(43);t.exports={isSubgraph:function(t,e){return!!t.children(e).length},edgeToId:function(t){return a(t.v)+":"+a(t.w)+":"+a(t.name)},applyStyle:function(t,e){e&&t.attr("style",e)},applyClass:function(t,e,n){e&&t.attr("class",e).attr("class",n+" "+t.attr("class"))},applyTransition:function(t,e){var n=e.graph();if(r.isPlainObject(n)){var i=n.transition;if(r.isFunction(i))return i(t)}return t}};var i=/:/g;function a(t){return t?String(t).replace(i,"\\:"):""}},function(t,e,n){(function(t,r){var i=function(){var t=function(t,e,n,r){for(n=n||{},r=t.length;r--;n[t[r]]=e);return n},e=[1,13],n=[1,16],r=[1,14],i=[1,15],a=[1,17],o=[1,18],s=[1,20],c=[1,21],u=[1,22],l=[6,8],h=[1,31],f=[1,32],d=[1,33],p=[1,34],y=[1,35],g=[1,36],v=[6,8,14,20,28,31,32,33,34,35,36],m=[6,8,12,14,20,24,28,31,32,33,34,35,36,52,53,54],b=[28,52,53,54],x=[28,35,36,52,53,54],_=[28,31,32,33,34,52,53,54],w=[6,8,14],k=[1,59],E={trace:function(){},yy:{},symbols_:{error:2,mermaidDoc:3,graphConfig:4,CLASS_DIAGRAM:5,NEWLINE:6,statements:7,EOF:8,statement:9,className:10,alphaNumToken:11,GENERICTYPE:12,relationStatement:13,LABEL:14,classStatement:15,methodStatement:16,annotationStatement:17,clickStatement:18,CLASS:19,STRUCT_START:20,members:21,STRUCT_STOP:22,ANNOTATION_START:23,ANNOTATION_END:24,MEMBER:25,SEPARATOR:26,relation:27,STR:28,relationType:29,lineType:30,AGGREGATION:31,EXTENSION:32,COMPOSITION:33,DEPENDENCY:34,LINE:35,DOTTED_LINE:36,CALLBACK:37,LINK:38,commentToken:39,textToken:40,graphCodeTokens:41,textNoTagsToken:42,TAGSTART:43,TAGEND:44,"==":45,"--":46,PCT:47,DEFAULT:48,SPACE:49,MINUS:50,keywords:51,UNICODE_TEXT:52,NUM:53,ALPHA:54,$accept:0,$end:1},terminals_:{2:"error",5:"CLASS_DIAGRAM",6:"NEWLINE",8:"EOF",12:"GENERICTYPE",14:"LABEL",19:"CLASS",20:"STRUCT_START",22:"STRUCT_STOP",23:"ANNOTATION_START",24:"ANNOTATION_END",25:"MEMBER",26:"SEPARATOR",28:"STR",31:"AGGREGATION",32:"EXTENSION",33:"COMPOSITION",34:"DEPENDENCY",35:"LINE",36:"DOTTED_LINE",37:"CALLBACK",38:"LINK",41:"graphCodeTokens",43:"TAGSTART",44:"TAGEND",45:"==",46:"--",47:"PCT",48:"DEFAULT",49:"SPACE",50:"MINUS",51:"keywords",52:"UNICODE_TEXT",53:"NUM",54:"ALPHA"},productions_:[0,[3,1],[4,4],[7,1],[7,2],[7,3],[10,2],[10,1],[10,3],[10,2],[9,1],[9,2],[9,1],[9,1],[9,1],[9,1],[15,2],[15,5],[17,4],[21,1],[21,2],[16,1],[16,2],[16,1],[16,1],[13,3],[13,4],[13,4],[13,5],[27,3],[27,2],[27,2],[27,1],[29,1],[29,1],[29,1],[29,1],[30,1],[30,1],[18,3],[18,4],[18,3],[18,4],[39,1],[39,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[42,1],[42,1],[42,1],[42,1],[11,1],[11,1],[11,1]],performAction:function(t,e,n,r,i,a,o){var s=a.length-1;switch(i){case 6:this.$=a[s-1]+a[s];break;case 7:this.$=a[s];break;case 8:this.$=a[s-2]+"~"+a[s-1]+a[s];break;case 9:this.$=a[s-1]+"~"+a[s];break;case 10:r.addRelation(a[s]);break;case 11:a[s-1].title=r.cleanupLabel(a[s]),r.addRelation(a[s-1]);break;case 16:r.addClass(a[s]);break;case 17:r.addClass(a[s-3]),r.addMembers(a[s-3],a[s-1]);break;case 18:r.addAnnotation(a[s],a[s-2]);break;case 19:this.$=[a[s]];break;case 20:a[s].push(a[s-1]),this.$=a[s];break;case 21:break;case 22:r.addMember(a[s-1],r.cleanupLabel(a[s]));break;case 23:case 24:break;case 25:this.$={id1:a[s-2],id2:a[s],relation:a[s-1],relationTitle1:"none",relationTitle2:"none"};break;case 26:this.$={id1:a[s-3],id2:a[s],relation:a[s-1],relationTitle1:a[s-2],relationTitle2:"none"};break;case 27:this.$={id1:a[s-3],id2:a[s],relation:a[s-2],relationTitle1:"none",relationTitle2:a[s-1]};break;case 28:this.$={id1:a[s-4],id2:a[s],relation:a[s-2],relationTitle1:a[s-3],relationTitle2:a[s-1]};break;case 29:this.$={type1:a[s-2],type2:a[s],lineType:a[s-1]};break;case 30:this.$={type1:"none",type2:a[s],lineType:a[s-1]};break;case 31:this.$={type1:a[s-1],type2:"none",lineType:a[s]};break;case 32:this.$={type1:"none",type2:"none",lineType:a[s]};break;case 33:this.$=r.relationType.AGGREGATION;break;case 34:this.$=r.relationType.EXTENSION;break;case 35:this.$=r.relationType.COMPOSITION;break;case 36:this.$=r.relationType.DEPENDENCY;break;case 37:this.$=r.lineType.LINE;break;case 38:this.$=r.lineType.DOTTED_LINE;break;case 39:this.$=a[s-2],r.setClickEvent(a[s-1],a[s],void 0);break;case 40:this.$=a[s-3],r.setClickEvent(a[s-2],a[s-1],a[s]);break;case 41:this.$=a[s-2],r.setLink(a[s-1],a[s],void 0);break;case 42:this.$=a[s-3],r.setLink(a[s-2],a[s-1],a[s])}},table:[{3:1,4:2,5:[1,3]},{1:[3]},{1:[2,1]},{6:[1,4]},{7:5,9:6,10:12,11:19,13:7,15:8,16:9,17:10,18:11,19:e,23:n,25:r,26:i,37:a,38:o,52:s,53:c,54:u},{8:[1,23]},{6:[1,24],8:[2,3]},t(l,[2,10],{14:[1,25]}),t(l,[2,12]),t(l,[2,13]),t(l,[2,14]),t(l,[2,15]),t(l,[2,21],{27:26,29:29,30:30,14:[1,28],28:[1,27],31:h,32:f,33:d,34:p,35:y,36:g}),{10:37,11:19,52:s,53:c,54:u},t(l,[2,23]),t(l,[2,24]),{11:38,52:s,53:c,54:u},{10:39,11:19,52:s,53:c,54:u},{10:40,11:19,52:s,53:c,54:u},t(v,[2,7],{11:19,10:41,12:[1,42],52:s,53:c,54:u}),t(m,[2,56]),t(m,[2,57]),t(m,[2,58]),{1:[2,2]},{7:43,8:[2,4],9:6,10:12,11:19,13:7,15:8,16:9,17:10,18:11,19:e,23:n,25:r,26:i,37:a,38:o,52:s,53:c,54:u},t(l,[2,11]),{10:44,11:19,28:[1,45],52:s,53:c,54:u},{27:46,29:29,30:30,31:h,32:f,33:d,34:p,35:y,36:g},t(l,[2,22]),{30:47,35:y,36:g},t(b,[2,32],{29:48,31:h,32:f,33:d,34:p}),t(x,[2,33]),t(x,[2,34]),t(x,[2,35]),t(x,[2,36]),t(_,[2,37]),t(_,[2,38]),t(l,[2,16],{20:[1,49]}),{24:[1,50]},{28:[1,51]},{28:[1,52]},t(v,[2,6]),t(v,[2,9],{11:19,10:53,52:s,53:c,54:u}),{8:[2,5]},t(w,[2,25]),{10:54,11:19,52:s,53:c,54:u},{10:55,11:19,28:[1,56],52:s,53:c,54:u},t(b,[2,31],{29:57,31:h,32:f,33:d,34:p}),t(b,[2,30]),{21:58,25:k},{10:60,11:19,52:s,53:c,54:u},t(l,[2,39],{28:[1,61]}),t(l,[2,41],{28:[1,62]}),t(v,[2,8]),t(w,[2,27]),t(w,[2,26]),{10:63,11:19,52:s,53:c,54:u},t(b,[2,29]),{22:[1,64]},{21:65,22:[2,19],25:k},t(l,[2,18]),t(l,[2,40]),t(l,[2,42]),t(w,[2,28]),t(l,[2,17]),{22:[2,20]}],defaultActions:{2:[2,1],23:[2,2],43:[2,5],65:[2,20]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],r=[],i=[null],a=[],o=this.table,s="",c=0,u=0,l=0,h=2,f=1,d=a.slice.call(arguments,1),p=Object.create(this.lexer),y={yy:{}};for(var g in this.yy)Object.prototype.hasOwnProperty.call(this.yy,g)&&(y.yy[g]=this.yy[g]);p.setInput(t,y.yy),y.yy.lexer=p,y.yy.parser=this,void 0===p.yylloc&&(p.yylloc={});var v=p.yylloc;a.push(v);var m=p.options&&p.options.ranges;function b(){var t;return"number"!=typeof(t=r.pop()||p.lex()||f)&&(t instanceof Array&&(t=(r=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof y.yy.parseError?this.parseError=y.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var x,_,w,k,E,T,A,C,S,M={};;){if(w=n[n.length-1],this.defaultActions[w]?k=this.defaultActions[w]:(null==x&&(x=b()),k=o[w]&&o[w][x]),void 0===k||!k.length||!k[0]){var O="";for(T in S=[],o[w])this.terminals_[T]&&T>h&&S.push("'"+this.terminals_[T]+"'");O=p.showPosition?"Parse error on line "+(c+1)+":\n"+p.showPosition()+"\nExpecting "+S.join(", ")+", got '"+(this.terminals_[x]||x)+"'":"Parse error on line "+(c+1)+": Unexpected "+(x==f?"end of input":"'"+(this.terminals_[x]||x)+"'"),this.parseError(O,{text:p.match,token:this.terminals_[x]||x,line:p.yylineno,loc:v,expected:S})}if(k[0]instanceof Array&&k.length>1)throw new Error("Parse Error: multiple actions possible at state: "+w+", token: "+x);switch(k[0]){case 1:n.push(x),i.push(p.yytext),a.push(p.yylloc),n.push(k[1]),x=null,_?(x=_,_=null):(u=p.yyleng,s=p.yytext,c=p.yylineno,v=p.yylloc,l>0&&l--);break;case 2:if(A=this.productions_[k[1]][1],M.$=i[i.length-A],M._$={first_line:a[a.length-(A||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(A||1)].first_column,last_column:a[a.length-1].last_column},m&&(M._$.range=[a[a.length-(A||1)].range[0],a[a.length-1].range[1]]),void 0!==(E=this.performAction.apply(M,[s,u,c,y.yy,k[1],i,a].concat(d))))return E;A&&(n=n.slice(0,-1*A*2),i=i.slice(0,-1*A),a=a.slice(0,-1*A)),n.push(this.productions_[k[1]][0]),i.push(M.$),a.push(M._$),C=o[n[n.length-2]][n[n.length-1]],n.push(C);break;case 3:return!0}}return!0}},T={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,r,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(r=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,r;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;a0&&(ot=ot.replace(r,"")),ot.trim().length>0)){switch(b){case 32:case 9:case 59:case 13:case 10:break;default:ot+=i.charAt(O)}b=59}if(1===R)switch(b){case 123:case 125:case 59:case 34:case 39:case 40:case 41:case 44:R=0;case 9:case 13:case 10:case 32:break;default:for(R=0,W=O,v=b,O--,b=59;W
0&&(++O,b=v);case 123:W=Q}}switch(b){case 123:for(v=(ot=ot.trim()).charCodeAt(0),T=1,W=++O;O
0&&(ot=ot.replace(r,"")),m=ot.charCodeAt(1)){case 100:case 109:case 115:case 45:s=e;break;default:s=z}if(W=(st=Z(e,s,st,m,o+1)).length,Y>0&&0===W&&(W=ot.length),$>0&&(c=nt(3,st,s=J(z,ot,U),e,B,D,W,m,o,a),ot=s.join(""),void 0!==c&&0===(W=(st=c.trim()).length)&&(m=0,st="")),W>0)switch(m){case 115:ot=ot.replace(k,et);case 100:case 109:case 45:st=ot+"{"+st+"}";break;case 107:st=(ot=ot.replace(p,"$1 $2"+(H>0?G:"")))+"{"+st+"}",st=1===P||2===P&&tt("@"+st,3)?"@"+M+st+"@"+st:"@"+st;break;default:st=ot+st,112===a&&(ct+=st,st="")}else st="";break;default:st=Z(e,J(e,ot,U),st,a,o+1)}ut+=st,A=0,R=0,S=0,N=0,U=0,C=0,ot="",st="",b=i.charCodeAt(++O);break;case 125:case 59:if((W=(ot=(N>0?ot.replace(r,""):ot).trim()).length)>1)switch(0===S&&(45===(v=ot.charCodeAt(0))||v>96&&v<123)&&(W=(ot=ot.replace(" ",":")).length),$>0&&void 0!==(c=nt(1,ot,e,t,B,D,ct.length,a,o,a))&&0===(W=(ot=c.trim()).length)&&(ot="\0\0"),v=ot.charCodeAt(0),m=ot.charCodeAt(1),v){case 0:break;case 64:if(105===m||99===m){lt+=ot+i.charAt(O);break}default:if(58===ot.charCodeAt(W-1))break;ct+=K(ot,v,m,ot.charCodeAt(2))}A=0,R=0,S=0,N=0,U=0,ot="",b=i.charCodeAt(++O)}}switch(b){case 13:case 10:if(h+d+f+l+j===0)switch(E){case 41:case 39:case 34:case 64:case 126:case 62:case 42:case 43:case 47:case 45:case 58:case 44:case 59:case 123:case 125:break;default:S>0&&(R=1)}47===h?h=0:F+A===0&&107!==a&&ot.length>0&&(N=1,ot+="\0"),$*V>0&&nt(0,ot,e,t,B,D,ct.length,a,o,a),D=1,B++;break;case 59:case 125:if(h+d+f+l===0){D++;break}default:switch(D++,at=i.charAt(O),b){case 9:case 32:if(d+l+h===0)switch(x){case 44:case 58:case 9:case 32:at="";break;default:32!==b&&(at=" ")}break;case 0:at="\\0";break;case 12:at="\\f";break;case 11:at="\\v";break;case 38:d+h+l===0&&F>0&&(U=1,N=1,at="\f"+at);break;case 108:if(d+h+l+L===0&&S>0)switch(O-S){case 2:112===x&&58===i.charCodeAt(O-3)&&(L=x);case 8:111===w&&(L=w)}break;case 58:d+h+l===0&&(S=O);break;case 44:h+f+d+l===0&&(N=1,at+="\r");break;case 34:case 39:0===h&&(d=d===b?0:0===d?b:d);break;case 91:d+h+f===0&&l++;break;case 93:d+h+f===0&&l--;break;case 41:d+h+l===0&&f--;break;case 40:if(d+h+l===0){if(0===A)switch(2*x+3*w){case 533:break;default:T=0,A=1}f++}break;case 64:h+f+d+l+S+C===0&&(C=1);break;case 42:case 47:if(d+l+f>0)break;switch(h){case 0:switch(2*b+3*i.charCodeAt(O+1)){case 235:h=47;break;case 220:W=O,h=42}break;case 42:47===b&&42===x&&W+2!==O&&(33===i.charCodeAt(W+2)&&(ct+=i.substring(W,O+1)),at="",h=0)}}if(0===h){if(F+d+l+C===0&&107!==a&&59!==b)switch(b){case 44:case 126:case 62:case 43:case 41:case 40:if(0===A){switch(x){case 9:case 32:case 10:case 13:at+="\0";break;default:at="\0"+at+(44===b?"":"\0")}N=1}else switch(b){case 40:S+7===O&&108===x&&(S=0),A=++T;break;case 41:0==(A=--T)&&(N=1,at+="\0")}break;case 9:case 32:switch(x){case 0:case 123:case 125:case 59:case 44:case 12:case 9:case 32:case 10:case 13:break;default:0===A&&(N=1,at+="\0")}}ot+=at,32!==b&&9!==b&&(E=b)}}w=x,x=b,O++}if(W=ct.length,Y>0&&0===W&&0===ut.length&&0===e[0].length==0&&(109!==a||1===e.length&&(F>0?q:X)===e[0])&&(W=e.join(",").length+2),W>0){if(s=0===F&&107!==a?function(t){for(var e,n,i=0,a=t.length,o=Array(a);i1)){if(f=c.charCodeAt(c.length-1),d=n.charCodeAt(0),e="",0!==l)switch(f){case 42:case 126:case 62:case 43:case 32:case 40:break;default:e=" "}switch(d){case 38:n=e+q;case 126:case 62:case 43:case 32:case 41:case 40:break;case 91:n=e+n+q;break;case 58:switch(2*n.charCodeAt(1)+3*n.charCodeAt(2)){case 530:if(I>0){n=e+n.substring(8,h-1);break}default:(l<1||s[l-1].length<1)&&(n=e+q+n)}break;case 44:e="";default:n=h>1&&n.indexOf(":")>0?e+n.replace(_,"$1"+q+"$2"):e+n+q}c+=n}o[i]=c.replace(r,"").trim()}return o}(e):e,$>0&&void 0!==(c=nt(2,ct,s,t,B,D,W,a,o,a))&&0===(ct=c).length)return lt+ct+ut;if(ct=s.join(",")+"{"+ct+"}",P*L!=0){switch(2!==P||tt(ct,2)||(L=0),L){case 111:ct=ct.replace(g,":-moz-$1")+ct;break;case 112:ct=ct.replace(y,"::-webkit-input-$1")+ct.replace(y,"::-moz-$1")+ct.replace(y,":-ms-input-$1")+ct}L=0}}return lt+ct+ut}function J(t,e,n){var r=e.trim().split(l),i=r,a=r.length,o=t.length;switch(o){case 0:case 1:for(var s=0,c=0===o?"":t[0]+" ";s0&&F>0)return i.replace(f,"$1").replace(h,"$1"+X);break;default:return t.trim()+i.replace(h,"$1"+t.trim())}default:if(n*F>0&&i.indexOf("\f")>0)return i.replace(h,(58===t.charCodeAt(0)?"":"$1")+t.trim())}return t+i}function K(t,e,n,r){var u,l=0,h=t+";",f=2*e+3*n+4*r;if(944===f)return function(t){var e=t.length,n=t.indexOf(":",9)+1,r=t.substring(0,n).trim(),i=t.substring(n,e-1).trim();switch(t.charCodeAt(9)*H){case 0:break;case 45:if(110!==t.charCodeAt(10))break;default:var a=i.split((i="",s)),o=0;for(n=0,e=a.length;o
=c?u:u*("desc"==n[i]?-1:1)}return t.index-e.index}},function(t,e,n){var r=n(42);t.exports=function(t,e){if(t!==e){var n=void 0!==t,i=null===t,a=t==t,o=r(t),s=void 0!==e,c=null===e,u=e==e,l=r(e);if(!c&&!l&&!o&&t>e||o&&s&&u&&!c&&!l||i&&s&&u||!n&&u||!a)return 1;if(!i&&!o&&!l&&t0}t.exports=function(t,e,r,i){var a,o,s,c,u,l,h,f,d,p,y,g,v;if(a=e.y-t.y,s=t.x-e.x,u=e.x*t.y-t.x*e.y,d=a*r.x+s*r.y+u,p=a*i.x+s*i.y+u,0!==d&&0!==p&&n(d,p))return;if(o=i.y-r.y,c=r.x-i.x,l=i.x*r.y-r.x*i.y,h=o*t.x+c*t.y+l,f=o*e.x+c*e.y+l,0!==h&&0!==f&&n(h,f))return;if(0===(y=a*c-o*s))return;return g=Math.abs(y/2),{x:(v=s*l-c*u)<0?(v-g)/y:(v+g)/y,y:(v=o*u-a*l)<0?(v-g)/y:(v+g)/y}}},function(t,e,n){var r=n(43),i=n(31),a=n(153).layout;t.exports=function(){var t=n(371),e=n(374),i=n(375),u=n(376),l=n(377),h=n(378),f=n(379),d=n(380),p=n(381),y=function(n,y){!function(t){t.nodes().forEach((function(e){var n=t.node(e);r.has(n,"label")||t.children(e).length||(n.label=e),r.has(n,"paddingX")&&r.defaults(n,{paddingLeft:n.paddingX,paddingRight:n.paddingX}),r.has(n,"paddingY")&&r.defaults(n,{paddingTop:n.paddingY,paddingBottom:n.paddingY}),r.has(n,"padding")&&r.defaults(n,{paddingLeft:n.padding,paddingRight:n.padding,paddingTop:n.padding,paddingBottom:n.padding}),r.defaults(n,o),r.each(["paddingLeft","paddingRight","paddingTop","paddingBottom"],(function(t){n[t]=Number(n[t])})),r.has(n,"width")&&(n._prevWidth=n.width),r.has(n,"height")&&(n._prevHeight=n.height)})),t.edges().forEach((function(e){var n=t.edge(e);r.has(n,"label")||(n.label=""),r.defaults(n,s)}))}(y);var g=c(n,"output"),v=c(g,"clusters"),m=c(g,"edgePaths"),b=i(c(g,"edgeLabels"),y),x=t(c(g,"nodes"),y,d);a(y),l(x,y),h(b,y),u(m,y,p);var _=e(v,y);f(_,y),function(t){r.each(t.nodes(),(function(e){var n=t.node(e);r.has(n,"_prevWidth")?n.width=n._prevWidth:delete n.width,r.has(n,"_prevHeight")?n.height=n._prevHeight:delete n.height,delete n._prevWidth,delete n._prevHeight}))}(y)};return y.createNodes=function(e){return arguments.length?(t=e,y):t},y.createClusters=function(t){return arguments.length?(e=t,y):e},y.createEdgeLabels=function(t){return arguments.length?(i=t,y):i},y.createEdgePaths=function(t){return arguments.length?(u=t,y):u},y.shapes=function(t){return arguments.length?(d=t,y):d},y.arrows=function(t){return arguments.length?(p=t,y):p},y};var o={paddingLeft:10,paddingRight:10,paddingTop:10,paddingBottom:10,rx:0,ry:0,shape:"rect"},s={arrowhead:"normal",curve:i.curveLinear};function c(t,e){var n=t.select("g."+e);return n.empty()&&(n=t.append("g").attr("class",e)),n}},function(t,e,n){"use strict";var r=n(43),i=n(97),a=n(12),o=n(31);t.exports=function(t,e,n){var s,c=e.nodes().filter((function(t){return!a.isSubgraph(e,t)})),u=t.selectAll("g.node").data(c,(function(t){return t})).classed("update",!0);u.exit().remove(),u.enter().append("g").attr("class","node").style("opacity",0),(u=t.selectAll("g.node")).each((function(t){var s=e.node(t),c=o.select(this);a.applyClass(c,s.class,(c.classed("update")?"update ":"")+"node"),c.select("g.label").remove();var u=c.append("g").attr("class","label"),l=i(u,s),h=n[s.shape],f=r.pick(l.node().getBBox(),"width","height");s.elem=this,s.id&&c.attr("id",s.id),s.labelId&&u.attr("id",s.labelId),r.has(s,"width")&&(f.width=s.width),r.has(s,"height")&&(f.height=s.height),f.width+=s.paddingLeft+s.paddingRight,f.height+=s.paddingTop+s.paddingBottom,u.attr("transform","translate("+(s.paddingLeft-s.paddingRight)/2+","+(s.paddingTop-s.paddingBottom)/2+")");var d=o.select(this);d.select(".label-container").remove();var p=h(d,f,s).classed("label-container",!0);a.applyStyle(p,s.style);var y=p.node().getBBox();s.width=y.width,s.height=y.height})),s=u.exit?u.exit():u.selectAll(null);return a.applyTransition(s,e).style("opacity",0).remove(),u}},function(t,e,n){var r=n(12);t.exports=function(t,e){for(var n=t.append("text"),i=function(t){for(var e,n="",r=!1,i=0;i
/gi;\n\nexport const hasBreaks = text => {\n return /
/gi.test(text);\n};\n\nexport const splitBreaks = text => {\n return text.split(/
/gi);\n};\n\nconst breakToPlaceholder = s => {\n return s.replace(lineBreakRegex, '#br#');\n};\n\nconst placeholderToBreak = s => {\n return s.replace(/#br#/g, '
');\n};\n\nexport default {\n getRows,\n sanitizeText,\n hasBreaks,\n splitBreaks,\n lineBreakRegex,\n removeScript\n};\n","import {\n curveBasis,\n curveBasisClosed,\n curveBasisOpen,\n curveLinear,\n curveLinearClosed,\n curveMonotoneX,\n curveMonotoneY,\n curveNatural,\n curveStep,\n curveStepAfter,\n curveStepBefore,\n select\n} from 'd3';\nimport { logger } from './logger';\nimport { sanitizeUrl } from '@braintree/sanitize-url';\nimport common from './diagrams/common/common';\n// import cryptoRandomString from 'crypto-random-string';\n\n// Effectively an enum of the supported curve types, accessible by name\nconst d3CurveTypes = {\n curveBasis: curveBasis,\n curveBasisClosed: curveBasisClosed,\n curveBasisOpen: curveBasisOpen,\n curveLinear: curveLinear,\n curveLinearClosed: curveLinearClosed,\n curveMonotoneX: curveMonotoneX,\n curveMonotoneY: curveMonotoneY,\n curveNatural: curveNatural,\n curveStep: curveStep,\n curveStepAfter: curveStepAfter,\n curveStepBefore: curveStepBefore\n};\nconst directive = /[%]{2}[{]\\s*(?:(?:(\\w+)\\s*:|(\\w+))\\s*(?:(?:(\\w+))|((?:(?![}][%]{2}).|\\r?\\n)*))?\\s*)(?:[}][%]{2})?/gi;\nconst directiveWithoutOpen = /\\s*(?:(?:(\\w+)(?=:):|(\\w+))\\s*(?:(?:(\\w+))|((?:(?![}][%]{2}).|\\r?\\n)*))?\\s*)(?:[}][%]{2})?/gi;\nconst anyComment = /\\s*%%.*\\n/gm;\n\n/**\n * @function detectInit\n * Detects the init config object from the text\n * ```mermaid\n * %%{init: {\"theme\": \"debug\", \"logLevel\": 1 }}%%\n * graph LR\n * a-->b\n * b-->c\n * c-->d\n * d-->e\n * e-->f\n * f-->g\n * g-->h\n * ```\n * or\n * ```mermaid\n * %%{initialize: {\"theme\": \"dark\", logLevel: \"debug\" }}%%\n * graph LR\n * a-->b\n * b-->c\n * c-->d\n * d-->e\n * e-->f\n * f-->g\n * g-->h\n * ```\n *\n * @param {string} text The text defining the graph\n * @returns {object} the json object representing the init passed to mermaid.initialize()\n */\nexport const detectInit = function(text) {\n let inits = detectDirective(text, /(?:init\\b)|(?:initialize\\b)/);\n let results = {};\n if (Array.isArray(inits)) {\n let args = inits.map(init => init.args);\n results = assignWithDepth(results, [...args]);\n } else {\n results = inits.args;\n }\n if (results) {\n let type = detectType(text);\n ['config'].forEach(prop => {\n if (typeof results[prop] !== 'undefined') {\n if (type === 'flowchart-v2') {\n type = 'flowchart';\n }\n results[type] = results[prop];\n delete results[prop];\n }\n });\n }\n return results;\n};\n\n/**\n * @function detectDirective\n * Detects the directive from the text. Text can be single line or multiline. If type is null or omitted\n * the first directive encountered in text will be returned\n * ```mermaid\n * graph LR\n * %%{somedirective}%%\n * a-->b\n * b-->c\n * c-->d\n * d-->e\n * e-->f\n * f-->g\n * g-->h\n * ```\n *\n * @param {string} text The text defining the graph\n * @param {string|RegExp} type The directive to return (default: null)\n * @returns {object | Array} An object or Array representing the directive(s): { type: string, args: object|null } matched by the input type\n * if a single directive was found, that directive object will be returned.\n */\nexport const detectDirective = function(text, type = null) {\n try {\n const commentWithoutDirectives = new RegExp(\n `[%]{2}(?![{]${directiveWithoutOpen.source})(?=[}][%]{2}).*\\n`,\n 'ig'\n );\n text = text\n .trim()\n .replace(commentWithoutDirectives, '')\n .replace(/'/gm, '\"');\n logger.debug(\n `Detecting diagram directive${type !== null ? ' type:' + type : ''} based on the text:${text}`\n );\n let match,\n result = [];\n while ((match = directive.exec(text)) !== null) {\n // This is necessary to avoid infinite loops with zero-width matches\n if (match.index === directive.lastIndex) {\n directive.lastIndex++;\n }\n if (\n (match && !type) ||\n (type && match[1] && match[1].match(type)) ||\n (type && match[2] && match[2].match(type))\n ) {\n let type = match[1] ? match[1] : match[2];\n let args = match[3] ? match[3].trim() : match[4] ? JSON.parse(match[4].trim()) : null;\n result.push({ type, args });\n }\n }\n if (result.length === 0) {\n result.push({ type: text, args: null });\n }\n\n return result.length === 1 ? result[0] : result;\n } catch (error) {\n logger.error(\n `ERROR: ${error.message} - Unable to parse directive${\n type !== null ? ' type:' + type : ''\n } based on the text:${text}`\n );\n return { type: null, args: null };\n }\n};\n\n/**\n * @function detectType\n * Detects the type of the graph text. Takes into consideration the possible existence of an %%init\n * directive\n * ```mermaid\n * %%{initialize: {\"startOnLoad\": true, logLevel: \"fatal\" }}%%\n * graph LR\n * a-->b\n * b-->c\n * c-->d\n * d-->e\n * e-->f\n * f-->g\n * g-->h\n * ```\n *\n * @param {string} text The text defining the graph\n * @returns {string} A graph definition key\n */\nexport const detectType = function(text) {\n text = text.replace(directive, '').replace(anyComment, '\\n');\n logger.debug('Detecting diagram type based on the text ' + text);\n if (text.match(/^\\s*sequenceDiagram/)) {\n return 'sequence';\n }\n\n if (text.match(/^\\s*gantt/)) {\n return 'gantt';\n }\n if (text.match(/^\\s*classDiagram-v2/)) {\n return 'classDiagram';\n }\n if (text.match(/^\\s*classDiagram/)) {\n return 'class';\n }\n\n if (text.match(/^\\s*stateDiagram-v2/)) {\n return 'stateDiagram';\n }\n\n if (text.match(/^\\s*stateDiagram/)) {\n return 'state';\n }\n\n if (text.match(/^\\s*gitGraph/)) {\n return 'git';\n }\n if (text.match(/^\\s*flowchart/)) {\n return 'flowchart-v2';\n }\n\n if (text.match(/^\\s*info/)) {\n return 'info';\n }\n if (text.match(/^\\s*pie/)) {\n return 'pie';\n }\n\n if (text.match(/^\\s*erDiagram/)) {\n return 'er';\n }\n\n if (text.match(/^\\s*journey/)) {\n return 'journey';\n }\n\n return 'flowchart';\n};\n\nconst memoize = (fn, resolver) => {\n let cache = {};\n return (...args) => {\n let n = resolver ? resolver.apply(this, args) : args[0];\n if (n in cache) {\n return cache[n];\n } else {\n let result = fn(...args);\n cache[n] = result;\n return result;\n }\n };\n};\n\n/**\n * @function isSubstringInArray\n * Detects whether a substring in present in a given array\n * @param {string} str The substring to detect\n * @param {array} arr The array to search\n * @returns {number} the array index containing the substring or -1 if not present\n **/\nexport const isSubstringInArray = function(str, arr) {\n for (let i = 0; i < arr.length; i++) {\n if (arr[i].match(str)) return i;\n }\n return -1;\n};\n\nexport const interpolateToCurve = (interpolate, defaultCurve) => {\n if (!interpolate) {\n return defaultCurve;\n }\n const curveName = `curve${interpolate.charAt(0).toUpperCase() + interpolate.slice(1)}`;\n return d3CurveTypes[curveName] || defaultCurve;\n};\n\nexport const formatUrl = (linkStr, config) => {\n let url = linkStr.trim();\n\n if (url) {\n if (config.securityLevel !== 'loose') {\n return sanitizeUrl(url);\n }\n\n return url;\n }\n};\n\nexport const runFunc = (functionName, ...params) => {\n const arrPaths = functionName.split('.');\n\n const len = arrPaths.length - 1;\n const fnName = arrPaths[len];\n\n let obj = window;\n for (let i = 0; i < len; i++) {\n obj = obj[arrPaths[i]];\n if (!obj) return;\n }\n\n obj[fnName](...params);\n};\n\nconst distance = (p1, p2) =>\n p1 && p2 ? Math.sqrt(Math.pow(p2.x - p1.x, 2) + Math.pow(p2.y - p1.y, 2)) : 0;\n\nconst traverseEdge = points => {\n let prevPoint;\n let totalDistance = 0;\n\n points.forEach(point => {\n totalDistance += distance(point, prevPoint);\n prevPoint = point;\n });\n\n // Traverse half of total distance along points\n let remainingDistance = totalDistance / 2;\n let center = undefined;\n prevPoint = undefined;\n points.forEach(point => {\n if (prevPoint && !center) {\n const vectorDistance = distance(point, prevPoint);\n if (vectorDistance < remainingDistance) {\n remainingDistance -= vectorDistance;\n } else {\n // The point is remainingDistance from prevPoint in the vector between prevPoint and point\n // Calculate the coordinates\n const distanceRatio = remainingDistance / vectorDistance;\n if (distanceRatio <= 0) center = prevPoint;\n if (distanceRatio >= 1) center = { x: point.x, y: point.y };\n if (distanceRatio > 0 && distanceRatio < 1) {\n center = {\n x: (1 - distanceRatio) * prevPoint.x + distanceRatio * point.x,\n y: (1 - distanceRatio) * prevPoint.y + distanceRatio * point.y\n };\n }\n }\n }\n prevPoint = point;\n });\n return center;\n};\n\nconst calcLabelPosition = points => {\n return traverseEdge(points);\n};\n\nconst calcCardinalityPosition = (isRelationTypePresent, points, initialPosition) => {\n let prevPoint;\n let totalDistance = 0; // eslint-disable-line\n if (points[0] !== initialPosition) {\n points = points.reverse();\n }\n points.forEach(point => {\n totalDistance += distance(point, prevPoint);\n prevPoint = point;\n });\n\n // Traverse only 25 total distance along points to find cardinality point\n const distanceToCardinalityPoint = 25;\n\n let remainingDistance = distanceToCardinalityPoint;\n let center;\n prevPoint = undefined;\n points.forEach(point => {\n if (prevPoint && !center) {\n const vectorDistance = distance(point, prevPoint);\n if (vectorDistance < remainingDistance) {\n remainingDistance -= vectorDistance;\n } else {\n // The point is remainingDistance from prevPoint in the vector between prevPoint and point\n // Calculate the coordinates\n const distanceRatio = remainingDistance / vectorDistance;\n if (distanceRatio <= 0) center = prevPoint;\n if (distanceRatio >= 1) center = { x: point.x, y: point.y };\n if (distanceRatio > 0 && distanceRatio < 1) {\n center = {\n x: (1 - distanceRatio) * prevPoint.x + distanceRatio * point.x,\n y: (1 - distanceRatio) * prevPoint.y + distanceRatio * point.y\n };\n }\n }\n }\n prevPoint = point;\n });\n // if relation is present (Arrows will be added), change cardinality point off-set distance (d)\n let d = isRelationTypePresent ? 10 : 5;\n //Calculate Angle for x and y axis\n let angle = Math.atan2(points[0].y - center.y, points[0].x - center.x);\n let cardinalityPosition = { x: 0, y: 0 };\n //Calculation cardinality position using angle, center point on the line/curve but pendicular and with offset-distance\n cardinalityPosition.x = Math.sin(angle) * d + (points[0].x + center.x) / 2;\n cardinalityPosition.y = -Math.cos(angle) * d + (points[0].y + center.y) / 2;\n return cardinalityPosition;\n};\n\nexport const getStylesFromArray = arr => {\n let style = '';\n let labelStyle = '';\n\n for (let i = 0; i < arr.length; i++) {\n if (typeof arr[i] !== 'undefined') {\n // add text properties to label style definition\n if (arr[i].startsWith('color:') || arr[i].startsWith('text-align:')) {\n labelStyle = labelStyle + arr[i] + ';';\n } else {\n style = style + arr[i] + ';';\n }\n }\n }\n\n return { style: style, labelStyle: labelStyle };\n};\n\nlet cnt = 0;\nexport const generateId = () => {\n cnt++;\n return (\n 'id-' +\n Math.random()\n .toString(36)\n .substr(2, 12) +\n '-' +\n cnt\n );\n};\n\nfunction makeid(length) {\n var result = '';\n var characters = '0123456789abcdef';\n var charactersLength = characters.length;\n for (var i = 0; i < length; i++) {\n result += characters.charAt(Math.floor(Math.random() * charactersLength));\n }\n return result;\n}\n\nexport const random = options => {\n return makeid(options.length);\n};\n\n/**\n * @function assignWithDepth\n * Extends the functionality of {@link ObjectConstructor.assign} with the ability to merge arbitrary-depth objects\n * For each key in src with path `k` (recursively) performs an Object.assign(dst[`k`], src[`k`]) with\n * a slight change from the typical handling of undefined for dst[`k`]: instead of raising an error,\n * dst[`k`] is auto-initialized to {} and effectively merged with src[`k`]\n *
' },\n config\n );\n if (common.lineBreakRegex.test(label)) {\n return label;\n }\n const words = label.split(' ');\n const completedLines = [];\n let nextLine = '';\n words.forEach((word, index) => {\n const wordLength = calculateTextWidth(`${word} `, config);\n const nextLineLength = calculateTextWidth(nextLine, config);\n if (wordLength > maxWidth) {\n const { hyphenatedStrings, remainingWord } = breakString(word, maxWidth, '-', config);\n completedLines.push(nextLine, ...hyphenatedStrings);\n nextLine = remainingWord;\n } else if (nextLineLength + wordLength >= maxWidth) {\n completedLines.push(nextLine);\n nextLine = word;\n } else {\n nextLine = [nextLine, word].filter(Boolean).join(' ');\n }\n const currentWord = index + 1;\n const isLastWord = currentWord === words.length;\n if (isLastWord) {\n completedLines.push(nextLine);\n }\n });\n return completedLines.filter(line => line !== '').join(config.joinWith);\n },\n (label, maxWidth, config) =>\n `${label}-${maxWidth}-${config.fontSize}-${config.fontWeight}-${config.fontFamily}-${config.joinWith}`\n);\n\nconst breakString = memoize(\n (word, maxWidth, hyphenCharacter = '-', config) => {\n config = Object.assign(\n { fontSize: 12, fontWeight: 400, fontFamily: 'Arial', margin: 0 },\n config\n );\n const characters = word.split('');\n const lines = [];\n let currentLine = '';\n characters.forEach((character, index) => {\n const nextLine = `${currentLine}${character}`;\n const lineWidth = calculateTextWidth(nextLine, config);\n if (lineWidth >= maxWidth) {\n const currentCharacter = index + 1;\n const isLastLine = characters.length === currentCharacter;\n const hyphenatedNextLine = `${nextLine}${hyphenCharacter}`;\n lines.push(isLastLine ? nextLine : hyphenatedNextLine);\n currentLine = '';\n } else {\n currentLine = nextLine;\n }\n });\n return { hyphenatedStrings: lines, remainingWord: currentLine };\n },\n (word, maxWidth, hyphenCharacter = '-', config) =>\n `${word}-${maxWidth}-${hyphenCharacter}-${config.fontSize}-${config.fontWeight}-${config.fontFamily}`\n);\n\n/**\n * This calculates the text's height, taking into account the wrap breaks and\n * both the statically configured height, width, and the length of the text (in pixels).\n *\n * If the wrapped text text has greater height, we extend the height, so it's\n * value won't overflow.\n *\n * @return - The height for the given text\n * @param text the text to measure\n * @param config - the config for fontSize, fontFamily, and fontWeight all impacting the resulting size\n */\nexport const calculateTextHeight = function(text, config) {\n config = Object.assign(\n { fontSize: 12, fontWeight: 400, fontFamily: 'Arial', margin: 15 },\n config\n );\n return calculateTextDimensions(text, config).height;\n};\n\n/**\n * This calculates the width of the given text, font size and family.\n *\n * @return - The width for the given text\n * @param text - The text to calculate the width of\n * @param config - the config for fontSize, fontFamily, and fontWeight all impacting the resulting size\n */\nexport const calculateTextWidth = function(text, config) {\n config = Object.assign({ fontSize: 12, fontWeight: 400, fontFamily: 'Arial' }, config);\n return calculateTextDimensions(text, config).width;\n};\n\n/**\n * This calculates the dimensions of the given text, font size, font family, font weight, and margins.\n *\n * @return - The width for the given text\n * @param text - The text to calculate the width of\n * @param config - the config for fontSize, fontFamily, fontWeight, and margin all impacting the resulting size\n */\nexport const calculateTextDimensions = memoize(\n function(text, config) {\n config = Object.assign({ fontSize: 12, fontWeight: 400, fontFamily: 'Arial' }, config);\n const { fontSize, fontFamily, fontWeight } = config;\n if (!text) {\n return { width: 0, height: 0 };\n }\n\n // We can't really know if the user supplied font family will render on the user agent;\n // thus, we'll take the max width between the user supplied font family, and a default\n // of sans-serif.\n const fontFamilies = ['sans-serif', fontFamily];\n const lines = text.split(common.lineBreakRegex);\n let dims = [];\n\n const body = select('body');\n // We don't want to leak DOM elements - if a removal operation isn't available\n // for any reason, do not continue.\n if (!body.remove) {\n return { width: 0, height: 0, lineHeight: 0 };\n }\n\n const g = body.append('svg');\n\n for (let fontFamily of fontFamilies) {\n let cheight = 0;\n let dim = { width: 0, height: 0, lineHeight: 0 };\n for (let line of lines) {\n const textObj = getTextObj();\n textObj.text = line;\n const textElem = drawSimpleText(g, textObj)\n .style('font-size', fontSize)\n .style('font-weight', fontWeight)\n .style('font-family', fontFamily);\n\n let bBox = (textElem._groups || textElem)[0][0].getBBox();\n dim.width = Math.round(Math.max(dim.width, bBox.width));\n cheight = Math.round(bBox.height);\n dim.height += cheight;\n dim.lineHeight = Math.round(Math.max(dim.lineHeight, cheight));\n }\n dims.push(dim);\n }\n\n g.remove();\n\n let index =\n isNaN(dims[1].height) ||\n isNaN(dims[1].width) ||\n isNaN(dims[1].lineHeight) ||\n (dims[0].height > dims[1].height &&\n dims[0].width > dims[1].width &&\n dims[0].lineHeight > dims[1].lineHeight)\n ? 0\n : 1;\n return dims[index];\n },\n (text, config) => `${text}-${config.fontSize}-${config.fontWeight}-${config.fontFamily}`\n);\n\nexport default {\n assignWithDepth,\n wrapLabel,\n calculateTextHeight,\n calculateTextWidth,\n calculateTextDimensions,\n detectInit,\n detectDirective,\n detectType,\n isSubstringInArray,\n interpolateToCurve,\n calcLabelPosition,\n calcCardinalityPosition,\n formatUrl,\n getStylesFromArray,\n generateId,\n random,\n memoize,\n runFunc\n};\n","import { darken, lighten, adjust } from 'khroma';\n\nclass Theme {\n constructor() {\n /* Base variables */\n this.primaryColor = '#9f33be';\n this.secondaryColor = '#b20238';\n this.tertiaryColor = lighten(this.primaryColor, 30);\n this.relationColor = '#000';\n\n // this.primaryColor = '#fa255e';\n // this.secondaryColor = '#c39ea0';\n // this.tertiaryColor = '#f8e5e5';\n\n // this.primaryColor = '#ECECFF';\n // this.secondaryColor = '#ffffde';\n // this.tertiaryColor = '#ffffde';\n\n this.background = 'white';\n this.lineColor = '#333333';\n this.border1 = '#9370DB';\n this.arrowheadColor = '#333333';\n this.fontFamily = '\"trebuchet ms\", verdana, arial';\n this.fontSize = '16px';\n this.labelBackground = '#e8e8e8';\n this.textColor = '#333';\n this.noteBkgColor = '#fff5ad';\n this.noteBorderColor = '#aaaa33';\n this.updateColors();\n }\n updateColors() {\n this.secondBkg = this.tertiaryColor;\n\n /* Flowchart variables */\n\n this.nodeBkg = this.primaryColor;\n this.mainBkg = this.primaryColor;\n this.nodeBorder = darken(this.primaryColor, 23); // border 1\n this.clusterBkg = this.tertiaryColor;\n this.clusterBorder = darken(this.tertiaryColor, 30);\n this.defaultLinkColor = this.lineColor;\n this.titleColor = this.textColor;\n this.edgeLabelBackground = this.labelBackground;\n\n /* Sequence Diagram variables */\n\n // this.actorBorder = lighten(this.border1, 0.5);\n this.actorBorder = lighten(this.border1, 23);\n this.actorBkg = this.mainBkg;\n this.actorTextColor = 'black';\n this.actorLineColor = 'grey';\n this.labelBoxBkgColor = this.actorBkg;\n this.signalColor = this.textColor;\n this.signalTextColor = this.textColor;\n this.labelBoxBorderColor = this.actorBorder;\n this.labelTextColor = this.actorTextColor;\n this.loopTextColor = this.actorTextColor;\n this.noteBorderColor = this.border2;\n this.noteTextColor = this.actorTextColor;\n this.activationBorderColor = darken(this.secondaryColor, 10);\n this.activationBkgColor = this.secondaryColor;\n this.sequenceNumberColor = 'white';\n\n /* Gantt chart variables */\n\n this.taskTextColor = this.taskTextLightColor;\n this.taskTextOutsideColor = this.taskTextDarkColor;\n this.sectionBkgColor = this.tertiaryColor;\n this.altSectionBkgColor = 'white';\n this.sectionBkgColor = this.secondaryColor;\n this.sectionBkgColor2 = this.tertiaryColor;\n this.altSectionBkgColor = 'white';\n this.sectionBkgColor2 = this.primaryColor;\n this.taskBorderColor = lighten(this.primaryColor, 23);\n this.taskBkgColor = this.primaryColor;\n this.taskTextLightColor = 'white';\n this.taskTextColor = 'calculated';\n this.taskTextDarkColor = 'black';\n this.taskTextOutsideColor = 'calculated';\n this.taskTextClickableColor = '#003163';\n this.activeTaskBorderColor = this.primaryColor;\n this.activeTaskBkgColor = lighten(this.primaryColor, 23);\n this.gridColor = 'lightgrey';\n this.doneTaskBkgColor = 'lightgrey';\n this.doneTaskBorderColor = 'grey';\n this.critBorderColor = '#ff8888';\n this.critBkgColor = 'red';\n this.todayLineColor = 'red';\n\n /* state colors */\n this.labelColor = 'black';\n this.errorBkgColor = '#552222';\n this.errorTextColor = '#552222';\n\n /* state colors */\n\n /* class */\n this.classText = this.textColor;\n\n /* user-journey */\n this.fillType0 = this.primaryColor;\n this.fillType1 = this.secondaryColor;\n this.fillType2 = adjust(this.primaryColor, { h: 64 });\n this.fillType3 = adjust(this.secondaryColor, { h: 64 });\n this.fillType4 = adjust(this.primaryColor, { h: -64 });\n this.fillType5 = adjust(this.secondaryColor, { h: -64 });\n this.fillType6 = adjust(this.primaryColor, { h: 128 });\n this.fillType7 = adjust(this.secondaryColor, { h: 128 });\n }\n calculate(overrides) {\n if (typeof overrides !== 'object') {\n // Calculate colors form base colors\n this.updateColors();\n return;\n }\n\n const keys = Object.keys(overrides);\n\n // Copy values from overrides, this is mainly for base colors\n keys.forEach(k => {\n this[k] = overrides[k];\n });\n\n // Calculate colors form base colors\n this.updateColors();\n // Copy values from overrides again in case of an override of derived value\n keys.forEach(k => {\n this[k] = overrides[k];\n });\n }\n}\n\nexport const getThemeVariables = userOverrides => {\n const theme = new Theme();\n theme.calculate(userOverrides);\n return theme;\n};\n","import { invert, lighten, darken, rgba, adjust } from 'khroma';\n\nclass Theme {\n constructor() {\n this.background = '#333';\n this.primaryColor = '#1f2020';\n this.secondaryColor = lighten(this.primaryColor, 16);\n this.mainBkg = '#1f2020';\n this.secondBkg = 'calculated';\n this.mainContrastColor = 'lightgrey';\n this.darkTextColor = lighten(invert('#323D47'), 10);\n this.lineColor = 'calculated';\n this.border1 = '#81B1DB';\n this.border2 = rgba(255, 255, 255, 0.25);\n this.arrowheadColor = 'calculated';\n this.fontFamily = '\"trebuchet ms\", verdana, arial';\n this.fontSize = '16px';\n this.labelBackground = '#181818';\n this.textColor = '#ccc';\n /* Flowchart variables */\n\n this.nodeBkg = 'calculated';\n this.nodeBorder = 'calculated';\n this.clusterBkg = 'calculated';\n this.clusterBorder = 'calculated';\n this.defaultLinkColor = 'calculated';\n this.titleColor = '#F9FFFE';\n this.edgeLabelBackground = 'calculated';\n\n /* Sequence Diagram variables */\n\n this.actorBorder = 'calculated';\n this.actorBkg = 'calculated';\n this.actorTextColor = 'calculated';\n this.actorLineColor = 'calculated';\n this.signalColor = 'calculated';\n this.signalTextColor = 'calculated';\n this.labelBoxBkgColor = 'calculated';\n this.labelBoxBorderColor = 'calculated';\n this.labelTextColor = 'calculated';\n this.loopTextColor = 'calculated';\n this.noteBorderColor = 'calculated';\n this.noteBkgColor = '#fff5ad';\n this.noteTextColor = 'calculated';\n this.activationBorderColor = 'calculated';\n this.activationBkgColor = 'calculated';\n this.sequenceNumberColor = 'black';\n\n /* Gantt chart variables */\n\n this.sectionBkgColor = darken('#EAE8D9', 30);\n this.altSectionBkgColor = 'calculated';\n this.sectionBkgColor2 = '#EAE8D9';\n this.taskBorderColor = rgba(255, 255, 255, 70);\n this.taskBkgColor = 'calculated';\n this.taskTextColor = 'calculated';\n this.taskTextLightColor = 'calculated';\n this.taskTextOutsideColor = 'calculated';\n this.taskTextClickableColor = '#003163';\n this.activeTaskBorderColor = rgba(255, 255, 255, 50);\n this.activeTaskBkgColor = '#81B1DB';\n this.gridColor = 'calculated';\n this.doneTaskBkgColor = 'calculated';\n this.doneTaskBorderColor = 'grey';\n this.critBorderColor = '#E83737';\n this.critBkgColor = '#E83737';\n this.taskTextDarkColor = 'calculated';\n this.todayLineColor = '#DB5757';\n\n /* state colors */\n this.labelColor = 'calculated';\n\n this.errorBkgColor = '#a44141';\n this.errorTextColor = '#ddd';\n }\n updateColors() {\n this.secondBkg = lighten(this.mainBkg, 16);\n this.lineColor = this.mainContrastColor;\n this.arrowheadColor = this.mainContrastColor;\n /* Flowchart variables */\n\n this.nodeBkg = this.mainBkg;\n this.nodeBorder = this.border1;\n this.clusterBkg = this.secondBkg;\n this.clusterBorder = this.border2;\n this.defaultLinkColor = this.lineColor;\n this.edgeLabelBackground = lighten(this.labelBackground, 25);\n\n /* Sequence Diagram variables */\n\n this.actorBorder = this.border1;\n this.actorBkg = this.mainBkg;\n this.actorTextColor = this.mainContrastColor;\n this.actorLineColor = this.mainContrastColor;\n this.signalColor = this.mainContrastColor;\n this.signalTextColor = this.mainContrastColor;\n this.labelBoxBkgColor = this.actorBkg;\n this.labelBoxBorderColor = this.actorBorder;\n this.labelTextColor = this.mainContrastColor;\n this.loopTextColor = this.mainContrastColor;\n this.noteBorderColor = this.border2;\n this.noteTextColor = this.mainBkg;\n this.activationBorderColor = this.border1;\n this.activationBkgColor = this.secondBkg;\n\n /* Gantt chart variables */\n\n this.altSectionBkgColor = this.background;\n this.taskBkgColor = lighten(this.mainBkg, 23);\n this.taskTextColor = this.darkTextColor;\n this.taskTextLightColor = this.mainContrastColor;\n this.taskTextOutsideColor = this.taskTextLightColor;\n this.gridColor = this.mainContrastColor;\n this.doneTaskBkgColor = this.mainContrastColor;\n this.taskTextDarkColor = this.darkTextColor;\n\n /* state colors */\n this.labelColor = this.textColor;\n this.altBackground = lighten(this.background, 20);\n\n this.fillType0 = this.primaryColor;\n this.fillType1 = this.secondaryColor;\n this.fillType2 = adjust(this.primaryColor, { h: 64 });\n this.fillType3 = adjust(this.secondaryColor, { h: 64 });\n this.fillType4 = adjust(this.primaryColor, { h: -64 });\n this.fillType5 = adjust(this.secondaryColor, { h: -64 });\n this.fillType6 = adjust(this.primaryColor, { h: 128 });\n this.fillType7 = adjust(this.secondaryColor, { h: 128 });\n /* class */\n this.classText = this.nodeBorder;\n }\n calculate(overrides) {\n if (typeof overrides !== 'object') {\n // Calculate colors form base colors\n this.updateColors();\n return;\n }\n\n const keys = Object.keys(overrides);\n\n // Copy values from overrides, this is mainly for base colors\n keys.forEach(k => {\n this[k] = overrides[k];\n });\n\n // Calculate colors form base colors\n this.updateColors();\n // Copy values from overrides again in case of an override of derived value\n keys.forEach(k => {\n this[k] = overrides[k];\n });\n }\n}\n\nexport const getThemeVariables = userOverrides => {\n const theme = new Theme();\n theme.calculate(userOverrides);\n return theme;\n};\n","import { lighten, rgba, adjust } from 'khroma';\n\nclass Theme {\n constructor() {\n /* Base variables */\n this.primaryColor = '#ECECFF';\n this.secondaryColor = '#ffffde';\n this.background = 'white';\n this.mainBkg = '#ECECFF';\n this.secondBkg = '#ffffde';\n this.lineColor = '#333333';\n this.border1 = '#9370DB';\n this.border2 = '#aaaa33';\n this.arrowheadColor = '#333333';\n this.fontFamily = '\"trebuchet ms\", verdana, arial';\n this.fontSize = '16px';\n this.labelBackground = '#e8e8e8';\n this.textColor = '#333';\n\n /* Flowchart variables */\n\n this.nodeBkg = 'calculated';\n this.nodeBorder = 'calculated';\n this.clusterBkg = 'calculated';\n this.clusterBorder = 'calculated';\n this.defaultLinkColor = 'calculated';\n this.titleColor = 'calculated';\n this.edgeLabelBackground = 'calculated';\n\n /* Sequence Diagram variables */\n\n this.actorBorder = 'calculated';\n this.actorBkg = 'calculated';\n this.actorTextColor = 'black';\n this.actorLineColor = 'grey';\n this.signalColor = 'calculated';\n this.signalTextColor = 'calculated';\n this.labelBoxBkgColor = 'calculated';\n this.labelBoxBorderColor = 'calculated';\n this.labelTextColor = 'calculated';\n this.loopTextColor = 'calculated';\n this.noteBorderColor = 'calculated';\n this.noteBkgColor = '#fff5ad';\n this.noteTextColor = 'calculated';\n this.activationBorderColor = '#666';\n this.activationBkgColor = '#f4f4f4';\n this.sequenceNumberColor = 'white';\n\n /* Gantt chart variables */\n\n this.sectionBkgColor = 'calculated';\n this.altSectionBkgColor = 'calculated';\n this.sectionBkgColor2 = 'calculated';\n this.taskBorderColor = 'calculated';\n this.taskBkgColor = 'calculated';\n this.taskTextLightColor = 'calculated';\n this.taskTextColor = this.taskTextLightColor;\n this.taskTextDarkColor = 'calculated';\n this.taskTextOutsideColor = this.taskTextDarkColor;\n this.taskTextClickableColor = 'calculated';\n this.activeTaskBorderColor = 'calculated';\n this.activeTaskBkgColor = 'calculated';\n this.gridColor = 'calculated';\n this.doneTaskBkgColor = 'calculated';\n this.doneTaskBorderColor = 'calculated';\n this.critBorderColor = 'calculated';\n this.critBkgColor = 'calculated';\n this.todayLineColor = 'calculated';\n\n this.sectionBkgColor = rgba(102, 102, 255, 0.49);\n this.altSectionBkgColor = 'white';\n this.sectionBkgColor2 = '#fff400';\n this.taskBorderColor = '#534fbc';\n this.taskBkgColor = '#8a90dd';\n this.taskTextLightColor = 'white';\n this.taskTextColor = 'calculated';\n this.taskTextDarkColor = 'black';\n this.taskTextOutsideColor = 'calculated';\n this.taskTextClickableColor = '#003163';\n this.activeTaskBorderColor = '#534fbc';\n this.activeTaskBkgColor = '#bfc7ff';\n this.gridColor = 'lightgrey';\n this.doneTaskBkgColor = 'lightgrey';\n this.doneTaskBorderColor = 'grey';\n this.critBorderColor = '#ff8888';\n this.critBkgColor = 'red';\n this.todayLineColor = 'red';\n\n /* state colors */\n this.labelColor = 'black';\n this.errorBkgColor = '#552222';\n this.errorTextColor = '#552222';\n this.updateColors();\n }\n updateColors() {\n /* Flowchart variables */\n\n this.nodeBkg = this.mainBkg;\n this.nodeBorder = this.border1; // border 1\n this.clusterBkg = this.secondBkg;\n this.clusterBorder = this.border2;\n this.defaultLinkColor = this.lineColor;\n this.titleColor = this.textColor;\n this.edgeLabelBackground = this.labelBackground;\n\n /* Sequence Diagram variables */\n\n // this.actorBorder = lighten(this.border1, 0.5);\n this.actorBorder = lighten(this.border1, 23);\n this.actorBkg = this.mainBkg;\n this.labelBoxBkgColor = this.actorBkg;\n this.signalColor = this.textColor;\n this.signalTextColor = this.textColor;\n this.labelBoxBorderColor = this.actorBorder;\n this.labelTextColor = this.actorTextColor;\n this.loopTextColor = this.actorTextColor;\n this.noteBorderColor = this.border2;\n this.noteTextColor = this.actorTextColor;\n\n /* Gantt chart variables */\n\n this.taskTextColor = this.taskTextLightColor;\n this.taskTextOutsideColor = this.taskTextDarkColor;\n\n /* state colors */\n /* class */\n this.classText = this.nodeBorder;\n /* journey */\n this.fillType0 = this.primaryColor;\n this.fillType1 = this.secondaryColor;\n this.fillType2 = adjust(this.primaryColor, { h: 64 });\n this.fillType3 = adjust(this.secondaryColor, { h: 64 });\n this.fillType4 = adjust(this.primaryColor, { h: -64 });\n this.fillType5 = adjust(this.secondaryColor, { h: -64 });\n this.fillType6 = adjust(this.primaryColor, { h: 128 });\n this.fillType7 = adjust(this.secondaryColor, { h: 128 });\n }\n calculate(overrides) {\n if (typeof overrides !== 'object') {\n // Calculate colors form base colors\n this.updateColors();\n return;\n }\n\n const keys = Object.keys(overrides);\n\n // Copy values from overrides, this is mainly for base colors\n keys.forEach(k => {\n this[k] = overrides[k];\n });\n\n // Calculate colors form base colors\n this.updateColors();\n // Copy values from overrides again in case of an override of derived value\n keys.forEach(k => {\n this[k] = overrides[k];\n });\n }\n}\n\nexport const getThemeVariables = userOverrides => {\n const theme = new Theme();\n theme.calculate(userOverrides);\n return theme;\n};\n","import { darken, adjust } from 'khroma';\nclass Theme {\n constructor() {\n /* Base vales */\n this.primaryColor = '#cde498';\n this.secondaryColor = '#cdffb2';\n this.background = 'white';\n this.mainBkg = '#cde498';\n this.secondBkg = '#cdffb2';\n this.lineColor = 'green';\n this.border1 = '#13540c';\n this.border2 = '#6eaa49';\n this.arrowheadColor = 'green';\n this.fontFamily = '\"trebuchet ms\", verdana, arial';\n this.fontSize = '16px';\n\n /* Flowchart variables */\n\n this.nodeBkg = 'calculated';\n this.nodeBorder = 'calculated';\n this.clusterBkg = 'calculated';\n this.clusterBorder = 'calculated';\n this.defaultLinkColor = 'calculated';\n this.titleColor = '#333';\n this.edgeLabelBackground = '#e8e8e8';\n\n /* Sequence Diagram variables */\n\n this.actorBorder = 'calculated';\n this.actorBkg = 'calculated';\n this.actorTextColor = 'black';\n this.actorLineColor = 'grey';\n this.signalColor = '#333';\n this.signalTextColor = '#333';\n this.labelBoxBkgColor = 'calculated';\n this.labelBoxBorderColor = '#326932';\n this.labelTextColor = 'calculated';\n this.loopTextColor = 'calculated';\n this.noteBorderColor = 'calculated';\n this.noteBkgColor = '#fff5ad';\n this.noteTextColor = 'calculated';\n this.activationBorderColor = '#666';\n this.activationBkgColor = '#f4f4f4';\n this.sequenceNumberColor = 'white';\n\n /* Gantt chart variables */\n\n this.sectionBkgColor = '#6eaa49';\n this.altSectionBkgColor = 'white';\n this.sectionBkgColor2 = '#6eaa49';\n this.taskBorderColor = 'calculated';\n this.taskBkgColor = '#487e3a';\n this.taskTextLightColor = 'white';\n this.taskTextColor = 'calculated';\n this.taskTextDarkColor = 'black';\n this.taskTextOutsideColor = 'calculated';\n this.taskTextClickableColor = '#003163';\n this.activeTaskBorderColor = 'calculated';\n this.activeTaskBkgColor = 'calculated';\n this.gridColor = 'lightgrey';\n this.doneTaskBkgColor = 'lightgrey';\n this.doneTaskBorderColor = 'grey';\n this.critBorderColor = '#ff8888';\n this.critBkgColor = 'red';\n this.todayLineColor = 'red';\n\n /* state colors */\n this.labelColor = 'black';\n\n this.errorBkgColor = '#552222';\n this.errorTextColor = '#552222';\n }\n updateColors() {\n /* Flowchart variables */\n\n this.nodeBkg = this.mainBkg;\n this.nodeBorder = this.border1;\n this.clusterBkg = this.secondBkg;\n this.clusterBorder = this.border2;\n this.defaultLinkColor = this.lineColor;\n\n /* Sequence Diagram variables */\n\n this.actorBorder = darken(this.mainBkg, 20);\n this.actorBkg = this.mainBkg;\n this.labelBoxBkgColor = this.actorBkg;\n this.labelTextColor = this.actorTextColor;\n this.loopTextColor = this.actorTextColor;\n this.noteBorderColor = this.border2;\n this.noteTextColor = this.actorTextColor;\n\n /* Gantt chart variables */\n\n this.taskBorderColor = this.border1;\n this.taskTextColor = this.taskTextLightColor;\n this.taskTextOutsideColor = this.taskTextDarkColor;\n this.activeTaskBorderColor = this.taskBorderColor;\n this.activeTaskBkgColor = this.mainBkg;\n\n /* state colors */\n /* class */\n this.classText = this.nodeBorder;\n /* journey */\n this.fillType0 = this.primaryColor;\n this.fillType1 = this.secondaryColor;\n this.fillType2 = adjust(this.primaryColor, { h: 64 });\n this.fillType3 = adjust(this.secondaryColor, { h: 64 });\n this.fillType4 = adjust(this.primaryColor, { h: -64 });\n this.fillType5 = adjust(this.secondaryColor, { h: -64 });\n this.fillType6 = adjust(this.primaryColor, { h: 128 });\n this.fillType7 = adjust(this.secondaryColor, { h: 128 });\n }\n calculate(overrides) {\n if (typeof overrides !== 'object') {\n // Calculate colors form base colors\n this.updateColors();\n return;\n }\n\n const keys = Object.keys(overrides);\n\n // Copy values from overrides, this is mainly for base colors\n keys.forEach(k => {\n this[k] = overrides[k];\n });\n\n // Calculate colors form base colors\n this.updateColors();\n // Copy values from overrides again in case of an override of derived value\n keys.forEach(k => {\n this[k] = overrides[k];\n });\n }\n}\n\nexport const getThemeVariables = userOverrides => {\n const theme = new Theme();\n theme.calculate(userOverrides);\n return theme;\n};\n","import { darken, lighten, adjust } from 'khroma';\n\n// const Color = require ( 'khroma/dist/color' ).default\n// Color.format.hex.stringify(Color.parse('hsl(210, 66.6666666667%, 95%)')); // => \"#EAF2FB\"\n\nclass Theme {\n constructor() {\n this.primaryColor = '#eee';\n this.contrast = '#26a';\n this.secondaryColor = lighten(this.contrast, 55);\n this.background = 'white';\n this.mainBkg = '#eee';\n this.secondBkg = 'calculated';\n this.lineColor = '#666';\n this.border1 = '#999';\n this.border2 = 'calculated';\n this.note = '#ffa';\n this.text = '#333';\n this.critical = '#d42';\n this.done = '#bbb';\n this.arrowheadColor = '#333333';\n this.fontFamily = '\"trebuchet ms\", verdana, arial';\n this.fontSize = '16px';\n\n /* Flowchart variables */\n\n this.nodeBkg = 'calculated';\n this.nodeBorder = 'calculated';\n this.clusterBkg = 'calculated';\n this.clusterBorder = 'calculated';\n this.defaultLinkColor = 'calculated';\n this.titleColor = 'calculated';\n this.edgeLabelBackground = 'white';\n\n /* Sequence Diagram variables */\n\n this.actorBorder = 'calculated';\n this.actorBkg = 'calculated';\n this.actorTextColor = 'calculated';\n this.actorLineColor = 'calculated';\n this.signalColor = 'calculated';\n this.signalTextColor = 'calculated';\n this.labelBoxBkgColor = 'calculated';\n this.labelBoxBorderColor = 'calculated';\n this.labelTextColor = 'calculated';\n this.loopTextColor = 'calculated';\n this.noteBorderColor = 'calculated';\n this.noteBkgColor = 'calculated';\n this.noteTextColor = 'calculated';\n this.activationBorderColor = '#666';\n this.activationBkgColor = '#f4f4f4';\n this.sequenceNumberColor = 'white';\n\n /* Gantt chart variables */\n\n this.sectionBkgColor = 'calculated';\n this.altSectionBkgColor = 'white';\n this.sectionBkgColor2 = 'calculated';\n this.taskBorderColor = 'calculated';\n this.taskBkgColor = 'calculated';\n this.taskTextLightColor = 'white';\n this.taskTextColor = 'calculated';\n this.taskTextDarkColor = 'calculated';\n this.taskTextOutsideColor = 'calculated';\n this.taskTextClickableColor = '#003163';\n this.activeTaskBorderColor = 'calculated';\n this.activeTaskBkgColor = 'calculated';\n this.gridColor = 'calculated';\n this.doneTaskBkgColor = 'calculated';\n this.doneTaskBorderColor = 'calculated';\n this.critBkgColor = 'calculated';\n this.critBorderColor = 'calculated';\n this.todayLineColor = 'calculated';\n\n /* state colors */\n this.labelColor = 'black';\n\n this.errorBkgColor = '#552222';\n this.errorTextColor = '#552222';\n }\n updateColors() {\n this.secondBkg = lighten(this.contrast, 55);\n this.border2 = this.contrast;\n\n /* Flowchart variables */\n\n this.nodeBkg = this.mainBkg;\n this.nodeBorder = this.border1;\n this.clusterBkg = this.secondBkg;\n this.clusterBorder = this.border2;\n this.defaultLinkColor = this.lineColor;\n this.titleColor = this.text;\n\n /* Sequence Diagram variables */\n\n this.actorBorder = lighten(this.border1, 23);\n this.actorBkg = this.mainBkg;\n this.actorTextColor = this.text;\n this.actorLineColor = this.lineColor;\n this.signalColor = this.text;\n this.signalTextColor = this.text;\n this.labelBoxBkgColor = this.actorBkg;\n this.labelBoxBorderColor = this.actorBorder;\n this.labelTextColor = this.text;\n this.loopTextColor = this.text;\n this.noteBorderColor = darken(this.note, 60);\n this.noteBkgColor = this.note;\n this.noteTextColor = this.actorTextColor;\n\n /* Gantt chart variables */\n\n this.sectionBkgColor = lighten(this.contrast, 30);\n this.sectionBkgColor2 = lighten(this.contrast, 30);\n\n this.taskBorderColor = darken(this.contrast, 10);\n\n this.taskBkgColor = this.contrast;\n this.taskTextColor = this.taskTextLightColor;\n this.taskTextDarkColor = this.text;\n this.taskTextOutsideColor = this.taskTextDarkColor;\n this.activeTaskBorderColor = this.taskBorderColor;\n this.activeTaskBkgColor = this.mainBkg;\n this.gridColor = lighten(this.border1, 30);\n\n this.doneTaskBkgColor = this.done;\n this.doneTaskBorderColor = this.lineColor;\n this.critBkgColor = this.critical;\n this.critBorderColor = darken(this.critBkgColor, 10);\n\n this.todayLineColor = this.critBkgColor;\n\n /* state colors */\n /* class */\n this.classText = this.nodeBorder;\n /* journey */\n this.fillType0 = this.primaryColor;\n this.fillType1 = this.secondaryColor;\n this.fillType2 = adjust(this.primaryColor, { h: 64 });\n this.fillType3 = adjust(this.secondaryColor, { h: 64 });\n this.fillType4 = adjust(this.primaryColor, { h: -64 });\n this.fillType5 = adjust(this.secondaryColor, { h: -64 });\n this.fillType6 = adjust(this.primaryColor, { h: 128 });\n this.fillType7 = adjust(this.secondaryColor, { h: 128 });\n }\n calculate(overrides) {\n if (typeof overrides !== 'object') {\n // Calculate colors form base colors\n this.updateColors();\n return;\n }\n\n const keys = Object.keys(overrides);\n\n // Copy values from overrides, this is mainly for base colors\n keys.forEach(k => {\n this[k] = overrides[k];\n });\n\n // Calculate colors form base colors\n this.updateColors();\n // Copy values from overrides again in case of an override of derived value\n keys.forEach(k => {\n this[k] = overrides[k];\n });\n }\n}\n\nexport const getThemeVariables = userOverrides => {\n const theme = new Theme();\n theme.calculate(userOverrides);\n console.info('Theme', userOverrides, theme);\n return theme;\n};\n","import { getThemeVariables as baseThemeVariables } from './theme-base';\nimport { getThemeVariables as darkThemeVariables } from './theme-dark';\nimport { getThemeVariables as defaultThemeVariables } from './theme-default';\nimport { getThemeVariables as forestThemeVariables } from './theme-forest';\nimport { getThemeVariables as neutralThemeVariables } from './theme-neutral';\n\nexport default {\n base: {\n getThemeVariables: baseThemeVariables\n },\n dark: {\n getThemeVariables: darkThemeVariables\n },\n default: {\n getThemeVariables: defaultThemeVariables\n },\n forest: {\n getThemeVariables: forestThemeVariables\n },\n neutral: {\n getThemeVariables: neutralThemeVariables\n }\n};\n","import { assignWithDepth } from './utils';\nimport { logger } from './logger';\nimport theme from './themes';\n\n// import { unflatten } from 'flat';\n// import flatten from 'flat';\n\n// import themeVariables from './theme-default';\n// import themeForestVariables from './theme-forest';\n// import themeNeutralVariables from './theme-neutral';\n\nconst handleThemeVariables = value => {\n return theme[value] ? theme[value].getThemeVariables() : theme.default.getThemeVariables();\n};\n\nconst manipulators = {\n themeVariables: handleThemeVariables\n};\n\n/**\n * **Configuration methods in Mermaid version 8.6.0 have been updated, to learn more[[click here](8.6.0_docs.md)].**\n *\n * ## **What follows are config instructions for older versions**\n * These are the default options which can be overridden with the initialization call like so:\n * **Example 1:**\n * \n * mermaid.initialize({\n * flowchart:{\n * htmlLabels: false\n * }\n * });\n *
\n *\n * **Example 2:**\n * \n * <script>\n * var config = {\n * startOnLoad:true,\n * flowchart:{\n * useMaxWidth:true,\n * htmlLabels:true,\n * curve:'cardinal',\n * },\n *\n * securityLevel:'loose',\n * };\n * mermaid.initialize(config);\n * </script>\n *
\n * A summary of all options and their defaults is found [here](#mermaidapi-configuration-defaults). A description of each option follows below.\n *\n * @name Configuration\n */\nconst config = {\n /** theme , the CSS style sheet\n *\n * theme , the CSS style sheet\n *\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| Theme |Built in Themes| String | Optional | Values include, default, forest, dark, neutral, null|\n *\n ***Notes:**To disable any pre-defined mermaid theme, use \"null\".\n * \n * \"theme\": \"forest\",\n * \"themeCSS\": \".node rect { fill: red; }\"\n *
\n */\n theme: 'default',\n themeVariables: theme['default'].getThemeVariables(),\n themeCSS: undefined,\n /* **maxTextSize** - The maximum allowed size of the users text diamgram */\n maxTextSize: 50000,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *|fontFamily | specifies the font to be used in the rendered diagrams| String | Required | Verdana, Arial, Trebuchet MS,|\n *\n ***notes: Default value is \\\\\"trebuchet ms\\\\\".\n */\n fontFamily: '\"trebuchet ms\", verdana, arial;',\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| logLevel |This option decides the amount of logging to be used.| String | Required | 1, 2, 3, 4, 5 |\n *\n *\n ***Notes:**\n *- debug: 1.\n *- info: 2.\n *- warn: 3.\n *- error: 4.\n *- fatal: 5(default).\n */\n logLevel: 5,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| securitylevel | Level of trust for parsed diagram|String | Required | Strict, Loose, antiscript |\n *\n ***Notes:\n *- **strict**: (**default**) tags in text are encoded, click functionality is disabeled\n *- **loose**: tags in text are allowed, click functionality is enabled\n *- **antiscript**: html tags in text are allowed, (only script element is removed), click functionality is enabled\n */\n securityLevel: 'strict',\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| startOnLoad| Dictates whether mermaind starts on Page load | Boolean | Required | True, False |\n *\n ***Notes:**\n ***Default value: true**\n */\n startOnLoad: true,\n\n /**\n *| Parameter | Description |Type | Required |Values|\n *| --- | --- | --- | --- | --- |\n *| arrowMarkerAbsolute | Controls whether or arrow markers in html code are absolute paths or anchors | Boolean | Required | True, False |\n *\n *\n *## Notes**: This matters if you are using base tag settings.\n ***Default value: false**.\n */\n arrowMarkerAbsolute: false,\n\n /**\n * This option controls which currentConfig keys are considered _secure_ and can only be changed via\n * call to mermaidAPI.initialize. Calls to mermaidAPI.reinitialize cannot make changes to\n * the `secure` keys in the current currentConfig. This prevents malicious graph directives from\n * overriding a site's default security.\n */\n secure: ['secure', 'securityLevel', 'startOnLoad', 'maxTextSize'],\n\n /**\n * The object containing configurations specific for flowcharts\n */\n flowchart: {\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| diagramPadding | amount of padding around the diagram as a whole | Integer | Required | Any Positive Value |\n *\n ***Notes:**The amount of padding around the diagram as a whole so that embedded diagrams have margins, expressed in pixels\n ***Default value: 8**.\n */\n diagramPadding: 8,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| htmlLabels | Flag for setting whether or not a html tag should be used for rendering labels on the edges. | Boolean| Required | True, False|\n *\n ***Notes: Default value: true**.\n */\n htmlLabels: true,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| nodeSpacing | Defines the spacing between nodes on the same level | Integer| Required | Any positive Numbers |\n *\n ***Notes:\n *Pertains to horizontal spacing for TB (top to bottom) or BT (bottom to top) graphs, and the vertical spacing for LR as well as RL graphs.**\n ***Default value 50**.\n */\n nodeSpacing: 50,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| rankSpacing | Defines the spacing between nodes on different levels | Integer | Required| Any Positive Numbers |\n *\n ***Notes: pertains to vertical spacing for TB (top to bottom) or BT (bottom to top), and the horizontal spacing for LR as well as RL graphs.\n ***Default value 50**.\n */\n rankSpacing: 50,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| curve | Defines how mermaid renders curves for flowcharts. | String | Required | Basis, Linear, Cardinal|\n *\n ***Notes:\n *Default Vaue: Linear**\n */\n curve: 'linear',\n // Only used in new experimental rendering\n // repreesents the padding between the labels and the shape\n padding: 15\n },\n\n /**\n * The object containing configurations specific for sequence diagrams\n */\n sequence: {\n /**\n * widt of the activation rect\n * **Default value 10**.\n */\n activationWidth: 10,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| diagramMarginX | margin to the right and left of the sequence diagram | Integer | Required | Any Positive Values |\n *\n ***Notes:**\n ***Default value 50**.\n */\n diagramMarginX: 50,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| diagramMarginY | Margin to the over and under the sequence diagram | Integer | Required | Any Positive Values|\n *\n ***Notes:**\n ***Default value 10**.\n */\n diagramMarginY: 10,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| actorMargin | Margin between actors. | Integer | Required | Any Positive Value |\n *\n ***Notes:**\n ***Default value 50**.\n */\n actorMargin: 50,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| width | Width of actor boxes | Integer | Required | Any Positive Value |\n *\n ***Notes:**\n ***Default value 150**.\n */\n width: 150,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| height | Height of actor boxes | Integer | Required | Any Positive Value|\n *\n ***Notes:**\n ***Default value 65**..\n */\n height: 65,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| boxMargin | Margin around loop boxes | Integer | Required | Any Positive Value |\n *\n ***Notes:**\n *\n ***Default value 10**.\n */\n boxMargin: 10,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| boxTextMargin| margin around the text in loop/alt/opt boxes | Integer | Required| Any Positive Value|\n *\n ***Notes:**\n *\n ***Default value 5**.\n */\n boxTextMargin: 5,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| noteMargin | margin around notes. | Integer | Required | Any Positive Value |\n *\n ***Notes:**\n *\n ***Default value 10**.\n */\n noteMargin: 10,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| messageMargin | Space between messages. | Integer | Required | Any Positive Value |\n *\n ***Notes:**\n *\n *Space between messages.\n ***Default value 35**.\n */\n messageMargin: 35,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| messageAlign | Multiline message alignment | Integer | Required | left, center, right |\n *\n ***Notes:**center **default**\n */\n messageAlign: 'center',\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| mirrorActors | mirror actors under diagram. | Boolean| Required | True, False |\n *\n ***Notes:**\n *\n ***Default value true**.\n */\n mirrorActors: true,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| bottomMarginAdj | Prolongs the edge of the diagram downwards. | Integer | Required | Any Positive Value |\n *\n ***Notes:**Depending on css styling this might need adjustment.\n ***Default value 1**.\n */\n bottomMarginAdj: 1,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| useMaxWidth | See Notes | Boolean | Required | True, False |\n *\n ***Notes:**\n *when this flag is set to true, the height and width is set to 100% and is then scaling with the\n *available space. If set to false, the absolute space required is used.\n ***Default value: True**.\n */\n useMaxWidth: true,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| rightAngles | display curve arrows as right angles| Boolean | Required | True, False |\n *\n ***Notes:**\n *\n *This will display arrows that start and begin at the same node as right angles, rather than a curve\n ***Default value false**.\n */\n rightAngles: false,\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| showSequenceNumbers | This will show the node numbers | Boolean | Required | True, False |\n *\n ***Notes:**\n ***Default value false**.\n */\n showSequenceNumbers: false,\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| actorFontSize| This sets the font size of the actor's description | Integer | Require | Any Positive Value |\n *\n ***Notes:**\n ***Default value 14**..\n */\n actorFontSize: 14,\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| actorFontFamily |This sets the font family of the actor's description | 3 | 4 | Open-Sans, Sans-Serif |\n *\n ***Notes:**\n ***Default value \"Open-Sans\", \"sans-serif\"**.\n */\n actorFontFamily: '\"Open-Sans\", \"sans-serif\"',\n /**\n * This sets the font weight of the actor's description\n * **Default value 400.\n */\n actorFontWeight: 400,\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| noteFontSize |This sets the font size of actor-attached notes. | Integer | Required | Any Positive Value |\n *\n ***Notes:**\n ***Default value 14**..\n */\n noteFontSize: 14,\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| noteFontFamily| This sets the font family of actor-attached notes. | String | Required | trebuchet ms, verdana, arial |\n *\n ***Notes:**\n ***Default value: trebuchet ms **.\n */\n noteFontFamily: '\"trebuchet ms\", verdana, arial',\n /**\n * This sets the font weight of the note's description\n * **Default value 400.\n */\n noteFontWeight: 400,\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| noteAlign | This sets the text alignment of actor-attached notes. | string | required | left, center, right|\n *\n ***Notes:**\n ***Default value center**.\n */\n noteAlign: 'center',\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| messageFontSize | This sets the font size of actor messages. | Integer | Required | Any Positive Number |\n *\n ***Notes:**\n ***Default value 16**.\n */\n messageFontSize: 16,\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| messageFontFamily | This sets the font family of actor messages. | String| Required | trebuchet ms\", verdana, aria |\n *\n ***Notes:**\n ***Default value:\"trebuchet ms**.\n */\n messageFontFamily: '\"trebuchet ms\", verdana, arial',\n /**\n * This sets the font weight of the message's description\n * **Default value 400.\n */\n messageFontWeight: 400,\n /**\n * This sets the auto-wrap state for the diagram\n * **Default value false.\n */\n wrap: false,\n /**\n * This sets the auto-wrap padding for the diagram (sides only)\n * **Default value 10.\n */\n wrapPadding: 10,\n /**\n * This sets the width of the loop-box (loop, alt, opt, par)\n * **Default value 50.\n */\n labelBoxWidth: 50,\n /**\n * This sets the height of the loop-box (loop, alt, opt, par)\n * **Default value 20.\n */\n labelBoxHeight: 20,\n messageFont: function() {\n return {\n fontFamily: this.messageFontFamily,\n fontSize: this.messageFontSize,\n fontWeight: this.messageFontWeight\n };\n },\n noteFont: function() {\n return {\n fontFamily: this.noteFontFamily,\n fontSize: this.noteFontSize,\n fontWeight: this.noteFontWeight\n };\n },\n actorFont: function() {\n return {\n fontFamily: this.actorFontFamily,\n fontSize: this.actorFontSize,\n fontWeight: this.actorFontWeight\n };\n }\n },\n\n /**\n * The object containing configurations specific for gantt diagrams*\n */\n gantt: {\n /**\n *### titleTopMargin\n *\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| titleTopMargin | Margin top for the text over the gantt diagram | Integer | Required | Any Positive Value |\n *\n ***Notes:**\n ***Default value 25**.\n */\n titleTopMargin: 25,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| barHeight | The height of the bars in the graph | Integer | Required | Any Positive Value |\n *\n ***Notes:**\n ***Default value 20**.\n */\n barHeight: 20,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| barGap | The margin between the different activities in the gantt diagram. | Integer | Optional |Any Positive Value |\n *\n ***Notes:**\n ***Default value 4**.\n */\n barGap: 4,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| topPadding | Margin between title and gantt diagram and between axis and gantt diagram. | Integer | Required | Any Positive Value |\n *\n ***Notes:**\n ***Default value 50**.\n */\n topPadding: 50,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| leftPadding | The space allocated for the section name to the left of the activities. | Integer| Required | Any Positive Value |\n *\n ***Notes:**\n ***Default value 75**.\n */\n leftPadding: 75,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| gridLineStartPadding | Vertical starting position of the grid lines. | Integer | Required | Any Positive Value |\n *\n ***Notes:**\n ***Default value 35**.\n */\n gridLineStartPadding: 35,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| fontSize | Font size| Integer | Required | Any Positive Value |\n *\n ***Notes:**\n ***Default value 11**.\n */\n fontSize: 11,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| fontFamily | font Family | string | required |\"Open-Sans\", \"sans-serif\" |\n *\n ***Notes:**\n *\n ***Default value '\"Open-Sans\", \"sans-serif\"'**.\n */\n fontFamily: '\"Open-Sans\", \"sans-serif\"',\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| numberSectionStyles | The number of alternating section styles | Integer | 4 | Any Positive Value |\n *\n ***Notes:**\n ***Default value 4**.\n */\n numberSectionStyles: 4,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| axisFormat | Datetime format of the axis. | 3 | Required | Date in yy-mm-dd |\n *\n ***Notes:**\n *\n * This might need adjustment to match your locale and preferences\n ***Default value '%Y-%m-%d'**.\n */\n axisFormat: '%Y-%m-%d'\n },\n /**\n * The object containing configurations specific for sequence diagrams\n */\n journey: {\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| diagramMarginX | margin to the right and left of the sequence diagram | Integer | Required | Any Positive Value |\n *\n ***Notes:**\n ***Default value 50**.\n */\n diagramMarginX: 50,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| diagramMarginY | margin to the over and under the sequence diagram. | Integer | Required | Any Positive Value|\n *\n ***Notes:**\n ***Default value 10**..\n */\n diagramMarginY: 10,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| actorMargin | Margin between actors. | Integer | Required | Any Positive Value|\n *\n ***Notes:**\n ***Default value 50**.\n */\n actorMargin: 50,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| width | Width of actor boxes | Integer | Required | Any Positive Value |\n *\n ***Notes:**\n ***Default value 150**.\n */\n width: 150,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| height | Height of actor boxes | Integer | Required | Any Positive Value |\n *\n ***Notes:**\n ***Default value 65**.\n */\n height: 65,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| boxMargin | Margin around loop boxes | Integer | Required | Any Positive Value |\n *\n ***Notes:**\n ***Default value 10**.\n */\n boxMargin: 10,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| boxTextMargin | margin around the text in loop/alt/opt boxes | Integer | Required | Any Positive Value |\n *\n ***Notes:**\n */\n boxTextMargin: 5,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| noteMargin | margin around notes. | Integer | Required | Any Positive Value |\n *\n ***Notes:**\n ***Default value 10**.\n */\n noteMargin: 10,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| messageMargin |Space between messages. | Integer | Required | Any Positive Value |\n *\n ***Notes:**\n *\n *Space between messages.\n ***Default value 35**.\n */\n messageMargin: 35,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| messageAlign |Multiline message alignment | 3 | 4 | left, center, right |\n *\n ***Notes:**default:center**\n */\n messageAlign: 'center',\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| bottomMarginAdj | Prolongs the edge of the diagram downwards. | Integer | 4 | Any Positive Value |\n *\n ***Notes:**Depending on css styling this might need adjustment.\n ***Default value 1**.\n */\n bottomMarginAdj: 1,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| useMaxWidth | See notes | Boolean | 4 | True, False |\n *\n ***Notes:**when this flag is set the height and width is set to 100% and is then scaling with the\n *available space if not the absolute space required is used.\n *\n ***Default value true**.\n */\n useMaxWidth: true,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| rightAngles | Curved Arrows become Right Angles, | 3 | 4 | True, False |\n *\n ***Notes:**This will display arrows that start and begin at the same node as right angles, rather than a curves\n ***Default value false**.\n */\n rightAngles: false\n },\n class: {\n arrowMarkerAbsolute: false\n },\n git: {\n arrowMarkerAbsolute: false\n },\n state: {\n dividerMargin: 10,\n sizeUnit: 5,\n padding: 8,\n textHeight: 10,\n titleShift: -15,\n noteMargin: 10,\n forkWidth: 70,\n forkHeight: 7,\n // Used\n miniPadding: 2,\n // Font size factor, this is used to guess the width of the edges labels before rendering by dagre\n // layout. This might need updating if/when switching font\n fontSizeFactor: 5.02,\n fontSize: 24,\n labelHeight: 16,\n edgeLengthFactor: '20',\n compositTitleSize: 35,\n radius: 5\n },\n\n /**\n * The object containing configurations specific for entity relationship diagrams\n */\n er: {\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| diagramPadding | amount of padding around the diagram as a whole | Integer | Required | Any Positive Value |\n *\n ***Notes:**The amount of padding around the diagram as a whole so that embedded diagrams have margins, expressed in pixels\n ***Default value: 20**.\n */\n diagramPadding: 20,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| layoutDirection | Directional bias for layout of entities. | String | Required | \"TB\", \"BT\",\"LR\",\"RL\" |\n *\n ***Notes:**\n *'TB' for Top-Bottom, 'BT'for Bottom-Top, 'LR' for Left-Right, or 'RL' for Right to Left.\n * T = top, B = bottom, L = left, and R = right.\n ***Default value: TB **.\n */\n layoutDirection: 'TB',\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| minEntityWidth | The mimimum width of an entity box, | Integer | Required| Any Positive Value |\n *\n ***Notes:**expressed in pixels\n ***Default value: 100**.\n */\n minEntityWidth: 100,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| minEntityHeight| The minimum height of an entity box, | Integer | 4 | Any Positive Value |\n *\n ***Notes:**expressed in pixels\n ***Default value: 75 **\n */\n minEntityHeight: 75,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| entityPadding|minimum internal padding betweentext in box and box borders| Integer | 4 | Any Positive Value |\n *\n ***Notes:**The minimum internal padding betweentext in an entity box and the enclosing box borders, expressed in pixels.\n ***Default value: 15 **\n */\n entityPadding: 15,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| stroke | Stroke color of box edges and lines | String | 4 | Any recognized color |\n ***Default value: gray **\n */\n stroke: 'gray',\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| fill | Fill color of entity boxes | String | 4 | Any recognized color |\n *\n ***Notes:**\n ***Default value:'honeydew'**\n */\n fill: 'honeydew',\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| fontSize| Font Size in pixels| Integer | | Any Positive Value |\n *\n ***Notes:**Font size (expressed as an integer representing a number of pixels)\n ***Default value: 12 **\n */\n fontSize: 12,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| useMaxWidth | See Notes | Boolean | Required | true, false |\n *\n ***Notes:**\n *When this flag is set to true, the diagram width is locked to 100% and\n *scaled based on available space. If set to false, the diagram reserves its\n *absolute width.\n ***Default value: true**.\n */\n useMaxWidth: true\n }\n};\n\n// debugger;\nconfig.class.arrowMarkerAbsolute = config.arrowMarkerAbsolute;\nconfig.git.arrowMarkerAbsolute = config.arrowMarkerAbsolute;\nexport const defaultConfig = Object.freeze(config);\n\nconst siteConfig = assignWithDepth({}, defaultConfig);\nconst currentConfig = assignWithDepth({}, defaultConfig);\n\n/**\n *## setSiteConfig\n *| Function | Description | Type | Values |\n *| --------- | ------------------- | ------- | ------------------ |\n *| setSiteConfig|Sets the siteConfig to desired values | Put Request | Any Values, except ones in secure array|\n ***Notes:**\n *Sets the siteConfig. The siteConfig is a protected configuration for repeat use. Calls to reset() will reset\n *the currentConfig to siteConfig. Calls to reset(configApi.defaultConfig) will reset siteConfig and currentConfig\n *to the defaultConfig\n *Note: currentConfig is set in this function\n **Default value: At default, will mirror Global Config**\n * @param conf - the base currentConfig to use as siteConfig\n * @returns {*} - the siteConfig\n */\nexport const setSiteConfig = conf => {\n Object.keys(conf).forEach(key => {\n const manipulator = manipulators[key];\n conf[key] = manipulator ? manipulator(conf[key]) : conf[key];\n });\n\n assignWithDepth(currentConfig, conf, { clobber: true });\n // Set theme variables if user has set the theme option\n assignWithDepth(siteConfig, conf);\n\n return getSiteConfig();\n};\n/**\n *## getSiteConfig\n *| Function | Description | Type | Values |\n *| --------- | ------------------- | ------- | ------------------ |\n *| setSiteConfig|Returns the current siteConfig base configuration | Get Request | Returns Any Values in siteConfig|\n ***Notes**:\n *Returns **any** values in siteConfig.\n * @returns {*}\n */\nexport const getSiteConfig = () => {\n return assignWithDepth({}, siteConfig);\n};\n/**\n *## setConfig\n *| Function | Description | Type | Values |\n *| --------- | ------------------- | ------- | ------------------ |\n *| setSiteConfig|Sets the siteConfig to desired values | Put Request| Any Values, except ones in secure array|\n ***Notes**:\n *Sets the currentConfig. The parameter conf is sanitized based on the siteConfig.secure keys. Any\n *values found in conf with key found in siteConfig.secure will be replaced with the corresponding\n *siteConfig value.\n * @param conf - the potential currentConfig\n * @returns {*} - the currentConfig merged with the sanitized conf\n */\nexport const setConfig = conf => {\n sanitize(conf);\n Object.keys(conf).forEach(key => {\n const manipulator = manipulators[key];\n conf[key] = manipulator ? manipulator(conf[key]) : conf[key];\n });\n\n assignWithDepth(currentConfig, conf);\n return getConfig();\n};\n/**\n * ## getConfig\n *| Function | Description | Type | Return Values |\n *| --------- | ------------------- | ------- | ------------------ |\n *| getConfig |Obtains the currentConfig | Get Request | Any Values from currentConfig|\n ***Notes**:\n *Returns **any** the currentConfig\n * @returns {*} - the currentConfig\n */\nexport const getConfig = () => {\n return assignWithDepth({}, currentConfig);\n};\n/**\n *## sanitize\n *| Function | Description | Type | Values |\n *| --------- | ------------------- | ------- | ------------------ |\n *| sanitize |Sets the siteConfig to desired values. | Put Request |None|\n *Ensures options parameter does not attempt to override siteConfig secure keys\n *Note: modifies options in-place\n * @param options - the potential setConfig parameter\n */\nexport const sanitize = options => {\n Object.keys(siteConfig.secure).forEach(key => {\n if (typeof options[siteConfig.secure[key]] !== 'undefined') {\n // DO NOT attempt to print options[siteConfig.secure[key]] within `${}` as a malicious script\n // can exploit the logger's attempt to stringify the value and execute arbitrary code\n logger.warn(\n `Denied attempt to modify a secure key ${siteConfig.secure[key]}`,\n options[siteConfig.secure[key]]\n );\n delete options[siteConfig.secure[key]];\n }\n });\n};\n/**\n *## reset\n *| Function | Description | Type | Required | Values |\n *| --------- | ------------------- | ------- | -------- | ------------------ |\n *| reset|Resets currentConfig to conf| Put Request | Required | None|\n *\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| conf| base set of values, which currentConfig coul be **reset** to.| Dictionary | Required | Any Values, with respect to the secure Array|\n *\n **Notes :\n (default: current siteConfig ) (optional, default `getSiteConfig()`)\n * @param conf - the base currentConfig to reset to (default: current siteConfig )\n */\nexport const reset = (conf = getSiteConfig()) => {\n Object.keys(siteConfig).forEach(key => delete siteConfig[key]);\n Object.keys(currentConfig).forEach(key => delete currentConfig[key]);\n assignWithDepth(siteConfig, conf, { clobber: true });\n assignWithDepth(currentConfig, conf, { clobber: true });\n};\n\nconst configApi = Object.freeze({\n sanitize,\n setSiteConfig,\n getSiteConfig,\n setConfig,\n getConfig,\n reset,\n defaultConfig\n});\nexport default configApi;\n","import { select } from 'd3';\nimport { logger } from '../../logger'; // eslint-disable-line\nimport utils from '../../utils';\nimport { getConfig } from '../../config';\nimport common from '../common/common';\n\n// const MERMAID_DOM_ID_PREFIX = 'mermaid-dom-id-';\nconst MERMAID_DOM_ID_PREFIX = '';\n\nlet config = getConfig();\nlet vertices = {};\nlet edges = [];\nlet classes = [];\nlet subGraphs = [];\nlet subGraphLookup = {};\nlet tooltips = {};\nlet subCount = 0;\nlet firstGraphFlag = true;\nlet direction;\n// Functions to be run after graph rendering\nlet funs = [];\n\n/**\n * Function called by parser when a node definition has been found\n * @param id\n * @param text\n * @param type\n * @param style\n * @param classes\n */\nexport const addVertex = function(_id, text, type, style, classes) {\n let txt;\n let id = _id;\n if (typeof id === 'undefined') {\n return;\n }\n if (id.trim().length === 0) {\n return;\n }\n\n if (id[0].match(/\\d/)) id = MERMAID_DOM_ID_PREFIX + id;\n\n if (typeof vertices[id] === 'undefined') {\n vertices[id] = { id: id, styles: [], classes: [] };\n }\n if (typeof text !== 'undefined') {\n config = getConfig();\n txt = common.sanitizeText(text.trim(), config);\n\n // strip quotes if string starts and ends with a quote\n if (txt[0] === '\"' && txt[txt.length - 1] === '\"') {\n txt = txt.substring(1, txt.length - 1);\n }\n\n vertices[id].text = txt;\n } else {\n if (typeof vertices[id].text === 'undefined') {\n vertices[id].text = _id;\n }\n }\n if (typeof type !== 'undefined') {\n vertices[id].type = type;\n }\n if (typeof style !== 'undefined') {\n if (style !== null) {\n style.forEach(function(s) {\n vertices[id].styles.push(s);\n });\n }\n }\n if (typeof classes !== 'undefined') {\n if (classes !== null) {\n classes.forEach(function(s) {\n vertices[id].classes.push(s);\n });\n }\n }\n};\n\n/**\n * Function called by parser when a link/edge definition has been found\n * @param start\n * @param end\n * @param type\n * @param linktext\n */\nexport const addSingleLink = function(_start, _end, type, linktext) {\n let start = _start;\n let end = _end;\n if (start[0].match(/\\d/)) start = MERMAID_DOM_ID_PREFIX + start;\n if (end[0].match(/\\d/)) end = MERMAID_DOM_ID_PREFIX + end;\n // logger.info('Got edge...', start, end);\n\n const edge = { start: start, end: end, type: undefined, text: '' };\n linktext = type.text;\n\n if (typeof linktext !== 'undefined') {\n edge.text = common.sanitizeText(linktext.trim(), config);\n\n // strip quotes if string starts and exnds with a quote\n if (edge.text[0] === '\"' && edge.text[edge.text.length - 1] === '\"') {\n edge.text = edge.text.substring(1, edge.text.length - 1);\n }\n }\n\n if (typeof type !== 'undefined') {\n edge.type = type.type;\n edge.stroke = type.stroke;\n }\n edges.push(edge);\n};\nexport const addLink = function(_start, _end, type, linktext) {\n let i, j;\n for (i = 0; i < _start.length; i++) {\n for (j = 0; j < _end.length; j++) {\n addSingleLink(_start[i], _end[j], type, linktext);\n }\n }\n};\n\n/**\n * Updates a link's line interpolation algorithm\n * @param pos\n * @param interpolate\n */\nexport const updateLinkInterpolate = function(positions, interp) {\n positions.forEach(function(pos) {\n if (pos === 'default') {\n edges.defaultInterpolate = interp;\n } else {\n edges[pos].interpolate = interp;\n }\n });\n};\n\n/**\n * Updates a link with a style\n * @param pos\n * @param style\n */\nexport const updateLink = function(positions, style) {\n positions.forEach(function(pos) {\n if (pos === 'default') {\n edges.defaultStyle = style;\n } else {\n if (utils.isSubstringInArray('fill', style) === -1) {\n style.push('fill:none');\n }\n edges[pos].style = style;\n }\n });\n};\n\nexport const addClass = function(id, style) {\n if (typeof classes[id] === 'undefined') {\n classes[id] = { id: id, styles: [], textStyles: [] };\n }\n\n if (typeof style !== 'undefined') {\n if (style !== null) {\n style.forEach(function(s) {\n if (s.match('color')) {\n const newStyle1 = s.replace('fill', 'bgFill');\n const newStyle2 = newStyle1.replace('color', 'fill');\n classes[id].textStyles.push(newStyle2);\n }\n classes[id].styles.push(s);\n });\n }\n }\n};\n\n/**\n * Called by parser when a graph definition is found, stores the direction of the chart.\n * @param dir\n */\nexport const setDirection = function(dir) {\n direction = dir;\n if (direction.match(/.*)) {\n direction = 'RL';\n }\n if (direction.match(/.*\\^/)) {\n direction = 'BT';\n }\n if (direction.match(/.*>/)) {\n direction = 'LR';\n }\n if (direction.match(/.*v/)) {\n direction = 'TB';\n }\n};\n\n/**\n * Called by parser when a special node is found, e.g. a clickable element.\n * @param ids Comma separated list of ids\n * @param className Class to add\n */\nexport const setClass = function(ids, className) {\n ids.split(',').forEach(function(_id) {\n let id = _id;\n if (_id[0].match(/\\d/)) id = MERMAID_DOM_ID_PREFIX + id;\n if (typeof vertices[id] !== 'undefined') {\n vertices[id].classes.push(className);\n }\n\n if (typeof subGraphLookup[id] !== 'undefined') {\n subGraphLookup[id].classes.push(className);\n }\n });\n};\n\nconst setTooltip = function(ids, tooltip) {\n ids.split(',').forEach(function(id) {\n if (typeof tooltip !== 'undefined') {\n tooltips[id] = common.sanitizeText(tooltip, config);\n }\n });\n};\n\nconst setClickFun = function(_id, functionName) {\n let id = _id;\n if (_id[0].match(/\\d/)) id = MERMAID_DOM_ID_PREFIX + id;\n if (getConfig().securityLevel !== 'loose') {\n return;\n }\n if (typeof functionName === 'undefined') {\n return;\n }\n if (typeof vertices[id] !== 'undefined') {\n funs.push(function() {\n const elem = document.querySelector(`[id=\"${id}\"]`);\n if (elem !== null) {\n elem.addEventListener(\n 'click',\n function() {\n utils.runFunc(functionName, id);\n },\n false\n );\n }\n });\n }\n};\n\n/**\n * Called by parser when a link is found. Adds the URL to the vertex data.\n * @param ids Comma separated list of ids\n * @param linkStr URL to create a link for\n * @param tooltip Tooltip for the clickable element\n */\nexport const setLink = function(ids, linkStr, tooltip) {\n ids.split(',').forEach(function(_id) {\n let id = _id;\n if (_id[0].match(/\\d/)) id = MERMAID_DOM_ID_PREFIX + id;\n if (typeof vertices[id] !== 'undefined') {\n vertices[id].link = utils.formatUrl(linkStr, config);\n }\n });\n setTooltip(ids, tooltip);\n setClass(ids, 'clickable');\n};\nexport const getTooltip = function(id) {\n return tooltips[id];\n};\n\n/**\n * Called by parser when a click definition is found. Registers an event handler.\n * @param ids Comma separated list of ids\n * @param functionName Function to be called on click\n * @param tooltip Tooltip for the clickable element\n */\nexport const setClickEvent = function(ids, functionName, tooltip) {\n ids.split(',').forEach(function(id) {\n setClickFun(id, functionName);\n });\n setTooltip(ids, tooltip);\n setClass(ids, 'clickable');\n};\n\nexport const bindFunctions = function(element) {\n funs.forEach(function(fun) {\n fun(element);\n });\n};\nexport const getDirection = function() {\n return direction.trim();\n};\n/**\n * Retrieval function for fetching the found nodes after parsing has completed.\n * @returns {{}|*|vertices}\n */\nexport const getVertices = function() {\n return vertices;\n};\n\n/**\n * Retrieval function for fetching the found links after parsing has completed.\n * @returns {{}|*|edges}\n */\nexport const getEdges = function() {\n return edges;\n};\n\n/**\n * Retrieval function for fetching the found class definitions after parsing has completed.\n * @returns {{}|*|classes}\n */\nexport const getClasses = function() {\n return classes;\n};\n\nconst setupToolTips = function(element) {\n let tooltipElem = select('.mermaidTooltip');\n if ((tooltipElem._groups || tooltipElem)[0][0] === null) {\n tooltipElem = select('body')\n .append('div')\n .attr('class', 'mermaidTooltip')\n .style('opacity', 0);\n }\n\n const svg = select(element).select('svg');\n\n const nodes = svg.selectAll('g.node');\n nodes\n .on('mouseover', function() {\n const el = select(this);\n const title = el.attr('title');\n\n // Dont try to draw a tooltip if no data is provided\n if (title === null) {\n return;\n }\n const rect = this.getBoundingClientRect();\n\n tooltipElem\n .transition()\n .duration(200)\n .style('opacity', '.9');\n tooltipElem\n .html(el.attr('title'))\n .style('left', window.scrollX + rect.left + (rect.right - rect.left) / 2 + 'px')\n .style('top', window.scrollY + rect.top - 14 + document.body.scrollTop + 'px');\n el.classed('hover', true);\n })\n .on('mouseout', function() {\n tooltipElem\n .transition()\n .duration(500)\n .style('opacity', 0);\n const el = select(this);\n el.classed('hover', false);\n });\n};\nfuns.push(setupToolTips);\n\n/**\n * Clears the internal graph db so that a new graph can be parsed.\n */\nexport const clear = function() {\n vertices = {};\n classes = {};\n edges = [];\n funs = [];\n funs.push(setupToolTips);\n subGraphs = [];\n subGraphLookup = {};\n subCount = 0;\n tooltips = [];\n firstGraphFlag = true;\n};\n/**\n *\n * @returns {string}\n */\nexport const defaultStyle = function() {\n return 'fill:#ffa;stroke: #f66; stroke-width: 3px; stroke-dasharray: 5, 5;fill:#ffa;stroke: #666;';\n};\n\n/**\n * Clears the internal graph db so that a new graph can be parsed.\n */\nexport const addSubGraph = function(_id, list, _title) {\n let id = _id.trim();\n let title = _title;\n if (_id === _title && _title.match(/\\s/)) {\n id = undefined;\n }\n function uniq(a) {\n const prims = { boolean: {}, number: {}, string: {} };\n const objs = [];\n\n return a.filter(function(item) {\n const type = typeof item;\n if (item.trim() === '') {\n return false;\n }\n if (type in prims) {\n return prims[type].hasOwnProperty(item) ? false : (prims[type][item] = true); // eslint-disable-line\n } else {\n return objs.indexOf(item) >= 0 ? false : objs.push(item);\n }\n });\n }\n\n let nodeList = [];\n\n nodeList = uniq(nodeList.concat.apply(nodeList, list));\n for (let i = 0; i < nodeList.length; i++) {\n if (nodeList[i][0].match(/\\d/)) nodeList[i] = MERMAID_DOM_ID_PREFIX + nodeList[i];\n }\n\n id = id || 'subGraph' + subCount;\n if (id[0].match(/\\d/)) id = MERMAID_DOM_ID_PREFIX + id;\n title = title || '';\n title = common.sanitizeText(title, config);\n subCount = subCount + 1;\n const subGraph = { id: id, nodes: nodeList, title: title.trim(), classes: [] };\n subGraphs.push(subGraph);\n subGraphLookup[id] = subGraph;\n return id;\n};\n\nconst getPosForId = function(id) {\n for (let i = 0; i < subGraphs.length; i++) {\n if (subGraphs[i].id === id) {\n return i;\n }\n }\n return -1;\n};\nlet secCount = -1;\nconst posCrossRef = [];\nconst indexNodes2 = function(id, pos) {\n const nodes = subGraphs[pos].nodes;\n secCount = secCount + 1;\n if (secCount > 2000) {\n return;\n }\n posCrossRef[secCount] = pos;\n // Check if match\n if (subGraphs[pos].id === id) {\n return {\n result: true,\n count: 0\n };\n }\n\n let count = 0;\n let posCount = 1;\n while (count < nodes.length) {\n const childPos = getPosForId(nodes[count]);\n // Ignore regular nodes (pos will be -1)\n if (childPos >= 0) {\n const res = indexNodes2(id, childPos);\n if (res.result) {\n return {\n result: true,\n count: posCount + res.count\n };\n } else {\n posCount = posCount + res.count;\n }\n }\n count = count + 1;\n }\n\n return {\n result: false,\n count: posCount\n };\n};\n\nexport const getDepthFirstPos = function(pos) {\n return posCrossRef[pos];\n};\nexport const indexNodes = function() {\n secCount = -1;\n if (subGraphs.length > 0) {\n indexNodes2('none', subGraphs.length - 1, 0);\n }\n};\n\nexport const getSubGraphs = function() {\n return subGraphs;\n};\n\nexport const firstGraph = () => {\n if (firstGraphFlag) {\n firstGraphFlag = false;\n return true;\n }\n return false;\n};\n\nconst destructStartLink = _str => {\n const str = _str.trim();\n\n switch (str) {\n case '<--':\n return { type: 'arrow_point', stroke: 'normal' };\n case 'x--':\n return { type: 'arrow_cross', stroke: 'normal' };\n case 'o--':\n return { type: 'arrow_circle', stroke: 'normal' };\n case '<-.':\n return { type: 'arrow_point', stroke: 'dotted' };\n case 'x-.':\n return { type: 'arrow_cross', stroke: 'dotted' };\n case 'o-.':\n return { type: 'arrow_circle', stroke: 'dotted' };\n case '<==':\n return { type: 'arrow_point', stroke: 'thick' };\n case 'x==':\n return { type: 'arrow_cross', stroke: 'thick' };\n case 'o==':\n return { type: 'arrow_circle', stroke: 'thick' };\n case '--':\n return { type: 'arrow_open', stroke: 'normal' };\n case '==':\n return { type: 'arrow_open', stroke: 'thick' };\n case '-.':\n return { type: 'arrow_open', stroke: 'dotted' };\n }\n};\n\nconst destructEndLink = _str => {\n const str = _str.trim();\n\n switch (str) {\n case '--x':\n return { type: 'arrow_cross', stroke: 'normal' };\n case '-->':\n return { type: 'arrow_point', stroke: 'normal' };\n case '<-->':\n return { type: 'double_arrow_point', stroke: 'normal' };\n case 'x--x':\n return { type: 'double_arrow_cross', stroke: 'normal' };\n case 'o--o':\n return { type: 'double_arrow_circle', stroke: 'normal' };\n case 'o.-o':\n return { type: 'double_arrow_circle', stroke: 'dotted' };\n case '<==>':\n return { type: 'double_arrow_point', stroke: 'thick' };\n case 'o==o':\n return { type: 'double_arrow_circle', stroke: 'thick' };\n case 'x==x':\n return { type: 'double_arrow_cross', stroke: 'thick' };\n case 'x.-x':\n return { type: 'double_arrow_cross', stroke: 'dotted' };\n case 'x-.-x':\n return { type: 'double_arrow_cross', stroke: 'dotted' };\n case '<.->':\n return { type: 'double_arrow_point', stroke: 'dotted' };\n case '<-.->':\n return { type: 'double_arrow_point', stroke: 'dotted' };\n case 'o-.-o':\n return { type: 'double_arrow_circle', stroke: 'dotted' };\n case '--o':\n return { type: 'arrow_circle', stroke: 'normal' };\n case '---':\n return { type: 'arrow_open', stroke: 'normal' };\n case '-.-x':\n return { type: 'arrow_cross', stroke: 'dotted' };\n case '-.->':\n return { type: 'arrow_point', stroke: 'dotted' };\n case '-.-o':\n return { type: 'arrow_circle', stroke: 'dotted' };\n case '-.-':\n return { type: 'arrow_open', stroke: 'dotted' };\n case '.-x':\n return { type: 'arrow_cross', stroke: 'dotted' };\n case '.->':\n return { type: 'arrow_point', stroke: 'dotted' };\n case '.-o':\n return { type: 'arrow_circle', stroke: 'dotted' };\n case '.-':\n return { type: 'arrow_open', stroke: 'dotted' };\n case '==x':\n return { type: 'arrow_cross', stroke: 'thick' };\n case '==>':\n return { type: 'arrow_point', stroke: 'thick' };\n case '==o':\n return { type: 'arrow_circle', stroke: 'thick' };\n case '===':\n return { type: 'arrow_open', stroke: 'thick' };\n }\n};\n\nconst destructLink = (_str, _startStr) => {\n const info = destructEndLink(_str);\n let startInfo;\n if (_startStr) {\n startInfo = destructStartLink(_startStr);\n\n if (startInfo.stroke !== info.stroke) {\n return { type: 'INVALID', stroke: 'INVALID' };\n }\n\n if (startInfo.type === 'arrow_open') {\n // -- xyz --> - take arrow type form ending\n startInfo.type = info.type;\n } else {\n // x-- xyz --> - not supported\n if (startInfo.type !== info.type) return { type: 'INVALID', stroke: 'INVALID' };\n\n startInfo.type = 'double_' + startInfo.type;\n }\n\n if (startInfo.type === 'double_arrow') {\n startInfo.type = 'double_arrow_point';\n }\n\n return startInfo;\n }\n\n return info;\n};\n\nexport default {\n addVertex,\n addLink,\n updateLinkInterpolate,\n updateLink,\n addClass,\n setDirection,\n setClass,\n getTooltip,\n setClickEvent,\n setLink,\n bindFunctions,\n getDirection,\n getVertices,\n getEdges,\n getClasses,\n clear,\n defaultStyle,\n addSubGraph,\n getDepthFirstPos,\n indexNodes,\n getSubGraphs,\n destructLink,\n lex: {\n firstGraph\n }\n};\n","import dagreD3 from 'dagre-d3';\n\nfunction question(parent, bbox, node) {\n const w = bbox.width;\n const h = bbox.height;\n const s = (w + h) * 0.9;\n const points = [\n { x: s / 2, y: 0 },\n { x: s, y: -s / 2 },\n { x: s / 2, y: -s },\n { x: 0, y: -s / 2 }\n ];\n const shapeSvg = insertPolygonShape(parent, s, s, points);\n node.intersect = function(point) {\n return dagreD3.intersect.polygon(node, points, point);\n };\n return shapeSvg;\n}\n\nfunction hexagon(parent, bbox, node) {\n const f = 4;\n const h = bbox.height;\n const m = h / f;\n const w = bbox.width + 2 * m;\n const points = [\n { x: m, y: 0 },\n { x: w - m, y: 0 },\n { x: w, y: -h / 2 },\n { x: w - m, y: -h },\n { x: m, y: -h },\n { x: 0, y: -h / 2 }\n ];\n const shapeSvg = insertPolygonShape(parent, w, h, points);\n node.intersect = function(point) {\n return dagreD3.intersect.polygon(node, points, point);\n };\n return shapeSvg;\n}\n\nfunction rect_left_inv_arrow(parent, bbox, node) {\n const w = bbox.width;\n const h = bbox.height;\n const points = [\n { x: -h / 2, y: 0 },\n { x: w, y: 0 },\n { x: w, y: -h },\n { x: -h / 2, y: -h },\n { x: 0, y: -h / 2 }\n ];\n const shapeSvg = insertPolygonShape(parent, w, h, points);\n node.intersect = function(point) {\n return dagreD3.intersect.polygon(node, points, point);\n };\n return shapeSvg;\n}\n\nfunction lean_right(parent, bbox, node) {\n const w = bbox.width;\n const h = bbox.height;\n const points = [\n { x: (-2 * h) / 6, y: 0 },\n { x: w - h / 6, y: 0 },\n { x: w + (2 * h) / 6, y: -h },\n { x: h / 6, y: -h }\n ];\n const shapeSvg = insertPolygonShape(parent, w, h, points);\n node.intersect = function(point) {\n return dagreD3.intersect.polygon(node, points, point);\n };\n return shapeSvg;\n}\n\nfunction lean_left(parent, bbox, node) {\n const w = bbox.width;\n const h = bbox.height;\n const points = [\n { x: (2 * h) / 6, y: 0 },\n { x: w + h / 6, y: 0 },\n { x: w - (2 * h) / 6, y: -h },\n { x: -h / 6, y: -h }\n ];\n const shapeSvg = insertPolygonShape(parent, w, h, points);\n node.intersect = function(point) {\n return dagreD3.intersect.polygon(node, points, point);\n };\n return shapeSvg;\n}\n\nfunction trapezoid(parent, bbox, node) {\n const w = bbox.width;\n const h = bbox.height;\n const points = [\n { x: (-2 * h) / 6, y: 0 },\n { x: w + (2 * h) / 6, y: 0 },\n { x: w - h / 6, y: -h },\n { x: h / 6, y: -h }\n ];\n const shapeSvg = insertPolygonShape(parent, w, h, points);\n node.intersect = function(point) {\n return dagreD3.intersect.polygon(node, points, point);\n };\n return shapeSvg;\n}\n\nfunction inv_trapezoid(parent, bbox, node) {\n const w = bbox.width;\n const h = bbox.height;\n const points = [\n { x: h / 6, y: 0 },\n { x: w - h / 6, y: 0 },\n { x: w + (2 * h) / 6, y: -h },\n { x: (-2 * h) / 6, y: -h }\n ];\n const shapeSvg = insertPolygonShape(parent, w, h, points);\n node.intersect = function(point) {\n return dagreD3.intersect.polygon(node, points, point);\n };\n return shapeSvg;\n}\n\nfunction rect_right_inv_arrow(parent, bbox, node) {\n const w = bbox.width;\n const h = bbox.height;\n const points = [\n { x: 0, y: 0 },\n { x: w + h / 2, y: 0 },\n { x: w, y: -h / 2 },\n { x: w + h / 2, y: -h },\n { x: 0, y: -h }\n ];\n const shapeSvg = insertPolygonShape(parent, w, h, points);\n node.intersect = function(point) {\n return dagreD3.intersect.polygon(node, points, point);\n };\n return shapeSvg;\n}\n\nfunction stadium(parent, bbox, node) {\n const h = bbox.height;\n const w = bbox.width + h / 4;\n\n const shapeSvg = parent\n .insert('rect', ':first-child')\n .attr('rx', h / 2)\n .attr('ry', h / 2)\n .attr('x', -w / 2)\n .attr('y', -h / 2)\n .attr('width', w)\n .attr('height', h);\n\n node.intersect = function(point) {\n return dagreD3.intersect.rect(node, point);\n };\n return shapeSvg;\n}\n\nfunction subroutine(parent, bbox, node) {\n const w = bbox.width;\n const h = bbox.height;\n const points = [\n { x: 0, y: 0 },\n { x: w, y: 0 },\n { x: w, y: -h },\n { x: 0, y: -h },\n { x: 0, y: 0 },\n { x: -8, y: 0 },\n { x: w + 8, y: 0 },\n { x: w + 8, y: -h },\n { x: -8, y: -h },\n { x: -8, y: 0 }\n ];\n const shapeSvg = insertPolygonShape(parent, w, h, points);\n node.intersect = function(point) {\n return dagreD3.intersect.polygon(node, points, point);\n };\n return shapeSvg;\n}\n\nfunction cylinder(parent, bbox, node) {\n const w = bbox.width;\n const rx = w / 2;\n const ry = rx / (2.5 + w / 50);\n const h = bbox.height + ry;\n\n const shape =\n 'M 0,' +\n ry +\n ' a ' +\n rx +\n ',' +\n ry +\n ' 0,0,0 ' +\n w +\n ' 0 a ' +\n rx +\n ',' +\n ry +\n ' 0,0,0 ' +\n -w +\n ' 0 l 0,' +\n h +\n ' a ' +\n rx +\n ',' +\n ry +\n ' 0,0,0 ' +\n w +\n ' 0 l 0,' +\n -h;\n\n const shapeSvg = parent\n .attr('label-offset-y', ry)\n .insert('path', ':first-child')\n .attr('d', shape)\n .attr('transform', 'translate(' + -w / 2 + ',' + -(h / 2 + ry) + ')');\n\n node.intersect = function(point) {\n const pos = dagreD3.intersect.rect(node, point);\n const x = pos.x - node.x;\n\n if (\n rx != 0 &&\n (Math.abs(x) < node.width / 2 ||\n (Math.abs(x) == node.width / 2 && Math.abs(pos.y - node.y) > node.height / 2 - ry))\n ) {\n // ellipsis equation: x*x / a*a + y*y / b*b = 1\n // solve for y to get adjustion value for pos.y\n let y = ry * ry * (1 - (x * x) / (rx * rx));\n if (y != 0) y = Math.sqrt(y);\n y = ry - y;\n if (point.y - node.y > 0) y = -y;\n\n pos.y += y;\n }\n\n return pos;\n };\n\n return shapeSvg;\n}\n\nexport function addToRender(render) {\n render.shapes().question = question;\n render.shapes().hexagon = hexagon;\n render.shapes().stadium = stadium;\n render.shapes().subroutine = subroutine;\n render.shapes().cylinder = cylinder;\n\n // Add custom shape for box with inverted arrow on left side\n render.shapes().rect_left_inv_arrow = rect_left_inv_arrow;\n\n // Add custom shape for box with inverted arrow on left side\n render.shapes().lean_right = lean_right;\n\n // Add custom shape for box with inverted arrow on left side\n render.shapes().lean_left = lean_left;\n\n // Add custom shape for box with inverted arrow on left side\n render.shapes().trapezoid = trapezoid;\n\n // Add custom shape for box with inverted arrow on left side\n render.shapes().inv_trapezoid = inv_trapezoid;\n\n // Add custom shape for box with inverted arrow on right side\n render.shapes().rect_right_inv_arrow = rect_right_inv_arrow;\n}\n\nexport function addToRenderV2(addShape) {\n addShape({ question });\n addShape({ hexagon });\n addShape({ stadium });\n addShape({ subroutine });\n addShape({ cylinder });\n\n // Add custom shape for box with inverted arrow on left side\n addShape({ rect_left_inv_arrow });\n\n // Add custom shape for box with inverted arrow on left side\n addShape({ lean_right });\n\n // Add custom shape for box with inverted arrow on left side\n addShape({ lean_left });\n\n // Add custom shape for box with inverted arrow on left side\n addShape({ trapezoid });\n\n // Add custom shape for box with inverted arrow on left side\n addShape({ inv_trapezoid });\n\n // Add custom shape for box with inverted arrow on right side\n addShape({ rect_right_inv_arrow });\n}\n\nfunction insertPolygonShape(parent, w, h, points) {\n return parent\n .insert('polygon', ':first-child')\n .attr(\n 'points',\n points\n .map(function(d) {\n return d.x + ',' + d.y;\n })\n .join(' ')\n )\n .attr('transform', 'translate(' + -w / 2 + ',' + h / 2 + ')');\n}\n\nexport default {\n addToRender,\n addToRenderV2\n};\n","import graphlib from 'graphlib';\nimport { select, curveLinear, selectAll } from 'd3';\n\nimport flowDb from './flowDb';\nimport flow from './parser/flow';\nimport { getConfig } from '../../config';\n\nimport dagreD3 from 'dagre-d3';\nimport addHtmlLabel from 'dagre-d3/lib/label/add-html-label.js';\nimport { logger } from '../../logger';\nimport common from '../common/common';\nimport { interpolateToCurve, getStylesFromArray } from '../../utils';\nimport flowChartShapes from './flowChartShapes';\n\nconst conf = {};\nexport const setConf = function(cnf) {\n const keys = Object.keys(cnf);\n for (let i = 0; i < keys.length; i++) {\n conf[keys[i]] = cnf[keys[i]];\n }\n};\n\n/**\n * Function that adds the vertices found in the graph definition to the graph to be rendered.\n * @param vert Object containing the vertices.\n * @param g The graph that is to be drawn.\n */\nexport const addVertices = function(vert, g, svgId) {\n const svg = select(`[id=\"${svgId}\"]`);\n const keys = Object.keys(vert);\n\n // Iterate through each item in the vertex object (containing all the vertices found) in the graph definition\n keys.forEach(function(id) {\n const vertex = vert[id];\n\n /**\n * Variable for storing the classes for the vertex\n * @type {string}\n */\n let classStr = 'default';\n if (vertex.classes.length > 0) {\n classStr = vertex.classes.join(' ');\n }\n\n const styles = getStylesFromArray(vertex.styles);\n\n // Use vertex id as text in the box if no text is provided by the graph definition\n let vertexText = vertex.text !== undefined ? vertex.text : vertex.id;\n\n // We create a SVG label, either by delegating to addHtmlLabel or manually\n let vertexNode;\n if (getConfig().flowchart.htmlLabels) {\n // TODO: addHtmlLabel accepts a labelStyle. Do we possibly have that?\n const node = {\n label: vertexText.replace(\n /fa[lrsb]?:fa-[\\w-]+/g,\n s => ``\n )\n };\n vertexNode = addHtmlLabel(svg, node).node();\n vertexNode.parentNode.removeChild(vertexNode);\n } else {\n const svgLabel = document.createElementNS('http://www.w3.org/2000/svg', 'text');\n svgLabel.setAttribute('style', styles.labelStyle.replace('color:', 'fill:'));\n\n const rows = vertexText.split(common.lineBreakRegex);\n\n for (let j = 0; j < rows.length; j++) {\n const tspan = document.createElementNS('http://www.w3.org/2000/svg', 'tspan');\n tspan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\n tspan.setAttribute('dy', '1em');\n tspan.setAttribute('x', '1');\n tspan.textContent = rows[j];\n svgLabel.appendChild(tspan);\n }\n vertexNode = svgLabel;\n }\n\n let radious = 0;\n let _shape = '';\n // Set the shape based parameters\n switch (vertex.type) {\n case 'round':\n radious = 5;\n _shape = 'rect';\n break;\n case 'square':\n _shape = 'rect';\n break;\n case 'diamond':\n _shape = 'question';\n break;\n case 'hexagon':\n _shape = 'hexagon';\n break;\n case 'odd':\n _shape = 'rect_left_inv_arrow';\n break;\n case 'lean_right':\n _shape = 'lean_right';\n break;\n case 'lean_left':\n _shape = 'lean_left';\n break;\n case 'trapezoid':\n _shape = 'trapezoid';\n break;\n case 'inv_trapezoid':\n _shape = 'inv_trapezoid';\n break;\n case 'odd_right':\n _shape = 'rect_left_inv_arrow';\n break;\n case 'circle':\n _shape = 'circle';\n break;\n case 'ellipse':\n _shape = 'ellipse';\n break;\n case 'stadium':\n _shape = 'stadium';\n break;\n case 'subroutine':\n _shape = 'subroutine';\n break;\n case 'cylinder':\n _shape = 'cylinder';\n break;\n case 'group':\n _shape = 'rect';\n break;\n default:\n _shape = 'rect';\n }\n // Add the node\n g.setNode(vertex.id, {\n labelType: 'svg',\n labelStyle: styles.labelStyle,\n shape: _shape,\n label: vertexNode,\n rx: radious,\n ry: radious,\n class: classStr,\n style: styles.style,\n id: vertex.id\n });\n });\n};\n\n/**\n * Add edges to graph based on parsed graph defninition\n * @param {Object} edges The edges to add to the graph\n * @param {Object} g The graph object\n */\nexport const addEdges = function(edges, g) {\n let cnt = 0;\n\n let defaultStyle;\n let defaultLabelStyle;\n\n if (typeof edges.defaultStyle !== 'undefined') {\n const defaultStyles = getStylesFromArray(edges.defaultStyle);\n defaultStyle = defaultStyles.style;\n defaultLabelStyle = defaultStyles.labelStyle;\n }\n\n edges.forEach(function(edge) {\n cnt++;\n\n // Identify Link\n var linkId = 'L-' + edge.start + '-' + edge.end;\n var linkNameStart = 'LS-' + edge.start;\n var linkNameEnd = 'LE-' + edge.end;\n\n const edgeData = {};\n\n // Set link type for rendering\n if (edge.type === 'arrow_open') {\n edgeData.arrowhead = 'none';\n } else {\n edgeData.arrowhead = 'normal';\n }\n\n let style = '';\n let labelStyle = '';\n\n if (typeof edge.style !== 'undefined') {\n const styles = getStylesFromArray(edge.style);\n style = styles.style;\n labelStyle = styles.labelStyle;\n } else {\n switch (edge.stroke) {\n case 'normal':\n style = 'fill:none';\n if (typeof defaultStyle !== 'undefined') {\n style = defaultStyle;\n }\n if (typeof defaultLabelStyle !== 'undefined') {\n labelStyle = defaultLabelStyle;\n }\n break;\n case 'dotted':\n style = 'fill:none;stroke-width:2px;stroke-dasharray:3;';\n break;\n case 'thick':\n style = ' stroke-width: 3.5px;fill:none';\n break;\n }\n }\n\n edgeData.style = style;\n edgeData.labelStyle = labelStyle;\n\n if (typeof edge.interpolate !== 'undefined') {\n edgeData.curve = interpolateToCurve(edge.interpolate, curveLinear);\n } else if (typeof edges.defaultInterpolate !== 'undefined') {\n edgeData.curve = interpolateToCurve(edges.defaultInterpolate, curveLinear);\n } else {\n edgeData.curve = interpolateToCurve(conf.curve, curveLinear);\n }\n\n if (typeof edge.text === 'undefined') {\n if (typeof edge.style !== 'undefined') {\n edgeData.arrowheadStyle = 'fill: #333';\n }\n } else {\n edgeData.arrowheadStyle = 'fill: #333';\n edgeData.labelpos = 'c';\n\n if (getConfig().flowchart.htmlLabels) {\n edgeData.labelType = 'html';\n edgeData.label = `${edge.text}`;\n } else {\n edgeData.labelType = 'text';\n edgeData.label = edge.text.replace(common.lineBreakRegex, '\\n');\n\n if (typeof edge.style === 'undefined') {\n edgeData.style = edgeData.style || 'stroke: #333; stroke-width: 1.5px;fill:none';\n }\n\n edgeData.labelStyle = edgeData.labelStyle.replace('color:', 'fill:');\n }\n }\n\n edgeData.id = linkId;\n edgeData.class = linkNameStart + ' ' + linkNameEnd;\n\n // Add the edge to the graph\n g.setEdge(edge.start, edge.end, edgeData, cnt);\n });\n};\n\n/**\n * Returns the all the styles from classDef statements in the graph definition.\n * @returns {object} classDef styles\n */\nexport const getClasses = function(text) {\n logger.info('Extracting classes');\n flowDb.clear();\n try {\n const parser = flow.parser;\n parser.yy = flowDb;\n\n // Parse the graph definition\n parser.parse(text);\n return flowDb.getClasses();\n } catch (e) {\n return;\n }\n};\n\n/**\n * Draws a flowchart in the tag with id: id based on the graph definition in text.\n * @param text\n * @param id\n */\nexport const draw = function(text, id) {\n logger.info('Drawing flowchart');\n flowDb.clear();\n const parser = flow.parser;\n parser.yy = flowDb;\n\n // Parse the graph definition\n // try {\n parser.parse(text);\n // } catch (err) {\n // logger.debug('Parsing failed');\n // }\n\n // Fetch the default direction, use TD if none was found\n let dir = flowDb.getDirection();\n if (typeof dir === 'undefined') {\n dir = 'TD';\n }\n\n const conf = getConfig().flowchart;\n const nodeSpacing = conf.nodeSpacing || 50;\n const rankSpacing = conf.rankSpacing || 50;\n\n // Create the input mermaid.graph\n const g = new graphlib.Graph({\n multigraph: true,\n compound: true\n })\n .setGraph({\n rankdir: dir,\n nodesep: nodeSpacing,\n ranksep: rankSpacing,\n marginx: 8,\n marginy: 8\n })\n .setDefaultEdgeLabel(function() {\n return {};\n });\n\n let subG;\n const subGraphs = flowDb.getSubGraphs();\n for (let i = subGraphs.length - 1; i >= 0; i--) {\n subG = subGraphs[i];\n flowDb.addVertex(subG.id, subG.title, 'group', undefined, subG.classes);\n }\n\n // Fetch the verices/nodes and edges/links from the parsed graph definition\n const vert = flowDb.getVertices();\n\n const edges = flowDb.getEdges();\n\n let i = 0;\n for (i = subGraphs.length - 1; i >= 0; i--) {\n subG = subGraphs[i];\n\n selectAll('cluster').append('text');\n\n for (let j = 0; j < subG.nodes.length; j++) {\n g.setParent(subG.nodes[j], subG.id);\n }\n }\n addVertices(vert, g, id);\n addEdges(edges, g);\n\n // Create the renderer\n const Render = dagreD3.render;\n const render = new Render();\n\n // Add custom shapes\n flowChartShapes.addToRender(render);\n\n // Add our custom arrow - an empty arrowhead\n render.arrows().none = function normal(parent, id, edge, type) {\n const marker = parent\n .append('marker')\n .attr('id', id)\n .attr('viewBox', '0 0 10 10')\n .attr('refX', 9)\n .attr('refY', 5)\n .attr('markerUnits', 'strokeWidth')\n .attr('markerWidth', 8)\n .attr('markerHeight', 6)\n .attr('orient', 'auto');\n\n const path = marker.append('path').attr('d', 'M 0 0 L 0 0 L 0 0 z');\n dagreD3.util.applyStyle(path, edge[type + 'Style']);\n };\n\n // Override normal arrowhead defined in d3. Remove style & add class to allow css styling.\n render.arrows().normal = function normal(parent, id) {\n const marker = parent\n .append('marker')\n .attr('id', id)\n .attr('viewBox', '0 0 10 10')\n .attr('refX', 9)\n .attr('refY', 5)\n .attr('markerUnits', 'strokeWidth')\n .attr('markerWidth', 8)\n .attr('markerHeight', 6)\n .attr('orient', 'auto');\n\n marker\n .append('path')\n .attr('d', 'M 0 0 L 10 5 L 0 10 z')\n .attr('class', 'arrowheadPath')\n .style('stroke-width', 1)\n .style('stroke-dasharray', '1,0');\n };\n\n // Set up an SVG group so that we can translate the final graph.\n const svg = select(`[id=\"${id}\"]`);\n\n // Run the renderer. This is what draws the final graph.\n const element = select('#' + id + ' g');\n render(element, g);\n\n element.selectAll('g.node').attr('title', function() {\n return flowDb.getTooltip(this.id);\n });\n\n const padding = conf.diagramPadding;\n const svgBounds = svg.node().getBBox();\n const width = svgBounds.width + padding * 2;\n const height = svgBounds.height + padding * 2;\n\n if (conf.useMaxWidth) {\n svg.attr('width', '100%');\n svg.attr('style', `max-width: ${width}px;`);\n } else {\n svg.attr('height', height);\n svg.attr('width', width);\n }\n\n // Ensure the viewBox includes the whole svgBounds area with extra space for padding\n const vBox = `${svgBounds.x - padding} ${svgBounds.y - padding} ${width} ${height}`;\n logger.debug(`viewBox ${vBox}`);\n svg.attr('viewBox', vBox);\n\n // Index nodes\n flowDb.indexNodes('subGraph' + i);\n\n // reposition labels\n for (i = 0; i < subGraphs.length; i++) {\n subG = subGraphs[i];\n\n if (subG.title !== 'undefined') {\n const clusterRects = document.querySelectorAll('#' + id + ' [id=\"' + subG.id + '\"] rect');\n const clusterEl = document.querySelectorAll('#' + id + ' [id=\"' + subG.id + '\"]');\n\n const xPos = clusterRects[0].x.baseVal.value;\n const yPos = clusterRects[0].y.baseVal.value;\n const width = clusterRects[0].width.baseVal.value;\n const cluster = select(clusterEl[0]);\n const te = cluster.select('.label');\n te.attr('transform', `translate(${xPos + width / 2}, ${yPos + 14})`);\n te.attr('id', id + 'Text');\n\n for (let j = 0; j < subG.classes.length; j++) {\n clusterEl[0].classList.add(subG.classes[j]);\n }\n }\n }\n\n // Add label rects for non html labels\n if (!conf.htmlLabels || true) { // eslint-disable-line\n const labels = document.querySelectorAll('[id=\"' + id + '\"] .edgeLabel .label');\n for (let k = 0; k < labels.length; k++) {\n const label = labels[k];\n\n // Get dimensions of label\n const dim = label.getBBox();\n\n const rect = document.createElementNS('http://www.w3.org/2000/svg', 'rect');\n rect.setAttribute('rx', 0);\n rect.setAttribute('ry', 0);\n rect.setAttribute('width', dim.width);\n rect.setAttribute('height', dim.height);\n rect.setAttribute('style', 'fill:#e8e8e8;');\n\n label.insertBefore(rect, label.firstChild);\n }\n }\n\n // If node has a link, wrap it in an anchor SVG object.\n const keys = Object.keys(vert);\n keys.forEach(function(key) {\n const vertex = vert[key];\n\n if (vertex.link) {\n const node = select('#' + id + ' [id=\"' + key + '\"]');\n if (node) {\n const link = document.createElementNS('http://www.w3.org/2000/svg', 'a');\n link.setAttributeNS('http://www.w3.org/2000/svg', 'class', vertex.classes.join(' '));\n link.setAttributeNS('http://www.w3.org/2000/svg', 'href', vertex.link);\n link.setAttributeNS('http://www.w3.org/2000/svg', 'rel', 'noopener');\n\n const linkNode = node.insert(function() {\n return link;\n }, ':first-child');\n\n const shape = node.select('.label-container');\n if (shape) {\n linkNode.append(function() {\n return shape.node();\n });\n }\n\n const label = node.select('.label');\n if (label) {\n linkNode.append(function() {\n return label.node();\n });\n }\n }\n }\n });\n};\n\nexport default {\n setConf,\n addVertices,\n addEdges,\n getClasses,\n draw\n};\n","/**\n * Setup arrow head and define the marker. The result is appended to the svg.\n */\n\nimport { logger } from '../logger';\n\n// Only add the number of markers that the diagram needs\nconst insertMarkers = (elem, markerArray, type, id) => {\n markerArray.forEach(markerName => {\n markers[markerName](elem, type, id);\n });\n};\n\nconst extension = (elem, type, id) => {\n logger.trace('Making markers for ', id);\n elem\n .append('defs')\n .append('marker')\n .attr('id', type + '-extensionStart')\n .attr('class', 'marker extension ' + type)\n .attr('refX', 0)\n .attr('refY', 7)\n .attr('markerWidth', 190)\n .attr('markerHeight', 240)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 1,7 L18,13 V 1 Z');\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', type + '-extensionEnd')\n .attr('class', 'marker extension ' + type)\n .attr('refX', 19)\n .attr('refY', 7)\n .attr('markerWidth', 20)\n .attr('markerHeight', 28)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 1,1 V 13 L18,7 Z'); // this is actual shape for arrowhead\n};\n\nconst composition = (elem, type) => {\n elem\n .append('defs')\n .append('marker')\n .attr('id', type + '-compositionStart')\n .attr('class', 'marker composition ' + type)\n .attr('refX', 0)\n .attr('refY', 7)\n .attr('markerWidth', 190)\n .attr('markerHeight', 240)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z');\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', type + '-compositionEnd')\n .attr('class', 'marker composition ' + type)\n .attr('refX', 19)\n .attr('refY', 7)\n .attr('markerWidth', 20)\n .attr('markerHeight', 28)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z');\n};\nconst aggregation = (elem, type) => {\n elem\n .append('defs')\n .append('marker')\n .attr('id', type + '-aggregationStart')\n .attr('class', 'marker aggregation ' + type)\n .attr('refX', 0)\n .attr('refY', 7)\n .attr('markerWidth', 190)\n .attr('markerHeight', 240)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z');\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', type + '-aggregationEnd')\n .attr('class', 'marker aggregation ' + type)\n .attr('refX', 19)\n .attr('refY', 7)\n .attr('markerWidth', 20)\n .attr('markerHeight', 28)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z');\n};\nconst dependency = (elem, type) => {\n elem\n .append('defs')\n .append('marker')\n .attr('id', type + '-dependencyStart')\n .attr('class', 'marker dependency ' + type)\n .attr('refX', 0)\n .attr('refY', 7)\n .attr('markerWidth', 190)\n .attr('markerHeight', 240)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 5,7 L9,13 L1,7 L9,1 Z');\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', type + '-dependencyEnd')\n .attr('class', 'marker dependency ' + type)\n .attr('refX', 19)\n .attr('refY', 7)\n .attr('markerWidth', 20)\n .attr('markerHeight', 28)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 18,7 L9,13 L14,7 L9,1 Z');\n};\nconst point = (elem, type) => {\n elem\n .append('marker')\n .attr('id', type + '-pointEnd')\n .attr('class', 'marker ' + type)\n .attr('viewBox', '0 0 10 10')\n .attr('refX', 9)\n .attr('refY', 5)\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('markerWidth', 12)\n .attr('markerHeight', 12)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 0 0 L 10 5 L 0 10 z')\n .attr('class', 'arrowMarkerPath')\n .style('stroke-width', 1)\n .style('stroke-dasharray', '1,0');\n elem\n .append('marker')\n .attr('id', type + '-pointStart')\n .attr('class', 'marker ' + type)\n .attr('viewBox', '0 0 10 10')\n .attr('refX', 0)\n .attr('refY', 5)\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('markerWidth', 12)\n .attr('markerHeight', 12)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 0 5 L 10 10 L 10 0 z')\n .attr('class', 'arrowMarkerPath')\n .style('stroke-width', 1)\n .style('stroke-dasharray', '1,0');\n};\nconst circle = (elem, type) => {\n elem\n .append('marker')\n .attr('id', type + '-circleEnd')\n .attr('class', 'marker ' + type)\n .attr('viewBox', '0 0 10 10')\n .attr('refX', 11)\n .attr('refY', 5)\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('markerWidth', 11)\n .attr('markerHeight', 11)\n .attr('orient', 'auto')\n .append('circle')\n .attr('cx', '5')\n .attr('cy', '5')\n .attr('r', '5')\n .attr('class', 'arrowMarkerPath')\n .style('stroke-width', 1)\n .style('stroke-dasharray', '1,0');\n\n elem\n .append('marker')\n .attr('id', type + '-circleStart')\n .attr('class', 'marker ' + type)\n .attr('viewBox', '0 0 10 10')\n .attr('refX', -1)\n .attr('refY', 5)\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('markerWidth', 11)\n .attr('markerHeight', 11)\n .attr('orient', 'auto')\n .append('circle')\n .attr('cx', '5')\n .attr('cy', '5')\n .attr('r', '5')\n .attr('class', 'arrowMarkerPath')\n .style('stroke-width', 1)\n .style('stroke-dasharray', '1,0');\n};\nconst cross = (elem, type) => {\n elem\n .append('marker')\n .attr('id', type + '-crossEnd')\n .attr('class', 'marker cross ' + type)\n .attr('viewBox', '0 0 11 11')\n .attr('refX', 12)\n .attr('refY', 5.2)\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('markerWidth', 11)\n .attr('markerHeight', 11)\n .attr('orient', 'auto')\n .append('path')\n // .attr('stroke', 'black')\n .attr('d', 'M 1,1 l 9,9 M 10,1 l -9,9')\n .attr('class', 'arrowMarkerPath')\n .style('stroke-width', 2)\n .style('stroke-dasharray', '1,0');\n\n elem\n .append('marker')\n .attr('id', type + '-crossStart')\n .attr('class', 'marker cross ' + type)\n .attr('viewBox', '0 0 11 11')\n .attr('refX', -1)\n .attr('refY', 5.2)\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('markerWidth', 11)\n .attr('markerHeight', 11)\n .attr('orient', 'auto')\n .append('path')\n // .attr('stroke', 'black')\n .attr('d', 'M 1,1 l 9,9 M 10,1 l -9,9')\n .attr('class', 'arrowMarkerPath')\n .style('stroke-width', 2)\n .style('stroke-dasharray', '1,0');\n};\nconst barb = (elem, type) => {\n elem\n .append('defs')\n .append('marker')\n .attr('id', type + '-barbEnd')\n .attr('refX', 19)\n .attr('refY', 7)\n .attr('markerWidth', 20)\n .attr('markerHeight', 14)\n .attr('markerUnits', 0)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 19,7 L9,13 L14,7 L9,1 Z');\n};\n\n// TODO rename the class diagram markers to something shape descriptive and semanitc free\nconst markers = {\n extension,\n composition,\n aggregation,\n dependency,\n point,\n circle,\n cross,\n barb\n};\nexport default insertMarkers;\n","import { select } from 'd3';\nimport { logger } from '../logger'; // eslint-disable-line\n// let vertexNode;\n// if (getConfig().flowchart.htmlLabels) {\n// // TODO: addHtmlLabel accepts a labelStyle. Do we possibly have that?\n// const node = {\n// label: vertexText.replace(/fa[lrsb]?:fa-[\\w-]+/g, s => ``)\n// };\n// vertexNode = addHtmlLabel(svg, node).node();\n// vertexNode.parentNode.removeChild(vertexNode);\n// } else {\n// const svgLabel = document.createElementNS('http://www.w3.org/2000/svg', 'text');\n// svgLabel.setAttribute('style', styles.labelStyle.replace('color:', 'fill:'));\n\n// const rows = vertexText.split(common.lineBreakRegex);\n\n// for (let j = 0; j < rows.length; j++) {\n// const tspan = document.createElementNS('http://www.w3.org/2000/svg', 'tspan');\n// tspan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\n// tspan.setAttribute('dy', '1em');\n// tspan.setAttribute('x', '1');\n// tspan.textContent = rows[j];\n// svgLabel.appendChild(tspan);\n// }\n// vertexNode = svgLabel;\n// }\nimport { getConfig } from '../config';\n\nfunction applyStyle(dom, styleFn) {\n if (styleFn) {\n dom.attr('style', styleFn);\n }\n}\n\nfunction addHtmlLabel(node) {\n // var fo = root.append('foreignObject').attr('width', '100000');\n\n // var div = fo.append('xhtml:div');\n // div.attr('xmlns', 'http://www.w3.org/1999/xhtml');\n\n // var label = node.label;\n // switch (typeof label) {\n // case 'function':\n // div.insert(label);\n // break;\n // case 'object':\n // // Currently we assume this is a DOM object.\n // div.insert(function() {\n // return label;\n // });\n // break;\n // default:\n // div.html(label);\n // }\n\n // applyStyle(div, node.labelStyle);\n // div.style('display', 'inline-block');\n // // Fix for firefox\n // div.style('white-space', 'nowrap');\n\n // var client = div.node().getBoundingClientRect();\n // fo.attr('width', client.width).attr('height', client.height);\n const fo = select(document.createElementNS('http://www.w3.org/2000/svg', 'foreignObject'));\n const div = fo.append('xhtml:div');\n\n const label = node.label;\n const labelClass = node.isNode ? 'nodeLabel' : 'edgeLabel';\n div.html('' + label + '');\n\n applyStyle(div, node.labelStyle);\n div.style('display', 'inline-block');\n // Fix for firefox\n div.style('white-space', 'nowrap');\n div.attr('xmlns', 'http://www.w3.org/1999/xhtml');\n return fo.node();\n}\n\nconst createLabel = (_vertexText, style, isTitle, isNode) => {\n let vertexText = _vertexText || '';\n if (getConfig().flowchart.htmlLabels) {\n // TODO: addHtmlLabel accepts a labelStyle. Do we possibly have that?\n vertexText = vertexText.replace(/\\\\n|\\n/g, '
');\n logger.info('vertexText' + vertexText);\n const node = {\n isNode,\n label: vertexText.replace(\n /fa[lrsb]?:fa-[\\w-]+/g,\n s => ``\n )\n };\n let vertexNode = addHtmlLabel(node);\n // vertexNode.parentNode.removeChild(vertexNode);\n return vertexNode;\n } else {\n const svgLabel = document.createElementNS('http://www.w3.org/2000/svg', 'text');\n svgLabel.setAttribute('style', style.replace('color:', 'fill:'));\n let rows = [];\n if (typeof vertexText === 'string') {\n rows = vertexText.split(/\\\\n|\\n|
/gi);\n } else if (Array.isArray(vertexText)) {\n rows = vertexText;\n } else {\n rows = [];\n }\n\n for (let j = 0; j < rows.length; j++) {\n const tspan = document.createElementNS('http://www.w3.org/2000/svg', 'tspan');\n tspan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\n tspan.setAttribute('dy', '1em');\n tspan.setAttribute('x', '0');\n if (isTitle) {\n tspan.setAttribute('class', 'title-row');\n } else {\n tspan.setAttribute('class', 'row');\n }\n tspan.textContent = rows[j].trim();\n svgLabel.appendChild(tspan);\n }\n return svgLabel;\n }\n};\n\nexport default createLabel;\n","import createLabel from '../createLabel';\nimport { getConfig } from '../../config';\nimport { select } from 'd3';\nexport const labelHelper = (parent, node, _classes, isNode) => {\n let classes;\n if (!_classes) {\n classes = 'node default';\n } else {\n classes = _classes;\n }\n // Add outer g element\n const shapeSvg = parent\n .insert('g')\n .attr('class', classes)\n .attr('id', node.id);\n\n // Create the label and insert it after the rect\n const label = shapeSvg.insert('g').attr('class', 'label');\n\n const text = label\n .node()\n .appendChild(createLabel(node.labelText, node.labelStyle, false, isNode));\n\n // Get the size of the label\n let bbox = text.getBBox();\n\n if (getConfig().flowchart.htmlLabels) {\n const div = text.children[0];\n const dv = select(text);\n bbox = div.getBoundingClientRect();\n dv.attr('width', bbox.width);\n dv.attr('height', bbox.height);\n }\n\n const halfPadding = node.padding / 2;\n\n // Center the label\n label.attr('transform', 'translate(' + -bbox.width / 2 + ', ' + -bbox.height / 2 + ')');\n\n return { shapeSvg, bbox, halfPadding, label };\n};\n\nexport const updateNodeBounds = (node, element) => {\n const bbox = element.node().getBBox();\n node.width = bbox.width;\n node.height = bbox.height;\n};\n\nexport function insertPolygonShape(parent, w, h, points) {\n return parent\n .insert('polygon', ':first-child')\n .attr(\n 'points',\n points\n .map(function(d) {\n return d.x + ',' + d.y;\n })\n .join(' ')\n )\n .attr('class', 'label-container')\n .attr('transform', 'translate(' + -w / 2 + ',' + h / 2 + ')');\n}\n","/**\n * Decorates with functions required by mermaids dagre-wrapper.\n */\nimport { logger as log } from '../logger';\nimport graphlib from 'graphlib';\n\nexport let clusterDb = {};\nlet decendants = {};\nlet parents = {};\n\nexport const clear = () => {\n decendants = {};\n parents = {};\n clusterDb = {};\n};\n\nconst isDecendant = (id, ancenstorId) => {\n // if (id === ancenstorId) return true;\n\n log.debug(\n 'In isDecendant',\n ancenstorId,\n ' ',\n id,\n ' = ',\n decendants[ancenstorId].indexOf(id) >= 0\n );\n if (decendants[ancenstorId].indexOf(id) >= 0) return true;\n\n return false;\n};\n\nconst edgeInCluster = (edge, clusterId) => {\n log.info('Decendants of ', clusterId, ' is ', decendants[clusterId]);\n log.info('Edge is ', edge);\n // Edges to/from the cluster is not in the cluster, they are in the parent\n if (edge.v === clusterId) return false;\n if (edge.w === clusterId) return false;\n\n if (!decendants[clusterId]) {\n log.debug('Tilt, ', clusterId, ',not in decendants');\n return false;\n }\n log.info('Here ');\n\n if (decendants[clusterId].indexOf(edge.v) >= 0) return true;\n if (isDecendant(edge.v, clusterId)) return true;\n if (isDecendant(edge.w, clusterId)) return true;\n if (decendants[clusterId].indexOf(edge.w) >= 0) return true;\n\n return false;\n};\n\nconst copy = (clusterId, graph, newGraph, rootId) => {\n log.info(\n 'Copying children of ',\n clusterId,\n 'root',\n rootId,\n 'data',\n graph.node(clusterId),\n rootId\n );\n const nodes = graph.children(clusterId) || [];\n\n // Include cluster node if it is not the root\n if (clusterId !== rootId) {\n nodes.push(clusterId);\n }\n\n log.debug('Copying (nodes) clusterId', clusterId, 'nodes', nodes);\n\n nodes.forEach(node => {\n if (graph.children(node).length > 0) {\n copy(node, graph, newGraph, rootId);\n } else {\n const data = graph.node(node);\n log.info('cp ', node, ' to ', rootId, ' with parent ', clusterId); //,node, data, ' parent is ', clusterId);\n newGraph.setNode(node, data);\n log.debug('Setting parent', node, graph.parent(node));\n if (rootId !== graph.parent(node)) {\n newGraph.setParent(node, graph.parent(node));\n }\n\n if (clusterId !== rootId && node !== clusterId) {\n log.debug('Setting parent', node, clusterId);\n newGraph.setParent(node, clusterId);\n } else {\n log.info('In copy ', clusterId, 'root', rootId, 'data', graph.node(clusterId), rootId);\n log.debug(\n 'Not Setting parent for node=',\n node,\n 'cluster!==rootId',\n clusterId !== rootId,\n 'node!==clusterId',\n node !== clusterId\n );\n }\n const edges = graph.edges(node);\n log.debug('Copying Edges', edges);\n edges.forEach(edge => {\n log.info('Edge', edge);\n const data = graph.edge(edge.v, edge.w, edge.name);\n log.info('Edge data', data, rootId);\n try {\n // Do not copy edges in and out of the root cluster, they belong to the parent graph\n if (edgeInCluster(edge, rootId)) {\n log.info('Copying as ', edge.v, edge.w, data, edge.name);\n newGraph.setEdge(edge.v, edge.w, data, edge.name);\n log.info('newGraph edges ', newGraph.edges(), newGraph.edge(newGraph.edges()[0]));\n } else {\n log.info(\n 'Skipping copy of edge ',\n edge.v,\n '-->',\n edge.w,\n ' rootId: ',\n rootId,\n ' clusterId:',\n clusterId\n );\n }\n } catch (e) {\n log.error(e);\n }\n });\n }\n log.debug('Removing node', node);\n graph.removeNode(node);\n });\n};\nexport const extractDecendants = (id, graph) => {\n // log.debug('Extracting ', id);\n const children = graph.children(id);\n let res = [].concat(children);\n\n for (let i = 0; i < children.length; i++) {\n parents[children[i]] = id;\n res = res.concat(extractDecendants(children[i], graph));\n }\n\n return res;\n};\n\n/**\n * Validates the graph, checking that all parent child relation points to existing nodes and that\n * edges between nodes also ia correct. When not correct the function logs the discrepancies.\n * @param {graphlib graph} g\n */\nexport const validate = graph => {\n const edges = graph.edges();\n log.trace('Edges: ', edges);\n for (let i = 0; i < edges.length; i++) {\n if (graph.children(edges[i].v).length > 0) {\n log.trace('The node ', edges[i].v, ' is part of and edge even though it has children');\n return false;\n }\n if (graph.children(edges[i].w).length > 0) {\n log.trace('The node ', edges[i].w, ' is part of and edge even though it has children');\n return false;\n }\n }\n return true;\n};\n\n/**\n * Finds a child that is not a cluster. When faking a edge between a node and a cluster.\n * @param {Finds a } id\n * @param {*} graph\n */\nexport const findNonClusterChild = (id, graph) => {\n // const node = graph.node(id);\n log.trace('Searching', id);\n // const children = graph.children(id).reverse();\n const children = graph.children(id); //.reverse();\n log.trace('Searching children of id ', id, children);\n if (children.length < 1) {\n log.trace('This is a valid node', id);\n return id;\n }\n for (let i = 0; i < children.length; i++) {\n const _id = findNonClusterChild(children[i], graph);\n if (_id) {\n log.trace('Found replacement for', id, ' => ', _id);\n return _id;\n }\n }\n};\n\nconst getAnchorId = id => {\n if (!clusterDb[id]) {\n return id;\n }\n // If the cluster has no external connections\n if (!clusterDb[id].externalConnections) {\n return id;\n }\n\n // Return the replacement node\n if (clusterDb[id]) {\n return clusterDb[id].id;\n }\n return id;\n};\n\nexport const adjustClustersAndEdges = (graph, depth) => {\n if (!graph || depth > 10) {\n log.debug('Opting out, no graph ');\n return;\n } else {\n log.debug('Opting in, graph ');\n }\n // Go through the nodes and for each cluster found, save a replacment node, this can be used when\n // faking a link to a cluster\n graph.nodes().forEach(function(id) {\n const children = graph.children(id);\n if (children.length > 0) {\n log.warn(\n 'Cluster identified',\n id,\n ' Replacement id in edges: ',\n findNonClusterChild(id, graph)\n );\n decendants[id] = extractDecendants(id, graph);\n clusterDb[id] = { id: findNonClusterChild(id, graph), clusterData: graph.node(id) };\n }\n });\n\n // Check incoming and outgoing edges for each cluster\n graph.nodes().forEach(function(id) {\n const children = graph.children(id);\n const edges = graph.edges();\n if (children.length > 0) {\n log.debug('Cluster identified', id, decendants);\n edges.forEach(edge => {\n // log.debug('Edge, decendants: ', edge, decendants[id]);\n\n // Check if any edge leaves the cluster (not the actual cluster, thats a link from the box)\n if (edge.v !== id && edge.w !== id) {\n // Any edge where either the one of the nodes is decending to the cluster but not the other\n // if (decendants[id].indexOf(edge.v) < 0 && decendants[id].indexOf(edge.w) < 0) {\n\n const d1 = isDecendant(edge.v, id);\n const d2 = isDecendant(edge.w, id);\n\n // d1 xor d2 - if either d1 is true and d2 is false or the other way around\n if (d1 ^ d2) {\n log.debug('Edge: ', edge, ' leaves cluster ', id);\n log.debug('Decendants of ', id, ': ', decendants[id]);\n clusterDb[id].externalConnections = true;\n }\n }\n });\n }\n });\n\n extractor(graph, 0);\n\n // For clusters with incoming and/or outgoing edges translate those edges to a real node\n // in the cluster inorder to fake the edge\n graph.edges().forEach(function(e) {\n const edge = graph.edge(e);\n log.trace('Edge ' + e.v + ' -> ' + e.w + ': ' + JSON.stringify(e));\n log.trace('Edge ' + e.v + ' -> ' + e.w + ': ' + JSON.stringify(graph.edge(e)));\n\n let v = e.v;\n let w = e.w;\n // Check if link is either from or to a cluster\n log.trace('Fix', clusterDb, 'ids:', e.v, e.w, 'Translateing: ', clusterDb[e.v], clusterDb[e.w]);\n if (clusterDb[e.v] || clusterDb[e.w]) {\n log.warn('Fixing and trixing - removing', e.v, e.w, e.name);\n v = getAnchorId(e.v);\n w = getAnchorId(e.w);\n graph.removeEdge(e.v, e.w, e.name);\n if (v !== e.v) edge.fromCluster = e.v;\n if (w !== e.w) edge.toCluster = e.w;\n log.warn('Replacing with', v, w, e.name);\n graph.setEdge(v, w, edge, e.name);\n }\n });\n log.warn('Adjusted Graph', graphlib.json.write(graph));\n\n log.trace(clusterDb);\n\n // Remove references to extracted cluster\n // graph.edges().forEach(edge => {\n // if (isDecendant(edge.v, clusterId) || isDecendant(edge.w, clusterId)) {\n // graph.removeEdge(edge);\n // }\n // });\n};\n\nexport const extractor = (graph, depth) => {\n log.debug('extractor - ', depth, graphlib.json.write(graph), graph.children('D'));\n if (depth > 10) {\n log.error('Bailing out');\n return;\n }\n // For clusters without incoming and/or outgoing edges, create a new cluster-node\n // containing the nodes and edges in the custer in a new graph\n // for (let i = 0;)\n let nodes = graph.nodes();\n let hasChildren = false;\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n const children = graph.children(node);\n hasChildren = hasChildren || children.length > 0;\n }\n\n if (!hasChildren) {\n log.debug('Done, no node has children', graph.nodes());\n return;\n }\n // const clusters = Object.keys(clusterDb);\n // clusters.forEach(clusterId => {\n log.debug('Nodes = ', nodes, depth);\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n\n log.debug(\n 'Extracting node',\n node,\n clusterDb,\n clusterDb[node] && !clusterDb[node].externalConnections,\n !graph.parent(node),\n graph.node(node),\n graph.children('D'),\n ' Depth ',\n depth\n );\n // Note that the node might have been removed after the Object.keys call so better check\n // that it still is in the game\n if (!clusterDb[node]) {\n // Skip if the node is not a cluster\n log.debug('Not a cluster', node, depth);\n // break;\n } else if (\n !clusterDb[node].externalConnections &&\n !graph.parent(node) &&\n graph.children(node) &&\n graph.children(node).length > 0\n ) {\n log.debug(\n 'Cluster without external connections, without a parent and with children',\n node,\n depth\n );\n\n const graphSettings = graph.graph();\n\n const clusterGraph = new graphlib.Graph({\n multigraph: true,\n compound: true\n })\n .setGraph({\n rankdir: graphSettings.rankdir === 'TB' ? 'LR' : 'TB',\n // Todo: set proper spacing\n nodesep: 50,\n ranksep: 50,\n marginx: 8,\n marginy: 8\n })\n .setDefaultEdgeLabel(function() {\n return {};\n });\n\n log.debug('Old graph before copy', graphlib.json.write(graph));\n copy(node, graph, clusterGraph, node);\n graph.setNode(node, {\n clusterNode: true,\n id: node,\n clusterData: clusterDb[node].clusterData,\n labelText: clusterDb[node].labelText,\n graph: clusterGraph\n });\n log.debug('New graph after copy', graphlib.json.write(clusterGraph));\n log.debug('Old graph after copy', graphlib.json.write(graph));\n } else {\n log.debug(\n 'Cluster ** ',\n node,\n ' **not meeting the criteria !externalConnections:',\n !clusterDb[node].externalConnections,\n ' no parent: ',\n !graph.parent(node),\n ' children ',\n graph.children(node) && graph.children(node).length > 0,\n graph.children('D'),\n depth\n );\n log.debug(clusterDb);\n }\n }\n\n nodes = graph.nodes();\n log.debug('New list of nodes', nodes);\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n const data = graph.node(node);\n log.debug(' Now next leveö', node, data);\n if (data.clusterNode) {\n extractor(data.graph, depth + 1);\n }\n }\n};\n","function intersectEllipse(node, rx, ry, point) {\n // Formulae from: http://mathworld.wolfram.com/Ellipse-LineIntersection.html\n\n var cx = node.x;\n var cy = node.y;\n\n var px = cx - point.x;\n var py = cy - point.y;\n\n var det = Math.sqrt(rx * rx * py * py + ry * ry * px * px);\n\n var dx = Math.abs((rx * ry * px) / det);\n if (point.x < cx) {\n dx = -dx;\n }\n var dy = Math.abs((rx * ry * py) / det);\n if (point.y < cy) {\n dy = -dy;\n }\n\n return { x: cx + dx, y: cy + dy };\n}\n\nexport default intersectEllipse;\n","import intersectEllipse from './intersect-ellipse';\n\nfunction intersectCircle(node, rx, point) {\n return intersectEllipse(node, rx, rx, point);\n}\n\nexport default intersectCircle;\n","/*\n * Returns the point at which two lines, p and q, intersect or returns\n * undefined if they do not intersect.\n */\nfunction intersectLine(p1, p2, q1, q2) {\n // Algorithm from J. Avro, (ed.) Graphics Gems, No 2, Morgan Kaufmann, 1994,\n // p7 and p473.\n\n var a1, a2, b1, b2, c1, c2;\n var r1, r2, r3, r4;\n var denom, offset, num;\n var x, y;\n\n // Compute a1, b1, c1, where line joining points 1 and 2 is F(x,y) = a1 x +\n // b1 y + c1 = 0.\n a1 = p2.y - p1.y;\n b1 = p1.x - p2.x;\n c1 = p2.x * p1.y - p1.x * p2.y;\n\n // Compute r3 and r4.\n r3 = a1 * q1.x + b1 * q1.y + c1;\n r4 = a1 * q2.x + b1 * q2.y + c1;\n\n // Check signs of r3 and r4. If both point 3 and point 4 lie on\n // same side of line 1, the line segments do not intersect.\n if (r3 !== 0 && r4 !== 0 && sameSign(r3, r4)) {\n return /*DONT_INTERSECT*/;\n }\n\n // Compute a2, b2, c2 where line joining points 3 and 4 is G(x,y) = a2 x + b2 y + c2 = 0\n a2 = q2.y - q1.y;\n b2 = q1.x - q2.x;\n c2 = q2.x * q1.y - q1.x * q2.y;\n\n // Compute r1 and r2\n r1 = a2 * p1.x + b2 * p1.y + c2;\n r2 = a2 * p2.x + b2 * p2.y + c2;\n\n // Check signs of r1 and r2. If both point 1 and point 2 lie\n // on same side of second line segment, the line segments do\n // not intersect.\n if (r1 !== 0 && r2 !== 0 && sameSign(r1, r2)) {\n return /*DONT_INTERSECT*/;\n }\n\n // Line segments intersect: compute intersection point.\n denom = a1 * b2 - a2 * b1;\n if (denom === 0) {\n return /*COLLINEAR*/;\n }\n\n offset = Math.abs(denom / 2);\n\n // The denom/2 is to get rounding instead of truncating. It\n // is added or subtracted to the numerator, depending upon the\n // sign of the numerator.\n num = b1 * c2 - b2 * c1;\n x = num < 0 ? (num - offset) / denom : (num + offset) / denom;\n\n num = a2 * c1 - a1 * c2;\n y = num < 0 ? (num - offset) / denom : (num + offset) / denom;\n\n return { x: x, y: y };\n}\n\nfunction sameSign(r1, r2) {\n return r1 * r2 > 0;\n}\n\nexport default intersectLine;\n","/* eslint \"no-console\": off */\n\nimport intersectLine from './intersect-line';\n\nexport default intersectPolygon;\n\n/*\n * Returns the point ({x, y}) at which the point argument intersects with the\n * node argument assuming that it has the shape specified by polygon.\n */\nfunction intersectPolygon(node, polyPoints, point) {\n var x1 = node.x;\n var y1 = node.y;\n\n var intersections = [];\n\n var minX = Number.POSITIVE_INFINITY;\n var minY = Number.POSITIVE_INFINITY;\n if (typeof polyPoints.forEach === 'function') {\n polyPoints.forEach(function(entry) {\n minX = Math.min(minX, entry.x);\n minY = Math.min(minY, entry.y);\n });\n } else {\n minX = Math.min(minX, polyPoints.x);\n minY = Math.min(minY, polyPoints.y);\n }\n\n var left = x1 - node.width / 2 - minX;\n var top = y1 - node.height / 2 - minY;\n\n for (var i = 0; i < polyPoints.length; i++) {\n var p1 = polyPoints[i];\n var p2 = polyPoints[i < polyPoints.length - 1 ? i + 1 : 0];\n var intersect = intersectLine(\n node,\n point,\n { x: left + p1.x, y: top + p1.y },\n { x: left + p2.x, y: top + p2.y }\n );\n if (intersect) {\n intersections.push(intersect);\n }\n }\n\n if (!intersections.length) {\n console.log('NO INTERSECTION FOUND, RETURN NODE CENTER', node);\n return node;\n }\n\n if (intersections.length > 1) {\n // More intersections, find the one nearest to edge end point\n intersections.sort(function(p, q) {\n var pdx = p.x - point.x;\n var pdy = p.y - point.y;\n var distp = Math.sqrt(pdx * pdx + pdy * pdy);\n\n var qdx = q.x - point.x;\n var qdy = q.y - point.y;\n var distq = Math.sqrt(qdx * qdx + qdy * qdy);\n\n return distp < distq ? -1 : distp === distq ? 0 : 1;\n });\n }\n return intersections[0];\n}\n","const intersectRect = (node, point) => {\n var x = node.x;\n var y = node.y;\n\n // Rectangle intersection algorithm from:\n // http://math.stackexchange.com/questions/108113/find-edge-between-two-boxes\n var dx = point.x - x;\n var dy = point.y - y;\n var w = node.width / 2;\n var h = node.height / 2;\n\n var sx, sy;\n if (Math.abs(dy) * w > Math.abs(dx) * h) {\n // Intersection is top or bottom of rect.\n if (dy < 0) {\n h = -h;\n }\n sx = dy === 0 ? 0 : (h * dx) / dy;\n sy = h;\n } else {\n // Intersection is left or right of rect.\n if (dx < 0) {\n w = -w;\n }\n sx = w;\n sy = dx === 0 ? 0 : (w * dy) / dx;\n }\n\n return { x: x + sx, y: y + sy };\n};\n\nexport default intersectRect;\n","/*\n * Borrowed with love from from dagrge-d3. Many thanks to cpettitt!\n */\n\nimport node from './intersect-node.js';\nimport circle from './intersect-circle.js';\nimport ellipse from './intersect-ellipse.js';\nimport polygon from './intersect-polygon.js';\nimport rect from './intersect-rect.js';\n\nexport default {\n node,\n circle,\n ellipse,\n polygon,\n rect\n};\n","import { select } from 'd3';\nimport { logger } from '../logger'; // eslint-disable-line\nimport { labelHelper, updateNodeBounds, insertPolygonShape } from './shapes/util';\nimport { getConfig } from '../config';\nimport intersect from './intersect/index.js';\nimport createLabel from './createLabel';\nimport note from './shapes/note';\n\nconst question = (parent, node) => {\n const { shapeSvg, bbox } = labelHelper(parent, node, undefined, true);\n\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const s = w + h;\n const points = [\n { x: s / 2, y: 0 },\n { x: s, y: -s / 2 },\n { x: s / 2, y: -s },\n { x: 0, y: -s / 2 }\n ];\n\n logger.info('Question main (Circle)');\n\n const questionElem = insertPolygonShape(shapeSvg, s, s, points);\n updateNodeBounds(node, questionElem);\n node.intersect = function(point) {\n logger.warn('Intersect called');\n return intersect.polygon(node, points, point);\n };\n\n return shapeSvg;\n};\n\nconst hexagon = (parent, node) => {\n const { shapeSvg, bbox } = labelHelper(parent, node, undefined, true);\n\n const f = 4;\n const h = bbox.height + node.padding;\n const m = h / f;\n const w = bbox.width + 2 * m + node.padding;\n const points = [\n { x: m, y: 0 },\n { x: w - m, y: 0 },\n { x: w, y: -h / 2 },\n { x: w - m, y: -h },\n { x: m, y: -h },\n { x: 0, y: -h / 2 }\n ];\n const hex = insertPolygonShape(shapeSvg, w, h, points);\n updateNodeBounds(node, hex);\n\n node.intersect = function(point) {\n return intersect.polygon(node, point);\n };\n\n return shapeSvg;\n};\n\nconst rect_left_inv_arrow = (parent, node) => {\n const { shapeSvg, bbox } = labelHelper(parent, node, undefined, true);\n\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: -h / 2, y: 0 },\n { x: w, y: 0 },\n { x: w, y: -h },\n { x: -h / 2, y: -h },\n { x: 0, y: -h / 2 }\n ];\n\n const el = insertPolygonShape(shapeSvg, w, h, points);\n updateNodeBounds(node, el);\n\n node.intersect = function(point) {\n return intersect.polygon(node, point);\n };\n\n return shapeSvg;\n};\nconst lean_right = (parent, node) => {\n const { shapeSvg, bbox } = labelHelper(parent, node, undefined, true);\n\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: (-2 * h) / 6, y: 0 },\n { x: w - h / 6, y: 0 },\n { x: w + (2 * h) / 6, y: -h },\n { x: h / 6, y: -h }\n ];\n\n const el = insertPolygonShape(shapeSvg, w, h, points);\n updateNodeBounds(node, el);\n\n node.intersect = function(point) {\n return intersect.polygon(node, point);\n };\n\n return shapeSvg;\n};\n\nconst lean_left = (parent, node) => {\n const { shapeSvg, bbox } = labelHelper(parent, node, undefined, true);\n\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: (2 * h) / 6, y: 0 },\n { x: w + h / 6, y: 0 },\n { x: w - (2 * h) / 6, y: -h },\n { x: -h / 6, y: -h }\n ];\n\n const el = insertPolygonShape(shapeSvg, w, h, points);\n updateNodeBounds(node, el);\n\n node.intersect = function(point) {\n return intersect.polygon(node, point);\n };\n\n return shapeSvg;\n};\n\nconst trapezoid = (parent, node) => {\n const { shapeSvg, bbox } = labelHelper(parent, node, undefined, true);\n\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: (-2 * h) / 6, y: 0 },\n { x: w + (2 * h) / 6, y: 0 },\n { x: w - h / 6, y: -h },\n { x: h / 6, y: -h }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n updateNodeBounds(node, el);\n\n node.intersect = function(point) {\n return intersect.polygon(node, point);\n };\n\n return shapeSvg;\n};\n\nconst inv_trapezoid = (parent, node) => {\n const { shapeSvg, bbox } = labelHelper(parent, node, undefined, true);\n\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: h / 6, y: 0 },\n { x: w - h / 6, y: 0 },\n { x: w + (2 * h) / 6, y: -h },\n { x: (-2 * h) / 6, y: -h }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n updateNodeBounds(node, el);\n\n node.intersect = function(point) {\n return intersect.polygon(node, point);\n };\n\n return shapeSvg;\n};\nconst rect_right_inv_arrow = (parent, node) => {\n const { shapeSvg, bbox } = labelHelper(parent, node, undefined, true);\n\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: 0, y: 0 },\n { x: w + h / 2, y: 0 },\n { x: w, y: -h / 2 },\n { x: w + h / 2, y: -h },\n { x: 0, y: -h }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n updateNodeBounds(node, el);\n\n node.intersect = function(point) {\n return intersect.polygon(node, point);\n };\n\n return shapeSvg;\n};\nconst cylinder = (parent, node) => {\n const { shapeSvg, bbox } = labelHelper(parent, node, undefined, true);\n\n const w = bbox.width + node.padding;\n const rx = w / 2;\n const ry = rx / (2.5 + w / 50);\n const h = bbox.height + ry + node.padding;\n\n const shape =\n 'M 0,' +\n ry +\n ' a ' +\n rx +\n ',' +\n ry +\n ' 0,0,0 ' +\n w +\n ' 0 a ' +\n rx +\n ',' +\n ry +\n ' 0,0,0 ' +\n -w +\n ' 0 l 0,' +\n h +\n ' a ' +\n rx +\n ',' +\n ry +\n ' 0,0,0 ' +\n w +\n ' 0 l 0,' +\n -h;\n\n const el = shapeSvg\n .attr('label-offset-y', ry)\n .insert('path', ':first-child')\n .attr('d', shape)\n .attr('transform', 'translate(' + -w / 2 + ',' + -(h / 2 + ry) + ')');\n\n updateNodeBounds(node, el);\n\n node.intersect = function(point) {\n const pos = intersect.rect(node, point);\n const x = pos.x - node.x;\n\n if (\n rx != 0 &&\n (Math.abs(x) < node.width / 2 ||\n (Math.abs(x) == node.width / 2 && Math.abs(pos.y - node.y) > node.height / 2 - ry))\n ) {\n // ellipsis equation: x*x / a*a + y*y / b*b = 1\n // solve for y to get adjustion value for pos.y\n let y = ry * ry * (1 - (x * x) / (rx * rx));\n if (y != 0) y = Math.sqrt(y);\n y = ry - y;\n if (point.y - node.y > 0) y = -y;\n\n pos.y += y;\n }\n\n return pos;\n };\n\n return shapeSvg;\n};\n\nconst rect = (parent, node) => {\n const { shapeSvg, bbox, halfPadding } = labelHelper(parent, node, 'node ' + node.classes, true);\n\n logger.trace('Classes = ', node.classes);\n // add the rect\n const rect = shapeSvg.insert('rect', ':first-child');\n\n rect\n .attr('class', 'basic label-container')\n .attr('rx', node.rx)\n .attr('ry', node.ry)\n .attr('x', -bbox.width / 2 - halfPadding)\n .attr('y', -bbox.height / 2 - halfPadding)\n .attr('width', bbox.width + node.padding)\n .attr('height', bbox.height + node.padding);\n\n updateNodeBounds(node, rect);\n\n node.intersect = function(point) {\n return intersect.rect(node, point);\n };\n\n return shapeSvg;\n};\nconst rectWithTitle = (parent, node) => {\n // const { shapeSvg, bbox, halfPadding } = labelHelper(parent, node, 'node ' + node.classes);\n\n let classes;\n if (!node.classes) {\n classes = 'node default';\n } else {\n classes = 'node ' + node.classes;\n }\n // Add outer g element\n const shapeSvg = parent\n .insert('g')\n .attr('class', classes)\n .attr('id', node.id);\n\n // Create the title label and insert it after the rect\n const rect = shapeSvg.insert('rect', ':first-child');\n // const innerRect = shapeSvg.insert('rect');\n const innerLine = shapeSvg.insert('line');\n\n const label = shapeSvg.insert('g').attr('class', 'label');\n\n const text2 = node.labelText.flat();\n logger.info('Label text', text2[0]);\n\n const text = label.node().appendChild(createLabel(text2[0], node.labelStyle, true, true));\n let bbox;\n if (getConfig().flowchart.htmlLabels) {\n const div = text.children[0];\n const dv = select(text);\n bbox = div.getBoundingClientRect();\n dv.attr('width', bbox.width);\n dv.attr('height', bbox.height);\n }\n logger.info('Text 2', text2);\n const textRows = text2.slice(1, text2.length);\n let titleBox = text.getBBox();\n const descr = label\n .node()\n .appendChild(createLabel(textRows.join('
'), node.labelStyle, true, true));\n\n if (getConfig().flowchart.htmlLabels) {\n const div = descr.children[0];\n const dv = select(descr);\n bbox = div.getBoundingClientRect();\n dv.attr('width', bbox.width);\n dv.attr('height', bbox.height);\n }\n // bbox = label.getBBox();\n // logger.info(descr);\n const halfPadding = node.padding / 2;\n select(descr).attr(\n 'transform',\n 'translate( ' +\n // (titleBox.width - bbox.width) / 2 +\n (bbox.width > titleBox.width ? 0 : (titleBox.width - bbox.width) / 2) +\n ', ' +\n (titleBox.height + halfPadding + 5) +\n ')'\n );\n select(text).attr(\n 'transform',\n 'translate( ' +\n // (titleBox.width - bbox.width) / 2 +\n (bbox.width < titleBox.width ? 0 : -(titleBox.width - bbox.width) / 2) +\n ', ' +\n 0 +\n ')'\n );\n // Get the size of the label\n\n // Bounding box for title and text\n bbox = label.node().getBBox();\n\n // Center the label\n label.attr(\n 'transform',\n 'translate(' + -bbox.width / 2 + ', ' + (-bbox.height / 2 - halfPadding + 3) + ')'\n );\n\n rect\n .attr('class', 'outer title-state')\n .attr('x', -bbox.width / 2 - halfPadding)\n .attr('y', -bbox.height / 2 - halfPadding)\n .attr('width', bbox.width + node.padding)\n .attr('height', bbox.height + node.padding);\n\n innerLine\n .attr('class', 'divider')\n .attr('x1', -bbox.width / 2 - halfPadding)\n .attr('x2', bbox.width / 2 + halfPadding)\n .attr('y1', -bbox.height / 2 - halfPadding + titleBox.height + halfPadding)\n .attr('y2', -bbox.height / 2 - halfPadding + titleBox.height + halfPadding);\n\n updateNodeBounds(node, rect);\n\n node.intersect = function(point) {\n return intersect.rect(node, point);\n };\n\n return shapeSvg;\n};\n\nconst stadium = (parent, node) => {\n const { shapeSvg, bbox } = labelHelper(parent, node, undefined, true);\n\n const h = bbox.height + node.padding;\n const w = bbox.width + h / 4 + node.padding;\n\n // add the rect\n const rect = shapeSvg\n .insert('rect', ':first-child')\n .attr('rx', h / 2)\n .attr('ry', h / 2)\n .attr('x', -w / 2)\n .attr('y', -h / 2)\n .attr('width', w)\n .attr('height', h);\n\n updateNodeBounds(node, rect);\n\n node.intersect = function(point) {\n return intersect.rect(node, point);\n };\n\n return shapeSvg;\n};\nconst circle = (parent, node) => {\n const { shapeSvg, bbox, halfPadding } = labelHelper(parent, node, undefined, true);\n const circle = shapeSvg.insert('circle', ':first-child');\n\n // center the circle around its coordinate\n circle\n .attr('rx', node.rx)\n .attr('ry', node.ry)\n .attr('r', bbox.width / 2 + halfPadding)\n .attr('width', bbox.width + node.padding)\n .attr('height', bbox.height + node.padding);\n\n logger.info('Circle main');\n\n updateNodeBounds(node, circle);\n\n node.intersect = function(point) {\n logger.info('Circle intersect', node, bbox.width / 2 + halfPadding, point);\n return intersect.circle(node, bbox.width / 2 + halfPadding, point);\n };\n\n return shapeSvg;\n};\n\nconst subroutine = (parent, node) => {\n const { shapeSvg, bbox } = labelHelper(parent, node, undefined, true);\n\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: 0, y: 0 },\n { x: w, y: 0 },\n { x: w, y: -h },\n { x: 0, y: -h },\n { x: 0, y: 0 },\n { x: -8, y: 0 },\n { x: w + 8, y: 0 },\n { x: w + 8, y: -h },\n { x: -8, y: -h },\n { x: -8, y: 0 }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n updateNodeBounds(node, el);\n\n node.intersect = function(point) {\n return intersect.polygon(node, point);\n };\n\n return shapeSvg;\n};\n\nconst start = (parent, node) => {\n const shapeSvg = parent\n .insert('g')\n .attr('class', 'node default')\n .attr('id', node.id);\n const circle = shapeSvg.insert('circle', ':first-child');\n\n // center the circle around its coordinate\n circle\n .attr('class', 'state-start')\n .attr('r', 7)\n .attr('width', 14)\n .attr('height', 14);\n\n updateNodeBounds(node, circle);\n\n node.intersect = function(point) {\n return intersect.circle(node, 7, point);\n };\n\n return shapeSvg;\n};\n\nconst forkJoin = (parent, node, dir) => {\n const shapeSvg = parent\n .insert('g')\n .attr('class', 'node default')\n .attr('id', node.id);\n\n let width = 70;\n let height = 10;\n\n if (dir === 'LR') {\n width = 10;\n height = 70;\n }\n\n const shape = shapeSvg\n .append('rect')\n .style('stroke', 'black')\n .style('fill', 'black')\n .attr('x', (-1 * width) / 2)\n .attr('y', (-1 * height) / 2)\n .attr('width', width)\n .attr('height', height)\n .attr('class', 'fork-join');\n\n updateNodeBounds(node, shape);\n node.height = node.height + node.padding / 2;\n node.width = node.width + node.padding / 2;\n node.intersect = function(point) {\n return intersect.rect(node, point);\n };\n\n return shapeSvg;\n};\n\nconst end = (parent, node) => {\n const shapeSvg = parent\n .insert('g')\n .attr('class', 'node default')\n .attr('id', node.id);\n const innerCircle = shapeSvg.insert('circle', ':first-child');\n const circle = shapeSvg.insert('circle', ':first-child');\n\n circle\n .attr('class', 'state-start')\n .attr('r', 7)\n .attr('width', 14)\n .attr('height', 14);\n\n innerCircle\n .attr('class', 'state-end')\n .attr('r', 5)\n .attr('width', 10)\n .attr('height', 10);\n\n updateNodeBounds(node, circle);\n\n node.intersect = function(point) {\n return intersect.circle(node, 7, point);\n };\n\n return shapeSvg;\n};\n\nconst class_box = (parent, node) => {\n const halfPadding = node.padding / 2;\n const rowPadding = 4;\n const lineHeight = 8;\n\n let classes;\n if (!node.classes) {\n classes = 'node default';\n } else {\n classes = 'node ' + node.classes;\n }\n // Add outer g element\n const shapeSvg = parent\n .insert('g')\n .attr('class', classes)\n .attr('id', node.id);\n\n // Create the title label and insert it after the rect\n const rect = shapeSvg.insert('rect', ':first-child');\n const topLine = shapeSvg.insert('line');\n const bottomLine = shapeSvg.insert('line');\n let maxWidth = 0;\n let maxHeight = rowPadding;\n\n const labelContainer = shapeSvg.insert('g').attr('class', 'label');\n let verticalPos = 0;\n const hasInterface = node.classData.annotations && node.classData.annotations[0];\n\n // 1. Create the labels\n const interfaceLabel = labelContainer\n .node()\n .appendChild(createLabel(node.classData.annotations[0], node.labelStyle, true, true));\n const interfaceBBox = interfaceLabel.getBBox();\n if (node.classData.annotations[0]) {\n maxHeight += interfaceBBox.height + rowPadding;\n maxWidth += interfaceBBox.width;\n }\n\n const classTitleLabel = labelContainer\n .node()\n .appendChild(createLabel(node.labelText, node.labelStyle, true, true));\n const classTitleBBox = classTitleLabel.getBBox();\n maxHeight += classTitleBBox.height + rowPadding;\n if (classTitleBBox.width > maxWidth) {\n maxWidth = classTitleBBox.width;\n }\n const classAttributes = [];\n node.classData.members.forEach(str => {\n const lbl = labelContainer.node().appendChild(createLabel(str, node.labelStyle, true, true));\n const bbox = lbl.getBBox();\n if (bbox.width > maxWidth) {\n maxWidth = bbox.width;\n }\n maxHeight += bbox.height + rowPadding;\n classAttributes.push(lbl);\n });\n\n const classMethods = [];\n node.classData.methods.forEach(str => {\n const lbl = labelContainer.node().appendChild(createLabel(str, node.labelStyle, true, true));\n const bbox = lbl.getBBox();\n if (bbox.width > maxWidth) {\n maxWidth = bbox.width;\n }\n maxHeight += bbox.height + rowPadding;\n\n classMethods.push(lbl);\n });\n\n maxHeight += lineHeight;\n\n // 2. Position the labels\n\n // position the interface label\n if (hasInterface) {\n select(interfaceLabel).attr(\n 'transform',\n 'translate( ' +\n -(maxWidth + node.padding - interfaceBBox.width / 2) / 2 +\n ', ' +\n (-1 * maxHeight) / 2 +\n ')'\n );\n verticalPos = interfaceBBox.height + rowPadding;\n }\n // Positin the class title label\n let diffX = (maxWidth - classTitleBBox.width) / 2;\n select(classTitleLabel).attr(\n 'transform',\n 'translate( ' +\n ((-1 * maxWidth) / 2 + diffX) +\n ', ' +\n ((-1 * maxHeight) / 2 + verticalPos) +\n ')'\n );\n verticalPos += classTitleBBox.height + rowPadding;\n\n topLine\n .attr('class', 'divider')\n .attr('x1', -maxWidth / 2 - halfPadding)\n .attr('x2', maxWidth / 2 + halfPadding)\n .attr('y1', -maxHeight / 2 - halfPadding + lineHeight + verticalPos)\n .attr('y2', -maxHeight / 2 - halfPadding + lineHeight + verticalPos);\n\n verticalPos += lineHeight;\n\n classAttributes.forEach(lbl => {\n select(lbl).attr(\n 'transform',\n 'translate( ' +\n -maxWidth / 2 +\n ', ' +\n ((-1 * maxHeight) / 2 + verticalPos + lineHeight / 2) +\n ')'\n );\n verticalPos += classTitleBBox.height + rowPadding;\n });\n\n bottomLine\n .attr('class', 'divider')\n .attr('x1', -maxWidth / 2 - halfPadding)\n .attr('x2', maxWidth / 2 + halfPadding)\n .attr('y1', -maxHeight / 2 - halfPadding + lineHeight + verticalPos)\n .attr('y2', -maxHeight / 2 - halfPadding + lineHeight + verticalPos);\n\n verticalPos += lineHeight;\n\n classMethods.forEach(lbl => {\n select(lbl).attr(\n 'transform',\n 'translate( ' + -maxWidth / 2 + ', ' + ((-1 * maxHeight) / 2 + verticalPos) + ')'\n );\n verticalPos += classTitleBBox.height + rowPadding;\n });\n //\n let bbox;\n if (getConfig().flowchart.htmlLabels) {\n const div = interfaceLabel.children[0];\n const dv = select(interfaceLabel);\n bbox = div.getBoundingClientRect();\n dv.attr('width', bbox.width);\n dv.attr('height', bbox.height);\n }\n // bbox = labelContainer.getBBox();\n\n // logger.info('Text 2', text2);\n // const textRows = text2.slice(1, text2.length);\n // let titleBox = text.getBBox();\n // const descr = label\n // .node()\n // .appendChild(createLabel(textRows.join('
'), node.labelStyle, true, true));\n\n // if (getConfig().flowchart.htmlLabels) {\n // const div = descr.children[0];\n // const dv = select(descr);\n // bbox = div.getBoundingClientRect();\n // dv.attr('width', bbox.width);\n // dv.attr('height', bbox.height);\n // }\n // // bbox = label.getBBox();\n // // logger.info(descr);\n // select(descr).attr(\n // 'transform',\n // 'translate( ' +\n // // (titleBox.width - bbox.width) / 2 +\n // (bbox.width > titleBox.width ? 0 : (titleBox.width - bbox.width) / 2) +\n // ', ' +\n // (titleBox.height + halfPadding + 5) +\n // ')'\n // );\n // select(text).attr(\n // 'transform',\n // 'translate( ' +\n // // (titleBox.width - bbox.width) / 2 +\n // (bbox.width < titleBox.width ? 0 : -(titleBox.width - bbox.width) / 2) +\n // ', ' +\n // 0 +\n // ')'\n // );\n // // Get the size of the label\n\n // // Bounding box for title and text\n // bbox = label.node().getBBox();\n\n // // Center the label\n // label.attr(\n // 'transform',\n // 'translate(' + -bbox.width / 2 + ', ' + (-bbox.height / 2 - halfPadding + 3) + ')'\n // );\n\n rect\n .attr('class', 'outer title-state')\n .attr('x', -maxWidth / 2 - halfPadding)\n .attr('y', -(maxHeight / 2) - halfPadding)\n .attr('width', maxWidth + node.padding)\n .attr('height', maxHeight + node.padding);\n\n // innerLine\n // .attr('class', 'divider')\n // .attr('x1', -bbox.width / 2 - halfPadding)\n // .attr('x2', bbox.width / 2 + halfPadding)\n // .attr('y1', -bbox.height / 2 - halfPadding + titleBox.height + halfPadding)\n // .attr('y2', -bbox.height / 2 - halfPadding + titleBox.height + halfPadding);\n\n updateNodeBounds(node, rect);\n\n node.intersect = function(point) {\n return intersect.rect(node, point);\n };\n\n return shapeSvg;\n};\n\nconst shapes = {\n question,\n rect,\n rectWithTitle,\n circle,\n stadium,\n hexagon,\n rect_left_inv_arrow,\n lean_right,\n lean_left,\n trapezoid,\n inv_trapezoid,\n rect_right_inv_arrow,\n cylinder,\n start,\n end,\n note,\n subroutine,\n fork: forkJoin,\n join: forkJoin,\n class_box\n};\n\nlet nodeElems = {};\n\nexport const insertNode = (elem, node, dir) => {\n nodeElems[node.id] = shapes[node.shape](elem, node, dir);\n};\nexport const setNodeElem = (elem, node) => {\n nodeElems[node.id] = elem;\n};\nexport const clear = () => {\n nodeElems = {};\n};\n\nexport const positionNode = node => {\n const el = nodeElems[node.id];\n logger.trace(\n 'Transforming node',\n node,\n 'translate(' + (node.x - node.width / 2 - 5) + ', ' + (node.y - node.height / 2 - 5) + ')'\n );\n const padding = 8;\n if (node.clusterNode) {\n el.attr(\n 'transform',\n 'translate(' +\n (node.x - node.width / 2 - padding) +\n ', ' +\n (node.y - node.height / 2 - padding) +\n ')'\n );\n } else {\n el.attr('transform', 'translate(' + node.x + ', ' + node.y + ')');\n }\n};\n","import { updateNodeBounds, labelHelper } from './util';\nimport { logger } from '../../logger'; // eslint-disable-line\nimport intersect from '../intersect/index.js';\n\nconst note = (parent, node) => {\n const { shapeSvg, bbox, halfPadding } = labelHelper(parent, node, 'node ' + node.classes, true);\n\n logger.info('Classes = ', node.classes);\n // add the rect\n const rect = shapeSvg.insert('rect', ':first-child');\n\n rect\n .attr('rx', node.rx)\n .attr('ry', node.ry)\n .attr('x', -bbox.width / 2 - halfPadding)\n .attr('y', -bbox.height / 2 - halfPadding)\n .attr('width', bbox.width + node.padding)\n .attr('height', bbox.height + node.padding);\n\n updateNodeBounds(node, rect);\n\n node.intersect = function(point) {\n return intersect.rect(node, point);\n };\n\n return shapeSvg;\n};\n\nexport default note;\n","import intersectRect from './intersect/intersect-rect';\nimport { logger as log } from '../logger'; // eslint-disable-line\nimport createLabel from './createLabel';\nimport { select } from 'd3';\nimport { getConfig } from '../config';\n\nconst rect = (parent, node) => {\n log.trace('Creating subgraph rect for ', node.id, node);\n\n // Add outer g element\n const shapeSvg = parent\n .insert('g')\n .attr('class', 'cluster')\n .attr('id', node.id);\n\n // add the rect\n const rect = shapeSvg.insert('rect', ':first-child');\n\n // Create the label and insert it after the rect\n const label = shapeSvg.insert('g').attr('class', 'cluster-label');\n\n const text = label\n .node()\n .appendChild(createLabel(node.labelText, node.labelStyle, undefined, true));\n\n // Get the size of the label\n let bbox = text.getBBox();\n\n if (getConfig().flowchart.htmlLabels) {\n const div = text.children[0];\n const dv = select(text);\n bbox = div.getBoundingClientRect();\n dv.attr('width', bbox.width);\n dv.attr('height', bbox.height);\n }\n\n const padding = 0 * node.padding;\n const halfPadding = padding / 2;\n\n log.trace('Data ', node, JSON.stringify(node));\n // center the rect around its coordinate\n rect\n .attr('rx', node.rx)\n .attr('ry', node.ry)\n .attr('x', node.x - node.width / 2 - halfPadding)\n .attr('y', node.y - node.height / 2 - halfPadding)\n .attr('width', node.width + padding)\n .attr('height', node.height + padding);\n\n // Center the label\n label.attr(\n 'transform',\n 'translate(' +\n (node.x - bbox.width / 2) +\n ', ' +\n (node.y - node.height / 2 - node.padding / 3 + 3) +\n ')'\n );\n\n const rectBox = rect.node().getBBox();\n node.width = rectBox.width;\n node.height = rectBox.height;\n\n node.intersect = function(point) {\n return intersectRect(node, point);\n };\n\n return shapeSvg;\n};\n\n/**\n * Non visiable cluster where the note is group with its\n */\nconst noteGroup = (parent, node) => {\n // Add outer g element\n const shapeSvg = parent\n .insert('g')\n .attr('class', 'note-cluster')\n .attr('id', node.id);\n\n // add the rect\n const rect = shapeSvg.insert('rect', ':first-child');\n\n const padding = 0 * node.padding;\n const halfPadding = padding / 2;\n\n // center the rect around its coordinate\n rect\n .attr('rx', node.rx)\n .attr('ry', node.ry)\n .attr('x', node.x - node.width / 2 - halfPadding)\n .attr('y', node.y - node.height / 2 - halfPadding)\n .attr('width', node.width + padding)\n .attr('height', node.height + padding)\n .attr('fill', 'none');\n\n const rectBox = rect.node().getBBox();\n node.width = rectBox.width;\n node.height = rectBox.height;\n\n node.intersect = function(point) {\n return intersectRect(node, point);\n };\n\n return shapeSvg;\n};\nconst roundedWithTitle = (parent, node) => {\n // Add outer g element\n const shapeSvg = parent\n .insert('g')\n .attr('class', node.classes)\n .attr('id', node.id);\n\n // add the rect\n const rect = shapeSvg.insert('rect', ':first-child');\n\n // Create the label and insert it after the rect\n const label = shapeSvg.insert('g').attr('class', 'cluster-label');\n const innerRect = shapeSvg.append('rect');\n\n const text = label\n .node()\n .appendChild(createLabel(node.labelText, node.labelStyle, undefined, true));\n\n // Get the size of the label\n let bbox = text.getBBox();\n if (getConfig().flowchart.htmlLabels) {\n const div = text.children[0];\n const dv = select(text);\n bbox = div.getBoundingClientRect();\n dv.attr('width', bbox.width);\n dv.attr('height', bbox.height);\n }\n bbox = text.getBBox();\n const padding = 0 * node.padding;\n const halfPadding = padding / 2;\n\n // center the rect around its coordinate\n rect\n .attr('class', 'outer')\n .attr('x', node.x - node.width / 2 - halfPadding)\n .attr('y', node.y - node.height / 2 - halfPadding)\n .attr('width', node.width + padding)\n .attr('height', node.height + padding);\n innerRect\n .attr('class', 'inner')\n .attr('x', node.x - node.width / 2 - halfPadding)\n .attr('y', node.y - node.height / 2 - halfPadding + bbox.height - 1)\n .attr('width', node.width + padding)\n .attr('height', node.height + padding - bbox.height - 3);\n\n // Center the label\n label.attr(\n 'transform',\n 'translate(' +\n (node.x - bbox.width / 2) +\n ', ' +\n (node.y - node.height / 2 - node.padding / 3 + (getConfig().flowchart.htmlLabels ? 5 : 3)) +\n ')'\n );\n\n const rectBox = rect.node().getBBox();\n node.width = rectBox.width;\n node.height = rectBox.height;\n\n node.intersect = function(point) {\n return intersectRect(node, point);\n };\n\n return shapeSvg;\n};\n\nconst divider = (parent, node) => {\n // Add outer g element\n const shapeSvg = parent\n .insert('g')\n .attr('class', node.classes)\n .attr('id', node.id);\n\n // add the rect\n const rect = shapeSvg.insert('rect', ':first-child');\n\n const padding = 0 * node.padding;\n const halfPadding = padding / 2;\n\n // center the rect around its coordinate\n rect\n .attr('class', 'divider')\n .attr('x', node.x - node.width / 2 - halfPadding)\n .attr('y', node.y - node.height / 2)\n .attr('width', node.width + padding)\n .attr('height', node.height + padding);\n\n const rectBox = rect.node().getBBox();\n node.width = rectBox.width;\n node.height = rectBox.height;\n\n node.intersect = function(point) {\n return intersectRect(node, point);\n };\n\n return shapeSvg;\n};\n\nconst shapes = { rect, roundedWithTitle, noteGroup, divider };\n\nlet clusterElems = {};\n\nexport const insertCluster = (elem, node) => {\n log.trace('Inserting cluster');\n const shape = node.shape || 'rect';\n clusterElems[node.id] = shapes[shape](elem, node);\n};\nexport const getClusterTitleWidth = (elem, node) => {\n const label = createLabel(node.labelText, node.labelStyle, undefined, true);\n elem.node().appendChild(label);\n const width = label.getBBox().width;\n elem.node().removeChild(label);\n return width;\n};\n\nexport const clear = () => {\n clusterElems = {};\n};\n\nexport const positionCluster = node => {\n log.info('Position cluster');\n const el = clusterElems[node.id];\n\n el.attr('transform', 'translate(' + node.x + ', ' + node.y + ')');\n};\n","import { logger } from '../logger'; // eslint-disable-line\nimport createLabel from './createLabel';\nimport { line, curveBasis, select } from 'd3';\nimport { getConfig } from '../config';\nimport utils from '../utils';\n// import { calcLabelPosition } from '../utils';\n\nlet edgeLabels = {};\n\nexport const clear = () => {\n edgeLabels = {};\n};\n\nexport const insertEdgeLabel = (elem, edge) => {\n // Create the actual text element\n const labelElement = createLabel(edge.label, edge.labelStyle);\n\n // Create outer g, edgeLabel, this will be positioned after graph layout\n const edgeLabel = elem.insert('g').attr('class', 'edgeLabel');\n\n // Create inner g, label, this will be positioned now for centering the text\n const label = edgeLabel.insert('g').attr('class', 'label');\n label.node().appendChild(labelElement);\n\n // Center the label\n let bbox = labelElement.getBBox();\n if (getConfig().flowchart.htmlLabels) {\n const div = labelElement.children[0];\n const dv = select(labelElement);\n bbox = div.getBoundingClientRect();\n dv.attr('width', bbox.width);\n dv.attr('height', bbox.height);\n }\n label.attr('transform', 'translate(' + -bbox.width / 2 + ', ' + -bbox.height / 2 + ')');\n\n // Make element accessible by id for positioning\n edgeLabels[edge.id] = edgeLabel;\n\n // Update the abstract data of the edge with the new information about its width and height\n edge.width = bbox.width;\n edge.height = bbox.height;\n};\n\nexport const positionEdgeLabel = (edge, points) => {\n logger.info('Moving label', edge.id, edge.label, edgeLabels[edge.id]);\n if (edge.label) {\n const el = edgeLabels[edge.id];\n let x = edge.x;\n let y = edge.y;\n if (points) {\n // debugger;\n const pos = utils.calcLabelPosition(points);\n x = pos.x;\n y = pos.y;\n }\n el.attr('transform', 'translate(' + x + ', ' + y + ')');\n }\n};\n\n// const getRelationType = function(type) {\n// switch (type) {\n// case stateDb.relationType.AGGREGATION:\n// return 'aggregation';\n// case stateDb.relationType.EXTENSION:\n// return 'extension';\n// case stateDb.relationType.COMPOSITION:\n// return 'composition';\n// case stateDb.relationType.DEPENDENCY:\n// return 'dependency';\n// }\n// };\n\nconst outsideNode = (node, point) => {\n // logger.warn('Checking bounds ', node, point);\n const x = node.x;\n const y = node.y;\n const dx = Math.abs(point.x - x);\n const dy = Math.abs(point.y - y);\n const w = node.width / 2;\n const h = node.height / 2;\n if (dx >= w || dy >= h) {\n return true;\n }\n return false;\n};\n\nexport const intersection = (node, outsidePoint, insidePoint) => {\n logger.warn('intersection calc o:', outsidePoint, ' i:', insidePoint, node);\n const x = node.x;\n const y = node.y;\n\n const dx = Math.abs(x - insidePoint.x);\n const w = node.width / 2;\n let r = insidePoint.x < outsidePoint.x ? w - dx : w + dx;\n const h = node.height / 2;\n\n const edges = {\n x1: x - w,\n x2: x + w,\n y1: y - h,\n y2: y + h\n };\n\n if (\n outsidePoint.x === edges.x1 ||\n outsidePoint.x === edges.x2 ||\n outsidePoint.y === edges.y1 ||\n outsidePoint.y === edges.y2\n ) {\n logger.warn('calc equals on edge');\n return outsidePoint;\n }\n\n const Q = Math.abs(outsidePoint.y - insidePoint.y);\n const R = Math.abs(outsidePoint.x - insidePoint.x);\n // log.warn();\n if (Math.abs(y - outsidePoint.y) * w > Math.abs(x - outsidePoint.x) * h) { // eslint-disable-line\n // Intersection is top or bottom of rect.\n // let q = insidePoint.y < outsidePoint.y ? outsidePoint.y - h - y : y - h - outsidePoint.y;\n let q = insidePoint.y < outsidePoint.y ? outsidePoint.y - h - y : y - h - outsidePoint.y;\n r = (R * q) / Q;\n const res = {\n x: insidePoint.x < outsidePoint.x ? insidePoint.x + R - r : insidePoint.x - r,\n y: outsidePoint.y + q\n };\n logger.warn(`topp/bott calc, Q ${Q}, q ${q}, R ${R}, r ${r}`, res);\n\n return res;\n } else {\n // Intersection onn sides of rect\n // q = (Q * r) / R;\n // q = 2;\n // r = (R * q) / Q;\n if (insidePoint.x < outsidePoint.x) {\n r = outsidePoint.x - w - x;\n } else {\n // r = outsidePoint.x - w - x;\n r = x - w - outsidePoint.x;\n }\n let q = (q = (Q * r) / R);\n logger.warn(`sides calc, Q ${Q}, q ${q}, R ${R}, r ${r}`, {\n x: insidePoint.x < outsidePoint.x ? insidePoint.x + R - r : insidePoint.x + dx - w,\n y: insidePoint.y < outsidePoint.y ? insidePoint.y + q : insidePoint.y - q\n });\n\n return {\n x: insidePoint.x < outsidePoint.x ? insidePoint.x + R - r : insidePoint.x + dx - w,\n y: insidePoint.y < outsidePoint.y ? insidePoint.y + q : insidePoint.y - q\n };\n }\n};\n\n//(edgePaths, e, edge, clusterDb, diagramtype, graph)\nexport const insertEdge = function(elem, e, edge, clusterDb, diagramType, graph) {\n let points = edge.points;\n let pointsHasChanged = false;\n const tail = graph.node(e.v);\n var head = graph.node(e.w);\n\n if (head.intersect && tail.intersect) {\n points = points.slice(1, edge.points.length - 1);\n points.unshift(tail.intersect(points[0]));\n logger.info(\n 'Last point',\n points[points.length - 1],\n head,\n head.intersect(points[points.length - 1])\n );\n points.push(head.intersect(points[points.length - 1]));\n }\n if (edge.toCluster) {\n logger.trace('edge', edge);\n logger.trace('to cluster', clusterDb[edge.toCluster]);\n points = [];\n let lastPointOutside;\n let isInside = false;\n edge.points.forEach(point => {\n const node = clusterDb[edge.toCluster].node;\n\n if (!outsideNode(node, point) && !isInside) {\n logger.trace('inside', edge.toCluster, point, lastPointOutside);\n\n // First point inside the rect\n const inter = intersection(node, lastPointOutside, point);\n\n let pointPresent = false;\n points.forEach(p => {\n pointPresent = pointPresent || (p.x === inter.x && p.y === inter.y);\n });\n // if (!pointPresent) {\n if (!points.find(e => e.x === inter.x && e.y === inter.y)) {\n points.push(inter);\n } else {\n logger.warn('no intersect', inter, points);\n }\n isInside = true;\n } else {\n if (!isInside) points.push(point);\n }\n lastPointOutside = point;\n });\n pointsHasChanged = true;\n }\n\n if (edge.fromCluster) {\n logger.trace('edge', edge);\n logger.warn('from cluster', clusterDb[edge.fromCluster]);\n const updatedPoints = [];\n let lastPointOutside;\n let isInside = false;\n for (let i = points.length - 1; i >= 0; i--) {\n const point = points[i];\n const node = clusterDb[edge.fromCluster].node;\n\n if (!outsideNode(node, point) && !isInside) {\n logger.warn('inside', edge.fromCluster, point, node);\n\n // First point inside the rect\n const insterection = intersection(node, lastPointOutside, point);\n // logger.trace('intersect', intersection(node, lastPointOutside, point));\n updatedPoints.unshift(insterection);\n // points.push(insterection);\n isInside = true;\n } else {\n // at the outside\n logger.trace('Outside point', point);\n if (!isInside) updatedPoints.unshift(point);\n }\n lastPointOutside = point;\n }\n points = updatedPoints;\n pointsHasChanged = true;\n }\n\n // The data for our line\n const lineData = points.filter(p => !Number.isNaN(p.y));\n\n // This is the accessor function we talked about above\n const lineFunction = line()\n .x(function(d) {\n return d.x;\n })\n .y(function(d) {\n return d.y;\n })\n .curve(curveBasis);\n\n // Contruct stroke classes based on properties\n let strokeClasses;\n switch (edge.thickness) {\n case 'normal':\n strokeClasses = 'edge-thickness-normal';\n break;\n case 'thick':\n strokeClasses = 'edge-thickness-thick';\n break;\n default:\n strokeClasses = '';\n }\n switch (edge.pattern) {\n case 'solid':\n strokeClasses += ' edge-pattern-solid';\n break;\n case 'dotted':\n strokeClasses += ' edge-pattern-dotted';\n break;\n case 'dashed':\n strokeClasses += ' edge-pattern-dashed';\n break;\n }\n\n const svgPath = elem\n .append('path')\n .attr('d', lineFunction(lineData))\n .attr('id', edge.id)\n .attr('class', ' ' + strokeClasses + (edge.classes ? ' ' + edge.classes : ''));\n\n // DEBUG code, adds a red circle at each edge coordinate\n // edge.points.forEach(point => {\n // elem\n // .append('circle')\n // .style('stroke', 'red')\n // .style('fill', 'red')\n // .attr('r', 1)\n // .attr('cx', point.x)\n // .attr('cy', point.y);\n // });\n\n let url = '';\n if (getConfig().state.arrowMarkerAbsolute) {\n url =\n window.location.protocol +\n '//' +\n window.location.host +\n window.location.pathname +\n window.location.search;\n url = url.replace(/\\(/g, '\\\\(');\n url = url.replace(/\\)/g, '\\\\)');\n }\n logger.info('arrowTypeStart', edge.arrowTypeStart);\n logger.info('arrowTypeEnd', edge.arrowTypeEnd);\n\n switch (edge.arrowTypeStart) {\n case 'arrow_cross':\n svgPath.attr('marker-start', 'url(' + url + '#' + diagramType + '-crossStart' + ')');\n break;\n case 'arrow_point':\n svgPath.attr('marker-start', 'url(' + url + '#' + diagramType + '-pointStart' + ')');\n break;\n case 'arrow_barb':\n svgPath.attr('marker-start', 'url(' + url + '#' + diagramType + '-barbStart' + ')');\n break;\n case 'arrow_circle':\n svgPath.attr('marker-start', 'url(' + url + '#' + diagramType + '-circleStart' + ')');\n break;\n case 'aggregation':\n svgPath.attr('marker-start', 'url(' + url + '#' + diagramType + '-aggregationStart' + ')');\n break;\n case 'extension':\n svgPath.attr('marker-start', 'url(' + url + '#' + diagramType + '-extensionStart' + ')');\n break;\n case 'composition':\n svgPath.attr('marker-start', 'url(' + url + '#' + diagramType + '-compositionStart' + ')');\n break;\n case 'dependency':\n svgPath.attr('marker-start', 'url(' + url + '#' + diagramType + '-dependencyStart' + ')');\n break;\n default:\n }\n switch (edge.arrowTypeEnd) {\n case 'arrow_cross':\n svgPath.attr('marker-end', 'url(' + url + '#' + diagramType + '-crossEnd' + ')');\n break;\n case 'arrow_point':\n svgPath.attr('marker-end', 'url(' + url + '#' + diagramType + '-pointEnd' + ')');\n break;\n case 'arrow_barb':\n svgPath.attr('marker-end', 'url(' + url + '#' + diagramType + '-barbEnd' + ')');\n break;\n case 'arrow_circle':\n svgPath.attr('marker-end', 'url(' + url + '#' + diagramType + '-circleEnd' + ')');\n break;\n case 'aggregation':\n svgPath.attr('marker-end', 'url(' + url + '#' + diagramType + '-aggregationEnd' + ')');\n break;\n case 'extension':\n svgPath.attr('marker-end', 'url(' + url + '#' + diagramType + '-extensionEnd' + ')');\n break;\n case 'composition':\n svgPath.attr('marker-end', 'url(' + url + '#' + diagramType + '-compositionEnd' + ')');\n break;\n case 'dependency':\n svgPath.attr('marker-end', 'url(' + url + '#' + diagramType + '-dependencyEnd' + ')');\n break;\n default:\n }\n\n if (pointsHasChanged) {\n return points;\n }\n};\n","import dagre from 'dagre';\nimport graphlib from 'graphlib';\nimport insertMarkers from './markers';\nimport { updateNodeBounds } from './shapes/util';\nimport {\n clear as clearGraphlib,\n clusterDb,\n adjustClustersAndEdges,\n findNonClusterChild\n} from './mermaid-graphlib';\nimport { insertNode, positionNode, clear as clearNodes, setNodeElem } from './nodes';\nimport { insertCluster, clear as clearClusters } from './clusters';\nimport { insertEdgeLabel, positionEdgeLabel, insertEdge, clear as clearEdges } from './edges';\nimport { logger as log } from '../logger';\n\nconst recursiveRender = (_elem, graph, diagramtype, parentCluster) => {\n log.info('Graph in recursive render:', graphlib.json.write(graph), parentCluster);\n const dir = graph.graph().rankdir;\n log.warn('Dir in recursive render - dir:', dir);\n\n const elem = _elem.insert('g').attr('class', 'root'); // eslint-disable-line\n if (!graph.nodes()) {\n log.info('No nodes found for', graph);\n } else {\n log.info('Recursive render', graph.nodes());\n }\n if (graph.edges().length > 0) {\n log.info('Recursive edges', graph.edge(graph.edges()[0]));\n }\n const clusters = elem.insert('g').attr('class', 'clusters'); // eslint-disable-line\n const edgePaths = elem.insert('g').attr('class', 'edgePaths');\n const edgeLabels = elem.insert('g').attr('class', 'edgeLabels');\n const nodes = elem.insert('g').attr('class', 'nodes');\n\n // Insert nodes, this will insert them into the dom and each node will get a size. The size is updated\n // to the abstract node and is later used by dagre for the layout\n graph.nodes().forEach(function(v) {\n const node = graph.node(v);\n if (typeof parentCluster !== 'undefined') {\n const data = JSON.parse(JSON.stringify(parentCluster.clusterData));\n // data.clusterPositioning = true;\n log.info('Setting data for cluster', data);\n graph.setNode(parentCluster.id, data);\n graph.setParent(v, parentCluster.id, data);\n }\n log.info('(Insert) Node ' + v + ': ' + JSON.stringify(graph.node(v)));\n if (node && node.clusterNode) {\n // const children = graph.children(v);\n log.info('Cluster identified', v, node, graph.node(v));\n const newEl = recursiveRender(nodes, node.graph, diagramtype, graph.node(v));\n updateNodeBounds(node, newEl);\n setNodeElem(newEl, node);\n\n log.warn('Recursive render complete', newEl, node);\n } else {\n if (graph.children(v).length > 0) {\n // This is a cluster but not to be rendered recusively\n // Render as before\n log.info('Cluster - the non recursive path', v, node.id, node, graph);\n log.info(findNonClusterChild(node.id, graph));\n clusterDb[node.id] = { id: findNonClusterChild(node.id, graph), node };\n // insertCluster(clusters, graph.node(v));\n } else {\n log.info('Node - the non recursive path', v, node.id, node);\n insertNode(nodes, graph.node(v), dir);\n }\n }\n });\n\n // Insert labels, this will insert them into the dom so that the width can be calculated\n // Also figure out which edges point to/from clusters and adjust them accordingly\n // Edges from/to clusters really points to the first child in the cluster.\n // TODO: pick optimal child in the cluster to us as link anchor\n graph.edges().forEach(function(e) {\n const edge = graph.edge(e.v, e.w, e.name);\n log.info('Edge ' + e.v + ' -> ' + e.w + ': ' + JSON.stringify(e));\n log.info('Edge ' + e.v + ' -> ' + e.w + ': ', e, ' ', JSON.stringify(graph.edge(e)));\n\n // Check if link is either from or to a cluster\n log.info('Fix', clusterDb, 'ids:', e.v, e.w, 'Translateing: ', clusterDb[e.v], clusterDb[e.w]);\n insertEdgeLabel(edgeLabels, edge);\n });\n\n graph.edges().forEach(function(e) {\n log.info('Edge ' + e.v + ' -> ' + e.w + ': ' + JSON.stringify(e));\n });\n log.info('#############################################');\n log.info('### Layout ###');\n log.info('#############################################');\n log.info(graph);\n dagre.layout(graph);\n log.info('Graph after layout:', graphlib.json.write(graph));\n // Move the nodes to the correct place\n graph.nodes().forEach(function(v) {\n const node = graph.node(v);\n log.info('Position ' + v + ': ' + JSON.stringify(graph.node(v)));\n log.info(\n 'Position ' + v + ': (' + node.x,\n ',' + node.y,\n ') width: ',\n node.width,\n ' height: ',\n node.height\n );\n if (node && node.clusterNode) {\n // clusterDb[node.id].node = node;\n\n positionNode(node);\n } else {\n // Non cluster node\n if (graph.children(v).length > 0) {\n // A cluster in the non-recurive way\n // positionCluster(node);\n insertCluster(clusters, node);\n clusterDb[node.id].node = node;\n } else {\n positionNode(node);\n }\n }\n });\n\n // Move the edge labels to the correct place after layout\n graph.edges().forEach(function(e) {\n const edge = graph.edge(e);\n log.info('Edge ' + e.v + ' -> ' + e.w + ': ' + JSON.stringify(edge), edge);\n\n const updatedPath = insertEdge(edgePaths, e, edge, clusterDb, diagramtype, graph);\n positionEdgeLabel(edge, updatedPath);\n });\n\n return elem;\n};\n\nexport const render = (elem, graph, markers, diagramtype, id) => {\n insertMarkers(elem, markers, diagramtype, id);\n clearNodes();\n clearEdges();\n clearClusters();\n clearGraphlib();\n\n log.warn('Graph before:', graphlib.json.write(graph));\n adjustClustersAndEdges(graph);\n log.warn('Graph after:', graphlib.json.write(graph));\n log.warn('Graph ever after:', graph.graph());\n recursiveRender(elem, graph, diagramtype);\n};\n\n// const shapeDefinitions = {};\n// export const addShape = ({ shapeType: fun }) => {\n// shapeDefinitions[shapeType] = fun;\n// };\n\n// const arrowDefinitions = {};\n// export const addArrow = ({ arrowType: fun }) => {\n// arrowDefinitions[arrowType] = fun;\n// };\n","import graphlib from 'graphlib';\nimport { select, curveLinear, selectAll } from 'd3';\n\nimport flowDb from './flowDb';\nimport flow from './parser/flow';\nimport { getConfig } from '../../config';\n\nimport { render } from '../../dagre-wrapper/index.js';\nimport addHtmlLabel from 'dagre-d3/lib/label/add-html-label.js';\nimport { logger } from '../../logger';\nimport common from '../common/common';\nimport { interpolateToCurve, getStylesFromArray } from '../../utils';\n\nconst conf = {};\nexport const setConf = function(cnf) {\n const keys = Object.keys(cnf);\n for (let i = 0; i < keys.length; i++) {\n conf[keys[i]] = cnf[keys[i]];\n }\n};\n\n/**\n * Function that adds the vertices found during parsing to the graph to be rendered.\n * @param vert Object containing the vertices.\n * @param g The graph that is to be drawn.\n */\nexport const addVertices = function(vert, g, svgId) {\n const svg = select(`[id=\"${svgId}\"]`);\n const keys = Object.keys(vert);\n\n // Iterate through each item in the vertex object (containing all the vertices found) in the graph definition\n keys.forEach(function(id) {\n const vertex = vert[id];\n\n /**\n * Variable for storing the classes for the vertex\n * @type {string}\n */\n let classStr = 'default';\n if (vertex.classes.length > 0) {\n classStr = vertex.classes.join(' ');\n }\n\n const styles = getStylesFromArray(vertex.styles);\n\n // Use vertex id as text in the box if no text is provided by the graph definition\n let vertexText = vertex.text !== undefined ? vertex.text : vertex.id;\n\n // We create a SVG label, either by delegating to addHtmlLabel or manually\n let vertexNode;\n if (getConfig().flowchart.htmlLabels) {\n // TODO: addHtmlLabel accepts a labelStyle. Do we possibly have that?\n const node = {\n label: vertexText.replace(\n /fa[lrsb]?:fa-[\\w-]+/g,\n s => ``\n )\n };\n vertexNode = addHtmlLabel(svg, node).node();\n vertexNode.parentNode.removeChild(vertexNode);\n } else {\n const svgLabel = document.createElementNS('http://www.w3.org/2000/svg', 'text');\n svgLabel.setAttribute('style', styles.labelStyle.replace('color:', 'fill:'));\n\n const rows = vertexText.split(common.lineBreakRegex);\n\n for (let j = 0; j < rows.length; j++) {\n const tspan = document.createElementNS('http://www.w3.org/2000/svg', 'tspan');\n tspan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\n tspan.setAttribute('dy', '1em');\n tspan.setAttribute('x', '1');\n tspan.textContent = rows[j];\n svgLabel.appendChild(tspan);\n }\n vertexNode = svgLabel;\n }\n\n let radious = 0;\n let _shape = '';\n // Set the shape based parameters\n switch (vertex.type) {\n case 'round':\n radious = 5;\n _shape = 'rect';\n break;\n case 'square':\n _shape = 'rect';\n break;\n case 'diamond':\n _shape = 'question';\n break;\n case 'hexagon':\n _shape = 'hexagon';\n break;\n case 'odd':\n _shape = 'rect_left_inv_arrow';\n break;\n case 'lean_right':\n _shape = 'lean_right';\n break;\n case 'lean_left':\n _shape = 'lean_left';\n break;\n case 'trapezoid':\n _shape = 'trapezoid';\n break;\n case 'inv_trapezoid':\n _shape = 'inv_trapezoid';\n break;\n case 'odd_right':\n _shape = 'rect_left_inv_arrow';\n break;\n case 'circle':\n _shape = 'circle';\n break;\n case 'ellipse':\n _shape = 'ellipse';\n break;\n case 'stadium':\n _shape = 'stadium';\n break;\n case 'subroutine':\n _shape = 'subroutine';\n break;\n case 'cylinder':\n _shape = 'cylinder';\n break;\n case 'group':\n _shape = 'rect';\n break;\n default:\n _shape = 'rect';\n }\n // Add the node\n g.setNode(vertex.id, {\n labelStyle: styles.labelStyle,\n shape: _shape,\n labelText: vertexText,\n rx: radious,\n ry: radious,\n class: classStr,\n style: styles.style,\n id: vertex.id,\n width: vertex.type === 'group' ? 500 : undefined,\n type: vertex.type,\n padding: getConfig().flowchart.padding\n });\n\n logger.info('setNode', {\n labelStyle: styles.labelStyle,\n shape: _shape,\n labelText: vertexText,\n rx: radious,\n ry: radious,\n class: classStr,\n style: styles.style,\n id: vertex.id,\n width: vertex.type === 'group' ? 500 : undefined,\n type: vertex.type,\n padding: getConfig().flowchart.padding\n });\n });\n};\n\n/**\n * Add edges to graph based on parsed graph defninition\n * @param {Object} edges The edges to add to the graph\n * @param {Object} g The graph object\n */\nexport const addEdges = function(edges, g) {\n let cnt = 0;\n\n let defaultStyle;\n let defaultLabelStyle;\n\n if (typeof edges.defaultStyle !== 'undefined') {\n const defaultStyles = getStylesFromArray(edges.defaultStyle);\n defaultStyle = defaultStyles.style;\n defaultLabelStyle = defaultStyles.labelStyle;\n }\n\n edges.forEach(function(edge) {\n cnt++;\n\n // Identify Link\n var linkId = 'L-' + edge.start + '-' + edge.end;\n var linkNameStart = 'LS-' + edge.start;\n var linkNameEnd = 'LE-' + edge.end;\n\n const edgeData = {};\n //edgeData.id = 'id' + cnt;\n\n // Set link type for rendering\n if (edge.type === 'arrow_open') {\n edgeData.arrowhead = 'none';\n } else {\n edgeData.arrowhead = 'normal';\n }\n\n // Check of arrow types, placed here in order not to break old rendering\n edgeData.arrowTypeStart = 'arrow_open';\n edgeData.arrowTypeEnd = 'arrow_open';\n\n /* eslint-disable no-fallthrough */\n switch (edge.type) {\n case 'double_arrow_cross':\n edgeData.arrowTypeStart = 'arrow_cross';\n case 'arrow_cross':\n edgeData.arrowTypeEnd = 'arrow_cross';\n break;\n case 'double_arrow_point':\n edgeData.arrowTypeStart = 'arrow_point';\n case 'arrow_point':\n edgeData.arrowTypeEnd = 'arrow_point';\n break;\n case 'double_arrow_circle':\n edgeData.arrowTypeStart = 'arrow_circle';\n case 'arrow_circle':\n edgeData.arrowTypeEnd = 'arrow_circle';\n break;\n }\n\n // logger.info('apa', edgeData, edge);\n // edgeData.arrowTypeStart = edge.arrowTypeStart;\n // edgeData.arrowTypeStart = edge.arrowTypeStart;\n // edgeData.arrowType = edgeData.arrowTypeEnd;\n // logger.info('apa', edgeData, edge);\n\n let style = '';\n let labelStyle = '';\n\n if (typeof edge.style !== 'undefined') {\n const styles = getStylesFromArray(edge.style);\n style = styles.style;\n labelStyle = styles.labelStyle;\n } else {\n switch (edge.stroke) {\n case 'normal':\n style = 'fill:none';\n if (typeof defaultStyle !== 'undefined') {\n style = defaultStyle;\n }\n if (typeof defaultLabelStyle !== 'undefined') {\n labelStyle = defaultLabelStyle;\n }\n edgeData.thickness = 'normal';\n edgeData.pattern = 'solid';\n break;\n case 'dotted':\n edgeData.thickness = 'normal';\n edgeData.pattern = 'dotted';\n break;\n case 'thick':\n edgeData.thickness = 'thick';\n edgeData.pattern = 'solid';\n break;\n }\n }\n\n edgeData.style = style;\n edgeData.labelStyle = labelStyle;\n\n if (typeof edge.interpolate !== 'undefined') {\n edgeData.curve = interpolateToCurve(edge.interpolate, curveLinear);\n } else if (typeof edges.defaultInterpolate !== 'undefined') {\n edgeData.curve = interpolateToCurve(edges.defaultInterpolate, curveLinear);\n } else {\n edgeData.curve = interpolateToCurve(conf.curve, curveLinear);\n }\n\n if (typeof edge.text === 'undefined') {\n if (typeof edge.style !== 'undefined') {\n edgeData.arrowheadStyle = 'fill: #333';\n }\n } else {\n edgeData.arrowheadStyle = 'fill: #333';\n edgeData.labelpos = 'c';\n\n if (getConfig().flowchart.htmlLabels && false) { // eslint-disable-line\n edgeData.labelType = 'html';\n edgeData.label = `${edge.text}`;\n } else {\n edgeData.labelType = 'text';\n edgeData.label = edge.text.replace(common.lineBreakRegex, '\\n');\n\n if (typeof edge.style === 'undefined') {\n edgeData.style = edgeData.style || 'stroke: #333; stroke-width: 1.5px;fill:none';\n }\n\n edgeData.labelStyle = edgeData.labelStyle.replace('color:', 'fill:');\n }\n }\n\n edgeData.id = linkId;\n edgeData.classes = 'flowchart-link ' + linkNameStart + ' ' + linkNameEnd;\n\n // Add the edge to the graph\n g.setEdge(edge.start, edge.end, edgeData, cnt);\n });\n};\n\n/**\n * Returns the all the styles from classDef statements in the graph definition.\n * @returns {object} classDef styles\n */\nexport const getClasses = function(text) {\n logger.info('Extracting classes');\n flowDb.clear();\n const parser = flow.parser;\n parser.yy = flowDb;\n\n try {\n // Parse the graph definition\n parser.parse(text);\n } catch (e) {\n return;\n }\n\n return flowDb.getClasses();\n};\n\n/**\n * Draws a flowchart in the tag with id: id based on the graph definition in text.\n * @param text\n * @param id\n */\n\nexport const draw = function(text, id) {\n logger.info('Drawing flowchart');\n flowDb.clear();\n const parser = flow.parser;\n parser.yy = flowDb;\n\n // Parse the graph definition\n // try {\n parser.parse(text);\n // } catch (err) {\n // logger.debug('Parsing failed');\n // }\n\n // Fetch the default direction, use TD if none was found\n let dir = flowDb.getDirection();\n if (typeof dir === 'undefined') {\n dir = 'TD';\n }\n\n const conf = getConfig().flowchart;\n const nodeSpacing = conf.nodeSpacing || 50;\n const rankSpacing = conf.rankSpacing || 50;\n\n // Create the input mermaid.graph\n const g = new graphlib.Graph({\n multigraph: true,\n compound: true\n })\n .setGraph({\n rankdir: dir,\n nodesep: nodeSpacing,\n ranksep: rankSpacing,\n marginx: 8,\n marginy: 8\n })\n .setDefaultEdgeLabel(function() {\n return {};\n });\n\n let subG;\n const subGraphs = flowDb.getSubGraphs();\n logger.info('Subgraphs - ', subGraphs);\n for (let i = subGraphs.length - 1; i >= 0; i--) {\n subG = subGraphs[i];\n logger.info('Subgraph - ', subG);\n flowDb.addVertex(subG.id, subG.title, 'group', undefined, subG.classes);\n }\n\n // Fetch the verices/nodes and edges/links from the parsed graph definition\n const vert = flowDb.getVertices();\n\n const edges = flowDb.getEdges();\n\n logger.info(edges);\n let i = 0;\n for (i = subGraphs.length - 1; i >= 0; i--) {\n subG = subGraphs[i];\n\n selectAll('cluster').append('text');\n\n for (let j = 0; j < subG.nodes.length; j++) {\n g.setParent(subG.nodes[j], subG.id);\n }\n }\n addVertices(vert, g, id);\n addEdges(edges, g);\n\n // Add custom shapes\n // flowChartShapes.addToRenderV2(addShape);\n\n // Set up an SVG group so that we can translate the final graph.\n const svg = select(`[id=\"${id}\"]`);\n\n // Run the renderer. This is what draws the final graph.\n const element = select('#' + id + ' g');\n render(element, g, ['point', 'circle', 'cross'], 'flowchart', id);\n // dagre.layout(g);\n\n element.selectAll('g.node').attr('title', function() {\n return flowDb.getTooltip(this.id);\n });\n\n const padding = conf.diagramPadding;\n const svgBounds = svg.node().getBBox();\n const width = svgBounds.width + padding * 2;\n const height = svgBounds.height + padding * 2;\n logger.debug(\n `new ViewBox 0 0 ${width} ${height}`,\n `translate(${padding - g._label.marginx}, ${padding - g._label.marginy})`\n );\n\n if (conf.useMaxWidth) {\n svg.attr('width', '100%');\n svg.attr('style', `max-width: ${width}px;`);\n } else {\n svg.attr('height', height);\n svg.attr('width', width);\n }\n\n svg.attr('viewBox', `0 0 ${width} ${height}`);\n svg\n .select('g')\n .attr('transform', `translate(${padding - g._label.marginx}, ${padding - svgBounds.y})`);\n\n // Index nodes\n flowDb.indexNodes('subGraph' + i);\n\n // // reposition labels\n // for (i = 0; i < subGraphs.length; i++) {\n // subG = subGraphs[i];\n\n // if (subG.title !== 'undefined') {\n // const clusterRects = document.querySelectorAll('#' + id + ' [id=\"' + subG.id + '\"] rect');\n // const clusterEl = document.querySelectorAll('#' + id + ' [id=\"' + subG.id + '\"]');\n\n // const xPos = clusterRects[0].x.baseVal.value;\n // const yPos = clusterRects[0].y.baseVal.value;\n // const width = clusterRects[0].width.baseVal.value;\n // const cluster = d3.select(clusterEl[0]);\n // const te = cluster.select('.label');\n // te.attr('transform', `translate(${xPos + width / 2}, ${yPos + 14})`);\n // te.attr('id', id + 'Text');\n\n // for (let j = 0; j < subG.classes.length; j++) {\n // clusterEl[0].classList.add(subG.classes[j]);\n // }\n // }\n // }\n\n // Add label rects for non html labels\n if (!conf.htmlLabels) {\n const labels = document.querySelectorAll('[id=\"' + id + '\"] .edgeLabel .label');\n for (let k = 0; k < labels.length; k++) {\n const label = labels[k];\n\n // Get dimensions of label\n const dim = label.getBBox();\n\n const rect = document.createElementNS('http://www.w3.org/2000/svg', 'rect');\n rect.setAttribute('rx', 0);\n rect.setAttribute('ry', 0);\n rect.setAttribute('width', dim.width);\n rect.setAttribute('height', dim.height);\n rect.setAttribute('style', 'fill:#e8e8e8;');\n\n label.insertBefore(rect, label.firstChild);\n }\n }\n\n // If node has a link, wrap it in an anchor SVG object.\n const keys = Object.keys(vert);\n keys.forEach(function(key) {\n const vertex = vert[key];\n\n if (vertex.link) {\n const node = select('#' + id + ' [id=\"' + key + '\"]');\n if (node) {\n const link = document.createElementNS('http://www.w3.org/2000/svg', 'a');\n link.setAttributeNS('http://www.w3.org/2000/svg', 'class', vertex.classes.join(' '));\n link.setAttributeNS('http://www.w3.org/2000/svg', 'href', vertex.link);\n link.setAttributeNS('http://www.w3.org/2000/svg', 'rel', 'noopener');\n\n const linkNode = node.insert(function() {\n return link;\n }, ':first-child');\n\n const shape = node.select('.label-container');\n if (shape) {\n linkNode.append(function() {\n return shape.node();\n });\n }\n\n const label = node.select('.label');\n if (label) {\n linkNode.append(function() {\n return label.node();\n });\n }\n }\n }\n });\n};\n\nexport default {\n setConf,\n addVertices,\n addEdges,\n getClasses,\n draw\n};\n","import common from '../common/common';\n\nexport const drawRect = function(elem, rectData) {\n const rectElem = elem.append('rect');\n rectElem.attr('x', rectData.x);\n rectElem.attr('y', rectData.y);\n rectElem.attr('fill', rectData.fill);\n rectElem.attr('stroke', rectData.stroke);\n rectElem.attr('width', rectData.width);\n rectElem.attr('height', rectData.height);\n rectElem.attr('rx', rectData.rx);\n rectElem.attr('ry', rectData.ry);\n\n if (typeof rectData.class !== 'undefined') {\n rectElem.attr('class', rectData.class);\n }\n\n return rectElem;\n};\n\nexport const drawText = function(elem, textData) {\n let prevTextHeight = 0,\n textHeight = 0;\n const lines = textData.wrap\n ? textData.text.split(common.lineBreakRegex)\n : [textData.text.replace(common.lineBreakRegex, ' ')];\n\n let textElems = [];\n let dy = 0;\n let yfunc = () => textData.y;\n if (\n typeof textData.valign !== 'undefined' &&\n typeof textData.textMargin !== 'undefined' &&\n textData.textMargin > 0\n ) {\n switch (textData.valign) {\n case 'top':\n case 'start':\n yfunc = () => Math.round(textData.y + textData.textMargin);\n break;\n case 'middle':\n case 'center':\n yfunc = () =>\n Math.round(textData.y + (prevTextHeight + textHeight + textData.textMargin) / 2);\n break;\n case 'bottom':\n case 'end':\n yfunc = () =>\n Math.round(\n textData.y +\n (prevTextHeight + textHeight + 2 * textData.textMargin) -\n textData.textMargin\n );\n break;\n }\n }\n if (\n typeof textData.anchor !== 'undefined' &&\n typeof textData.textMargin !== 'undefined' &&\n typeof textData.width !== 'undefined'\n ) {\n switch (textData.anchor) {\n case 'left':\n case 'start':\n textData.x = Math.round(textData.x + textData.textMargin);\n textData.anchor = 'start';\n textData.dominantBaseline = 'text-after-edge';\n textData.alignmentBaseline = 'middle';\n break;\n case 'middle':\n case 'center':\n textData.x = Math.round(textData.x + textData.width / 2);\n textData.anchor = 'middle';\n textData.dominantBaseline = 'middle';\n textData.alignmentBaseline = 'middle';\n break;\n case 'right':\n case 'end':\n textData.x = Math.round(textData.x + textData.width - textData.textMargin);\n textData.anchor = 'end';\n textData.dominantBaseline = 'text-before-edge';\n textData.alignmentBaseline = 'middle';\n break;\n }\n }\n for (let i = 0; i < lines.length; i++) {\n let line = lines[i];\n if (\n typeof textData.textMargin !== 'undefined' &&\n textData.textMargin === 0 &&\n typeof textData.fontSize !== 'undefined'\n ) {\n dy = i * textData.fontSize;\n }\n\n const textElem = elem.append('text');\n textElem.attr('x', textData.x);\n textElem.attr('y', yfunc());\n if (typeof textData.anchor !== 'undefined') {\n textElem\n .attr('text-anchor', textData.anchor)\n .attr('dominant-baseline', textData.dominantBaseline)\n .attr('alignment-baseline', textData.alignmentBaseline);\n }\n if (typeof textData.fontFamily !== 'undefined') {\n textElem.style('font-family', textData.fontFamily);\n }\n if (typeof textData.fontSize !== 'undefined') {\n textElem.style('font-size', textData.fontSize);\n }\n if (typeof textData.fontWeight !== 'undefined') {\n textElem.style('font-weight', textData.fontWeight);\n }\n if (typeof textData.fill !== 'undefined') {\n textElem.attr('fill', textData.fill);\n }\n if (typeof textData.class !== 'undefined') {\n textElem.attr('class', textData.class);\n }\n if (typeof textData.dy !== 'undefined') {\n textElem.attr('dy', textData.dy);\n } else if (dy !== 0) {\n textElem.attr('dy', dy);\n }\n\n if (textData.tspan) {\n const span = textElem.append('tspan');\n span.attr('x', textData.x);\n if (typeof textData.fill !== 'undefined') {\n span.attr('fill', textData.fill);\n }\n span.text(line);\n } else {\n textElem.text(line);\n }\n if (\n typeof textData.valign !== 'undefined' &&\n typeof textData.textMargin !== 'undefined' &&\n textData.textMargin > 0\n ) {\n textHeight += (textElem._groups || textElem)[0][0].getBBox().height;\n prevTextHeight = textHeight;\n }\n\n textElems.push(textElem);\n }\n\n return textElems;\n};\n\nexport const drawLabel = function(elem, txtObject) {\n function genPoints(x, y, width, height, cut) {\n return (\n x +\n ',' +\n y +\n ' ' +\n (x + width) +\n ',' +\n y +\n ' ' +\n (x + width) +\n ',' +\n (y + height - cut) +\n ' ' +\n (x + width - cut * 1.2) +\n ',' +\n (y + height) +\n ' ' +\n x +\n ',' +\n (y + height)\n );\n }\n const polygon = elem.append('polygon');\n polygon.attr('points', genPoints(txtObject.x, txtObject.y, txtObject.width, txtObject.height, 7));\n polygon.attr('class', 'labelBox');\n\n txtObject.y = txtObject.y + txtObject.height / 2;\n\n drawText(elem, txtObject);\n return polygon;\n};\n\nlet actorCnt = -1;\n/**\n * Draws an actor in the diagram with the attached line\n * @param elem - The diagram we'll draw to.\n * @param actor - The actor to draw.\n * @param conf - drawText implementation discriminator object\n */\nexport const drawActor = function(elem, actor, conf) {\n const center = actor.x + actor.width / 2;\n\n const g = elem.append('g');\n if (actor.y === 0) {\n actorCnt++;\n g.append('line')\n .attr('id', 'actor' + actorCnt)\n .attr('x1', center)\n .attr('y1', 5)\n .attr('x2', center)\n .attr('y2', 2000)\n .attr('class', 'actor-line')\n .attr('stroke-width', '0.5px')\n .attr('stroke', '#999');\n }\n\n const rect = getNoteRect();\n rect.x = actor.x;\n rect.y = actor.y;\n rect.fill = '#eaeaea';\n rect.width = actor.width;\n rect.height = actor.height;\n rect.class = 'actor';\n rect.rx = 3;\n rect.ry = 3;\n drawRect(g, rect);\n\n _drawTextCandidateFunc(conf)(\n actor.description,\n g,\n rect.x,\n rect.y,\n rect.width,\n rect.height,\n { class: 'actor' },\n conf\n );\n};\n\nexport const anchorElement = function(elem) {\n return elem.append('g');\n};\n/**\n * Draws an activation in the diagram\n * @param elem - element to append activation rect.\n * @param bounds - activation box bounds.\n * @param verticalPos - precise y cooridnate of bottom activation box edge.\n * @param conf - sequence diagram config object.\n * @param actorActivations - number of activations on the actor.\n */\nexport const drawActivation = function(elem, bounds, verticalPos, conf, actorActivations) {\n const rect = getNoteRect();\n const g = bounds.anchored;\n rect.x = bounds.startx;\n rect.y = bounds.starty;\n rect.class = 'activation' + (actorActivations % 3); // Will evaluate to 0, 1 or 2\n rect.width = bounds.stopx - bounds.startx;\n rect.height = verticalPos - bounds.starty;\n drawRect(g, rect);\n};\n\n/**\n * Draws a loop in the diagram\n * @param elem - elemenet to append the loop to.\n * @param loopModel - loopModel of the given loop.\n * @param labelText - Text within the loop.\n * @param conf - diagrom configuration\n */\nexport const drawLoop = function(elem, loopModel, labelText, conf) {\n const {\n boxMargin,\n boxTextMargin,\n labelBoxHeight,\n labelBoxWidth,\n messageFontFamily: fontFamily,\n messageFontSize: fontSize,\n messageFontWeight: fontWeight\n } = conf;\n const g = elem.append('g');\n const drawLoopLine = function(startx, starty, stopx, stopy) {\n return g\n .append('line')\n .attr('x1', startx)\n .attr('y1', starty)\n .attr('x2', stopx)\n .attr('y2', stopy)\n .attr('class', 'loopLine');\n };\n drawLoopLine(loopModel.startx, loopModel.starty, loopModel.stopx, loopModel.starty);\n drawLoopLine(loopModel.stopx, loopModel.starty, loopModel.stopx, loopModel.stopy);\n drawLoopLine(loopModel.startx, loopModel.stopy, loopModel.stopx, loopModel.stopy);\n drawLoopLine(loopModel.startx, loopModel.starty, loopModel.startx, loopModel.stopy);\n if (typeof loopModel.sections !== 'undefined') {\n loopModel.sections.forEach(function(item) {\n drawLoopLine(loopModel.startx, item.y, loopModel.stopx, item.y).style(\n 'stroke-dasharray',\n '3, 3'\n );\n });\n }\n\n let txt = getTextObj();\n txt.text = labelText;\n txt.x = loopModel.startx;\n txt.y = loopModel.starty;\n txt.fontFamily = fontFamily;\n txt.fontSize = fontSize;\n txt.fontWeight = fontWeight;\n txt.anchor = 'middle';\n txt.valign = 'middle';\n txt.tspan = false;\n txt.width = labelBoxWidth || 50;\n txt.height = labelBoxHeight || 20;\n txt.textMargin = boxTextMargin;\n txt.class = 'labelText';\n\n drawLabel(g, txt);\n txt = getTextObj();\n txt.text = loopModel.title;\n txt.x = loopModel.startx + labelBoxWidth / 2 + (loopModel.stopx - loopModel.startx) / 2;\n txt.y = loopModel.starty + boxMargin + boxTextMargin;\n txt.anchor = 'middle';\n txt.valign = 'middle';\n txt.textMargin = boxTextMargin;\n txt.class = 'loopText';\n txt.fontFamily = fontFamily;\n txt.fontSize = fontSize;\n txt.fontWeight = fontWeight;\n txt.wrap = true;\n\n let textElem = drawText(g, txt);\n\n if (typeof loopModel.sectionTitles !== 'undefined') {\n loopModel.sectionTitles.forEach(function(item, idx) {\n if (item.message) {\n txt.text = item.message;\n txt.x = loopModel.startx + (loopModel.stopx - loopModel.startx) / 2;\n txt.y = loopModel.sections[idx].y + boxMargin + boxTextMargin;\n txt.class = 'loopText';\n txt.anchor = 'middle';\n txt.valign = 'middle';\n txt.tspan = false;\n txt.fontFamily = fontFamily;\n txt.fontSize = fontSize;\n txt.fontWeight = fontWeight;\n txt.wrap = loopModel.wrap;\n textElem = drawText(g, txt);\n let sectionHeight = Math.round(\n textElem\n .map(te => (te._groups || te)[0][0].getBBox().height)\n .reduce((acc, curr) => acc + curr)\n );\n loopModel.sections[idx].height += sectionHeight - (boxMargin + boxTextMargin);\n }\n });\n }\n\n loopModel.height = Math.round(loopModel.stopy - loopModel.starty);\n return g;\n};\n\n/**\n * Draws a background rectangle\n * @param elem diagram (reference for bounds)\n * @param bounds shape of the rectangle\n */\nexport const drawBackgroundRect = function(elem, bounds) {\n const rectElem = drawRect(elem, {\n x: bounds.startx,\n y: bounds.starty,\n width: bounds.stopx - bounds.startx,\n height: bounds.stopy - bounds.starty,\n fill: bounds.fill,\n class: 'rect'\n });\n rectElem.lower();\n};\n/**\n * Setup arrow head and define the marker. The result is appended to the svg.\n */\nexport const insertArrowHead = function(elem) {\n elem\n .append('defs')\n .append('marker')\n .attr('id', 'arrowhead')\n .attr('refX', 5)\n .attr('refY', 2)\n .attr('markerWidth', 6)\n .attr('markerHeight', 4)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 0,0 V 4 L6,2 Z'); // this is actual shape for arrowhead\n};\n/**\n * Setup node number. The result is appended to the svg.\n */\nexport const insertSequenceNumber = function(elem) {\n elem\n .append('defs')\n .append('marker')\n .attr('id', 'sequencenumber')\n .attr('refX', 15)\n .attr('refY', 15)\n .attr('markerWidth', 60)\n .attr('markerHeight', 40)\n .attr('orient', 'auto')\n .append('circle')\n .attr('cx', 15)\n .attr('cy', 15)\n .attr('r', 6);\n // .style(\"fill\", '#f00');\n};\n/**\n * Setup arrow head and define the marker. The result is appended to the svg.\n */\nexport const insertArrowCrossHead = function(elem) {\n const defs = elem.append('defs');\n const marker = defs\n .append('marker')\n .attr('id', 'crosshead')\n .attr('markerWidth', 15)\n .attr('markerHeight', 8)\n .attr('orient', 'auto')\n .attr('refX', 16)\n .attr('refY', 4);\n\n // The arrow\n marker\n .append('path')\n .attr('fill', 'black')\n .attr('stroke', '#000000')\n .style('stroke-dasharray', '0, 0')\n .attr('stroke-width', '1px')\n .attr('d', 'M 9,2 V 6 L16,4 Z');\n\n // The cross\n marker\n .append('path')\n .attr('fill', 'none')\n .attr('stroke', '#000000')\n .style('stroke-dasharray', '0, 0')\n .attr('stroke-width', '1px')\n .attr('d', 'M 0,1 L 6,7 M 6,1 L 0,7');\n // this is actual shape for arrowhead\n};\n\nexport const getTextObj = function() {\n return {\n x: 0,\n y: 0,\n fill: undefined,\n anchor: undefined,\n style: '#666',\n width: undefined,\n height: undefined,\n textMargin: 0,\n rx: 0,\n ry: 0,\n tspan: true,\n valign: undefined\n };\n};\n\nexport const getNoteRect = function() {\n return {\n x: 0,\n y: 0,\n fill: '#EDF2AE',\n stroke: '#666',\n width: 100,\n anchor: 'start',\n height: 100,\n rx: 0,\n ry: 0\n };\n};\n\nconst _drawTextCandidateFunc = (function() {\n function byText(content, g, x, y, width, height, textAttrs) {\n const text = g\n .append('text')\n .attr('x', x + width / 2)\n .attr('y', y + height / 2 + 5)\n .style('text-anchor', 'middle')\n .text(content);\n _setTextAttrs(text, textAttrs);\n }\n\n function byTspan(content, g, x, y, width, height, textAttrs, conf) {\n const { actorFontSize, actorFontFamily, actorFontWeight } = conf;\n\n const lines = content.split(common.lineBreakRegex);\n for (let i = 0; i < lines.length; i++) {\n const dy = i * actorFontSize - (actorFontSize * (lines.length - 1)) / 2;\n const text = g\n .append('text')\n .attr('x', x + width / 2)\n .attr('y', y)\n .style('text-anchor', 'middle')\n .style('font-size', actorFontSize)\n .style('font-weight', actorFontWeight)\n .style('font-family', actorFontFamily);\n text\n .append('tspan')\n .attr('x', x + width / 2)\n .attr('dy', dy)\n .text(lines[i]);\n\n text\n .attr('y', y + height / 2.0)\n .attr('dominant-baseline', 'central')\n .attr('alignment-baseline', 'central');\n\n _setTextAttrs(text, textAttrs);\n }\n }\n\n function byFo(content, g, x, y, width, height, textAttrs, conf) {\n const s = g.append('switch');\n const f = s\n .append('foreignObject')\n .attr('x', x)\n .attr('y', y)\n .attr('width', width)\n .attr('height', height);\n\n const text = f\n .append('div')\n .style('display', 'table')\n .style('height', '100%')\n .style('width', '100%');\n\n text\n .append('div')\n .style('display', 'table-cell')\n .style('text-align', 'center')\n .style('vertical-align', 'middle')\n .text(content);\n\n byTspan(content, s, x, y, width, height, textAttrs, conf);\n _setTextAttrs(text, textAttrs);\n }\n\n function _setTextAttrs(toText, fromTextAttrsDict) {\n for (const key in fromTextAttrsDict) {\n if (fromTextAttrsDict.hasOwnProperty(key)) { // eslint-disable-line\n toText.attr(key, fromTextAttrsDict[key]);\n }\n }\n }\n\n return function(conf) {\n return conf.textPlacement === 'fo' ? byFo : conf.textPlacement === 'old' ? byText : byTspan;\n };\n})();\n\nexport default {\n drawRect,\n drawText,\n drawLabel,\n drawActor,\n anchorElement,\n drawActivation,\n drawLoop,\n drawBackgroundRect,\n insertArrowHead,\n insertSequenceNumber,\n insertArrowCrossHead,\n getTextObj,\n getNoteRect\n};\n","import mermaidAPI from '../../mermaidAPI';\nimport configApi from '../../config';\nimport common from '../common/common';\nimport { logger } from '../../logger';\n\nlet prevActor = undefined;\nlet actors = {};\nlet messages = [];\nconst notes = [];\nlet title = '';\nlet titleWrapped = false;\nlet sequenceNumbersEnabled = false;\nlet wrapEnabled = false;\n\nexport const parseDirective = function(statement, context, type) {\n mermaidAPI.parseDirective(statement, context, type);\n};\n\nexport const addActor = function(id, name, description) {\n // Don't allow description nulling\n const old = actors[id];\n if (old && name === old.name && description == null) return;\n\n // Don't allow null descriptions, either\n if (description == null || description.text == null) {\n description = { text: name, wrap: null };\n }\n\n actors[id] = {\n name: name,\n description: description.text,\n wrap: (description.wrap === undefined && autoWrap()) || !!description.wrap,\n prevActor: prevActor\n };\n if (prevActor && actors[prevActor]) {\n actors[prevActor].nextActor = id;\n }\n\n prevActor = id;\n};\n\nconst activationCount = part => {\n let i;\n let count = 0;\n for (i = 0; i < messages.length; i++) {\n // console.warn(i, messages[i]);\n if (messages[i].type === LINETYPE.ACTIVE_START) {\n if (messages[i].from.actor === part) {\n count++;\n }\n }\n if (messages[i].type === LINETYPE.ACTIVE_END) {\n if (messages[i].from.actor === part) {\n count--;\n }\n }\n }\n return count;\n};\n\nexport const addMessage = function(idFrom, idTo, message, answer) {\n messages.push({\n from: idFrom,\n to: idTo,\n message: message.text,\n wrap: (message.wrap === undefined && autoWrap()) || !!message.wrap,\n answer: answer\n });\n};\n\nexport const addSignal = function(\n idFrom,\n idTo,\n message = { text: undefined, wrap: undefined },\n messageType\n) {\n if (messageType === LINETYPE.ACTIVE_END) {\n const cnt = activationCount(idFrom.actor);\n if (cnt < 1) {\n // Bail out as there is an activation signal from an inactive participant\n let error = new Error('Trying to inactivate an inactive participant (' + idFrom.actor + ')');\n error.hash = {\n text: '->>-',\n token: '->>-',\n line: '1',\n loc: { first_line: 1, last_line: 1, first_column: 1, last_column: 1 },\n expected: [\"'ACTIVE_PARTICIPANT'\"]\n };\n throw error;\n }\n }\n messages.push({\n from: idFrom,\n to: idTo,\n message: message.text,\n wrap: (message.wrap === undefined && autoWrap()) || !!message.wrap,\n type: messageType\n });\n return true;\n};\n\nexport const getMessages = function() {\n return messages;\n};\n\nexport const getActors = function() {\n return actors;\n};\nexport const getActor = function(id) {\n return actors[id];\n};\nexport const getActorKeys = function() {\n return Object.keys(actors);\n};\nexport const getTitle = function() {\n return title;\n};\nexport const getTitleWrapped = function() {\n return titleWrapped;\n};\nexport const enableSequenceNumbers = function() {\n sequenceNumbersEnabled = true;\n};\nexport const showSequenceNumbers = () => sequenceNumbersEnabled;\n\nexport const setWrap = function(wrapSetting) {\n wrapEnabled = wrapSetting;\n};\n\nexport const autoWrap = () => wrapEnabled;\n\nexport const clear = function() {\n actors = {};\n messages = [];\n};\n\nexport const parseMessage = function(str) {\n const _str = str.trim();\n const message = {\n text: _str.replace(/^[:]?(?:no)?wrap:/, '').trim(),\n wrap:\n _str.match(/^[:]?(?:no)?wrap:/) === null\n ? common.hasBreaks(_str) || autoWrap()\n : _str.match(/^[:]?wrap:/) !== null\n ? true\n : _str.match(/^[:]?nowrap:/) !== null\n ? false\n : autoWrap()\n };\n logger.debug('parseMessage:', message);\n return message;\n};\n\nexport const LINETYPE = {\n SOLID: 0,\n DOTTED: 1,\n NOTE: 2,\n SOLID_CROSS: 3,\n DOTTED_CROSS: 4,\n SOLID_OPEN: 5,\n DOTTED_OPEN: 6,\n LOOP_START: 10,\n LOOP_END: 11,\n ALT_START: 12,\n ALT_ELSE: 13,\n ALT_END: 14,\n OPT_START: 15,\n OPT_END: 16,\n ACTIVE_START: 17,\n ACTIVE_END: 18,\n PAR_START: 19,\n PAR_AND: 20,\n PAR_END: 21,\n RECT_START: 22,\n RECT_END: 23\n};\n\nexport const ARROWTYPE = {\n FILLED: 0,\n OPEN: 1\n};\n\nexport const PLACEMENT = {\n LEFTOF: 0,\n RIGHTOF: 1,\n OVER: 2\n};\n\nexport const addNote = function(actor, placement, message) {\n const note = {\n actor: actor,\n placement: placement,\n message: message.text,\n wrap: (message.wrap === undefined && autoWrap()) || !!message.wrap\n };\n\n // Coerce actor into a [to, from, ...] array\n const actors = [].concat(actor, actor);\n\n notes.push(note);\n messages.push({\n from: actors[0],\n to: actors[1],\n message: message.text,\n wrap: (message.wrap === undefined && autoWrap()) || !!message.wrap,\n type: LINETYPE.NOTE,\n placement: placement\n });\n};\n\nexport const setTitle = function(titleWrap) {\n title = titleWrap.text;\n titleWrapped = (titleWrap.wrap === undefined && autoWrap()) || !!titleWrap.wrap;\n};\n\nexport const apply = function(param) {\n if (param instanceof Array) {\n param.forEach(function(item) {\n apply(item);\n });\n } else {\n switch (param.type) {\n case 'addActor':\n addActor(param.actor, param.actor, param.description);\n break;\n case 'activeStart':\n addSignal(param.actor, undefined, undefined, param.signalType);\n break;\n case 'activeEnd':\n addSignal(param.actor, undefined, undefined, param.signalType);\n break;\n case 'addNote':\n addNote(param.actor, param.placement, param.text);\n break;\n case 'addMessage':\n addSignal(param.from, param.to, param.msg, param.signalType);\n break;\n case 'loopStart':\n addSignal(undefined, undefined, param.loopText, param.signalType);\n break;\n case 'loopEnd':\n addSignal(undefined, undefined, undefined, param.signalType);\n break;\n case 'rectStart':\n addSignal(undefined, undefined, param.color, param.signalType);\n break;\n case 'rectEnd':\n addSignal(undefined, undefined, undefined, param.signalType);\n break;\n case 'optStart':\n addSignal(undefined, undefined, param.optText, param.signalType);\n break;\n case 'optEnd':\n addSignal(undefined, undefined, undefined, param.signalType);\n break;\n case 'altStart':\n addSignal(undefined, undefined, param.altText, param.signalType);\n break;\n case 'else':\n addSignal(undefined, undefined, param.altText, param.signalType);\n break;\n case 'altEnd':\n addSignal(undefined, undefined, undefined, param.signalType);\n break;\n case 'setTitle':\n setTitle(param.text);\n break;\n case 'parStart':\n addSignal(undefined, undefined, param.parText, param.signalType);\n break;\n case 'and':\n addSignal(undefined, undefined, param.parText, param.signalType);\n break;\n case 'parEnd':\n addSignal(undefined, undefined, undefined, param.signalType);\n break;\n }\n }\n};\n\nexport default {\n addActor,\n addMessage,\n addSignal,\n autoWrap,\n setWrap,\n enableSequenceNumbers,\n showSequenceNumbers,\n getMessages,\n getActors,\n getActor,\n getActorKeys,\n getTitle,\n parseDirective,\n getConfig: () => configApi.getConfig().sequence,\n getTitleWrapped,\n clear,\n parseMessage,\n LINETYPE,\n ARROWTYPE,\n PLACEMENT,\n addNote,\n setTitle,\n apply\n};\n","import { select, selectAll } from 'd3';\nimport svgDraw, { drawText } from './svgDraw';\nimport { logger } from '../../logger';\nimport { parser } from './parser/sequenceDiagram';\nimport common from '../common/common';\nimport sequenceDb from './sequenceDb';\nimport utils, { assignWithDepth } from '../../utils';\n\nparser.yy = sequenceDb;\n\nconst conf = {};\n\nexport const bounds = {\n data: {\n startx: undefined,\n stopx: undefined,\n starty: undefined,\n stopy: undefined\n },\n verticalPos: 0,\n sequenceItems: [],\n activations: [],\n models: {\n getHeight: function() {\n return (\n Math.max.apply(\n null,\n this.actors.length === 0 ? [0] : this.actors.map(actor => actor.height || 0)\n ) +\n (this.loops.length === 0\n ? 0\n : this.loops.map(it => it.height || 0).reduce((acc, h) => acc + h)) +\n (this.messages.length === 0\n ? 0\n : this.messages.map(it => it.height || 0).reduce((acc, h) => acc + h)) +\n (this.notes.length === 0\n ? 0\n : this.notes.map(it => it.height || 0).reduce((acc, h) => acc + h))\n );\n },\n clear: function() {\n this.actors = [];\n this.loops = [];\n this.messages = [];\n this.notes = [];\n },\n addActor: function(actorModel) {\n this.actors.push(actorModel);\n },\n addLoop: function(loopModel) {\n this.loops.push(loopModel);\n },\n addMessage: function(msgModel) {\n this.messages.push(msgModel);\n },\n addNote: function(noteModel) {\n this.notes.push(noteModel);\n },\n lastActor: function() {\n return this.actors[this.actors.length - 1];\n },\n lastLoop: function() {\n return this.loops[this.loops.length - 1];\n },\n lastMessage: function() {\n return this.messages[this.messages.length - 1];\n },\n lastNote: function() {\n return this.notes[this.notes.length - 1];\n },\n actors: [],\n loops: [],\n messages: [],\n notes: []\n },\n init: function() {\n this.sequenceItems = [];\n this.activations = [];\n this.models.clear();\n this.data = {\n startx: undefined,\n stopx: undefined,\n starty: undefined,\n stopy: undefined\n };\n this.verticalPos = 0;\n setConf(parser.yy.getConfig());\n },\n updateVal: function(obj, key, val, fun) {\n if (typeof obj[key] === 'undefined') {\n obj[key] = val;\n } else {\n obj[key] = fun(val, obj[key]);\n }\n },\n updateBounds: function(startx, starty, stopx, stopy) {\n const _self = this;\n let cnt = 0;\n function updateFn(type) {\n return function updateItemBounds(item) {\n cnt++;\n // The loop sequenceItems is a stack so the biggest margins in the beginning of the sequenceItems\n const n = _self.sequenceItems.length - cnt + 1;\n\n _self.updateVal(item, 'starty', starty - n * conf.boxMargin, Math.min);\n _self.updateVal(item, 'stopy', stopy + n * conf.boxMargin, Math.max);\n\n _self.updateVal(bounds.data, 'startx', startx - n * conf.boxMargin, Math.min);\n _self.updateVal(bounds.data, 'stopx', stopx + n * conf.boxMargin, Math.max);\n\n if (!(type === 'activation')) {\n _self.updateVal(item, 'startx', startx - n * conf.boxMargin, Math.min);\n _self.updateVal(item, 'stopx', stopx + n * conf.boxMargin, Math.max);\n\n _self.updateVal(bounds.data, 'starty', starty - n * conf.boxMargin, Math.min);\n _self.updateVal(bounds.data, 'stopy', stopy + n * conf.boxMargin, Math.max);\n }\n };\n }\n\n this.sequenceItems.forEach(updateFn());\n this.activations.forEach(updateFn('activation'));\n },\n insert: function(startx, starty, stopx, stopy) {\n const _startx = Math.min(startx, stopx);\n const _stopx = Math.max(startx, stopx);\n const _starty = Math.min(starty, stopy);\n const _stopy = Math.max(starty, stopy);\n\n this.updateVal(bounds.data, 'startx', _startx, Math.min);\n this.updateVal(bounds.data, 'starty', _starty, Math.min);\n this.updateVal(bounds.data, 'stopx', _stopx, Math.max);\n this.updateVal(bounds.data, 'stopy', _stopy, Math.max);\n\n this.updateBounds(_startx, _starty, _stopx, _stopy);\n },\n newActivation: function(message, diagram, actors) {\n const actorRect = actors[message.from.actor];\n const stackedSize = actorActivations(message.from.actor).length || 0;\n const x = actorRect.x + actorRect.width / 2 + ((stackedSize - 1) * conf.activationWidth) / 2;\n this.activations.push({\n startx: x,\n starty: this.verticalPos + 2,\n stopx: x + conf.activationWidth,\n stopy: undefined,\n actor: message.from.actor,\n anchored: svgDraw.anchorElement(diagram)\n });\n },\n endActivation: function(message) {\n // find most recent activation for given actor\n const lastActorActivationIdx = this.activations\n .map(function(activation) {\n return activation.actor;\n })\n .lastIndexOf(message.from.actor);\n return this.activations.splice(lastActorActivationIdx, 1)[0];\n },\n createLoop: function(title = { message: undefined, wrap: false, width: undefined }, fill) {\n return {\n startx: undefined,\n starty: this.verticalPos,\n stopx: undefined,\n stopy: undefined,\n title: title.message,\n wrap: title.wrap,\n width: title.width,\n height: 0,\n fill: fill\n };\n },\n newLoop: function(title = { message: undefined, wrap: false, width: undefined }, fill) {\n this.sequenceItems.push(this.createLoop(title, fill));\n },\n endLoop: function() {\n return this.sequenceItems.pop();\n },\n addSectionToLoop: function(message) {\n const loop = this.sequenceItems.pop();\n loop.sections = loop.sections || [];\n loop.sectionTitles = loop.sectionTitles || [];\n loop.sections.push({ y: bounds.getVerticalPos(), height: 0 });\n loop.sectionTitles.push(message);\n this.sequenceItems.push(loop);\n },\n bumpVerticalPos: function(bump) {\n this.verticalPos = this.verticalPos + bump;\n this.data.stopy = this.verticalPos;\n },\n getVerticalPos: function() {\n return this.verticalPos;\n },\n getBounds: function() {\n return { bounds: this.data, models: this.models };\n }\n};\n\n/**\n * Draws an note in the diagram with the attached line\n * @param elem - The diagram to draw to.\n * @param noteModel:{x: number, y: number, message: string, width: number} - startx: x axis start position, verticalPos: y axis position, messsage: the message to be shown, width: Set this with a custom width to override the default configured width.\n */\nconst drawNote = function(elem, noteModel) {\n bounds.bumpVerticalPos(conf.boxMargin);\n noteModel.height = conf.boxMargin;\n noteModel.starty = bounds.getVerticalPos();\n const rect = svgDraw.getNoteRect();\n rect.x = noteModel.startx;\n rect.y = noteModel.starty;\n rect.width = noteModel.width || conf.width;\n rect.class = 'note';\n\n let g = elem.append('g');\n const rectElem = svgDraw.drawRect(g, rect);\n const textObj = svgDraw.getTextObj();\n textObj.x = noteModel.startx;\n textObj.y = noteModel.starty;\n textObj.width = rect.width;\n textObj.dy = '1em';\n textObj.text = noteModel.message;\n textObj.class = 'noteText';\n textObj.fontFamily = conf.noteFontFamily;\n textObj.fontSize = conf.noteFontSize;\n textObj.fontWeight = conf.noteFontWeight;\n textObj.anchor = conf.noteAlign;\n textObj.textMargin = conf.noteMargin;\n textObj.valign = conf.noteAlign;\n textObj.wrap = true;\n\n let textElem = drawText(g, textObj);\n\n let textHeight = Math.round(\n textElem.map(te => (te._groups || te)[0][0].getBBox().height).reduce((acc, curr) => acc + curr)\n );\n\n rectElem.attr('height', textHeight + 2 * conf.noteMargin);\n noteModel.height += textHeight + 2 * conf.noteMargin;\n bounds.bumpVerticalPos(textHeight + 2 * conf.noteMargin);\n noteModel.stopy = noteModel.starty + textHeight + 2 * conf.noteMargin;\n noteModel.stopx = noteModel.startx + rect.width;\n bounds.insert(noteModel.startx, noteModel.starty, noteModel.stopx, noteModel.stopy);\n bounds.models.addNote(noteModel);\n};\n\n/**\n * Draws a message\n * @param g - the parent of the message element\n * @param msgModel - the model containing fields describing a message\n */\nconst drawMessage = function(g, msgModel) {\n bounds.bumpVerticalPos(10);\n const { startx, stopx, starty, message, type, sequenceIndex, wrap } = msgModel;\n const lines = common.splitBreaks(message).length;\n let textDims = utils.calculateTextDimensions(message, conf.messageFont());\n const lineHeight = textDims.height / lines;\n msgModel.height += lineHeight;\n\n bounds.bumpVerticalPos(lineHeight);\n const textObj = svgDraw.getTextObj();\n textObj.x = startx;\n textObj.y = starty + 10;\n textObj.width = stopx - startx;\n textObj.class = 'messageText';\n textObj.dy = '1em';\n textObj.text = message;\n textObj.fontFamily = conf.messageFontFamily;\n textObj.fontSize = conf.messageFontSize;\n textObj.fontWeight = conf.messageFontWeight;\n textObj.anchor = conf.messageAlign;\n textObj.valign = conf.messageAlign;\n textObj.textMargin = conf.wrapPadding;\n textObj.tspan = false;\n textObj.wrap = wrap;\n\n drawText(g, textObj);\n\n let totalOffset = textDims.height - 10;\n\n let textWidth = textDims.width;\n\n let line, lineStarty;\n if (startx === stopx) {\n lineStarty = bounds.getVerticalPos() + totalOffset;\n if (conf.rightAngles) {\n line = g\n .append('path')\n .attr(\n 'd',\n `M ${startx},${lineStarty} H ${startx +\n Math.max(conf.width / 2, textWidth / 2)} V ${lineStarty + 25} H ${startx}`\n );\n } else {\n totalOffset += conf.boxMargin;\n\n lineStarty = bounds.getVerticalPos() + totalOffset;\n line = g\n .append('path')\n .attr(\n 'd',\n 'M ' +\n startx +\n ',' +\n lineStarty +\n ' C ' +\n (startx + 60) +\n ',' +\n (lineStarty - 10) +\n ' ' +\n (startx + 60) +\n ',' +\n (lineStarty + 30) +\n ' ' +\n startx +\n ',' +\n (lineStarty + 20)\n );\n }\n\n totalOffset += 30;\n const dx = Math.max(textWidth / 2, conf.width / 2);\n bounds.insert(\n startx - dx,\n bounds.getVerticalPos() - 10 + totalOffset,\n stopx + dx,\n bounds.getVerticalPos() + 30 + totalOffset\n );\n } else {\n totalOffset += conf.boxMargin;\n lineStarty = bounds.getVerticalPos() + totalOffset;\n line = g.append('line');\n line.attr('x1', startx);\n line.attr('y1', lineStarty);\n line.attr('x2', stopx);\n line.attr('y2', lineStarty);\n bounds.insert(startx, lineStarty - 10, stopx, lineStarty);\n }\n // Make an SVG Container\n // Draw the line\n if (\n type === parser.yy.LINETYPE.DOTTED ||\n type === parser.yy.LINETYPE.DOTTED_CROSS ||\n type === parser.yy.LINETYPE.DOTTED_OPEN\n ) {\n line.style('stroke-dasharray', '3, 3');\n line.attr('class', 'messageLine1');\n } else {\n line.attr('class', 'messageLine0');\n }\n\n let url = '';\n if (conf.arrowMarkerAbsolute) {\n url =\n window.location.protocol +\n '//' +\n window.location.host +\n window.location.pathname +\n window.location.search;\n url = url.replace(/\\(/g, '\\\\(');\n url = url.replace(/\\)/g, '\\\\)');\n }\n\n line.attr('stroke-width', 2);\n line.attr('stroke', 'none'); // handled by theme/css anyway\n line.style('fill', 'none'); // remove any fill colour\n if (type === parser.yy.LINETYPE.SOLID || type === parser.yy.LINETYPE.DOTTED) {\n line.attr('marker-end', 'url(' + url + '#arrowhead)');\n }\n\n if (type === parser.yy.LINETYPE.SOLID_CROSS || type === parser.yy.LINETYPE.DOTTED_CROSS) {\n line.attr('marker-end', 'url(' + url + '#crosshead)');\n }\n\n // add node number\n if (sequenceDb.showSequenceNumbers() || conf.showSequenceNumbers) {\n line.attr('marker-start', 'url(' + url + '#sequencenumber)');\n g.append('text')\n .attr('x', startx)\n .attr('y', lineStarty + 4)\n .attr('font-family', 'sans-serif')\n .attr('font-size', '12px')\n .attr('text-anchor', 'middle')\n .attr('textLength', '16px')\n .attr('class', 'sequenceNumber')\n .text(sequenceIndex);\n }\n bounds.bumpVerticalPos(totalOffset);\n msgModel.height += totalOffset;\n msgModel.stopy = msgModel.starty + msgModel.height;\n bounds.insert(msgModel.fromBounds, msgModel.starty, msgModel.toBounds, msgModel.stopy);\n};\n\nexport const drawActors = function(diagram, actors, actorKeys, verticalPos) {\n // Draw the actors\n let prevWidth = 0;\n let prevMargin = 0;\n\n for (let i = 0; i < actorKeys.length; i++) {\n const actor = actors[actorKeys[i]];\n\n // Add some rendering data to the object\n actor.width = actor.width || conf.width;\n actor.height = Math.max(actor.height || conf.height, conf.height);\n actor.margin = actor.margin || conf.actorMargin;\n\n actor.x = prevWidth + prevMargin;\n actor.y = verticalPos;\n\n // Draw the box with the attached line\n svgDraw.drawActor(diagram, actor, conf);\n bounds.insert(actor.x, verticalPos, actor.x + actor.width, actor.height);\n\n prevWidth += actor.width;\n prevMargin += actor.margin;\n bounds.models.addActor(actor);\n }\n\n // Add a margin between the actor boxes and the first arrow\n bounds.bumpVerticalPos(conf.height);\n};\n\nexport const setConf = function(cnf) {\n assignWithDepth(conf, cnf);\n\n if (cnf.fontFamily) {\n conf.actorFontFamily = conf.noteFontFamily = conf.messageFontFamily = cnf.fontFamily;\n }\n if (cnf.fontSize) {\n conf.actorFontSize = conf.noteFontSize = conf.messageFontSize = cnf.fontSize;\n }\n if (cnf.fontWeight) {\n conf.actorFontWeight = conf.noteFontWeight = conf.messageFontWeight = cnf.fontWeight;\n }\n};\n\nconst actorActivations = function(actor) {\n return bounds.activations.filter(function(activation) {\n return activation.actor === actor;\n });\n};\n\nconst activationBounds = function(actor, actors) {\n // handle multiple stacked activations for same actor\n const actorObj = actors[actor];\n const activations = actorActivations(actor);\n\n const left = activations.reduce(function(acc, activation) {\n return Math.min(acc, activation.startx);\n }, actorObj.x + actorObj.width / 2);\n const right = activations.reduce(function(acc, activation) {\n return Math.max(acc, activation.stopx);\n }, actorObj.x + actorObj.width / 2);\n return [left, right];\n};\n\nfunction adjustLoopHeightForWrap(loopWidths, msg, preMargin, postMargin, addLoopFn) {\n bounds.bumpVerticalPos(preMargin);\n let heightAdjust = postMargin;\n if (msg.id && msg.message && loopWidths[msg.id]) {\n let loopWidth = loopWidths[msg.id].width;\n let textConf = conf.messageFont();\n msg.message = utils.wrapLabel(`[${msg.message}]`, loopWidth - 2 * conf.wrapPadding, textConf);\n msg.width = loopWidth;\n msg.wrap = true;\n\n // const lines = common.splitBreaks(msg.message).length;\n const textDims = utils.calculateTextDimensions(msg.message, textConf);\n const totalOffset = Math.max(textDims.height, conf.labelBoxHeight);\n heightAdjust = postMargin + totalOffset;\n logger.debug(`${totalOffset} - ${msg.message}`);\n }\n addLoopFn(msg);\n bounds.bumpVerticalPos(heightAdjust);\n}\n\n/**\n * Draws a sequenceDiagram in the tag with id: id based on the graph definition in text.\n * @param text\n * @param id\n */\nexport const draw = function(text, id) {\n parser.yy.clear();\n parser.yy.setWrap(conf.wrap);\n parser.parse(text + '\\n');\n bounds.init();\n logger.debug(`C:${JSON.stringify(conf, null, 2)}`);\n\n const diagram = select(`[id=\"${id}\"]`);\n\n // Fetch data from the parsing\n const actors = parser.yy.getActors();\n const actorKeys = parser.yy.getActorKeys();\n const messages = parser.yy.getMessages();\n const title = parser.yy.getTitle();\n\n const maxMessageWidthPerActor = getMaxMessageWidthPerActor(actors, messages);\n conf.height = calculateActorMargins(actors, maxMessageWidthPerActor);\n\n drawActors(diagram, actors, actorKeys, 0);\n const loopWidths = calculateLoopBounds(messages, actors, maxMessageWidthPerActor);\n\n // The arrow head definition is attached to the svg once\n svgDraw.insertArrowHead(diagram);\n svgDraw.insertArrowCrossHead(diagram);\n svgDraw.insertSequenceNumber(diagram);\n\n function activeEnd(msg, verticalPos) {\n const activationData = bounds.endActivation(msg);\n if (activationData.starty + 18 > verticalPos) {\n activationData.starty = verticalPos - 6;\n verticalPos += 12;\n }\n svgDraw.drawActivation(\n diagram,\n activationData,\n verticalPos,\n conf,\n actorActivations(msg.from.actor).length\n );\n\n bounds.insert(activationData.startx, verticalPos - 10, activationData.stopx, verticalPos);\n }\n\n // Draw the messages/signals\n let sequenceIndex = 1;\n messages.forEach(function(msg) {\n let loopModel, noteModel, msgModel;\n\n switch (msg.type) {\n case parser.yy.LINETYPE.NOTE:\n noteModel = msg.noteModel;\n drawNote(diagram, noteModel);\n break;\n case parser.yy.LINETYPE.ACTIVE_START:\n bounds.newActivation(msg, diagram, actors);\n break;\n case parser.yy.LINETYPE.ACTIVE_END:\n activeEnd(msg, bounds.getVerticalPos());\n break;\n case parser.yy.LINETYPE.LOOP_START:\n adjustLoopHeightForWrap(\n loopWidths,\n msg,\n conf.boxMargin,\n conf.boxMargin + conf.boxTextMargin,\n message => bounds.newLoop(message)\n );\n break;\n case parser.yy.LINETYPE.LOOP_END:\n loopModel = bounds.endLoop();\n svgDraw.drawLoop(diagram, loopModel, 'loop', conf);\n bounds.bumpVerticalPos(loopModel.stopy - bounds.getVerticalPos());\n bounds.models.addLoop(loopModel);\n break;\n case parser.yy.LINETYPE.RECT_START:\n adjustLoopHeightForWrap(loopWidths, msg, conf.boxMargin, conf.boxMargin, message =>\n bounds.newLoop(undefined, message.message)\n );\n break;\n case parser.yy.LINETYPE.RECT_END:\n loopModel = bounds.endLoop();\n svgDraw.drawBackgroundRect(diagram, loopModel);\n bounds.models.addLoop(loopModel);\n bounds.bumpVerticalPos(loopModel.stopy - bounds.getVerticalPos());\n break;\n case parser.yy.LINETYPE.OPT_START:\n adjustLoopHeightForWrap(\n loopWidths,\n msg,\n conf.boxMargin,\n conf.boxMargin + conf.boxTextMargin,\n message => bounds.newLoop(message)\n );\n break;\n case parser.yy.LINETYPE.OPT_END:\n loopModel = bounds.endLoop();\n svgDraw.drawLoop(diagram, loopModel, 'opt', conf);\n bounds.bumpVerticalPos(loopModel.stopy - bounds.getVerticalPos());\n bounds.models.addLoop(loopModel);\n break;\n case parser.yy.LINETYPE.ALT_START:\n adjustLoopHeightForWrap(\n loopWidths,\n msg,\n conf.boxMargin,\n conf.boxMargin + conf.boxTextMargin,\n message => bounds.newLoop(message)\n );\n break;\n case parser.yy.LINETYPE.ALT_ELSE:\n adjustLoopHeightForWrap(\n loopWidths,\n msg,\n conf.boxMargin + conf.boxTextMargin,\n conf.boxMargin,\n message => bounds.addSectionToLoop(message)\n );\n break;\n case parser.yy.LINETYPE.ALT_END:\n loopModel = bounds.endLoop();\n svgDraw.drawLoop(diagram, loopModel, 'alt', conf);\n bounds.bumpVerticalPos(loopModel.stopy - bounds.getVerticalPos());\n bounds.models.addLoop(loopModel);\n break;\n case parser.yy.LINETYPE.PAR_START:\n adjustLoopHeightForWrap(\n loopWidths,\n msg,\n conf.boxMargin,\n conf.boxMargin + conf.boxTextMargin,\n message => bounds.newLoop(message)\n );\n break;\n case parser.yy.LINETYPE.PAR_AND:\n adjustLoopHeightForWrap(\n loopWidths,\n msg,\n conf.boxMargin + conf.boxTextMargin,\n conf.boxMargin,\n message => bounds.addSectionToLoop(message)\n );\n break;\n case parser.yy.LINETYPE.PAR_END:\n loopModel = bounds.endLoop();\n svgDraw.drawLoop(diagram, loopModel, 'par', conf);\n bounds.bumpVerticalPos(loopModel.stopy - bounds.getVerticalPos());\n bounds.models.addLoop(loopModel);\n break;\n default:\n try {\n // lastMsg = msg\n msgModel = msg.msgModel;\n msgModel.starty = bounds.getVerticalPos();\n msgModel.sequenceIndex = sequenceIndex;\n drawMessage(diagram, msgModel);\n bounds.models.addMessage(msgModel);\n } catch (e) {\n logger.error('error while drawing message', e);\n }\n }\n // Increment sequence counter if msg.type is a line (and not another event like activation or note, etc)\n if (\n [\n parser.yy.LINETYPE.SOLID_OPEN,\n parser.yy.LINETYPE.DOTTED_OPEN,\n parser.yy.LINETYPE.SOLID,\n parser.yy.LINETYPE.DOTTED,\n parser.yy.LINETYPE.SOLID_CROSS,\n parser.yy.LINETYPE.DOTTED_CROSS\n ].includes(msg.type)\n ) {\n sequenceIndex++;\n }\n });\n\n if (conf.mirrorActors) {\n // Draw actors below diagram\n bounds.bumpVerticalPos(conf.boxMargin * 2);\n drawActors(diagram, actors, actorKeys, bounds.getVerticalPos());\n }\n\n const { bounds: box } = bounds.getBounds();\n\n // Adjust line height of actor lines now that the height of the diagram is known\n logger.debug('For line height fix Querying: #' + id + ' .actor-line');\n const actorLines = selectAll('#' + id + ' .actor-line');\n actorLines.attr('y2', box.stopy);\n\n let height = box.stopy - box.starty + 2 * conf.diagramMarginY;\n if (conf.mirrorActors) {\n height = height - conf.boxMargin + conf.bottomMarginAdj;\n }\n\n const width = box.stopx - box.startx + 2 * conf.diagramMarginX;\n\n if (title) {\n diagram\n .append('text')\n .text(title)\n .attr('x', (box.stopx - box.startx) / 2 - 2 * conf.diagramMarginX)\n .attr('y', -25);\n }\n\n if (conf.useMaxWidth) {\n diagram.attr('height', '100%');\n diagram.attr('width', '100%');\n diagram.attr('style', 'max-width:' + width + 'px;');\n // diagram.attr('style', 'max-width:100%;');\n } else {\n diagram.attr('height', height);\n diagram.attr('width', width);\n }\n const extraVertForTitle = title ? 40 : 0;\n diagram.attr(\n 'viewBox',\n box.startx -\n conf.diagramMarginX +\n ' -' +\n (conf.diagramMarginY + extraVertForTitle) +\n ' ' +\n width +\n ' ' +\n (height + extraVertForTitle)\n );\n logger.debug(`models:`, bounds.models);\n};\n\n/**\n * Retrieves the max message width of each actor, supports signals (messages, loops)\n * and notes.\n *\n * It will enumerate each given message, and will determine its text width, in relation\n * to the actor it originates from, and destined to.\n *\n * @param actors - The actors map\n * @param messages - A list of message objects to iterate\n */\nconst getMaxMessageWidthPerActor = function(actors, messages) {\n const maxMessageWidthPerActor = {};\n\n messages.forEach(function(msg) {\n if (actors[msg.to] && actors[msg.from]) {\n const actor = actors[msg.to];\n\n // If this is the first actor, and the message is left of it, no need to calculate the margin\n if (msg.placement === parser.yy.PLACEMENT.LEFTOF && !actor.prevActor) {\n return;\n }\n\n // If this is the last actor, and the message is right of it, no need to calculate the margin\n if (msg.placement === parser.yy.PLACEMENT.RIGHTOF && !actor.nextActor) {\n return;\n }\n\n const isNote = msg.placement !== undefined;\n const isMessage = !isNote;\n\n const textFont = isNote ? conf.noteFont() : conf.messageFont();\n let wrappedMessage = msg.wrap\n ? utils.wrapLabel(msg.message, conf.width - 2 * conf.wrapPadding, textFont)\n : msg.message;\n const messageDimensions = utils.calculateTextDimensions(wrappedMessage, textFont);\n const messageWidth = messageDimensions.width + 2 * conf.wrapPadding;\n\n /*\n * The following scenarios should be supported:\n *\n * - There's a message (non-note) between fromActor and toActor\n * - If fromActor is on the right and toActor is on the left, we should\n * define the toActor's margin\n * - If fromActor is on the left and toActor is on the right, we should\n * define the fromActor's margin\n * - There's a note, in which case fromActor == toActor\n * - If the note is to the left of the actor, we should define the previous actor\n * margin\n * - If the note is on the actor, we should define both the previous and next actor\n * margins, each being the half of the note size\n * - If the note is on the right of the actor, we should define the current actor\n * margin\n */\n if (isMessage && msg.from === actor.nextActor) {\n maxMessageWidthPerActor[msg.to] = Math.max(\n maxMessageWidthPerActor[msg.to] || 0,\n messageWidth\n );\n } else if (isMessage && msg.from === actor.prevActor) {\n maxMessageWidthPerActor[msg.from] = Math.max(\n maxMessageWidthPerActor[msg.from] || 0,\n messageWidth\n );\n } else if (isMessage && msg.from === msg.to) {\n maxMessageWidthPerActor[msg.from] = Math.max(\n maxMessageWidthPerActor[msg.from] || 0,\n messageWidth / 2\n );\n\n maxMessageWidthPerActor[msg.to] = Math.max(\n maxMessageWidthPerActor[msg.to] || 0,\n messageWidth / 2\n );\n } else if (msg.placement === parser.yy.PLACEMENT.RIGHTOF) {\n maxMessageWidthPerActor[msg.from] = Math.max(\n maxMessageWidthPerActor[msg.from] || 0,\n messageWidth\n );\n } else if (msg.placement === parser.yy.PLACEMENT.LEFTOF) {\n maxMessageWidthPerActor[actor.prevActor] = Math.max(\n maxMessageWidthPerActor[actor.prevActor] || 0,\n messageWidth\n );\n } else if (msg.placement === parser.yy.PLACEMENT.OVER) {\n if (actor.prevActor) {\n maxMessageWidthPerActor[actor.prevActor] = Math.max(\n maxMessageWidthPerActor[actor.prevActor] || 0,\n messageWidth / 2\n );\n }\n\n if (actor.nextActor) {\n maxMessageWidthPerActor[msg.from] = Math.max(\n maxMessageWidthPerActor[msg.from] || 0,\n messageWidth / 2\n );\n }\n }\n }\n });\n\n logger.debug('maxMessageWidthPerActor:', maxMessageWidthPerActor);\n return maxMessageWidthPerActor;\n};\n\n/**\n * This will calculate the optimal margin for each given actor, for a given\n * actor->messageWidth map.\n *\n * An actor's margin is determined by the width of the actor, the width of the\n * largest message that originates from it, and the configured conf.actorMargin.\n *\n * @param actors - The actors map to calculate margins for\n * @param actorToMessageWidth - A map of actor key -> max message width it holds\n */\nconst calculateActorMargins = function(actors, actorToMessageWidth) {\n let maxHeight = 0;\n Object.keys(actors).forEach(prop => {\n const actor = actors[prop];\n if (actor.wrap) {\n actor.description = utils.wrapLabel(\n actor.description,\n conf.width - 2 * conf.wrapPadding,\n conf.actorFont()\n );\n }\n const actDims = utils.calculateTextDimensions(actor.description, conf.actorFont());\n actor.width = actor.wrap\n ? conf.width\n : Math.max(conf.width, actDims.width + 2 * conf.wrapPadding);\n\n actor.height = actor.wrap ? Math.max(actDims.height, conf.height) : conf.height;\n maxHeight = Math.max(maxHeight, actor.height);\n });\n\n for (let actorKey in actorToMessageWidth) {\n const actor = actors[actorKey];\n\n if (!actor) {\n continue;\n }\n\n const nextActor = actors[actor.nextActor];\n\n // No need to space out an actor that doesn't have a next link\n if (!nextActor) {\n continue;\n }\n\n const messageWidth = actorToMessageWidth[actorKey];\n const actorWidth = messageWidth + conf.actorMargin - actor.width / 2 - nextActor.width / 2;\n\n actor.margin = Math.max(actorWidth, conf.actorMargin);\n }\n\n return Math.max(maxHeight, conf.height);\n};\n\nconst buildNoteModel = function(msg, actors) {\n let startx = actors[msg.from].x;\n let stopx = actors[msg.to].x;\n let shouldWrap = msg.wrap && msg.message;\n\n let textDimensions = utils.calculateTextDimensions(\n shouldWrap ? utils.wrapLabel(msg.message, conf.width, conf.noteFont()) : msg.message,\n conf.noteFont()\n );\n let noteModel = {\n width: shouldWrap\n ? conf.width\n : Math.max(conf.width, textDimensions.width + 2 * conf.noteMargin),\n height: 0,\n startx: actors[msg.from].x,\n stopx: 0,\n starty: 0,\n stopy: 0,\n message: msg.message\n };\n if (msg.placement === parser.yy.PLACEMENT.RIGHTOF) {\n noteModel.width = shouldWrap\n ? Math.max(conf.width, textDimensions.width)\n : Math.max(\n actors[msg.from].width / 2 + actors[msg.to].width / 2,\n textDimensions.width + 2 * conf.noteMargin\n );\n noteModel.startx = startx + (actors[msg.from].width + conf.actorMargin) / 2;\n } else if (msg.placement === parser.yy.PLACEMENT.LEFTOF) {\n noteModel.width = shouldWrap\n ? Math.max(conf.width, textDimensions.width + 2 * conf.noteMargin)\n : Math.max(\n actors[msg.from].width / 2 + actors[msg.to].width / 2,\n textDimensions.width + 2 * conf.noteMargin\n );\n noteModel.startx = startx - noteModel.width + (actors[msg.from].width - conf.actorMargin) / 2;\n } else if (msg.to === msg.from) {\n textDimensions = utils.calculateTextDimensions(\n shouldWrap\n ? utils.wrapLabel(\n msg.message,\n Math.max(conf.width, actors[msg.from].width),\n conf.noteFont()\n )\n : msg.message,\n conf.noteFont()\n );\n noteModel.width = shouldWrap\n ? Math.max(conf.width, actors[msg.from].width)\n : Math.max(actors[msg.from].width, conf.width, textDimensions.width + 2 * conf.noteMargin);\n noteModel.startx = startx + (actors[msg.from].width - noteModel.width) / 2;\n } else {\n noteModel.width =\n Math.abs(startx + actors[msg.from].width / 2 - (stopx + actors[msg.to].width / 2)) +\n conf.actorMargin;\n noteModel.startx =\n startx < stopx\n ? startx + actors[msg.from].width / 2 - conf.actorMargin / 2\n : stopx + actors[msg.to].width / 2 - conf.actorMargin / 2;\n }\n if (shouldWrap) {\n noteModel.message = utils.wrapLabel(\n msg.message,\n noteModel.width - 2 * conf.wrapPadding,\n conf.noteFont()\n );\n }\n logger.debug(\n `NM:[${noteModel.startx},${noteModel.stopx},${noteModel.starty},${noteModel.stopy}:${noteModel.width},${noteModel.height}=${msg.message}]`\n );\n return noteModel;\n};\n\nconst buildMessageModel = function(msg, actors) {\n let process = false;\n if (\n [\n parser.yy.LINETYPE.SOLID_OPEN,\n parser.yy.LINETYPE.DOTTED_OPEN,\n parser.yy.LINETYPE.SOLID,\n parser.yy.LINETYPE.DOTTED,\n parser.yy.LINETYPE.SOLID_CROSS,\n parser.yy.LINETYPE.DOTTED_CROSS\n ].includes(msg.type)\n ) {\n process = true;\n }\n if (!process) {\n return {};\n }\n const fromBounds = activationBounds(msg.from, actors);\n const toBounds = activationBounds(msg.to, actors);\n const fromIdx = fromBounds[0] <= toBounds[0] ? 1 : 0;\n const toIdx = fromBounds[0] < toBounds[0] ? 0 : 1;\n const allBounds = fromBounds.concat(toBounds);\n const boundedWidth = Math.abs(toBounds[toIdx] - fromBounds[fromIdx]);\n const msgDims = utils.calculateTextDimensions(msg.message, conf.messageFont());\n if (msg.wrap && msg.message) {\n msg.message = utils.wrapLabel(\n msg.message,\n Math.max(boundedWidth + 2 * conf.wrapPadding, conf.width),\n conf.messageFont()\n );\n }\n return {\n width: Math.max(\n msg.wrap ? 0 : msgDims.width + 2 * conf.wrapPadding,\n boundedWidth + 2 * conf.wrapPadding,\n conf.width\n ),\n height: 0,\n startx: fromBounds[fromIdx],\n stopx: toBounds[toIdx],\n starty: 0,\n stopy: 0,\n message: msg.message,\n type: msg.type,\n wrap: msg.wrap,\n fromBounds: Math.min.apply(null, allBounds),\n toBounds: Math.max.apply(null, allBounds)\n };\n};\n\nconst calculateLoopBounds = function(messages, actors) {\n const loops = {};\n const stack = [];\n let current, noteModel, msgModel;\n\n messages.forEach(function(msg) {\n msg.id = utils.random({ length: 10 });\n switch (msg.type) {\n case parser.yy.LINETYPE.LOOP_START:\n case parser.yy.LINETYPE.ALT_START:\n case parser.yy.LINETYPE.OPT_START:\n case parser.yy.LINETYPE.PAR_START:\n stack.push({\n id: msg.id,\n msg: msg.message,\n from: Number.MAX_SAFE_INTEGER,\n to: Number.MIN_SAFE_INTEGER,\n width: 0\n });\n break;\n case parser.yy.LINETYPE.ALT_ELSE:\n case parser.yy.LINETYPE.PAR_AND:\n if (msg.message) {\n current = stack.pop();\n loops[current.id] = current;\n loops[msg.id] = current;\n stack.push(current);\n }\n break;\n case parser.yy.LINETYPE.LOOP_END:\n case parser.yy.LINETYPE.ALT_END:\n case parser.yy.LINETYPE.OPT_END:\n case parser.yy.LINETYPE.PAR_END:\n current = stack.pop();\n loops[current.id] = current;\n break;\n case parser.yy.LINETYPE.ACTIVE_START:\n {\n const actorRect = actors[msg.from ? msg.from.actor : msg.to.actor];\n const stackedSize = actorActivations(msg.from ? msg.from.actor : msg.to.actor).length;\n const x =\n actorRect.x + actorRect.width / 2 + ((stackedSize - 1) * conf.activationWidth) / 2;\n const toAdd = {\n startx: x,\n stopx: x + conf.activationWidth,\n actor: msg.from.actor,\n enabled: true\n };\n bounds.activations.push(toAdd);\n }\n break;\n case parser.yy.LINETYPE.ACTIVE_END:\n {\n const lastActorActivationIdx = bounds.activations\n .map(a => a.actor)\n .lastIndexOf(msg.from.actor);\n delete bounds.activations.splice(lastActorActivationIdx, 1)[0];\n }\n break;\n }\n const isNote = msg.placement !== undefined;\n if (isNote) {\n noteModel = buildNoteModel(msg, actors);\n msg.noteModel = noteModel;\n stack.forEach(stk => {\n current = stk;\n current.from = Math.min(current.from, noteModel.startx);\n current.to = Math.max(current.to, noteModel.startx + noteModel.width);\n current.width =\n Math.max(current.width, Math.abs(current.from - current.to)) - conf.labelBoxWidth;\n });\n } else {\n msgModel = buildMessageModel(msg, actors);\n msg.msgModel = msgModel;\n if (msgModel.startx && msgModel.stopx && stack.length > 0) {\n stack.forEach(stk => {\n current = stk;\n if (msgModel.startx === msgModel.stopx) {\n let from = actors[msg.from];\n let to = actors[msg.to];\n current.from = Math.min(\n from.x - msgModel.width / 2,\n from.x - from.width / 2,\n current.from\n );\n current.to = Math.max(to.x + msgModel.width / 2, to.x + from.width / 2, current.to);\n current.width =\n Math.max(current.width, Math.abs(current.to - current.from)) - conf.labelBoxWidth;\n } else {\n current.from = Math.min(msgModel.startx, current.from);\n current.to = Math.max(msgModel.stopx, current.to);\n current.width = Math.max(current.width, msgModel.width) - conf.labelBoxWidth;\n }\n });\n }\n }\n });\n bounds.activations = [];\n logger.debug('Loop type widths:', loops);\n return loops;\n};\n\nexport default {\n bounds,\n drawActors,\n setConf,\n draw\n};\n","import moment from 'moment-mini';\nimport { sanitizeUrl } from '@braintree/sanitize-url';\nimport { logger } from '../../logger';\nimport { getConfig } from '../../config';\nimport utils from '../../utils';\n\nlet dateFormat = '';\nlet axisFormat = '';\nlet todayMarker = '';\nlet excludes = [];\nlet title = '';\nlet sections = [];\nlet tasks = [];\nlet currentSection = '';\nconst tags = ['active', 'done', 'crit', 'milestone'];\nlet funs = [];\nlet inclusiveEndDates = false;\n\n// The serial order of the task in the script\nlet lastOrder = 0;\n\nexport const clear = function() {\n sections = [];\n tasks = [];\n currentSection = '';\n funs = [];\n title = '';\n taskCnt = 0;\n lastTask = undefined;\n lastTaskID = undefined;\n rawTasks = [];\n dateFormat = '';\n axisFormat = '';\n todayMarker = '';\n excludes = [];\n inclusiveEndDates = false;\n lastOrder = 0;\n};\n\nexport const setAxisFormat = function(txt) {\n axisFormat = txt;\n};\n\nexport const getAxisFormat = function() {\n return axisFormat;\n};\n\nexport const setTodayMarker = function(txt) {\n todayMarker = txt;\n};\n\nexport const getTodayMarker = function() {\n return todayMarker;\n};\n\nexport const setDateFormat = function(txt) {\n dateFormat = txt;\n};\n\nexport const enableInclusiveEndDates = function() {\n inclusiveEndDates = true;\n};\n\nexport const endDatesAreInclusive = function() {\n return inclusiveEndDates;\n};\n\nexport const getDateFormat = function() {\n return dateFormat;\n};\n\nexport const setExcludes = function(txt) {\n excludes = txt.toLowerCase().split(/[\\s,]+/);\n};\n\nexport const getExcludes = function() {\n return excludes;\n};\n\nexport const setTitle = function(txt) {\n title = txt;\n};\n\nexport const getTitle = function() {\n return title;\n};\n\nexport const addSection = function(txt) {\n currentSection = txt;\n sections.push(txt);\n};\n\nexport const getSections = function() {\n return sections;\n};\n\nexport const getTasks = function() {\n let allItemsPricessed = compileTasks();\n const maxDepth = 10;\n let iterationCount = 0;\n while (!allItemsPricessed && iterationCount < maxDepth) {\n allItemsPricessed = compileTasks();\n iterationCount++;\n }\n\n tasks = rawTasks;\n\n return tasks;\n};\n\nconst isInvalidDate = function(date, dateFormat, excludes) {\n if (date.isoWeekday() >= 6 && excludes.indexOf('weekends') >= 0) {\n return true;\n }\n if (excludes.indexOf(date.format('dddd').toLowerCase()) >= 0) {\n return true;\n }\n return excludes.indexOf(date.format(dateFormat.trim())) >= 0;\n};\n\nconst checkTaskDates = function(task, dateFormat, excludes) {\n if (!excludes.length || task.manualEndTime) return;\n let startTime = moment(task.startTime, dateFormat, true);\n startTime.add(1, 'd');\n let endTime = moment(task.endTime, dateFormat, true);\n let renderEndTime = fixTaskDates(startTime, endTime, dateFormat, excludes);\n task.endTime = endTime.toDate();\n task.renderEndTime = renderEndTime;\n};\n\nconst fixTaskDates = function(startTime, endTime, dateFormat, excludes) {\n let invalid = false;\n let renderEndTime = null;\n while (startTime <= endTime) {\n if (!invalid) {\n renderEndTime = endTime.toDate();\n }\n invalid = isInvalidDate(startTime, dateFormat, excludes);\n if (invalid) {\n endTime.add(1, 'd');\n }\n startTime.add(1, 'd');\n }\n return renderEndTime;\n};\n\nconst getStartDate = function(prevTime, dateFormat, str) {\n str = str.trim();\n\n // Test for after\n const re = /^after\\s+([\\d\\w- ]+)/;\n const afterStatement = re.exec(str.trim());\n\n if (afterStatement !== null) {\n // check all after ids and take the latest\n let latestEndingTask = null;\n afterStatement[1].split(' ').forEach(function(id) {\n let task = findTaskById(id);\n if (typeof task !== 'undefined') {\n if (!latestEndingTask) {\n latestEndingTask = task;\n } else {\n if (task.endTime > latestEndingTask.endTime) {\n latestEndingTask = task;\n }\n }\n }\n });\n\n if (!latestEndingTask) {\n const dt = new Date();\n dt.setHours(0, 0, 0, 0);\n return dt;\n } else {\n return latestEndingTask.endTime;\n }\n }\n\n // Check for actual date set\n let mDate = moment(str, dateFormat.trim(), true);\n if (mDate.isValid()) {\n return mDate.toDate();\n } else {\n logger.debug('Invalid date:' + str);\n logger.debug('With date format:' + dateFormat.trim());\n }\n\n // Default date - now\n return new Date();\n};\n\nconst durationToDate = function(durationStatement, relativeTime) {\n if (durationStatement !== null) {\n switch (durationStatement[2]) {\n case 's':\n relativeTime.add(durationStatement[1], 'seconds');\n break;\n case 'm':\n relativeTime.add(durationStatement[1], 'minutes');\n break;\n case 'h':\n relativeTime.add(durationStatement[1], 'hours');\n break;\n case 'd':\n relativeTime.add(durationStatement[1], 'days');\n break;\n case 'w':\n relativeTime.add(durationStatement[1], 'weeks');\n break;\n }\n }\n // Default date - now\n return relativeTime.toDate();\n};\n\nconst getEndDate = function(prevTime, dateFormat, str, inclusive) {\n inclusive = inclusive || false;\n str = str.trim();\n\n // Check for actual date\n let mDate = moment(str, dateFormat.trim(), true);\n if (mDate.isValid()) {\n if (inclusive) {\n mDate.add(1, 'd');\n }\n return mDate.toDate();\n }\n\n return durationToDate(/^([\\d]+)([wdhms])/.exec(str.trim()), moment(prevTime));\n};\n\nlet taskCnt = 0;\nconst parseId = function(idStr) {\n if (typeof idStr === 'undefined') {\n taskCnt = taskCnt + 1;\n return 'task' + taskCnt;\n }\n return idStr;\n};\n// id, startDate, endDate\n// id, startDate, length\n// id, after x, endDate\n// id, after x, length\n// startDate, endDate\n// startDate, length\n// after x, endDate\n// after x, length\n// endDate\n// length\n\nconst compileData = function(prevTask, dataStr) {\n let ds;\n\n if (dataStr.substr(0, 1) === ':') {\n ds = dataStr.substr(1, dataStr.length);\n } else {\n ds = dataStr;\n }\n\n const data = ds.split(',');\n\n const task = {};\n\n // Get tags like active, done, crit and milestone\n getTaskTags(data, task, tags);\n\n for (let i = 0; i < data.length; i++) {\n data[i] = data[i].trim();\n }\n\n let endTimeData = '';\n switch (data.length) {\n case 1:\n task.id = parseId();\n task.startTime = prevTask.endTime;\n endTimeData = data[0];\n break;\n case 2:\n task.id = parseId();\n task.startTime = getStartDate(undefined, dateFormat, data[0]);\n endTimeData = data[1];\n break;\n case 3:\n task.id = parseId(data[0]);\n task.startTime = getStartDate(undefined, dateFormat, data[1]);\n endTimeData = data[2];\n break;\n default:\n }\n\n if (endTimeData) {\n task.endTime = getEndDate(task.startTime, dateFormat, endTimeData, inclusiveEndDates);\n task.manualEndTime = moment(endTimeData, 'YYYY-MM-DD', true).isValid();\n checkTaskDates(task, dateFormat, excludes);\n }\n\n return task;\n};\n\nconst parseData = function(prevTaskId, dataStr) {\n let ds;\n if (dataStr.substr(0, 1) === ':') {\n ds = dataStr.substr(1, dataStr.length);\n } else {\n ds = dataStr;\n }\n\n const data = ds.split(',');\n\n const task = {};\n\n // Get tags like active, done, crit and milestone\n getTaskTags(data, task, tags);\n\n for (let i = 0; i < data.length; i++) {\n data[i] = data[i].trim();\n }\n\n switch (data.length) {\n case 1:\n task.id = parseId();\n task.startTime = {\n type: 'prevTaskEnd',\n id: prevTaskId\n };\n task.endTime = {\n data: data[0]\n };\n break;\n case 2:\n task.id = parseId();\n task.startTime = {\n type: 'getStartDate',\n startData: data[0]\n };\n task.endTime = {\n data: data[1]\n };\n break;\n case 3:\n task.id = parseId(data[0]);\n task.startTime = {\n type: 'getStartDate',\n startData: data[1]\n };\n task.endTime = {\n data: data[2]\n };\n break;\n default:\n }\n\n return task;\n};\n\nlet lastTask;\nlet lastTaskID;\nlet rawTasks = [];\nconst taskDb = {};\nexport const addTask = function(descr, data) {\n const rawTask = {\n section: currentSection,\n type: currentSection,\n processed: false,\n manualEndTime: false,\n renderEndTime: null,\n raw: { data: data },\n task: descr,\n classes: []\n };\n const taskInfo = parseData(lastTaskID, data);\n rawTask.raw.startTime = taskInfo.startTime;\n rawTask.raw.endTime = taskInfo.endTime;\n rawTask.id = taskInfo.id;\n rawTask.prevTaskId = lastTaskID;\n rawTask.active = taskInfo.active;\n rawTask.done = taskInfo.done;\n rawTask.crit = taskInfo.crit;\n rawTask.milestone = taskInfo.milestone;\n rawTask.order = lastOrder;\n\n lastOrder++;\n\n const pos = rawTasks.push(rawTask);\n\n lastTaskID = rawTask.id;\n // Store cross ref\n taskDb[rawTask.id] = pos - 1;\n};\n\nexport const findTaskById = function(id) {\n const pos = taskDb[id];\n return rawTasks[pos];\n};\n\nexport const addTaskOrg = function(descr, data) {\n const newTask = {\n section: currentSection,\n type: currentSection,\n description: descr,\n task: descr,\n classes: []\n };\n const taskInfo = compileData(lastTask, data);\n newTask.startTime = taskInfo.startTime;\n newTask.endTime = taskInfo.endTime;\n newTask.id = taskInfo.id;\n newTask.active = taskInfo.active;\n newTask.done = taskInfo.done;\n newTask.crit = taskInfo.crit;\n newTask.milestone = taskInfo.milestone;\n lastTask = newTask;\n tasks.push(newTask);\n};\n\nconst compileTasks = function() {\n const compileTask = function(pos) {\n const task = rawTasks[pos];\n let startTime = '';\n switch (rawTasks[pos].raw.startTime.type) {\n case 'prevTaskEnd': {\n const prevTask = findTaskById(task.prevTaskId);\n task.startTime = prevTask.endTime;\n break;\n }\n case 'getStartDate':\n startTime = getStartDate(undefined, dateFormat, rawTasks[pos].raw.startTime.startData);\n if (startTime) {\n rawTasks[pos].startTime = startTime;\n }\n break;\n }\n\n if (rawTasks[pos].startTime) {\n rawTasks[pos].endTime = getEndDate(\n rawTasks[pos].startTime,\n dateFormat,\n rawTasks[pos].raw.endTime.data,\n inclusiveEndDates\n );\n if (rawTasks[pos].endTime) {\n rawTasks[pos].processed = true;\n rawTasks[pos].manualEndTime = moment(\n rawTasks[pos].raw.endTime.data,\n 'YYYY-MM-DD',\n true\n ).isValid();\n checkTaskDates(rawTasks[pos], dateFormat, excludes);\n }\n }\n\n return rawTasks[pos].processed;\n };\n\n let allProcessed = true;\n for (let i = 0; i < rawTasks.length; i++) {\n compileTask(i);\n\n allProcessed = allProcessed && rawTasks[i].processed;\n }\n return allProcessed;\n};\n\n/**\n * Called by parser when a link is found. Adds the URL to the vertex data.\n * @param ids Comma separated list of ids\n * @param linkStr URL to create a link for\n */\nexport const setLink = function(ids, _linkStr) {\n let linkStr = _linkStr;\n if (getConfig().securityLevel !== 'loose') {\n linkStr = sanitizeUrl(_linkStr);\n }\n ids.split(',').forEach(function(id) {\n let rawTask = findTaskById(id);\n if (typeof rawTask !== 'undefined') {\n pushFun(id, () => {\n window.open(linkStr, '_self');\n });\n }\n });\n setClass(ids, 'clickable');\n};\n\n/**\n * Called by parser when a special node is found, e.g. a clickable element.\n * @param ids Comma separated list of ids\n * @param className Class to add\n */\nexport const setClass = function(ids, className) {\n ids.split(',').forEach(function(id) {\n let rawTask = findTaskById(id);\n if (typeof rawTask !== 'undefined') {\n rawTask.classes.push(className);\n }\n });\n};\n\nconst setClickFun = function(id, functionName, functionArgs) {\n if (getConfig().securityLevel !== 'loose') {\n return;\n }\n if (typeof functionName === 'undefined') {\n return;\n }\n\n let argList = [];\n if (typeof functionArgs === 'string') {\n /* Splits functionArgs by ',', ignoring all ',' in double quoted strings */\n argList = functionArgs.split(/,(?=(?:(?:[^\"]*\"){2})*[^\"]*$)/);\n for (let i = 0; i < argList.length; i++) {\n let item = argList[i].trim();\n /* Removes all double quotes at the start and end of an argument */\n /* This preserves all starting and ending whitespace inside */\n if (item.charAt(0) === '\"' && item.charAt(item.length - 1) === '\"') {\n item = item.substr(1, item.length - 2);\n }\n argList[i] = item;\n }\n }\n\n /* if no arguments passed into callback, default to passing in id */\n if (argList.length === 0) {\n argList.push(id);\n }\n\n let rawTask = findTaskById(id);\n if (typeof rawTask !== 'undefined') {\n pushFun(id, () => {\n utils.runFunc(functionName, ...argList);\n });\n }\n};\n\n/**\n * The callbackFunction is executed in a click event bound to the task with the specified id or the task's assigned text\n * @param id The task's id\n * @param callbackFunction A function to be executed when clicked on the task or the task's text\n */\nconst pushFun = function(id, callbackFunction) {\n funs.push(function() {\n // const elem = d3.select(element).select(`[id=\"${id}\"]`)\n const elem = document.querySelector(`[id=\"${id}\"]`);\n if (elem !== null) {\n elem.addEventListener('click', function() {\n callbackFunction();\n });\n }\n });\n funs.push(function() {\n // const elem = d3.select(element).select(`[id=\"${id}-text\"]`)\n const elem = document.querySelector(`[id=\"${id}-text\"]`);\n if (elem !== null) {\n elem.addEventListener('click', function() {\n callbackFunction();\n });\n }\n });\n};\n\n/**\n * Called by parser when a click definition is found. Registers an event handler.\n * @param ids Comma separated list of ids\n * @param functionName Function to be called on click\n * @param functionArgs Function args the function should be called with\n */\nexport const setClickEvent = function(ids, functionName, functionArgs) {\n ids.split(',').forEach(function(id) {\n setClickFun(id, functionName, functionArgs);\n });\n setClass(ids, 'clickable');\n};\n\n/**\n * Binds all functions previously added to fun (specified through click) to the element\n * @param element\n */\nexport const bindFunctions = function(element) {\n funs.forEach(function(fun) {\n fun(element);\n });\n};\n\nexport default {\n clear,\n setDateFormat,\n getDateFormat,\n enableInclusiveEndDates,\n endDatesAreInclusive,\n setAxisFormat,\n getAxisFormat,\n setTodayMarker,\n getTodayMarker,\n setTitle,\n getTitle,\n addSection,\n getSections,\n getTasks,\n addTask,\n findTaskById,\n addTaskOrg,\n setExcludes,\n getExcludes,\n setClickEvent,\n setLink,\n bindFunctions,\n durationToDate\n};\n\nfunction getTaskTags(data, task, tags) {\n let matchFound = true;\n while (matchFound) {\n matchFound = false;\n tags.forEach(function(t) {\n const pattern = '^\\\\s*' + t + '\\\\s*$';\n const regex = new RegExp(pattern);\n if (data[0].match(regex)) {\n task[t] = true;\n data.shift(1);\n matchFound = true;\n }\n });\n }\n}\n","import {\n select,\n scaleTime,\n min,\n max,\n scaleLinear,\n interpolateHcl,\n axisBottom,\n timeFormat\n} from 'd3';\nimport { parser } from './parser/gantt';\nimport common from '../common/common';\nimport ganttDb from './ganttDb';\n\nparser.yy = ganttDb;\n\nconst conf = {\n titleTopMargin: 25,\n barHeight: 20,\n barGap: 4,\n topPadding: 50,\n rightPadding: 75,\n leftPadding: 75,\n gridLineStartPadding: 35,\n fontSize: 11,\n fontFamily: '\"Open-Sans\", \"sans-serif\"'\n};\nexport const setConf = function(cnf) {\n const keys = Object.keys(cnf);\n\n keys.forEach(function(key) {\n conf[key] = cnf[key];\n });\n};\nlet w;\nexport const draw = function(text, id) {\n parser.yy.clear();\n parser.parse(text);\n\n const elem = document.getElementById(id);\n w = elem.parentElement.offsetWidth;\n\n if (typeof w === 'undefined') {\n w = 1200;\n }\n\n if (typeof conf.useWidth !== 'undefined') {\n w = conf.useWidth;\n }\n\n const taskArray = parser.yy.getTasks();\n\n // Set height based on number of tasks\n const h = taskArray.length * (conf.barHeight + conf.barGap) + 2 * conf.topPadding;\n\n elem.setAttribute('height', '100%');\n // Set viewBox\n elem.setAttribute('viewBox', '0 0 ' + w + ' ' + h);\n const svg = select(`[id=\"${id}\"]`);\n\n // Set timescale\n const timeScale = scaleTime()\n .domain([\n min(taskArray, function(d) {\n return d.startTime;\n }),\n max(taskArray, function(d) {\n return d.endTime;\n })\n ])\n .rangeRound([0, w - conf.leftPadding - conf.rightPadding]);\n\n let categories = [];\n\n for (let i = 0; i < taskArray.length; i++) {\n categories.push(taskArray[i].type);\n }\n\n const catsUnfiltered = categories; // for vert labels\n\n categories = checkUnique(categories);\n\n function taskCompare(a, b) {\n const taskA = a.startTime;\n const taskB = b.startTime;\n let result = 0;\n if (taskA > taskB) {\n result = 1;\n } else if (taskA < taskB) {\n result = -1;\n }\n return result;\n }\n\n // Sort the task array using the above taskCompare() so that\n // tasks are created based on their order of startTime\n taskArray.sort(taskCompare);\n\n makeGant(taskArray, w, h);\n if (typeof conf.useWidth !== 'undefined') {\n elem.setAttribute('width', w);\n }\n\n svg\n .append('text')\n .text(parser.yy.getTitle())\n .attr('x', w / 2)\n .attr('y', conf.titleTopMargin)\n .attr('class', 'titleText');\n\n function makeGant(tasks, pageWidth, pageHeight) {\n const barHeight = conf.barHeight;\n const gap = barHeight + conf.barGap;\n const topPadding = conf.topPadding;\n const leftPadding = conf.leftPadding;\n\n const colorScale = scaleLinear()\n .domain([0, categories.length])\n .range(['#00B9FA', '#F95002'])\n .interpolate(interpolateHcl);\n\n makeGrid(leftPadding, topPadding, pageWidth, pageHeight);\n drawRects(tasks, gap, topPadding, leftPadding, barHeight, colorScale, pageWidth, pageHeight);\n vertLabels(gap, topPadding, leftPadding, barHeight, colorScale);\n drawToday(leftPadding, topPadding, pageWidth, pageHeight);\n }\n\n function drawRects(theArray, theGap, theTopPad, theSidePad, theBarHeight, theColorScale, w) {\n // Draw background rects covering the entire width of the graph, these form the section rows.\n svg\n .append('g')\n .selectAll('rect')\n .data(theArray)\n .enter()\n .append('rect')\n .attr('x', 0)\n .attr('y', function(d, i) {\n // Ignore the incoming i value and use our order instead\n i = d.order;\n return i * theGap + theTopPad - 2;\n })\n .attr('width', function() {\n return w - conf.rightPadding / 2;\n })\n .attr('height', theGap)\n .attr('class', function(d) {\n for (let i = 0; i < categories.length; i++) {\n if (d.type === categories[i]) {\n return 'section section' + (i % conf.numberSectionStyles);\n }\n }\n return 'section section0';\n });\n\n // Draw the rects representing the tasks\n const rectangles = svg\n .append('g')\n .selectAll('rect')\n .data(theArray)\n .enter();\n\n rectangles\n .append('rect')\n .attr('id', function(d) {\n return d.id;\n })\n .attr('rx', 3)\n .attr('ry', 3)\n .attr('x', function(d) {\n if (d.milestone) {\n return (\n timeScale(d.startTime) +\n theSidePad +\n 0.5 * (timeScale(d.endTime) - timeScale(d.startTime)) -\n 0.5 * theBarHeight\n );\n }\n return timeScale(d.startTime) + theSidePad;\n })\n .attr('y', function(d, i) {\n // Ignore the incoming i value and use our order instead\n i = d.order;\n return i * theGap + theTopPad;\n })\n .attr('width', function(d) {\n if (d.milestone) {\n return theBarHeight;\n }\n return timeScale(d.renderEndTime || d.endTime) - timeScale(d.startTime);\n })\n .attr('height', theBarHeight)\n .attr('transform-origin', function(d, i) {\n return (\n (\n timeScale(d.startTime) +\n theSidePad +\n 0.5 * (timeScale(d.endTime) - timeScale(d.startTime))\n ).toString() +\n 'px ' +\n (i * theGap + theTopPad + 0.5 * theBarHeight).toString() +\n 'px'\n );\n })\n .attr('class', function(d) {\n const res = 'task';\n\n let classStr = '';\n if (d.classes.length > 0) {\n classStr = d.classes.join(' ');\n }\n\n let secNum = 0;\n for (let i = 0; i < categories.length; i++) {\n if (d.type === categories[i]) {\n secNum = i % conf.numberSectionStyles;\n }\n }\n\n let taskClass = '';\n if (d.active) {\n if (d.crit) {\n taskClass += ' activeCrit';\n } else {\n taskClass = ' active';\n }\n } else if (d.done) {\n if (d.crit) {\n taskClass = ' doneCrit';\n } else {\n taskClass = ' done';\n }\n } else {\n if (d.crit) {\n taskClass += ' crit';\n }\n }\n\n if (taskClass.length === 0) {\n taskClass = ' task';\n }\n\n if (d.milestone) {\n taskClass = ' milestone ' + taskClass;\n }\n\n taskClass += secNum;\n\n taskClass += ' ' + classStr;\n\n return res + taskClass;\n });\n\n // Append task labels\n rectangles\n .append('text')\n .attr('id', function(d) {\n return d.id + '-text';\n })\n .text(function(d) {\n return d.task;\n })\n .attr('font-size', conf.fontSize)\n .attr('x', function(d) {\n let startX = timeScale(d.startTime);\n let endX = timeScale(d.renderEndTime || d.endTime);\n if (d.milestone) {\n startX += 0.5 * (timeScale(d.endTime) - timeScale(d.startTime)) - 0.5 * theBarHeight;\n }\n if (d.milestone) {\n endX = startX + theBarHeight;\n }\n const textWidth = this.getBBox().width;\n\n // Check id text width > width of rectangle\n if (textWidth > endX - startX) {\n if (endX + textWidth + 1.5 * conf.leftPadding > w) {\n return startX + theSidePad - 5;\n } else {\n return endX + theSidePad + 5;\n }\n } else {\n return (endX - startX) / 2 + startX + theSidePad;\n }\n })\n .attr('y', function(d, i) {\n // Ignore the incoming i value and use our order instead\n i = d.order;\n return i * theGap + conf.barHeight / 2 + (conf.fontSize / 2 - 2) + theTopPad;\n })\n .attr('text-height', theBarHeight)\n .attr('class', function(d) {\n const startX = timeScale(d.startTime);\n let endX = timeScale(d.endTime);\n if (d.milestone) {\n endX = startX + theBarHeight;\n }\n const textWidth = this.getBBox().width;\n\n let classStr = '';\n if (d.classes.length > 0) {\n classStr = d.classes.join(' ');\n }\n\n let secNum = 0;\n console.log(conf);\n for (let i = 0; i < categories.length; i++) {\n if (d.type === categories[i]) {\n secNum = i % conf.numberSectionStyles;\n }\n }\n\n let taskType = '';\n if (d.active) {\n if (d.crit) {\n taskType = 'activeCritText' + secNum;\n } else {\n taskType = 'activeText' + secNum;\n }\n }\n\n if (d.done) {\n if (d.crit) {\n taskType = taskType + ' doneCritText' + secNum;\n } else {\n taskType = taskType + ' doneText' + secNum;\n }\n } else {\n if (d.crit) {\n taskType = taskType + ' critText' + secNum;\n }\n }\n\n if (d.milestone) {\n taskType += ' milestoneText';\n }\n\n // Check id text width > width of rectangle\n if (textWidth > endX - startX) {\n if (endX + textWidth + 1.5 * conf.leftPadding > w) {\n return classStr + ' taskTextOutsideLeft taskTextOutside' + secNum + ' ' + taskType;\n } else {\n return (\n classStr +\n ' taskTextOutsideRight taskTextOutside' +\n secNum +\n ' ' +\n taskType +\n ' width-' +\n textWidth\n );\n }\n } else {\n return classStr + ' taskText taskText' + secNum + ' ' + taskType + ' width-' + textWidth;\n }\n });\n }\n\n function makeGrid(theSidePad, theTopPad, w, h) {\n let xAxis = axisBottom(timeScale)\n .tickSize(-h + theTopPad + conf.gridLineStartPadding)\n .tickFormat(timeFormat(parser.yy.getAxisFormat() || conf.axisFormat || '%Y-%m-%d'));\n\n svg\n .append('g')\n .attr('class', 'grid')\n .attr('transform', 'translate(' + theSidePad + ', ' + (h - 50) + ')')\n .call(xAxis)\n .selectAll('text')\n .style('text-anchor', 'middle')\n .attr('fill', '#000')\n .attr('stroke', 'none')\n .attr('font-size', 10)\n .attr('dy', '1em');\n }\n\n function vertLabels(theGap, theTopPad) {\n const numOccurances = [];\n let prevGap = 0;\n\n for (let i = 0; i < categories.length; i++) {\n numOccurances[i] = [categories[i], getCount(categories[i], catsUnfiltered)];\n }\n\n svg\n .append('g') // without doing this, impossible to put grid lines behind text\n .selectAll('text')\n .data(numOccurances)\n .enter()\n .append(function(d) {\n const rows = d[0].split(common.lineBreakRegex);\n const dy = -(rows.length - 1) / 2;\n\n const svgLabel = document.createElementNS('http://www.w3.org/2000/svg', 'text');\n svgLabel.setAttribute('dy', dy + 'em');\n\n for (let j = 0; j < rows.length; j++) {\n const tspan = document.createElementNS('http://www.w3.org/2000/svg', 'tspan');\n tspan.setAttribute('alignment-baseline', 'central');\n tspan.setAttribute('x', '10');\n if (j > 0) tspan.setAttribute('dy', '1em');\n tspan.textContent = rows[j];\n svgLabel.appendChild(tspan);\n }\n return svgLabel;\n })\n .attr('x', 10)\n .attr('y', function(d, i) {\n if (i > 0) {\n for (let j = 0; j < i; j++) {\n prevGap += numOccurances[i - 1][1];\n return (d[1] * theGap) / 2 + prevGap * theGap + theTopPad;\n }\n } else {\n return (d[1] * theGap) / 2 + theTopPad;\n }\n })\n .attr('class', function(d) {\n for (let i = 0; i < categories.length; i++) {\n if (d[0] === categories[i]) {\n return 'sectionTitle sectionTitle' + (i % conf.numberSectionStyles);\n }\n }\n return 'sectionTitle';\n });\n }\n\n function drawToday(theSidePad, theTopPad, w, h) {\n const todayMarker = ganttDb.getTodayMarker();\n if (todayMarker === 'off') {\n return;\n }\n\n const todayG = svg.append('g').attr('class', 'today');\n const today = new Date();\n const todayLine = todayG.append('line');\n\n todayLine\n .attr('x1', timeScale(today) + theSidePad)\n .attr('x2', timeScale(today) + theSidePad)\n .attr('y1', conf.titleTopMargin)\n .attr('y2', h - conf.titleTopMargin)\n .attr('class', 'today');\n\n if (todayMarker !== '') {\n todayLine.attr('style', todayMarker.replace(/,/g, ';'));\n }\n }\n\n // from this stackexchange question: http://stackoverflow.com/questions/1890203/unique-for-arrays-in-javascript\n function checkUnique(arr) {\n const hash = {};\n const result = [];\n for (let i = 0, l = arr.length; i < l; ++i) {\n if (!hash.hasOwnProperty(arr[i])) { // eslint-disable-line\n // it works with objects! in FF, at least\n hash[arr[i]] = true;\n result.push(arr[i]);\n }\n }\n return result;\n }\n\n // from this stackexchange question: http://stackoverflow.com/questions/14227981/count-how-many-strings-in-an-array-have-duplicates-in-the-same-array\n function getCounts(arr) {\n let i = arr.length; // const to loop over\n const obj = {}; // obj to store results\n while (i) {\n obj[arr[--i]] = (obj[arr[i]] || 0) + 1; // count occurrences\n }\n return obj;\n }\n\n // get specific from everything\n function getCount(word, arr) {\n return getCounts(arr)[word] || 0;\n }\n};\n\nexport default {\n setConf,\n draw\n};\n","import { select } from 'd3';\nimport { logger } from '../../logger';\nimport { getConfig } from '../../config';\nimport common from '../common/common';\nimport utils from '../../utils';\n\nconst MERMAID_DOM_ID_PREFIX = 'classid-';\n\nconst config = getConfig();\n\nlet relations = [];\nlet classes = {};\nlet classCounter = 0;\n\nlet funs = [];\n\nconst splitClassNameAndType = function(id) {\n let genericType = '';\n let className = id;\n\n if (id.indexOf('~') > 0) {\n let split = id.split('~');\n className = split[0];\n genericType = split[1];\n }\n\n return { className: className, type: genericType };\n};\n\n/**\n * Function called by parser when a node definition has been found.\n * @param id\n * @public\n */\nexport const addClass = function(id) {\n let classId = splitClassNameAndType(id);\n // Only add class if not exists\n if (typeof classes[classId.className] !== 'undefined') return;\n\n classes[classId.className] = {\n id: classId.className,\n type: classId.type,\n cssClasses: [],\n methods: [],\n members: [],\n annotations: [],\n domId: MERMAID_DOM_ID_PREFIX + classId.className + '-' + classCounter\n };\n classCounter++;\n};\n\n/**\n * Function to lookup domId from id in the graph definition.\n * @param id\n * @public\n */\nexport const lookUpDomId = function(id) {\n const classKeys = Object.keys(classes);\n for (let i = 0; i < classKeys.length; i++) {\n if (classes[classKeys[i]].id === id) {\n return classes[classKeys[i]].domId;\n }\n }\n};\n\nexport const clear = function() {\n relations = [];\n classes = {};\n funs = [];\n funs.push(setupToolTips);\n};\n\nexport const getClass = function(id) {\n return classes[id];\n};\nexport const getClasses = function() {\n return classes;\n};\n\nexport const getRelations = function() {\n return relations;\n};\n\nexport const addRelation = function(relation) {\n logger.debug('Adding relation: ' + JSON.stringify(relation));\n addClass(relation.id1);\n addClass(relation.id2);\n\n relation.id1 = splitClassNameAndType(relation.id1).className;\n relation.id2 = splitClassNameAndType(relation.id2).className;\n\n relations.push(relation);\n};\n\n/**\n * Adds an annotation to the specified class\n * Annotations mark special properties of the given type (like 'interface' or 'service')\n * @param className The class name\n * @param annotation The name of the annotation without any brackets\n * @public\n */\nexport const addAnnotation = function(className, annotation) {\n const validatedClassName = splitClassNameAndType(className).className;\n classes[validatedClassName].annotations.push(annotation);\n};\n\n/**\n * Adds a member to the specified class\n * @param className The class name\n * @param member The full name of the member.\n * If the member is enclosed in <
');\n text = text.replace(/\\n/g, '
');\n const lines = text.split(common.lineBreakRegex);\n\n let tHeight = 1.25 * getConfig().state.noteMargin;\n for (const line of lines) {\n const txt = line.trim();\n\n if (txt.length > 0) {\n const span = textElem.append('tspan');\n span.text(txt);\n if (tHeight === 0) {\n const textBounds = span.node().getBBox();\n tHeight += textBounds.height;\n }\n // console.warn('textBounds', textBounds);\n textHeight += tHeight;\n span.attr('x', x + getConfig().state.noteMargin);\n span.attr('y', y + textHeight + 1.25 * getConfig().state.noteMargin);\n }\n }\n return { textWidth: textElem.node().getBBox().width, textHeight };\n};\n\n/**\n * Draws a note to the diagram\n * @param text - The text of the given note.\n * @param g - The element the note is attached to.\n */\n\nexport const drawNote = (text, g) => {\n g.attr('class', 'state-note');\n const note = g\n .append('rect')\n .attr('x', 0)\n .attr('y', getConfig().state.padding);\n const rectElem = g.append('g');\n\n const { textWidth, textHeight } = _drawLongText(text, 0, 0, rectElem);\n note.attr('height', textHeight + 2 * getConfig().state.noteMargin);\n note.attr('width', textWidth + getConfig().state.noteMargin * 2);\n\n return note;\n};\n\n/**\n * Starting point for drawing a state. The function finds out the specifics\n * about the state and renders with approprtiate function.\n * @param {*} elem\n * @param {*} stateDef\n */\n\nexport const drawState = function(elem, stateDef) {\n const id = stateDef.id;\n const stateInfo = {\n id: id,\n label: stateDef.id,\n width: 0,\n height: 0\n };\n\n const g = elem\n .append('g')\n .attr('id', id)\n .attr('class', 'stateGroup');\n\n if (stateDef.type === 'start') drawStartState(g);\n if (stateDef.type === 'end') drawEndState(g);\n if (stateDef.type === 'fork' || stateDef.type === 'join') drawForkJoinState(g, stateDef);\n if (stateDef.type === 'note') drawNote(stateDef.note.text, g);\n if (stateDef.type === 'divider') drawDivider(g);\n if (stateDef.type === 'default' && stateDef.descriptions.length === 0)\n drawSimpleState(g, stateDef);\n if (stateDef.type === 'default' && stateDef.descriptions.length > 0) drawDescrState(g, stateDef);\n\n const stateBox = g.node().getBBox();\n stateInfo.width = stateBox.width + 2 * getConfig().state.padding;\n stateInfo.height = stateBox.height + 2 * getConfig().state.padding;\n\n idCache.set(id, stateInfo);\n // stateCnt++;\n return stateInfo;\n};\n\nlet edgeCount = 0;\nexport const drawEdge = function(elem, path, relation) {\n const getRelationType = function(type) {\n switch (type) {\n case stateDb.relationType.AGGREGATION:\n return 'aggregation';\n case stateDb.relationType.EXTENSION:\n return 'extension';\n case stateDb.relationType.COMPOSITION:\n return 'composition';\n case stateDb.relationType.DEPENDENCY:\n return 'dependency';\n }\n };\n\n path.points = path.points.filter(p => !Number.isNaN(p.y));\n\n // The data for our line\n const lineData = path.points;\n\n // This is the accessor function we talked about above\n const lineFunction = line()\n .x(function(d) {\n return d.x;\n })\n .y(function(d) {\n return d.y;\n })\n .curve(curveBasis);\n\n const svgPath = elem\n .append('path')\n .attr('d', lineFunction(lineData))\n .attr('id', 'edge' + edgeCount)\n .attr('class', 'transition');\n let url = '';\n if (getConfig().state.arrowMarkerAbsolute) {\n url =\n window.location.protocol +\n '//' +\n window.location.host +\n window.location.pathname +\n window.location.search;\n url = url.replace(/\\(/g, '\\\\(');\n url = url.replace(/\\)/g, '\\\\)');\n }\n\n svgPath.attr(\n 'marker-end',\n 'url(' + url + '#' + getRelationType(stateDb.relationType.DEPENDENCY) + 'End' + ')'\n );\n\n if (typeof relation.title !== 'undefined') {\n const label = elem.append('g').attr('class', 'stateLabel');\n\n const { x, y } = utils.calcLabelPosition(path.points);\n\n const rows = common.getRows(relation.title);\n\n // console.warn(rows);\n\n let titleHeight = 0;\n const titleRows = [];\n let maxWidth = 0;\n let minX = 0;\n\n for (let i = 0; i <= rows.length; i++) {\n const title = label\n .append('text')\n .attr('text-anchor', 'middle')\n .text(rows[i])\n .attr('x', x)\n .attr('y', y + titleHeight);\n\n const boundstmp = title.node().getBBox();\n maxWidth = Math.max(maxWidth, boundstmp.width);\n minX = Math.min(minX, boundstmp.x);\n\n logger.info(boundstmp.x, x, y + titleHeight);\n\n if (titleHeight === 0) {\n const titleBox = title.node().getBBox();\n titleHeight = titleBox.height;\n logger.info('Title height', titleHeight, y);\n }\n titleRows.push(title);\n }\n\n let boxHeight = titleHeight * rows.length;\n if (rows.length > 1) {\n const heightAdj = (rows.length - 1) * titleHeight * 0.5;\n\n titleRows.forEach((title, i) => title.attr('y', y + i * titleHeight - heightAdj));\n boxHeight = titleHeight * rows.length;\n }\n\n const bounds = label.node().getBBox();\n\n label\n .insert('rect', ':first-child')\n .attr('class', 'box')\n .attr('x', x - maxWidth / 2 - getConfig().state.padding / 2)\n .attr('y', y - boxHeight / 2 - getConfig().state.padding / 2 - 3.5)\n .attr('width', maxWidth + getConfig().state.padding)\n .attr('height', boxHeight + getConfig().state.padding);\n\n logger.info(bounds);\n\n //label.attr('transform', '0 -' + (bounds.y / 2));\n\n // Debug points\n // path.points.forEach(point => {\n // g.append('circle')\n // .style('stroke', 'red')\n // .style('fill', 'red')\n // .attr('r', 1)\n // .attr('cx', point.x)\n // .attr('cy', point.y);\n // });\n // g.append('circle')\n // .style('stroke', 'blue')\n // .style('fill', 'blue')\n // .attr('r', 1)\n // .attr('cx', x)\n // .attr('cy', y);\n }\n\n edgeCount++;\n};\n","import graphlib from 'graphlib';\nimport { select } from 'd3';\nimport stateDb from './stateDb';\nimport state from './parser/stateDiagram';\nimport { getConfig } from '../../config';\n\nimport { render } from '../../dagre-wrapper/index.js';\nimport { logger } from '../../logger';\n\nconst conf = {};\nexport const setConf = function(cnf) {\n const keys = Object.keys(cnf);\n for (let i = 0; i < keys.length; i++) {\n conf[keys[i]] = cnf[keys[i]];\n }\n};\n\nlet nodeDb = {};\n\n/**\n * Returns the all the styles from classDef statements in the graph definition.\n * @returns {object} classDef styles\n */\nexport const getClasses = function(text) {\n logger.trace('Extracting classes');\n stateDb.clear();\n const parser = state.parser;\n parser.yy = stateDb;\n\n // Parse the graph definition\n parser.parse(text);\n return stateDb.getClasses();\n};\n\nconst setupNode = (g, parent, node, altFlag) => {\n // Add the node\n if (node.id !== 'root') {\n let shape = 'rect';\n if (node.start === true) {\n shape = 'start';\n }\n if (node.start === false) {\n shape = 'end';\n }\n if (node.type !== 'default') {\n shape = node.type;\n }\n\n if (!nodeDb[node.id]) {\n nodeDb[node.id] = {\n id: node.id,\n shape,\n description: node.id,\n classes: 'statediagram-state'\n };\n }\n\n // Build of the array of description strings accordinging\n if (node.description) {\n if (Array.isArray(nodeDb[node.id].description)) {\n // There already is an array of strings,add to it\n nodeDb[node.id].shape = 'rectWithTitle';\n nodeDb[node.id].description.push(node.description);\n } else {\n if (nodeDb[node.id].description.length > 0) {\n // if there is a description already transformit to an array\n nodeDb[node.id].shape = 'rectWithTitle';\n if (nodeDb[node.id].description === node.id) {\n // If the previous description was the is, remove it\n nodeDb[node.id].description = [node.description];\n } else {\n nodeDb[node.id].description = [nodeDb[node.id].description, node.description];\n }\n } else {\n nodeDb[node.id].shape = 'rect';\n nodeDb[node.id].description = node.description;\n }\n }\n }\n\n // Save data for description and group so that for instance a statement without description overwrites\n // one with description\n\n // group\n if (!nodeDb[node.id].type && node.doc) {\n logger.info('Setting cluser for ', node.id);\n nodeDb[node.id].type = 'group';\n nodeDb[node.id].shape = node.type === 'divider' ? 'divider' : 'roundedWithTitle';\n nodeDb[node.id].classes =\n nodeDb[node.id].classes +\n ' ' +\n (altFlag ? 'statediagram-cluster statediagram-cluster-alt' : 'statediagram-cluster');\n }\n\n const nodeData = {\n labelStyle: '',\n shape: nodeDb[node.id].shape,\n labelText: nodeDb[node.id].description,\n classes: nodeDb[node.id].classes, //classStr,\n style: '', //styles.style,\n id: node.id,\n type: nodeDb[node.id].type,\n padding: 15 //getConfig().flowchart.padding\n };\n\n if (node.note) {\n // Todo: set random id\n const noteData = {\n labelStyle: '',\n shape: 'note',\n labelText: node.note.text,\n classes: 'statediagram-note', //classStr,\n style: '', //styles.style,\n id: node.id + '----note',\n type: nodeDb[node.id].type,\n padding: 15 //getConfig().flowchart.padding\n };\n const groupData = {\n labelStyle: '',\n shape: 'noteGroup',\n labelText: node.note.text,\n classes: nodeDb[node.id].classes, //classStr,\n style: '', //styles.style,\n id: node.id + '----parent',\n type: 'group',\n padding: 0 //getConfig().flowchart.padding\n };\n g.setNode(node.id + '----parent', groupData);\n\n g.setNode(noteData.id, noteData);\n g.setNode(node.id, nodeData);\n\n g.setParent(node.id, node.id + '----parent');\n g.setParent(noteData.id, node.id + '----parent');\n\n let from = node.id;\n let to = noteData.id;\n\n if (node.note.position === 'left of') {\n from = noteData.id;\n to = node.id;\n }\n g.setEdge(from, to, {\n arrowhead: 'none',\n arrowType: '',\n style: 'fill:none',\n labelStyle: '',\n classes: 'transition note-edge',\n arrowheadStyle: 'fill: #333',\n labelpos: 'c',\n labelType: 'text',\n thickness: 'normal'\n });\n } else {\n g.setNode(node.id, nodeData);\n }\n }\n\n if (parent) {\n if (parent.id !== 'root') {\n logger.info('Setting node ', node.id, ' to be child of its parent ', parent.id);\n g.setParent(node.id, parent.id);\n }\n }\n if (node.doc) {\n logger.info('Adding nodes children ');\n setupDoc(g, node, node.doc, !altFlag);\n }\n};\nlet cnt = 0;\nconst setupDoc = (g, parent, doc, altFlag) => {\n logger.trace('items', doc);\n doc.forEach(item => {\n if (item.stmt === 'state' || item.stmt === 'default') {\n setupNode(g, parent, item, altFlag);\n } else if (item.stmt === 'relation') {\n setupNode(g, parent, item.state1, altFlag);\n setupNode(g, parent, item.state2, altFlag);\n const edgeData = {\n id: 'edge' + cnt,\n arrowhead: 'normal',\n arrowTypeEnd: 'arrow_barb',\n style: 'fill:none',\n labelStyle: '',\n label: item.description,\n arrowheadStyle: 'fill: #333',\n labelpos: 'c',\n labelType: 'text',\n thickness: 'normal',\n classes: 'transition'\n };\n let startId = item.state1.id;\n let endId = item.state2.id;\n\n g.setEdge(startId, endId, edgeData, cnt);\n cnt++;\n }\n });\n};\n\n/**\n * Draws a flowchart in the tag with id: id based on the graph definition in text.\n * @param text\n * @param id\n */\nexport const draw = function(text, id) {\n logger.info('Drawing state diagram (v2)', id);\n stateDb.clear();\n nodeDb = {};\n const parser = state.parser;\n parser.yy = stateDb;\n\n // Parse the graph definition\n try {\n parser.parse(text);\n } catch (err) {\n logger.debug('Parsing failed');\n }\n\n // Fetch the default direction, use TD if none was found\n let dir = stateDb.getDirection();\n if (typeof dir === 'undefined') {\n dir = 'LR';\n }\n\n const conf = getConfig().state;\n const nodeSpacing = conf.nodeSpacing || 50;\n const rankSpacing = conf.rankSpacing || 50;\n\n // Create the input mermaid.graph\n const g = new graphlib.Graph({\n multigraph: true,\n compound: true\n })\n .setGraph({\n rankdir: 'TB',\n nodesep: nodeSpacing,\n ranksep: rankSpacing,\n marginx: 8,\n marginy: 8\n })\n .setDefaultEdgeLabel(function() {\n return {};\n });\n\n logger.info(stateDb.getRootDocV2());\n stateDb.extract(stateDb.getRootDocV2());\n logger.info(stateDb.getRootDocV2());\n setupNode(g, undefined, stateDb.getRootDocV2(), true);\n\n // Set up an SVG group so that we can translate the final graph.\n const svg = select(`[id=\"${id}\"]`);\n\n // Run the renderer. This is what draws the final graph.\n const element = select('#' + id + ' g');\n render(element, g, ['barb'], 'statediagram', id);\n\n const padding = 8;\n // const svgBounds = svg.node().getBBox();\n // const width = svgBounds.width + padding * 2;\n // const height = svgBounds.height + padding * 2;\n // logger.debug(\n // `new ViewBox 0 0 ${width} ${height}`,\n // `translate(${padding + g._label.marginx}, ${padding + g._label.marginy})`\n // );\n\n // if (conf.useMaxWidth) {\n // svg.attr('width', '100%');\n // svg.attr('style', `max-width: ${width}px;`);\n // } else {\n // svg.attr('height', height);\n // svg.attr('width', width);\n // }\n\n // svg.attr('viewBox', `0 0 ${width} ${height}`);\n // svg\n // .select('g')\n // .attr('transform', `translate(${padding - g._label.marginx}, ${padding - svgBounds.y})`);\n\n const bounds = svg.node().getBBox();\n\n const width = bounds.width + padding * 2;\n const height = bounds.height + padding * 2;\n\n // diagram.attr('height', '100%');\n // diagram.attr('style', `width: ${bounds.width * 3 + conf.padding * 2};`);\n // diagram.attr('height', height);\n\n // Zoom in a bit\n svg.attr('width', width * 1.75);\n svg.attr('class', 'statediagram');\n // diagram.attr('height', bounds.height * 3 + conf.padding * 2);\n // svg.attr(\n // 'viewBox',\n // `${bounds.x - conf.padding} ${bounds.y - conf.padding} ` + width + ' ' + height\n // );\n\n const svgBounds = svg.node().getBBox();\n\n if (conf.useMaxWidth) {\n svg.attr('width', '100%');\n svg.attr('style', `max-width: ${width}px;`);\n } else {\n svg.attr('height', height);\n svg.attr('width', width);\n }\n\n // Ensure the viewBox includes the whole svgBounds area with extra space for padding\n const vBox = `${svgBounds.x - padding} ${svgBounds.y - padding} ${width} ${height}`;\n logger.debug(`viewBox ${vBox}`);\n svg.attr('viewBox', vBox);\n\n // Add label rects for non html labels\n if (!conf.htmlLabels) {\n const labels = document.querySelectorAll('[id=\"' + id + '\"] .edgeLabel .label');\n for (let k = 0; k < labels.length; k++) {\n const label = labels[k];\n\n // Get dimensions of label\n const dim = label.getBBox();\n\n const rect = document.createElementNS('http://www.w3.org/2000/svg', 'rect');\n rect.setAttribute('rx', 0);\n rect.setAttribute('ry', 0);\n rect.setAttribute('width', dim.width);\n rect.setAttribute('height', dim.height);\n rect.setAttribute('style', 'fill:#e8e8e8;');\n\n label.insertBefore(rect, label.firstChild);\n }\n }\n};\n\nexport default {\n setConf,\n getClasses,\n draw\n};\n","import { logger } from '../../logger';\nimport { random } from '../../utils';\nlet commits = {};\nlet head = null;\nlet branches = { master: head };\nlet curBranch = 'master';\nlet direction = 'LR';\nlet seq = 0;\n\nfunction getId() {\n return random({ length: 7 });\n}\n\nfunction isfastforwardable(currentCommit, otherCommit) {\n logger.debug('Entering isfastforwardable:', currentCommit.id, otherCommit.id);\n while (currentCommit.seq <= otherCommit.seq && currentCommit !== otherCommit) {\n // only if other branch has more commits\n if (otherCommit.parent == null) break;\n if (Array.isArray(otherCommit.parent)) {\n logger.debug('In merge commit:', otherCommit.parent);\n return (\n isfastforwardable(currentCommit, commits[otherCommit.parent[0]]) ||\n isfastforwardable(currentCommit, commits[otherCommit.parent[1]])\n );\n } else {\n otherCommit = commits[otherCommit.parent];\n }\n }\n logger.debug(currentCommit.id, otherCommit.id);\n return currentCommit.id === otherCommit.id;\n}\n\nfunction isReachableFrom(currentCommit, otherCommit) {\n const currentSeq = currentCommit.seq;\n const otherSeq = otherCommit.seq;\n if (currentSeq > otherSeq) return isfastforwardable(otherCommit, currentCommit);\n return false;\n}\n\nfunction uniqBy(list, fn) {\n const recordMap = Object.create(null);\n return list.reduce((out, item) => {\n const key = fn(item);\n if (!recordMap[key]) {\n recordMap[key] = true;\n out.push(item);\n }\n return out;\n }, []);\n}\n\nexport const setDirection = function(dir) {\n direction = dir;\n};\nlet options = {};\nexport const setOptions = function(rawOptString) {\n logger.debug('options str', rawOptString);\n rawOptString = rawOptString && rawOptString.trim();\n rawOptString = rawOptString || '{}';\n try {\n options = JSON.parse(rawOptString);\n } catch (e) {\n logger.error('error while parsing gitGraph options', e.message);\n }\n};\n\nexport const getOptions = function() {\n return options;\n};\n\nexport const commit = function(msg) {\n const commit = {\n id: getId(),\n message: msg,\n seq: seq++,\n parent: head == null ? null : head.id\n };\n head = commit;\n commits[commit.id] = commit;\n branches[curBranch] = commit.id;\n logger.debug('in pushCommit ' + commit.id);\n};\n\nexport const branch = function(name) {\n branches[name] = head != null ? head.id : null;\n logger.debug('in createBranch');\n};\n\nexport const merge = function(otherBranch) {\n const currentCommit = commits[branches[curBranch]];\n const otherCommit = commits[branches[otherBranch]];\n if (isReachableFrom(currentCommit, otherCommit)) {\n logger.debug('Already merged');\n return;\n }\n if (isfastforwardable(currentCommit, otherCommit)) {\n branches[curBranch] = branches[otherBranch];\n head = commits[branches[curBranch]];\n } else {\n // create merge commit\n const commit = {\n id: getId(),\n message: 'merged branch ' + otherBranch + ' into ' + curBranch,\n seq: seq++,\n parent: [head == null ? null : head.id, branches[otherBranch]]\n };\n head = commit;\n commits[commit.id] = commit;\n branches[curBranch] = commit.id;\n }\n logger.debug(branches);\n logger.debug('in mergeBranch');\n};\n\nexport const checkout = function(branch) {\n logger.debug('in checkout');\n curBranch = branch;\n const id = branches[curBranch];\n head = commits[id];\n};\n\nexport const reset = function(commitRef) {\n logger.debug('in reset', commitRef);\n const ref = commitRef.split(':')[0];\n let parentCount = parseInt(commitRef.split(':')[1]);\n let commit = ref === 'HEAD' ? head : commits[branches[ref]];\n logger.debug(commit, parentCount);\n while (parentCount > 0) {\n commit = commits[commit.parent];\n parentCount--;\n if (!commit) {\n const err = 'Critical error - unique parent commit not found during reset';\n logger.error(err);\n throw err;\n }\n }\n head = commit;\n branches[curBranch] = commit.id;\n};\n\nfunction upsert(arr, key, newval) {\n const index = arr.indexOf(key);\n if (index === -1) {\n arr.push(newval);\n } else {\n arr.splice(index, 1, newval);\n }\n}\n\nfunction prettyPrintCommitHistory(commitArr) {\n const commit = commitArr.reduce((out, commit) => {\n if (out.seq > commit.seq) return out;\n return commit;\n }, commitArr[0]);\n let line = '';\n commitArr.forEach(function(c) {\n if (c === commit) {\n line += '\\t*';\n } else {\n line += '\\t|';\n }\n });\n const label = [line, commit.id, commit.seq];\n for (let branch in branches) {\n if (branches[branch] === commit.id) label.push(branch);\n }\n logger.debug(label.join(' '));\n if (Array.isArray(commit.parent)) {\n const newCommit = commits[commit.parent[0]];\n upsert(commitArr, commit, newCommit);\n commitArr.push(commits[commit.parent[1]]);\n } else if (commit.parent == null) {\n return;\n } else {\n const nextCommit = commits[commit.parent];\n upsert(commitArr, commit, nextCommit);\n }\n commitArr = uniqBy(commitArr, c => c.id);\n prettyPrintCommitHistory(commitArr);\n}\n\nexport const prettyPrint = function() {\n logger.debug(commits);\n const node = getCommitsArray()[0];\n prettyPrintCommitHistory([node]);\n};\n\nexport const clear = function() {\n commits = {};\n head = null;\n branches = { master: head };\n curBranch = 'master';\n seq = 0;\n};\n\nexport const getBranchesAsObjArray = function() {\n const branchArr = [];\n for (let branch in branches) {\n branchArr.push({ name: branch, commit: commits[branches[branch]] });\n }\n return branchArr;\n};\n\nexport const getBranches = function() {\n return branches;\n};\nexport const getCommits = function() {\n return commits;\n};\nexport const getCommitsArray = function() {\n const commitArr = Object.keys(commits).map(function(key) {\n return commits[key];\n });\n commitArr.forEach(function(o) {\n logger.debug(o.id);\n });\n commitArr.sort((a, b) => b.seq - a.seq);\n return commitArr;\n};\nexport const getCurrentBranch = function() {\n return curBranch;\n};\nexport const getDirection = function() {\n return direction;\n};\nexport const getHead = function() {\n return head;\n};\n\nexport default {\n setDirection,\n setOptions,\n getOptions,\n commit,\n branch,\n merge,\n checkout,\n reset,\n prettyPrint,\n clear,\n getBranchesAsObjArray,\n getBranches,\n getCommits,\n getCommitsArray,\n getCurrentBranch,\n getDirection,\n getHead\n};\n","import { curveBasis, line, select } from 'd3';\n\nimport db from './gitGraphAst';\nimport gitGraphParser from './parser/gitGraph';\nimport { logger } from '../../logger';\nimport { interpolateToCurve } from '../../utils';\n\nlet allCommitsDict = {};\nlet branchNum;\nlet config = {\n nodeSpacing: 150,\n nodeFillColor: 'yellow',\n nodeStrokeWidth: 2,\n nodeStrokeColor: 'grey',\n lineStrokeWidth: 4,\n branchOffset: 50,\n lineColor: 'grey',\n leftMargin: 50,\n branchColors: ['#442f74', '#983351', '#609732', '#AA9A39'],\n nodeRadius: 10,\n nodeLabel: {\n width: 75,\n height: 100,\n x: -25,\n y: 0\n }\n};\nlet apiConfig = {};\nexport const setConf = function(c) {\n apiConfig = c;\n};\n\nfunction svgCreateDefs(svg) {\n svg\n .append('defs')\n .append('g')\n .attr('id', 'def-commit')\n .append('circle')\n .attr('r', config.nodeRadius)\n .attr('cx', 0)\n .attr('cy', 0);\n svg\n .select('#def-commit')\n .append('foreignObject')\n .attr('width', config.nodeLabel.width)\n .attr('height', config.nodeLabel.height)\n .attr('x', config.nodeLabel.x)\n .attr('y', config.nodeLabel.y)\n .attr('class', 'node-label')\n .attr('requiredFeatures', 'http://www.w3.org/TR/SVG11/feature#Extensibility')\n .append('p')\n .html('');\n}\n\nfunction svgDrawLine(svg, points, colorIdx, interpolate) {\n const curve = interpolateToCurve(interpolate, curveBasis);\n const color = config.branchColors[colorIdx % config.branchColors.length];\n const lineGen = line()\n .x(function(d) {\n return Math.round(d.x);\n })\n .y(function(d) {\n return Math.round(d.y);\n })\n .curve(curve);\n\n svg\n .append('svg:path')\n .attr('d', lineGen(points))\n .style('stroke', color)\n .style('stroke-width', config.lineStrokeWidth)\n .style('fill', 'none');\n}\n\n// Pass in the element and its pre-transform coords\nfunction getElementCoords(element, coords) {\n coords = coords || element.node().getBBox();\n const ctm = element.node().getCTM();\n const xn = ctm.e + coords.x * ctm.a;\n const yn = ctm.f + coords.y * ctm.d;\n return {\n left: xn,\n top: yn,\n width: coords.width,\n height: coords.height\n };\n}\n\nfunction svgDrawLineForCommits(svg, fromId, toId, direction, color) {\n logger.debug('svgDrawLineForCommits: ', fromId, toId);\n const fromBbox = getElementCoords(svg.select('#node-' + fromId + ' circle'));\n const toBbox = getElementCoords(svg.select('#node-' + toId + ' circle'));\n switch (direction) {\n case 'LR':\n // (toBbox)\n // +--------\n // + (fromBbox)\n if (fromBbox.left - toBbox.left > config.nodeSpacing) {\n const lineStart = {\n x: fromBbox.left - config.nodeSpacing,\n y: toBbox.top + toBbox.height / 2\n };\n const lineEnd = { x: toBbox.left + toBbox.width, y: toBbox.top + toBbox.height / 2 };\n svgDrawLine(svg, [lineStart, lineEnd], color, 'linear');\n svgDrawLine(\n svg,\n [\n { x: fromBbox.left, y: fromBbox.top + fromBbox.height / 2 },\n { x: fromBbox.left - config.nodeSpacing / 2, y: fromBbox.top + fromBbox.height / 2 },\n { x: fromBbox.left - config.nodeSpacing / 2, y: lineStart.y },\n lineStart\n ],\n color\n );\n } else {\n svgDrawLine(\n svg,\n [\n {\n x: fromBbox.left,\n y: fromBbox.top + fromBbox.height / 2\n },\n {\n x: fromBbox.left - config.nodeSpacing / 2,\n y: fromBbox.top + fromBbox.height / 2\n },\n {\n x: fromBbox.left - config.nodeSpacing / 2,\n y: toBbox.top + toBbox.height / 2\n },\n {\n x: toBbox.left + toBbox.width,\n y: toBbox.top + toBbox.height / 2\n }\n ],\n color\n );\n }\n break;\n case 'BT':\n // + (fromBbox)\n // |\n // |\n // + (toBbox)\n if (toBbox.top - fromBbox.top > config.nodeSpacing) {\n const lineStart = {\n x: toBbox.left + toBbox.width / 2,\n y: fromBbox.top + fromBbox.height + config.nodeSpacing\n };\n const lineEnd = { x: toBbox.left + toBbox.width / 2, y: toBbox.top };\n svgDrawLine(svg, [lineStart, lineEnd], color, 'linear');\n svgDrawLine(\n svg,\n [\n { x: fromBbox.left + fromBbox.width / 2, y: fromBbox.top + fromBbox.height },\n {\n x: fromBbox.left + fromBbox.width / 2,\n y: fromBbox.top + fromBbox.height + config.nodeSpacing / 2\n },\n { x: toBbox.left + toBbox.width / 2, y: lineStart.y - config.nodeSpacing / 2 },\n lineStart\n ],\n color\n );\n } else {\n svgDrawLine(\n svg,\n [\n {\n x: fromBbox.left + fromBbox.width / 2,\n y: fromBbox.top + fromBbox.height\n },\n {\n x: fromBbox.left + fromBbox.width / 2,\n y: fromBbox.top + config.nodeSpacing / 2\n },\n {\n x: toBbox.left + toBbox.width / 2,\n y: toBbox.top - config.nodeSpacing / 2\n },\n {\n x: toBbox.left + toBbox.width / 2,\n y: toBbox.top\n }\n ],\n color\n );\n }\n break;\n }\n}\n\nfunction cloneNode(svg, selector) {\n return svg\n .select(selector)\n .node()\n .cloneNode(true);\n}\n\nfunction renderCommitHistory(svg, commitid, branches, direction) {\n let commit;\n const numCommits = Object.keys(allCommitsDict).length;\n if (typeof commitid === 'string') {\n do {\n commit = allCommitsDict[commitid];\n logger.debug('in renderCommitHistory', commit.id, commit.seq);\n if (svg.select('#node-' + commitid).size() > 0) {\n return;\n }\n svg\n .append(function() {\n return cloneNode(svg, '#def-commit');\n })\n .attr('class', 'commit')\n .attr('id', function() {\n return 'node-' + commit.id;\n })\n .attr('transform', function() {\n switch (direction) {\n case 'LR':\n return (\n 'translate(' +\n (commit.seq * config.nodeSpacing + config.leftMargin) +\n ', ' +\n branchNum * config.branchOffset +\n ')'\n );\n case 'BT':\n return (\n 'translate(' +\n (branchNum * config.branchOffset + config.leftMargin) +\n ', ' +\n (numCommits - commit.seq) * config.nodeSpacing +\n ')'\n );\n }\n })\n .attr('fill', config.nodeFillColor)\n .attr('stroke', config.nodeStrokeColor)\n .attr('stroke-width', config.nodeStrokeWidth);\n\n let branch;\n for (let branchName in branches) {\n if (branches[branchName].commit === commit) {\n branch = branches[branchName];\n break;\n }\n }\n if (branch) {\n logger.debug('found branch ', branch.name);\n svg\n .select('#node-' + commit.id + ' p')\n .append('xhtml:span')\n .attr('class', 'branch-label')\n .text(branch.name + ', ');\n }\n svg\n .select('#node-' + commit.id + ' p')\n .append('xhtml:span')\n .attr('class', 'commit-id')\n .text(commit.id);\n if (commit.message !== '' && direction === 'BT') {\n svg\n .select('#node-' + commit.id + ' p')\n .append('xhtml:span')\n .attr('class', 'commit-msg')\n .text(', ' + commit.message);\n }\n commitid = commit.parent;\n } while (commitid && allCommitsDict[commitid]);\n }\n\n if (Array.isArray(commitid)) {\n logger.debug('found merge commmit', commitid);\n renderCommitHistory(svg, commitid[0], branches, direction);\n branchNum++;\n renderCommitHistory(svg, commitid[1], branches, direction);\n branchNum--;\n }\n}\n\nfunction renderLines(svg, commit, direction, branchColor) {\n branchColor = branchColor || 0;\n while (commit.seq > 0 && !commit.lineDrawn) {\n if (typeof commit.parent === 'string') {\n svgDrawLineForCommits(svg, commit.id, commit.parent, direction, branchColor);\n commit.lineDrawn = true;\n commit = allCommitsDict[commit.parent];\n } else if (Array.isArray(commit.parent)) {\n svgDrawLineForCommits(svg, commit.id, commit.parent[0], direction, branchColor);\n svgDrawLineForCommits(svg, commit.id, commit.parent[1], direction, branchColor + 1);\n renderLines(svg, allCommitsDict[commit.parent[1]], direction, branchColor + 1);\n commit.lineDrawn = true;\n commit = allCommitsDict[commit.parent[0]];\n }\n }\n}\n\nexport const draw = function(txt, id, ver) {\n try {\n const parser = gitGraphParser.parser;\n parser.yy = db;\n parser.yy.clear();\n\n logger.debug('in gitgraph renderer', txt + '\\n', 'id:', id, ver);\n // Parse the graph definition\n parser.parse(txt + '\\n');\n\n config = Object.assign(config, apiConfig, db.getOptions());\n logger.debug('effective options', config);\n const direction = db.getDirection();\n allCommitsDict = db.getCommits();\n const branches = db.getBranchesAsObjArray();\n if (direction === 'BT') {\n config.nodeLabel.x = branches.length * config.branchOffset;\n config.nodeLabel.width = '100%';\n config.nodeLabel.y = -1 * 2 * config.nodeRadius;\n }\n const svg = select(`[id=\"${id}\"]`);\n svgCreateDefs(svg);\n branchNum = 1;\n for (let branch in branches) {\n const v = branches[branch];\n renderCommitHistory(svg, v.commit.id, branches, direction);\n renderLines(svg, v.commit, direction);\n branchNum++;\n }\n svg.attr('height', function() {\n if (direction === 'BT') return Object.keys(allCommitsDict).length * config.nodeSpacing;\n return (branches.length + 1) * config.branchOffset;\n });\n } catch (e) {\n logger.error('Error while rendering gitgraph');\n logger.error(e.message);\n }\n};\n\nexport default {\n setConf,\n draw\n};\n","/**\n * Created by AshishJ on 11-09-2019.\n */\nimport { select, scaleOrdinal, schemeSet2, pie as d3pie, entries, arc } from 'd3';\nimport pieData from './pieDb';\nimport pieParser from './parser/pie';\nimport { logger } from '../../logger';\n\nconst conf = {};\nexport const setConf = function(cnf) {\n const keys = Object.keys(cnf);\n\n keys.forEach(function(key) {\n conf[key] = cnf[key];\n });\n};\n\n/**\n * Draws a Pie Chart with the data given in text.\n * @param text\n * @param id\n */\nlet w;\nexport const draw = (txt, id) => {\n try {\n const parser = pieParser.parser;\n parser.yy = pieData;\n logger.debug('Rendering info diagram\\n' + txt);\n // Parse the Pie Chart definition\n parser.yy.clear();\n parser.parse(txt);\n logger.debug('Parsed info diagram');\n const elem = document.getElementById(id);\n w = elem.parentElement.offsetWidth;\n\n if (typeof w === 'undefined') {\n w = 1200;\n }\n\n if (typeof conf.useWidth !== 'undefined') {\n w = conf.useWidth;\n }\n const h = 450;\n elem.setAttribute('height', '100%');\n // Set viewBox\n elem.setAttribute('viewBox', '0 0 ' + w + ' ' + h);\n\n // Fetch the default direction, use TD if none was found\n\n var width = w; // 450\n var height = 450;\n var margin = 40;\n var legendRectSize = 18;\n var legendSpacing = 4;\n\n var radius = Math.min(width, height) / 2 - margin;\n\n var svg = select('#' + id)\n .append('svg')\n .attr('width', width)\n .attr('height', height)\n .append('g')\n .attr('transform', 'translate(' + width / 2 + ',' + height / 2 + ')');\n\n var data = pieData.getSections();\n var sum = 0;\n Object.keys(data).forEach(function(key) {\n sum += data[key];\n });\n logger.info(data);\n\n // set the color scale\n var color = scaleOrdinal()\n .domain(data)\n .range(schemeSet2);\n\n // Compute the position of each group on the pie:\n var pie = d3pie().value(function(d) {\n return d.value;\n });\n var dataReady = pie(entries(data));\n\n // shape helper to build arcs:\n var arcGenerator = arc()\n .innerRadius(0)\n .outerRadius(radius);\n\n // Build the pie chart: Basically, each part of the pie is a path that we build using the arc function.\n svg\n .selectAll('mySlices')\n .data(dataReady)\n .enter()\n .append('path')\n .attr('d', arcGenerator)\n .attr('fill', function(d) {\n return color(d.data.key);\n })\n .attr('stroke', 'black')\n .style('stroke-width', '2px')\n .style('opacity', 0.7);\n\n // Now add the Percentage. Use the centroid method to get the best coordinates\n svg\n .selectAll('mySlices')\n .data(dataReady)\n .enter()\n .append('text')\n .text(function(d) {\n return ((d.data.value / sum) * 100).toFixed(0) + '%';\n })\n .attr('transform', function(d) {\n return 'translate(' + arcGenerator.centroid(d) + ')';\n })\n .style('text-anchor', 'middle')\n .attr('class', 'slice')\n .style('font-size', 17);\n\n svg\n .append('text')\n .text(parser.yy.getTitle())\n .attr('x', 0)\n .attr('y', -(h - 50) / 2)\n .attr('class', 'pieTitleText');\n\n //Add the slegend/annotations for each section\n var legend = svg\n .selectAll('.legend')\n .data(color.domain())\n .enter()\n .append('g')\n .attr('class', 'legend')\n .attr('transform', function(d, i) {\n var height = legendRectSize + legendSpacing;\n var offset = (height * color.domain().length) / 2;\n var horz = 12 * legendRectSize;\n var vert = i * height - offset;\n return 'translate(' + horz + ',' + vert + ')';\n });\n\n legend\n .append('rect')\n .attr('width', legendRectSize)\n .attr('height', legendRectSize)\n .style('fill', color)\n .style('stroke', color);\n\n legend\n .append('text')\n .attr('x', legendRectSize + legendSpacing)\n .attr('y', legendRectSize - legendSpacing)\n .text(function(d) {\n return d;\n });\n } catch (e) {\n logger.error('Error while rendering info diagram');\n logger.error(e.message);\n }\n};\n\nexport default {\n setConf,\n draw\n};\n","/**\n * Created by knut on 15-01-14.\n */\nimport { logger } from '../../logger';\n\nvar message = '';\nvar info = false;\n\nexport const setMessage = txt => {\n logger.debug('Setting message to: ' + txt);\n message = txt;\n};\n\nexport const getMessage = () => {\n return message;\n};\n\nexport const setInfo = inf => {\n info = inf;\n};\n\nexport const getInfo = () => {\n return info;\n};\n\n// export const parseError = (err, hash) => {\n// global.mermaidAPI.parseError(err, hash)\n// }\n\nexport default {\n setMessage,\n getMessage,\n setInfo,\n getInfo\n // parseError\n};\n","/**\n * Created by knut on 14-12-11.\n */\nimport { select } from 'd3';\nimport db from './infoDb';\nimport infoParser from './parser/info';\nimport { logger } from '../../logger';\n\nconst conf = {};\nexport const setConf = function(cnf) {\n const keys = Object.keys(cnf);\n\n keys.forEach(function(key) {\n conf[key] = cnf[key];\n });\n};\n\n/**\n * Draws a an info picture in the tag with id: id based on the graph definition in text.\n * @param text\n * @param id\n */\nexport const draw = (txt, id, ver) => {\n try {\n const parser = infoParser.parser;\n parser.yy = db;\n logger.debug('Renering info diagram\\n' + txt);\n // Parse the graph definition\n parser.parse(txt);\n logger.debug('Parsed info diagram');\n // Fetch the default direction, use TD if none was found\n const svg = select('#' + id);\n\n const g = svg.append('g');\n\n g.append('text') // text label for the x axis\n .attr('x', 100)\n .attr('y', 40)\n .attr('class', 'version')\n .attr('font-size', '32px')\n .style('text-anchor', 'middle')\n .text('v ' + ver);\n\n svg.attr('height', 100);\n svg.attr('width', 400);\n // svg.attr('viewBox', '0 0 300 150');\n } catch (e) {\n logger.error('Error while rendering info diagram');\n logger.error(e.message);\n }\n};\n\nexport default {\n setConf,\n draw\n};\n","/**\n * Created by knut on 14-12-11.\n */\nimport { select } from 'd3';\nimport { logger } from './logger';\n\nconst conf = {};\nexport const setConf = function(cnf) {\n const keys = Object.keys(cnf);\n\n keys.forEach(function(key) {\n conf[key] = cnf[key];\n });\n};\n\n/**\n * Draws a an info picture in the tag with id: id based on the graph definition in text.\n * @param text\n * @param id\n */\nexport const draw = (id, ver) => {\n try {\n logger.debug('Renering svg for syntax error\\n');\n\n const svg = select('#' + id);\n\n const g = svg.append('g');\n\n g.append('path')\n .attr('class', 'error-icon')\n .attr(\n 'd',\n 'm411.313,123.313c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32-9.375,9.375-20.688-20.688c-12.484-12.5-32.766-12.5-45.25,0l-16,16c-1.261,1.261-2.304,2.648-3.31,4.051-21.739-8.561-45.324-13.426-70.065-13.426-105.867,0-192,86.133-192,192s86.133,192 192,192 192-86.133 192-192c0-24.741-4.864-48.327-13.426-70.065 1.402-1.007 2.79-2.049 4.051-3.31l16-16c12.5-12.492 12.5-32.758 0-45.25l-20.688-20.688 9.375-9.375 32.001-31.999zm-219.313,100.687c-52.938,0-96,43.063-96,96 0,8.836-7.164,16-16,16s-16-7.164-16-16c0-70.578 57.422-128 128-128 8.836,0 16,7.164 16,16s-7.164,16-16,16z'\n );\n\n g.append('path')\n .attr('class', 'error-icon')\n .attr(\n 'd',\n 'm459.02,148.98c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l16,16c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16.001-16z'\n );\n\n g.append('path')\n .attr('class', 'error-icon')\n .attr(\n 'd',\n 'm340.395,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16-16c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l15.999,16z'\n );\n\n g.append('path')\n .attr('class', 'error-icon')\n .attr(\n 'd',\n 'm400,64c8.844,0 16-7.164 16-16v-32c0-8.836-7.156-16-16-16-8.844,0-16,7.164-16,16v32c0,8.836 7.156,16 16,16z'\n );\n\n g.append('path')\n .attr('class', 'error-icon')\n .attr(\n 'd',\n 'm496,96.586h-32c-8.844,0-16,7.164-16,16 0,8.836 7.156,16 16,16h32c8.844,0 16-7.164 16-16 0-8.836-7.156-16-16-16z'\n );\n\n g.append('path')\n .attr('class', 'error-icon')\n .attr(\n 'd',\n 'm436.98,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688l32-32c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32c-6.251,6.25-6.251,16.375-0.001,22.625z'\n );\n\n g.append('text') // text label for the x axis\n .attr('class', 'error-text')\n .attr('x', 1240)\n .attr('y', 250)\n .attr('font-size', '150px')\n .style('text-anchor', 'middle')\n .text('Syntax error in graph');\n g.append('text') // text label for the x axis\n .attr('class', 'error-text')\n .attr('x', 1050)\n .attr('y', 400)\n .attr('font-size', '100px')\n .style('text-anchor', 'middle')\n .text('mermaid version ' + ver);\n\n svg.attr('height', 100);\n svg.attr('width', 400);\n svg.attr('viewBox', '768 0 512 512');\n } catch (e) {\n logger.error('Error while rendering info diagram');\n logger.error(e.message);\n }\n};\n\nexport default {\n setConf,\n draw\n};\n","/**\n *\n */\nimport { logger } from '../../logger';\n\nlet sections = {};\nlet title = '';\n\nconst addSection = function(id, value) {\n if (typeof sections[id] === 'undefined') {\n sections[id] = value;\n logger.debug('Added new section :', id);\n }\n};\nconst getSections = () => sections;\n\nconst setTitle = function(txt) {\n title = txt;\n};\n\nconst getTitle = function() {\n return title;\n};\nconst cleanupValue = function(value) {\n if (value.substring(0, 1) === ':') {\n value = value.substring(1).trim();\n return Number(value.trim());\n } else {\n return Number(value.trim());\n }\n};\n\nconst clear = function() {\n sections = {};\n title = '';\n};\n// export const parseError = (err, hash) => {\n// global.mermaidAPI.parseError(err, hash)\n// }\n\nexport default {\n addSection,\n getSections,\n cleanupValue,\n clear,\n setTitle,\n getTitle\n // parseError\n};\n","/**\n *\n */\nimport { logger } from '../../logger';\n\nlet entities = {};\nlet relationships = [];\nlet title = '';\n\nconst Cardinality = {\n ZERO_OR_ONE: 'ZERO_OR_ONE',\n ZERO_OR_MORE: 'ZERO_OR_MORE',\n ONE_OR_MORE: 'ONE_OR_MORE',\n ONLY_ONE: 'ONLY_ONE'\n};\n\nconst Identification = {\n NON_IDENTIFYING: 'NON_IDENTIFYING',\n IDENTIFYING: 'IDENTIFYING'\n};\n\nconst addEntity = function(name) {\n if (typeof entities[name] === 'undefined') {\n entities[name] = name;\n logger.debug('Added new entity :', name);\n }\n};\n\nconst getEntities = () => entities;\n\n/**\n * Add a relationship\n * @param entA The first entity in the relationship\n * @param rolA The role played by the first entity in relation to the second\n * @param entB The second entity in the relationship\n * @param rSpec The details of the relationship between the two entities\n */\nconst addRelationship = function(entA, rolA, entB, rSpec) {\n let rel = {\n entityA: entA,\n roleA: rolA,\n entityB: entB,\n relSpec: rSpec\n };\n\n relationships.push(rel);\n logger.debug('Added new relationship :', rel);\n};\n\nconst getRelationships = () => relationships;\n\n// Keep this - TODO: revisit...allow the diagram to have a title\nconst setTitle = function(txt) {\n title = txt;\n};\n\nconst getTitle = function() {\n return title;\n};\n\nconst clear = function() {\n entities = {};\n relationships = [];\n title = '';\n};\n\nexport default {\n Cardinality,\n Identification,\n addEntity,\n getEntities,\n addRelationship,\n getRelationships,\n clear,\n setTitle,\n getTitle\n};\n","const ERMarkers = {\n ONLY_ONE_START: 'ONLY_ONE_START',\n ONLY_ONE_END: 'ONLY_ONE_END',\n ZERO_OR_ONE_START: 'ZERO_OR_ONE_START',\n ZERO_OR_ONE_END: 'ZERO_OR_ONE_END',\n ONE_OR_MORE_START: 'ONE_OR_MORE_START',\n ONE_OR_MORE_END: 'ONE_OR_MORE_END',\n ZERO_OR_MORE_START: 'ZERO_OR_MORE_START',\n ZERO_OR_MORE_END: 'ZERO_OR_MORE_END'\n};\n\n/**\n * Put the markers into the svg DOM for later use with edge paths\n */\nconst insertMarkers = function(elem, conf) {\n let marker;\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', ERMarkers.ONLY_ONE_START)\n .attr('refX', 0)\n .attr('refY', 9)\n .attr('markerWidth', 18)\n .attr('markerHeight', 18)\n .attr('orient', 'auto')\n .append('path')\n .attr('stroke', conf.stroke)\n .attr('fill', 'none')\n .attr('d', 'M9,0 L9,18 M15,0 L15,18');\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', ERMarkers.ONLY_ONE_END)\n .attr('refX', 18)\n .attr('refY', 9)\n .attr('markerWidth', 18)\n .attr('markerHeight', 18)\n .attr('orient', 'auto')\n .append('path')\n .attr('stroke', conf.stroke)\n .attr('fill', 'none')\n .attr('d', 'M3,0 L3,18 M9,0 L9,18');\n\n marker = elem\n .append('defs')\n .append('marker')\n .attr('id', ERMarkers.ZERO_OR_ONE_START)\n .attr('refX', 0)\n .attr('refY', 9)\n .attr('markerWidth', 30)\n .attr('markerHeight', 18)\n .attr('orient', 'auto');\n marker\n .append('circle')\n .attr('stroke', conf.stroke)\n .attr('fill', 'white')\n .attr('cx', 21)\n .attr('cy', 9)\n .attr('r', 6);\n marker\n .append('path')\n .attr('stroke', conf.stroke)\n .attr('fill', 'none')\n .attr('d', 'M9,0 L9,18');\n\n marker = elem\n .append('defs')\n .append('marker')\n .attr('id', ERMarkers.ZERO_OR_ONE_END)\n .attr('refX', 30)\n .attr('refY', 9)\n .attr('markerWidth', 30)\n .attr('markerHeight', 18)\n .attr('orient', 'auto');\n marker\n .append('circle')\n .attr('stroke', conf.stroke)\n .attr('fill', 'white')\n .attr('cx', 9)\n .attr('cy', 9)\n .attr('r', 6);\n marker\n .append('path')\n .attr('stroke', conf.stroke)\n .attr('fill', 'none')\n .attr('d', 'M21,0 L21,18');\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', ERMarkers.ONE_OR_MORE_START)\n .attr('refX', 18)\n .attr('refY', 18)\n .attr('markerWidth', 45)\n .attr('markerHeight', 36)\n .attr('orient', 'auto')\n .append('path')\n .attr('stroke', conf.stroke)\n .attr('fill', 'none')\n .attr('d', 'M0,18 Q 18,0 36,18 Q 18,36 0,18 M42,9 L42,27');\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', ERMarkers.ONE_OR_MORE_END)\n .attr('refX', 27)\n .attr('refY', 18)\n .attr('markerWidth', 45)\n .attr('markerHeight', 36)\n .attr('orient', 'auto')\n .append('path')\n .attr('stroke', conf.stroke)\n .attr('fill', 'none')\n .attr('d', 'M3,9 L3,27 M9,18 Q27,0 45,18 Q27,36 9,18');\n\n marker = elem\n .append('defs')\n .append('marker')\n .attr('id', ERMarkers.ZERO_OR_MORE_START)\n .attr('refX', 18)\n .attr('refY', 18)\n .attr('markerWidth', 57)\n .attr('markerHeight', 36)\n .attr('orient', 'auto');\n marker\n .append('circle')\n .attr('stroke', conf.stroke)\n .attr('fill', 'white')\n .attr('cx', 48)\n .attr('cy', 18)\n .attr('r', 6);\n marker\n .append('path')\n .attr('stroke', conf.stroke)\n .attr('fill', 'none')\n .attr('d', 'M0,18 Q18,0 36,18 Q18,36 0,18');\n\n marker = elem\n .append('defs')\n .append('marker')\n .attr('id', ERMarkers.ZERO_OR_MORE_END)\n .attr('refX', 39)\n .attr('refY', 18)\n .attr('markerWidth', 57)\n .attr('markerHeight', 36)\n .attr('orient', 'auto');\n marker\n .append('circle')\n .attr('stroke', conf.stroke)\n .attr('fill', 'white')\n .attr('cx', 9)\n .attr('cy', 18)\n .attr('r', 6);\n marker\n .append('path')\n .attr('stroke', conf.stroke)\n .attr('fill', 'none')\n .attr('d', 'M21,18 Q39,0 57,18 Q39,36 21,18');\n\n return;\n};\n\nexport default {\n ERMarkers,\n insertMarkers\n};\n","import graphlib from 'graphlib';\nimport { line, curveBasis, select } from 'd3';\nimport erDb from './erDb';\nimport erParser from './parser/erDiagram';\nimport dagre from 'dagre';\nimport { getConfig } from '../../config';\nimport { logger } from '../../logger';\nimport erMarkers from './erMarkers';\n\nconst conf = {};\n\n/**\n * Allows the top-level API module to inject config specific to this renderer,\n * storing it in the local conf object. Note that generic config still needs to be\n * retrieved using getConfig() imported from the config module\n */\nexport const setConf = function(cnf) {\n const keys = Object.keys(cnf);\n for (let i = 0; i < keys.length; i++) {\n conf[keys[i]] = cnf[keys[i]];\n }\n};\n\n/**\n * Use D3 to construct the svg elements for the entities\n * @param svgNode the svg node that contains the diagram\n * @param entities The entities to be drawn\n * @param graph The graph that contains the vertex and edge definitions post-layout\n * @return The first entity that was inserted\n */\nconst drawEntities = function(svgNode, entities, graph) {\n const keys = Object.keys(entities);\n let firstOne;\n\n keys.forEach(function(id) {\n // Create a group for each entity\n const groupNode = svgNode.append('g').attr('id', id);\n\n firstOne = firstOne === undefined ? id : firstOne;\n\n // Label the entity - this is done first so that we can get the bounding box\n // which then determines the size of the rectangle\n const textId = 'entity-' + id;\n const textNode = groupNode\n .append('text')\n .attr('class', 'er entityLabel')\n .attr('id', textId)\n .attr('x', 0)\n .attr('y', 0)\n .attr('dominant-baseline', 'middle')\n .attr('text-anchor', 'middle')\n .attr(\n 'style',\n 'font-family: ' + getConfig().fontFamily + '; font-size: ' + conf.fontSize + 'px'\n )\n .text(id);\n\n // Calculate the width and height of the entity\n const textBBox = textNode.node().getBBox();\n const entityWidth = Math.max(conf.minEntityWidth, textBBox.width + conf.entityPadding * 2);\n const entityHeight = Math.max(conf.minEntityHeight, textBBox.height + conf.entityPadding * 2);\n\n // Make sure the text gets centred relative to the entity box\n textNode.attr('transform', 'translate(' + entityWidth / 2 + ',' + entityHeight / 2 + ')');\n\n // Draw the rectangle - insert it before the text so that the text is not obscured\n const rectNode = groupNode\n .insert('rect', '#' + textId)\n .attr('class', 'er entityBox')\n .attr('fill', conf.fill)\n .attr('fill-opacity', '100%')\n .attr('stroke', conf.stroke)\n .attr('x', 0)\n .attr('y', 0)\n .attr('width', entityWidth)\n .attr('height', entityHeight);\n\n const rectBBox = rectNode.node().getBBox();\n\n // Add the entity to the graph\n graph.setNode(id, {\n width: rectBBox.width,\n height: rectBBox.height,\n shape: 'rect',\n id: id\n });\n });\n return firstOne;\n}; // drawEntities\n\nconst adjustEntities = function(svgNode, graph) {\n graph.nodes().forEach(function(v) {\n if (typeof v !== 'undefined' && typeof graph.node(v) !== 'undefined') {\n svgNode\n .select('#' + v)\n .attr(\n 'transform',\n 'translate(' +\n (graph.node(v).x - graph.node(v).width / 2) +\n ',' +\n (graph.node(v).y - graph.node(v).height / 2) +\n ' )'\n );\n }\n });\n return;\n};\n\nconst getEdgeName = function(rel) {\n return (rel.entityA + rel.roleA + rel.entityB).replace(/\\s/g, '');\n};\n\n/**\n * Add each relationship to the graph\n * @param relationships the relationships to be added\n * @param g the graph\n * @return {Array} The array of relationships\n */\nconst addRelationships = function(relationships, g) {\n relationships.forEach(function(r) {\n g.setEdge(r.entityA, r.entityB, { relationship: r }, getEdgeName(r));\n });\n return relationships;\n}; // addRelationships\n\nlet relCnt = 0;\n/**\n * Draw a relationship using edge information from the graph\n * @param svg the svg node\n * @param rel the relationship to draw in the svg\n * @param g the graph containing the edge information\n * @param insert the insertion point in the svg DOM (because relationships have markers that need to sit 'behind' opaque entity boxes)\n */\nconst drawRelationshipFromLayout = function(svg, rel, g, insert) {\n relCnt++;\n\n // Find the edge relating to this relationship\n const edge = g.edge(rel.entityA, rel.entityB, getEdgeName(rel));\n\n // Get a function that will generate the line path\n const lineFunction = line()\n .x(function(d) {\n return d.x;\n })\n .y(function(d) {\n return d.y;\n })\n .curve(curveBasis);\n\n // Insert the line at the right place\n const svgPath = svg\n .insert('path', '#' + insert)\n .attr('class', 'er relationshipLine')\n .attr('d', lineFunction(edge.points))\n .attr('stroke', conf.stroke)\n .attr('fill', 'none');\n\n // ...and with dashes if necessary\n if (rel.relSpec.relType === erDb.Identification.NON_IDENTIFYING) {\n svgPath.attr('stroke-dasharray', '8,8');\n }\n\n // TODO: Understand this better\n let url = '';\n if (conf.arrowMarkerAbsolute) {\n url =\n window.location.protocol +\n '//' +\n window.location.host +\n window.location.pathname +\n window.location.search;\n url = url.replace(/\\(/g, '\\\\(');\n url = url.replace(/\\)/g, '\\\\)');\n }\n\n // Decide which start and end markers it needs. It may be possible to be more concise here\n // by reversing a start marker to make an end marker...but this will do for now\n\n // Note that the 'A' entity's marker is at the end of the relationship and the 'B' entity's marker is at the start\n switch (rel.relSpec.cardA) {\n case erDb.Cardinality.ZERO_OR_ONE:\n svgPath.attr('marker-end', 'url(' + url + '#' + erMarkers.ERMarkers.ZERO_OR_ONE_END + ')');\n break;\n case erDb.Cardinality.ZERO_OR_MORE:\n svgPath.attr('marker-end', 'url(' + url + '#' + erMarkers.ERMarkers.ZERO_OR_MORE_END + ')');\n break;\n case erDb.Cardinality.ONE_OR_MORE:\n svgPath.attr('marker-end', 'url(' + url + '#' + erMarkers.ERMarkers.ONE_OR_MORE_END + ')');\n break;\n case erDb.Cardinality.ONLY_ONE:\n svgPath.attr('marker-end', 'url(' + url + '#' + erMarkers.ERMarkers.ONLY_ONE_END + ')');\n break;\n }\n\n switch (rel.relSpec.cardB) {\n case erDb.Cardinality.ZERO_OR_ONE:\n svgPath.attr(\n 'marker-start',\n 'url(' + url + '#' + erMarkers.ERMarkers.ZERO_OR_ONE_START + ')'\n );\n break;\n case erDb.Cardinality.ZERO_OR_MORE:\n svgPath.attr(\n 'marker-start',\n 'url(' + url + '#' + erMarkers.ERMarkers.ZERO_OR_MORE_START + ')'\n );\n break;\n case erDb.Cardinality.ONE_OR_MORE:\n svgPath.attr(\n 'marker-start',\n 'url(' + url + '#' + erMarkers.ERMarkers.ONE_OR_MORE_START + ')'\n );\n break;\n case erDb.Cardinality.ONLY_ONE:\n svgPath.attr('marker-start', 'url(' + url + '#' + erMarkers.ERMarkers.ONLY_ONE_START + ')');\n break;\n }\n\n // Now label the relationship\n\n // Find the half-way point\n const len = svgPath.node().getTotalLength();\n const labelPoint = svgPath.node().getPointAtLength(len * 0.5);\n\n // Append a text node containing the label\n const labelId = 'rel' + relCnt;\n\n const labelNode = svg\n .append('text')\n .attr('class', 'er relationshipLabel')\n .attr('id', labelId)\n .attr('x', labelPoint.x)\n .attr('y', labelPoint.y)\n .attr('text-anchor', 'middle')\n .attr('dominant-baseline', 'middle')\n .attr(\n 'style',\n 'font-family: ' + getConfig().fontFamily + '; font-size: ' + conf.fontSize + 'px'\n )\n .text(rel.roleA);\n\n // Figure out how big the opaque 'container' rectangle needs to be\n const labelBBox = labelNode.node().getBBox();\n\n // Insert the opaque rectangle before the text label\n svg\n .insert('rect', '#' + labelId)\n .attr('class', 'er relationshipLabelBox')\n .attr('x', labelPoint.x - labelBBox.width / 2)\n .attr('y', labelPoint.y - labelBBox.height / 2)\n .attr('width', labelBBox.width)\n .attr('height', labelBBox.height)\n .attr('fill', 'white')\n .attr('fill-opacity', '85%');\n\n return;\n};\n\n/**\n * Draw en E-R diagram in the tag with id: id based on the text definition of the diagram\n * @param text the text of the diagram\n * @param id the unique id of the DOM node that contains the diagram\n */\nexport const draw = function(text, id) {\n logger.info('Drawing ER diagram');\n erDb.clear();\n const parser = erParser.parser;\n parser.yy = erDb;\n\n // Parse the text to populate erDb\n try {\n parser.parse(text);\n } catch (err) {\n logger.debug('Parsing failed');\n }\n\n // Get a reference to the svg node that contains the text\n const svg = select(`[id='${id}']`);\n\n // Add cardinality marker definitions to the svg\n erMarkers.insertMarkers(svg, conf);\n\n // Now we have to construct the diagram in a specific way:\n // ---\n // 1. Create all the entities in the svg node at 0,0, but with the correct dimensions (allowing for text content)\n // 2. Make sure they are all added to the graph\n // 3. Add all the edges (relationships) to the graph aswell\n // 4. Let dagre do its magic to layout the graph. This assigns:\n // - the centre co-ordinates for each node, bearing in mind the dimensions and edge relationships\n // - the path co-ordinates for each edge\n // But it has no impact on the svg child nodes - the diagram remains with every entity rooted at 0,0\n // 5. Now assign a transform to each entity in the svg node so that it gets drawn in the correct place, as determined by\n // its centre point, which is obtained from the graph, and it's width and height\n // 6. And finally, create all the edges in the svg node using information from the graph\n // ---\n\n // Create the graph\n let g;\n\n // TODO: Explore directed vs undirected graphs, and how the layout is affected\n // An E-R diagram could be said to be undirected, but there is merit in setting\n // the direction from parent to child in a one-to-many as this influences graphlib to\n // put the parent above the child (does it?), which is intuitive. Most relationships\n // in ER diagrams are one-to-many.\n g = new graphlib.Graph({\n multigraph: true,\n directed: true,\n compound: false\n })\n .setGraph({\n rankdir: conf.layoutDirection,\n marginx: 20,\n marginy: 20,\n nodesep: 100,\n edgesep: 100,\n ranksep: 100\n })\n .setDefaultEdgeLabel(function() {\n return {};\n });\n\n // Draw the entities (at 0,0), returning the first svg node that got\n // inserted - this represents the insertion point for relationship paths\n const firstEntity = drawEntities(svg, erDb.getEntities(), g);\n\n // TODO: externalise the addition of entities to the graph - it's a bit 'buried' in the above\n\n // Add all the relationships to the graph\n const relationships = addRelationships(erDb.getRelationships(), g);\n\n dagre.layout(g); // Node and edge positions will be updated\n\n // Adjust the positions of the entities so that they adhere to the layout\n adjustEntities(svg, g);\n\n // Draw the relationships\n relationships.forEach(function(rel) {\n drawRelationshipFromLayout(svg, rel, g, firstEntity);\n });\n\n const padding = conf.diagramPadding;\n\n const svgBounds = svg.node().getBBox();\n const width = svgBounds.width + padding * 2;\n const height = svgBounds.height + padding * 2;\n\n if (conf.useMaxWidth) {\n svg.attr('width', '100%');\n svg.attr('style', `max-width: ${width}px;`);\n } else {\n svg.attr('height', height);\n svg.attr('width', width);\n }\n\n svg.attr('viewBox', `${svgBounds.x - padding} ${svgBounds.y - padding} ${width} ${height}`);\n}; // draw\n\nexport default {\n setConf,\n draw\n};\n","let title = '';\nlet currentSection = '';\n\nconst sections = [];\nconst tasks = [];\nconst rawTasks = [];\n\nexport const clear = function() {\n sections.length = 0;\n tasks.length = 0;\n currentSection = '';\n title = '';\n rawTasks.length = 0;\n};\n\nexport const setTitle = function(txt) {\n title = txt;\n};\n\nexport const getTitle = function() {\n return title;\n};\n\nexport const addSection = function(txt) {\n currentSection = txt;\n sections.push(txt);\n};\n\nexport const getSections = function() {\n return sections;\n};\n\nexport const getTasks = function() {\n let allItemsProcessed = compileTasks();\n const maxDepth = 100;\n let iterationCount = 0;\n while (!allItemsProcessed && iterationCount < maxDepth) {\n allItemsProcessed = compileTasks();\n iterationCount++;\n }\n\n tasks.push(...rawTasks);\n\n return tasks;\n};\n\nconst updateActors = function() {\n const tempActors = [];\n tasks.forEach(task => {\n if (task.people) {\n tempActors.push(...task.people);\n }\n });\n\n const unique = new Set(tempActors);\n return [...unique].sort();\n};\n\nexport const addTask = function(descr, taskData) {\n const pieces = taskData.substr(1).split(':');\n\n let score = 0;\n let peeps = [];\n if (pieces.length === 1) {\n score = Number(pieces[0]);\n peeps = [];\n } else {\n score = Number(pieces[0]);\n peeps = pieces[1].split(',');\n }\n const peopleList = peeps.map(s => s.trim());\n\n const rawTask = {\n section: currentSection,\n type: currentSection,\n people: peopleList,\n task: descr,\n score\n };\n\n rawTasks.push(rawTask);\n};\n\nexport const addTaskOrg = function(descr) {\n const newTask = {\n section: currentSection,\n type: currentSection,\n description: descr,\n task: descr,\n classes: []\n };\n tasks.push(newTask);\n};\n\nconst compileTasks = function() {\n const compileTask = function(pos) {\n return rawTasks[pos].processed;\n };\n\n let allProcessed = true;\n for (let i = 0; i < rawTasks.length; i++) {\n compileTask(i);\n\n allProcessed = allProcessed && rawTasks[i].processed;\n }\n return allProcessed;\n};\n\nconst getActors = function() {\n return updateActors();\n};\n\nexport default {\n clear,\n setTitle,\n getTitle,\n addSection,\n getSections,\n getTasks,\n addTask,\n addTaskOrg,\n getActors\n};\n","import { arc as d3arc } from 'd3';\n\nexport const drawRect = function(elem, rectData) {\n const rectElem = elem.append('rect');\n rectElem.attr('x', rectData.x);\n rectElem.attr('y', rectData.y);\n rectElem.attr('fill', rectData.fill);\n rectElem.attr('stroke', rectData.stroke);\n rectElem.attr('width', rectData.width);\n rectElem.attr('height', rectData.height);\n rectElem.attr('rx', rectData.rx);\n rectElem.attr('ry', rectData.ry);\n\n if (typeof rectData.class !== 'undefined') {\n rectElem.attr('class', rectData.class);\n }\n\n return rectElem;\n};\n\nexport const drawFace = function(element, faceData) {\n const radius = 15;\n const circleElement = element\n .append('circle')\n .attr('cx', faceData.cx)\n .attr('cy', faceData.cy)\n .attr('class', 'face')\n .attr('r', radius)\n .attr('stroke-width', 2)\n .attr('overflow', 'visible');\n\n const face = element.append('g');\n\n //left eye\n face\n .append('circle')\n .attr('cx', faceData.cx - radius / 3)\n .attr('cy', faceData.cy - radius / 3)\n .attr('r', 1.5)\n .attr('stroke-width', 2)\n .attr('fill', '#666')\n .attr('stroke', '#666');\n\n //right eye\n face\n .append('circle')\n .attr('cx', faceData.cx + radius / 3)\n .attr('cy', faceData.cy - radius / 3)\n .attr('r', 1.5)\n .attr('stroke-width', 2)\n .attr('fill', '#666')\n .attr('stroke', '#666');\n\n function smile(face) {\n const arc = d3arc()\n .startAngle(Math.PI / 2)\n .endAngle(3 * (Math.PI / 2))\n .innerRadius(radius / 2)\n .outerRadius(radius / 2.2);\n //mouth\n face\n .append('path')\n .attr('class', 'mouth')\n .attr('d', arc)\n .attr('transform', 'translate(' + faceData.cx + ',' + (faceData.cy + 2) + ')');\n }\n\n function sad(face) {\n const arc = d3arc()\n .startAngle((3 * Math.PI) / 2)\n .endAngle(5 * (Math.PI / 2))\n .innerRadius(radius / 2)\n .outerRadius(radius / 2.2);\n //mouth\n face\n .append('path')\n .attr('class', 'mouth')\n .attr('d', arc)\n .attr('transform', 'translate(' + faceData.cx + ',' + (faceData.cy + 7) + ')');\n }\n\n function ambivalent(face) {\n face\n .append('line')\n .attr('class', 'mouth')\n .attr('stroke', 2)\n .attr('x1', faceData.cx - 5)\n .attr('y1', faceData.cy + 7)\n .attr('x2', faceData.cx + 5)\n .attr('y2', faceData.cy + 7)\n .attr('class', 'mouth')\n .attr('stroke-width', '1px')\n .attr('stroke', '#666');\n }\n\n if (faceData.score > 3) {\n smile(face);\n } else if (faceData.score < 3) {\n sad(face);\n } else {\n ambivalent(face);\n }\n\n return circleElement;\n};\n\nexport const drawCircle = function(element, circleData) {\n const circleElement = element.append('circle');\n circleElement.attr('cx', circleData.cx);\n circleElement.attr('cy', circleData.cy);\n circleElement.attr('fill', circleData.fill);\n circleElement.attr('stroke', circleData.stroke);\n circleElement.attr('r', circleData.r);\n\n if (typeof circleElement.class !== 'undefined') {\n circleElement.attr('class', circleElement.class);\n }\n\n if (typeof circleData.title !== 'undefined') {\n circleElement.append('title').text(circleData.title);\n }\n\n return circleElement;\n};\n\nexport const drawText = function(elem, textData) {\n // Remove and ignore br:s\n const nText = textData.text.replace(/
/gi, ' ');\n\n const textElem = elem.append('text');\n textElem.attr('x', textData.x);\n textElem.attr('y', textData.y);\n textElem.attr('class', 'legend');\n\n textElem.style('text-anchor', textData.anchor);\n\n if (typeof textData.class !== 'undefined') {\n textElem.attr('class', textData.class);\n }\n\n const span = textElem.append('tspan');\n span.attr('x', textData.x + textData.textMargin * 2);\n span.text(nText);\n\n return textElem;\n};\n\nexport const drawLabel = function(elem, txtObject) {\n function genPoints(x, y, width, height, cut) {\n return (\n x +\n ',' +\n y +\n ' ' +\n (x + width) +\n ',' +\n y +\n ' ' +\n (x + width) +\n ',' +\n (y + height - cut) +\n ' ' +\n (x + width - cut * 1.2) +\n ',' +\n (y + height) +\n ' ' +\n x +\n ',' +\n (y + height)\n );\n }\n const polygon = elem.append('polygon');\n polygon.attr('points', genPoints(txtObject.x, txtObject.y, 50, 20, 7));\n polygon.attr('class', 'labelBox');\n\n txtObject.y = txtObject.y + txtObject.labelMargin;\n txtObject.x = txtObject.x + 0.5 * txtObject.labelMargin;\n drawText(elem, txtObject);\n};\n\nexport const drawSection = function(elem, section, conf) {\n const g = elem.append('g');\n\n const rect = getNoteRect();\n rect.x = section.x;\n rect.y = section.y;\n rect.fill = section.fill;\n rect.width = conf.width;\n rect.height = conf.height;\n rect.class = 'journey-section section-type-' + section.num;\n rect.rx = 3;\n rect.ry = 3;\n drawRect(g, rect);\n\n _drawTextCandidateFunc(conf)(\n section.text,\n g,\n rect.x,\n rect.y,\n rect.width,\n rect.height,\n { class: 'journey-section section-type-' + section.num },\n conf,\n section.colour\n );\n};\n\nlet taskCount = -1;\n/**\n * Draws an actor in the diagram with the attaced line\n * @param elem The HTML element\n * @param task The task to render\n * @param conf The global configuration\n */\nexport const drawTask = function(elem, task, conf) {\n const center = task.x + conf.width / 2;\n const g = elem.append('g');\n taskCount++;\n const maxHeight = 300 + 5 * 30;\n g.append('line')\n .attr('id', 'task' + taskCount)\n .attr('x1', center)\n .attr('y1', task.y)\n .attr('x2', center)\n .attr('y2', maxHeight)\n .attr('class', 'task-line')\n .attr('stroke-width', '1px')\n .attr('stroke-dasharray', '4 2')\n .attr('stroke', '#666');\n\n drawFace(g, {\n cx: center,\n cy: 300 + (5 - task.score) * 30,\n score: task.score\n });\n\n const rect = getNoteRect();\n rect.x = task.x;\n rect.y = task.y;\n rect.fill = task.fill;\n rect.width = conf.width;\n rect.height = conf.height;\n rect.class = 'task task-type-' + task.num;\n rect.rx = 3;\n rect.ry = 3;\n drawRect(g, rect);\n\n let xPos = task.x + 14;\n task.people.forEach(person => {\n const colour = task.actors[person];\n\n const circle = {\n cx: xPos,\n cy: task.y,\n r: 7,\n fill: colour,\n stroke: '#000',\n title: person\n };\n\n drawCircle(g, circle);\n xPos += 10;\n });\n\n _drawTextCandidateFunc(conf)(\n task.task,\n g,\n rect.x,\n rect.y,\n rect.width,\n rect.height,\n { class: 'task' },\n conf,\n task.colour\n );\n};\n\n/**\n * Draws a background rectangle\n * @param elem The html element\n * @param bounds The bounds of the drawing\n */\nexport const drawBackgroundRect = function(elem, bounds) {\n const rectElem = drawRect(elem, {\n x: bounds.startx,\n y: bounds.starty,\n width: bounds.stopx - bounds.startx,\n height: bounds.stopy - bounds.starty,\n fill: bounds.fill,\n class: 'rect'\n });\n rectElem.lower();\n};\n\nexport const getTextObj = function() {\n return {\n x: 0,\n y: 0,\n fill: undefined,\n 'text-anchor': 'start',\n width: 100,\n height: 100,\n textMargin: 0,\n rx: 0,\n ry: 0\n };\n};\n\nexport const getNoteRect = function() {\n return {\n x: 0,\n y: 0,\n width: 100,\n anchor: 'start',\n height: 100,\n rx: 0,\n ry: 0\n };\n};\n\nconst _drawTextCandidateFunc = (function() {\n function byText(content, g, x, y, width, height, textAttrs, colour) {\n const text = g\n .append('text')\n .attr('x', x + width / 2)\n .attr('y', y + height / 2 + 5)\n .style('font-color', colour)\n .style('text-anchor', 'middle')\n .text(content);\n _setTextAttrs(text, textAttrs);\n }\n\n function byTspan(content, g, x, y, width, height, textAttrs, conf, colour) {\n const { taskFontSize, taskFontFamily } = conf;\n\n const lines = content.split(/
/gi);\n for (let i = 0; i < lines.length; i++) {\n const dy = i * taskFontSize - (taskFontSize * (lines.length - 1)) / 2;\n const text = g\n .append('text')\n .attr('x', x + width / 2)\n .attr('y', y)\n .attr('fill', colour)\n .style('text-anchor', 'middle')\n .style('font-size', taskFontSize)\n .style('font-family', taskFontFamily);\n text\n .append('tspan')\n .attr('x', x + width / 2)\n .attr('dy', dy)\n .text(lines[i]);\n\n text\n .attr('y', y + height / 2.0)\n .attr('dominant-baseline', 'central')\n .attr('alignment-baseline', 'central');\n\n _setTextAttrs(text, textAttrs);\n }\n }\n\n function byFo(content, g, x, y, width, height, textAttrs, conf) {\n const body = g.append('switch');\n const f = body\n .append('foreignObject')\n .attr('x', x)\n .attr('y', y)\n .attr('width', width)\n .attr('height', height)\n .attr('position', 'fixed');\n\n const text = f\n .append('div')\n .style('display', 'table')\n .style('height', '100%')\n .style('width', '100%');\n\n text\n .append('div')\n .attr('class', 'label')\n .style('display', 'table-cell')\n .style('text-align', 'center')\n .style('vertical-align', 'middle')\n // .style('color', colour)\n .text(content);\n\n byTspan(content, body, x, y, width, height, textAttrs, conf);\n _setTextAttrs(text, textAttrs);\n }\n\n function _setTextAttrs(toText, fromTextAttrsDict) {\n for (const key in fromTextAttrsDict) {\n if (key in fromTextAttrsDict) {\n // eslint-disable-line\n // noinspection JSUnfilteredForInLoop\n toText.attr(key, fromTextAttrsDict[key]);\n }\n }\n }\n\n return function(conf) {\n return conf.textPlacement === 'fo' ? byFo : conf.textPlacement === 'old' ? byText : byTspan;\n };\n})();\n\nconst initGraphics = function(graphics) {\n graphics\n .append('defs')\n .append('marker')\n .attr('id', 'arrowhead')\n .attr('refX', 5)\n .attr('refY', 2)\n .attr('markerWidth', 6)\n .attr('markerHeight', 4)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 0,0 V 4 L6,2 Z'); // this is actual shape for arrowhead\n};\n\nexport default {\n drawRect,\n drawCircle,\n drawSection,\n drawText,\n drawLabel,\n drawTask,\n drawBackgroundRect,\n getTextObj,\n getNoteRect,\n initGraphics\n};\n","import { select } from 'd3';\nimport { parser } from './parser/journey';\nimport journeyDb from './journeyDb';\nimport svgDraw from './svgDraw';\n\nparser.yy = journeyDb;\n\nconst conf = {\n leftMargin: 150,\n diagramMarginX: 50,\n diagramMarginY: 20,\n // Margin between tasks\n taskMargin: 50,\n // Width of task boxes\n width: 150,\n // Height of task boxes\n height: 50,\n taskFontSize: 14,\n taskFontFamily: '\"Open-Sans\", \"sans-serif\"',\n // Margin around loop boxes\n boxMargin: 10,\n boxTextMargin: 5,\n noteMargin: 10,\n // Space between messages\n messageMargin: 35,\n // Multiline message alignment\n messageAlign: 'center',\n // Depending on css styling this might need adjustment\n // Projects the edge of the diagram downwards\n bottomMarginAdj: 1,\n\n // width of activation box\n activationWidth: 10,\n\n // text placement as: tspan | fo | old only text as before\n textPlacement: 'fo',\n\n actorColours: ['#8FBC8F', '#7CFC00', '#00FFFF', '#20B2AA', '#B0E0E6', '#FFFFE0'],\n\n sectionFills: ['#191970', '#8B008B', '#4B0082', '#2F4F4F', '#800000', '#8B4513', '#00008B'],\n sectionColours: ['#fff']\n};\n\nexport const setConf = function(cnf) {\n const keys = Object.keys(cnf);\n\n keys.forEach(function(key) {\n conf[key] = cnf[key];\n });\n};\n\nconst actors = {};\n\nfunction drawActorLegend(diagram) {\n // Draw the actors\n let yPos = 60;\n Object.keys(actors).forEach(person => {\n const colour = actors[person];\n\n const circleData = {\n cx: 20,\n cy: yPos,\n r: 7,\n fill: colour,\n stroke: '#000'\n };\n svgDraw.drawCircle(diagram, circleData);\n\n const labelData = {\n x: 40,\n y: yPos + 7,\n fill: '#666',\n text: person\n };\n svgDraw.drawText(diagram, labelData);\n\n yPos += 20;\n });\n}\n\nconst LEFT_MARGIN = conf.leftMargin;\nexport const draw = function(text, id) {\n parser.yy.clear();\n parser.parse(text + '\\n');\n\n bounds.init();\n const diagram = select('#' + id);\n diagram.attr('xmlns:xlink', 'http://www.w3.org/1999/xlink');\n\n svgDraw.initGraphics(diagram);\n\n const tasks = parser.yy.getTasks();\n const title = parser.yy.getTitle();\n\n const actorNames = parser.yy.getActors();\n for (let member in actors) delete actors[member];\n let actorPos = 0;\n actorNames.forEach(actorName => {\n actors[actorName] = conf.actorColours[actorPos % conf.actorColours.length];\n actorPos++;\n });\n\n drawActorLegend(diagram);\n bounds.insert(0, 0, LEFT_MARGIN, Object.keys(actors).length * 50);\n\n drawTasks(diagram, tasks, 0);\n\n const box = bounds.getBounds();\n if (title) {\n diagram\n .append('text')\n .text(title)\n .attr('x', LEFT_MARGIN)\n .attr('font-size', '4ex')\n .attr('font-weight', 'bold')\n .attr('y', 25);\n }\n const height = box.stopy - box.starty + 2 * conf.diagramMarginY;\n const width = LEFT_MARGIN + box.stopx + 2 * conf.diagramMarginX;\n if (conf.useMaxWidth) {\n diagram.attr('height', '100%');\n diagram.attr('width', '100%');\n diagram.attr('style', 'max-width:' + width + 'px;');\n } else {\n diagram.attr('height', height);\n diagram.attr('width', width);\n }\n\n // Draw activity line\n diagram\n .append('line')\n .attr('x1', LEFT_MARGIN)\n .attr('y1', conf.height * 4) // One section head + one task + margins\n .attr('x2', width - LEFT_MARGIN - 4) // Subtract stroke width so arrow point is retained\n .attr('y2', conf.height * 4)\n .attr('stroke-width', 4)\n .attr('stroke', 'black')\n .attr('marker-end', 'url(#arrowhead)');\n\n const extraVertForTitle = title ? 70 : 0;\n diagram.attr('viewBox', `${box.startx} -25 ${width} ${height + extraVertForTitle}`);\n diagram.attr('preserveAspectRatio', 'xMinYMin meet');\n};\n\nexport const bounds = {\n data: {\n startx: undefined,\n stopx: undefined,\n starty: undefined,\n stopy: undefined\n },\n verticalPos: 0,\n\n sequenceItems: [],\n init: function() {\n this.sequenceItems = [];\n this.data = {\n startx: undefined,\n stopx: undefined,\n starty: undefined,\n stopy: undefined\n };\n this.verticalPos = 0;\n },\n updateVal: function(obj, key, val, fun) {\n if (typeof obj[key] === 'undefined') {\n obj[key] = val;\n } else {\n obj[key] = fun(val, obj[key]);\n }\n },\n updateBounds: function(startx, starty, stopx, stopy) {\n const _self = this;\n let cnt = 0;\n function updateFn(type) {\n return function updateItemBounds(item) {\n cnt++;\n // The loop sequenceItems is a stack so the biggest margins in the beginning of the sequenceItems\n const n = _self.sequenceItems.length - cnt + 1;\n\n _self.updateVal(item, 'starty', starty - n * conf.boxMargin, Math.min);\n _self.updateVal(item, 'stopy', stopy + n * conf.boxMargin, Math.max);\n\n _self.updateVal(bounds.data, 'startx', startx - n * conf.boxMargin, Math.min);\n _self.updateVal(bounds.data, 'stopx', stopx + n * conf.boxMargin, Math.max);\n\n if (!(type === 'activation')) {\n _self.updateVal(item, 'startx', startx - n * conf.boxMargin, Math.min);\n _self.updateVal(item, 'stopx', stopx + n * conf.boxMargin, Math.max);\n\n _self.updateVal(bounds.data, 'starty', starty - n * conf.boxMargin, Math.min);\n _self.updateVal(bounds.data, 'stopy', stopy + n * conf.boxMargin, Math.max);\n }\n };\n }\n\n this.sequenceItems.forEach(updateFn());\n },\n insert: function(startx, starty, stopx, stopy) {\n const _startx = Math.min(startx, stopx);\n const _stopx = Math.max(startx, stopx);\n const _starty = Math.min(starty, stopy);\n const _stopy = Math.max(starty, stopy);\n\n this.updateVal(bounds.data, 'startx', _startx, Math.min);\n this.updateVal(bounds.data, 'starty', _starty, Math.min);\n this.updateVal(bounds.data, 'stopx', _stopx, Math.max);\n this.updateVal(bounds.data, 'stopy', _stopy, Math.max);\n\n this.updateBounds(_startx, _starty, _stopx, _stopy);\n },\n bumpVerticalPos: function(bump) {\n this.verticalPos = this.verticalPos + bump;\n this.data.stopy = this.verticalPos;\n },\n getVerticalPos: function() {\n return this.verticalPos;\n },\n getBounds: function() {\n return this.data;\n }\n};\n\nconst fills = conf.sectionFills;\nconst textColours = conf.sectionColours;\n\nexport const drawTasks = function(diagram, tasks, verticalPos) {\n let lastSection = '';\n const sectionVHeight = conf.height * 2 + conf.diagramMarginY;\n const taskPos = verticalPos + sectionVHeight;\n\n let sectionNumber = 0;\n let fill = '#CCC';\n let colour = 'black';\n let num = 0;\n\n // Draw the tasks\n for (let i = 0; i < tasks.length; i++) {\n let task = tasks[i];\n if (lastSection !== task.section) {\n fill = fills[sectionNumber % fills.length];\n num = sectionNumber % fills.length;\n colour = textColours[sectionNumber % textColours.length];\n\n const section = {\n x: i * conf.taskMargin + i * conf.width + LEFT_MARGIN,\n y: 50,\n text: task.section,\n fill,\n num,\n colour\n };\n\n svgDraw.drawSection(diagram, section, conf);\n lastSection = task.section;\n sectionNumber++;\n }\n\n // Collect the actors involved in the task\n const taskActors = task.people.reduce((acc, actorName) => {\n if (actors[actorName]) {\n acc[actorName] = actors[actorName];\n }\n\n return acc;\n }, {});\n\n // Add some rendering data to the object\n task.x = i * conf.taskMargin + i * conf.width + LEFT_MARGIN;\n task.y = taskPos;\n task.width = conf.diagramMarginX;\n task.height = conf.diagramMarginY;\n task.colour = colour;\n task.fill = fill;\n task.num = num;\n task.actors = taskActors;\n\n // Draw the box with the attached line\n svgDraw.drawTask(diagram, task, conf);\n bounds.insert(task.x, task.y, task.x + task.width + conf.taskMargin, 300 + 5 * 30); // stopy is the length of the descenders.\n }\n};\n\nexport default {\n setConf,\n draw\n};\n","const getStyles = options =>\n `g.classGroup text {\n fill: ${options.nodeBorder};\n fill: ${options.classText};\n stroke: none;\n font-family: ${options.fontFamily};\n font-size: 10px;\n\n .title {\n font-weight: bolder;\n }\n}\n.node rect,\n .node circle,\n .node ellipse,\n .node polygon,\n .node path {\n fill: ${options.mainBkg};\n stroke: ${options.nodeBorder};\n stroke-width: 1px;\n }\n\n\n.divider {\n stroke: ${options.nodeBorder};\n stroke: 1;\n}\n\ng.clickable {\n cursor: pointer;\n}\n\ng.classGroup rect {\n fill: ${options.nodeBkg};\n stroke: ${options.nodeBorder};\n}\n\ng.classGroup line {\n stroke: ${options.nodeBorder};\n stroke-width: 1;\n}\n\n.classLabel .box {\n stroke: none;\n stroke-width: 0;\n fill: ${options.nodeBkg};\n opacity: 0.5;\n}\n\n.classLabel .label {\n fill: ${options.nodeBorder};\n font-size: 10px;\n}\n\n.relation {\n stroke: ${options.lineColor};\n stroke-width: 1;\n fill: none;\n}\n\n.dashed-line{\n stroke-dasharray: 3;\n}\n\n#compositionStart, .composition {\n fill: ${options.lineColor} !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n#compositionEnd, .composition {\n fill: ${options.lineColor} !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n#dependencyStart, .dependency {\n fill: ${options.lineColor} !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n#dependencyStart, .dependency {\n fill: ${options.lineColor} !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n#extensionStart, .extension {\n fill: ${options.lineColor} !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n#extensionEnd, .extension {\n fill: ${options.lineColor} !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n#aggregationStart, .aggregation {\n fill: ${options.nodeBkg} !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n#aggregationEnd, .aggregation {\n fill: ${options.nodeBkg} !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n`;\n\nexport default getStyles;\n","const getStyles = options =>\n `.label {\n font-family: ${options.fontFamily};\n color: ${options.textColor};\n }\n\n .label text {\n fill: ${options.textColor};\n }\n\n .node rect,\n .node circle,\n .node ellipse,\n .node polygon,\n .node path {\n fill: ${options.mainBkg};\n stroke: ${options.nodeBorder};\n stroke-width: 1px;\n }\n\n .node .label {\n text-align: center;\n }\n .node.clickable {\n cursor: pointer;\n }\n\n .arrowheadPath {\n fill: ${options.arrowheadColor};\n }\n\n .edgePath .path {\n stroke: ${options.lineColor};\n stroke-width: 1.5px;\n }\n\n .flowchart-link {\n stroke: ${options.lineColor};\n fill: none;\n }\n\n .edgeLabel {\n background-color: ${options.edgeLabelBackground};\n rect {\n opacity: 0.5;\n }\n text-align: center;\n }\n\n .cluster rect {\n fill: ${options.secondBkg};\n stroke: ${options.clusterBorder};\n stroke-width: 1px;\n }\n\n .cluster text {\n fill: ${options.titleColor};\n }\n\n div.mermaidTooltip {\n position: absolute;\n text-align: center;\n max-width: 200px;\n padding: 2px;\n font-family: ${options.fontFamily};\n font-size: 12px;\n background: ${options.secondBkg};\n border: 1px solid ${options.border2};\n border-radius: 2px;\n pointer-events: none;\n z-index: 100;\n }\n`;\n\nexport default getStyles;\n","const getStyles = options =>\n `g.stateGroup text {\n fill: ${options.nodeBorder};\n stroke: none;\n font-size: 10px;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family);\n}\ng.stateGroup text {\n fill: ${options.textColor};\n stroke: none;\n font-size: 10px;\n\n}\ng.stateGroup .state-title {\n font-weight: bolder;\n fill: ${options.labelColor};\n}\n\ng.stateGroup rect {\n fill: ${options.nodeBkg};\n stroke: ${options.nodeBorder};\n}\n\ng.stateGroup line {\n stroke: ${options.lineColor};\n stroke-width: 1;\n}\n\n.transition {\n stroke: ${options.lineColor};\n stroke-width: 1;\n fill: none;\n}\n\n.stateGroup .composit {\n fill: ${options.background};\n border-bottom: 1px\n}\n\n.stateGroup .alt-composit {\n fill: #e0e0e0;\n border-bottom: 1px\n}\n\n.state-note {\n stroke: ${options.noteBorderColor};\n fill: ${options.noteBkgColor};\n\n text {\n fill: black;\n stroke: none;\n font-size: 10px;\n }\n}\n\n.stateLabel .box {\n stroke: none;\n stroke-width: 0;\n fill: ${options.nodeBkg};\n opacity: 0.5;\n}\n\n.stateLabel text {\n fill: ${options.labelColor};\n font-size: 10px;\n font-weight: bold;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family);\n}\n\n.node circle.state-start {\n fill: black;\n stroke: black;\n}\n.node circle.state-end {\n fill: black;\n stroke: white;\n stroke-width: 1.5\n}\n\n.node rect {\n fill: ${options.mainBkg};\n stroke: ${options.nodeBorder};\n stroke-width: 1px;\n}\n#statediagram-barbEnd {\n fill: ${options.lineColor};\n}\n\n.statediagram-cluster rect {\n fill: ${options.nodeBkg};\n stroke: ${options.nodeBorder};\n stroke-width: 1px;\n}\n\n.cluster-label, .nodeLabel {\n color: ${options.textColor};\n}\n\n.statediagram-cluster rect.outer {\n rx: 5px;\n ry: 5px;\n}\n.statediagram-state .divider {\n stroke: ${options.nodeBorder};\n}\n\n.statediagram-state .title-state {\n rx: 5px;\n ry: 5px;\n}\n.statediagram-cluster.statediagram-cluster .inner {\n fill: ${options.background};\n}\n.statediagram-cluster.statediagram-cluster-alt .inner {\n fill: #e0e0e0;\n}\n\n.statediagram-cluster .inner {\n rx:0;\n ry:0;\n}\n\n.statediagram-state rect.basic {\n rx: 5px;\n ry: 5px;\n}\n.statediagram-state rect.divider {\n stroke-dasharray: 10,10;\n fill: ${options.altBackground ? options.altBackground : '#efefef'};\n}\n\n.note-edge {\n stroke-dasharray: 5;\n}\n\n.statediagram-note rect {\n fill: ${options.noteBkgColor};\n stroke: ${options.noteBorderColor};\n stroke-width: 1px;\n rx: 0;\n ry: 0;\n}\n.statediagram-note rect {\n fill: ${options.noteBkgColor};\n stroke: ${options.noteBorderColor};\n stroke-width: 1px;\n rx: 0;\n ry: 0;\n}\n\n.statediagram-note .nodeLabel {\n color: ${options.noteTextColor};\n}\n\n#dependencyStart, #dependencyEnd {\n fill: ${options.lineColor};\n stroke: ${options.lineColor};\n stroke-width: 1;\n}\n`;\n\nexport default getStyles;\n","import classDiagram from './diagrams/class/styles';\nimport er from './diagrams/er/styles';\nimport flowchart from './diagrams/flowchart/styles';\nimport gantt from './diagrams/gantt/styles';\nimport git from './diagrams/git/styles';\nimport info from './diagrams/info/styles';\nimport pie from './diagrams/pie/styles';\nimport sequence from './diagrams/sequence/styles';\nimport stateDiagram from './diagrams/state/styles';\nimport journey from './diagrams/user-journey/styles';\n\nconst themes = {\n flowchart,\n 'flowchart-v2': flowchart,\n sequence,\n gantt,\n class: classDiagram,\n 'classDiagram-v2': classDiagram,\n stateDiagram,\n state: stateDiagram,\n git,\n info,\n pie,\n er,\n journey\n};\n\nexport const calcThemeVariables = (theme, userOverRides) => theme.calcColors(userOverRides);\n\nconst getStyles = (type, userStyles, options) => {\n return ` {\n font-family: ${options.fontFamily};\n font-size: ${options.fontSize};\n fill: ${options.textColor}\n }\n\n /* Classes common for multiple diagrams */\n\n .error-icon {\n fill: ${options.errorBkgColor};\n }\n .error-text {\n fill: ${options.errorTextColor};\n stroke: ${options.errorTextColor};\n }\n\n .edge-thickness-normal {\n stroke-width: 2px;\n }\n .edge-thickness-thick {\n stroke-width: 3.5px\n }\n .edge-pattern-solid {\n stroke-dasharray: 0;\n }\n\n .edge-pattern-dashed{\n stroke-dasharray: 3;\n }\n .edge-pattern-dotted {\n stroke-dasharray: 2;\n }\n\n .marker {\n fill: ${options.lineColor};\n }\n .marker.cross {\n stroke: ${options.lineColor};\n }\n\n svg {\n font-family: ${options.fontFamily};\n font-size: ${options.fontSize};\n }\n\n ${themes[type](options)}\n\n ${userStyles}\n\n ${type} { fill: apa;}\n`;\n};\n\nexport default getStyles;\n","const getStyles = options =>\n `.actor {\n stroke: ${options.actorBorder};\n fill: ${options.actorBkg};\n }\n\n text.actor > tspan {\n fill: ${options.actorTextColor};\n stroke: none;\n }\n\n .actor-line {\n stroke: ${options.actorLineColor};\n }\n\n .messageLine0 {\n stroke-width: 1.5;\n stroke-dasharray: none;\n stroke: ${options.signalColor};\n }\n\n .messageLine1 {\n stroke-width: 1.5;\n stroke-dasharray: 2, 2;\n stroke: ${options.signalColor};\n }\n\n #arrowhead path {\n fill: ${options.signalColor};\n stroke: ${options.signalColor};\n }\n\n .sequenceNumber {\n fill: ${options.sequenceNumberColor};\n }\n\n #sequencenumber {\n fill: ${options.signalColor};\n }\n\n #crosshead path {\n fill: ${options.signalColor};\n stroke: ${options.signalColor};\n }\n\n .messageText {\n fill: ${options.signalTextColor};\n stroke: ${options.signalTextColor};\n }\n\n .labelBox {\n stroke: ${options.labelBoxBorderColor};\n fill: ${options.labelBoxBkgColor};\n }\n\n .labelText, .labelText > tspan {\n fill: ${options.labelTextColor};\n stroke: none;\n }\n\n .loopText, .loopText > tspan {\n fill: ${options.loopTextColor};\n stroke: none;\n }\n\n .loopLine {\n stroke-width: 2px;\n stroke-dasharray: 2, 2;\n stroke: ${options.labelBoxBorderColor};\n fill: ${options.labelBoxBorderColor};\n }\n\n .note {\n //stroke: #decc93;\n stroke: ${options.noteBorderColor};\n fill: ${options.noteBkgColor};\n }\n\n .noteText, .noteText > tspan {\n fill: ${options.noteTextColor};\n stroke: none;\n }\n\n .activation0 {\n fill: ${options.activationBkgColor};\n stroke: ${options.activationBorderColor};\n }\n\n .activation1 {\n fill: ${options.activationBkgColor};\n stroke: ${options.activationBorderColor};\n }\n\n .activation2 {\n fill: ${options.activationBkgColor};\n stroke: ${options.activationBorderColor};\n }\n`;\n\nexport default getStyles;\n","const getStyles = options =>\n `\n .mermaid-main-font {\n font-family: \"trebuchet ms\", verdana, arial;\n font-family: var(--mermaid-font-family);\n }\n\n .section {\n stroke: none;\n opacity: 0.2;\n }\n\n .section0 {\n fill: ${options.sectionBkgColor};\n }\n\n .section2 {\n fill: ${options.sectionBkgColor2};\n }\n\n .section1,\n .section3 {\n fill: ${options.altSectionBkgColor};\n opacity: 0.2;\n }\n\n .sectionTitle0 {\n fill: ${options.titleColor};\n }\n\n .sectionTitle1 {\n fill: ${options.titleColor};\n }\n\n .sectionTitle2 {\n fill: ${options.titleColor};\n }\n\n .sectionTitle3 {\n fill: ${options.titleColor};\n }\n\n .sectionTitle {\n text-anchor: start;\n font-size: 11px;\n text-height: 14px;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family);\n\n }\n\n\n /* Grid and axis */\n\n .grid .tick {\n stroke: ${options.gridColor};\n opacity: 0.8;\n shape-rendering: crispEdges;\n text {\n font-family: ${options.fontFamily};\n fill: ${options.textColor};\n }\n }\n\n .grid path {\n stroke-width: 0;\n }\n\n\n /* Today line */\n\n .today {\n fill: none;\n stroke: ${options.todayLineColor};\n stroke-width: 2px;\n }\n\n\n /* Task styling */\n\n /* Default task */\n\n .task {\n stroke-width: 2;\n }\n\n .taskText {\n text-anchor: middle;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family);\n }\n\n .taskText:not([font-size]) {\n font-size: 11px;\n }\n\n .taskTextOutsideRight {\n fill: ${options.taskTextDarkColor};\n text-anchor: start;\n font-size: 11px;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family);\n\n }\n\n .taskTextOutsideLeft {\n fill: ${options.taskTextDarkColor};\n text-anchor: end;\n font-size: 11px;\n }\n\n /* Special case clickable */\n .task.clickable {\n cursor: pointer;\n }\n .taskText.clickable {\n cursor: pointer;\n fill: ${options.taskTextClickableColor} !important;\n font-weight: bold;\n }\n\n .taskTextOutsideLeft.clickable {\n cursor: pointer;\n fill: ${options.taskTextClickableColor} !important;\n font-weight: bold;\n }\n\n .taskTextOutsideRight.clickable {\n cursor: pointer;\n fill: ${options.taskTextClickableColor} !important;\n font-weight: bold;\n }\n\n /* Specific task settings for the sections*/\n\n .taskText0,\n .taskText1,\n .taskText2,\n .taskText3 {\n fill: ${options.taskTextColor};\n }\n\n .task0,\n .task1,\n .task2,\n .task3 {\n fill: ${options.taskBkgColor};\n stroke: ${options.taskBorderColor};\n }\n\n .taskTextOutside0,\n .taskTextOutside2\n {\n fill: ${options.taskTextOutsideColor};\n }\n\n .taskTextOutside1,\n .taskTextOutside3 {\n fill: ${options.taskTextOutsideColor};\n }\n\n\n /* Active task */\n\n .active0,\n .active1,\n .active2,\n .active3 {\n fill: ${options.activeTaskBkgColor};\n stroke: ${options.activeTaskBorderColor};\n }\n\n .activeText0,\n .activeText1,\n .activeText2,\n .activeText3 {\n fill: ${options.taskTextDarkColor} !important;\n }\n\n\n /* Completed task */\n\n .done0,\n .done1,\n .done2,\n .done3 {\n stroke: ${options.doneTaskBorderColor};\n fill: ${options.doneTaskBkgColor};\n stroke-width: 2;\n }\n\n .doneText0,\n .doneText1,\n .doneText2,\n .doneText3 {\n fill: ${options.taskTextDarkColor} !important;\n }\n\n\n /* Tasks on the critical line */\n\n .crit0,\n .crit1,\n .crit2,\n .crit3 {\n stroke: ${options.critBorderColor};\n fill: ${options.critBkgColor};\n stroke-width: 2;\n }\n\n .activeCrit0,\n .activeCrit1,\n .activeCrit2,\n .activeCrit3 {\n stroke: ${options.critBorderColor};\n fill: ${options.activeTaskBkgColor};\n stroke-width: 2;\n }\n\n .doneCrit0,\n .doneCrit1,\n .doneCrit2,\n .doneCrit3 {\n stroke: ${options.critBorderColor};\n fill: ${options.doneTaskBkgColor};\n stroke-width: 2;\n cursor: pointer;\n shape-rendering: crispEdges;\n }\n\n .milestone {\n transform: rotate(45deg) scale(0.8,0.8);\n }\n\n .milestoneText {\n font-style: italic;\n }\n .doneCritText0,\n .doneCritText1,\n .doneCritText2,\n .doneCritText3 {\n fill: ${options.taskTextDarkColor} !important;\n }\n\n .activeCritText0,\n .activeCritText1,\n .activeCritText2,\n .activeCritText3 {\n fill: ${options.taskTextDarkColor} !important;\n }\n\n .titleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${options.taskTextDarkColor} ;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family);\n }\n`;\n\nexport default getStyles;\n","const getStyles = () =>\n `\n .commit-id,\n .commit-msg,\n .branch-label {\n fill: lightgrey;\n color: lightgrey;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family);\n }\n`;\n\nexport default getStyles;\n","const getStyles = () => ``;\n\nexport default getStyles;\n","const getStyles = options =>\n `.pieTitleText {\n text-anchor: middle;\n font-size: 25px;\n fill: ${options.taskTextDarkColor};\n font-family: ${options.fontFamily};\n }\n .slice {\n font-family: ${options.fontFamily};\n fill: ${options.textColor};\n // fill: white;\n }\n .legend text {\n fill: ${options.taskTextDarkColor};\n font-family: ${options.fontFamily};\n font-size: 17px;\n }\n`;\n\nexport default getStyles;\n","const getStyles = options =>\n `\n .entityBox {\n fill: ${options.mainBkg};\n stroke: ${options.nodeBorder};\n }\n\n .relationshipLabelBox {\n fill: ${options.edgeLabelBackground};\n fillopactity: 0;\n background-color: ${options.edgeLabelBackground};\n rect {\n opacity: 0.5;\n }\n }\n\n .relationshipLine {\n stroke: ${options.lineColor};\n }\n`;\n\nexport default getStyles;\n","const getStyles = options =>\n `.label {\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family);\n color: ${options.textColor};\n }\n .mouth {\n stroke: #666;\n }\n\n line {\n stroke: ${options.textColor}\n }\n\n .legend {\n fill: ${options.textColor};\n }\n\n .label text {\n fill: #333;\n }\n .label {\n color: ${options.textColor}\n }\n\n .face {\n fill: #FFF8DC;\n stroke: #999;\n }\n\n .node rect,\n .node circle,\n .node ellipse,\n .node polygon,\n .node path {\n fill: ${options.mainBkg};\n stroke: ${options.nodeBorder};\n stroke-width: 1px;\n }\n\n .node .label {\n text-align: center;\n }\n .node.clickable {\n cursor: pointer;\n }\n\n .arrowheadPath {\n fill: ${options.arrowheadColor};\n }\n\n .edgePath .path {\n stroke: ${options.lineColor};\n stroke-width: 1.5px;\n }\n\n .flowchart-link {\n stroke: ${options.lineColor};\n fill: none;\n }\n\n .edgeLabel {\n background-color: ${options.edgeLabelBackground};\n rect {\n opacity: 0.5;\n }\n text-align: center;\n }\n\n .cluster rect {\n fill: ${options.secondBkg};\n stroke: ${options.clusterBorder};\n stroke-width: 1px;\n }\n\n .cluster text {\n fill: ${options.titleColor};\n }\n\n div.mermaidTooltip {\n position: absolute;\n text-align: center;\n max-width: 200px;\n padding: 2px;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family);\n font-size: 12px;\n background: ${options.secondBkg};\n border: 1px solid ${options.border2};\n border-radius: 2px;\n pointer-events: none;\n z-index: 100;\n }\n\n .task-type-0, .section-type-0 {\n ${options.fillType0 ? `fill: ${options.fillType0}` : ''};\n }\n .task-type-1, .section-type-1 {\n ${options.fillType0 ? `fill: ${options.fillType1}` : ''};\n }\n .task-type-2, .section-type-2 {\n ${options.fillType0 ? `fill: ${options.fillType2}` : ''};\n }\n .task-type-3, .section-type-3 {\n ${options.fillType0 ? `fill: ${options.fillType3}` : ''};\n }\n .task-type-4, .section-type-4 {\n ${options.fillType0 ? `fill: ${options.fillType4}` : ''};\n }\n .task-type-5, .section-type-5 {\n ${options.fillType0 ? `fill: ${options.fillType5}` : ''};\n }\n .task-type-6, .section-type-6 {\n ${options.fillType0 ? `fill: ${options.fillType6}` : ''};\n }\n .task-type-7, .section-type-7 {\n ${options.fillType0 ? `fill: ${options.fillType7}` : ''};\n }\n`;\n\nexport default getStyles;\n","/**\n * This is the api to be used when optionally handling the integration with the web page, instead of using the default integration provided by mermaid.js.\n *\n * The core of this api is the [**render**](Setup.md?id=render) function which, given a graph\n * definition as text, renders the graph/diagram and returns an svg element for the graph.\n *\n * It is is then up to the user of the API to make use of the svg, either insert it somewhere in the page or do something completely different.\n *\n * In addition to the render function, a number of behavioral configuration options are available.\n *\n * @name mermaidAPI\n */\nimport Stylis from 'stylis';\nimport { select } from 'd3';\nimport pkg from '../package.json';\nimport { setConfig, getConfig, setSiteConfig, getSiteConfig } from './config';\nimport { logger, setLogLevel } from './logger';\nimport utils, { assignWithDepth } from './utils';\nimport flowRenderer from './diagrams/flowchart/flowRenderer';\nimport flowRendererV2 from './diagrams/flowchart/flowRenderer-v2';\nimport flowParser from './diagrams/flowchart/parser/flow';\nimport flowDb from './diagrams/flowchart/flowDb';\nimport sequenceRenderer from './diagrams/sequence/sequenceRenderer';\nimport sequenceParser from './diagrams/sequence/parser/sequenceDiagram';\nimport sequenceDb from './diagrams/sequence/sequenceDb';\nimport ganttRenderer from './diagrams/gantt/ganttRenderer';\nimport ganttParser from './diagrams/gantt/parser/gantt';\nimport ganttDb from './diagrams/gantt/ganttDb';\nimport classRenderer from './diagrams/class/classRenderer';\nimport classRendererV2 from './diagrams/class/classRenderer-v2';\nimport classParser from './diagrams/class/parser/classDiagram';\nimport classDb from './diagrams/class/classDb';\nimport stateRenderer from './diagrams/state/stateRenderer';\nimport stateRendererV2 from './diagrams/state/stateRenderer-v2';\nimport stateParser from './diagrams/state/parser/stateDiagram';\nimport stateDb from './diagrams/state/stateDb';\nimport gitGraphRenderer from './diagrams/git/gitGraphRenderer';\nimport gitGraphParser from './diagrams/git/parser/gitGraph';\nimport gitGraphAst from './diagrams/git/gitGraphAst';\nimport infoRenderer from './diagrams/info/infoRenderer';\nimport errorRenderer from './errorRenderer';\nimport infoParser from './diagrams/info/parser/info';\nimport infoDb from './diagrams/info/infoDb';\nimport pieRenderer from './diagrams/pie/pieRenderer';\nimport pieParser from './diagrams/pie/parser/pie';\nimport pieDb from './diagrams/pie/pieDb';\nimport erDb from './diagrams/er/erDb';\nimport erParser from './diagrams/er/parser/erDiagram';\nimport erRenderer from './diagrams/er/erRenderer';\nimport journeyParser from './diagrams/user-journey/parser/journey';\nimport journeyDb from './diagrams/user-journey/journeyDb';\nimport journeyRenderer from './diagrams/user-journey/journeyRenderer';\nimport configApi from './config';\nimport getStyles from './styles';\nimport theme from './themes';\n\nfunction parse(text) {\n const graphInit = utils.detectInit(text);\n if (graphInit) {\n reinitialize(graphInit);\n logger.debug('reinit ', graphInit);\n }\n const graphType = utils.detectType(text);\n let parser;\n\n logger.debug('Type ' + graphType);\n switch (graphType) {\n case 'git':\n parser = gitGraphParser;\n parser.parser.yy = gitGraphAst;\n break;\n case 'flowchart':\n flowDb.clear();\n parser = flowParser;\n parser.parser.yy = flowDb;\n break;\n case 'flowchart-v2':\n flowDb.clear();\n parser = flowParser;\n parser.parser.yy = flowDb;\n break;\n case 'sequence':\n parser = sequenceParser;\n parser.parser.yy = sequenceDb;\n break;\n case 'gantt':\n parser = ganttParser;\n parser.parser.yy = ganttDb;\n break;\n case 'class':\n parser = classParser;\n parser.parser.yy = classDb;\n break;\n case 'classDiagram':\n parser = classParser;\n parser.parser.yy = classDb;\n break;\n case 'state':\n parser = stateParser;\n parser.parser.yy = stateDb;\n break;\n case 'stateDiagram':\n parser = stateParser;\n parser.parser.yy = stateDb;\n break;\n case 'info':\n logger.debug('info info info');\n parser = infoParser;\n parser.parser.yy = infoDb;\n break;\n case 'pie':\n logger.debug('pie');\n parser = pieParser;\n parser.parser.yy = pieDb;\n break;\n case 'er':\n logger.debug('er');\n parser = erParser;\n parser.parser.yy = erDb;\n break;\n case 'journey':\n logger.debug('Journey');\n parser = journeyParser;\n parser.parser.yy = journeyDb;\n break;\n }\n parser.parser.yy.graphType = graphType;\n parser.parser.yy.parseError = (str, hash) => {\n const error = { str, hash };\n throw error;\n };\n\n parser.parse(text);\n return parser;\n}\n\nexport const encodeEntities = function(text) {\n let txt = text;\n\n txt = txt.replace(/style.*:\\S*#.*;/g, function(s) {\n const innerTxt = s.substring(0, s.length - 1);\n return innerTxt;\n });\n txt = txt.replace(/classDef.*:\\S*#.*;/g, function(s) {\n const innerTxt = s.substring(0, s.length - 1);\n return innerTxt;\n });\n\n txt = txt.replace(/#\\w+;/g, function(s) {\n const innerTxt = s.substring(1, s.length - 1);\n\n const isInt = /^\\+?\\d+$/.test(innerTxt);\n if (isInt) {\n return 'fl°°' + innerTxt + '¶ß';\n } else {\n return 'fl°' + innerTxt + '¶ß';\n }\n });\n\n return txt;\n};\n\nexport const decodeEntities = function(text) {\n let txt = text;\n\n txt = txt.replace(/fl°°/g, function() {\n return '';\n });\n txt = txt.replace(/fl°/g, function() {\n return '&';\n });\n txt = txt.replace(/¶ß/g, function() {\n return ';';\n });\n\n return txt;\n};\n/**\n * Function that renders an svg with a graph from a chart definition. Usage example below.\n *\n * ```js\n * mermaidAPI.initialize({\n * startOnLoad:true\n * });\n * $(function(){\n * const graphDefinition = 'graph TB\\na-->b';\n * const cb = function(svgGraph){\n * console.log(svgGraph);\n * };\n * mermaidAPI.render('id1',graphDefinition,cb);\n * });\n *```\n * @param id the id of the element to be rendered\n * @param _txt the graph definition\n * @param cb callback which is called after rendering is finished with the svg code as inparam.\n * @param container selector to element in which a div with the graph temporarily will be inserted. In one is\n * provided a hidden div will be inserted in the body of the page instead. The element will be removed when rendering is\n * completed.\n */\nconst render = function(id, _txt, cb, container) {\n let txt = _txt;\n const graphInit = utils.detectInit(txt);\n if (graphInit) {\n reinitialize(graphInit);\n } else {\n configApi.reset();\n const siteConfig = getSiteConfig();\n updateRendererConfigs(siteConfig);\n }\n\n const cnf = getConfig();\n // Check the maximum allowed text size\n if (_txt.length > cnf.maxTextSize) {\n txt = 'graph TB;a[Maximum text size in diagram exceeded];style a fill:#faa';\n }\n\n if (typeof container !== 'undefined') {\n container.innerHTML = '';\n\n select(container)\n .append('div')\n .attr('id', 'd' + id)\n .attr('style', 'font-family: ' + cnf.fontFamily)\n .append('svg')\n .attr('id', id)\n .attr('width', '100%')\n .attr('xmlns', 'http://www.w3.org/2000/svg')\n .append('g');\n } else {\n const existingSvg = document.getElementById(id);\n if (existingSvg) {\n existingSvg.remove();\n }\n const element = document.querySelector('#' + 'd' + id);\n if (element) {\n element.remove();\n }\n\n select('body')\n .append('div')\n .attr('id', 'd' + id)\n .append('svg')\n .attr('id', id)\n .attr('width', '100%')\n .attr('xmlns', 'http://www.w3.org/2000/svg')\n .append('g');\n }\n\n window.txt = txt;\n txt = encodeEntities(txt);\n\n const element = select('#d' + id).node();\n const graphType = utils.detectType(txt);\n\n // insert inline style into svg\n const svg = element.firstChild;\n const firstChild = svg.firstChild;\n\n let userStyles = '';\n // user provided theme CSS\n if (cnf.themeCSS !== undefined) {\n userStyles += `\\n${cnf.themeCSS}`;\n }\n // user provided theme CSS\n if (cnf.fontFamily !== undefined) {\n userStyles += `\\n:root { --mermaid-font-family: ${cnf.fontFamily}}`;\n }\n // user provided theme CSS\n if (cnf.altFontFamily !== undefined) {\n userStyles += `\\n:root { --mermaid-alt-font-family: ${cnf.altFontFamily}}`;\n }\n\n // classDef\n if (graphType === 'flowchart' || graphType === 'flowchart-v2' || graphType === 'graph') {\n const classes = flowRenderer.getClasses(txt);\n for (const className in classes) {\n userStyles += `\\n.${className} > * { ${classes[className].styles.join(\n ' !important; '\n )} !important; }`;\n if (classes[className].textStyles) {\n userStyles += `\\n.${className} tspan { ${classes[className].textStyles.join(\n ' !important; '\n )} !important; }`;\n }\n }\n }\n const stylis = new Stylis();\n const rules = stylis(`#${id}`, getStyles(graphType, userStyles, cnf.themeVariables));\n\n const style1 = document.createElement('style');\n style1.innerHTML = rules;\n svg.insertBefore(style1, firstChild);\n\n // Verify that the generated svgs are ok before removing this\n\n // const style2 = document.createElement('style');\n // const cs = window.getComputedStyle(svg);\n // style2.innerHTML = `#d${id} * {\n // color: ${cs.color};\n // // font: ${cs.font};\n // // font-family: Arial;\n // // font-size: 24px;\n // }`;\n // svg.insertBefore(style2, firstChild);\n\n try {\n switch (graphType) {\n case 'git':\n cnf.flowchart.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;\n gitGraphRenderer.setConf(cnf.git);\n gitGraphRenderer.draw(txt, id, false);\n break;\n case 'flowchart':\n cnf.flowchart.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;\n flowRenderer.setConf(cnf.flowchart);\n flowRenderer.draw(txt, id, false);\n break;\n case 'flowchart-v2':\n cnf.flowchart.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;\n flowRendererV2.setConf(cnf.flowchart);\n flowRendererV2.draw(txt, id, false);\n break;\n case 'sequence':\n cnf.sequence.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;\n if (cnf.sequenceDiagram) {\n // backwards compatibility\n sequenceRenderer.setConf(Object.assign(cnf.sequence, cnf.sequenceDiagram));\n console.error(\n '`mermaid config.sequenceDiagram` has been renamed to `config.sequence`. Please update your mermaid config.'\n );\n } else {\n sequenceRenderer.setConf(cnf.sequence);\n }\n sequenceRenderer.draw(txt, id);\n break;\n case 'gantt':\n cnf.gantt.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;\n ganttRenderer.setConf(cnf.gantt);\n ganttRenderer.draw(txt, id);\n break;\n case 'class':\n cnf.class.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;\n classRenderer.setConf(cnf.class);\n classRenderer.draw(txt, id);\n break;\n case 'classDiagram':\n cnf.class.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;\n classRendererV2.setConf(cnf.class);\n classRendererV2.draw(txt, id);\n break;\n case 'state':\n cnf.class.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;\n stateRenderer.setConf(cnf.state);\n stateRenderer.draw(txt, id);\n break;\n case 'stateDiagram':\n cnf.class.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;\n stateRendererV2.setConf(cnf.state);\n stateRendererV2.draw(txt, id);\n break;\n case 'info':\n cnf.class.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;\n infoRenderer.setConf(cnf.class);\n infoRenderer.draw(txt, id, pkg.version);\n break;\n case 'pie':\n cnf.class.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;\n pieRenderer.setConf(cnf.class);\n pieRenderer.draw(txt, id, pkg.version);\n break;\n case 'er':\n erRenderer.setConf(cnf.er);\n erRenderer.draw(txt, id, pkg.version);\n break;\n case 'journey':\n journeyRenderer.setConf(cnf.journey);\n journeyRenderer.draw(txt, id, pkg.version);\n break;\n }\n } catch (e) {\n // errorRenderer.setConf(cnf.class);\n errorRenderer.draw(id, pkg.version);\n throw e;\n }\n\n select(`[id=\"${id}\"]`)\n .selectAll('foreignobject > *')\n .attr('xmlns', 'http://www.w3.org/1999/xhtml');\n\n // if (cnf.arrowMarkerAbsolute) {\n // url =\n // window.location.protocol +\n // '//' +\n // window.location.host +\n // window.location.pathname +\n // window.location.search;\n // url = url.replace(/\\(/g, '\\\\(');\n // url = url.replace(/\\)/g, '\\\\)');\n // }\n\n // Fix for when the base tag is used\n let svgCode = select('#d' + id).node().innerHTML;\n logger.debug('cnf.arrowMarkerAbsolute', cnf.arrowMarkerAbsolute);\n if (!cnf.arrowMarkerAbsolute || cnf.arrowMarkerAbsolute === 'false') {\n svgCode = svgCode.replace(/marker-end=\"url\\(.*?#/g, 'marker-end=\"url(#', 'g');\n }\n\n svgCode = decodeEntities(svgCode);\n\n if (typeof cb !== 'undefined') {\n switch (graphType) {\n case 'flowchart':\n case 'flowchart-v2':\n cb(svgCode, flowDb.bindFunctions);\n break;\n case 'gantt':\n cb(svgCode, ganttDb.bindFunctions);\n break;\n case 'class':\n cb(svgCode, classDb.bindFunctions);\n break;\n default:\n cb(svgCode);\n }\n } else {\n logger.debug('CB = undefined!');\n }\n\n const node = select('#d' + id).node();\n if (node !== null && typeof node.remove === 'function') {\n select('#d' + id)\n .node()\n .remove();\n }\n\n return svgCode;\n};\n\nlet currentDirective = {};\n\nconst parseDirective = function(statement, context, type) {\n try {\n if (statement !== undefined) {\n statement = statement.trim();\n switch (context) {\n case 'open_directive':\n currentDirective = {};\n break;\n case 'type_directive':\n currentDirective.type = statement.toLowerCase();\n break;\n case 'arg_directive':\n currentDirective.args = JSON.parse(statement);\n break;\n case 'close_directive':\n handleDirective(currentDirective, type);\n currentDirective = null;\n break;\n }\n }\n } catch (error) {\n logger.error(\n `Error while rendering sequenceDiagram directive: ${statement} jison context: ${context}`\n );\n logger.error(error.message);\n }\n};\n\nconst handleDirective = function(directive, type) {\n logger.debug(`Directive type=${directive.type} with args:`, directive.args);\n switch (directive.type) {\n case 'init':\n case 'initialize': {\n ['config'].forEach(prop => {\n if (typeof directive.args[prop] !== 'undefined') {\n if (type === 'flowchart-v2') {\n type = 'flowchart';\n }\n directive.args[type] = directive.args[prop];\n delete directive.args[prop];\n }\n });\n\n reinitialize(directive.args);\n break;\n }\n case 'wrap':\n case 'nowrap':\n directive.args = { config: { wrap: directive.type === 'wrap' } };\n ['config'].forEach(prop => {\n if (typeof directive.args[prop] !== 'undefined') {\n if (type === 'flowchart-v2') {\n type = 'flowchart';\n }\n directive.args[type] = directive.args[prop];\n delete directive.args[prop];\n }\n });\n reinitialize(directive.args);\n break;\n default:\n logger.warn(\n `Unhandled directive: source: '%%{${directive.type}: ${JSON.stringify(\n directive.args ? directive.args : {}\n )}}%%`,\n directive\n );\n break;\n }\n};\n\nfunction updateRendererConfigs(conf) {\n gitGraphRenderer.setConf(conf.git);\n flowRenderer.setConf(conf.flowchart);\n flowRendererV2.setConf(conf.flowchart);\n if (typeof conf['sequenceDiagram'] !== 'undefined') {\n sequenceRenderer.setConf(assignWithDepth(conf.sequence, conf['sequenceDiagram']));\n }\n sequenceRenderer.setConf(conf.sequence);\n ganttRenderer.setConf(conf.gantt);\n classRenderer.setConf(conf.class);\n stateRenderer.setConf(conf.state);\n stateRendererV2.setConf(conf.state);\n infoRenderer.setConf(conf.class);\n pieRenderer.setConf(conf.class);\n erRenderer.setConf(conf.er);\n journeyRenderer.setConf(conf.journey);\n errorRenderer.setConf(conf.class);\n}\n\nfunction reinitialize(options) {\n // console.warn(`mermaidAPI.reinitialize: v${pkg.version}`, options);\n if (options.theme && theme[options.theme]) {\n // Todo merge with user options\n options.themeVariables = options.theme;\n }\n\n // Set default options\n const config = typeof options === 'object' ? setConfig(options) : getSiteConfig();\n updateRendererConfigs(config);\n setLogLevel(config.logLevel);\n logger.debug('mermaidAPI.reinitialize: ', config);\n}\n\nfunction initialize(options) {\n // console.log(`mermaidAPI.initialize: v${pkg.version} ${options}`);\n // Set default options\n\n if (options && options.theme && theme[options.theme]) {\n // Todo merge with user options\n options.themeVariables = theme[options.theme].getThemeVariables(options.themeVariables);\n } else {\n if (options) options.themeVariables = theme.default.getThemeVariables();\n }\n\n const config = typeof options === 'object' ? setSiteConfig(options) : getSiteConfig();\n\n updateRendererConfigs(config);\n setLogLevel(config.logLevel);\n logger.debug('mermaidAPI.initialize: ', config);\n}\n\n// function getConfig () {\n// console.warn('get config')\n// return config\n// }\nconst mermaidAPI = Object.freeze({\n render,\n parse,\n parseDirective,\n initialize,\n reinitialize,\n getConfig,\n getSiteConfig,\n reset: () => {\n // console.warn('reset');\n configApi.reset();\n const siteConfig = getSiteConfig();\n updateRendererConfigs(siteConfig);\n },\n globalReset: () => {\n configApi.reset(configApi.defaultConfig);\n updateRendererConfigs(getConfig());\n },\n defaultConfig: configApi.defaultConfig\n});\n\nsetLogLevel(getConfig().logLevel);\nconfigApi.reset(getConfig());\n\nexport default mermaidAPI;\n/**\n * ## mermaidAPI configuration defaults\n * \n *\n * <script>\n * var config = {\n * theme:'default',\n * logLevel:'fatal',\n * securityLevel:'strict',\n * startOnLoad:true,\n * arrowMarkerAbsolute:false,\n *\n * er:{\n * diagramPadding:20,\n * layoutDirection:'TB',\n * minEntityWidth:100,\n * minEntityHeight:75,\n * entityPadding:15,\n * stroke:'gray',\n * fill:'honeydew',\n * fontSize:12,\n * useMaxWidth:true,\n * },\n * flowchart:{\n * diagramPadding:8,\n * htmlLabels:true,\n * curve:'linear',\n * },\n * sequence:{\n * diagramMarginX:50,\n * diagramMarginY:10,\n * actorMargin:50,\n * width:150,\n * height:65,\n * boxMargin:10,\n * boxTextMargin:5,\n * noteMargin:10,\n * messageMargin:35,\n * messageAlign:'center',\n * mirrorActors:true,\n * bottomMarginAdj:1,\n * useMaxWidth:true,\n * rightAngles:false,\n * showSequenceNumbers:false,\n * },\n * gantt:{\n * titleTopMargin:25,\n * barHeight:20,\n * barGap:4,\n * topPadding:50,\n * leftPadding:75,\n * gridLineStartPadding:35,\n * fontSize:11,\n * fontFamily:'\"Open-Sans\", \"sans-serif\"',\n * numberSectionStyles:4,\n * axisFormat:'%Y-%m-%d',\n * }\n * };\n * mermaid.initialize(config);\n * </script>\n *
\n */\n","/**\n * Web page integration module for the mermaid framework. It uses the mermaidAPI for mermaid functionality and to render\n * the diagrams to svg code.\n */\n// import { decode } from 'he';\nimport decode from 'entity-decode/browser';\nimport mermaidAPI from './mermaidAPI';\nimport { logger } from './logger';\nimport utils from './utils';\n\n/**\n * ## init\n * Function that goes through the document to find the chart definitions in there and render them.\n *\n * The function tags the processed attributes with the attribute data-processed and ignores found elements with the\n * attribute already set. This way the init function can be triggered several times.\n *\n * Optionally, `init` can accept in the second argument one of the following:\n * - a DOM Node\n * - an array of DOM nodes (as would come from a jQuery selector)\n * - a W3C selector, a la `.mermaid`\n *\n * ```mermaid\n * graph LR;\n * a(Find elements)-->b{Processed}\n * b-->|Yes|c(Leave element)\n * b-->|No |d(Transform)\n * ```\n * Renders the mermaid diagrams\n * @param nodes a css selector or an array of nodes\n */\nconst init = function() {\n const conf = mermaidAPI.getConfig();\n // console.log('Starting rendering diagrams (init) - mermaid.init');\n let nodes;\n if (arguments.length >= 2) {\n /*! sequence config was passed as #1 */\n if (typeof arguments[0] !== 'undefined') {\n mermaid.sequenceConfig = arguments[0];\n }\n\n nodes = arguments[1];\n } else {\n nodes = arguments[0];\n }\n\n // if last argument is a function this is the callback function\n let callback;\n if (typeof arguments[arguments.length - 1] === 'function') {\n callback = arguments[arguments.length - 1];\n logger.debug('Callback function found');\n } else {\n if (typeof conf.mermaid !== 'undefined') {\n if (typeof conf.mermaid.callback === 'function') {\n callback = conf.mermaid.callback;\n logger.debug('Callback function found');\n } else {\n logger.debug('No Callback function found');\n }\n }\n }\n nodes =\n nodes === undefined\n ? document.querySelectorAll('.mermaid')\n : typeof nodes === 'string'\n ? document.querySelectorAll(nodes)\n : nodes instanceof window.Node\n ? [nodes]\n : nodes; // Last case - sequence config was passed pick next\n\n logger.debug('Start On Load before: ' + mermaid.startOnLoad);\n if (typeof mermaid.startOnLoad !== 'undefined') {\n logger.debug('Start On Load inner: ' + mermaid.startOnLoad);\n mermaidAPI.initialize({ startOnLoad: mermaid.startOnLoad });\n }\n\n if (typeof mermaid.ganttConfig !== 'undefined') {\n mermaidAPI.initialize({ gantt: mermaid.ganttConfig });\n }\n\n let txt;\n\n for (let i = 0; i < nodes.length; i++) {\n const element = nodes[i];\n\n /*! Check if previously processed */\n if (!element.getAttribute('data-processed')) {\n element.setAttribute('data-processed', true);\n } else {\n continue;\n }\n\n const id = `mermaid-${Date.now()}`;\n\n // Fetch the graph definition including tags\n txt = element.innerHTML;\n\n // transforms the html to pure text\n txt = decode(txt)\n .trim()\n .replace(/
/gi, '
');\n\n const init = utils.detectInit(txt);\n if (init) {\n logger.debug('Detected early reinit: ', init);\n }\n\n try {\n mermaidAPI.render(\n id,\n txt,\n (svgCode, bindFunctions) => {\n element.innerHTML = svgCode;\n if (typeof callback !== 'undefined') {\n callback(id);\n }\n if (bindFunctions) bindFunctions(element);\n },\n element\n );\n } catch (e) {\n logger.warn('Syntax Error rendering');\n logger.warn(e);\n if (this.parseError) {\n this.parseError(e);\n }\n }\n }\n};\n\nconst initialize = function(config) {\n mermaidAPI.reset();\n if (typeof config.mermaid !== 'undefined') {\n if (typeof config.mermaid.startOnLoad !== 'undefined') {\n mermaid.startOnLoad = config.mermaid.startOnLoad;\n }\n if (typeof config.mermaid.htmlLabels !== 'undefined') {\n mermaid.htmlLabels = config.mermaid.htmlLabels;\n }\n }\n mermaidAPI.initialize(config);\n // mermaidAPI.reset();\n};\n\n/**\n * ##contentLoaded\n * Callback function that is called when page is loaded. This functions fetches configuration for mermaid rendering and\n * calls init for rendering the mermaid diagrams on the page.\n */\nconst contentLoaded = function() {\n let config;\n\n if (mermaid.startOnLoad) {\n // No config found, do check API config\n config = mermaidAPI.getConfig();\n if (config.startOnLoad) {\n mermaid.init();\n }\n } else {\n if (typeof mermaid.startOnLoad === 'undefined') {\n logger.debug('In start, no config');\n config = mermaidAPI.getConfig();\n if (config.startOnLoad) {\n mermaid.init();\n }\n }\n }\n};\n\nif (typeof document !== 'undefined') {\n /*!\n * Wait for document loaded before starting the execution\n */\n window.addEventListener(\n 'load',\n function() {\n contentLoaded();\n },\n false\n );\n}\n\nconst mermaid = {\n startOnLoad: true,\n htmlLabels: true,\n\n mermaidAPI,\n parse: mermaidAPI.parse,\n render: mermaidAPI.render,\n\n init,\n initialize,\n\n contentLoaded\n};\n\nexport default mermaid;\n"],"sourceRoot":""}
-=======
-{"version":3,"sources":["webpack://mermaid/webpack/universalModuleDefinition","webpack://mermaid/webpack/bootstrap","webpack://mermaid/./node_modules/d3/dist/package.js","webpack://mermaid/./node_modules/d3-array/src/ascending.js","webpack://mermaid/./node_modules/d3-array/src/bisector.js","webpack://mermaid/./node_modules/d3-array/src/bisect.js","webpack://mermaid/./node_modules/d3-array/src/pairs.js","webpack://mermaid/./node_modules/d3-array/src/cross.js","webpack://mermaid/./node_modules/d3-array/src/descending.js","webpack://mermaid/./node_modules/d3-array/src/number.js","webpack://mermaid/./node_modules/d3-array/src/variance.js","webpack://mermaid/./node_modules/d3-array/src/deviation.js","webpack://mermaid/./node_modules/d3-array/src/extent.js","webpack://mermaid/./node_modules/d3-array/src/array.js","webpack://mermaid/./node_modules/d3-array/src/constant.js","webpack://mermaid/./node_modules/d3-array/src/identity.js","webpack://mermaid/./node_modules/d3-array/src/range.js","webpack://mermaid/./node_modules/d3-array/src/ticks.js","webpack://mermaid/./node_modules/d3-array/src/threshold/sturges.js","webpack://mermaid/./node_modules/d3-array/src/histogram.js","webpack://mermaid/./node_modules/d3-array/src/quantile.js","webpack://mermaid/./node_modules/d3-array/src/threshold/freedmanDiaconis.js","webpack://mermaid/./node_modules/d3-array/src/threshold/scott.js","webpack://mermaid/./node_modules/d3-array/src/max.js","webpack://mermaid/./node_modules/d3-array/src/mean.js","webpack://mermaid/./node_modules/d3-array/src/median.js","webpack://mermaid/./node_modules/d3-array/src/merge.js","webpack://mermaid/./node_modules/d3-array/src/min.js","webpack://mermaid/./node_modules/d3-array/src/permute.js","webpack://mermaid/./node_modules/d3-array/src/scan.js","webpack://mermaid/./node_modules/d3-array/src/shuffle.js","webpack://mermaid/./node_modules/d3-array/src/sum.js","webpack://mermaid/./node_modules/d3-array/src/transpose.js","webpack://mermaid/./node_modules/d3-array/src/zip.js","webpack://mermaid/./node_modules/d3-axis/src/array.js","webpack://mermaid/./node_modules/d3-axis/src/identity.js","webpack://mermaid/./node_modules/d3-axis/src/axis.js","webpack://mermaid/./node_modules/d3-dispatch/src/dispatch.js","webpack://mermaid/./node_modules/d3-selection/src/selector.js","webpack://mermaid/./node_modules/d3-selection/src/selectorAll.js","webpack://mermaid/./node_modules/d3-selection/src/matcher.js","webpack://mermaid/./node_modules/d3-selection/src/selection/sparse.js","webpack://mermaid/./node_modules/d3-selection/src/selection/enter.js","webpack://mermaid/./node_modules/d3-selection/src/selection/data.js","webpack://mermaid/./node_modules/d3-selection/src/selection/sort.js","webpack://mermaid/./node_modules/d3-selection/src/selection/call.js","webpack://mermaid/./node_modules/d3-selection/src/namespaces.js","webpack://mermaid/./node_modules/d3-selection/src/namespace.js","webpack://mermaid/./node_modules/d3-selection/src/selection/attr.js","webpack://mermaid/./node_modules/d3-selection/src/window.js","webpack://mermaid/./node_modules/d3-selection/src/selection/style.js","webpack://mermaid/./node_modules/d3-selection/src/selection/property.js","webpack://mermaid/./node_modules/d3-selection/src/selection/classed.js","webpack://mermaid/./node_modules/d3-selection/src/selection/text.js","webpack://mermaid/./node_modules/d3-selection/src/selection/html.js","webpack://mermaid/./node_modules/d3-selection/src/selection/raise.js","webpack://mermaid/./node_modules/d3-selection/src/selection/lower.js","webpack://mermaid/./node_modules/d3-selection/src/creator.js","webpack://mermaid/./node_modules/d3-selection/src/selection/insert.js","webpack://mermaid/./node_modules/d3-selection/src/selection/remove.js","webpack://mermaid/./node_modules/d3-selection/src/selection/clone.js","webpack://mermaid/./node_modules/d3-selection/src/selection/on.js","webpack://mermaid/./node_modules/d3-selection/src/selection/dispatch.js","webpack://mermaid/./node_modules/d3-selection/src/selection/index.js","webpack://mermaid/./node_modules/d3-selection/src/selection/select.js","webpack://mermaid/./node_modules/d3-selection/src/selection/selectAll.js","webpack://mermaid/./node_modules/d3-selection/src/selection/filter.js","webpack://mermaid/./node_modules/d3-selection/src/constant.js","webpack://mermaid/./node_modules/d3-selection/src/selection/exit.js","webpack://mermaid/./node_modules/d3-selection/src/selection/join.js","webpack://mermaid/./node_modules/d3-selection/src/selection/merge.js","webpack://mermaid/./node_modules/d3-selection/src/selection/order.js","webpack://mermaid/./node_modules/d3-selection/src/selection/nodes.js","webpack://mermaid/./node_modules/d3-selection/src/selection/node.js","webpack://mermaid/./node_modules/d3-selection/src/selection/size.js","webpack://mermaid/./node_modules/d3-selection/src/selection/empty.js","webpack://mermaid/./node_modules/d3-selection/src/selection/each.js","webpack://mermaid/./node_modules/d3-selection/src/selection/append.js","webpack://mermaid/./node_modules/d3-selection/src/selection/datum.js","webpack://mermaid/./node_modules/d3-selection/src/select.js","webpack://mermaid/./node_modules/d3-drag/src/noevent.js","webpack://mermaid/./node_modules/d3-drag/src/nodrag.js","webpack://mermaid/./node_modules/d3-color/src/define.js","webpack://mermaid/./node_modules/d3-color/src/color.js","webpack://mermaid/./node_modules/d3-interpolate/src/basis.js","webpack://mermaid/./node_modules/d3-interpolate/src/basisClosed.js","webpack://mermaid/./node_modules/d3-interpolate/src/constant.js","webpack://mermaid/./node_modules/d3-interpolate/src/color.js","webpack://mermaid/./node_modules/d3-interpolate/src/rgb.js","webpack://mermaid/./node_modules/d3-interpolate/src/numberArray.js","webpack://mermaid/./node_modules/d3-interpolate/src/array.js","webpack://mermaid/./node_modules/d3-interpolate/src/date.js","webpack://mermaid/./node_modules/d3-interpolate/src/number.js","webpack://mermaid/./node_modules/d3-interpolate/src/object.js","webpack://mermaid/./node_modules/d3-interpolate/src/string.js","webpack://mermaid/./node_modules/d3-timer/src/timer.js","webpack://mermaid/./node_modules/d3-interpolate/src/value.js","webpack://mermaid/./node_modules/d3-selection/src/sourceEvent.js","webpack://mermaid/./node_modules/d3-selection/src/point.js","webpack://mermaid/./node_modules/d3-selection/src/touch.js","webpack://mermaid/./node_modules/d3-selection/src/mouse.js","webpack://mermaid/./node_modules/d3-timer/src/timeout.js","webpack://mermaid/./node_modules/d3-transition/src/transition/schedule.js","webpack://mermaid/./node_modules/d3-transition/src/interrupt.js","webpack://mermaid/./node_modules/d3-interpolate/src/transform/parse.js","webpack://mermaid/./node_modules/d3-interpolate/src/transform/decompose.js","webpack://mermaid/./node_modules/d3-interpolate/src/transform/index.js","webpack://mermaid/./node_modules/d3-transition/src/transition/tween.js","webpack://mermaid/./node_modules/d3-transition/src/transition/interpolate.js","webpack://mermaid/./node_modules/d3-transition/src/transition/attr.js","webpack://mermaid/./node_modules/d3-transition/src/transition/attrTween.js","webpack://mermaid/./node_modules/d3-transition/src/transition/delay.js","webpack://mermaid/./node_modules/d3-transition/src/transition/duration.js","webpack://mermaid/./node_modules/d3-transition/src/transition/ease.js","webpack://mermaid/./node_modules/d3-transition/src/transition/on.js","webpack://mermaid/./node_modules/d3-transition/src/transition/remove.js","webpack://mermaid/./node_modules/d3-transition/src/transition/selection.js","webpack://mermaid/./node_modules/d3-transition/src/transition/style.js","webpack://mermaid/./node_modules/d3-transition/src/transition/styleTween.js","webpack://mermaid/./node_modules/d3-transition/src/transition/textTween.js","webpack://mermaid/./node_modules/d3-transition/src/transition/index.js","webpack://mermaid/./node_modules/d3-ease/src/cubic.js","webpack://mermaid/./node_modules/d3-transition/src/transition/select.js","webpack://mermaid/./node_modules/d3-transition/src/transition/selectAll.js","webpack://mermaid/./node_modules/d3-transition/src/transition/filter.js","webpack://mermaid/./node_modules/d3-transition/src/transition/merge.js","webpack://mermaid/./node_modules/d3-transition/src/transition/transition.js","webpack://mermaid/./node_modules/d3-transition/src/transition/text.js","webpack://mermaid/./node_modules/d3-transition/src/transition/end.js","webpack://mermaid/./node_modules/d3-transition/src/selection/transition.js","webpack://mermaid/./node_modules/d3-transition/src/selection/index.js","webpack://mermaid/./node_modules/d3-transition/src/selection/interrupt.js","webpack://mermaid/./node_modules/d3-transition/src/active.js","webpack://mermaid/./node_modules/d3-brush/src/constant.js","webpack://mermaid/./node_modules/d3-brush/src/event.js","webpack://mermaid/./node_modules/d3-brush/src/noevent.js","webpack://mermaid/./node_modules/d3-brush/src/brush.js","webpack://mermaid/./node_modules/d3-chord/src/math.js","webpack://mermaid/./node_modules/d3-chord/src/chord.js","webpack://mermaid/./node_modules/d3-chord/src/array.js","webpack://mermaid/./node_modules/d3-chord/src/constant.js","webpack://mermaid/./node_modules/d3-path/src/path.js","webpack://mermaid/./node_modules/d3-chord/src/ribbon.js","webpack://mermaid/./node_modules/d3-collection/src/map.js","webpack://mermaid/./node_modules/d3-collection/src/nest.js","webpack://mermaid/./node_modules/d3-collection/src/set.js","webpack://mermaid/./node_modules/d3-collection/src/keys.js","webpack://mermaid/./node_modules/d3-collection/src/values.js","webpack://mermaid/./node_modules/d3-collection/src/entries.js","webpack://mermaid/./node_modules/d3-color/src/math.js","webpack://mermaid/./node_modules/d3-color/src/lab.js","webpack://mermaid/./node_modules/d3-color/src/cubehelix.js","webpack://mermaid/./node_modules/d3-contour/src/array.js","webpack://mermaid/./node_modules/d3-contour/src/ascending.js","webpack://mermaid/./node_modules/d3-contour/src/constant.js","webpack://mermaid/./node_modules/d3-contour/src/contains.js","webpack://mermaid/./node_modules/d3-contour/src/noop.js","webpack://mermaid/./node_modules/d3-contour/src/contours.js","webpack://mermaid/./node_modules/d3-contour/src/area.js","webpack://mermaid/./node_modules/d3-contour/src/blur.js","webpack://mermaid/./node_modules/d3-contour/src/density.js","webpack://mermaid/./node_modules/d3-drag/src/constant.js","webpack://mermaid/./node_modules/d3-drag/src/event.js","webpack://mermaid/./node_modules/d3-drag/src/drag.js","webpack://mermaid/./node_modules/d3-dsv/src/dsv.js","webpack://mermaid/./node_modules/d3-dsv/src/csv.js","webpack://mermaid/./node_modules/d3-dsv/src/tsv.js","webpack://mermaid/./node_modules/d3-dsv/src/autoType.js","webpack://mermaid/./node_modules/d3-ease/src/linear.js","webpack://mermaid/./node_modules/d3-ease/src/quad.js","webpack://mermaid/./node_modules/d3-ease/src/poly.js","webpack://mermaid/./node_modules/d3-ease/src/sin.js","webpack://mermaid/./node_modules/d3-ease/src/exp.js","webpack://mermaid/./node_modules/d3-ease/src/circle.js","webpack://mermaid/./node_modules/d3-ease/src/bounce.js","webpack://mermaid/./node_modules/d3-ease/src/back.js","webpack://mermaid/./node_modules/d3-ease/src/elastic.js","webpack://mermaid/./node_modules/d3-fetch/src/blob.js","webpack://mermaid/./node_modules/d3-fetch/src/buffer.js","webpack://mermaid/./node_modules/d3-fetch/src/text.js","webpack://mermaid/./node_modules/d3-fetch/src/dsv.js","webpack://mermaid/./node_modules/d3-fetch/src/image.js","webpack://mermaid/./node_modules/d3-fetch/src/json.js","webpack://mermaid/./node_modules/d3-fetch/src/xml.js","webpack://mermaid/./node_modules/d3-force/src/center.js","webpack://mermaid/./node_modules/d3-force/src/constant.js","webpack://mermaid/./node_modules/d3-force/src/jiggle.js","webpack://mermaid/./node_modules/d3-quadtree/src/add.js","webpack://mermaid/./node_modules/d3-quadtree/src/cover.js","webpack://mermaid/./node_modules/d3-quadtree/src/quad.js","webpack://mermaid/./node_modules/d3-quadtree/src/x.js","webpack://mermaid/./node_modules/d3-quadtree/src/y.js","webpack://mermaid/./node_modules/d3-quadtree/src/quadtree.js","webpack://mermaid/./node_modules/d3-force/src/collide.js","webpack://mermaid/./node_modules/d3-quadtree/src/data.js","webpack://mermaid/./node_modules/d3-quadtree/src/extent.js","webpack://mermaid/./node_modules/d3-quadtree/src/find.js","webpack://mermaid/./node_modules/d3-quadtree/src/remove.js","webpack://mermaid/./node_modules/d3-quadtree/src/root.js","webpack://mermaid/./node_modules/d3-quadtree/src/size.js","webpack://mermaid/./node_modules/d3-quadtree/src/visit.js","webpack://mermaid/./node_modules/d3-quadtree/src/visitAfter.js","webpack://mermaid/./node_modules/d3-force/src/link.js","webpack://mermaid/./node_modules/d3-force/src/simulation.js","webpack://mermaid/./node_modules/d3-force/src/manyBody.js","webpack://mermaid/./node_modules/d3-force/src/radial.js","webpack://mermaid/./node_modules/d3-force/src/x.js","webpack://mermaid/./node_modules/d3-force/src/y.js","webpack://mermaid/./node_modules/d3-format/src/formatDecimal.js","webpack://mermaid/./node_modules/d3-format/src/exponent.js","webpack://mermaid/./node_modules/d3-format/src/formatSpecifier.js","webpack://mermaid/./node_modules/d3-format/src/formatTrim.js","webpack://mermaid/./node_modules/d3-format/src/formatPrefixAuto.js","webpack://mermaid/./node_modules/d3-format/src/defaultLocale.js","webpack://mermaid/./node_modules/d3-format/src/formatRounded.js","webpack://mermaid/./node_modules/d3-format/src/formatTypes.js","webpack://mermaid/./node_modules/d3-format/src/identity.js","webpack://mermaid/./node_modules/d3-format/src/locale.js","webpack://mermaid/./node_modules/d3-format/src/formatGroup.js","webpack://mermaid/./node_modules/d3-format/src/formatNumerals.js","webpack://mermaid/./node_modules/d3-format/src/precisionFixed.js","webpack://mermaid/./node_modules/d3-format/src/precisionPrefix.js","webpack://mermaid/./node_modules/d3-format/src/precisionRound.js","webpack://mermaid/./node_modules/d3-geo/src/adder.js","webpack://mermaid/./node_modules/d3-geo/src/math.js","webpack://mermaid/./node_modules/d3-geo/src/noop.js","webpack://mermaid/./node_modules/d3-geo/src/stream.js","webpack://mermaid/./node_modules/d3-geo/src/area.js","webpack://mermaid/./node_modules/d3-geo/src/cartesian.js","webpack://mermaid/./node_modules/d3-geo/src/bounds.js","webpack://mermaid/./node_modules/d3-geo/src/centroid.js","webpack://mermaid/./node_modules/d3-geo/src/constant.js","webpack://mermaid/./node_modules/d3-geo/src/compose.js","webpack://mermaid/./node_modules/d3-geo/src/rotation.js","webpack://mermaid/./node_modules/d3-geo/src/circle.js","webpack://mermaid/./node_modules/d3-geo/src/clip/buffer.js","webpack://mermaid/./node_modules/d3-geo/src/pointEqual.js","webpack://mermaid/./node_modules/d3-geo/src/clip/rejoin.js","webpack://mermaid/./node_modules/d3-geo/src/polygonContains.js","webpack://mermaid/./node_modules/d3-geo/src/clip/index.js","webpack://mermaid/./node_modules/d3-geo/src/clip/antimeridian.js","webpack://mermaid/./node_modules/d3-geo/src/clip/circle.js","webpack://mermaid/./node_modules/d3-geo/src/clip/rectangle.js","webpack://mermaid/./node_modules/d3-geo/src/clip/line.js","webpack://mermaid/./node_modules/d3-geo/src/clip/extent.js","webpack://mermaid/./node_modules/d3-geo/src/length.js","webpack://mermaid/./node_modules/d3-geo/src/distance.js","webpack://mermaid/./node_modules/d3-geo/src/contains.js","webpack://mermaid/./node_modules/d3-geo/src/graticule.js","webpack://mermaid/./node_modules/d3-geo/src/interpolate.js","webpack://mermaid/./node_modules/d3-geo/src/path/area.js","webpack://mermaid/./node_modules/d3-geo/src/identity.js","webpack://mermaid/./node_modules/d3-geo/src/path/bounds.js","webpack://mermaid/./node_modules/d3-geo/src/path/centroid.js","webpack://mermaid/./node_modules/d3-geo/src/path/context.js","webpack://mermaid/./node_modules/d3-geo/src/path/measure.js","webpack://mermaid/./node_modules/d3-geo/src/path/string.js","webpack://mermaid/./node_modules/d3-geo/src/path/index.js","webpack://mermaid/./node_modules/d3-geo/src/transform.js","webpack://mermaid/./node_modules/d3-geo/src/projection/fit.js","webpack://mermaid/./node_modules/d3-geo/src/projection/resample.js","webpack://mermaid/./node_modules/d3-geo/src/projection/index.js","webpack://mermaid/./node_modules/d3-geo/src/projection/conic.js","webpack://mermaid/./node_modules/d3-geo/src/projection/conicEqualArea.js","webpack://mermaid/./node_modules/d3-geo/src/projection/cylindricalEqualArea.js","webpack://mermaid/./node_modules/d3-geo/src/projection/albers.js","webpack://mermaid/./node_modules/d3-geo/src/projection/albersUsa.js","webpack://mermaid/./node_modules/d3-geo/src/projection/azimuthal.js","webpack://mermaid/./node_modules/d3-geo/src/projection/azimuthalEqualArea.js","webpack://mermaid/./node_modules/d3-geo/src/projection/azimuthalEquidistant.js","webpack://mermaid/./node_modules/d3-geo/src/projection/mercator.js","webpack://mermaid/./node_modules/d3-geo/src/projection/conicConformal.js","webpack://mermaid/./node_modules/d3-geo/src/projection/equirectangular.js","webpack://mermaid/./node_modules/d3-geo/src/projection/conicEquidistant.js","webpack://mermaid/./node_modules/d3-geo/src/projection/equalEarth.js","webpack://mermaid/./node_modules/d3-geo/src/projection/gnomonic.js","webpack://mermaid/./node_modules/d3-geo/src/projection/identity.js","webpack://mermaid/./node_modules/d3-geo/src/projection/naturalEarth1.js","webpack://mermaid/./node_modules/d3-geo/src/projection/orthographic.js","webpack://mermaid/./node_modules/d3-geo/src/projection/stereographic.js","webpack://mermaid/./node_modules/d3-geo/src/projection/transverseMercator.js","webpack://mermaid/./node_modules/d3-hierarchy/src/cluster.js","webpack://mermaid/./node_modules/d3-hierarchy/src/hierarchy/count.js","webpack://mermaid/./node_modules/d3-hierarchy/src/hierarchy/index.js","webpack://mermaid/./node_modules/d3-hierarchy/src/hierarchy/each.js","webpack://mermaid/./node_modules/d3-hierarchy/src/hierarchy/eachAfter.js","webpack://mermaid/./node_modules/d3-hierarchy/src/hierarchy/eachBefore.js","webpack://mermaid/./node_modules/d3-hierarchy/src/hierarchy/sum.js","webpack://mermaid/./node_modules/d3-hierarchy/src/hierarchy/sort.js","webpack://mermaid/./node_modules/d3-hierarchy/src/hierarchy/path.js","webpack://mermaid/./node_modules/d3-hierarchy/src/hierarchy/ancestors.js","webpack://mermaid/./node_modules/d3-hierarchy/src/hierarchy/descendants.js","webpack://mermaid/./node_modules/d3-hierarchy/src/hierarchy/leaves.js","webpack://mermaid/./node_modules/d3-hierarchy/src/hierarchy/links.js","webpack://mermaid/./node_modules/d3-hierarchy/src/array.js","webpack://mermaid/./node_modules/d3-hierarchy/src/pack/enclose.js","webpack://mermaid/./node_modules/d3-hierarchy/src/pack/siblings.js","webpack://mermaid/./node_modules/d3-hierarchy/src/accessors.js","webpack://mermaid/./node_modules/d3-hierarchy/src/constant.js","webpack://mermaid/./node_modules/d3-hierarchy/src/pack/index.js","webpack://mermaid/./node_modules/d3-hierarchy/src/treemap/round.js","webpack://mermaid/./node_modules/d3-hierarchy/src/treemap/dice.js","webpack://mermaid/./node_modules/d3-hierarchy/src/partition.js","webpack://mermaid/./node_modules/d3-hierarchy/src/stratify.js","webpack://mermaid/./node_modules/d3-hierarchy/src/tree.js","webpack://mermaid/./node_modules/d3-hierarchy/src/treemap/slice.js","webpack://mermaid/./node_modules/d3-hierarchy/src/treemap/squarify.js","webpack://mermaid/./node_modules/d3-hierarchy/src/treemap/index.js","webpack://mermaid/./node_modules/d3-hierarchy/src/treemap/binary.js","webpack://mermaid/./node_modules/d3-hierarchy/src/treemap/sliceDice.js","webpack://mermaid/./node_modules/d3-hierarchy/src/treemap/resquarify.js","webpack://mermaid/./node_modules/d3-interpolate/src/discrete.js","webpack://mermaid/./node_modules/d3-interpolate/src/hue.js","webpack://mermaid/./node_modules/d3-interpolate/src/round.js","webpack://mermaid/./node_modules/d3-interpolate/src/zoom.js","webpack://mermaid/./node_modules/d3-interpolate/src/hsl.js","webpack://mermaid/./node_modules/d3-interpolate/src/lab.js","webpack://mermaid/./node_modules/d3-interpolate/src/hcl.js","webpack://mermaid/./node_modules/d3-interpolate/src/cubehelix.js","webpack://mermaid/./node_modules/d3-interpolate/src/piecewise.js","webpack://mermaid/./node_modules/d3-interpolate/src/quantize.js","webpack://mermaid/./node_modules/d3-polygon/src/area.js","webpack://mermaid/./node_modules/d3-polygon/src/centroid.js","webpack://mermaid/./node_modules/d3-polygon/src/hull.js","webpack://mermaid/./node_modules/d3-polygon/src/cross.js","webpack://mermaid/./node_modules/d3-polygon/src/contains.js","webpack://mermaid/./node_modules/d3-polygon/src/length.js","webpack://mermaid/./node_modules/d3-random/src/defaultSource.js","webpack://mermaid/./node_modules/d3-random/src/uniform.js","webpack://mermaid/./node_modules/d3-random/src/normal.js","webpack://mermaid/./node_modules/d3-random/src/logNormal.js","webpack://mermaid/./node_modules/d3-random/src/irwinHall.js","webpack://mermaid/./node_modules/d3-random/src/bates.js","webpack://mermaid/./node_modules/d3-random/src/exponential.js","webpack://mermaid/./node_modules/d3-scale/src/init.js","webpack://mermaid/./node_modules/d3-scale/src/array.js","webpack://mermaid/./node_modules/d3-scale/src/ordinal.js","webpack://mermaid/./node_modules/d3-scale/src/band.js","webpack://mermaid/./node_modules/d3-scale/src/constant.js","webpack://mermaid/./node_modules/d3-scale/src/number.js","webpack://mermaid/./node_modules/d3-scale/src/continuous.js","webpack://mermaid/./node_modules/d3-scale/src/tickFormat.js","webpack://mermaid/./node_modules/d3-scale/src/linear.js","webpack://mermaid/./node_modules/d3-scale/src/identity.js","webpack://mermaid/./node_modules/d3-scale/src/nice.js","webpack://mermaid/./node_modules/d3-scale/src/log.js","webpack://mermaid/./node_modules/d3-scale/src/symlog.js","webpack://mermaid/./node_modules/d3-scale/src/pow.js","webpack://mermaid/./node_modules/d3-scale/src/quantile.js","webpack://mermaid/./node_modules/d3-scale/src/quantize.js","webpack://mermaid/./node_modules/d3-scale/src/threshold.js","webpack://mermaid/./node_modules/d3-time/src/interval.js","webpack://mermaid/./node_modules/d3-time/src/year.js","webpack://mermaid/./node_modules/d3-time/src/month.js","webpack://mermaid/./node_modules/d3-time/src/week.js","webpack://mermaid/./node_modules/d3-time/src/duration.js","webpack://mermaid/./node_modules/d3-time/src/day.js","webpack://mermaid/./node_modules/d3-time/src/hour.js","webpack://mermaid/./node_modules/d3-time/src/minute.js","webpack://mermaid/./node_modules/d3-time/src/second.js","webpack://mermaid/./node_modules/d3-time/src/millisecond.js","webpack://mermaid/./node_modules/d3-time/src/utcWeek.js","webpack://mermaid/./node_modules/d3-time/src/utcDay.js","webpack://mermaid/./node_modules/d3-time/src/utcYear.js","webpack://mermaid/./node_modules/d3-time-format/src/locale.js","webpack://mermaid/./node_modules/d3-time-format/src/defaultLocale.js","webpack://mermaid/./node_modules/d3-scale/src/time.js","webpack://mermaid/./node_modules/d3-time/src/utcMonth.js","webpack://mermaid/./node_modules/d3-time/src/utcHour.js","webpack://mermaid/./node_modules/d3-time/src/utcMinute.js","webpack://mermaid/./node_modules/d3-scale/src/utcTime.js","webpack://mermaid/./node_modules/d3-scale/src/sequential.js","webpack://mermaid/./node_modules/d3-scale/src/sequentialQuantile.js","webpack://mermaid/./node_modules/d3-scale/src/diverging.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/colors.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/categorical/category10.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/categorical/Accent.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/categorical/Dark2.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/categorical/Paired.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/categorical/Pastel1.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/categorical/Pastel2.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/categorical/Set1.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/categorical/Set2.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/categorical/Set3.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/categorical/Tableau10.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/ramp.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/diverging/BrBG.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/diverging/PRGn.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/diverging/PiYG.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/diverging/PuOr.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/diverging/RdBu.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/diverging/RdGy.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/diverging/RdYlBu.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/diverging/RdYlGn.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/diverging/Spectral.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/sequential-multi/BuGn.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/sequential-multi/BuPu.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/sequential-multi/GnBu.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/sequential-multi/OrRd.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/sequential-multi/PuBuGn.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/sequential-multi/PuBu.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/sequential-multi/PuRd.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/sequential-multi/RdPu.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/sequential-multi/YlGnBu.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/sequential-multi/YlGn.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/sequential-multi/YlOrBr.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/sequential-multi/YlOrRd.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/sequential-single/Blues.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/sequential-single/Greens.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/sequential-single/Greys.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/sequential-single/Purples.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/sequential-single/Reds.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/sequential-single/Oranges.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/sequential-multi/cividis.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/sequential-multi/cubehelix.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/sequential-multi/rainbow.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/sequential-multi/sinebow.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/sequential-multi/turbo.js","webpack://mermaid/./node_modules/d3-scale-chromatic/src/sequential-multi/viridis.js","webpack://mermaid/./node_modules/d3-selection/src/create.js","webpack://mermaid/./node_modules/d3-selection/src/local.js","webpack://mermaid/./node_modules/d3-selection/src/selectAll.js","webpack://mermaid/./node_modules/d3-selection/src/touches.js","webpack://mermaid/./node_modules/d3-shape/src/constant.js","webpack://mermaid/./node_modules/d3-shape/src/math.js","webpack://mermaid/./node_modules/d3-shape/src/arc.js","webpack://mermaid/./node_modules/d3-shape/src/curve/linear.js","webpack://mermaid/./node_modules/d3-shape/src/point.js","webpack://mermaid/./node_modules/d3-shape/src/line.js","webpack://mermaid/./node_modules/d3-shape/src/area.js","webpack://mermaid/./node_modules/d3-shape/src/descending.js","webpack://mermaid/./node_modules/d3-shape/src/identity.js","webpack://mermaid/./node_modules/d3-shape/src/pie.js","webpack://mermaid/./node_modules/d3-shape/src/curve/radial.js","webpack://mermaid/./node_modules/d3-shape/src/lineRadial.js","webpack://mermaid/./node_modules/d3-shape/src/areaRadial.js","webpack://mermaid/./node_modules/d3-shape/src/pointRadial.js","webpack://mermaid/./node_modules/d3-shape/src/array.js","webpack://mermaid/./node_modules/d3-shape/src/link/index.js","webpack://mermaid/./node_modules/d3-shape/src/symbol/circle.js","webpack://mermaid/./node_modules/d3-shape/src/symbol/cross.js","webpack://mermaid/./node_modules/d3-shape/src/symbol/diamond.js","webpack://mermaid/./node_modules/d3-shape/src/symbol/star.js","webpack://mermaid/./node_modules/d3-shape/src/symbol/square.js","webpack://mermaid/./node_modules/d3-shape/src/symbol/triangle.js","webpack://mermaid/./node_modules/d3-shape/src/symbol/wye.js","webpack://mermaid/./node_modules/d3-shape/src/symbol.js","webpack://mermaid/./node_modules/d3-shape/src/noop.js","webpack://mermaid/./node_modules/d3-shape/src/curve/basis.js","webpack://mermaid/./node_modules/d3-shape/src/curve/basisClosed.js","webpack://mermaid/./node_modules/d3-shape/src/curve/basisOpen.js","webpack://mermaid/./node_modules/d3-shape/src/curve/bundle.js","webpack://mermaid/./node_modules/d3-shape/src/curve/cardinal.js","webpack://mermaid/./node_modules/d3-shape/src/curve/cardinalClosed.js","webpack://mermaid/./node_modules/d3-shape/src/curve/cardinalOpen.js","webpack://mermaid/./node_modules/d3-shape/src/curve/catmullRom.js","webpack://mermaid/./node_modules/d3-shape/src/curve/catmullRomClosed.js","webpack://mermaid/./node_modules/d3-shape/src/curve/catmullRomOpen.js","webpack://mermaid/./node_modules/d3-shape/src/curve/linearClosed.js","webpack://mermaid/./node_modules/d3-shape/src/curve/monotone.js","webpack://mermaid/./node_modules/d3-shape/src/curve/natural.js","webpack://mermaid/./node_modules/d3-shape/src/curve/step.js","webpack://mermaid/./node_modules/d3-shape/src/offset/none.js","webpack://mermaid/./node_modules/d3-shape/src/order/none.js","webpack://mermaid/./node_modules/d3-shape/src/stack.js","webpack://mermaid/./node_modules/d3-shape/src/offset/expand.js","webpack://mermaid/./node_modules/d3-shape/src/offset/diverging.js","webpack://mermaid/./node_modules/d3-shape/src/offset/silhouette.js","webpack://mermaid/./node_modules/d3-shape/src/offset/wiggle.js","webpack://mermaid/./node_modules/d3-shape/src/order/appearance.js","webpack://mermaid/./node_modules/d3-shape/src/order/ascending.js","webpack://mermaid/./node_modules/d3-shape/src/order/descending.js","webpack://mermaid/./node_modules/d3-shape/src/order/insideOut.js","webpack://mermaid/./node_modules/d3-shape/src/order/reverse.js","webpack://mermaid/./node_modules/d3-time-format/src/isoFormat.js","webpack://mermaid/./node_modules/d3-time-format/src/isoParse.js","webpack://mermaid/./node_modules/d3-timer/src/interval.js","webpack://mermaid/./node_modules/d3-voronoi/src/constant.js","webpack://mermaid/./node_modules/d3-voronoi/src/point.js","webpack://mermaid/./node_modules/d3-voronoi/src/RedBlackTree.js","webpack://mermaid/./node_modules/d3-voronoi/src/Edge.js","webpack://mermaid/./node_modules/d3-voronoi/src/Cell.js","webpack://mermaid/./node_modules/d3-voronoi/src/Circle.js","webpack://mermaid/./node_modules/d3-voronoi/src/Beach.js","webpack://mermaid/./node_modules/d3-voronoi/src/Diagram.js","webpack://mermaid/./node_modules/d3-voronoi/src/voronoi.js","webpack://mermaid/./node_modules/d3-zoom/src/constant.js","webpack://mermaid/./node_modules/d3-zoom/src/event.js","webpack://mermaid/./node_modules/d3-zoom/src/transform.js","webpack://mermaid/./node_modules/d3-zoom/src/noevent.js","webpack://mermaid/./node_modules/d3-zoom/src/zoom.js","webpack://mermaid/./node_modules/d3/index.js","webpack://mermaid/./src/diagrams/sequence/parser/sequenceDiagram.jison","webpack://mermaid/./node_modules/inherits/inherits_browser.js","webpack://mermaid/./node_modules/safe-buffer/index.js","webpack://mermaid/./node_modules/graphlib/index.js","webpack://mermaid/./node_modules/dagre/lib/lodash.js","webpack://mermaid/./node_modules/bn.js/lib/bn.js","webpack://mermaid/./node_modules/process/browser.js","webpack://mermaid/./node_modules/lodash/isArray.js","webpack://mermaid/./node_modules/buffer/index.js","webpack://mermaid/(webpack)/buildin/module.js","webpack://mermaid/./node_modules/dagre-d3/index.js","webpack://mermaid/./node_modules/dagre/lib/util.js","webpack://mermaid/./node_modules/minimalistic-assert/index.js","webpack://mermaid/./node_modules/elliptic/lib/elliptic/utils.js","webpack://mermaid/./node_modules/graphlib/lib/lodash.js","webpack://mermaid/./node_modules/lodash/isObject.js","webpack://mermaid/./node_modules/dagre-d3/lib/util.js","webpack://mermaid/./node_modules/lodash/_root.js","webpack://mermaid/./node_modules/dagre/lib/graphlib.js","webpack://mermaid/(webpack)/buildin/global.js","webpack://mermaid/./node_modules/hash.js/lib/hash/utils.js","webpack://mermaid/./node_modules/path-browserify/index.js","webpack://mermaid/./node_modules/lodash/isObjectLike.js","webpack://mermaid/./src/diagrams/state/parser/stateDiagram.jison","webpack://mermaid/./node_modules/moment-mini/moment.min.js","webpack://mermaid/./node_modules/lodash/isArrayLike.js","webpack://mermaid/./node_modules/lodash/_baseIteratee.js","webpack://mermaid/./node_modules/dagre/index.js","webpack://mermaid/./src/diagrams/flowchart/parser/flow.jison","webpack://mermaid/./src/diagrams/gantt/parser/gantt.jison","webpack://mermaid/./src/diagrams/user-journey/parser/journey.jison","webpack://mermaid/./node_modules/cipher-base/index.js","webpack://mermaid/./node_modules/lodash/keys.js","webpack://mermaid/./node_modules/dagre-d3/lib/d3.js","webpack://mermaid/./node_modules/readable-stream/lib/_stream_duplex.js","webpack://mermaid/./node_modules/lodash/_getNative.js","webpack://mermaid/./node_modules/lodash/_baseGetTag.js","webpack://mermaid/./node_modules/lodash/identity.js","webpack://mermaid/./node_modules/randombytes/browser.js","webpack://mermaid/./node_modules/sha.js/hash.js","webpack://mermaid/./node_modules/lodash/eq.js","webpack://mermaid/./node_modules/lodash/isFunction.js","webpack://mermaid/./node_modules/lodash/_Symbol.js","webpack://mermaid/./node_modules/lodash/isBuffer.js","webpack://mermaid/./node_modules/lodash/keysIn.js","webpack://mermaid/./node_modules/lodash/_getTag.js","webpack://mermaid/./node_modules/lodash/isSymbol.js","webpack://mermaid/./node_modules/dagre-d3/lib/lodash.js","webpack://mermaid/./src/diagrams/class/parser/classDiagram.jison","webpack://mermaid/./node_modules/create-hash/browser.js","webpack://mermaid/./node_modules/core-util-is/lib/util.js","webpack://mermaid/./node_modules/buffer-xor/index.js","webpack://mermaid/./node_modules/hash.js/lib/hash/common.js","webpack://mermaid/./node_modules/asn1.js/lib/asn1.js","webpack://mermaid/./node_modules/asn1.js/lib/asn1/base/index.js","webpack://mermaid/./node_modules/lodash/_copyObject.js","webpack://mermaid/./node_modules/lodash/isArguments.js","webpack://mermaid/./node_modules/lodash/isTypedArray.js","webpack://mermaid/./node_modules/lodash/_toKey.js","webpack://mermaid/./node_modules/dagre-d3/lib/label/add-html-label.js","webpack://mermaid/./node_modules/css-loader/dist/runtime/api.js","webpack://mermaid/./node_modules/readable-stream/node_modules/process-nextick-args/index.js","webpack://mermaid/./node_modules/browserify-aes/aes.js","webpack://mermaid/./node_modules/evp_bytestokey/index.js","webpack://mermaid/./node_modules/elliptic/lib/elliptic/curve/base.js","webpack://mermaid/./node_modules/parse-asn1/index.js","webpack://mermaid/./node_modules/lodash/_Stack.js","webpack://mermaid/./node_modules/lodash/_ListCache.js","webpack://mermaid/./node_modules/lodash/_assocIndexOf.js","webpack://mermaid/./node_modules/lodash/_nativeCreate.js","webpack://mermaid/./node_modules/lodash/_getMapData.js","webpack://mermaid/./node_modules/lodash/_assignValue.js","webpack://mermaid/./node_modules/lodash/_baseAssignValue.js","webpack://mermaid/./node_modules/lodash/_isIndex.js","webpack://mermaid/./node_modules/lodash/_baseUnary.js","webpack://mermaid/./node_modules/lodash/_isPrototype.js","webpack://mermaid/./node_modules/lodash/_getPrototype.js","webpack://mermaid/./node_modules/lodash/_baseEach.js","webpack://mermaid/./node_modules/lodash/_castPath.js","webpack://mermaid/./node_modules/lodash/_arrayMap.js","webpack://mermaid/./node_modules/lodash/_baseRest.js","webpack://mermaid/./node_modules/lodash/_isIterateeCall.js","webpack://mermaid/./node_modules/dagre/lib/rank/util.js","webpack://mermaid/./node_modules/@braintree/sanitize-url/index.js","webpack://mermaid/./src/diagrams/git/parser/gitGraph.jison","webpack://mermaid/./src/diagrams/info/parser/info.jison","webpack://mermaid/./src/diagrams/pie/parser/pie.jison","webpack://mermaid/./src/diagrams/er/parser/erDiagram.jison","webpack://mermaid/./node_modules/md5.js/index.js","webpack://mermaid/./node_modules/stream-browserify/index.js","webpack://mermaid/./node_modules/events/events.js","webpack://mermaid/./node_modules/readable-stream/readable-browser.js","webpack://mermaid/./node_modules/readable-stream/node_modules/safe-buffer/index.js","webpack://mermaid/./node_modules/readable-stream/lib/_stream_writable.js","webpack://mermaid/./node_modules/node-libs-browser/node_modules/string_decoder/lib/string_decoder.js","webpack://mermaid/./node_modules/ripemd160/index.js","webpack://mermaid/./node_modules/sha.js/index.js","webpack://mermaid/./node_modules/des.js/lib/des/cipher.js","webpack://mermaid/./node_modules/browserify-aes/browser.js","webpack://mermaid/./node_modules/browserify-aes/modes/index.js","webpack://mermaid/./node_modules/brorand/index.js","webpack://mermaid/./node_modules/browserify-rsa/index.js","webpack://mermaid/./node_modules/elliptic/lib/elliptic.js","webpack://mermaid/./node_modules/elliptic/lib/elliptic/curves.js","webpack://mermaid/./node_modules/hash.js/lib/hash.js","webpack://mermaid/./node_modules/graphlib/lib/graph.js","webpack://mermaid/./node_modules/lodash/_Map.js","webpack://mermaid/./node_modules/lodash/_MapCache.js","webpack://mermaid/./node_modules/lodash/_arrayEach.js","webpack://mermaid/./node_modules/lodash/isLength.js","webpack://mermaid/./node_modules/lodash/_nodeUtil.js","webpack://mermaid/./node_modules/lodash/_baseKeys.js","webpack://mermaid/./node_modules/lodash/_getSymbols.js","webpack://mermaid/./node_modules/lodash/_arrayPush.js","webpack://mermaid/./node_modules/lodash/_cloneArrayBuffer.js","webpack://mermaid/./node_modules/lodash/constant.js","webpack://mermaid/./node_modules/lodash/each.js","webpack://mermaid/./node_modules/lodash/_baseForOwn.js","webpack://mermaid/./node_modules/lodash/_baseFor.js","webpack://mermaid/./node_modules/lodash/_setToArray.js","webpack://mermaid/./node_modules/lodash/_baseGet.js","webpack://mermaid/./node_modules/lodash/_isKey.js","webpack://mermaid/./node_modules/lodash/has.js","webpack://mermaid/./node_modules/lodash/_baseFlatten.js","webpack://mermaid/./node_modules/lodash/_baseExtremum.js","webpack://mermaid/./node_modules/dagre-d3/lib/intersect/intersect-ellipse.js","webpack://mermaid/./node_modules/dagre-d3/lib/label/add-label.js","webpack://mermaid/./node_modules/isarray/index.js","webpack://mermaid/./node_modules/hash-base/index.js","webpack://mermaid/./node_modules/readable-stream/lib/_stream_readable.js","webpack://mermaid/./node_modules/readable-stream/lib/internal/streams/stream-browser.js","webpack://mermaid/./node_modules/readable-stream/lib/internal/streams/destroy.js","webpack://mermaid/./node_modules/readable-stream/lib/_stream_transform.js","webpack://mermaid/./node_modules/sha.js/sha256.js","webpack://mermaid/./node_modules/sha.js/sha512.js","webpack://mermaid/./node_modules/create-hmac/browser.js","webpack://mermaid/./node_modules/create-hash/md5.js","webpack://mermaid/./node_modules/pbkdf2/browser.js","webpack://mermaid/./node_modules/pbkdf2/lib/precondition.js","webpack://mermaid/./node_modules/pbkdf2/lib/default-encoding.js","webpack://mermaid/./node_modules/pbkdf2/lib/sync-browser.js","webpack://mermaid/./node_modules/des.js/lib/des/utils.js","webpack://mermaid/./node_modules/des.js/lib/des/des.js","webpack://mermaid/./node_modules/browserify-aes/modes/ctr.js","webpack://mermaid/./node_modules/browserify-aes/incr32.js","webpack://mermaid/./node_modules/browserify-aes/authCipher.js","webpack://mermaid/./node_modules/browserify-aes/streamCipher.js","webpack://mermaid/./node_modules/diffie-hellman/lib/generatePrime.js","webpack://mermaid/./node_modules/miller-rabin/lib/mr.js","webpack://mermaid/./node_modules/minimalistic-crypto-utils/lib/utils.js","webpack://mermaid/./node_modules/elliptic/lib/elliptic/curve/index.js","webpack://mermaid/./node_modules/hash.js/lib/hash/sha/common.js","webpack://mermaid/./node_modules/hash.js/lib/hash/sha/256.js","webpack://mermaid/./node_modules/hash.js/lib/hash/sha/512.js","webpack://mermaid/./node_modules/asn1.js/lib/asn1/base/buffer.js","webpack://mermaid/./node_modules/asn1.js/lib/asn1/constants/index.js","webpack://mermaid/./node_modules/asn1.js/lib/asn1/decoders/der.js","webpack://mermaid/./node_modules/asn1.js/lib/asn1/encoders/der.js","webpack://mermaid/./node_modules/public-encrypt/mgf.js","webpack://mermaid/./node_modules/public-encrypt/xor.js","webpack://mermaid/./node_modules/public-encrypt/withPublic.js","webpack://mermaid/./node_modules/lodash/_baseClone.js","webpack://mermaid/./node_modules/lodash/_freeGlobal.js","webpack://mermaid/./node_modules/lodash/_toSource.js","webpack://mermaid/./node_modules/lodash/_defineProperty.js","webpack://mermaid/./node_modules/lodash/_arrayLikeKeys.js","webpack://mermaid/./node_modules/lodash/_overArg.js","webpack://mermaid/./node_modules/lodash/_cloneBuffer.js","webpack://mermaid/./node_modules/lodash/_copyArray.js","webpack://mermaid/./node_modules/lodash/_arrayFilter.js","webpack://mermaid/./node_modules/lodash/stubArray.js","webpack://mermaid/./node_modules/lodash/_getSymbolsIn.js","webpack://mermaid/./node_modules/lodash/_getAllKeys.js","webpack://mermaid/./node_modules/lodash/_baseGetAllKeys.js","webpack://mermaid/./node_modules/lodash/_Set.js","webpack://mermaid/./node_modules/lodash/_Uint8Array.js","webpack://mermaid/./node_modules/lodash/_cloneTypedArray.js","webpack://mermaid/./node_modules/lodash/_initCloneObject.js","webpack://mermaid/./node_modules/lodash/_baseCreate.js","webpack://mermaid/./node_modules/lodash/forEach.js","webpack://mermaid/./node_modules/lodash/_castFunction.js","webpack://mermaid/./node_modules/lodash/filter.js","webpack://mermaid/./node_modules/lodash/_baseIsEqual.js","webpack://mermaid/./node_modules/lodash/_equalArrays.js","webpack://mermaid/./node_modules/lodash/_SetCache.js","webpack://mermaid/./node_modules/lodash/_cacheHas.js","webpack://mermaid/./node_modules/lodash/_isStrictComparable.js","webpack://mermaid/./node_modules/lodash/_matchesStrictComparable.js","webpack://mermaid/./node_modules/lodash/toString.js","webpack://mermaid/./node_modules/lodash/hasIn.js","webpack://mermaid/./node_modules/lodash/_hasPath.js","webpack://mermaid/./node_modules/lodash/_baseProperty.js","webpack://mermaid/./node_modules/lodash/isUndefined.js","webpack://mermaid/./node_modules/lodash/map.js","webpack://mermaid/./node_modules/lodash/_baseMap.js","webpack://mermaid/./node_modules/lodash/reduce.js","webpack://mermaid/./node_modules/lodash/_overRest.js","webpack://mermaid/./node_modules/lodash/_setToString.js","webpack://mermaid/./node_modules/lodash/_baseFindIndex.js","webpack://mermaid/./node_modules/lodash/isArrayLikeObject.js","webpack://mermaid/./node_modules/lodash/values.js","webpack://mermaid/./node_modules/graphlib/lib/alg/dijkstra.js","webpack://mermaid/./node_modules/graphlib/lib/data/priority-queue.js","webpack://mermaid/./node_modules/graphlib/lib/alg/tarjan.js","webpack://mermaid/./node_modules/graphlib/lib/alg/topsort.js","webpack://mermaid/./node_modules/graphlib/lib/alg/dfs.js","webpack://mermaid/./node_modules/dagre-d3/lib/dagre.js","webpack://mermaid/./node_modules/lodash/defaults.js","webpack://mermaid/./node_modules/lodash/toFinite.js","webpack://mermaid/./node_modules/lodash/flatten.js","webpack://mermaid/./node_modules/lodash/_assignMergeValue.js","webpack://mermaid/./node_modules/lodash/isPlainObject.js","webpack://mermaid/./node_modules/lodash/_safeGet.js","webpack://mermaid/./node_modules/lodash/_baseLt.js","webpack://mermaid/./node_modules/lodash/pick.js","webpack://mermaid/./node_modules/lodash/range.js","webpack://mermaid/./node_modules/lodash/uniqueId.js","webpack://mermaid/./node_modules/dagre/lib/rank/feasible-tree.js","webpack://mermaid/./node_modules/dagre-d3/lib/intersect/intersect-node.js","webpack://mermaid/./node_modules/dagre-d3/lib/intersect/intersect-circle.js","webpack://mermaid/./node_modules/dagre-d3/lib/intersect/intersect-polygon.js","webpack://mermaid/./node_modules/dagre-d3/lib/intersect/intersect-rect.js","webpack://mermaid/./node_modules/scope-css/index.js","webpack://mermaid/./node_modules/crypto-random-string/index.js","webpack://mermaid/./src/dagre-wrapper/intersect/intersect-node.js","webpack://mermaid/./node_modules/slugify/slugify.js","webpack://mermaid/./node_modules/escaper/dist/escaper.js","webpack://mermaid/./node_modules/strip-css-comments/index.js","webpack://mermaid/./node_modules/is-regexp/index.js","webpack://mermaid/./src/themes sync ^\\.\\/.*\\/index\\.scss$","webpack://mermaid/./src/themes/dark/index.scss?55a3","webpack://mermaid/./src/themes/dark/index.scss","webpack://mermaid/./src/themes/default/index.scss?1e22","webpack://mermaid/./src/themes/default/index.scss","webpack://mermaid/./src/themes/forest/index.scss?c8cd","webpack://mermaid/./src/themes/forest/index.scss","webpack://mermaid/./src/themes/neutral/index.scss?96e0","webpack://mermaid/./src/themes/neutral/index.scss","webpack://mermaid/./node_modules/crypto-browserify/index.js","webpack://mermaid/./node_modules/base64-js/index.js","webpack://mermaid/./node_modules/ieee754/index.js","webpack://mermaid/./node_modules/readable-stream/lib/internal/streams/BufferList.js","webpack://mermaid/./node_modules/timers-browserify/main.js","webpack://mermaid/./node_modules/setimmediate/setImmediate.js","webpack://mermaid/./node_modules/util-deprecate/browser.js","webpack://mermaid/./node_modules/readable-stream/lib/_stream_passthrough.js","webpack://mermaid/./node_modules/readable-stream/writable-browser.js","webpack://mermaid/./node_modules/readable-stream/duplex-browser.js","webpack://mermaid/./node_modules/readable-stream/transform.js","webpack://mermaid/./node_modules/readable-stream/passthrough.js","webpack://mermaid/./node_modules/sha.js/sha.js","webpack://mermaid/./node_modules/sha.js/sha1.js","webpack://mermaid/./node_modules/sha.js/sha224.js","webpack://mermaid/./node_modules/sha.js/sha384.js","webpack://mermaid/./node_modules/create-hmac/legacy.js","webpack://mermaid/./node_modules/browserify-sign/algos.js","webpack://mermaid/./node_modules/pbkdf2/lib/async.js","webpack://mermaid/./node_modules/browserify-cipher/browser.js","webpack://mermaid/./node_modules/browserify-des/index.js","webpack://mermaid/./node_modules/des.js/lib/des.js","webpack://mermaid/./node_modules/des.js/lib/des/cbc.js","webpack://mermaid/./node_modules/des.js/lib/des/ede.js","webpack://mermaid/./node_modules/browserify-aes/encrypter.js","webpack://mermaid/./node_modules/browserify-aes/modes/ecb.js","webpack://mermaid/./node_modules/browserify-aes/modes/cbc.js","webpack://mermaid/./node_modules/browserify-aes/modes/cfb.js","webpack://mermaid/./node_modules/browserify-aes/modes/cfb8.js","webpack://mermaid/./node_modules/browserify-aes/modes/cfb1.js","webpack://mermaid/./node_modules/browserify-aes/modes/ofb.js","webpack://mermaid/./node_modules/browserify-aes/ghash.js","webpack://mermaid/./node_modules/browserify-aes/decrypter.js","webpack://mermaid/./node_modules/browserify-des/modes.js","webpack://mermaid/./node_modules/diffie-hellman/browser.js","webpack://mermaid/./node_modules/diffie-hellman/lib/dh.js","webpack://mermaid/./node_modules/browserify-sign/browser/index.js","webpack://mermaid/./node_modules/browserify-sign/browser/sign.js","webpack://mermaid/./node_modules/elliptic/lib/elliptic/curve/short.js","webpack://mermaid/./node_modules/elliptic/lib/elliptic/curve/mont.js","webpack://mermaid/./node_modules/elliptic/lib/elliptic/curve/edwards.js","webpack://mermaid/./node_modules/hash.js/lib/hash/sha.js","webpack://mermaid/./node_modules/hash.js/lib/hash/sha/1.js","webpack://mermaid/./node_modules/hash.js/lib/hash/sha/224.js","webpack://mermaid/./node_modules/hash.js/lib/hash/sha/384.js","webpack://mermaid/./node_modules/hash.js/lib/hash/ripemd.js","webpack://mermaid/./node_modules/hash.js/lib/hash/hmac.js","webpack://mermaid/./node_modules/elliptic/lib/elliptic/precomputed/secp256k1.js","webpack://mermaid/./node_modules/elliptic/lib/elliptic/ec/index.js","webpack://mermaid/./node_modules/hmac-drbg/lib/hmac-drbg.js","webpack://mermaid/./node_modules/elliptic/lib/elliptic/ec/key.js","webpack://mermaid/./node_modules/elliptic/lib/elliptic/ec/signature.js","webpack://mermaid/./node_modules/elliptic/lib/elliptic/eddsa/index.js","webpack://mermaid/./node_modules/elliptic/lib/elliptic/eddsa/key.js","webpack://mermaid/./node_modules/elliptic/lib/elliptic/eddsa/signature.js","webpack://mermaid/./node_modules/parse-asn1/asn1.js","webpack://mermaid/./node_modules/asn1.js/lib/asn1/api.js","webpack://mermaid/./node_modules/vm-browserify/index.js","webpack://mermaid/./node_modules/asn1.js/lib/asn1/base/reporter.js","webpack://mermaid/./node_modules/asn1.js/lib/asn1/base/node.js","webpack://mermaid/./node_modules/asn1.js/lib/asn1/constants/der.js","webpack://mermaid/./node_modules/asn1.js/lib/asn1/decoders/index.js","webpack://mermaid/./node_modules/asn1.js/lib/asn1/decoders/pem.js","webpack://mermaid/./node_modules/asn1.js/lib/asn1/encoders/index.js","webpack://mermaid/./node_modules/asn1.js/lib/asn1/encoders/pem.js","webpack://mermaid/./node_modules/parse-asn1/certificate.js","webpack://mermaid/./node_modules/parse-asn1/fixProc.js","webpack://mermaid/./node_modules/browserify-sign/browser/verify.js","webpack://mermaid/./node_modules/create-ecdh/browser.js","webpack://mermaid/./node_modules/public-encrypt/browser.js","webpack://mermaid/./node_modules/public-encrypt/publicEncrypt.js","webpack://mermaid/./node_modules/public-encrypt/privateDecrypt.js","webpack://mermaid/./node_modules/randomfill/browser.js","webpack://mermaid/./node_modules/moment-mini/locale sync ^\\.\\/.*$","webpack://mermaid/./node_modules/graphlib/lib/index.js","webpack://mermaid/./node_modules/lodash/clone.js","webpack://mermaid/./node_modules/lodash/_listCacheClear.js","webpack://mermaid/./node_modules/lodash/_listCacheDelete.js","webpack://mermaid/./node_modules/lodash/_listCacheGet.js","webpack://mermaid/./node_modules/lodash/_listCacheHas.js","webpack://mermaid/./node_modules/lodash/_listCacheSet.js","webpack://mermaid/./node_modules/lodash/_stackClear.js","webpack://mermaid/./node_modules/lodash/_stackDelete.js","webpack://mermaid/./node_modules/lodash/_stackGet.js","webpack://mermaid/./node_modules/lodash/_stackHas.js","webpack://mermaid/./node_modules/lodash/_stackSet.js","webpack://mermaid/./node_modules/lodash/_baseIsNative.js","webpack://mermaid/./node_modules/lodash/_getRawTag.js","webpack://mermaid/./node_modules/lodash/_objectToString.js","webpack://mermaid/./node_modules/lodash/_isMasked.js","webpack://mermaid/./node_modules/lodash/_coreJsData.js","webpack://mermaid/./node_modules/lodash/_getValue.js","webpack://mermaid/./node_modules/lodash/_mapCacheClear.js","webpack://mermaid/./node_modules/lodash/_Hash.js","webpack://mermaid/./node_modules/lodash/_hashClear.js","webpack://mermaid/./node_modules/lodash/_hashDelete.js","webpack://mermaid/./node_modules/lodash/_hashGet.js","webpack://mermaid/./node_modules/lodash/_hashHas.js","webpack://mermaid/./node_modules/lodash/_hashSet.js","webpack://mermaid/./node_modules/lodash/_mapCacheDelete.js","webpack://mermaid/./node_modules/lodash/_isKeyable.js","webpack://mermaid/./node_modules/lodash/_mapCacheGet.js","webpack://mermaid/./node_modules/lodash/_mapCacheHas.js","webpack://mermaid/./node_modules/lodash/_mapCacheSet.js","webpack://mermaid/./node_modules/lodash/_baseAssign.js","webpack://mermaid/./node_modules/lodash/_baseTimes.js","webpack://mermaid/./node_modules/lodash/_baseIsArguments.js","webpack://mermaid/./node_modules/lodash/stubFalse.js","webpack://mermaid/./node_modules/lodash/_baseIsTypedArray.js","webpack://mermaid/./node_modules/lodash/_nativeKeys.js","webpack://mermaid/./node_modules/lodash/_baseAssignIn.js","webpack://mermaid/./node_modules/lodash/_baseKeysIn.js","webpack://mermaid/./node_modules/lodash/_nativeKeysIn.js","webpack://mermaid/./node_modules/lodash/_copySymbols.js","webpack://mermaid/./node_modules/lodash/_copySymbolsIn.js","webpack://mermaid/./node_modules/lodash/_getAllKeysIn.js","webpack://mermaid/./node_modules/lodash/_DataView.js","webpack://mermaid/./node_modules/lodash/_Promise.js","webpack://mermaid/./node_modules/lodash/_WeakMap.js","webpack://mermaid/./node_modules/lodash/_initCloneArray.js","webpack://mermaid/./node_modules/lodash/_initCloneByTag.js","webpack://mermaid/./node_modules/lodash/_cloneDataView.js","webpack://mermaid/./node_modules/lodash/_cloneRegExp.js","webpack://mermaid/./node_modules/lodash/_cloneSymbol.js","webpack://mermaid/./node_modules/lodash/isMap.js","webpack://mermaid/./node_modules/lodash/_baseIsMap.js","webpack://mermaid/./node_modules/lodash/isSet.js","webpack://mermaid/./node_modules/lodash/_baseIsSet.js","webpack://mermaid/./node_modules/lodash/_createBaseFor.js","webpack://mermaid/./node_modules/lodash/_createBaseEach.js","webpack://mermaid/./node_modules/lodash/_baseFilter.js","webpack://mermaid/./node_modules/lodash/_baseMatches.js","webpack://mermaid/./node_modules/lodash/_baseIsMatch.js","webpack://mermaid/./node_modules/lodash/_baseIsEqualDeep.js","webpack://mermaid/./node_modules/lodash/_setCacheAdd.js","webpack://mermaid/./node_modules/lodash/_setCacheHas.js","webpack://mermaid/./node_modules/lodash/_arraySome.js","webpack://mermaid/./node_modules/lodash/_equalByTag.js","webpack://mermaid/./node_modules/lodash/_mapToArray.js","webpack://mermaid/./node_modules/lodash/_equalObjects.js","webpack://mermaid/./node_modules/lodash/_getMatchData.js","webpack://mermaid/./node_modules/lodash/_baseMatchesProperty.js","webpack://mermaid/./node_modules/lodash/get.js","webpack://mermaid/./node_modules/lodash/_stringToPath.js","webpack://mermaid/./node_modules/lodash/_memoizeCapped.js","webpack://mermaid/./node_modules/lodash/memoize.js","webpack://mermaid/./node_modules/lodash/_baseToString.js","webpack://mermaid/./node_modules/lodash/_baseHasIn.js","webpack://mermaid/./node_modules/lodash/property.js","webpack://mermaid/./node_modules/lodash/_basePropertyDeep.js","webpack://mermaid/./node_modules/lodash/_baseHas.js","webpack://mermaid/./node_modules/lodash/isEmpty.js","webpack://mermaid/./node_modules/lodash/_arrayReduce.js","webpack://mermaid/./node_modules/lodash/_baseReduce.js","webpack://mermaid/./node_modules/lodash/size.js","webpack://mermaid/./node_modules/lodash/isString.js","webpack://mermaid/./node_modules/lodash/_stringSize.js","webpack://mermaid/./node_modules/lodash/_asciiSize.js","webpack://mermaid/./node_modules/lodash/_hasUnicode.js","webpack://mermaid/./node_modules/lodash/_unicodeSize.js","webpack://mermaid/./node_modules/lodash/transform.js","webpack://mermaid/./node_modules/lodash/union.js","webpack://mermaid/./node_modules/lodash/_isFlattenable.js","webpack://mermaid/./node_modules/lodash/_apply.js","webpack://mermaid/./node_modules/lodash/_baseSetToString.js","webpack://mermaid/./node_modules/lodash/_shortOut.js","webpack://mermaid/./node_modules/lodash/_baseUniq.js","webpack://mermaid/./node_modules/lodash/_arrayIncludes.js","webpack://mermaid/./node_modules/lodash/_baseIndexOf.js","webpack://mermaid/./node_modules/lodash/_baseIsNaN.js","webpack://mermaid/./node_modules/lodash/_strictIndexOf.js","webpack://mermaid/./node_modules/lodash/_arrayIncludesWith.js","webpack://mermaid/./node_modules/lodash/_createSet.js","webpack://mermaid/./node_modules/lodash/noop.js","webpack://mermaid/./node_modules/lodash/_baseValues.js","webpack://mermaid/./node_modules/graphlib/lib/version.js","webpack://mermaid/./node_modules/graphlib/lib/json.js","webpack://mermaid/./node_modules/graphlib/lib/alg/index.js","webpack://mermaid/./node_modules/graphlib/lib/alg/components.js","webpack://mermaid/./node_modules/graphlib/lib/alg/dijkstra-all.js","webpack://mermaid/./node_modules/graphlib/lib/alg/find-cycles.js","webpack://mermaid/./node_modules/graphlib/lib/alg/floyd-warshall.js","webpack://mermaid/./node_modules/graphlib/lib/alg/is-acyclic.js","webpack://mermaid/./node_modules/graphlib/lib/alg/postorder.js","webpack://mermaid/./node_modules/graphlib/lib/alg/preorder.js","webpack://mermaid/./node_modules/graphlib/lib/alg/prim.js","webpack://mermaid/./node_modules/dagre-d3/lib/graphlib.js","webpack://mermaid/./node_modules/dagre/lib/layout.js","webpack://mermaid/./node_modules/lodash/cloneDeep.js","webpack://mermaid/./node_modules/lodash/find.js","webpack://mermaid/./node_modules/lodash/_createFind.js","webpack://mermaid/./node_modules/lodash/findIndex.js","webpack://mermaid/./node_modules/lodash/toInteger.js","webpack://mermaid/./node_modules/lodash/toNumber.js","webpack://mermaid/./node_modules/lodash/forIn.js","webpack://mermaid/./node_modules/lodash/last.js","webpack://mermaid/./node_modules/lodash/mapValues.js","webpack://mermaid/./node_modules/lodash/max.js","webpack://mermaid/./node_modules/lodash/_baseGt.js","webpack://mermaid/./node_modules/lodash/merge.js","webpack://mermaid/./node_modules/lodash/_baseMerge.js","webpack://mermaid/./node_modules/lodash/_baseMergeDeep.js","webpack://mermaid/./node_modules/lodash/toPlainObject.js","webpack://mermaid/./node_modules/lodash/_createAssigner.js","webpack://mermaid/./node_modules/lodash/min.js","webpack://mermaid/./node_modules/lodash/minBy.js","webpack://mermaid/./node_modules/lodash/now.js","webpack://mermaid/./node_modules/lodash/_basePick.js","webpack://mermaid/./node_modules/lodash/_basePickBy.js","webpack://mermaid/./node_modules/lodash/_baseSet.js","webpack://mermaid/./node_modules/lodash/_flatRest.js","webpack://mermaid/./node_modules/lodash/_createRange.js","webpack://mermaid/./node_modules/lodash/_baseRange.js","webpack://mermaid/./node_modules/lodash/sortBy.js","webpack://mermaid/./node_modules/lodash/_baseOrderBy.js","webpack://mermaid/./node_modules/lodash/_baseSortBy.js","webpack://mermaid/./node_modules/lodash/_compareMultiple.js","webpack://mermaid/./node_modules/lodash/_compareAscending.js","webpack://mermaid/./node_modules/lodash/zipObject.js","webpack://mermaid/./node_modules/lodash/_baseZipObject.js","webpack://mermaid/./node_modules/dagre/lib/acyclic.js","webpack://mermaid/./node_modules/dagre/lib/greedy-fas.js","webpack://mermaid/./node_modules/dagre/lib/data/list.js","webpack://mermaid/./node_modules/dagre/lib/normalize.js","webpack://mermaid/./node_modules/dagre/lib/rank/index.js","webpack://mermaid/./node_modules/dagre/lib/rank/network-simplex.js","webpack://mermaid/./node_modules/dagre/lib/parent-dummy-chains.js","webpack://mermaid/./node_modules/dagre/lib/nesting-graph.js","webpack://mermaid/./node_modules/dagre/lib/add-border-segments.js","webpack://mermaid/./node_modules/dagre/lib/coordinate-system.js","webpack://mermaid/./node_modules/dagre/lib/order/index.js","webpack://mermaid/./node_modules/dagre/lib/order/init-order.js","webpack://mermaid/./node_modules/dagre/lib/order/cross-count.js","webpack://mermaid/./node_modules/dagre/lib/order/sort-subgraph.js","webpack://mermaid/./node_modules/dagre/lib/order/barycenter.js","webpack://mermaid/./node_modules/dagre/lib/order/resolve-conflicts.js","webpack://mermaid/./node_modules/dagre/lib/order/sort.js","webpack://mermaid/./node_modules/dagre/lib/order/build-layer-graph.js","webpack://mermaid/./node_modules/dagre/lib/order/add-subgraph-constraints.js","webpack://mermaid/./node_modules/dagre/lib/position/index.js","webpack://mermaid/./node_modules/dagre/lib/position/bk.js","webpack://mermaid/./node_modules/dagre/lib/debug.js","webpack://mermaid/./node_modules/dagre/lib/version.js","webpack://mermaid/./node_modules/dagre-d3/lib/intersect/index.js","webpack://mermaid/./node_modules/dagre-d3/lib/intersect/intersect-line.js","webpack://mermaid/./node_modules/dagre-d3/lib/render.js","webpack://mermaid/./node_modules/dagre-d3/lib/create-nodes.js","webpack://mermaid/./node_modules/dagre-d3/lib/label/add-text-label.js","webpack://mermaid/./node_modules/dagre-d3/lib/label/add-svg-label.js","webpack://mermaid/./node_modules/dagre-d3/lib/create-clusters.js","webpack://mermaid/./node_modules/dagre-d3/lib/create-edge-labels.js","webpack://mermaid/./node_modules/dagre-d3/lib/create-edge-paths.js","webpack://mermaid/./node_modules/dagre-d3/lib/position-nodes.js","webpack://mermaid/./node_modules/dagre-d3/lib/position-edge-labels.js","webpack://mermaid/./node_modules/dagre-d3/lib/position-clusters.js","webpack://mermaid/./node_modules/dagre-d3/lib/shapes.js","webpack://mermaid/./node_modules/dagre-d3/lib/arrows.js","webpack://mermaid/./node_modules/dagre-d3/lib/version.js","webpack://mermaid/./node_modules/entity-decode/browser.js","webpack://mermaid/./src/logger.js","webpack://mermaid/./src/diagrams/common/common.js","webpack://mermaid/./src/utils.js","webpack://mermaid/./src/config.js","webpack://mermaid/./src/diagrams/flowchart/flowDb.js","webpack://mermaid/./src/diagrams/flowchart/flowChartShapes.js","webpack://mermaid/./src/diagrams/flowchart/flowRenderer.js","webpack://mermaid/./src/dagre-wrapper/markers.js","webpack://mermaid/./src/dagre-wrapper/createLabel.js","webpack://mermaid/./src/dagre-wrapper/shapes/util.js","webpack://mermaid/./src/dagre-wrapper/mermaid-graphlib.js","webpack://mermaid/./src/dagre-wrapper/intersect/intersect-ellipse.js","webpack://mermaid/./src/dagre-wrapper/intersect/intersect-circle.js","webpack://mermaid/./src/dagre-wrapper/intersect/intersect-line.js","webpack://mermaid/./src/dagre-wrapper/intersect/intersect-polygon.js","webpack://mermaid/./src/dagre-wrapper/intersect/intersect-rect.js","webpack://mermaid/./src/dagre-wrapper/intersect/index.js","webpack://mermaid/./src/dagre-wrapper/nodes.js","webpack://mermaid/./src/dagre-wrapper/shapes/note.js","webpack://mermaid/./src/dagre-wrapper/clusters.js","webpack://mermaid/./src/dagre-wrapper/edges.js","webpack://mermaid/./src/dagre-wrapper/index.js","webpack://mermaid/./src/diagrams/flowchart/flowRenderer-v2.js","webpack://mermaid/./src/diagrams/sequence/svgDraw.js","webpack://mermaid/./src/diagrams/sequence/sequenceDb.js","webpack://mermaid/./src/diagrams/sequence/sequenceRenderer.js","webpack://mermaid/./src/diagrams/gantt/ganttDb.js","webpack://mermaid/./src/diagrams/gantt/ganttRenderer.js","webpack://mermaid/./src/diagrams/class/classDb.js","webpack://mermaid/./src/diagrams/class/svgDraw.js","webpack://mermaid/./src/diagrams/class/classRenderer.js","webpack://mermaid/./src/diagrams/state/stateDb.js","webpack://mermaid/./src/diagrams/state/stateRenderer.js","webpack://mermaid/./src/diagrams/state/id-cache.js","webpack://mermaid/./src/diagrams/state/shapes.js","webpack://mermaid/./src/diagrams/state/stateRenderer-v2.js","webpack://mermaid/./src/diagrams/git/gitGraphAst.js","webpack://mermaid/./src/diagrams/git/gitGraphRenderer.js","webpack://mermaid/./src/diagrams/pie/pieRenderer.js","webpack://mermaid/./src/diagrams/info/infoDb.js","webpack://mermaid/./src/diagrams/info/infoRenderer.js","webpack://mermaid/./src/errorRenderer.js","webpack://mermaid/./src/diagrams/pie/pieDb.js","webpack://mermaid/./src/diagrams/er/erDb.js","webpack://mermaid/./src/diagrams/er/erMarkers.js","webpack://mermaid/./src/diagrams/er/erRenderer.js","webpack://mermaid/./src/diagrams/user-journey/journeyDb.js","webpack://mermaid/./src/diagrams/user-journey/svgDraw.js","webpack://mermaid/./src/diagrams/user-journey/journeyRenderer.js","webpack://mermaid/./src/mermaidAPI.js","webpack://mermaid/./src/mermaid.js"],"names":["root","factory","exports","module","define","amd","self","this","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","a","b","NaN","f","compare","length","x","ascending","left","lo","hi","mid","right","ascendingBisect","bisector","bisectRight","bisectLeft","bisect","pair","array","pairs","Array","i0","i1","value0","n0","values0","n1","values1","values","reduce","delta","mean","sum","valueof","isNaN","number","v","variance","Math","sqrt","min","max","slice","map","start","stop","step","arguments","ceil","range","e10","e5","e2","reverse","ticks","count","tickIncrement","isFinite","floor","power","log","LN10","error","pow","tickStep","step0","abs","step1","LN2","identity","domain","threshold","sturges","histogram","data","xz","x0","x1","tz","isArray","shift","pop","bin","bins","push","_","constant","thresholds","sort","quantile","deviation","numbers","merged","arrays","j","indexes","permutes","xi","xj","random","matrix","transpose","row","translateX","translateY","y","scale","offset","bandwidth","round","entering","__axis","orient","tickArguments","tickValues","tickFormat","tickSizeInner","tickSizeOuter","tickPadding","k","transform","axis","context","apply","format","spacing","range0","range1","position","copy","selection","path","selectAll","tick","order","tickExit","exit","tickEnter","enter","append","attr","line","select","text","merge","insert","transition","getAttribute","parentNode","remove","filter","each","tickSize","axisTop","axisRight","axisBottom","axisLeft","noop","dispatch","test","Error","Dispatch","parseTypenames","typenames","types","trim","split","indexOf","type","set","callback","concat","constructor","on","typename","T","that","args","none","selector","querySelector","querySelectorAll","matches","update","EnterNode","parent","datum","ownerDocument","namespaceURI","_next","_parent","__data__","appendChild","child","insertBefore","next","bindIndex","group","node","groupLength","dataLength","bindKey","keyValue","nodeByKeyValue","keyValues","xhtml","svg","xlink","xml","xmlns","prefix","namespaces","space","local","attrRemove","removeAttribute","attrRemoveNS","fullname","removeAttributeNS","attrConstant","setAttribute","attrConstantNS","setAttributeNS","attrFunction","attrFunctionNS","defaultView","document","styleRemove","style","removeProperty","styleConstant","priority","setProperty","styleFunction","styleValue","getPropertyValue","getComputedStyle","propertyRemove","propertyConstant","propertyFunction","classArray","string","classList","ClassList","_node","_names","classedAdd","names","list","add","classedRemove","classedTrue","classedFalse","classedFunction","join","splice","contains","textRemove","textContent","textConstant","textFunction","htmlRemove","innerHTML","htmlConstant","htmlFunction","raise","nextSibling","lower","previousSibling","firstChild","creatorInherit","uri","documentElement","createElement","createElementNS","creatorFixed","namespace","constantNull","removeChild","selection_cloneShallow","clone","cloneNode","selection_cloneDeep","filterEvents","mouseenter","mouseleave","filterContextListener","listener","index","contextListener","event","related","relatedTarget","compareDocumentPosition","event1","event0","onRemove","__on","removeEventListener","capture","onAdd","wrap","addEventListener","customEvent","sourceEvent","dispatchEvent","params","window","CustomEvent","createEvent","initEvent","bubbles","cancelable","detail","dispatchConstant","dispatchFunction","Selection","groups","parents","_groups","_parents","subgroups","subnode","subgroup","selectorAll","match","matcher","size","enterGroup","updateGroup","previous","_enter","_exit","sparse","onenter","onupdate","onexit","groups0","groups1","m0","m1","merges","group0","group1","compareNode","sortgroups","sortgroup","nodes","empty","getAttributeNS","classed","html","creator","before","deep","nopropagation","stopImmediatePropagation","preventDefault","view","noevent","__noselect","MozUserSelect","yesdrag","noclick","setTimeout","extend","definition","Color","reI","reN","reP","reHex","reRgbInteger","RegExp","reRgbPercent","reRgbaInteger","reRgbaPercent","reHslPercent","reHslaPercent","named","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","color_formatHex","rgb","formatHex","color_formatRgb","formatRgb","toLowerCase","exec","parseInt","rgbn","Rgb","rgba","hsla","g","rgbConvert","opacity","rgb_formatHex","hex","rgb_formatRgb","toString","h","Hsl","hslConvert","hsl","hsl2rgb","m2","basis","t1","v0","v1","v2","v3","t2","t3","channels","assign","displayable","formatHsl","brighter","darker","linear","gamma","nogamma","exponential","color","end","rgbGamma","rgbSpline","spline","colors","rgbBasis","rgbBasisClosed","basisClosed","isNumberArray","ArrayBuffer","isView","DataView","numberArray","genericArray","nb","na","Date","setTime","reA","reB","source","taskHead","taskTail","am","bm","bs","bi","lastIndex","q","one","valueOf","current","ownerSVGElement","createSVGPoint","point","clientX","clientY","matrixTransform","getScreenCTM","inverse","rect","getBoundingClientRect","clientLeft","top","clientTop","identifier","touches","changedTouches","touch","timeout","clockLast","clockNow","clockSkew","clock","performance","now","setFrame","requestAnimationFrame","clearNow","Timer","_call","_time","timer","delay","time","restart","timerFlush","e","wake","t0","Infinity","sleep","nap","poke","clearTimeout","clearInterval","setInterval","TypeError","elapsed","emptyOn","emptyTween","schedules","__transition","id","tween","state","duration","ease","timing","schedule","cssNode","cssRoot","cssView","svgNode","active","degrees","PI","rotate","skewX","scaleX","scaleY","atan2","atan","interpolateTransform","parse","pxComma","pxParen","degParen","xa","ya","xb","yb","translate","interpolateTransformCss","decompose","interpolateTransformSvg","baseVal","consolidate","tweenRemove","tween0","tween1","tweenFunction","tweenValue","_id","interpolate","value1","string00","interpolate0","string1","string0","string10","attrInterpolate","attrInterpolateNS","attrTweenNS","_value","attrTween","delayFunction","delayConstant","durationFunction","durationConstant","easeConstant","onFunction","on0","on1","sit","every","styleInterpolate","styleTween","textInterpolate","textTween","Transition","_name","newId","selection_prototype","cubicIn","cubicOut","cubicInOut","children","inherit","id0","id1","styleNull","listener0","undefined","styleMaybeRemove","Promise","resolve","reject","cancel","interrupt","defaultTiming","target","MODE_DRAG","MODE_SPACE","MODE_HANDLE","MODE_CENTER","number1","number2","toucher","handles","input","output","xy","XY","cursors","overlay","w","nw","ne","se","sw","flipX","flipY","signsX","signsY","defaultFilter","ctrlKey","button","defaultExtent","hasAttribute","viewBox","width","height","defaultTouchable","navigator","maxTouchPoints","__brush","extent","brushSelection","dim","brushX","brushY","touchending","touchable","keys","listeners","handleSize","brush","initialize","handle","redraw","started","touchmoved","touchended","emitter","clean","Emitter","w0","w1","e0","e1","s0","s1","moving","lockX","lockY","metaKey","altKey","signX","signY","W","N","E","S","dx","dy","shifting","shiftKey","pointer","mouse","point0","emit","beforestart","moved","ended","keydowned","keyupped","point1","move","keyCode","selection0","selection1","clear","starting","keyModifiers","cos","sin","pi","halfPi","tau","compareValue","padAngle","sortGroups","sortSubgroups","sortChords","chord","groupSums","groupIndex","subgroupIndex","chords","forEach","di","dj","a0","a1","subindex","startAngle","endAngle","tauEpsilon","Path","_x0","_y0","_x1","_y1","moveTo","closePath","lineTo","quadraticCurveTo","y1","bezierCurveTo","x2","y2","arcTo","y0","x21","y21","x01","y01","l01_2","x20","y20","l21_2","l20_2","l21","l01","acos","t01","t21","arc","ccw","cw","da","defaultSource","defaultTarget","defaultRadius","radius","defaultStartAngle","defaultEndAngle","ribbon","buffer","argv","sr","sa0","sa1","sx0","sy0","tr","ta0","ta1","Map","has","entries","sortValues","rollup","nest","sortKeys","depth","createResult","setResult","valuesByKey","result","createObject","setObject","createMap","setMap","sortKey","Set","proto","deg2rad","rad2deg","labConvert","Lab","Hcl","hcl2lab","z","rgb2lrgb","xyz2lab","lab","lab2xyz","lrgb2rgb","hclConvert","lch","hcl","C","ED","EB","BC_DA","cubehelixConvert","Cubehelix","bl","cosh","sinh","hole","ringContains","ring","yi","pj","yj","segmentContains","collinear","cases","smooth","smoothLinear","contours","contour","polygons","holes","fragmentByStart","fragmentByEnd","stitch","startIndex","endIndex","unshift","isorings","area","polygon","coordinates","xt","yt","_0","_1","blurX","blurY","defaultX","defaultY","defaultWeight","weight","density","Float32Array","wi","geometry","transformPolygon","transformRing","transformPoint","resize","cellSize","DragEvent","subject","defaultContainer","defaultSubject","mousedownx","mousedowny","mousemoving","container","gestures","clickDistance2","drag","mousedowned","touchstarted","gesture","mousemoved","mouseupped","nodrag","sublisteners","p0","clickDistance","EOL","EOF","objectConverter","columns","Function","JSON","stringify","inferColumns","rows","columnSet","column","pad","formatDate","date","year","hours","getUTCHours","minutes","getUTCMinutes","seconds","getUTCSeconds","milliseconds","getUTCMilliseconds","getUTCFullYear","getUTCMonth","getUTCDate","reFormat","delimiter","DELIMITER","charCodeAt","parseRows","I","eof","eol","token","replace","preformatBody","formatValue","formatRow","convert","customConverter","formatBody","formatRows","csv","dsv","csvParse","csvParseRows","csvFormat","csvFormatBody","csvFormatRows","csvFormatRow","csvFormatValue","tsv","tsvParse","tsvParseRows","tsvFormat","tsvFormatBody","tsvFormatRows","tsvFormatRow","tsvFormatValue","autoType","fixtz","getHours","quadIn","quadOut","quadInOut","polyIn","custom","exponent","polyOut","polyInOut","sinIn","sinOut","sinInOut","expIn","expOut","expInOut","circleIn","circleOut","circleInOut","bounceIn","bounceOut","bounceInOut","backIn","overshoot","backOut","backInOut","elasticIn","asin","amplitude","period","elasticOut","elasticInOut","responseBlob","response","ok","status","statusText","blob","fetch","init","then","responseArrayBuffer","arrayBuffer","responseText","dsvParse","image","Image","onerror","onload","src","responseJson","json","parser","DOMParser","parseFromString","force","sx","sy","tree","xm","ym","xp","yp","bottom","_root","leaf","_x","_y","quadtree","Quadtree","addAll","leaf_copy","treeProto","vx","vy","cover","yz","visit","find","x3","y3","quads","d2","retainer","removeAll","visitAfter","radii","strength","iterations","ri","ri2","prepare","quad","rj","jiggle","nodeById","nodeId","strengths","distances","bias","link","distance","alpha","links","initializeStrength","initializeDistance","initialAngle","simulation","alphaMin","alphaDecay","alphaTarget","velocityDecay","forces","stepper","fx","fy","initializeNodes","angle","initializeForce","closest","distanceMin2","distanceMax2","theta2","accumulate","distanceMin","distanceMax","theta","radiuses","toExponential","coefficient","formatDecimal","re","formatSpecifier","specifier","FormatSpecifier","fill","align","sign","symbol","zero","comma","precision","prefixExponent","toFixed","toPrecision","formatRounded","toUpperCase","prefixes","locale","grouping","thousands","Number","substring","currencyPrefix","currency","currencySuffix","decimal","numerals","formatNumerals","String","percent","minus","nan","newFormat","formatTypes","suffix","formatType","maybeSuffix","valuePrefix","valueSuffix","valueNegative","out","formatTrim","padding","formatPrefix","defaultLocale","Adder","reset","temp","adder","bv","av","quarterPi","radians","exp","haversin","streamGeometry","stream","streamGeometryType","streamObjectType","Feature","FeatureCollection","features","Sphere","sphere","Point","MultiPoint","LineString","streamLine","MultiLineString","Polygon","streamPolygon","MultiPolygon","GeometryCollection","geometries","closed","coordinate","lineStart","lineEnd","polygonStart","polygonEnd","phi00","areaRingSum","areaSum","areaStream","areaRingStart","areaRingEnd","areaRing","areaPointFirst","areaPoint","lambda","phi","dLambda","sdLambda","adLambda","cosPhi","sinPhi","u","cartesian","spherical","cartesianDot","cartesianCross","cartesianAddInPlace","cartesianScale","vector","cartesianNormalizeInPlace","ranges","deltaSum","boundsStream","boundsPoint","boundsLineStart","boundsLineEnd","boundsRingPoint","boundsRingStart","boundsRingEnd","normal","inflection","phii","lambdai","antimeridian","lambda0","lambda1","rangeCompare","rangeContains","W0","W1","Z0","Z1","X2","Y2","Z2","z0","deltaMax","feature","centroidStream","centroidPoint","centroidLineStart","centroidLineEnd","centroidRingStart","centroidRingEnd","centroidPointCartesian","centroidLinePointFirst","centroidLinePoint","centroidRingPointFirst","centroidRingPoint","cx","cy","cz","compose","invert","rotationIdentity","rotateRadians","deltaLambda","deltaPhi","deltaGamma","rotationLambda","rotationPhiGamma","forwardRotationLambda","rotation","cosDeltaPhi","sinDeltaPhi","cosDeltaGamma","sinDeltaGamma","forward","circleStream","direction","cosRadius","sinRadius","circleRadius","center","circle","lines","rejoin","Intersection","points","other","entry","clip","segments","segment","p1","pointEqual","compareIntersection","startInside","isSubject","longitude","winding","phi0","sinPhi0","cosPhi0","sinPhi1","cosPhi1","phi1","absDelta","intersection","phiArc","sink","clipLine","ringBuffer","ringSink","polygonStarted","pointRing","ringStart","ringEnd","polygonContains","pointVisible","pointLine","ringSegments","validSegment","sign0","sign1","sinLambda0Lambda1","clipAntimeridianIntersect","from","to","cr","smallRadius","notHemisphere","visible","intersect","two","n2","n2n2","n1n2","determinant","c1","c2","n1xn2","A","uu","polar","q1","code","c0","v00","point2","clipRectangle","corner","comparePoint","ca","cb","x__","y__","v__","x_","y_","v_","first","activeStream","bufferStream","clipStream","linePoint","b0","b1","polygonInside","cleanInside","ax","ay","cache","cacheStream","lengthSum","lengthStream","lengthPointFirst","lengthLineEnd","lengthPoint","cosDelta","containsObjectType","containsGeometry","containsGeometryType","containsPoint","containsLine","containsPolygon","ao","bo","ab","ringRadians","pointRadians","graticuleX","graticuleY","X1","X0","Y1","Y0","X","Y","DX","DY","graticule","outline","extentMajor","extentMinor","stepMajor","stepMinor","graticule10","cy0","cy1","sy1","kx0","ky0","kx1","ky1","B","bounds","centroid","centroidPointFirstLine","centroidPointLine","centroidPointFirstRing","centroidPointRing","PathContext","_context","_radius","pointRadius","_line","_point","lengthRing","PathString","_string","_circle","projectionStream","contextStream","measure","projection","transformer","methods","TransformStream","fit","fitBounds","clipExtent","fitExtent","fitSize","fitWidth","fitHeight","cosMinDistance","delta2","project","resampleLineTo","phi2","lambda2","dx2","dy2","dz","lambda00","x00","y00","a00","b00","c00","resampleStream","ringPoint","resampleNone","transformRadians","scaleTranslate","scaleTranslateRotate","cosAlpha","sinAlpha","ai","ci","fi","projectionMutator","projectAt","projectResample","projectTransform","projectRotateTransform","preclip","postclip","recenter","resample","transformRotate","clipAngle","conicProjection","parallels","conicEqualAreaRaw","cylindricalEqualAreaRaw","r0","r0y","conicEqualArea","lower48Point","alaskaPoint","hawaiiPoint","lower48","albers","alaska","hawaii","pointStream","albersUsa","streams","azimuthalRaw","azimuthalInvert","sc","cc","azimuthalEqualAreaRaw","cxcy","azimuthalEquidistantRaw","mercatorRaw","mercatorProjection","reclip","tany","conicConformalRaw","equirectangularRaw","conicEquidistantRaw","gy","nx","A1","A2","A3","A4","M","equalEarthRaw","l2","l6","gnomonicRaw","kx","ky","tx","ty","reflectX","reflectY","naturalEarth1Raw","phi4","orthographicRaw","stereographicRaw","transverseMercatorRaw","defaultSeparation","meanXReduce","maxYReduce","separation","nodeSize","cluster","previousNode","eachAfter","meanX","maxY","leafLeft","leafRight","hierarchy","childs","Node","valued","defaultChildren","eachBefore","computeHeight","copyData","ancestor","aNodes","ancestors","bNodes","leastCommonAncestor","descendants","leaves","circles","enclosesWeak","encloseBasis","extendBasis","enclosesWeakAll","enclosesNot","encloseBasis2","encloseBasis3","dr","r1","r2","r21","r3","a2","a3","b2","b3","c3","d1","d3","place","intersects","score","packEnclose","aa","sj","sk","pack","enclose","optional","required","constantZero","radiusLeaf","packChildren","translateChild","partition","positionNode","preroot","ambiguous","defaultId","defaultParentId","parentId","stratify","nodeKey","nodeByKey","nextLeft","nextRight","moveSubtree","wm","wp","change","nextAncestor","vim","TreeNode","treeRoot","firstWalk","secondWalk","sizeNode","siblings","executeShifts","midpoint","vip","vop","vom","sip","sop","sim","som","apportion","squarifyRatio","ratio","nodeValue","sumValue","minValue","maxValue","newRatio","minRatio","beta","dice","squarify","tile","paddingStack","paddingInner","paddingTop","paddingRight","paddingBottom","paddingLeft","treemap","paddingOuter","sums","valueOffset","valueTarget","valueLeft","valueRight","xk","yk","resquarify","_squarify","rho","SQRT2","ux0","uy0","ux1","uy1","coshr0","hue","hslLong","hclLong","cubehelixGamma","cubehelix","cubehelixLong","samples","interpolator","lexicographicOrder","computeUpperHullIndexes","sortedPoints","flippedPoints","upperIndexes","lowerIndexes","skipLeft","skipRight","hull","inside","perimeter","randomUniform","sourceRandomUniform","randomNormal","mu","sigma","sourceRandomNormal","randomLogNormal","sourceRandomLogNormal","randomIrwinHall","sourceRandomIrwinHall","randomBates","irwinHall","sourceRandomBates","randomExponential","sourceRandomExponential","initRange","initInterpolator","implicit","ordinal","unknown","band","ordinalRange","rescale","rangeRound","pointish","unit","normalize","clamper","bimap","d0","polymap","clamp","untransform","piecewise","continuous","precisionPrefix","precisionRound","precisionFixed","linearish","nice","interval","transformLog","transformExp","transformLogn","transformExpn","pow10","reflect","loggish","logs","pows","base","log10","log2","logp","powp","transformSymlog","log1p","transformSymexp","expm1","symlogish","symlog","transformPow","transformSqrt","transformSquare","powish","invertExtent","quantiles","newInterval","floori","offseti","field","setMonth","setHours","setFullYear","getFullYear","years","setDate","getMonth","months","weekday","getDate","getDay","getTimezoneOffset","sunday","monday","tuesday","wednesday","thursday","friday","saturday","sundays","mondays","tuesdays","wednesdays","thursdays","fridays","saturdays","days","getMilliseconds","getSeconds","getMinutes","utcWeekday","setUTCDate","getUTCDay","setUTCHours","utcSunday","utcMonday","utcTuesday","utcWednesday","utcThursday","utcFriday","utcSaturday","utcSundays","utcMondays","utcTuesdays","utcWednesdays","utcThursdays","utcFridays","utcSaturdays","utcDay","utcDays","utcYear","setUTCMonth","setUTCFullYear","utcYears","localDate","H","L","utcDate","UTC","newDate","formatLocale","locale_dateTime","dateTime","locale_date","locale_time","locale_periods","periods","locale_weekdays","locale_shortWeekdays","shortDays","locale_months","locale_shortMonths","shortMonths","periodRe","formatRe","periodLookup","formatLookup","weekdayRe","weekdayLookup","shortWeekdayRe","shortWeekdayLookup","monthRe","monthLookup","shortMonthRe","shortMonthLookup","formats","formatDayOfMonth","formatMicroseconds","formatHour24","formatHour12","formatDayOfYear","formatMilliseconds","formatMonthNumber","formatMinutes","formatUnixTimestamp","formatUnixTimestampSeconds","formatSeconds","formatWeekdayNumberMonday","formatWeekNumberSunday","formatWeekNumberISO","formatWeekdayNumberSunday","formatWeekNumberMonday","formatFullYear","formatZone","formatLiteralPercent","utcFormats","formatUTCDayOfMonth","formatUTCMicroseconds","formatUTCHour24","formatUTCHour12","formatUTCDayOfYear","formatUTCMilliseconds","formatUTCMonthNumber","formatUTCMinutes","formatUTCSeconds","formatUTCWeekdayNumberMonday","formatUTCWeekNumberSunday","formatUTCWeekNumberISO","formatUTCWeekdayNumberSunday","formatUTCWeekNumberMonday","formatUTCYear","formatUTCFullYear","formatUTCZone","parses","parseSpecifier","parseDayOfMonth","parseMicroseconds","parseHour24","parseDayOfYear","parseMilliseconds","parseMonthNumber","parseMinutes","parseQuarter","parseUnixTimestamp","parseUnixTimestampSeconds","parseSeconds","parseWeekdayNumberMonday","parseWeekNumberSunday","parseWeekNumberISO","parseWeekdayNumberSunday","parseWeekNumberMonday","parseYear","parseFullYear","parseZone","parseLiteralPercent","pads","charAt","newParse","Z","week","day","Q","V","U","utcFormat","utcParse","timeFormat","timeParse","numberRe","percentRe","requoteRe","requote","dow","calendar","month","hour","minute","second","millisecond","formatMillisecond","formatSecond","formatMinute","formatHour","formatDay","formatWeek","formatMonth","formatYear","tickIntervals","tickInterval","utcMonth","utcMonths","utcHour","setUTCMinutes","utcHours","utcMinute","setUTCSeconds","utcMinutes","k10","sequential","sequentialLog","sequentialSymlog","sequentialPow","sequentialSqrt","sequentialQuantile","k21","diverging","divergingLog","divergingSymlog","divergingPow","divergingSqrt","scheme","ramp","warm","cool","ts","pi_1_3","pi_2_3","magma","inferno","plasma","nextId","Local","arcInnerRadius","innerRadius","arcOuterRadius","outerRadius","arcStartAngle","arcEndAngle","arcPadAngle","x10","y10","x32","y32","cornerTangents","rc","ox","oy","x11","y11","D","cx0","cx1","dx0","dy0","dx1","dy1","cornerRadius","padRadius","a01","a11","a10","da0","da1","ap","rp","rc0","rc1","oc","bx","by","kc","lc","Linear","areaStart","areaEnd","defined","curve","defined0","x0z","y0z","arealine","lineX0","lineY0","lineY1","lineX1","pie","arcs","pa","curveRadialLinear","curveRadial","Radial","_curve","radial","lineRadial","lineStartAngle","lineEndAngle","lineInnerRadius","lineOuterRadius","linkSource","linkTarget","curveHorizontal","curveVertical","pointRadial","p2","p3","linkHorizontal","linkVertical","linkRadial","draw","tan30","tan30_2","kr","sqrt3","symbols","diamond","square","star","triangle","wye","Basis","BasisClosed","_x2","_x3","_x4","_y2","_y3","_y4","BasisOpen","Bundle","_basis","_beta","bundle","_k","Cardinal","tension","cardinal","CardinalClosed","_x5","_y5","CardinalOpen","_l01_a","_l01_2a","_l12_a","_l12_2a","_l23_a","_l23_2a","CatmullRom","_alpha","x23","y23","catmullRom","CatmullRomClosed","CatmullRomOpen","LinearClosed","slope3","h0","h1","slope2","MonotoneX","MonotoneY","ReflectContext","monotoneX","monotoneY","Natural","controlPoints","_t0","px","py","Step","_t","stepBefore","stepAfter","series","stackValue","stack","oz","kz","sz","sij","ki","si","yn","s2","sij0","s3","peaks","peak","vi","vj","appearance","tops","bottoms","toISOString","total","RedBlackTree","RedBlackNode","R","P","RedBlackRotateLeft","RedBlackRotateRight","RedBlackFirst","after","grandpa","uncle","sibling","createEdge","edge","setEdgeEnd","cells","halfedges","createBorderEdge","vertex","clipEdge","connectEdge","fm","fb","lx","ly","rx","ry","cellHalfedgeAngle","cell","site","va","vb","cellHalfedgeStart","cellHalfedgeEnd","firstCircle","circlePool","Circle","attachCircle","lArc","rArc","lSite","cSite","rSite","ha","hc","detachCircle","beachPool","Beach","createBeach","beach","detachBeach","beaches","removeBeach","disappearing","iArc","nArcs","addBeach","dxl","dxr","directrix","leftBreakPoint","rightBreakPoint","createCell","newArc","hb","rfocx","rfocy","pby2","lfocx","lfocy","plby2","hl","aby2","lexicographic","Diagram","sites","sortCellHalfedges","clipEdges","iCell","iHalfedge","nHalfedges","startX","startY","endX","endY","nCells","dc","v01","v11","v10","clipCells","edges","triangles","_found","voronoi","ZoomEvent","Transform","applyX","applyY","location","invertX","invertY","rescaleX","rescaleY","__zoom","SVGElement","clientWidth","clientHeight","defaultTransform","defaultWheelDelta","deltaY","deltaMode","defaultConstrain","translateExtent","touchstarting","constrain","wheelDelta","scaleExtent","zoom","wheeled","dblclicked","__zooming","Gesture","taps","wheel","wheelidled","k1","touch0","touch1","l0","l1","dp","dl","collection","scaleBy","scaleTo","k0","translateBy","translateTo","$V0","$V1","$V2","$V3","$V4","$V5","$V6","$V7","$V8","$V9","$Va","$Vb","$Vc","$Vd","$Ve","$Vf","$Vg","$Vh","$Vi","$Vj","$Vk","$Vl","$Vm","$Vn","$Vo","$Vp","$Vq","trace","yy","symbols_","terminals_","2","4","5","7","14","16","18","19","21","22","23","25","27","28","29","30","31","33","35","36","37","39","42","43","44","46","47","48","49","50","51","52","53","54","55","56","57","58","59","productions_","performAction","yytext","yyleng","yylineno","yystate","$$","_$","$0","$","description","parseMessage","enableSequenceNumbers","signalType","LINETYPE","ACTIVE_START","actor","ACTIVE_END","loopText","LOOP_START","LOOP_END","RECT_START","RECT_END","optText","OPT_START","OPT_END","altText","ALT_START","ALT_END","parText","PAR_START","PAR_END","PAR_AND","ALT_ELSE","placement","PLACEMENT","OVER","LEFTOF","RIGHTOF","msg","SOLID_OPEN","DOTTED_OPEN","SOLID","DOTTED","SOLID_CROSS","DOTTED_CROSS","parseDirective","table","3","6","11","1","8","12","9","10","17","20","24","13","26","45","38","15","32","34","40","defaultActions","60","63","93","94","95","101","102","103","104","105","parseError","str","hash","recoverable","tstack","vstack","lstack","recovering","TERROR","lexer","sharedState","setInput","yylloc","yyloc","options","lex","getPrototypeOf","preErrorSymbol","action","len","newState","expected","yyval","errStr","showPosition","loc","first_line","last_line","first_column","last_column","_input","_more","_backtrack","done","matched","conditionStack","ch","unput","substr","oldLines","more","backtrack_lexer","less","pastInput","past","upcomingInput","pre","test_match","indexed_rule","backup","tempMatch","rules","_currentRules","flex","begin","condition","popState","conditions","topState","pushState","stateStackSize","yy_","$avoiding_name_collisions","YY_START","Parser","main","console","process","readFileSync","ctor","superCtor","super_","writable","configurable","TempCtor","Buffer","copyProps","dst","SafeBuffer","arg","encodingOrOffset","alloc","allocUnsafe","allocUnsafeSlow","encoding","buf","SlowBuffer","lib","Graph","alg","version","lodash","cloneDeep","defaults","flatten","forIn","isUndefined","last","mapValues","minBy","pick","sortBy","uniqueId","zipObject","assert","val","inherits","BN","endian","isBN","negative","words","_init","wordSize","parseHex","parseBase","mul","num","cmp","_initNumber","_initArray","_parseHex","_parseBase","strip","toArray","off","limbLen","limbPow","mod","word","imuln","_iaddn","dest","_expand","_normSign","inspect","zeros","groupSizes","groupBases","smallMulTo","carry","ncarry","rword","maxJ","groupSize","groupBase","isZero","modn","idivn","toNumber","ret","toJSON","toBuffer","toArrayLike","ArrayType","byteLength","reqLength","littleEndian","res","andln","iushrn","clz32","_countBits","_zeroBits","bitLength","zeroBits","toTwos","inotn","iaddn","fromTwos","testn","notn","ineg","isNeg","neg","iuor","ior","or","uor","iuand","iand","and","uand","iuxor","ixor","xor","uxor","bytesNeeded","bitsLeft","setn","bit","wbit","iadd","isub","sub","comb10MulTo","al0","ah0","al1","ah1","al2","ah2","al3","ah3","a4","al4","ah4","a5","al5","ah5","a6","al6","ah6","a7","al7","ah7","a8","al8","ah8","a9","al9","ah9","bl0","bh0","bl1","bh1","bl2","bh2","bl3","bh3","b4","bl4","bh4","b5","bl5","bh5","b6","bl6","bh6","b7","bl7","bh7","b8","bl8","bh8","b9","bl9","bh9","imul","w2","w3","w4","w5","w6","w7","w8","w9","w10","w11","w12","w13","w14","w15","w16","w17","w18","jumboMulTo","FFTM","mulp","mulTo","hncarry","bigMulTo","makeRBT","revBin","rb","permute","rbt","rws","iws","rtws","itws","rtwdf","itwdf","rtwdf_","itwdf_","ie","ro","io","guessLen13b","odd","conjugate","normalize13b","ws","convert13b","stub","ph","rwst","iwst","nrws","nrwst","niwst","rmws","mulf","muln","sqr","isqr","toBitArray","iushln","bits","carryMask","newCarry","ishln","hint","extended","mask","maskedWords","ishrn","shln","ushln","shrn","ushrn","imaskn","maskn","isubn","addn","subn","iabs","_ishlnsubmul","_wordDiv","bhi","diff","qj","div","divmod","positive","divn","umod","divRound","dm","half","acc","egcd","isEven","im","isOdd","jm","gcd","_invmp","cmpn","invm","bincn","ucmp","gtn","gt","gten","gte","ltn","lt","lten","lte","eqn","eq","Red","toRed","ctx","convertTo","_forceRed","fromRed","convertFrom","forceRed","redAdd","redIAdd","redSub","redISub","redShl","shl","redMul","_verify2","redIMul","redSqr","_verify1","redISqr","redSqrt","redInvm","redNeg","redPow","primes","k256","p224","p192","p25519","MPrime","tmp","_tmp","K256","P224","P192","P25519","prime","_prime","Mont","imod","rinv","minv","ireduce","rlen","imulK","outLen","prev","mod3","nOne","lpow","inv","wnd","currentLen","mont","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","currentQueue","queue","draining","queueIndex","cleanUpNextTick","drainQueue","run","marker","runClearTimeout","Item","nextTick","title","browser","env","versions","addListener","once","removeListener","removeAllListeners","prependListener","prependOnceListener","binding","cwd","chdir","dir","umask","base64","ieee754","kMaxLength","TYPED_ARRAY_SUPPORT","createBuffer","RangeError","Uint8Array","__proto__","byteOffset","fromArrayLike","fromArrayBuffer","isEncoding","actual","write","fromString","obj","isBuffer","checked","fromObject","assertSize","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","bidirectionalIndexOf","arrayIndexOf","lastIndexOf","arr","indexSize","arrLength","valLength","read","readUInt16BE","foundIndex","found","hexWrite","remaining","strLen","parsed","utf8Write","blitBuffer","asciiWrite","byteArray","asciiToBytes","latin1Write","base64Write","ucs2Write","units","utf16leToBytes","fromByteArray","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","codePoints","fromCharCode","decodeCodePointsArray","INSPECT_MAX_BYTES","global","foo","subarray","typedArraySupport","poolSize","_augment","species","_isBuffer","pos","swap16","swap32","swap64","equals","thisStart","thisEnd","thisCopy","targetCopy","includes","_arr","toHex","bytes","checkOffset","ext","checkInt","objectWriteUInt16","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","writeDouble","newBuf","sliceLen","readUIntLE","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUIntBE","writeUInt8","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","limit","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","INVALID_BASE64_RE","leadSurrogate","toByteArray","stringtrim","base64clean","webpackPolyfill","deprecate","paths","graphlib","dagre","render","util","addDummyNode","attrs","hasNode","dummy","setNode","maxRank","rank","simplify","simplified","setGraph","graph","simpleLabel","minlen","label","setEdge","asNonCompoundGraph","multigraph","isMultigraph","successorWeights","weightMap","sucs","outEdges","predecessorWeights","preds","inEdges","intersectRect","buildLayerMatrix","layering","normalizeRanks","removeEmptyRanks","layers","nodeRankFactor","vs","addBorderNode","fn","lhs","rhs","notime","equal","utils","minAssert","minUtils","zero2","encode","getNAF","naf","getJSF","k2","jsf","u1","u2","m8","m14","m24","cachedProperty","computer","parseBytes","intFromLE","isEmpty","isFunction","union","isSubgraph","edgeToId","escapeId","applyStyle","dom","styleFn","applyClass","classFn","otherClasses","applyTransition","isPlainObject","ID_DELIM","freeGlobal","freeSelf","isSurrogatePair","htonl","zero8","enc","toHex32","join32","split32","rotr32","rotl32","sum32","sum32_3","sum32_4","sum32_5","sum64","ah","al","bh","sum64_hi","sum64_lo","sum64_4_hi","cl","dh","sum64_4_lo","sum64_5_hi","eh","el","sum64_5_lo","rotr64_hi","rotr64_lo","shr64_hi","shr64_lo","normalizeArray","parts","allowAboveRoot","up","xs","resolvedPath","resolvedAbsolute","isAbsolute","trailingSlash","relative","fromParts","toParts","samePartsLength","outputParts","sep","dirname","hasRoot","matchedSlash","basename","extname","startDot","startPart","preDotState","setRootDoc","stmt","trimColon","state1","state2","doc","getDividerId","note","Tt","utc","_pf","unusedTokens","unusedInput","overflow","charsLeftOver","nullInput","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","meridiem","rfc2822","weekdayMismatch","_isValid","_d","getTime","invalidWeekday","_strict","bigHour","isFrozen","some","momentProperties","_isAMomentObject","_i","_f","_l","_tzm","_isUTC","_offset","_locale","isValid","updateOffset","suppressDeprecationWarnings","warn","deprecationHandler","O","F","G","localeData","invalidDate","longDateFormat","J","K","ee","te","ae","oe","ue","le","he","de","ce","fe","_w","Se","De","parseTwoDigitYear","Ye","Oe","Te","xe","be","Pe","monthsShort","monthsShortRegex","monthsRegex","monthsParse","We","Ce","He","Re","Ue","Fe","Le","Ne","_monthsRegex","_monthsShortRegex","_monthsStrictRegex","_monthsShortStrictRegex","Ge","Ve","Ee","dayOfYear","Ie","Ae","je","weekdaysMin","weekdaysShort","weekdays","weekdaysMinRegex","weekdaysShortRegex","weekdaysRegex","weekdaysParse","Ze","ze","$e","qe","Je","Be","Qe","_weekdaysRegex","_weekdaysShortRegex","_weekdaysMinRegex","_weekdaysStrictRegex","_weekdaysShortStrictRegex","_weekdaysMinStrictRegex","Xe","Ke","et","_meridiemParse","_isPm","isPM","_meridiem","tt","nt","st","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","LTS","LT","LL","LLL","LLLL","dayOfMonthOrdinalParse","relativeTime","future","ss","mm","hh","dd","MM","doy","meridiemParse","it","rt","at","ot","_abbr","ut","ht","abbr","_config","parentLocale","config","dt","_a","_overflowDayOfYear","_overflowWeeks","_overflowWeekday","ct","ft","_useUTC","GG","bt","_week","gg","_dayOfYear","_nextDay","mt","vt","pt","wt","Yt","Mt","St","UT","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","Dt","kt","ISO_8601","RFC_2822","meridiemHour","Ot","preparse","createFromInputFallback","getOwnPropertyNames","Pt","Wt","Ct","Ht","quarter","isoWeek","parseFloat","_milliseconds","_days","_months","_data","_bubble","Rt","Ut","Ft","utcOffset","Nt","Lt","Gt","Vt","Et","It","At","jt","ms","Zt","isBefore","zt","isAfter","$t","qt","invalid","Jt","Bt","Qt","Xt","defaultFormat","defaultFormatUtc","Kt","en","tn","nn","sn","rn","an","weekYear","isoWeekYear","_dayOfMonthOrdinalParse","_ordinalParse","_dayOfMonthOrdinalParseLenient","un","ln","hn","dn","cn","mn","_n","startOf","calendarFormat","endOf","isoWeekday","isUtc","postformat","humanize","fromNow","toNow","invalidAt","isBetween","isSame","isSameOrAfter","isSameOrBefore","lang","parsingFlags","subtract","toObject","toDate","isLocal","unix","creationData","isUTC","strict","isLeapYear","quarters","daysInMonth","weeks","isoWeeks","weeksInYear","isoWeeksInYear","_changeInProgress","hasAlignedHourOffset","isDST","isUtcOffset","zoneAbbr","zoneName","dates","zone","isDSTShifted","_isDSTShifted","gn","vn","pn","_calendar","_longDateFormat","_invalidDate","_ordinal","_relativeTime","pastFuture","isFormat","standalone","_monthsShort","_monthsParseExact","toLocaleLowerCase","_monthsParse","_longMonthsParse","_shortMonthsParse","firstDayOfYear","firstDayOfWeek","_weekdays","_weekdaysMin","_weekdaysShort","_weekdaysParseExact","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","_fullWeekdaysParse","langData","wn","Mn","kn","Sn","Dn","Yn","as","On","Tn","bn","xn","Pn","Wn","Cn","Hn","Rn","Un","Fn","Ln","Nn","Gn","Vn","En","In","An","jn","Zn","zn","$n","asSeconds","qn","asMilliseconds","asMinutes","asHours","asDays","asWeeks","asMonths","asQuarters","asYears","toIsoString","isDate","isMoment","isDuration","defineLocale","updateLocale","locales","normalizeUnits","relativeTimeRounding","relativeTimeThreshold","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","DATE","TIME","TIME_SECONDS","TIME_MS","WEEK","MONTH","isLength","baseMatches","baseMatchesProperty","layout","debug","$Vr","$Vs","$Vt","$Vu","$Vv","$Vw","$Vx","$Vy","$Vz","$VA","$VB","$VC","$VD","$VE","$VF","$VG","$VH","$VI","$VJ","$VK","$VL","$VM","$VN","$VO","$VP","$VQ","$VR","$VS","$VT","$VU","$VV","$VW","$VX","$VY","$VZ","$V_","$V$","$V01","$V11","$V21","$V31","$V41","$V51","$V61","$V71","$V81","$V91","$Va1","$Vb1","$Vc1","$Vd1","$Ve1","$Vf1","$Vg1","$Vh1","$Vi1","$Vj1","$Vk1","$Vl1","$Vm1","$Vn1","$Vo1","$Vp1","$Vq1","$Vr1","$Vs1","$Vt1","$Vu1","$Vv1","41","61","64","65","66","67","68","69","72","75","77","78","79","82","83","84","85","86","87","88","89","96","97","98","100","setDirection","addSubGraph","addLink","setClass","addVertex","inf","destructLink","stroke","addClass","setClickEvent","setLink","updateLink","updateLinkInterpolate","91","62","71","90","74","92","76","73","80","81","firstGraph","setDateFormat","enableInclusiveEndDates","setAxisFormat","setExcludes","setTodayMarker","setTitle","addSection","addTask","StringDecoder","CipherBase","hashMode","_finalOrDigest","final","_final","__final","_decoder","_encoding","inputEnc","outputEnc","outData","_update","_toString","setAutoPadding","getAuthTag","setAuthTag","setAAD","_transform","err","_flush","fin","arrayLikeKeys","baseKeys","isArrayLike","pna","objectKeys","Duplex","Readable","Writable","method","readable","allowHalfOpen","onend","_writableState","onEndNT","highWaterMark","_readableState","destroyed","_destroy","baseIsNative","getValue","getRawTag","objectToString","symToStringTag","crypto","msCrypto","getRandomValues","generated","Hash","blockSize","finalSize","_block","_finalSize","_blockSize","_len","block","accum","assigned","remainder","digest","rem","lowBits","highBits","_hash","baseGetTag","isObject","tag","stubFalse","freeExports","nodeType","freeModule","baseKeysIn","WeakMap","toSource","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","getTag","Ctor","ctorString","isObjectLike","addRelation","cleanupLabel","addMembers","addAnnotation","addMember","relation","relationTitle1","relationTitle2","id2","type1","type2","lineType","relationType","AGGREGATION","EXTENSION","COMPOSITION","DEPENDENCY","LINE","DOTTED_LINE","MD5","RIPEMD160","sha","Base","isBoolean","isNull","isNullOrUndefined","isNumber","isString","isSymbol","isRegExp","isError","isPrimitive","BlockHash","pending","pendingTotal","outSize","hmacStrength","padLength","_delta8","_delta32","_pad","_digest","asn1","bignum","constants","decoders","encoders","Reporter","DecoderBuffer","EncoderBuffer","assignValue","baseAssignValue","props","customizer","isNew","newValue","baseIsArguments","objectProto","propertyIsEnumerable","isArguments","baseIsTypedArray","baseUnary","nodeUtil","nodeIsTypedArray","isTypedArray","fo","labelStyle","client","useSourceMap","item","content","cssMapping","btoa","sourceMapping","sourceMap","unescape","encodeURIComponent","sourceURLs","sources","sourceRoot","cssWithMappingToString","mediaQuery","alreadyImportedModules","arg1","arg2","arg3","asUInt32Array","scrubVec","cryptBlock","keySchedule","SUB_MIX","SBOX","nRounds","SUB_MIX0","SUB_MIX1","SUB_MIX2","SUB_MIX3","ksRow","RCON","INV_SBOX","INV_SUB_MIX","x4","x8","AES","_key","_reset","keySize","keyWords","ksRows","invKeySchedule","ik","ksR","_nRounds","_keySchedule","_invKeySchedule","encryptBlockRaw","encryptBlock","decryptBlock","scrub","password","salt","keyBits","ivLen","keyLen","iv","used","keyStart","ivStart","BaseCurve","conf","pointFromJSON","gRed","_wnafT1","_wnafT2","_wnafT3","_wnafT4","_bitLength","adjustCount","redN","_maxwellTrick","BasePoint","precomputed","validate","_fixedNafMul","doubles","_getDoubles","repr","nafW","jpoint","mixedAdd","toP","_wnafMul","nafPoints","_getNAFPoints","dblp","_wnafMulAdd","defW","coeffs","jacobianResult","wndWidth","comb","toJ","ja","jb","decodePoint","pointFromX","encodeCompressed","_encode","compact","getX","getY","precompute","_getBeta","_hasDoubles","dbl","aesid","fixProc","ciphers","compat","parseKeys","passphrase","subtype","ndata","stripped","certificate","decode","tbsCertificate","subjectPublicKeyInfo","PublicKey","algorithm","RSAPublicKey","subjectPublicKey","subjectPrivateKey","pub_key","DSAparam","decrypt","kde","kdeparams","iters","algo","cipher","cipherText","keylen","pbkdf2Sync","createDecipheriv","EncryptedPrivateKey","PrivateKey","RSAPrivateKey","privateKey","ECPrivateKey","priv_key","DSAPrivateKey","parameters","signature","ListCache","stackClear","stackDelete","stackGet","stackHas","stackSet","Stack","listCacheClear","listCacheDelete","listCacheGet","listCacheHas","listCacheSet","nativeCreate","getNative","isKeyable","objValue","reIsUint","func","getPrototype","overArg","baseForOwn","baseEach","createBaseEach","isKey","stringToPath","iteratee","overRest","setToString","isIndex","longestPath","visited","dfs","POSITIVE_INFINITY","slack","invalidPrototcolRegex","ctrlCharactersRegex","urlSchemeRegex","relativeFirstCharacters","sanitizeUrl","url","urlScheme","urlSchemeParseResults","sanitizedUrl","isRelativeUrl","setOptions","commit","branch","checkout","setInfo","cleanupValue","addEntity","addRelationship","cardA","relType","cardB","Cardinality","ZERO_OR_ONE","ZERO_OR_MORE","ONE_OR_MORE","ONLY_ONE","Identification","NON_IDENTIFYING","IDENTIFYING","HashBase","ARRAY16","_b","_c","rotl","fnF","fnG","fnH","fnI","_blockOffset","_length","Stream","EE","EventEmitter","PassThrough","pipe","ondata","chunk","pause","ondrain","resume","_isStdio","onclose","didOnEnd","destroy","er","cleanup","listenerCount","ReflectOwnKeys","Reflect","ReflectApply","receiver","ownKeys","getOwnPropertySymbols","NumberIsNaN","_events","_eventsCount","_maxListeners","defaultMaxListeners","checkListener","_getMaxListeners","_addListener","prepend","events","existing","warning","newListener","warned","onceWrapper","fired","wrapFn","_onceWrap","wrapped","_listeners","unwrap","evlistener","unwrapListeners","arrayClone","setMaxListeners","getMaxListeners","doError","message","handler","originalListener","spliceOne","rawListeners","eventNames","CorkedRequest","_this","finish","corkReq","pendingcb","corkedRequestsFree","onCorkedFinish","asyncWrite","setImmediate","WritableState","internalUtil","OurUint8Array","realHasInstance","destroyImpl","nop","isDuplex","objectMode","writableObjectMode","hwm","writableHwm","writableHighWaterMark","defaultHwm","finalCalled","needDrain","ending","finished","noDecode","decodeStrings","defaultEncoding","writing","corked","sync","bufferProcessing","onwrite","writecb","writelen","onwriteStateUpdate","finishMaybe","errorEmitted","onwriteError","needFinish","bufferedRequest","clearBuffer","afterWrite","lastBufferedRequest","prefinished","bufferedRequestCount","_write","writev","_writev","doWrite","onwriteDrain","holder","allBuffers","isBuf","callFinal","need","prefinish","getBuffer","hasInstance","_uint8ArrayToBuffer","writeAfterEnd","valid","validChunk","newChunk","decodeChunk","writeOrBuffer","cork","uncork","setDefaultEncoding","endWritable","_undestroy","undestroy","nenc","retried","_normalizeEncoding","normalizeEncoding","utf16Text","utf16End","fillLast","utf8FillLast","base64Text","base64End","simpleWrite","simpleEnd","lastNeed","lastTotal","lastChar","utf8CheckByte","byte","utf8CheckExtraBytes","utf8CheckIncomplete","zl","zr","sl","hr","_e","fn1","fn2","fn3","fn4","fn5","ar","br","tl","Algorithm","sha1","sha224","sha256","sha384","sha512","Cipher","bufferOff","_updateDecrypt","_updateEncrypt","_buffer","_flushBuffer","inputOff","outputOff","_finalEncrypt","_finalDecrypt","_unpad","deciphers","modes","createCipher","createCipheriv","Cipheriv","createDecipher","Decipher","Decipheriv","listCiphers","getCiphers","modeModules","ECB","CBC","CFB","CFB8","CFB1","OFB","CTR","GCM","Rand","rand","generate","_rand","getBytes","getByte","randomBytes","crt","priv","blinds","getr","blinder","modulus","publicExponent","unblinder","blind","blinded","prime1","prime2","qinv","exponent1","exponent2","elliptic","curves","ec","eddsa","PresetCurve","short","edwards","isInfinity","defineCurve","common","ripemd","hmac","ripemd160","opts","_isDirected","directed","_isMultigraph","_isCompound","compound","_label","_defaultNodeLabelFn","_defaultEdgeLabelFn","_nodes","_children","_in","_preds","_out","_sucs","_edgeObjs","_edgeLabels","incrementOrInitEntry","decrementOrRemoveEntry","edgeArgsToId","isDirected","w_","edgeArgsToObj","edgeObj","edgeObjToId","_nodeCount","_edgeCount","isCompound","setDefaultNodeLabel","newDefault","nodeCount","sinks","setNodes","removeNode","removeEdge","_removeFromParentsChildList","setParent","predecessors","predsV","successors","sucsV","neighbors","isLeaf","filterNodes","findParent","setDefaultEdgeLabel","edgeCount","setPath","valueSpecified","arg0","freeze","hasEdge","inV","outV","nodeEdges","mapCacheClear","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","MapCache","freeProcess","require","isPrototype","nativeKeys","arrayFilter","stubArray","nativeGetSymbols","getSymbols","baseFor","createBaseFor","castPath","toKey","reIsDeepProp","reIsPlainProp","baseHas","hasPath","arrayPush","isFlattenable","baseFlatten","predicate","isStrict","comparator","computed","det","addTextLabel","addHtmlLabel","addSVGLabel","labelSvg","labelType","labelBBox","getBBox","_finalized","throwIfNotStringOrBuffer","ReadableState","EElistenerCount","debugUtil","debuglog","BufferList","kProxyEvents","readableObjectMode","readableHwm","readableHighWaterMark","pipes","pipesCount","flowing","endEmitted","reading","needReadable","emittedReadable","readableListening","resumeScheduled","awaitDrain","readingMore","decoder","_read","readableAddChunk","addToFront","skipChunkCheck","emitReadable","onEofChunk","chunkInvalid","addChunk","maybeReadMore","needMoreData","isPaused","setEncoding","howMuchToRead","head","computeNewHighWaterMark","emitReadable_","flow","maybeReadMore_","nReadingNextTick","resume_","fromList","hasStrings","tail","copyFromBufferString","copyFromBuffer","fromListPartial","endReadable","endReadableNT","nOrig","doRead","pipeOpts","endFn","stdout","stderr","unpipe","onunpipe","unpipeInfo","hasUnpiped","onfinish","cleanedUp","pipeOnDrain","increasedAwaitDrain","dests","ev","paused","_fromList","emitErrorNT","readableDestroyed","writableDestroyed","afterTransform","_transformState","transforming","writechunk","rs","needTransform","writeencoding","flush","_this2","err2","Sha256","maj","sigma0","sigma1","gamma0","_g","_h","T1","T2","Sha512","Ch","xl","Gamma0","Gamma0l","Gamma1","Gamma1l","getCarry","_ah","_bh","_ch","_dh","_eh","_fh","_gh","_hh","_al","_bl","_cl","_dl","_el","_fl","_gl","_hl","fh","gh","fl","gl","xh","gamma0l","gamma1","gamma1l","Wi7h","Wi7l","Wi16h","Wi16l","Wil","Wih","majh","majl","sigma0h","sigma0l","sigma1h","sigma1l","Kih","Kil","chh","chl","t1l","t1h","t2l","t2h","writeInt64BE","Legacy","md5","ZEROS","Hmac","blocksize","_alg","ipad","_ipad","opad","_opad","pbkdf2","checkBuffer","MAX_ALLOC","checkParameters","sizes","rmd160","saltLen","shaFunc","getDigest","ipad1","ipad2","DK","block1","destPos","hLen","ip","inL","inR","outL","outR","rip","pc1","r28shl","pc2table","pc2","expand","sTable","substitute","permuteTable","padSplit","DESState","DES","_desState","deriveKeys","shiftTable","kL","kR","inp","inOff","outOff","_encrypt","_decrypt","lStart","rStart","keyL","keyR","incr32","getBlock","_cipher","_prev","encrypt","chunkNum","_cache","aes","GHASH","StreamCipher","ck","_ghash","_finID","ghash","toPad","ivBits","calcIv","_secCache","_alen","_mode","_authTag","_called","rump","xorTest","findPrime","simpleSieve","fermatTest","TWENTYFOUR","millerRabin","ONE","TWO","FIVE","TEN","THREE","ELEVEN","FOUR","_getPrimes","gen","brorand","MillerRabin","_randbelow","min_bytes","_randrange","rone","rn1","getDivisor","ch32","maj32","p32","ft_1","s0_256","s1_256","g0_256","g1_256","shaCommon","sha256_K","SHA256","sha512_K","SHA512","ch64_hi","yh","yl","zh","ch64_lo","maj64_hi","maj64_lo","s0_512_hi","s0_512_lo","s1_512_hi","s1_512_lo","g0_512_hi","g0_512_lo","g1_512_hi","g1_512_lo","_prepareBlock","c0_hi","c0_lo","c1_hi","c1_lo","c2_hi","c2_lo","c3_hi","c3_lo","c4_hi","c4_lo","T1_hi","T1_lo","T2_hi","T2_lo","reporter","save","restore","fail","skip","_reporterState","raw","_reverse","der","DERDecoder","entity","DERNode","body","derDecodeTag","cls","tagClass","primitive","oct","tagStr","derDecodeLen","_decode","_peekTag","any","decodedTag","_decodeTag","_skipUntilEnd","_decodeList","possibleEnd","_decodeStr","unused","numstr","_isNumstr","printstr","_isPrintstr","_decodeObjid","identifiers","ident","subident","_decodeTime","mon","sec","_decodeNull","_decodeBool","_decodeInt","_use","_getDecoder","DEREncoder","_encodeComposite","header","encodedTag","tagByName","tagClassByName","encodeTag","_createEncoderBuffer","lenOctets","_encodeStr","_encodeObjid","objid","_encodeTime","_encodeNull","_encodeInt","numArray","_encodeBool","_getEncoder","_skipDefault","dataBuffer","_baseState","defaultBuffer","_encodeValue","createHash","i2ops","seed","paddedMsg","arrayEach","baseAssign","baseAssignIn","cloneBuffer","copyArray","copySymbols","copySymbolsIn","getAllKeys","getAllKeysIn","initCloneArray","initCloneByTag","initCloneObject","isMap","isSet","cloneableTags","baseClone","bitmask","isDeep","isFlat","isFull","isArr","isFunc","stacked","subValue","keysFunc","keysIn","funcToString","baseTimes","inherited","isArg","isBuff","isType","skipIndexes","resIndex","getSymbolsIn","baseGetAllKeys","symbolsFunc","cloneArrayBuffer","typedArray","baseCreate","objectCreate","castFunction","baseFilter","baseIteratee","baseIsEqualDeep","baseIsEqual","SetCache","arraySome","cacheHas","equalFunc","isPartial","othLength","seen","arrValue","othValue","compared","othIndex","setCacheAdd","setCacheHas","srcValue","baseToString","baseHasIn","hasFunc","arrayMap","baseMap","arrayReduce","baseReduce","accumulator","initAccum","nativeMax","otherArgs","baseSetToString","shortOut","fromIndex","fromRight","baseValues","PriorityQueue","weightFn","edgeFn","vEntry","results","pq","updateNeighbors","wEntry","predecessor","decrease","removeMin","runDijkstra","DEFAULT_WEIGHT_FUNC","_keyIndices","keyIndices","_decrease","_swap","_heapify","largest","origArrI","origArrJ","onStack","lowlink","cmpt","topsort","CycleException","navigation","doDfs","postorder","baseRest","isIterateeCall","guard","propsIndex","propsLength","funcProto","objectCtorString","basePick","flatRest","createRange","idCounter","tightTree","edgeV","findMinSlackEdge","shiftRanks","intersectEllipse","intersectLine","polyPoints","intersections","minX","minY","pdx","pdy","distp","qdx","qdy","distq","slugify","escaper","stripComments","scope","css","keyframes","parentRe","animations","animationNameRe","slug","newName","replacer","paste","urlSafeCharacters","numericCharacters","generateForCustomCharacters","characters","characterCount","maxValidSelector","entropyLength","stringLength","entropy","entropyPosition","entropyValue","allowedTypes","info","charMap","replacement","customMap","Escaper","_typeof","iterator","VERSION","snakeskinRgxp","stringLiterals","'","literals","singleComments","multComments","keyArr","finalMap","_key2","_key3","rgxpFlags","rgxpFlagsMap","_key4","escapeEndMap","escapeEndWordMap","mix","_key5","uSRgxp","wRgxp","sRgxp","nRgxp","posRgxp","objMap","opt_withCommentsOrParams","opt_content","opt_snakeskin","isObj","Boolean","mark","withComments","cacheKey","initStr","escape","comment","selectionStart","templateVar","filterStart","cut","part","rPart","extWord","pasteRgxp","opt_rgxp","preserveFilter","currentChar","insideString","preserveImportant","preserve","all","webpackContext","req","webpackContextResolve","styles","rng","pseudoRandomBytes","prng","createHmac","algos","algoKeys","hashes","getHashes","DiffieHellmanGroup","createDiffieHellmanGroup","getDiffieHellman","createDiffieHellman","DiffieHellman","createSign","Sign","createVerify","Verify","createECDH","publicEncrypt","privateEncrypt","publicDecrypt","privateDecrypt","rf","randomFill","randomFillSync","createCredentials","b64","lens","getLens","validLen","placeHoldersLen","Arr","_byteLength","curByte","revLookup","uint8","extraBytes","len2","encodeChunk","lookup","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","instance","Constructor","_classCallCheck","Timeout","clearFn","_clearFn","close","unref","ref","enroll","msecs","_idleTimeoutId","_idleTimeout","unenroll","_unrefActive","_onTimeout","clearImmediate","registerImmediate","channel","messagePrefix","onGlobalMessage","nextHandle","tasksByHandle","currentlyRunningATask","attachTo","runIfPresent","postMessage","importScripts","postMessageIsAsynchronous","oldOnMessage","onmessage","canUsePostMessage","MessageChannel","port1","port2","script","onreadystatechange","attachEvent","task","localStorage","Sha","rotl30","Sha1","rotl5","Sha224","Sha384","ZERO_BUF","subtle","toBrowser","checks","browserPbkdf2","importKey","deriveBits","promise","resolvePromise","prom","catch","checkNative","resp","aesModes","desModes","ebtk","suite","des","instantiate","EDE","modeName","_des","des3","CBCState","_cbcInit","_cbcState","superProto","EDEState","k3","_edeState","MODES","AuthCipher","Splitter","_autopadding","thing","PADDING","setTo","padBuff","encryptStart","encryptByte","byteParam","shiftIn","ZEROES","fromArray","_multiply","lsbVi","Vi","Zi","abl","_last","padded","unpad","autoPadding","DH","ENCODINGS","generator","genc","generatePrime","SEVEN","setPublicKey","pub","_pub","setPrivateKey","_priv","primeCache","malleable","setGenerator","__prime","_primeLen","_primeCode","formatReturnValue","checkPrime","__gen","generateKeys","_gen","getPublicKey","computeSecret","secret","getPrime","front","getPrivateKey","getGenerator","verify","algorithms","_hashType","_tag","_signType","sig","EC","getKey","hlen","hbits","bits2int","bits2octets","obits","makeKey","kv","makeR","hashType","signType","curveId","keyFromPrivate","toDER","ecSign","dsaSign","ShortCurve","tinv","zeroA","threeA","endo","_getEndomorphism","_endoWnafT1","_endoWnafT2","isRed","JPoint","zOne","betas","_getEndoRoots","lambdas","vec","_getEndoBasis","ntinv","prevR","aprxSqrt","len1","_endoSplit","q2","_endoWnafMulAdd","npoints","ncoeffs","fromJSON","endoMul","obj2point","ny","ys1","dyinv","mulAdd","jmulAdd","_precompute","negate","zinv","zinv2","pz2","z2","h2","h3","nz","jx","jy","jz","jz4","jyd","jx2","jyd2","jyd4","dny","_zeroDbl","_threeDbl","_dbl","xx","yyyy","yyyy8","c8","beta4","beta8","ggamma8","jy2","jxd4","jyd8","trpl","zz","yyu4","kbase","z3","pz3","eqXToP","zs","xc","MontCurve","i4","a24","bb","diffAdd","jumlAdd","EdwardsCurve","twisted","mOneA","oneC","_mulA","_mulC","pointFromY","_extDbl","_projDbl","_extAdd","_projAdd","zi","sha1_K","SHA1","SHA224","SHA384","Kh","Ah","Bh","Dh","Eh","rh","sh","inner","outer","HmacDRBG","KeyPair","Signature","nh","keyPair","fromPrivate","keyFromPublic","fromPublic","genKeyPair","drbg","pers","persEnc","entropyEnc","nonce","ns2","_truncateToN","truncOnly","bkey","getPrivate","ns1","iter","kp","kpX","recoveryParam","canonical","sinv","getPublic","recoverPubKey","isYOdd","isSecondKey","rInv","getKeyRecoveryParam","Qprime","predResist","minEntropy","_reseed","reseedInterval","nonceEnc","_hmac","kmac","reseed","addEnc","_importPrivate","privEnc","_importPublic","pubEnc","reason","derive","_importDER","Position","getLength","initial","octetLen","rmPadding","constructLength","octets","slen","backHalf","EDDSA","pointClass","encodingLength","keyFromSecret","hashInt","Rencoded","encodePoint","s_","pubBytes","makeSignature","SG","fromSecret","lastIx","normed","xIsOdd","encodeInt","decodeInt","isPoint","_secret","_pubBytes","privBytes","getSecret","_R","_S","_Rencoded","_Sencoded","Sencoded","toBytes","seq","int","use","AlgorithmIdentifier","bitstr","null_","PrivateKeyInfo","octstr","EncryptedPrivateKeyInfo","explicit","ECParameters","choice","namedCurve","Entity","_createNamed","runInThisContext","_initNamed","Object_keys","defineProp","globals","Context","Script","runInContext","iframe","display","win","contentWindow","wEval","eval","wExecScript","execScript","winKeys","runInNewContext","createContext","isContext","createScript","errors","ReporterError","rethrow","pathLen","enterKey","exitKey","leaveKey","enterObject","leaveObject","elem","partial","wrapResult","captureStackTrace","tags","reverseArgs","useDecoder","_wrap","stateProps","cstate","prop","_useArgs","def","newKey","prevObj","present","prevKey","_decodeGeneric","_decodeChoice","track","_getUse","_encodeChoice","_encodePrimitive","0","pem","PEMDecoder","PEMEncoder","asn","Time","utcTime","utctime","generalTime","gentime","AttributeTypeValue","SubjectPublicKeyInfo","RelativeDistinguishedName","setof","RDNSequence","seqof","Name","rdnSequence","Validity","Extension","bool","TBSCertificate","X509Certificate","findProc","startRegex","fullRegex","evp","okey","decrypted","cipherKey","match2","checkValue","pubkey","ecVerify","unpacked","montp","dsaVerify","padNum","ECDH","aliases","secp256k1","secp224r1","prime256v1","prime192v1","ed25519","secp384r1","secp521r1","curveType","p256","secp256r1","secp192r1","p384","p521","inenc","mgf","withPublic","publicKey","iHash","hLen2","ps","dblen","maskedDb","maskedSeed","oaep","cur","nonZero","pkcs1","zBuffer","db","dif","oldBrowser","safeBuffer","randombytes","kBufferMaxLength","kMaxUint32","assertOffset","actualFill","ourBuf","uint","assocIndexOf","LARGE_ARRAY_SIZE","isMasked","reIsHostCtor","reIsNative","nativeObjectToString","isOwn","unmasked","uid","coreJsData","maskSrcKey","IE_PROTO","hashClear","hashDelete","hashGet","hashHas","hashSet","getMapData","copyObject","typedArrayTags","nativeKeysIn","isProto","cloneDataView","cloneRegExp","cloneSymbol","cloneTypedArray","dataView","reFlags","regexp","symbolProto","symbolValueOf","baseIsMap","nodeIsMap","baseIsSet","nodeIsSet","iterable","eachFunc","baseIsMatch","getMatchData","matchesStrictComparable","matchData","noCustomizer","COMPARE_PARTIAL_FLAG","equalArrays","equalByTag","equalObjects","objectTag","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","mapToArray","setToArray","objProps","objLength","skipCtor","objCtor","othCtor","isStrictComparable","hasIn","baseGet","defaultValue","memoizeCapped","rePropName","reEscapeChar","quote","subString","memoize","resolver","memoized","Cache","symbolToString","baseProperty","basePropertyDeep","stringSize","asciiSize","hasUnicode","unicodeSize","reHasUnicode","rsAstral","rsCombo","rsFitz","rsNonAstral","rsRegional","rsSurrPair","reOptMod","rsSeq","rsSymbol","reUnicode","isArrLike","baseUniq","isArrayLikeObject","spreadableSymbol","isConcatSpreadable","thisArg","nativeNow","lastCalled","stamp","arrayIncludes","arrayIncludesWith","createSet","isCommon","seenIndex","baseIndexOf","baseFindIndex","baseIsNaN","strictIndexOf","writeNodes","writeEdges","edgeValue","components","dijkstra","dijkstraAll","findCycles","floydWarshall","isAcyclic","preorder","prim","tarjan","cmpts","weightFunc","edgeFunc","rowK","rowI","kj","ij","altDistance","runFloydWarshall","pri","edgeWeight","acyclic","parentDummyChains","nestingGraph","addBorderSegments","coordinateSystem","debugTiming","layoutGraph","inputGraph","canonicalize","graphDefaults","selectNumberAttrs","graphNumAttrs","graphAttrs","nodeNumAttrs","nodeDefaults","edgeDefaults","edgeNumAttrs","edgeAttrs","buildLayoutGraph","ranksep","labelpos","rankdir","labeloffset","makeSpaceForEdgeLabels","selfEdges","removeSelfEdges","injectEdgeLabelProxies","borderTop","minRank","borderBottom","assignRankMinMax","labelRank","removeEdgeLabelProxies","layer","orderShift","selfEdge","insertSelfEdges","adjust","selfNode","positionSelfEdges","borderLeft","borderRight","removeBorderNodes","undo","fixupEdgeLabelCoords","maxX","graphLabel","marginX","marginx","marginY","marginy","getExtremes","translateGraph","nodeV","nodeW","assignNodeIntersects","reversed","reversePointsForReversedEdges","runLayout","inputLabel","layoutLabel","updateInputGraph","edgesep","nodesep","newAttrs","CLONE_DEEP_FLAG","createFind","findIndexFunc","toInteger","toFinite","reTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","isBinary","baseExtremum","baseGt","baseMerge","createAssigner","srcIndex","assignMergeValue","baseMergeDeep","safeGet","toPlainObject","mergeFunc","isTyped","assigner","baseLt","basePickBy","baseSet","nested","baseRange","nativeCeil","baseOrderBy","iteratees","baseSortBy","compareMultiple","orders","comparer","compareAscending","objCriteria","criteria","othCriteria","ordersLength","valIsDefined","valIsNull","valIsReflexive","valIsSymbol","othIsDefined","othIsNull","othIsReflexive","othIsSymbol","baseZipObject","assignFunc","valsLength","greedyFAS","fas","acyclicer","dfsFAS","forwardName","List","fasGraph","maxIn","maxOut","prevWeight","buckets","zeroIdx","assignBucket","buildState","DEFAULT_WEIGHT_FN","dequeue","doGreedyFAS","collectPredecessors","uEntry","enqueue","sentinel","_sentinel","unlink","filterOutLinks","strs","curr","dummyChains","vRank","wRank","edgeLabel","normalizeEdge","origLabel","feasibleTree","networkSimplex","ranker","networkSimplexRanker","tightTreeRanker","longestPathRanker","initRank","initLowLimValues","initCutValues","leaveEdge","exchangeEdges","enterEdge","cutvalue","calcCutValue","assignCutValue","childIsTail","graphEdge","cutValue","isOutEdge","pointsToHead","otherWeight","otherCutValue","dfsAssignLowLim","nextLim","low","lim","vLabel","wLabel","tailLabel","flip","candidates","isDescendant","flipped","updateRanks","rootLabel","postorderNums","pathData","lca","vPath","wPath","findPath","pathIdx","pathV","depths","treeDepths","nodeSep","nestingRoot","sumWeights","childNode","childTop","childBottom","thisWeight","nestingEdge","sg","sgNode","borderType","swapWidthHeight","swapWidthHeightOne","reverseYOne","swapXYOne","rankDir","reverseY","swapXY","initOrder","crossCount","sortSubgraph","buildLayerGraph","addSubgraphConstraints","buildLayerGraphs","ranks","relationship","sweepLayerGraphs","layerGraphs","biasRight","cg","lg","sorted","assignOrder","downLayerGraphs","upLayerGraphs","best","bestCC","lastBest","simpleNodes","orderedVs","twoLayerCrossCount","northLayer","southLayer","southPos","southEntries","firstIndex","treeSize","weightSum","barycenter","resolveConflicts","movable","subgraphs","barycenters","subgraphResult","expandSubgraphs","blPred","brPred","nodeU","mappedEntries","indegree","entryV","entryW","sourceSet","handleIn","mergeEntries","handleOut","doResolveConflicts","consumeUnsortable","unsortable","sortable","vsIndex","createRootNode","rootPrev","prevChild","positionX","rankSep","prevY","maxHeight","positionY","findType1Conflicts","conflicts","prevLayer","scanPos","prevLayerLength","lastNode","findOtherInnerSegmentNode","scanNode","uLabel","uPos","addConflict","findType2Conflicts","scan","south","southEnd","prevNorthBorder","nextNorthBorder","uNode","north","nextNorthPos","prevNorthPos","southLookahead","conflictsV","hasConflict","verticalAlignment","neighborFn","prevIdx","mp","il","horizontalCompaction","reverseSep","blockG","blockGraph","sepFn","edgeSep","vRoot","uRoot","prevMax","buildBlockGraph","iterate","setXsFunc","nextNodesFunc","findSmallestWidthAlignment","xss","NEGATIVE_INFINITY","halfWidth","alignCoordinates","alignTo","alignToVals","alignToMin","alignToMax","vert","horiz","alignment","xsVals","balance","ul","ignore","adjustedLayering","smallestWidth","debugOrdering","layerMatrix","layerV","ellipse","sameSign","r4","denom","createNodes","createClusters","createEdgeLabels","createEdgePaths","positionNodes","positionEdgeLabels","positionClusters","shapes","arrows","paddingX","paddingY","NODE_DEFAULT_ATTRS","_prevWidth","_prevHeight","EDGE_DEFAULT_ATTRS","preProcessGraph","outputGroup","createOrSelectGroup","clustersGroup","edgePathsGroup","edgeLabels","clusters","postProcessGraph","shape","arrowhead","curveLinear","addLabel","exitSelection","svgNodes","thisGroup","labelGroup","labelDom","bbox","labelId","shapeSvg","shapeBBox","domNode","newText","escaped","processEscapeSequences","svgClusters","clusterLabelPos","domCluster","svgEdgeLabels","intersectNode","createLine","previousPaths","newPaths","svgPaths","svgPathsEnter","sourceElem","multiply","svgPathExit","domEdge","arrowheadId","href","fragmentId","calcPoints","created","intersectCircle","intersectPolygon","LEVELS","fatal","logger","setLogLevel","level","moment","lineBreakRegex","breakToPlaceholder","placeholderToBreak","getRows","sanitizeText","txt","htmlLabels","flowchart","securityLevel","hasBreaks","splitBreaks","d3CurveTypes","curveBasis","curveBasisClosed","curveBasisOpen","curveLinearClosed","curveMonotoneX","curveMonotoneY","curveNatural","curveStep","curveStepAfter","curveStepBefore","directive","directiveWithoutOpen","anyComment","detectDirective","commentWithoutDirectives","detectType","interpolateToCurve","defaultCurve","curveName","getStylesFromArray","startsWith","cnt","generateId","assignWithDepth","clobber","drawSimpleText","textData","nText","textElem","anchor","fontFamily","fontSize","fontWeight","class","span","textMargin","wrapLabel","maxWidth","joinWith","completedLines","nextLine","wordLength","calculateTextWidth","nextLineLength","breakString","hyphenatedStrings","remainingWord","hyphenCharacter","margin","currentLine","character","currentCharacter","isLastLine","hyphenatedNextLine","calculateTextDimensions","fontFamilies","dims","lineHeight","cheight","textObj","valign","bBox","calculateTextHeight","detectInit","inits","isSubstringInArray","calcLabelPosition","prevPoint","totalDistance","remainingDistance","vectorDistance","distanceRatio","traverseEdge","calcCardinalityPosition","isRelationTypePresent","initialPosition","cardinalityPosition","formatUrl","linkStr","cryptoRandomString","runFunc","functionName","arrPaths","fnName","theme","themeCSS","maxTextSize","logLevel","startOnLoad","arrowMarkerAbsolute","secure","nodeSpacing","rankSpacing","sequence","activationWidth","diagramMarginX","diagramMarginY","actorMargin","boxMargin","boxTextMargin","noteMargin","messageMargin","messageAlign","mirrorActors","bottomMarginAdj","useMaxWidth","rightAngles","showSequenceNumbers","actorFontSize","actorFontFamily","actorFontWeight","noteFontSize","noteFontFamily","noteFontWeight","noteAlign","messageFontSize","messageFontFamily","messageFontWeight","wrapPadding","labelBoxWidth","labelBoxHeight","messageFont","noteFont","actorFont","gantt","titleTopMargin","barHeight","barGap","topPadding","leftPadding","gridLineStartPadding","numberSectionStyles","axisFormat","journey","git","dividerMargin","sizeUnit","textHeight","titleShift","forkWidth","forkHeight","miniPadding","fontSizeFactor","labelHeight","edgeLengthFactor","compositTitleSize","diagramPadding","layoutDirection","minEntityWidth","minEntityHeight","entityPadding","defaultConfig","siteConfig","currentConfig","setSiteConfig","getSiteConfig","setConfig","sanitize","getConfig","configApi","vertices","classes","subGraphs","subGraphLookup","tooltips","subCount","firstGraphFlag","funs","addSingleLink","_start","_end","linktext","ids","className","setTooltip","tooltip","setupToolTips","element","tooltipElem","scrollX","scrollY","scrollTop","getPosForId","secCount","posCrossRef","positions","interp","defaultInterpolate","defaultStyle","textStyles","newStyle2","getTooltip","setClickFun","bindFunctions","getDirection","getVertices","getEdges","getClasses","_title","prims","objs","nodeList","boolean","subGraph","getDepthFirstPos","indexNodes","indexNodes2","posCount","childPos","getSubGraphs","_str","_startStr","startInfo","destructEndLink","destructStartLink","question","insertPolygonShape","dagreD3","hexagon","rect_left_inv_arrow","lean_right","lean_left","trapezoid","inv_trapezoid","rect_right_inv_arrow","stadium","subroutine","cylinder","addToRender","addToRenderV2","addShape","addVertices","svgId","classStr","vertexNode","vertexText","svgLabel","tspan","radious","_shape","addEdges","defaultLabelStyle","defaultStyles","linkId","linkNameStart","linkNameEnd","edgeData","arrowheadStyle","cnf","flowDb","subG","Render","flowChartShapes","svgBounds","vBox","clusterRects","clusterEl","xPos","yPos","labels","linkNode","markers","extension","composition","aggregation","dependency","cross","barb","insertMarkers","markerArray","markerName","createLabel","_vertexText","isTitle","isNode","labelClass","labelHelper","_classes","labelText","dv","halfPadding","updateNodeBounds","clusterDb","decendants","isDecendant","ancenstorId","clusterId","newGraph","rootId","edgeInCluster","findNonClusterChild","getAnchorId","externalConnections","adjustClustersAndEdges","extractDecendants","clusterData","extractor","fromCluster","toCluster","hasChildren","graphSettings","clusterGraph","clusterNode","forkJoin","questionElem","rectWithTitle","innerLine","text2","flat","textRows","titleBox","descr","innerCircle","fork","nodeElems","rectBox","roundedWithTitle","innerRect","noteGroup","divider","clusterElems","outsideNode","outsidePoint","insidePoint","recursiveRender","_elem","diagramtype","parentCluster","edgePaths","newEl","setNodeElem","insertNode","labelElement","insertEdgeLabel","insertCluster","updatedPath","diagramType","pointsHasChanged","lastPointOutside","isInside","insterection","updatedPoints","strokeClasses","lineData","lineFunction","thickness","pattern","svgPath","protocol","host","pathname","search","arrowType","insertEdge","positionEdgeLabel","drawRect","rectData","rectElem","drawText","prevTextHeight","textElems","yfunc","dominantBaseline","alignmentBaseline","drawLabel","txtObject","actorCnt","getTextObj","getNoteRect","_drawTextCandidateFunc","byText","textAttrs","_setTextAttrs","byTspan","byFo","toText","fromTextAttrsDict","textPlacement","drawActor","anchorElement","drawActivation","verticalPos","actorActivations","anchored","startx","starty","stopx","drawLoop","loopModel","drawLoopLine","stopy","sections","sectionTitles","idx","sectionHeight","drawBackgroundRect","insertArrowHead","insertSequenceNumber","insertArrowCrossHead","prevActor","actors","messages","notes","titleWrapped","sequenceNumbersEnabled","wrapEnabled","addActor","old","autoWrap","nextActor","activationCount","addSignal","idFrom","idTo","messageType","NOTE","addNote","titleWrap","addMessage","answer","setWrap","wrapSetting","getMessages","getActors","getActor","getActorKeys","getTitle","statement","mermaidAPI","getTitleWrapped","ARROWTYPE","FILLED","OPEN","param","sequenceDb","sequenceItems","activations","models","getHeight","loops","actorModel","addLoop","msgModel","noteModel","lastActor","lastLoop","lastMessage","lastNote","setConf","updateVal","updateBounds","_self","updateFn","_startx","_stopx","_starty","_stopy","newActivation","diagram","actorRect","stackedSize","svgDraw","endActivation","lastActorActivationIdx","activation","createLoop","newLoop","endLoop","addSectionToLoop","loop","getVerticalPos","bumpVerticalPos","bump","getBounds","drawActors","actorKeys","prevWidth","prevMargin","activationBounds","actorObj","adjustLoopHeightForWrap","loopWidths","preMargin","postMargin","addLoopFn","heightAdjust","loopWidth","textConf","textDims","totalOffset","getMaxMessageWidthPerActor","maxMessageWidthPerActor","isNote","isMessage","textFont","wrappedMessage","messageWidth","calculateActorMargins","actorToMessageWidth","actorKey","actDims","actorWidth","calculateLoopBounds","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","toAdd","enabled","shouldWrap","textDimensions","buildNoteModel","stk","fromBounds","toBounds","fromIdx","toIdx","allBounds","boundedWidth","msgDims","buildMessageModel","sequenceIndex","drawNote","activationData","activeEnd","lineStarty","textWidth","drawMessage","box","extraVertForTitle","lastTask","lastTaskID","dateFormat","todayMarker","excludes","tasks","currentSection","inclusiveEndDates","lastOrder","isInvalidDate","checkTaskDates","manualEndTime","startTime","endTime","renderEndTime","fixTaskDates","getStartDate","prevTime","afterStatement","latestEndingTask","findTaskById","mDate","durationToDate","durationStatement","getEndDate","inclusive","taskCnt","parseId","idStr","rawTasks","taskDb","compileTasks","compileTask","prevTask","prevTaskId","startData","processed","allProcessed","rawTask","pushFun","callbackFunction","getDateFormat","endDatesAreInclusive","getAxisFormat","getTodayMarker","getSections","getTasks","allItemsPricessed","iterationCount","section","taskInfo","dataStr","getTaskTags","parseData","crit","milestone","addTaskOrg","newTask","endTimeData","compileData","getExcludes","functionArgs","argList","_linkStr","open","matchFound","regex","ganttDb","rightPadding","getElementById","parentElement","offsetWidth","useWidth","taskArray","timeScale","scaleTime","categories","catsUnfiltered","getCounts","checkUnique","taskA","taskB","pageWidth","pageHeight","gap","scaleLinear","interpolateHcl","theSidePad","theTopPad","xAxis","makeGrid","theArray","theGap","theBarHeight","theColorScale","rectangles","secNum","taskClass","taskType","drawRects","colorScale","numOccurances","prevGap","vertLabels","todayG","today","todayLine","drawToday","makeGant","relations","classCounter","splitClassNameAndType","genericType","classId","cssClasses","members","annotations","domId","lookUpDomId","classKeys","member","validatedClassName","theClass","memberString","endsWith","setCssClass","setClickFunc","elemId","getClass","annotation","getRelations","parseMember","fieldMatch","methodMatch","buildFieldDisplay","buildMethodDisplay","buildLegacyDisplay","parsedText","displayText","parseGenericTypes","cssStyle","visibility","methodName","classifier","parseClassifier","returnType","methodStart","methodEnd","firstChar","addTspan","textEl","isFirst","tSpan","cleanedText","classDef","cssClassStr","classInfo","titleText2","classTitleString","classTitle","titleHeight","membersLine","membersBox","methodsLine","classBox","rectWidth","childNodes","getRelationType","p1_card_x","p1_card_y","p2_card_x","p2_card_y","labelPosition","cardinality_1_point","cardinality_2_point","classDb","idCache","getGraphId","isMultiGraph","rootDoc","documents","states","currentDocument","startCnt","addState","descriptions","addDescription","_id1","_id2","_descr","theState","dividerCnt","getState","getStates","logDocuments","getRootDoc","getRootDocV2","docTranslator","currentDoc","newNode","docNode","extract","_doc","drawDescrState","stateDef","isSecond","descrLine","descrBox","addTitleAndBox","altBkg","dblPad","orgBox","orgWidth","orgX","titleWidth","graphBox","lineY","_text","tHeight","_drawLongText","drawState","stateInfo","drawStartState","drawEndState","drawForkJoinState","drawDivider","drawSimpleState","stateBox","stateDb","transformationLog","renderDoc","edgeFreeDoc","boxBounds","noteDef","svgElem","pWidth","pShift","titleRows","boundstmp","boxHeight","heightAdj","drawEdge","nodeDb","setupNode","altFlag","nodeData","noteData","groupData","setupDoc","startId","endId","commits","branches","master","curBranch","getId","charactersLength","makeid","isfastforwardable","currentCommit","otherCommit","upsert","newval","prettyPrintCommitHistory","commitArr","recordMap","newCommit","nextCommit","branchNum","getCommitsArray","rawOptString","getOptions","otherBranch","isReachableFrom","commitRef","parentCount","prettyPrint","getBranchesAsObjArray","branchArr","getBranches","getCommits","getCurrentBranch","getHead","allCommitsDict","nodeFillColor","nodeStrokeWidth","nodeStrokeColor","lineStrokeWidth","branchOffset","lineColor","leftMargin","branchColors","nodeRadius","nodeLabel","apiConfig","svgDrawLine","colorIdx","lineGen","getElementCoords","coords","ctm","getCTM","svgDrawLineForCommits","fromId","toId","fromBbox","toBbox","renderCommitHistory","commitid","numCommits","branchName","renderLines","branchColor","lineDrawn","ver","gitGraphParser","svgCreateDefs","setMessage","getMessage","getInfo","infoParser","pieParser","pieData","scaleOrdinal","schemeSet2","dataReady","d3pie","arcGenerator","legend","legendRectSize","entities","relationships","getEntities","entA","rolA","entB","rSpec","rel","entityA","roleA","entityB","relSpec","getRelationships","ERMarkers","ONLY_ONE_START","ONLY_ONE_END","ZERO_OR_ONE_START","ZERO_OR_ONE_END","ONE_OR_MORE_START","ONE_OR_MORE_END","ZERO_OR_MORE_START","ZERO_OR_MORE_END","getEdgeName","relCnt","erDb","erParser","erMarkers","firstOne","firstEntity","groupNode","textId","textNode","textBBox","entityWidth","entityHeight","rectBBox","addRelationships","adjustEntities","getTotalLength","labelPoint","getPointAtLength","drawRelationshipFromLayout","allItemsProcessed","taskData","pieces","peeps","peopleList","people","tempActors","drawCircle","circleData","circleElement","taskCount","colour","taskFontSize","taskFontFamily","faceData","face","d3arc","smile","sad","ambivalent","person","graphics","journeyDb","taskMargin","actorColours","sectionFills","sectionColours","LEFT_MARGIN","fills","textColours","drawTasks","lastSection","taskPos","sectionNumber","taskActors","actorName","actorNames","actorPos","drawActorLegend","themes","themeName","currentDirective","handleDirective","reinitialize","updateRendererConfigs","gitGraphRenderer","flowRenderer","flowRendererV2","sequenceRenderer","ganttRenderer","classRenderer","stateRenderer","stateRendererV2","infoRenderer","pieRenderer","erRenderer","journeyRenderer","errorRenderer","pkg","_txt","graphInit","existingSvg","innerTxt","encodeEntities","graphType","altFontFamily","style1","style2","cs","font","sequenceDiagram","svgCode","decodeEntities","gitGraphAst","flowParser","sequenceParser","ganttParser","classParser","stateParser","infoDb","pieDb","journeyParser","globalReset","contentLoaded","mermaid","sequenceConfig","ganttConfig"],"mappings":"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AAC,EAAE,IAAIC,EAAI,CAAC,EAAE,IAAIC,EAAI,CAAC,EAAE,IAAIC,EAAI,CAAC,EAAE,IAAIC,EAAI,CAAC,EAAE,IAAIC,EAAI,CAAC,EAAE,IAAIC,EAAI,CAAC,EAAE,IAAIC,EAAI,CAAC,EAAE,IAAIqtC,EAAI,CAAC,EAAE,IAAIC,EAAI,CAAC,EAAE,IAAIC,EAAI,CAAC,EAAE,IAAIC,EAAI,CAAC,EAAE,IAAIC,EAAI,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAIC,EAAI,CAAC,EAAE,IAAIC,EAAI,CAAC,EAAE,IAAIC,EAAI,CAAC,EAAE,IAAIC,EAAI,CAAC,EAAE,EAAE,GAAG,GAAG,IAAIC,EAAI,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,IAAIC,EAAI,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,IAAIC,EAAI,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAIC,EAAI,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAIC,EAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAIC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,IAAIC,EAAI,CAAC,EAAE,IAAIC,EAAI,CAAC,EAAE,IAAIC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,GAAI,CAAC,EAAE,KAAKC,GAAI,CAAC,EAAE,KAAKC,GAAI,CAAC,EAAE,KAAKC,GAAI,CAAC,EAAE,KAAKC,GAAI,CAAC,EAAE,IAAIC,GAAI,CAAC,EAAE,KAAKC,GAAI,CAAC,EAAE,KAAKC,GAAI,CAAC,EAAE,KAAKC,GAAI,CAAC,EAAE,KAAKC,GAAI,CAAC,EAAE,KAAKC,GAAI,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,IAAIC,GAAK,CAAC,EAAE,IAAIC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAIC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAIC,GAAK,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAIC,GAAK,CAAC,GAAG,IAAIC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE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,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG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uvK,MAAM3hK,OAAOmvE,EAAK0sB,GAChBzpG,MAGT0hJ,EAAK1/I,UAAU2uH,OAAS,SAAgBlnB,GAEtC,OADAzpG,KAAKwvK,MAAM5hK,OAAO5N,KAAKuvK,MAAM5+C,UACtB3wH,KAAKwvK,MAAM7+C,OAAOlnB,K,cC7C3B7pG,EAAOD,QAAU,CACfw7H,QAAS,CACPh2H,KAAM,EACNyzC,OAAQ,CACN,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,kEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,sEAIN4uD,IAAK,CACHrO,IAAK,EACLvgD,OAAQ,CACN,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,iEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,wE,6BCrwBR,IAAIqtC,EAAK,EAAQ,GACbwpF,EAAW,EAAQ,KACnBvoE,EAAQ,EAAQ,IAChB6qC,EAAS,EAAQ,KACjBtB,EAAO,EAAQ,KACf3qD,EAASohB,EAAMphB,OAEf4pF,EAAU,EAAQ,KAClBC,EAAY,EAAQ,KAExB,SAAS3H,EAAG5nF,GACV,KAAMpgF,gBAAgBgoK,GACpB,OAAO,IAAIA,EAAG5nF,GAGO,iBAAZA,IACT0F,EAAOisD,EAAO9vI,eAAem+E,GAAU,iBAAmBA,GAE1DA,EAAU2xD,EAAO3xD,IAIfA,aAAmB2xD,EAAOG,cAC5B9xD,EAAU,CAAEla,MAAOka,IAErBpgF,KAAKkmE,MAAQka,EAAQla,MAAMA,MAC3BlmE,KAAK6B,EAAI7B,KAAKkmE,MAAMrkE,EACpB7B,KAAK4vK,GAAK5vK,KAAK6B,EAAEyxF,MAAM,GACvBtzF,KAAKikB,EAAIjkB,KAAKkmE,MAAMjiD,EAGpBjkB,KAAKikB,EAAIm8D,EAAQla,MAAMjiD,EACvBjkB,KAAKikB,EAAE64G,WAAW18C,EAAQla,MAAMrkE,EAAE6nF,YAAc,GAGhD1pF,KAAKw/E,KAAOY,EAAQZ,MAAQY,EAAQla,MAAMsZ,KAE5C5/E,EAAOD,QAAUqoK,EAEjBA,EAAGhmK,UAAU6tK,QAAU,SAAiBzvF,GACtC,OAAO,IAAIsvF,EAAQ1vK,KAAMogF,IAG3B4nF,EAAGhmK,UAAU6mK,eAAiB,SAAwB73B,EAAMvnC,GAC1D,OAAOimE,EAAQI,YAAY9vK,KAAMgxI,EAAMvnC,IAGzCu+D,EAAGhmK,UAAU+tK,cAAgB,SAAuB3J,EAAK38D,GACvD,OAAOimE,EAAQM,WAAWhwK,KAAMomK,EAAK38D,IAGvCu+D,EAAGhmK,UAAUiuK,WAAa,SAAoB7vF,GACvCA,IACHA,EAAU,IAcZ,IAXA,IAAI8vF,EAAO,IAAIT,EAAS,CACtBjwF,KAAMx/E,KAAKw/E,KACX2wF,KAAM/vF,EAAQ+vF,KACdC,QAAShwF,EAAQgwF,SAAW,OAC5B1X,QAASt4E,EAAQs4E,SAAWjoB,EAAKzwI,KAAKw/E,KAAK+0C,cAC3C87C,WAAYjwF,EAAQs4E,SAAWt4E,EAAQiwF,YAAc,OACrDC,MAAOtwK,KAAK6B,EAAEqlF,YAGZ4Z,EAAQ9gG,KAAK6B,EAAEonF,aACfsnF,EAAMvwK,KAAK6B,EAAE2pF,IAAI,IAAIvF,EAAG,MACzB,CACD,IAAI+qD,EAAO,IAAI/qD,EAAGiqF,EAAKx/B,SAAS5vC,IAChC,KAAIkwC,EAAKpqD,IAAI2pF,GAAO,GAIpB,OADAv/B,EAAKlnD,MAAM,GACJ9pF,KAAK6oK,eAAe73B,KAI/Bg3B,EAAGhmK,UAAUwuK,aAAe,SAAqBzzF,EAAK0zF,GACpD,IAAItsK,EAA2B,EAAnB44E,EAAIkM,aAAmBjpF,KAAK6B,EAAE6nF,YAG1C,OAFIvlF,EAAQ,IACV44E,EAAMA,EAAIuW,MAAMnvF,KACbssK,GAAa1zF,EAAI6J,IAAI5mF,KAAK6B,IAAM,EAC5Bk7E,EAAIyO,IAAIxrF,KAAK6B,GAEbk7E,GAGXirF,EAAGhmK,UAAUqsC,KAAO,SAAc0uC,EAAKp7E,EAAK8nG,EAAKrpB,GAC5B,iBAARqpB,IACTrpB,EAAUqpB,EACVA,EAAM,MAEHrpB,IACHA,EAAU,IAEZz+E,EAAM3B,KAAK6oK,eAAelnK,EAAK8nG,GAC/B1sB,EAAM/8E,KAAKwwK,aAAa,IAAIvqF,EAAGlJ,EAAK,KAqBpC,IAlBA,IAAI+jB,EAAQ9gG,KAAK6B,EAAEonF,aACfynF,EAAO/uK,EAAIgvK,aAAazpF,QAAQ,KAAM4Z,GAGtCwvE,EAAQvzF,EAAImK,QAAQ,KAAM4Z,GAG1BovE,EAAO,IAAIT,EAAS,CACtBjwF,KAAMx/E,KAAKw/E,KACXk5E,QAASgY,EACTJ,MAAOA,EACPH,KAAM/vF,EAAQ+vF,KACdC,QAAShwF,EAAQgwF,SAAW,SAI1BQ,EAAM5wK,KAAK6B,EAAE2pF,IAAI,IAAIvF,EAAG,IAEnB4qF,EAAO,GAASA,IAAQ,CAC/B,IAAIjnK,EAAIw2E,EAAQx2E,EACZw2E,EAAQx2E,EAAEinK,GACV,IAAI5qF,EAAGiqF,EAAKx/B,SAAS1wI,KAAK6B,EAAEonF,eAEhC,MADAr/E,EAAI5J,KAAKwwK,aAAa5mK,GAAG,IACnBsrF,KAAK,IAAM,GAAKtrF,EAAEg9E,IAAIgqF,IAAQ,GAApC,CAGA,IAAIE,EAAK9wK,KAAKikB,EAAEyiE,IAAI98E,GACpB,IAAIknK,EAAGz+B,aAAP,CAGA,IAAI0+B,EAAMD,EAAGl0C,OACT17H,EAAI6vK,EAAIz8E,KAAKt0F,KAAK6B,GACtB,GAAkB,IAAdX,EAAEg0F,KAAK,GAAX,CAGA,IAAI/yF,EAAIyH,EAAEurF,KAAKn1F,KAAK6B,GAAG6kF,IAAIxlF,EAAEwlF,IAAI/kF,EAAIgvK,cAAcrlF,KAAKvO,IAExD,GAAkB,KADlB56E,EAAIA,EAAEmyF,KAAKt0F,KAAK6B,IACVqzF,KAAK,GAAX,CAGA,IAAI87E,GAAiBF,EAAGj0C,OAAO/nC,QAAU,EAAI,IACT,IAAfi8E,EAAInqF,IAAI1lF,GAAW,EAAI,GAQ5C,OALIk/E,EAAQ6wF,WAAa9uK,EAAEykF,IAAI5mF,KAAK4vK,IAAM,IACxCztK,EAAInC,KAAK6B,EAAE2pF,IAAIrpF,GACf6uK,GAAiB,GAGZ,IAAIrB,EAAU,CAAEzuK,EAAGA,EAAGiB,EAAGA,EAAG6uK,cAAeA,UAItDhJ,EAAGhmK,UAAU0lK,OAAS,SAAgB3qF,EAAKyiD,EAAW79H,EAAK8nG,GACzD1sB,EAAM/8E,KAAKwwK,aAAa,IAAIvqF,EAAGlJ,EAAK,KACpCp7E,EAAM3B,KAAK+vK,cAAcpuK,EAAK8nG,GAI9B,IAAIvoG,GAHJs+H,EAAY,IAAImwC,EAAUnwC,EAAW,QAGnBt+H,EACdiB,EAAIq9H,EAAUr9H,EAClB,GAAIjB,EAAEg0F,KAAK,GAAK,GAAKh0F,EAAE0lF,IAAI5mF,KAAK6B,IAAM,EACpC,OAAO,EACT,GAAIM,EAAE+yF,KAAK,GAAK,GAAK/yF,EAAEykF,IAAI5mF,KAAK6B,IAAM,EACpC,OAAO,EAGT,IAeIK,EAfAgvK,EAAO/uK,EAAEgzF,KAAKn1F,KAAK6B,GACnB+lG,EAAKspE,EAAKxqF,IAAI3J,GAAKuX,KAAKt0F,KAAK6B,GAC7BgmG,EAAKqpE,EAAKxqF,IAAIxlF,GAAGozF,KAAKt0F,KAAK6B,GAE/B,OAAK7B,KAAKkmE,MAAM40D,gBAWZ54H,EAAIlC,KAAKikB,EAAEgnJ,QAAQrjE,EAAIjmG,EAAIwvK,YAAatpE,IACtCwqC,cAMCnwI,EAAEqrK,OAAOrsK,KAjBVgB,EAAIlC,KAAKikB,EAAE+mJ,OAAOpjE,EAAIjmG,EAAIwvK,YAAatpE,IACrCwqC,cAGkC,IAAjCnwI,EAAE06H,OAAOtoC,KAAKt0F,KAAK6B,GAAG+kF,IAAI1lF,IAgBrC8mK,EAAGhmK,UAAUovK,cAAgB,SAASr0F,EAAKyiD,EAAWr3H,EAAGshG,GACvD3jB,GAAQ,EAAI39E,KAAOA,EAAG,4CACtBq3H,EAAY,IAAImwC,EAAUnwC,EAAW/1B,GAErC,IAAI5nG,EAAI7B,KAAK6B,EACTuoB,EAAI,IAAI67D,EAAGlJ,GACX77E,EAAIs+H,EAAUt+H,EACdiB,EAAIq9H,EAAUr9H,EAGdkvK,EAAa,EAAJlpK,EACTmpK,EAAcnpK,GAAK,EACvB,GAAIjH,EAAE0lF,IAAI5mF,KAAKkmE,MAAMhkE,EAAEoyF,KAAKt0F,KAAKkmE,MAAMrkE,KAAO,GAAKyvK,EACjD,MAAM,IAAIjlK,MAAM,wCAIhBnL,EADEowK,EACEtxK,KAAKkmE,MAAMs2D,WAAWt7H,EAAE4Q,IAAI9R,KAAKkmE,MAAMrkE,GAAIwvK,GAE3CrxK,KAAKkmE,MAAMs2D,WAAWt7H,EAAGmwK,GAE/B,IAAIE,EAAO/xC,EAAUt+H,EAAEi0F,KAAKtzF,GACxB4yB,EAAK5yB,EAAE2pF,IAAIphE,GAAGs8D,IAAI6qF,GAAMj9E,KAAKzyF,GAC7B+qE,EAAKzqE,EAAEukF,IAAI6qF,GAAMj9E,KAAKzyF,GAI1B,OAAO7B,KAAKikB,EAAE+mJ,OAAOv2I,EAAIvzB,EAAG0rE,IAG9Bo7F,EAAGhmK,UAAUwvK,oBAAsB,SAASpnJ,EAAGo1G,EAAW//D,EAAGgqC,GAE3D,GAAgC,QADhC+1B,EAAY,IAAImwC,EAAUnwC,EAAW/1B,IACvBunE,cACZ,OAAOxxC,EAAUwxC,cAEnB,IAAK,IAAI5wK,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAC1B,IAAIqxK,EACJ,IACEA,EAASzxK,KAAKoxK,cAAchnJ,EAAGo1G,EAAWp/H,GAC1C,MAAOgqB,GACP,SAGF,GAAIqnJ,EAAO17E,GAAGt2B,GACZ,OAAOr/D,EAEX,MAAM,IAAIiM,MAAM,0C,6BC7OlB,IAAImzE,EAAO,EAAQ,KACf0nB,EAAQ,EAAQ,KAChBphB,EAAS,EAAQ,IAErB,SAAS2pF,EAASrvF,GAChB,KAAMpgF,gBAAgByvK,GACpB,OAAO,IAAIA,EAASrvF,GACtBpgF,KAAKw/E,KAAOY,EAAQZ,KACpBx/E,KAAK0xK,aAAetxF,EAAQsxF,WAE5B1xK,KAAK64F,OAAS74F,KAAKw/E,KAAK80C,QACxBt0H,KAAK2xK,WAAavxF,EAAQuxF,YAAc3xK,KAAKw/E,KAAK+0C,aAElDv0H,KAAK4xK,QAAU,KACf5xK,KAAK6xK,eAAiB,KACtB7xK,KAAKiwG,EAAI,KACTjwG,KAAK0/D,EAAI,KAET,IAAIg5F,EAAUxxD,EAAMhgB,QAAQ9G,EAAQs4E,QAASt4E,EAAQiwF,YAAc,OAC/DC,EAAQppE,EAAMhgB,QAAQ9G,EAAQkwF,MAAOlwF,EAAQ0xF,UAAY,OACzD3B,EAAOjpE,EAAMhgB,QAAQ9G,EAAQ+vF,KAAM/vF,EAAQgwF,SAAW,OAC1DtqF,EAAO4yE,EAAQj2J,QAAWzC,KAAK2xK,WAAa,EACrC,mCAAqC3xK,KAAK2xK,WAAa,SAC9D3xK,KAAKsmF,MAAMoyE,EAAS4X,EAAOH,GAE7BvwK,EAAOD,QAAU8vK,EAEjBA,EAASztK,UAAUskF,MAAQ,SAAcoyE,EAAS4X,EAAOH,GACvD,IAAIphB,EAAO2J,EAAQ1rJ,OAAOsjK,GAAOtjK,OAAOmjK,GAExCnwK,KAAKiwG,EAAI,IAAIxsG,MAAMzD,KAAK64F,OAAS,GACjC74F,KAAK0/D,EAAI,IAAIj8D,MAAMzD,KAAK64F,OAAS,GACjC,IAAK,IAAIz4F,EAAI,EAAGA,EAAIJ,KAAK0/D,EAAEj9D,OAAQrC,IACjCJ,KAAKiwG,EAAE7vG,GAAK,EACZJ,KAAK0/D,EAAEt/D,GAAK,EAGdJ,KAAK2tH,QAAQohC,GACb/uJ,KAAK4xK,QAAU,EACf5xK,KAAK6xK,eAAiB,iBAGxBpC,EAASztK,UAAU+vK,MAAQ,WACzB,OAAO,IAAIvyF,EAAKizD,KAAKzyI,KAAKw/E,KAAMx/E,KAAKiwG,IAGvCw/D,EAASztK,UAAU2rH,QAAU,SAAgBohC,GAC3C,IAAIijB,EAAOhyK,KAAK+xK,QACAnkK,OAAO5N,KAAK0/D,GACZ9xD,OAAO,CAAE,IACrBmhJ,IACFijB,EAAOA,EAAKpkK,OAAOmhJ,IACrB/uJ,KAAKiwG,EAAI+hE,EAAKrhD,SACd3wH,KAAK0/D,EAAI1/D,KAAK+xK,QAAQnkK,OAAO5N,KAAK0/D,GAAGixD,SAChCo+B,IAGL/uJ,KAAKiwG,EAAIjwG,KAAK+xK,QACAnkK,OAAO5N,KAAK0/D,GACZ9xD,OAAO,CAAE,IACTA,OAAOmhJ,GACPp+B,SACd3wH,KAAK0/D,EAAI1/D,KAAK+xK,QAAQnkK,OAAO5N,KAAK0/D,GAAGixD,WAGvC8+C,EAASztK,UAAUiwK,OAAS,SAAgBvZ,EAAS2X,EAAYv+J,EAAKogK,GAE1C,iBAAf7B,IACT6B,EAASpgK,EACTA,EAAMu+J,EACNA,EAAa,MAGf3X,EAAUxxD,EAAMhgB,QAAQwxE,EAAS2X,GACjCv+J,EAAMo1F,EAAMhgB,QAAQp1E,EAAKogK,GAEzBpsF,EAAO4yE,EAAQj2J,QAAWzC,KAAK2xK,WAAa,EACrC,mCAAqC3xK,KAAK2xK,WAAa,SAE9D3xK,KAAK2tH,QAAQ+qC,EAAQ1rJ,OAAO8E,GAAO,KACnC9R,KAAK4xK,QAAU,GAGjBnC,EAASztK,UAAU0uI,SAAW,SAAkBjwD,EAAKgpB,EAAK33F,EAAKogK,GAC7D,GAAIlyK,KAAK4xK,QAAU5xK,KAAK6xK,eACtB,MAAM,IAAIxlK,MAAM,sBAGC,iBAARo9F,IACTyoE,EAASpgK,EACTA,EAAM23F,EACNA,EAAM,MAIJ33F,IACFA,EAAMo1F,EAAMhgB,QAAQp1E,EAAKogK,GAAU,OACnClyK,KAAK2tH,QAAQ77G,IAIf,IADA,IAAIg/B,EAAO,GACJA,EAAKruC,OAASg+E,GACnBzgF,KAAK0/D,EAAI1/D,KAAK+xK,QAAQnkK,OAAO5N,KAAK0/D,GAAGixD,SACrC7/E,EAAOA,EAAK9jC,OAAOhN,KAAK0/D,GAG1B,IAAI0pB,EAAMt4C,EAAK/rC,MAAM,EAAG07E,GAGxB,OAFAzgF,KAAK2tH,QAAQ77G,GACb9R,KAAK4xK,UACE1qE,EAAMI,OAAOle,EAAKqgB,K,6BC7G3B,IAAIxjB,EAAK,EAAQ,GAEbH,EADQ,EAAQ,IACDA,OAEnB,SAAS4pF,EAAQ19B,EAAI5xD,GACnBpgF,KAAKgyI,GAAKA,EACVhyI,KAAKgxI,KAAO,KACZhxI,KAAKomK,IAAM,KAGPhmF,EAAQ4wD,MACVhxI,KAAKmyK,eAAe/xF,EAAQ4wD,KAAM5wD,EAAQgyF,SACxChyF,EAAQgmF,KACVpmK,KAAKqyK,cAAcjyF,EAAQgmF,IAAKhmF,EAAQkyF,QAE5C1yK,EAAOD,QAAU+vK,EAEjBA,EAAQM,WAAa,SAAoBh+B,EAAIo0B,EAAK38D,GAChD,OAAI28D,aAAesJ,EACVtJ,EAEF,IAAIsJ,EAAQ19B,EAAI,CACrBo0B,IAAKA,EACLkM,OAAQ7oE,KAIZimE,EAAQI,YAAc,SAAqB99B,EAAIhB,EAAMvnC,GACnD,OAAIunC,aAAgB0+B,EACX1+B,EAEF,IAAI0+B,EAAQ19B,EAAI,CACrBhB,KAAMA,EACNohC,QAAS3oE,KAIbimE,EAAQ1tK,UAAUi5H,SAAW,WAC3B,IAAImrC,EAAMpmK,KAAKmxK,YAEf,OAAI/K,EAAI/zB,aACC,CAAEt2G,QAAQ,EAAOw2I,OAAQ,sBAC7BnM,EAAInrC,WAEJmrC,EAAI1/E,IAAI1mF,KAAKgyI,GAAG9rE,MAAMrkE,GAAGwwI,aAGvB,CAAEt2G,QAAQ,EAAMw2I,OAAQ,MAFtB,CAAEx2I,QAAQ,EAAOw2I,OAAQ,uBAFzB,CAAEx2I,QAAQ,EAAOw2I,OAAQ,8BAOpC7C,EAAQ1tK,UAAUmvK,UAAY,SAAmBx0C,EAASlzB,GAUxD,MARuB,iBAAZkzB,IACTlzB,EAAMkzB,EACNA,EAAU,MAGP38H,KAAKomK,MACRpmK,KAAKomK,IAAMpmK,KAAKgyI,GAAG/tH,EAAEyiE,IAAI1mF,KAAKgxI,OAE3BvnC,EAGEzpG,KAAKomK,IAAI9+D,OAAOmC,EAAKkzB,GAFnB38H,KAAKomK,KAKhBsJ,EAAQ1tK,UAAU2uK,WAAa,SAAoBlnE,GACjD,MAAY,QAARA,EACKzpG,KAAKgxI,KAAKzsH,SAAS,GAAI,GAEvBvkB,KAAKgxI,MAGhB0+B,EAAQ1tK,UAAUmwK,eAAiB,SAAwBxwK,EAAK8nG,GAC9DzpG,KAAKgxI,KAAO,IAAI/qD,EAAGtkF,EAAK8nG,GAAO,IAI/BzpG,KAAKgxI,KAAOhxI,KAAKgxI,KAAK18C,KAAKt0F,KAAKgyI,GAAG9rE,MAAMrkE,IAG3C6tK,EAAQ1tK,UAAUqwK,cAAgB,SAAuB1wK,EAAK8nG,GAC5D,GAAI9nG,EAAIe,GAAKf,EAAImH,EAWf,MAP2B,SAAvB9I,KAAKgyI,GAAG9rE,MAAMr5D,KAChBi5E,EAAOnkF,EAAIe,EAAG,qBACkB,UAAvB1C,KAAKgyI,GAAG9rE,MAAMr5D,MACS,YAAvB7M,KAAKgyI,GAAG9rE,MAAMr5D,MACvBi5E,EAAOnkF,EAAIe,GAAKf,EAAImH,EAAG,qCAEzB9I,KAAKomK,IAAMpmK,KAAKgyI,GAAG9rE,MAAM/9C,MAAMxmB,EAAIe,EAAGf,EAAImH,IAG5C9I,KAAKomK,IAAMpmK,KAAKgyI,GAAG9rE,MAAMq2D,YAAY56H,EAAK8nG,IAI5CimE,EAAQ1tK,UAAUwwK,OAAS,SAAgBpM,GACzC,OAAOA,EAAI1/E,IAAI1mF,KAAKgxI,MAAMpU,QAI5B8yC,EAAQ1tK,UAAUqsC,KAAO,SAAc0uC,EAAK0sB,EAAKrpB,GAC/C,OAAOpgF,KAAKgyI,GAAG3jG,KAAK0uC,EAAK/8E,KAAMypG,EAAKrpB,IAGtCsvF,EAAQ1tK,UAAU0lK,OAAS,SAAgB3qF,EAAKyiD,GAC9C,OAAOx/H,KAAKgyI,GAAG01B,OAAO3qF,EAAKyiD,EAAWx/H,OAGxC0vK,EAAQ1tK,UAAU6lF,QAAU,WAC1B,MAAO,eAAiB7nF,KAAKgxI,MAAQhxI,KAAKgxI,KAAKzsH,SAAS,GAAI,IACrD,UAAYvkB,KAAKomK,KAAOpmK,KAAKomK,IAAIv+E,WAAa,O,6BClHvD,IAAI5B,EAAK,EAAQ,GAEbihB,EAAQ,EAAQ,IAChBphB,EAASohB,EAAMphB,OAEnB,SAAS6pF,EAAUvvF,EAASqpB,GAC1B,GAAIrpB,aAAmBuvF,EACrB,OAAOvvF,EAELpgF,KAAKyyK,WAAWryF,EAASqpB,KAG7B3jB,EAAO1F,EAAQl/E,GAAKk/E,EAAQj+E,EAAG,4BAC/BnC,KAAKkB,EAAI,IAAI+kF,EAAG7F,EAAQl/E,EAAG,IAC3BlB,KAAKmC,EAAI,IAAI8jF,EAAG7F,EAAQj+E,EAAG,SACGiuB,IAA1BgwD,EAAQ4wF,cACVhxK,KAAKgxK,cAAgB,KAErBhxK,KAAKgxK,cAAgB5wF,EAAQ4wF,eAIjC,SAAS0B,IACP1yK,KAAKmrD,MAAQ,EAGf,SAASwnH,EAAUhuF,EAAKziF,GACtB,IAAI0wK,EAAUjuF,EAAIziF,EAAEipD,SACpB,KAAgB,IAAVynH,GACJ,OAAOA,EAIT,IAFA,IAAIC,EAAqB,GAAVD,EACX7sF,EAAM,EACD3lF,EAAI,EAAG+mF,EAAMjlF,EAAEipD,MAAO/qD,EAAIyyK,EAAUzyK,IAAK+mF,IAChDpB,IAAQ,EACRA,GAAOpB,EAAIwC,GAGb,OADAjlF,EAAEipD,MAAQg8B,EACHpB,EAGT,SAAS+sF,EAAUnuF,GAGjB,IAFA,IAAIvkF,EAAI,EACJqgF,EAAMkE,EAAIliF,OAAS,GACfkiF,EAAIvkF,MAAqB,IAAbukF,EAAIvkF,EAAI,KAAcA,EAAIqgF,GAC5CrgF,IAEF,OAAU,IAANA,EACKukF,EAEFA,EAAI5/E,MAAM3E,GAyCnB,SAAS2yK,EAAgBv1E,EAAK/c,GAC5B,GAAIA,EAAM,IACR+c,EAAI/1F,KAAKg5E,OADX,CAIA,IAAIuyF,EAAS,GAAKruK,KAAKsB,IAAIw6E,GAAO97E,KAAK8B,MAAQ,GAE/C,IADA+2F,EAAI/1F,KAAc,IAATurK,KACAA,GACPx1E,EAAI/1F,KAAMg5E,KAASuyF,GAAU,GAAM,KAErCx1E,EAAI/1F,KAAKg5E,IAjFX7gF,EAAOD,QAAUgwK,EAiCjBA,EAAU3tK,UAAUywK,WAAa,SAAoB1rK,EAAM0iG,GACzD1iG,EAAOmgG,EAAMhgB,QAAQngF,EAAM0iG,GAC3B,IAAIvnG,EAAI,IAAIwwK,EACZ,GAAwB,KAApB3rK,EAAK7E,EAAEipD,SACT,OAAO,EAGT,GADUwnH,EAAU5rK,EAAM7E,GACfA,EAAEipD,QAAWpkD,EAAKtE,OAC3B,OAAO,EAET,GAAwB,IAApBsE,EAAK7E,EAAEipD,SACT,OAAO,EAET,IAAIwtC,EAAOg6E,EAAU5rK,EAAM7E,GACvBhB,EAAI6F,EAAKhC,MAAM7C,EAAEipD,MAAOwtC,EAAOz2F,EAAEipD,OAErC,GADAjpD,EAAEipD,OAASwtC,EACa,IAApB5xF,EAAK7E,EAAEipD,SACT,OAAO,EAET,IAAI8nH,EAAON,EAAU5rK,EAAM7E,GAC3B,GAAI6E,EAAKtE,SAAWwwK,EAAO/wK,EAAEipD,MAC3B,OAAO,EAET,IAAIhpD,EAAI4E,EAAKhC,MAAM7C,EAAEipD,MAAO8nH,EAAO/wK,EAAEipD,OAYrC,OAXa,IAATjqD,EAAE,IAAoB,IAAPA,EAAE,KACnBA,EAAIA,EAAE6D,MAAM,IAED,IAAT5C,EAAE,IAAoB,IAAPA,EAAE,KACnBA,EAAIA,EAAE4C,MAAM,IAGd/E,KAAKkB,EAAI,IAAI+kF,EAAG/kF,GAChBlB,KAAKmC,EAAI,IAAI8jF,EAAG9jF,GAChBnC,KAAKgxK,cAAgB,MAEd,GAgBTrB,EAAU3tK,UAAU8mK,MAAQ,SAAer/D,GACzC,IAAIvoG,EAAIlB,KAAKkB,EAAEgmF,UACX/kF,EAAInC,KAAKmC,EAAE+kF,UAYf,IATW,IAAPhmF,EAAE,KACJA,EAAI,CAAE,GAAI8L,OAAO9L,IAER,IAAPiB,EAAE,KACJA,EAAI,CAAE,GAAI6K,OAAO7K,IAEnBjB,EAAI4xK,EAAU5xK,GACdiB,EAAI2wK,EAAU3wK,KAENA,EAAE,IAAe,IAAPA,EAAE,KAClBA,EAAIA,EAAE4C,MAAM,GAEd,IAAIy4F,EAAM,CAAE,GACZu1E,EAAgBv1E,EAAKt8F,EAAEuB,SACvB+6F,EAAMA,EAAIxwF,OAAO9L,IACbuG,KAAK,GACTsrK,EAAgBv1E,EAAKr7F,EAAEM,QACvB,IAAIywK,EAAW11E,EAAIxwF,OAAO7K,GACtBinF,EAAM,CAAE,IAGZ,OAFA2pF,EAAgB3pF,EAAK8pF,EAASzwK,QAC9B2mF,EAAMA,EAAIp8E,OAAOkmK,GACVhsE,EAAMI,OAAOle,EAAKqgB,K,6BClI3B,IAAIjqB,EAAO,EAAQ,KACfuyD,EAAS,EAAQ,KACjB7qC,EAAQ,EAAQ,IAChBphB,EAASohB,EAAMphB,OACfqiB,EAAajB,EAAMiB,WACnBunE,EAAU,EAAQ,KAClBC,EAAY,EAAQ,KAExB,SAASwD,EAAMjtG,GAGb,GAFA4f,EAAiB,YAAV5f,EAAqB,qCAEtBlmE,gBAAgBmzK,GACpB,OAAO,IAAIA,EAAMjtG,GAEfA,EAAQ6rE,EAAO7rE,GAAOA,MAC1BlmE,KAAKkmE,MAAQA,EACblmE,KAAKikB,EAAIiiD,EAAMjiD,EACfjkB,KAAKikB,EAAE64G,WAAW52D,EAAMrkE,EAAE6nF,YAAc,GAExC1pF,KAAKozK,WAAaltG,EAAM/9C,QAAQlb,YAChCjN,KAAKqzK,eAAiB1uK,KAAKU,KAAK6gE,EAAMrkE,EAAE6nF,YAAc,GACtD1pF,KAAKw/E,KAAOA,EAAKivD,OAGnB7uI,EAAOD,QAAUwzK,EAOjBA,EAAMnxK,UAAUqsC,KAAO,SAAcg5F,EAASggC,GAC5ChgC,EAAUl/B,EAAWk/B,GACrB,IAAI1lI,EAAM3B,KAAKszK,cAAcjM,GACzBnmK,EAAIlB,KAAKuzK,QAAQ5xK,EAAIk/J,gBAAiBx5B,GACtC35D,EAAI1tE,KAAKikB,EAAEyiE,IAAIxlF,GACfsyK,EAAWxzK,KAAKyzK,YAAY/lG,GAC5BgmG,EAAK1zK,KAAKuzK,QAAQC,EAAU7xK,EAAIgyK,WAAYtsC,GAClC3gD,IAAI/kF,EAAIqvI,QAClB57G,EAAIl0B,EAAE4Q,IAAI4hK,GAAIp/E,KAAKt0F,KAAKkmE,MAAMrkE,GAClC,OAAO7B,KAAK4zK,cAAc,CAAElmG,EAAGA,EAAGt4C,EAAGA,EAAGo+I,SAAUA,KASpDL,EAAMnxK,UAAU0lK,OAAS,SAAgBrgC,EAAS0gC,EAAK3B,GACrD/+B,EAAUl/B,EAAWk/B,GACrB0gC,EAAM/nK,KAAK4zK,cAAc7L,GACzB,IAAIpmK,EAAM3B,KAAK+vK,cAAc3J,GACzB5hJ,EAAIxkB,KAAKuzK,QAAQxL,EAAIyL,WAAY7xK,EAAIgyK,WAAYtsC,GACjDwsC,EAAK7zK,KAAKikB,EAAEyiE,IAAIqhF,EAAI3yI,KAExB,OADc2yI,EAAIr6F,IAAI57D,IAAInQ,EAAIykK,MAAM1/E,IAAIliE,IACzBuxE,GAAG89E,IAGpBV,EAAMnxK,UAAUuxK,QAAU,WAExB,IADA,IAAI/zF,EAAOx/E,KAAKw/E,OACPp/E,EAAI,EAAGA,EAAIgF,UAAU3C,OAAQrC,IACpCo/E,EAAK5xE,OAAOxI,UAAUhF,IACxB,OAAO8mG,EAAMkB,UAAU5oB,EAAKmxC,UAAUr8B,KAAKt0F,KAAKkmE,MAAMrkE,IAGxDsxK,EAAMnxK,UAAU+tK,cAAgB,SAAuB3J,GACrD,OAAOsJ,EAAQM,WAAWhwK,KAAMomK,IAGlC+M,EAAMnxK,UAAUsxK,cAAgB,SAAuBjM,GACrD,OAAOqI,EAAQoE,WAAW9zK,KAAMqnK,IAGlC8L,EAAMnxK,UAAU4xK,cAAgB,SAAuB7L,GACrD,OAAIA,aAAe4H,EACV5H,EACF,IAAI4H,EAAU3vK,KAAM+nK,IAW7BoL,EAAMnxK,UAAUyxK,YAAc,SAAqBtrJ,GACjD,IAAIshF,EAAMthF,EAAM00G,OAAO31C,QAAQ,KAAMlnF,KAAKqzK,gBAE1C,OADA5pE,EAAIzpG,KAAKqzK,eAAiB,IAAMlrJ,EAAMy0G,OAAO9nC,QAAU,IAAO,EACvD2U,GAGT0pE,EAAMnxK,UAAUu6H,YAAc,SAAqBz7B,GAGjD,IAAIizE,GAFJjzE,EAAQoG,EAAMiB,WAAWrH,IAENr+F,OAAS,EACxBuxK,EAASlzE,EAAM/7F,MAAM,EAAGgvK,GAAQ/mK,QAAuB,IAAhB8zF,EAAMizE,IAC7CE,EAAoC,IAAV,IAAhBnzE,EAAMizE,IAEhBjrK,EAAIo+F,EAAMkB,UAAU4rE,GACxB,OAAOh0K,KAAKkmE,MAAMooG,WAAWxlK,EAAGmrK,IAGlCd,EAAMnxK,UAAUkyK,UAAY,SAAmBvtF,GAC7C,OAAOA,EAAIO,QAAQ,KAAMlnF,KAAKqzK,iBAGhCF,EAAMnxK,UAAUmyK,UAAY,SAAmBrzE,GAC7C,OAAOoG,EAAMkB,UAAUtH,IAGzBqyE,EAAMnxK,UAAUoyK,QAAU,SAAiBruF,GACzC,OAAOA,aAAe/lF,KAAKozK,a,6BClH7B,IAAIlsE,EAAQ,EAAQ,IAChBphB,EAASohB,EAAMphB,OACfqiB,EAAajB,EAAMiB,WACnBF,EAAiBf,EAAMe,eAW3B,SAASynE,EAAQz9B,EAAO18H,GACtBvV,KAAKiyI,MAAQA,EACbjyI,KAAKq0K,QAAUlsE,EAAW5yF,EAAO8xJ,QAC7Bp1B,EAAMmiC,QAAQ7+J,EAAO6wJ,KACvBpmK,KAAKqmK,KAAO9wJ,EAAO6wJ,IAEnBpmK,KAAKs0K,UAAYnsE,EAAW5yF,EAAO6wJ,KAGvCsJ,EAAQM,WAAa,SAAoB/9B,EAAOm0B,GAC9C,OAAIA,aAAesJ,EACVtJ,EACF,IAAIsJ,EAAQz9B,EAAO,CAAEm0B,IAAKA,KAGnCsJ,EAAQoE,WAAa,SAAoB7hC,EAAOo1B,GAC9C,OAAIA,aAAkBqI,EACbrI,EACF,IAAIqI,EAAQz9B,EAAO,CAAEo1B,OAAQA,KAGtCqI,EAAQ1tK,UAAUqlK,OAAS,WACzB,OAAOrnK,KAAKq0K,SAGdpsE,EAAeynE,EAAS,YAAY,WAClC,OAAO1vK,KAAKiyI,MAAMwhC,YAAYzzK,KAAKomK,UAGrCn+D,EAAeynE,EAAS,OAAO,WAC7B,OAAI1vK,KAAKs0K,UACAt0K,KAAKiyI,MAAM1V,YAAYv8H,KAAKs0K,WAC9Bt0K,KAAKiyI,MAAMhuH,EAAEyiE,IAAI1mF,KAAKgxI,WAG/B/oC,EAAeynE,EAAS,aAAa,WACnC,IAAIz9B,EAAQjyI,KAAKiyI,MACbzyD,EAAOx/E,KAAKw/E,OACZu0F,EAAS9hC,EAAMohC,eAAiB,EAEhCjxK,EAAIo9E,EAAKz6E,MAAM,EAAGktI,EAAMohC,gBAK5B,OAJAjxK,EAAE,IAAM,IACRA,EAAE2xK,IAAW,IACb3xK,EAAE2xK,IAAW,GAEN3xK,KAGT6lG,EAAeynE,EAAS,QAAQ,WAC9B,OAAO1vK,KAAKiyI,MAAMkiC,UAAUn0K,KAAKu0K,gBAGnCtsE,EAAeynE,EAAS,QAAQ,WAC9B,OAAO1vK,KAAKiyI,MAAMzyD,OAAO5xE,OAAO5N,KAAKqnK,UAAU12C,YAGjD1oB,EAAeynE,EAAS,iBAAiB,WACvC,OAAO1vK,KAAKw/E,OAAOz6E,MAAM/E,KAAKiyI,MAAMohC,mBAGtC3D,EAAQ1tK,UAAUqsC,KAAO,SAAcg5F,GAErC,OADAvhD,EAAO9lF,KAAKq0K,QAAS,2BACdr0K,KAAKiyI,MAAM5jG,KAAKg5F,EAASrnI,OAGlC0vK,EAAQ1tK,UAAU0lK,OAAS,SAAgBrgC,EAAS0gC,GAClD,OAAO/nK,KAAKiyI,MAAMy1B,OAAOrgC,EAAS0gC,EAAK/nK,OAGzC0vK,EAAQ1tK,UAAUwyK,UAAY,SAAmB/qE,GAE/C,OADA3jB,EAAO9lF,KAAKq0K,QAAS,0BACdntE,EAAMI,OAAOtnG,KAAKqnK,SAAU59D,IAGrCimE,EAAQ1tK,UAAUmvK,UAAY,SAAmB1nE,GAC/C,OAAOvC,EAAMI,OAAOtnG,KAAK2zK,WAAYlqE,IAGvC7pG,EAAOD,QAAU+vK,G,6BC5FjB,IAAIzpF,EAAK,EAAQ,GACbihB,EAAQ,EAAQ,IAChBphB,EAASohB,EAAMphB,OACfmiB,EAAiBf,EAAMe,eACvBE,EAAajB,EAAMiB,WAUvB,SAASwnE,EAAU19B,EAAO81B,GACxB/nK,KAAKiyI,MAAQA,EAEM,iBAAR81B,IACTA,EAAM5/D,EAAW4/D,IAEftkK,MAAM2D,QAAQ2gK,KAChBA,EAAM,CACJr6F,EAAGq6F,EAAIhjK,MAAM,EAAGktI,EAAMohC,gBACtBj+I,EAAG2yI,EAAIhjK,MAAMktI,EAAMohC,kBAIvBvtF,EAAOiiF,EAAIr6F,GAAKq6F,EAAI3yI,EAAG,4BAEnB68G,EAAMmiC,QAAQrM,EAAIr6F,KACpB1tE,KAAKy0K,GAAK1M,EAAIr6F,GACZq6F,EAAI3yI,aAAa6wD,IACnBjmF,KAAK00K,GAAK3M,EAAI3yI,GAEhBp1B,KAAK20K,UAAYlxK,MAAM2D,QAAQ2gK,EAAIr6F,GAAKq6F,EAAIr6F,EAAIq6F,EAAIyL,SACpDxzK,KAAK40K,UAAYnxK,MAAM2D,QAAQ2gK,EAAI3yI,GAAK2yI,EAAI3yI,EAAI2yI,EAAI8M,SAGtD5sE,EAAe0nE,EAAW,KAAK,WAC7B,OAAO3vK,KAAKiyI,MAAMkiC,UAAUn0K,KAAK60K,eAGnC5sE,EAAe0nE,EAAW,KAAK,WAC7B,OAAO3vK,KAAKiyI,MAAM1V,YAAYv8H,KAAKwzK,eAGrCvrE,EAAe0nE,EAAW,YAAY,WACpC,OAAO3vK,KAAKiyI,MAAMwhC,YAAYzzK,KAAK0tE,QAGrCu6B,EAAe0nE,EAAW,YAAY,WACpC,OAAO3vK,KAAKiyI,MAAMiiC,UAAUl0K,KAAKo1B,QAGnCu6I,EAAU3tK,UAAU8yK,QAAU,WAC5B,OAAO90K,KAAKwzK,WAAWxmK,OAAOhN,KAAK60K,aAGrClF,EAAU3tK,UAAU6+F,MAAQ,WAC1B,OAAOqG,EAAMI,OAAOtnG,KAAK80K,UAAW,OAAOhmI,eAG7ClvC,EAAOD,QAAUgwK,G,6BC5DjB,IAAI96C,EAAO,EAAQ,IAEnBl1H,EAAQg+H,YAAc,EAAQ,KAE9B,IAAIuB,EAAgBrK,EAAKh1H,OAAO,iBAAiB,WAC/CG,KAAK+0K,MAAM14E,IACTr8F,KAAK2B,IAAI,WAAWqzK,MACpBh1K,KAAK2B,IAAI,WAAWqzK,MACpBh1K,KAAK2B,IAAI,kBAAkBqzK,MAC3Bh1K,KAAK2B,IAAI,mBAAmBqzK,MAC5Bh1K,KAAK2B,IAAI,UAAUqzK,MACnBh1K,KAAK2B,IAAI,UAAUqzK,MACnBh1K,KAAK2B,IAAI,aAAaqzK,MACtBh1K,KAAK2B,IAAI,aAAaqzK,MACtBh1K,KAAK2B,IAAI,eAAeqzK,UAG5Br1K,EAAQu/H,cAAgBA,EAExB,IAAIjB,EAAepJ,EAAKh1H,OAAO,gBAAgB,WAC7CG,KAAK+0K,MAAM14E,IACTr8F,KAAK2B,IAAI,WAAWqzK,MACpBh1K,KAAK2B,IAAI,kBAAkBqzK,UAG/Br1K,EAAQs+H,aAAeA,EAEvB,IAAIF,EAAYlJ,EAAKh1H,OAAO,wBAAwB,WAClDG,KAAK+0K,MAAM14E,IACTr8F,KAAK2B,IAAI,aAAaszK,IAAIC,GAC1Bl1K,KAAK2B,IAAI,oBAAoBwzK,aAGjCx1K,EAAQo+H,UAAYA,EAEpB,IAAIm3C,EAAsBrgD,EAAKh1H,OAAO,uBAAuB,WAC3DG,KAAK+0K,MAAM14E,IACTr8F,KAAK2B,IAAI,aAAassJ,QACtBjuJ,KAAK2B,IAAI,QAAQyzK,QAAQxpH,WACzB5rD,KAAK2B,IAAI,SAASssJ,QAAQriG,WAC1B5rD,KAAK2B,IAAI,UAAUozK,MAAM14E,IACvBr8F,KAAK2B,IAAI,KAAKqzK,MACdh1K,KAAK2B,IAAI,KAAKqzK,MACdh1K,KAAK2B,IAAI,KAAKqzK,OACdppH,eAIFypH,EAAiBxgD,EAAKh1H,OAAO,kBAAkB,WACjDG,KAAK+0K,MAAM14E,IACTr8F,KAAK2B,IAAI,WAAWqzK,MACpBh1K,KAAK2B,IAAI,aAAaszK,IAAIC,GAC1Bl1K,KAAK2B,IAAI,qBAAqB2zK,aAGlC31K,EAAQs/H,WAAao2C,EACrB,IAAIE,EAA0B1gD,EAAKh1H,OAAO,2BAA2B,WACnEG,KAAK+0K,MAAM14E,IACTr8F,KAAK2B,IAAI,aAAaozK,MAAM14E,IAC1Br8F,KAAK2B,IAAI,MAAMssJ,QACfjuJ,KAAK2B,IAAI,WAAWozK,MAAM14E,IACxBr8F,KAAK2B,IAAI,OAAOozK,MAAM14E,IACpBr8F,KAAK2B,IAAI,MAAMssJ,QACfjuJ,KAAK2B,IAAI,aAAaozK,MAAM14E,IAC1Br8F,KAAK2B,IAAI,QAAQ2zK,SACjBt1K,KAAK2B,IAAI,SAASqzK,QAGtBh1K,KAAK2B,IAAI,UAAUozK,MAAM14E,IACvBr8F,KAAK2B,IAAI,QAAQssJ,QACjBjuJ,KAAK2B,IAAI,MAAM2zK,YAIrBt1K,KAAK2B,IAAI,qBAAqB2zK,aAIlC31K,EAAQq/H,oBAAsBu2C,EAE9B,IAAIj2C,EAAgBzK,EAAKh1H,OAAO,iBAAiB,WAC/CG,KAAK+0K,MAAM14E,IACTr8F,KAAK2B,IAAI,WAAWqzK,MACpBh1K,KAAK2B,IAAI,KAAKqzK,MACdh1K,KAAK2B,IAAI,KAAKqzK,MACdh1K,KAAK2B,IAAI,KAAKqzK,MACdh1K,KAAK2B,IAAI,WAAWqzK,MACpBh1K,KAAK2B,IAAI,YAAYqzK,UAGzBr1K,EAAQ2/H,cAAgBA,EAExB3/H,EAAQ0+H,SAAWxJ,EAAKh1H,OAAO,YAAY,WACzCG,KAAKg1K,SAGP,IAAI51C,EAAevK,EAAKh1H,OAAO,gBAAgB,WAC7CG,KAAK+0K,MAAM14E,IACTr8F,KAAK2B,IAAI,WAAWqzK,MACpBh1K,KAAK2B,IAAI,cAAc2zK,SACvBt1K,KAAK2B,IAAI,cAAciqD,WAAW4pH,SAAS,GAAGP,IAAIQ,GAClDz1K,KAAK2B,IAAI,aAAaiqD,WAAW4pH,SAAS,GAAGL,aAGjDx1K,EAAQy/H,aAAeA,EAEvB,IAAIq2C,EAAe5gD,EAAKh1H,OAAO,gBAAgB,WAC7CG,KAAK01K,OAAO,CACVC,WAAY31K,KAAKiuJ,aAIrBtuJ,EAAQ6/H,UAAY3K,EAAKh1H,OAAO,aAAa,WAC3CG,KAAK+0K,MAAM14E,IACTr8F,KAAK2B,IAAI,KAAKqzK,MACdh1K,KAAK2B,IAAI,KAAKqzK,W,gBCvHlB,IAAIngD,EAAO,EAAQ,IACf7uC,EAAW,EAAQ,GAQvB,SAAS4vF,EAAOj1K,EAAMyqJ,GACpBprJ,KAAKW,KAAOA,EACZX,KAAKorJ,KAAOA,EAEZprJ,KAAKg1H,SAAW,GAChBh1H,KAAKi1H,SAAW,GAXRt1H,EAENE,OAAS,SAAgBc,EAAMyqJ,GACjC,OAAO,IAAIwqB,EAAOj1K,EAAMyqJ,IAW1BwqB,EAAO5zK,UAAU6zK,aAAe,SAAqBhhH,GACnD,IAAI76C,EACJ,IACEA,EAAQ,EAAQ,KAAM87J,iBACpB,aAAe91K,KAAKW,KAAO,8CAI7B,MAAOypB,GACPpQ,EAAQ,SAAUkxI,GAChBlrJ,KAAK+1K,WAAW7qB,IAQpB,OALAllE,EAAShsE,EAAO66C,GAChB76C,EAAMhY,UAAU+zK,WAAa,SAAmB7qB,GAC9Cr2F,EAAKt0D,KAAKP,KAAMkrJ,IAGX,IAAIlxI,EAAMha,OAGnB41K,EAAO5zK,UAAUqrJ,YAAc,SAAqB5jD,GAKlD,OAJAA,EAAMA,GAAO,MAERzpG,KAAKg1H,SAAS/yH,eAAewnG,KAChCzpG,KAAKg1H,SAASvrB,GAAOzpG,KAAK61K,aAAahhD,EAAKG,SAASvrB,KAChDzpG,KAAKg1H,SAASvrB,IAGvBmsE,EAAO5zK,UAAU47H,OAAS,SAAgB72H,EAAM0iG,EAAKrpB,GACnD,OAAOpgF,KAAKqtJ,YAAY5jD,GAAKm0B,OAAO72H,EAAMq5E,IAG5Cw1F,EAAO5zK,UAAUusJ,YAAc,SAAqB9kD,GAKlD,OAJAA,EAAMA,GAAO,MAERzpG,KAAKi1H,SAAShzH,eAAewnG,KAChCzpG,KAAKi1H,SAASxrB,GAAOzpG,KAAK61K,aAAahhD,EAAKI,SAASxrB,KAChDzpG,KAAKi1H,SAASxrB,IAGvBmsE,EAAO5zK,UAAUslG,OAAS,SAAgBvgG,EAAM0iG,EAAoB+gD,GAClE,OAAOxqJ,KAAKuuJ,YAAY9kD,GAAKnC,OAAOvgG,EAAMyjJ,K,yBC3D5C,IAAI59I,QAAU,SAAU6+F,EAAI+qB,GACxB,GAAI/qB,EAAG7+F,QAAS,OAAO6+F,EAAG7+F,QAAQ4pH,GAC7B,IAAK,IAAIp2H,EAAI,EAAGA,EAAIqrG,EAAGhpG,OAAQrC,IAChC,GAAIqrG,EAAGrrG,KAAOo2H,EAAM,OAAOp2H,EAE/B,OAAQ,GAER41K,YAAc,SAAU35E,GACxB,GAAIv7F,OAAOyyB,KAAM,OAAOzyB,OAAOyyB,KAAK8oE,GAEhC,IAAIjT,EAAM,GACV,IAAK,IAAIznF,KAAO06F,EAAKjT,EAAI3hF,KAAK9F,GAC9B,OAAOynF,GAIX3xD,QAAU,SAAUg0E,EAAI5E,GACxB,GAAI4E,EAAGh0E,QAAS,OAAOg0E,EAAGh0E,QAAQovE,GAC7B,IAAK,IAAIzmG,EAAI,EAAGA,EAAIqrG,EAAGhpG,OAAQrC,IAChCymG,EAAG4E,EAAGrrG,GAAIA,EAAGqrG,IAIjBwqE,WAAc,WACd,IAEI,OADAn1K,OAAOC,eAAe,GAAI,IAAK,IACxB,SAASs7F,EAAK17F,EAAMU,GACvBP,OAAOC,eAAes7F,EAAK17F,EAAM,CAC7BmjF,UAAU,EACV9iF,YAAY,EACZ+iF,cAAc,EACd1iF,MAAOA,KAGjB,MAAM+oB,GACJ,OAAO,SAASiyE,EAAK17F,EAAMU,GACvBg7F,EAAI17F,GAAQU,IAbP,GAkBb60K,QAAU,CAAC,QAAS,UAAW,OAAQ,QAAS,YAAa,WACjE,WAAY,OAAQ,OAAQ,MAAO,SAAU,SAAU,aACvD,iBAAkB,SAAU,SAAU,cAAe,YAAa,WAClE,YAAa,qBAAsB,YAAa,qBAAsB,SACtE,OAAQ,WAAY,QAAS,aAAc,WAAY,YAAa,YAEpE,SAASC,WACTA,QAAQn0K,UAAY,GAEpB,IAAIo0K,OAASz2K,QAAQy2K,OAAS,SAAqB95H,GAC/C,KAAMt8C,gBAAgBo2K,QAAS,OAAO,IAAIA,OAAO95H,GACjDt8C,KAAKs8C,KAAOA,GAGhB85H,OAAOp0K,UAAUq0K,aAAe,SAAUtsK,GACtC,KAAMA,aAAmBosK,SACrB,MAAM,IAAIrrJ,UAAU,+BAGxB,IAAIwrJ,EAAS/lK,SAAS+C,cAAc,UAC/BgjK,EAAO7lK,QAAO6lK,EAAO7lK,MAAQ,IAClC6lK,EAAO7lK,MAAM8lK,QAAU,OAEvBhmK,SAAS66I,KAAK/8I,YAAYioK,GAE1B,IAAIE,EAAMF,EAAOG,cACbC,EAAQF,EAAIG,KAAMC,EAAcJ,EAAIK,YAEnCH,GAASE,IAEVA,EAAYr2K,KAAKi2K,EAAK,QACtBE,EAAQF,EAAIG,MAGhBl/I,QAAQu+I,YAAYjsK,IAAU,SAAUpI,GACpC60K,EAAI70K,GAAOoI,EAAQpI,MAEvB81B,QAAQy+I,SAAS,SAAUv0K,GACnBoI,EAAQpI,KACR60K,EAAI70K,GAAOoI,EAAQpI,OAI3B,IAAIm1K,EAAUd,YAAYQ,GAEtBptF,EAAMstF,EAAMn2K,KAAKi2K,EAAKx2K,KAAKs8C,MAmB/B,OAjBA7kB,QAAQu+I,YAAYQ,IAAM,SAAU70K,IAI5BA,KAAOoI,IAAsC,IAA3B6C,QAAQkqK,EAASn1K,MACnCoI,EAAQpI,GAAO60K,EAAI70K,OAI3B81B,QAAQy+I,SAAS,SAAUv0K,GACjBA,KAAOoI,GACTksK,WAAWlsK,EAASpI,EAAK60K,EAAI70K,OAIrC4O,SAAS66I,KAAKz3I,YAAY2iK,GAEnBltF,GAGXgtF,OAAOp0K,UAAU8zK,iBAAmB,WAChC,OAAOa,KAAK32K,KAAKs8C,OAGrB85H,OAAOp0K,UAAU+0K,gBAAkB,SAAUhtK,GACzC,IAAImsF,EAAMkgF,OAAOY,cAAcjtK,GAC3Bq/E,EAAMppF,KAAKq2K,aAAangF,GAQ5B,OANInsF,GACA0tB,QAAQu+I,YAAY9/E,IAAM,SAAUv0F,GAChCoI,EAAQpI,GAAOu0F,EAAIv0F,MAIpBynF,GAGX3xD,QAAQu+I,YAAYI,OAAOp0K,YAAY,SAAUrB,GAC7ChB,QAAQgB,GAAQy1K,OAAOz1K,GAAQ,SAAU27C,GACrC,IAAIn6C,EAAIi0K,OAAO95H,GACf,OAAOn6C,EAAExB,GAAMqJ,MAAM7H,EAAG,GAAG4C,MAAMxE,KAAK6E,UAAW,QAIzDzF,QAAQs3K,UAAY,SAAUltK,GAC1B,OAAOA,aAAmBosK,SAG9Bx2K,QAAQu3K,aAAe,SAAU56H,GAC7B,OAAO38C,QAAQy2K,OAAO95H,IAG1B38C,QAAQq3K,cAAgBZ,OAAOY,cAAgB,SAAUjtK,GACrD,IAAIO,EAAO,IAAI6rK,QAMf,MALsB,iBAAZpsK,GACN0tB,QAAQu+I,YAAYjsK,IAAU,SAAUpI,GACpC2I,EAAK3I,GAAOoI,EAAQpI,MAGrB2I,I,gBCnJX,IAAI07E,EAAW,EAAQ,GAEvB,SAASkvC,EAAS90C,GAChBpgF,KAAK6qJ,eAAiB,CACpBxuD,IAAK,KACL7xF,KAAM,GACN41E,QAASA,GAAW,GACpB+2F,OAAQ,IA6FZ,SAASC,EAAc5sK,EAAMuyE,GAC3B/8E,KAAKwK,KAAOA,EACZxK,KAAKq3K,QAAQt6F,GA5Ffp9E,EAAQu1H,SAAWA,EAEnBA,EAASlzH,UAAUiyH,QAAU,SAAiB53B,GAC5C,OAAOA,aAAe+6E,GAGxBliD,EAASlzH,UAAUyoJ,KAAO,WACxB,IAAIn/H,EAAQtrB,KAAK6qJ,eAEjB,MAAO,CAAExuD,IAAK/wE,EAAM+wE,IAAKi7E,QAAShsJ,EAAM9gB,KAAK/H,SAG/CyyH,EAASlzH,UAAU0oJ,QAAU,SAAiB3jJ,GAC5C,IAAIukB,EAAQtrB,KAAK6qJ,eAEjBv/H,EAAM+wE,IAAMt1F,EAAKs1F,IACjB/wE,EAAM9gB,KAAO8gB,EAAM9gB,KAAKzF,MAAM,EAAGgC,EAAKuwK,UAGxCpiD,EAASlzH,UAAUu1K,SAAW,SAAkB51K,GAC9C,OAAO3B,KAAK6qJ,eAAergJ,KAAK/C,KAAK9F,IAGvCuzH,EAASlzH,UAAUw1K,QAAU,SAAiBnjK,GAC5C,IAAIiX,EAAQtrB,KAAK6qJ,eAEjBv/H,EAAM9gB,KAAO8gB,EAAM9gB,KAAKzF,MAAM,EAAGsP,EAAQ,IAG3C6gH,EAASlzH,UAAUy1K,SAAW,SAAkBpjK,EAAO1S,EAAKN,GAC1D,IAAIiqB,EAAQtrB,KAAK6qJ,eAEjB7qJ,KAAKw3K,QAAQnjK,GACK,OAAdiX,EAAM+wE,MACR/wE,EAAM+wE,IAAI16F,GAAON,IAGrB6zH,EAASlzH,UAAUwI,KAAO,WACxB,OAAOxK,KAAK6qJ,eAAergJ,KAAK2H,KAAK,MAGvC+iH,EAASlzH,UAAU01K,YAAc,WAC/B,IAAIpsJ,EAAQtrB,KAAK6qJ,eAEb/xD,EAAOxtE,EAAM+wE,IAEjB,OADA/wE,EAAM+wE,IAAM,GACLvD,GAGTo8B,EAASlzH,UAAU21K,YAAc,SAAqB7+E,GACpD,IAAIxtE,EAAQtrB,KAAK6qJ,eAEbrhI,EAAM8B,EAAM+wE,IAEhB,OADA/wE,EAAM+wE,IAAMvD,EACLtvE,GAGT0rG,EAASlzH,UAAUmE,MAAQ,SAAe42E,GACxC,IAAImxC,EACA5iG,EAAQtrB,KAAK6qJ,eAEbgG,EAAY9zE,aAAeq6F,EAS/B,GAPElpD,EADE2iC,EACI9zE,EAEA,IAAIq6F,EAAc9rJ,EAAM9gB,KAAKxF,KAAI,SAAS4yK,GAC9C,MAAO,IAAMx1I,KAAKC,UAAUu1I,GAAQ,OACnCzlK,KAAK,IAAK4qE,EAAIsqD,SAAWtqD,EAAKA,EAAI3Q,QAGlC9gD,EAAM80D,QAAQy3F,QACjB,MAAM3pD,EAKR,OAHK2iC,GACHvlI,EAAM6rJ,OAAO1vK,KAAKymH,GAEbA,GAGTgH,EAASlzH,UAAU81K,WAAa,SAAoB/7I,GAClD,IAAIzQ,EAAQtrB,KAAK6qJ,eACjB,OAAKv/H,EAAM80D,QAAQy3F,QAGZ,CACL97I,OAAQ/7B,KAAKi0H,QAAQl4F,GAAU,KAAOA,EACtCo7I,OAAQ7rJ,EAAM6rJ,QAJPp7I,GAYXiqD,EAASoxF,EAAe/qK,OAExB+qK,EAAcp1K,UAAUq1K,QAAU,SAAiBt6F,GAKjD,GAJA/8E,KAAKqnI,QAAUtqD,EAAM,SAAW/8E,KAAKwK,MAAQ,aACzC6B,MAAM0rK,mBACR1rK,MAAM0rK,kBAAkB/3K,KAAMo3K,IAE3Bp3K,KAAKosE,MACR,IAEE,MAAM,IAAI//D,MAAMrM,KAAKqnI,SACrB,MAAOj9G,GACPpqB,KAAKosE,MAAQhiD,EAAEgiD,MAGnB,OAAOpsE,O,gBCvHT,IAAIk1H,EAAW,EAAQ,IAAWA,SAC9BE,EAAgB,EAAQ,IAAWA,cACnCD,EAAgB,EAAQ,IAAWA,cACnCrvC,EAAS,EAAQ,IAGjBkyF,EAAO,CACT,MAAO,QAAS,MAAO,QAAS,QAAS,OACzC,UAAW,UAAW,QAAS,OAAQ,MAAO,UAC9C,SAAU,SAAU,UAAW,SAAU,WAAY,SAAU,YAC/D,SAAU,SAAU,WAAY,SAAU,SAAU,UAAW,YAI7D/1H,EAAU,CACZ,MAAO,MAAO,MAAO,WAAY,WAAY,WAAY,MAAO,SAChE,MAAO,YACPj1C,OAAOgrK,GAYT,SAAS9uH,EAAKugD,EAAK37F,GACjB,IAAIwd,EAAQ,GACZtrB,KAAK0uJ,WAAapjI,EAElBA,EAAMm+E,IAAMA,EAEZn+E,EAAMxd,OAASA,GAAU,KACzBwd,EAAMwE,SAAW,KAGjBxE,EAAM4lG,IAAM,KACZ5lG,EAAMhe,KAAO,KACbge,EAAM2sJ,YAAc,KACpB3sJ,EAAMoqJ,OAAS,KACfpqJ,EAAMsgC,UAAW,EACjBtgC,EAAMwgI,KAAM,EACZxgI,EAAM+wE,KAAM,EACZ/wE,EAAM2pJ,IAAM,KACZ3pJ,EAAM4sJ,WAAa,KACnB5sJ,EAAM3pB,IAAM,KACZ2pB,EAAe,QAAI,KACnBA,EAAMkqJ,SAAW,KACjBlqJ,EAAMsnC,SAAW,KACjBtnC,EAAMjZ,SAAW,KAGZiZ,EAAMxd,SACTwd,EAAMwE,SAAW,GACjB9vB,KAAKm4K,SAGTv4K,EAAOD,QAAUupD,EAEjB,IAAIkvH,EAAa,CACf,MAAO,SAAU,WAAY,MAAO,OAAQ,cAAe,SAC3D,WAAY,MAAO,MAAO,MAAO,aAAc,MAAO,UAAW,WACjE,WAAY,YAGdlvH,EAAKlnD,UAAU6R,MAAQ,WACrB,IAAIyX,EAAQtrB,KAAK0uJ,WACb2pB,EAAS,GACbD,EAAW3gJ,SAAQ,SAAS6gJ,GAC1BD,EAAOC,GAAQhtJ,EAAMgtJ,MAEvB,IAAIlvF,EAAM,IAAIppF,KAAKiN,YAAYorK,EAAOvqK,QAEtC,OADAs7E,EAAIslE,WAAa2pB,EACVjvF,GAGTlgC,EAAKlnD,UAAUm2K,MAAQ,WACrB,IAAI7sJ,EAAQtrB,KAAK0uJ,WACjBzsG,EAAQxqB,SAAQ,SAASo3F,GACvB7uH,KAAK6uH,GAAU,WACb,IAAIh7G,EAAQ,IAAI7T,KAAKiN,YAAYjN,MAEjC,OADAsrB,EAAMwE,SAASroB,KAAKoM,GACbA,EAAMg7G,GAAQ7kH,MAAM6J,EAAOzO,cAEnCpF,OAGLkpD,EAAKlnD,UAAUskF,MAAQ,SAAc8kE,GACnC,IAAI9/H,EAAQtrB,KAAK0uJ,WAEjB5oE,EAAwB,OAAjBx6D,EAAMxd,QACbs9I,EAAK7qJ,KAAKP,MAGVsrB,EAAMwE,SAAWxE,EAAMwE,SAASnkB,QAAO,SAAS2C,GAC9C,OAAOA,EAAMogJ,WAAW5gJ,SAAW9N,OAClCA,MACH8lF,EAAOmhB,MAAM37E,EAAMwE,SAASrtB,OAAQ,EAAG,sCAGzCymD,EAAKlnD,UAAUu2K,SAAW,SAAiBjrK,GACzC,IAAIge,EAAQtrB,KAAK0uJ,WAGb5+H,EAAWxiB,EAAK3B,QAAO,SAAS04E,GAClC,OAAOA,aAAerkF,KAAKiN,cAC1BjN,MACHsN,EAAOA,EAAK3B,QAAO,SAAS04E,GAC1B,QAASA,aAAerkF,KAAKiN,eAC5BjN,MAEqB,IAApB8vB,EAASrtB,SACXqjF,EAA0B,OAAnBx6D,EAAMwE,UACbxE,EAAMwE,SAAWA,EAGjBA,EAAS2H,SAAQ,SAASnpB,GACxBA,EAAMogJ,WAAW5gJ,OAAS9N,OACzBA,OAEe,IAAhBsN,EAAK7K,SACPqjF,EAAsB,OAAfx6D,EAAMhe,MACbge,EAAMhe,KAAOA,EACbge,EAAM2sJ,YAAc3qK,EAAKtI,KAAI,SAASq/E,GACpC,GAAmB,iBAARA,GAAoBA,EAAIp3E,cAAgBnM,OACjD,OAAOujF,EAET,IAAI+E,EAAM,GAOV,OANAtoF,OAAOyyB,KAAK8wD,GAAK5sD,SAAQ,SAAS91B,GAC5BA,IAAc,EAANA,KACVA,GAAO,GACT,IAAIN,EAAQgjF,EAAI1iF,GAChBynF,EAAI/nF,GAASM,KAERynF,OArHG,CACd,WAAY,aAAc,OAC1B,aAAc,eAAgB,cAC9B,cAAe,aAAc,cAAe,cAE5C,mBAAoB,aAAc,eAAgB,cAClD,cAAe,aAAc,eAwHrB3xD,SAAQ,SAASo3F,GACzB3lE,EAAKlnD,UAAU6sH,GAAU,WACvB,IAAIvjG,EAAQtrB,KAAK0uJ,WACjB,MAAM,IAAIriJ,MAAMwiH,EAAS,kCAAoCvjG,EAAMm+E,SAQvEuuE,EAAKvgJ,SAAQ,SAASy5F,GACpBhoE,EAAKlnD,UAAUkvH,GAAO,WACpB,IAAI5lG,EAAQtrB,KAAK0uJ,WACbphJ,EAAO7J,MAAMzB,UAAU+C,MAAMxE,KAAK6E,WAOtC,OALA0gF,EAAqB,OAAdx6D,EAAM4lG,KACb5lG,EAAM4lG,IAAMA,EAEZlxH,KAAKu4K,SAASjrK,GAEPtN,SAIXkpD,EAAKlnD,UAAUizK,IAAM,SAAaz+C,GAChC1wC,EAAO0wC,GACP,IAAIlrG,EAAQtrB,KAAK0uJ,WAKjB,OAHA5oE,EAAqB,OAAdx6D,EAAM2pJ,KACb3pJ,EAAM2pJ,IAAMz+C,EAELx2H,MAGTkpD,EAAKlnD,UAAU4pD,SAAW,WAKxB,OAJY5rD,KAAK0uJ,WAEX9iG,UAAW,EAEV5rD,MAGTkpD,EAAKlnD,UAAUw2K,IAAM,SAAazyF,GAChC,IAAIz6D,EAAQtrB,KAAK0uJ,WAMjB,OAJA5oE,EAA4B,OAArBx6D,EAAe,SACtBA,EAAe,QAAIy6D,EACnBz6D,EAAMsgC,UAAW,EAEV5rD,MAGTkpD,EAAKlnD,UAAUwzK,SAAW,SAAkB7uF,GAC1C,IAAIr7D,EAAQtrB,KAAK0uJ,WAKjB,OAHA5oE,EAA0B,OAAnBx6D,EAAMkqJ,UAAwC,OAAnBlqJ,EAAMsnC,UACxCtnC,EAAMkqJ,SAAW7uF,EAEV3mF,MAGTkpD,EAAKlnD,UAAU4wD,SAAW,SAAkB+zB,GAC1C,IAAIr7D,EAAQtrB,KAAK0uJ,WAKjB,OAHA5oE,EAA0B,OAAnBx6D,EAAMkqJ,UAAwC,OAAnBlqJ,EAAMsnC,UACxCtnC,EAAMsnC,SAAW+zB,EAEV3mF,MAGTkpD,EAAKlnD,UAAUq6F,IAAM,WACnB,IAAI/wE,EAAQtrB,KAAK0uJ,WACbphJ,EAAO7J,MAAMzB,UAAU+C,MAAMxE,KAAK6E,WAOtC,OALAkmB,EAAM+wE,KAAM,EAEQ,IAAhB/uF,EAAK7K,QACPzC,KAAKu4K,SAASjrK,GAETtN,MAGTkpD,EAAKlnD,UAAUL,IAAM,SAAa82K,GAChC,IAAIntJ,EAAQtrB,KAAK0uJ,WAKjB,OAHA5oE,EAAqB,OAAdx6D,EAAM3pB,KACb2pB,EAAM3pB,IAAM82K,EAELz4K,MAGTkpD,EAAKlnD,UAAU8pJ,IAAM,WAKnB,OAJY9rJ,KAAK0uJ,WAEX5C,KAAM,EAEL9rJ,MAGTkpD,EAAKlnD,UAAU0zK,OAAS,SAAgBr5E,GACtC,IAAI/wE,EAAQtrB,KAAK0uJ,WAQjB,OANA5oE,EAAwB,OAAjBx6D,EAAMoqJ,QACbpqJ,EAAMoqJ,OAASr5E,EACfr8F,KAAKu4K,SAASz3K,OAAOyyB,KAAK8oE,GAAKr3F,KAAI,SAASrD,GAC1C,OAAO06F,EAAI16F,OAGN3B,MAGTkpD,EAAKlnD,UAAUqQ,SAAW,SAAkBmkH,GAC1C,IAAIlrG,EAAQtrB,KAAK0uJ,WAKjB,OAHA5oE,EAAqB,OAAdx6D,EAAM2pJ,KACb3pJ,EAAMjZ,SAAWmkH,EAEVx2H,MAOTkpD,EAAKlnD,UAAU4pJ,QAAU,SAAgBv6H,EAAO+uD,GAC9C,IAAI90D,EAAQtrB,KAAK0uJ,WAGjB,GAAqB,OAAjBpjI,EAAMxd,OACR,OAAOujB,EAAMymJ,WAAWxsJ,EAAMwE,SAAS,GAAG87H,QAAQv6H,EAAO+uD,IAE3D,IAuCIs4F,EAvCA38I,EAASzQ,EAAe,QACxBqtJ,GAAU,EAEVC,EAAU,KAKd,GAJkB,OAAdttJ,EAAM3pB,MACRi3K,EAAUvnJ,EAAMkmJ,SAASjsJ,EAAM3pB,MAG7B2pB,EAAMsgC,SAAU,CAClB,IAAIslE,EAAM,KAQV,GAPuB,OAAnB5lG,EAAMkqJ,SACRtkD,EAAM5lG,EAAMkqJ,SACc,OAAnBlqJ,EAAMsnC,SACbs+D,EAAM5lG,EAAMsnC,SACS,OAAdtnC,EAAM4lG,MACbA,EAAM5lG,EAAM4lG,KAEF,OAARA,GAAiB5lG,EAAMwgI,KAgBzB,GAFA6sB,EAAU34K,KAAK6rJ,SAASx6H,EAAO6/F,EAAK5lG,EAAMwgI,KAEtCz6H,EAAM4iG,QAAQ0kD,GAChB,OAAOA,MAjBqB,CAE9B,IAAIluB,EAAOp5H,EAAMo5H,OACjB,IACuB,OAAjBn/H,EAAMoqJ,OACR11K,KAAK64K,eAAevtJ,EAAM4lG,IAAK7/F,EAAO+uD,GAEtCpgF,KAAK84K,cAAcznJ,EAAO+uD,GAC5Bu4F,GAAU,EACV,MAAOvuJ,GACPuuJ,GAAU,EAEZtnJ,EAAMq5H,QAAQD,IAclB,GAHIn/H,EAAM+wE,KAAOs8E,IACfD,EAAUrnJ,EAAMqmJ,eAEdiB,EAAS,CAEX,GAAuB,OAAnBrtJ,EAAMkqJ,SAAmB,CAC3B,IAAIA,EAAWx1K,KAAKgsJ,WAAW36H,EAAO/F,EAAMkqJ,UAC5C,GAAInkJ,EAAM4iG,QAAQuhD,GAChB,OAAOA,EACTnkJ,EAAQmkJ,EAGV,IAAIvwK,EAAQosB,EAAMroB,OAGlB,GAAkB,OAAdsiB,EAAM2pJ,KAAiC,OAAjB3pJ,EAAMoqJ,OAAiB,CAC/C,GAAIpqJ,EAAMwgI,IACJrB,EAAOp5H,EAAMo5H,OACnB,IAAIW,EAAOprJ,KAAKgsJ,WACd36H,EACmB,OAAnB/F,EAAMsnC,SAAoBtnC,EAAMsnC,SAAWtnC,EAAM4lG,IACjD5lG,EAAMwgI,KAER,GAAIz6H,EAAM4iG,QAAQm3B,GAChB,OAAOA,EAEL9/H,EAAMwgI,IACR/vH,EAAS1K,EAAMy5H,IAAIL,GAEnBp5H,EAAQ+5H,EAiBZ,GAdIhrE,GAAWA,EAAQ24F,OAAuB,OAAdztJ,EAAM4lG,KACpC9wC,EAAQ24F,MAAM1nJ,EAAM7mB,OAAQvF,EAAOosB,EAAM5uB,OAAQ,UAE/C29E,GAAWA,EAAQ24F,OAAuB,OAAdztJ,EAAM4lG,KACpC9wC,EAAQ24F,MAAM1nJ,EAAM7mB,OAAQ6mB,EAAMroB,OAAQqoB,EAAM5uB,OAAQ,WAIxDs5B,EADEzQ,EAAMwgI,IACC/vH,EACe,OAAjBzQ,EAAMoqJ,OACJ11K,KAAK64K,eAAevtJ,EAAM4lG,IAAK7/F,EAAO+uD,GAEtCpgF,KAAK84K,cAAcznJ,EAAO+uD,GAEjC/uD,EAAM4iG,QAAQl4F,GAChB,OAAOA,EAYT,GATKzQ,EAAMwgI,KAAwB,OAAjBxgI,EAAMoqJ,QAAsC,OAAnBpqJ,EAAMwE,UAC/CxE,EAAMwE,SAAS2H,SAAQ,SAAwBnpB,GAG7CA,EAAMs9I,QAAQv6H,EAAO+uD,MAKrB90D,EAAMjZ,WAA2B,WAAdiZ,EAAM4lG,KAAkC,WAAd5lG,EAAM4lG,KAAmB,CACxE,IAAInqH,EAAO,IAAIouH,EAAcp5F,GAC7BA,EAAS/7B,KAAKg5K,QAAQ1tJ,EAAMjZ,SAAUgf,EAAMw5H,eAAexuD,KACtDuvD,QAAQ7kJ,EAAMq5E,IAcvB,OATI90D,EAAM+wE,KAAOs8E,IACf58I,EAAS1K,EAAMsmJ,YAAYe,IAGX,OAAdptJ,EAAM3pB,KAA4B,OAAXo6B,IAA+B,IAAZ48I,EAEzB,OAAZC,GACPvnJ,EAAMmmJ,QAAQoB,GAFdvnJ,EAAMomJ,SAASmB,EAASttJ,EAAM3pB,IAAKo6B,GAI9BA,GAGTmtB,EAAKlnD,UAAU62K,eAAiB,SAAuB3nD,EAAK7/F,EAAO+uD,GACjE,IAAI90D,EAAQtrB,KAAK0uJ,WAEjB,MAAY,QAARx9B,GAAyB,QAARA,EACZ,KACG,UAARA,GAA2B,UAARA,EACdlxH,KAAKksJ,YAAY76H,EAAO6/F,EAAK5lG,EAAMhe,KAAK,GAAI8yE,GAC5C,OAAOh0E,KAAK8kH,GACZlxH,KAAKosJ,WAAW/6H,EAAO6/F,EAAK9wC,GACpB,UAAR8wC,GAAmB5lG,EAAMhe,KACzBtN,KAAK0sJ,aAAar7H,EAAO/F,EAAMhe,KAAK,GAAIge,EAAMhe,KAAK,GAAI8yE,GAC/C,UAAR8wC,EACAlxH,KAAK0sJ,aAAar7H,EAAO,KAAM,KAAM+uD,GAC7B,YAAR8wC,GAA6B,YAARA,EACrBlxH,KAAK8sJ,YAAYz7H,EAAO6/F,EAAK9wC,GACrB,UAAR8wC,EACAlxH,KAAKitJ,YAAY57H,EAAO+uD,GAChB,SAAR8wC,EACAlxH,KAAKktJ,YAAY77H,EAAO+uD,GAChB,YAAR8wC,EACAlxH,KAAKosJ,WAAW/6H,EAAO6/F,EAAK9wC,GACpB,QAAR8wC,GAAyB,SAARA,EACjBlxH,KAAKmtJ,WAAW97H,EAAO/F,EAAMhe,MAAQge,EAAMhe,KAAK,GAAI8yE,GAE3C,OAAd90D,EAAM2pJ,IACDj1K,KAAKg5K,QAAQ1tJ,EAAM2pJ,IAAK5jJ,EAAMw5H,eAAexuD,KAC/CuvD,QAAQv6H,EAAO+uD,GAEb/uD,EAAMlrB,MAAM,gBAAkB+qH,IAIzChoE,EAAKlnD,UAAUg3K,QAAU,SAAiB9tB,EAAQ7uD,GAEhD,IAAI/wE,EAAQtrB,KAAK0uJ,WASjB,OAPApjI,EAAM4sJ,WAAal4K,KAAKotJ,KAAKlC,EAAQ7uD,GACrCvW,EAA8C,OAAvCx6D,EAAM4sJ,WAAWxpB,WAAW5gJ,QACnCwd,EAAM4sJ,WAAa5sJ,EAAM4sJ,WAAWxpB,WAAW5+H,SAAS,GACpDxE,EAAMsnC,WAAatnC,EAAM4sJ,WAAWxpB,WAAW97F,WACjDtnC,EAAM4sJ,WAAa5sJ,EAAM4sJ,WAAWrkK,QACpCyX,EAAM4sJ,WAAWxpB,WAAW97F,SAAWtnC,EAAMsnC,UAExCtnC,EAAM4sJ,YAGfhvH,EAAKlnD,UAAU82K,cAAgB,SAAsBznJ,EAAO+uD,GAC1D,IAAI90D,EAAQtrB,KAAK0uJ,WACb3yH,EAAS,KACTrlB,GAAQ,EAmBZ,OAjBA5V,OAAOyyB,KAAKjI,EAAMoqJ,QAAQ/mE,MAAK,SAAShtG,GACtC,IAAI8oJ,EAAOp5H,EAAMo5H,OACb97I,EAAO2c,EAAMoqJ,OAAO/zK,GACxB,IACE,IAAIN,EAAQsN,EAAKi9I,QAAQv6H,EAAO+uD,GAChC,GAAI/uD,EAAM4iG,QAAQ5yH,GAChB,OAAO,EAET06B,EAAS,CAAElvB,KAAMlL,EAAKN,MAAOA,GAC7BqV,GAAQ,EACR,MAAO0T,GAEP,OADAiH,EAAMq5H,QAAQD,IACP,EAET,OAAO,IACNzqJ,MAEE0W,EAGEqlB,EAFE1K,EAAMlrB,MAAM,uBASvB+iD,EAAKlnD,UAAU6rJ,qBAAuB,SAA6B9mJ,GACjE,OAAO,IAAIquH,EAAcruH,EAAM/G,KAAKwqJ,WAGtCthG,EAAKlnD,UAAU06H,QAAU,SAAgB31H,EAAMyjJ,EAAU18I,GACvD,IAAIwd,EAAQtrB,KAAK0uJ,WACjB,GAAyB,OAArBpjI,EAAe,SAAcA,EAAe,UAAMvkB,EAAtD,CAGA,IAAIg1B,EAAS/7B,KAAK4uJ,aAAa7nJ,EAAMyjJ,EAAU18I,GAC/C,QAAesiB,IAAX2L,IAGA/7B,KAAKwuJ,aAAazyH,EAAQyuH,EAAU18I,GAGxC,OAAOiuB,IAGTmtB,EAAKlnD,UAAU4sJ,aAAe,SAAgB7nJ,EAAMyjJ,EAAU18I,GAC5D,IAAIwd,EAAQtrB,KAAK0uJ,WAGjB,GAAqB,OAAjBpjI,EAAMxd,OACR,OAAOwd,EAAMwE,SAAS,GAAG4sG,QAAQ31H,EAAMyjJ,GAAY,IAAIt1B,GAEzD,IAAIn5F,EAAS,KAMb,GAHA/7B,KAAKwqJ,SAAWA,EAGZl/H,EAAMsgC,eAAqBx7B,IAATrpB,EAAoB,CACxC,GAAyB,OAArBukB,EAAe,QAGjB,OAFAvkB,EAAOukB,EAAe,QAM1B,IAAImrG,EAAU,KACV+0B,GAAY,EAChB,GAAIlgI,EAAMwgI,IAER/vH,EAAS/7B,KAAK6tJ,qBAAqB9mJ,QAC9B,GAAIukB,EAAMoqJ,OACf35I,EAAS/7B,KAAKi5K,cAAclyK,EAAMyjJ,QAC7B,GAAIl/H,EAAMjZ,SACfokH,EAAUz2H,KAAKg5K,QAAQ1tJ,EAAMjZ,SAAUvE,GAAQ4uH,QAAQ31H,EAAMyjJ,GAC7DgB,GAAY,OACP,GAAIlgI,EAAMwE,SACf2mG,EAAUnrG,EAAMwE,SAAS9qB,KAAI,SAASsJ,GACpC,GAA6B,UAAzBA,EAAMogJ,WAAWx9B,IACnB,OAAO5iH,EAAMouH,QAAQ,KAAM8tB,EAAUzjJ,GAEvC,GAA6B,OAAzBuH,EAAMogJ,WAAW/sJ,IACnB,OAAO6oJ,EAASrkJ,MAAM,2BACxB,IAAIyyK,EAAUpuB,EAAS+sB,SAASjpK,EAAMogJ,WAAW/sJ,KAEjD,GAAoB,iBAAToF,EACT,OAAOyjJ,EAASrkJ,MAAM,2CAExB,IAAIijF,EAAM96E,EAAMouH,QAAQ31H,EAAKuH,EAAMogJ,WAAW/sJ,KAAM6oJ,EAAUzjJ,GAG9D,OAFAyjJ,EAASitB,SAASmB,GAEXxvF,IACNppF,MAAM2L,QAAO,SAAS2C,GACvB,OAAOA,KAETmoH,EAAUz2H,KAAK6tJ,qBAAqBp3B,QAEpC,GAAkB,UAAdnrG,EAAM4lG,KAAiC,UAAd5lG,EAAM4lG,IAAiB,CAElD,IAAM5lG,EAAMhe,MAA8B,IAAtBge,EAAMhe,KAAK7K,OAC7B,OAAO+nJ,EAASrkJ,MAAM,uBAAyBmlB,EAAM4lG,KAEvD,IAAKztH,MAAM2D,QAAQL,GACjB,OAAOyjJ,EAASrkJ,MAAM,sCAExB,IAAImI,EAAQtO,KAAK6T,QACjBvF,EAAMogJ,WAAW97F,SAAW,KAC5B6jE,EAAUz2H,KAAK6tJ,qBAAqB9mJ,EAAK/B,KAAI,SAASwxH,GACpD,IAAIlrG,EAAQtrB,KAAK0uJ,WAEjB,OAAO1uJ,KAAKg5K,QAAQ1tJ,EAAMhe,KAAK,GAAIvG,GAAM21H,QAAQlG,EAAMg0B,KACtDl8I,SACoB,OAAdgd,EAAM2pJ,IACfl5I,EAAS/7B,KAAKg5K,QAAQ1tJ,EAAM2pJ,IAAKnnK,GAAQ4uH,QAAQ31H,EAAMyjJ,IAEvD/zB,EAAUz2H,KAAKk5K,iBAAiB5tJ,EAAM4lG,IAAKnqH,GAC3CykJ,GAAY,GAMhB,IAAKlgI,EAAMwgI,KAAwB,OAAjBxgI,EAAMoqJ,OAAiB,CACvC,IAAIxkD,EAAyB,OAAnB5lG,EAAMsnC,SAAoBtnC,EAAMsnC,SAAWtnC,EAAM4lG,IACvDo6B,EAAyB,OAAnBhgI,EAAMsnC,SAAoB,YAAc,UAEtC,OAARs+D,EACgB,OAAd5lG,EAAM2pJ,KACRzqB,EAASrkJ,MAAM,wCAEC,OAAdmlB,EAAM2pJ,MACRl5I,EAAS/7B,KAAKutJ,iBAAiBr8B,EAAKs6B,EAAWF,EAAK70B,IAQ1D,OAHuB,OAAnBnrG,EAAMkqJ,WACRz5I,EAAS/7B,KAAKutJ,iBAAiBjiI,EAAMkqJ,UAAU,EAAO,UAAWz5I,IAE5DA,GAGTmtB,EAAKlnD,UAAUi3K,cAAgB,SAAsBlyK,EAAMyjJ,GACzD,IAAIl/H,EAAQtrB,KAAK0uJ,WAEb//I,EAAO2c,EAAMoqJ,OAAO3uK,EAAK8F,MAO7B,OANK8B,GACHm3E,GACI,EACA/+E,EAAK8F,KAAO,iBACRu1B,KAAKC,UAAUvhC,OAAOyyB,KAAKjI,EAAMoqJ,UAEpC/mK,EAAK+tH,QAAQ31H,EAAK1F,MAAOmpJ,IAGlCthG,EAAKlnD,UAAUk3K,iBAAmB,SAAyBhoD,EAAKnqH,GAC9D,IAAIukB,EAAQtrB,KAAK0uJ,WAEjB,GAAI,OAAOtiJ,KAAK8kH,GACd,OAAOlxH,KAAK+tJ,WAAWhnJ,EAAMmqH,GAC1B,GAAY,UAARA,GAAmB5lG,EAAMhe,KAChC,OAAOtN,KAAKguJ,aAAajnJ,EAAMukB,EAAM2sJ,YAAY,GAAI3sJ,EAAMhe,KAAK,IAC7D,GAAY,UAAR4jH,EACP,OAAOlxH,KAAKguJ,aAAajnJ,EAAM,KAAM,MAClC,GAAY,YAARmqH,GAA6B,YAARA,EAC5B,OAAOlxH,KAAKkuJ,YAAYnnJ,EAAMmqH,GAC3B,GAAY,UAARA,EACP,OAAOlxH,KAAKmuJ,cACT,GAAY,QAARj9B,GAAyB,SAARA,EACxB,OAAOlxH,KAAKouJ,WAAWrnJ,EAAMukB,EAAMhe,MAAQge,EAAM2sJ,YAAY,IAC1D,GAAY,SAAR/mD,EACP,OAAOlxH,KAAKsuJ,YAAYvnJ,GACrB,GAAY,YAARmqH,EACP,OAAOlxH,KAAK+tJ,WAAWhnJ,EAAMmqH,GAE7B,MAAM,IAAI7kH,MAAM,oBAAsB6kH,IAG1ChoE,EAAKlnD,UAAUuqJ,UAAY,SAAkBhtE,GAC3C,MAAO,YAAYnzE,KAAKmzE,IAG1Br2B,EAAKlnD,UAAUyqJ,YAAc,SAAoBltE,GAC/C,MAAO,oCAAoCnzE,KAAKmzE,K,gBCxnBlD,IAAIw1C,EAAY,EAAQ,KAExBp1H,EAAQ4rJ,SAAW,CACjB4tB,EAAG,YACHx7F,EAAG,cACH1F,EAAG,UACHuF,EAAG,WAEL79E,EAAQguJ,eAAiB54B,EAAUg2B,SAASprJ,EAAQ4rJ,UAEpD5rJ,EAAQuxH,IAAM,CACZioD,EAAM,MACN,EAAM,OACN,EAAM,MACN,EAAM,SACN,EAAM,SACN,EAAM,QACN,EAAM,QACN,EAAM,UACN,EAAM,WACN,EAAM,OACN,GAAM,OACN,GAAM,QACN,GAAM,UACN,GAAM,cACN,GAAM,MACN,GAAM,MACN,GAAM,SACN,GAAM,WACN,GAAM,SACN,GAAM,WACN,GAAM,SACN,GAAM,UACN,GAAM,UACN,GAAM,WACN,GAAM,YACN,GAAM,SACN,GAAM,SACN,GAAM,UACN,GAAM,UAERx5K,EAAQ+tJ,UAAY34B,EAAUg2B,SAASprJ,EAAQuxH,M,gBCzC/C,IAAI8D,EAAWr1H,EAEfq1H,EAASg2B,IAAM,EAAQ,KACvBh2B,EAASokD,IAAM,EAAQ,M,gBCHvB,IAAIpzF,EAAW,EAAQ,GACnB/B,EAAS,EAAQ,GAAUA,OAE3BgnE,EAAa,EAAQ,KAEzB,SAASouB,EAAWnuB,GAClBD,EAAW1qJ,KAAKP,KAAMkrJ,GACtBlrJ,KAAKypG,IAAM,MAEbzjB,EAASqzF,EAAYpuB,GACrBrrJ,EAAOD,QAAU05K,EAEjBA,EAAWr3K,UAAU47H,OAAS,SAAgB72H,EAAMq5E,GAQlD,IAPA,IAAI3nC,EAAQ1xC,EAAKwd,WAAW5X,MAAM,YAE9B64F,EAAQplB,EAAQolB,MAAM12D,cAEtBf,EAAK,kCACL9oC,GAAS,EACTghB,GAAO,EACF7lB,EAAI,EAAGA,EAAIq4C,EAAMh2C,OAAQrC,IAAK,CACrC,IAAIsW,EAAQ+hC,EAAMr4C,GAAGsW,MAAMq3B,GAC3B,GAAc,OAAVr3B,GAGAA,EAAM,KAAO8uF,EAAjB,CAGA,IAAe,IAAXvgG,EAIG,CACL,GAAiB,QAAbyR,EAAM,GACR,MACFuP,EAAM7lB,EACN,MAPA,GAAiB,UAAbsW,EAAM,GACR,MACFzR,EAAQ7E,GAQZ,IAAe,IAAX6E,IAAyB,IAATghB,EAClB,MAAM,IAAI5Z,MAAM,8BAAgCm5F,GAElD,IAAIlK,EAAS7iD,EAAM1zC,MAAME,EAAQ,EAAGghB,GAAK9T,KAAK,IAE9CmpF,EAAOp3D,QAAQ,oBAAqB,IAEpC,IAAI7S,EAAQ,IAAI4yD,EAAOqX,EAAQ,UAC/B,OAAO2vD,EAAWjpJ,UAAU47H,OAAOr9H,KAAKP,KAAMqxB,EAAO+uD,K,gBC/CvD,IAAI60C,EAAWt1H,EAEfs1H,EAAS+1B,IAAM,EAAQ,KACvB/1B,EAASmkD,IAAM,EAAQ,M,gBCHvB,IAAIpzF,EAAW,EAAQ,GAEnBsnE,EAAa,EAAQ,KAEzB,SAASgsB,EAAWpuB,GAClBoC,EAAW/sJ,KAAKP,KAAMkrJ,GACtBlrJ,KAAKypG,IAAM,MAEbzjB,EAASszF,EAAYhsB,GACrB1tJ,EAAOD,QAAU25K,EAEjBA,EAAWt3K,UAAUslG,OAAS,SAAgBvgG,EAAMq5E,GAKlD,IAJA,IAEIl+E,EAFMorJ,EAAWtrJ,UAAUslG,OAAO/mG,KAAKP,KAAM+G,GAErCwd,SAAS,UACjBgsB,EAAM,CAAE,cAAgB6vC,EAAQolB,MAAQ,SACnCplG,EAAI,EAAGA,EAAI8B,EAAEO,OAAQrC,GAAK,GACjCmwC,EAAI9oC,KAAKvF,EAAE6C,MAAM3E,EAAGA,EAAI,KAE1B,OADAmwC,EAAI9oC,KAAK,YAAc24E,EAAQolB,MAAQ,SAChCj1D,EAAIp+B,KAAK,Q,6BCdlB,IAAIonK,EAAM,EAAQ,IAEdC,EAAOD,EAAI15K,OAAO,QAAQ,WAC5BG,KAAK01K,OAAO,CACV+D,QAASz5K,KAAK05K,UACdC,YAAa35K,KAAK45K,eAIlBC,EAAqBN,EAAI15K,OAAO,sBAAsB,WACxDG,KAAK+0K,MAAM14E,IACTr8F,KAAK2B,IAAI,QAAQssJ,QACjBjuJ,KAAK2B,IAAI,SAASmqJ,UAIlBopB,EAAsBqE,EAAI15K,OAAO,uBAAuB,WAC1DG,KAAK+0K,MAAM14E,IACTr8F,KAAK2B,IAAI,aAAassJ,QACtBjuJ,KAAK2B,IAAI,cAAciqD,WACvB5rD,KAAK2B,IAAI,SAASssJ,QAAQriG,eAI1BkuH,EAAuBP,EAAI15K,OAAO,wBAAwB,WAC5DG,KAAK+0K,MAAM14E,IACTr8F,KAAK2B,IAAI,aAAaszK,IAAIC,GAC1Bl1K,KAAK2B,IAAI,oBAAoBwzK,aAI7B4E,EAA4BR,EAAI15K,OAAO,6BAA6B,WACtEG,KAAKg6K,MAAMH,MAGTI,EAAcV,EAAI15K,OAAO,eAAe,WAC1CG,KAAKk6K,MAAMH,MAGTI,EAAOZ,EAAI15K,OAAO,QAAQ,WAC5BG,KAAK01K,OAAO,CACV0E,YAAap6K,KAAKi1K,IAAIgF,QAItBI,EAAWd,EAAI15K,OAAO,YAAY,WACpCG,KAAK+0K,MAAM14E,IACTr8F,KAAK2B,IAAI,aAAaszK,IAAIuE,GAC1Bx5K,KAAK2B,IAAI,YAAYszK,IAAIuE,OAIzBc,EAAYf,EAAI15K,OAAO,aAAa,WACtCG,KAAK+0K,MAAM14E,IACTr8F,KAAK2B,IAAI,UAAUssJ,QACnBjuJ,KAAK2B,IAAI,YAAY44K,OAAO/B,KAAI,GAChCx4K,KAAK2B,IAAI,aAAa2zK,aAItBkF,EAAiBjB,EAAI15K,OAAO,kBAAkB,WAChDG,KAAK+0K,MAAM14E,IACTr8F,KAAK2B,IAAI,WAAW6zK,SAAS,GAAGR,MAAMppH,WACtC5rD,KAAK2B,IAAI,gBAAgBqzK,MACzBh1K,KAAK2B,IAAI,aAAaszK,IAAIC,GAC1Bl1K,KAAK2B,IAAI,UAAUszK,IAAIkF,GACvBn6K,KAAK2B,IAAI,YAAYszK,IAAIoF,GACzBr6K,KAAK2B,IAAI,WAAWszK,IAAIkF,GACxBn6K,KAAK2B,IAAI,wBAAwBszK,IAAI6E,GACrC95K,KAAK2B,IAAI,kBAAkBixD,SAAS,GAAGuiH,SAASvpH,WAChD5rD,KAAK2B,IAAI,mBAAmBixD,SAAS,GAAGuiH,SAASvpH,WACjD5rD,KAAK2B,IAAI,cAAc6zK,SAAS,GAAG0E,MAAMI,GAAW1uH,eAIpD6uH,EAAkBlB,EAAI15K,OAAO,mBAAmB,WAClDG,KAAK+0K,MAAM14E,IACTr8F,KAAK2B,IAAI,kBAAkBszK,IAAIuF,GAC/Bx6K,KAAK2B,IAAI,sBAAsBszK,IAAIC,GACnCl1K,KAAK2B,IAAI,kBAAkBwzK,aAI/Bv1K,EAAOD,QAAU86K,G,mhBCvFjB,IAAIC,EAAW,2HACXC,EAAa,8CACbC,EAAY,oFACZC,EAAM,EAAQ,IACdz9C,EAAU,EAAQ,KAClBn5C,EAAS,EAAQ,GAAeA,OACpCrkF,EAAOD,QAAU,SAAUm7K,EAAMphD,GAC/B,IAEIqhD,EAFAp5K,EAAMm5K,EAAKv2J,WACX7N,EAAQ/U,EAAI+U,MAAMgkK,GAEtB,GAAKhkK,EAGE,CACL,IAAI8sJ,EAAQ,MAAQ9sJ,EAAM,GACtBqjH,EAAK91C,EAAO9oC,KAAKzkC,EAAM,GAAI,OAC3BkoH,EAAa36C,EAAO9oC,KAAKzkC,EAAM,GAAGwtB,QAAQ,UAAW,IAAK,UAC1D82I,EAAYH,EAAInhD,EAAUK,EAAGh1H,MAAM,EAAG,GAAI6e,SAASlN,EAAM,GAAI,KAAK/U,IAClE4uC,EAAM,GACNouF,EAASvB,EAAQ2B,iBAAiBykC,EAAOwX,EAAWjhD,GACxDxpF,EAAI9oC,KAAKk3H,EAAO/wH,OAAOgxH,IACvBruF,EAAI9oC,KAAKk3H,EAAOxR,SAChB4tD,EAAY92F,EAAOj3E,OAAOujC,OAZhB,CACV,IAAI0qI,EAASt5K,EAAI+U,MAAMkkK,GACvBG,EAAY,IAAI92F,EAAOg3F,EAAO,GAAG/2I,QAAQ,UAAW,IAAK,UAa3D,MAAO,CACLgtF,IAFQvvH,EAAI+U,MAAMikK,GAAY,GAG9B5zK,KAAMg0K,K,iBC5BV,YACA,IAAI90F,EAAK,EAAQ,GACb+hF,EAAK,EAAQ,KAAYh2B,GACzB1U,EAAY,EAAQ,IACpByU,EAAS,EAAQ,KAyErB,SAASmpC,EAAY74K,EAAGwlB,GACtB,GAAIxlB,EAAE6yF,KAAK,IAAM,EAAG,MAAM,IAAI7oF,MAAM,eACpC,GAAIhK,EAAEukF,IAAI/+D,IAAMA,EAAG,MAAM,IAAIxb,MAAM,eAGrCzM,EAAOD,QA5EP,SAAiBooK,EAAKvoF,EAAM79E,EAAKgnK,EAAUz3C,GACzC,IAAIk1C,EAAM9oC,EAAU37H,GACpB,GAAiB,OAAbykK,EAAIv5J,KAAe,CAErB,GAAiB,UAAb87J,GAAqC,cAAbA,EAA0B,MAAM,IAAIt8J,MAAM,yBACtE,OAmCJ,SAAmB07J,EAAKvoF,EAAM4mF,GAC5B,IAAIwC,EAAU72B,EAAOq0B,EAAIr/J,KAAKi3H,UAAU93D,MAAM/zD,KAAK,MACnD,IAAKy2J,EAAS,MAAM,IAAIv8J,MAAM,iBAAmB+5J,EAAIr/J,KAAKi3H,UAAU93D,MAAM/zD,KAAK,MAE/E,IAAI+zD,EAAQ,IAAI8hG,EAAGY,GACfuS,EAAS/U,EAAIr/J,KAAKo3H,kBAAkBp3H,KAExC,OAAOm/D,EAAMwhG,OAAOloF,EAAMuoF,EAAKoT,GA1CtBC,CAASrT,EAAKvoF,EAAM4mF,GACtB,GAAiB,QAAbA,EAAIv5J,KAAgB,CAC7B,GAAiB,QAAb87J,EAAoB,MAAM,IAAIt8J,MAAM,yBACxC,OA0CJ,SAAoB07J,EAAKvoF,EAAM4mF,GAC7B,IAAIlkK,EAAIkkK,EAAIr/J,KAAK7E,EACb2lB,EAAIu+I,EAAIr/J,KAAK8gB,EACb5D,EAAImiJ,EAAIr/J,KAAKkd,EACbnb,EAAIs9J,EAAIr/J,KAAKq3H,QACbi9C,EAAW/9C,EAAUkC,UAAU5B,OAAOmqC,EAAK,OAC3C5lK,EAAIk5K,EAASl5K,EACbjB,EAAIm6K,EAASn6K,EACjBg6K,EAAW/4K,EAAG0lB,GACdqzJ,EAAWh6K,EAAG2mB,GACd,IAAIyzJ,EAAQr1F,EAAGoT,KAAKn3F,GAChByvB,EAAIxvB,EAAEgzF,KAAKttE,GAOf,OAAoB,IANZ5D,EAAEgyE,MAAMqlF,GACb/jF,OAAO,IAAItR,EAAGzG,GAAMkH,IAAI/0D,GAAG21D,IAAIz/D,IAC/BwuE,UACA3P,IAAI59E,EAAEmtF,MAAMqlF,GAAO/jF,OAAOr2F,EAAEwlF,IAAI/0D,GAAG21D,IAAIz/D,IAAIwuE,WAC3C/O,IAAIplF,GACJolF,IAAIz/D,GACE++D,IAAI1lF,GA5DJq6K,CAAUxT,EAAKvoF,EAAM4mF,GAE5B,GAAiB,QAAbuC,GAAmC,cAAbA,EAA0B,MAAM,IAAIt8J,MAAM,yBAEtEmzE,EAAOyE,EAAOj3E,OAAO,CAACkkH,EAAK1xC,IAI3B,IAHA,IAAIiB,EAAM2lF,EAAIh1B,QAAQnoD,aAClBvmD,EAAM,CAAE,GACR84I,EAAS,EACNh8F,EAAK/8E,OAASigC,EAAIjgC,OAAS,EAAIg+E,GACpC/9C,EAAIj7B,KAAK,KACT+zK,IAEF94I,EAAIj7B,KAAK,GAET,IADA,IAAIrH,GAAK,IACAA,EAAIo/E,EAAK/8E,QAChBigC,EAAIj7B,KAAK+3E,EAAKp/E,IAEhBsiC,EAAM,IAAIuhD,EAAOvhD,GACjB,IAAIjhB,EAAMwkE,EAAGoT,KAAK+sE,EAAIh1B,SAGtB22B,GAFAA,EAAM,IAAI9hF,EAAG8hF,GAAK9xE,MAAMx0E,IAEd81E,OAAO,IAAItR,EAAGmgF,EAAI/0B,iBAC5B02B,EAAM,IAAI9jF,EAAO8jF,EAAI1xE,UAAUnP,WAC/B,IAAI32C,EAAMirI,EAAS,EAAI,EAAI,EAK3B,IAJA/6F,EAAM97E,KAAKE,IAAIkjK,EAAItlK,OAAQigC,EAAIjgC,QAC3BslK,EAAItlK,SAAWigC,EAAIjgC,SAAQ8tC,EAAM,GAErCnwC,GAAK,IACIA,EAAIqgF,GAAKlwC,GAAOw3H,EAAI3nK,GAAKsiC,EAAItiC,GACtC,OAAe,IAARmwC,K,yCC3CT,kBAAe,EAAQ,KACnB01C,EAAK,EAAQ,GAEjBrmF,EAAOD,QAAU,SAAqBumE,GACpC,OAAO,IAAIu1G,EAAKv1G,IAGlB,IAAIw1G,EAAU,CACZC,UAAW,CACTh7K,KAAM,YACNsoF,WAAY,IAEd2yF,UAAW,CACTj7K,KAAM,OACNsoF,WAAY,IAEd4yF,WAAY,CACVl7K,KAAM,OACNsoF,WAAY,IAEd6yF,WAAY,CACVn7K,KAAM,OACNsoF,WAAY,IAEd8yF,QAAS,CACPp7K,KAAM,UACNsoF,WAAY,IAEd+yF,UAAW,CACTr7K,KAAM,OACNsoF,WAAY,IAEdgzF,UAAW,CACTt7K,KAAM,OACNsoF,WAAY,KAUhB,SAASwyF,EAAMv1G,GACblmE,KAAKk8K,UAAYR,EAAQx1G,GACpBlmE,KAAKk8K,YACRl8K,KAAKk8K,UAAY,CACfv7K,KAAMulE,IAGVlmE,KAAKkmE,MAAQ,IAAI4rE,EAASE,GAAGhyI,KAAKk8K,UAAUv7K,MAC5CX,KAAKuzB,UAAO,EAwDd,SAASuzI,EAAmBplD,EAAIjY,EAAKhpB,GAC9Bh9E,MAAM2D,QAAQs6G,KACjBA,EAAKA,EAAGx6B,WAEV,IAAIvC,EAAM,IAAIV,EAAOy9B,GACrB,GAAIjhC,GAAOkE,EAAIliF,OAASg+E,EAAK,CAC3B,IAAIqH,EAAQ,IAAI7D,EAAOxD,EAAMkE,EAAIliF,QACjCqlF,EAAM35C,KAAK,GACXw2C,EAAMV,EAAOj3E,OAAO,CAAC86E,EAAOnD,IAE9B,OAAK8kB,EAGI9kB,EAAIpgE,SAASklF,GAFb9kB,EAjFX+2F,EAAQhkF,KAAOgkF,EAAQE,UACvBF,EAAQS,KAAOT,EAAQU,UAAYV,EAAQG,WAC3CH,EAAQ/jF,KAAO+jF,EAAQW,UAAYX,EAAQI,WAC3CJ,EAAQY,KAAOZ,EAAQM,UACvBN,EAAQa,KAAOb,EAAQO,UAavBR,EAAKz5K,UAAUilK,aAAe,SAAUx9D,EAAKx/F,GAE3C,OADAjK,KAAKuzB,KAAOvzB,KAAKkmE,MAAM+pG,aAChBjwK,KAAKmnK,aAAa19D,EAAKx/F,IAGhCwxK,EAAKz5K,UAAUolK,cAAgB,SAAUvuH,EAAO2jI,EAAO/yE,GAOrD,OANA+yE,EAAQA,GAAS,OACZv4F,EAAOqY,SAASzjD,KACnBA,EAAQ,IAAIorC,EAAOprC,EAAO2jI,IAIrB1V,EAFQ9mK,KAAKkmE,MAAM6pG,cAAcl3H,GAAOs4H,YAC5BzqF,IAAI1mF,KAAKuzB,KAAKo9I,cAAc/zC,OACjBnzB,EAAKzpG,KAAKk8K,UAAUjzF,aAGpDwyF,EAAKz5K,UAAUmlK,aAAe,SAAU19D,EAAKx/F,GAC3C,IAAItI,EAAM3B,KAAKuzB,KAAK49I,UAAqB,eAAXlnK,GAAyB,GAQvD,MAPe,WAAXA,IACEtI,EAAIA,EAAIc,OAAS,GAAK,EACxBd,EAAI,GAAK,EAETA,EAAI,GAAK,GAGNmlK,EAAkBnlK,EAAK8nG,IAGhCgyE,EAAKz5K,UAAUwlK,cAAgB,SAAU/9D,GACvC,OAAOq9D,EAAkB9mK,KAAKuzB,KAAKo9I,aAAclnE,IAGnDgyE,EAAKz5K,UAAUmkK,aAAe,SAAUC,EAAK38D,GAM3C,OALAA,EAAMA,GAAO,OACRxlB,EAAOqY,SAAS8pE,KACnBA,EAAM,IAAIniF,EAAOmiF,EAAK38D,IAExBzpG,KAAKuzB,KAAK8+I,cAAcjM,GACjBpmK,MAGTy7K,EAAKz5K,UAAUskK,cAAgB,SAAUt1B,EAAMvnC,GAC7CA,EAAMA,GAAO,OACRxlB,EAAOqY,SAAS00C,KACnBA,EAAO,IAAI/sD,EAAO+sD,EAAMvnC,IAG1B,IAAI88D,EAAQ,IAAItgF,EAAG+qD,GAInB,OAHAu1B,EAAQA,EAAMhiJ,SAAS,IACvBvkB,KAAKuzB,KAAOvzB,KAAKkmE,MAAM+pG,aACvBjwK,KAAKuzB,KAAK4+I,eAAe5L,GAClBvmK,Q,wCCzGTL,EAAQk+J,cAAgB,EAAQ,KAChCl+J,EAAQq+J,eAAiB,EAAQ,KAEjCr+J,EAAQm+J,eAAiB,SAAyBn8J,EAAKgjF,GACrD,OAAOhlF,EAAQk+J,cAAcl8J,EAAKgjF,GAAK,IAGzChlF,EAAQo+J,cAAgB,SAAwBp8J,EAAKgjF,GACnD,OAAOhlF,EAAQq+J,eAAer8J,EAAKgjF,GAAK,K,gBCR1C,IAAI24C,EAAY,EAAQ,IACpBwT,EAAc,EAAQ,IACtB+d,EAAa,EAAQ,IACrB4tB,EAAM,EAAQ,KACd1xF,EAAM,EAAQ,KACd9E,EAAK,EAAQ,GACby2F,EAAa,EAAQ,KACrB3rC,EAAM,EAAQ,KACd9sD,EAAS,EAAQ,GAAeA,OAEpCrkF,EAAOD,QAAU,SAAwBg9K,EAAW5/F,EAAKr3E,GACvD,IAAI+qC,EAEFA,EADEksI,EAAUlsI,QACFksI,EAAUlsI,QACX/qC,EACC,EAEA,EAEZ,IACIspJ,EADArtJ,EAAM27H,EAAUq/C,GAEpB,GAAgB,IAAZlsI,EACFu+G,EAkBJ,SAAertJ,EAAKo7E,GAClB,IAAInzE,EAAIjI,EAAIyvI,QAAQnoD,aAChBm2E,EAAOriF,EAAIt6E,OACXm6K,EAAQ/tB,EAAW,QAAQjhJ,OAAOq2E,EAAOM,MAAM,IAAIosC,SACnDoyB,EAAO65B,EAAMn6K,OACbo6K,EAAQ,EAAI95B,EAChB,GAAIqc,EAAOx1J,EAAIizK,EAAQ,EACrB,MAAM,IAAIxwK,MAAM,oBAElB,IAAIywK,EAAK74F,EAAOM,MAAM36E,EAAIw1J,EAAOyd,EAAQ,GACrCE,EAAQnzK,EAAIm5I,EAAO,EACnBgM,EAAOje,EAAYiS,GACnBi6B,EAAWjyF,EAAI9G,EAAOj3E,OAAO,CAAC4vK,EAAOE,EAAI74F,EAAOM,MAAM,EAAG,GAAIxH,GAAMggG,GAAQN,EAAI1tB,EAAMguB,IACrFE,EAAalyF,EAAIgkE,EAAM0tB,EAAIO,EAAUj6B,IACzC,OAAO,IAAI98D,EAAGhC,EAAOj3E,OAAO,CAACi3E,EAAOM,MAAM,GAAI04F,EAAYD,GAAWpzK,IAhCvDszK,CAAKv7K,EAAKo7E,QACjB,GAAgB,IAAZtsC,EACTu+G,EAgCJ,SAAgBrtJ,EAAKo7E,EAAKr3E,GACxB,IAKIo3K,EALA1d,EAAOriF,EAAIt6E,OACXmH,EAAIjI,EAAIyvI,QAAQnoD,aACpB,GAAIm2E,EAAOx1J,EAAI,GACb,MAAM,IAAIyC,MAAM,oBAIhBywK,EADEp3K,EACGu+E,EAAOM,MAAM36E,EAAIw1J,EAAO,EAAG,KAMpC,SAAkB3+E,GAChB,IAIIkG,EAJAp2C,EAAM0zC,EAAOO,YAAY/D,GACzBrgF,EAAI,EACJ49C,EAAQ8yF,EAAkB,EAANrwD,GACpB08F,EAAM,EAEV,KAAO/8K,EAAIqgF,GACL08F,IAAQn/H,EAAMv7C,SAChBu7C,EAAQ8yF,EAAkB,EAANrwD,GACpB08F,EAAM,IAERx2F,EAAM3oC,EAAMm/H,QAEV5sI,EAAInwC,KAAOumF,GAGf,OAAOp2C,EApBA6sI,CAAQxzK,EAAIw1J,EAAO,GAE1B,OAAO,IAAIn5E,EAAGhC,EAAOj3E,OAAO,CAACi3E,EAAO9oC,KAAK,CAAC,EAAGz1C,EAAU,EAAI,IAAKo3K,EAAI74F,EAAOM,MAAM,GAAIxH,GAAMnzE,IA5C7EyzK,CAAM17K,EAAKo7E,EAAKr3E,OACvB,IAAgB,IAAZ+qC,EAMT,MAAM,IAAIpkC,MAAM,mBAJhB,IADA2iJ,EAAY,IAAI/oE,EAAGlJ,IACL6J,IAAIjlF,EAAIyvI,UAAY,EAChC,MAAM,IAAI/kI,MAAM,6BAKpB,OAAI3G,EACKqrI,EAAIie,EAAWrtJ,GAEf+6K,EAAW1tB,EAAWrtJ,K,gBCpCjC,IAAI27H,EAAY,EAAQ,IACpBm/C,EAAM,EAAQ,KACd1xF,EAAM,EAAQ,KACd9E,EAAK,EAAQ,GACb8qD,EAAM,EAAQ,KACd8d,EAAa,EAAQ,IACrB6tB,EAAa,EAAQ,KACrBz4F,EAAS,EAAQ,GAAeA,OAEpCrkF,EAAOD,QAAU,SAAyBw/H,EAAY11B,EAAK/jG,GACzD,IAAI+qC,EAEFA,EADE0uF,EAAW1uF,QACH0uF,EAAW1uF,QACZ/qC,EACC,EAEA,EAGZ,IAKIq3E,EALAp7E,EAAM27H,EAAU6B,GAChBv1H,EAAIjI,EAAIyvI,QAAQnoD,aACpB,GAAIwgB,EAAIhnG,OAASmH,GAAK,IAAIq8E,EAAGwjB,GAAK7iB,IAAIjlF,EAAIyvI,UAAY,EACpD,MAAM,IAAI/kI,MAAM,oBAIhB0wE,EADEr3E,EACIg3K,EAAW,IAAIz2F,EAAGwjB,GAAM9nG,GAExBovI,EAAItnC,EAAK9nG,GAEjB,IAAI27K,EAAUr5F,EAAOM,MAAM36E,EAAImzE,EAAIt6E,QAEnC,GADAs6E,EAAMkH,EAAOj3E,OAAO,CAACswK,EAASvgG,GAAMnzE,GACpB,IAAZ6mC,EACF,OAUJ,SAAe9uC,EAAKo7E,GAClB,IAAInzE,EAAIjI,EAAIyvI,QAAQnoD,aAChB2zF,EAAQ/tB,EAAW,QAAQjhJ,OAAOq2E,EAAOM,MAAM,IAAIosC,SACnDoyB,EAAO65B,EAAMn6K,OACjB,GAAe,IAAXs6E,EAAI,GACN,MAAM,IAAI1wE,MAAM,oBAElB,IAAI4wK,EAAalgG,EAAIh4E,MAAM,EAAGg+I,EAAO,GACjCi6B,EAAWjgG,EAAIh4E,MAAMg+I,EAAO,GAC5BgM,EAAOhkE,EAAIkyF,EAAYR,EAAIO,EAAUj6B,IACrCw6B,EAAKxyF,EAAIiyF,EAAUP,EAAI1tB,EAAMnlJ,EAAIm5I,EAAO,IAC5C,GAoCF,SAAkB3gJ,EAAGC,GACnBD,EAAI6hF,EAAO9oC,KAAK/4C,GAChBC,EAAI4hF,EAAO9oC,KAAK94C,GAChB,IAAIm7K,EAAM,EACN/8F,EAAMr+E,EAAEK,OACRL,EAAEK,SAAWJ,EAAEI,SACjB+6K,IACA/8F,EAAM97E,KAAKE,IAAIzC,EAAEK,OAAQJ,EAAEI,SAE7B,IAAIrC,GAAK,EACT,OAASA,EAAIqgF,GACX+8F,GAAQp7K,EAAEhC,GAAKiC,EAAEjC,GAEnB,OAAOo9K,EAjDHh7K,CAAQo6K,EAAOW,EAAGx4K,MAAM,EAAGg+I,IAC7B,MAAM,IAAI12I,MAAM,oBAElB,IAAIjM,EAAI2iJ,EACR,KAAiB,IAAVw6B,EAAGn9K,IACRA,IAEF,GAAgB,IAAZm9K,EAAGn9K,KACL,MAAM,IAAIiM,MAAM,oBAElB,OAAOkxK,EAAGx4K,MAAM3E,GA/BP88K,CAAKv7K,EAAKo7E,GACZ,GAAgB,IAAZtsC,EACT,OAgCJ,SAAgB9uC,EAAKo7E,EAAKr3E,GACxB,IAAIwzC,EAAK6jC,EAAIh4E,MAAM,EAAG,GAClB3E,EAAI,EACJ2nC,EAAS,EACb,KAAoB,IAAbg1C,EAAI38E,MACT,GAAIA,GAAK28E,EAAIt6E,OAAQ,CACnBslC,IACA,MAGJ,IAAI+0I,EAAK//F,EAAIh4E,MAAM,EAAG3E,EAAI,IAEE,SAAvB84C,EAAG30B,SAAS,SAAsB7e,GAAoC,SAAvBwzC,EAAG30B,SAAS,QAAqB7e,IACnFqiC,IAEE+0I,EAAGr6K,OAAS,GACdslC,IAEF,GAAIA,EACF,MAAM,IAAI17B,MAAM,oBAElB,OAAO0wE,EAAIh4E,MAAM3E,GArDRi9K,CAAM17K,EAAKo7E,EAAKr3E,GAClB,GAAgB,IAAZ+qC,EACT,OAAOssC,EAEP,MAAM,IAAI1wE,MAAM,qB,8BCvCpB,cAEA,SAASoxK,IACP,MAAM,IAAIpxK,MAAM,8GAElB,IAAIqxK,EAAa,EAAQ,GACrBC,EAAc,EAAQ,IACtB15F,EAASy5F,EAAWz5F,OACpB25F,EAAmBF,EAAWliF,WAC9Bo0B,EAASlwB,EAAOkwB,QAAUlwB,EAAOmwB,SACjCguD,EAAal5K,KAAKyB,IAAI,EAAG,IAAM,EACnC,SAAS03K,EAAc90K,EAAQvG,GAC7B,GAAsB,iBAAXuG,GAAuBA,GAAWA,EAC3C,MAAM,IAAI8hB,UAAU,2BAGtB,GAAI9hB,EAAS60K,GAAc70K,EAAS,EAClC,MAAM,IAAI8hB,UAAU,2BAGtB,GAAI9hB,EAAS40K,GAAoB50K,EAASvG,EACxC,MAAM,IAAIk5F,WAAW,uBAIzB,SAASc,EAAY7lF,EAAM5N,EAAQvG,GACjC,GAAoB,iBAATmU,GAAqBA,GAASA,EACvC,MAAM,IAAIkU,UAAU,yBAGtB,GAAIlU,EAAOinK,GAAcjnK,EAAO,EAC9B,MAAM,IAAIkU,UAAU,yBAGtB,GAAIlU,EAAO5N,EAASvG,GAAUmU,EAAOgnK,EACnC,MAAM,IAAIjiF,WAAW,oBA8BzB,SAASoiF,EAAYp5F,EAAK37E,EAAQ4N,EAAMkmC,GACtC,GAAI2mC,EAAQ+W,QAAS,CACnB,IAAIwjF,EAASr5F,EAAIjqD,OACbujJ,EAAO,IAAIriF,WAAWoiF,EAAQh1K,EAAQ4N,GAE1C,OADAg5G,EAAOE,gBAAgBmuD,GACnBnhI,OACF2mC,EAAQ6W,UAAS,WACfx9C,EAAG,KAAM6nC,MAINA,EAET,IAAI7nC,EAYJ,OAFY6gI,EAAY/mK,GAClBtM,KAAKq6E,EAAK37E,GACT27E,EAXLg5F,EAAY/mK,GAAM,SAAUs3G,EAAKptB,GAC/B,GAAIotB,EACF,OAAOpxE,EAAGoxE,GAEZptB,EAAMx2F,KAAKq6E,EAAK37E,GAChB8zC,EAAG,KAAM6nC,MA9CVirC,GAAUA,EAAOE,kBAAqBrsC,EAAQ+W,SACjD76F,EAAQu+J,WAMV,SAAqBv5E,EAAK37E,EAAQ4N,EAAMkmC,GACtC,KAAKmnC,EAAOqY,SAAS3X,IAAUA,aAAe+a,EAAO9D,YACnD,MAAM,IAAI9wE,UAAU,iDAGtB,GAAsB,mBAAX9hB,EACT8zC,EAAK9zC,EACLA,EAAS,EACT4N,EAAO+tE,EAAIliF,YACN,GAAoB,mBAATmU,EAChBkmC,EAAKlmC,EACLA,EAAO+tE,EAAIliF,OAASuG,OACf,GAAkB,mBAAP8zC,EAChB,MAAM,IAAIhyB,UAAU,oCAItB,OAFAgzJ,EAAa90K,EAAQ27E,EAAIliF,QACzBg6F,EAAW7lF,EAAM5N,EAAQ27E,EAAIliF,QACtBs7K,EAAWp5F,EAAK37E,EAAQ4N,EAAMkmC,IAtBrCn9C,EAAQw+J,eAoDV,SAAyBx5E,EAAK37E,EAAQ4N,QACd,IAAX5N,IACTA,EAAS,GAEX,KAAKi7E,EAAOqY,SAAS3X,IAAUA,aAAe+a,EAAO9D,YACnD,MAAM,IAAI9wE,UAAU,iDAGtBgzJ,EAAa90K,EAAQ27E,EAAIliF,aAEZ2tB,IAATxZ,IAAoBA,EAAO+tE,EAAIliF,OAASuG,GAI5C,OAFAyzF,EAAW7lF,EAAM5N,EAAQ27E,EAAIliF,QAEtBs7K,EAAWp5F,EAAK37E,EAAQ4N,MAhE/BjX,EAAQu+J,WAAauf,EACrB99K,EAAQw+J,eAAiBsf,K,uCC3C3B,IAAIz4K,EAAM,CACT,WAAY,IACZ,cAAe,KAIhB,SAASu3J,EAAeC,GACvB,IAAIpxI,EAAKqxI,EAAsBD,GAC/B,OAAOt8J,EAAoBkrB,GAE5B,SAASqxI,EAAsBD,GAC9B,IAAIt8J,EAAoBW,EAAEmE,EAAKw3J,GAAM,CACpC,IAAIpyI,EAAI,IAAI/d,MAAM,uBAAyBmwJ,EAAM,KAEjD,MADApyI,EAAEkyB,KAAO,mBACHlyB,EAEP,OAAOplB,EAAIw3J,GAEZD,EAAehpI,KAAO,WACrB,OAAOzyB,OAAOyyB,KAAKvuB,IAEpBu3J,EAAehsI,QAAUksI,EACzB78J,EAAOD,QAAU48J,EACjBA,EAAenxI,GAAK,K,gBCtBpBxrB,EAAOD,QAAU,CACfmlF,MAAO,EAAQ,KACfE,QAAS,EAAQ,O,gBCHnB,IAAIgrE,EAAY,EAAQ,KAmCxBpwJ,EAAOD,QAJP,SAAe0B,GACb,OAAO2uJ,EAAU3uJ,EA7BM,K,cCSzBzB,EAAOD,QALP,WACEK,KAAKoO,SAAW,GAChBpO,KAAK4W,KAAO,I,gBCTd,IAAIsnK,EAAe,EAAQ,IAMvB9rK,EAHa3O,MAAMzB,UAGCoQ,OA4BxBxS,EAAOD,QAjBP,SAAyBgC,GACvB,IAAIoF,EAAO/G,KAAKoO,SACZiG,EAAQ6pK,EAAan3K,EAAMpF,GAE/B,QAAI0S,EAAQ,KAIRA,GADYtN,EAAKtE,OAAS,EAE5BsE,EAAKO,MAEL8K,EAAO7R,KAAKwG,EAAMsN,EAAO,KAEzBrU,KAAK4W,MACA,K,gBC/BT,IAAIsnK,EAAe,EAAQ,IAkB3Bt+K,EAAOD,QAPP,SAAsBgC,GACpB,IAAIoF,EAAO/G,KAAKoO,SACZiG,EAAQ6pK,EAAan3K,EAAMpF,GAE/B,OAAO0S,EAAQ,OAAI+b,EAAYrpB,EAAKsN,GAAO,K,gBCf7C,IAAI6pK,EAAe,EAAQ,IAe3Bt+K,EAAOD,QAJP,SAAsBgC,GACpB,OAAOu8K,EAAal+K,KAAKoO,SAAUzM,IAAQ,I,gBCZ7C,IAAIu8K,EAAe,EAAQ,IAyB3Bt+K,EAAOD,QAbP,SAAsBgC,EAAKN,GACzB,IAAI0F,EAAO/G,KAAKoO,SACZiG,EAAQ6pK,EAAan3K,EAAMpF,GAQ/B,OANI0S,EAAQ,KACRrU,KAAK4W,KACP7P,EAAKU,KAAK,CAAC9F,EAAKN,KAEhB0F,EAAKsN,GAAO,GAAKhT,EAEZrB,O,gBCtBT,IAAIy/H,EAAY,EAAQ,IAcxB7/H,EAAOD,QALP,WACEK,KAAKoO,SAAW,IAAIqxH,EACpBz/H,KAAK4W,KAAO,I,cCMdhX,EAAOD,QARP,SAAqBgC,GACnB,IAAIoF,EAAO/G,KAAKoO,SACZ2tB,EAASh1B,EAAa,OAAEpF,GAG5B,OADA3B,KAAK4W,KAAO7P,EAAK6P,KACVmlB,I,cCDTn8B,EAAOD,QAJP,SAAkBgC,GAChB,OAAO3B,KAAKoO,SAASnN,IAAIU,K,cCG3B/B,EAAOD,QAJP,SAAkBgC,GAChB,OAAO3B,KAAKoO,SAASitB,IAAI15B,K,gBCV3B,IAAI89H,EAAY,EAAQ,IACpBrkG,EAAM,EAAQ,KACdm7G,EAAW,EAAQ,KA+BvB32I,EAAOD,QAhBP,SAAkBgC,EAAKN,GACrB,IAAI0F,EAAO/G,KAAKoO,SAChB,GAAIrH,aAAgB04H,EAAW,CAC7B,IAAIj8H,EAAQuD,EAAKqH,SACjB,IAAKgtB,GAAQ53B,EAAMf,OAAS07K,IAG1B,OAFA36K,EAAMiE,KAAK,CAAC9F,EAAKN,IACjBrB,KAAK4W,OAAS7P,EAAK6P,KACZ5W,KAET+G,EAAO/G,KAAKoO,SAAW,IAAImoI,EAAS/yI,GAItC,OAFAuD,EAAK+F,IAAInL,EAAKN,GACdrB,KAAK4W,KAAO7P,EAAK6P,KACV5W,O,gBC9BT,IAAIsoG,EAAa,EAAQ,IACrB81E,EAAW,EAAQ,KACnBntD,EAAW,EAAQ,IACnBQ,EAAW,EAAQ,KASnB4sD,EAAe,8BAGftoB,EAAY5zH,SAASngC,UACrB4zH,EAAc90H,OAAOkB,UAGrB2uJ,EAAeoF,EAAUxxI,SAGzBtiB,EAAiB2zH,EAAY3zH,eAG7Bq8K,EAAa5kK,OAAO,IACtBi3I,EAAapwJ,KAAK0B,GAAgBiiC,QAjBjB,sBAiBuC,QACvDA,QAAQ,yDAA0D,SAAW,KAmBhFtkC,EAAOD,QARP,SAAsB0B,GACpB,SAAK4vH,EAAS5vH,IAAU+8K,EAAS/8K,MAGnBinG,EAAWjnG,GAASi9K,EAAaD,GAChCjyK,KAAKqlH,EAASpwH,M,gBC3C/B,IAAIF,EAAS,EAAQ,IAGjBy0H,EAAc90H,OAAOkB,UAGrBC,EAAiB2zH,EAAY3zH,eAO7Bs8K,EAAuB3oD,EAAYrxG,SAGnCorG,EAAiBxuH,EAASA,EAAOC,iBAAcgvB,EA6BnDxwB,EAAOD,QApBP,SAAmB0B,GACjB,IAAIm9K,EAAQv8K,EAAe1B,KAAKc,EAAOsuH,GACnCuB,EAAM7vH,EAAMsuH,GAEhB,IACEtuH,EAAMsuH,QAAkBv/F,EACxB,IAAIquJ,GAAW,EACf,MAAOr0J,IAET,IAAI2R,EAASwiJ,EAAqBh+K,KAAKc,GAQvC,OAPIo9K,IACED,EACFn9K,EAAMsuH,GAAkBuB,SAEjB7vH,EAAMsuH,IAGV5zF,I,cCzCT,IAOIwiJ,EAPcz9K,OAAOkB,UAOcuiB,SAavC3kB,EAAOD,QAJP,SAAwB0B,GACtB,OAAOk9K,EAAqBh+K,KAAKc,K,gBClBnC,IAIMq9K,EAJFC,EAAa,EAAQ,KAGrBC,GACEF,EAAM,SAAS/6J,KAAKg7J,GAAcA,EAAWprJ,MAAQorJ,EAAWprJ,KAAKsrJ,UAAY,KACvE,iBAAmBH,EAAO,GAc1C9+K,EAAOD,QAJP,SAAkB+gI,GAChB,QAASk+C,GAAeA,KAAcl+C,I,gBChBxC,IAGIi+C,EAHO,EAAQ,IAGG,sBAEtB/+K,EAAOD,QAAUg/K,G,cCOjB/+K,EAAOD,QAJP,SAAkBmC,EAAQH,GACxB,OAAiB,MAAVG,OAAiBsuB,EAAYtuB,EAAOH,K,gBCT7C,IAAIquH,EAAO,EAAQ,KACfyP,EAAY,EAAQ,IACpBrkG,EAAM,EAAQ,KAkBlBx7B,EAAOD,QATP,WACEK,KAAK4W,KAAO,EACZ5W,KAAKoO,SAAW,CACd,KAAQ,IAAI4hH,EACZ,IAAO,IAAK50F,GAAOqkG,GACnB,OAAU,IAAIzP,K,gBChBlB,IAAI8uD,EAAY,EAAQ,KACpBC,EAAa,EAAQ,KACrBC,EAAU,EAAQ,KAClBC,EAAU,EAAQ,KAClBC,EAAU,EAAQ,KAStB,SAASlvD,EAAK10F,GACZ,IAAIjnB,GAAS,EACT5R,EAAoB,MAAX64B,EAAkB,EAAIA,EAAQ74B,OAG3C,IADAzC,KAAKu2B,UACIliB,EAAQ5R,GAAQ,CACvB,IAAIq2C,EAAQxd,EAAQjnB,GACpBrU,KAAK8M,IAAIgsC,EAAM,GAAIA,EAAM,KAK7Bk3E,EAAKhuH,UAAUu0B,MAAQuoJ,EACvB9uD,EAAKhuH,UAAkB,OAAI+8K,EAC3B/uD,EAAKhuH,UAAUf,IAAM+9K,EACrBhvD,EAAKhuH,UAAUq5B,IAAM4jJ,EACrBjvD,EAAKhuH,UAAU8K,IAAMoyK,EAErBt/K,EAAOD,QAAUqwH,G,gBC/BjB,IAAIqQ,EAAe,EAAQ,IAc3BzgI,EAAOD,QALP,WACEK,KAAKoO,SAAWiyH,EAAeA,EAAa,MAAQ,GACpDrgI,KAAK4W,KAAO,I,cCKdhX,EAAOD,QANP,SAAoBgC,GAClB,IAAIo6B,EAAS/7B,KAAKq7B,IAAI15B,WAAe3B,KAAKoO,SAASzM,GAEnD,OADA3B,KAAK4W,MAAQmlB,EAAS,EAAI,EACnBA,I,gBCbT,IAAIskG,EAAe,EAAQ,IASvBp+H,EAHcnB,OAAOkB,UAGQC,eAoBjCrC,EAAOD,QATP,SAAiBgC,GACf,IAAIoF,EAAO/G,KAAKoO,SAChB,GAAIiyH,EAAc,CAChB,IAAItkG,EAASh1B,EAAKpF,GAClB,MArBiB,8BAqBVo6B,OAA4B3L,EAAY2L,EAEjD,OAAO95B,EAAe1B,KAAKwG,EAAMpF,GAAOoF,EAAKpF,QAAOyuB,I,gBC1BtD,IAAIiwG,EAAe,EAAQ,IAMvBp+H,EAHcnB,OAAOkB,UAGQC,eAgBjCrC,EAAOD,QALP,SAAiBgC,GACf,IAAIoF,EAAO/G,KAAKoO,SAChB,OAAOiyH,OAA8BjwG,IAAdrpB,EAAKpF,GAAsBM,EAAe1B,KAAKwG,EAAMpF,K,gBCnB9E,IAAI0+H,EAAe,EAAQ,IAsB3BzgI,EAAOD,QAPP,SAAiBgC,EAAKN,GACpB,IAAI0F,EAAO/G,KAAKoO,SAGhB,OAFApO,KAAK4W,MAAQ5W,KAAKq7B,IAAI15B,GAAO,EAAI,EACjCoF,EAAKpF,GAAQ0+H,QAA0BjwG,IAAV/uB,EAfV,4BAekDA,EAC9DrB,O,gBCnBT,IAAIm/K,EAAa,EAAQ,IAiBzBv/K,EAAOD,QANP,SAAwBgC,GACtB,IAAIo6B,EAASojJ,EAAWn/K,KAAM2B,GAAa,OAAEA,GAE7C,OADA3B,KAAK4W,MAAQmlB,EAAS,EAAI,EACnBA,I,cCATn8B,EAAOD,QAPP,SAAmB0B,GACjB,IAAIwL,SAAcxL,EAClB,MAAgB,UAARwL,GAA4B,UAARA,GAA4B,UAARA,GAA4B,WAARA,EACrD,cAAVxL,EACU,OAAVA,I,gBCXP,IAAI89K,EAAa,EAAQ,IAezBv/K,EAAOD,QAJP,SAAqBgC,GACnB,OAAOw9K,EAAWn/K,KAAM2B,GAAKV,IAAIU,K,gBCZnC,IAAIw9K,EAAa,EAAQ,IAezBv/K,EAAOD,QAJP,SAAqBgC,GACnB,OAAOw9K,EAAWn/K,KAAM2B,GAAK05B,IAAI15B,K,gBCZnC,IAAIw9K,EAAa,EAAQ,IAqBzBv/K,EAAOD,QATP,SAAqBgC,EAAKN,GACxB,IAAI0F,EAAOo4K,EAAWn/K,KAAM2B,GACxBiV,EAAO7P,EAAK6P,KAIhB,OAFA7P,EAAK+F,IAAInL,EAAKN,GACdrB,KAAK4W,MAAQ7P,EAAK6P,MAAQA,EAAO,EAAI,EAC9B5W,O,gBClBT,IAAIo/K,EAAa,EAAQ,IACrB7rJ,EAAO,EAAQ,IAenB3zB,EAAOD,QAJP,SAAoBmC,EAAQulB,GAC1B,OAAOvlB,GAAUs9K,EAAW/3J,EAAQkM,EAAKlM,GAASvlB,K,cCMpDlC,EAAOD,QAVP,SAAmBkC,EAAGq/H,GAIpB,IAHA,IAAI7sH,GAAS,EACT0nB,EAASt4B,MAAM5B,KAEVwS,EAAQxS,GACfk6B,EAAO1nB,GAAS6sH,EAAS7sH,GAE3B,OAAO0nB,I,gBChBT,IAAIi1F,EAAa,EAAQ,IACrBkB,EAAe,EAAQ,IAgB3BtyH,EAAOD,QAJP,SAAyB0B,GACvB,OAAO6wH,EAAa7wH,IAVR,sBAUkB2vH,EAAW3vH,K,cCG3CzB,EAAOD,QAJP,WACE,OAAO,I,gBCdT,IAAIqxH,EAAa,EAAQ,IACrBpM,EAAW,EAAQ,KACnBsN,EAAe,EAAQ,IA8BvBmtD,EAAiB,GACrBA,EAZiB,yBAYYA,EAXZ,yBAYjBA,EAXc,sBAWYA,EAVX,uBAWfA,EAVe,uBAUYA,EATZ,uBAUfA,EATsB,8BASYA,EARlB,wBAShBA,EARgB,yBAQY,EAC5BA,EAjCc,sBAiCYA,EAhCX,kBAiCfA,EApBqB,wBAoBYA,EAhCnB,oBAiCdA,EApBkB,qBAoBYA,EAhChB,iBAiCdA,EAhCe,kBAgCYA,EA/Bb,qBAgCdA,EA/Ba,gBA+BYA,EA9BT,mBA+BhBA,EA9BgB,mBA8BYA,EA7BZ,mBA8BhBA,EA7Ba,gBA6BYA,EA5BT,mBA6BhBA,EA5BiB,qBA4BY,EAc7Bz/K,EAAOD,QALP,SAA0B0B,GACxB,OAAO6wH,EAAa7wH,IAClBujH,EAASvjH,EAAMoB,WAAa48K,EAAeruD,EAAW3vH,M,gBCxD1D,IAGIs1I,EAHU,EAAQ,IAGL/V,CAAQ9/H,OAAOyyB,KAAMzyB,QAEtClB,EAAOD,QAAUg3I,G,gBCLjB,IAAIyoC,EAAa,EAAQ,IACrB1uB,EAAS,EAAQ,IAerB9wJ,EAAOD,QAJP,SAAsBmC,EAAQulB,GAC5B,OAAOvlB,GAAUs9K,EAAW/3J,EAAQqpI,EAAOrpI,GAASvlB,K,gBCbtD,IAAImvH,EAAW,EAAQ,IACnBylB,EAAc,EAAQ,IACtB4oC,EAAe,EAAQ,KAMvBr9K,EAHcnB,OAAOkB,UAGQC,eAwBjCrC,EAAOD,QAfP,SAAoBmC,GAClB,IAAKmvH,EAASnvH,GACZ,OAAOw9K,EAAax9K,GAEtB,IAAIy9K,EAAU7oC,EAAY50I,GACtBi6B,EAAS,GAEb,IAAK,IAAIp6B,KAAOG,GACD,eAAPH,IAAyB49K,GAAYt9K,EAAe1B,KAAKuB,EAAQH,KACrEo6B,EAAOt0B,KAAK9F,GAGhB,OAAOo6B,I,cCVTn8B,EAAOD,QAVP,SAAsBmC,GACpB,IAAIi6B,EAAS,GACb,GAAc,MAAVj6B,EACF,IAAK,IAAIH,KAAOb,OAAOgB,GACrBi6B,EAAOt0B,KAAK9F,GAGhB,OAAOo6B,I,gBChBT,IAAIqjJ,EAAa,EAAQ,IACrBroC,EAAa,EAAQ,KAczBn3I,EAAOD,QAJP,SAAqB0nB,EAAQvlB,GAC3B,OAAOs9K,EAAW/3J,EAAQ0vH,EAAW1vH,GAASvlB,K,gBCZhD,IAAIs9K,EAAa,EAAQ,IACrBjuB,EAAe,EAAQ,KAc3BvxJ,EAAOD,QAJP,SAAuB0nB,EAAQvlB,GAC7B,OAAOs9K,EAAW/3J,EAAQ8pI,EAAa9pI,GAASvlB,K,gBCZlD,IAAIsvJ,EAAiB,EAAQ,KACzBD,EAAe,EAAQ,KACvBT,EAAS,EAAQ,IAcrB9wJ,EAAOD,QAJP,SAAsBmC,GACpB,OAAOsvJ,EAAetvJ,EAAQ4uJ,EAAQS,K,gBCbxC,IAIIvqI,EAJY,EAAQ,GAIT05G,CAHJ,EAAQ,IAGY,YAE/B1gI,EAAOD,QAAUinB,G,gBCNjB,IAII0J,EAJY,EAAQ,GAIVgwG,CAHH,EAAQ,IAGW,WAE9B1gI,EAAOD,QAAU2wB,G,gBCNjB,IAIIkhG,EAJY,EAAQ,GAIV8O,CAHH,EAAQ,IAGW,WAE9B1gI,EAAOD,QAAU6xH,G,cCLjB,IAGIvvH,EAHcnB,OAAOkB,UAGQC,eAqBjCrC,EAAOD,QAZP,SAAwB4D,GACtB,IAAId,EAASc,EAAMd,OACfs5B,EAAS,IAAIx4B,EAAM0J,YAAYxK,GAOnC,OAJIA,GAA6B,iBAAZc,EAAM,IAAkBtB,EAAe1B,KAAKgD,EAAO,WACtEw4B,EAAO1nB,MAAQ9Q,EAAM8Q,MACrB0nB,EAAO1K,MAAQ9tB,EAAM8tB,OAEhB0K,I,gBCtBT,IAAIu1H,EAAmB,EAAQ,KAC3BkuB,EAAgB,EAAQ,KACxBC,EAAc,EAAQ,KACtBC,EAAc,EAAQ,KACtBC,EAAkB,EAAQ,KAwE9B//K,EAAOD,QApCP,SAAwBmC,EAAQovH,EAAKg/B,GACnC,IAAIl+B,EAAOlwH,EAAOmL,YAClB,OAAQikH,GACN,IA3BiB,uBA4Bf,OAAOogC,EAAiBxvJ,GAE1B,IAvCU,mBAwCV,IAvCU,gBAwCR,OAAO,IAAIkwH,GAAMlwH,GAEnB,IAjCc,oBAkCZ,OAAO09K,EAAc19K,EAAQouJ,GAE/B,IAnCa,wBAmCI,IAlCJ,wBAmCb,IAlCU,qBAkCI,IAjCH,sBAiCkB,IAhClB,sBAiCX,IAhCW,sBAgCI,IA/BG,6BA+BmB,IA9BzB,uBA8ByC,IA7BzC,uBA8BV,OAAOyvB,EAAgB79K,EAAQouJ,GAEjC,IAjDS,eAkDP,OAAO,IAAIl+B,EAEb,IAnDY,kBAoDZ,IAjDY,kBAkDV,OAAO,IAAIA,EAAKlwH,GAElB,IAtDY,kBAuDV,OAAO29K,EAAY39K,GAErB,IAxDS,eAyDP,OAAO,IAAIkwH,EAEb,IAzDY,kBA0DV,OAAO0tD,EAAY59K,M,gBCxEzB,IAAIwvJ,EAAmB,EAAQ,KAe/B1xJ,EAAOD,QALP,SAAuBigL,EAAU1vB,GAC/B,IAAIx1H,EAASw1H,EAASoB,EAAiBsuB,EAASllJ,QAAUklJ,EAASllJ,OACnE,OAAO,IAAIklJ,EAAS3yK,YAAYytB,EAAQklJ,EAAS9jF,WAAY8jF,EAAS32F,c,cCXxE,IAAI42F,EAAU,OAedjgL,EAAOD,QANP,SAAqBmgL,GACnB,IAAI/jJ,EAAS,IAAI+jJ,EAAO7yK,YAAY6yK,EAAOz4J,OAAQw4J,EAAQl8J,KAAKm8J,IAEhE,OADA/jJ,EAAOnU,UAAYk4J,EAAOl4J,UACnBmU,I,gBCbT,IAAI56B,EAAS,EAAQ,IAGjB4+K,EAAc5+K,EAASA,EAAOa,eAAYouB,EAC1C4vJ,EAAgBD,EAAcA,EAAYh4J,aAAUqI,EAaxDxwB,EAAOD,QAJP,SAAqB2uC,GACnB,OAAO0xI,EAAgBl/K,OAAOk/K,EAAcz/K,KAAK+tC,IAAW,K,gBCd9D,IAAI2xI,EAAY,EAAQ,KACpBjqD,EAAY,EAAQ,IACpBC,EAAW,EAAQ,KAGnBiqD,EAAYjqD,GAAYA,EAAS45B,MAmBjCA,EAAQqwB,EAAYlqD,EAAUkqD,GAAaD,EAE/CrgL,EAAOD,QAAUkwJ,G,gBC1BjB,IAAI99B,EAAS,EAAQ,IACjBG,EAAe,EAAQ,IAgB3BtyH,EAAOD,QAJP,SAAmB0B,GACjB,OAAO6wH,EAAa7wH,IAVT,gBAUmB0wH,EAAO1wH,K,gBCdvC,IAAI8+K,EAAY,EAAQ,KACpBnqD,EAAY,EAAQ,IACpBC,EAAW,EAAQ,KAGnBmqD,EAAYnqD,GAAYA,EAAS65B,MAmBjCA,EAAQswB,EAAYpqD,EAAUoqD,GAAaD,EAE/CvgL,EAAOD,QAAUmwJ,G,gBC1BjB,IAAI/9B,EAAS,EAAQ,IACjBG,EAAe,EAAQ,IAgB3BtyH,EAAOD,QAJP,SAAmB0B,GACjB,OAAO6wH,EAAa7wH,IAVT,gBAUmB0wH,EAAO1wH,K,cCUvCzB,EAAOD,QAjBP,SAAuBg0J,GACrB,OAAO,SAAS7xJ,EAAQo/H,EAAUuvB,GAMhC,IALA,IAAIp8I,GAAS,EACTgsK,EAAWv/K,OAAOgB,GAClByzH,EAAQk7B,EAAS3uJ,GACjBW,EAAS8yH,EAAM9yH,OAEZA,KAAU,CACf,IAAId,EAAM4zH,EAAMo+B,EAAYlxJ,IAAW4R,GACvC,IAA+C,IAA3C6sH,EAASm/C,EAAS1+K,GAAMA,EAAK0+K,GAC/B,MAGJ,OAAOv+K,K,gBCpBX,IAAIysH,EAAc,EAAQ,IA+B1B3uH,EAAOD,QArBP,SAAwB2gL,EAAU3sB,GAChC,OAAO,SAAS/9E,EAAYsrD,GAC1B,GAAkB,MAAdtrD,EACF,OAAOA,EAET,IAAK24C,EAAY34C,GACf,OAAO0qG,EAAS1qG,EAAYsrD,GAM9B,IAJA,IAAIz+H,EAASmzE,EAAWnzE,OACpB4R,EAAQs/I,EAAYlxJ,GAAU,EAC9B49K,EAAWv/K,OAAO80E,IAEd+9E,EAAYt/I,MAAYA,EAAQ5R,KACa,IAA/Cy+H,EAASm/C,EAAShsK,GAAQA,EAAOgsK,KAIvC,OAAOzqG,K,gBC3BX,IAAIkrD,EAAW,EAAQ,IAoBvBlhI,EAAOD,QAVP,SAAoBi2E,EAAY+hE,GAC9B,IAAI57G,EAAS,GAMb,OALA+kG,EAASlrD,GAAY,SAASv0E,EAAOgT,EAAOuhE,GACtC+hE,EAAUt2I,EAAOgT,EAAOuhE,IAC1B75C,EAAOt0B,KAAKpG,MAGT06B,I,gBCjBT,IAAIwkJ,EAAc,EAAQ,KACtBC,EAAe,EAAQ,KACvBC,EAA0B,EAAQ,KAmBtC7gL,EAAOD,QAVP,SAAqB0nB,GACnB,IAAIq5J,EAAYF,EAAan5J,GAC7B,OAAwB,GAApBq5J,EAAUj+K,QAAei+K,EAAU,GAAG,GACjCD,EAAwBC,EAAU,GAAG,GAAIA,EAAU,GAAG,IAExD,SAAS5+K,GACd,OAAOA,IAAWulB,GAAUk5J,EAAYz+K,EAAQulB,EAAQq5J,M,gBCjB5D,IAAI3gD,EAAQ,EAAQ,IAChB+xB,EAAc,EAAQ,KA4D1BlyJ,EAAOD,QA5CP,SAAqBmC,EAAQulB,EAAQq5J,EAAWlrD,GAC9C,IAAInhH,EAAQqsK,EAAUj+K,OAClBA,EAAS4R,EACTssK,GAAgBnrD,EAEpB,GAAc,MAAV1zH,EACF,OAAQW,EAGV,IADAX,EAAShB,OAAOgB,GACTuS,KAAS,CACd,IAAItN,EAAO25K,EAAUrsK,GACrB,GAAKssK,GAAgB55K,EAAK,GAClBA,EAAK,KAAOjF,EAAOiF,EAAK,MACtBA,EAAK,KAAMjF,GAEnB,OAAO,EAGX,OAASuS,EAAQ5R,GAAQ,CAEvB,IAAId,GADJoF,EAAO25K,EAAUrsK,IACF,GACXmsH,EAAW1+H,EAAOH,GAClBixJ,EAAW7rJ,EAAK,GAEpB,GAAI45K,GAAgB55K,EAAK,IACvB,QAAiBqpB,IAAbowG,KAA4B7+H,KAAOG,GACrC,OAAO,MAEJ,CACL,IAAIsqE,EAAQ,IAAI2zD,EAChB,GAAIvK,EACF,IAAIz5F,EAASy5F,EAAWgL,EAAUoyB,EAAUjxJ,EAAKG,EAAQulB,EAAQ+kD,GAEnE,UAAiBh8C,IAAX2L,EACE+1H,EAAYc,EAAUpyB,EAAUogD,EAA+CprD,EAAYppD,GAC3FrwC,GAEN,OAAO,GAIb,OAAO,I,gBC1DT,IAAIgkG,EAAQ,EAAQ,IAChB8gD,EAAc,EAAQ,KACtBC,EAAa,EAAQ,KACrBC,EAAe,EAAQ,KACvBhvD,EAAS,EAAQ,IACjB3qH,EAAU,EAAQ,GAClBk1F,EAAW,EAAQ,IACnB65B,EAAe,EAAQ,IAQvB6qD,EAAY,kBAMZ/+K,EAHcnB,OAAOkB,UAGQC,eA6DjCrC,EAAOD,QA7CP,SAAyBmC,EAAQ+2C,EAAOo3G,EAASz6B,EAAY08B,EAAW9lF,GACtE,IAAI60G,EAAW75K,EAAQtF,GACnBo/K,EAAW95K,EAAQyxC,GACnBsoI,EAASF,EA1BA,iBA0BsBlvD,EAAOjwH,GACtCs/K,EAASF,EA3BA,iBA2BsBnvD,EAAOl5E,GAKtCwoI,GAHJF,EA9BY,sBA8BHA,EAAoBH,EAAYG,IAGhBH,EACrBM,GAHJF,EA/BY,sBA+BHA,EAAoBJ,EAAYI,IAGhBJ,EACrBO,EAAYJ,GAAUC,EAE1B,GAAIG,GAAajlF,EAASx6F,GAAS,CACjC,IAAKw6F,EAASzjD,GACZ,OAAO,EAETooI,GAAW,EACXI,GAAW,EAEb,GAAIE,IAAcF,EAEhB,OADAj1G,IAAUA,EAAQ,IAAI2zD,GACdkhD,GAAY9qD,EAAar0H,GAC7B++K,EAAY/+K,EAAQ+2C,EAAOo3G,EAASz6B,EAAY08B,EAAW9lF,GAC3D00G,EAAWh/K,EAAQ+2C,EAAOsoI,EAAQlxB,EAASz6B,EAAY08B,EAAW9lF,GAExE,KArDyB,EAqDnB6jF,GAAiC,CACrC,IAAIuxB,EAAeH,GAAYp/K,EAAe1B,KAAKuB,EAAQ,eACvD2/K,EAAeH,GAAYr/K,EAAe1B,KAAKs4C,EAAO,eAE1D,GAAI2oI,GAAgBC,EAAc,CAChC,IAAIC,EAAeF,EAAe1/K,EAAOT,QAAUS,EAC/C6/K,EAAeF,EAAe5oI,EAAMx3C,QAAUw3C,EAGlD,OADAuzB,IAAUA,EAAQ,IAAI2zD,GACfmyB,EAAUwvB,EAAcC,EAAc1xB,EAASz6B,EAAYppD,IAGtE,QAAKm1G,IAGLn1G,IAAUA,EAAQ,IAAI2zD,GACfghD,EAAaj/K,EAAQ+2C,EAAOo3G,EAASz6B,EAAY08B,EAAW9lF,M,cC7DrExsE,EAAOD,QALP,SAAqB0B,GAEnB,OADArB,KAAKoO,SAAStB,IAAIzL,EAbC,6BAcZrB,O,cCFTJ,EAAOD,QAJP,SAAqB0B,GACnB,OAAOrB,KAAKoO,SAASitB,IAAIh6B,K,cCY3BzB,EAAOD,QAZP,SAAmB4D,EAAOo0I,GAIxB,IAHA,IAAItjI,GAAS,EACT5R,EAAkB,MAATc,EAAgB,EAAIA,EAAMd,SAE9B4R,EAAQ5R,GACf,GAAIk1I,EAAUp0I,EAAM8Q,GAAQA,EAAO9Q,GACjC,OAAO,EAGX,OAAO,I,gBCnBT,IAAIpC,EAAS,EAAQ,IACjBy6F,EAAa,EAAQ,KACrB7F,EAAK,EAAQ,IACb8qF,EAAc,EAAQ,KACtBe,EAAa,EAAQ,KACrBC,EAAa,EAAQ,KAqBrB9B,EAAc5+K,EAASA,EAAOa,eAAYouB,EAC1C4vJ,EAAgBD,EAAcA,EAAYh4J,aAAUqI,EAoFxDxwB,EAAOD,QAjEP,SAAoBmC,EAAQ+2C,EAAOq4E,EAAK++B,EAASz6B,EAAY08B,EAAW9lF,GACtE,OAAQ8kD,GACN,IAzBc,oBA0BZ,GAAKpvH,EAAOmnF,YAAcpwC,EAAMowC,YAC3BnnF,EAAOg6F,YAAcjjD,EAAMijD,WAC9B,OAAO,EAETh6F,EAASA,EAAO44B,OAChBme,EAAQA,EAAMne,OAEhB,IAlCiB,uBAmCf,QAAK54B,EAAOmnF,YAAcpwC,EAAMowC,aAC3BipE,EAAU,IAAIt2D,EAAW95F,GAAS,IAAI85F,EAAW/iD,KAKxD,IAnDU,mBAoDV,IAnDU,gBAoDV,IAjDY,kBAoDV,OAAOk9C,GAAIj0F,GAAS+2C,GAEtB,IAxDW,iBAyDT,OAAO/2C,EAAOnB,MAAQk4C,EAAMl4C,MAAQmB,EAAOulI,SAAWxuF,EAAMwuF,QAE9D,IAxDY,kBAyDZ,IAvDY,kBA2DV,OAAOvlI,GAAW+2C,EAAQ,GAE5B,IAjES,eAkEP,IAAIvU,EAAUs9I,EAEhB,IAjES,eAkEP,IAAIzvB,EA5EiB,EA4ELlC,EAGhB,GAFA3rH,IAAYA,EAAUu9I,GAElB//K,EAAO8U,MAAQiiC,EAAMjiC,OAASu7I,EAChC,OAAO,EAGT,IAAI5B,EAAUnkF,EAAMnrE,IAAIa,GACxB,GAAIyuJ,EACF,OAAOA,GAAW13G,EAEpBo3G,GAtFuB,EAyFvB7jF,EAAMt/D,IAAIhL,EAAQ+2C,GAClB,IAAI9c,EAAS8kJ,EAAYv8I,EAAQxiC,GAASwiC,EAAQuU,GAAQo3G,EAASz6B,EAAY08B,EAAW9lF,GAE1F,OADAA,EAAc,OAAEtqE,GACTi6B,EAET,IAnFY,kBAoFV,GAAIikJ,EACF,OAAOA,EAAcz/K,KAAKuB,IAAWk+K,EAAcz/K,KAAKs4C,GAG9D,OAAO,I,cC3FTj5C,EAAOD,QAVP,SAAoBqF,GAClB,IAAIqP,GAAS,EACT0nB,EAASt4B,MAAMuB,EAAI4R,MAKvB,OAHA5R,EAAIyyB,SAAQ,SAASp2B,EAAOM,GAC1Bo6B,IAAS1nB,GAAS,CAAC1S,EAAKN,MAEnB06B,I,gBCdT,IAAIyzH,EAAa,EAAQ,KASrBvtJ,EAHcnB,OAAOkB,UAGQC,eA+EjCrC,EAAOD,QAhEP,SAAsBmC,EAAQ+2C,EAAOo3G,EAASz6B,EAAY08B,EAAW9lF,GACnE,IAAI+lF,EAtBqB,EAsBTlC,EACZ6xB,EAAWtyB,EAAW1tJ,GACtBigL,EAAYD,EAASr/K,OAIzB,GAAIs/K,GAHWvyB,EAAW32G,GACDp2C,SAEM0vJ,EAC7B,OAAO,EAGT,IADA,IAAI99I,EAAQ0tK,EACL1tK,KAAS,CACd,IAAI1S,EAAMmgL,EAASztK,GACnB,KAAM89I,EAAYxwJ,KAAOk3C,EAAQ52C,EAAe1B,KAAKs4C,EAAOl3C,IAC1D,OAAO,EAIX,IAAI4uJ,EAAUnkF,EAAMnrE,IAAIa,GACxB,GAAIyuJ,GAAWnkF,EAAMnrE,IAAI43C,GACvB,OAAO03G,GAAW13G,EAEpB,IAAI9c,GAAS,EACbqwC,EAAMt/D,IAAIhL,EAAQ+2C,GAClBuzB,EAAMt/D,IAAI+rC,EAAO/2C,GAGjB,IADA,IAAIkgL,EAAW7vB,IACN99I,EAAQ0tK,GAAW,CAE1B,IAAIvhD,EAAW1+H,EADfH,EAAMmgL,EAASztK,IAEXk+I,EAAW15G,EAAMl3C,GAErB,GAAI6zH,EACF,IAAIg9B,EAAWL,EACX38B,EAAW+8B,EAAU/xB,EAAU7+H,EAAKk3C,EAAO/2C,EAAQsqE,GACnDopD,EAAWgL,EAAU+xB,EAAU5wJ,EAAKG,EAAQ+2C,EAAOuzB,GAGzD,UAAmBh8C,IAAboiI,EACGhyB,IAAa+xB,GAAYL,EAAU1xB,EAAU+xB,EAAUtC,EAASz6B,EAAYppD,GAC7EomF,GACD,CACLz2H,GAAS,EACT,MAEFimJ,IAAaA,EAAkB,eAAPrgL,GAE1B,GAAIo6B,IAAWimJ,EAAU,CACvB,IAAIC,EAAUngL,EAAOmL,YACjBi1K,EAAUrpI,EAAM5rC,YAGhBg1K,GAAWC,GACV,gBAAiBpgL,GAAU,gBAAiB+2C,KACzB,mBAAXopI,GAAyBA,aAAmBA,GACjC,mBAAXC,GAAyBA,aAAmBA,KACvDnmJ,GAAS,GAKb,OAFAqwC,EAAc,OAAEtqE,GAChBsqE,EAAc,OAAEvzB,GACT9c,I,gBCrFT,IAAIomJ,EAAqB,EAAQ,KAC7B5uJ,EAAO,EAAQ,IAsBnB3zB,EAAOD,QAbP,SAAsBmC,GAIpB,IAHA,IAAIi6B,EAASxI,EAAKzxB,GACdW,EAASs5B,EAAOt5B,OAEbA,KAAU,CACf,IAAId,EAAMo6B,EAAOt5B,GACbpB,EAAQS,EAAOH,GAEnBo6B,EAAOt5B,GAAU,CAACd,EAAKN,EAAO8gL,EAAmB9gL,IAEnD,OAAO06B,I,gBCpBT,IAAI+1H,EAAc,EAAQ,KACtB7wJ,EAAM,EAAQ,KACdmhL,EAAQ,EAAQ,KAChBphD,EAAQ,EAAQ,KAChBmhD,EAAqB,EAAQ,KAC7B1B,EAA0B,EAAQ,KAClCtpC,EAAQ,EAAQ,IA0BpBv3I,EAAOD,QAZP,SAA6B6K,EAAMooJ,GACjC,OAAI5xB,EAAMx2H,IAAS23K,EAAmBvvB,GAC7B6tB,EAAwBtpC,EAAM3sI,GAAOooJ,GAEvC,SAAS9wJ,GACd,IAAI0+H,EAAWv/H,EAAIa,EAAQ0I,GAC3B,YAAqB4lB,IAAbowG,GAA0BA,IAAaoyB,EAC3CwvB,EAAMtgL,EAAQ0I,GACdsnJ,EAAYc,EAAUpyB,EAAUogD,M,gBC5BxC,IAAIyB,EAAU,EAAQ,KAgCtBziL,EAAOD,QALP,SAAamC,EAAQ0I,EAAM83K,GACzB,IAAIvmJ,EAAmB,MAAVj6B,OAAiBsuB,EAAYiyJ,EAAQvgL,EAAQ0I,GAC1D,YAAkB4lB,IAAX2L,EAAuBumJ,EAAevmJ,I,gBC7B/C,IAAIwmJ,EAAgB,EAAQ,KAGxBC,EAAa,mGAGbC,EAAe,WASfxhD,EAAeshD,GAAc,SAASjxK,GACxC,IAAIyqB,EAAS,GAOb,OAN6B,KAAzBzqB,EAAOsyB,WAAW,IACpB7H,EAAOt0B,KAAK,IAEd6J,EAAO4yB,QAAQs+I,GAAY,SAAS9rK,EAAOlS,EAAQk+K,EAAOC,GACxD5mJ,EAAOt0B,KAAKi7K,EAAQC,EAAUz+I,QAAQu+I,EAAc,MAASj+K,GAAUkS,MAElEqlB,KAGTn8B,EAAOD,QAAUshI,G,gBC1BjB,IAAI2hD,EAAU,EAAQ,KAyBtBhjL,EAAOD,QAZP,SAAuB+gI,GACrB,IAAI3kG,EAAS6mJ,EAAQliD,GAAM,SAAS/+H,GAIlC,OAfmB,MAYfq8C,EAAMpnC,MACRonC,EAAMznB,QAED50B,KAGLq8C,EAAQjiB,EAAOiiB,MACnB,OAAOjiB,I,gBCtBT,IAAIw6G,EAAW,EAAQ,KAiDvB,SAASqsC,EAAQliD,EAAMmiD,GACrB,GAAmB,mBAARniD,GAAmC,MAAZmiD,GAAuC,mBAAZA,EAC3D,MAAM,IAAI/3J,UAhDQ,uBAkDpB,IAAIg4J,EAAW,WACb,IAAIx1K,EAAOlI,UACPzD,EAAMkhL,EAAWA,EAAS74K,MAAMhK,KAAMsN,GAAQA,EAAK,GACnD0wC,EAAQ8kI,EAAS9kI,MAErB,GAAIA,EAAM3iB,IAAI15B,GACZ,OAAOq8C,EAAM/8C,IAAIU,GAEnB,IAAIo6B,EAAS2kG,EAAK12H,MAAMhK,KAAMsN,GAE9B,OADAw1K,EAAS9kI,MAAQA,EAAMlxC,IAAInL,EAAKo6B,IAAWiiB,EACpCjiB,GAGT,OADA+mJ,EAAS9kI,MAAQ,IAAK4kI,EAAQG,OAASxsC,GAChCusC,EAITF,EAAQG,MAAQxsC,EAEhB32I,EAAOD,QAAUijL,G,gBCxEjB,IAAIzhL,EAAS,EAAQ,IACjB6xJ,EAAW,EAAQ,IACnB5rJ,EAAU,EAAQ,GAClB2sH,EAAW,EAAQ,IAMnBgsD,EAAc5+K,EAASA,EAAOa,eAAYouB,EAC1C4yJ,EAAiBjD,EAAcA,EAAYx7J,cAAW6L,EA0B1DxwB,EAAOD,QAhBP,SAASkzJ,EAAaxxJ,GAEpB,GAAoB,iBAATA,EACT,OAAOA,EAET,GAAI+F,EAAQ/F,GAEV,OAAO2xJ,EAAS3xJ,EAAOwxJ,GAAgB,GAEzC,GAAI9+B,EAAS1yH,GACX,OAAO2hL,EAAiBA,EAAeziL,KAAKc,GAAS,GAEvD,IAAI06B,EAAU16B,EAAQ,GACtB,MAAkB,KAAV06B,GAAkB,EAAI16B,IA3BjB,IA2BwC,KAAO06B,I,cCrB9Dn8B,EAAOD,QAJP,SAAmBmC,EAAQH,GACzB,OAAiB,MAAVG,GAAkBH,KAAOb,OAAOgB,K,gBCTzC,IAAImhL,EAAe,EAAQ,KACvBC,EAAmB,EAAQ,KAC3BliD,EAAQ,EAAQ,KAChBmW,EAAQ,EAAQ,IA4BpBv3I,EAAOD,QAJP,SAAkB6K,GAChB,OAAOw2H,EAAMx2H,GAAQy4K,EAAa9rC,EAAM3sI,IAAS04K,EAAiB14K,K,gBC5BpE,IAAI63K,EAAU,EAAQ,KAetBziL,EAAOD,QANP,SAA0B6K,GACxB,OAAO,SAAS1I,GACd,OAAOugL,EAAQvgL,EAAQ0I,M,cCV3B,IAGIvI,EAHcnB,OAAOkB,UAGQC,eAcjCrC,EAAOD,QAJP,SAAiBmC,EAAQH,GACvB,OAAiB,MAAVG,GAAkBG,EAAe1B,KAAKuB,EAAQH,K,gBCfvD,IAAI2sH,EAAW,EAAQ,KACnByD,EAAS,EAAQ,IACjB+D,EAAc,EAAQ,IACtB1uH,EAAU,EAAQ,GAClBmnH,EAAc,EAAQ,IACtBjyB,EAAW,EAAQ,IACnBo6C,EAAc,EAAQ,IACtBvgB,EAAe,EAAQ,IAUvBl0H,EAHcnB,OAAOkB,UAGQC,eA2DjCrC,EAAOD,QAxBP,SAAiB0B,GACf,GAAa,MAATA,EACF,OAAO,EAET,GAAIktH,EAAYltH,KACX+F,EAAQ/F,IAA0B,iBAATA,GAA4C,mBAAhBA,EAAM+Q,QAC1DkqF,EAASj7F,IAAU80H,EAAa90H,IAAUy0H,EAAYz0H,IAC1D,OAAQA,EAAMoB,OAEhB,IAAIyuH,EAAMa,EAAO1wH,GACjB,GApDW,gBAoDP6vH,GAnDO,gBAmDUA,EACnB,OAAQ7vH,EAAMuV,KAEhB,GAAI8/H,EAAYr1I,GACd,OAAQitH,EAASjtH,GAAOoB,OAE1B,IAAK,IAAId,KAAON,EACd,GAAIY,EAAe1B,KAAKc,EAAOM,GAC7B,OAAO,EAGX,OAAO,I,cChDT/B,EAAOD,QAbP,SAAqB4D,EAAO29H,EAAUkyB,EAAaC,GACjD,IAAIh/I,GAAS,EACT5R,EAAkB,MAATc,EAAgB,EAAIA,EAAMd,OAKvC,IAHI4wJ,GAAa5wJ,IACf2wJ,EAAc7vJ,IAAQ8Q,MAEfA,EAAQ5R,GACf2wJ,EAAclyB,EAASkyB,EAAa7vJ,EAAM8Q,GAAQA,EAAO9Q,GAE3D,OAAO6vJ,I,cCATxzJ,EAAOD,QATP,SAAoBi2E,EAAYsrD,EAAUkyB,EAAaC,EAAWitB,GAMhE,OALAA,EAAS1qG,GAAY,SAASv0E,EAAOgT,EAAOuhE,GAC1Cw9E,EAAcC,GACTA,GAAY,EAAOhyJ,GACpB6/H,EAASkyB,EAAa/xJ,EAAOgT,EAAOuhE,MAEnCw9E,I,gBCnBT,IAAI9kC,EAAW,EAAQ,KACnByD,EAAS,EAAQ,IACjBxD,EAAc,EAAQ,IACtBuF,EAAW,EAAQ,KACnBqvD,EAAa,EAAQ,KAyCzBvjL,EAAOD,QAdP,SAAci2E,GACZ,GAAkB,MAAdA,EACF,OAAO,EAET,GAAI24C,EAAY34C,GACd,OAAOk+C,EAASl+C,GAAcutG,EAAWvtG,GAAcA,EAAWnzE,OAEpE,IAAIyuH,EAAMa,EAAOn8C,GACjB,MAhCW,gBAgCPs7C,GA/BO,gBA+BUA,EACZt7C,EAAWh/D,KAEb03G,EAAS14C,GAAYnzE,S,gBC1C9B,IAAIuuH,EAAa,EAAQ,IACrB5pH,EAAU,EAAQ,GAClB8qH,EAAe,EAAQ,IA2B3BtyH,EAAOD,QALP,SAAkB0B,GAChB,MAAuB,iBAATA,IACV+F,EAAQ/F,IAAU6wH,EAAa7wH,IArBrB,mBAqB+B2vH,EAAW3vH,K,gBC1B1D,IAAI+hL,EAAY,EAAQ,KACpBC,EAAa,EAAQ,KACrBC,EAAc,EAAQ,KAe1B1jL,EAAOD,QANP,SAAoB2R,GAClB,OAAO+xK,EAAW/xK,GACdgyK,EAAYhyK,GACZ8xK,EAAU9xK,K,gBCdhB,IASI8xK,EATe,EAAQ,IASXH,CAAa,UAE7BrjL,EAAOD,QAAUyjL,G,cCVjB,IAWIG,EAAe7pK,OAAO,uFAa1B9Z,EAAOD,QAJP,SAAoB2R,GAClB,OAAOiyK,EAAan3K,KAAKkF,K,cCrB3B,IAQIkyK,EAAW,oBACXC,EAAU,kDACVC,EAAS,2BAETC,EAAc,qBACdC,EAAa,kCACbC,EAAa,qCAIbC,EAPa,MAAQL,EAAU,IAAMC,EAAS,IAOtB,IAGxBK,EAFW,oBAEQD,GADP,gBAAwB,CAACH,EAAaC,EAAYC,GAAY1xK,KAAK,KAAO,qBAAiB2xK,EAAW,MAElHE,EAAW,MAAQ,CAACL,EAAcF,EAAU,IAAKA,EAASG,EAAYC,EAAYL,GAAUrxK,KAAK,KAAO,IAGxG8xK,EAAYvqK,OAAOgqK,EAAS,MAAQA,EAAS,KAAOM,EAAWD,EAAO,KAiB1EnkL,EAAOD,QARP,SAAqB2R,GAEnB,IADA,IAAIyqB,EAASkoJ,EAAUr8J,UAAY,EAC5Bq8J,EAAU73K,KAAKkF,MAClByqB,EAEJ,OAAOA,I,gBCxCT,IAAIkzH,EAAY,EAAQ,KACpBuC,EAAa,EAAQ,KACrB3wB,EAAa,EAAQ,KACrB+wB,EAAe,EAAQ,IACvBjxB,EAAe,EAAQ,IACvBv5H,EAAU,EAAQ,GAClBk1F,EAAW,EAAQ,IACnBgM,EAAa,EAAQ,IACrB2oB,EAAW,EAAQ,IACnBkF,EAAe,EAAQ,IAuD3Bv2H,EAAOD,QAvBP,SAAmBmC,EAAQo/H,EAAUkyB,GACnC,IAAI/C,EAAQjpJ,EAAQtF,GAChBoiL,EAAY7zB,GAAS/zD,EAASx6F,IAAWq0H,EAAar0H,GAG1D,GADAo/H,EAAW0wB,EAAa1wB,EAAU,GACf,MAAfkyB,EAAqB,CACvB,IAAIphC,EAAOlwH,GAAUA,EAAOmL,YAE1BmmJ,EADE8wB,EACY7zB,EAAQ,IAAIr+B,EAAO,GAE1Bf,EAASnvH,IACFwmG,EAAW0pB,GAAQw/B,EAAW7wB,EAAa7+H,IAG3C,GAMlB,OAHCoiL,EAAYj1B,EAAYpuB,GAAY/+H,GAAQ,SAAST,EAAOgT,EAAOvS,GAClE,OAAOo/H,EAASkyB,EAAa/xJ,EAAOgT,EAAOvS,MAEtCsxJ,I,gBC7DT,IAAI1b,EAAc,EAAQ,KACtBge,EAAW,EAAQ,IACnByuB,EAAW,EAAQ,KACnBC,EAAoB,EAAQ,KAkB5B77E,EAAQmtD,GAAS,SAASxtJ,GAC5B,OAAOi8K,EAASzsC,EAAYxvI,EAAQ,EAAGk8K,GAAmB,OAG5DxkL,EAAOD,QAAU4oG,G,gBCzBjB,IAAIpnG,EAAS,EAAQ,IACjB20H,EAAc,EAAQ,IACtB1uH,EAAU,EAAQ,GAGlBi9K,EAAmBljL,EAASA,EAAOmjL,wBAAqBl0J,EAc5DxwB,EAAOD,QALP,SAAuB0B,GACrB,OAAO+F,EAAQ/F,IAAUy0H,EAAYz0H,OAChCgjL,GAAoBhjL,GAASA,EAAMgjL,M,cCI1CzkL,EAAOD,QAVP,SAAe+gI,EAAM6jD,EAASj3K,GAC5B,OAAQA,EAAK7K,QACX,KAAK,EAAG,OAAOi+H,EAAKngI,KAAKgkL,GACzB,KAAK,EAAG,OAAO7jD,EAAKngI,KAAKgkL,EAASj3K,EAAK,IACvC,KAAK,EAAG,OAAOozH,EAAKngI,KAAKgkL,EAASj3K,EAAK,GAAIA,EAAK,IAChD,KAAK,EAAG,OAAOozH,EAAKngI,KAAKgkL,EAASj3K,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAE3D,OAAOozH,EAAK12H,MAAMu6K,EAASj3K,K,gBCjB7B,IAAI3F,EAAW,EAAQ,KACnB5G,EAAiB,EAAQ,KACzB2F,EAAW,EAAQ,IAUnB8sJ,EAAmBzyJ,EAA4B,SAAS2/H,EAAMpvH,GAChE,OAAOvQ,EAAe2/H,EAAM,WAAY,CACtC,cAAgB,EAChB,YAAc,EACd,MAAS/4H,EAAS2J,GAClB,UAAY,KALwB5K,EASxC9G,EAAOD,QAAU6zJ,G,cCpBjB,IAIIgxB,EAAYv9J,KAAKuC,IA+BrB5pB,EAAOD,QApBP,SAAkB+gI,GAChB,IAAI96H,EAAQ,EACR6+K,EAAa,EAEjB,OAAO,WACL,IAAIC,EAAQF,IACRvmF,EApBO,IAoBiBymF,EAAQD,GAGpC,GADAA,EAAaC,EACTzmF,EAAY,GACd,KAAMr4F,GAzBI,IA0BR,OAAOR,UAAU,QAGnBQ,EAAQ,EAEV,OAAO86H,EAAK12H,WAAMomB,EAAWhrB,c,gBChCjC,IAAI2sJ,EAAW,EAAQ,KACnB4yB,EAAgB,EAAQ,KACxBC,EAAoB,EAAQ,KAC5B3yB,EAAW,EAAQ,KACnB4yB,EAAY,EAAQ,KACpBhD,EAAa,EAAQ,KAkEzBjiL,EAAOD,QApDP,SAAkB4D,EAAO29H,EAAU2W,GACjC,IAAIxjI,GAAS,EACTssF,EAAWgkF,EACXliL,EAASc,EAAMd,OACfqiL,GAAW,EACX/oJ,EAAS,GACTs2H,EAAOt2H,EAEX,GAAI87G,EACFitC,GAAW,EACXnkF,EAAWikF,OAER,GAAIniL,GAvBY,IAuBgB,CACnC,IAAIqK,EAAMo0H,EAAW,KAAO2jD,EAAUthL,GACtC,GAAIuJ,EACF,OAAO+0K,EAAW/0K,GAEpBg4K,GAAW,EACXnkF,EAAWsxD,EACXI,EAAO,IAAIN,OAGXM,EAAOnxB,EAAW,GAAKnlG,EAEzByzI,EACA,OAASn7J,EAAQ5R,GAAQ,CACvB,IAAIpB,EAAQkC,EAAM8Q,GACdyjI,EAAW5W,EAAWA,EAAS7/H,GAASA,EAG5C,GADAA,EAASw2I,GAAwB,IAAVx2I,EAAeA,EAAQ,EAC1CyjL,GAAYhtC,GAAaA,EAAU,CAErC,IADA,IAAIitC,EAAY1yB,EAAK5vJ,OACdsiL,KACL,GAAI1yB,EAAK0yB,KAAejtC,EACtB,SAAS03B,EAGTtuC,GACFmxB,EAAK5qJ,KAAKqwI,GAEZ/7G,EAAOt0B,KAAKpG,QAEJs/F,EAAS0xD,EAAMva,EAAUD,KAC7Bwa,IAASt2H,GACXs2H,EAAK5qJ,KAAKqwI,GAEZ/7G,EAAOt0B,KAAKpG,IAGhB,OAAO06B,I,gBCpET,IAAIipJ,EAAc,EAAQ,KAgB1BplL,EAAOD,QALP,SAAuB4D,EAAOlC,GAE5B,SADsB,MAATkC,EAAgB,EAAIA,EAAMd,SACpBuiL,EAAYzhL,EAAOlC,EAAO,IAAM,I,gBCbrD,IAAI4jL,EAAgB,EAAQ,KACxBC,EAAY,EAAQ,KACpBC,EAAgB,EAAQ,KAiB5BvlL,EAAOD,QANP,SAAqB4D,EAAOlC,EAAOqyJ,GACjC,OAAOryJ,GAAUA,EACb8jL,EAAc5hL,EAAOlC,EAAOqyJ,GAC5BuxB,EAAc1hL,EAAO2hL,EAAWxxB,K,cCLtC9zJ,EAAOD,QAJP,SAAmB0B,GACjB,OAAOA,GAAUA,I,cCcnBzB,EAAOD,QAZP,SAAuB4D,EAAOlC,EAAOqyJ,GAInC,IAHA,IAAIr/I,EAAQq/I,EAAY,EACpBjxJ,EAASc,EAAMd,SAEV4R,EAAQ5R,GACf,GAAIc,EAAM8Q,KAAWhT,EACnB,OAAOgT,EAGX,OAAQ,I,cCEVzU,EAAOD,QAZP,SAA2B4D,EAAOlC,EAAOw2I,GAIvC,IAHA,IAAIxjI,GAAS,EACT5R,EAAkB,MAATc,EAAgB,EAAIA,EAAMd,SAE9B4R,EAAQ5R,GACf,GAAIo1I,EAAWx2I,EAAOkC,EAAM8Q,IAC1B,OAAO,EAGX,OAAO,I,gBClBT,IAAIgoB,EAAM,EAAQ,KACdnwB,EAAO,EAAQ,KACf21K,EAAa,EAAQ,KAYrBgD,EAAcxoJ,GAAQ,EAAIwlJ,EAAW,IAAIxlJ,EAAI,CAAC,EAAE,KAAK,IAT1C,IASoE,SAASp4B,GAC1F,OAAO,IAAIo4B,EAAIp4B,IAD2DiI,EAI5EtM,EAAOD,QAAUklL,G,cCFjBjlL,EAAOD,QAJP,c,gBCZA,IAAIqzJ,EAAW,EAAQ,IAkBvBpzJ,EAAOD,QANP,SAAoBmC,EAAQyzH,GAC1B,OAAOy9B,EAASz9B,GAAO,SAAS5zH,GAC9B,OAAOG,EAAOH,Q,cCdlB/B,EAAOD,QAAU,S,gBCAjB,IAAI+H,EAAI,EAAQ,IACZo9E,EAAQ,EAAQ,KAuBpB,SAASsgG,EAAWnhK,GAClB,OAAOvc,EAAE1C,IAAIif,EAAEjM,SAAS,SAASvT,GAC/B,IAAI6pD,EAAYrqC,EAAEtV,KAAKlK,GACnBqJ,EAASmW,EAAEnW,OAAOrJ,GAClBkK,EAAO,CAAElK,EAAGA,GAOhB,OANKiD,EAAE49E,YAAYh3B,KACjB3/C,EAAKtN,MAAQitD,GAEV5mD,EAAE49E,YAAYx3E,KACjBa,EAAKb,OAASA,GAETa,KAIX,SAAS02K,EAAWphK,GAClB,OAAOvc,EAAE1C,IAAIif,EAAEivD,SAAS,SAAS9oD,GAC/B,IAAIk7J,EAAYrhK,EAAEmqD,KAAKhkD,GACnBgkD,EAAO,CAAE3pE,EAAG2lB,EAAE3lB,EAAGktB,EAAGvH,EAAEuH,GAO1B,OANKjqB,EAAE49E,YAAYl7D,EAAEzpB,QACnBytE,EAAKztE,KAAOypB,EAAEzpB,MAEX+G,EAAE49E,YAAYggG,KACjBl3G,EAAK/sE,MAAQikL,GAERl3G,KA9CXxuE,EAAOD,QAAU,CACfw8F,MAIF,SAAel4E,GACb,IAAI8kB,EAAO,CACTq3C,QAAS,CACPyyD,SAAU5uH,EAAE8vH,aACZpuC,WAAY1hF,EAAE2hF,eACdotC,SAAU/uH,EAAEqwH,cAEdt8H,MAAOotK,EAAWnhK,GAClBivD,MAAOmyG,EAAWphK,IAEfvc,EAAE49E,YAAYrhE,EAAEohF,WACnBt8D,EAAK1nC,MAAQqG,EAAEmM,MAAMoQ,EAAEohF,UAEzB,OAAOt8D,GAhBP60D,KAgDF,SAAc70D,GACZ,IAAI9kB,EAAI,IAAI6gE,EAAM/7C,EAAKq3C,SAASglB,SAASr8D,EAAK1nC,OAU9C,OATAqG,EAAEkE,KAAKm9B,EAAK/wB,OAAO,SAAS8gC,GAC1B70B,EAAE8gF,QAAQjsD,EAAMr0C,EAAGq0C,EAAMz3C,OACrBy3C,EAAMhrC,QACRmW,EAAE8wH,UAAUj8F,EAAMr0C,EAAGq0C,EAAMhrC,WAG/BpG,EAAEkE,KAAKm9B,EAAKmqC,OAAO,SAASp6B,GAC1B70B,EAAEwhF,QAAQ,CAAEhhG,EAAGq0C,EAAMr0C,EAAGktB,EAAGmnB,EAAMnnB,EAAGhxB,KAAMm4C,EAAMn4C,MAAQm4C,EAAMz3C,UAEzD4iB,K,gBChETrkB,EAAOD,QAAU,CACf4lL,WAAY,EAAQ,KACpBC,SAAU,EAAQ,KAClBC,YAAa,EAAQ,KACrBC,WAAY,EAAQ,KACpBC,cAAe,EAAQ,KACvBC,UAAW,EAAQ,KACnBnwB,UAAW,EAAQ,KACnBowB,SAAU,EAAQ,KAClBC,KAAM,EAAQ,KACdC,OAAQ,EAAQ,KAChB1wB,QAAS,EAAQ,O,gBCXnB,IAAI3tJ,EAAI,EAAQ,IAEhB9H,EAAOD,QAEP,SAAoBskB,GAClB,IAEImxI,EAFA7zB,EAAU,GACVykD,EAAQ,GAGZ,SAASxkD,EAAI/8H,GACPiD,EAAE2zB,IAAIkmG,EAAS98H,KACnB88H,EAAQ98H,IAAK,EACb2wJ,EAAK3tJ,KAAKhD,GACViD,EAAEkE,KAAKqY,EAAEixH,WAAWzwI,GAAI+8H,GACxB95H,EAAEkE,KAAKqY,EAAE+wH,aAAavwI,GAAI+8H,IAW5B,OARA95H,EAAEkE,KAAKqY,EAAEjM,SAAS,SAASvT,GACzB2wJ,EAAO,GACP5zB,EAAI/8H,GACA2wJ,EAAK3yJ,QACPujL,EAAMv+K,KAAK2tJ,MAIR4wB,I,gBCzBT,IAAIR,EAAW,EAAQ,KACnB99K,EAAI,EAAQ,IAEhB9H,EAAOD,QAEP,SAAqBskB,EAAGgiK,EAAYC,GAClC,OAAOx+K,EAAEmC,UAAUoa,EAAEjM,SAAS,SAAS08E,EAAKjwF,GAC1CiwF,EAAIjwF,GAAK+gL,EAASvhK,EAAGxf,EAAGwhL,EAAYC,KACnC,M,gBCRL,IAAIx+K,EAAI,EAAQ,IACZq+K,EAAS,EAAQ,KAErBnmL,EAAOD,QAEP,SAAoBskB,GAClB,OAAOvc,EAAEiE,OAAOo6K,EAAO9hK,IAAI,SAASmxI,GAClC,OAAOA,EAAK3yJ,OAAS,GAAsB,IAAhB2yJ,EAAK3yJ,QAAgBwhB,EAAE6xH,QAAQsf,EAAK,GAAIA,EAAK,S,gBCP5E,IAAI1tJ,EAAI,EAAQ,IAEhB9H,EAAOD,QAIP,SAAuBskB,EAAG6vI,EAAUC,GAClC,OAKF,SAA0B9vI,EAAG6vI,EAAUC,GACrC,IAAIE,EAAU,GACVj8I,EAAQiM,EAAEjM,QAkCd,OAhCAA,EAAMyf,SAAQ,SAAShzB,GACrBwvJ,EAAQxvJ,GAAK,GACbwvJ,EAAQxvJ,GAAGA,GAAK,CAAEwnC,SAAU,GAC5Bj0B,EAAMyf,SAAQ,SAAS9F,GACjBltB,IAAMktB,IACRsiI,EAAQxvJ,GAAGktB,GAAK,CAAEsa,SAAUkD,OAAOsyF,uBAGvCsyB,EAAOtvJ,GAAGgzB,SAAQ,SAAS22C,GACzB,IAAIz8C,EAAIy8C,EAAK3pE,IAAMA,EAAI2pE,EAAKz8C,EAAIy8C,EAAK3pE,EACjC/D,EAAIozJ,EAAS1lF,GACjB6lF,EAAQxvJ,GAAGktB,GAAK,CAAEsa,SAAUvrC,EAAG2zJ,YAAa5vJ,SAIhDuT,EAAMyf,SAAQ,SAAS7tB,GACrB,IAAIu8K,EAAOlyB,EAAQrqJ,GACnBoO,EAAMyf,SAAQ,SAASr3B,GACrB,IAAIgmL,EAAOnyB,EAAQ7zJ,GACnB4X,EAAMyf,SAAQ,SAAStvB,GACrB,IAAI8wH,EAAKmtD,EAAKx8K,GACVy8K,EAAKF,EAAKh+K,GACVm+K,EAAKF,EAAKj+K,GACVo+K,EAActtD,EAAGhtF,SAAWo6I,EAAGp6I,SAC/Bs6I,EAAcD,EAAGr6I,WACnBq6I,EAAGr6I,SAAWs6I,EACdD,EAAGjyB,YAAcgyB,EAAGhyB,sBAMrBJ,EAzCAuyB,CAAiBviK,EACtB6vI,GAAYW,EACZV,GAAU,SAAStvJ,GAAK,OAAOwf,EAAE+hF,SAASvhG,MAL9C,IAAIgwJ,EAAsB/sJ,EAAEC,SAAS,I,gBCJrC,IAAI0tJ,EAAU,EAAQ,KAEtBz1J,EAAOD,QAEP,SAAmBskB,GACjB,IACEoxI,EAAQpxI,GACR,MAAOmG,GACP,GAAIA,aAAairI,EAAQC,eACvB,OAAO,EAET,MAAMlrI,EAER,OAAO,I,gBCbT,IAAIo3G,EAAM,EAAQ,KAElB5hI,EAAOD,QAEP,SAAmBskB,EAAG0iF,GACpB,OAAO66B,EAAIv9G,EAAG0iF,EAAI,U,gBCLpB,IAAI66B,EAAM,EAAQ,KAElB5hI,EAAOD,QAEP,SAAkBskB,EAAG0iF,GACnB,OAAO66B,EAAIv9G,EAAG0iF,EAAI,S,gBCLpB,IAAIj/F,EAAI,EAAQ,IACZo9E,EAAQ,EAAQ,KAChB+uE,EAAgB,EAAQ,KAE5Bj0J,EAAOD,QAEP,SAAcskB,EAAGgiK,GACf,IAGIxhL,EAHAs3B,EAAS,IAAI+oD,EACb3uE,EAAU,GACV+9I,EAAK,IAAIL,EAGb,SAASM,EAAgB/lF,GACvB,IAAIz8C,EAAIy8C,EAAK3pE,IAAMA,EAAI2pE,EAAKz8C,EAAIy8C,EAAK3pE,EACjCgiL,EAAMvyB,EAAGtjJ,SAAS+gB,GACtB,QAAYvB,IAARq2J,EAAmB,CACrB,IAAIC,EAAaT,EAAW73G,GACxBs4G,EAAaD,IACftwK,EAAQwb,GAAKltB,EACbyvJ,EAAGI,SAAS3iI,EAAG+0J,KAKrB,GAAsB,IAAlBziK,EAAEwwH,YACJ,OAAO14G,EAGTr0B,EAAEkE,KAAKqY,EAAEjM,SAAS,SAASvT,GACzByvJ,EAAGpiJ,IAAIrN,EAAG0qC,OAAOsyF,mBACjB1lG,EAAOgpE,QAAQtgG,MAIjByvJ,EAAGI,SAASrwI,EAAEjM,QAAQ,GAAI,GAE1B,IAAImwB,GAAO,EACX,KAAO+rH,EAAGt9I,OAAS,GAAG,CAEpB,GADAnS,EAAIyvJ,EAAGK,YACH7sJ,EAAE2zB,IAAIllB,EAAS1R,GACjBs3B,EAAO0pE,QAAQhhG,EAAG0R,EAAQ1R,QACrB,IAAI0jC,EACT,MAAM,IAAI97B,MAAM,iCAAmC4X,GAEnDkkB,GAAO,EAGTlkB,EAAEgyH,UAAUxxI,GAAGgzB,QAAQ08H,GAGzB,OAAOp4H,I,gBChDT,IAAIwoE,EAGF,IACEA,EAAW,EAAQ,GAErB,MAAOn6E,IAKJm6E,IACHA,EAAW/uF,OAAO+uF,UAGpB3kG,EAAOD,QAAU4kG,G,6BCfjB,IAAI78F,EAAI,EAAQ,GACZi/K,EAAU,EAAQ,KAClBtzH,EAAY,EAAQ,KACpB4xC,EAAO,EAAQ,KACfsB,EAAiB,EAAQ,IAAUA,eACnCqgF,EAAoB,EAAQ,KAC5BpgF,EAAmB,EAAQ,IAAUA,iBACrCqgF,EAAe,EAAQ,KACvBC,EAAoB,EAAQ,KAC5BC,EAAmB,EAAQ,KAC3Bp8K,EAAQ,EAAQ,KAChBN,EAAW,EAAQ,KACnBq6F,EAAO,EAAQ,IACf5f,EAAQ,EAAQ,IAAcA,MAElCllF,EAAOD,QAEP,SAAgBskB,EAAG0uH,GACjB,IAAI1oH,EAAO0oH,GAAQA,EAAKq0C,YAActiF,EAAKz6E,KAAOy6E,EAAKsC,OACvD/8E,EAAK,UAAU,WACb,IAAIg9J,EACFh9J,EAAK,sBAAsB,WAAa,OA2F9C,SAA0Bi9J,GACxB,IAAIjjK,EAAI,IAAI6gE,EAAM,CAAE6gB,YAAY,EAAMqtC,UAAU,IAC5C3tC,EAAQ8hF,EAAaD,EAAW7hF,SAqBpC,OAnBAphF,EAAEmhF,SAAS19F,EAAE2D,MAAM,GACjB+7K,EACAC,EAAkBhiF,EAAOiiF,GACzB5/K,EAAEg+E,KAAK2f,EAAOkiF,KAEhB7/K,EAAE+vB,QAAQyvJ,EAAWlvK,SAAS,SAASvT,GACrC,IAAIkK,EAAOw4K,EAAaD,EAAWv4K,KAAKlK,IACxCwf,EAAE8gF,QAAQtgG,EAAGiD,EAAEy9E,SAASkiG,EAAkB14K,EAAM64K,GAAeC,IAC/DxjK,EAAE8wH,UAAUtwI,EAAGyiL,EAAWp5K,OAAOrJ,OAGnCiD,EAAE+vB,QAAQyvJ,EAAWh0G,SAAS,SAAS9oD,GACrC,IAAIgkD,EAAO+4G,EAAaD,EAAW94G,KAAKhkD,IACxCnG,EAAEwhF,QAAQr7E,EAAG1iB,EAAE2D,MAAM,GACnBq8K,EACAL,EAAkBj5G,EAAMu5G,GACxBjgL,EAAEg+E,KAAKtX,EAAMw5G,QAGV3jK,EAlH4C4jK,CAAiB5jK,MAClEgG,EAAK,eAAsB,YAK/B,SAAmBhG,EAAGgG,GACpBA,EAAK,8BAA8B,YAsHrC,SAAgChG,GAC9B,IAAIohF,EAAQphF,EAAEohF,QACdA,EAAMyiF,SAAW,EACjBpgL,EAAE+vB,QAAQxT,EAAEivD,SAAS,SAAS9oD,GAC5B,IAAIgkD,EAAOnqD,EAAEmqD,KAAKhkD,GAClBgkD,EAAKm3B,QAAU,EACqB,MAAhCn3B,EAAK25G,SAASrkK,gBACM,OAAlB2hF,EAAM2iF,SAAsC,OAAlB3iF,EAAM2iF,QAClC55G,EAAK17C,OAAS07C,EAAK65G,YAEnB75G,EAAKz7C,QAAUy7C,EAAK65G,gBAhIsBC,CAAuBjkK,MACvEgG,EAAK,uBAA8B,YAmSrC,SAAyBhG,GACvBvc,EAAE+vB,QAAQxT,EAAEivD,SAAS,SAAS9oD,GAC5B,GAAIA,EAAE3lB,IAAM2lB,EAAEuH,EAAG,CACf,IAAIhjB,EAAOsV,EAAEtV,KAAKyb,EAAE3lB,GACfkK,EAAKw5K,YACRx5K,EAAKw5K,UAAY,IAEnBx5K,EAAKw5K,UAAU1gL,KAAK,CAAE2iB,EAAGA,EAAGo7E,MAAOvhF,EAAEmqD,KAAKhkD,KAC1CnG,EAAE4wH,WAAWzqH,OA3S+Bg+J,CAAgBnkK,MAChEgG,EAAK,eAA8B,WAAa08J,EAAQzsF,IAAIj2E,MAC5DgG,EAAK,wBAA8B,WAAa48J,EAAa3sF,IAAIj2E,MACjEgG,EAAK,YAA8B,WAAag7E,EAAKP,EAAKgB,mBAAmBzhF,OAC7EgG,EAAK,8BAA8B,YAuIrC,SAAgChG,GAC9Bvc,EAAE+vB,QAAQxT,EAAEivD,SAAS,SAAS9oD,GAC5B,IAAIgkD,EAAOnqD,EAAEmqD,KAAKhkD,GAClB,GAAIgkD,EAAK17C,OAAS07C,EAAKz7C,OAAQ,CAC7B,IAAIluB,EAAIwf,EAAEtV,KAAKyb,EAAE3lB,GAEb+gG,EAAQ,CAAEP,MADNhhF,EAAEtV,KAAKyb,EAAEuH,GACMszE,KAAOxgG,EAAEwgG,MAAQ,EAAIxgG,EAAEwgG,KAAM76E,EAAGA,GACvDs6E,EAAKC,aAAa1gF,EAAG,aAAcuhF,EAAO,WA9IE6iF,CAAuBpkK,MACvEgG,EAAK,wBAA8B,WAAau8E,EAAiBviF,MACjEgG,EAAK,4BAA8B,WAAa48J,EAAa3hD,QAAQjhH,MACrEgG,EAAK,sBAA8B,WAAas8E,EAAetiF,MAC/DgG,EAAK,wBAA8B,YA+IrC,SAA0BhG,GACxB,IAAI+gF,EAAU,EACdt9F,EAAE+vB,QAAQxT,EAAEjM,SAAS,SAASvT,GAC5B,IAAIkK,EAAOsV,EAAEtV,KAAKlK,GACdkK,EAAK25K,YACP35K,EAAK45K,QAAUtkK,EAAEtV,KAAKA,EAAK25K,WAAWrjF,KACtCt2F,EAAKq2F,QAAU/gF,EAAEtV,KAAKA,EAAK65K,cAAcvjF,KACzCD,EAAUt9F,EAAE5C,IAAIkgG,EAASr2F,EAAKq2F,aAGlC/gF,EAAEohF,QAAQL,QAAUA,EAzJ4ByjF,CAAiBxkK,MACjEgG,EAAK,8BAA8B,YA2JrC,SAAgChG,GAC9Bvc,EAAE+vB,QAAQxT,EAAEjM,SAAS,SAASvT,GAC5B,IAAIkK,EAAOsV,EAAEtV,KAAKlK,GACC,eAAfkK,EAAKm2F,QACP7gF,EAAEmqD,KAAKz/D,EAAKyb,GAAGs+J,UAAY/5K,EAAKs2F,KAChChhF,EAAE2wH,WAAWnwI,OAhK+BkkL,CAAuB1kK,MACvEgG,EAAK,qBAA8B,WAAaopC,EAAU6mC,IAAIj2E,MAC9DgG,EAAK,yBAA8B,WAAa28J,EAAkB3iK,MAClEgG,EAAK,yBAA8B,WAAa68J,EAAkB7iK,MAClEgG,EAAK,aAA8B,WAAatf,EAAMsZ,MACtDgG,EAAK,uBAA8B,YAkSrC,SAAyBhG,GACvB,IAAIwiF,EAAS/B,EAAK2B,iBAAiBpiF,GACnCvc,EAAE+vB,QAAQgvE,GAAQ,SAASmiF,GACzB,IAAIC,EAAa,EACjBnhL,EAAE+vB,QAAQmxJ,GAAO,SAASnkL,EAAGrE,GAC3B,IAAIuO,EAAOsV,EAAEtV,KAAKlK,GAClBkK,EAAKhE,MAAQvK,EAAIyoL,EACjBnhL,EAAE+vB,QAAQ9oB,EAAKw5K,WAAW,SAASW,GACjCpkF,EAAKC,aAAa1gF,EAAG,WAAY,CAC/ByO,MAAOo2J,EAAStjF,MAAM9yE,MACtBC,OAAQm2J,EAAStjF,MAAM7yE,OACvBsyE,KAAMt2F,EAAKs2F,KACXt6F,MAAOvK,KAAOyoL,EACdz+J,EAAG0+J,EAAS1+J,EACZo7E,MAAOsjF,EAAStjF,OACf,iBAEE72F,EAAKw5K,gBAnTgCY,CAAgB9kK,MAChEgG,EAAK,8BAA8B,WAAa88J,EAAiBiC,OAAO/kK,MACxEgG,EAAK,gBAA8B,WAAa5f,EAAS4Z,MACzDgG,EAAK,yBAA8B,YAqTrC,SAA2BhG,GACzBvc,EAAE+vB,QAAQxT,EAAEjM,SAAS,SAASvT,GAC5B,IAAIkK,EAAOsV,EAAEtV,KAAKlK,GAClB,GAAmB,aAAfkK,EAAKm2F,MAAsB,CAC7B,IAAImkF,EAAWhlK,EAAEtV,KAAKA,EAAKyb,EAAE3lB,GACzB/B,EAAIumL,EAASvmL,EAAIumL,EAASv2J,MAAQ,EAClC5pB,EAAImgL,EAASngL,EACbusB,EAAK1mB,EAAKjM,EAAIA,EACd4yB,EAAK2zJ,EAASt2J,OAAS,EAC3B1O,EAAEwhF,QAAQ92F,EAAKyb,EAAGzb,EAAK62F,OACvBvhF,EAAE2wH,WAAWnwI,GACbkK,EAAK62F,MAAM5sD,OAAS,CAClB,CAAEl2C,EAAGA,EAAI,EAAI2yB,EAAK,EAAGvsB,EAAGA,EAAIwsB,GAC5B,CAAE5yB,EAAGA,EAAI,EAAI2yB,EAAK,EAAGvsB,EAAGA,EAAIwsB,GAC5B,CAAE5yB,EAAGA,EAAQ2yB,EAAQvsB,EAAGA,GACxB,CAAEpG,EAAGA,EAAI,EAAI2yB,EAAK,EAAGvsB,EAAGA,EAAIwsB,GAC5B,CAAE5yB,EAAGA,EAAI,EAAI2yB,EAAK,EAAGvsB,EAAGA,EAAIwsB,IAE9B3mB,EAAK62F,MAAM9iG,EAAIiM,EAAKjM,EACpBiM,EAAK62F,MAAM18F,EAAI6F,EAAK7F,MAxUwBogL,CAAkBjlK,MAClEgG,EAAK,yBAA8B,YA0PrC,SAA2BhG,GACzBvc,EAAE+vB,QAAQxT,EAAEjM,SAAS,SAASvT,GAC5B,GAAIwf,EAAE6L,SAASrrB,GAAGhC,OAAQ,CACxB,IAAIkM,EAAOsV,EAAEtV,KAAKlK,GACdnD,EAAI2iB,EAAEtV,KAAKA,EAAK25K,WAChBjmL,EAAI4hB,EAAEtV,KAAKA,EAAK65K,cAChBnoL,EAAI4jB,EAAEtV,KAAKjH,EAAE69E,KAAK52E,EAAKw6K,aACvBjoL,EAAI+iB,EAAEtV,KAAKjH,EAAE69E,KAAK52E,EAAKy6K,cAE3Bz6K,EAAK+jB,MAAQ/tB,KAAK4B,IAAIrF,EAAEwB,EAAIrC,EAAEqC,GAC9BiM,EAAKgkB,OAAShuB,KAAK4B,IAAIlE,EAAEyG,EAAIxH,EAAEwH,GAC/B6F,EAAKjM,EAAIrC,EAAEqC,EAAIiM,EAAK+jB,MAAQ,EAC5B/jB,EAAK7F,EAAIxH,EAAEwH,EAAI6F,EAAKgkB,OAAS,MAIjCjrB,EAAE+vB,QAAQxT,EAAEjM,SAAS,SAASvT,GACJ,WAApBwf,EAAEtV,KAAKlK,GAAGqgG,OACZ7gF,EAAE2wH,WAAWnwI,MA5Q+B4kL,CAAkBplK,MAClEgG,EAAK,sBAA8B,WAAaopC,EAAUi2H,KAAKrlK,MAC/DgG,EAAK,4BAA8B,YAgOrC,SAA8BhG,GAC5Bvc,EAAE+vB,QAAQxT,EAAEivD,SAAS,SAAS9oD,GAC5B,IAAIgkD,EAAOnqD,EAAEmqD,KAAKhkD,GAClB,GAAI1iB,EAAE2zB,IAAI+yC,EAAM,KAId,OAHsB,MAAlBA,EAAK25G,UAAsC,MAAlB35G,EAAK25G,WAChC35G,EAAK17C,OAAS07C,EAAK65G,aAEb75G,EAAK25G,UACb,IAAK,IAAK35G,EAAK1rE,GAAK0rE,EAAK17C,MAAQ,EAAI07C,EAAK65G,YAAa,MACvD,IAAK,IAAK75G,EAAK1rE,GAAK0rE,EAAK17C,MAAQ,EAAI07C,EAAK65G,gBAzOEsB,CAAqBtlK,MACrEgG,EAAK,4BAA8B,WAAa88J,EAAiBuC,KAAKrlK,MACtEgG,EAAK,sBAA8B,YAwJrC,SAAwBhG,GACtB,IAAI4yI,EAAO1nH,OAAOsyF,kBACd+nD,EAAO,EACP1yB,EAAO3nH,OAAOsyF,kBACd54E,EAAO,EACP4gI,EAAaxlK,EAAEohF,QACfqkF,EAAUD,EAAWE,SAAW,EAChCC,EAAUH,EAAWI,SAAW,EAEpC,SAASC,EAAYllF,GACnB,IAAIliG,EAAIkiG,EAAMliG,EACVoG,EAAI87F,EAAM97F,EACV6oB,EAAIizE,EAAMlyE,MACVlO,EAAIogF,EAAMjyE,OACdkkI,EAAOlyJ,KAAKE,IAAIgyJ,EAAMn0J,EAAIivB,EAAI,GAC9B63J,EAAO7kL,KAAKG,IAAI0kL,EAAM9mL,EAAIivB,EAAI,GAC9BmlI,EAAOnyJ,KAAKE,IAAIiyJ,EAAMhuJ,EAAI0b,EAAI,GAC9BqkC,EAAOlkD,KAAKG,IAAI+jD,EAAM//C,EAAI0b,EAAI,GAGhC9c,EAAE+vB,QAAQxT,EAAEjM,SAAS,SAASvT,GAAKqlL,EAAY7lK,EAAEtV,KAAKlK,OACtDiD,EAAE+vB,QAAQxT,EAAEivD,SAAS,SAAS9oD,GAC5B,IAAIgkD,EAAOnqD,EAAEmqD,KAAKhkD,GACd1iB,EAAE2zB,IAAI+yC,EAAM,MACd07G,EAAY17G,MAIhByoF,GAAQ6yB,EACR5yB,GAAQ8yB,EAERliL,EAAE+vB,QAAQxT,EAAEjM,SAAS,SAASvT,GAC5B,IAAIkK,EAAOsV,EAAEtV,KAAKlK,GAClBkK,EAAKjM,GAAKm0J,EACVloJ,EAAK7F,GAAKguJ,KAGZpvJ,EAAE+vB,QAAQxT,EAAEivD,SAAS,SAAS9oD,GAC5B,IAAIgkD,EAAOnqD,EAAEmqD,KAAKhkD,GAClB1iB,EAAE+vB,QAAQ22C,EAAKx1B,QAAQ,SAAS12C,GAC9BA,EAAEQ,GAAKm0J,EACP30J,EAAE4G,GAAKguJ,KAELpvJ,EAAE2zB,IAAI+yC,EAAM,OAAQA,EAAK1rE,GAAKm0J,GAC9BnvJ,EAAE2zB,IAAI+yC,EAAM,OAAQA,EAAKtlE,GAAKguJ,MAGpC2yB,EAAW/2J,MAAQ82J,EAAO3yB,EAAO6yB,EACjCD,EAAW92J,OAASk2B,EAAOiuG,EAAO8yB,EAxMcG,CAAe9lK,MAC/DgG,EAAK,4BAA8B,YA0MrC,SAA8BhG,GAC5Bvc,EAAE+vB,QAAQxT,EAAEivD,SAAS,SAAS9oD,GAC5B,IAGI8uB,EAAI2uB,EAHJuG,EAAOnqD,EAAEmqD,KAAKhkD,GACd4/J,EAAQ/lK,EAAEtV,KAAKyb,EAAE3lB,GACjBwlL,EAAQhmK,EAAEtV,KAAKyb,EAAEuH,GAEhBy8C,EAAKx1B,QAKRM,EAAKk1B,EAAKx1B,OAAO,GACjBivB,EAAKuG,EAAKx1B,OAAOw1B,EAAKx1B,OAAOn2C,OAAS,KALtC2rE,EAAKx1B,OAAS,GACdM,EAAK+wI,EACLpiH,EAAKmiH,GAKP57G,EAAKx1B,OAAOzZ,QAAQulE,EAAK0B,cAAc4jF,EAAO9wI,IAC9Ck1B,EAAKx1B,OAAOnxC,KAAKi9F,EAAK0B,cAAc6jF,EAAOpiH,OAzNGqiH,CAAqBjmK,MACrEgG,EAAK,qBAA8B,YA2OrC,SAAuChG,GACrCvc,EAAE+vB,QAAQxT,EAAEivD,SAAS,SAAS9oD,GAC5B,IAAIgkD,EAAOnqD,EAAEmqD,KAAKhkD,GACdgkD,EAAK+7G,UACP/7G,EAAKx1B,OAAOlzC,aA/OgC0kL,CAA8BnmK,MAC9EgG,EAAK,oBAA8B,WAAa08J,EAAQ2C,KAAKrlK,MAhCnBomK,CAAUpD,EAAah9J,MAC/DA,EAAK,sBAAsB,YAwC/B,SAA0Bi9J,EAAYD,GACpCv/K,EAAE+vB,QAAQyvJ,EAAWlvK,SAAS,SAASvT,GACrC,IAAI6lL,EAAapD,EAAWv4K,KAAKlK,GAC7B8lL,EAActD,EAAYt4K,KAAKlK,GAE/B6lL,IACFA,EAAW5nL,EAAI6nL,EAAY7nL,EAC3B4nL,EAAWxhL,EAAIyhL,EAAYzhL,EAEvBm+K,EAAYn3J,SAASrrB,GAAGhC,SAC1B6nL,EAAW53J,MAAQ63J,EAAY73J,MAC/B43J,EAAW33J,OAAS43J,EAAY53J,YAKtCjrB,EAAE+vB,QAAQyvJ,EAAWh0G,SAAS,SAAS9oD,GACrC,IAAIkgK,EAAapD,EAAW94G,KAAKhkD,GAC7BmgK,EAActD,EAAY74G,KAAKhkD,GAEnCkgK,EAAW1xI,OAAS2xI,EAAY3xI,OAC5BlxC,EAAE2zB,IAAIkvJ,EAAa,OACrBD,EAAW5nL,EAAI6nL,EAAY7nL,EAC3B4nL,EAAWxhL,EAAIyhL,EAAYzhL,MAI/Bo+K,EAAW7hF,QAAQ3yE,MAAQu0J,EAAY5hF,QAAQ3yE,MAC/Cw0J,EAAW7hF,QAAQ1yE,OAASs0J,EAAY5hF,QAAQ1yE,OApEN63J,CAAiBvmK,EAAGgjK,UAuEhE,IAAIK,EAAgB,CAAC,UAAW,UAAW,UAAW,UAAW,WAC7DF,EAAgB,CAAEU,QAAS,GAAI2C,QAAS,GAAIC,QAAS,GAAI1C,QAAS,MAClET,EAAa,CAAC,YAAa,SAAU,UAAW,SAChDC,EAAe,CAAC,QAAS,UACzBC,EAAe,CAAE/0J,MAAO,EAAGC,OAAQ,GACnCg1J,EAAe,CAAC,SAAU,SAAU,QAAS,SAAU,eACvDD,EAAe,CACjBniF,OAAQ,EAAGtlE,OAAQ,EAAGvN,MAAO,EAAGC,OAAQ,EACxCs1J,YAAa,GAAIF,SAAU,KAEzBH,EAAY,CAAC,YAmRjB,SAASP,EAAkBhrF,EAAKuI,GAC9B,OAAOl9F,EAAE89E,UAAU99E,EAAEg+E,KAAK2W,EAAKuI,GAAQz1D,QAGzC,SAASg4I,EAAaviF,GACpB,IAAI+lF,EAAW,GAIf,OAHAjjL,EAAE+vB,QAAQmtE,GAAO,SAASngG,EAAGmF,GAC3B+gL,EAAS/gL,EAAE8Z,eAAiBjf,KAEvBkmL,I,gBCtYT,IAAI36B,EAAY,EAAQ,KA4BxBpwJ,EAAOD,QAJP,SAAmB0B,GACjB,OAAO2uJ,EAAU3uJ,EAAOupL,K,gBCzB1B,IAuCIlgJ,EAvCa,EAAQ,IAuCdmgJ,CAtCK,EAAQ,MAwCxBjrL,EAAOD,QAAU+qC,G,gBCzCjB,IAAIknH,EAAe,EAAQ,IACvBrjC,EAAc,EAAQ,IACtBh7F,EAAO,EAAQ,IAsBnB3zB,EAAOD,QAbP,SAAoBmrL,GAClB,OAAO,SAASl1G,EAAY+hE,EAAW+b,GACrC,IAAI2sB,EAAWv/K,OAAO80E,GACtB,IAAK24C,EAAY34C,GAAa,CAC5B,IAAIsrD,EAAW0wB,EAAaja,EAAW,GACvC/hE,EAAariD,EAAKqiD,GAClB+hE,EAAY,SAASh2I,GAAO,OAAOu/H,EAASm/C,EAAS1+K,GAAMA,EAAK0+K,IAElE,IAAIhsK,EAAQy2K,EAAcl1G,EAAY+hE,EAAW+b,GACjD,OAAOr/I,GAAS,EAAIgsK,EAASn/C,EAAWtrD,EAAWvhE,GAASA,QAAS+b,K,gBCpBzE,IAAI60J,EAAgB,EAAQ,KACxBrzB,EAAe,EAAQ,IACvBm5B,EAAY,EAAQ,KAGpBz3B,EAAY3uJ,KAAKG,IAiDrBlF,EAAOD,QAZP,SAAmB4D,EAAOo0I,EAAW+b,GACnC,IAAIjxJ,EAAkB,MAATc,EAAgB,EAAIA,EAAMd,OACvC,IAAKA,EACH,OAAQ,EAEV,IAAI4R,EAAqB,MAAbq/I,EAAoB,EAAIq3B,EAAUr3B,GAI9C,OAHIr/I,EAAQ,IACVA,EAAQi/I,EAAU7wJ,EAAS4R,EAAO,IAE7B4wK,EAAc1hL,EAAOquJ,EAAaja,EAAW,GAAItjI,K,gBCnD1D,IAAI22K,EAAW,EAAQ,KAmCvBprL,EAAOD,QAPP,SAAmB0B,GACjB,IAAI06B,EAASivJ,EAAS3pL,GAClBqvH,EAAY30F,EAAS,EAEzB,OAAOA,GAAWA,EAAU20F,EAAY30F,EAAS20F,EAAY30F,EAAU,I,gBChCzE,IAAIk1F,EAAW,EAAQ,IACnB8C,EAAW,EAAQ,IAMnBk3D,EAAS,aAGTC,EAAa,qBAGbC,EAAa,aAGbC,EAAY,cAGZC,EAAeznK,SA8CnBhkB,EAAOD,QArBP,SAAkB0B,GAChB,GAAoB,iBAATA,EACT,OAAOA,EAET,GAAI0yH,EAAS1yH,GACX,OA7CM,IA+CR,GAAI4vH,EAAS5vH,GAAQ,CACnB,IAAIw3C,EAAgC,mBAAjBx3C,EAAM0mB,QAAwB1mB,EAAM0mB,UAAY1mB,EACnEA,EAAQ4vH,EAASp4E,GAAUA,EAAQ,GAAMA,EAE3C,GAAoB,iBAATx3C,EACT,OAAiB,IAAVA,EAAcA,GAASA,EAEhCA,EAAQA,EAAM6iC,QAAQ+mJ,EAAQ,IAC9B,IAAIK,EAAWH,EAAW/+K,KAAK/K,GAC/B,OAAQiqL,GAAYF,EAAUh/K,KAAK/K,GAC/BgqL,EAAahqL,EAAM0D,MAAM,GAAIumL,EAAW,EAAI,GAC3CJ,EAAW9+K,KAAK/K,GA1Db,KA0D6BA,I,gBC9DvC,IAAI21I,EAAU,EAAQ,KAClB0a,EAAe,EAAQ,KACvBhB,EAAS,EAAQ,IAoCrB9wJ,EAAOD,QANP,SAAemC,EAAQo/H,GACrB,OAAiB,MAAVp/H,EACHA,EACAk1I,EAAQl1I,EAAQ4vJ,EAAaxwB,GAAWwvB,K,cChB9C9wJ,EAAOD,QALP,SAAc4D,GACZ,IAAId,EAAkB,MAATc,EAAgB,EAAIA,EAAMd,OACvC,OAAOA,EAASc,EAAMd,EAAS,QAAK2tB,I,gBChBtC,IAAIklG,EAAkB,EAAQ,IAC1BuL,EAAa,EAAQ,KACrB+wB,EAAe,EAAQ,IAwC3BhyJ,EAAOD,QAVP,SAAmBmC,EAAQo/H,GACzB,IAAInlG,EAAS,GAMb,OALAmlG,EAAW0wB,EAAa1wB,EAAU,GAElCL,EAAW/+H,GAAQ,SAAST,EAAOM,EAAKG,GACtCwzH,EAAgBv5F,EAAQp6B,EAAKu/H,EAAS7/H,EAAOM,EAAKG,OAE7Ci6B,I,gBCvCT,IAAIwvJ,EAAe,EAAQ,KACvBC,EAAS,EAAQ,KACjB9kL,EAAW,EAAQ,IA0BvB9G,EAAOD,QANP,SAAa4D,GACX,OAAQA,GAASA,EAAMd,OACnB8oL,EAAahoL,EAAOmD,EAAU8kL,QAC9Bp7J,I,cCZNxwB,EAAOD,QAJP,SAAgB0B,EAAOw3C,GACrB,OAAOx3C,EAAQw3C,I,gBCVjB,IAAI4yI,EAAY,EAAQ,KAkCpBpgL,EAjCiB,EAAQ,IAiCjBqgL,EAAe,SAAS5pL,EAAQulB,EAAQskK,GAClDF,EAAU3pL,EAAQulB,EAAQskK,MAG5B/rL,EAAOD,QAAU0L,G,gBCtCjB,IAAI00H,EAAQ,EAAQ,IAChB6rD,EAAmB,EAAQ,KAC3B50C,EAAU,EAAQ,KAClB60C,EAAgB,EAAQ,KACxB56D,EAAW,EAAQ,IACnBy/B,EAAS,EAAQ,IACjBo7B,EAAU,EAAQ,KAmCtBlsL,EAAOD,QAtBP,SAAS8rL,EAAU3pL,EAAQulB,EAAQskK,EAAUn2D,EAAYppD,GACnDtqE,IAAWulB,GAGf2vH,EAAQ3vH,GAAQ,SAASurI,EAAUjxJ,GAEjC,GADAyqE,IAAUA,EAAQ,IAAI2zD,GAClB9O,EAAS2hC,GACXi5B,EAAc/pL,EAAQulB,EAAQ1lB,EAAKgqL,EAAUF,EAAWj2D,EAAYppD,OAEjE,CACH,IAAIspD,EAAWF,EACXA,EAAWs2D,EAAQhqL,EAAQH,GAAMixJ,EAAWjxJ,EAAM,GAAKG,EAAQulB,EAAQ+kD,QACvEh8C,OAEaA,IAAbslG,IACFA,EAAWk9B,GAEbg5B,EAAiB9pL,EAAQH,EAAK+zH,MAE/Bg7B,K,gBCtCL,IAAIk7B,EAAmB,EAAQ,KAC3Bx8B,EAAc,EAAQ,KACtBuwB,EAAkB,EAAQ,KAC1BtwB,EAAY,EAAQ,KACpBO,EAAkB,EAAQ,KAC1B95B,EAAc,EAAQ,IACtB1uH,EAAU,EAAQ,GAClBg9K,EAAoB,EAAQ,KAC5B9nF,EAAW,EAAQ,IACnBgM,EAAa,EAAQ,IACrB2oB,EAAW,EAAQ,IACnB/nB,EAAgB,EAAQ,KACxBitB,EAAe,EAAQ,IACvB21D,EAAU,EAAQ,KAClBC,EAAgB,EAAQ,KA+E5BnsL,EAAOD,QA9DP,SAAuBmC,EAAQulB,EAAQ1lB,EAAKgqL,EAAUK,EAAWx2D,EAAYppD,GAC3E,IAAIo0D,EAAWsrD,EAAQhqL,EAAQH,GAC3BixJ,EAAWk5B,EAAQzkK,EAAQ1lB,GAC3B4uJ,EAAUnkF,EAAMnrE,IAAI2xJ,GAExB,GAAIrC,EACFq7B,EAAiB9pL,EAAQH,EAAK4uJ,OADhC,CAIA,IAAI76B,EAAWF,EACXA,EAAWgL,EAAUoyB,EAAWjxJ,EAAM,GAAKG,EAAQulB,EAAQ+kD,QAC3Dh8C,EAEA00J,OAAwB10J,IAAbslG,EAEf,GAAIovD,EAAU,CACZ,IAAIz0B,EAAQjpJ,EAAQwrJ,GAChB7B,GAAUV,GAAS/zD,EAASs2D,GAC5Bq5B,GAAW57B,IAAUU,GAAU56B,EAAay8B,GAEhDl9B,EAAWk9B,EACPvC,GAASU,GAAUk7B,EACjB7kL,EAAQo5H,GACV9K,EAAW8K,EAEJ4jD,EAAkB5jD,GACzB9K,EAAW25B,EAAU7uB,GAEduwB,GACP+zB,GAAW,EACXpvD,EAAW05B,EAAYwD,GAAU,IAE1Bq5B,GACPnH,GAAW,EACXpvD,EAAWiqD,EAAgB/sB,GAAU,IAGrCl9B,EAAW,GAGNxsB,EAAc0pD,IAAa98B,EAAY88B,IAC9Cl9B,EAAW8K,EACP1K,EAAY0K,GACd9K,EAAWq2D,EAAcvrD,GAEjBvP,EAASuP,KAAal4B,EAAWk4B,KACzC9K,EAAWk6B,EAAgBgD,KAI7BkyB,GAAW,EAGXA,IAEF14G,EAAMt/D,IAAI8lJ,EAAUl9B,GACpBs2D,EAAUt2D,EAAUk9B,EAAU+4B,EAAUn2D,EAAYppD,GACpDA,EAAc,OAAEwmF,IAElBg5B,EAAiB9pL,EAAQH,EAAK+zH,M,gBC1FhC,IAAI0pD,EAAa,EAAQ,IACrB1uB,EAAS,EAAQ,IA8BrB9wJ,EAAOD,QAJP,SAAuB0B,GACrB,OAAO+9K,EAAW/9K,EAAOqvJ,EAAOrvJ,M,gBC5BlC,IAAIq0J,EAAW,EAAQ,IACnBC,EAAiB,EAAQ,IAmC7B/1J,EAAOD,QA1BP,SAAwBusL,GACtB,OAAOx2B,GAAS,SAAS5zJ,EAAQm1H,GAC/B,IAAI5iH,GAAS,EACT5R,EAASw0H,EAAQx0H,OACjB+yH,EAAa/yH,EAAS,EAAIw0H,EAAQx0H,EAAS,QAAK2tB,EAChDwlI,EAAQnzJ,EAAS,EAAIw0H,EAAQ,QAAK7mG,EAWtC,IATAolG,EAAc02D,EAASzpL,OAAS,GAA0B,mBAAd+yH,GACvC/yH,IAAU+yH,QACXplG,EAEAwlI,GAASD,EAAe1+B,EAAQ,GAAIA,EAAQ,GAAI2+B,KAClDpgC,EAAa/yH,EAAS,OAAI2tB,EAAYolG,EACtC/yH,EAAS,GAEXX,EAAShB,OAAOgB,KACPuS,EAAQ5R,GAAQ,CACvB,IAAI4kB,EAAS4vG,EAAQ5iH,GACjBgT,GACF6kK,EAASpqL,EAAQulB,EAAQhT,EAAOmhH,GAGpC,OAAO1zH,O,gBChCX,IAAIypL,EAAe,EAAQ,KACvBY,EAAS,EAAQ,KACjBzlL,EAAW,EAAQ,IA0BvB9G,EAAOD,QANP,SAAa4D,GACX,OAAQA,GAASA,EAAMd,OACnB8oL,EAAahoL,EAAOmD,EAAUylL,QAC9B/7J,I,gBCzBN,IAAIm7J,EAAe,EAAQ,KACvB35B,EAAe,EAAQ,IACvBu6B,EAAS,EAAQ,KA+BrBvsL,EAAOD,QANP,SAAe4D,EAAO29H,GACpB,OAAQ39H,GAASA,EAAMd,OACnB8oL,EAAahoL,EAAOquJ,EAAa1wB,EAAU,GAAIirD,QAC/C/7J,I,gBC9BN,IAAI3wB,EAAO,EAAQ,IAsBnBG,EAAOD,QAJG,WACR,OAAOF,EAAKwnB,KAAKuC,Q,gBCnBnB,IAAI4iK,EAAa,EAAQ,KACrBhK,EAAQ,EAAQ,KAiBpBxiL,EAAOD,QANP,SAAkBmC,EAAQwiG,GACxB,OAAO8nF,EAAWtqL,EAAQwiG,GAAO,SAASjjG,EAAOmJ,GAC/C,OAAO43K,EAAMtgL,EAAQ0I,Q,gBCdzB,IAAI63K,EAAU,EAAQ,KAClBgK,EAAU,EAAQ,KAClBn1C,EAAW,EAAQ,IA2BvBt3I,EAAOD,QAhBP,SAAoBmC,EAAQwiG,EAAOqzC,GAKjC,IAJA,IAAItjI,GAAS,EACT5R,EAAS6hG,EAAM7hG,OACfs5B,EAAS,KAEJ1nB,EAAQ5R,GAAQ,CACvB,IAAI+H,EAAO85F,EAAMjwF,GACbhT,EAAQghL,EAAQvgL,EAAQ0I,GAExBmtI,EAAUt2I,EAAOmJ,IACnB6hL,EAAQtwJ,EAAQm7G,EAAS1sI,EAAM1I,GAAST,GAG5C,OAAO06B,I,gBC1BT,IAAIs5F,EAAc,EAAQ,IACtB6hB,EAAW,EAAQ,IACnB7V,EAAU,EAAQ,IAClBpQ,EAAW,EAAQ,IACnBkmB,EAAQ,EAAQ,IA0CpBv3I,EAAOD,QA9BP,SAAiBmC,EAAQ0I,EAAMnJ,EAAOm0H,GACpC,IAAKvE,EAASnvH,GACZ,OAAOA,EAST,IALA,IAAIuS,GAAS,EACT5R,GAHJ+H,EAAO0sI,EAAS1sI,EAAM1I,IAGJW,OACdmlB,EAAYnlB,EAAS,EACrB6pL,EAASxqL,EAEI,MAAVwqL,KAAoBj4K,EAAQ5R,GAAQ,CACzC,IAAId,EAAMw1I,EAAM3sI,EAAK6J,IACjBqhH,EAAWr0H,EAEf,GAAIgT,GAASuT,EAAW,CACtB,IAAI44G,EAAW8rD,EAAO3qL,QAELyuB,KADjBslG,EAAWF,EAAaA,EAAWgL,EAAU7+H,EAAK2qL,QAAUl8J,KAE1DslG,EAAWzE,EAASuP,GAChBA,EACCa,EAAQ72H,EAAK6J,EAAQ,IAAM,GAAK,IAGzCghH,EAAYi3D,EAAQ3qL,EAAK+zH,GACzB42D,EAASA,EAAO3qL,GAElB,OAAOG,I,gBC3CT,IAAIsjF,EAAU,EAAQ,KAClB+7C,EAAW,EAAQ,KACnBC,EAAc,EAAQ,KAa1BxhI,EAAOD,QAJP,SAAkB+gI,GAChB,OAAOU,EAAYD,EAAST,OAAMtwG,EAAWg1D,GAAUs7C,EAAO,M,gBCZhE,IAAI6rD,EAAY,EAAQ,KACpB52B,EAAiB,EAAQ,IACzBq1B,EAAW,EAAQ,KA2BvBprL,EAAOD,QAlBP,SAAqBg0J,GACnB,OAAO,SAAS1uJ,EAAOghB,EAAK9gB,GAa1B,OAZIA,GAAuB,iBAARA,GAAoBwwJ,EAAe1wJ,EAAOghB,EAAK9gB,KAChE8gB,EAAM9gB,OAAOirB,GAGfnrB,EAAQ+lL,EAAS/lL,QACLmrB,IAARnK,GACFA,EAAMhhB,EACNA,EAAQ,GAERghB,EAAM+kK,EAAS/kK,GAEjB9gB,OAAgBirB,IAATjrB,EAAsBF,EAAQghB,EAAM,GAAK,EAAK+kK,EAAS7lL,GACvDonL,EAAUtnL,EAAOghB,EAAK9gB,EAAMwuJ,M,cCxBvC,IAAI64B,EAAa7nL,KAAKU,KAClBiuJ,EAAY3uJ,KAAKG,IAyBrBlF,EAAOD,QAZP,SAAmBsF,EAAOghB,EAAK9gB,EAAMwuJ,GAKnC,IAJA,IAAIt/I,GAAS,EACT5R,EAAS6wJ,EAAUk5B,GAAYvmK,EAAMhhB,IAAUE,GAAQ,IAAK,GAC5D42B,EAASt4B,MAAMhB,GAEZA,KACLs5B,EAAO43H,EAAYlxJ,IAAW4R,GAASpP,EACvCA,GAASE,EAEX,OAAO42B,I,gBCxBT,IAAI27G,EAAc,EAAQ,KACtB+0C,EAAc,EAAQ,KACtB/2B,EAAW,EAAQ,IACnBC,EAAiB,EAAQ,IA+BzBhwE,EAAS+vE,GAAS,SAAS9/E,EAAY82G,GACzC,GAAkB,MAAd92G,EACF,MAAO,GAET,IAAInzE,EAASiqL,EAAUjqL,OAMvB,OALIA,EAAS,GAAKkzJ,EAAe//E,EAAY82G,EAAU,GAAIA,EAAU,IACnEA,EAAY,GACHjqL,EAAS,GAAKkzJ,EAAe+2B,EAAU,GAAIA,EAAU,GAAIA,EAAU,MAC5EA,EAAY,CAACA,EAAU,KAElBD,EAAY72G,EAAY8hE,EAAYg1C,EAAW,GAAI,OAG5D9sL,EAAOD,QAAUgmF,G,gBC/CjB,IAAIqtE,EAAW,EAAQ,IACnBpB,EAAe,EAAQ,IACvBqB,EAAU,EAAQ,KAClB05B,EAAa,EAAQ,KACrB32D,EAAY,EAAQ,IACpB42D,EAAkB,EAAQ,KAC1BlmL,EAAW,EAAQ,IA2BvB9G,EAAOD,QAhBP,SAAqBi2E,EAAY82G,EAAWG,GAC1C,IAAIx4K,GAAS,EACbq4K,EAAY15B,EAAS05B,EAAUjqL,OAASiqL,EAAY,CAAChmL,GAAWsvH,EAAU47B,IAE1E,IAAI71H,EAASk3H,EAAQr9E,GAAY,SAASv0E,EAAOM,EAAKi0E,GAIpD,MAAO,CAAE,SAHMo9E,EAAS05B,GAAW,SAASxrD,GAC1C,OAAOA,EAAS7/H,MAEa,QAAWgT,EAAO,MAAShT,MAG5D,OAAOsrL,EAAW5wJ,GAAQ,SAASj6B,EAAQ+2C,GACzC,OAAO+zI,EAAgB9qL,EAAQ+2C,EAAOg0I,Q,cCT1CjtL,EAAOD,QAVP,SAAoB4D,EAAOupL,GACzB,IAAIrqL,EAASc,EAAMd,OAGnB,IADAc,EAAMsE,KAAKilL,GACJrqL,KACLc,EAAMd,GAAUc,EAAMd,GAAQpB,MAEhC,OAAOkC,I,gBCjBT,IAAIwpL,EAAmB,EAAQ,KA2C/BntL,EAAOD,QA3BP,SAAyBmC,EAAQ+2C,EAAOg0I,GAOtC,IANA,IAAIx4K,GAAS,EACT24K,EAAclrL,EAAOmrL,SACrBC,EAAcr0I,EAAMo0I,SACpBxqL,EAASuqL,EAAYvqL,OACrB0qL,EAAeN,EAAOpqL,SAEjB4R,EAAQ5R,GAAQ,CACvB,IAAIs5B,EAASgxJ,EAAiBC,EAAY34K,GAAQ64K,EAAY74K,IAC9D,GAAI0nB,EACF,OAAI1nB,GAAS84K,EACJpxJ,EAGFA,GAAmB,QADd8wJ,EAAOx4K,IACiB,EAAI,GAU5C,OAAOvS,EAAOuS,MAAQwkC,EAAMxkC,Q,gBCxC9B,IAAI0/G,EAAW,EAAQ,IAwCvBn0H,EAAOD,QA9BP,SAA0B0B,EAAOw3C,GAC/B,GAAIx3C,IAAUw3C,EAAO,CACnB,IAAIu0I,OAAyBh9J,IAAV/uB,EACfgsL,EAAsB,OAAVhsL,EACZisL,EAAiBjsL,GAAUA,EAC3BksL,EAAcx5D,EAAS1yH,GAEvBmsL,OAAyBp9J,IAAVyoB,EACf40I,EAAsB,OAAV50I,EACZ60I,EAAiB70I,GAAUA,EAC3B80I,EAAc55D,EAASl7E,GAE3B,IAAM40I,IAAcE,IAAgBJ,GAAelsL,EAAQw3C,GACtD00I,GAAeC,GAAgBE,IAAmBD,IAAcE,GAChEN,GAAaG,GAAgBE,IAC5BN,GAAgBM,IACjBJ,EACH,OAAO,EAET,IAAMD,IAAcE,IAAgBI,GAAetsL,EAAQw3C,GACtD80I,GAAeP,GAAgBE,IAAmBD,IAAcE,GAChEE,GAAaL,GAAgBE,IAC5BE,GAAgBF,IACjBI,EACH,OAAQ,EAGZ,OAAO,I,gBCrCT,IAAIr4D,EAAc,EAAQ,IACtBu4D,EAAgB,EAAQ,KAsB5BhuL,EAAOD,QAJP,SAAmB41H,EAAOtxH,GACxB,OAAO2pL,EAAcr4D,GAAS,GAAItxH,GAAU,GAAIoxH,K,cCElDz1H,EAAOD,QAbP,SAAuB41H,EAAOtxH,EAAQ4pL,GAMpC,IALA,IAAIx5K,GAAS,EACT5R,EAAS8yH,EAAM9yH,OACfqrL,EAAa7pL,EAAOxB,OACpBs5B,EAAS,KAEJ1nB,EAAQ5R,GAAQ,CACvB,IAAIpB,EAAQgT,EAAQy5K,EAAa7pL,EAAOoQ,QAAS+b,EACjDy9J,EAAW9xJ,EAAQw5F,EAAMlhH,GAAQhT,GAEnC,OAAO06B,I,6BCjBT,IAAIr0B,EAAI,EAAQ,GACZqmL,EAAY,EAAQ,KAExBnuL,EAAOD,QAAU,CACfu6F,IAIF,SAAaj2E,GACX,IAAI+pK,EAA+B,WAAxB/pK,EAAEohF,QAAQ4oF,UACjBF,EAAU9pK,EAUd,SAAkBA,GAChB,OAAO,SAASmG,GACd,OAAOnG,EAAEmqD,KAAKhkD,GAAG6V,QAZJ6zH,CAAS7vI,IAiB5B,SAAgBA,GACd,IAAI+pK,EAAM,GACN5hH,EAAQ,GACRm1D,EAAU,GAEd,SAASC,EAAI/8H,GACPiD,EAAE2zB,IAAIkmG,EAAS98H,KAGnB88H,EAAQ98H,IAAK,EACb2nE,EAAM3nE,IAAK,EACXiD,EAAE+vB,QAAQxT,EAAE+hF,SAASvhG,IAAI,SAAS2lB,GAC5B1iB,EAAE2zB,IAAI+wC,EAAOhiD,EAAEuH,GACjBq8J,EAAIvmL,KAAK2iB,GAETo3G,EAAIp3G,EAAEuH,aAGHy6C,EAAM3nE,IAIf,OADAiD,EAAE+vB,QAAQxT,EAAEjM,QAASwpH,GACdwsD,EAtCHE,CAAOjqK,GACXvc,EAAE+vB,QAAQu2J,GAAK,SAAS5jK,GACtB,IAAIo7E,EAAQvhF,EAAEmqD,KAAKhkD,GACnBnG,EAAE4wH,WAAWzqH,GACbo7E,EAAM2oF,YAAc/jK,EAAEzpB,KACtB6kG,EAAM2kF,UAAW,EACjBlmK,EAAEwhF,QAAQr7E,EAAEuH,EAAGvH,EAAE3lB,EAAG+gG,EAAO99F,EAAEk+E,SAAS,YAZxC0jG,KA+CF,SAAcrlK,GACZvc,EAAE+vB,QAAQxT,EAAEivD,SAAS,SAAS9oD,GAC5B,IAAIo7E,EAAQvhF,EAAEmqD,KAAKhkD,GACnB,GAAIo7E,EAAM2kF,SAAU,CAClBlmK,EAAE4wH,WAAWzqH,GAEb,IAAI+jK,EAAc3oF,EAAM2oF,mBACjB3oF,EAAM2kF,gBACN3kF,EAAM2oF,YACblqK,EAAEwhF,QAAQr7E,EAAEuH,EAAGvH,EAAE3lB,EAAG+gG,EAAO2oF,U,gBC/DjC,IAAIzmL,EAAI,EAAQ,GACZo9E,EAAQ,EAAQ,IAAcA,MAC9BspG,EAAO,EAAQ,KASnBxuL,EAAOD,QAIP,SAAmBskB,EAAG6vI,GACpB,GAAI7vI,EAAEwwH,aAAe,EACnB,MAAO,GAET,IAAInpH,EA4DN,SAAoBrH,EAAG6vI,GACrB,IAAIu6B,EAAW,IAAIvpG,EACfwpG,EAAQ,EACRC,EAAS,EAEb7mL,EAAE+vB,QAAQxT,EAAEjM,SAAS,SAASvT,GAC5B4pL,EAAStpF,QAAQtgG,EAAG,CAAEA,EAAGA,EAAG,GAAM,EAAG8rC,IAAK,OAK5C7oC,EAAE+vB,QAAQxT,EAAEivD,SAAS,SAAS9oD,GAC5B,IAAIokK,EAAaH,EAASjgH,KAAKhkD,EAAE3lB,EAAG2lB,EAAEuH,IAAM,EACxCsO,EAAS6zH,EAAS1pI,GAClBs8J,EAAa8H,EAAavuJ,EAC9BouJ,EAAS5oF,QAAQr7E,EAAE3lB,EAAG2lB,EAAEuH,EAAG+0J,GAC3B6H,EAAS5pL,KAAKG,IAAIypL,EAAQF,EAAS1/K,KAAKyb,EAAE3lB,GAAG8rC,KAAOtQ,GACpDquJ,EAAS3pL,KAAKG,IAAIwpL,EAAQD,EAAS1/K,KAAKyb,EAAEuH,GAAO,IAAMsO,MAGzD,IAAIwuJ,EAAU/mL,EAAEpC,MAAMipL,EAASD,EAAQ,GAAGtpL,KAAI,WAAa,OAAO,IAAIopL,KAClEM,EAAUJ,EAAQ,EAMtB,OAJA5mL,EAAE+vB,QAAQ42J,EAASr2K,SAAS,SAASvT,GACnCkqL,EAAaF,EAASC,EAASL,EAAS1/K,KAAKlK,OAGxC,CAAE4gG,MAAOgpF,EAAUI,QAASA,EAASC,QAASA,GAvFzCE,CAAW3qK,EAAG6vI,GAAY+6B,GAClC56B,EAQN,SAAqBhwI,EAAGwqK,EAASC,GAC/B,IAII51I,EAJAm7G,EAAU,GACVh9B,EAAUw3D,EAAQA,EAAQhsL,OAAS,GACnCiyI,EAAQ+5C,EAAQ,GAGpB,KAAOxqK,EAAEwwH,aAAa,CACpB,KAAQ37F,EAAQ47F,EAAMo6C,WAAgBl6C,EAAW3wH,EAAGwqK,EAASC,EAAS51I,GACtE,KAAQA,EAAQm+E,EAAQ63D,WAAcl6C,EAAW3wH,EAAGwqK,EAASC,EAAS51I,GACtE,GAAI70B,EAAEwwH,YACJ,IAAK,IAAIr0I,EAAIquL,EAAQhsL,OAAS,EAAGrC,EAAI,IAAKA,EAExC,GADA04C,EAAQ21I,EAAQruL,GAAG0uL,UACR,CACT76B,EAAUA,EAAQjnJ,OAAO4nI,EAAW3wH,EAAGwqK,EAASC,EAAS51I,GAAO,IAChE,OAMR,OAAOm7G,EA5BO86B,CAAYzjK,EAAM+5E,MAAO/5E,EAAMmjK,QAASnjK,EAAMojK,SAG5D,OAAOhnL,EAAE09E,QAAQ19E,EAAE1C,IAAIivJ,GAAS,SAAS7pI,GACvC,OAAOnG,EAAE+hF,SAAS57E,EAAE3lB,EAAG2lB,EAAEuH,OACvB,IAZN,IAAIk9J,EAAoBnnL,EAAEC,SAAS,GAsCnC,SAASitI,EAAW3wH,EAAGwqK,EAASC,EAAS51I,EAAOk2I,GAC9C,IAAI/6B,EAAU+6B,EAAsB,QAAK5+J,EAwBzC,OAtBA1oB,EAAE+vB,QAAQxT,EAAEkiF,QAAQrtD,EAAMr0C,IAAI,SAAS2pE,GACrC,IAAInuC,EAAShc,EAAEmqD,KAAKA,GAChB6gH,EAAShrK,EAAEtV,KAAKy/D,EAAK3pE,GAErBuqL,GACF/6B,EAAQxsJ,KAAK,CAAEhD,EAAG2pE,EAAK3pE,EAAGktB,EAAGy8C,EAAKz8C,IAGpCs9J,EAAO1+I,KAAOtQ,EACd0uJ,EAAaF,EAASC,EAASO,MAGjCvnL,EAAE+vB,QAAQxT,EAAE+hF,SAASltD,EAAMr0C,IAAI,SAAS2pE,GACtC,IAAInuC,EAAShc,EAAEmqD,KAAKA,GAChBz8C,EAAIy8C,EAAKz8C,EACTyiI,EAASnwI,EAAEtV,KAAKgjB,GACpByiI,EAAW,IAAKn0H,EAChB0uJ,EAAaF,EAASC,EAASt6B,MAGjCnwI,EAAE2wH,WAAW97F,EAAMr0C,GAEZwvJ,EAiCT,SAAS06B,EAAaF,EAASC,EAAS51I,GACjCA,EAAMvI,IAECuI,EAAU,GAGpB21I,EAAQ31I,EAAMvI,IAAMuI,EAAU,GAAI41I,GAASQ,QAAQp2I,GAFnD21I,EAAQA,EAAQhsL,OAAS,GAAGysL,QAAQp2I,GAFpC21I,EAAQ,GAAGS,QAAQp2I,K,cCxGvB,SAASs1I,IACP,IAAIe,EAAW,GACfA,EAASjhL,MAAQihL,EAASjqC,MAAQiqC,EAClCnvL,KAAKovL,UAAYD,EAkCnB,SAASE,EAAOv2I,GACdA,EAAMosG,MAAMh3I,MAAQ4qC,EAAM5qC,MAC1B4qC,EAAM5qC,MAAMg3I,MAAQpsG,EAAMosG,aACnBpsG,EAAM5qC,aACN4qC,EAAMosG,MAGf,SAASoqC,EAAe1lL,EAAGnF,GACzB,GAAU,UAANmF,GAAuB,UAANA,EACnB,OAAOnF,EAhDX7E,EAAOD,QAAUyuL,EAQjBA,EAAKpsL,UAAU8sL,QAAU,WACvB,IAAIK,EAAWnvL,KAAKovL,UAChBt2I,EAAQq2I,EAASjqC,MACrB,GAAIpsG,IAAUq2I,EAEZ,OADAE,EAAOv2I,GACAA,GAIXs1I,EAAKpsL,UAAUktL,QAAU,SAASp2I,GAChC,IAAIq2I,EAAWnvL,KAAKovL,UAChBt2I,EAAMosG,OAASpsG,EAAM5qC,OACvBmhL,EAAOv2I,GAETA,EAAM5qC,MAAQihL,EAASjhL,MACvBihL,EAASjhL,MAAMg3I,MAAQpsG,EACvBq2I,EAASjhL,MAAQ4qC,EACjBA,EAAMosG,MAAQiqC,GAGhBf,EAAKpsL,UAAUuiB,SAAW,WAIxB,IAHA,IAAIgrK,EAAO,GACPJ,EAAWnvL,KAAKovL,UAChBI,EAAOL,EAASjqC,MACbsqC,IAASL,GACdI,EAAK9nL,KAAK26B,KAAKC,UAAUmtJ,EAAMF,IAC/BE,EAAOA,EAAKtqC,MAEd,MAAO,IAAMqqC,EAAKp9K,KAAK,MAAQ,M,6BCvCjC,IAAIzK,EAAI,EAAQ,GACZg9F,EAAO,EAAQ,IAEnB9kG,EAAOD,QAAU,CACfu6F,IAoBF,SAAaj2E,GACXA,EAAEohF,QAAQoqF,YAAc,GACxB/nL,EAAE+vB,QAAQxT,EAAEivD,SAAS,SAAS9E,IAGhC,SAAuBnqD,EAAGmG,GACxB,IAYI06E,EAAOF,EAAOxkG,EAZdqE,EAAI2lB,EAAE3lB,EACNirL,EAAQzrK,EAAEtV,KAAKlK,GAAGwgG,KAClBtzE,EAAIvH,EAAEuH,EACNg+J,EAAQ1rK,EAAEtV,KAAKgjB,GAAGszE,KAClBtkG,EAAOypB,EAAEzpB,KACTivL,EAAY3rK,EAAEmqD,KAAKhkD,GACnBs+J,EAAYkH,EAAUlH,UAE1B,GAAIiH,IAAUD,EAAQ,EAAG,OAKzB,IAHAzrK,EAAE4wH,WAAWzqH,GAGRhqB,EAAI,IAAKsvL,EAAOA,EAAQC,IAASvvL,IAAKsvL,EACzCE,EAAUh3I,OAAS,GACnBgsD,EAAQ,CACNlyE,MAAO,EAAGC,OAAQ,EAClBi9J,UAAWA,EAAW17C,QAAS9pH,EAC/B66E,KAAMyqF,GAER5qF,EAAQJ,EAAKC,aAAa1gF,EAAG,OAAQ2gF,EAAO,MACxC8qF,IAAUhH,IACZ9jF,EAAMlyE,MAAQk9J,EAAUl9J,MACxBkyE,EAAMjyE,OAASi9J,EAAUj9J,OACzBiyE,EAAME,MAAQ,aACdF,EAAMmjF,SAAW6H,EAAU7H,UAE7B9jK,EAAEwhF,QAAQhhG,EAAGqgG,EAAO,CAAE7kE,OAAQ2vJ,EAAU3vJ,QAAUt/B,GACxC,IAANP,GACF6jB,EAAEohF,QAAQoqF,YAAYhoL,KAAKq9F,GAE7BrgG,EAAIqgG,EAGN7gF,EAAEwhF,QAAQhhG,EAAGktB,EAAG,CAAEsO,OAAQ2vJ,EAAU3vJ,QAAUt/B,GAtCRkvL,CAAc5rK,EAAGmqD,OArBvDk7G,KA8DF,SAAcrlK,GACZvc,EAAE+vB,QAAQxT,EAAEohF,QAAQoqF,aAAa,SAAShrL,GACxC,IAEIktB,EAFAhjB,EAAOsV,EAAEtV,KAAKlK,GACdqrL,EAAYnhL,EAAKihL,UAGrB,IADA3rK,EAAEwhF,QAAQ92F,EAAKulI,QAAS47C,GACjBnhL,EAAKm2F,OACVnzE,EAAI1N,EAAEixH,WAAWzwI,GAAG,GACpBwf,EAAE2wH,WAAWnwI,GACbqrL,EAAUl3I,OAAOnxC,KAAK,CAAE/E,EAAGiM,EAAKjM,EAAGoG,EAAG6F,EAAK7F,IACxB,eAAf6F,EAAKm2F,QACPgrF,EAAUptL,EAAIiM,EAAKjM,EACnBotL,EAAUhnL,EAAI6F,EAAK7F,EACnBgnL,EAAUp9J,MAAQ/jB,EAAK+jB,MACvBo9J,EAAUn9J,OAAShkB,EAAKgkB,QAE1BluB,EAAIktB,EACJhjB,EAAOsV,EAAEtV,KAAKlK,S,6BCpFpB,IACI68H,EADW,EAAQ,IACIA,YACvByuD,EAAe,EAAQ,KACvBC,EAAiB,EAAQ,KAE7BpwL,EAAOD,QAqBP,SAAcskB,GACZ,OAAOA,EAAEohF,QAAQ4qF,QACjB,IAAK,kBAAmBC,EAAqBjsK,GAAI,MACjD,IAAK,cASP,SAAyBA,GACvBq9G,EAAYr9G,GACZ8rK,EAAa9rK,GAXMksK,CAAgBlsK,GAAI,MACvC,IAAK,eAAgBmsK,EAAkBnsK,GAAI,MAC3C,QAASisK,EAAqBjsK,KAKhC,IAAImsK,EAAoB9uD,EAOxB,SAAS4uD,EAAqBjsK,GAC5B+rK,EAAe/rK,K,6BC5CjB,IAAIvc,EAAI,EAAQ,GACZqoL,EAAe,EAAQ,KACvBruD,EAAQ,EAAQ,IAAUA,MAC1B2uD,EAAW,EAAQ,IAAU/uD,YAC7BukD,EAAW,EAAQ,IAAe9gG,IAAI8gG,SACtCpwB,EAAY,EAAQ,IAAe1wE,IAAI0wE,UACvCvwD,EAAW,EAAQ,IAAWA,SA6ClC,SAAS8qF,EAAe/rK,GACtBA,EAAIihF,EAASjhF,GACbosK,EAASpsK,GACT,IAIImG,EAJA9oB,EAAIyuL,EAAa9rK,GAKrB,IAJAqsK,EAAiBhvL,GACjBivL,EAAcjvL,EAAG2iB,GAGTmG,EAAIomK,EAAUlvL,IAEpBmvL,EAAcnvL,EAAG2iB,EAAGmG,EADhBsmK,EAAUpvL,EAAG2iB,EAAGmG,IAQxB,SAASmmK,EAAcjvL,EAAG2iB,GACxB,IAAI0iF,EAAK8uD,EAAUn0J,EAAGA,EAAE0W,SACxB2uF,EAAKA,EAAG5hG,MAAM,EAAG4hG,EAAGlkG,OAAS,GAC7BiF,EAAE+vB,QAAQkvE,GAAI,SAASliG,IAKzB,SAAwBnD,EAAG2iB,EAAG3V,GAC5B,IACIR,EADWxM,EAAEqN,KAAKL,GACAR,OACtBxM,EAAE8sE,KAAK9/D,EAAOR,GAAQ6iL,SAAWC,EAAatvL,EAAG2iB,EAAG3V,GAPlDuiL,CAAevvL,EAAG2iB,EAAGxf,MAczB,SAASmsL,EAAatvL,EAAG2iB,EAAG3V,GAC1B,IACIR,EADWxM,EAAEqN,KAAKL,GACAR,OAElBgjL,GAAc,EAEdC,EAAY9sK,EAAEmqD,KAAK9/D,EAAOR,GAE1BkjL,EAAW,EAyBf,OAvBKD,IACHD,GAAc,EACdC,EAAY9sK,EAAEmqD,KAAKtgE,EAAQQ,IAG7B0iL,EAAWD,EAAU9wJ,OAErBv4B,EAAE+vB,QAAQxT,EAAEgyH,UAAU3nI,IAAQ,SAAS8b,GACrC,IAqHsB2pB,EAAGtvC,EArHrBwsL,EAAY7mK,EAAE3lB,IAAM6J,EACtBuqC,EAAQo4I,EAAY7mK,EAAEuH,EAAIvH,EAAE3lB,EAE9B,GAAIo0C,IAAU/qC,EAAQ,CACpB,IAAIojL,EAAeD,IAAcH,EAC/BK,EAAcltK,EAAEmqD,KAAKhkD,GAAG6V,OAG1B,GADA+wJ,GAAYE,EAAeC,GAAeA,EA8GtBp9I,EA7GFzlC,EA6GK7J,EA7GEo0C,EAAVv3C,EA8GPw0I,QAAQ/hG,EAAGtvC,GA9Gc,CAC/B,IAAI2sL,EAAgB9vL,EAAE8sE,KAAK9/D,EAAOuqC,GAAO83I,SACzCK,GAAYE,GAAgBE,EAAgBA,OAK3CJ,EAGT,SAASV,EAAiBhnJ,EAAM7pC,GAC1B2F,UAAU3C,OAAS,IACrBhD,EAAO6pC,EAAKtxB,QAAQ,IAEtBq5K,EAAgB/nJ,EAAM,GAAI,EAAG7pC,GAG/B,SAAS4xL,EAAgB/nJ,EAAMi4F,EAAS+vD,EAAS7sL,EAAGqJ,GAClD,IAAIyjL,EAAMD,EACN9rF,EAAQl8D,EAAK36B,KAAKlK,GAkBtB,OAhBA88H,EAAQ98H,IAAK,EACbiD,EAAE+vB,QAAQ6R,EAAK8rG,UAAU3wI,IAAI,SAASktB,GAC/BjqB,EAAE2zB,IAAIkmG,EAAS5vG,KAClB2/J,EAAUD,EAAgB/nJ,EAAMi4F,EAAS+vD,EAAS3/J,EAAGltB,OAIzD+gG,EAAM+rF,IAAMA,EACZ/rF,EAAMgsF,IAAMF,IACRxjL,EACF03F,EAAM13F,OAASA,SAGR03F,EAAM13F,OAGRwjL,EAGT,SAASd,EAAUlnJ,GACjB,OAAO5hC,EAAEgjC,KAAKpB,EAAK4pC,SAAS,SAAS9oD,GACnC,OAAOkf,EAAK8kC,KAAKhkD,GAAGumK,SAAW,KAInC,SAASD,EAAUpvL,EAAG2iB,EAAGmqD,GACvB,IAAI3pE,EAAI2pE,EAAK3pE,EACTktB,EAAIy8C,EAAKz8C,EAKR1N,EAAE6xH,QAAQrxI,EAAGktB,KAChBltB,EAAI2pE,EAAKz8C,EACTA,EAAIy8C,EAAK3pE,GAGX,IAAIgtL,EAASnwL,EAAEqN,KAAKlK,GAChBitL,EAASpwL,EAAEqN,KAAKgjB,GAChBggK,EAAYF,EACZG,GAAO,EAIPH,EAAOD,IAAME,EAAOF,MACtBG,EAAYD,EACZE,GAAO,GAGT,IAAIC,EAAanqL,EAAEiE,OAAOsY,EAAEivD,SAAS,SAAS9E,GAC5C,OAAOwjH,IAASE,EAAaxwL,EAAGA,EAAEqN,KAAKy/D,EAAK3pE,GAAIktL,IACzCC,IAASE,EAAaxwL,EAAGA,EAAEqN,KAAKy/D,EAAKz8C,GAAIggK,MAGlD,OAAOjqL,EAAE+9E,MAAMosG,GAAY,SAASzjH,GAAQ,OAAOszD,EAAMz9G,EAAGmqD,MAG9D,SAASqiH,EAAcnvL,EAAG2iB,EAAGmG,EAAG7nB,GAC9B,IAAIkC,EAAI2lB,EAAE3lB,EACNktB,EAAIvH,EAAEuH,EACVrwB,EAAEuzI,WAAWpwI,EAAGktB,GAChBrwB,EAAEmkG,QAAQljG,EAAEkC,EAAGlC,EAAEovB,EAAG,IACpB2+J,EAAiBhvL,GACjBivL,EAAcjvL,EAAG2iB,GAInB,SAAqB3iB,EAAG2iB,GACtB,IAAIxkB,EAAOiI,EAAEgjC,KAAKppC,EAAE0W,SAAS,SAASvT,GAAK,OAAQwf,EAAEtV,KAAKlK,GAAGqJ,UACzD64F,EAAKk/E,EAASvkL,EAAG7B,GACrBknG,EAAKA,EAAG5hG,MAAM,GACd2C,EAAE+vB,QAAQkvE,GAAI,SAASliG,GACrB,IAAIqJ,EAASxM,EAAEqN,KAAKlK,GAAGqJ,OACrBsgE,EAAOnqD,EAAEmqD,KAAK3pE,EAAGqJ,GACjBikL,GAAU,EAEP3jH,IACHA,EAAOnqD,EAAEmqD,KAAKtgE,EAAQrJ,GACtBstL,GAAU,GAGZ9tK,EAAEtV,KAAKlK,GAAGwgG,KAAOhhF,EAAEtV,KAAKb,GAAQm3F,MAAQ8sF,EAAU3jH,EAAKm3B,QAAUn3B,EAAKm3B,WAjBxEysF,CAAY1wL,EAAG2iB,GAgCjB,SAAS6tK,EAAaxoJ,EAAMmoJ,EAAQQ,GAClC,OAAOA,EAAUV,KAAOE,EAAOD,KAAOC,EAAOD,KAAOS,EAAUT,IA9NhE5xL,EAAOD,QAAUqwL,EAGjBA,EAAeM,iBAAmBA,EAClCN,EAAeO,cAAgBA,EAC/BP,EAAeY,aAAeA,EAC9BZ,EAAeQ,UAAYA,EAC3BR,EAAeU,UAAYA,EAC3BV,EAAeS,cAAgBA,G,gBClB/B,IAAI/oL,EAAI,EAAQ,GAEhB9H,EAAOD,QAEP,SAA2BskB,GACzB,IAAIiuK,EAoEN,SAAmBjuK,GACjB,IAAI8X,EAAS,GACTy1J,EAAM,EAEV,SAAShwD,EAAI/8H,GACX,IAAI8sL,EAAMC,EACV9pL,EAAE+vB,QAAQxT,EAAE6L,SAASrrB,GAAI+8H,GACzBzlG,EAAOt3B,GAAK,CAAE8sL,IAAKA,EAAKC,IAAKA,KAI/B,OAFA9pL,EAAE+vB,QAAQxT,EAAE6L,WAAY0xG,GAEjBzlG,EA/Ea05H,CAAUxxI,GAE9Bvc,EAAE+vB,QAAQxT,EAAEohF,QAAQoqF,aAAa,SAAShrL,GAUxC,IATA,IAAIkK,EAAOsV,EAAEtV,KAAKlK,GACdyvI,EAAUvlI,EAAKulI,QACfi+C,EAqCR,SAAkBluK,EAAGiuK,EAAeztL,EAAGktB,GACrC,IAII7jB,EACAskL,EALAC,EAAQ,GACRC,EAAQ,GACRf,EAAM5sL,KAAKE,IAAIqtL,EAAcztL,GAAG8sL,IAAKW,EAAcvgK,GAAG4/J,KACtDC,EAAM7sL,KAAKG,IAAIotL,EAAcztL,GAAG+sL,IAAKU,EAAcvgK,GAAG6/J,KAK1D1jL,EAASrJ,EACT,GACEqJ,EAASmW,EAAEnW,OAAOA,GAClBukL,EAAM5qL,KAAKqG,SACJA,IACCokL,EAAcpkL,GAAQyjL,IAAMA,GAAOC,EAAMU,EAAcpkL,GAAQ0jL,MACzEY,EAAMtkL,EAGNA,EAAS6jB,EACT,MAAQ7jB,EAASmW,EAAEnW,OAAOA,MAAaskL,GACrCE,EAAM7qL,KAAKqG,GAGb,MAAO,CAAEtD,KAAM6nL,EAAMrlL,OAAOslL,EAAM5sL,WAAY0sL,IAAKA,GA5DlCG,CAAStuK,EAAGiuK,EAAeh+C,EAAQzvI,EAAGyvI,EAAQviH,GACzDnnB,EAAO2nL,EAAS3nL,KAChB4nL,EAAMD,EAASC,IACfI,EAAU,EACVC,EAAQjoL,EAAKgoL,GACb7vL,GAAY,EAET8B,IAAMyvI,EAAQviH,GAAG,CAGtB,GAFAhjB,EAAOsV,EAAEtV,KAAKlK,GAEV9B,EAAW,CACb,MAAQ8vL,EAAQjoL,EAAKgoL,MAAcJ,GAC5BnuK,EAAEtV,KAAK8jL,GAAOztF,QAAUr2F,EAAKs2F,MAClCutF,IAGEC,IAAUL,IACZzvL,GAAY,GAIhB,IAAKA,EAAW,CACd,KAAO6vL,EAAUhoL,EAAK/H,OAAS,GACxBwhB,EAAEtV,KAAK8jL,EAAQjoL,EAAKgoL,EAAU,IAAIjK,SAAW55K,EAAKs2F,MACvDutF,IAEFC,EAAQjoL,EAAKgoL,GAGfvuK,EAAE8wH,UAAUtwI,EAAGguL,GACfhuL,EAAIwf,EAAEixH,WAAWzwI,GAAG,S,gBCxC1B,IAAIiD,EAAI,EAAQ,GACZg9F,EAAO,EAAQ,IAEnB9kG,EAAOD,QAAU,CACfu6F,IA2BF,SAAaj2E,GACX,IAAIxkB,EAAOilG,EAAKC,aAAa1gF,EAAG,OAAQ,GAAI,SACxCyuK,EAmEN,SAAoBzuK,GAClB,IAAIyuK,EAAS,GAWb,OADAhrL,EAAE+vB,QAAQxT,EAAE6L,YAAY,SAASrrB,IATjC,SAAS+8H,EAAI/8H,EAAGk3B,GACd,IAAI7L,EAAW7L,EAAE6L,SAASrrB,GACtBqrB,GAAYA,EAASrtB,QACvBiF,EAAE+vB,QAAQ3H,GAAU,SAASxhB,GAC3BkzH,EAAIlzH,EAAOqtB,EAAQ,MAGvB+2J,EAAOjuL,GAAKk3B,EAEwB6lG,CAAI/8H,EAAG,MACtCiuL,EA/EMC,CAAW1uK,GACpB0O,EAASjrB,EAAE5C,IAAI4C,EAAEzD,OAAOyuL,IAAW,EACnCE,EAAU,EAAIjgK,EAAS,EAE3B1O,EAAEohF,QAAQwtF,YAAcpzL,EAGxBiI,EAAE+vB,QAAQxT,EAAEivD,SAAS,SAAS9oD,GAAKnG,EAAEmqD,KAAKhkD,GAAGm7E,QAAUqtF,KAGvD,IAAI3yJ,EAwEN,SAAoBhc,GAClB,OAAOvc,EAAExD,OAAO+f,EAAEivD,SAAS,SAASwhB,EAAKtqE,GACvC,OAAOsqE,EAAMzwE,EAAEmqD,KAAKhkD,GAAG6V,SACtB,GA3EU6yJ,CAAW7uK,GAAK,EAG7Bvc,EAAE+vB,QAAQxT,EAAE6L,YAAY,SAASxhB,IASnC,SAASkzH,EAAIv9G,EAAGxkB,EAAMmzL,EAAS3yJ,EAAQtN,EAAQ+/J,EAAQjuL,GACrD,IAAIqrB,EAAW7L,EAAE6L,SAASrrB,GAC1B,IAAKqrB,EAASrtB,OAIZ,YAHIgC,IAAMhF,GACRwkB,EAAEwhF,QAAQhmG,EAAMgF,EAAG,CAAEw7B,OAAQ,EAAGslE,OAAQqtF,KAK5C,IAAIhqK,EAAM87E,EAAKkC,cAAc3iF,EAAG,OAC5B0lB,EAAS+6D,EAAKkC,cAAc3iF,EAAG,OAC/BuhF,EAAQvhF,EAAEtV,KAAKlK,GAEnBwf,EAAE8wH,UAAUnsH,EAAKnkB,GACjB+gG,EAAM8iF,UAAY1/J,EAClB3E,EAAE8wH,UAAUprG,EAAQllC,GACpB+gG,EAAMgjF,aAAe7+I,EAErBjiC,EAAE+vB,QAAQ3H,GAAU,SAASxhB,GAC3BkzH,EAAIv9G,EAAGxkB,EAAMmzL,EAAS3yJ,EAAQtN,EAAQ+/J,EAAQpkL,GAE9C,IAAIykL,EAAY9uK,EAAEtV,KAAKL,GACnB0kL,EAAWD,EAAUzK,UAAYyK,EAAUzK,UAAYh6K,EACvD2kL,EAAcF,EAAUvK,aAAeuK,EAAUvK,aAAel6K,EAChE4kL,EAAaH,EAAUzK,UAAYroJ,EAAS,EAAIA,EAChDslE,EAASytF,IAAaC,EAAc,EAAItgK,EAAS+/J,EAAOjuL,GAAK,EAEjEwf,EAAEwhF,QAAQ78E,EAAKoqK,EAAU,CACvB/yJ,OAAQizJ,EACR3tF,OAAQA,EACR4tF,aAAa,IAGflvK,EAAEwhF,QAAQwtF,EAAatpJ,EAAQ,CAC7B1J,OAAQizJ,EACR3tF,OAAQA,EACR4tF,aAAa,OAIZlvK,EAAEnW,OAAOrJ,IACZwf,EAAEwhF,QAAQhmG,EAAMmpB,EAAK,CAAEqX,OAAQ,EAAGslE,OAAQ5yE,EAAS+/J,EAAOjuL,KAjD1D+8H,CAAIv9G,EAAGxkB,EAAMmzL,EAAS3yJ,EAAQtN,EAAQ+/J,EAAQpkL,MAKhD2V,EAAEohF,QAAQqB,eAAiBksF,GA/C3B1tD,QAoHF,SAAiBjhH,GACf,IAAIwlK,EAAaxlK,EAAEohF,QACnBphF,EAAE2wH,WAAW60C,EAAWoJ,oBACjBpJ,EAAWoJ,YAClBnrL,EAAE+vB,QAAQxT,EAAEivD,SAAS,SAAS9oD,GACjBnG,EAAEmqD,KAAKhkD,GACT+oK,aACPlvK,EAAE4wH,WAAWzqH,S,gBChInB,IAAI1iB,EAAI,EAAQ,GACZg9F,EAAO,EAAQ,IA2BnB,SAASkC,EAAc3iF,EAAGq0J,EAAM/oK,EAAQ6jL,EAAIC,EAAQpuF,GAClD,IAAIO,EAAQ,CAAE9yE,MAAO,EAAGC,OAAQ,EAAGsyE,KAAMA,EAAMquF,WAAYhb,GACvDx/E,EAAOu6F,EAAO/a,GAAMrzE,EAAO,GAC3BuqF,EAAO9qF,EAAKC,aAAa1gF,EAAG,SAAUuhF,EAAOj2F,GACjD8jL,EAAO/a,GAAMrzE,GAAQuqF,EACrBvrK,EAAE8wH,UAAUy6C,EAAM4D,GACdt6F,GACF70E,EAAEwhF,QAAQ3M,EAAM02F,EAAM,CAAEvvJ,OAAQ,IAhCpCrgC,EAAOD,QAEP,SAA2BskB,GAoBzBvc,EAAE+vB,QAAQxT,EAAE6L,YAnBZ,SAAS0xG,EAAI/8H,GACX,IAAIqrB,EAAW7L,EAAE6L,SAASrrB,GACtBkK,EAAOsV,EAAEtV,KAAKlK,GAKlB,GAJIqrB,EAASrtB,QACXiF,EAAE+vB,QAAQ3H,EAAU0xG,GAGlB95H,EAAE2zB,IAAI1sB,EAAM,WAAY,CAC1BA,EAAKw6K,WAAa,GAClBx6K,EAAKy6K,YAAc,GACnB,IAAK,IAAInkF,EAAOt2F,EAAK45K,QAASvjF,EAAUr2F,EAAKq2F,QAAU,EACrDC,EAAOD,IACLC,EACF2B,EAAc3iF,EAAG,aAAc,MAAOxf,EAAGkK,EAAMs2F,GAC/C2B,EAAc3iF,EAAG,cAAe,MAAOxf,EAAGkK,EAAMs2F,S,6BClBxD,IAAIv9F,EAAI,EAAQ,GA0BhB,SAAS6rL,EAAgBtvK,GACvBvc,EAAE+vB,QAAQxT,EAAEjM,SAAS,SAASvT,GAAK+uL,EAAmBvvK,EAAEtV,KAAKlK,OAC7DiD,EAAE+vB,QAAQxT,EAAEivD,SAAS,SAAS9oD,GAAKopK,EAAmBvvK,EAAEmqD,KAAKhkD,OAG/D,SAASopK,EAAmB5uF,GAC1B,IAAIjzE,EAAIizE,EAAMlyE,MACdkyE,EAAMlyE,MAAQkyE,EAAMjyE,OACpBiyE,EAAMjyE,OAAShB,EAejB,SAAS8hK,EAAY7uF,GACnBA,EAAM97F,GAAK87F,EAAM97F,EAenB,SAAS4qL,EAAU9uF,GACjB,IAAIliG,EAAIkiG,EAAMliG,EACdkiG,EAAMliG,EAAIkiG,EAAM97F,EAChB87F,EAAM97F,EAAIpG,EAlEZ9C,EAAOD,QAAU,CACfqpL,OAIF,SAAgB/kK,GACd,IAAI0vK,EAAU1vK,EAAEohF,QAAQ2iF,QAAQtkK,cAChB,OAAZiwK,GAAgC,OAAZA,GACtBJ,EAAgBtvK,IANlBqlK,KAUF,SAAcrlK,GACZ,IAAI0vK,EAAU1vK,EAAEohF,QAAQ2iF,QAAQtkK,cAChB,OAAZiwK,GAAgC,OAAZA,GAqB1B,SAAkB1vK,GAChBvc,EAAE+vB,QAAQxT,EAAEjM,SAAS,SAASvT,GAAKgvL,EAAYxvK,EAAEtV,KAAKlK,OAEtDiD,EAAE+vB,QAAQxT,EAAEivD,SAAS,SAAS9oD,GAC5B,IAAIgkD,EAAOnqD,EAAEmqD,KAAKhkD,GAClB1iB,EAAE+vB,QAAQ22C,EAAKx1B,OAAQ66I,GACnB/rL,EAAE2zB,IAAI+yC,EAAM,MACdqlH,EAAYrlH,MA3BdwlH,CAAS3vK,GAGK,OAAZ0vK,GAAgC,OAAZA,KAiC1B,SAAgB1vK,GACdvc,EAAE+vB,QAAQxT,EAAEjM,SAAS,SAASvT,GAAKivL,EAAUzvK,EAAEtV,KAAKlK,OAEpDiD,EAAE+vB,QAAQxT,EAAEivD,SAAS,SAAS9oD,GAC5B,IAAIgkD,EAAOnqD,EAAEmqD,KAAKhkD,GAClB1iB,EAAE+vB,QAAQ22C,EAAKx1B,OAAQ86I,GACnBhsL,EAAE2zB,IAAI+yC,EAAM,MACdslH,EAAUtlH,MAvCZylH,CAAO5vK,GACPsvK,EAAgBtvK,O,6BCtBpB,IAAIvc,EAAI,EAAQ,GACZosL,EAAY,EAAQ,KACpBC,EAAa,EAAQ,KACrBC,EAAe,EAAQ,KACvBC,EAAkB,EAAQ,KAC1BC,EAAyB,EAAQ,KACjCpvG,EAAQ,EAAQ,IAAeA,MAC/B4f,EAAO,EAAQ,IA6CnB,SAASyvF,EAAiBlwK,EAAGmwK,EAAOC,GAClC,OAAO3sL,EAAE1C,IAAIovL,GAAO,SAASnvF,GAC3B,OAAOgvF,EAAgBhwK,EAAGghF,EAAMovF,MAIpC,SAASC,EAAiBC,EAAaC,GACrC,IAAIC,EAAK,IAAI3vG,EACbp9E,EAAE+vB,QAAQ88J,GAAa,SAASG,GAC9B,IAAIj1L,EAAOi1L,EAAGrvF,QAAQ5lG,KAClBk1L,EAASX,EAAaU,EAAIj1L,EAAMg1L,EAAID,GACxC9sL,EAAE+vB,QAAQk9J,EAAOhuF,IAAI,SAASliG,EAAGrE,GAC/Bs0L,EAAG/lL,KAAKlK,GAAGkG,MAAQvK,KAErB8zL,EAAuBQ,EAAID,EAAIE,EAAOhuF,OAI1C,SAASiuF,EAAY3wK,EAAGqiF,GACtB5+F,EAAE+vB,QAAQ6uE,GAAU,SAASsiF,GAC3BlhL,EAAE+vB,QAAQmxJ,GAAO,SAASnkL,EAAGrE,GAC3B6jB,EAAEtV,KAAKlK,GAAGkG,MAAQvK,QAhExBR,EAAOD,QAiBP,SAAeskB,GACb,IAAI+gF,EAAUN,EAAKM,QAAQ/gF,GACzB4wK,EAAkBV,EAAiBlwK,EAAGvc,EAAEpC,MAAM,EAAG0/F,EAAU,GAAI,WAC/D8vF,EAAgBX,EAAiBlwK,EAAGvc,EAAEpC,MAAM0/F,EAAU,GAAI,GAAI,GAAI,YAEhEsB,EAAWwtF,EAAU7vK,GACzB2wK,EAAY3wK,EAAGqiF,GAKf,IAHA,IACEyuF,EADEC,EAAS7lJ,OAAOsyF,kBAGXrhI,EAAI,EAAG60L,EAAW,EAAGA,EAAW,IAAK70L,IAAK60L,EAAU,CAC3DX,EAAiBl0L,EAAI,EAAIy0L,EAAkBC,EAAe10L,EAAI,GAAK,GAEnEkmG,EAAW5B,EAAK2B,iBAAiBpiF,GACjC,IAAIkiC,EAAK4tI,EAAW9vK,EAAGqiF,GACnBngD,EAAK6uI,IACPC,EAAW,EACXF,EAAOrtL,EAAEw9E,UAAUohB,GACnB0uF,EAAS7uI,GAIbyuI,EAAY3wK,EAAG8wK,K,6BCjDjB,IAAIrtL,EAAI,EAAQ,GAEhB9H,EAAOD,QAaP,SAAmBskB,GACjB,IAAIs9G,EAAU,GACV2zD,EAAcxtL,EAAEiE,OAAOsY,EAAEjM,SAAS,SAASvT,GAC7C,OAAQwf,EAAE6L,SAASrrB,GAAGhC,UAEpBuiG,EAAUt9F,EAAE5C,IAAI4C,EAAE1C,IAAIkwL,GAAa,SAASzwL,GAAK,OAAOwf,EAAEtV,KAAKlK,GAAGwgG,SAClEwB,EAAS/+F,EAAE1C,IAAI0C,EAAEpC,MAAM0/F,EAAU,IAAI,WAAa,MAAO,MAU7D,IAAImwF,EAAYztL,EAAEi+E,OAAOuvG,GAAa,SAASzwL,GAAK,OAAOwf,EAAEtV,KAAKlK,GAAGwgG,QAGrE,OAFAv9F,EAAE+vB,QAAQ09J,GATV,SAAS3zD,EAAI/8H,GACX,GAAIiD,EAAE2zB,IAAIkmG,EAAS98H,GAAI,OACvB88H,EAAQ98H,IAAK,EACb,IAAIkK,EAAOsV,EAAEtV,KAAKlK,GAClBgiG,EAAO93F,EAAKs2F,MAAMx9F,KAAKhD,GACvBiD,EAAE+vB,QAAQxT,EAAEixH,WAAWzwI,GAAI+8H,MAMtB/6B,I,6BClCT,IAAI/+F,EAAI,EAAQ,GA4BhB,SAAS0tL,EAAmBnxK,EAAGoxK,EAAYC,GAczC,IAVA,IAAIC,EAAW7tL,EAAEm+E,UAAUyvG,EACzB5tL,EAAE1C,IAAIswL,GAAY,SAAU7wL,EAAGrE,GAAK,OAAOA,MACzCo1L,EAAe9tL,EAAE09E,QAAQ19E,EAAE1C,IAAIqwL,GAAY,SAAS5wL,GACtD,OAAOiD,EAAEi+E,OAAOj+E,EAAE1C,IAAIif,EAAE+hF,SAASvhG,IAAI,SAAS2lB,GAC5C,MAAO,CAAE81E,IAAKq1F,EAASnrK,EAAEuH,GAAIsO,OAAQhc,EAAEmqD,KAAKhkD,GAAG6V,WAC7C,WACF,GAGAw1J,EAAa,EACVA,EAAaH,EAAW7yL,QAAQgzL,IAAe,EACtD,IAAIC,EAAW,EAAID,EAAa,EAChCA,GAAc,EACd,IAAInsJ,EAAO5hC,EAAE1C,IAAI,IAAIvB,MAAMiyL,IAAW,WAAa,OAAO,KAGtDvvI,EAAK,EAeT,OAdAz+C,EAAE+vB,QAAQ+9J,EAAa/9J,SAAQ,SAASqhB,GACtC,IAAIzkC,EAAQykC,EAAMonD,IAAMu1F,EACxBnsJ,EAAKj1B,IAAUykC,EAAM7Y,OAErB,IADA,IAAI01J,EAAY,EACTthL,EAAQ,GACTA,EAAQ,IACVshL,GAAarsJ,EAAKj1B,EAAQ,IAG5Bi1B,EADAj1B,EAASA,EAAQ,GAAM,IACRykC,EAAM7Y,OAEvBkmB,GAAMrN,EAAM7Y,OAAS01J,MAGhBxvI,EA7DTvmD,EAAOD,QAkBP,SAAoBskB,EAAGqiF,GAErB,IADA,IAAIngD,EAAK,EACA/lD,EAAI,EAAGA,EAAIkmG,EAAS7jG,SAAUrC,EACrC+lD,GAAMivI,EAAmBnxK,EAAGqiF,EAASlmG,EAAE,GAAIkmG,EAASlmG,IAEtD,OAAO+lD,I,gBC3BT,IAAIz+C,EAAI,EAAQ,GACZkuL,EAAa,EAAQ,KACrBC,EAAmB,EAAQ,KAC3BhuL,EAAO,EAAQ,KAEnBjI,EAAOD,QAEP,SAASq0L,EAAa/vK,EAAGxf,EAAGgwL,EAAID,GAC9B,IAAIsB,EAAU7xK,EAAE6L,SAASrrB,GACrBkK,EAAOsV,EAAEtV,KAAKlK,GACdm5B,EAAKjvB,EAAOA,EAAKw6K,gBAAa/4J,EAC9B89G,EAAKv/H,EAAOA,EAAKy6K,iBAAah5J,EAC9B2lK,EAAY,GAEZn4J,IACFk4J,EAAUpuL,EAAEiE,OAAOmqL,GAAS,SAASnkK,GACnC,OAAOA,IAAMiM,GAAMjM,IAAMu8G,MAI7B,IAAI8nD,EAAcJ,EAAW3xK,EAAG6xK,GAChCpuL,EAAE+vB,QAAQu+J,GAAa,SAASl9I,GAC9B,GAAI70B,EAAE6L,SAASgpB,EAAMr0C,GAAGhC,OAAQ,CAC9B,IAAIwzL,EAAiBjC,EAAa/vK,EAAG60B,EAAMr0C,EAAGgwL,EAAID,GAClDuB,EAAUj9I,EAAMr0C,GAAKwxL,EACjBvuL,EAAE2zB,IAAI46J,EAAgB,gBAwCNrlK,EAvCDkoB,EAuCSD,EAvCFo9I,EAwCzBvuL,EAAE49E,YAAY10D,EAAOglK,aAMxBhlK,EAAOglK,WAAa/8I,EAAM+8I,WAC1BhlK,EAAOqP,OAAS4Y,EAAM5Y,SANtBrP,EAAOglK,YAAchlK,EAAOglK,WAAahlK,EAAOqP,OAC3B4Y,EAAM+8I,WAAa/8I,EAAM5Y,SACzBrP,EAAOqP,OAAS4Y,EAAM5Y,QAC3CrP,EAAOqP,QAAU4Y,EAAM5Y,SAL3B,IAA0BrP,EAAQioB,KAlChC,IAAIvd,EAAUu6J,EAAiBG,EAAavB,IAuB9C,SAAyBn5J,EAASy6J,GAChCruL,EAAE+vB,QAAQ6D,GAAS,SAASwd,GAC1BA,EAAM6tD,GAAKj/F,EAAE09E,QAAQtsC,EAAM6tD,GAAG3hG,KAAI,SAASP,GACzC,OAAIsxL,EAAUtxL,GACLsxL,EAAUtxL,GAAGkiG,GAEfliG,MACL,MA7BNyxL,CAAgB56J,EAASy6J,GAEzB,IAAIh6J,EAASl0B,EAAKyzB,EAASk5J,GAE3B,GAAI52J,IACF7B,EAAO4qE,GAAKj/F,EAAE09E,QAAQ,CAACxnD,EAAI7B,EAAO4qE,GAAIunC,IAAK,GACvCjqH,EAAE+wH,aAAap3G,GAAIn7B,QAAQ,CAC7B,IAAI0zL,EAASlyK,EAAEtV,KAAKsV,EAAE+wH,aAAap3G,GAAI,IACrCw4J,EAASnyK,EAAEtV,KAAKsV,EAAE+wH,aAAa9G,GAAI,IAChCxmI,EAAE2zB,IAAIU,EAAQ,gBACjBA,EAAO65J,WAAa,EACpB75J,EAAOkE,OAAS,GAElBlE,EAAO65J,YAAc75J,EAAO65J,WAAa75J,EAAOkE,OAC3Bk2J,EAAOxrL,MAAQyrL,EAAOzrL,QAAUoxB,EAAOkE,OAAS,GACrElE,EAAOkE,QAAU,EAIrB,OAAOlE,I,gBCnDT,IAAIr0B,EAAI,EAAQ,GAEhB9H,EAAOD,QAEP,SAAoBskB,EAAG6xK,GACrB,OAAOpuL,EAAE1C,IAAI8wL,GAAS,SAASrxL,GAC7B,IAAIsxI,EAAM9xH,EAAEkiF,QAAQ1hG,GACpB,GAAKsxI,EAAItzI,OAEF,CACL,IAAIs5B,EAASr0B,EAAExD,OAAO6xI,GAAK,SAASrhD,EAAKtqE,GACvC,IAAIgkD,EAAOnqD,EAAEmqD,KAAKhkD,GAChBisK,EAAQpyK,EAAEtV,KAAKyb,EAAE3lB,GACnB,MAAO,CACLJ,IAAKqwF,EAAIrwF,IAAO+pE,EAAKnuC,OAASo2J,EAAM1rL,MACpCs1B,OAAQy0D,EAAIz0D,OAASmuC,EAAKnuC,UAE3B,CAAE57B,IAAK,EAAG47B,OAAQ,IAErB,MAAO,CACLx7B,EAAGA,EACHmxL,WAAY75J,EAAO13B,IAAM03B,EAAOkE,OAChCA,OAAQlE,EAAOkE,QAdjB,MAAO,CAAEx7B,EAAGA,Q,6BCNlB,IAAIiD,EAAI,EAAQ,GAEhB9H,EAAOD,QA2BP,SAA0B27B,EAASm5J,GACjC,IAAI6B,EAAgB,GA4BpB,OA3BA5uL,EAAE+vB,QAAQ6D,GAAS,SAASwd,EAAO14C,GACjC,IAAI03F,EAAMw+F,EAAcx9I,EAAMr0C,GAAK,CACjC8xL,SAAU,EACV,GAAM,GACNhmJ,IAAK,GACLo2D,GAAI,CAAC7tD,EAAMr0C,GACXrE,EAAGA,GAEAsH,EAAE49E,YAAYxsC,EAAM88I,cACvB99F,EAAI89F,WAAa98I,EAAM88I,WACvB99F,EAAI73D,OAAS6Y,EAAM7Y,WAIvBv4B,EAAE+vB,QAAQg9J,EAAGvhH,SAAS,SAAS9oD,GAC7B,IAAIosK,EAASF,EAAclsK,EAAE3lB,GACzBgyL,EAASH,EAAclsK,EAAEuH,GACxBjqB,EAAE49E,YAAYkxG,IAAY9uL,EAAE49E,YAAYmxG,KAC3CA,EAAOF,WACPC,EAAOjmJ,IAAI9oC,KAAK6uL,EAAclsK,EAAEuH,QAWtC,SAA4B+kK,GAC1B,IAAIp7J,EAAU,GAEd,SAASq7J,EAAS3iC,GAChB,OAAO,SAASi7B,GACVA,EAAOhnL,SAGPP,EAAE49E,YAAY2pG,EAAO2G,aACrBluL,EAAE49E,YAAY0uE,EAAO4hC,aACrB3G,EAAO2G,YAAc5hC,EAAO4hC,aA6BtC,SAAsBhlK,EAAQvJ,GAC5B,IAAIhjB,EAAM,EACN47B,EAAS,EAETrP,EAAOqP,SACT57B,GAAOusB,EAAOglK,WAAahlK,EAAOqP,OAClCA,GAAUrP,EAAOqP,QAGf5Y,EAAO4Y,SACT57B,GAAOgjB,EAAOuuK,WAAavuK,EAAO4Y,OAClCA,GAAU5Y,EAAO4Y,QAGnBrP,EAAO+1E,GAAKt/E,EAAOs/E,GAAG35F,OAAO4jB,EAAO+1E,IACpC/1E,EAAOglK,WAAavxL,EAAM47B,EAC1BrP,EAAOqP,OAASA,EAChBrP,EAAOxwB,EAAIuE,KAAKE,IAAIwiB,EAAOjnB,EAAGwwB,EAAOxwB,GACrCinB,EAAOpf,QAAS,EA9CV2uL,CAAa5iC,EAAQi7B,IAK3B,SAAS4H,EAAU7iC,GACjB,OAAO,SAASI,GACdA,EAAW,GAAE3sJ,KAAKusJ,GACQ,KAApBI,EAAOmiC,UACXG,EAAUjvL,KAAK2sJ,IAKrB,KAAOsiC,EAAUj0L,QAAQ,CACvB,IAAIq2C,EAAQ49I,EAAUpvL,MACtBg0B,EAAQ7zB,KAAKqxC,GACbpxC,EAAE+vB,QAAQqhB,EAAU,GAAEpzC,UAAWixL,EAAS79I,IAC1CpxC,EAAE+vB,QAAQqhB,EAAMvI,IAAKsmJ,EAAU/9I,IAGjC,OAAOpxC,EAAE1C,IAAI0C,EAAEiE,OAAO2vB,GAAS,SAASwd,GAAS,OAAQA,EAAM7wC,WAC7D,SAAS6wC,GACP,OAAOpxC,EAAEg+E,KAAK5sC,EAAO,CAAC,KAAM,IAAK,aAAc,cArC5Cg+I,CAJSpvL,EAAEiE,OAAO2qL,GAAe,SAASx9I,GAC/C,OAAQA,EAAMy9I,e,gBCzDlB,IAAI7uL,EAAI,EAAQ,GACZg9F,EAAO,EAAQ,IAmCnB,SAASqyF,EAAkBpwF,EAAIqwF,EAAY3iL,GAEzC,IADA,IAAIkxE,EACGyxG,EAAWv0L,SAAW8iF,EAAO79E,EAAE69E,KAAKyxG,IAAa52L,GAAKiU,GAC3D2iL,EAAW1vL,MACXq/F,EAAGl/F,KAAK89E,EAAKohB,IACbtyF,IAEF,OAAOA,EAxCTzU,EAAOD,QAEP,SAAc27B,EAASk5J,GACrB,IAAIlpF,EAAQ5G,EAAKx4C,UAAU5wB,GAAS,SAASwd,GAC3C,OAAOpxC,EAAE2zB,IAAIyd,EAAO,iBAElBm+I,EAAW3rF,EAAMxE,IACnBkwF,EAAatvL,EAAEi+E,OAAO2lB,EAAMvE,KAAK,SAASjuD,GAAS,OAAQA,EAAM14C,KACjEumG,EAAK,GACLtiG,EAAM,EACN47B,EAAS,EACTi3J,EAAU,EAEZD,EAASpvL,MA8BckkC,IA9BSyoJ,EA+BzB,SAASgC,EAAQC,GACtB,OAAID,EAAOZ,WAAaa,EAAOb,YACrB,EACCY,EAAOZ,WAAaa,EAAOb,WAC7B,EAGD7pJ,EAA6B0qJ,EAAOr2L,EAAIo2L,EAAOp2L,EAAxCo2L,EAAOp2L,EAAIq2L,EAAOr2L,KApCnC82L,EAAUH,EAAkBpwF,EAAIqwF,EAAYE,GAE5CxvL,EAAE+vB,QAAQw/J,GAAU,SAAUn+I,GAC5Bo+I,GAAWp+I,EAAM6tD,GAAGlkG,OACpBkkG,EAAGl/F,KAAKqxC,EAAM6tD,IACdtiG,GAAOy0C,EAAM88I,WAAa98I,EAAM7Y,OAChCA,GAAU6Y,EAAM7Y,OAChBi3J,EAAUH,EAAkBpwF,EAAIqwF,EAAYE,MAqBhD,IAAyBnrJ,EAlBvB,IAAIhQ,EAAS,CAAE4qE,GAAIj/F,EAAE09E,QAAQuhB,GAAI,IAC7B1mE,IACFlE,EAAO65J,WAAavxL,EAAM47B,EAC1BlE,EAAOkE,OAASA,GAElB,OAAOlE,I,gBCjCT,IAAIr0B,EAAI,EAAQ,GACZo9E,EAAQ,EAAQ,IAAeA,MAEnCllF,EAAOD,QAgCP,SAAyBskB,EAAGghF,EAAMovF,GAChC,IAAI50L,EAgCN,SAAwBwkB,GACtB,IAAIxf,EACJ,KAAOwf,EAAE4gF,QAASpgG,EAAIiD,EAAEk+E,SAAS,YACjC,OAAOnhF,EAnCI0yL,CAAelzK,GACxB8X,EAAS,IAAI+oD,EAAM,CAAEkuD,UAAU,IAAQ5tC,SAAS,CAAE3lG,KAAMA,IACrD80I,qBAAoB,SAAS9vI,GAAK,OAAOwf,EAAEtV,KAAKlK,MA2BrD,OAzBAiD,EAAE+vB,QAAQxT,EAAEjM,SAAS,SAASvT,GAC5B,IAAIkK,EAAOsV,EAAEtV,KAAKlK,GAChBqJ,EAASmW,EAAEnW,OAAOrJ,IAEhBkK,EAAKs2F,OAASA,GAAQt2F,EAAK45K,SAAWtjF,GAAQA,GAAQt2F,EAAKq2F,WAC7DjpE,EAAOgpE,QAAQtgG,GACfs3B,EAAOg5G,UAAUtwI,EAAGqJ,GAAUrO,GAG9BiI,EAAE+vB,QAAQxT,EAAEowK,GAAc5vL,IAAI,SAAS2lB,GACrC,IAAI2pB,EAAI3pB,EAAE3lB,IAAMA,EAAI2lB,EAAEuH,EAAIvH,EAAE3lB,EAC1B2pE,EAAOryC,EAAOqyC,KAAKr6B,EAAGtvC,GACtBw7B,EAAUv4B,EAAE49E,YAAYlX,GAAsB,EAAdA,EAAKnuC,OACvClE,EAAO0pE,QAAQ1xD,EAAGtvC,EAAG,CAAEw7B,OAAQhc,EAAEmqD,KAAKhkD,GAAG6V,OAASA,OAGhDv4B,EAAE2zB,IAAI1sB,EAAM,YACdotB,EAAOgpE,QAAQtgG,EAAG,CAChB0kL,WAAYx6K,EAAKw6K,WAAWlkF,GAC5BmkF,YAAaz6K,EAAKy6K,YAAYnkF,SAM/BlpE,I,gBCjET,IAAIr0B,EAAI,EAAQ,GAEhB9H,EAAOD,QAEP,SAAgCskB,EAAGwwK,EAAI9tF,GACrC,IACEywF,EADEt+F,EAAO,GAGXpxF,EAAE+vB,QAAQkvE,GAAI,SAASliG,GAIrB,IAHA,IACEqJ,EACAupL,EAFE/oL,EAAQ2V,EAAEnW,OAAOrJ,GAGd6J,GAAO,CASZ,IARAR,EAASmW,EAAEnW,OAAOQ,KAEhB+oL,EAAYv+F,EAAKhrF,GACjBgrF,EAAKhrF,GAAUQ,IAEf+oL,EAAYD,EACZA,EAAW9oL,GAET+oL,GAAaA,IAAc/oL,EAE7B,YADAmmL,EAAGhvF,QAAQ4xF,EAAW/oL,GAGxBA,EAAQR,Q,6BCvBd,IAAIpG,EAAI,EAAQ,GACZg9F,EAAO,EAAQ,IACf4yF,EAAY,EAAQ,KAAQA,UAEhC13L,EAAOD,QAEP,SAAkBskB,IASlB,SAAmBA,GACjB,IAAIqiF,EAAW5B,EAAK2B,iBAAiBpiF,GACjCszK,EAAUtzK,EAAEohF,QAAQyiF,QACpB0P,EAAQ,EACZ9vL,EAAE+vB,QAAQ6uE,GAAU,SAASsiF,GAC3B,IAAI6O,EAAY/vL,EAAE5C,IAAI4C,EAAE1C,IAAI4jL,GAAO,SAASnkL,GAAK,OAAOwf,EAAEtV,KAAKlK,GAAGkuB,WAClEjrB,EAAE+vB,QAAQmxJ,GAAO,SAASnkL,GACxBwf,EAAEtV,KAAKlK,GAAGqE,EAAI0uL,EAAQC,EAAY,KAEpCD,GAASC,EAAYF,MAfvBG,CAFAzzK,EAAIygF,EAAKgB,mBAAmBzhF,IAG5Bvc,EAAE+vB,QAAQ6/J,EAAUrzK,IAAI,SAASvhB,EAAG+B,GAClCwf,EAAEtV,KAAKlK,GAAG/B,EAAIA,O,6BCXlB,IAAIgF,EAAI,EAAQ,GACZo9E,EAAQ,EAAQ,IAAeA,MAC/B4f,EAAO,EAAQ,IAqCnB,SAASizF,EAAmB1zK,EAAGqiF,GAC7B,IAAIsxF,EAAY,GAqChB,OADAlwL,EAAExD,OAAOoiG,GAlCT,SAAoBuxF,EAAWjP,GAC7B,IAGE7yG,EAAK,EAGL+hH,EAAU,EACVC,EAAkBF,EAAUp1L,OAC5Bu1L,EAAWtwL,EAAE69E,KAAKqjG,GAsBpB,OApBAlhL,EAAE+vB,QAAQmxJ,GAAO,SAASnkL,EAAGrE,GAC3B,IAAIuxB,EAuEV,SAAmC1N,EAAGxf,GACpC,GAAIwf,EAAEtV,KAAKlK,GAAGqgG,MACZ,OAAOp9F,EAAEgjC,KAAKzmB,EAAE+wH,aAAavwI,IAAI,SAASsvC,GACxC,OAAO9vB,EAAEtV,KAAKolC,GAAG+wD,SA1ETmzF,CAA0Bh0K,EAAGxf,GACnC4wE,EAAK1jD,EAAI1N,EAAEtV,KAAKgjB,GAAGhnB,MAAQotL,GAEzBpmK,GAAKltB,IAAMuzL,KACbtwL,EAAE+vB,QAAQmxJ,EAAM7jL,MAAM+yL,EAAS13L,EAAG,IAAI,SAAS83L,GAC7CxwL,EAAE+vB,QAAQxT,EAAE+wH,aAAakjD,IAAW,SAASnkJ,GAC3C,IAAIokJ,EAASl0K,EAAEtV,KAAKolC,GAClBqkJ,EAAOD,EAAOxtL,QACXytL,EAAOriH,GAAMV,EAAK+iH,IACjBD,EAAOrzF,OAAS7gF,EAAEtV,KAAKupL,GAAUpzF,OACrCuzF,EAAYT,EAAW7jJ,EAAGmkJ,SAIhCJ,EAAU13L,EAAI,EACd21E,EAAKV,MAIFuzG,KAIFgP,EAGT,SAASU,EAAmBr0K,EAAGqiF,GAC7B,IAAIsxF,EAAY,GAEhB,SAASW,EAAKC,EAAOjD,EAAUkD,EAAUC,EAAiBC,GACxD,IAAIl0L,EACJiD,EAAE+vB,QAAQ/vB,EAAEpC,MAAMiwL,EAAUkD,IAAW,SAASr4L,GAC9CqE,EAAI+zL,EAAMp4L,GACN6jB,EAAEtV,KAAKlK,GAAGqgG,OACZp9F,EAAE+vB,QAAQxT,EAAE+wH,aAAavwI,IAAI,SAASsvC,GACpC,IAAI6kJ,EAAQ30K,EAAEtV,KAAKolC,GACf6kJ,EAAM9zF,QACL8zF,EAAMjuL,MAAQ+tL,GAAmBE,EAAMjuL,MAAQguL,IAClDN,EAAYT,EAAW7jJ,EAAGtvC,SA8BpC,OADAiD,EAAExD,OAAOoiG,GArBT,SAAoBuyF,EAAOL,GACzB,IACEM,EADEC,GAAgB,EAElBxD,EAAW,EAeb,OAbA7tL,EAAE+vB,QAAQ+gK,GAAO,SAAS/zL,EAAGu0L,GAC3B,GAAwB,WAApB/0K,EAAEtV,KAAKlK,GAAGqgG,MAAoB,CAChC,IAAIkwC,EAAe/wH,EAAE+wH,aAAavwI,GAC9BuwI,EAAavyI,SACfq2L,EAAe70K,EAAEtV,KAAKqmI,EAAa,IAAIrqI,MACvC4tL,EAAKC,EAAOjD,EAAUyD,EAAgBD,EAAcD,GACpDvD,EAAWyD,EACXD,EAAeD,GAGnBP,EAAKC,EAAOjD,EAAUiD,EAAM/1L,OAAQq2L,EAAcD,EAAMp2L,WAGnD+1L,KAIFZ,EAWT,SAASS,EAAYT,EAAWnzL,EAAGktB,GACjC,GAAIltB,EAAIktB,EAAG,CACT,IAAImmE,EAAMrzF,EACVA,EAAIktB,EACJA,EAAImmE,EAGN,IAAImhG,EAAarB,EAAUnzL,GACtBw0L,IACHrB,EAAUnzL,GAAKw0L,EAAa,IAE9BA,EAAWtnK,IAAK,EAGlB,SAASunK,EAAYtB,EAAWnzL,EAAGktB,GACjC,GAAIltB,EAAIktB,EAAG,CACT,IAAImmE,EAAMrzF,EACVA,EAAIktB,EACJA,EAAImmE,EAEN,OAAOpwF,EAAE2zB,IAAIu8J,EAAUnzL,GAAIktB,GAW7B,SAASwnK,EAAkBl1K,EAAGqiF,EAAUsxF,EAAWwB,GACjD,IAAI35L,EAAO,GACT2uC,EAAQ,GACR8xD,EAAM,GAkCR,OA7BAx4F,EAAE+vB,QAAQ6uE,GAAU,SAASsiF,GAC3BlhL,EAAE+vB,QAAQmxJ,GAAO,SAASnkL,EAAGkG,GAC3BlL,EAAKgF,GAAKA,EACV2pC,EAAM3pC,GAAKA,EACXy7F,EAAIz7F,GAAKkG,QAIbjD,EAAE+vB,QAAQ6uE,GAAU,SAASsiF,GAC3B,IAAIyQ,GAAW,EACf3xL,EAAE+vB,QAAQmxJ,GAAO,SAASnkL,GACxB,IAAIitF,EAAK0nG,EAAW30L,GACpB,GAAIitF,EAAGjvF,OAGL,IADA,IAAI62L,IADJ5nG,EAAKhqF,EAAEi+E,OAAO+L,GAAI,SAAS//D,GAAK,OAAOuuE,EAAIvuE,OAC9BlvB,OAAS,GAAK,EAClBrC,EAAIuE,KAAKoB,MAAMuzL,GAAKC,EAAK50L,KAAKU,KAAKi0L,GAAKl5L,GAAKm5L,IAAMn5L,EAAG,CAC7D,IAAIuxB,EAAI+/D,EAAGtxF,GACPguC,EAAM3pC,KAAOA,GACb40L,EAAUn5F,EAAIvuE,KACbunK,EAAYtB,EAAWnzL,EAAGktB,KAC7Byc,EAAMzc,GAAKltB,EACX2pC,EAAM3pC,GAAKhF,EAAKgF,GAAKhF,EAAKkyB,GAC1B0nK,EAAUn5F,EAAIvuE,WAOjB,CAAElyB,KAAMA,EAAM2uC,MAAOA,GAG9B,SAASorJ,EAAqBv1K,EAAGqiF,EAAU7mG,EAAM2uC,EAAOqrJ,GAMtD,IAAIhuF,EAAK,GACPiuF,EAmDJ,SAAyBz1K,EAAGqiF,EAAU7mG,EAAMg6L,GAC1C,IAAIE,EAAa,IAAI70G,EACnB2kG,EAAaxlK,EAAEohF,QACfu0F,EA+GJ,SAAahH,EAASiH,EAASJ,GAC7B,OAAO,SAASx1K,EAAGxf,EAAGktB,GACpB,IAGIxtB,EAHAstL,EAASxtK,EAAEtV,KAAKlK,GAChBitL,EAASztK,EAAEtV,KAAKgjB,GAChBttB,EAAM,EAIV,GADAA,GAAOotL,EAAO/+J,MAAQ,EAClBhrB,EAAE2zB,IAAIo2J,EAAQ,YAChB,OAAQA,EAAO1J,SAASrkK,eACxB,IAAK,IAAKvf,GAASstL,EAAO/+J,MAAQ,EAAG,MACrC,IAAK,IAAKvuB,EAAQstL,EAAO/+J,MAAQ,EAYnC,GATIvuB,IACFE,GAAOo1L,EAAat1L,GAASA,GAE/BA,EAAQ,EAERE,IAAQotL,EAAO3sF,MAAQ+0F,EAAUjH,GAAW,EAC5CvuL,IAAQqtL,EAAO5sF,MAAQ+0F,EAAUjH,GAAW,EAE5CvuL,GAAOqtL,EAAOh/J,MAAQ,EAClBhrB,EAAE2zB,IAAIq2J,EAAQ,YAChB,OAAQA,EAAO3J,SAASrkK,eACxB,IAAK,IAAKvf,EAAQutL,EAAOh/J,MAAQ,EAAG,MACpC,IAAK,IAAKvuB,GAASutL,EAAOh/J,MAAQ,EAQpC,OALIvuB,IACFE,GAAOo1L,EAAat1L,GAASA,GAE/BA,EAAQ,EAEDE,GAjJC8nG,CAAIs9E,EAAWiB,QAASjB,EAAWgB,QAASgP,GAgBtD,OAdA/xL,EAAE+vB,QAAQ6uE,GAAU,SAASsiF,GAC3B,IAAI70I,EACJrsC,EAAE+vB,QAAQmxJ,GAAO,SAASnkL,GACxB,IAAIq1L,EAAQr6L,EAAKgF,GAEjB,GADAk1L,EAAW50F,QAAQ+0F,GACf/lJ,EAAG,CACL,IAAIgmJ,EAAQt6L,EAAKs0C,GACfimJ,EAAUL,EAAWvrH,KAAK2rH,EAAOD,GACnCH,EAAWl0F,QAAQs0F,EAAOD,EAAOn1L,KAAKG,IAAI80L,EAAM31K,EAAGxf,EAAGsvC,GAAIimJ,GAAW,IAEvEjmJ,EAAItvC,QAIDk1L,EAtEIM,CAAgBh2K,EAAGqiF,EAAU7mG,EAAMg6L,GAC5CnG,EAAamG,EAAa,aAAe,cAE3C,SAASS,EAAQC,EAAWC,GAI1B,IAHA,IAAIhuH,EAAQstH,EAAO1hL,QACf4/J,EAAOxrG,EAAM9kE,MACbi6H,EAAU,GACPq2C,GACDr2C,EAAQq2C,GACVuiB,EAAUviB,IAEVr2C,EAAQq2C,IAAQ,EAChBxrG,EAAM3kE,KAAKmwK,GACXxrG,EAAQA,EAAMp/D,OAAOotL,EAAcxiB,KAGrCA,EAAOxrG,EAAM9kE,MA+BjB,OARA4yL,GAlBA,SAAetiB,GACbnsE,EAAGmsE,GAAQ8hB,EAAOvzF,QAAQyxE,GAAM1zK,QAAO,SAASwwF,EAAKtqE,GACnD,OAAOzlB,KAAKG,IAAI4vF,EAAK+W,EAAGrhF,EAAE3lB,GAAKi1L,EAAOtrH,KAAKhkD,MAC1C,KAeUsvK,EAAO1kD,aAAapzI,KAAK83L,IACxCQ,GAZA,SAAetiB,GACb,IAAI/yK,EAAM60L,EAAO1zF,SAAS4xE,GAAM1zK,QAAO,SAASwwF,EAAKtqE,GACnD,OAAOzlB,KAAKE,IAAI6vF,EAAK+W,EAAGrhF,EAAEuH,GAAK+nK,EAAOtrH,KAAKhkD,MAC1C+kB,OAAOsyF,mBAEN9yH,EAAOsV,EAAEtV,KAAKipK,GACd/yK,IAAQsqC,OAAOsyF,mBAAqB9yH,EAAK2kL,aAAeA,IAC1D7nF,EAAGmsE,GAAQjzK,KAAKG,IAAI2mG,EAAGmsE,GAAO/yK,MAKnB60L,EAAOxkD,WAAWtzI,KAAK83L,IAGtChyL,EAAE+vB,QAAQ2W,GAAO,SAAS3pC,GACxBgnG,EAAGhnG,GAAKgnG,EAAGhsG,EAAKgF,OAGXgnG,EA6BT,SAAS4uF,EAA2Bp2K,EAAGq2K,GACrC,OAAO5yL,EAAE+9E,MAAM/9E,EAAEzD,OAAOq2L,IAAM,SAAU7uF,GACtC,IAAI3mG,EAAMqqC,OAAOorJ,kBACb11L,EAAMsqC,OAAOsyF,kBASjB,OAPA/5H,EAAE29E,MAAMomB,GAAI,SAAU/oG,EAAG+B,GACvB,IAAI+1L,EAyHV,SAAev2K,EAAGxf,GAChB,OAAOwf,EAAEtV,KAAKlK,GAAGiuB,MA1HGA,CAAMzO,EAAGxf,GAAK,EAE9BK,EAAMH,KAAKG,IAAIpC,EAAI83L,EAAW11L,GAC9BD,EAAMF,KAAKE,IAAInC,EAAI83L,EAAW31L,MAGzBC,EAAMD,KAWjB,SAAS41L,EAAiBH,EAAKI,GAC7B,IAAIC,EAAcjzL,EAAEzD,OAAOy2L,GACzBE,EAAalzL,EAAE7C,IAAI81L,GACnBE,EAAanzL,EAAE5C,IAAI61L,GAErBjzL,EAAE+vB,QAAQ,CAAC,IAAK,MAAM,SAASqjK,GAC7BpzL,EAAE+vB,QAAQ,CAAC,IAAK,MAAM,SAASsjK,GAC7B,IAEE52L,EAFE62L,EAAYF,EAAOC,EACrBtvF,EAAK6uF,EAAIU,GAEX,GAAIvvF,IAAOivF,EAAX,CAEA,IAAIO,EAASvzL,EAAEzD,OAAOwnG,IACtBtnG,EAAkB,MAAV42L,EAAgBH,EAAalzL,EAAE7C,IAAIo2L,GAAUJ,EAAanzL,EAAE5C,IAAIm2L,MAGtEX,EAAIU,GAAatzL,EAAE89E,UAAUimB,GAAI,SAAS/oG,GAAK,OAAOA,EAAIyB,aAMlE,SAAS+2L,EAAQZ,EAAKlsJ,GACpB,OAAO1mC,EAAE89E,UAAU80G,EAAIa,IAAI,SAASC,EAAQ32L,GAC1C,GAAI2pC,EACF,OAAOksJ,EAAIlsJ,EAAM1qB,eAAejf,GAEhC,IAAIgnG,EAAK/jG,EAAEi+E,OAAOj+E,EAAE1C,IAAIs1L,EAAK71L,IAC7B,OAAQgnG,EAAG,GAAKA,EAAG,IAAM,KAzU/B7rG,EAAOD,QAAU,CACf23L,UA6UF,SAAmBrzK,GACjB,IAMIo3K,EANA/0F,EAAW5B,EAAK2B,iBAAiBpiF,GACjC2zK,EAAYlwL,EAAE2D,MAChBssL,EAAmB1zK,EAAGqiF,GACtBgyF,EAAmBr0K,EAAGqiF,IAEpBg0F,EAAM,GAEV5yL,EAAE+vB,QAAQ,CAAC,IAAK,MAAM,SAASqjK,GAC7BO,EAA4B,MAATP,EAAex0F,EAAW5+F,EAAEzD,OAAOqiG,GAAU5gG,UAChEgC,EAAE+vB,QAAQ,CAAC,IAAK,MAAM,SAASsjK,GACf,MAAVA,IACFM,EAAmB3zL,EAAE1C,IAAIq2L,GAAkB,SAAS9rB,GAClD,OAAO7nK,EAAEzD,OAAOsrK,GAAO7pK,cAI3B,IAAI0zL,GAAuB,MAAT0B,EAAe72K,EAAE+wH,aAAe/wH,EAAEixH,YAAYtzI,KAAKqiB,GACjEmqB,EAAQ+qJ,EAAkBl1K,EAAGo3K,EAAkBzD,EAAWwB,GAC1D3tF,EAAK+tF,EAAqBv1K,EAAGo3K,EAC/BjtJ,EAAM3uC,KAAM2uC,EAAMA,MAAiB,MAAV2sJ,GACb,MAAVA,IACFtvF,EAAK/jG,EAAE89E,UAAUimB,GAAI,SAAS/oG,GAAK,OAAQA,MAE7C43L,EAAIQ,EAAOC,GAAStvF,QAIxB,IAAI6vF,EAAgBjB,EAA2Bp2K,EAAGq2K,GAElD,OADAG,EAAiBH,EAAKgB,GACfJ,EAAQZ,EAAKr2K,EAAEohF,QAAQj3D,QA1W9BupJ,mBAAoBA,EACpBW,mBAAoBA,EACpBD,YAAaA,EACba,YAAaA,EACbC,kBAAmBA,EACnBK,qBAAsBA,EACtBiB,iBAAkBA,EAClBJ,2BAA4BA,EAC5Ba,QAASA,I,gBCrBX,IAAIxzL,EAAI,EAAQ,GACZg9F,EAAO,EAAQ,IACf5f,EAAQ,EAAQ,IAAcA,MAElCllF,EAAOD,QAAU,CACf47L,cAIF,SAAuBt3K,GACrB,IAAIu3K,EAAc92F,EAAK2B,iBAAiBpiF,GAEpCO,EAAI,IAAIsgE,EAAM,CAAEkuD,UAAU,EAAMrtC,YAAY,IAAQP,SAAS,IAoBjE,OAlBA19F,EAAE+vB,QAAQxT,EAAEjM,SAAS,SAASvT,GAC5B+f,EAAEugF,QAAQtgG,EAAG,CAAE+gG,MAAO/gG,IACtB+f,EAAEuwH,UAAUtwI,EAAG,QAAUwf,EAAEtV,KAAKlK,GAAGwgG,SAGrCv9F,EAAE+vB,QAAQxT,EAAEivD,SAAS,SAAS9oD,GAC5B5F,EAAEihF,QAAQr7E,EAAE3lB,EAAG2lB,EAAEuH,EAAG,GAAIvH,EAAEzpB,SAG5B+G,EAAE+vB,QAAQ+jK,GAAa,SAAS5S,EAAOxoL,GACrC,IAAIq7L,EAAS,QAAUr7L,EACvBokB,EAAEugF,QAAQ02F,EAAQ,CAAEx2F,KAAM,SAC1Bv9F,EAAExD,OAAO0kL,GAAO,SAAS70I,EAAGtvC,GAE1B,OADA+f,EAAEihF,QAAQ1xD,EAAGtvC,EAAG,CAAEgM,MAAO,UAClBhM,QAIJ+f,K,cChCT5kB,EAAOD,QAAU,S,gBCAjBC,EAAOD,QAAU,CACfgP,KAAM,EAAQ,KACd6pC,OAAQ,EAAQ,KAChBkjJ,QAAS,EAAQ,KACjBp8J,QAAS,EAAQ,KACjB7W,KAAM,EAAQ,O,cC8DhB,SAASkzK,EAASnxI,EAAIC,GACpB,OAAOD,EAAKC,EAAK,EApEnB7qD,EAAOD,QAMP,SAAuBu5C,EAAI2uB,EAAIxrB,EAAIiuH,GAIjC,IAAIzyI,EAAI+yB,EAAIjN,EAAImN,EAAI/O,EAAIC,EACpBwO,EAAIC,EAAKE,EAAIixI,EACbC,EAAO7yL,EAAQ29E,EAenB,GAVA9uD,EAAKgwC,EAAG/+D,EAAIowC,EAAGpwC,EACf60C,EAAKzE,EAAGx2C,EAAImlE,EAAGnlE,EACfq5C,EAAM8rB,EAAGnlE,EAAIw2C,EAAGpwC,EAAMowC,EAAGx2C,EAAImlE,EAAG/+D,EAGhC6hD,EAAO9yB,EAAKwkB,EAAG35C,EAAMi7C,EAAKtB,EAAGvzC,EAAKizC,EAClC6/I,EAAO/jK,EAAKyyI,EAAG5nK,EAAMi7C,EAAK2sH,EAAGxhK,EAAKizC,EAItB,IAAP4O,GAAqB,IAAPixI,GAAaD,EAAShxI,EAAIixI,GAC3C,OAeF,GAXAhxI,EAAK0/G,EAAGxhK,EAAIuzC,EAAGvzC,EACfgiD,EAAKzO,EAAG35C,EAAI4nK,EAAG5nK,EACfs5C,EAAMsuH,EAAG5nK,EAAI25C,EAAGvzC,EAAMuzC,EAAG35C,EAAI4nK,EAAGxhK,EAGhC0hD,EAAMI,EAAK1R,EAAGx2C,EAAMooD,EAAK5R,EAAGpwC,EAAKkzC,EACjCyO,EAAMG,EAAKid,EAAGnlE,EAAMooD,EAAK+c,EAAG/+D,EAAKkzC,EAKrB,IAAPwO,GAAqB,IAAPC,GAAckxI,EAASnxI,EAAIC,GAC5C,OAKF,GAAc,KADdoxI,EAAShkK,EAAKizB,EAAOF,EAAKjN,GAExB,OAcF,OAXA30C,EAASrE,KAAK4B,IAAIs1L,EAAQ,GAWnB,CAAEn5L,GANTikF,EAAOhpC,EAAK3B,EAAO8O,EAAK/O,GACb,GAAO4qC,EAAM39E,GAAU6yL,GAAWl1G,EAAM39E,GAAU6yL,EAK9C/yL,GAHf69E,EAAO/7B,EAAK7O,EAAOlkB,EAAKmkB,GACb,GAAO2qC,EAAM39E,GAAU6yL,GAAWl1G,EAAM39E,GAAU6yL,K,gBC9D/D,IAAIn0L,EAAI,EAAQ,IACZwjD,EAAK,EAAQ,IACb65D,EAAS,EAAQ,KAAWA,OAEhCnlH,EAAOD,QAGP,WACE,IAAIm8L,EAAc,EAAQ,KACtBC,EAAiB,EAAQ,KACzBC,EAAmB,EAAQ,KAC3BC,EAAkB,EAAQ,KAC1BC,EAAgB,EAAQ,KACxBC,EAAqB,EAAQ,KAC7BC,EAAmB,EAAQ,KAC3BC,EAAS,EAAQ,KACjBC,EAAS,EAAQ,KAEjBz1F,EAAK,SAAS13F,EAAK8U,IA2EzB,SAAyBA,GACvBA,EAAEjM,QAAQyf,SAAQ,SAAShzB,GACzB,IAAIkK,EAAOsV,EAAEtV,KAAKlK,GACbiD,EAAE2zB,IAAI1sB,EAAM,UAAasV,EAAE6L,SAASrrB,GAAGhC,SAAUkM,EAAK62F,MAAQ/gG,GAE/DiD,EAAE2zB,IAAI1sB,EAAM,aACdjH,EAAEy9E,SAASx2E,EAAM,CACf0gD,YAAa1gD,EAAK4tL,SAClBptI,aAAcxgD,EAAK4tL,WAInB70L,EAAE2zB,IAAI1sB,EAAM,aACdjH,EAAEy9E,SAASx2E,EAAM,CACfugD,WAAYvgD,EAAK6tL,SACjBptI,cAAezgD,EAAK6tL,WAIpB90L,EAAE2zB,IAAI1sB,EAAM,YACdjH,EAAEy9E,SAASx2E,EAAM,CACf0gD,YAAa1gD,EAAK8hC,QAClB0e,aAAcxgD,EAAK8hC,QACnBye,WAAYvgD,EAAK8hC,QACjB2e,cAAezgD,EAAK8hC,UAIxB/oC,EAAEy9E,SAASx2E,EAAM8tL,GAEjB/0L,EAAEkE,KAAK,CAAC,cAAe,eAAgB,aAAc,kBAAkB,SAAShC,GAC9E+E,EAAK/E,GAAKulC,OAAOxgC,EAAK/E,OAIpBlC,EAAE2zB,IAAI1sB,EAAM,WAAYA,EAAK+tL,WAAa/tL,EAAK+jB,OAC/ChrB,EAAE2zB,IAAI1sB,EAAM,YAAaA,EAAKguL,YAAchuL,EAAKgkB,WAGvD1O,EAAEivD,QAAQz7C,SAAQ,SAASrN,GACzB,IAAIgkD,EAAOnqD,EAAEmqD,KAAKhkD,GACb1iB,EAAE2zB,IAAI+yC,EAAM,WAAYA,EAAKo3B,MAAQ,IAC1C99F,EAAEy9E,SAAS/W,EAAMwuH,MApHjBC,CAAgB54K,GAEhB,IAAI64K,EAAcC,EAAoB5tL,EAAK,UACvC6tL,EAAgBD,EAAoBD,EAAa,YACjDG,EAAiBF,EAAoBD,EAAa,aAClDI,EAAalB,EAAiBe,EAAoBD,EAAa,cAAe74K,GAC9EjM,EAAQ8jL,EAAYiB,EAAoBD,EAAa,SAAU74K,EAAGo4K,GAEtEt3E,EAAO9gG,GAEPi4K,EAAclkL,EAAOiM,GACrBk4K,EAAmBe,EAAYj5K,GAC/Bg4K,EAAgBgB,EAAgBh5K,EAAGq4K,GAEnC,IAAIa,EAAWpB,EAAeiB,EAAe/4K,GAC7Cm4K,EAAiBe,EAAUl5K,GAyG/B,SAA0BA,GACxBvc,EAAEkE,KAAKqY,EAAEjM,SAAS,SAASvT,GACzB,IAAIkK,EAAOsV,EAAEtV,KAAKlK,GAGdiD,EAAE2zB,IAAI1sB,EAAM,cACdA,EAAK+jB,MAAQ/jB,EAAK+tL,kBAEX/tL,EAAK+jB,MAGVhrB,EAAE2zB,IAAI1sB,EAAM,eACdA,EAAKgkB,OAAShkB,EAAKguL,mBAEZhuL,EAAKgkB,cAGPhkB,EAAK+tL,kBACL/tL,EAAKguL,eAzHZS,CAAiBn5K,IAuCnB,OApCA4iF,EAAGi1F,YAAc,SAASz6L,GACxB,OAAK+D,UAAU3C,QACfq5L,EAAcz6L,EACPwlG,GAFuBi1F,GAKhCj1F,EAAGk1F,eAAiB,SAAS16L,GAC3B,OAAK+D,UAAU3C,QACfs5L,EAAiB16L,EACVwlG,GAFuBk1F,GAKhCl1F,EAAGm1F,iBAAmB,SAAS36L,GAC7B,OAAK+D,UAAU3C,QACfu5L,EAAmB36L,EACZwlG,GAFuBm1F,GAKhCn1F,EAAGo1F,gBAAkB,SAAS56L,GAC5B,OAAK+D,UAAU3C,QACfw5L,EAAkB56L,EACXwlG,GAFuBo1F,GAKhCp1F,EAAGw1F,OAAS,SAASh7L,GACnB,OAAK+D,UAAU3C,QACf45L,EAASh7L,EACFwlG,GAFuBw1F,GAKhCx1F,EAAGy1F,OAAS,SAASj7L,GACnB,OAAK+D,UAAU3C,QACf65L,EAASj7L,EACFwlG,GAFuBy1F,GAKzBz1F,GAGT,IAAI41F,EAAqB,CACvBptI,YAAa,GACbF,aAAc,GACdD,WAAY,GACZE,cAAe,GACf4f,GAAI,EACJC,GAAI,EACJouH,MAAO,QAGLT,EAAqB,CACvBU,UAAW,SACXp3H,MAAOhb,EAAGqyI,aAuEZ,SAASR,EAAoBt9L,EAAMkB,GACjC,IAAI4J,EAAY9K,EAAK0L,OAAO,KAAOxK,GAInC,OAHI4J,EAAU0N,UACZ1N,EAAY9K,EAAKuL,OAAO,KAAKC,KAAK,QAAStK,IAEtC4J,I,6BCpKT,IAAI7C,EAAI,EAAQ,IACZ81L,EAAW,EAAQ,KACnB94F,EAAO,EAAQ,IACfx5C,EAAK,EAAQ,IAEjBtrD,EAAOD,QAEP,SAAqB4K,EAAW0Z,EAAGo4K,GACjC,IAiDIoB,EAjDAvI,EAAcjxK,EAAEjM,QAAQrM,QAAO,SAASlH,GAAK,OAAQigG,EAAK8D,WAAWvkF,EAAGxf,MACxEi5L,EAAWnzL,EAAUE,UAAU,UAChC1D,KAAKmuL,GAAa,SAASzwL,GAAK,OAAOA,KACvC0T,QAAQ,UAAU,GAErBulL,EAAS7yL,OAAOa,SAEhBgyL,EAAS3yL,QAAQC,OAAO,KACrBC,KAAK,QAAS,QACdwF,MAAM,UAAW,IAEpBitL,EAAWnzL,EAAUE,UAAU,WAEtBmB,MAAK,SAASnH,GACrB,IAAIkK,EAAOsV,EAAEtV,KAAKlK,GACdk5L,EAAYzyI,EAAG//C,OAAOnL,MAC1B0kG,EAAKoE,WAAW60F,EAAWhvL,EAAY,OACpCgvL,EAAUxlL,QAAQ,UAAY,UAAY,IAAM,QAEnDwlL,EAAUxyL,OAAO,WAAWO,SAC5B,IAAIkyL,EAAaD,EAAU3yL,OAAO,KAAKC,KAAK,QAAS,SACjD4yL,EAAWL,EAASI,EAAYjvL,GAChC0uL,EAAQhB,EAAO1tL,EAAK0uL,OACpBS,EAAOp2L,EAAEg+E,KAAKm4G,EAASlvL,OAAO2pI,UAAW,QAAS,UAEtD3pI,EAAKipK,KAAO53K,KAER2O,EAAKyc,IAAMuyK,EAAU1yL,KAAK,KAAM0D,EAAKyc,IACrCzc,EAAKovL,SAAWH,EAAW3yL,KAAK,KAAM0D,EAAKovL,SAE3Cr2L,EAAE2zB,IAAI1sB,EAAM,WAAYmvL,EAAKprK,MAAQ/jB,EAAK+jB,OAC1ChrB,EAAE2zB,IAAI1sB,EAAM,YAAamvL,EAAKnrK,OAAShkB,EAAKgkB,QAEhDmrK,EAAKprK,OAAS/jB,EAAK0gD,YAAc1gD,EAAKwgD,aACtC2uI,EAAKnrK,QAAUhkB,EAAKugD,WAAavgD,EAAKygD,cACtCwuI,EAAW3yL,KAAK,YAAa,cACzB0D,EAAK0gD,YAAc1gD,EAAKwgD,cAAgB,EAAK,KAC7CxgD,EAAKugD,WAAavgD,EAAKygD,eAAiB,EAAK,KAEjD,IAAI3vD,EAAOyrD,EAAG//C,OAAOnL,MACrBP,EAAK0L,OAAO,oBAAoBO,SAChC,IAAIsyL,EAAWX,EAAM59L,EAAMq+L,EAAMnvL,GAAMwJ,QAAQ,mBAAmB,GAClEusF,EAAKiE,WAAWq1F,EAAUrvL,EAAK8B,OAE/B,IAAIwtL,EAAYD,EAASrvL,OAAO2pI,UAChC3pI,EAAK+jB,MAAQurK,EAAUvrK,MACvB/jB,EAAKgkB,OAASsrK,EAAUtrK,UAMxB8qK,EADEC,EAAS7yL,KACK6yL,EAAS7yL,OAET6yL,EAASjzL,UAAU,MAOrC,OAJAi6F,EAAKuE,gBAAgBw0F,EAAex5K,GACjCxT,MAAM,UAAW,GACjB/E,SAEIgyL,I,gBCvET,IAAIh5F,EAAO,EAAQ,IAEnB9kG,EAAOD,QAKP,SAAsBF,EAAMkP,GAI1B,IAHA,IAAIuvL,EAAUz+L,EAAKuL,OAAO,QAEtBytC,EAcN,SAAgCrtC,GAI9B,IAHA,IAEIs2E,EAFAy8G,EAAU,GACVC,GAAU,EAELh+L,EAAI,EAAGA,EAAIgL,EAAK3I,SAAUrC,EAEjC,GADAshF,EAAKt2E,EAAKhL,GACNg+L,EAAS,CACX,OAAO18G,GACP,IAAK,IAAKy8G,GAAW,KAAM,MAC3B,QAASA,GAAWz8G,EAEpB08G,GAAU,MACM,OAAP18G,EACT08G,GAAU,EAEVD,GAAWz8G,EAGf,OAAOy8G,EAhCKE,CAAuB1vL,EAAK62F,OAAO74F,MAAM,MAC5CvM,EAAI,EAAGA,EAAIq4C,EAAMh2C,OAAQrC,IAChC89L,EAAQlzL,OAAO,SACZC,KAAK,YAAa,YAClBA,KAAK,KAAM,OACXA,KAAK,IAAK,KACVG,KAAKqtC,EAAMr4C,IAKhB,OAFAskG,EAAKiE,WAAWu1F,EAASvvL,EAAK0nH,YAEvB6nE,I,gBCrBT,IAAIx5F,EAAO,EAAQ,IAEnB9kG,EAAOD,QAEP,SAAqBF,EAAMkP,GACzB,IAAIuvL,EAAUz+L,EAMd,OAJAy+L,EAAQvvL,OAAON,YAAYM,EAAK62F,OAEhCd,EAAKiE,WAAWu1F,EAASvvL,EAAK0nH,YAEvB6nE,I,gBCXT,IAAIx5F,EAAO,EAAQ,IACfx5C,EAAK,EAAQ,IACbsyI,EAAW,EAAQ,KAEvB59L,EAAOD,QAEP,SAAwB4K,EAAW0Z,GACjC,IAgCIw5K,EAhCAN,EAAWl5K,EAAEjM,QAAQrM,QAAO,SAASlH,GAAK,OAAOigG,EAAK8D,WAAWvkF,EAAGxf,MACpE65L,EAAc/zL,EAAUE,UAAU,aACnC1D,KAAKo2L,GAAU,SAAS14L,GAAK,OAAOA,KAEvC65L,EAAY7zL,UAAU,KAAKiB,SAC3B4yL,EAAYvzL,QAAQC,OAAO,KACxBC,KAAK,QAAS,WACdA,KAAK,MAAK,SAASxG,GAElB,OADWwf,EAAEtV,KAAKlK,GACN2mB,MAEb3a,MAAM,UAAW,GAEpB6tL,EAAc/zL,EAAUE,UAAU,aAElCi6F,EAAKuE,gBAAgBq1F,EAAar6K,GAC/BxT,MAAM,UAAW,GAEpB6tL,EAAY1yL,MAAK,SAASnH,GACxB,IAAIkK,EAAOsV,EAAEtV,KAAKlK,GACdk5L,EAAYzyI,EAAG//C,OAAOnL,MAC1BkrD,EAAG//C,OAAOnL,MAAMgL,OAAO,QACvB,IAAI4yL,EAAaD,EAAU3yL,OAAO,KAAKC,KAAK,QAAS,SACrDuyL,EAASI,EAAYjvL,EAAMA,EAAK4vL,oBAGlCD,EAAY7zL,UAAU,QAAQmB,MAAK,SAASnL,GAC1C,IAAIkO,EAAOsV,EAAEtV,KAAKlO,GACd+9L,EAAatzI,EAAG//C,OAAOnL,MAC3B0kG,EAAKiE,WAAW61F,EAAY7vL,EAAK8B,UAMjCgtL,EADEa,EAAYzzL,KACEyzL,EAAYzzL,OAEZyzL,EAAY7zL,UAAU,MAOxC,OAJAi6F,EAAKuE,gBAAgBw0F,EAAex5K,GACjCxT,MAAM,UAAW,GACjB/E,SAEI4yL,I,6BCjDT,IAAI52L,EAAI,EAAQ,IACZ81L,EAAW,EAAQ,KACnB94F,EAAO,EAAQ,IACfx5C,EAAK,EAAQ,IAEjBtrD,EAAOD,QAEP,SAA0B4K,EAAW0Z,GACnC,IAuBIw5K,EAvBAgB,EAAgBl0L,EAAUE,UAAU,eACrC1D,KAAKkd,EAAEivD,SAAS,SAAS9oD,GAAK,OAAOs6E,EAAK+D,SAASr+E,MACnDjS,QAAQ,UAAU,GAErBsmL,EAAc5zL,OAAOa,SACrB+yL,EAAc1zL,QAAQC,OAAO,KAC1BmN,QAAQ,aAAa,GACrB1H,MAAM,UAAW,IAEpBguL,EAAgBl0L,EAAUE,UAAU,gBAEtBmB,MAAK,SAASwe,GAC1B,IAAI3qB,EAAOyrD,EAAG//C,OAAOnL,MACrBP,EAAK0L,OAAO,UAAUO,SACtB,IAAI0iE,EAAOnqD,EAAEmqD,KAAKhkD,GACdo7E,EAAQg4F,EAAS/9L,EAAMwkB,EAAEmqD,KAAKhkD,GAAI,EAAG,GAAGjS,QAAQ,SAAS,GACzD2lL,EAAOt4F,EAAM72F,OAAO2pI,UAEpBlqE,EAAK2vH,SAAWv4F,EAAMv6F,KAAK,KAAMmjE,EAAK2vH,SACrCr2L,EAAE2zB,IAAI+yC,EAAM,WAAYA,EAAK17C,MAAQorK,EAAKprK,OAC1ChrB,EAAE2zB,IAAI+yC,EAAM,YAAaA,EAAKz7C,OAASmrK,EAAKnrK,WAMjD8qK,EADEgB,EAAc5zL,KACA4zL,EAAc5zL,OAEd4zL,EAAch0L,UAAU,MAO1C,OAJAi6F,EAAKuE,gBAAgBw0F,EAAex5K,GACjCxT,MAAM,UAAW,GACjB/E,SAEI+yL,I,6BC3CT,IAAI/2L,EAAI,EAAQ,IACZg3L,EAAgB,EAAQ,KACxBh6F,EAAO,EAAQ,IACfx5C,EAAK,EAAQ,IAyEjB,SAASyzI,EAAWvwH,EAAMx1B,GACxB,IAAI1tC,GAAQggD,EAAGhgD,MAAQggD,EAAG/7C,IAAIjE,QAC3BxI,GAAE,SAAShC,GAAK,OAAOA,EAAEgC,KACzBoG,GAAE,SAASpI,GAAK,OAAOA,EAAEoI,KAI5B,OAFCoC,EAAKg7D,OAASh7D,EAAK2iB,aAAaugD,EAAKlI,OAE/Bh7D,EAAK0tC,GA/Edh5C,EAAOD,QAEP,SAAyB4K,EAAW0Z,EAAGq4K,GACrC,IAAIsC,EAAgBr0L,EAAUE,UAAU,cACrC1D,KAAKkd,EAAEivD,SAAS,SAAS9oD,GAAK,OAAOs6E,EAAK+D,SAASr+E,MACnDjS,QAAQ,UAAU,GAEjB0mL,EAoFN,SAAeC,EAAU76K,GACvB,IAAI86K,EAAgBD,EAAS/zL,QAAQC,OAAO,KACzCC,KAAK,QAAS,YACdwF,MAAM,UAAW,GAUpB,OATAsuL,EAAc/zL,OAAO,QAClBC,KAAK,QAAS,QACdA,KAAK,KAAK,SAASmf,GAClB,IAAIgkD,EAAOnqD,EAAEmqD,KAAKhkD,GACd40K,EAAa/6K,EAAEtV,KAAKyb,EAAE3lB,GAAGmzK,KAE7B,OAAO+mB,EAAWvwH,EADL1mE,EAAEpC,MAAM8oE,EAAKx1B,OAAOn2C,QAAQuC,KAAI,WAAa,OAjB1D84L,GADalmB,EAkB8DonB,GAjB/D1mD,UAKT,CAAE51I,GAJL+F,EAASmvK,EAAK3vJ,gBAAgBM,eAC/BC,UACAy2K,SAASrnB,EAAKrvJ,gBACd0E,UAAU6wK,EAAKprK,MAAQ,EAAGorK,EAAKnrK,OAAS,IACxBvI,EAAGthB,EAAGL,EAAOlG,GANlC,IAAmBq1K,EACbkmB,EACAr1L,SAmBJs2L,EAAc/zL,OAAO,QACd+zL,EAjGQh0L,CAAM6zL,EAAe36K,IAoGtC,SAAc66K,EAAU76K,GACtB,IAAIi7K,EAAcJ,EAASj0L,OAC3B65F,EAAKuE,gBAAgBi2F,EAAaj7K,GAC/BxT,MAAM,UAAW,GACjB/E,SAvGHb,CAAK+zL,EAAe36K,GAEpB,IAAI66K,OAAmC1uK,IAAxBwuK,EAAcvzL,MAAsBuzL,EAAcvzL,MAAMwzL,GAAYD,EA2CnF,OA1CAl6F,EAAKuE,gBAAgB61F,EAAU76K,GAC5BxT,MAAM,UAAW,GAGpBquL,EAASlzL,MAAK,SAASwe,GACrB,IAAI+0K,EAAUj0I,EAAG//C,OAAOnL,MACpBouE,EAAOnqD,EAAEmqD,KAAKhkD,GAClBgkD,EAAKwpG,KAAO53K,KAERouE,EAAKhjD,IACP+zK,EAAQl0L,KAAK,KAAMmjE,EAAKhjD,IAG1Bs5E,EAAKoE,WAAWq2F,EAAS/wH,EAAY,OAClC+wH,EAAQhnL,QAAQ,UAAY,UAAY,IAAM,eAGnD2mL,EAASr0L,UAAU,aAChBmB,MAAK,SAASwe,GACb,IAAIgkD,EAAOnqD,EAAEmqD,KAAKhkD,GAClBgkD,EAAKgxH,YAAc13L,EAAEk+E,SAAS,aAE9B,IAAIu5G,EAAUj0I,EAAG//C,OAAOnL,MACrBiL,KAAK,cAAc,WAClB,MAAO,QAqBQ+2H,EArBiBtuD,SAAS2rH,KAqBrBC,EArB2BlxH,EAAKgxH,YAsB9Cp9D,EAAIr1H,MAAM,KAAK,GACZ,IAAM2yL,GAvBoD,IAqB7E,IAAyBt9D,EAAKs9D,KAnBrB7uL,MAAM,OAAQ,QAEjBi0F,EAAKuE,gBAAgBk2F,EAASl7K,GAC3BhZ,KAAK,KAAK,SAASmf,GAAK,OAqBjC,SAAoBnG,EAAGmG,GACrB,IAAIgkD,EAAOnqD,EAAEmqD,KAAKhkD,GACdgxH,EAAOn3H,EAAEtV,KAAKyb,EAAE3lB,GAChBk2I,EAAO12H,EAAEtV,KAAKyb,EAAEuH,GAChBinB,EAASw1B,EAAKx1B,OAAO7zC,MAAM,EAAGqpE,EAAKx1B,OAAOn2C,OAAS,GAIvD,OAHAm2C,EAAOzZ,QAAQu/J,EAActjD,EAAMxiG,EAAO,KAC1CA,EAAOnxC,KAAKi3L,EAAc/jD,EAAM/hG,EAAOA,EAAOn2C,OAAS,KAEhDk8L,EAAWvwH,EAAMx1B,GA7Bc2mJ,CAAWt7K,EAAGmG,MAEhDs6E,EAAKiE,WAAWw2F,EAAS/wH,EAAK39D,UAGlCquL,EAASr0L,UAAU,UAAUiB,SAC7BozL,EAASr0L,UAAU,QAChBmB,MAAK,SAASwe,GACb,IAAIgkD,EAAOnqD,EAAEmqD,KAAKhkD,IAElBkzK,EADgBhB,EAAOluH,EAAKkvH,YAClBpyI,EAAG//C,OAAOnL,MAAOouE,EAAKgxH,YAAahxH,EAAM,gBAGhD0wH,I,6BCzDT,IAAIp6F,EAAO,EAAQ,IACfx5C,EAAK,EAAQ,IAEjBtrD,EAAOD,QAEP,SAAuB4K,EAAW0Z,GAGhC,SAASgJ,EAAUxoB,GACjB,IAAIkK,EAAOsV,EAAEtV,KAAKlK,GAClB,MAAO,aAAekK,EAAKjM,EAAI,IAAMiM,EAAK7F,EAAI,IAJlCyB,EAAUoB,QAAO,WAAa,OAAQu/C,EAAG//C,OAAOnL,MAAMmY,QAAQ,aAOpElN,KAAK,YAAagiB,GAE1By3E,EAAKuE,gBAAgB1+F,EAAW0Z,GAC7BxT,MAAM,UAAW,GACjBxF,KAAK,YAAagiB,K,6BCjBvB,IAAIy3E,EAAO,EAAQ,IACfx5C,EAAK,EAAQ,IACbxjD,EAAI,EAAQ,IAEhB9H,EAAOD,QAEP,SAA4B4K,EAAW0Z,GAGrC,SAASgJ,EAAU7C,GACjB,IAAIgkD,EAAOnqD,EAAEmqD,KAAKhkD,GAClB,OAAO1iB,EAAE2zB,IAAI+yC,EAAM,KAAO,aAAeA,EAAK1rE,EAAI,IAAM0rE,EAAKtlE,EAAI,IAAM,GAJ3DyB,EAAUoB,QAAO,WAAa,OAAQu/C,EAAG//C,OAAOnL,MAAMmY,QAAQ,aAOpElN,KAAK,YAAagiB,GAE1By3E,EAAKuE,gBAAgB1+F,EAAW0Z,GAC7BxT,MAAM,UAAW,GACjBxF,KAAK,YAAagiB,K,6BClBvB,IAAIy3E,EAAO,EAAQ,IACfx5C,EAAK,EAAQ,IAEjBtrD,EAAOD,QAEP,SAA0B4K,EAAW0Z,GACnC,IAAIu7K,EAAUj1L,EAAUoB,QAAO,WAAa,OAAQu/C,EAAG//C,OAAOnL,MAAMmY,QAAQ,aAE5E,SAAS8U,EAAUxoB,GACjB,IAAIkK,EAAOsV,EAAEtV,KAAKlK,GAClB,MAAO,aAAekK,EAAKjM,EAAI,IAAMiM,EAAK7F,EAAI,IAGhD02L,EAAQv0L,KAAK,YAAagiB,GAE1By3E,EAAKuE,gBAAgB1+F,EAAW0Z,GAC7BxT,MAAM,UAAW,GACjBxF,KAAK,YAAagiB,GAErBy3E,EAAKuE,gBAAgBu2F,EAAQ/0L,UAAU,QAASwZ,GAC7ChZ,KAAK,SAAS,SAASxG,GAAK,OAAOwf,EAAEtV,KAAKlK,GAAGiuB,SAC7CznB,KAAK,UAAU,SAASxG,GAAK,OAAOwf,EAAEtV,KAAKlK,GAAGkuB,UAC9C1nB,KAAK,KAAK,SAASxG,GAElB,OADWwf,EAAEtV,KAAKlK,GACLiuB,MAAQ,KAEtBznB,KAAK,KAAK,SAASxG,GAElB,OADWwf,EAAEtV,KAAKlK,GACLkuB,OAAS,O,6BC5B5B,IAAIyzE,EAAgB,EAAQ,KACxBqwD,EAAmB,EAAQ,KAC3BgpC,EAAkB,EAAQ,KAC1BC,EAAmB,EAAQ,KAE/B9/L,EAAOD,QAAU,CACf8oB,KAMF,SAAc3a,EAAQgwL,EAAMnvL,GAC1B,IAAIqvL,EAAWlwL,EAAOxC,OAAO,OAAQ,gBAClCL,KAAK,KAAM0D,EAAKqgE,IAChB/jE,KAAK,KAAM0D,EAAKsgE,IAChBhkE,KAAK,KAAM6yL,EAAKprK,MAAQ,GACxBznB,KAAK,KAAM6yL,EAAKnrK,OAAS,GACzB1nB,KAAK,QAAS6yL,EAAKprK,OACnBznB,KAAK,SAAU6yL,EAAKnrK,QAMvB,OAJAhkB,EAAK8sC,UAAY,SAAStzB,GACxB,OAAOi+E,EAAcz3F,EAAMwZ,IAGtB61K,GAlBPtC,QAqBF,SAAiB5tL,EAAQgwL,EAAMnvL,GAC7B,IAAIqgE,EAAK8uH,EAAKprK,MAAQ,EAClBu8C,EAAK6uH,EAAKnrK,OAAS,EACnBqrK,EAAWlwL,EAAOxC,OAAO,UAAW,gBACrCL,KAAK,KAAM6yL,EAAKprK,MAAQ,GACxBznB,KAAK,KAAM6yL,EAAKnrK,OAAS,GACzB1nB,KAAK,KAAM+jE,GACX/jE,KAAK,KAAMgkE,GAMd,OAJAtgE,EAAK8sC,UAAY,SAAStzB,GACxB,OAAOsuI,EAAiB9nJ,EAAMqgE,EAAIC,EAAI9mD,IAGjC61K,GAjCPxlJ,OAoCF,SAAgB1qC,EAAQgwL,EAAMnvL,GAC5B,IAAIzN,EAAIyD,KAAKG,IAAIg5L,EAAKprK,MAAOorK,EAAKnrK,QAAU,EACxCqrK,EAAWlwL,EAAOxC,OAAO,SAAU,gBACpCL,KAAK,KAAM6yL,EAAKprK,MAAQ,GACxBznB,KAAK,KAAM6yL,EAAKnrK,OAAS,GACzB1nB,KAAK,IAAK/J,GAMb,OAJAyN,EAAK8sC,UAAY,SAAStzB,GACxB,OAAOs3K,EAAgB9wL,EAAMzN,EAAGinB,IAG3B61K,GA9CPx1H,QAoDF,SAAiB16D,EAAQgwL,EAAMnvL,GAC7B,IAAIgjB,EAAKmsK,EAAKprK,MAAQ/tB,KAAKurD,MAAS,EAChC1rC,EAAKs5K,EAAKnrK,OAAShuB,KAAKurD,MAAS,EACjCtX,EAAS,CACX,CAAEl2C,EAAI,EAAGoG,GAAI0b,GACb,CAAE9hB,GAAIivB,EAAG7oB,EAAI,GACb,CAAEpG,EAAI,EAAGoG,EAAI0b,GACb,CAAE9hB,EAAIivB,EAAG7oB,EAAI,IAEXk1L,EAAWlwL,EAAOxC,OAAO,UAAW,gBACrCL,KAAK,SAAU2tC,EAAO5zC,KAAI,SAAS9C,GAAK,OAAOA,EAAEQ,EAAI,IAAMR,EAAE4G,KAAMqJ,KAAK,MAM3E,OAJAxD,EAAK8sC,UAAY,SAASv5C,GACxB,OAAOw9L,EAAiB/wL,EAAMiqC,EAAQ12C,IAGjC87L,K,gBC/ET,IAAIt5F,EAAO,EAAQ,IASnB,SAASzvD,EAAOnnC,EAAQsd,EAAIgjD,EAAMvhE,GAChC,IAUIrC,EAVSsD,EAAO9C,OAAO,UACxBC,KAAK,KAAMmgB,GACXngB,KAAK,UAAW,aAChBA,KAAK,OAAQ,GACbA,KAAK,OAAQ,GACbA,KAAK,cAAe,eACpBA,KAAK,cAAe,GACpBA,KAAK,eAAgB,GACrBA,KAAK,SAAU,QAEAD,OAAO,QACtBC,KAAK,IAAK,yBACVwF,MAAM,eAAgB,GACtBA,MAAM,mBAAoB,OAC7Bi0F,EAAKiE,WAAWn+F,EAAM4jE,EAAKvhE,EAAO,UAC9BuhE,EAAKvhE,EAAO,UACdrC,EAAKS,KAAK,QAASmjE,EAAKvhE,EAAO,UAxBnCjN,EAAOD,QAAU,CACf,QAAWs1C,EACX,OAAUA,EACV,IAyBF,SAAannC,EAAQsd,EAAIgjD,EAAMvhE,GAC7B,IAUIrC,EAVSsD,EAAO9C,OAAO,UACxBC,KAAK,KAAMmgB,GACXngB,KAAK,UAAW,aAChBA,KAAK,OAAQ,GACbA,KAAK,OAAQ,GACbA,KAAK,cAAe,eACpBA,KAAK,cAAe,GACpBA,KAAK,eAAgB,GACrBA,KAAK,SAAU,QAEAD,OAAO,QACtBC,KAAK,IAAK,+BACVwF,MAAM,eAAgB,GACtBA,MAAM,mBAAoB,OAC7Bi0F,EAAKiE,WAAWn+F,EAAM4jE,EAAKvhE,EAAO,UAC9BuhE,EAAKvhE,EAAO,UACdrC,EAAKS,KAAK,QAASmjE,EAAKvhE,EAAO,WAzCjC,WA6CF,SAAoBiB,EAAQsd,EAAIgjD,EAAMvhE,GACpC,IAUIrC,EAVSsD,EAAO9C,OAAO,UACxBC,KAAK,KAAMmgB,GACXngB,KAAK,UAAW,aAChBA,KAAK,OAAQ,GACbA,KAAK,OAAQ,GACbA,KAAK,cAAe,eACpBA,KAAK,cAAe,GACpBA,KAAK,eAAgB,GACrBA,KAAK,SAAU,QAEAD,OAAO,QACtBC,KAAK,IAAK,gBACVwF,MAAM,eAAgB,GACtBA,MAAM,mBAAoB,OAC7Bi0F,EAAKiE,WAAWn+F,EAAM4jE,EAAKvhE,EAAO,UAC9BuhE,EAAKvhE,EAAO,UACdrC,EAAKS,KAAK,QAASmjE,EAAKvhE,EAAO,a,cCpEnCjN,EAAOD,QAAU,S,6BCKjB,IAAIk6I,EAEW,SAASjc,EAAOxlH,GAO3B,OANAyhI,EAAUA,GAAWtpI,SAAS+C,cAAc,OAE5C8E,EAAOkjJ,OAAOljJ,GAAM8rB,QAAQ,OAAO,KAAKA,QAAQ,OAAO,KAAKA,QAAQ,OAAO,KAE3E21G,EAAQlnI,UAAYyF,EAEb0+G,SAAS+iB,EAAQtnI,a,6DCZfotL,EAAS,CACpB36E,MAAO,EACP8zC,KAAM,EACNtpD,KAAM,EACNrpG,MAAO,EACPy5L,MAAO,GAGIC,EAAS,CACpB76E,MAAO,aACP8zC,KAAM,aACNtpD,KAAM,aACNrpG,MAAO,aACPy5L,MAAO,cAGIE,EAAc,WAA0B,IAAjBC,EAAiB,uDAAT,QACtCx7L,MAAMw7L,KACRA,EAAQA,EAAMr8K,mBACQ0M,IAAlBuvK,EAAOI,KACTA,EAAQJ,EAAOI,KAGnBF,EAAOhoH,MAAQ,aACfgoH,EAAO76E,MAAQ,aACf66E,EAAO/mC,KAAO,aACd+mC,EAAOrwF,KAAO,aACdqwF,EAAO15L,MAAQ,aACf05L,EAAOD,MAAQ,aACXG,GAASJ,EAAOC,QAClBC,EAAOD,MAAQp8G,QAAQr9E,MACnBq9E,QAAQr9E,MAAMvE,KAAK4hF,QAASv5E,EAAO,SAAU,iBAC7Cu5E,QAAQv9E,IAAIrE,KAAK4hF,QAAS,QAAYv5E,EAAO,WAE/C81L,GAASJ,EAAOx5L,QAClB05L,EAAO15L,MAAQq9E,QAAQr9E,MACnBq9E,QAAQr9E,MAAMvE,KAAK4hF,QAASv5E,EAAO,SAAU,iBAC7Cu5E,QAAQv9E,IAAIrE,KAAK4hF,QAAS,QAAYv5E,EAAO,WAE/C81L,GAASJ,EAAOnwF,OAClBqwF,EAAOrwF,KAAOhsB,QAAQgsB,KAClBhsB,QAAQgsB,KAAK5tG,KAAK4hF,QAASv5E,EAAO,QAAS,iBAC3Cu5E,QAAQv9E,IAAIrE,KAAK4hF,QAAjB,QAAsCv5E,EAAO,UAE/C81L,GAASJ,EAAO7mC,OAClB+mC,EAAO/mC,KAAOt1E,QAAQs1E,KAElBt1E,QAAQs1E,KAAKl3J,KAAK4hF,QAASv5E,EAAO,QAAS,oBAC3Cu5E,QAAQv9E,IAAIrE,KAAK4hF,QAAS,QAAYv5E,EAAO,UAE/C81L,GAASJ,EAAO36E,QAClB66E,EAAO76E,MAAQxhC,QAAQwhC,MACnBxhC,QAAQwhC,MAAMpjH,KAAK4hF,QAASv5E,EAAO,SAAU,qBAC7Cu5E,QAAQv9E,IAAIrE,KAAK4hF,QAAS,QAAYv5E,EAAO,YAI/CA,EAAS,SAAA81L,GACb,IAAM91K,EAAO+1K,MAAS/1L,OAAO,UAC7B,kBAAYggB,EAAZ,cAAsB81K,EAAtB,Q,QClCWE,EAAiB,eAUxBC,EAAqB,SAAA/9L,GACzB,OAAOA,EAAE+hC,QAAQ+7J,EAAgB,SAG7BE,EAAqB,SAAAh+L,GACzB,OAAOA,EAAE+hC,QAAQ,QAAS,UAGb,GACbk8J,QA9CqB,SAAAj+L,GACrB,IAAKA,EAAG,OAAO,EACf,IAAIo9E,EAAM2gH,EAAmB/9L,GAE7B,OADAo9E,EAAMA,EAAIr7C,QAAQ,OAAQ,SACfv3B,MAAM,SA2CjB0zL,aAxC0B,SAACj1L,EAAMsrG,GACjC,IAAI4pF,EAAMl1L,EACNm1L,GAAa,EAejB,OAbE7pF,EAAO8pF,YAC0B,IAAhC9pF,EAAO8pF,UAAUD,YAAwD,UAAhC7pF,EAAO8pF,UAAUD,aAE3DA,GAAa,GAEc,UAAzB7pF,EAAO+pF,eAA6BF,IAItCD,GADAA,GADAA,EAAMJ,EAAmBI,IACfp8J,QAAQ,KAAM,QAAQA,QAAQ,KAAM,SACpCA,QAAQ,KAAM,YACxBo8J,EAAMH,EAAmBG,IAGpBA,GAwBPI,UAnBuB,SAAAt1L,GACvB,MAAO,gBAAgBgB,KAAKhB,IAmB5Bu1L,YAhByB,SAAAv1L,GACzB,OAAOA,EAAKuB,MAAM,kBAgBlBszL,kB,4kBC9BF,IAAMW,EAAe,CACnBC,WAAYA,aACZC,iBAAkBA,mBAClBC,eAAgBA,iBAChBxD,YAAaA,cACbyD,kBAAmBA,oBACnBC,eAAgBA,iBAChBC,eAAgBA,iBAChBC,aAAcA,eACdC,UAAWA,YACXC,eAAgBA,iBAChBC,gBAAiBA,mBAEbC,EAAY,sGACZC,EAAuB,+FACvBC,EAAa,cA6ENC,EAAkB,SAASt2L,GAAmB,IAAbyB,EAAa,uDAAN,KACnD,IACE,IAAM80L,EAA2B,IAAIjoL,OAAJ,sBAChB8nL,EAAqBn6K,OADL,sBAE/B,MAEFjc,EAAOA,EACJsB,OACAw3B,QAAQy9J,EAA0B,IAClCz9J,QAAQ,MAAO,KAClB27J,EAAO76E,MAAP,qCACyC,OAATn4G,EAAgB,SAAWA,EAAO,GADlE,8BAC0FzB,IAI1F,IAFA,IAAIsL,EACFqlB,EAAS,GAC+B,QAAlCrlB,EAAQ6qL,EAAU59K,KAAKvY,KAK7B,GAHIsL,EAAMrC,QAAUktL,EAAU35K,WAC5B25K,EAAU35K,YAGTlR,IAAU7J,GACVA,GAAQ6J,EAAM,IAAMA,EAAM,GAAGA,MAAM7J,IACnCA,GAAQ6J,EAAM,IAAMA,EAAM,GAAGA,MAAM7J,GACpC,CACA,IAAIA,EAAO6J,EAAM,GAAKA,EAAM,GAAKA,EAAM,GACnCpJ,EAAOoJ,EAAM,GAAKA,EAAM,GAAGhK,OAASgK,EAAM,GAAK0rB,KAAK3V,MAAM/V,EAAM,GAAGhK,QAAU,KACjFqvB,EAAOt0B,KAAK,CAAEoF,OAAMS,SAOxB,OAJsB,IAAlByuB,EAAOt5B,QACTs5B,EAAOt0B,KAAK,CAAEoF,KAAMzB,EAAMkC,KAAM,OAGT,IAAlByuB,EAAOt5B,OAAes5B,EAAO,GAAKA,EACzC,MAAO51B,GAMP,OALA05L,EAAO15L,MAAP,iBACYA,EAAMkhI,QADlB,uCAEa,OAATx6H,EAAgB,SAAWA,EAAO,GAFtC,8BAGwBzB,IAEjB,CAAEyB,KAAM,KAAMS,KAAM,QAuBlBs0L,EAAa,SAASx2L,GAGjC,OAFAA,EAAOA,EAAK84B,QAAQq9J,EAAW,IAAIr9J,QAAQu9J,EAAY,MACvD5B,EAAO76E,MAAM,4CAA8C55G,GACvDA,EAAKsL,MAAM,uBACN,WAGLtL,EAAKsL,MAAM,aACN,QAGLtL,EAAKsL,MAAM,oBACN,QAELtL,EAAKsL,MAAM,uBACN,eAGLtL,EAAKsL,MAAM,oBACN,QAGLtL,EAAKsL,MAAM,gBACN,MAELtL,EAAKsL,MAAM,iBACN,eAGLtL,EAAKsL,MAAM,YACN,OAELtL,EAAKsL,MAAM,WACN,MAGLtL,EAAKsL,MAAM,iBACN,KAGLtL,EAAKsL,MAAM,eACN,UAGF,aAGHksK,EAAU,SAAC/7E,EAAIg8E,GACnB,IAAI7kI,EAAQ,GACZ,OAAO,WAAa,2BAAT1wC,EAAS,yBAATA,EAAS,gBAClB,IAAIzL,EAAIghL,EAAWA,EAAS74K,W,EAAYsD,GAAQA,EAAK,GACrD,GAAIzL,KAAKm8C,EACP,OAAOA,EAAMn8C,GAEb,IAAIk6B,EAAS8qE,EAAE,WAAF,EAAMv5F,GAEnB,OADA0wC,EAAMn8C,GAAKk6B,EACJA,IAmBA8lK,EAAqB,SAACh0K,EAAai0K,GAC9C,IAAKj0K,EACH,OAAOi0K,EAET,IAAMC,EAAY,QAAH,OAAWl0K,EAAYuxC,OAAO,GAAGtwB,cAAgBjhB,EAAY9oB,MAAM,IAClF,OAAO67L,EAAamB,IAAcD,GA8B9B71J,EAAW,SAACiN,EAAI2uB,GAAL,OACf3uB,GAAM2uB,EAAKljE,KAAKC,KAAKD,KAAKyB,IAAIyhE,EAAGnlE,EAAIw2C,EAAGx2C,EAAG,GAAKiC,KAAKyB,IAAIyhE,EAAG/+D,EAAIowC,EAAGpwC,EAAG,IAAM,GA4FjEk5L,EAAqB,SAAAxkG,GAIhC,IAHA,IAAI/sF,EAAQ,GACR4lH,EAAa,GAERj2H,EAAI,EAAGA,EAAIo9F,EAAI/6F,OAAQrC,SACR,IAAXo9F,EAAIp9F,KAETo9F,EAAIp9F,GAAG6hM,WAAW,WAAazkG,EAAIp9F,GAAG6hM,WAAW,eACnD5rE,EAAaA,EAAa74B,EAAIp9F,GAAK,IAEnCqQ,EAAQA,EAAQ+sF,EAAIp9F,GAAK,KAK/B,MAAO,CAAEqQ,MAAOA,EAAO4lH,WAAYA,IAGjC6rE,EAAM,EACGC,EAAa,WAExB,OADAD,IAEE,MACAv9L,KAAK6D,SACF+b,SAAS,IACTq9D,OAAO,EAAG,IACb,IACAsgH,GAkCSE,EAAkB,SAAlBA,EAA2Bj+G,EAAKt7C,EAAK6tE,GAAQ,MAC7B51G,OAAOykB,OAAO,CAAEoW,MAAO,EAAG0mK,SAAS,GAAS3rF,GAA/D/6E,EADgD,EAChDA,MAAO0mK,EADyC,EACzCA,QACf,OAAI5+L,MAAM2D,QAAQyhC,KAASplC,MAAM2D,QAAQ+8E,IACvCt7C,EAAIpR,SAAQ,SAAAt1B,GAAC,OAAIigM,EAAgBj+G,EAAKhiF,EAAGu0G,MAClCvyB,GACE1gF,MAAM2D,QAAQyhC,IAAQplC,MAAM2D,QAAQ+8E,IAC7Ct7C,EAAIpR,SAAQ,SAAAt1B,IACc,IAApBgiF,EAAIv3E,QAAQzK,IACdgiF,EAAI18E,KAAKtF,MAGNgiF,QAEU,IAARA,GAAuBxoD,GAAS,EACrCwoD,SAAoD,WAAf,EAAOA,IAAmC,WAAf,EAAOt7C,GAClE/nC,OAAOykB,OAAO4+D,EAAKt7C,GAEnBA,QAGQ,IAARA,GAAsC,WAAf,EAAOs7C,IAAmC,WAAf,EAAOt7C,IAClE/nC,OAAOyyB,KAAKsV,GAAKpR,SAAQ,SAAA91B,GAED,WAApB,EAAOknC,EAAIlnC,UACGyuB,IAAb+zD,EAAIxiF,IAA0C,WAApB,EAAOwiF,EAAIxiF,KAM7B0gM,GAAgC,WAApB,EAAOl+G,EAAIxiF,KAAyC,WAApB,EAAOknC,EAAIlnC,OAChEwiF,EAAIxiF,GAAOknC,EAAIlnC,UALEyuB,IAAb+zD,EAAIxiF,KACNwiF,EAAIxiF,GAAO8B,MAAM2D,QAAQyhC,EAAIlnC,IAAQ,GAAK,IAE5CwiF,EAAIxiF,GAAOygM,EAAgBj+G,EAAIxiF,GAAMknC,EAAIlnC,GAAM,CAAEg6B,MAAOA,EAAQ,EAAG0mK,gBAMlEl+G,IAmBIm+G,EAAiB,SAAS1qB,EAAM2qB,GAE3C,IAAMC,EAAQD,EAASn3L,KAAK84B,QAAQquG,EAAO0tD,eAAgB,KAErDwC,EAAW7qB,EAAK5sK,OAAO,QAC7By3L,EAASx3L,KAAK,IAAKs3L,EAAS7/L,GAC5B+/L,EAASx3L,KAAK,IAAKs3L,EAASz5L,GAC5B25L,EAAShyL,MAAM,cAAe8xL,EAASG,QACvCD,EAAShyL,MAAM,cAAe8xL,EAASI,YACvCF,EAAShyL,MAAM,YAAa8xL,EAASK,UACrCH,EAAShyL,MAAM,cAAe8xL,EAASM,YACvCJ,EAASx3L,KAAK,OAAQs3L,EAASp0J,WACD,IAAnBo0J,EAASO,OAClBL,EAASx3L,KAAK,QAASs3L,EAASO,OAGlC,IAAMC,EAAON,EAASz3L,OAAO,SAK7B,OAJA+3L,EAAK93L,KAAK,IAAKs3L,EAAS7/L,EAA0B,EAAtB6/L,EAASS,YACrCD,EAAK93L,KAAK,OAAQs3L,EAASp0J,MAC3B40J,EAAK33L,KAAKo3L,GAEHC,GAGIQ,EAAYrgB,GACvB,SAACp9E,EAAO09F,EAAUxsF,GAChB,IAAKlR,EACH,OAAOA,EAMT,GAJAkR,EAAS51G,OAAOykB,OACd,CAAEq9K,SAAU,GAAIC,WAAY,IAAKF,WAAY,QAASQ,SAAU,SAChEzsF,GAEE67B,EAAO0tD,eAAe7zL,KAAKo5F,GAC7B,OAAOA,EAET,IAAMnf,EAAQmf,EAAM74F,MAAM,KACpBy2L,EAAiB,GACnBC,EAAW,GAoBf,OAnBAh9G,EAAM5uD,SAAQ,SAAC8vD,EAAMlzE,GACnB,IAAMivL,EAAaC,EAAmB,GAAD,OAAIh8G,EAAJ,KAAamvB,GAC5C8sF,EAAiBD,EAAmBF,EAAU3sF,GACpD,GAAI4sF,EAAaJ,EAAU,OACoBO,EAAYl8G,EAAM27G,EAAU,IAAKxsF,GAAtEgtF,EADiB,EACjBA,kBAAmBC,EADF,EACEA,cAC3BP,EAAe37L,KAAf,MAAA27L,EAAc,CAAMC,GAAN,SAAmBK,KACjCL,EAAWM,OACFH,EAAiBF,GAAcJ,GACxCE,EAAe37L,KAAK47L,GACpBA,EAAW97G,GAEX87G,EAAW,CAACA,EAAU97G,GAAM57E,OAAOsvJ,SAAS9oJ,KAAK,KAE/BkC,EAAQ,IACOgyE,EAAM5jF,QAEvC2gM,EAAe37L,KAAK47L,MAGjBD,EAAez3L,QAAO,SAAAT,GAAI,MAAa,KAATA,KAAaiH,KAAKukG,EAAOysF,aAEhE,SAAC39F,EAAO09F,EAAUxsF,GAAlB,gBACKlR,EADL,YACc09F,EADd,YAC0BxsF,EAAOksF,SADjC,YAC6ClsF,EAAOmsF,WADpD,YACkEnsF,EAAOisF,WADzE,YACuFjsF,EAAOysF,aAG1FM,EAAc7gB,GAClB,SAACr7F,EAAM27G,GAA4C,IAAlCU,EAAkC,uDAAhB,IAAKltF,EAAW,uCACjDA,EAAS51G,OAAOykB,OACd,CAAEq9K,SAAU,GAAIC,WAAY,IAAKF,WAAY,QAASkB,OAAQ,GAC9DntF,GAEF,IAAM2hD,EAAa9wE,EAAK56E,MAAM,IACxB8rC,EAAQ,GACVqrJ,EAAc,GAclB,OAbAzrC,EAAW5gI,SAAQ,SAACssK,EAAW1vL,GAC7B,IAAMgvL,EAAW,GAAH,OAAMS,GAAN,OAAoBC,GAElC,GADkBR,EAAmBF,EAAU3sF,IAC9BwsF,EAAU,CACzB,IAAMc,EAAmB3vL,EAAQ,EAC3B4vL,EAAa5rC,EAAW51J,SAAWuhM,EACnCE,EAAqB,GAAH,OAAMb,GAAN,OAAiBO,GACzCnrJ,EAAMhxC,KAAKw8L,EAAaZ,EAAWa,GACnCJ,EAAc,QAEdA,EAAcT,KAGX,CAAEK,kBAAmBjrJ,EAAOkrJ,cAAeG,MAEpD,SAACv8G,EAAM27G,GAAP,IAAiBU,EAAjB,uDAAmC,IAAKltF,EAAxC,uDACKnvB,EADL,YACa27G,EADb,YACyBU,EADzB,YAC4CltF,EAAOksF,SADnD,YAC+DlsF,EAAOmsF,WADtE,YACoFnsF,EAAOisF,eA6BhFY,EAAqB,SAASn4L,EAAMsrG,GAE/C,OADAA,EAAS51G,OAAOykB,OAAO,CAAEq9K,SAAU,GAAIC,WAAY,IAAKF,WAAY,SAAWjsF,GACxEytF,EAAwB/4L,EAAMsrG,GAAQhkF,OAUlCyxK,EAA0BvhB,GACrC,SAASx3K,EAAMsrG,GAAQ,MACrBA,EAAS51G,OAAOykB,OAAO,CAAEq9K,SAAU,GAAIC,WAAY,IAAKF,WAAY,SAAWjsF,GACvEksF,EAFa,EAEbA,SAAUD,EAFG,EAEHA,WAAYE,EAFT,EAESA,WAC9B,IAAKz3L,EACH,MAAO,CAAEsnB,MAAO,EAAGC,OAAQ,GAM7B,IAAMyxK,EAAe,CAAC,aAAczB,GAC9BlqJ,EAAQrtC,EAAKuB,MAAM4lI,EAAO0tD,gBAC5BoE,EAAO,GAELj5C,EAAOjgJ,iBAAO,QAGpB,IAAKigJ,EAAK1/I,OACR,MAAO,CAAEgnB,MAAO,EAAGC,OAAQ,EAAG2xK,WAAY,GAK5C,IAFA,IAAMrgL,EAAImnI,EAAKpgJ,OAAO,OAEtB,MAAuBo5L,EAAvB,eAAqC,CAAhC,IAAIzB,EAAU,KACb4B,EAAU,EACVrxK,EAAM,CAAER,MAAO,EAAGC,OAAQ,EAAG2xK,WAAY,GAFV,uBAGnC,YAAiB7rJ,EAAjB,+CAAwB,KAAfvtC,EAAe,QAChBs5L,EA7KL,CACL9hM,EAAG,EACHoG,EAAG,EACHqlC,UAAM/d,EACNsyK,OAAQ,QACRjyL,MAAO,OACPiiB,MAAO,IACPC,OAAQ,IACRqwK,WAAY,EACZh0H,GAAI,EACJC,GAAI,EACJw1H,YAAQr0K,GAmKJo0K,EAAQp5L,KAAOF,EACf,IAAMu3L,EAAWH,EAAer+K,EAAGugL,GAChC/zL,MAAM,YAAamyL,GACnBnyL,MAAM,cAAeoyL,GACrBpyL,MAAM,cAAekyL,GAEpB+B,GAAQjC,EAASrsL,SAAWqsL,GAAU,GAAG,GAAGnqD,UAChDplH,EAAIR,MAAQ/tB,KAAKuE,MAAMvE,KAAKG,IAAIouB,EAAIR,MAAOgyK,EAAKhyK,QAChD6xK,EAAU5/L,KAAKuE,MAAMw7L,EAAK/xK,QAC1BO,EAAIP,QAAU4xK,EACdrxK,EAAIoxK,WAAa3/L,KAAKuE,MAAMvE,KAAKG,IAAIouB,EAAIoxK,WAAYC,KAfpB,kFAiBnCF,EAAK58L,KAAKyrB,GAcZ,OAXAjP,EAAEvY,SAWK24L,EARL9/L,MAAM8/L,EAAK,GAAG1xK,SACdpuB,MAAM8/L,EAAK,GAAG3xK,QACdnuB,MAAM8/L,EAAK,GAAGC,aACbD,EAAK,GAAG1xK,OAAS0xK,EAAK,GAAG1xK,QACxB0xK,EAAK,GAAG3xK,MAAQ2xK,EAAK,GAAG3xK,OACxB2xK,EAAK,GAAGC,WAAaD,EAAK,GAAGC,WAC3B,EACA,MAGR,SAACl5L,EAAMsrG,GAAP,gBAAqBtrG,EAArB,YAA6BsrG,EAAOksF,SAApC,YAAgDlsF,EAAOmsF,WAAvD,YAAqEnsF,EAAOisF,eAG/D,GACbP,kBACAa,YACA0B,oBA1FiC,SAASv5L,EAAMsrG,GAKhD,OAJAA,EAAS51G,OAAOykB,OACd,CAAEq9K,SAAU,GAAIC,WAAY,IAAKF,WAAY,QAASkB,OAAQ,IAC9DntF,GAEKytF,EAAwB/4L,EAAMsrG,GAAQ/jF,QAsF7C4wK,qBACAY,0BACAS,WA/mBwB,SAASx5L,GACjC,IAAIy5L,EAAQnD,EAAgBt2L,EAAM,+BAC9B6oJ,EAAU,GACd,GAAIxwJ,MAAM2D,QAAQy9L,GAAQ,CACxB,IAAIv3L,EAAOu3L,EAAM7/L,KAAI,SAAAmjC,GAAI,OAAIA,EAAK76B,QAClC2mJ,EAAUmuC,EAAgBnuC,EAAD,EAAc3mJ,SAEvC2mJ,EAAU4wC,EAAMv3L,KAElB,GAAI2mJ,EAAS,CACX,IAAIpnJ,EAAO+0L,EAAWx2L,GACtB,CAAC,UAAUqsB,SAAQ,SAAA6gJ,QACY,IAAlBrkB,EAAQqkB,KACJ,iBAATzrK,IACFA,EAAO,aAETonJ,EAAQpnJ,GAAQonJ,EAAQqkB,UACjBrkB,EAAQqkB,OAIrB,OAAOrkB,GA2lBPytC,kBACAE,aACAkD,mBAjcgC,SAASvlH,EAAKie,GAC9C,IAAK,IAAIp9F,EAAI,EAAGA,EAAIo9F,EAAI/6F,OAAQrC,IAC9B,GAAIo9F,EAAIp9F,GAAGsW,MAAM6oE,GAAM,OAAOn/E,EAEhC,OAAQ,GA8bRyhM,qBACAkD,kBAjXwB,SAAAnsJ,GACxB,OAtCmB,SAAAA,GACnB,IAAIosJ,EACAC,EAAgB,EAEpBrsJ,EAAOnhB,SAAQ,SAAAtP,GACb88K,GAAiBh5J,EAAS9jB,EAAO68K,GACjCA,EAAY78K,KAId,IAAI+8K,EAAoBD,EAAgB,EACpC1sJ,OAASnoB,EAuBb,OAtBA40K,OAAY50K,EACZwoB,EAAOnhB,SAAQ,SAAAtP,GACb,GAAI68K,IAAczsJ,EAAQ,CACxB,IAAM4sJ,EAAiBl5J,EAAS9jB,EAAO68K,GACvC,GAAIG,EAAiBD,EACnBA,GAAqBC,MAChB,CAGL,IAAMC,EAAgBF,EAAoBC,EACtCC,GAAiB,IAAG7sJ,EAASysJ,GAC7BI,GAAiB,IAAG7sJ,EAAS,CAAE71C,EAAGylB,EAAMzlB,EAAGoG,EAAGqf,EAAMrf,IACpDs8L,EAAgB,GAAKA,EAAgB,IACvC7sJ,EAAS,CACP71C,GAAI,EAAI0iM,GAAiBJ,EAAUtiM,EAAI0iM,EAAgBj9K,EAAMzlB,EAC7DoG,GAAI,EAAIs8L,GAAiBJ,EAAUl8L,EAAIs8L,EAAgBj9K,EAAMrf,KAKrEk8L,EAAY78K,KAEPowB,EAIA8sJ,CAAazsJ,IAiXpB0sJ,wBA9W8B,SAACC,EAAuB3sJ,EAAQ4sJ,GAC9D,IAAIR,EAEApsJ,EAAO,KAAO4sJ,IAChB5sJ,EAASA,EAAOlzC,WAElBkzC,EAAOnhB,SAAQ,SAAAtP,GACI8jB,EAAS9jB,EAAO68K,GACjCA,EAAY78K,KAId,IAGIowB,EADA2sJ,EAF+B,GAInCF,OAAY50K,EACZwoB,EAAOnhB,SAAQ,SAAAtP,GACb,GAAI68K,IAAczsJ,EAAQ,CACxB,IAAM4sJ,EAAiBl5J,EAAS9jB,EAAO68K,GACvC,GAAIG,EAAiBD,EACnBA,GAAqBC,MAChB,CAGL,IAAMC,EAAgBF,EAAoBC,EACtCC,GAAiB,IAAG7sJ,EAASysJ,GAC7BI,GAAiB,IAAG7sJ,EAAS,CAAE71C,EAAGylB,EAAMzlB,EAAGoG,EAAGqf,EAAMrf,IACpDs8L,EAAgB,GAAKA,EAAgB,IACvC7sJ,EAAS,CACP71C,GAAI,EAAI0iM,GAAiBJ,EAAUtiM,EAAI0iM,EAAgBj9K,EAAMzlB,EAC7DoG,GAAI,EAAIs8L,GAAiBJ,EAAUl8L,EAAIs8L,EAAgBj9K,EAAMrf,KAKrEk8L,EAAY78K,KAGd,IAAIznB,EAAI6kM,EAAwB,GAAK,EAEjCt4J,EAAQtoC,KAAK2nB,MAAMssB,EAAO,GAAG9vC,EAAIyvC,EAAOzvC,EAAG8vC,EAAO,GAAGl2C,EAAI61C,EAAO71C,GAChE+iM,EAAsB,CAAE/iM,EAAG,EAAGoG,EAAG,GAIrC,OAFA28L,EAAoB/iM,EAAIiC,KAAKgyB,IAAIsW,GAASvsC,GAAKk4C,EAAO,GAAGl2C,EAAI61C,EAAO71C,GAAK,EACzE+iM,EAAoB38L,GAAKnE,KAAK+xB,IAAIuW,GAASvsC,GAAKk4C,EAAO,GAAG9vC,EAAIyvC,EAAOzvC,GAAK,EACnE28L,GAiUPC,UAtbuB,SAACC,EAASjvF,GACjC,IAAIsrB,EAAM2jE,EAAQj5L,OAElB,GAAIs1H,EACF,MAA6B,UAAzBtrB,EAAO+pF,cACF1+D,sBAAYC,GAGdA,GA+aTggE,qBACAG,aACA35L,OAlSoB,SAAA43E,GACpB,OAAOwlH,IAAmBxlH,IAkS1BwiG,UACAijB,QA/aqB,SAACC,GAOtB,IAPkD,MAC5CC,EAAWD,EAAan5L,MAAM,KAE9B8zE,EAAMslH,EAAStjM,OAAS,EACxBujM,EAASD,EAAStlH,GAEpB4b,EAAM7mF,OACDpV,EAAI,EAAGA,EAAIqgF,EAAKrgF,IAEvB,KADAi8F,EAAMA,EAAI0pG,EAAS3lM,KACT,OATsC,2BAAXmV,EAAW,iCAAXA,EAAW,mBAYlD,EAAA8mF,GAAI2pG,GAAJ,QAAezwL,KCtPXmhG,EAAS,CAebuvF,MAAO,UACPC,cAAU91K,EAEV+1K,YAAa,IASbxD,WAAY,kCAeZyD,SAAU,EAWV3F,cAAe,SAUf4F,aAAa,EAWbC,qBAAqB,EAQrBC,OAAQ,CAAC,SAAU,gBAAiB,cAAe,eAKnD/F,UAAW,CAQTD,YAAY,EAWZiG,YAAa,GAUbC,YAAa,GAUbvgI,MAAO,SAGPz1B,QAAS,IAMXi2J,SAAU,CAKRC,gBAAiB,GAUjBC,eAAgB,GAUhBC,eAAgB,GAUhBC,YAAa,GAUbp0K,MAAO,IAUPC,OAAQ,GAWRo0K,UAAW,GAWXC,cAAe,EAWfC,WAAY,GAYZC,cAAe,GASfC,aAAc,SAWdC,cAAc,EAUdC,gBAAiB,EAYjBC,aAAa,EAYbC,aAAa,EASbC,qBAAqB,EASrBC,cAAe,GASfC,gBAAiB,4BAKjBC,gBAAiB,IASjBC,aAAc,GASdC,eAAgB,iCAKhBC,eAAgB,IAShBC,UAAW,SASXC,gBAAiB,GASjBC,kBAAmB,iCAKnBC,kBAAmB,IAKnBhzL,MAAM,EAKNizL,YAAa,GAKbC,cAAe,GAKfC,eAAgB,GAChBC,YAAa,WACX,MAAO,CACL3F,WAAY3iM,KAAKioM,kBACjBrF,SAAU5iM,KAAKgoM,gBACfnF,WAAY7iM,KAAKkoM,oBAGrBK,SAAU,WACR,MAAO,CACL5F,WAAY3iM,KAAK6nM,eACjBjF,SAAU5iM,KAAK4nM,aACf/E,WAAY7iM,KAAK8nM,iBAGrBU,UAAW,WACT,MAAO,CACL7F,WAAY3iM,KAAK0nM,gBACjB9E,SAAU5iM,KAAKynM,cACf5E,WAAY7iM,KAAK2nM,mBAQvBc,MAAO,CAWLC,eAAgB,GAUhBC,UAAW,GAUXC,OAAQ,EAURC,WAAY,GAUZC,YAAa,GAUbC,qBAAsB,GAUtBnG,SAAU,GAWVD,WAAY,4BAUZqG,oBAAqB,EAYrBC,WAAY,YAKdC,QAAS,CASPtC,eAAgB,GAUhBC,eAAgB,GAUhBC,YAAa,GAUbp0K,MAAO,IAUPC,OAAQ,GAURo0K,UAAW,GASXC,cAAe,EAUfC,WAAY,GAYZC,cAAe,GASfC,aAAc,SAUdE,gBAAiB,EAYjBC,aAAa,EAUbC,aAAa,GAEfzE,MAAO,CACLwD,qBAAqB,GAEvB6C,IAAK,CACH7C,qBAAqB,GAEvBh7K,MAAO,CACL89K,cAAe,GACfC,SAAU,EACV54J,QAAS,EACT64J,WAAY,GACZC,YAAa,GACbtC,WAAY,GACZuC,UAAW,GACXC,WAAY,EAEZC,YAAa,EAGbC,eAAgB,KAChB/G,SAAU,GACVgH,YAAa,GACbC,iBAAkB,KAClBC,kBAAmB,GACnBxvK,OAAQ,GAMV2qG,GAAI,CASF8kE,eAAgB,GAYhBC,gBAAiB,KAUjBC,eAAgB,IAUhBC,gBAAiB,GAUjBC,cAAe,GAQf7+E,OAAQ,OAURn9E,KAAM,WAUNy0J,SAAU,KAGdlsF,EAAOosF,MAAMwD,oBAAsB5vF,EAAO4vF,oBAC1C5vF,EAAOyyF,IAAI7C,oBAAsB5vF,EAAO4vF,oBACjC,IAAM8D,EAAgBtpM,OAAO+0I,OAAOn/B,GAErC2zF,EAAajI,EAAgB,GAAIgI,GACjCE,EAAgBlI,EAAgB,GAAIgI,GAmB7BG,EAAgB,SAAAnwE,GAG3B,OAFAgoE,EAAgBkI,EAAelwE,EAAM,CAAEioE,SAAS,IAChDD,EAAgBiI,EAAYjwE,GACrBowE,KAYIA,EAAgB,WAC3B,OAAOpI,EAAgB,GAAIiI,IAgBhBI,EAAY,SAAArwE,GAGvB,OAFAswE,EAAStwE,GACTgoE,EAAgBkI,EAAelwE,GACxBuwE,KAYIA,EAAY,WACvB,OAAOvI,EAAgB,GAAIkI,IAYhBI,EAAW,SAAAtqH,GACtBt/E,OAAOyyB,KAAK82K,EAAW9D,QAAQ9uK,SAAQ,SAAA91B,QACU,IAApCy+E,EAAQiqH,EAAW9D,OAAO5kM,MAGnCk+L,EAAOrwF,KAAP,gDAC2C66F,EAAW9D,OAAO5kM,IAC3Dy+E,EAAQiqH,EAAW9D,OAAO5kM,YAErBy+E,EAAQiqH,EAAW9D,OAAO5kM,SAmCxBipM,EATG9pM,OAAO+0I,OAAO,CAC9B60D,WACAH,gBACAC,gBACAC,YACAE,YACA95J,MAbmB,WAA4B,IAA3BupF,EAA2B,uDAApBowE,IAC3B1pM,OAAOyyB,KAAK82K,GAAY5yK,SAAQ,SAAA91B,GAAG,cAAW0oM,EAAW1oM,MACzDb,OAAOyyB,KAAK+2K,GAAe7yK,SAAQ,SAAA91B,GAAG,cAAW2oM,EAAc3oM,MAC/DygM,EAAgBiI,EAAYjwE,EAAM,CAAEioE,SAAS,IAC7CD,EAAgBkI,EAAelwE,EAAM,CAAEioE,SAAS,KAUhD+H,kB,wPCr6BF,IAWIjyJ,GATAu+D,GAASi0F,IACTE,GAAW,GACX33H,GAAQ,GACR43H,GAAU,GACVC,GAAY,GACZC,GAAiB,GACjBC,GAAW,GACXC,GAAW,EACXC,IAAiB,EAGjBC,GAAO,GAkEEC,GAAgB,SAASC,EAAQC,EAAM1+L,EAAM2+L,GACxD,IAAIvmM,EAAQqmM,EACRrlL,EAAMslL,EACNtmM,EAAM,GAAGyR,MAAM,QAAOzR,EAlFE,GAkF8BA,GACtDghB,EAAI,GAAGvP,MAAM,QAAOuP,EAnFI,GAmF0BA,GAGtD,IAAMmoD,EAAO,CAAEnpE,MAAOA,EAAOghB,IAAKA,EAAKpZ,UAAMujB,EAAWhlB,KAAM,SAGtC,KAFxBogM,EAAW3+L,EAAKzB,QAGdgjE,EAAKhjE,KAAOmnI,EAAO8tD,aAAamL,EAAS9+L,OAAQgqG,IAG5B,MAAjBtoC,EAAKhjE,KAAK,IAAkD,MAApCgjE,EAAKhjE,KAAKgjE,EAAKhjE,KAAK3I,OAAS,KACvD2rE,EAAKhjE,KAAOgjE,EAAKhjE,KAAKgkC,UAAU,EAAGg/B,EAAKhjE,KAAK3I,OAAS,UAItC,IAAToK,IACTuhE,EAAKvhE,KAAOA,EAAKA,KACjBuhE,EAAKk9C,OAASz+G,EAAKy+G,QAErBp4C,GAAMzrE,KAAK2mE,IAwFA88C,GAAW,SAASugF,EAAKC,GACpCD,EAAI9+L,MAAM,KAAK8qB,SAAQ,SAAS7J,GAC9B,IAAIxC,EAAKwC,EACLA,EAAI,GAAGlX,MAAM,QAAO0U,EAjME,GAiM2BA,QACzB,IAAjBy/K,GAASz/K,IAClBy/K,GAASz/K,GAAI0/K,QAAQrjM,KAAKikM,QAGM,IAAvBV,GAAe5/K,IACxB4/K,GAAe5/K,GAAI0/K,QAAQrjM,KAAKikM,OAKhCC,GAAa,SAASF,EAAKG,GAC/BH,EAAI9+L,MAAM,KAAK8qB,SAAQ,SAASrM,QACP,IAAZwgL,IACTX,GAAS7/K,GAAMmnH,EAAO8tD,aAAauL,EAASl1F,SAiG5Cm1F,GAAgB,SAASC,GAC7B,IAAIC,EAAc5gM,iBAAO,mBAC0B,QAA9C4gM,EAAY31L,SAAW21L,GAAa,GAAG,KAC1CA,EAAc5gM,iBAAO,QAClBH,OAAO,OACPC,KAAK,QAAS,kBACdwF,MAAM,UAAW,IAGVtF,iBAAO2gM,GAAS3gM,OAAO,OAEjBV,UAAU,UAEzByC,GAAG,aAAa,WACf,IAAM69F,EAAK5/F,iBAAOnL,MAIlB,GAAc,OAHA+qG,EAAG9/F,KAAK,SAGtB,CAGA,IAAMwd,EAAOzoB,KAAK0oB,wBAElBqjL,EACGxgM,aACAggB,SAAS,KACT9a,MAAM,UAAW,MACpBs7L,EACG3zL,KAAK2yF,EAAG9/F,KAAK,UACbwF,MAAM,OAAQ+E,OAAOw2L,QAAUvjL,EAAK7lB,MAAQ6lB,EAAKzlB,MAAQylB,EAAK7lB,MAAQ,EAAI,MAC1E6N,MAAM,MAAO+E,OAAOy2L,QAAUxjL,EAAKG,IAAM,GAAKrY,SAAS66I,KAAK8gD,UAAY,MAC3EnhG,EAAG5yF,QAAQ,SAAS,OAErBjL,GAAG,YAAY,WACd6+L,EACGxgM,aACAggB,SAAS,KACT9a,MAAM,UAAW,GACTtF,iBAAOnL,MACfmY,QAAQ,SAAS,OAG1BizL,GAAK3jM,KAAKokM,IAKH,IAgEDM,GAAc,SAAS/gL,GAC3B,IAAK,IAAIhrB,EAAI,EAAGA,EAAI2qM,GAAUtoM,OAAQrC,IACpC,GAAI2qM,GAAU3qM,GAAGgrB,KAAOA,EACtB,OAAOhrB,EAGX,OAAQ,GAENgsM,IAAY,EACVC,GAAc,GA2LL,IACblhF,UA7kBuB,SAASv9F,EAAKxiB,EAAMyB,EAAM4D,EAAOq6L,GACxD,IAAIxK,EACAl1K,EAAKwC,OACS,IAAPxC,GAGc,IAArBA,EAAG1e,OAAOjK,SAIV2oB,EAAG,GAAG1U,MAAM,QAAO0U,EAjCK,GAiCwBA,QAExB,IAAjBy/K,GAASz/K,KAClBy/K,GAASz/K,GAAM,CAAEA,GAAIA,EAAIsxI,OAAQ,GAAIouC,QAAS,UAE5B,IAAT1/L,GACTsrG,GAASi0F,IAIM,OAHfrK,EAAM/tD,EAAO8tD,aAAaj1L,EAAKsB,OAAQgqG,KAG/B,IAAsC,MAAxB4pF,EAAIA,EAAI79L,OAAS,KACrC69L,EAAMA,EAAIlxJ,UAAU,EAAGkxJ,EAAI79L,OAAS,IAGtCooM,GAASz/K,GAAIhgB,KAAOk1L,QAEa,IAAtBuK,GAASz/K,GAAIhgB,OACtBy/L,GAASz/K,GAAIhgB,KAAOwiB,QAGJ,IAAT/gB,IACTg+L,GAASz/K,GAAIve,KAAOA,GAElB,MAAO4D,GAEPA,EAAMgnB,SAAQ,SAASt1B,GACrB0oM,GAASz/K,GAAIsxI,OAAOj1J,KAAKtF,MAI3B,MAAO2oM,GAEPA,EAAQrzK,SAAQ,SAASt1B,GACvB0oM,GAASz/K,GAAI0/K,QAAQrjM,KAAKtF,QAmiBhC8oH,QA7fqB,SAASqgF,EAAQC,EAAM1+L,EAAM2+L,GAClD,IAAIprM,EAAG+H,EACP,IAAK/H,EAAI,EAAGA,EAAIkrM,EAAO7oM,OAAQrC,IAC7B,IAAK+H,EAAI,EAAGA,EAAIojM,EAAK9oM,OAAQ0F,IAC3BkjM,GAAcC,EAAOlrM,GAAImrM,EAAKpjM,GAAI0E,EAAM2+L,IA0f5C7/E,sBAhfmC,SAAS2gF,EAAWC,GACvDD,EAAU70K,SAAQ,SAASyoE,GACb,YAARA,EACFhtB,GAAMs5H,mBAAqBD,EAE3Br5H,GAAMgtB,GAAKryE,YAAc0+K,MA4e7B7gF,WAlewB,SAAS4gF,EAAW77L,GAC5C67L,EAAU70K,SAAQ,SAASyoE,GACb,YAARA,EACFhtB,GAAMu5H,aAAeh8L,IAE4B,IAA7Cy2F,EAAM49F,mBAAmB,OAAQr0L,IACnCA,EAAMhJ,KAAK,aAEbyrE,GAAMgtB,GAAKzvF,MAAQA,OA2dvB86G,SAtdsB,SAASngG,EAAI3a,QACR,IAAhBq6L,GAAQ1/K,KACjB0/K,GAAQ1/K,GAAM,CAAEA,GAAIA,EAAIsxI,OAAQ,GAAIgwC,WAAY,KAG9C,MAAOj8L,GAEPA,EAAMgnB,SAAQ,SAASt1B,GACrB,GAAIA,EAAEuU,MAAM,SAAU,CACpB,IACMi2L,EADYxqM,EAAE+hC,QAAQ,OAAQ,UACRA,QAAQ,QAAS,QAC7C4mK,GAAQ1/K,GAAIshL,WAAWjlM,KAAKklM,GAE9B7B,GAAQ1/K,GAAIsxI,OAAOj1J,KAAKtF,OA0c9B4oH,aAhc0B,SAAS3vB,IACnCjjD,GAAYijD,GACE1kF,MAAM,SAClByhC,GAAY,MAEVA,GAAUzhC,MAAM,UAClByhC,GAAY,MAEVA,GAAUzhC,MAAM,SAClByhC,GAAY,MAEVA,GAAUzhC,MAAM,SAClByhC,GAAY,OAqbd+yE,YACA0hF,WA7WwB,SAASxhL,GACjC,OAAO6/K,GAAS7/K,IA6WhBogG,cApW2B,SAASigF,EAAK3F,EAAc8F,GACvDH,EAAI9+L,MAAM,KAAK8qB,SAAQ,SAASrM,IArDd,SAASwC,EAAKk4K,GAChC,IAAI16K,EAAKwC,EACLA,EAAI,GAAGlX,MAAM,QAAO0U,EAtNI,GAsNyBA,GACnB,UAA9Bu/K,IAAYlK,oBAGY,IAAjBqF,QAGiB,IAAjB+E,GAASz/K,IAClBggL,GAAK3jM,MAAK,WACR,IAAMmwK,EAAOrnK,SAAS9C,cAAT,eAA+B2d,EAA/B,OACA,OAATwsJ,GACFA,EAAKziK,iBACH,SACA,WACE+xF,EAAM2+F,QAAQC,EAAc16K,MAE9B,MAoCNyhL,CAAYzhL,EAAI06K,MAElB6F,GAAWF,EAAKG,GAChB1gF,GAASugF,EAAK,cAgWdhgF,QA1XqB,SAASggF,EAAK9F,EAASiG,GAC5CH,EAAI9+L,MAAM,KAAK8qB,SAAQ,SAAS7J,GAC9B,IAAIxC,EAAKwC,EACLA,EAAI,GAAGlX,MAAM,QAAO0U,EAtPE,GAsP2BA,QACzB,IAAjBy/K,GAASz/K,KAClBy/K,GAASz/K,GAAI4gB,KAAOk7D,EAAMw+F,UAAUC,EAASjvF,QAGjDi1F,GAAWF,EAAKG,GAChB1gF,GAASugF,EAAK,cAkXdqB,cA9V2B,SAAShB,GACpCV,GAAK3zK,SAAQ,SAASkiE,GACpBA,EAAImyG,OA6VNiB,aA1V0B,WAC1B,OAAO50J,GAAUzrC,QA0VjBsgM,YApVyB,WACzB,OAAOnC,IAoVPoC,SA7UsB,WACtB,OAAO/5H,IA6UPg6H,WAtUwB,WACxB,OAAOpC,IAsUPv0K,MApRmB,WACnBs0K,GAAW,GACXC,GAAU,GACV53H,GAAQ,IACRk4H,GAAO,IACF3jM,KAAKokM,IACVd,GAAY,GACZC,GAAiB,GACjBE,GAAW,EACXD,GAAW,GACXE,IAAiB,GA2QjBsB,aArQ0B,WAC1B,MAAO,6FAqQPzhF,YA/PyB,SAASp9F,EAAK/b,EAAMs7L,GAC7C,IAAI/hL,EAAKwC,EAAIlhB,OACT6tF,EAAQ4yG,EACRv/K,IAAQu/K,GAAUA,EAAOz2L,MAAM,QACjC0U,OAAKgF,GAmBP,IAjBchuB,EACNgrM,EACAC,EAeJC,EAAW,GAjBDlrM,EAmBEkrM,EAAStgM,OAAOhD,MAAMsjM,EAAUz7L,GAlBxCu7L,EAAQ,CAAEG,QAAS,GAAI/oM,OAAQ,GAAI8M,OAAQ,IAC3C+7L,EAAO,GAiBfC,EAfSlrM,EAAEuJ,QAAO,SAAS6qH,GACvB,IAAM3pH,EAAO,GAAO2pH,GACpB,MAAoB,KAAhBA,EAAK9pH,SAGLG,KAAQugM,GACHA,EAAMvgM,GAAM5K,eAAeu0H,KAAiB42E,EAAMvgM,GAAM2pH,IAAQ,KAEhE62E,EAAKzgM,QAAQ4pH,IAAS,IAAY62E,EAAK5lM,KAAK+uH,OAQzD,IAAK,IAAIp2H,EAAI,EAAGA,EAAIktM,EAAS7qM,OAAQrC,IAC/BktM,EAASltM,GAAG,GAAGsW,MAAM,QAAO42L,EAASltM,GAjZf,GAiZ4CktM,EAASltM,KAGjFgrB,EAAKA,GAAM,WAAa8/K,IACjB,GAAGx0L,MAAM,QAAO0U,EArZK,GAqZwBA,GACpDmvE,EAAQA,GAAS,GACjBA,EAAQg4C,EAAO8tD,aAAa9lG,EAAOmc,IACnCw0F,IAAsB,EACtB,IAAMsC,EAAW,CAAEpiL,GAAIA,EAAIpT,MAAOs1L,EAAU/yG,MAAOA,EAAM7tF,OAAQo+L,QAAS,IAG1E,OAFAC,GAAUtjM,KAAK+lM,GACfxC,GAAe5/K,GAAMoiL,EACdpiL,GA0NPqiL,iBArK8B,SAASvtG,GACvC,OAAOmsG,GAAYnsG,IAqKnBwtG,WAnKwB,WACxBtB,IAAY,EACRrB,GAAUtoM,OAAS,GA7CL,SAAdkrM,EAAuBviL,EAAI80E,GAC/B,IAAMloF,EAAQ+yL,GAAU7qG,GAAKloF,MAE7B,MADAo0L,IAAsB,GACP,KAAf,CAKA,GAFAC,GAAYD,IAAYlsG,EAEpB6qG,GAAU7qG,GAAK90E,KAAOA,EACxB,MAAO,CACL2Q,QAAQ,EACRn2B,MAAO,GAMX,IAFA,IAAIA,EAAQ,EACRgoM,EAAW,EACRhoM,EAAQoS,EAAMvV,QAAQ,CAC3B,IAAMorM,EAAW1B,GAAYn0L,EAAMpS,IAEnC,GAAIioM,GAAY,EAAG,CACjB,IAAMzkH,EAAMukH,EAAYviL,EAAIyiL,GAC5B,GAAIzkH,EAAIrtD,OACN,MAAO,CACLA,QAAQ,EACRn2B,MAAOgoM,EAAWxkH,EAAIxjF,OAGxBgoM,GAAsBxkH,EAAIxjF,MAG9BA,GAAgB,EAGlB,MAAO,CACLm2B,QAAQ,EACRn2B,MAAOgoM,IAUPD,CAAY,OAAQ5C,GAAUtoM,OAAS,IAiKzCqrM,aA7J0B,WAC1B,OAAO/C,IA6JP1/E,aApDmB,SAAC0iF,EAAMC,GAC1B,IACIC,EADEn1C,EAhEgB,SAAAi1C,GAGtB,OAFYA,EAAKrhM,QAGf,IAAK,MACH,MAAO,CAAEG,KAAM,cAAey+G,OAAQ,UACxC,IAAK,SACH,MAAO,CAAEz+G,KAAM,cAAey+G,OAAQ,UACxC,IAAK,UACH,MAAO,CAAEz+G,KAAM,qBAAsBy+G,OAAQ,UAC/C,IAAK,OACH,MAAO,CAAEz+G,KAAM,qBAAsBy+G,OAAQ,UAC/C,IAAK,OACH,MAAO,CAAEz+G,KAAM,sBAAuBy+G,OAAQ,UAChD,IAAK,OACH,MAAO,CAAEz+G,KAAM,sBAAuBy+G,OAAQ,UAChD,IAAK,OACH,MAAO,CAAEz+G,KAAM,qBAAsBy+G,OAAQ,SAC/C,IAAK,OACH,MAAO,CAAEz+G,KAAM,sBAAuBy+G,OAAQ,SAChD,IAAK,OACH,MAAO,CAAEz+G,KAAM,qBAAsBy+G,OAAQ,SAC/C,IAAK,OAEL,IAAK,QACH,MAAO,CAAEz+G,KAAM,qBAAsBy+G,OAAQ,UAC/C,IAAK,OAEL,IAAK,QACH,MAAO,CAAEz+G,KAAM,qBAAsBy+G,OAAQ,UAC/C,IAAK,QACH,MAAO,CAAEz+G,KAAM,sBAAuBy+G,OAAQ,UAChD,IAAK,MACH,MAAO,CAAEz+G,KAAM,eAAgBy+G,OAAQ,UACzC,IAAK,MACH,MAAO,CAAEz+G,KAAM,aAAcy+G,OAAQ,UACvC,IAAK,OACH,MAAO,CAAEz+G,KAAM,cAAey+G,OAAQ,UACxC,IAAK,OACH,MAAO,CAAEz+G,KAAM,cAAey+G,OAAQ,UACxC,IAAK,OACH,MAAO,CAAEz+G,KAAM,eAAgBy+G,OAAQ,UACzC,IAAK,MACH,MAAO,CAAEz+G,KAAM,aAAcy+G,OAAQ,UACvC,IAAK,MACH,MAAO,CAAEz+G,KAAM,cAAey+G,OAAQ,UACxC,IAAK,MACH,MAAO,CAAEz+G,KAAM,cAAey+G,OAAQ,UACxC,IAAK,MACH,MAAO,CAAEz+G,KAAM,eAAgBy+G,OAAQ,UACzC,IAAK,KACH,MAAO,CAAEz+G,KAAM,aAAcy+G,OAAQ,UACvC,IAAK,MACH,MAAO,CAAEz+G,KAAM,cAAey+G,OAAQ,SACxC,IAAK,MACH,MAAO,CAAEz+G,KAAM,cAAey+G,OAAQ,SACxC,IAAK,MACH,MAAO,CAAEz+G,KAAM,eAAgBy+G,OAAQ,SACzC,IAAK,MACH,MAAO,CAAEz+G,KAAM,aAAcy+G,OAAQ,UAK5B4iF,CAAgBH,GAE7B,GAAIC,EAAW,CAGb,IAFAC,EAlGsB,SAAAF,GAGxB,OAFYA,EAAKrhM,QAGf,IAAK,MACH,MAAO,CAAEG,KAAM,cAAey+G,OAAQ,UACxC,IAAK,MACH,MAAO,CAAEz+G,KAAM,cAAey+G,OAAQ,UACxC,IAAK,MACH,MAAO,CAAEz+G,KAAM,eAAgBy+G,OAAQ,UACzC,IAAK,MACH,MAAO,CAAEz+G,KAAM,cAAey+G,OAAQ,UACxC,IAAK,MACH,MAAO,CAAEz+G,KAAM,cAAey+G,OAAQ,UACxC,IAAK,MACH,MAAO,CAAEz+G,KAAM,eAAgBy+G,OAAQ,UACzC,IAAK,MACH,MAAO,CAAEz+G,KAAM,cAAey+G,OAAQ,SACxC,IAAK,MACH,MAAO,CAAEz+G,KAAM,cAAey+G,OAAQ,SACxC,IAAK,MACH,MAAO,CAAEz+G,KAAM,eAAgBy+G,OAAQ,SACzC,IAAK,KACH,MAAO,CAAEz+G,KAAM,aAAcy+G,OAAQ,UACvC,IAAK,KACH,MAAO,CAAEz+G,KAAM,aAAcy+G,OAAQ,SACvC,IAAK,KACH,MAAO,CAAEz+G,KAAM,aAAcy+G,OAAQ,WAuE3B6iF,CAAkBH,IAEhB1iF,SAAWwtC,EAAKxtC,OAC5B,MAAO,CAAEz+G,KAAM,UAAWy+G,OAAQ,WAGpC,GAAuB,eAAnB2iF,EAAUphM,KAEZohM,EAAUphM,KAAOisJ,EAAKjsJ,SACjB,CAEL,GAAIohM,EAAUphM,OAASisJ,EAAKjsJ,KAAM,MAAO,CAAEA,KAAM,UAAWy+G,OAAQ,WAEpE2iF,EAAUphM,KAAO,UAAYohM,EAAUphM,KAOzC,MAJuB,iBAAnBohM,EAAUphM,OACZohM,EAAUphM,KAAO,sBAGZohM,EAGT,OAAOn1C,GA0BPz4E,IAAK,CACHisC,WA5JsB,WACxB,QAAI6+E,KACFA,IAAiB,GACV,M,4DCveX,SAASiD,GAAStgM,EAAQgwL,EAAMnvL,GAC9B,IAEMxM,EAAc,IAFV27L,EAAKprK,MACLorK,EAAKnrK,QAETimB,EAAS,CACb,CAAEl2C,EAAGP,EAAI,EAAG2G,EAAG,GACf,CAAEpG,EAAGP,EAAG2G,GAAI3G,EAAI,GAChB,CAAEO,EAAGP,EAAI,EAAG2G,GAAI3G,GAChB,CAAEO,EAAG,EAAGoG,GAAI3G,EAAI,IAEZ67L,EAAWqQ,GAAmBvgM,EAAQ3L,EAAGA,EAAGy2C,GAIlD,OAHAjqC,EAAK8sC,UAAY,SAAStzB,GACxB,OAAOmmL,KAAQ7yJ,UAAUnc,QAAQ3wB,EAAMiqC,EAAQzwB,IAE1C61K,EAGT,SAASuQ,GAAQzgM,EAAQgwL,EAAMnvL,GAC7B,IACM6V,EAAIs5K,EAAKnrK,OACTnyB,EAAIgkB,EAFA,EAGJmN,EAAImsK,EAAKprK,MAAQ,EAAIlyB,EACrBo4C,EAAS,CACb,CAAEl2C,EAAGlC,EAAGsI,EAAG,GACX,CAAEpG,EAAGivB,EAAInxB,EAAGsI,EAAG,GACf,CAAEpG,EAAGivB,EAAG7oB,GAAI0b,EAAI,GAChB,CAAE9hB,EAAGivB,EAAInxB,EAAGsI,GAAI0b,GAChB,CAAE9hB,EAAGlC,EAAGsI,GAAI0b,GACZ,CAAE9hB,EAAG,EAAGoG,GAAI0b,EAAI,IAEZw5K,EAAWqQ,GAAmBvgM,EAAQ6jB,EAAGnN,EAAGo0B,GAIlD,OAHAjqC,EAAK8sC,UAAY,SAAStzB,GACxB,OAAOmmL,KAAQ7yJ,UAAUnc,QAAQ3wB,EAAMiqC,EAAQzwB,IAE1C61K,EAGT,SAASwQ,GAAoB1gM,EAAQgwL,EAAMnvL,GACzC,IAAMgjB,EAAImsK,EAAKprK,MACTlO,EAAIs5K,EAAKnrK,OACTimB,EAAS,CACb,CAAEl2C,GAAI8hB,EAAI,EAAG1b,EAAG,GAChB,CAAEpG,EAAGivB,EAAG7oB,EAAG,GACX,CAAEpG,EAAGivB,EAAG7oB,GAAI0b,GACZ,CAAE9hB,GAAI8hB,EAAI,EAAG1b,GAAI0b,GACjB,CAAE9hB,EAAG,EAAGoG,GAAI0b,EAAI,IAEZw5K,EAAWqQ,GAAmBvgM,EAAQ6jB,EAAGnN,EAAGo0B,GAIlD,OAHAjqC,EAAK8sC,UAAY,SAAStzB,GACxB,OAAOmmL,KAAQ7yJ,UAAUnc,QAAQ3wB,EAAMiqC,EAAQzwB,IAE1C61K,EAGT,SAASyQ,GAAW3gM,EAAQgwL,EAAMnvL,GAChC,IAAMgjB,EAAImsK,EAAKprK,MACTlO,EAAIs5K,EAAKnrK,OACTimB,EAAS,CACb,CAAEl2C,GAAK,EAAI8hB,EAAK,EAAG1b,EAAG,GACtB,CAAEpG,EAAGivB,EAAInN,EAAI,EAAG1b,EAAG,GACnB,CAAEpG,EAAGivB,EAAK,EAAInN,EAAK,EAAG1b,GAAI0b,GAC1B,CAAE9hB,EAAG8hB,EAAI,EAAG1b,GAAI0b,IAEZw5K,EAAWqQ,GAAmBvgM,EAAQ6jB,EAAGnN,EAAGo0B,GAIlD,OAHAjqC,EAAK8sC,UAAY,SAAStzB,GACxB,OAAOmmL,KAAQ7yJ,UAAUnc,QAAQ3wB,EAAMiqC,EAAQzwB,IAE1C61K,EAGT,SAAS0Q,GAAU5gM,EAAQgwL,EAAMnvL,GAC/B,IAAMgjB,EAAImsK,EAAKprK,MACTlO,EAAIs5K,EAAKnrK,OACTimB,EAAS,CACb,CAAEl2C,EAAI,EAAI8hB,EAAK,EAAG1b,EAAG,GACrB,CAAEpG,EAAGivB,EAAInN,EAAI,EAAG1b,EAAG,GACnB,CAAEpG,EAAGivB,EAAK,EAAInN,EAAK,EAAG1b,GAAI0b,GAC1B,CAAE9hB,GAAI8hB,EAAI,EAAG1b,GAAI0b,IAEbw5K,EAAWqQ,GAAmBvgM,EAAQ6jB,EAAGnN,EAAGo0B,GAIlD,OAHAjqC,EAAK8sC,UAAY,SAAStzB,GACxB,OAAOmmL,KAAQ7yJ,UAAUnc,QAAQ3wB,EAAMiqC,EAAQzwB,IAE1C61K,EAGT,SAAS2Q,GAAU7gM,EAAQgwL,EAAMnvL,GAC/B,IAAMgjB,EAAImsK,EAAKprK,MACTlO,EAAIs5K,EAAKnrK,OACTimB,EAAS,CACb,CAAEl2C,GAAK,EAAI8hB,EAAK,EAAG1b,EAAG,GACtB,CAAEpG,EAAGivB,EAAK,EAAInN,EAAK,EAAG1b,EAAG,GACzB,CAAEpG,EAAGivB,EAAInN,EAAI,EAAG1b,GAAI0b,GACpB,CAAE9hB,EAAG8hB,EAAI,EAAG1b,GAAI0b,IAEZw5K,EAAWqQ,GAAmBvgM,EAAQ6jB,EAAGnN,EAAGo0B,GAIlD,OAHAjqC,EAAK8sC,UAAY,SAAStzB,GACxB,OAAOmmL,KAAQ7yJ,UAAUnc,QAAQ3wB,EAAMiqC,EAAQzwB,IAE1C61K,EAGT,SAAS4Q,GAAc9gM,EAAQgwL,EAAMnvL,GACnC,IAAMgjB,EAAImsK,EAAKprK,MACTlO,EAAIs5K,EAAKnrK,OACTimB,EAAS,CACb,CAAEl2C,EAAG8hB,EAAI,EAAG1b,EAAG,GACf,CAAEpG,EAAGivB,EAAInN,EAAI,EAAG1b,EAAG,GACnB,CAAEpG,EAAGivB,EAAK,EAAInN,EAAK,EAAG1b,GAAI0b,GAC1B,CAAE9hB,GAAK,EAAI8hB,EAAK,EAAG1b,GAAI0b,IAEnBw5K,EAAWqQ,GAAmBvgM,EAAQ6jB,EAAGnN,EAAGo0B,GAIlD,OAHAjqC,EAAK8sC,UAAY,SAAStzB,GACxB,OAAOmmL,KAAQ7yJ,UAAUnc,QAAQ3wB,EAAMiqC,EAAQzwB,IAE1C61K,EAGT,SAAS6Q,GAAqB/gM,EAAQgwL,EAAMnvL,GAC1C,IAAMgjB,EAAImsK,EAAKprK,MACTlO,EAAIs5K,EAAKnrK,OACTimB,EAAS,CACb,CAAEl2C,EAAG,EAAGoG,EAAG,GACX,CAAEpG,EAAGivB,EAAInN,EAAI,EAAG1b,EAAG,GACnB,CAAEpG,EAAGivB,EAAG7oB,GAAI0b,EAAI,GAChB,CAAE9hB,EAAGivB,EAAInN,EAAI,EAAG1b,GAAI0b,GACpB,CAAE9hB,EAAG,EAAGoG,GAAI0b,IAERw5K,EAAWqQ,GAAmBvgM,EAAQ6jB,EAAGnN,EAAGo0B,GAIlD,OAHAjqC,EAAK8sC,UAAY,SAAStzB,GACxB,OAAOmmL,KAAQ7yJ,UAAUnc,QAAQ3wB,EAAMiqC,EAAQzwB,IAE1C61K,EAGT,SAAS8Q,GAAQhhM,EAAQgwL,EAAMnvL,GAC7B,IAAM6V,EAAIs5K,EAAKnrK,OACThB,EAAImsK,EAAKprK,MAAQlO,EAAI,EAErBw5K,EAAWlwL,EACdxC,OAAO,OAAQ,gBACfL,KAAK,KAAMuZ,EAAI,GACfvZ,KAAK,KAAMuZ,EAAI,GACfvZ,KAAK,KAAM0mB,EAAI,GACf1mB,KAAK,KAAMuZ,EAAI,GACfvZ,KAAK,QAAS0mB,GACd1mB,KAAK,SAAUuZ,GAKlB,OAHA7V,EAAK8sC,UAAY,SAAStzB,GACxB,OAAOmmL,KAAQ7yJ,UAAUhzB,KAAK9Z,EAAMwZ,IAE/B61K,EAGT,SAAS+Q,GAAWjhM,EAAQgwL,EAAMnvL,GAChC,IAAMgjB,EAAImsK,EAAKprK,MACTlO,EAAIs5K,EAAKnrK,OACTimB,EAAS,CACb,CAAEl2C,EAAG,EAAGoG,EAAG,GACX,CAAEpG,EAAGivB,EAAG7oB,EAAG,GACX,CAAEpG,EAAGivB,EAAG7oB,GAAI0b,GACZ,CAAE9hB,EAAG,EAAGoG,GAAI0b,GACZ,CAAE9hB,EAAG,EAAGoG,EAAG,GACX,CAAEpG,GAAI,EAAGoG,EAAG,GACZ,CAAEpG,EAAGivB,EAAI,EAAG7oB,EAAG,GACf,CAAEpG,EAAGivB,EAAI,EAAG7oB,GAAI0b,GAChB,CAAE9hB,GAAI,EAAGoG,GAAI0b,GACb,CAAE9hB,GAAI,EAAGoG,EAAG,IAERk1L,EAAWqQ,GAAmBvgM,EAAQ6jB,EAAGnN,EAAGo0B,GAIlD,OAHAjqC,EAAK8sC,UAAY,SAAStzB,GACxB,OAAOmmL,KAAQ7yJ,UAAUnc,QAAQ3wB,EAAMiqC,EAAQzwB,IAE1C61K,EAGT,SAASgR,GAASlhM,EAAQgwL,EAAMnvL,GAC9B,IAAMgjB,EAAImsK,EAAKprK,MACTs8C,EAAKr9C,EAAI,EACTs9C,EAAKD,GAAM,IAAMr9C,EAAI,IACrBnN,EAAIs5K,EAAKnrK,OAASs8C,EAElBouH,EACJ,OACApuH,EACA,MACAD,EACA,IACAC,EACA,UACAt9C,EACA,QACAq9C,EACA,IACAC,EACA,WACCt9C,EACD,UACAnN,EACA,MACAwqD,EACA,IACAC,EACA,UACAt9C,EACA,WACCnN,EAEGw5K,EAAWlwL,EACd7C,KAAK,iBAAkBgkE,GACvB3jE,OAAO,OAAQ,gBACfL,KAAK,IAAKoyL,GACVpyL,KAAK,YAAa,cAAgB0mB,EAAI,EAAI,MAAQnN,EAAI,EAAIyqD,GAAM,KAwBnE,OAtBAtgE,EAAK8sC,UAAY,SAAStzB,GACxB,IAAM+3E,EAAMouG,KAAQ7yJ,UAAUhzB,KAAK9Z,EAAMwZ,GACnCzlB,EAAIw9F,EAAIx9F,EAAIiM,EAAKjM,EAEvB,GACQ,GAANssE,IACCrqE,KAAK4B,IAAI7D,GAAKiM,EAAK+jB,MAAQ,GACzB/tB,KAAK4B,IAAI7D,IAAMiM,EAAK+jB,MAAQ,GAAK/tB,KAAK4B,IAAI25F,EAAIp3F,EAAI6F,EAAK7F,GAAK6F,EAAKgkB,OAAS,EAAIs8C,GACjF,CAGA,IAAInmE,EAAImmE,EAAKA,GAAM,EAAKvsE,EAAIA,GAAMssE,EAAKA,IAC9B,GAALlmE,IAAQA,EAAInE,KAAKC,KAAKkE,IAC1BA,EAAImmE,EAAKnmE,EACLqf,EAAMrf,EAAI6F,EAAK7F,EAAI,IAAGA,GAAKA,GAE/Bo3F,EAAIp3F,GAAKA,EAGX,OAAOo3F,GAGF89F,EAuDT,SAASqQ,GAAmBvgM,EAAQ6jB,EAAGnN,EAAGo0B,GACxC,OAAO9qC,EACJxC,OAAO,UAAW,gBAClBL,KACC,SACA2tC,EACG5zC,KAAI,SAAStE,GACZ,OAAOA,EAAEgC,EAAI,IAAMhC,EAAEoI,KAEtBqJ,KAAK,MAETlH,KAAK,YAAa,cAAgB0mB,EAAI,EAAI,IAAMnN,EAAI,EAAI,KAG9C,QACbyqL,YAnEK,SAAqBxqG,GAC1BA,EAAO43F,SAAS+R,SAAWA,GAC3B3pG,EAAO43F,SAASkS,QAAUA,GAC1B9pG,EAAO43F,SAASyS,QAAUA,GAC1BrqG,EAAO43F,SAAS0S,WAAaA,GAC7BtqG,EAAO43F,SAAS2S,SAAWA,GAG3BvqG,EAAO43F,SAASmS,oBAAsBA,GAGtC/pG,EAAO43F,SAASoS,WAAaA,GAG7BhqG,EAAO43F,SAASqS,UAAYA,GAG5BjqG,EAAO43F,SAASsS,UAAYA,GAG5BlqG,EAAO43F,SAASuS,cAAgBA,GAGhCnqG,EAAO43F,SAASwS,qBAAuBA,IA6CvCK,cA1CK,SAAuBC,GAC5BA,EAAS,CAAEf,cACXe,EAAS,CAAEZ,aACXY,EAAS,CAAEL,aACXK,EAAS,CAAEJ,gBACXI,EAAS,CAAEH,cAGXG,EAAS,CAAEX,yBAGXW,EAAS,CAAEV,gBAGXU,EAAS,CAAET,eAGXS,EAAS,CAAER,eAGXQ,EAAS,CAAEP,mBAGXO,EAAS,CAAEN,4BCpRPz0E,GAAO,GAaAg1E,GAAc,SAAStU,EAAM72K,EAAGorL,GAC3C,IAAMlgM,EAAMhE,iBAAO,QAAD,OAASkkM,EAAT,OACLvuM,OAAOyyB,KAAKunK,GAGpBrjK,SAAQ,SAASrM,GACpB,IAAMqjD,EAASqsH,EAAK1vK,GAMhBkkL,EAAW,UACX7gI,EAAOq8H,QAAQroM,OAAS,IAC1B6sM,EAAW7gI,EAAOq8H,QAAQ34L,KAAK,MAGjC,IAMIo9L,EANE7yC,EAASslC,EAAmBvzH,EAAOiuF,QAGrC8yC,OAA6Bp/K,IAAhBq+C,EAAOrjE,KAAqBqjE,EAAOrjE,KAAOqjE,EAAOrjD,GAIlE,GAAIu/K,IAAYnK,UAAUD,WAAY,CAEpC,IAAM5xL,EAAO,CACX62F,MAAOgqG,EAAWtrK,QAChB,wBACA,SAAA/hC,GAAC,0BAAiBA,EAAE+hC,QAAQ,IAAK,KAAhC,eAGLqrK,EAAat3D,KAAa9oI,EAAKR,GAAMA,QAC1BlD,WAAWkI,YAAY47L,OAC7B,CACL,IAAME,EAAWl/L,SAASgD,gBAAgB,6BAA8B,QACxEk8L,EAASx/L,aAAa,QAASysJ,EAAOrmC,WAAWnyF,QAAQ,SAAU,UAInE,IAFA,IAAM3B,EAAOitK,EAAW7iM,MAAM4lI,EAAO0tD,gBAE5B93L,EAAI,EAAGA,EAAIo6B,EAAK9/B,OAAQ0F,IAAK,CACpC,IAAMunM,EAAQn/L,SAASgD,gBAAgB,6BAA8B,SACrEm8L,EAAMv/L,eAAe,uCAAwC,YAAa,YAC1Eu/L,EAAMz/L,aAAa,KAAM,OACzBy/L,EAAMz/L,aAAa,IAAK,KACxBy/L,EAAMn9L,YAAcgwB,EAAKp6B,GACzBsnM,EAASphM,YAAYqhM,GAEvBH,EAAaE,EAGf,IAAIE,EAAU,EACVC,EAAS,GAEb,OAAQnhI,EAAO5hE,MACb,IAAK,QACH8iM,EAAU,EACVC,EAAS,OACT,MACF,IAAK,SACHA,EAAS,OACT,MACF,IAAK,UACHA,EAAS,WACT,MACF,IAAK,UACHA,EAAS,UACT,MACF,IAAK,MACHA,EAAS,sBACT,MACF,IAAK,aACHA,EAAS,aACT,MACF,IAAK,YACHA,EAAS,YACT,MACF,IAAK,YACHA,EAAS,YACT,MACF,IAAK,gBACHA,EAAS,gBACT,MACF,IAAK,YACHA,EAAS,sBACT,MACF,IAAK,SACHA,EAAS,SACT,MACF,IAAK,UACHA,EAAS,UACT,MACF,IAAK,UACHA,EAAS,UACT,MACF,IAAK,aACHA,EAAS,aACT,MACF,IAAK,WACHA,EAAS,WACT,MACF,IAAK,QACHA,EAAS,OACT,MACF,QACEA,EAAS,OAGb3rL,EAAE8gF,QAAQt2B,EAAOrjD,GAAI,CACnBgtH,UAAW,MACX/hB,WAAYqmC,EAAOrmC,WACnBgnE,MAAOuS,EACPpqG,MAAO+pG,EACPvgI,GAAI2gI,EACJ1gI,GAAI0gI,EACJ7M,MAAOwM,EACP7+L,MAAOisJ,EAAOjsJ,MACd2a,GAAIqjD,EAAOrjD,SAUJykL,GAAW,SAAS38H,EAAOjvD,GACtC,IAEIwoL,EACAqD,EAHA5N,EAAM,EAKV,QAAkC,IAAvBhvH,EAAMu5H,aAA8B,CAC7C,IAAMsD,EAAgB/N,EAAmB9uH,EAAMu5H,cAC/CA,EAAesD,EAAct/L,MAC7Bq/L,EAAoBC,EAAc15E,WAGpCnjD,EAAMz7C,SAAQ,SAAS22C,GACrB8zH,IAGA,IAAI8N,EAAS,KAAO5hI,EAAKnpE,MAAQ,IAAMmpE,EAAKnoD,IACxCgqL,EAAgB,MAAQ7hI,EAAKnpE,MAC7BirM,EAAc,MAAQ9hI,EAAKnoD,IAEzBkqL,EAAW,GAGC,eAAd/hI,EAAKvhE,KACPsjM,EAAS7S,UAAY,OAErB6S,EAAS7S,UAAY,SAGvB,IAAI7sL,EAAQ,GACR4lH,EAAa,GAEjB,QAA0B,IAAfjoD,EAAK39D,MAAuB,CACrC,IAAMisJ,EAASslC,EAAmB5zH,EAAK39D,OACvCA,EAAQisJ,EAAOjsJ,MACf4lH,EAAaqmC,EAAOrmC,gBAEpB,OAAQjoD,EAAKk9C,QACX,IAAK,SACH76G,EAAQ,iBACoB,IAAjBg8L,IACTh8L,EAAQg8L,QAEuB,IAAtBqD,IACTz5E,EAAay5E,GAEf,MACF,IAAK,SACHr/L,EAAQ,iDACR,MACF,IAAK,QACHA,EAAQ,iCAKd0/L,EAAS1/L,MAAQA,EACjB0/L,EAAS95E,WAAaA,OAEU,IAArBjoD,EAAKvgD,YACdsiL,EAASjqI,MAAQ27H,EAAmBzzH,EAAKvgD,YAAa0vK,oBACT,IAA7BrqH,EAAMs5H,mBACtB2D,EAASjqI,MAAQ27H,EAAmB3uH,EAAMs5H,mBAAoBjP,eAE9D4S,EAASjqI,MAAQ27H,EAAmBznE,GAAKl0D,MAAOq3H,oBAGzB,IAAdnvH,EAAKhjE,UACY,IAAfgjE,EAAK39D,QACd0/L,EAASC,eAAiB,eAG5BD,EAASC,eAAiB,aAC1BD,EAASpoB,SAAW,IAEhB4iB,IAAYnK,UAAUD,YACxB4P,EAAS/3D,UAAY,OACrB+3D,EAAS3qG,MAAT,sBAAgCwqG,EAAhC,gCAA8DC,EAA9D,eAAkFC,EAAlF,aAAkG9hI,EAAKhjE,KAAvG,aAEA+kM,EAAS/3D,UAAY,OACrB+3D,EAAS3qG,MAAQp3B,EAAKhjE,KAAK84B,QAAQquG,EAAO0tD,eAAgB,WAEhC,IAAf7xH,EAAK39D,QACd0/L,EAAS1/L,MAAQ0/L,EAAS1/L,OAAS,+CAGrC0/L,EAAS95E,WAAa85E,EAAS95E,WAAWnyF,QAAQ,SAAU,WAIhEisK,EAAS/kL,GAAK4kL,EACdG,EAASrN,MAAQmN,EAAgB,IAAMC,EAGvCjsL,EAAEwhF,QAAQr3B,EAAKnpE,MAAOmpE,EAAKnoD,IAAKkqL,EAAUjO,OAsP/B,GA/dQ,SAASmO,GAE9B,IADA,IAAM98K,EAAOzyB,OAAOyyB,KAAK88K,GAChBjwM,EAAI,EAAGA,EAAImzB,EAAK9wB,OAAQrC,IAC/Bg6H,GAAK7mG,EAAKnzB,IAAMiwM,EAAI98K,EAAKnzB,KA4dd,GA9OW,SAASgL,GACjCy0L,EAAO/mC,KAAK,sBACZw3C,GAAO/5K,QACP,IACE,IAAMyS,EAAS8xG,KAAK9xG,OAKpB,OAJAA,EAAO8uC,GAAKw4H,GAGZtnK,EAAOvc,MAAMrhB,GACNklM,GAAOpD,aACd,MAAO9iL,GACP,SAmOW,GA1NK,SAAShf,EAAMggB,GACjCy0K,EAAO/mC,KAAK,qBACZw3C,GAAO/5K,QACP,IAAMyS,EAAS8xG,KAAK9xG,OACpBA,EAAO8uC,GAAKw4H,GAIZtnK,EAAOvc,MAAMrhB,GAMb,IAAIgwF,EAAMk1G,GAAOvD,oBACE,IAAR3xG,IACTA,EAAM,MAyBR,IAtBA,IAoBIm1G,EApBEn2E,EAAOuwE,IAAYnK,UACnBgG,EAAcpsE,EAAKosE,aAAe,GAClCC,EAAcrsE,EAAKqsE,aAAe,GAGlCxiL,EAAI,IAAIsgF,KAASzf,MAAM,CAC3B6gB,YAAY,EACZqtC,UAAU,IAET5tC,SAAS,CACR4iF,QAAS5sF,EACTsvF,QAAS8b,EACT1e,QAAS2e,EACT9c,QAAS,EACTE,QAAS,IAEVr0C,qBAAoB,WACnB,MAAO,MAILu1D,EAAYuF,GAAOxC,eAChB1tM,EAAI2qM,EAAUtoM,OAAS,EAAGrC,GAAK,EAAGA,IACzCmwM,EAAOxF,EAAU3qM,GACjBkwM,GAAOnlF,UAAUolF,EAAKnlL,GAAImlL,EAAKh2G,MAAO,aAASnqE,EAAWmgL,EAAKzF,SAIjE,IAAMhQ,EAAOwV,GAAOtD,cAEd95H,EAAQo9H,GAAOrD,WAEjB7sM,EAAI,EACR,IAAKA,EAAI2qM,EAAUtoM,OAAS,EAAGrC,GAAK,EAAGA,IAAK,CAC1CmwM,EAAOxF,EAAU3qM,GAEjBqK,oBAAU,WAAWO,OAAO,QAE5B,IAAK,IAAI7C,EAAI,EAAGA,EAAIooM,EAAKv4L,MAAMvV,OAAQ0F,IACrC8b,EAAE8wH,UAAUw7D,EAAKv4L,MAAM7P,GAAIooM,EAAKnlL,IAGpCgkL,GAAYtU,EAAM72K,EAAGmH,GACrBykL,GAAS38H,EAAOjvD,GAGhB,IACMwgF,EAAS,IAAI+rG,EADJlC,KAAQ7pG,QAIvBgsG,GAAgBxB,YAAYxqG,GAG5BA,EAAO63F,SAAS/uL,KAAO,SAAgBO,EAAQsd,EAAIgjD,EAAMvhE,GACvD,IAWMrC,EAXSsD,EACZ9C,OAAO,UACPC,KAAK,KAAMmgB,GACXngB,KAAK,UAAW,aAChBA,KAAK,OAAQ,GACbA,KAAK,OAAQ,GACbA,KAAK,cAAe,eACpBA,KAAK,cAAe,GACpBA,KAAK,eAAgB,GACrBA,KAAK,SAAU,QAEED,OAAO,QAAQC,KAAK,IAAK,uBAC7CqjM,KAAQ5pG,KAAKiE,WAAWn+F,EAAM4jE,EAAKvhE,EAAO,WAI5C43F,EAAO63F,SAASrnJ,OAAS,SAAgBnnC,EAAQsd,GAChCtd,EACZ9C,OAAO,UACPC,KAAK,KAAMmgB,GACXngB,KAAK,UAAW,aAChBA,KAAK,OAAQ,GACbA,KAAK,OAAQ,GACbA,KAAK,cAAe,eACpBA,KAAK,cAAe,GACpBA,KAAK,eAAgB,GACrBA,KAAK,SAAU,QAGfD,OAAO,QACPC,KAAK,IAAK,yBACVA,KAAK,QAAS,iBACdwF,MAAM,eAAgB,GACtBA,MAAM,mBAAoB,QAI/B,IAAMtB,EAAMhE,iBAAO,QAAD,OAASigB,EAAT,OAGZ0gL,EAAU3gM,iBAAO,IAAMigB,EAAK,MAClCq5E,EAAOqnG,EAAS7nL,GAEhB6nL,EAAQrhM,UAAU,UAAUQ,KAAK,SAAS,WACxC,OAAOqlM,GAAO1D,WAAW5sM,KAAKorB,OAGhC,IACMslL,EAAYvhM,EAAIR,OAAO2pI,UACvB5lH,EAAQg+K,EAAUh+K,MAAQ+d,GAC1B9d,EAAS+9K,EAAU/9K,OAAS8d,GAE9B2pF,EAAKktE,aACPn4L,EAAIlE,KAAK,QAAS,QAClBkE,EAAIlE,KAAK,QAAT,qBAAgCynB,EAAhC,UAEAvjB,EAAIlE,KAAK,SAAU0nB,GACnBxjB,EAAIlE,KAAK,QAASynB,IAIpB,IAAMi+K,EAAO,GAAH,OAAMD,EAAUhuM,EAdV,EAcN,YAA+BguM,EAAU5nM,EAdnC,EAcN,YAAwD4pB,EAAxD,YAAiEC,GAQ3E,IAPAktK,EAAO76E,MAAP,kBAAwB2rF,IACxBxhM,EAAIlE,KAAK,UAAW0lM,GAGpBL,GAAO5C,WAAW,WAAattM,GAG1BA,EAAI,EAAGA,EAAI2qM,EAAUtoM,OAAQrC,IAGhC,GAAmB,eAFnBmwM,EAAOxF,EAAU3qM,IAERm6F,MAAuB,CAC9B,IAAMq2G,EAAergM,SAAS7C,iBAAiB,IAAM0d,EAAK,SAAWmlL,EAAKnlL,GAAK,WACzEylL,EAAYtgM,SAAS7C,iBAAiB,IAAM0d,EAAK,SAAWmlL,EAAKnlL,GAAK,MAEtE0lL,EAAOF,EAAa,GAAGluM,EAAE2qB,QAAQhsB,MACjC0vM,EAAOH,EAAa,GAAG9nM,EAAEukB,QAAQhsB,MACjCqxB,EAAQk+K,EAAa,GAAGl+K,MAAMrF,QAAQhsB,MAEtC8uG,EADUhlG,iBAAO0lM,EAAU,IACd1lM,OAAO,UAC1BglG,EAAGllG,KAAK,YAAR,oBAAkC6lM,EAAOp+K,EAAQ,EAAjD,aAAuDq+K,EAAO,GAA9D,MACA5gG,EAAGllG,KAAK,KAAMmgB,EAAK,QAEnB,IAAK,IAAIjjB,EAAI,EAAGA,EAAIooM,EAAKzF,QAAQroM,OAAQ0F,IACvC0oM,EAAU,GAAGt/L,UAAUO,IAAIy+L,EAAKzF,QAAQ3iM,IAMzCiyH,EAAKmmE,WAER,IADA,IAAMyQ,EAASzgM,SAAS7C,iBAAiB,QAAU0d,EAAK,wBAC/CxhB,EAAI,EAAGA,EAAIonM,EAAOvuM,OAAQmH,IAAK,CACtC,IAAM47F,EAAQwrG,EAAOpnM,GAGfspB,EAAMsyE,EAAM8yC,UAEZ7vH,EAAOlY,SAASgD,gBAAgB,6BAA8B,QACpEkV,EAAKxY,aAAa,KAAM,GACxBwY,EAAKxY,aAAa,KAAM,GACxBwY,EAAKxY,aAAa,QAASijB,EAAIR,OAC/BjK,EAAKxY,aAAa,SAAUijB,EAAIP,QAChClK,EAAKxY,aAAa,QAAS,iBAE3Bu1F,EAAMj3F,aAAaka,EAAM+8E,EAAMtyF,YAKtBpS,OAAOyyB,KAAKunK,GACpBrjK,SAAQ,SAAS91B,GACpB,IAAM8sE,EAASqsH,EAAKn5L,GAEpB,GAAI8sE,EAAOziC,KAAM,CACf,IAAMr9B,EAAOxD,iBAAO,IAAMigB,EAAK,SAAWzpB,EAAM,MAChD,GAAIgN,EAAM,CACR,IAAMq9B,EAAOz7B,SAASgD,gBAAgB,6BAA8B,KACpEy4B,EAAK77B,eAAe,6BAA8B,QAASs+D,EAAOq8H,QAAQ34L,KAAK,MAC/E65B,EAAK77B,eAAe,6BAA8B,OAAQs+D,EAAOziC,MACjEA,EAAK77B,eAAe,6BAA8B,MAAO,YAEzD,IAAM8gM,EAAWtiM,EAAKrD,QAAO,WAC3B,OAAO0gC,IACN,gBAEGqxJ,EAAQ1uL,EAAKxD,OAAO,oBACtBkyL,GACF4T,EAASjmM,QAAO,WACd,OAAOqyL,EAAM1uL,UAIjB,IAAM62F,EAAQ72F,EAAKxD,OAAO,UACtBq6F,GACFyrG,EAASjmM,QAAO,WACd,OAAOw6F,EAAM72F,gB,oBC7OnBuiM,GAAU,CACdC,UA7OgB,SAACv5B,EAAM/qK,EAAMue,GAC7By0K,EAAOhoH,MAAM,sBAAuBzsD,GACpCwsJ,EACG5sK,OAAO,QACPA,OAAO,UACPC,KAAK,KAAM4B,EAAO,mBAClB5B,KAAK,QAAS,oBAAsB4B,GACpC5B,KAAK,OAAQ,GACbA,KAAK,OAAQ,GACbA,KAAK,cAAe,KACpBA,KAAK,eAAgB,KACrBA,KAAK,SAAU,QACfD,OAAO,QACPC,KAAK,IAAK,sBAEb2sK,EACG5sK,OAAO,QACPA,OAAO,UACPC,KAAK,KAAM4B,EAAO,iBAAmBA,GACrC5B,KAAK,QAAS,oBAAsB4B,GACpC5B,KAAK,OAAQ,IACbA,KAAK,OAAQ,GACbA,KAAK,cAAe,IACpBA,KAAK,eAAgB,IACrBA,KAAK,SAAU,QACfD,OAAO,QACPC,KAAK,IAAK,uBAoNbmmM,YAjNkB,SAACx5B,EAAM/qK,GACzB+qK,EACG5sK,OAAO,QACPA,OAAO,UACPC,KAAK,KAAM4B,EAAO,qBAClB5B,KAAK,QAAS,oBAAsB4B,GACpC5B,KAAK,OAAQ,GACbA,KAAK,OAAQ,GACbA,KAAK,cAAe,KACpBA,KAAK,eAAgB,KACrBA,KAAK,SAAU,QACfD,OAAO,QACPC,KAAK,IAAK,4BAEb2sK,EACG5sK,OAAO,QACPA,OAAO,UACPC,KAAK,KAAM4B,EAAO,mBAClB5B,KAAK,QAAS,oBAAsB4B,GACpC5B,KAAK,OAAQ,IACbA,KAAK,OAAQ,GACbA,KAAK,cAAe,IACpBA,KAAK,eAAgB,IACrBA,KAAK,SAAU,QACfD,OAAO,QACPC,KAAK,IAAK,6BAyLbomM,YAvLkB,SAACz5B,EAAM/qK,GACzB+qK,EACG5sK,OAAO,QACPA,OAAO,UACPC,KAAK,KAAM4B,EAAO,qBAClB5B,KAAK,QAAS,oBAAsB4B,GACpC5B,KAAK,OAAQ,GACbA,KAAK,OAAQ,GACbA,KAAK,cAAe,KACpBA,KAAK,eAAgB,KACrBA,KAAK,SAAU,QACfD,OAAO,QACPC,KAAK,IAAK,4BAEb2sK,EACG5sK,OAAO,QACPA,OAAO,UACPC,KAAK,KAAM4B,EAAO,mBAClB5B,KAAK,QAAS,UAAY4B,GAC1B5B,KAAK,OAAQ,IACbA,KAAK,OAAQ,GACbA,KAAK,cAAe,IACpBA,KAAK,eAAgB,IACrBA,KAAK,SAAU,QACfD,OAAO,QACPC,KAAK,IAAK,6BA+JbqmM,WA7JiB,SAAC15B,EAAM/qK,GACxB+qK,EACG5sK,OAAO,QACPA,OAAO,UACPC,KAAK,KAAM4B,EAAO,oBAClB5B,KAAK,QAAS,oBAAsB4B,GACpC5B,KAAK,OAAQ,GACbA,KAAK,OAAQ,GACbA,KAAK,cAAe,KACpBA,KAAK,eAAgB,KACrBA,KAAK,SAAU,QACfD,OAAO,QACPC,KAAK,IAAK,2BAEb2sK,EACG5sK,OAAO,QACPA,OAAO,UACPC,KAAK,KAAM4B,EAAO,kBAClB5B,KAAK,QAAS,UAAY4B,GAC1B5B,KAAK,OAAQ,IACbA,KAAK,OAAQ,GACbA,KAAK,cAAe,IACpBA,KAAK,eAAgB,IACrBA,KAAK,SAAU,QACfD,OAAO,QACPC,KAAK,IAAK,8BAqIbkd,MAnIY,SAACyvJ,EAAM/qK,GACnB+qK,EACG5sK,OAAO,UACPC,KAAK,KAAM4B,EAAO,aAClB5B,KAAK,QAAS,UAAY4B,GAC1B5B,KAAK,UAAW,aAChBA,KAAK,OAAQ,GACbA,KAAK,OAAQ,GACbA,KAAK,cAAe,kBACpBA,KAAK,cAAe,IACpBA,KAAK,eAAgB,IACrBA,KAAK,SAAU,QACfD,OAAO,QACPC,KAAK,IAAK,yBACVA,KAAK,QAAS,mBACdwF,MAAM,eAAgB,GACtBA,MAAM,mBAAoB,OAC7BmnK,EACG5sK,OAAO,UACPC,KAAK,KAAM4B,EAAO,eAClB5B,KAAK,QAAS,UAAY4B,GAC1B5B,KAAK,UAAW,aAChBA,KAAK,OAAQ,GACbA,KAAK,OAAQ,GACbA,KAAK,cAAe,kBACpBA,KAAK,cAAe,IACpBA,KAAK,eAAgB,IACrBA,KAAK,SAAU,QACfD,OAAO,QACPC,KAAK,IAAK,0BACVA,KAAK,QAAS,mBACdwF,MAAM,eAAgB,GACtBA,MAAM,mBAAoB,QAoG7B+nC,OAlGa,SAACo/H,EAAM/qK,GACpB+qK,EACG5sK,OAAO,UACPC,KAAK,KAAM4B,EAAO,cAClB5B,KAAK,QAAS,UAAY4B,GAC1B5B,KAAK,UAAW,aAChBA,KAAK,OAAQ,IACbA,KAAK,OAAQ,GACbA,KAAK,cAAe,kBACpBA,KAAK,cAAe,IACpBA,KAAK,eAAgB,IACrBA,KAAK,SAAU,QACfD,OAAO,UACPC,KAAK,KAAM,KACXA,KAAK,KAAM,KACXA,KAAK,IAAK,KACVA,KAAK,QAAS,mBACdwF,MAAM,eAAgB,GACtBA,MAAM,mBAAoB,OAE7BmnK,EACG5sK,OAAO,UACPC,KAAK,KAAM4B,EAAO,gBAClB5B,KAAK,QAAS,UAAY4B,GAC1B5B,KAAK,UAAW,aAChBA,KAAK,QAAS,GACdA,KAAK,OAAQ,GACbA,KAAK,cAAe,kBACpBA,KAAK,cAAe,IACpBA,KAAK,eAAgB,IACrBA,KAAK,SAAU,QACfD,OAAO,UACPC,KAAK,KAAM,KACXA,KAAK,KAAM,KACXA,KAAK,IAAK,KACVA,KAAK,QAAS,mBACdwF,MAAM,eAAgB,GACtBA,MAAM,mBAAoB,QA8D7B8gM,MA5DY,SAAC35B,EAAM/qK,GACnB+qK,EACG5sK,OAAO,UACPC,KAAK,KAAM4B,EAAO,aAClB5B,KAAK,QAAS,gBAAkB4B,GAChC5B,KAAK,UAAW,aAChBA,KAAK,OAAQ,IACbA,KAAK,OAAQ,KACbA,KAAK,cAAe,kBACpBA,KAAK,cAAe,IACpBA,KAAK,eAAgB,IACrBA,KAAK,SAAU,QACfD,OAAO,QAEPC,KAAK,IAAK,6BACVA,KAAK,QAAS,mBACdwF,MAAM,eAAgB,GACtBA,MAAM,mBAAoB,OAE7BmnK,EACG5sK,OAAO,UACPC,KAAK,KAAM4B,EAAO,eAClB5B,KAAK,QAAS,gBAAkB4B,GAChC5B,KAAK,UAAW,aAChBA,KAAK,QAAS,GACdA,KAAK,OAAQ,KACbA,KAAK,cAAe,kBACpBA,KAAK,cAAe,IACpBA,KAAK,eAAgB,IACrBA,KAAK,SAAU,QACfD,OAAO,QAEPC,KAAK,IAAK,6BACVA,KAAK,QAAS,mBACdwF,MAAM,eAAgB,GACtBA,MAAM,mBAAoB,QA0B7B+gM,KAxBW,SAAC55B,EAAM/qK,GAClB+qK,EACG5sK,OAAO,QACPA,OAAO,UACPC,KAAK,KAAM4B,EAAO,YAClB5B,KAAK,OAAQ,IACbA,KAAK,OAAQ,GACbA,KAAK,cAAe,IACpBA,KAAK,eAAgB,IACrBA,KAAK,cAAe,GACpBA,KAAK,SAAU,QACfD,OAAO,QACPC,KAAK,IAAK,+BAcAwmM,GA5PO,SAAC75B,EAAM85B,EAAa7kM,EAAMue,GAC9CsmL,EAAYj6K,SAAQ,SAAAk6K,GAClBT,GAAQS,GAAY/5B,EAAM/qK,EAAMue,OCoEpC,IA6CewmL,GA7CK,SAACC,EAAaphM,EAAOqhM,EAASC,GAChD,IAAIvC,EAAaqC,GAAe,GAChC,GAAIlH,IAAYnK,UAAUD,WAaxB,OAXAiP,EAAaA,EAAWtrK,QAAQ,UAAW,UAC3C27J,EAAO/mC,KAAK,aAAe02C,GAhD/B,SAAsB7gM,GA4BpB,IAlCkBi6F,EAAKC,EAkCjButB,EAAKjrH,iBAAOoF,SAASgD,gBAAgB,6BAA8B,kBACnE2gF,EAAMkiC,EAAGprH,OAAO,aAEhBw6F,EAAQ72F,EAAK62F,MACbwsG,EAAarjM,EAAKojM,OAAS,YAAc,YAQ/C,OAPA79G,EAAI97E,KAAK,gBAAkB45L,EAAa,KAAOxsG,EAAQ,WAvCrCoD,EAyCP1U,GAzCY2U,EAyCPl6F,EAAK0nH,aAvCnBztB,EAAI39F,KAAK,QAAS49F,GAwCpB3U,EAAIzjF,MAAM,UAAW,gBAErByjF,EAAIzjF,MAAM,cAAe,UACzByjF,EAAIjpF,KAAK,QAAS,gCACXmrH,EAAGznH,OAgBSspI,CAPJ,CACX85D,SACAvsG,MAAOgqG,EAAWtrK,QAChB,wBACA,SAAA/hC,GAAC,0BAAiBA,EAAE+hC,QAAQ,IAAK,KAAhC,eAOL,IAAMurK,EAAWl/L,SAASgD,gBAAgB,6BAA8B,QACxEk8L,EAASx/L,aAAa,QAASQ,EAAMyzB,QAAQ,SAAU,UACvD,IAAI3B,EAAO,GAETA,EADwB,iBAAfitK,EACFA,EAAW7iM,MAAM,uBACflJ,MAAM2D,QAAQooM,GAChBA,EAEA,GAGT,IAAK,IAAIrnM,EAAI,EAAGA,EAAIo6B,EAAK9/B,OAAQ0F,IAAK,CACpC,IAAMunM,EAAQn/L,SAASgD,gBAAgB,6BAA8B,SACrEm8L,EAAMv/L,eAAe,uCAAwC,YAAa,YAC1Eu/L,EAAMz/L,aAAa,KAAM,OACzBy/L,EAAMz/L,aAAa,IAAK,KACpB6hM,EACFpC,EAAMz/L,aAAa,QAAS,aAE5By/L,EAAMz/L,aAAa,QAAS,OAE9By/L,EAAMn9L,YAAcgwB,EAAKp6B,GAAGuE,OAC5B+iM,EAASphM,YAAYqhM,GAEvB,OAAOD,GCnHEwC,GAAc,SAACnkM,EAAQa,EAAMujM,EAAUH,GAClD,IAAIjH,EAIFA,EAHGoH,GACO,eAKZ,IAAMlU,EAAWlwL,EACdxC,OAAO,KACPL,KAAK,QAAS6/L,GACd7/L,KAAK,KAAM0D,EAAKyc,IAGbo6E,EAAQw4F,EAAS1yL,OAAO,KAAKL,KAAK,QAAS,SAE3CG,EAAOo6F,EACV72F,OACAN,YAAYujM,GAAYjjM,EAAKwjM,UAAWxjM,EAAK0nH,YAAY,EAAO07E,IAG/DjU,EAAO1yL,EAAKktI,UAEhB,GAAIqyD,IAAYnK,UAAUD,WAAY,CACpC,IAAMrsG,EAAM9oF,EAAK0kB,SAAS,GACpBsiL,EAAKjnM,iBAAOC,GAClB0yL,EAAO5pG,EAAIxrE,wBACX0pL,EAAGnnM,KAAK,QAAS6yL,EAAKprK,OACtB0/K,EAAGnnM,KAAK,SAAU6yL,EAAKnrK,QAGzB,IAAM0/K,EAAc1jM,EAAK8hC,QAAU,EAKnC,OAFA+0D,EAAMv6F,KAAK,YAAa,cAAgB6yL,EAAKprK,MAAQ,EAAI,MAAQorK,EAAKnrK,OAAS,EAAI,KAE5E,CAAEqrK,WAAUF,OAAMuU,cAAa7sG,UAG3B8sG,GAAmB,SAAC3jM,EAAMm9L,GACrC,IAAMhO,EAAOgO,EAAQn9L,OAAO2pI,UAC5B3pI,EAAK+jB,MAAQorK,EAAKprK,MAClB/jB,EAAKgkB,OAASmrK,EAAKnrK,QAGd,SAAS07K,GAAmBvgM,EAAQ6jB,EAAGnN,EAAGo0B,GAC/C,OAAO9qC,EACJxC,OAAO,UAAW,gBAClBL,KACC,SACA2tC,EACG5zC,KAAI,SAAStE,GACZ,OAAOA,EAAEgC,EAAI,IAAMhC,EAAEoI,KAEtBqJ,KAAK,MAETlH,KAAK,QAAS,mBACdA,KAAK,YAAa,cAAgB0mB,EAAI,EAAI,IAAMnN,EAAI,EAAI,KCtDtD,IAAI+tL,GAAY,GACnBC,GAAa,GACbr8L,GAAU,GAQRs8L,GAAc,SAACrnL,EAAIsnL,GAWvB,OARAzsM,EAAI++G,MACF,iBACA0tF,EACA,IACAtnL,EACA,MACAonL,GAAWE,GAAa9lM,QAAQwe,IAAO,GAErConL,GAAWE,GAAa9lM,QAAQwe,IAAO,GA0BvC9gB,GAAO,SAAPA,EAAQqoM,EAAWttG,EAAOutG,EAAUC,GACxC5sM,EAAI6yJ,KACF,uBACA65C,EACA,OACAE,EACA,OACAxtG,EAAM12F,KAAKgkM,GACXE,GAEF,IAAM76L,EAAQqtF,EAAMv1E,SAAS6iL,IAAc,GAGvCA,IAAcE,GAChB76L,EAAMvQ,KAAKkrM,GAGb1sM,EAAI++G,MAAM,4BAA6B2tF,EAAW,QAAS36L,GAE3DA,EAAMyf,SAAQ,SAAA9oB,GACZ,GAAI02F,EAAMv1E,SAASnhB,GAAMlM,OAAS,EAChC6H,EAAKqE,EAAM02F,EAAOutG,EAAUC,OACvB,CACL,IAAM9rM,EAAOs+F,EAAM12F,KAAKA,GACxB1I,EAAI6yJ,KAAK,MAAOnqJ,EAAM,OAAQkkM,EAAQ,gBAAiBF,GACvDC,EAAS7tG,QAAQp2F,EAAM5H,GACvBd,EAAI++G,MAAM,iBAAkBr2G,EAAM02F,EAAMv3F,OAAOa,IAC3CkkM,IAAWxtG,EAAMv3F,OAAOa,IAC1BikM,EAAS79D,UAAUpmI,EAAM02F,EAAMv3F,OAAOa,IAGpCgkM,IAAcE,GAAUlkM,IAASgkM,GACnC1sM,EAAI++G,MAAM,iBAAkBr2G,EAAMgkM,GAClCC,EAAS79D,UAAUpmI,EAAMgkM,KAEzB1sM,EAAI6yJ,KAAK,WAAY65C,EAAW,OAAQE,EAAQ,OAAQxtG,EAAM12F,KAAKgkM,GAAYE,GAC/E5sM,EAAI++G,MACF,+BACAr2G,EACA,mBACAgkM,IAAcE,EACd,mBACAlkM,IAASgkM,IAGb,IAAMz/H,EAAQmyB,EAAMnyB,MAAMvkE,GAC1B1I,EAAI++G,MAAM,gBAAiB9xC,GAC3BA,EAAMz7C,SAAQ,SAAA22C,GACZnoE,EAAI6yJ,KAAK,OAAQ1qF,GACjB,IAAMrnE,EAAOs+F,EAAMj3B,KAAKA,EAAK3pE,EAAG2pE,EAAKz8C,EAAGy8C,EAAKztE,MAC7CsF,EAAI6yJ,KAAK,YAAa/xJ,EAAM8rM,GAC5B,KAxEc,SAACzkI,EAAMukI,GAI3B,OAHA1sM,EAAI6yJ,KAAK,iBAAkB65C,EAAW,OAAQH,GAAWG,IACzD1sM,EAAI6yJ,KAAK,WAAY1qF,GAEjBA,EAAK3pE,IAAMkuM,IACXvkI,EAAKz8C,IAAMghL,IAEVH,GAAWG,IAIhB1sM,EAAI6yJ,KAAK,SAEL05C,GAAWG,GAAW/lM,QAAQwhE,EAAK3pE,IAAM,MACzCguM,GAAYrkI,EAAK3pE,EAAGkuM,OACpBF,GAAYrkI,EAAKz8C,EAAGghL,IACpBH,GAAWG,GAAW/lM,QAAQwhE,EAAKz8C,IAAM,MAR3C1rB,EAAI++G,MAAM,SAAU2tF,EAAW,uBACxB,KAiEGG,CAAc1kI,EAAMykI,GAKtB5sM,EAAI6yJ,KACF,yBACA1qF,EAAK3pE,EACL,SACA2pE,EAAKz8C,EACL,YACAkhL,EACA,cACAF,IAZF1sM,EAAI6yJ,KAAK,cAAe1qF,EAAK3pE,EAAG2pE,EAAKz8C,EAAG5qB,EAAMqnE,EAAKztE,MACnDiyM,EAASntG,QAAQr3B,EAAK3pE,EAAG2pE,EAAKz8C,EAAG5qB,EAAMqnE,EAAKztE,MAC5CsF,EAAI6yJ,KAAK,kBAAmB85C,EAAS1/H,QAAS0/H,EAASxkI,KAAKwkI,EAAS1/H,QAAQ,MAa/E,MAAO9oD,GACPnkB,EAAIE,MAAMikB,OAIhBnkB,EAAI++G,MAAM,gBAAiBr2G,GAC3B02F,EAAMuvC,WAAWjmI,OA0CRokM,GAAsB,SAAtBA,EAAuB3nL,EAAIi6E,GAEtCp/F,EAAI4xE,MAAM,YAAazsD,GAEvB,IAAM0E,EAAWu1E,EAAMv1E,SAAS1E,GAEhC,GADAnlB,EAAI4xE,MAAM,4BAA6BzsD,EAAI0E,GACvCA,EAASrtB,OAAS,EAEpB,OADAwD,EAAI4xE,MAAM,uBAAwBzsD,GAC3BA,EAET,IAAK,IAAIhrB,EAAI,EAAGA,EAAI0vB,EAASrtB,OAAQrC,IAAK,CACxC,IAAMwtB,EAAMmlL,EAAoBjjL,EAAS1vB,GAAIilG,GAC7C,GAAIz3E,EAEF,OADA3nB,EAAI4xE,MAAM,wBAAyBzsD,EAAI,OAAQwC,GACxCA,IAKPolL,GAAc,SAAA5nL,GAClB,OAAKmnL,GAAUnnL,IAIVmnL,GAAUnnL,GAAI6nL,qBAKfV,GAAUnnL,GACLmnL,GAAUnnL,GAAIA,GATdA,GAcE8nL,GAAyB,SAAC7tG,EAAO1pE,IACvC0pE,GAAS1pE,EAAQ,GACpB11B,EAAI++G,MAAM,0BAGV/+G,EAAI++G,MAAM,qBAIZ3f,EAAMrtF,QAAQyf,SAAQ,SAASrM,GACZi6E,EAAMv1E,SAAS1E,GACnB3oB,OAAS,IACpBwD,EAAIupG,KACF,qBACApkF,EACA,6BACA2nL,GAAoB3nL,EAAIi6E,IAE1BmtG,GAAWpnL,GA5FgB,SAApB+nL,EAAqB/nL,EAAIi6E,GAKpC,IAHA,IAAMv1E,EAAWu1E,EAAMv1E,SAAS1E,GAC5Bg+D,EAAM,GAAGp8E,OAAO8iB,GAEX1vB,EAAI,EAAGA,EAAI0vB,EAASrtB,OAAQrC,IACnC+V,GAAQ2Z,EAAS1vB,IAAMgrB,EACvBg+D,EAAMA,EAAIp8E,OAAOmmM,EAAkBrjL,EAAS1vB,GAAIilG,IAGlD,OAAOjc,EAkFc+pH,CAAkB/nL,EAAIi6E,GACvCktG,GAAUnnL,GAAM,CAAEA,GAAI2nL,GAAoB3nL,EAAIi6E,GAAQ+tG,YAAa/tG,EAAM12F,KAAKyc,QAKlFi6E,EAAMrtF,QAAQyf,SAAQ,SAASrM,GAC7B,IAAM0E,EAAWu1E,EAAMv1E,SAAS1E,GAC1B8nD,EAAQmyB,EAAMnyB,QAChBpjD,EAASrtB,OAAS,IACpBwD,EAAI++G,MAAM,qBAAsB55F,EAAIonL,IACpCt/H,EAAMz7C,SAAQ,SAAA22C,GAIRA,EAAK3pE,IAAM2mB,GAAMgjD,EAAKz8C,IAAMvG,IAInBqnL,GAAYrkI,EAAK3pE,EAAG2mB,GACpBqnL,GAAYrkI,EAAKz8C,EAAGvG,KAI7BnlB,EAAI++G,MAAM,SAAU52C,EAAM,mBAAoBhjD,GAC9CnlB,EAAI++G,MAAM,iBAAkB55F,EAAI,KAAMonL,GAAWpnL,IACjDmnL,GAAUnnL,GAAI6nL,qBAAsB,WAO9CI,GAAUhuG,EAAO,GAIjBA,EAAMnyB,QAAQz7C,SAAQ,SAASrN,GAC7B,IAAMgkD,EAAOi3B,EAAMj3B,KAAKhkD,GACxBnkB,EAAI4xE,MAAM,QAAUztD,EAAE3lB,EAAI,OAAS2lB,EAAEuH,EAAI,KAAOyQ,KAAKC,UAAUjY,IAC/DnkB,EAAI4xE,MAAM,QAAUztD,EAAE3lB,EAAI,OAAS2lB,EAAEuH,EAAI,KAAOyQ,KAAKC,UAAUgjE,EAAMj3B,KAAKhkD,KAE1E,IAAI3lB,EAAI2lB,EAAE3lB,EACNktB,EAAIvH,EAAEuH,EAEV1rB,EAAI4xE,MAAM,MAAO06H,GAAW,OAAQnoL,EAAE3lB,EAAG2lB,EAAEuH,EAAG,iBAAkB4gL,GAAUnoL,EAAE3lB,GAAI8tM,GAAUnoL,EAAEuH,KACxF4gL,GAAUnoL,EAAE3lB,IAAM8tM,GAAUnoL,EAAEuH,MAChC1rB,EAAIupG,KAAK,gCAAiCplF,EAAE3lB,EAAG2lB,EAAEuH,EAAGvH,EAAEzpB,MACtD8D,EAAIuuM,GAAY5oL,EAAE3lB,GAClBktB,EAAIqhL,GAAY5oL,EAAEuH,GAClB0zE,EAAMwvC,WAAWzqH,EAAE3lB,EAAG2lB,EAAEuH,EAAGvH,EAAEzpB,MACzB8D,IAAM2lB,EAAE3lB,IAAG2pE,EAAKklI,YAAclpL,EAAE3lB,GAChCktB,IAAMvH,EAAEuH,IAAGy8C,EAAKmlI,UAAYnpL,EAAEuH,GAClC1rB,EAAIupG,KAAK,iBAAkB/qG,EAAGktB,EAAGvH,EAAEzpB,MACnC0kG,EAAMI,QAAQhhG,EAAGktB,EAAGy8C,EAAMhkD,EAAEzpB,UAGhCsF,EAAIupG,KAAK,iBAAkBjL,KAASx7D,KAAKozD,MAAMkJ,IAE/Cp/F,EAAI4xE,MAAM06H,MAUCc,GAAY,SAAZA,EAAahuG,EAAO1pE,GAE/B,GADA11B,EAAI++G,MAAM,eAAgBrpF,EAAO4oE,KAASx7D,KAAKozD,MAAMkJ,GAAQA,EAAMv1E,SAAS,MACxE6L,EAAQ,GACV11B,EAAIE,MAAM,mBADZ,CASA,IAFA,IAAI6R,EAAQqtF,EAAMrtF,QACdw7L,GAAc,EACTpzM,EAAI,EAAGA,EAAI4X,EAAMvV,OAAQrC,IAAK,CACrC,IAAMuO,EAAOqJ,EAAM5X,GACb0vB,EAAWu1E,EAAMv1E,SAASnhB,GAChC6kM,EAAcA,GAAe1jL,EAASrtB,OAAS,EAGjD,GAAK+wM,EAAL,CAMAvtM,EAAI++G,MAAM,WAAYhtG,EAAO2jB,GAC7B,IAAK,IAAIv7B,EAAI,EAAGA,EAAI4X,EAAMvV,OAAQrC,IAAK,CACrC,IAAMuO,EAAOqJ,EAAM5X,GAenB,GAbA6F,EAAI++G,MACF,kBACAr2G,EACA4jM,GACAA,GAAU5jM,KAAU4jM,GAAU5jM,GAAMskM,qBACnC5tG,EAAMv3F,OAAOa,GACd02F,EAAM12F,KAAKA,GACX02F,EAAMv1E,SAAS,KACf,UACA6L,GAIG42K,GAAU5jM,GAIR,IACJ4jM,GAAU5jM,GAAMskM,sBAChB5tG,EAAMv3F,OAAOa,IACd02F,EAAMv1E,SAASnhB,IACf02F,EAAMv1E,SAASnhB,GAAMlM,OAAS,EAC9B,CACAwD,EAAI++G,MACF,2EACAr2G,EACAgtB,GAGF,IAAM83K,EAAgBpuG,EAAMA,QAEtBquG,EAAe,IAAInvG,KAASzf,MAAM,CACtC6gB,YAAY,EACZqtC,UAAU,IAET5tC,SAAS,CACR4iF,QAAmC,OAA1ByrB,EAAczrB,QAAmB,KAAO,KAEjD0C,QAAS,GACT5C,QAAS,GACT6B,QAAS,EACTE,QAAS,IAEVr0C,qBAAoB,WACnB,MAAO,MAGXvvI,EAAI++G,MAAM,wBAAyBzgB,KAASx7D,KAAKozD,MAAMkJ,IACvD/6F,GAAKqE,EAAM02F,EAAOquG,EAAc/kM,GAChC02F,EAAMN,QAAQp2F,EAAM,CAClBglM,aAAa,EACbvoL,GAAIzc,EACJykM,YAAab,GAAU5jM,GAAMykM,YAC7BjB,UAAWI,GAAU5jM,GAAMwjM,UAC3B9sG,MAAOquG,IAETztM,EAAI++G,MAAM,uBAAwBzgB,KAASx7D,KAAKozD,MAAMu3G,IACtDztM,EAAI++G,MAAM,uBAAwBzgB,KAASx7D,KAAKozD,MAAMkJ,SAEtDp/F,EAAI++G,MACF,cACAr2G,EACA,qDACC4jM,GAAU5jM,GAAMskM,oBACjB,gBACC5tG,EAAMv3F,OAAOa,GACd,aACA02F,EAAMv1E,SAASnhB,IAAS02F,EAAMv1E,SAASnhB,GAAMlM,OAAS,EACtD4iG,EAAMv1E,SAAS,KACf6L,GAEF11B,EAAI++G,MAAMutF,SAxDVtsM,EAAI++G,MAAM,gBAAiBr2G,EAAMgtB,GA4DrC3jB,EAAQqtF,EAAMrtF,QACd/R,EAAI++G,MAAM,oBAAqBhtG,GAC/B,IAAK,IAAI5X,EAAI,EAAGA,EAAI4X,EAAMvV,OAAQrC,IAAK,CACrC,IAAMuO,EAAOqJ,EAAM5X,GACb2G,EAAOs+F,EAAM12F,KAAKA,GACxB1I,EAAI++G,MAAM,kBAAmBr2G,EAAM5H,GAC/BA,EAAK4sM,aACPN,EAAUtsM,EAAKs+F,MAAO1pE,EAAQ,SA3FhC11B,EAAI++G,MAAM,6BAA8B3f,EAAMrtF,W,UC/RnCy+I,OAvBf,SAA0B9nJ,EAAMqgE,EAAIC,EAAI9mD,GAGtC,IAAI4uB,EAAKpoC,EAAKjM,EACVs0C,EAAKroC,EAAK7F,EAEV8iE,EAAK70B,EAAK5uB,EAAMzlB,EAChBmpE,EAAK70B,EAAK7uB,EAAMrf,EAEhBivI,EAAMpzI,KAAKC,KAAKoqE,EAAKA,EAAKnD,EAAKA,EAAKoD,EAAKA,EAAKrD,EAAKA,GAEnDv2C,EAAK1wB,KAAK4B,IAAKyoE,EAAKC,EAAKrD,EAAMmsE,GAC/B5vH,EAAMzlB,EAAIq0C,IACZ1hB,GAAMA,GAER,IAAIC,EAAK3wB,KAAK4B,IAAKyoE,EAAKC,EAAKpD,EAAMksE,GAKnC,OAJI5vH,EAAMrf,EAAIkuC,IACZ1hB,GAAMA,GAGD,CAAE5yB,EAAGq0C,EAAK1hB,EAAIvsB,EAAGkuC,EAAK1hB,ICdhBmqK,OAJf,SAAyB9wL,EAAMqgE,EAAI7mD,GACjC,OAAOsuI,GAAiB9nJ,EAAMqgE,EAAIA,EAAI7mD,IC8DxC,SAASwzK,GAASnxI,EAAIC,GACpB,OAAOD,EAAKC,EAAK,EAGJisG,OAjEf,SAAuBx9G,EAAI2uB,EAAIxrB,EAAIiuH,GAIjC,IAAIzyI,EAAI+yB,EAAIjN,EAAImN,EAAI/O,EAAIC,EACpBwO,EAAIC,EAAIE,EAAIixI,EACZC,EAAO7yL,EAAQ29E,EAenB,GAVA9uD,EAAKgwC,EAAG/+D,EAAIowC,EAAGpwC,EACf60C,EAAKzE,EAAGx2C,EAAImlE,EAAGnlE,EACfq5C,EAAK8rB,EAAGnlE,EAAIw2C,EAAGpwC,EAAIowC,EAAGx2C,EAAImlE,EAAG/+D,EAG7B6hD,EAAK9yB,EAAKwkB,EAAG35C,EAAIi7C,EAAKtB,EAAGvzC,EAAIizC,EAC7B6/I,EAAK/jK,EAAKyyI,EAAG5nK,EAAIi7C,EAAK2sH,EAAGxhK,EAAIizC,IAIlB,IAAP4O,GAAmB,IAAPixI,GAAYD,GAAShxI,EAAIixI,KAKzChxI,EAAK0/G,EAAGxhK,EAAIuzC,EAAGvzC,EACfgiD,EAAKzO,EAAG35C,EAAI4nK,EAAG5nK,EACfs5C,EAAKsuH,EAAG5nK,EAAI25C,EAAGvzC,EAAIuzC,EAAG35C,EAAI4nK,EAAGxhK,EAG7B0hD,EAAKI,EAAK1R,EAAGx2C,EAAIooD,EAAK5R,EAAGpwC,EAAIkzC,EAC7ByO,EAAKG,EAAKid,EAAGnlE,EAAIooD,EAAK+c,EAAG/+D,EAAIkzC,EAKlB,IAAPwO,GAAmB,IAAPC,GAAYkxI,GAASnxI,EAAIC,IAM3B,IADdoxI,EAAQhkK,EAAKizB,EAAKF,EAAKjN,KAgBvB,OAXA30C,EAASrE,KAAK4B,IAAIs1L,EAAQ,GAWnB,CAAEn5L,GANTikF,EAAMhpC,EAAK3B,EAAK8O,EAAK/O,GACX,GAAK4qC,EAAM39E,GAAU6yL,GAASl1G,EAAM39E,GAAU6yL,EAKzC/yL,GAHf69E,EAAM/7B,EAAK7O,EAAKlkB,EAAKmkB,GACX,GAAK2qC,EAAM39E,GAAU6yL,GAASl1G,EAAM39E,GAAU6yL,ICxD3C6D,GAMf,SAA0B/wL,EAAMgoJ,EAAYxuI,GAC1C,IAAIjhB,EAAKyH,EAAKjM,EACVi2B,EAAKhqB,EAAK7F,EAEV8tJ,EAAgB,GAEhBC,EAAO1nH,OAAOsyF,kBACdq1B,EAAO3nH,OAAOsyF,kBAClBk1B,EAAWl/H,SAAQ,SAASqhB,GAC1B+9G,EAAOlyJ,KAAKE,IAAIgyJ,EAAM/9G,EAAMp2C,GAC5Bo0J,EAAOnyJ,KAAKE,IAAIiyJ,EAAMh+G,EAAMhwC,MAM9B,IAHA,IAAIlG,EAAOsE,EAAKyH,EAAK+jB,MAAQ,EAAImkI,EAC7BjuI,EAAM+P,EAAKhqB,EAAKgkB,OAAS,EAAImkI,EAExB12J,EAAI,EAAGA,EAAIu2J,EAAWl0J,OAAQrC,IAAK,CAC1C,IAAI84C,EAAKy9G,EAAWv2J,GAChBynE,EAAK8uF,EAAWv2J,EAAIu2J,EAAWl0J,OAAS,EAAIrC,EAAI,EAAI,GACpDq7C,EAAYi7G,GACd/nJ,EACAwZ,EACA,CAAEzlB,EAAGE,EAAOs2C,EAAGx2C,EAAGoG,EAAG8f,EAAMswB,EAAGpwC,GAC9B,CAAEpG,EAAGE,EAAOilE,EAAGnlE,EAAGoG,EAAG8f,EAAMi/C,EAAG/+D,IAE5B2yC,GACFm7G,EAAcnvJ,KAAKg0C,GAIvB,IAAKm7G,EAAcn0J,OAEjB,OADA+gF,QAAQv9E,IAAI,4CAA6C0I,GAClDA,EAGLioJ,EAAcn0J,OAAS,GAEzBm0J,EAAc/uJ,MAAK,SAAS3F,EAAG2lB,GAC7B,IAAIkvI,EAAM70J,EAAEQ,EAAIylB,EAAMzlB,EAClBs0J,EAAM90J,EAAE4G,EAAIqf,EAAMrf,EAClBmuJ,EAAQtyJ,KAAKC,KAAKmyJ,EAAMA,EAAMC,EAAMA,GAEpCE,EAAMrvI,EAAEnlB,EAAIylB,EAAMzlB,EAClBy0J,EAAMtvI,EAAE/e,EAAIqf,EAAMrf,EAClBsuJ,EAAQzyJ,KAAKC,KAAKsyJ,EAAMA,EAAMC,EAAMA,GAExC,OAAOF,EAAQG,GAAS,EAAIH,IAAUG,EAAQ,EAAI,KAGtD,OAAOR,EAAc,IC3DvB,IA+BexwD,GA/BO,SAACz3F,EAAMwZ,GAC3B,IAUIihB,EAAIC,EAVJ3mC,EAAIiM,EAAKjM,EACToG,EAAI6F,EAAK7F,EAITusB,EAAKlN,EAAMzlB,EAAIA,EACf4yB,EAAKnN,EAAMrf,EAAIA,EACf6oB,EAAIhjB,EAAK+jB,MAAQ,EACjBlO,EAAI7V,EAAKgkB,OAAS,EAmBtB,OAhBIhuB,KAAK4B,IAAI+uB,GAAM3D,EAAIhtB,KAAK4B,IAAI8uB,GAAM7Q,GAEhC8Q,EAAK,IACP9Q,GAAKA,GAEP4kB,EAAY,IAAP9T,EAAW,EAAK9Q,EAAI6Q,EAAMC,EAC/B+T,EAAK7kB,IAGD6Q,EAAK,IACP1D,GAAKA,GAEPyX,EAAKzX,EACL0X,EAAY,IAAPhU,EAAW,EAAK1D,EAAI2D,EAAMD,GAG1B,CAAE3yB,EAAGA,EAAI0mC,EAAItgC,EAAGA,EAAIugC,IClBd,IACb16B,K,QAAAA,EACA6pC,UACAkjJ,WACAp8J,WACA7W,SC+cImrL,GAAW,SAAC9lM,EAAQa,EAAMysF,GAC9B,IAAM4iG,EAAWlwL,EACdxC,OAAO,KACPL,KAAK,QAAS,gBACdA,KAAK,KAAM0D,EAAKyc,IAEfsH,EAAQ,GACRC,EAAS,GAED,OAARyoE,IACF1oE,EAAQ,GACRC,EAAS,IAGX,IAAM0qK,EAAQW,EACXhzL,OAAO,QACPyF,MAAM,SAAU,SAChBA,MAAM,OAAQ,SACdxF,KAAK,KAAO,EAAIynB,EAAS,GACzBznB,KAAK,KAAO,EAAI0nB,EAAU,GAC1B1nB,KAAK,QAASynB,GACdznB,KAAK,SAAU0nB,GACf1nB,KAAK,QAAS,aASjB,OAPAqnM,GAAiB3jM,EAAM0uL,GACvB1uL,EAAKgkB,OAAShkB,EAAKgkB,OAAShkB,EAAK8hC,QAAU,EAC3C9hC,EAAK+jB,MAAQ/jB,EAAK+jB,MAAQ/jB,EAAK8hC,QAAU,EACzC9hC,EAAK8sC,UAAY,SAAStzB,GACxB,OAAOszB,GAAUhzB,KAAK9Z,EAAMwZ,IAGvB61K,GAgCH3B,GAAS,CACb+R,SAthBe,SAACtgM,EAAQa,GAAS,MACNsjM,GAAYnkM,EAAQa,OAAMyhB,GAAW,GAAxD4tK,EADyB,EACzBA,SAAUF,EADe,EACfA,KAIZ37L,EAFI27L,EAAKprK,MAAQ/jB,EAAK8hC,SAClBqtJ,EAAKnrK,OAAShkB,EAAK8hC,SAEvBmI,EAAS,CACb,CAAEl2C,EAAGP,EAAI,EAAG2G,EAAG,GACf,CAAEpG,EAAGP,EAAG2G,GAAI3G,EAAI,GAChB,CAAEO,EAAGP,EAAI,EAAG2G,GAAI3G,GAChB,CAAEO,EAAG,EAAGoG,GAAI3G,EAAI,IAGlB09L,EAAO/mC,KAAK,0BAEZ,IAAM+6C,EAAexF,GAAmBrQ,EAAU77L,EAAGA,EAAGy2C,GAOxD,OANA05J,GAAiB3jM,EAAMklM,GACvBllM,EAAK8sC,UAAY,SAAStzB,GAExB,OADA03K,EAAOrwF,KAAK,oBACL/zD,GAAUnc,QAAQ3wB,EAAMiqC,EAAQzwB,IAGlC61K,GAigBPv1K,KAlSW,SAAC3a,EAAQa,GAAS,MACWsjM,GAAYnkM,EAAQa,EAAM,QAAUA,EAAKm8L,SAAS,GAAlF9M,EADqB,EACrBA,SAAUF,EADW,EACXA,KAAMuU,EADK,EACLA,YAExBxS,EAAOhoH,MAAM,aAAclpE,EAAKm8L,SAEhC,IAAMriL,EAAOu1K,EAAS1yL,OAAO,OAAQ,gBAiBrC,OAfAmd,EACGxd,KAAK,QAAS,yBACdA,KAAK,KAAM0D,EAAKqgE,IAChB/jE,KAAK,KAAM0D,EAAKsgE,IAChBhkE,KAAK,KAAM6yL,EAAKprK,MAAQ,EAAI2/K,GAC5BpnM,KAAK,KAAM6yL,EAAKnrK,OAAS,EAAI0/K,GAC7BpnM,KAAK,QAAS6yL,EAAKprK,MAAQ/jB,EAAK8hC,SAChCxlC,KAAK,SAAU6yL,EAAKnrK,OAAShkB,EAAK8hC,SAErC6hK,GAAiB3jM,EAAM8Z,GAEvB9Z,EAAK8sC,UAAY,SAAStzB,GACxB,OAAOszB,GAAUhzB,KAAK9Z,EAAMwZ,IAGvB61K,GA6QP8V,cA3QoB,SAAChmM,EAAQa,GAG7B,IAAIm8L,EAIFA,EAHGn8L,EAAKm8L,QAGE,QAAUn8L,EAAKm8L,QAFf,eAKZ,IAAM9M,EAAWlwL,EACdxC,OAAO,KACPL,KAAK,QAAS6/L,GACd7/L,KAAK,KAAM0D,EAAKyc,IAGb3C,EAAOu1K,EAAS1yL,OAAO,OAAQ,gBAE/ByoM,EAAY/V,EAAS1yL,OAAO,QAE5Bk6F,EAAQw4F,EAAS1yL,OAAO,KAAKL,KAAK,QAAS,SAE3C+oM,EAAQrlM,EAAKwjM,UAAU8B,OAC7BpU,EAAO/mC,KAAK,aAAck7C,EAAM,IAEhC,IACIlW,EADE1yL,EAAOo6F,EAAM72F,OAAON,YAAYujM,GAAYoC,EAAM,GAAIrlM,EAAK0nH,YAAY,GAAM,IAEnF,GAAIs0E,IAAYnK,UAAUD,WAAY,CACpC,IAAMrsG,EAAM9oF,EAAK0kB,SAAS,GACpBsiL,EAAKjnM,iBAAOC,GAClB0yL,EAAO5pG,EAAIxrE,wBACX0pL,EAAGnnM,KAAK,QAAS6yL,EAAKprK,OACtB0/K,EAAGnnM,KAAK,SAAU6yL,EAAKnrK,QAEzBktK,EAAO/mC,KAAK,SAAUk7C,GACtB,IAAME,EAAWF,EAAMjvM,MAAM,EAAGivM,EAAMvxM,QAClC0xM,EAAW/oM,EAAKktI,UACd87D,EAAQ5uG,EACX72F,OACAN,YAAYujM,GAAYsC,EAAS/hM,KAAK,SAAUxD,EAAK0nH,YAAY,GAAM,IAE1E,GAAIs0E,IAAYnK,UAAUD,WAAY,CACpC,IAAMrsG,EAAMkgH,EAAMtkL,SAAS,GACrBsiL,EAAKjnM,iBAAOipM,GAClBtW,EAAO5pG,EAAIxrE,wBACX0pL,EAAGnnM,KAAK,QAAS6yL,EAAKprK,OACtB0/K,EAAGnnM,KAAK,SAAU6yL,EAAKnrK,QAIzB,IAAM0/K,EAAc1jM,EAAK8hC,QAAU,EAkDnC,OAjDAtlC,iBAAOipM,GAAOnpM,KACZ,YACA,eAEG6yL,EAAKprK,MAAQyhL,EAASzhL,MAAQ,GAAKyhL,EAASzhL,MAAQorK,EAAKprK,OAAS,GACnE,MACCyhL,EAASxhL,OAAS0/K,EAAc,GACjC,KAEJlnM,iBAAOC,GAAMH,KACX,YACA,eAEG6yL,EAAKprK,MAAQyhL,EAASzhL,MAAQ,IAAMyhL,EAASzhL,MAAQorK,EAAKprK,OAAS,GACpE,QAOJorK,EAAOt4F,EAAM72F,OAAO2pI,UAGpB9yC,EAAMv6F,KACJ,YACA,cAAgB6yL,EAAKprK,MAAQ,EAAI,OAASorK,EAAKnrK,OAAS,EAAI0/K,EAAc,GAAK,KAGjF5pL,EACGxd,KAAK,QAAS,qBACdA,KAAK,KAAM6yL,EAAKprK,MAAQ,EAAI2/K,GAC5BpnM,KAAK,KAAM6yL,EAAKnrK,OAAS,EAAI0/K,GAC7BpnM,KAAK,QAAS6yL,EAAKprK,MAAQ/jB,EAAK8hC,SAChCxlC,KAAK,SAAU6yL,EAAKnrK,OAAShkB,EAAK8hC,SAErCsjK,EACG9oM,KAAK,QAAS,WACdA,KAAK,MAAO6yL,EAAKprK,MAAQ,EAAI2/K,GAC7BpnM,KAAK,KAAM6yL,EAAKprK,MAAQ,EAAI2/K,GAC5BpnM,KAAK,MAAO6yL,EAAKnrK,OAAS,EAAI0/K,EAAc8B,EAASxhL,OAAS0/K,GAC9DpnM,KAAK,MAAO6yL,EAAKnrK,OAAS,EAAI0/K,EAAc8B,EAASxhL,OAAS0/K,GAEjEC,GAAiB3jM,EAAM8Z,GAEvB9Z,EAAK8sC,UAAY,SAAStzB,GACxB,OAAOszB,GAAUhzB,KAAK9Z,EAAMwZ,IAGvB61K,GAwKPxlJ,OA7Ia,SAAC1qC,EAAQa,GAAS,MACSsjM,GAAYnkM,EAAQa,OAAMyhB,GAAW,GAArE4tK,EADuB,EACvBA,SAAUF,EADa,EACbA,KAAMuU,EADO,EACPA,YAClB75J,EAASwlJ,EAAS1yL,OAAO,SAAU,gBAmBzC,OAhBAktC,EACGvtC,KAAK,KAAM0D,EAAKqgE,IAChB/jE,KAAK,KAAM0D,EAAKsgE,IAChBhkE,KAAK,IAAK6yL,EAAKprK,MAAQ,EAAI2/K,GAC3BpnM,KAAK,QAAS6yL,EAAKprK,MAAQ/jB,EAAK8hC,SAChCxlC,KAAK,SAAU6yL,EAAKnrK,OAAShkB,EAAK8hC,SAErCovJ,EAAO/mC,KAAK,eAEZw5C,GAAiB3jM,EAAM6pC,GAEvB7pC,EAAK8sC,UAAY,SAAStzB,GAExB,OADA03K,EAAO/mC,KAAK,mBAAoBnqJ,EAAMmvL,EAAKprK,MAAQ,EAAI2/K,EAAalqL,GAC7DszB,GAAUjD,OAAO7pC,EAAMmvL,EAAKprK,MAAQ,EAAI2/K,EAAalqL,IAGvD61K,GAyHP8Q,QAtKc,SAAChhM,EAAQa,GAAS,MACLsjM,GAAYnkM,EAAQa,OAAMyhB,GAAW,GAAxD4tK,EADwB,EACxBA,SAAUF,EADc,EACdA,KAEZt5K,EAAIs5K,EAAKnrK,OAAShkB,EAAK8hC,QACvB9e,EAAImsK,EAAKprK,MAAQlO,EAAI,EAAI7V,EAAK8hC,QAG9BhoB,EAAOu1K,EACV1yL,OAAO,OAAQ,gBACfL,KAAK,KAAMuZ,EAAI,GACfvZ,KAAK,KAAMuZ,EAAI,GACfvZ,KAAK,KAAM0mB,EAAI,GACf1mB,KAAK,KAAMuZ,EAAI,GACfvZ,KAAK,QAAS0mB,GACd1mB,KAAK,SAAUuZ,GAQlB,OANA8tL,GAAiB3jM,EAAM8Z,GAEvB9Z,EAAK8sC,UAAY,SAAStzB,GACxB,OAAOszB,GAAUhzB,KAAK9Z,EAAMwZ,IAGvB61K,GAiJPuQ,QAlgBc,SAACzgM,EAAQa,GAAS,MACLsjM,GAAYnkM,EAAQa,OAAMyhB,GAAW,GAAxD4tK,EADwB,EACxBA,SAAUF,EADc,EACdA,KAGZt5K,EAAIs5K,EAAKnrK,OAAShkB,EAAK8hC,QACvBjwC,EAAIgkB,EAFA,EAGJmN,EAAImsK,EAAKprK,MAAQ,EAAIlyB,EAAImO,EAAK8hC,QAS9BpsB,EAAMgqL,GAAmBrQ,EAAUrsK,EAAGnN,EAR7B,CACb,CAAE9hB,EAAGlC,EAAGsI,EAAG,GACX,CAAEpG,EAAGivB,EAAInxB,EAAGsI,EAAG,GACf,CAAEpG,EAAGivB,EAAG7oB,GAAI0b,EAAI,GAChB,CAAE9hB,EAAGivB,EAAInxB,EAAGsI,GAAI0b,GAChB,CAAE9hB,EAAGlC,EAAGsI,GAAI0b,GACZ,CAAE9hB,EAAG,EAAGoG,GAAI0b,EAAI,KASlB,OANA8tL,GAAiB3jM,EAAM0V,GAEvB1V,EAAK8sC,UAAY,SAAStzB,GACxB,OAAOszB,GAAUnc,QAAQ3wB,EAAMwZ,IAG1B61K,GA6ePwQ,oBA1e0B,SAAC1gM,EAAQa,GAAS,MACjBsjM,GAAYnkM,EAAQa,OAAMyhB,GAAW,GAAxD4tK,EADoC,EACpCA,SAAUF,EAD0B,EAC1BA,KAEZnsK,EAAImsK,EAAKprK,MAAQ/jB,EAAK8hC,QACtBjsB,EAAIs5K,EAAKnrK,OAAShkB,EAAK8hC,QASvBs6D,EAAKsjG,GAAmBrQ,EAAUrsK,EAAGnN,EAR5B,CACb,CAAE9hB,GAAI8hB,EAAI,EAAG1b,EAAG,GAChB,CAAEpG,EAAGivB,EAAG7oB,EAAG,GACX,CAAEpG,EAAGivB,EAAG7oB,GAAI0b,GACZ,CAAE9hB,GAAI8hB,EAAI,EAAG1b,GAAI0b,GACjB,CAAE9hB,EAAG,EAAGoG,GAAI0b,EAAI,KAUlB,OANA8tL,GAAiB3jM,EAAMo8F,GAEvBp8F,EAAK8sC,UAAY,SAAStzB,GACxB,OAAOszB,GAAUnc,QAAQ3wB,EAAMwZ,IAG1B61K,GAudPyQ,WArdiB,SAAC3gM,EAAQa,GAAS,MACRsjM,GAAYnkM,EAAQa,OAAMyhB,GAAW,GAAxD4tK,EAD2B,EAC3BA,SAAUF,EADiB,EACjBA,KAEZnsK,EAAImsK,EAAKprK,MAAQ/jB,EAAK8hC,QACtBjsB,EAAIs5K,EAAKnrK,OAAShkB,EAAK8hC,QAQvBs6D,EAAKsjG,GAAmBrQ,EAAUrsK,EAAGnN,EAP5B,CACb,CAAE9hB,GAAK,EAAI8hB,EAAK,EAAG1b,EAAG,GACtB,CAAEpG,EAAGivB,EAAInN,EAAI,EAAG1b,EAAG,GACnB,CAAEpG,EAAGivB,EAAK,EAAInN,EAAK,EAAG1b,GAAI0b,GAC1B,CAAE9hB,EAAG8hB,EAAI,EAAG1b,GAAI0b,KAUlB,OANA8tL,GAAiB3jM,EAAMo8F,GAEvBp8F,EAAK8sC,UAAY,SAAStzB,GACxB,OAAOszB,GAAUnc,QAAQ3wB,EAAMwZ,IAG1B61K,GAmcP0Q,UAhcgB,SAAC5gM,EAAQa,GAAS,MACPsjM,GAAYnkM,EAAQa,OAAMyhB,GAAW,GAAxD4tK,EAD0B,EAC1BA,SAAUF,EADgB,EAChBA,KAEZnsK,EAAImsK,EAAKprK,MAAQ/jB,EAAK8hC,QACtBjsB,EAAIs5K,EAAKnrK,OAAShkB,EAAK8hC,QAQvBs6D,EAAKsjG,GAAmBrQ,EAAUrsK,EAAGnN,EAP5B,CACb,CAAE9hB,EAAI,EAAI8hB,EAAK,EAAG1b,EAAG,GACrB,CAAEpG,EAAGivB,EAAInN,EAAI,EAAG1b,EAAG,GACnB,CAAEpG,EAAGivB,EAAK,EAAInN,EAAK,EAAG1b,GAAI0b,GAC1B,CAAE9hB,GAAI8hB,EAAI,EAAG1b,GAAI0b,KAUnB,OANA8tL,GAAiB3jM,EAAMo8F,GAEvBp8F,EAAK8sC,UAAY,SAAStzB,GACxB,OAAOszB,GAAUnc,QAAQ3wB,EAAMwZ,IAG1B61K,GA8aP2Q,UA3agB,SAAC7gM,EAAQa,GAAS,MACPsjM,GAAYnkM,EAAQa,OAAMyhB,GAAW,GAAxD4tK,EAD0B,EAC1BA,SAAUF,EADgB,EAChBA,KAEZnsK,EAAImsK,EAAKprK,MAAQ/jB,EAAK8hC,QACtBjsB,EAAIs5K,EAAKnrK,OAAShkB,EAAK8hC,QAOvBs6D,EAAKsjG,GAAmBrQ,EAAUrsK,EAAGnN,EAN5B,CACb,CAAE9hB,GAAK,EAAI8hB,EAAK,EAAG1b,EAAG,GACtB,CAAEpG,EAAGivB,EAAK,EAAInN,EAAK,EAAG1b,EAAG,GACzB,CAAEpG,EAAGivB,EAAInN,EAAI,EAAG1b,GAAI0b,GACpB,CAAE9hB,EAAG8hB,EAAI,EAAG1b,GAAI0b,KASlB,OANA8tL,GAAiB3jM,EAAMo8F,GAEvBp8F,EAAK8sC,UAAY,SAAStzB,GACxB,OAAOszB,GAAUnc,QAAQ3wB,EAAMwZ,IAG1B61K,GA0ZP4Q,cAvZoB,SAAC9gM,EAAQa,GAAS,MACXsjM,GAAYnkM,EAAQa,OAAMyhB,GAAW,GAAxD4tK,EAD8B,EAC9BA,SAAUF,EADoB,EACpBA,KAEZnsK,EAAImsK,EAAKprK,MAAQ/jB,EAAK8hC,QACtBjsB,EAAIs5K,EAAKnrK,OAAShkB,EAAK8hC,QAOvBs6D,EAAKsjG,GAAmBrQ,EAAUrsK,EAAGnN,EAN5B,CACb,CAAE9hB,EAAG8hB,EAAI,EAAG1b,EAAG,GACf,CAAEpG,EAAGivB,EAAInN,EAAI,EAAG1b,EAAG,GACnB,CAAEpG,EAAGivB,EAAK,EAAInN,EAAK,EAAG1b,GAAI0b,GAC1B,CAAE9hB,GAAK,EAAI8hB,EAAK,EAAG1b,GAAI0b,KASzB,OANA8tL,GAAiB3jM,EAAMo8F,GAEvBp8F,EAAK8sC,UAAY,SAAStzB,GACxB,OAAOszB,GAAUnc,QAAQ3wB,EAAMwZ,IAG1B61K,GAsYP6Q,qBApY2B,SAAC/gM,EAAQa,GAAS,MAClBsjM,GAAYnkM,EAAQa,OAAMyhB,GAAW,GAAxD4tK,EADqC,EACrCA,SAAUF,EAD2B,EAC3BA,KAEZnsK,EAAImsK,EAAKprK,MAAQ/jB,EAAK8hC,QACtBjsB,EAAIs5K,EAAKnrK,OAAShkB,EAAK8hC,QAQvBs6D,EAAKsjG,GAAmBrQ,EAAUrsK,EAAGnN,EAP5B,CACb,CAAE9hB,EAAG,EAAGoG,EAAG,GACX,CAAEpG,EAAGivB,EAAInN,EAAI,EAAG1b,EAAG,GACnB,CAAEpG,EAAGivB,EAAG7oB,GAAI0b,EAAI,GAChB,CAAE9hB,EAAGivB,EAAInN,EAAI,EAAG1b,GAAI0b,GACpB,CAAE9hB,EAAG,EAAGoG,GAAI0b,KASd,OANA8tL,GAAiB3jM,EAAMo8F,GAEvBp8F,EAAK8sC,UAAY,SAAStzB,GACxB,OAAOszB,GAAUnc,QAAQ3wB,EAAMwZ,IAG1B61K,GAkXPgR,SAhXe,SAAClhM,EAAQa,GAAS,MACNsjM,GAAYnkM,EAAQa,OAAMyhB,GAAW,GAAxD4tK,EADyB,EACzBA,SAAUF,EADe,EACfA,KAEZnsK,EAAImsK,EAAKprK,MAAQ/jB,EAAK8hC,QACtBu+B,EAAKr9C,EAAI,EACTs9C,EAAKD,GAAM,IAAMr9C,EAAI,IACrBnN,EAAIs5K,EAAKnrK,OAASs8C,EAAKtgE,EAAK8hC,QAE5B4sJ,EACJ,OACApuH,EACA,MACAD,EACA,IACAC,EACA,UACAt9C,EACA,QACAq9C,EACA,IACAC,EACA,WACCt9C,EACD,UACAnN,EACA,MACAwqD,EACA,IACAC,EACA,UACAt9C,EACA,WACCnN,EAEGumF,EAAKizF,EACR/yL,KAAK,iBAAkBgkE,GACvB3jE,OAAO,OAAQ,gBACfL,KAAK,IAAKoyL,GACVpyL,KAAK,YAAa,cAAgB0mB,EAAI,EAAI,MAAQnN,EAAI,EAAIyqD,GAAM,KA0BnE,OAxBAqjI,GAAiB3jM,EAAMo8F,GAEvBp8F,EAAK8sC,UAAY,SAAStzB,GACxB,IAAM+3E,EAAMzkD,GAAUhzB,KAAK9Z,EAAMwZ,GAC3BzlB,EAAIw9F,EAAIx9F,EAAIiM,EAAKjM,EAEvB,GACQ,GAANssE,IACCrqE,KAAK4B,IAAI7D,GAAKiM,EAAK+jB,MAAQ,GACzB/tB,KAAK4B,IAAI7D,IAAMiM,EAAK+jB,MAAQ,GAAK/tB,KAAK4B,IAAI25F,EAAIp3F,EAAI6F,EAAK7F,GAAK6F,EAAKgkB,OAAS,EAAIs8C,GACjF,CAGA,IAAInmE,EAAImmE,EAAKA,GAAM,EAAKvsE,EAAIA,GAAMssE,EAAKA,IAC9B,GAALlmE,IAAQA,EAAInE,KAAKC,KAAKkE,IAC1BA,EAAImmE,EAAKnmE,EACLqf,EAAMrf,EAAI6F,EAAK7F,EAAI,IAAGA,GAAKA,GAE/Bo3F,EAAIp3F,GAAKA,EAGX,OAAOo3F,GAGF89F,GAiTP/4L,MApGY,SAAC6I,EAAQa,GACrB,IAAMqvL,EAAWlwL,EACdxC,OAAO,KACPL,KAAK,QAAS,gBACdA,KAAK,KAAM0D,EAAKyc,IACbotB,EAASwlJ,EAAS1yL,OAAO,SAAU,gBAezC,OAZAktC,EACGvtC,KAAK,QAAS,eACdA,KAAK,IAAK,GACVA,KAAK,QAAS,IACdA,KAAK,SAAU,IAElBqnM,GAAiB3jM,EAAM6pC,GAEvB7pC,EAAK8sC,UAAY,SAAStzB,GACxB,OAAOszB,GAAUjD,OAAO7pC,EAAM,EAAGwZ,IAG5B61K,GAiFP/3K,IA5CU,SAACnY,EAAQa,GACnB,IAAMqvL,EAAWlwL,EACdxC,OAAO,KACPL,KAAK,QAAS,gBACdA,KAAK,KAAM0D,EAAKyc,IACbipL,EAAcrW,EAAS1yL,OAAO,SAAU,gBACxCktC,EAASwlJ,EAAS1yL,OAAO,SAAU,gBAoBzC,OAlBAktC,EACGvtC,KAAK,QAAS,eACdA,KAAK,IAAK,GACVA,KAAK,QAAS,IACdA,KAAK,SAAU,IAElBopM,EACGppM,KAAK,QAAS,aACdA,KAAK,IAAK,GACVA,KAAK,QAAS,IACdA,KAAK,SAAU,IAElBqnM,GAAiB3jM,EAAM6pC,GAEvB7pC,EAAK8sC,UAAY,SAAStzB,GACxB,OAAOszB,GAAUjD,OAAO7pC,EAAM,EAAGwZ,IAG5B61K,GAmBP7wF,KCziBW,SAACr/F,EAAQa,GAAS,MACWsjM,GAAYnkM,EAAQa,EAAM,QAAUA,EAAKm8L,SAAS,GAAlF9M,EADqB,EACrBA,SAAUF,EADW,EACXA,KAAMuU,EADK,EACLA,YAExBxS,EAAO/mC,KAAK,aAAcnqJ,EAAKm8L,SAE/B,IAAMriL,EAAOu1K,EAAS1yL,OAAO,OAAQ,gBAgBrC,OAdAmd,EACGxd,KAAK,KAAM0D,EAAKqgE,IAChB/jE,KAAK,KAAM0D,EAAKsgE,IAChBhkE,KAAK,KAAM6yL,EAAKprK,MAAQ,EAAI2/K,GAC5BpnM,KAAK,KAAM6yL,EAAKnrK,OAAS,EAAI0/K,GAC7BpnM,KAAK,QAAS6yL,EAAKprK,MAAQ/jB,EAAK8hC,SAChCxlC,KAAK,SAAU6yL,EAAKnrK,OAAShkB,EAAK8hC,SAErC6hK,GAAiB3jM,EAAM8Z,GAEvB9Z,EAAK8sC,UAAY,SAAStzB,GACxB,OAAOszB,GAAUhzB,KAAK9Z,EAAMwZ,IAGvB61K,GDqhBP+Q,WAlIiB,SAACjhM,EAAQa,GAAS,MACRsjM,GAAYnkM,EAAQa,OAAMyhB,GAAW,GAAxD4tK,EAD2B,EAC3BA,SAAUF,EADiB,EACjBA,KAEZnsK,EAAImsK,EAAKprK,MAAQ/jB,EAAK8hC,QACtBjsB,EAAIs5K,EAAKnrK,OAAShkB,EAAK8hC,QAavBs6D,EAAKsjG,GAAmBrQ,EAAUrsK,EAAGnN,EAZ5B,CACb,CAAE9hB,EAAG,EAAGoG,EAAG,GACX,CAAEpG,EAAGivB,EAAG7oB,EAAG,GACX,CAAEpG,EAAGivB,EAAG7oB,GAAI0b,GACZ,CAAE9hB,EAAG,EAAGoG,GAAI0b,GACZ,CAAE9hB,EAAG,EAAGoG,EAAG,GACX,CAAEpG,GAAI,EAAGoG,EAAG,GACZ,CAAEpG,EAAGivB,EAAI,EAAG7oB,EAAG,GACf,CAAEpG,EAAGivB,EAAI,EAAG7oB,GAAI0b,GAChB,CAAE9hB,GAAI,EAAGoG,GAAI0b,GACb,CAAE9hB,GAAI,EAAGoG,EAAG,KASd,OANAwpM,GAAiB3jM,EAAMo8F,GAEvBp8F,EAAK8sC,UAAY,SAAStzB,GACxB,OAAOszB,GAAUnc,QAAQ3wB,EAAMwZ,IAG1B61K,GA2GPsW,KAAMV,GACNzhM,KAAMyhM,IAGJW,GAAY,GAYHpoJ,GAAe,SAAAx9C,GAC1B,IAAMo8F,EAAKwpG,GAAU5lM,EAAKyc,IAC1By0K,EAAOhoH,MACL,oBACAlpE,EACA,cAAgBA,EAAKjM,EAAIiM,EAAK+jB,MAAQ,EAAI,GAAK,MAAQ/jB,EAAK7F,EAAI6F,EAAKgkB,OAAS,EAAI,GAAK,KAGrFhkB,EAAKglM,YACP5oG,EAAG9/F,KACD,YACA,cACG0D,EAAKjM,EAAIiM,EAAK+jB,MAAQ,EALb,GAMV,MACC/jB,EAAK7F,EAAI6F,EAAKgkB,OAAS,EAPd,GAQV,KAGJo4E,EAAG9/F,KAAK,YAAa,aAAe0D,EAAKjM,EAAI,KAAOiM,EAAK7F,EAAI,MErY3DuzL,GAAS,CAAE5zK,KAtMJ,SAAC3a,EAAQa,GACpB1I,EAAI4xE,MAAM,8BAA+BlpE,EAAKyc,GAAIzc,GAGlD,IAAMqvL,EAAWlwL,EACdxC,OAAO,KACPL,KAAK,QAAS,WACdA,KAAK,KAAM0D,EAAKyc,IAGb3C,EAAOu1K,EAAS1yL,OAAO,OAAQ,gBAG/Bk6F,EAAQw4F,EAAS1yL,OAAO,KAAKL,KAAK,QAAS,iBAE3CG,EAAOo6F,EACV72F,OACAN,YAAYujM,GAAYjjM,EAAKwjM,UAAWxjM,EAAK0nH,gBAAYjmG,GAAW,IAGnE0tK,EAAO1yL,EAAKktI,UAEhB,GAAIqyD,IAAYnK,UAAUD,WAAY,CACpC,IAAMrsG,EAAM9oF,EAAK0kB,SAAS,GACpBsiL,EAAKjnM,iBAAOC,GAClB0yL,EAAO5pG,EAAIxrE,wBACX0pL,EAAGnnM,KAAK,QAAS6yL,EAAKprK,OACtB0/K,EAAGnnM,KAAK,SAAU6yL,EAAKnrK,QAGzB,IAAM8d,EAAU,EAAI9hC,EAAK8hC,QACnB4hK,EAAc5hK,EAAU,EAE9BxqC,EAAI4xE,MAAM,QAASlpE,EAAMyzB,KAAKC,UAAU1zB,IAExC8Z,EACGxd,KAAK,KAAM0D,EAAKqgE,IAChB/jE,KAAK,KAAM0D,EAAKsgE,IAChBhkE,KAAK,IAAK0D,EAAKjM,EAAIiM,EAAK+jB,MAAQ,EAAI2/K,GACpCpnM,KAAK,IAAK0D,EAAK7F,EAAI6F,EAAKgkB,OAAS,EAAI0/K,GACrCpnM,KAAK,QAAS0D,EAAK+jB,MAAQ+d,GAC3BxlC,KAAK,SAAU0D,EAAKgkB,OAAS8d,GAGhC+0D,EAAMv6F,KACJ,YACA,cACG0D,EAAKjM,EAAIo7L,EAAKprK,MAAQ,GACvB,MACC/jB,EAAK7F,EAAI6F,EAAKgkB,OAAS,EAAIhkB,EAAK8hC,QAAU,EAAI,GAC/C,KAGJ,IAAM+jK,EAAU/rL,EAAK9Z,OAAO2pI,UAQ5B,OAPA3pI,EAAK+jB,MAAQ8hL,EAAQ9hL,MACrB/jB,EAAKgkB,OAAS6hL,EAAQ7hL,OAEtBhkB,EAAK8sC,UAAY,SAAStzB,GACxB,OAAOi+E,GAAcz3F,EAAMwZ,IAGtB61K,GAyIcyW,iBAlGE,SAAC3mM,EAAQa,GAEhC,IAAMqvL,EAAWlwL,EACdxC,OAAO,KACPL,KAAK,QAAS0D,EAAKm8L,SACnB7/L,KAAK,KAAM0D,EAAKyc,IAGb3C,EAAOu1K,EAAS1yL,OAAO,OAAQ,gBAG/Bk6F,EAAQw4F,EAAS1yL,OAAO,KAAKL,KAAK,QAAS,iBAC3CypM,EAAY1W,EAAShzL,OAAO,QAE5BI,EAAOo6F,EACV72F,OACAN,YAAYujM,GAAYjjM,EAAKwjM,UAAWxjM,EAAK0nH,gBAAYjmG,GAAW,IAGnE0tK,EAAO1yL,EAAKktI,UAChB,GAAIqyD,IAAYnK,UAAUD,WAAY,CACpC,IAAMrsG,EAAM9oF,EAAK0kB,SAAS,GACpBsiL,EAAKjnM,iBAAOC,GAClB0yL,EAAO5pG,EAAIxrE,wBACX0pL,EAAGnnM,KAAK,QAAS6yL,EAAKprK,OACtB0/K,EAAGnnM,KAAK,SAAU6yL,EAAKnrK,QAEzBmrK,EAAO1yL,EAAKktI,UACZ,IAAM7nG,EAAU,EAAI9hC,EAAK8hC,QACnB4hK,EAAc5hK,EAAU,EAG9BhoB,EACGxd,KAAK,QAAS,SACdA,KAAK,IAAK0D,EAAKjM,EAAIiM,EAAK+jB,MAAQ,EAAI2/K,GACpCpnM,KAAK,IAAK0D,EAAK7F,EAAI6F,EAAKgkB,OAAS,EAAI0/K,GACrCpnM,KAAK,QAAS0D,EAAK+jB,MAAQ+d,GAC3BxlC,KAAK,SAAU0D,EAAKgkB,OAAS8d,GAChCikK,EACGzpM,KAAK,QAAS,SACdA,KAAK,IAAK0D,EAAKjM,EAAIiM,EAAK+jB,MAAQ,EAAI2/K,GACpCpnM,KAAK,IAAK0D,EAAK7F,EAAI6F,EAAKgkB,OAAS,EAAI0/K,EAAcvU,EAAKnrK,OAAS,GACjE1nB,KAAK,QAAS0D,EAAK+jB,MAAQ+d,GAC3BxlC,KAAK,SAAU0D,EAAKgkB,OAAS8d,EAAUqtJ,EAAKnrK,OAAS,GAGxD6yE,EAAMv6F,KACJ,YACA,cACG0D,EAAKjM,EAAIo7L,EAAKprK,MAAQ,GACvB,MACC/jB,EAAK7F,EAAI6F,EAAKgkB,OAAS,EAAIhkB,EAAK8hC,QAAU,GAAKk6J,IAAYnK,UAAUD,WAAa,EAAI,IACvF,KAGJ,IAAMiU,EAAU/rL,EAAK9Z,OAAO2pI,UAQ5B,OAPA3pI,EAAK+jB,MAAQ8hL,EAAQ9hL,MACrB/jB,EAAKgkB,OAAS6hL,EAAQ7hL,OAEtBhkB,EAAK8sC,UAAY,SAAStzB,GACxB,OAAOi+E,GAAcz3F,EAAMwZ,IAGtB61K,GAmCgC2W,UAnIvB,SAAC7mM,EAAQa,GAEzB,IAAMqvL,EAAWlwL,EACdxC,OAAO,KACPL,KAAK,QAAS,gBACdA,KAAK,KAAM0D,EAAKyc,IAGb3C,EAAOu1K,EAAS1yL,OAAO,OAAQ,gBAE/BmlC,EAAU,EAAI9hC,EAAK8hC,QACnB4hK,EAAc5hK,EAAU,EAG9BhoB,EACGxd,KAAK,KAAM0D,EAAKqgE,IAChB/jE,KAAK,KAAM0D,EAAKsgE,IAChBhkE,KAAK,IAAK0D,EAAKjM,EAAIiM,EAAK+jB,MAAQ,EAAI2/K,GACpCpnM,KAAK,IAAK0D,EAAK7F,EAAI6F,EAAKgkB,OAAS,EAAI0/K,GACrCpnM,KAAK,QAAS0D,EAAK+jB,MAAQ+d,GAC3BxlC,KAAK,SAAU0D,EAAKgkB,OAAS8d,GAC7BxlC,KAAK,OAAQ,QAEhB,IAAMupM,EAAU/rL,EAAK9Z,OAAO2pI,UAQ5B,OAPA3pI,EAAK+jB,MAAQ8hL,EAAQ9hL,MACrB/jB,EAAKgkB,OAAS6hL,EAAQ7hL,OAEtBhkB,EAAK8sC,UAAY,SAAStzB,GACxB,OAAOi+E,GAAcz3F,EAAMwZ,IAGtB61K,GAoG2C4W,QAhCpC,SAAC9mM,EAAQa,GAEvB,IAAMqvL,EAAWlwL,EACdxC,OAAO,KACPL,KAAK,QAAS0D,EAAKm8L,SACnB7/L,KAAK,KAAM0D,EAAKyc,IAGb3C,EAAOu1K,EAAS1yL,OAAO,OAAQ,gBAE/BmlC,EAAU,EAAI9hC,EAAK8hC,QACnB4hK,EAAc5hK,EAAU,EAG9BhoB,EACGxd,KAAK,QAAS,WACdA,KAAK,IAAK0D,EAAKjM,EAAIiM,EAAK+jB,MAAQ,EAAI2/K,GACpCpnM,KAAK,IAAK0D,EAAK7F,EAAI6F,EAAKgkB,OAAS,GACjC1nB,KAAK,QAAS0D,EAAK+jB,MAAQ+d,GAC3BxlC,KAAK,SAAU0D,EAAKgkB,OAAS8d,GAEhC,IAAM+jK,EAAU/rL,EAAK9Z,OAAO2pI,UAQ5B,OAPA3pI,EAAK+jB,MAAQ8hL,EAAQ9hL,MACrB/jB,EAAKgkB,OAAS6hL,EAAQ7hL,OAEtBhkB,EAAK8sC,UAAY,SAAStzB,GACxB,OAAOi+E,GAAcz3F,EAAMwZ,IAGtB61K,IAKL6W,GAAe,GCvMf3X,GAAa,GAiEX4X,GAAc,SAACnmM,EAAMwZ,GAEzB,IAAMzlB,EAAIiM,EAAKjM,EACToG,EAAI6F,EAAK7F,EACTusB,EAAK1wB,KAAK4B,IAAI4hB,EAAMzlB,EAAIA,GACxB4yB,EAAK3wB,KAAK4B,IAAI4hB,EAAMrf,EAAIA,GACxB6oB,EAAIhjB,EAAK+jB,MAAQ,EACjBlO,EAAI7V,EAAKgkB,OAAS,EACxB,OAAI0C,GAAM1D,GAAK2D,GAAM9Q,GAMVw1B,GAAe,SAACrrC,EAAMomM,EAAcC,GAC/CnV,EAAOrwF,KAAK,uBAAwBulG,EAAc,MAAOC,EAAarmM,GACtE,IAAMjM,EAAIiM,EAAKjM,EACToG,EAAI6F,EAAK7F,EAETusB,EAAK1wB,KAAK4B,IAAI7D,EAAIsyM,EAAYtyM,GAC9BivB,EAAIhjB,EAAK+jB,MAAQ,EACnBxxB,EAAI8zM,EAAYtyM,EAAIqyM,EAAaryM,EAAIivB,EAAI0D,EAAK1D,EAAI0D,EAChD7Q,EAAI7V,EAAKgkB,OAAS,EAElBugD,EACAxwE,EAAIivB,EADJuhD,EAEAxwE,EAAIivB,EAFJuhD,EAGApqE,EAAI0b,EAHJ0uD,EAIApqE,EAAI0b,EAGV,GACEuwL,EAAaryM,IAAMwwE,GACnB6hI,EAAaryM,IAAMwwE,GACnB6hI,EAAajsM,IAAMoqE,GACnB6hI,EAAajsM,IAAMoqE,EAGnB,OAAO6hI,EAGT,IAAMt1I,EAAI96D,KAAK4B,IAAIwuM,EAAajsM,EAAIksM,EAAYlsM,GAC1C4kE,EAAI/oE,KAAK4B,IAAIwuM,EAAaryM,EAAIsyM,EAAYtyM,GAEhD,GAAIiC,KAAK4B,IAAIuC,EAAIisM,EAAajsM,GAAK6oB,EAAIhtB,KAAK4B,IAAI7D,EAAIqyM,EAAaryM,GAAK8hB,EAAG,CAGvE,IAAIqD,EAAImtL,EAAYlsM,EAAIisM,EAAajsM,EAAIisM,EAAajsM,EAAI0b,EAAI1b,EAAIA,EAAI0b,EAAIuwL,EAAajsM,EACvF5H,EAAKwsE,EAAI7lD,EAAK43C,EACd,IAAM2pB,EAAM,CACV1mF,EAAGsyM,EAAYtyM,EAAIqyM,EAAaryM,EAAIsyM,EAAYtyM,EAAIgrE,EAAIxsE,EAAI8zM,EAAYtyM,EAAIxB,EAC5E4H,EAAGisM,EAAajsM,EAAI+e,GAItB,OAFAg4K,EAAOrwF,KAAP,4BAAiC/vC,EAAjC,eAAyC53C,EAAzC,eAAiD6lD,EAAjD,eAAyDxsE,GAAKkoF,GAEvDA,EAYP,IAAIvhE,EAAKA,EAAK43C,GALZv+D,EADE8zM,EAAYtyM,EAAIqyM,EAAaryM,EAC3BqyM,EAAaryM,EAAIivB,EAAIjvB,EAGrBA,EAAIivB,EAAIojL,EAAaryM,GAEJgrE,EAMvB,OALAmyH,EAAOrwF,KAAP,wBAA6B/vC,EAA7B,eAAqC53C,EAArC,eAA6C6lD,EAA7C,eAAqDxsE,GAAK,CACxDwB,EAAGsyM,EAAYtyM,EAAIqyM,EAAaryM,EAAIsyM,EAAYtyM,EAAIgrE,EAAIxsE,EAAI8zM,EAAYtyM,EAAI2yB,EAAK1D,EACjF7oB,EAAGksM,EAAYlsM,EAAIisM,EAAajsM,EAAIksM,EAAYlsM,EAAI+e,EAAImtL,EAAYlsM,EAAI+e,IAGnE,CACLnlB,EAAGsyM,EAAYtyM,EAAIqyM,EAAaryM,EAAIsyM,EAAYtyM,EAAIgrE,EAAIxsE,EAAI8zM,EAAYtyM,EAAI2yB,EAAK1D,EACjF7oB,EAAGksM,EAAYlsM,EAAIisM,EAAajsM,EAAIksM,EAAYlsM,EAAI+e,EAAImtL,EAAYlsM,EAAI+e,ICpIxEotL,GAAkB,SAAlBA,EAAmBC,EAAO7vG,EAAO8vG,EAAaC,GAClDnvM,EAAI6yJ,KAAK,6BAA8Bv0D,KAASx7D,KAAKozD,MAAMkJ,GAAQ+vG,GACnE,IAAMh6G,EAAMiK,EAAMA,QAAQ2iF,QAC1B/hL,EAAIupG,KAAK,iCAAkCpU,GAE3C,IAAMw8E,EAAOs9B,EAAM5pM,OAAO,KAAKL,KAAK,QAAS,QACxCo6F,EAAMrtF,QAGT/R,EAAI4xE,MAAM,mBAAoBwtB,EAAMrtF,SAFpC/R,EAAI4xE,MAAM,qBAAsBwtB,GAI9BA,EAAMnyB,QAAQzwE,OAAS,GACzBwD,EAAI4xE,MAAM,kBAAmBwtB,EAAMj3B,KAAKi3B,EAAMnyB,QAAQ,KAExD,IAAMiqH,EAAWvlB,EAAKtsK,OAAO,KAAKL,KAAK,QAAS,YAC1CoqM,EAAYz9B,EAAKtsK,OAAO,KAAKL,KAAK,QAAS,aAC3CiyL,EAAatlB,EAAKtsK,OAAO,KAAKL,KAAK,QAAS,cAC5C+M,EAAQ4/J,EAAKtsK,OAAO,KAAKL,KAAK,QAAS,SAkG7C,OA9FAo6F,EAAMrtF,QAAQyf,SAAQ,SAAShzB,GAC7B,IAAMkK,EAAO02F,EAAM12F,KAAKlK,GACxB,QAA6B,IAAlB2wM,EAA+B,CACxC,IAAMruM,EAAOq7B,KAAK3V,MAAM2V,KAAKC,UAAU+yK,EAAchC,cAErDntM,EAAI4xE,MAAM,2BAA4B9wE,GACtCs+F,EAAMN,QAAQqwG,EAAchqL,GAAIrkB,GAChCs+F,EAAM0vC,UAAUtwI,EAAG2wM,EAAchqL,GAAIrkB,GAGvC,GADAd,EAAI4xE,MAAM,iBAAmBpzE,EAAI,KAAO29B,KAAKC,UAAUgjE,EAAM12F,KAAKlK,KAC9DkK,GAAQA,EAAKglM,YAAa,CAE5B1tM,EAAI4xE,MAAM,qBAAsBpzE,EAAGkK,EAAM02F,EAAM12F,KAAKlK,IACpD,IAAM6wM,EAAQL,EAAgBj9L,EAAOrJ,EAAK02F,MAAO8vG,EAAa9vG,EAAM12F,KAAKlK,IACzE6tM,GAAiB3jM,EAAM2mM,GJsgBF,SAAC19B,EAAMjpK,GAChC4lM,GAAU5lM,EAAKyc,IAAMwsJ,EItgBjB29B,CAAYD,EAAO3mM,GAEnB1I,EAAIupG,KAAK,4BAA6B8lG,EAAO3mM,QAEzC02F,EAAMv1E,SAASrrB,GAAGhC,OAAS,GAG7BwD,EAAI4xE,MAAM,mCAAoCpzE,EAAGkK,EAAKyc,GAAIzc,EAAM02F,GAChEp/F,EAAI4xE,MAAMk7H,GAAoBpkM,EAAKyc,GAAIi6E,IACvCktG,GAAU5jM,EAAKyc,IAAM,CAAEA,GAAI2nL,GAAoBpkM,EAAKyc,GAAIi6E,GAAQ12F,UAGhE1I,EAAI4xE,MAAM,gCAAiCpzE,EAAGkK,EAAKyc,GAAIzc,GJsfrC,SAACipK,EAAMjpK,EAAMysF,GACrCm5G,GAAU5lM,EAAKyc,IAAMixK,GAAO1tL,EAAK0uL,OAAOzlB,EAAMjpK,EAAMysF,GItf9Co6G,CAAWx9L,EAAOqtF,EAAM12F,KAAKlK,GAAI22F,OASvCiK,EAAMnyB,QAAQz7C,SAAQ,SAASrN,GAC7B,IAAMgkD,EAAOi3B,EAAMj3B,KAAKhkD,EAAE3lB,EAAG2lB,EAAEuH,EAAGvH,EAAEzpB,MACpCsF,EAAI4xE,MAAM,QAAUztD,EAAE3lB,EAAI,OAAS2lB,EAAEuH,EAAI,KAAOyQ,KAAKC,UAAUjY,IAC/DnkB,EAAI4xE,MAAM,QAAUztD,EAAE3lB,EAAI,OAAS2lB,EAAEuH,EAAI,KAAMvH,EAAG,IAAKgY,KAAKC,UAAUgjE,EAAMj3B,KAAKhkD,KAGjFnkB,EAAI4xE,MAAM,MAAO06H,GAAW,OAAQnoL,EAAE3lB,EAAG2lB,EAAEuH,EAAG,iBAAkB4gL,GAAUnoL,EAAE3lB,GAAI8tM,GAAUnoL,EAAEuH,IDlEjE,SAACimJ,EAAMxpG,GAEpC,IAAMqnI,EAAe7D,GAAYxjI,EAAKo3B,MAAOp3B,EAAKioD,YAG5Cu5D,EAAYhY,EAAKtsK,OAAO,KAAKL,KAAK,QAAS,aAG3Cu6F,EAAQoqF,EAAUtkL,OAAO,KAAKL,KAAK,QAAS,SAClDu6F,EAAM72F,OAAON,YAAYonM,GAGzB,IAAI3X,EAAO2X,EAAan9D,UACxB,GAAIqyD,IAAYnK,UAAUD,WAAY,CACpC,IAAMrsG,EAAMuhH,EAAa3lL,SAAS,GAC5BsiL,EAAKjnM,iBAAOsqM,GAClB3X,EAAO5pG,EAAIxrE,wBACX0pL,EAAGnnM,KAAK,QAAS6yL,EAAKprK,OACtB0/K,EAAGnnM,KAAK,SAAU6yL,EAAKnrK,QAEzB6yE,EAAMv6F,KAAK,YAAa,cAAgB6yL,EAAKprK,MAAQ,EAAI,MAAQorK,EAAKnrK,OAAS,EAAI,KAGnFuqK,GAAW9uH,EAAKhjD,IAAMwkK,EAGtBxhH,EAAK17C,MAAQorK,EAAKprK,MAClB07C,EAAKz7C,OAASmrK,EAAKnrK,OCwCjB+iL,CAAgBxY,EAAY9uH,MAG9Bi3B,EAAMnyB,QAAQz7C,SAAQ,SAASrN,GAC7BnkB,EAAI6yJ,KAAK,QAAU1uI,EAAE3lB,EAAI,OAAS2lB,EAAEuH,EAAI,KAAOyQ,KAAKC,UAAUjY,OAEhEnkB,EAAI6yJ,KAAK,iDACT7yJ,EAAI6yJ,KAAK,iDACT7yJ,EAAI6yJ,KAAK,iDACT7yJ,EAAI6yJ,KAAKzzD,GACTb,KAAMugB,OAAO1f,GACbp/F,EAAI4xE,MAAM,sBAAuB0sB,KAASx7D,KAAKozD,MAAMkJ,IAErDA,EAAMrtF,QAAQyf,SAAQ,SAAShzB,GAC7B,IAAMkK,EAAO02F,EAAM12F,KAAKlK,GACxBwB,EAAI4xE,MAAM,YAAcpzE,EAAI,KAAO29B,KAAKC,UAAUgjE,EAAM12F,KAAKlK,KAC7DwB,EAAI6yJ,KACF,YAAcr0J,EAAI,MAAQkK,EAAKjM,EAC/B,IAAMiM,EAAK7F,EACX,YACA6F,EAAK+jB,MACL,YACA/jB,EAAKgkB,QAEHhkB,GAAQA,EAAKglM,YAGfxnJ,GAAax9C,GAGT02F,EAAMv1E,SAASrrB,GAAGhC,OAAS,IFkGR,SAACm1K,EAAMjpK,GAClC1I,EAAI4xE,MAAM,qBACV,IAAMwlH,EAAQ1uL,EAAK0uL,OAAS,OAC5BwX,GAAalmM,EAAKyc,IAAMixK,GAAOgB,GAAOzlB,EAAMjpK,GElGtCgnM,CAAcxY,EAAUxuL,GACxB4jM,GAAU5jM,EAAKyc,IAAIzc,KAAOA,GAE1Bw9C,GAAax9C,MAMnB02F,EAAMnyB,QAAQz7C,SAAQ,SAASrN,GAC7B,IAAMgkD,EAAOi3B,EAAMj3B,KAAKhkD,GACxBnkB,EAAI6yJ,KAAK,QAAU1uI,EAAE3lB,EAAI,OAAS2lB,EAAEuH,EAAI,KAAOyQ,KAAKC,UAAU+rC,GAAOA,GAErE,IAAMwnI,ED2BgB,SAASh+B,EAAMxtJ,EAAGgkD,EAAMmkI,EAAWsD,EAAaxwG,GACxE,IAAIzsD,EAASw1B,EAAKx1B,OACdk9J,GAAmB,EACjB16D,EAAO/1C,EAAM12F,KAAKyb,EAAE3lB,GACtBk2I,EAAOt1C,EAAM12F,KAAKyb,EAAEuH,GAaxB,GAXIgpH,EAAKl/F,WAAa2/F,EAAK3/F,aACzB7C,EAASA,EAAO7zC,MAAM,EAAGqpE,EAAKx1B,OAAOn2C,OAAS,IACvC08B,QAAQi8G,EAAK3/F,UAAU7C,EAAO,KACrCinJ,EAAO/mC,KACL,aACAlgH,EAAOA,EAAOn2C,OAAS,GACvBk4I,EACAA,EAAKl/F,UAAU7C,EAAOA,EAAOn2C,OAAS,KAExCm2C,EAAOnxC,KAAKkzI,EAAKl/F,UAAU7C,EAAOA,EAAOn2C,OAAS,MAEhD2rE,EAAKmlI,UAAW,CAIlB,IAAIwC,EAHJlW,EAAOhoH,MAAM,OAAQzJ,GACrByxH,EAAOhoH,MAAM,aAAc06H,EAAUnkI,EAAKmlI,YAC1C36J,EAAS,GAET,IAAIo9J,GAAW,EACf5nI,EAAKx1B,OAAOnhB,SAAQ,SAAAtP,GAClB,IAAMxZ,EAAO4jM,EAAUnkI,EAAKmlI,WAAW5kM,KAEvC,GAAKmmM,GAAYnmM,EAAMwZ,IAAW6tL,EAS3BA,GAAUp9J,EAAOnxC,KAAK0gB,OATe,CAC1C03K,EAAOhoH,MAAM,SAAUzJ,EAAKmlI,UAAWprL,EAAO4tL,GAG9C,IAAME,EAAej8J,GAAarrC,EAAMonM,EAAkB5tL,GAC1D03K,EAAOhoH,MAAM,YAAao+H,GAC1Br9J,EAAOnxC,KAAKwuM,GACZD,GAAW,EAIbD,EAAmB5tL,KAErB2tL,GAAmB,EAGrB,GAAI1nI,EAAKklI,YAAa,CACpBzT,EAAOhoH,MAAM,OAAQzJ,GACrByxH,EAAOrwF,KAAK,eAAgB+iG,EAAUnkI,EAAKklI,cAI3C,IAHA,IACIyC,EADEG,EAAgB,GAElBF,GAAW,EACN51M,EAAIw4C,EAAOn2C,OAAS,EAAGrC,GAAK,EAAGA,IAAK,CAC3C,IAAM+nB,EAAQywB,EAAOx4C,GACfuO,EAAO4jM,EAAUnkI,EAAKklI,aAAa3kM,KAEzC,GAAKmmM,GAAYnmM,EAAMwZ,IAAW6tL,EAWhCnW,EAAOhoH,MAAM,gBAAiB1vD,GACzB6tL,GAAUE,EAAc/2K,QAAQhX,OAZK,CAC1C03K,EAAOrwF,KAAK,SAAUphC,EAAKklI,YAAanrL,EAAOxZ,GAG/C,IAAMsnM,EAAej8J,GAAarrC,EAAMonM,EAAkB5tL,GAE1D+tL,EAAc/2K,QAAQ82K,GAEtBD,GAAW,EAMbD,EAAmB5tL,EAErBywB,EAASs9J,EACTJ,GAAmB,EAIrB,IAaIK,EAbEC,EAAWx9J,EAAOjtC,QAAO,SAAAzJ,GAAC,OAAKitC,OAAO5qC,MAAMrC,EAAE4G,MAG9CutM,EAAenrM,iBAClBxI,GAAE,SAAShC,GACV,OAAOA,EAAEgC,KAEVoG,GAAE,SAASpI,GACV,OAAOA,EAAEoI,KAEVo9D,MAAM26H,cAIT,OAAQzyH,EAAKkoI,WACX,IAAK,SACHH,EAAgB,wBAChB,MACF,IAAK,QACHA,EAAgB,uBAChB,MACF,QACEA,EAAgB,GAEpB,OAAQ/nI,EAAKmoI,SACX,IAAK,QACHJ,GAAiB,sBACjB,MACF,IAAK,SACHA,GAAiB,uBACjB,MACF,IAAK,SACHA,GAAiB,uBAIrB,IAAMK,EAAU5+B,EACb5sK,OAAO,QACPC,KAAK,IAAKorM,EAAaD,IACvBnrM,KAAK,KAAMmjE,EAAKhjD,IAChBngB,KAAK,QAAS,IAAMkrM,GAAiB/nI,EAAK08H,QAAU,IAAM18H,EAAK08H,QAAU,KAaxE9oE,EAAM,GAYV,OAXI2oE,IAAYr/K,MAAMg7K,sBAQpBtkE,GADAA,GANAA,EACExsH,OAAOk+D,SAAS+iI,SAChB,KACAjhM,OAAOk+D,SAASgjI,KAChBlhM,OAAOk+D,SAASijI,SAChBnhM,OAAOk+D,SAASkjI,QACR1yK,QAAQ,MAAO,QACfA,QAAQ,MAAO,QAE3B27J,EAAO/mC,KAAK,YAAa1qF,EAAKyoI,WACtBzoI,EAAKyoI,WACX,IAAK,cACHL,EAAQvrM,KAAK,aAAc,OAAS+2H,EAAM,IAAM6zE,EAAc,cAC9D,MACF,IAAK,qBACHW,EAAQvrM,KAAK,aAAc,OAAS+2H,EAAM,IAAM6zE,EAAc,cAC9DW,EAAQvrM,KAAK,eAAgB,OAAS+2H,EAAM,IAAM6zE,EAAc,gBAChE,MACF,IAAK,cACHW,EAAQvrM,KAAK,aAAc,OAAS+2H,EAAM,IAAM6zE,EAAc,cAC9D,MACF,IAAK,qBACHW,EAAQvrM,KAAK,aAAc,OAAS+2H,EAAM,IAAM6zE,EAAc,cAC9DW,EAAQvrM,KAAK,eAAgB,OAAS+2H,EAAM,IAAM6zE,EAAc,gBAChE,MACF,IAAK,aACHW,EAAQvrM,KAAK,aAAc,OAAS+2H,EAAM,IAAM6zE,EAAc,aAC9D,MACF,IAAK,oBACHW,EAAQvrM,KAAK,aAAc,OAAS+2H,EAAM,IAAM6zE,EAAc,aAC9DW,EAAQvrM,KAAK,eAAgB,OAAS+2H,EAAM,IAAM6zE,EAAc,eAChE,MACF,IAAK,eACHW,EAAQvrM,KAAK,aAAc,OAAS+2H,EAAM,IAAM6zE,EAAc,eAC9D,MACF,IAAK,sBACHW,EAAQvrM,KAAK,aAAc,OAAS+2H,EAAM,IAAM6zE,EAAc,eAC9DW,EAAQvrM,KAAK,eAAgB,OAAS+2H,EAAM,IAAM6zE,EAAc,iBAKpE,GAAIC,EACF,OAAOl9J,ECtMak+J,CAAWzB,EAAWjrL,EAAGgkD,EAAMmkI,GAAW4C,EAAa9vG,IDnF9C,SAACj3B,EAAMx1B,GAEtC,GADAinJ,EAAO/mC,KAAK,eAAgB1qF,EAAKhjD,GAAIgjD,EAAKo3B,MAAO03F,GAAW9uH,EAAKhjD,KAC7DgjD,EAAKo3B,MAAO,CACd,IAAMuF,EAAKmyF,GAAW9uH,EAAKhjD,IACvB1oB,EAAI0rE,EAAK1rE,EACToG,EAAIslE,EAAKtlE,EACb,GAAI8vC,EAAQ,CAEV,IAAMsnD,EAAMgH,EAAM69F,kBAAkBnsJ,GACpCl2C,EAAIw9F,EAAIx9F,EACRoG,EAAIo3F,EAAIp3F,EAEViiG,EAAG9/F,KAAK,YAAa,aAAevI,EAAI,KAAOoG,EAAI,MCwEnDiuM,CAAkB3oI,EAAMwnI,MAGnBh+B,GAGInzE,GAAS,SAACmzE,EAAMvyE,EAAO6rG,EAASiE,EAAa/pL,GACxDqmL,GAAc75B,EAAMs5B,EAASiE,EAAa/pL,GJsb1CmpL,GAAY,GGljBZrX,GAAa,GDoNb2X,GAAe,GTnNfrC,GAAa,GACbr8L,GAAU,GACVo8L,GAAY,GW+HZtsM,EAAIupG,KAAK,gBAAiBjL,KAASx7D,KAAKozD,MAAMkJ,IAC9C6tG,GAAuB7tG,GACvBp/F,EAAIupG,KAAK,eAAgBjL,KAASx7D,KAAKozD,MAAMkJ,IAC7Cp/F,EAAIupG,KAAK,qBAAsBnK,EAAMA,SACrC4vG,GAAgBr9B,EAAMvyE,EAAO8vG,ICnIzB/6E,GAAO,GAaAg1E,GAAc,SAAStU,EAAM72K,EAAGorL,GAC3C,IAAMlgM,EAAMhE,iBAAO,QAAD,OAASkkM,EAAT,OACLvuM,OAAOyyB,KAAKunK,GAGpBrjK,SAAQ,SAASrM,GACpB,IAAMqjD,EAASqsH,EAAK1vK,GAMhBkkL,EAAW,UACX7gI,EAAOq8H,QAAQroM,OAAS,IAC1B6sM,EAAW7gI,EAAOq8H,QAAQ34L,KAAK,MAGjC,IAMIo9L,EANE7yC,EAASslC,EAAmBvzH,EAAOiuF,QAGrC8yC,OAA6Bp/K,IAAhBq+C,EAAOrjE,KAAqBqjE,EAAOrjE,KAAOqjE,EAAOrjD,GAIlE,GAAIu/K,IAAYnK,UAAUD,WAAY,CAEpC,IAAM5xL,EAAO,CACX62F,MAAOgqG,EAAWtrK,QAChB,wBACA,SAAA/hC,GAAC,0BAAiBA,EAAE+hC,QAAQ,IAAK,KAAhC,eAGLqrK,EAAat3D,KAAa9oI,EAAKR,GAAMA,QAC1BlD,WAAWkI,YAAY47L,OAC7B,CACL,IAAME,EAAWl/L,SAASgD,gBAAgB,6BAA8B,QACxEk8L,EAASx/L,aAAa,QAASysJ,EAAOrmC,WAAWnyF,QAAQ,SAAU,UAInE,IAFA,IAAM3B,EAAOitK,EAAW7iM,MAAM4lI,EAAO0tD,gBAE5B93L,EAAI,EAAGA,EAAIo6B,EAAK9/B,OAAQ0F,IAAK,CACpC,IAAMunM,EAAQn/L,SAASgD,gBAAgB,6BAA8B,SACrEm8L,EAAMv/L,eAAe,uCAAwC,YAAa,YAC1Eu/L,EAAMz/L,aAAa,KAAM,OACzBy/L,EAAMz/L,aAAa,IAAK,KACxBy/L,EAAMn9L,YAAcgwB,EAAKp6B,GACzBsnM,EAASphM,YAAYqhM,GAEvBH,EAAaE,EAGf,IAAIE,EAAU,EACVC,EAAS,GAEb,OAAQnhI,EAAO5hE,MACb,IAAK,QACH8iM,EAAU,EACVC,EAAS,OACT,MACF,IAAK,SACHA,EAAS,OACT,MACF,IAAK,UACHA,EAAS,WACT,MACF,IAAK,UACHA,EAAS,UACT,MACF,IAAK,MACHA,EAAS,sBACT,MACF,IAAK,aACHA,EAAS,aACT,MACF,IAAK,YACHA,EAAS,YACT,MACF,IAAK,YACHA,EAAS,YACT,MACF,IAAK,gBACHA,EAAS,gBACT,MACF,IAAK,YACHA,EAAS,sBACT,MACF,IAAK,SACHA,EAAS,SACT,MACF,IAAK,UACHA,EAAS,UACT,MACF,IAAK,UACHA,EAAS,UACT,MACF,IAAK,aACHA,EAAS,aACT,MACF,IAAK,WACHA,EAAS,WACT,MACF,IAAK,QACHA,EAAS,OACT,MACF,QACEA,EAAS,OAGb3rL,EAAE8gF,QAAQt2B,EAAOrjD,GAAI,CACnBirG,WAAYqmC,EAAOrmC,WACnBgnE,MAAOuS,EACPuC,UAAW3C,EACXxgI,GAAI2gI,EACJ1gI,GAAI0gI,EACJ7M,MAAOwM,EACP7+L,MAAOisJ,EAAOjsJ,MACd2a,GAAIqjD,EAAOrjD,GACXsH,MAAuB,UAAhB+7C,EAAO5hE,KAAmB,SAAMujB,EACvCvjB,KAAM4hE,EAAO5hE,KACb4jC,QAASk6J,IAAYnK,UAAU/vJ,UAGjCovJ,EAAO/mC,KAAK,UAAW,CACrBziC,WAAYqmC,EAAOrmC,WACnBgnE,MAAOuS,EACPuC,UAAW3C,EACXxgI,GAAI2gI,EACJ1gI,GAAI0gI,EACJ7M,MAAOwM,EACP7+L,MAAOisJ,EAAOjsJ,MACd2a,GAAIqjD,EAAOrjD,GACXsH,MAAuB,UAAhB+7C,EAAO5hE,KAAmB,SAAMujB,EACvCvjB,KAAM4hE,EAAO5hE,KACb4jC,QAASk6J,IAAYnK,UAAU/vJ,cAUxBo/J,GAAW,SAAS38H,EAAOjvD,GACtC,IAEIwoL,EACAqD,EAHA5N,EAAM,EAKV,QAAkC,IAAvBhvH,EAAMu5H,aAA8B,CAC7C,IAAMsD,EAAgB/N,EAAmB9uH,EAAMu5H,cAC/CA,EAAesD,EAAct/L,MAC7Bq/L,EAAoBC,EAAc15E,WAGpCnjD,EAAMz7C,SAAQ,SAAS22C,GACrB8zH,IAGA,IAAI8N,EAAS,KAAO5hI,EAAKnpE,MAAQ,IAAMmpE,EAAKnoD,IACxCgqL,EAAgB,MAAQ7hI,EAAKnpE,MAC7BirM,EAAc,MAAQ9hI,EAAKnoD,IAEzBkqL,EAAW,GAIC,eAAd/hI,EAAKvhE,KACPsjM,EAAS7S,UAAY,OAErB6S,EAAS7S,UAAY,SAGvBuC,EAAO/mC,KAAKq3C,EAAU/hI,GACtB+hI,EAAS0G,UAAYzoI,EAAKvhE,KAE1B,IAAI4D,EAAQ,GACR4lH,EAAa,GAEjB,QAA0B,IAAfjoD,EAAK39D,MAAuB,CACrC,IAAMisJ,EAASslC,EAAmB5zH,EAAK39D,OACvCA,EAAQisJ,EAAOjsJ,MACf4lH,EAAaqmC,EAAOrmC,gBAEpB,OAAQjoD,EAAKk9C,QACX,IAAK,SACH76G,EAAQ,iBACoB,IAAjBg8L,IACTh8L,EAAQg8L,QAEuB,IAAtBqD,IACTz5E,EAAay5E,GAEfK,EAASmG,UAAY,SACrBnG,EAASoG,QAAU,QACnB,MACF,IAAK,SACHpG,EAASmG,UAAY,SACrBnG,EAASoG,QAAU,SACnB,MACF,IAAK,QACHpG,EAASmG,UAAY,QACrBnG,EAASoG,QAAU,QAKzBpG,EAAS1/L,MAAQA,EACjB0/L,EAAS95E,WAAaA,OAEU,IAArBjoD,EAAKvgD,YACdsiL,EAASjqI,MAAQ27H,EAAmBzzH,EAAKvgD,YAAa0vK,oBACT,IAA7BrqH,EAAMs5H,mBACtB2D,EAASjqI,MAAQ27H,EAAmB3uH,EAAMs5H,mBAAoBjP,eAE9D4S,EAASjqI,MAAQ27H,EAAmBznE,GAAKl0D,MAAOq3H,oBAGzB,IAAdnvH,EAAKhjE,UACY,IAAfgjE,EAAK39D,QACd0/L,EAASC,eAAiB,eAG5BD,EAASC,eAAiB,aAC1BD,EAASpoB,SAAW,IAEhB4iB,IAAYnK,UAAUD,WAIxB4P,EAAS/3D,UAAY,OACrB+3D,EAAS3qG,MAAQp3B,EAAKhjE,KAAK84B,QAAQquG,EAAO0tD,eAAgB,WAEhC,IAAf7xH,EAAK39D,QACd0/L,EAAS1/L,MAAQ0/L,EAAS1/L,OAAS,+CAGrC0/L,EAAS95E,WAAa85E,EAAS95E,WAAWnyF,QAAQ,SAAU,UAIhEisK,EAAS/kL,GAAK4kL,EACdG,EAASrF,QAAU,kBAAoBmF,EAAgB,IAAMC,EAG7DjsL,EAAEwhF,QAAQr3B,EAAKnpE,MAAOmpE,EAAKnoD,IAAKkqL,EAAUjO,OAsN/B,GAvdQ,SAASmO,GAE9B,IADA,IAAM98K,EAAOzyB,OAAOyyB,KAAK88K,GAChBjwM,EAAI,EAAGA,EAAImzB,EAAK9wB,OAAQrC,IAC/Bg6H,GAAK7mG,EAAKnzB,IAAMiwM,EAAI98K,EAAKnzB,KAodd,GAxLK,SAASgL,EAAMggB,GACjCy0K,EAAO/mC,KAAK,qBACZw3C,GAAO/5K,QACP,IAAMyS,EAAS8xG,KAAK9xG,OACpBA,EAAO8uC,GAAKw4H,GAIZtnK,EAAOvc,MAAMrhB,GAMb,IAAIgwF,EAAMk1G,GAAOvD,oBACE,IAAR3xG,IACTA,EAAM,MAGR,IAoBIm1G,EApBEn2E,EAAOuwE,IAAYnK,UACnBgG,EAAcpsE,EAAKosE,aAAe,GAClCC,EAAcrsE,EAAKqsE,aAAe,GAGlCxiL,EAAI,IAAIsgF,KAASzf,MAAM,CAC3B6gB,YAAY,EACZqtC,UAAU,IAET5tC,SAAS,CACR4iF,QAAS5sF,EACTsvF,QAAS8b,EACT1e,QAAS2e,EACT9c,QAAS,EACTE,QAAS,IAEVr0C,qBAAoB,WACnB,MAAO,MAILu1D,EAAYuF,GAAOxC,eACzBjO,EAAO/mC,KAAK,eAAgBiyC,GAC5B,IAAK,IAAI3qM,EAAI2qM,EAAUtoM,OAAS,EAAGrC,GAAK,EAAGA,IACzCmwM,EAAOxF,EAAU3qM,GACjBy/L,EAAO/mC,KAAK,cAAey3C,GAC3BD,GAAOnlF,UAAUolF,EAAKnlL,GAAImlL,EAAKh2G,MAAO,aAASnqE,EAAWmgL,EAAKzF,SAIjE,IAAMhQ,EAAOwV,GAAOtD,cAEd95H,EAAQo9H,GAAOrD,WAErBpN,EAAO/mC,KAAK5lF,GACZ,IAAI9yE,EAAI,EACR,IAAKA,EAAI2qM,EAAUtoM,OAAS,EAAGrC,GAAK,EAAGA,IAAK,CAC1CmwM,EAAOxF,EAAU3qM,GAEjBqK,oBAAU,WAAWO,OAAO,QAE5B,IAAK,IAAI7C,EAAI,EAAGA,EAAIooM,EAAKv4L,MAAMvV,OAAQ0F,IACrC8b,EAAE8wH,UAAUw7D,EAAKv4L,MAAM7P,GAAIooM,EAAKnlL,IAGpCgkL,GAAYtU,EAAM72K,EAAGmH,GACrBykL,GAAS38H,EAAOjvD,GAMhB,IAAM9U,EAAMhE,iBAAO,QAAD,OAASigB,EAAT,OAGZ0gL,EAAU3gM,iBAAO,IAAMigB,EAAK,MAClCq5E,GAAOqnG,EAAS7nL,EAAG,CAAC,QAAS,SAAU,SAAU,YAAamH,GAG9D0gL,EAAQrhM,UAAU,UAAUQ,KAAK,SAAS,WACxC,OAAOqlM,GAAO1D,WAAW5sM,KAAKorB,OAGhC,IACMslL,EAAYvhM,EAAIR,OAAO2pI,UACvB5lH,EAAQg+K,EAAUh+K,MAAQ+d,GAC1B9d,EAAS+9K,EAAU/9K,OAAS8d,GA6ClC,GA5CAovJ,EAAO76E,MAAP,0BACqBtyF,EADrB,YAC8BC,GAD9B,oBAJgB,EAMS1O,EAAEgvH,OAAO02C,QAFlC,aAJgB,EAMwC1lK,EAAEgvH,OAAO42C,QAFjE,MAKIzvD,EAAKktE,aACPn4L,EAAIlE,KAAK,QAAS,QAClBkE,EAAIlE,KAAK,QAAT,qBAAgCynB,EAAhC,UAEAvjB,EAAIlE,KAAK,SAAU0nB,GACnBxjB,EAAIlE,KAAK,QAASynB,IAGpBvjB,EAAIlE,KAAK,UAAT,cAA2BynB,EAA3B,YAAoCC,IACpCxjB,EACGhE,OAAO,KACPF,KAAK,YAFR,oBAlBgB,EAoB4BgZ,EAAEgvH,OAAO02C,QAFrD,aAlBgB,EAoB2D+mB,EAAU5nM,EAFrF,MAKAwnM,GAAO5C,WAAW,WAAattM,IAyB1Bg6H,EAAKmmE,WAER,IADA,IAAMyQ,EAASzgM,SAAS7C,iBAAiB,QAAU0d,EAAK,wBAC/CxhB,EAAI,EAAGA,EAAIonM,EAAOvuM,OAAQmH,IAAK,CACtC,IAAM47F,EAAQwrG,EAAOpnM,GAGfspB,EAAMsyE,EAAM8yC,UAEZ7vH,EAAOlY,SAASgD,gBAAgB,6BAA8B,QACpEkV,EAAKxY,aAAa,KAAM,GACxBwY,EAAKxY,aAAa,KAAM,GACxBwY,EAAKxY,aAAa,QAASijB,EAAIR,OAC/BjK,EAAKxY,aAAa,SAAUijB,EAAIP,QAChClK,EAAKxY,aAAa,QAAS,iBAE3Bu1F,EAAMj3F,aAAaka,EAAM+8E,EAAMtyF,YAKtBpS,OAAOyyB,KAAKunK,GACpBrjK,SAAQ,SAAS91B,GACpB,IAAM8sE,EAASqsH,EAAKn5L,GAEpB,GAAI8sE,EAAOziC,KAAM,CACf,IAAMr9B,EAAOxD,iBAAO,IAAMigB,EAAK,SAAWzpB,EAAM,MAChD,GAAIgN,EAAM,CACR,IAAMq9B,EAAOz7B,SAASgD,gBAAgB,6BAA8B,KACpEy4B,EAAK77B,eAAe,6BAA8B,QAASs+D,EAAOq8H,QAAQ34L,KAAK,MAC/E65B,EAAK77B,eAAe,6BAA8B,OAAQs+D,EAAOziC,MACjEA,EAAK77B,eAAe,6BAA8B,MAAO,YAEzD,IAAM8gM,EAAWtiM,EAAKrD,QAAO,WAC3B,OAAO0gC,IACN,gBAEGqxJ,EAAQ1uL,EAAKxD,OAAO,oBACtBkyL,GACF4T,EAASjmM,QAAO,WACd,OAAOqyL,EAAM1uL,UAIjB,IAAM62F,EAAQ72F,EAAKxD,OAAO,UACtBq6F,GACFyrG,EAASjmM,QAAO,WACd,OAAOw6F,EAAM72F,gBC3dZqoM,GAAW,SAASp/B,EAAMq/B,GACrC,IAAMC,EAAWt/B,EAAK5sK,OAAO,QAc7B,OAbAksM,EAASjsM,KAAK,IAAKgsM,EAASv0M,GAC5Bw0M,EAASjsM,KAAK,IAAKgsM,EAASnuM,GAC5BouM,EAASjsM,KAAK,OAAQgsM,EAAS9oK,MAC/B+oK,EAASjsM,KAAK,SAAUgsM,EAAS3rF,QACjC4rF,EAASjsM,KAAK,QAASgsM,EAASvkL,OAChCwkL,EAASjsM,KAAK,SAAUgsM,EAAStkL,QACjCukL,EAASjsM,KAAK,KAAMgsM,EAASjoI,IAC7BkoI,EAASjsM,KAAK,KAAMgsM,EAAShoI,SAEC,IAAnBgoI,EAASnU,OAClBoU,EAASjsM,KAAK,QAASgsM,EAASnU,OAG3BoU,GAGIC,GAAW,SAASv/B,EAAM2qB,GACrC,IAAI6U,EAAiB,EACnB9N,EAAa,EACT7wJ,EAAQ8pJ,EAASrtL,KACnBqtL,EAASn3L,KAAKuB,MAAM4lI,EAAO0tD,gBAC3B,CAACsC,EAASn3L,KAAK84B,QAAQquG,EAAO0tD,eAAgB,MAE9CoX,EAAY,GACZ/hL,EAAK,EACLgiL,EAAQ,kBAAM/U,EAASz5L,GAC3B,QAC6B,IAApBy5L,EAASkC,aACe,IAAxBlC,EAASS,YAChBT,EAASS,WAAa,EAEtB,OAAQT,EAASkC,QACf,IAAK,MACL,IAAK,QACH6S,EAAQ,kBAAM3yM,KAAKuE,MAAMq5L,EAASz5L,EAAIy5L,EAASS,aAC/C,MACF,IAAK,SACL,IAAK,SACHsU,EAAQ,kBACN3yM,KAAKuE,MAAMq5L,EAASz5L,GAAKsuM,EAAiB9N,EAAa/G,EAASS,YAAc,IAChF,MACF,IAAK,SACL,IAAK,MACHsU,EAAQ,kBACN3yM,KAAKuE,MACHq5L,EAASz5L,GACNsuM,EAAiB9N,EAAa,EAAI/G,EAASS,YAC5CT,EAASS,aAKrB,QAC6B,IAApBT,EAASG,aACe,IAAxBH,EAASS,iBACU,IAAnBT,EAAS7vK,MAEhB,OAAQ6vK,EAASG,QACf,IAAK,OACL,IAAK,QACHH,EAAS7/L,EAAIiC,KAAKuE,MAAMq5L,EAAS7/L,EAAI6/L,EAASS,YAC9CT,EAASG,OAAS,QAClBH,EAASgV,iBAAmB,kBAC5BhV,EAASiV,kBAAoB,SAC7B,MACF,IAAK,SACL,IAAK,SACHjV,EAAS7/L,EAAIiC,KAAKuE,MAAMq5L,EAAS7/L,EAAI6/L,EAAS7vK,MAAQ,GACtD6vK,EAASG,OAAS,SAClBH,EAASgV,iBAAmB,SAC5BhV,EAASiV,kBAAoB,SAC7B,MACF,IAAK,QACL,IAAK,MACHjV,EAAS7/L,EAAIiC,KAAKuE,MAAMq5L,EAAS7/L,EAAI6/L,EAAS7vK,MAAQ6vK,EAASS,YAC/DT,EAASG,OAAS,MAClBH,EAASgV,iBAAmB,mBAC5BhV,EAASiV,kBAAoB,SAInC,IAAK,IAAIp3M,EAAI,EAAGA,EAAIq4C,EAAMh2C,OAAQrC,IAAK,CACrC,IAAI8K,EAAOutC,EAAMr4C,QAEgB,IAAxBmiM,EAASS,YACQ,IAAxBT,EAASS,iBACoB,IAAtBT,EAASK,WAEhBttK,EAAKl1B,EAAImiM,EAASK,UAGpB,IAAMH,EAAW7qB,EAAK5sK,OAAO,QA8B7B,GA7BAy3L,EAASx3L,KAAK,IAAKs3L,EAAS7/L,GAC5B+/L,EAASx3L,KAAK,IAAKqsM,UACY,IAApB/U,EAASG,QAClBD,EACGx3L,KAAK,cAAes3L,EAASG,QAC7Bz3L,KAAK,oBAAqBs3L,EAASgV,kBACnCtsM,KAAK,qBAAsBs3L,EAASiV,wBAEN,IAAxBjV,EAASI,YAClBF,EAAShyL,MAAM,cAAe8xL,EAASI,iBAER,IAAtBJ,EAASK,UAClBH,EAAShyL,MAAM,YAAa8xL,EAASK,eAEJ,IAAxBL,EAASM,YAClBJ,EAAShyL,MAAM,cAAe8xL,EAASM,iBAEZ,IAAlBN,EAASp0J,MAClBs0J,EAASx3L,KAAK,OAAQs3L,EAASp0J,WAEH,IAAnBo0J,EAASO,OAClBL,EAASx3L,KAAK,QAASs3L,EAASO,YAEP,IAAhBP,EAASjtK,GAClBmtK,EAASx3L,KAAK,KAAMs3L,EAASjtK,IACb,IAAPA,GACTmtK,EAASx3L,KAAK,KAAMqqB,GAGlBitK,EAASmN,MAAO,CAClB,IAAM3M,EAAON,EAASz3L,OAAO,SAC7B+3L,EAAK93L,KAAK,IAAKs3L,EAAS7/L,QACK,IAAlB6/L,EAASp0J,MAClB40J,EAAK93L,KAAK,OAAQs3L,EAASp0J,MAE7B40J,EAAK33L,KAAKF,QAEVu3L,EAASr3L,KAAKF,QAGa,IAApBq3L,EAASkC,aACe,IAAxBlC,EAASS,YAChBT,EAASS,WAAa,IAEtBsG,IAAe7G,EAASrsL,SAAWqsL,GAAU,GAAG,GAAGnqD,UAAU3lH,OAC7DykL,EAAiB9N,GAGnB+N,EAAU5vM,KAAKg7L,GAGjB,OAAO4U,GAGII,GAAY,SAAS7/B,EAAM8/B,GAwBtC,IAvBmBh1M,EAAGoG,EAAG4pB,EAAOC,EAAQgpI,EAuBlCr8H,EAAUs4I,EAAK5sK,OAAO,WAO5B,OANAs0B,EAAQr0B,KAAK,UAxBMvI,EAwBcg1M,EAAUh1M,EAxBrBoG,EAwBwB4uM,EAAU5uM,EAxB/B4pB,EAwBkCglL,EAAUhlL,MAxBrCC,EAwB4C+kL,EAAU/kL,OAtBlFjwB,EACA,IACAoG,EACA,KACCpG,EAAIgwB,GACL,IACA5pB,EACA,KACCpG,EAAIgwB,GACL,KACC5pB,EAAI6pB,GAZ+BgpI,EAwBsD,IAX1F,KACCj5J,EAAIgwB,EAAc,IAANipI,GACb,KACC7yJ,EAAI6pB,GACL,IACAjwB,EACA,KACCoG,EAAI6pB,KAKT2M,EAAQr0B,KAAK,QAAS,YAEtBysM,EAAU5uM,EAAI4uM,EAAU5uM,EAAI4uM,EAAU/kL,OAAS,EAE/CwkL,GAASv/B,EAAM8/B,GACRp4K,GAGLq4K,IAAY,EA8PHC,GAAa,WACxB,MAAO,CACLl1M,EAAG,EACHoG,EAAG,EACHqlC,UAAM/d,EACNsyK,YAAQtyK,EACR3f,MAAO,OACPiiB,WAAOtC,EACPuC,YAAQvC,EACR4yK,WAAY,EACZh0H,GAAI,EACJC,GAAI,EACJygI,OAAO,EACPjL,YAAQr0K,IAICynL,GAAc,WACzB,MAAO,CACLn1M,EAAG,EACHoG,EAAG,EACHqlC,KAAM,UACNm9E,OAAQ,OACR54F,MAAO,IACPgwK,OAAQ,QACR/vK,OAAQ,IACRq8C,GAAI,EACJC,GAAI,IAIF6oI,GAA0B,WAC9B,SAASC,EAAOthF,EAASxyG,EAAGvhB,EAAGoG,EAAG4pB,EAAOC,EAAQqlL,GAO/CC,EANah0L,EACVjZ,OAAO,QACPC,KAAK,IAAKvI,EAAIgwB,EAAQ,GACtBznB,KAAK,IAAKnC,EAAI6pB,EAAS,EAAI,GAC3BliB,MAAM,cAAe,UACrBrF,KAAKqrH,GACYuhF,GAGtB,SAASE,EAAQzhF,EAASxyG,EAAGvhB,EAAGoG,EAAG4pB,EAAOC,EAAQqlL,EAAW59E,GAI3D,IAJiE,IACzDqtE,EAAoDrtE,EAApDqtE,cAAeC,EAAqCttE,EAArCstE,gBAAiBC,EAAoBvtE,EAApButE,gBAElClvJ,EAAQg+E,EAAQ9pH,MAAM4lI,EAAO0tD,gBAC1B7/L,EAAI,EAAGA,EAAIq4C,EAAMh2C,OAAQrC,IAAK,CACrC,IAAMk1B,EAAKl1B,EAAIqnM,EAAiBA,GAAiBhvJ,EAAMh2C,OAAS,GAAM,EAChE2I,EAAO6Y,EACVjZ,OAAO,QACPC,KAAK,IAAKvI,EAAIgwB,EAAQ,GACtBznB,KAAK,IAAKnC,GACV2H,MAAM,cAAe,UACrBA,MAAM,YAAag3L,GACnBh3L,MAAM,cAAek3L,GACrBl3L,MAAM,cAAei3L,GACxBt8L,EACGJ,OAAO,SACPC,KAAK,IAAKvI,EAAIgwB,EAAQ,GACtBznB,KAAK,KAAMqqB,GACXlqB,KAAKqtC,EAAMr4C,IAEdgL,EACGH,KAAK,IAAKnC,EAAI6pB,EAAS,GACvB1nB,KAAK,oBAAqB,WAC1BA,KAAK,qBAAsB,WAE9BgtM,EAAc7sM,EAAM4sM,IAIxB,SAASG,EAAK1hF,EAASxyG,EAAGvhB,EAAGoG,EAAG4pB,EAAOC,EAAQqlL,EAAW59E,GACxD,IAAMj4H,EAAI8hB,EAAEjZ,OAAO,UAQbI,EAPIjJ,EACP6I,OAAO,iBACPC,KAAK,IAAKvI,GACVuI,KAAK,IAAKnC,GACVmC,KAAK,QAASynB,GACdznB,KAAK,SAAU0nB,GAGf3nB,OAAO,OACPyF,MAAM,UAAW,SACjBA,MAAM,SAAU,QAChBA,MAAM,QAAS,QAElBrF,EACGJ,OAAO,OACPyF,MAAM,UAAW,cACjBA,MAAM,aAAc,UACpBA,MAAM,iBAAkB,UACxBrF,KAAKqrH,GAERyhF,EAAQzhF,EAASt0H,EAAGO,EAAGoG,EAAG4pB,EAAOC,EAAQqlL,EAAW59E,GACpD69E,EAAc7sM,EAAM4sM,GAGtB,SAASC,EAAcG,EAAQC,GAC7B,IAAK,IAAM12M,KAAO02M,EACZA,EAAkBp2M,eAAeN,IACnCy2M,EAAOntM,KAAKtJ,EAAK02M,EAAkB12M,IAKzC,OAAO,SAASy4H,GACd,MAA8B,OAAvBA,EAAKk+E,cAAyBH,EAA8B,QAAvB/9E,EAAKk+E,cAA0BP,EAASG,GA3ExD,GA+EjB,IACblB,YACAG,YACAM,aACAc,UAzWuB,SAAS3gC,EAAMp8F,EAAO4+C,GAC7C,IAAM7hF,EAASijC,EAAM94E,EAAI84E,EAAM9oD,MAAQ,EAEjCzO,EAAI2zJ,EAAK5sK,OAAO,KACN,IAAZwwE,EAAM1yE,IACR6uM,KACA1zL,EAAEjZ,OAAO,QACNC,KAAK,KAAM,QAAU0sM,IACrB1sM,KAAK,KAAMstC,GACXttC,KAAK,KAAM,GACXA,KAAK,KAAMstC,GACXttC,KAAK,KAAM,KACXA,KAAK,QAAS,cACdA,KAAK,eAAgB,SACrBA,KAAK,SAAU,SAGpB,IAAMwd,EAAOovL,KACbpvL,EAAK/lB,EAAI84E,EAAM94E,EACf+lB,EAAK3f,EAAI0yE,EAAM1yE,EACf2f,EAAK0lB,KAAO,UACZ1lB,EAAKiK,MAAQ8oD,EAAM9oD,MACnBjK,EAAKkK,OAAS6oD,EAAM7oD,OACpBlK,EAAKq6K,MAAQ,QACbr6K,EAAKumD,GAAK,EACVvmD,EAAKwmD,GAAK,EACV+nI,GAAS/yL,EAAGwE,GAEZqvL,GAAuB19E,EAAvB09E,CACEt8H,EAAMN,YACNj3D,EACAwE,EAAK/lB,EACL+lB,EAAK3f,EACL2f,EAAKiK,MACLjK,EAAKkK,OACL,CAAEmwK,MAAO,SACT1oE,IAsUFo+E,cAlU2B,SAAS5gC,GACpC,OAAOA,EAAK5sK,OAAO,MAkUnBytM,eAxT4B,SAAS7gC,EAAMh3H,EAAQ83J,EAAat+E,EAAMu+E,GACtE,IAAMlwL,EAAOovL,KACP5zL,EAAI28B,EAAOg4J,SACjBnwL,EAAK/lB,EAAIk+C,EAAOi4J,OAChBpwL,EAAK3f,EAAI83C,EAAOk4J,OAChBrwL,EAAKq6K,MAAQ,aAAgB6V,EAAmB,EAChDlwL,EAAKiK,MAAQkuB,EAAOm4J,MAAQn4J,EAAOi4J,OACnCpwL,EAAKkK,OAAS+lL,EAAc93J,EAAOk4J,OACnC9B,GAAS/yL,EAAGwE,IAiTZuwL,SAvSsB,SAASphC,EAAMqhC,EAAW9G,EAAW/3E,GAAM,IAE/D2sE,EAOE3sE,EAPF2sE,UACAC,EAME5sE,EANF4sE,cACAqB,EAKEjuE,EALFiuE,eACAD,EAIEhuE,EAJFguE,cACmBzF,EAGjBvoE,EAHF6tE,kBACiBrF,EAEfxoE,EAFF4tE,gBACmBnF,EACjBzoE,EADF8tE,kBAEIjkL,EAAI2zJ,EAAK5sK,OAAO,KAChBkuM,EAAe,SAASL,EAAQC,EAAQC,EAAOI,GACnD,OAAOl1L,EACJjZ,OAAO,QACPC,KAAK,KAAM4tM,GACX5tM,KAAK,KAAM6tM,GACX7tM,KAAK,KAAM8tM,GACX9tM,KAAK,KAAMkuM,GACXluM,KAAK,QAAS,aAEnBiuM,EAAaD,EAAUJ,OAAQI,EAAUH,OAAQG,EAAUF,MAAOE,EAAUH,QAC5EI,EAAaD,EAAUF,MAAOE,EAAUH,OAAQG,EAAUF,MAAOE,EAAUE,OAC3ED,EAAaD,EAAUJ,OAAQI,EAAUE,MAAOF,EAAUF,MAAOE,EAAUE,OAC3ED,EAAaD,EAAUJ,OAAQI,EAAUH,OAAQG,EAAUJ,OAAQI,EAAUE,YAC3C,IAAvBF,EAAUG,UACnBH,EAAUG,SAAS3hL,SAAQ,SAAS++F,GAClC0iF,EAAaD,EAAUJ,OAAQriF,EAAK1tH,EAAGmwM,EAAUF,MAAOviF,EAAK1tH,GAAG2H,MAC9D,mBACA,WAKN,IAAI6vL,EAAMsX,KACVtX,EAAIl1L,KAAO+mM,EACX7R,EAAI59L,EAAIu2M,EAAUJ,OAClBvY,EAAIx3L,EAAImwM,EAAUH,OAClBxY,EAAIqC,WAAaA,EACjBrC,EAAIsC,SAAWA,EACftC,EAAIuC,WAAaA,EACjBvC,EAAIoC,OAAS,SACbpC,EAAImE,OAAS,SACbnE,EAAIoP,OAAQ,EACZpP,EAAI5tK,MAAQ01K,GAAiB,GAC7B9H,EAAI3tK,OAAS01K,GAAkB,GAC/B/H,EAAI0C,WAAagE,EACjB1G,EAAIwC,MAAQ,YAEZ2U,GAAUxzL,EAAGq8K,IACbA,EAAMsX,MACFxsM,KAAO6tM,EAAU1+G,MACrB+lG,EAAI59L,EAAIu2M,EAAUJ,OAASzQ,EAAgB,GAAK6Q,EAAUF,MAAQE,EAAUJ,QAAU,EACtFvY,EAAIx3L,EAAImwM,EAAUH,OAAS/R,EAAYC,EACvC1G,EAAIoC,OAAS,SACbpC,EAAImE,OAAS,SACbnE,EAAI0C,WAAagE,EACjB1G,EAAIwC,MAAQ,WACZxC,EAAIqC,WAAaA,EACjBrC,EAAIsC,SAAWA,EACftC,EAAIuC,WAAaA,EACjBvC,EAAIprL,MAAO,EAEX,IAAIutL,EAAW0U,GAASlzL,EAAGq8K,GA4B3B,YA1BuC,IAA5B2Y,EAAUI,eACnBJ,EAAUI,cAAc5hL,SAAQ,SAAS++F,EAAM8iF,GAC7C,GAAI9iF,EAAK6Q,QAAS,CAChBi5D,EAAIl1L,KAAOorH,EAAK6Q,QAChBi5D,EAAI59L,EAAIu2M,EAAUJ,QAAUI,EAAUF,MAAQE,EAAUJ,QAAU,EAClEvY,EAAIx3L,EAAImwM,EAAUG,SAASE,GAAKxwM,EAAIi+L,EAAYC,EAChD1G,EAAIwC,MAAQ,WACZxC,EAAIoC,OAAS,SACbpC,EAAImE,OAAS,SACbnE,EAAIoP,OAAQ,EACZpP,EAAIqC,WAAaA,EACjBrC,EAAIsC,SAAWA,EACftC,EAAIuC,WAAaA,EACjBvC,EAAIprL,KAAO+jM,EAAU/jM,KACrButL,EAAW0U,GAASlzL,EAAGq8K,GACvB,IAAIiZ,EAAgB50M,KAAKuE,MACvBu5L,EACGz9L,KAAI,SAAAmrG,GAAE,OAAKA,EAAG/5F,SAAW+5F,GAAI,GAAG,GAAGmoC,UAAU3lH,UAC7CzuB,QAAO,SAACwwF,EAAK86F,GAAN,OAAe96F,EAAM86F,MAEjCypB,EAAUG,SAASE,GAAK3mL,QAAU4mL,GAAiBxS,EAAYC,OAKrEiS,EAAUtmL,OAAShuB,KAAKuE,MAAM+vM,EAAUE,MAAQF,EAAUH,QACnD70L,GA8MPu1L,mBAtMgC,SAAS5hC,EAAMh3H,GAC9Bo2J,GAASp/B,EAAM,CAC9Bl1K,EAAGk+C,EAAOi4J,OACV/vM,EAAG83C,EAAOk4J,OACVpmL,MAAOkuB,EAAOm4J,MAAQn4J,EAAOi4J,OAC7BlmL,OAAQiuB,EAAOu4J,MAAQv4J,EAAOk4J,OAC9B3qK,KAAMyS,EAAOzS,KACb20J,MAAO,SAEA9vL,SA8LTymM,gBAzL6B,SAAS7hC,GACtCA,EACG5sK,OAAO,QACPA,OAAO,UACPC,KAAK,KAAM,aACXA,KAAK,OAAQ,GACbA,KAAK,OAAQ,GACbA,KAAK,cAAe,GACpBA,KAAK,eAAgB,GACrBA,KAAK,SAAU,QACfD,OAAO,QACPC,KAAK,IAAK,qBA+KbyuM,qBA1KkC,SAAS9hC,GAC3CA,EACG5sK,OAAO,QACPA,OAAO,UACPC,KAAK,KAAM,kBACXA,KAAK,OAAQ,IACbA,KAAK,OAAQ,IACbA,KAAK,cAAe,IACpBA,KAAK,eAAgB,IACrBA,KAAK,SAAU,QACfD,OAAO,UACPC,KAAK,KAAM,IACXA,KAAK,KAAM,IACXA,KAAK,IAAK,IA8Jb0uM,qBAxJkC,SAAS/hC,GAC3C,IACMz9E,EADOy9E,EAAK5sK,OAAO,QAEtBA,OAAO,UACPC,KAAK,KAAM,aACXA,KAAK,cAAe,IACpBA,KAAK,eAAgB,GACrBA,KAAK,SAAU,QACfA,KAAK,OAAQ,IACbA,KAAK,OAAQ,GAGhBkvF,EACGnvF,OAAO,QACPC,KAAK,OAAQ,SACbA,KAAK,SAAU,WACfwF,MAAM,mBAAoB,QAC1BxF,KAAK,eAAgB,OACrBA,KAAK,IAAK,qBAGbkvF,EACGnvF,OAAO,QACPC,KAAK,OAAQ,QACbA,KAAK,SAAU,WACfwF,MAAM,mBAAoB,QAC1BxF,KAAK,eAAgB,OACrBA,KAAK,IAAK,4BA8Hb2sM,cACAC,gB,mBC5iBE+B,QAAYxpL,EACZypL,GAAS,GACTC,GAAW,GACTC,GAAQ,GACVx/G,GAAQ,GACRy/G,IAAe,EACfC,IAAyB,EACzBC,IAAc,EAMLC,GAAW,SAAS/uL,EAAIzqB,EAAMu6E,GAEzC,IAAMk/H,EAAMP,GAAOzuL,GACfgvL,GAAOz5M,IAASy5M,EAAIz5M,MAAuB,MAAfu6E,IAGb,MAAfA,GAA2C,MAApBA,EAAY9vE,OACrC8vE,EAAc,CAAE9vE,KAAMzK,EAAMuU,KAAM,OAGpC2kM,GAAOzuL,GAAM,CACXzqB,KAAMA,EACNu6E,YAAaA,EAAY9vE,KACzB8J,UAA4Bkb,IAArB8qD,EAAYhmE,MAAsBmlM,QAAiBn/H,EAAYhmE,KACtE0kM,UAAWA,IAETA,IAAaC,GAAOD,MACtBC,GAAOD,IAAWU,UAAYlvL,GAGhCwuL,GAAYxuL,IAGRmvL,GAAkB,SAAA3+C,GACtB,IAAIx7J,EACAwF,EAAQ,EACZ,IAAKxF,EAAI,EAAGA,EAAI05M,GAASr3M,OAAQrC,IAE3B05M,GAAS15M,GAAGyM,OAASyuE,GAASC,cAC5Bu+H,GAAS15M,GAAG+6C,KAAKqgC,QAAUogF,GAC7Bh2J,IAGAk0M,GAAS15M,GAAGyM,OAASyuE,GAASG,YAC5Bq+H,GAAS15M,GAAG+6C,KAAKqgC,QAAUogF,GAC7Bh2J,IAIN,OAAOA,GAaI40M,GAAY,SACvBC,EACAC,GAGA,IAFArzE,EAEA,uDAFU,CAAEj8H,UAAMglB,EAAWlb,UAAMkb,GACnCuqL,EACA,uCACA,GAAIA,IAAgBr/H,GAASG,WAAY,CACvC,IAAMymH,EAAMqY,GAAgBE,EAAOj/H,OACnC,GAAI0mH,EAAM,EAAG,CAEX,IAAI/7L,EAAQ,IAAIkG,MAAM,iDAAmDouM,EAAOj/H,MAAQ,KAQxF,MAPAr1E,EAAMq5E,KAAO,CACXp0E,KAAM,OACN64B,MAAO,OACP/4B,KAAM,IACN61E,IAAK,CAAEC,WAAY,EAAGC,UAAW,EAAGC,aAAc,EAAGC,YAAa,GAClER,SAAU,CAAC,yBAEPx6E,GAUV,OAPA2zM,GAASryM,KAAK,CACZ0zC,KAAMs/J,EACNr/J,GAAIs/J,EACJrzE,QAASA,EAAQj8H,KACjB8J,UAAwBkb,IAAjBi3G,EAAQnyH,MAAsBmlM,QAAiBhzE,EAAQnyH,KAC9DrI,KAAM8tM,KAED,GA+BIN,GAAW,kBAAMH,IAwBjB5+H,GAAW,CACtB4B,MAAO,EACPC,OAAQ,EACRy9H,KAAM,EACNx9H,YAAa,EACbC,aAAc,EACdL,WAAY,EACZC,YAAa,EACbtB,WAAY,GACZC,SAAU,GACVO,UAAW,GACXM,SAAU,GACVL,QAAS,GACTJ,UAAW,GACXC,QAAS,GACTV,aAAc,GACdE,WAAY,GACZa,UAAW,GACXE,QAAS,GACTD,QAAS,GACTV,WAAY,GACZC,SAAU,IAcC++H,GAAU,SAASr/H,EAAOkB,EAAW2qD,GAChD,IAAMl6B,EAAO,CACX3xB,MAAOA,EACPkB,UAAWA,EACX2qD,QAASA,EAAQj8H,KACjB8J,UAAwBkb,IAAjBi3G,EAAQnyH,MAAsBmlM,QAAiBhzE,EAAQnyH,MAI1D2kM,EAAS,GAAG7sM,OAAOwuE,EAAOA,GAEhCu+H,GAAMtyM,KAAK0lG,GACX2sG,GAASryM,KAAK,CACZ0zC,KAAM0+J,EAAO,GACbz+J,GAAIy+J,EAAO,GACXxyE,QAASA,EAAQj8H,KACjB8J,UAAwBkb,IAAjBi3G,EAAQnyH,MAAsBmlM,QAAiBhzE,EAAQnyH,KAC9DrI,KAAMyuE,GAASs/H,KACfl+H,UAAWA,KAIFkwC,GAAW,SAASkuF,GAC/BvgH,GAAQugH,EAAU1vM,KAClB4uM,QAAmC5pL,IAAnB0qL,EAAU5lM,MAAsBmlM,QAAiBS,EAAU5lM,MAoE9D,IACbilM,YACAY,WA9NwB,SAASN,EAAQC,EAAMrzE,EAAS2zE,GACxDlB,GAASryM,KAAK,CACZ0zC,KAAMs/J,EACNr/J,GAAIs/J,EACJrzE,QAASA,EAAQj8H,KACjB8J,UAAwBkb,IAAjBi3G,EAAQnyH,MAAsBmlM,QAAiBhzE,EAAQnyH,KAC9D8lM,OAAQA,KAyNVR,aACAH,YACAY,QAhKqB,SAASC,GAC9BhB,GAAcgB,GAgKd9/H,sBAtKmC,WACnC6+H,IAAyB,GAsKzBzS,oBApKiC,kBAAMyS,IAqKvCkB,YA3LyB,WACzB,OAAOrB,IA2LPsB,UAxLuB,WACvB,OAAOvB,IAwLPwB,SAtLsB,SAASjwL,GAC/B,OAAOyuL,GAAOzuL,IAsLdkwL,aApL0B,WAC1B,OAAOx6M,OAAOyyB,KAAKsmL,KAoLnB0B,SAlLsB,WACtB,OAAOhhH,IAkLPjd,eAvR4B,SAASk+H,EAAWzxM,EAAS8C,GACzD4uM,GAAWn+H,eAAek+H,EAAWzxM,EAAS8C,IAuR9C89L,UAAW,kBAAMC,EAAUD,YAAYjE,UACvCgV,gBAlL6B,WAC7B,OAAO1B,IAkLPzjL,MArKmB,WACnBsjL,GAAS,GACTC,GAAW,IAoKX3+H,aAjK0B,SAASoE,GACnC,IAAMwuH,EAAOxuH,EAAI7yE,OACX26H,EAAU,CACdj8H,KAAM2iM,EAAK7pK,QAAQ,oBAAqB,IAAIx3B,OAC5CwI,KACsC,OAApC64L,EAAKr3L,MAAM,qBACP67H,EAAOmuD,UAAUqN,IAASsM,KACG,OAA7BtM,EAAKr3L,MAAM,eAEoB,OAA/Bq3L,EAAKr3L,MAAM,iBAEX2jM,MAGR,OADAxa,EAAO76E,MAAM,gBAAiBqiB,GACvBA,GAoJP/rD,YACAqgI,UA1HuB,CACvBC,OAAQ,EACRC,KAAM,GAyHNl/H,UAtHuB,CACvBE,OAAQ,EACRC,QAAS,EACTF,KAAM,GAoHNi+H,WACAjuF,YACA5iH,MAxFmB,SAARA,EAAiB8xM,GAC5B,GAAIA,aAAiBr4M,MACnBq4M,EAAMrkL,SAAQ,SAAS++F,GACrBxsH,EAAMwsH,WAGR,OAAQslF,EAAMjvM,MACZ,IAAK,WACHstM,GAAS2B,EAAMtgI,MAAOsgI,EAAMtgI,MAAOsgI,EAAM5gI,aACzC,MACF,IAAK,cAGL,IAAK,YACHs/H,GAAUsB,EAAMtgI,WAAOprD,OAAWA,EAAW0rL,EAAMzgI,YACnD,MACF,IAAK,UACHw/H,GAAQiB,EAAMtgI,MAAOsgI,EAAMp/H,UAAWo/H,EAAM1wM,MAC5C,MACF,IAAK,aACHovM,GAAUsB,EAAM3gK,KAAM2gK,EAAM1gK,GAAI0gK,EAAM/+H,IAAK++H,EAAMzgI,YACjD,MACF,IAAK,YACHm/H,QAAUpqL,OAAWA,EAAW0rL,EAAMpgI,SAAUogI,EAAMzgI,YACtD,MACF,IAAK,UACHm/H,QAAUpqL,OAAWA,OAAWA,EAAW0rL,EAAMzgI,YACjD,MACF,IAAK,YACHm/H,QAAUpqL,OAAWA,EAAW0rL,EAAM91L,MAAO81L,EAAMzgI,YACnD,MACF,IAAK,UACHm/H,QAAUpqL,OAAWA,OAAWA,EAAW0rL,EAAMzgI,YACjD,MACF,IAAK,WACHm/H,QAAUpqL,OAAWA,EAAW0rL,EAAM//H,QAAS+/H,EAAMzgI,YACrD,MACF,IAAK,SACHm/H,QAAUpqL,OAAWA,OAAWA,EAAW0rL,EAAMzgI,YACjD,MACF,IAAK,WAGL,IAAK,OACHm/H,QAAUpqL,OAAWA,EAAW0rL,EAAM5/H,QAAS4/H,EAAMzgI,YACrD,MACF,IAAK,SACHm/H,QAAUpqL,OAAWA,OAAWA,EAAW0rL,EAAMzgI,YACjD,MACF,IAAK,WACHuxC,GAASkvF,EAAM1wM,MACf,MACF,IAAK,WAGL,IAAK,MACHovM,QAAUpqL,OAAWA,EAAW0rL,EAAMz/H,QAASy/H,EAAMzgI,YACrD,MACF,IAAK,SACHm/H,QAAUpqL,OAAWA,OAAWA,EAAW0rL,EAAMzgI,eC1QzDryC,UAAO8uC,GAAKikI,GAEZ,IAAM3hF,GAAO,GAEAx5E,GAAS,CACpB75C,KAAM,CACJ8xM,YAAQzoL,EACR2oL,WAAO3oL,EACP0oL,YAAQ1oL,EACR+oL,WAAO/oL,GAETsoL,YAAa,EACbsD,cAAe,GACfC,YAAa,GACbC,OAAQ,CACNC,UAAW,WACT,OACEx3M,KAAKG,IAAIkF,MACP,KACuB,IAAvBhK,KAAK65M,OAAOp3M,OAAe,CAAC,GAAKzC,KAAK65M,OAAO70M,KAAI,SAAAw2E,GAAK,OAAIA,EAAM7oD,QAAU,OAErD,IAAtB3yB,KAAKo8M,MAAM35M,OACR,EACAzC,KAAKo8M,MAAMp3M,KAAI,SAAAgxG,GAAE,OAAIA,EAAGrjF,QAAU,KAAGzuB,QAAO,SAACwwF,EAAKlwE,GAAN,OAAYkwE,EAAMlwE,OACxC,IAAzBxkB,KAAK85M,SAASr3M,OACX,EACAzC,KAAK85M,SAAS90M,KAAI,SAAAgxG,GAAE,OAAIA,EAAGrjF,QAAU,KAAGzuB,QAAO,SAACwwF,EAAKlwE,GAAN,OAAYkwE,EAAMlwE,OAC9C,IAAtBxkB,KAAK+5M,MAAMt3M,OACR,EACAzC,KAAK+5M,MAAM/0M,KAAI,SAAAgxG,GAAE,OAAIA,EAAGrjF,QAAU,KAAGzuB,QAAO,SAACwwF,EAAKlwE,GAAN,OAAYkwE,EAAMlwE,OAGtE+R,MAAO,WACLv2B,KAAK65M,OAAS,GACd75M,KAAKo8M,MAAQ,GACbp8M,KAAK85M,SAAW,GAChB95M,KAAK+5M,MAAQ,IAEfI,SAAU,SAASkC,GACjBr8M,KAAK65M,OAAOpyM,KAAK40M,IAEnBC,QAAS,SAASrD,GAChBj5M,KAAKo8M,MAAM30M,KAAKwxM,IAElB8B,WAAY,SAASwB,GACnBv8M,KAAK85M,SAASryM,KAAK80M,IAErB1B,QAAS,SAAS2B,GAChBx8M,KAAK+5M,MAAMtyM,KAAK+0M,IAElBC,UAAW,WACT,OAAOz8M,KAAK65M,OAAO75M,KAAK65M,OAAOp3M,OAAS,IAE1Ci6M,SAAU,WACR,OAAO18M,KAAKo8M,MAAMp8M,KAAKo8M,MAAM35M,OAAS,IAExCk6M,YAAa,WACX,OAAO38M,KAAK85M,SAAS95M,KAAK85M,SAASr3M,OAAS,IAE9Cm6M,SAAU,WACR,OAAO58M,KAAK+5M,MAAM/5M,KAAK+5M,MAAMt3M,OAAS,IAExCo3M,OAAQ,GACRuC,MAAO,GACPtC,SAAU,GACVC,MAAO,IAET5xK,KAAM,WACJnoC,KAAKg8M,cAAgB,GACrBh8M,KAAKi8M,YAAc,GACnBj8M,KAAKk8M,OAAO3lL,QACZv2B,KAAK+G,KAAO,CACV8xM,YAAQzoL,EACR2oL,WAAO3oL,EACP0oL,YAAQ1oL,EACR+oL,WAAO/oL,GAETpwB,KAAK04M,YAAc,EACnBmE,GAAQ7zK,UAAO8uC,GAAG6yH,cAEpBmS,UAAW,SAASzgH,EAAK16F,EAAKokF,EAAK4T,QACT,IAAb0C,EAAI16F,GACb06F,EAAI16F,GAAOokF,EAEXsW,EAAI16F,GAAOg4F,EAAI5T,EAAKsW,EAAI16F,KAG5Bo7M,aAAc,SAASlE,EAAQC,EAAQC,EAAOI,GAC5C,IAAM6D,EAAQh9M,KACVkiM,EAAM,EACV,SAAS+a,EAASpwM,GAChB,OAAO,SAA0B2pH,GAC/B0rE,IAEA,IAAMrgM,EAAIm7M,EAAMhB,cAAcv5M,OAASy/L,EAAM,EAE7C8a,EAAMF,UAAUtmF,EAAM,SAAUsiF,EAASj3M,EAAIu4H,GAAK2sE,UAAWpiM,KAAKE,KAClEm4M,EAAMF,UAAUtmF,EAAM,QAAS2iF,EAAQt3M,EAAIu4H,GAAK2sE,UAAWpiM,KAAKG,KAEhEk4M,EAAMF,UAAUl8J,GAAO75C,KAAM,SAAU8xM,EAASh3M,EAAIu4H,GAAK2sE,UAAWpiM,KAAKE,KACzEm4M,EAAMF,UAAUl8J,GAAO75C,KAAM,QAASgyM,EAAQl3M,EAAIu4H,GAAK2sE,UAAWpiM,KAAKG,KAExD,eAAT+H,IACJmwM,EAAMF,UAAUtmF,EAAM,SAAUqiF,EAASh3M,EAAIu4H,GAAK2sE,UAAWpiM,KAAKE,KAClEm4M,EAAMF,UAAUtmF,EAAM,QAASuiF,EAAQl3M,EAAIu4H,GAAK2sE,UAAWpiM,KAAKG,KAEhEk4M,EAAMF,UAAUl8J,GAAO75C,KAAM,SAAU+xM,EAASj3M,EAAIu4H,GAAK2sE,UAAWpiM,KAAKE,KACzEm4M,EAAMF,UAAUl8J,GAAO75C,KAAM,QAASoyM,EAAQt3M,EAAIu4H,GAAK2sE,UAAWpiM,KAAKG,OAK7E9E,KAAKg8M,cAAcvkL,QAAQwlL,KAC3Bj9M,KAAKi8M,YAAYxkL,QAAQwlL,EAAS,gBAEpC3xM,OAAQ,SAASutM,EAAQC,EAAQC,EAAOI,GACtC,IAAM+D,EAAUv4M,KAAKE,IAAIg0M,EAAQE,GAC3BoE,EAASx4M,KAAKG,IAAI+zM,EAAQE,GAC1BqE,EAAUz4M,KAAKE,IAAIi0M,EAAQK,GAC3BkE,EAAS14M,KAAKG,IAAIg0M,EAAQK,GAEhCn5M,KAAK88M,UAAUl8J,GAAO75C,KAAM,SAAUm2M,EAASv4M,KAAKE,KACpD7E,KAAK88M,UAAUl8J,GAAO75C,KAAM,SAAUq2M,EAASz4M,KAAKE,KACpD7E,KAAK88M,UAAUl8J,GAAO75C,KAAM,QAASo2M,EAAQx4M,KAAKG,KAClD9E,KAAK88M,UAAUl8J,GAAO75C,KAAM,QAASs2M,EAAQ14M,KAAKG,KAElD9E,KAAK+8M,aAAaG,EAASE,EAASD,EAAQE,IAE9CC,cAAe,SAASj2E,EAASk2E,EAAS1D,GACxC,IAAM2D,EAAY3D,EAAOxyE,EAAQlsF,KAAKqgC,OAChCiiI,EAAc9E,GAAiBtxE,EAAQlsF,KAAKqgC,OAAO/4E,QAAU,EAC7DC,EAAI86M,EAAU96M,EAAI86M,EAAU9qL,MAAQ,GAAM+qL,EAAc,GAAKrjF,GAAKusE,gBAAmB,EAC3F3mM,KAAKi8M,YAAYx0M,KAAK,CACpBoxM,OAAQn2M,EACRo2M,OAAQ94M,KAAK04M,YAAc,EAC3BK,MAAOr2M,EAAI03H,GAAKusE,gBAChBwS,WAAO/oL,EACPorD,MAAO6rD,EAAQlsF,KAAKqgC,MACpBo9H,SAAU8E,GAAQlF,cAAc+E,MAGpCI,cAAe,SAASt2E,GAEtB,IAAMu2E,EAAyB59M,KAAKi8M,YACjCj3M,KAAI,SAAS64M,GACZ,OAAOA,EAAWriI,SAEnB+hB,YAAY8pC,EAAQlsF,KAAKqgC,OAC5B,OAAOx7E,KAAKi8M,YAAY7pM,OAAOwrM,EAAwB,GAAG,IAE5DE,WAAY,WAA8E,IAArEvjH,EAAqE,uDAA7D,CAAE8sC,aAASj3G,EAAWlb,MAAM,EAAOwd,WAAOtC,GAAa+d,EAAM,uCACxF,MAAO,CACL0qK,YAAQzoL,EACR0oL,OAAQ94M,KAAK04M,YACbK,WAAO3oL,EACP+oL,WAAO/oL,EACPmqE,MAAOA,EAAM8sC,QACbnyH,KAAMqlF,EAAMrlF,KACZwd,MAAO6nE,EAAM7nE,MACbC,OAAQ,EACRwb,KAAMA,IAGV4vK,QAAS,WAA8E,IAArExjH,EAAqE,uDAA7D,CAAE8sC,aAASj3G,EAAWlb,MAAM,EAAOwd,WAAOtC,GAAa+d,EAAM,uCACrFnuC,KAAKg8M,cAAcv0M,KAAKzH,KAAK89M,WAAWvjH,EAAOpsD,KAEjD6vK,QAAS,WACP,OAAOh+M,KAAKg8M,cAAc10M,OAE5B22M,iBAAkB,SAAS52E,GACzB,IAAM62E,EAAOl+M,KAAKg8M,cAAc10M,MAChC42M,EAAK9E,SAAW8E,EAAK9E,UAAY,GACjC8E,EAAK7E,cAAgB6E,EAAK7E,eAAiB,GAC3C6E,EAAK9E,SAAS3xM,KAAK,CAAEqB,EAAG83C,GAAOu9J,iBAAkBxrL,OAAQ,IACzDurL,EAAK7E,cAAc5xM,KAAK4/H,GACxBrnI,KAAKg8M,cAAcv0M,KAAKy2M,IAE1BE,gBAAiB,SAASC,GACxBr+M,KAAK04M,YAAc14M,KAAK04M,YAAc2F,EACtCr+M,KAAK+G,KAAKoyM,MAAQn5M,KAAK04M,aAEzByF,eAAgB,WACd,OAAOn+M,KAAK04M,aAEd4F,UAAW,WACT,MAAO,CAAE19J,OAAQ5gD,KAAK+G,KAAMm1M,OAAQl8M,KAAKk8M,UAsMhCqC,GAAa,SAAShB,EAAS1D,EAAQ2E,EAAW9F,GAK7D,IAHA,IAAI+F,EAAY,EACZC,EAAa,EAERt+M,EAAI,EAAGA,EAAIo+M,EAAU/7M,OAAQrC,IAAK,CACzC,IAAMo7E,EAAQq+H,EAAO2E,EAAUp+M,IAG/Bo7E,EAAM9oD,MAAQ8oD,EAAM9oD,OAAS0nG,GAAK1nG,MAClC8oD,EAAM7oD,OAAShuB,KAAKG,IAAI02E,EAAM7oD,QAAUynG,GAAKznG,OAAQynG,GAAKznG,QAC1D6oD,EAAMqoH,OAASroH,EAAMqoH,QAAUzpE,GAAK0sE,YAEpCtrH,EAAM94E,EAAI+7M,EAAYC,EACtBljI,EAAM1yE,EAAI4vM,EAGVgF,GAAQnF,UAAUgF,EAAS/hI,EAAO4+C,IAClCx5E,GAAOt1C,OAAOkwE,EAAM94E,EAAGg2M,EAAal9H,EAAM94E,EAAI84E,EAAM9oD,MAAO8oD,EAAM7oD,QAEjE8rL,GAAajjI,EAAM9oD,MACnBgsL,GAAcljI,EAAMqoH,OACpBjjJ,GAAOs7J,OAAO/B,SAAS3+H,GAIzB56B,GAAOw9J,gBAAgBhkF,GAAKznG,SAGjBkqL,GAAU,SAASxM,GAC9BjO,EAAgBhoE,GAAMi2E,GAElBA,EAAI1N,aACNvoE,GAAKstE,gBAAkBttE,GAAKytE,eAAiBztE,GAAK6tE,kBAAoBoI,EAAI1N,YAExE0N,EAAIzN,WACNxoE,GAAKqtE,cAAgBrtE,GAAKwtE,aAAextE,GAAK4tE,gBAAkBqI,EAAIzN,UAElEyN,EAAIxN,aACNzoE,GAAKutE,gBAAkBvtE,GAAK0tE,eAAiB1tE,GAAK8tE,kBAAoBmI,EAAIxN,aAIxE8V,GAAmB,SAASn9H,GAChC,OAAO56B,GAAOq7J,YAAYtwM,QAAO,SAASkyM,GACxC,OAAOA,EAAWriI,QAAUA,MAI1BmjI,GAAmB,SAASnjI,EAAOq+H,GAEvC,IAAM+E,EAAW/E,EAAOr+H,GAClBygI,EAActD,GAAiBn9H,GAQrC,MAAO,CANMygI,EAAY/3M,QAAO,SAASwwF,EAAKmpH,GAC5C,OAAOl5M,KAAKE,IAAI6vF,EAAKmpH,EAAWhF,UAC/B+F,EAASl8M,EAAIk8M,EAASlsL,MAAQ,GACnBupL,EAAY/3M,QAAO,SAASwwF,EAAKmpH,GAC7C,OAAOl5M,KAAKG,IAAI4vF,EAAKmpH,EAAW9E,SAC/B6F,EAASl8M,EAAIk8M,EAASlsL,MAAQ,KAInC,SAASmsL,GAAwBC,EAAY/hI,EAAKgiI,EAAWC,EAAYC,GACvEr+J,GAAOw9J,gBAAgBW,GACvB,IAAIG,EAAeF,EACnB,GAAIjiI,EAAI3xD,IAAM2xD,EAAIsqD,SAAWy3E,EAAW/hI,EAAI3xD,IAAK,CAC/C,IAAI+zL,EAAYL,EAAW/hI,EAAI3xD,IAAIsH,MAC/B0sL,EAAWhlF,GAAKkuE,cACpBvrH,EAAIsqD,QAAUngC,EAAM+7F,UAAN,WAAoBlmH,EAAIsqD,QAAxB,KAAoC83E,EAAY,EAAI/kF,GAAK+tE,YAAaiX,GACpFriI,EAAIrqD,MAAQysL,EACZpiI,EAAI7nE,MAAO,EAGX,IAAMmqM,EAAWn4G,EAAMi9F,wBAAwBpnH,EAAIsqD,QAAS+3E,GACtDE,EAAc36M,KAAKG,IAAIu6M,EAAS1sL,OAAQynG,GAAKiuE,gBACnD6W,EAAeF,EAAaM,EAC5Bzf,EAAO76E,MAAP,UAAgBs6F,EAAhB,cAAiCviI,EAAIsqD,UAEvC43E,EAAUliI,GACVn8B,GAAOw9J,gBAAgBc,GAQlB,IA6ODK,GAA6B,SAAS1F,EAAQC,GAClD,IAAM0F,EAA0B,GA2FhC,OAzFA1F,EAASriL,SAAQ,SAASslD,GACxB,GAAI88H,EAAO98H,EAAI3hC,KAAOy+J,EAAO98H,EAAI5hC,MAAO,CACtC,IAAMqgC,EAAQq+H,EAAO98H,EAAI3hC,IAGzB,GAAI2hC,EAAIL,YAAc1zC,UAAO8uC,GAAG6E,UAAUE,SAAWrB,EAAMo+H,UACzD,OAIF,GAAI78H,EAAIL,YAAc1zC,UAAO8uC,GAAG6E,UAAUG,UAAYtB,EAAM8+H,UAC1D,OAGF,IAAMmF,OAA2BrvL,IAAlB2sD,EAAIL,UACbgjI,GAAaD,EAEbE,EAAWF,EAASrlF,GAAKmuE,WAAanuE,GAAKkuE,cAC7CsX,EAAiB7iI,EAAI7nE,KACrBgyF,EAAM+7F,UAAUlmH,EAAIsqD,QAASjN,GAAK1nG,MAAQ,EAAI0nG,GAAK+tE,YAAawX,GAChE5iI,EAAIsqD,QAEFw4E,EADoB34G,EAAMi9F,wBAAwByb,EAAgBD,GACjCjtL,MAAQ,EAAI0nG,GAAK+tE,YAkBpDuX,GAAa3iI,EAAI5hC,OAASqgC,EAAM8+H,UAClCkF,EAAwBziI,EAAI3hC,IAAMz2C,KAAKG,IACrC06M,EAAwBziI,EAAI3hC,KAAO,EACnCykK,GAEOH,GAAa3iI,EAAI5hC,OAASqgC,EAAMo+H,UACzC4F,EAAwBziI,EAAI5hC,MAAQx2C,KAAKG,IACvC06M,EAAwBziI,EAAI5hC,OAAS,EACrC0kK,GAEOH,GAAa3iI,EAAI5hC,OAAS4hC,EAAI3hC,IACvCokK,EAAwBziI,EAAI5hC,MAAQx2C,KAAKG,IACvC06M,EAAwBziI,EAAI5hC,OAAS,EACrC0kK,EAAe,GAGjBL,EAAwBziI,EAAI3hC,IAAMz2C,KAAKG,IACrC06M,EAAwBziI,EAAI3hC,KAAO,EACnCykK,EAAe,IAER9iI,EAAIL,YAAc1zC,UAAO8uC,GAAG6E,UAAUG,QAC/C0iI,EAAwBziI,EAAI5hC,MAAQx2C,KAAKG,IACvC06M,EAAwBziI,EAAI5hC,OAAS,EACrC0kK,GAEO9iI,EAAIL,YAAc1zC,UAAO8uC,GAAG6E,UAAUE,OAC/C2iI,EAAwBhkI,EAAMo+H,WAAaj1M,KAAKG,IAC9C06M,EAAwBhkI,EAAMo+H,YAAc,EAC5CiG,GAEO9iI,EAAIL,YAAc1zC,UAAO8uC,GAAG6E,UAAUC,OAC3CpB,EAAMo+H,YACR4F,EAAwBhkI,EAAMo+H,WAAaj1M,KAAKG,IAC9C06M,EAAwBhkI,EAAMo+H,YAAc,EAC5CiG,EAAe,IAIfrkI,EAAM8+H,YACRkF,EAAwBziI,EAAI5hC,MAAQx2C,KAAKG,IACvC06M,EAAwBziI,EAAI5hC,OAAS,EACrC0kK,EAAe,SAOzBhgB,EAAO76E,MAAM,2BAA4Bw6F,GAClCA,GAaHM,GAAwB,SAASjG,EAAQkG,GAC7C,IAAItoB,EAAY,EAmBhB,IAAK,IAAIuoB,KAlBTl/M,OAAOyyB,KAAKsmL,GAAQpiL,SAAQ,SAAA6gJ,GAC1B,IAAM98F,EAAQq+H,EAAOvhC,GACjB98F,EAAMtmE,OACRsmE,EAAMN,YAAcgsB,EAAM+7F,UACxBznH,EAAMN,YACNk/C,GAAK1nG,MAAQ,EAAI0nG,GAAK+tE,YACtB/tE,GAAKouE,cAGT,IAAMyX,EAAU/4G,EAAMi9F,wBAAwB3oH,EAAMN,YAAak/C,GAAKouE,aACtEhtH,EAAM9oD,MAAQ8oD,EAAMtmE,KAChBklH,GAAK1nG,MACL/tB,KAAKG,IAAIs1H,GAAK1nG,MAAOutL,EAAQvtL,MAAQ,EAAI0nG,GAAK+tE,aAElD3sH,EAAM7oD,OAAS6oD,EAAMtmE,KAAOvQ,KAAKG,IAAIm7M,EAAQttL,OAAQynG,GAAKznG,QAAUynG,GAAKznG,OACzE8kK,EAAY9yL,KAAKG,IAAI2yL,EAAWj8G,EAAM7oD,WAGnBotL,EAAqB,CACxC,IAAMvkI,EAAQq+H,EAAOmG,GAErB,GAAKxkI,EAAL,CAIA,IAAM8+H,EAAYT,EAAOr+H,EAAM8+H,WAG/B,GAAKA,EAAL,CAIA,IACM4F,EADeH,EAAoBC,GACP5lF,GAAK0sE,YAActrH,EAAM9oD,MAAQ,EAAI4nL,EAAU5nL,MAAQ,EAEzF8oD,EAAMqoH,OAASl/L,KAAKG,IAAIo7M,EAAY9lF,GAAK0sE,eAG3C,OAAOniM,KAAKG,IAAI2yL,EAAWr9D,GAAKznG,SA8H5BwtL,GAAsB,SAASrG,EAAUD,GAC7C,IAEI7xL,EAASw0L,EAAWD,EAFlBH,EAAQ,GACRhwI,EAAQ,GAiGd,OA9FA0tI,EAASriL,SAAQ,SAASslD,GAExB,OADAA,EAAI3xD,GAAK87E,EAAM1+F,OAAO,CAAE/F,OAAQ,KACxBs6E,EAAIlwE,MACV,KAAKm8B,UAAO8uC,GAAGwD,SAASK,WACxB,KAAK3yC,UAAO8uC,GAAGwD,SAASa,UACxB,KAAKnzC,UAAO8uC,GAAGwD,SAASU,UACxB,KAAKhzC,UAAO8uC,GAAGwD,SAASgB,UACtBlQ,EAAM3kE,KAAK,CACT2jB,GAAI2xD,EAAI3xD,GACR2xD,IAAKA,EAAIsqD,QACTlsF,KAAMhM,OAAOixK,iBACbhlK,GAAIjM,OAAOkxK,iBACX3tL,MAAO,IAET,MACF,KAAKsW,UAAO8uC,GAAGwD,SAASmB,SACxB,KAAKzzC,UAAO8uC,GAAGwD,SAASkB,QAClBO,EAAIsqD,UACNr/G,EAAUokD,EAAM9kE,MAChB80M,EAAMp0L,EAAQoD,IAAMpD,EACpBo0L,EAAMr/H,EAAI3xD,IAAMpD,EAChBokD,EAAM3kE,KAAKugB,IAEb,MACF,KAAKghB,UAAO8uC,GAAGwD,SAASM,SACxB,KAAK5yC,UAAO8uC,GAAGwD,SAASc,QACxB,KAAKpzC,UAAO8uC,GAAGwD,SAASW,QACxB,KAAKjzC,UAAO8uC,GAAGwD,SAASiB,QACtBv0D,EAAUokD,EAAM9kE,MAChB80M,EAAMp0L,EAAQoD,IAAMpD,EACpB,MACF,KAAKghB,UAAO8uC,GAAGwD,SAASC,aAEpB,IAAMiiI,EAAY3D,EAAO98H,EAAI5hC,KAAO4hC,EAAI5hC,KAAKqgC,MAAQuB,EAAI3hC,GAAGogC,OACtDiiI,EAAc9E,GAAiB57H,EAAI5hC,KAAO4hC,EAAI5hC,KAAKqgC,MAAQuB,EAAI3hC,GAAGogC,OAAO/4E,OACzEC,EACJ86M,EAAU96M,EAAI86M,EAAU9qL,MAAQ,GAAM+qL,EAAc,GAAKrjF,GAAKusE,gBAAmB,EAC7E2Z,EAAQ,CACZzH,OAAQn2M,EACRq2M,MAAOr2M,EAAI03H,GAAKusE,gBAChBnrH,MAAOuB,EAAI5hC,KAAKqgC,MAChB+kI,SAAS,GAEX3/J,GAAOq7J,YAAYx0M,KAAK64M,GAE1B,MACF,KAAKt3K,UAAO8uC,GAAGwD,SAASG,WAEpB,IAAMmiI,EAAyBh9J,GAAOq7J,YACnCj3M,KAAI,SAAA5C,GAAC,OAAIA,EAAEo5E,SACX+hB,YAAYxgB,EAAI5hC,KAAKqgC,cACjB56B,GAAOq7J,YAAY7pM,OAAOwrM,EAAwB,GAAG,QAIjCxtL,IAAlB2sD,EAAIL,WAEjB8/H,EAzLiB,SAASz/H,EAAK88H,GACnC,IAAIhB,EAASgB,EAAO98H,EAAI5hC,MAAMz4C,EAC1Bq2M,EAAQc,EAAO98H,EAAI3hC,IAAI14C,EACvB89M,EAAazjI,EAAI7nE,MAAQ6nE,EAAIsqD,QAE7Bo5E,EAAiBv5G,EAAMi9F,wBACzBqc,EAAat5G,EAAM+7F,UAAUlmH,EAAIsqD,QAASjN,GAAK1nG,MAAO0nG,GAAKmuE,YAAcxrH,EAAIsqD,QAC7EjN,GAAKmuE,YAEHiU,EAAY,CACd9pL,MAAO8tL,EACHpmF,GAAK1nG,MACL/tB,KAAKG,IAAIs1H,GAAK1nG,MAAO+tL,EAAe/tL,MAAQ,EAAI0nG,GAAK6sE,YACzDt0K,OAAQ,EACRkmL,OAAQgB,EAAO98H,EAAI5hC,MAAMz4C,EACzBq2M,MAAO,EACPD,OAAQ,EACRK,MAAO,EACP9xE,QAAStqD,EAAIsqD,SAoDf,OAlDItqD,EAAIL,YAAc1zC,UAAO8uC,GAAG6E,UAAUG,SACxC0/H,EAAU9pL,MAAQ8tL,EACd77M,KAAKG,IAAIs1H,GAAK1nG,MAAO+tL,EAAe/tL,OACpC/tB,KAAKG,IACH+0M,EAAO98H,EAAI5hC,MAAMzoB,MAAQ,EAAImnL,EAAO98H,EAAI3hC,IAAI1oB,MAAQ,EACpD+tL,EAAe/tL,MAAQ,EAAI0nG,GAAK6sE,YAEtCuV,EAAU3D,OAASA,GAAUgB,EAAO98H,EAAI5hC,MAAMzoB,MAAQ0nG,GAAK0sE,aAAe,GACjE/pH,EAAIL,YAAc1zC,UAAO8uC,GAAG6E,UAAUE,QAC/C2/H,EAAU9pL,MAAQ8tL,EACd77M,KAAKG,IAAIs1H,GAAK1nG,MAAO+tL,EAAe/tL,MAAQ,EAAI0nG,GAAK6sE,YACrDtiM,KAAKG,IACH+0M,EAAO98H,EAAI5hC,MAAMzoB,MAAQ,EAAImnL,EAAO98H,EAAI3hC,IAAI1oB,MAAQ,EACpD+tL,EAAe/tL,MAAQ,EAAI0nG,GAAK6sE,YAEtCuV,EAAU3D,OAASA,EAAS2D,EAAU9pL,OAASmnL,EAAO98H,EAAI5hC,MAAMzoB,MAAQ0nG,GAAK0sE,aAAe,GACnF/pH,EAAI3hC,KAAO2hC,EAAI5hC,MACxBslK,EAAiBv5G,EAAMi9F,wBACrBqc,EACIt5G,EAAM+7F,UACJlmH,EAAIsqD,QACJ1iI,KAAKG,IAAIs1H,GAAK1nG,MAAOmnL,EAAO98H,EAAI5hC,MAAMzoB,OACtC0nG,GAAKmuE,YAEPxrH,EAAIsqD,QACRjN,GAAKmuE,YAEPiU,EAAU9pL,MAAQ8tL,EACd77M,KAAKG,IAAIs1H,GAAK1nG,MAAOmnL,EAAO98H,EAAI5hC,MAAMzoB,OACtC/tB,KAAKG,IAAI+0M,EAAO98H,EAAI5hC,MAAMzoB,MAAO0nG,GAAK1nG,MAAO+tL,EAAe/tL,MAAQ,EAAI0nG,GAAK6sE,YACjFuV,EAAU3D,OAASA,GAAUgB,EAAO98H,EAAI5hC,MAAMzoB,MAAQ8pL,EAAU9pL,OAAS,IAEzE8pL,EAAU9pL,MACR/tB,KAAK4B,IAAIsyM,EAASgB,EAAO98H,EAAI5hC,MAAMzoB,MAAQ,GAAKqmL,EAAQc,EAAO98H,EAAI3hC,IAAI1oB,MAAQ,IAC/E0nG,GAAK0sE,YACP0V,EAAU3D,OACRA,EAASE,EACLF,EAASgB,EAAO98H,EAAI5hC,MAAMzoB,MAAQ,EAAI0nG,GAAK0sE,YAAc,EACzDiS,EAAQc,EAAO98H,EAAI3hC,IAAI1oB,MAAQ,EAAI0nG,GAAK0sE,YAAc,GAE1D0Z,IACFhE,EAAUn1E,QAAUngC,EAAM+7F,UACxBlmH,EAAIsqD,QACJm1E,EAAU9pL,MAAQ,EAAI0nG,GAAK+tE,YAC3B/tE,GAAKmuE,aAGT1I,EAAO76E,MAAP,cACSw3F,EAAU3D,OADnB,YAC6B2D,EAAUzD,MADvC,YACgDyD,EAAU1D,OAD1D,YACoE0D,EAAUrD,MAD9E,YACuFqD,EAAU9pL,MADjG,YAC0G8pL,EAAU7pL,OADpH,YAC8HoqD,EAAIsqD,QADlI,MAGOm1E,EAmHSkE,CAAe3jI,EAAK88H,GAChC98H,EAAIy/H,UAAYA,EAChBpwI,EAAM30C,SAAQ,SAAAkpL,IACZ34L,EAAU24L,GACFxlK,KAAOx2C,KAAKE,IAAImjB,EAAQmzB,KAAMqhK,EAAU3D,QAChD7wL,EAAQozB,GAAKz2C,KAAKG,IAAIkjB,EAAQozB,GAAIohK,EAAU3D,OAAS2D,EAAU9pL,OAC/D1K,EAAQ0K,MACN/tB,KAAKG,IAAIkjB,EAAQ0K,MAAO/tB,KAAK4B,IAAIyhB,EAAQmzB,KAAOnzB,EAAQozB,KAAOg/E,GAAKguE,mBAGxEmU,EA1HoB,SAASx/H,EAAK88H,GACtC,IAAIp2H,GAAU,EAad,GAXE,CACEz6C,UAAO8uC,GAAGwD,SAAS0B,WACnBh0C,UAAO8uC,GAAGwD,SAAS2B,YACnBj0C,UAAO8uC,GAAGwD,SAAS4B,MACnBl0C,UAAO8uC,GAAGwD,SAAS6B,OACnBn0C,UAAO8uC,GAAGwD,SAAS8B,YACnBp0C,UAAO8uC,GAAGwD,SAAS+B,cACnBsjB,SAAS5jB,EAAIlwE,QAEf42E,GAAU,IAEPA,EACH,MAAO,GAET,IAAMm9H,EAAajC,GAAiB5hI,EAAI5hC,KAAM0+J,GACxCgH,EAAWlC,GAAiB5hI,EAAI3hC,GAAIy+J,GACpCiH,EAAUF,EAAW,IAAMC,EAAS,GAAK,EAAI,EAC7CE,EAAQH,EAAW,GAAKC,EAAS,GAAK,EAAI,EAC1CG,EAAYJ,EAAW5zM,OAAO6zM,GAC9BI,EAAet8M,KAAK4B,IAAIs6M,EAASE,GAASH,EAAWE,IACrDI,EAAUh6G,EAAMi9F,wBAAwBpnH,EAAIsqD,QAASjN,GAAKkuE,eAQhE,OAPIvrH,EAAI7nE,MAAQ6nE,EAAIsqD,UAClBtqD,EAAIsqD,QAAUngC,EAAM+7F,UAClBlmH,EAAIsqD,QACJ1iI,KAAKG,IAAIm8M,EAAe,EAAI7mF,GAAK+tE,YAAa/tE,GAAK1nG,OACnD0nG,GAAKkuE,gBAGF,CACL51K,MAAO/tB,KAAKG,IACVi4E,EAAI7nE,KAAO,EAAIgsM,EAAQxuL,MAAQ,EAAI0nG,GAAK+tE,YACxC8Y,EAAe,EAAI7mF,GAAK+tE,YACxB/tE,GAAK1nG,OAEPC,OAAQ,EACRkmL,OAAQ+H,EAAWE,GACnB/H,MAAO8H,EAASE,GAChBjI,OAAQ,EACRK,MAAO,EACP9xE,QAAStqD,EAAIsqD,QACbx6H,KAAMkwE,EAAIlwE,KACVqI,KAAM6nE,EAAI7nE,KACV0rM,WAAYj8M,KAAKE,IAAImF,MAAM,KAAMg3M,GACjCH,SAAUl8M,KAAKG,IAAIkF,MAAM,KAAMg3M,IA4ElBG,CAAkBpkI,EAAK88H,GAClC98H,EAAIw/H,SAAWA,EACXA,EAAS1D,QAAU0D,EAASxD,OAAS3sI,EAAM3pE,OAAS,GACtD2pE,EAAM30C,SAAQ,SAAAkpL,GAEZ,GADA34L,EAAU24L,EACNpE,EAAS1D,SAAW0D,EAASxD,MAAO,CACtC,IAAI59J,EAAO0+J,EAAO98H,EAAI5hC,MAClBC,EAAKy+J,EAAO98H,EAAI3hC,IACpBpzB,EAAQmzB,KAAOx2C,KAAKE,IAClBs2C,EAAKz4C,EAAI65M,EAAS7pL,MAAQ,EAC1ByoB,EAAKz4C,EAAIy4C,EAAKzoB,MAAQ,EACtB1K,EAAQmzB,MAEVnzB,EAAQozB,GAAKz2C,KAAKG,IAAIs2C,EAAG14C,EAAI65M,EAAS7pL,MAAQ,EAAG0oB,EAAG14C,EAAIy4C,EAAKzoB,MAAQ,EAAG1K,EAAQozB,IAChFpzB,EAAQ0K,MACN/tB,KAAKG,IAAIkjB,EAAQ0K,MAAO/tB,KAAK4B,IAAIyhB,EAAQozB,GAAKpzB,EAAQmzB,OAASi/E,GAAKguE,mBAEtEpgL,EAAQmzB,KAAOx2C,KAAKE,IAAI03M,EAAS1D,OAAQ7wL,EAAQmzB,MACjDnzB,EAAQozB,GAAKz2C,KAAKG,IAAIy3M,EAASxD,MAAO/wL,EAAQozB,IAC9CpzB,EAAQ0K,MAAQ/tB,KAAKG,IAAIkjB,EAAQ0K,MAAO6pL,EAAS7pL,OAAS0nG,GAAKguE,qBAMzExnJ,GAAOq7J,YAAc,GACrBpc,EAAO76E,MAAM,oBAAqBo3F,GAC3BA,GAGM,IACbx7J,UACA29J,cACA1B,WACA30I,KAtmBkB,SAAS98D,EAAMggB,GACjC4d,UAAO8uC,GAAGvhD,QACVyS,UAAO8uC,GAAGmjI,QAAQ7gF,GAAKllH,MACvB8zB,UAAOvc,MAAMrhB,EAAO,MACpBw1C,GAAOzY,OACP03J,EAAO76E,MAAP,YAAkB5iF,KAAKC,UAAU+3F,GAAM,KAAM,KAE7C,IAAMmjF,EAAUpyM,iBAAO,QAAD,OAASigB,EAAT,OAGhByuL,EAAS7wK,UAAO8uC,GAAGsjI,YACnBoD,EAAYx1K,UAAO8uC,GAAGwjI,eACtBxB,EAAW9wK,UAAO8uC,GAAGqjI,cACrB5gH,EAAQvxD,UAAO8uC,GAAGyjI,WAElBiE,EAA0BD,GAA2B1F,EAAQC,GACnE1/E,GAAKznG,OAASmtL,GAAsBjG,EAAQ2F,GAE5CjB,GAAWhB,EAAS1D,EAAQ2E,EAAW,GACvC,IAAMM,EAAaqB,GAAoBrG,EAAUD,EAAQ2F,GAGzD9B,GAAQjE,gBAAgB8D,GACxBG,GAAQ/D,qBAAqB4D,GAC7BG,GAAQhE,qBAAqB6D,GAoB7B,IAAI6D,EAAgB,EACpBtH,EAASriL,SAAQ,SAASslD,GACxB,IAAIk8H,EAAWuD,EAAWD,EAE1B,OAAQx/H,EAAIlwE,MACV,KAAKm8B,UAAO8uC,GAAGwD,SAASs/H,KACtB4B,EAAYz/H,EAAIy/H,UAvUP,SAAS5kC,EAAM4kC,GAC9B57J,GAAOw9J,gBAAgBhkF,GAAK2sE,WAC5ByV,EAAU7pL,OAASynG,GAAK2sE,UACxByV,EAAU1D,OAASl4J,GAAOu9J,iBAC1B,IAAM11L,EAAOi1L,GAAQ7F,cACrBpvL,EAAK/lB,EAAI85M,EAAU3D,OACnBpwL,EAAK3f,EAAI0zM,EAAU1D,OACnBrwL,EAAKiK,MAAQ8pL,EAAU9pL,OAAS0nG,GAAK1nG,MACrCjK,EAAKq6K,MAAQ,OAEb,IAAI7+K,EAAI2zJ,EAAK5sK,OAAO,KACdksM,EAAWwG,GAAQ1G,SAAS/yL,EAAGwE,GAC/B+7K,EAAUkZ,GAAQ9F,aACxBpT,EAAQ9hM,EAAI85M,EAAU3D,OACtBrU,EAAQ17L,EAAI0zM,EAAU1D,OACtBtU,EAAQ9xK,MAAQjK,EAAKiK,MACrB8xK,EAAQlvK,GAAK,MACbkvK,EAAQp5L,KAAOoxM,EAAUn1E,QACzBm9D,EAAQ1B,MAAQ,WAChB0B,EAAQ7B,WAAavoE,GAAKytE,eAC1BrD,EAAQ5B,SAAWxoE,GAAKwtE,aACxBpD,EAAQ3B,WAAazoE,GAAK0tE,eAC1BtD,EAAQ9B,OAAStoE,GAAK2tE,UACtBvD,EAAQxB,WAAa5oE,GAAK6sE,WAC1BzC,EAAQC,OAASrqE,GAAK2tE,UACtBvD,EAAQtvL,MAAO,EAEf,IAAIutL,EAAW0U,GAASlzL,EAAGugL,GAEvB8E,EAAa3kM,KAAKuE,MACpBu5L,EAASz9L,KAAI,SAAAmrG,GAAE,OAAKA,EAAG/5F,SAAW+5F,GAAI,GAAG,GAAGmoC,UAAU3lH,UAAQzuB,QAAO,SAACwwF,EAAK86F,GAAN,OAAe96F,EAAM86F,MAG5F0nB,EAASjsM,KAAK,SAAUq+L,EAAa,EAAIlvE,GAAK6sE,YAC9CuV,EAAU7pL,QAAU22K,EAAa,EAAIlvE,GAAK6sE,WAC1CrmJ,GAAOw9J,gBAAgB9U,EAAa,EAAIlvE,GAAK6sE,YAC7CuV,EAAUrD,MAAQqD,EAAU1D,OAASxP,EAAa,EAAIlvE,GAAK6sE,WAC3DuV,EAAUzD,MAAQyD,EAAU3D,OAASpwL,EAAKiK,MAC1CkuB,GAAOt1C,OAAOkxM,EAAU3D,OAAQ2D,EAAU1D,OAAQ0D,EAAUzD,MAAOyD,EAAUrD,OAC7Ev4J,GAAOs7J,OAAOrB,QAAQ2B,GAiShB6E,CAAS9D,EAASf,GAClB,MACF,KAAKxzK,UAAO8uC,GAAGwD,SAASC,aACtB36B,GAAO08J,cAAcvgI,EAAKwgI,EAAS1D,GACnC,MACF,KAAK7wK,UAAO8uC,GAAGwD,SAASG,YA9B5B,SAAmBsB,EAAK27H,GACtB,IAAM4I,EAAiB1gK,GAAO+8J,cAAc5gI,GACxCukI,EAAexI,OAAS,GAAKJ,IAC/B4I,EAAexI,OAASJ,EAAc,EACtCA,GAAe,IAEjBgF,GAAQjF,eACN8E,EACA+D,EACA5I,EACAt+E,GACAu+E,GAAiB57H,EAAI5hC,KAAKqgC,OAAO/4E,QAGnCm+C,GAAOt1C,OAAOg2M,EAAezI,OAAQH,EAAc,GAAI4I,EAAevI,MAAOL,GAiBzE6I,CAAUxkI,EAAKn8B,GAAOu9J,kBACtB,MACF,KAAKn1K,UAAO8uC,GAAGwD,SAASK,WACtBkjI,GACEC,EACA/hI,EACAq9C,GAAK2sE,UACL3sE,GAAK2sE,UAAY3sE,GAAK4sE,eACtB,SAAA3/D,GAAO,OAAIzmF,GAAOm9J,QAAQ12E,MAE5B,MACF,KAAKr+F,UAAO8uC,GAAGwD,SAASM,SACtBq9H,EAAYr4J,GAAOo9J,UACnBN,GAAQ1E,SAASuE,EAAStE,EAAW,OAAQ7+E,IAC7Cx5E,GAAOw9J,gBAAgBnF,EAAUE,MAAQv4J,GAAOu9J,kBAChDv9J,GAAOs7J,OAAOI,QAAQrD,GACtB,MACF,KAAKjwK,UAAO8uC,GAAGwD,SAASO,WACtBgjI,GAAwBC,EAAY/hI,EAAKq9C,GAAK2sE,UAAW3sE,GAAK2sE,WAAW,SAAA1/D,GAAO,OAC9EzmF,GAAOm9J,aAAQ3tL,EAAWi3G,EAAQA,YAEpC,MACF,KAAKr+F,UAAO8uC,GAAGwD,SAASQ,SACtBm9H,EAAYr4J,GAAOo9J,UACnBN,GAAQlE,mBAAmB+D,EAAStE,GACpCr4J,GAAOs7J,OAAOI,QAAQrD,GACtBr4J,GAAOw9J,gBAAgBnF,EAAUE,MAAQv4J,GAAOu9J,kBAChD,MACF,KAAKn1K,UAAO8uC,GAAGwD,SAASU,UACtB6iI,GACEC,EACA/hI,EACAq9C,GAAK2sE,UACL3sE,GAAK2sE,UAAY3sE,GAAK4sE,eACtB,SAAA3/D,GAAO,OAAIzmF,GAAOm9J,QAAQ12E,MAE5B,MACF,KAAKr+F,UAAO8uC,GAAGwD,SAASW,QACtBg9H,EAAYr4J,GAAOo9J,UACnBN,GAAQ1E,SAASuE,EAAStE,EAAW,MAAO7+E,IAC5Cx5E,GAAOw9J,gBAAgBnF,EAAUE,MAAQv4J,GAAOu9J,kBAChDv9J,GAAOs7J,OAAOI,QAAQrD,GACtB,MACF,KAAKjwK,UAAO8uC,GAAGwD,SAASa,UACtB0iI,GACEC,EACA/hI,EACAq9C,GAAK2sE,UACL3sE,GAAK2sE,UAAY3sE,GAAK4sE,eACtB,SAAA3/D,GAAO,OAAIzmF,GAAOm9J,QAAQ12E,MAE5B,MACF,KAAKr+F,UAAO8uC,GAAGwD,SAASmB,SACtBoiI,GACEC,EACA/hI,EACAq9C,GAAK2sE,UAAY3sE,GAAK4sE,cACtB5sE,GAAK2sE,WACL,SAAA1/D,GAAO,OAAIzmF,GAAOq9J,iBAAiB52E,MAErC,MACF,KAAKr+F,UAAO8uC,GAAGwD,SAASc,QACtB68H,EAAYr4J,GAAOo9J,UACnBN,GAAQ1E,SAASuE,EAAStE,EAAW,MAAO7+E,IAC5Cx5E,GAAOw9J,gBAAgBnF,EAAUE,MAAQv4J,GAAOu9J,kBAChDv9J,GAAOs7J,OAAOI,QAAQrD,GACtB,MACF,KAAKjwK,UAAO8uC,GAAGwD,SAASgB,UACtBuiI,GACEC,EACA/hI,EACAq9C,GAAK2sE,UACL3sE,GAAK2sE,UAAY3sE,GAAK4sE,eACtB,SAAA3/D,GAAO,OAAIzmF,GAAOm9J,QAAQ12E,MAE5B,MACF,KAAKr+F,UAAO8uC,GAAGwD,SAASkB,QACtBqiI,GACEC,EACA/hI,EACAq9C,GAAK2sE,UAAY3sE,GAAK4sE,cACtB5sE,GAAK2sE,WACL,SAAA1/D,GAAO,OAAIzmF,GAAOq9J,iBAAiB52E,MAErC,MACF,KAAKr+F,UAAO8uC,GAAGwD,SAASiB,QACtB08H,EAAYr4J,GAAOo9J,UACnBN,GAAQ1E,SAASuE,EAAStE,EAAW,MAAO7+E,IAC5Cx5E,GAAOw9J,gBAAgBnF,EAAUE,MAAQv4J,GAAOu9J,kBAChDv9J,GAAOs7J,OAAOI,QAAQrD,GACtB,MACF,QACE,KAEEsD,EAAWx/H,EAAIw/H,UACNzD,OAASl4J,GAAOu9J,iBACzB5B,EAAS6E,cAAgBA,EA/Xf,SAASn9L,EAAGs4L,GAC9B37J,GAAOw9J,gBAAgB,IADiB,IAEhCvF,EAA8D0D,EAA9D1D,OAAQE,EAAsDwD,EAAtDxD,MAAOD,EAA+CyD,EAA/CzD,OAAQzxE,EAAuCk1E,EAAvCl1E,QAASx6H,EAA8B0vM,EAA9B1vM,KAAMu0M,EAAwB7E,EAAxB6E,cAAelsM,EAASqnM,EAATrnM,KACvDujC,EAAQ85F,EAAOouD,YAAYt5D,GAAS5kI,OACtC48M,EAAWn4G,EAAMi9F,wBAAwB98D,EAASjN,GAAKkuE,eACrDhE,EAAa+a,EAAS1sL,OAAS8lB,EACrC8jK,EAAS5pL,QAAU2xK,EAEnB1jJ,GAAOw9J,gBAAgB9Z,GACvB,IAAME,EAAUkZ,GAAQ9F,aACxBpT,EAAQ9hM,EAAIm2M,EACZrU,EAAQ17L,EAAIgwM,EAAS,GACrBtU,EAAQ9xK,MAAQqmL,EAAQF,EACxBrU,EAAQ1B,MAAQ,cAChB0B,EAAQlvK,GAAK,MACbkvK,EAAQp5L,KAAOi8H,EACfm9D,EAAQ7B,WAAavoE,GAAK6tE,kBAC1BzD,EAAQ5B,SAAWxoE,GAAK4tE,gBACxBxD,EAAQ3B,WAAazoE,GAAK8tE,kBAC1B1D,EAAQ9B,OAAStoE,GAAK+sE,aACtB3C,EAAQC,OAASrqE,GAAK+sE,aACtB3C,EAAQxB,WAAa5oE,GAAK+tE,YAC1B3D,EAAQkL,OAAQ,EAChBlL,EAAQtvL,KAAOA,EAEfiiM,GAASlzL,EAAGugL,GAEZ,IAIIt5L,EAAMs2M,EAJNlC,EAAcD,EAAS1sL,OAAS,GAEhC8uL,EAAYpC,EAAS3sL,MAGzB,GAAImmL,IAAWE,EAAO,CACpByI,EAAa5gK,GAAOu9J,iBAAmBmB,EACnCllF,GAAKmtE,YACPr8L,EAAO+Y,EACJjZ,OAAO,QACPC,KACC,IAHG,aAIG4tM,EAJH,YAIa2I,EAJb,cAI6B3I,EAC9Bl0M,KAAKG,IAAIs1H,GAAK1nG,MAAQ,EAAG+uL,EAAY,GALpC,cAK4CD,EAAa,GALzD,cAKiE3I,KAGxEyG,GAAellF,GAAK2sE,UAEpBya,EAAa5gK,GAAOu9J,iBAAmBmB,EACvCp0M,EAAO+Y,EACJjZ,OAAO,QACPC,KACC,IACA,KACE4tM,EACA,IACA2I,EACA,OACC3I,EAAS,IACV,KACC2I,EAAa,IACd,KACC3I,EAAS,IACV,KACC2I,EAAa,IACd,IACA3I,EACA,KACC2I,EAAa,MAItBlC,GAAe,GACf,IAAMjqL,EAAK1wB,KAAKG,IAAI28M,EAAY,EAAGrnF,GAAK1nG,MAAQ,GAChDkuB,GAAOt1C,OACLutM,EAASxjL,EACTurB,GAAOu9J,iBAAmB,GAAKmB,EAC/BvG,EAAQ1jL,EACRurB,GAAOu9J,iBAAmB,GAAKmB,QAGjCA,GAAellF,GAAK2sE,UACpBya,EAAa5gK,GAAOu9J,iBAAmBmB,GACvCp0M,EAAO+Y,EAAEjZ,OAAO,SACXC,KAAK,KAAM4tM,GAChB3tM,EAAKD,KAAK,KAAMu2M,GAChBt2M,EAAKD,KAAK,KAAM8tM,GAChB7tM,EAAKD,KAAK,KAAMu2M,GAChB5gK,GAAOt1C,OAAOutM,EAAQ2I,EAAa,GAAIzI,EAAOyI,GAK9C30M,IAASm8B,UAAO8uC,GAAGwD,SAAS6B,QAC5BtwE,IAASm8B,UAAO8uC,GAAGwD,SAAS+B,cAC5BxwE,IAASm8B,UAAO8uC,GAAGwD,SAAS2B,aAE5B/xE,EAAKuF,MAAM,mBAAoB,QAC/BvF,EAAKD,KAAK,QAAS,iBAEnBC,EAAKD,KAAK,QAAS,gBAGrB,IAAI+2H,EAAM,GACN5H,GAAKksE,sBAQPtkE,GADAA,GANAA,EACExsH,OAAOk+D,SAAS+iI,SAChB,KACAjhM,OAAOk+D,SAASgjI,KAChBlhM,OAAOk+D,SAASijI,SAChBnhM,OAAOk+D,SAASkjI,QACR1yK,QAAQ,MAAO,QACfA,QAAQ,MAAO,QAG3Bh5B,EAAKD,KAAK,eAAgB,GAC1BC,EAAKD,KAAK,SAAU,QACpBC,EAAKuF,MAAM,OAAQ,QACf5D,IAASm8B,UAAO8uC,GAAGwD,SAAS4B,OAASrwE,IAASm8B,UAAO8uC,GAAGwD,SAAS6B,QACnEjyE,EAAKD,KAAK,aAAc,OAAS+2H,EAAM,eAGrCn1H,IAASm8B,UAAO8uC,GAAGwD,SAAS8B,aAAevwE,IAASm8B,UAAO8uC,GAAGwD,SAAS+B,cACzEnyE,EAAKD,KAAK,aAAc,OAAS+2H,EAAM,gBAIrC+5E,GAAWvU,uBAAyBptE,GAAKotE,uBAC3Ct8L,EAAKD,KAAK,eAAgB,OAAS+2H,EAAM,oBACzC/9G,EAAEjZ,OAAO,QACNC,KAAK,IAAK4tM,GACV5tM,KAAK,IAAKu2M,EAAa,GACvBv2M,KAAK,cAAe,cACpBA,KAAK,YAAa,QAClBA,KAAK,cAAe,UACpBA,KAAK,aAAc,QACnBA,KAAK,QAAS,kBACdG,KAAKg2M,IAEVxgK,GAAOw9J,gBAAgBkB,GACvB/C,EAAS5pL,QAAU2sL,EACnB/C,EAASpD,MAAQoD,EAASzD,OAASyD,EAAS5pL,OAC5CiuB,GAAOt1C,OAAOixM,EAASqE,WAAYrE,EAASzD,OAAQyD,EAASsE,SAAUtE,EAASpD,OAqPxEuI,CAAYnE,EAAShB,GACrB37J,GAAOs7J,OAAOnB,WAAWwB,GACzB,MAAOnyL,GACPy1K,EAAO15L,MAAM,8BAA+BikB,IAKhD,CACE4e,UAAO8uC,GAAGwD,SAAS0B,WACnBh0C,UAAO8uC,GAAGwD,SAAS2B,YACnBj0C,UAAO8uC,GAAGwD,SAAS4B,MACnBl0C,UAAO8uC,GAAGwD,SAAS6B,OACnBn0C,UAAO8uC,GAAGwD,SAAS8B,YACnBp0C,UAAO8uC,GAAGwD,SAAS+B,cACnBsjB,SAAS5jB,EAAIlwE,OAEfu0M,OAIAhnF,GAAKgtE,eAEPxmJ,GAAOw9J,gBAAiC,EAAjBhkF,GAAK2sE,WAC5BwX,GAAWhB,EAAS1D,EAAQ2E,EAAW59J,GAAOu9J,mBAlLX,IAqLrBwD,EAAQ/gK,GAAO09J,YAAvB19J,OAGRi/I,EAAO76E,MAAM,kCAAoC55F,EAAK,gBACnC3gB,oBAAU,IAAM2gB,EAAK,gBAC7BngB,KAAK,KAAM02M,EAAIxI,OAE1B,IAAIxmL,EAASgvL,EAAIxI,MAAQwI,EAAI7I,OAAS,EAAI1+E,GAAKysE,eAC3CzsE,GAAKgtE,eACPz0K,EAASA,EAASynG,GAAK2sE,UAAY3sE,GAAKitE,iBAG1C,IAAM30K,EAAQivL,EAAI5I,MAAQ4I,EAAI9I,OAAS,EAAIz+E,GAAKwsE,eAE5CrsG,GACFgjH,EACGvyM,OAAO,QACPI,KAAKmvF,GACLtvF,KAAK,KAAM02M,EAAI5I,MAAQ4I,EAAI9I,QAAU,EAAI,EAAIz+E,GAAKwsE,gBAClD37L,KAAK,KAAM,IAGZmvH,GAAKktE,aACPiW,EAAQtyM,KAAK,SAAU,QACvBsyM,EAAQtyM,KAAK,QAAS,QACtBsyM,EAAQtyM,KAAK,QAAS,aAAeynB,EAAQ,SAG7C6qL,EAAQtyM,KAAK,SAAU0nB,GACvB4qL,EAAQtyM,KAAK,QAASynB,IAExB,IAAMkvL,EAAoBrnH,EAAQ,GAAK,EACvCgjH,EAAQtyM,KACN,UACA02M,EAAI9I,OACFz+E,GAAKwsE,eACL,MACCxsE,GAAKysE,eAAiB+a,GACvB,IACAlvL,EACA,KACCC,EAASivL,IAEd/hB,EAAO76E,MAAP,UAAwBpkE,GAAOs7J,U,0WCzrBjC,IA6VI2F,GACAC,GA9VAC,GAAa,GACb9Y,GAAa,GACb+Y,GAAc,GACdC,GAAW,GACX1nH,GAAQ,GACR6+G,GAAW,GACX8I,GAAQ,GACRC,GAAiB,GACfnqC,GAAO,CAAC,SAAU,OAAQ,OAAQ,aACpCozB,GAAO,GACPgX,IAAoB,EAGpBC,GAAY,EA2FVC,GAAgB,SAAS1/K,EAAMm/K,EAAYE,GAC/C,OAAIr/K,EAAKm6E,cAAgB,GAAKklG,EAASr1M,QAAQ,aAAe,IAG1Dq1M,EAASr1M,QAAQg2B,EAAK34B,OAAO,QAAQyZ,gBAAkB,GAGpDu+L,EAASr1M,QAAQg2B,EAAK34B,OAAO83M,EAAWr1M,UAAY,IAGvD61M,GAAiB,SAASvgD,EAAM+/C,EAAYE,GAChD,GAAKA,EAASx/M,SAAUu/J,EAAKwgD,cAA7B,CACA,IAAIC,EAAYziB,IAAOh+B,EAAKygD,UAAWV,GAAY,GACnDU,EAAU3wM,IAAI,EAAG,KACjB,IAAI4wM,EAAU1iB,IAAOh+B,EAAK0gD,QAASX,GAAY,GAC3CY,EAAgBC,GAAaH,EAAWC,EAASX,EAAYE,GACjEjgD,EAAK0gD,QAAUA,EAAQ5kG,SACvBkkD,EAAK2gD,cAAgBA,IAGjBC,GAAe,SAASH,EAAWC,EAASX,EAAYE,GAG5D,IAFA,IAAI/mG,GAAU,EACVynG,EAAgB,KACbF,GAAaC,GACbxnG,IACHynG,EAAgBD,EAAQ5kG,WAE1B5C,EAAUonG,GAAcG,EAAWV,EAAYE,KAE7CS,EAAQ5wM,IAAI,EAAG,KAEjB2wM,EAAU3wM,IAAI,EAAG,KAEnB,OAAO6wM,GAGHE,GAAe,SAASC,EAAUf,EAAYxiI,GAClDA,EAAMA,EAAI7yE,OAGV,IACMq2M,EADK,uBACep/L,KAAK47D,EAAI7yE,QAEnC,GAAuB,OAAnBq2M,EAAyB,CAE3B,IAAIC,EAAmB,KAcvB,GAbAD,EAAe,GAAGp2M,MAAM,KAAK8qB,SAAQ,SAASrM,GAC5C,IAAI42I,EAAOihD,GAAa73L,QACJ,IAAT42I,IACJghD,EAGChhD,EAAK0gD,QAAUM,EAAiBN,UAClCM,EAAmBhhD,GAHrBghD,EAAmBhhD,MASpBghD,EAKH,OAAOA,EAAiBN,QAJxB,IAAM/rG,EAAK,IAAI1vF,KAEf,OADA0vF,EAAGxgD,SAAS,EAAG,EAAG,EAAG,GACdwgD,EAOX,IAAIusG,EAAQljB,IAAOzgH,EAAKwiI,EAAWr1M,QAAQ,GAC3C,OAAIw2M,EAAM7zG,UACD6zG,EAAMplG,UAEb+hF,EAAO76E,MAAM,gBAAkBzlC,GAC/BsgH,EAAO76E,MAAM,oBAAsB+8F,EAAWr1M,QAIzC,IAAIua,OAGPk8L,GAAiB,SAASC,EAAmB7tG,GACjD,GAA0B,OAAtB6tG,EACF,OAAQA,EAAkB,IACxB,IAAK,IACH7tG,EAAazjG,IAAIsxM,EAAkB,GAAI,WACvC,MACF,IAAK,IACH7tG,EAAazjG,IAAIsxM,EAAkB,GAAI,WACvC,MACF,IAAK,IACH7tG,EAAazjG,IAAIsxM,EAAkB,GAAI,SACvC,MACF,IAAK,IACH7tG,EAAazjG,IAAIsxM,EAAkB,GAAI,QACvC,MACF,IAAK,IACH7tG,EAAazjG,IAAIsxM,EAAkB,GAAI,SAK7C,OAAO7tG,EAAauI,UAGhBulG,GAAa,SAASP,EAAUf,EAAYxiI,EAAK+jI,GACrDA,EAAYA,IAAa,EACzB/jI,EAAMA,EAAI7yE,OAGV,IAAIw2M,EAAQljB,IAAOzgH,EAAKwiI,EAAWr1M,QAAQ,GAC3C,OAAIw2M,EAAM7zG,WACJi0G,GACFJ,EAAMpxM,IAAI,EAAG,KAERoxM,EAAMplG,UAGRqlG,GAAe,oBAAoBx/L,KAAK47D,EAAI7yE,QAASszL,IAAO8iB,KAGjES,GAAU,EACRC,GAAU,SAASC,GACvB,YAAqB,IAAVA,EAEF,QADPF,IAAoB,GAGfE,GAwHLC,GAAW,GACTC,GAAS,GAgCFV,GAAe,SAAS73L,GACnC,IAAM80E,EAAMyjH,GAAOv4L,GACnB,OAAOs4L,GAASxjH,IAuBZ0jH,GAAe,WAwCnB,IAvCA,IAAMC,EAAc,SAAS3jH,GAC3B,IAAM8hE,EAAO0hD,GAASxjH,GAClBuiH,EAAY,GAChB,OAAQiB,GAASxjH,GAAK4qD,IAAI23D,UAAU51M,MAClC,IAAK,cACH,IAAMi3M,EAAWb,GAAajhD,EAAK+hD,YACnC/hD,EAAKygD,UAAYqB,EAASpB,QAC1B,MAEF,IAAK,gBACHD,EAAYI,GAAazyL,EAAW2xL,GAAY2B,GAASxjH,GAAK4qD,IAAI23D,UAAUuB,cAE1EN,GAASxjH,GAAKuiH,UAAYA,GAuBhC,OAlBIiB,GAASxjH,GAAKuiH,YAChBiB,GAASxjH,GAAKwiH,QAAUW,GACtBK,GAASxjH,GAAKuiH,UACdV,GACA2B,GAASxjH,GAAK4qD,IAAI43D,QAAQ37M,KAC1Bq7M,IAEEsB,GAASxjH,GAAKwiH,UAChBgB,GAASxjH,GAAK+jH,WAAY,EAC1BP,GAASxjH,GAAKsiH,cAAgBxiB,IAC5B0jB,GAASxjH,GAAK4qD,IAAI43D,QAAQ37M,KAC1B,cACA,GACAsoG,UACFkzG,GAAemB,GAASxjH,GAAM6hH,GAAYE,MAIvCyB,GAASxjH,GAAK+jH,WAGnBC,GAAe,EACV9jN,EAAI,EAAGA,EAAIsjN,GAASjhN,OAAQrC,IACnCyjN,EAAYzjN,GAEZ8jN,EAAeA,GAAgBR,GAAStjN,GAAG6jN,UAE7C,OAAOC,GA6BIh5F,GAAW,SAASugF,EAAKC,GACpCD,EAAI9+L,MAAM,KAAK8qB,SAAQ,SAASrM,GAC9B,IAAI+4L,EAAUlB,GAAa73L,QACJ,IAAZ+4L,GACTA,EAAQrZ,QAAQrjM,KAAKikM,OA8CrB0Y,GAAU,SAASh5L,EAAIi5L,GAC3BjZ,GAAK3jM,MAAK,WAER,IAAMmwK,EAAOrnK,SAAS9C,cAAT,eAA+B2d,EAA/B,OACA,OAATwsJ,GACFA,EAAKziK,iBAAiB,SAAS,WAC7BkvM,UAINjZ,GAAK3jM,MAAK,WAER,IAAMmwK,EAAOrnK,SAAS9C,cAAT,eAA+B2d,EAA/B,YACA,OAATwsJ,GACFA,EAAKziK,iBAAiB,SAAS,WAC7BkvM,WA6BO,IACb9tL,MAnjBmB,WACnB6iL,GAAW,GACX8I,GAAQ,GACRC,GAAiB,GACjB/W,GAAO,GACP7wG,GAAQ,GACRgpH,GAAU,EACV1B,QAAWzxL,EACX0xL,QAAa1xL,EACbszL,GAAW,GACX3B,GAAa,GACb9Y,GAAa,GACb+Y,GAAc,GACdC,GAAW,GACXG,IAAoB,EACpBC,GAAY,GAqiBZ91F,cAlhB2B,SAAS+zE,GACpCyhB,GAAazhB,GAkhBbgkB,cAvgB2B,WAC3B,OAAOvC,IAugBPv1F,wBAhhBqC,WACrC41F,IAAoB,GAghBpBmC,qBA7gBkC,WAClC,OAAOnC,IA6gBP31F,cAtiB2B,SAAS6zE,GACpC2I,GAAa3I,GAsiBbkkB,cAniB2B,WAC3B,OAAOvb,IAmiBPt8E,eAhiB4B,SAAS2zE,GACrC0hB,GAAc1hB,GAgiBdmkB,eA7hB4B,WAC5B,OAAOzC,IA6hBPp1F,SAlgBsB,SAAS0zE,GAC/B/lG,GAAQ+lG,GAkgBRib,SA/fsB,WACtB,OAAOhhH,IA+fPsyB,WA5fwB,SAASyzE,GACjC6hB,GAAiB7hB,EACjB8Y,GAAS3xM,KAAK64L,IA2fdokB,YAxfyB,WACzB,OAAOtL,IAwfPuL,SArfsB,WAItB,IAHA,IAAIC,EAAoBhB,KAEpBiB,EAAiB,GACbD,GAAqBC,EAFZ,IAGfD,EAAoBhB,KACpBiB,IAKF,OAFA3C,GAAQwB,IA6eR52F,QA/OqB,SAASsnF,EAAOrtM,GACrC,IAAMo9M,EAAU,CACdW,QAAS3C,GACTt1M,KAAMs1M,GACN8B,WAAW,EACXzB,eAAe,EACfG,cAAe,KACf73D,IAAK,CAAE/jJ,KAAMA,GACbi7J,KAAMoyC,EACNtJ,QAAS,IAELia,EAvEU,SAAShB,EAAYiB,GACrC,IAOMj+M,GANuB,MAAzBi+M,EAAQpjI,OAAO,EAAG,GACfojI,EAAQpjI,OAAO,EAAGojI,EAAQviN,QAE1BuiN,GAGSr4M,MAAM,KAEhBq1J,EAAO,GAGbijD,GAAYl+M,EAAMi7J,EAAMgW,IAExB,IAAK,IAAI53K,EAAI,EAAGA,EAAI2G,EAAKtE,OAAQrC,IAC/B2G,EAAK3G,GAAK2G,EAAK3G,GAAGsM,OAGpB,OAAQ3F,EAAKtE,QACX,KAAK,EACHu/J,EAAK52I,GAAKo4L,KACVxhD,EAAKygD,UAAY,CACf51M,KAAM,cACNue,GAAI24L,GAEN/hD,EAAK0gD,QAAU,CACb37M,KAAMA,EAAK,IAEb,MACF,KAAK,EACHi7J,EAAK52I,GAAKo4L,KACVxhD,EAAKygD,UAAY,CACf51M,KAAM,eACNm3M,UAAWj9M,EAAK,IAElBi7J,EAAK0gD,QAAU,CACb37M,KAAMA,EAAK,IAEb,MACF,KAAK,EACHi7J,EAAK52I,GAAKo4L,GAAQz8M,EAAK,IACvBi7J,EAAKygD,UAAY,CACf51M,KAAM,eACNm3M,UAAWj9M,EAAK,IAElBi7J,EAAK0gD,QAAU,CACb37M,KAAMA,EAAK,IAMjB,OAAOi7J,EAkBUkjD,CAAUpD,GAAY/6M,GACvCo9M,EAAQr5D,IAAI23D,UAAYsC,EAAStC,UACjC0B,EAAQr5D,IAAI43D,QAAUqC,EAASrC,QAC/ByB,EAAQ/4L,GAAK25L,EAAS35L,GACtB+4L,EAAQJ,WAAajC,GACrBqC,EAAQp4L,OAASg5L,EAASh5L,OAC1Bo4L,EAAQ5iI,KAAOwjI,EAASxjI,KACxB4iI,EAAQgB,KAAOJ,EAASI,KACxBhB,EAAQiB,UAAYL,EAASK,UAC7BjB,EAAQx5M,MAAQ03M,GAEhBA,KAEA,IAAMniH,EAAMwjH,GAASj8M,KAAK08M,GAE1BrC,GAAaqC,EAAQ/4L,GAErBu4L,GAAOQ,EAAQ/4L,IAAM80E,EAAM,GAoN3B+iH,gBACAoC,WA7MwB,SAASjR,EAAOrtM,GACxC,IAAMu+M,EAAU,CACdR,QAAS3C,GACTt1M,KAAMs1M,GACNjnI,YAAak5H,EACbpyC,KAAMoyC,EACNtJ,QAAS,IAELia,EAzJY,SAASjB,EAAUkB,GACrC,IAQMj+M,GANuB,MAAzBi+M,EAAQpjI,OAAO,EAAG,GACfojI,EAAQpjI,OAAO,EAAGojI,EAAQviN,QAE1BuiN,GAGSr4M,MAAM,KAEhBq1J,EAAO,GAGbijD,GAAYl+M,EAAMi7J,EAAMgW,IAExB,IAAK,IAAI53K,EAAI,EAAGA,EAAI2G,EAAKtE,OAAQrC,IAC/B2G,EAAK3G,GAAK2G,EAAK3G,GAAGsM,OAGpB,IAAI64M,EAAc,GAClB,OAAQx+M,EAAKtE,QACX,KAAK,EACHu/J,EAAK52I,GAAKo4L,KACVxhD,EAAKygD,UAAYqB,EAASpB,QAC1B6C,EAAcx+M,EAAK,GACnB,MACF,KAAK,EACHi7J,EAAK52I,GAAKo4L,KACVxhD,EAAKygD,UAAYI,GAAazyL,EAAW2xL,GAAYh7M,EAAK,IAC1Dw+M,EAAcx+M,EAAK,GACnB,MACF,KAAK,EACHi7J,EAAK52I,GAAKo4L,GAAQz8M,EAAK,IACvBi7J,EAAKygD,UAAYI,GAAazyL,EAAW2xL,GAAYh7M,EAAK,IAC1Dw+M,EAAcx+M,EAAK,GAWvB,OANIw+M,IACFvjD,EAAK0gD,QAAUW,GAAWrhD,EAAKygD,UAAWV,GAAYwD,EAAanD,IACnEpgD,EAAKwgD,cAAgBxiB,IAAOulB,EAAa,cAAc,GAAMl2G,UAC7DkzG,GAAevgD,EAAM+/C,GAAYE,KAG5BjgD,EA2GUwjD,CAAY3D,GAAU96M,GACvCu+M,EAAQ7C,UAAYsC,EAAStC,UAC7B6C,EAAQ5C,QAAUqC,EAASrC,QAC3B4C,EAAQl6L,GAAK25L,EAAS35L,GACtBk6L,EAAQv5L,OAASg5L,EAASh5L,OAC1Bu5L,EAAQ/jI,KAAOwjI,EAASxjI,KACxB+jI,EAAQH,KAAOJ,EAASI,KACxBG,EAAQF,UAAYL,EAASK,UAC7BvD,GAAWyD,EACXpD,GAAMz6M,KAAK69M,IA6LX54F,YAlhByB,SAAS4zE,GAClC2hB,GAAW3hB,EAAI58K,cAAc/W,MAAM,WAkhBnC84M,YA/gByB,WACzB,OAAOxD,IA+gBPz2F,cArC2B,SAASigF,EAAK3F,EAAc4f,GACvDja,EAAI9+L,MAAM,KAAK8qB,SAAQ,SAASrM,IArEd,SAASA,EAAI06K,EAAc4f,GAC7C,GAAkC,UAA9B/a,IAAYlK,oBAGY,IAAjBqF,EAAX,CAIA,IAAI6f,EAAU,GACd,GAA4B,iBAAjBD,EAA2B,CAEpCC,EAAUD,EAAa/4M,MAAM,iCAC7B,IAAK,IAAIvM,EAAI,EAAGA,EAAIulN,EAAQljN,OAAQrC,IAAK,CACvC,IAAIo2H,EAAOmvF,EAAQvlN,GAAGsM,OAGC,MAAnB8pH,EAAKp3D,OAAO,IAA+C,MAAjCo3D,EAAKp3D,OAAOo3D,EAAK/zH,OAAS,KACtD+zH,EAAOA,EAAK50C,OAAO,EAAG40C,EAAK/zH,OAAS,IAEtCkjN,EAAQvlN,GAAKo2H,GAKM,IAAnBmvF,EAAQljN,QACVkjN,EAAQl+M,KAAK2jB,QAIQ,IADT63L,GAAa73L,IAEzBg5L,GAAQh5L,GAAI,WACV87E,EAAM2+F,QAAN,MAAA3+F,EAAK,CAAS4+F,GAAT,UAA0B6f,SAuCjC9Y,CAAYzhL,EAAI06K,EAAc4f,MAEhCx6F,GAASugF,EAAK,cAkCdhgF,QAxIqB,SAASggF,EAAKma,GACnC,IAAIjgB,EAAUigB,EACoB,UAA9Bjb,IAAYlK,gBACdkF,EAAU5jE,sBAAY6jF,IAExBna,EAAI9+L,MAAM,KAAK8qB,SAAQ,SAASrM,QAEP,IADT63L,GAAa73L,IAEzBg5L,GAAQh5L,GAAI,WACV5V,OAAOqwM,KAAKlgB,EAAS,eAI3Bz6E,GAASugF,EAAK,cA4HdqB,cA5B2B,SAAShB,GACpCV,GAAK3zK,SAAQ,SAASkiE,GACpBA,EAAImyG,OA2BNqX,mBAGF,SAAS8B,GAAYl+M,EAAMi7J,EAAMgW,GAE/B,IADA,IAAI8tC,GAAa,EACVA,GACLA,GAAa,EACb9tC,EAAKvgJ,SAAQ,SAASn2B,GACpB,IACMykN,EAAQ,IAAIrsM,OADF,QAAUpY,EAAI,SAE1ByF,EAAK,GAAG2P,MAAMqvM,KAChB/jD,EAAK1gK,IAAK,EACVyF,EAAKM,MAAM,GACXy+M,GAAa,MC7lBrB98K,UAAO8uC,GAAKkuI,GAEZ,IAkBIr0L,GAlBEyoG,GAAO,CACXsuE,eAAgB,GAChBC,UAAW,GACXC,OAAQ,EACRC,WAAY,GACZod,aAAc,GACdnd,YAAa,GACbC,qBAAsB,GACtBnG,SAAU,GACVD,WAAY,6BAqcC,GAncQ,SAAS0N,GACjBvvM,OAAOyyB,KAAK88K,GAEpB54K,SAAQ,SAAS91B,GACpBy4H,GAAKz4H,GAAO0uM,EAAI1uM,OA+bL,GA3bK,SAASyJ,EAAMggB,GACjC4d,UAAO8uC,GAAGvhD,QACVyS,UAAOvc,MAAMrhB,GAEb,IAAMwsK,EAAOrnK,SAAS21M,eAAe96L,QAGpB,KAFjBuG,GAAIimJ,EAAKuuC,cAAcC,eAGrBz0L,GAAI,WAGuB,IAAlByoG,GAAKisF,WACd10L,GAAIyoG,GAAKisF,UAGX,IAAMC,EAAYt9K,UAAO8uC,GAAG6sI,WAGtBngM,EAAI8hM,EAAU7jN,QAAU23H,GAAKuuE,UAAYvuE,GAAKwuE,QAAU,EAAIxuE,GAAKyuE,WAEvEjxB,EAAK3nK,aAAa,SAAU,QAE5B2nK,EAAK3nK,aAAa,UAAW,OAAS0hB,GAAI,IAAMnN,GAiBhD,IAhBA,IAAMrV,EAAMhE,iBAAO,QAAD,OAASigB,EAAT,OAGZm7L,EAAYC,sBACf7/M,OAAO,CACN9B,cAAIyhN,GAAW,SAAS5lN,GACtB,OAAOA,EAAE+hN,aAEX39M,cAAIwhN,GAAW,SAAS5lN,GACtB,OAAOA,EAAEgiN,aAGZxvJ,WAAW,CAAC,EAAGvhC,GAAIyoG,GAAK0uE,YAAc1uE,GAAK6rF,eAE1CQ,EAAa,GAERrmN,EAAI,EAAGA,EAAIkmN,EAAU7jN,OAAQrC,IACpCqmN,EAAWh/M,KAAK6+M,EAAUlmN,GAAGyM,MAG/B,IAAM65M,EAAiBD,EAiYvB,SAASE,EAAUnpH,GAGjB,IAFA,IAAIp9F,EAAIo9F,EAAI/6F,OACN45F,EAAM,GACLj8F,GACLi8F,EAAImB,IAAMp9F,KAAOi8F,EAAImB,EAAIp9F,KAAO,GAAK,EAEvC,OAAOi8F,EArYToqH,EAiXA,SAAqBjpH,GAGnB,IAFA,IAAMhe,EAAO,GACPzjD,EAAS,GACN37B,EAAI,EAAGC,EAAIm9F,EAAI/6F,OAAQrC,EAAIC,IAAKD,EAClCo/E,EAAKv9E,eAAeu7F,EAAIp9F,MAE3Bo/E,EAAKge,EAAIp9F,KAAM,EACf27B,EAAOt0B,KAAK+1F,EAAIp9F,KAGpB,OAAO27B,EA3XI6qL,CAAYH,GAgBzBH,EAAUz+M,MAdV,SAAqBzF,EAAGC,GACtB,IAAMwkN,EAAQzkN,EAAEqgN,UACVqE,EAAQzkN,EAAEogN,UACZ1mL,EAAS,EAMb,OALI8qL,EAAQC,EACV/qL,EAAS,EACA8qL,EAAQC,IACjB/qL,GAAU,GAELA,KAmBT,SAAkBmmL,EAAO6E,EAAWC,GAClC,IAAMre,EAAYvuE,GAAKuuE,UACjBse,EAAMte,EAAYvuE,GAAKwuE,OACvBC,EAAazuE,GAAKyuE,WAClBC,EAAc1uE,GAAK0uE,YAENoe,wBAChBvgN,OAAO,CAAC,EAAG8/M,EAAWhkN,SACtB6C,MAAM,CAAC,UAAW,YAClBuoB,YAAYs5L,mBA8OjB,SAAkBC,EAAYC,EAAW11L,EAAGnN,GAC1C,IAAI8iM,EAAQt7M,qBAAWu6M,GACpB16M,UAAU2Y,EAAI6iM,EAAYjtF,GAAK2uE,sBAC/Bv/L,WAAWs2D,qBAAW92B,UAAO8uC,GAAG0sI,iBAAmBpqF,GAAK6uE,YAAc,aAEzE95L,EACGnE,OAAO,KACPC,KAAK,QAAS,QACdA,KAAK,YAAa,aAAem8M,EAAa,MAAQ5iM,EAAI,IAAM,KAChEjkB,KAAK+mN,GACL78M,UAAU,QACVgG,MAAM,cAAe,UACrBxF,KAAK,OAAQ,QACbA,KAAK,SAAU,QACfA,KAAK,YAAa,IAClBA,KAAK,KAAM,QA3Pds8M,CAASze,EAAaD,EAAYke,EAAWC,GAM/C,SAAmBQ,EAAUC,EAAQJ,EAAWD,EAAYM,EAAcC,EAAeh2L,GAEvFxiB,EACGnE,OAAO,KACPP,UAAU,QACV1D,KAAKygN,GACLz8M,QACAC,OAAO,QACPC,KAAK,IAAK,GACVA,KAAK,KAAK,SAASvK,EAAGN,GAGrB,OADIM,EAAEiK,MACK88M,EAASJ,EAAY,KAEjCp8M,KAAK,SAAS,WACb,OAAO0mB,EAAIyoG,GAAK6rF,aAAe,KAEhCh7M,KAAK,SAAUw8M,GACfx8M,KAAK,SAAS,SAASvK,GACtB,IAAK,IAAIN,EAAI,EAAGA,EAAIqmN,EAAWhkN,OAAQrC,IACrC,GAAIM,EAAEmM,OAAS45M,EAAWrmN,GACxB,MAAO,kBAAqBA,EAAIg6H,GAAK4uE,oBAGzC,MAAO,sBAIX,IAAM4e,EAAaz4M,EAChBnE,OAAO,KACPP,UAAU,QACV1D,KAAKygN,GACLz8M,QAEH68M,EACG58M,OAAO,QACPC,KAAK,MAAM,SAASvK,GACnB,OAAOA,EAAE0qB,MAEVngB,KAAK,KAAM,GACXA,KAAK,KAAM,GACXA,KAAK,KAAK,SAASvK,GAClB,OAAIA,EAAE0kN,UAEFmB,EAAU7lN,EAAE+hN,WACZ2E,EACA,IAAOb,EAAU7lN,EAAEgiN,SAAW6D,EAAU7lN,EAAE+hN,YAC1C,GAAMiF,EAGHnB,EAAU7lN,EAAE+hN,WAAa2E,KAEjCn8M,KAAK,KAAK,SAASvK,EAAGN,GAGrB,OADIM,EAAEiK,MACK88M,EAASJ,KAErBp8M,KAAK,SAAS,SAASvK,GACtB,OAAIA,EAAE0kN,UACGsC,EAEFnB,EAAU7lN,EAAEiiN,eAAiBjiN,EAAEgiN,SAAW6D,EAAU7lN,EAAE+hN,cAE9Dx3M,KAAK,SAAUy8M,GACfz8M,KAAK,oBAAoB,SAASvK,EAAGN,GACpC,OAEImmN,EAAU7lN,EAAE+hN,WACZ2E,EACA,IAAOb,EAAU7lN,EAAEgiN,SAAW6D,EAAU7lN,EAAE+hN,aAC1Cl+L,WACF,OACCnkB,EAAIqnN,EAASJ,EAAY,GAAMK,GAAcnjM,WAC9C,QAGHtZ,KAAK,SAAS,SAASvK,GACtB,IAEI4uM,EAAW,GACX5uM,EAAEoqM,QAAQroM,OAAS,IACrB6sM,EAAW5uM,EAAEoqM,QAAQ34L,KAAK,MAI5B,IADA,IAAI01M,EAAS,EACJznN,EAAI,EAAGA,EAAIqmN,EAAWhkN,OAAQrC,IACjCM,EAAEmM,OAAS45M,EAAWrmN,KACxBynN,EAASznN,EAAIg6H,GAAK4uE,qBAItB,IAAI8e,EAAY,GA+BhB,OA9BIpnN,EAAEqrB,OACArrB,EAAEykN,KACJ2C,GAAa,cAEbA,EAAY,UAELpnN,EAAE6gF,KAETumI,EADEpnN,EAAEykN,KACQ,YAEA,QAGVzkN,EAAEykN,OACJ2C,GAAa,SAIQ,IAArBA,EAAUrlN,SACZqlN,EAAY,SAGVpnN,EAAE0kN,YACJ0C,EAAY,cAAgBA,GAG9BA,GAAaD,EAzCD,QA2CZC,GAAa,IAAMxY,MAMvBsY,EACG58M,OAAO,QACPC,KAAK,MAAM,SAASvK,GACnB,OAAOA,EAAE0qB,GAAK,WAEfhgB,MAAK,SAAS1K,GACb,OAAOA,EAAEshK,QAEV/2J,KAAK,YAAamvH,GAAKwoE,UACvB33L,KAAK,KAAK,SAASvK,GAClB,IAAI8xE,EAAS+zI,EAAU7lN,EAAE+hN,WACrB/vI,EAAO6zI,EAAU7lN,EAAEiiN,eAAiBjiN,EAAEgiN,SACtChiN,EAAE0kN,YACJ5yI,GAAU,IAAO+zI,EAAU7lN,EAAEgiN,SAAW6D,EAAU7lN,EAAE+hN,YAAc,GAAMiF,GAEtEhnN,EAAE0kN,YACJ1yI,EAAOF,EAASk1I,GAElB,IAAMjG,EAAYzhN,KAAKs4I,UAAU5lH,MAGjC,OAAI+uL,EAAY/uI,EAAOF,EACjBE,EAAO+uI,EAAY,IAAMrnF,GAAK0uE,YAAcn3K,EACvC6gD,EAAS40I,EAAa,EAEtB10I,EAAO00I,EAAa,GAGrB10I,EAAOF,GAAU,EAAIA,EAAS40I,KAGzCn8M,KAAK,KAAK,SAASvK,EAAGN,GAGrB,OADIM,EAAEiK,MACK88M,EAASrtF,GAAKuuE,UAAY,GAAKvuE,GAAKwoE,SAAW,EAAI,GAAKykB,KAEpEp8M,KAAK,cAAey8M,GACpBz8M,KAAK,SAAS,SAASvK,GACtB,IAAM8xE,EAAS+zI,EAAU7lN,EAAE+hN,WACvB/vI,EAAO6zI,EAAU7lN,EAAEgiN,SACnBhiN,EAAE0kN,YACJ1yI,EAAOF,EAASk1I,GAElB,IAAMjG,EAAYzhN,KAAKs4I,UAAU5lH,MAE7B48K,EAAW,GACX5uM,EAAEoqM,QAAQroM,OAAS,IACrB6sM,EAAW5uM,EAAEoqM,QAAQ34L,KAAK,MAG5B,IAAI01M,EAAS,EACbrkI,QAAQv9E,IAAIm0H,IACZ,IAAK,IAAIh6H,EAAI,EAAGA,EAAIqmN,EAAWhkN,OAAQrC,IACjCM,EAAEmM,OAAS45M,EAAWrmN,KACxBynN,EAASznN,EAAIg6H,GAAK4uE,qBAItB,IAAI+e,EAAW,GA0Bf,OAzBIrnN,EAAEqrB,SAEFg8L,EADErnN,EAAEykN,KACO,iBAAmB0C,EAEnB,aAAeA,GAI1BnnN,EAAE6gF,KAEFwmI,EADErnN,EAAEykN,KACO4C,EAAW,gBAAkBF,EAE7BE,EAAW,YAAcF,EAGlCnnN,EAAEykN,OACJ4C,EAAWA,EAAW,YAAcF,GAIpCnnN,EAAE0kN,YACJ2C,GAAY,kBAIVtG,EAAY/uI,EAAOF,EACjBE,EAAO+uI,EAAY,IAAMrnF,GAAK0uE,YAAcn3K,EACvC29K,EAAW,uCAAyCuY,EAAS,IAAME,EAGxEzY,EACA,wCACAuY,EACA,IACAE,EACA,UACAtG,EAIGnS,EAAW,qBAAuBuY,EAAS,IAAME,EAAW,UAAYtG,KAtOrFuG,CAAU9F,EAAO+E,EAAKpe,EAAYC,EAAaH,EAAWsf,EAAYlB,GA6PxE,SAAoBU,EAAQJ,GAI1B,IAHA,IAAMa,EAAgB,GAClBC,EAAU,EAEL/nN,EAAI,EAAGA,EAAIqmN,EAAWhkN,OAAQrC,IACrC8nN,EAAc9nN,GAAK,CAACqmN,EAAWrmN,IA6FjBmnF,EA7F8Bk/H,EAAWrmN,GA6FnCo9F,EA7FuCkpH,EA8FtDC,EAAUnpH,GAAKjW,IAAS,IADjC,IAAkBA,EAAMiW,EA1FtBruF,EACGnE,OAAO,KACPP,UAAU,QACV1D,KAAKmhN,GACLn9M,QACAC,QAAO,SAAStK,GACf,IAAM6hC,EAAO7hC,EAAE,GAAGiM,MAAM4lI,EAAO0tD,gBACzB3qK,IAAOiN,EAAK9/B,OAAS,GAAK,EAE1BgtM,EAAWl/L,SAASgD,gBAAgB,6BAA8B,QACxEk8L,EAASx/L,aAAa,KAAMqlB,EAAK,MAEjC,IAAK,IAAIntB,EAAI,EAAGA,EAAIo6B,EAAK9/B,OAAQ0F,IAAK,CACpC,IAAMunM,EAAQn/L,SAASgD,gBAAgB,6BAA8B,SACrEm8L,EAAMz/L,aAAa,qBAAsB,WACzCy/L,EAAMz/L,aAAa,IAAK,MACpB9H,EAAI,GAAGunM,EAAMz/L,aAAa,KAAM,OACpCy/L,EAAMn9L,YAAcgwB,EAAKp6B,GACzBsnM,EAASphM,YAAYqhM,GAEvB,OAAOD,KAERxkM,KAAK,IAAK,IACVA,KAAK,KAAK,SAASvK,EAAGN,GACrB,KAAIA,EAAI,GAMN,OAAQM,EAAE,GAAK+mN,EAAU,EAAIJ,EAL7B,IAAK,IAAIl/M,EAAI,EAAGA,EAAI/H,EAAG+H,IAErB,OADAggN,GAAWD,EAAc9nN,EAAI,GAAG,GACxBM,EAAE,GAAK+mN,EAAU,EAAIU,EAAUV,EAASJ,KAMrDp8M,KAAK,SAAS,SAASvK,GACtB,IAAK,IAAIN,EAAI,EAAGA,EAAIqmN,EAAWhkN,OAAQrC,IACrC,GAAIM,EAAE,KAAO+lN,EAAWrmN,GACtB,MAAO,4BAA+BA,EAAIg6H,GAAK4uE,oBAGnD,MAAO,kBA3SXof,CAAWnB,EAAKpe,GA+SlB,SAAmBue,EAAYC,EAAW11L,EAAGnN,GAC3C,IAAMw9L,EAAcgE,GAAQvB,iBAC5B,GAAoB,QAAhBzC,EACF,OAGF,IAAMqG,EAASl5M,EAAInE,OAAO,KAAKC,KAAK,QAAS,SACvCq9M,EAAQ,IAAIrhM,KACZshM,EAAYF,EAAOr9M,OAAO,QAEhCu9M,EACGt9M,KAAK,KAAMs7M,EAAU+B,GAASlB,GAC9Bn8M,KAAK,KAAMs7M,EAAU+B,GAASlB,GAC9Bn8M,KAAK,KAAMmvH,GAAKsuE,gBAChBz9L,KAAK,KAAMuZ,EAAI41G,GAAKsuE,gBACpBz9L,KAAK,QAAS,SAEG,KAAhB+2M,GACFuG,EAAUt9M,KAAK,QAAS+2M,EAAY99K,QAAQ,KAAM,MAhUpDskL,CAAU1f,EAAaD,EAAYke,EAAWC,GA1BhDyB,CAASnC,EAAW30L,GAAGnN,QACM,IAAlB41G,GAAKisF,UACdzuC,EAAK3nK,aAAa,QAAS0hB,IAG7BxiB,EACGnE,OAAO,QACPI,KAAK49B,UAAO8uC,GAAGyjI,YACftwM,KAAK,IAAK0mB,GAAI,GACd1mB,KAAK,IAAKmvH,GAAKsuE,gBACfz9L,KAAK,QAAS,cCpGbyrG,GAASi0F,IAEX+d,GAAY,GACZ5d,GAAU,GACV6d,GAAe,EAEfvd,GAAO,GAELwd,GAAwB,SAASx9L,GACrC,IAAIy9L,EAAc,GACdnd,EAAYtgL,EAEhB,GAAIA,EAAGxe,QAAQ,KAAO,EAAG,CACvB,IAAID,EAAQye,EAAGze,MAAM,KACrB++L,EAAY/+L,EAAM,GAClBk8M,EAAcl8M,EAAM,GAGtB,MAAO,CAAE++L,UAAWA,EAAW7+L,KAAMg8M,IAQ1Bt9F,GAAW,SAASngG,GAC/B,IAAI09L,EAAUF,GAAsBx9L,QAEM,IAA/B0/K,GAAQge,EAAQpd,aAE3BZ,GAAQge,EAAQpd,WAAa,CAC3BtgL,GAAI09L,EAAQpd,UACZ7+L,KAAMi8M,EAAQj8M,KACdk8M,WAAY,GACZ9mK,QAAS,GACT+mK,QAAS,GACTC,YAAa,GACbC,MAxC0B,WAwCKJ,EAAQpd,UAAY,IAAMid,IAE3DA,OAQWQ,GAAc,SAAS/9L,GAElC,IADA,IAAMg+L,EAAYtoN,OAAOyyB,KAAKu3K,IACrB1qM,EAAI,EAAGA,EAAIgpN,EAAU3mN,OAAQrC,IACpC,GAAI0qM,GAAQse,EAAUhpN,IAAIgrB,KAAOA,EAC/B,OAAO0/K,GAAQse,EAAUhpN,IAAI8oN,OAuDtB32F,GAAY,SAASm5E,EAAW2d,GAC3C,IAAMC,EAAqBV,GAAsBld,GAAWA,UACtD6d,EAAWze,GAAQwe,GAEzB,GAAsB,iBAAXD,EAAqB,CAE9B,IAAMG,EAAeH,EAAO38M,OAExB88M,EAAavnB,WAAW,OAASunB,EAAaC,SAAS,MAEzDF,EAASN,YAAYxhN,KAAK+hN,EAAap6K,UAAU,EAAGo6K,EAAa/mN,OAAS,IACjE+mN,EAAa58M,QAAQ,KAAO,EACrC28M,EAAStnK,QAAQx6C,KAAK+hN,GACbA,GACTD,EAASP,QAAQvhN,KAAK+hN,KAyBfE,GAAc,SAASje,EAAKC,GACvCD,EAAI9+L,MAAM,KAAK8qB,SAAQ,SAAS7J,GAC9B,IAAIxC,EAAKwC,EACLA,EAAI,GAAGlX,MAAM,QAAO0U,EAvJE,WAuJ2BA,QAC1B,IAAhB0/K,GAAQ1/K,IACjB0/K,GAAQ1/K,GAAI29L,WAAWthN,KAAKikM,OAuC5Bie,GAAe,SAAST,EAAOpjB,EAAc8F,GACjD,IAAIxgL,EAAK89L,EACLU,EAAST,GAAY/9L,GAEI,UAAzBsrF,GAAO+pF,oBAGiB,IAAjBqF,QAGgB,IAAhBgF,GAAQ1/K,KACbwgL,IACFd,GAAQ1/K,GAAIwgL,QAAUr5D,EAAO8tD,aAAauL,EAASl1F,KAGrD00F,GAAK3jM,MAAK,WACR,IAAMmwK,EAAOrnK,SAAS9C,cAAT,eAA+Bm8M,EAA/B,OACA,OAAThyC,GACFA,EAAKziK,iBACH,SACA,WACE+xF,EAAM2+F,QAAQC,EAAc8jB,MAE9B,QAkBG72F,GAAe,CAC1BC,YAAa,EACbC,UAAW,EACXC,YAAa,EACbC,WAAY,GAGR04E,GAAgB,SAASC,GAC7B,IAAIC,EAAc5gM,iBAAO,mBAC0B,QAA9C4gM,EAAY31L,SAAW21L,GAAa,GAAG,KAC1CA,EAAc5gM,iBAAO,QAClBH,OAAO,OACPC,KAAK,QAAS,kBACdwF,MAAM,UAAW,IAGVtF,iBAAO2gM,GAAS3gM,OAAO,OAEjBV,UAAU,UAEzByC,GAAG,aAAa,WACf,IAAM69F,EAAK5/F,iBAAOnL,MAGlB,GAAc,OAFA+qG,EAAG9/F,KAAK,SAEtB,CAGA,IAAMwd,EAAOzoB,KAAK0oB,wBAElBqjL,EACGxgM,aACAggB,SAAS,KACT9a,MAAM,UAAW,MACpBs7L,EACG3zL,KAAK2yF,EAAG9/F,KAAK,UACbwF,MAAM,OAAQ+E,OAAOw2L,QAAUvjL,EAAK7lB,MAAQ6lB,EAAKzlB,MAAQylB,EAAK7lB,MAAQ,EAAI,MAC1E6N,MAAM,MAAO+E,OAAOy2L,QAAUxjL,EAAKG,IAAM,GAAKrY,SAAS66I,KAAK8gD,UAAY,MAC3EnhG,EAAG5yF,QAAQ,SAAS,OAErBjL,GAAG,YAAY,WACd6+L,EACGxgM,aACAggB,SAAS,KACT9a,MAAM,UAAW,GACTtF,iBAAOnL,MACfmY,QAAQ,SAAS,OAG1BizL,GAAK3jM,KAAKokM,IAEK,QACbtgF,YACAuhF,cA/D2B,SAAShB,GACpCV,GAAK3zK,SAAQ,SAASkiE,GACpBA,EAAImyG,OA8DNv1K,MAnOmB,WACnBmyL,GAAY,GACZ5d,GAAU,IACVM,GAAO,IACF3jM,KAAKokM,KAgOVge,SA7NsB,SAASz+L,GAC/B,OAAO0/K,GAAQ1/K,IA6Nf8hL,WA3NwB,WACxB,OAAOpC,IA2NPx4E,cAlM2B,SAASo5E,EAAWoe,GAC/C,IAAMR,EAAqBV,GAAsBld,GAAWA,UAC5DZ,GAAQwe,GAAoBL,YAAYxhN,KAAKqiN,IAiM7CC,aAzN0B,WAC1B,OAAOrB,IAyNPv2F,YAtNyB,SAASK,GAClCqtE,EAAO76E,MAAM,oBAAsB5iF,KAAKC,UAAUmwF,IAClDjH,GAASiH,EAASviG,KAClBs7F,GAASiH,EAASG,KAElBH,EAASviG,IAAM24L,GAAsBp2F,EAASviG,KAAKy7K,UACnDl5E,EAASG,IAAMi2F,GAAsBp2F,EAASG,KAAK+4E,UAEnDgd,GAAUjhN,KAAK+qH,IA+MfD,aACAF,WArKwB,SAASq5E,EAAWsd,GACxCvlN,MAAM2D,QAAQ4hN,KAChBA,EAAQtjN,UACRsjN,EAAQvxL,SAAQ,SAAA4xL,GAAM,OAAI92F,GAAUm5E,EAAW2d,QAmKjDj3F,aA/J0B,SAAS5sB,GACnC,MAA8B,MAA1BA,EAAMp2D,UAAU,EAAG,GACdo2D,EAAM5jB,OAAO,GAAGl1E,OAEhB84F,EAAM94F,QA4JfomH,SAnEsB,CACtBM,KAAM,EACNC,YAAa,GAkEbN,gBACAvH,cAhH2B,SAASigF,EAAK3F,EAAc8F,GACvDH,EAAI9+L,MAAM,KAAK8qB,SAAQ,SAASrM,GAC9Bu+L,GAAav+L,EAAI06K,EAAc8F,MAEjC8d,GAAYje,EAAK,cA6GjBie,eACAj+F,QAvIqB,SAASggF,EAAK9F,EAASiG,GAC5CH,EAAI9+L,MAAM,KAAK8qB,SAAQ,SAAS7J,GAC9B,IAAIxC,EAAKwC,EACLA,EAAI,GAAGlX,MAAM,QAAO0U,EAvKE,WAuK2BA,QAC1B,IAAhB0/K,GAAQ1/K,KACjB0/K,GAAQ1/K,GAAI4gB,KAAOk7D,EAAMw+F,UAAUC,EAASjvF,IAExCk1F,IACFd,GAAQ1/K,GAAIwgL,QAAUr5D,EAAO8tD,aAAauL,EAASl1F,SAIzDgzG,GAAYje,EAAK,cA4HjB0d,gB,oBC7SE1zE,GAAY,EAkRHu0E,GAAc,SAAS5+M,GAClC,IAGI6+M,EAAa7+M,EAAKsL,MAHH,yCAIfwzM,EAAc9+M,EAAKsL,MAHH,qEAKpB,OAAIuzM,IAAeC,EACVC,GAAkBF,GAChBC,EACFE,GAAmBF,GAEnBG,GAAmBj/M,IAIxB++M,GAAoB,SAASG,GACjC,IAAIC,EAAc,GAElB,IAMEA,GALiBD,EAAW,GAAKA,EAAW,GAAG59M,OAAS,KACxC49M,EAAW,GAAKA,EAAW,GAAG59M,OAAS,KACrC49M,EAAW,GAAKE,GAAkBF,EAAW,GAAG59M,QAAU,IAGvB,KAFrC49M,EAAW,GAAKA,EAAW,GAAG59M,OAAS,IAGvD,MAAOwhH,GACPq8F,EAAcD,EAGhB,MAAO,CACLC,YAAaA,EACbE,SAAU,KAIRL,GAAqB,SAASE,GAClC,IAAIG,EAAW,GACXF,EAAc,GAElB,IACE,IAAIG,EAAaJ,EAAW,GAAKA,EAAW,GAAG59M,OAAS,GACpDi+M,EAAaL,EAAW,GAAKA,EAAW,GAAG59M,OAAS,GACpD6yH,EAAa+qF,EAAW,GAAKE,GAAkBF,EAAW,GAAG59M,QAAU,GACvEk+M,EAAaN,EAAW,GAAKA,EAAW,GAAG59M,OAAS,GAGxD69M,EAAcG,EAAaC,EAAa,IAAMprF,EAAa,KAF1C+qF,EAAW,GAAK,MAAQE,GAAkBF,EAAW,IAAI59M,OAAS,IAInF+9M,EAAWI,GAAgBD,GAC3B,MAAO18F,GACPq8F,EAAcD,EAGhB,MAAO,CACLC,YAAaA,EACbE,SAAUA,IAIRJ,GAAqB,SAASj/M,GAElC,IAAIm/M,EAAc,GACdE,EAAW,GAEXK,EAAa,GACbC,EAAc3/M,EAAKwB,QAAQ,KAC3Bo+M,EAAY5/M,EAAKwB,QAAQ,KAE7B,GAAIm+M,EAAc,GAAKC,EAAYD,GAAeC,GAAa5/M,EAAK3I,OAAQ,CAC1E,IAAIioN,EAAa,GACbC,EAAa,GAEbM,EAAY7/M,EAAKgkC,UAAU,EAAG,GAC9B67K,EAAUv0M,MAAM,MAClBi0M,EAAav/M,EAAKgkC,UAAU,EAAG27K,GAAar+M,QAExCu+M,EAAUv0M,MAAM,cAClBg0M,EAAaO,GAGfN,EAAav/M,EAAKgkC,UAAU,EAAG27K,GAAar+M,QAG9C,IAAI6yH,EAAan0H,EAAKgkC,UAAU27K,EAAc,EAAGC,GAC7CJ,EAAax/M,EAAKgkC,UAAU47K,EAAY,EAAG,GAC/CP,EAAWI,GAAgBD,GAE3BL,EAAcG,EAAaC,EAAa,IAAMH,GAAkBjrF,EAAW7yH,QAAU,IAEjFs+M,EA1BW,GA0BYvoN,QAEN,MADnBqoN,EAAa1/M,EAAKgkC,UAAU47K,EAAY,GAAGt+M,UAEzCo+M,EAAa,MAAQN,GAAkBM,SAK3CP,EAAcC,GAAkBp/M,GAGlC,MAAO,CACLm/M,YAAaA,EACbE,SAAUA,IAIRS,GAAW,SAASC,EAAQ7qB,EAAK8qB,EAAShxF,GAC9C,IAAIivF,EAASW,GAAY1pB,GAEnB+qB,EAAQF,EACXngN,OAAO,SACPC,KAAK,IAAKmvH,EAAK3pF,SACfrlC,KAAKi+M,EAAOkB,aAES,KAApBlB,EAAOoB,UACTY,EAAMpgN,KAAK,QAASo+M,EAAOoB,UAGxBW,GACHC,EAAMpgN,KAAK,KAAMmvH,EAAKkvE,aAIpBkhB,GAAoB,SAApBA,EAA6Bp/M,GACjC,IAAIkgN,EAAclgN,EAElB,OAA0B,GAAtBA,EAAKwB,QAAQ,KAIR49M,EAFPc,GADAA,EAAcA,EAAYpnL,QAAQ,IAAK,MACbA,QAAQ,IAAK,MAIhConL,GAILT,GAAkB,SAASD,GAC/B,OAAQA,GACN,IAAK,IACH,MAAO,qBACT,IAAK,IACH,MAAO,6BACT,QACE,MAAO,KAIE,GAzRU,SAAShzC,EAAM2zC,EAAUnxF,GAChDylE,EAAO/mC,KAAK,mBAAqByyD,GAEjC,IAAIC,EAAc,cACdD,EAASxC,WAAWtmN,OAAS,IAC/B+oN,GAA4BD,EAASxC,WAAW52M,KAAK,MAGvD,IAeIooF,EAfEnvE,EAAKmgM,EAASngM,GACdqgM,EAAY,CAChBrgM,GAAIA,EACJo6E,MAAO+lH,EAASngM,GAChBsH,MAAO,EACPC,OAAQ,GAIJ1O,EAAI2zJ,EACP5sK,OAAO,KACPC,KAAK,KAAMk+M,GAAY/9L,IACvBngB,KAAK,QAASugN,GAKfjxH,EADEgxH,EAASv/K,KACH/nB,EACLjZ,OAAO,SACPC,KAAK,aAAcsgN,EAASv/K,MAC5B/gC,KAAK,SAAU,UACfD,OAAO,QACPC,KAAK,IAAKmvH,EAAKkvE,WAAalvE,EAAK3pF,SACjCxlC,KAAK,IAAK,GAELgZ,EACLjZ,OAAO,QACPC,KAAK,IAAKmvH,EAAKkvE,WAAalvE,EAAK3pF,SACjCxlC,KAAK,IAAK,GAIf,IAAImgN,GAAU,EACdG,EAAStC,YAAYxxL,SAAQ,SAAS4xL,GACpC,IAAMqC,EAAanxH,EAAMvvF,OAAO,SAASI,KAAK,IAAMi+M,EAAS,KACxD+B,GAASM,EAAWzgN,KAAK,KAAMmvH,EAAKkvE,YACzC8hB,GAAU,KAGZ,IAAIO,EAAmBJ,EAASngM,QAEVgF,IAAlBm7L,EAAS1+M,MAAwC,KAAlB0+M,EAAS1+M,OAC1C8+M,GAAoB,IAAMJ,EAAS1+M,KAAO,KAG5C,IAAM++M,EAAarxH,EAChBvvF,OAAO,SACPI,KAAKugN,GACL1gN,KAAK,QAAS,SAGZmgN,GAASQ,EAAW3gN,KAAK,KAAMmvH,EAAKkvE,YAEzC,IAAMuiB,EAActxH,EAAM5rF,OAAO2pI,UAAU3lH,OAErCm5L,EAAc7nM,EACjBjZ,OAAO,QACPC,KAAK,KAAM,GACXA,KAAK,KAAMmvH,EAAK3pF,QAAUo7K,EAAczxF,EAAKgvE,cAAgB,GAC7Dn+L,KAAK,KAAMmvH,EAAK3pF,QAAUo7K,EAAczxF,EAAKgvE,cAAgB,GAE1D4f,EAAU/kM,EACbjZ,OAAO,QACPC,KAAK,IAAKmvH,EAAK3pF,SACfxlC,KAAK,IAAK4gN,EAAczxF,EAAKgvE,cAAgBhvE,EAAKkvE,YAClDr+L,KAAK,OAAQ,SACbA,KAAK,QAAS,aAEjBmgN,GAAU,EACVG,EAASvC,QAAQvxL,SAAQ,SAAS4xL,GAChC6B,GAASlC,EAASK,EAAQ+B,EAAShxF,GACnCgxF,GAAU,KAGZ,IAAMW,EAAa/C,EAAQr6M,OAAO2pI,UAE5B0zE,EAAc/nM,EACjBjZ,OAAO,QACPC,KAAK,KAAM,GACXA,KAAK,KAAMmvH,EAAK3pF,QAAUo7K,EAAczxF,EAAKgvE,cAAgB2iB,EAAWp5L,QACxE1nB,KAAK,KAAMmvH,EAAK3pF,QAAUo7K,EAAczxF,EAAKgvE,cAAgB2iB,EAAWp5L,QAErEsvB,EAAUh+B,EACbjZ,OAAO,QACPC,KAAK,IAAKmvH,EAAK3pF,SACfxlC,KAAK,IAAK4gN,EAAc,EAAIzxF,EAAKgvE,cAAgB2iB,EAAWp5L,OAASynG,EAAKkvE,YAC1Er+L,KAAK,OAAQ,SACbA,KAAK,QAAS,aAEjBmgN,GAAU,EAEVG,EAAStpK,QAAQxqB,SAAQ,SAASo3F,GAChCq8F,GAASjpK,EAAS4sE,EAAQu8F,EAAShxF,GACnCgxF,GAAU,KAGZ,IAAMa,EAAWhoM,EAAEtV,OAAO2pI,UAQpB4zE,EAPOjoM,EACV3Y,OAAO,OAAQ,gBACfL,KAAK,IAAK,GACVA,KAAK,IAAK,GACVA,KAAK,QAASghN,EAASv5L,MAAQ,EAAI0nG,EAAK3pF,SACxCxlC,KAAK,SAAUghN,EAASt5L,OAASynG,EAAK3pF,QAAU,GAAM2pF,EAAKgvE,eAEvCz6L,OAAO2pI,UAAU5lH,MAkBxC,OAdA6nE,EAAM5rF,OAAOw9M,WAAW10L,SAAQ,SAAS/0B,GACvCA,EAAEuN,aAAa,KAAMi8M,EAAYxpN,EAAE41I,UAAU5lH,OAAS,MAGpD64L,EAAS3f,SACXrxG,EAAMjvF,OAAO,SAASF,KAAKmgN,EAAS3f,SAGtCkgB,EAAY7gN,KAAK,KAAMihN,GACvBF,EAAY/gN,KAAK,KAAMihN,GAEvBT,EAAU/4L,MAAQw5L,EAClBT,EAAU94L,OAASs5L,EAASt5L,OAASynG,EAAK3pF,QAAU,GAAM2pF,EAAKgvE,cAExDqiB,GAuJM,GAraS,SAAS7zC,EAAMptK,EAAMgoH,EAAU4H,GACrD,IAAMgyF,EAAkB,SAASv/M,GAC/B,OAAQA,GACN,KAAKkmH,GAAaC,YAChB,MAAO,cACT,KAAKD,GAAaE,UAChB,MAAO,YACT,KAAKF,GAAaG,YAChB,MAAO,cACT,KAAKH,GAAaI,WAChB,MAAO,eAIb3oH,EAAKouC,OAASpuC,EAAKouC,OAAOjtC,QAAO,SAAAzJ,GAAC,OAAKitC,OAAO5qC,MAAMrC,EAAE4G,MAGtD,IA6CIpG,EAAGoG,EA7CDstM,EAAW5rM,EAAKouC,OAGhBy9J,EAAenrM,iBAClBxI,GAAE,SAAShC,GACV,OAAOA,EAAEgC,KAEVoG,GAAE,SAASpI,GACV,OAAOA,EAAEoI,KAEVo9D,MAAM26H,cAEH2V,EAAU5+B,EACb5sK,OAAO,QACPC,KAAK,IAAKorM,EAAaD,IACvBnrM,KAAK,KAAM,OAASwqI,IACpBxqI,KAAK,QAAS,YACb+2H,EAAM,GACN5H,EAAKksE,sBAQPtkE,GADAA,GANAA,EACExsH,OAAOk+D,SAAS+iI,SAChB,KACAjhM,OAAOk+D,SAASgjI,KAChBlhM,OAAOk+D,SAASijI,SAChBnhM,OAAOk+D,SAASkjI,QACR1yK,QAAQ,MAAO,QACfA,QAAQ,MAAO,QAGO,GAA9BsuF,EAASA,SAASM,UACpB0jF,EAAQvrM,KAAK,QAAS,wBAEQ,SAA5BunH,EAASA,SAASI,OACpB4jF,EAAQvrM,KACN,eACA,OAAS+2H,EAAM,IAAMoqF,EAAgB55F,EAASA,SAASI,OAAS,UAGpC,SAA5BJ,EAASA,SAASK,OACpB2jF,EAAQvrM,KACN,aACA,OAAS+2H,EAAM,IAAMoqF,EAAgB55F,EAASA,SAASK,OAAS,QAKpE,IAMIw5F,EAAWC,EACXC,EAAWC,EAPTnsN,EAAImK,EAAKouC,OAAOn2C,OAElBgqN,EAAgBvlH,EAAM69F,kBAAkBv6L,EAAKouC,QAOjD,GANAl2C,EAAI+pN,EAAc/pN,EAClBoG,EAAI2jN,EAAc3jN,EAKdzI,EAAI,GAAM,GAAKA,EAAI,EAAG,CACxB,IAAIqsN,EAAsBxlH,EAAMo+F,wBACF,SAA5B9yE,EAASA,SAASI,MAClBpoH,EAAKouC,OACLpuC,EAAKouC,OAAO,IAEV+zK,EAAsBzlH,EAAMo+F,wBACF,SAA5B9yE,EAASA,SAASK,MAClBroH,EAAKouC,OACLpuC,EAAKouC,OAAOv4C,EAAI,IAGlBw/L,EAAO76E,MAAM,uBAAyB5iF,KAAKC,UAAUqqL,IACrD7sB,EAAO76E,MAAM,uBAAyB5iF,KAAKC,UAAUsqL,IAErDN,EAAYK,EAAoBhqN,EAChC4pN,EAAYI,EAAoB5jN,EAChCyjN,EAAYI,EAAoBjqN,EAChC8pN,EAAYG,EAAoB7jN,EAGlC,QAA8B,IAAnB0pH,EAASj4B,MAAuB,CACzC,IAAMt2E,EAAI2zJ,EAAK5sK,OAAO,KAAKC,KAAK,QAAS,cACnCu6F,EAAQvhF,EACXjZ,OAAO,QACPC,KAAK,QAAS,SACdA,KAAK,IAAKvI,GACVuI,KAAK,IAAKnC,GACVmC,KAAK,OAAQ,OACbA,KAAK,cAAe,UACpBG,KAAKonH,EAASj4B,OAEjB/kF,OAAOgwF,MAAQA,EACf,IAAM5kD,EAAS4kD,EAAM72F,OAAO2pI,UAE5Br0H,EAAE3Y,OAAO,OAAQ,gBACdL,KAAK,QAAS,OACdA,KAAK,IAAK21C,EAAOl+C,EAAI03H,EAAK3pF,QAAU,GACpCxlC,KAAK,IAAK21C,EAAO93C,EAAIsxH,EAAK3pF,QAAU,GACpCxlC,KAAK,QAAS21C,EAAOluB,MAAQ0nG,EAAK3pF,SAClCxlC,KAAK,SAAU21C,EAAOjuB,OAASynG,EAAK3pF,UAGzCovJ,EAAO/mC,KAAK,sBAAwB12H,KAAKC,UAAUmwF,SACZ,IAA5BA,EAASC,gBAA8D,SAA5BD,EAASC,iBACnDmlD,EAAK5sK,OAAO,KAAKC,KAAK,QAAS,eACvCD,OAAO,QACNC,KAAK,QAAS,SACdA,KAAK,IAAKohN,GACVphN,KAAK,IAAKqhN,GACVrhN,KAAK,OAAQ,SACbA,KAAK,YAAa,KAClBG,KAAKonH,EAASC,qBAEoB,IAA5BD,EAASE,gBAA8D,SAA5BF,EAASE,gBACnDklD,EAAK5sK,OAAO,KAAKC,KAAK,QAAS,eACvCD,OAAO,QACNC,KAAK,QAAS,SACdA,KAAK,IAAKshN,GACVthN,KAAK,IAAKuhN,GACVvhN,KAAK,OAAQ,SACbA,KAAK,YAAa,KAClBG,KAAKonH,EAASE,gBAGnB+iB,MCvIFzsG,UAAO8uC,GAAK80I,GAEZ,IAAIC,GAAU,GAGRzyF,GAAO,CACXgvE,cAAe,GACf34J,QAAS,EACT64J,WAAY,IAIRwjB,GAAa,SAAStnH,GAG1B,IAFA,IAAMjyE,EAAOzyB,OAAOyyB,KAAKs5L,IAEhBzsN,EAAI,EAAGA,EAAImzB,EAAK9wB,OAAQrC,IAC/B,GAAIysN,GAAQt5L,EAAKnzB,IAAIolG,QAAUA,EAC7B,OAAOjyE,EAAKnzB,IA6NH,GA7GQ,SAASiwM,GACjBvvM,OAAOyyB,KAAK88K,GAEpB54K,SAAQ,SAAS91B,GACpBy4H,GAAKz4H,GAAO0uM,EAAI1uM,OAyGL,GAhGK,SAASyJ,EAAMggB,GACjCyhM,GAAU,GACV7jL,UAAO8uC,GAAGvhD,QACVyS,UAAOvc,MAAMrhB,GAEby0L,EAAO/mC,KAAK,qBAAuB1tJ,GAGnC,IA3H6BwsK,EA2HvB2lC,EAAUpyM,iBAAO,QAAD,OAASigB,EAAT,QA3HOwsJ,EA4Hf2lC,GA1HXvyM,OAAO,QACPA,OAAO,UACPC,KAAK,KAAM,kBACXA,KAAK,QAAS,aACdA,KAAK,OAAQ,GACbA,KAAK,OAAQ,GACbA,KAAK,cAAe,KACpBA,KAAK,eAAgB,KACrBA,KAAK,SAAU,QACfD,OAAO,QACPC,KAAK,IAAK,sBAEb2sK,EACG5sK,OAAO,QACPA,OAAO,UACPC,KAAK,KAAM,gBACXA,KAAK,OAAQ,IACbA,KAAK,OAAQ,GACbA,KAAK,cAAe,IACpBA,KAAK,eAAgB,IACrBA,KAAK,SAAU,QACfD,OAAO,QACPC,KAAK,IAAK,sBAEb2sK,EACG5sK,OAAO,QACPA,OAAO,UACPC,KAAK,KAAM,oBACXA,KAAK,QAAS,aACdA,KAAK,OAAQ,GACbA,KAAK,OAAQ,GACbA,KAAK,cAAe,KACpBA,KAAK,eAAgB,KACrBA,KAAK,SAAU,QACfD,OAAO,QACPC,KAAK,IAAK,4BAEb2sK,EACG5sK,OAAO,QACPA,OAAO,UACPC,KAAK,KAAM,kBACXA,KAAK,OAAQ,IACbA,KAAK,OAAQ,GACbA,KAAK,cAAe,IACpBA,KAAK,eAAgB,IACrBA,KAAK,SAAU,QACfD,OAAO,QACPC,KAAK,IAAK,4BAEb2sK,EACG5sK,OAAO,QACPA,OAAO,UACPC,KAAK,KAAM,oBACXA,KAAK,QAAS,aACdA,KAAK,OAAQ,GACbA,KAAK,OAAQ,GACbA,KAAK,cAAe,KACpBA,KAAK,eAAgB,KACrBA,KAAK,SAAU,QACfD,OAAO,QACPC,KAAK,IAAK,4BAEb2sK,EACG5sK,OAAO,QACPA,OAAO,UACPC,KAAK,KAAM,kBACXA,KAAK,OAAQ,IACbA,KAAK,OAAQ,GACbA,KAAK,cAAe,IACpBA,KAAK,eAAgB,IACrBA,KAAK,SAAU,QACfD,OAAO,QACPC,KAAK,IAAK,4BAEb2sK,EACG5sK,OAAO,QACPA,OAAO,UACPC,KAAK,KAAM,mBACXA,KAAK,QAAS,aACdA,KAAK,OAAQ,GACbA,KAAK,OAAQ,GACbA,KAAK,cAAe,KACpBA,KAAK,eAAgB,KACrBA,KAAK,SAAU,QACfD,OAAO,QACPC,KAAK,IAAK,2BAEb2sK,EACG5sK,OAAO,QACPA,OAAO,UACPC,KAAK,KAAM,iBACXA,KAAK,OAAQ,IACbA,KAAK,OAAQ,GACbA,KAAK,cAAe,IACpBA,KAAK,eAAgB,IACrBA,KAAK,SAAU,QACfD,OAAO,QACPC,KAAK,IAAK,6BA4Bb,IAAMgZ,EAAI,IAAIsgF,KAASzf,MAAM,CAC3B6gB,YAAY,IAId1hF,EAAEmhF,SAAS,CACT2nH,cAAc,IAIhB9oM,EAAEuxH,qBAAoB,WACpB,MAAO,MAKT,IAFA,IAAMs1D,EAAU8hB,GAAQ1f,aAClB35K,EAAOzyB,OAAOyyB,KAAKu3K,GAChB1qM,EAAI,EAAGA,EAAImzB,EAAK9wB,OAAQrC,IAAK,CACpC,IAAMmrN,EAAWzgB,EAAQv3K,EAAKnzB,IACxBuO,EAAO+uM,GAAkBH,EAASgO,EAAUnxF,IAClDyyF,GAAQl+M,EAAKyc,IAAMzc,EAKnBsV,EAAE8gF,QAAQp2F,EAAKyc,GAAIzc,GAEnBkxL,EAAO/mC,KAAK,eAAiBnqJ,EAAKgkB,QAGlBi6L,GAAQ7C,eAChBtyL,SAAQ,SAAS+6F,GACzBqtE,EAAO/mC,KACL,QAAUg0D,GAAWt6F,EAASviG,KAAO68L,GAAWt6F,EAASG,KAAOvwF,KAAKC,UAAUmwF,IAEjFvuG,EAAEwhF,QACAqnH,GAAWt6F,EAASviG,KACpB68L,GAAWt6F,EAASG,KACpB,CACEH,SAAUA,GAEZA,EAASj4B,OAAS,cAItBiK,KAAMugB,OAAO9gG,GACbA,EAAEjM,QAAQyf,SAAQ,SAAShzB,QACR,IAANA,QAA0C,IAAdwf,EAAEtV,KAAKlK,KAC5Co7L,EAAO76E,MAAM,QAAUvgH,EAAI,KAAO29B,KAAKC,UAAUpe,EAAEtV,KAAKlK,KACxD0G,iBAAO,IAAMg+M,GAAY1kN,IAAIwG,KAC3B,YACA,cACGgZ,EAAEtV,KAAKlK,GAAG/B,EAAIuhB,EAAEtV,KAAKlK,GAAGiuB,MAAQ,GACjC,KACCzO,EAAEtV,KAAKlK,GAAGqE,EAAImb,EAAEtV,KAAKlK,GAAGkuB,OAAS,GAClC,UAKR1O,EAAEivD,QAAQz7C,SAAQ,SAASrN,QACR,IAANA,QAA0C,IAAdnG,EAAEmqD,KAAKhkD,KAC5Cy1K,EAAO76E,MAAM,QAAU56F,EAAE3lB,EAAI,OAAS2lB,EAAEuH,EAAI,KAAOyQ,KAAKC,UAAUpe,EAAEmqD,KAAKhkD,KACzEszL,GAAiBH,EAASt5L,EAAEmqD,KAAKhkD,GAAInG,EAAEmqD,KAAKhkD,GAAGooG,SAAU4H,QAI7D,IAAMs2E,EAAY6M,EAAQ5uM,OAAO2pI,UAC3B5lH,EAAQg+K,EAAUh+K,MAAQ+d,GAC1B9d,EAAS+9K,EAAU/9K,OAAS8d,GAE9B2pF,GAAKktE,aACPiW,EAAQtyM,KAAK,QAAS,QACtBsyM,EAAQtyM,KAAK,QAAb,qBAAoCynB,EAApC,UAEA6qL,EAAQtyM,KAAK,SAAU0nB,GACvB4qL,EAAQtyM,KAAK,QAASynB,IAIxB,IAAMi+K,EAAO,GAAH,OAAMD,EAAUhuM,EAtOZ,GAsOJ,YAA+BguM,EAAU5nM,EAtOrC,GAsOJ,YAAwD4pB,EAAxD,YAAiEC,GAC3EktK,EAAO76E,MAAP,kBAAwB2rF,IACxB4M,EAAQtyM,KAAK,UAAW0lM,I,uOChP1B,ICWIv2E,GDXEvmH,GAAQ,SAAAhT,GAAC,OAAIuhC,KAAK3V,MAAM2V,KAAKC,UAAUxhC,KAEzCmsN,GAAU,GA8FVC,GAAY,CACdxtN,KARO,CACLipN,UAAW,GACXwE,OAAQ,GACRD,UAAW,KAQXE,GAAkBF,GAAUxtN,KAE5B2tN,GAAW,EAWFC,GAAW,SAASjiM,EAAIve,EAAMogG,EAAKmnG,EAAOjnG,QACX,IAA/BggH,GAAgBD,OAAO9hM,GAChC+hM,GAAgBD,OAAO9hM,GAAM,CAC3BA,GAAIA,EACJkiM,aAAc,GACdzgN,OACAogG,MACAE,SAGGggH,GAAgBD,OAAO9hM,GAAI6hF,MAC9BkgH,GAAgBD,OAAO9hM,GAAI6hF,IAAMA,GAE9BkgH,GAAgBD,OAAO9hM,GAAIve,OAC9BsgN,GAAgBD,OAAO9hM,GAAIve,KAAOA,IAGlCunM,IACFvU,EAAO/mC,KAAK,gBAAiB1tI,EAAIgpL,GACZ,iBAAVA,GAAoBmZ,GAAeniM,EAAIgpL,EAAM1nM,QAEnC,WAAjB,GAAO0nM,IACTA,EAAM38K,SAAQ,SAAAgsI,GAAG,OAAI8pD,GAAeniM,EAAIq4I,EAAI/2J,YAI5CygG,IAAMggH,GAAgBD,OAAO9hM,GAAI+hF,KAAOA,IAGjC52E,GAAQ,WAInB42L,IAHAF,GAAY,CACVxtN,KAvDK,CACLipN,UAAW,GACXwE,OAAQ,GACRD,UAAW,MAsDextN,KAE5B0tN,GAAkBF,GAAUxtN,KAE5B2tN,GAAW,EACF,EACTtiB,GAAU,IAiBC34E,GAAc,SAASq7F,EAAMC,EAAMlzH,GAC9C,IAAItqE,EAAMu9L,EACN76F,EAAM86F,EACN76F,EAAQ,UACRC,EAAQ,UACC,QAAT26F,IAEFv9L,EAAM,WADNm9L,GAEAx6F,EAAQ,SAEG,QAAT66F,IAEF96F,EAAM,MAAQy6F,GACdv6F,EAAQ,OAEVw6F,GAASp9L,EAAK2iG,GACdy6F,GAAS16F,EAAKE,GACds6F,GAAgBzE,UAAUjhN,KAAK,CAAEwoB,MAAK0iG,MAAKp4B,WAGvCgzH,GAAiB,SAASniM,EAAIsiM,GAClC,IAAMC,EAAWR,GAAgBD,OAAO9hM,GACpCgpL,EAAQsZ,EACK,MAAbtZ,EAAM,KACRA,EAAQA,EAAMxyH,OAAO,GAAGl1E,QAG1BihN,EAASL,aAAa7lN,KAAK2sM,IAgBzBwZ,GAAa,EAMb9iB,GAAU,GAeC,IACbuiB,YACA92L,SACAs3L,SAjFsB,SAASziM,GAC/B,OAAO+hM,GAAgBD,OAAO9hM,IAiF9B0iM,UA9EuB,WACvB,OAAOX,GAAgBD,QA8EvBnD,aAzE0B,WAC1B,OAAOoD,GAAgBzE,WAyEvBxb,WAnBiB,kBAAMpC,IAoBvBiC,aAlBmB,iBAAM,MAmBzB56E,eACAjlB,aA7BmB,WAEnB,MAAO,iBADP0gH,IA8BAx7F,aA7C0B,SAAS5sB,GACnC,MAA8B,MAA1BA,EAAMp2D,UAAU,EAAG,GACdo2D,EAAM5jB,OAAO,GAAGl1E,OAEhB84F,EAAM94F,QA0CfomH,SAtCsB,CACtBM,KAAM,EACNC,YAAa,GAqCbN,aAtB0B,CAC1BC,YAAa,EACbC,UAAW,EACXC,YAAa,EACbC,WAAY,GAmBZ46F,aArF0B,WAC1BluB,EAAO/mC,KAAK,eAAgBm0D,KAqF5Be,WA/OiB,kBAAMhB,IAgPvBpgH,WAtPiB,SAAA/rG,GACjBg/L,EAAO/mC,KAAK,mBAAoBj4J,GAEhCmsN,GAAUnsN,GAoPVotN,aAlMmB,WAEnB,OA/CoB,SAAhBC,EAAiBpgN,EAAQa,EAAM0uC,GACnC,GAAkB,aAAd1uC,EAAKk+F,KACPqhH,EAAcpgN,EAAQa,EAAKo+F,QAAQ,GACnCmhH,EAAcpgN,EAAQa,EAAKq+F,QAAQ,QASnC,GAPkB,UAAdr+F,EAAKk+F,MACS,QAAZl+F,EAAKyc,KACPzc,EAAKyc,GAAKiyB,EAAQvvC,EAAOsd,GAAK,SAAWtd,EAAOsd,GAAK,OACrDzc,EAAK1J,MAAQo4C,GAIb1uC,EAAKs+F,IAAK,CACZ,IAAMA,EAAM,GAER7sG,EAAI,EACJ+tN,EAAa,GACjB,IAAK/tN,EAAI,EAAGA,EAAIuO,EAAKs+F,IAAIxqG,OAAQrC,IAC/B,GAAyB,YAArBuO,EAAKs+F,IAAI7sG,GAAGyM,KAAoB,CAElC,IAAMuhN,EAAUv6M,GAAMlF,EAAKs+F,IAAI7sG,IAC/BguN,EAAQnhH,IAAMp5F,GAAMs6M,GACpBlhH,EAAIxlG,KAAK2mN,GACTD,EAAa,QAEbA,EAAW1mN,KAAKkH,EAAKs+F,IAAI7sG,IAK7B,GAAI6sG,EAAIxqG,OAAS,GAAK0rN,EAAW1rN,OAAS,EAAG,CAC3C,IAAM2rN,EAAU,CACdvhH,KAAM,QACNzhF,GAAI+2K,IACJt1L,KAAM,UACNogG,IAAKp5F,GAAMs6M,IAEblhH,EAAIxlG,KAAKoM,GAAMu6M,IACfz/M,EAAKs+F,IAAMA,EAGbt+F,EAAKs+F,IAAIx1E,SAAQ,SAAA42L,GAAO,OAAIH,EAAcv/M,EAAM0/M,GAAS,OAK7DH,CAAc,CAAE9iM,GAAI,QAAU,CAAEA,GAAI,OAAQ6hF,IAAK+/G,KAAW,GACrD,CAAE5hM,GAAI,OAAQ6hF,IAAK+/G,KAiM1BsB,QA9Lc,SAAAC,GAEd,IAAIthH,EAEFA,EADEshH,EAAKthH,IACDshH,EAAKthH,IAELshH,EAMR1uB,EAAO/mC,KAAK7rD,GACZ12E,KAEAspK,EAAO/mC,KAAK,UAAW7rD,GAEvBA,EAAIx1E,SAAQ,SAAA++F,GACQ,UAAdA,EAAK3pB,MACPwgH,GAAS72F,EAAKprG,GAAIorG,EAAK3pH,KAAM2pH,EAAKvpB,IAAKupB,EAAKt7C,YAAas7C,EAAKrpB,MAE9C,aAAdqpB,EAAK3pB,MACPslB,GAAYqE,EAAKzpB,OAAO3hF,GAAIorG,EAAKxpB,OAAO5hF,GAAIorG,EAAKt7C,iBAyKrD4xB,UArBgB,SAAAvtB,GAAG,OAAKA,GAAkB,MAAXA,EAAI,GAAaA,EAAIqC,OAAO,GAAGl1E,OAAS6yE,EAAI7yE,S,oBE1OvEmgN,GAAU,GAUD,GARI,SAAClrN,EAAKokF,GACvB8mI,GAAQlrN,GAAOokF,GC6DJyoI,GAAiB,SAACvqM,EAAGwqM,GAChC,IAiBMta,EARQlwL,EACXjZ,OAAO,QACPC,KAAK,IAAK,EAAI0/L,IAAYr/K,MAAMmlB,SAChCxlC,KAAK,IAAK0/L,IAAYr/K,MAAMg+K,WAAa,IAAMqB,IAAYr/K,MAAMmlB,SACjExlC,KAAK,YAAa0/L,IAAYr/K,MAAMs3K,UACpC33L,KAAK,QAAS,eACdG,KAAKqjN,EAASnB,aAAa,IAEP3+M,OAAO2pI,UACxBuzE,EAAc1X,EAASxhL,OAEvBuoD,EAAcj3D,EACjBjZ,OAAO,QACPC,KAAK,IAAK0/L,IAAYr/K,MAAMmlB,SAC5BxlC,KACC,IACA4gN,EAC8B,GAA5BlhB,IAAYr/K,MAAMmlB,QAClBk6J,IAAYr/K,MAAM89K,cAClBuB,IAAYr/K,MAAMg+K,YAErBr+L,KAAK,QAAS,qBAEbmgN,GAAU,EACVsD,GAAW,EACfD,EAASnB,aAAa71L,SAAQ,SAAS28K,GAChCgX,KAnCU,SAASD,EAAQ7qB,EAAK8qB,GACrC,IAAMC,EAAQF,EACXngN,OAAO,SACPC,KAAK,IAAK,EAAI0/L,IAAYr/K,MAAMmlB,SAChCrlC,KAAKk1L,GACH8qB,GACHC,EAAMpgN,KAAK,KAAM0/L,IAAYr/K,MAAMg+K,YA8BnC4hB,CAAShwI,EAAak5H,EAAOsa,GAC7BA,GAAW,GAEbtD,GAAU,KAGZ,IAAMuD,EAAY1qM,EACfjZ,OAAO,QACPC,KAAK,KAAM0/L,IAAYr/K,MAAMmlB,SAC7BxlC,KAAK,KAAM0/L,IAAYr/K,MAAMmlB,QAAUo7K,EAAclhB,IAAYr/K,MAAM89K,cAAgB,GACvFn+L,KAAK,KAAM0/L,IAAYr/K,MAAMmlB,QAAUo7K,EAAclhB,IAAYr/K,MAAM89K,cAAgB,GACvFn+L,KAAK,QAAS,iBACX2jN,EAAW1zI,EAAYvsE,OAAO2pI,UAC9B5lH,EAAQ/tB,KAAKG,IAAI8pN,EAASl8L,MAAOyhL,EAASzhL,OAYhD,OAVAi8L,EAAU1jN,KAAK,KAAMynB,EAAQ,EAAIi4K,IAAYr/K,MAAMmlB,SAGnDxsB,EAAE3Y,OAAO,OAAQ,gBACdL,KAAK,IAAK0/L,IAAYr/K,MAAMmlB,SAC5BxlC,KAAK,IAAK0/L,IAAYr/K,MAAMmlB,SAC5BxlC,KAAK,QAASynB,EAAQ,EAAIi4K,IAAYr/K,MAAMmlB,SAC5CxlC,KAAK,SAAU2jN,EAASj8L,OAASk5L,EAAc,EAAIlhB,IAAYr/K,MAAMmlB,SACrExlC,KAAK,KAAM0/L,IAAYr/K,MAAMgP,QAEzBrW,GAaI4qM,GAAiB,SAAC5qM,EAAGwqM,EAAUK,GAC1C,IAoBIt8I,EApBE9vC,EAAMioK,IAAYr/K,MAAMmlB,QACxBs+K,EAAS,EAAIpkB,IAAYr/K,MAAMmlB,QAC/Bu+K,EAAS/qM,EAAEtV,OAAO2pI,UAClB22E,EAAWD,EAAOt8L,MAClBw8L,EAAOF,EAAOtsN,EAEd63F,EAAQt2E,EACXjZ,OAAO,QACPC,KAAK,IAAK,GACVA,KAAK,IAAK0/L,IAAYr/K,MAAMi+K,YAC5Bt+L,KAAK,YAAa0/L,IAAYr/K,MAAMs3K,UACpC33L,KAAK,QAAS,eACdG,KAAKqjN,EAASrjM,IAGX+jM,EADW50H,EAAM5rF,OAAO2pI,UACF5lH,MAAQq8L,EAChCr8L,EAAQ/tB,KAAKG,IAAIqqN,EAAYF,GAC7Bv8L,IAAUu8L,IACZv8L,GAAgBq8L,GAWlB,IAAMK,EAAWnrM,EAAEtV,OAAO2pI,UAItBm2E,EAASxhH,IAgBbz6B,EAAS08I,EAAOxsL,EACZysL,EAAaF,IACfz8I,GAAUy8I,EAAWv8L,GAAS,EAAIgQ,GAEhC/9B,KAAK4B,IAAI2oN,EAAOE,EAAS1sN,GAAKggC,GAC5BysL,EAAaF,IACfz8I,EAAS08I,GAAQC,EAAaF,GAAY,GAI9C,IAAMI,EAAQ,EAAI1kB,IAAYr/K,MAAMg+K,WAuCpC,OArCArlL,EAAE3Y,OAAO,OAAQ,gBACdL,KAAK,IAAKunE,GACVvnE,KAAK,IAAKokN,GACVpkN,KAAK,QAAS6jN,EAAS,eAAiB,YACxC7jN,KAAK,QAASynB,GACdznB,KACC,SACAmkN,EAASz8L,OAASg4K,IAAYr/K,MAAMg+K,WAAaqB,IAAYr/K,MAAMi+K,WAAa,GAEjFt+L,KAAK,KAAM,KAEdsvF,EAAMtvF,KAAK,IAAKunE,EAAS9vC,GACrBysL,GAAcF,GAAU10H,EAAMtvF,KAAK,IAAKikN,GAAQx8L,EAAQq8L,GAAU,EAAII,EAAa,EAAIzsL,GAG3Fze,EAAE3Y,OAAO,OAAQ,gBACdL,KAAK,IAAKunE,GACVvnE,KACC,IACA0/L,IAAYr/K,MAAMi+K,WAAaoB,IAAYr/K,MAAMg+K,WAAaqB,IAAYr/K,MAAMmlB,SAEjFxlC,KAAK,QAASynB,GAEdznB,KAAK,SAAyC,EAA/B0/L,IAAYr/K,MAAMg+K,YACjCr+L,KAAK,KAAM0/L,IAAYr/K,MAAMgP,QAGhCrW,EAAE3Y,OAAO,OAAQ,gBACdL,KAAK,IAAKunE,GACVvnE,KACC,IACA0/L,IAAYr/K,MAAMi+K,WAAaoB,IAAYr/K,MAAMg+K,WAAaqB,IAAYr/K,MAAMmlB,SAEjFxlC,KAAK,QAASynB,GACdznB,KAAK,SAAUmkN,EAASz8L,OAAS,EAAI,EAAIg4K,IAAYr/K,MAAMg+K,YAC3Dr+L,KAAK,KAAM0/L,IAAYr/K,MAAMgP,QAEzBrW,GAsGIo9L,GAAW,SAACj2M,EAAM6Y,GAC7BA,EAAEhZ,KAAK,QAAS,cAChB,IAAMkiG,EAAOlpF,EACVjZ,OAAO,QACPC,KAAK,IAAK,GACVA,KAAK,IAAK0/L,IAAYr/K,MAAMmlB,SALI,EArCf,SAAC6+K,EAAO5sN,EAAGoG,EAAGmb,GAClC,IAAIqlL,EAAa,EAEX7G,EAAWx+K,EAAEjZ,OAAO,QAC1By3L,EAAShyL,MAAM,cAAe,SAC9BgyL,EAASx3L,KAAK,QAAS,YAEvB,IAAIG,EAAOkkN,EAAMprL,QAAQ,QAAS,SAE5BuU,GADNrtC,EAAOA,EAAK84B,QAAQ,MAAO,UACRv3B,MAAM4lI,EAAO0tD,gBAE5BsvB,EAAU,KAAO5kB,IAAYr/K,MAAM27K,WAXC,uBAYxC,YAAmBxuJ,EAAnB,+CAA0B,KAClB6nJ,EADkB,QACP5zL,OAEjB,GAAI4zL,EAAI79L,OAAS,EAAG,CAClB,IAAMsgM,EAAON,EAASz3L,OAAO,SAE7B,GADA+3L,EAAK33L,KAAKk1L,GACM,IAAZivB,EAEFA,GADmBxsB,EAAKp0L,OAAO2pI,UACT3lH,OAGxB22K,GAAcimB,EACdxsB,EAAK93L,KAAK,IAAKvI,EAAIioM,IAAYr/K,MAAM27K,YACrClE,EAAK93L,KAAK,IAAKnC,EAAIwgM,EAAa,KAAOqB,IAAYr/K,MAAM27K,cAzBrB,kFA4BxC,MAAO,CAAEwa,UAAWhf,EAAS9zL,OAAO2pI,UAAU5lH,MAAO42K,cAiBnBkmB,CAAcpkN,EAAM,EAAG,EAFxC6Y,EAAEjZ,OAAO,MAElBy2M,EAR2B,EAQ3BA,UAAWnY,EARgB,EAQhBA,WAInB,OAHAn8F,EAAKliG,KAAK,SAAUq+L,EAAa,EAAIqB,IAAYr/K,MAAM27K,YACvD95F,EAAKliG,KAAK,QAASw2M,EAA2C,EAA/B9W,IAAYr/K,MAAM27K,YAE1C95F,GAUIsiH,GAAY,SAAS73C,EAAM62C,GACtC,IAAMrjM,EAAKqjM,EAASrjM,GACdskM,EAAY,CAChBtkM,GAAIA,EACJo6E,MAAOipH,EAASrjM,GAChBsH,MAAO,EACPC,OAAQ,GAGJ1O,EAAI2zJ,EACP5sK,OAAO,KACPC,KAAK,KAAMmgB,GACXngB,KAAK,QAAS,cAEK,UAAlBwjN,EAAS5hN,MA3We,SAAAoX,GAC5BA,EACGjZ,OAAO,UACPyF,MAAM,SAAU,SAChBA,MAAM,OAAQ,SACdxF,KAAK,IAAK0/L,IAAYr/K,MAAM+9K,UAC5Bp+L,KAAK,KAAM0/L,IAAYr/K,MAAMmlB,QAAUk6J,IAAYr/K,MAAM+9K,UACzDp+L,KAAK,KAAM0/L,IAAYr/K,MAAMmlB,QAAUk6J,IAAYr/K,MAAM+9K,UAoW7BsmB,CAAe1rM,GACxB,QAAlBwqM,EAAS5hN,MAxIM,SAAAoX,GACnBA,EAAEjZ,OAAO,UACNyF,MAAM,SAAU,SAChBA,MAAM,OAAQ,SACdxF,KAAK,IAAK0/L,IAAYr/K,MAAM+9K,SAAWsB,IAAYr/K,MAAMo+K,aACzDz+L,KACC,KACA0/L,IAAYr/K,MAAMmlB,QAAUk6J,IAAYr/K,MAAM+9K,SAAWsB,IAAYr/K,MAAMo+K,aAE5Ez+L,KACC,KACA0/L,IAAYr/K,MAAMmlB,QAAUk6J,IAAYr/K,MAAM+9K,SAAWsB,IAAYr/K,MAAMo+K,aAGxEzlL,EACJjZ,OAAO,UACPyF,MAAM,SAAU,SAChBA,MAAM,OAAQ,SACdxF,KAAK,IAAK0/L,IAAYr/K,MAAM+9K,UAC5Bp+L,KAAK,KAAM0/L,IAAYr/K,MAAMmlB,QAAUk6J,IAAYr/K,MAAM+9K,SAAW,GACpEp+L,KAAK,KAAM0/L,IAAYr/K,MAAMmlB,QAAUk6J,IAAYr/K,MAAM+9K,SAAW,GAoH1CumB,CAAa3rM,GACpB,SAAlBwqM,EAAS5hN,MAAqC,SAAlB4hN,EAAS5hN,MAnHjB,SAACoX,EAAGwqM,GAC5B,IAAI/7L,EAAQi4K,IAAYr/K,MAAMk+K,UAC1B72K,EAASg4K,IAAYr/K,MAAMm+K,WAE/B,GAAIglB,EAASjiK,SAAU,CACrB,IAAIsrC,EAAMplE,EACVA,EAAQC,EACRA,EAASmlE,EAEJ7zE,EACJjZ,OAAO,QACPyF,MAAM,SAAU,SAChBA,MAAM,OAAQ,SACdxF,KAAK,QAASynB,GACdznB,KAAK,SAAU0nB,GACf1nB,KAAK,IAAK0/L,IAAYr/K,MAAMmlB,SAC5BxlC,KAAK,IAAK0/L,IAAYr/K,MAAMmlB,SAmG2Bo/K,CAAkB5rM,EAAGwqM,GACzD,SAAlBA,EAAS5hN,MAAiBw0M,GAASoN,EAASthH,KAAK/hG,KAAM6Y,GACrC,YAAlBwqM,EAAS5hN,MAnWY,SAAAoX,GACzBA,EACGjZ,OAAO,QACPyF,MAAM,SAAU,QAChBA,MAAM,mBAAoB,KAC1BxF,KAAK,KAAM0/L,IAAYr/K,MAAMg+K,YAC7Br+L,KAAK,QAAS,WACdA,KAAK,KAAqC,EAA/B0/L,IAAYr/K,MAAMg+K,YAC7Br+L,KAAK,KAAM,GACXA,KAAK,KAAM,GA0VmB6kN,CAAY7rM,GACvB,YAAlBwqM,EAAS5hN,MAAuD,IAAjC4hN,EAASnB,aAAa7qN,QAtV5B,SAACwhB,EAAGwqM,GACjC,IAAMnjM,EAAQrH,EACXjZ,OAAO,QACPC,KAAK,IAAK,EAAI0/L,IAAYr/K,MAAMmlB,SAChCxlC,KAAK,IAAK0/L,IAAYr/K,MAAMg+K,WAAa,EAAIqB,IAAYr/K,MAAMmlB,SAC/DxlC,KAAK,YAAa0/L,IAAYr/K,MAAMs3K,UACpC33L,KAAK,QAAS,eACdG,KAAKqjN,EAASrjM,IAEX6gM,EAAW3gM,EAAM3c,OAAO2pI,UAC9Br0H,EAAE3Y,OAAO,OAAQ,gBACdL,KAAK,IAAK0/L,IAAYr/K,MAAMmlB,SAC5BxlC,KAAK,IAAK0/L,IAAYr/K,MAAMmlB,SAC5BxlC,KAAK,QAASghN,EAASv5L,MAAQ,EAAIi4K,IAAYr/K,MAAMmlB,SACrDxlC,KAAK,SAAUghN,EAASt5L,OAAS,EAAIg4K,IAAYr/K,MAAMmlB,SACvDxlC,KAAK,KAAM0/L,IAAYr/K,MAAMgP,QAwU9By1L,CAAgB9rM,EAAGwqM,GACC,YAAlBA,EAAS5hN,MAAsB4hN,EAASnB,aAAa7qN,OAAS,GAAG+rN,GAAevqM,EAAGwqM,GAEvF,IAAMuB,EAAW/rM,EAAEtV,OAAO2pI,UAM1B,OALAo3E,EAAUh9L,MAAQs9L,EAASt9L,MAAQ,EAAIi4K,IAAYr/K,MAAMmlB,QACzDi/K,EAAU/8L,OAASq9L,EAASr9L,OAAS,EAAIg4K,IAAYr/K,MAAMmlB,QAE3Do8K,GAAYzhM,EAAIskM,GAETA,GAGLj6E,GAAY,EF/XhBzsG,UAAO8uC,GAAKm4I,GAKZ,IAAMC,GAAoB,GA8EpBC,GAAY,SAAZA,EAAaljH,EAAKswG,EAAS/wJ,EAAUsiK,GAEzC,IAKI1uN,EALEilG,EAAQ,IAAId,KAASzf,MAAM,CAC/BkuD,UAAU,EACVrtC,YAAY,IAIVyqH,GAAc,EAClB,IAAKhwN,EAAI,EAAGA,EAAI6sG,EAAIxqG,OAAQrC,IAC1B,GAAoB,aAAhB6sG,EAAI7sG,GAAGysG,KAAqB,CAC9BujH,GAAc,EACd,MAKA5jK,EACF64C,EAAMD,SAAS,CACb4iF,QAAS,KACTriF,YAAY,EACZqtC,UAAU,EAEVi9C,OAAQ,aACRnI,QAASsoC,EAAc,EAAIh2F,GAAKyvE,iBAChCjX,QAASw9B,EAAc,EAAI,GAC3BrD,cAAc,IAKhB1nH,EAAMD,SAAS,CACb4iF,QAAS,KACTriF,YAAY,EACZqtC,UAAU,EAIV80C,QAASsoC,EAAc,EAAIh2F,GAAKyvE,iBAChCjX,QAASw9B,EAAc,EAAI,GAC3BngC,OAAQ,aAER88B,cAAc,IAKlB1nH,EAAMmwC,qBAAoB,WACxB,MAAO,MAGTy6E,GAAQ3B,QAAQrhH,GAQhB,IAPA,IAAMigH,EAAS+C,GAAQnC,YACjBpF,EAAYuH,GAAQlG,eAEpBx2L,EAAOzyB,OAAOyyB,KAAK25L,GAIhB9sN,EAAI,EAAGA,EAAImzB,EAAK9wB,OAAQrC,IAAK,CACpC,IAAMquN,EAAWvB,EAAO35L,EAAKnzB,IAEzBosD,IACFiiK,EAASjiK,SAAWA,GAGtB,IAAI79C,OAAI,EACR,GAAI8/M,EAASxhH,IAAK,CAChB,IAAIzhB,EAAM+xH,EACPvyM,OAAO,KACPC,KAAK,KAAMwjN,EAASrjM,IACpBngB,KAAK,QAAS,cACjB0D,EAAOwhN,EAAU1B,EAASxhH,IAAKzhB,EAAKijI,EAASrjM,IAAK0jM,GAKhD,IAAIuB,GADJ7kI,EAAMqjI,GAAerjI,EAAKijI,EAAUK,IAChBngN,OAAO2pI,UAC3B3pI,EAAK+jB,MAAQ29L,EAAU39L,MACvB/jB,EAAKgkB,OAAS09L,EAAU19L,OAASynG,GAAK3pF,QAAU,EAChDy/K,GAAkBzB,EAASrjM,IAAM,CAAEtiB,EAAGsxH,GAAK0vE,wBAS7Cn7L,EAAO8gN,GAAUlS,EAASkR,GAG5B,GAAIA,EAASthH,KAAM,CAEjB,IAAMmjH,EAAU,CACdhD,aAAc,GACdliM,GAAIqjM,EAASrjM,GAAK,QAClB+hF,KAAMshH,EAASthH,KACftgG,KAAM,QAEFsgG,EAAOsiH,GAAUlS,EAAS+S,GAGD,YAA3B7B,EAASthH,KAAK9iG,UAChBg7F,EAAMN,QAAQp2F,EAAKyc,GAAK,QAAS+hF,GACjC9H,EAAMN,QAAQp2F,EAAKyc,GAAIzc,KAEvB02F,EAAMN,QAAQp2F,EAAKyc,GAAIzc,GACvB02F,EAAMN,QAAQp2F,EAAKyc,GAAK,QAAS+hF,IAGnC9H,EAAM0vC,UAAUpmI,EAAKyc,GAAIzc,EAAKyc,GAAK,UACnCi6E,EAAM0vC,UAAUpmI,EAAKyc,GAAK,QAASzc,EAAKyc,GAAK,eAK7Ci6E,EAAMN,QAAQp2F,EAAKyc,GAAIzc,GAI3BkxL,EAAO76E,MAAM,SAAU3f,EAAMovC,YAAapvC,GAC1C,IAAI68F,EAAM,EACVwmB,EAAUjxL,SAAQ,SAAS+6F,GA/HP,IAAApnH,EAgIlB82L,IACArC,EAAO76E,MAAM,eAAgBwN,GAC7BntB,EAAMI,QACJ+sB,EAASviG,IACTuiG,EAASG,IACT,CACEH,SAAUA,EACV9/F,OAvIctnB,EAuIOonH,EAASj4B,MAtI7BnvF,EAAOA,EAAK3I,OAAS23H,GAAKuvE,eAAiB,GAuI5Ch3K,OAAQynG,GAAKwvE,YAAcr3D,EAAO6tD,QAAQ5tE,EAASj4B,OAAO93F,OAC1DslL,SAAU,KAEZ,KAAOma,MAIX19F,KAAMugB,OAAO1f,GAEbw6F,EAAO76E,MAAM,qBAAsB3f,EAAMrtF,SACzC,IAAMu4M,EAAUhT,EAAQ5uM,OAExB02F,EAAMrtF,QAAQyf,SAAQ,SAAShzB,QACZ,IAANA,QAA8C,IAAlB4gG,EAAM12F,KAAKlK,IAChDo7L,EAAOrwF,KAAK,QAAU/qG,EAAI,KAAO29B,KAAKC,UAAUgjE,EAAM12F,KAAKlK,KAC3D0G,iBAAO,IAAMolN,EAAQnlM,GAAK,KAAO3mB,GAAGwG,KAClC,YACA,cACGo6F,EAAM12F,KAAKlK,GAAG/B,EAAI2iG,EAAM12F,KAAKlK,GAAGiuB,MAAQ,GACzC,KACC2yE,EAAM12F,KAAKlK,GAAGqE,GACZonN,GAAkBzrN,GAAKyrN,GAAkBzrN,GAAGqE,EAAI,GACjDu8F,EAAM12F,KAAKlK,GAAGkuB,OAAS,GACzB,MAEJxnB,iBAAO,IAAMolN,EAAQnlM,GAAK,KAAO3mB,GAAGwG,KAClC,eACAo6F,EAAM12F,KAAKlK,GAAG/B,EAAI2iG,EAAM12F,KAAKlK,GAAGiuB,MAAQ,GAEzBniB,SAAS7C,iBAAiB,IAAM6iN,EAAQnlM,GAAK,KAAO3mB,EAAI,aAChEgzB,SAAQ,SAAAm9K,GACf,IAAM9mM,EAAS8mM,EAAQuR,cACnBqK,EAAS,EACTC,EAAS,EACT3iN,IACEA,EAAOq4M,gBAAeqK,EAAS1iN,EAAOq4M,cAAc7tE,UAAU5lH,OAClE+9L,EAAS7sM,SAAS9V,EAAOtC,aAAa,gBAAiB,IACnD2jC,OAAO5qC,MAAMksN,KACfA,EAAS,IAGb7b,EAAQ3kM,aAAa,KAAM,EAAIwgN,EAAS,GACxC7b,EAAQ3kM,aAAa,KAAMugN,EAASC,EAAS,OAG/C5wB,EAAO76E,MAAM,WAAavgH,EAAI,KAAO29B,KAAKC,UAAUgjE,EAAM12F,KAAKlK,QAInE,IAAIurN,EAAWO,EAAQj4E,UAEvBjzC,EAAMnyB,QAAQz7C,SAAQ,SAASrN,QACZ,IAANA,QAA8C,IAAlBi7E,EAAMj3B,KAAKhkD,KAChDy1K,EAAO76E,MAAM,QAAU56F,EAAE3lB,EAAI,OAAS2lB,EAAEuH,EAAI,KAAOyQ,KAAKC,UAAUgjE,EAAMj3B,KAAKhkD,KEoH3D,SAASwtJ,EAAMptK,EAAMgoH,GAc3ChoH,EAAKouC,OAASpuC,EAAKouC,OAAOjtC,QAAO,SAAAzJ,GAAC,OAAKitC,OAAO5qC,MAAMrC,EAAE4G,MAGtD,IAAMstM,EAAW5rM,EAAKouC,OAGhBy9J,EAAenrM,iBAClBxI,GAAE,SAAShC,GACV,OAAOA,EAAEgC,KAEVoG,GAAE,SAASpI,GACV,OAAOA,EAAEoI,KAEVo9D,MAAM26H,cAEH2V,EAAU5+B,EACb5sK,OAAO,QACPC,KAAK,IAAKorM,EAAaD,IACvBnrM,KAAK,KAAM,OAASwqI,IACpBxqI,KAAK,QAAS,cACb+2H,EAAM,GAiBV,GAhBI2oE,IAAYr/K,MAAMg7K,sBAQpBtkE,GADAA,GANAA,EACExsH,OAAOk+D,SAAS+iI,SAChB,KACAjhM,OAAOk+D,SAASgjI,KAChBlhM,OAAOk+D,SAASijI,SAChBnhM,OAAOk+D,SAASkjI,QACR1yK,QAAQ,MAAO,QACfA,QAAQ,MAAO,QAG3BsyK,EAAQvrM,KACN,aACA,OAAS+2H,EAAM,IA/CO,SAASn1H,GAC/B,OAAQA,GACN,KAAKojN,GAAQl9F,aAAaC,YACxB,MAAO,cACT,KAAKi9F,GAAQl9F,aAAaE,UACxB,MAAO,YACT,KAAKg9F,GAAQl9F,aAAaG,YACxB,MAAO,cACT,KAAK+8F,GAAQl9F,aAAaI,WACxB,MAAO,cAsCUi5F,CAAgB6D,GAAQl9F,aAAaI,YAAc,aAG5C,IAAnBX,EAASj4B,MAAuB,CAczC,IAbA,IAAMiL,EAAQoyE,EAAK5sK,OAAO,KAAKC,KAAK,QAAS,cADJ,EAGxBi8F,EAAM69F,kBAAkBv6L,EAAKouC,QAAtCl2C,EAHiC,EAGjCA,EAAGoG,EAH8B,EAG9BA,EAELy5B,EAAOgwG,EAAO6tD,QAAQ5tE,EAASj4B,OAIjCsxH,EAAc,EACZ6E,EAAY,GACdxtB,EAAW,EACXrsC,EAAO,EAEFz2J,EAAI,EAAGA,GAAKmiC,EAAK9/B,OAAQrC,IAAK,CACrC,IAAMm6F,EAAQiL,EACXx6F,OAAO,QACPC,KAAK,cAAe,UACpBG,KAAKm3B,EAAKniC,IACV6K,KAAK,IAAKvI,GACVuI,KAAK,IAAKnC,EAAI+iN,GAEX8E,EAAYp2H,EAAM5rF,OAAO2pI,UAM/B,GALA4qD,EAAWv+L,KAAKG,IAAIo+L,EAAUytB,EAAUj+L,OACxCmkI,EAAOlyJ,KAAKE,IAAIgyJ,EAAM85D,EAAUjuN,GAEhCm9L,EAAO/mC,KAAK63D,EAAUjuN,EAAGA,EAAGoG,EAAI+iN,GAEZ,IAAhBA,EAAmB,CACrB,IAAM1X,EAAW55G,EAAM5rF,OAAO2pI,UAC9BuzE,EAAc1X,EAASxhL,OACvBktK,EAAO/mC,KAAK,eAAgB+yD,EAAa/iN,GAE3C4nN,EAAUjpN,KAAK8yF,GAGjB,IAAIq2H,EAAY/E,EAActpL,EAAK9/B,OACnC,GAAI8/B,EAAK9/B,OAAS,EAAG,CACnB,IAAMouN,GAAatuL,EAAK9/B,OAAS,GAAKopN,EAAc,GAEpD6E,EAAUj5L,SAAQ,SAAC8iE,EAAOn6F,GAAR,OAAcm6F,EAAMtvF,KAAK,IAAKnC,EAAI1I,EAAIyrN,EAAcgF,MACtED,EAAY/E,EAActpL,EAAK9/B,OAGjC,IAAMm+C,EAAS4kD,EAAM72F,OAAO2pI,UAE5B9yC,EACGl6F,OAAO,OAAQ,gBACfL,KAAK,QAAS,OACdA,KAAK,IAAKvI,EAAIwgM,EAAW,EAAIyH,IAAYr/K,MAAMmlB,QAAU,GACzDxlC,KAAK,IAAKnC,EAAI8nN,EAAY,EAAIjmB,IAAYr/K,MAAMmlB,QAAU,EAAI,KAC9DxlC,KAAK,QAASi4L,EAAWyH,IAAYr/K,MAAMmlB,SAC3CxlC,KAAK,SAAU2lN,EAAYjmB,IAAYr/K,MAAMmlB,SAEhDovJ,EAAO/mC,KAAKl4G,GAqBd60F,KFjPIq7E,CAASvT,EAASl4G,EAAMj3B,KAAKhkD,GAAIi7E,EAAMj3B,KAAKhkD,GAAGooG,cAInDw9F,EAAWO,EAAQj4E,UAEnB,IAAMo3E,EAAY,CAChBtkM,GAAIohC,GAAsB,OAC1Bg5C,MAAOh5C,GAAsB,OAC7B95B,MAAO,EACPC,OAAQ,GAOV,OAJA+8L,EAAUh9L,MAAQs9L,EAASt9L,MAAQ,EAAI0nG,GAAK3pF,QAC5Ci/K,EAAU/8L,OAASq9L,EAASr9L,OAAS,EAAIynG,GAAK3pF,QAE9CovJ,EAAO76E,MAAM,eAAgB0qG,EAAWrqH,GACjCqqH,GAGM,GA1RQ,aA0RR,GAhQK,SAAStkN,EAAMggB,GACjCgvG,GAAOuwE,IAAYr/K,MACnB0d,UAAO8uC,GAAGvhD,QACVyS,UAAOvc,MAAMrhB,GACby0L,EAAO76E,MAAM,qBAAuB55G,GAGpC,IAAMmyM,EAAUpyM,iBAAO,QAAD,OAASigB,EAAT,OACRmyL,EAzBXvyM,OAAO,QACPA,OAAO,UACPC,KAAK,KAAM,iBACXA,KAAK,OAAQ,IACbA,KAAK,OAAQ,GACbA,KAAK,cAAe,IACpBA,KAAK,eAAgB,IACrBA,KAAK,SAAU,QACfD,OAAO,QACPC,KAAK,IAAK,6BAmBC,IAAIs5F,KAASzf,MAAM,CAC/B6gB,YAAY,EACZqtC,UAAU,EAEVg1C,QAAS,OAKLxyC,qBAAoB,WACxB,MAAO,MAGT,IAAMw3E,EAAUiD,GAAQjC,aACxBmC,GAAUnD,EAASzP,OAASntL,GAAW,GAEvC,IAAMqgB,EAAU2pF,GAAK3pF,QACfmQ,EAAS28J,EAAQ5uM,OAAO2pI,UAExB5lH,EAAQkuB,EAAOluB,MAAkB,EAAV+d,EACvB9d,EAASiuB,EAAOjuB,OAAmB,EAAV8d,EAE3B2pF,GAAKktE,aACPiW,EAAQtyM,KAAK,QAAS,QACtBsyM,EAAQtyM,KAAK,QAAb,qBAA4C,KAARynB,EAApC,SAGA6qL,EAAQtyM,KAAK,QAAiB,KAARynB,GAGxB6qL,EAAQtyM,KACN,UACA,UAAG21C,EAAOl+C,EAAI03H,GAAK3pF,QAAnB,aAA+BmQ,EAAO93C,EAAIsxH,GAAK3pF,QAA/C,KAA4D/d,EAAQ,IAAMC,IG9ExEynG,GAAO,GAQT22F,GAAS,GAiBPC,GAAY,SAAC/sM,EAAGnW,EAAQa,EAAMsiN,GAElC,GAAgB,SAAZtiN,EAAKyc,GAAe,CACtB,IAAIiyK,EAAQ,QACO,IAAf1uL,EAAK1J,QACPo4L,EAAQ,UAES,IAAf1uL,EAAK1J,QACPo4L,EAAQ,OAEQ,YAAd1uL,EAAK9B,OACPwwL,EAAQ1uL,EAAK9B,MAGVkkN,GAAOpiN,EAAKyc,MACf2lM,GAAOpiN,EAAKyc,IAAM,CAChBA,GAAIzc,EAAKyc,GACTiyK,QACAniH,YAAavsE,EAAKyc,GAClB0/K,QAAS,uBAKTn8L,EAAKusE,cACHz3E,MAAM2D,QAAQ2pN,GAAOpiN,EAAKyc,IAAI8vD,cAEhC61I,GAAOpiN,EAAKyc,IAAIiyK,MAAQ,gBACxB0zB,GAAOpiN,EAAKyc,IAAI8vD,YAAYzzE,KAAKkH,EAAKusE,cAElC61I,GAAOpiN,EAAKyc,IAAI8vD,YAAYz4E,OAAS,GAEvCsuN,GAAOpiN,EAAKyc,IAAIiyK,MAAQ,gBACpB0zB,GAAOpiN,EAAKyc,IAAI8vD,cAAgBvsE,EAAKyc,GAEvC2lM,GAAOpiN,EAAKyc,IAAI8vD,YAAc,CAACvsE,EAAKusE,aAEpC61I,GAAOpiN,EAAKyc,IAAI8vD,YAAc,CAAC61I,GAAOpiN,EAAKyc,IAAI8vD,YAAavsE,EAAKusE,eAGnE61I,GAAOpiN,EAAKyc,IAAIiyK,MAAQ,OACxB0zB,GAAOpiN,EAAKyc,IAAI8vD,YAAcvsE,EAAKusE,eASpC61I,GAAOpiN,EAAKyc,IAAIve,MAAQ8B,EAAKs+F,MAChC4yF,EAAO/mC,KAAK,sBAAuBnqJ,EAAKyc,IACxC2lM,GAAOpiN,EAAKyc,IAAIve,KAAO,QACvBkkN,GAAOpiN,EAAKyc,IAAIiyK,MAAsB,YAAd1uL,EAAK9B,KAAqB,UAAY,mBAC9DkkN,GAAOpiN,EAAKyc,IAAI0/K,QACdimB,GAAOpiN,EAAKyc,IAAI0/K,QAChB,KACCmmB,EAAU,gDAAkD,yBAGjE,IAAMC,EAAW,CACf76F,WAAY,GACZgnE,MAAO0zB,GAAOpiN,EAAKyc,IAAIiyK,MACvB8U,UAAW4e,GAAOpiN,EAAKyc,IAAI8vD,YAC3B4vH,QAASimB,GAAOpiN,EAAKyc,IAAI0/K,QACzBr6L,MAAO,GACP2a,GAAIzc,EAAKyc,GACTve,KAAMkkN,GAAOpiN,EAAKyc,IAAIve,KACtB4jC,QAAS,IAGX,GAAI9hC,EAAKw+F,KAAM,CAEb,IAAMgkH,EAAW,CACf96F,WAAY,GACZgnE,MAAO,OACP8U,UAAWxjM,EAAKw+F,KAAK/hG,KACrB0/L,QAAS,oBACTr6L,MAAO,GACP2a,GAAIzc,EAAKyc,GAAK,WACdve,KAAMkkN,GAAOpiN,EAAKyc,IAAIve,KACtB4jC,QAAS,IAEL2gL,EAAY,CAChB/6F,WAAY,GACZgnE,MAAO,YACP8U,UAAWxjM,EAAKw+F,KAAK/hG,KACrB0/L,QAASimB,GAAOpiN,EAAKyc,IAAI0/K,QACzBr6L,MAAO,GACP2a,GAAIzc,EAAKyc,GAAK,aACdve,KAAM,QACN4jC,QAAS,GAEXxsB,EAAE8gF,QAAQp2F,EAAKyc,GAAK,aAAcgmM,GAElCntM,EAAE8gF,QAAQosH,EAAS/lM,GAAI+lM,GACvBltM,EAAE8gF,QAAQp2F,EAAKyc,GAAI8lM,GAEnBjtM,EAAE8wH,UAAUpmI,EAAKyc,GAAIzc,EAAKyc,GAAK,cAC/BnH,EAAE8wH,UAAUo8E,EAAS/lM,GAAIzc,EAAKyc,GAAK,cAEnC,IAAI+vB,EAAOxsC,EAAKyc,GACZgwB,EAAK+1K,EAAS/lM,GAES,YAAvBzc,EAAKw+F,KAAK9iG,WACZ8wC,EAAOg2K,EAAS/lM,GAChBgwB,EAAKzsC,EAAKyc,IAEZnH,EAAEwhF,QAAQtqD,EAAMC,EAAI,CAClBkiJ,UAAW,OACXuZ,UAAW,GACXpmM,MAAO,YACP4lH,WAAY,GACZy0E,QAAS,uBACTsF,eAAgB,aAChBroB,SAAU,IACV3vC,UAAW,OACXk+D,UAAW,gBAGbryL,EAAE8gF,QAAQp2F,EAAKyc,GAAI8lM,GAInBpjN,GACgB,SAAdA,EAAOsd,KACTy0K,EAAO/mC,KAAK,gBAAiBnqJ,EAAKyc,GAAI,8BAA+Btd,EAAOsd,IAC5EnH,EAAE8wH,UAAUpmI,EAAKyc,GAAItd,EAAOsd,KAG5Bzc,EAAKs+F,MACP4yF,EAAO/mC,KAAK,0BACZu4D,GAASptM,EAAGtV,EAAMA,EAAKs+F,KAAMgkH,KAG7B/uB,GAAM,EACJmvB,GAAW,SAACptM,EAAGnW,EAAQm/F,EAAKgkH,GAChCpxB,EAAOhoH,MAAM,QAASo1B,GACtBA,EAAIx1E,SAAQ,SAAA++F,GACV,GAAkB,UAAdA,EAAK3pB,MAAkC,YAAd2pB,EAAK3pB,KAChCmkH,GAAU/sM,EAAGnW,EAAQ0oH,EAAMy6F,QACtB,GAAkB,aAAdz6F,EAAK3pB,KAAqB,CACnCmkH,GAAU/sM,EAAGnW,EAAQ0oH,EAAKzpB,OAAQkkH,GAClCD,GAAU/sM,EAAGnW,EAAQ0oH,EAAKxpB,OAAQikH,GAClC,IAAM9gB,EAAW,CACf/kL,GAAI,OAAS82K,GACb5E,UAAW,SACXuZ,UAAW,aACXpmM,MAAO,YACP4lH,WAAY,GACZ7wB,MAAOgxB,EAAKt7C,YACZk1H,eAAgB,aAChBroB,SAAU,IACV3vC,UAAW,OACXk+D,UAAW,SACXxL,QAAS,cAEPwmB,EAAU96F,EAAKzpB,OAAO3hF,GACtBmmM,EAAQ/6F,EAAKxpB,OAAO5hF,GAExBnH,EAAEwhF,QAAQ6rH,EAASC,EAAOphB,EAAUjO,IACpCA,UA0IS,GAnUQ,SAASmO,GAE9B,IADA,IAAM98K,EAAOzyB,OAAOyyB,KAAK88K,GAChBjwM,EAAI,EAAGA,EAAImzB,EAAK9wB,OAAQrC,IAC/Bg6H,GAAK7mG,EAAKnzB,IAAMiwM,EAAI98K,EAAKnzB,KAgUd,GAhIK,SAASgL,EAAMggB,GACjCy0K,EAAO/mC,KAAK,6BAA8B1tI,GAC1C6kM,GAAQ15L,QACRw6L,GAAS,GACT,IAAM/nL,EAAS1d,KAAM0d,OACrBA,EAAO8uC,GAAKm4I,GAGZ,IACEjnL,EAAOvc,MAAMrhB,GACb,MAAO8iH,GACP2xE,EAAO76E,MAAM,kBAIf,IAAI5pB,EAAM60H,GAAQljB,oBACC,IAAR3xG,IACTA,EAAM,MAGR,IAAMg/B,EAAOuwE,IAAYr/K,MACnBk7K,EAAcpsE,EAAKosE,aAAe,GAClCC,EAAcrsE,EAAKqsE,aAAe,GAGlCxiL,EAAI,IAAIsgF,KAASzf,MAAM,CAC3B6gB,YAAY,EACZqtC,UAAU,IAET5tC,SAAS,CACR4iF,QAAS,KACT0C,QAAS8b,EACT1e,QAAS2e,EACT9c,QAAS,EACTE,QAAS,IAEVr0C,qBAAoB,WACnB,MAAO,MAGXqqD,EAAO/mC,KAAKm3D,GAAQhC,gBACpBgC,GAAQ3B,QAAQ2B,GAAQhC,gBACxBpuB,EAAO/mC,KAAKm3D,GAAQhC,gBACpB+C,GAAU/sM,OAAGmM,EAAW6/L,GAAQhC,gBAAgB,GAGhD,IAAM9+M,EAAMhE,iBAAO,QAAD,OAASigB,EAAT,OAGZ0gL,EAAU3gM,iBAAO,IAAMigB,EAAK,MAClCq5E,GAAOqnG,EAAS7nL,EAAG,CAAC,QAAS,eAAgBmH,GAE7C,IAsBMw1B,EAASzxC,EAAIR,OAAO2pI,UAEpB5lH,EAAQkuB,EAAOluB,MAAQ+d,GACvB9d,EAASiuB,EAAOjuB,OAAS8d,GAO/BthC,EAAIlE,KAAK,QAAiB,KAARynB,GAClBvjB,EAAIlE,KAAK,QAAS,gBAOlB,IAAMylM,EAAYvhM,EAAIR,OAAO2pI,UAEzBle,EAAKktE,aACPn4L,EAAIlE,KAAK,QAAS,QAClBkE,EAAIlE,KAAK,QAAT,qBAAgCynB,EAAhC,UAEAvjB,EAAIlE,KAAK,SAAU0nB,GACnBxjB,EAAIlE,KAAK,QAASynB,IAIpB,IAAMi+K,EAAO,GAAH,OAAMD,EAAUhuM,EAnDV,EAmDN,YAA+BguM,EAAU5nM,EAnDnC,EAmDN,YAAwD4pB,EAAxD,YAAiEC,GAK3E,GAJAktK,EAAO76E,MAAP,kBAAwB2rF,IACxBxhM,EAAIlE,KAAK,UAAW0lM,IAGfv2E,EAAKmmE,WAER,IADA,IAAMyQ,EAASzgM,SAAS7C,iBAAiB,QAAU0d,EAAK,wBAC/CxhB,EAAI,EAAGA,EAAIonM,EAAOvuM,OAAQmH,IAAK,CACtC,IAAM47F,EAAQwrG,EAAOpnM,GAGfspB,EAAMsyE,EAAM8yC,UAEZ7vH,EAAOlY,SAASgD,gBAAgB,6BAA8B,QACpEkV,EAAKxY,aAAa,KAAM,GACxBwY,EAAKxY,aAAa,KAAM,GACxBwY,EAAKxY,aAAa,QAASijB,EAAIR,OAC/BjK,EAAKxY,aAAa,SAAUijB,EAAIP,QAChClK,EAAKxY,aAAa,QAAS,iBAE3Bu1F,EAAMj3F,aAAaka,EAAM+8E,EAAMtyF,cCtUjCs+M,GAAU,GACV72E,GAAO,KACP82E,GAAW,CAAEC,OAAQ/2E,IACrBg3E,GAAY,SACZx5K,GAAY,KACZ48H,GAAM,EAYV,SAAS68C,KACP,OAXF,SAAgBnvN,GAId,IAHA,IAAIs5B,EAAS,GACTs8H,EAAa,iEACbw5D,EAAmBx5D,EAAW51J,OACzBrC,EAAI,EAAGA,EAAIqC,EAAQrC,IAC1B27B,GAAUs8H,EAAWj5F,OAAOz6D,KAAKoB,MAAMpB,KAAK6D,SAAWqpN,IAEzD,OAAO91L,EAIA+1L,CAAO,GAGhB,SAASC,GAAkBC,EAAeC,GAExC,IADApyB,EAAO76E,MAAM,8BAA+BgtG,EAAc5mM,GAAI6mM,EAAY7mM,IACnE4mM,EAAcj9C,KAAOk9C,EAAYl9C,KAAOi9C,IAAkBC,GAErC,MAAtBA,EAAYnkN,QAF4D,CAG5E,GAAIrK,MAAM2D,QAAQ6qN,EAAYnkN,QAE5B,OADA+xL,EAAO76E,MAAM,mBAAoBitG,EAAYnkN,QAE3CikN,GAAkBC,EAAeR,GAAQS,EAAYnkN,OAAO,MAC5DikN,GAAkBC,EAAeR,GAAQS,EAAYnkN,OAAO,KAG9DmkN,EAAcT,GAAQS,EAAYnkN,QAItC,OADA+xL,EAAO76E,MAAMgtG,EAAc5mM,GAAI6mM,EAAY7mM,IACpC4mM,EAAc5mM,KAAO6mM,EAAY7mM,GAsBnC,IAGHg1D,GAAU,GAsFd,SAAS8xI,GAAO10H,EAAK77F,EAAKwwN,GACxB,IAAM99M,EAAQmpF,EAAI5wF,QAAQjL,IACX,IAAX0S,EACFmpF,EAAI/1F,KAAK0qN,GAET30H,EAAIprF,OAAOiC,EAAO,EAAG89M,GAIzB,SAASC,GAAyBC,GAChC,IAAM/vF,EAAS+vF,EAAUnuN,QAAO,SAACqsC,EAAK+xF,GACpC,OAAI/xF,EAAIwkI,IAAMzyC,EAAOyyC,IAAYxkI,EAC1B+xF,IACN+vF,EAAU,IACTnnN,EAAO,GACXmnN,EAAU56L,SAAQ,SAASh3B,GAEvByK,GADEzK,IAAM6hI,EACA,MAEA,SAGZ,IA3HczwH,EAAMg1F,EACdyrH,EA0HA9sH,EAAQ,CAACt6F,EAAMo3H,EAAOl3G,GAAIk3G,EAAOyyC,KACvC,IAAK,IAAIxyC,KAAUkvF,GACbA,GAASlvF,KAAYD,EAAOl3G,IAAIo6E,EAAM/9F,KAAK86H,GAGjD,GADAs9D,EAAO76E,MAAMxf,EAAMrzF,KAAK,MACpB1O,MAAM2D,QAAQk7H,EAAOx0H,QAAS,CAChC,IAAMykN,EAAYf,GAAQlvF,EAAOx0H,OAAO,IACxCokN,GAAOG,EAAW/vF,EAAQiwF,GAC1BF,EAAU5qN,KAAK+pN,GAAQlvF,EAAOx0H,OAAO,SAChC,IAAqB,MAAjBw0H,EAAOx0H,OAChB,OAEA,IAAM0kN,EAAahB,GAAQlvF,EAAOx0H,QAClCokN,GAAOG,EAAW/vF,EAAQkwF,GAxId3gN,EA0IKwgN,EA1ICxrH,EA0IU,SAAApmG,GAAC,OAAIA,EAAE2qB,IAzI/BknM,EAAYxxN,OAAOY,OAAO,MA0IhC0wN,GADAC,EAxIOxgN,EAAK3N,QAAO,SAACqsC,EAAKimF,GACvB,IAAM70H,EAAMklG,EAAG2vB,GAKf,OAJK87F,EAAU3wN,KACb2wN,EAAU3wN,IAAO,EACjB4uC,EAAI9oC,KAAK+uH,IAEJjmF,IACN,KAqIE,ICvLHkiL,GDmNSC,GAAkB,WAC7B,IAAML,EAAYvxN,OAAOyyB,KAAKi+L,IAASxsN,KAAI,SAASrD,GAClD,OAAO6vN,GAAQ7vN,MAMjB,OAJA0wN,EAAU56L,SAAQ,SAAS52B,GACzBg/L,EAAO76E,MAAMnkH,EAAEuqB,OAEjBinM,EAAUxqN,MAAK,SAACzF,EAAGC,GAAJ,OAAUA,EAAE0yK,IAAM3yK,EAAE2yK,OAC5Bs9C,GAYM,IACbtnG,aAnL0B,SAAS3vB,GACnCjjD,GAAYijD,GAmLZinC,WAhLwB,SAASswF,GACjC9yB,EAAO76E,MAAM,cAAe2tG,GAE5BA,GADAA,EAAeA,GAAgBA,EAAajmN,SACb,KAC/B,IACE0zE,GAAUh+C,KAAK3V,MAAMkmM,GACrB,MAAOvoM,GACPy1K,EAAO15L,MAAM,uCAAwCikB,EAAEi9G,WA0KzDurF,WAtKwB,WACxB,OAAOxyI,IAsKPkiD,OAnKoB,SAASvlD,GAC7B,IAAMulD,EAAS,CACbl3G,GAAIwmM,KACJvqF,QAAStqD,EACTg4F,IAAKA,KACLjnK,OAAgB,MAAR6sI,GAAe,KAAOA,GAAKvvH,IAErCuvH,GAAOrY,EACPkvF,GAAQlvF,EAAOl3G,IAAMk3G,EACrBmvF,GAASE,IAAarvF,EAAOl3G,GAC7By0K,EAAO76E,MAAM,iBAAmBsd,EAAOl3G,KA0JvCm3G,OAvJoB,SAAS5hI,GAC7B8wN,GAAS9wN,GAAgB,MAARg6I,GAAeA,GAAKvvH,GAAK,KAC1Cy0K,EAAO76E,MAAM,oBAsJb35G,MAnJmB,SAASwnN,GAC5B,IAAMb,EAAgBR,GAAQC,GAASE,KACjCM,EAAcT,GAAQC,GAASoB,IACrC,GA3DF,SAAyBb,EAAeC,GAGtC,OAFmBD,EAAcj9C,IAChBk9C,EAAYl9C,KACKg9C,GAAkBE,EAAaD,GAwD7Dc,CAAgBd,EAAeC,GACjCpyB,EAAO76E,MAAM,sBADf,CAIA,GAAI+sG,GAAkBC,EAAeC,GACnCR,GAASE,IAAaF,GAASoB,GAC/Bl4E,GAAO62E,GAAQC,GAASE,SACnB,CAEL,IAAMrvF,EAAS,CACbl3G,GAAIwmM,KACJvqF,QAAS,iBAAmBwrF,EAAc,SAAWlB,GACrD58C,IAAKA,KACLjnK,OAAQ,CAAS,MAAR6sI,GAAe,KAAOA,GAAKvvH,GAAIqmM,GAASoB,KAEnDl4E,GAAOrY,EACPkvF,GAAQlvF,EAAOl3G,IAAMk3G,EACrBmvF,GAASE,IAAarvF,EAAOl3G,GAE/By0K,EAAO76E,MAAMysG,IACb5xB,EAAO76E,MAAM,oBA6Hbwd,SA1HsB,SAASD,GAC/Bs9D,EAAO76E,MAAM,eAEb,IAAM55F,EAAKqmM,GADXE,GAAYpvF,GAEZoY,GAAO62E,GAAQpmM,IAuHfylB,MApHmB,SAASkiL,GAC5BlzB,EAAO76E,MAAM,WAAY+tG,GACzB,IAAM7yD,EAAM6yD,EAAUpmN,MAAM,KAAK,GAC7BqmN,EAAcpvM,SAASmvM,EAAUpmN,MAAM,KAAK,IAC5C21H,EAAiB,SAAR49B,EAAiBvlB,GAAO62E,GAAQC,GAASvxD,IAEtD,IADA2/B,EAAO76E,MAAMsd,EAAQ0wF,GACdA,EAAc,GAGnB,GADAA,MADA1wF,EAASkvF,GAAQlvF,EAAOx0H,SAEX,CACX,IAAMogH,EAAM,+DAEZ,MADA2xE,EAAO15L,MAAM+nH,GACPA,EAGVysB,GAAOrY,EACPmvF,GAASE,IAAarvF,EAAOl3G,IAqG7B6nM,YAzDyB,WACzBpzB,EAAO76E,MAAMwsG,IAEbY,GAAyB,CADZM,KAAkB,MAwD/Bn8L,MApDmB,WACnBi7L,GAAU,GAEVC,GAAW,CAAEC,OADb/2E,GAAO,MAEPg3E,GAAY,SACZ58C,GAAM,GAgDNm+C,sBA7CmC,WACnC,IAAMC,EAAY,GAClB,IAAK,IAAI5wF,KAAUkvF,GACjB0B,EAAU1rN,KAAK,CAAE9G,KAAM4hI,EAAQD,OAAQkvF,GAAQC,GAASlvF,MAE1D,OAAO4wF,GAyCPC,YAtCyB,WACzB,OAAO3B,IAsCP4B,WApCwB,WACxB,OAAO7B,IAoCPkB,mBACAY,iBAzB8B,WAC9B,OAAO3B,IAyBP5kB,aAvB0B,WAC1B,OAAO50J,IAuBPo7K,QArBqB,WACrB,OAAO54E,K,oBCrOL64E,GAAiB,GAEjB98G,GAAS,CACX8vF,YAAa,IACbitB,cAAe,SACfC,gBAAiB,EACjBC,gBAAiB,OACjBC,gBAAiB,EACjBC,aAAc,GACdC,UAAW,OACXC,WAAY,GACZC,aAAc,CAAC,UAAW,UAAW,UAAW,WAChDC,WAAY,GACZC,UAAW,CACTxhM,MAAO,GACPC,OAAQ,IACRjwB,GAAI,GACJoG,EAAG,IAGHqrN,GAAY,GA2BhB,SAASC,GAAYjlN,EAAKypC,EAAQy7K,EAAUxmM,GAC1C,IAAMq4C,EAAQ27H,EAAmBh0K,EAAagzK,cACxC76K,EAAQ0wF,GAAOs9G,aAAaK,EAAW39G,GAAOs9G,aAAavxN,QAC3D6xN,EAAUppN,iBACbxI,GAAE,SAAShC,GACV,OAAOiE,KAAKuE,MAAMxI,EAAEgC,MAErBoG,GAAE,SAASpI,GACV,OAAOiE,KAAKuE,MAAMxI,EAAEoI,MAErBo9D,MAAMA,GAET/2D,EACGnE,OAAO,YACPC,KAAK,IAAKqpN,EAAQ17K,IAClBnoC,MAAM,SAAUuV,GAChBvV,MAAM,eAAgBimG,GAAOk9G,iBAC7BnjN,MAAM,OAAQ,QAInB,SAAS8jN,GAAiBzoB,EAAS0oB,GACjCA,EAASA,GAAU1oB,EAAQn9L,OAAO2pI,UAClC,IAAMm8E,EAAM3oB,EAAQn9L,OAAO+lN,SAG3B,MAAO,CACL9xN,KAHS6xN,EAAIrqM,EAAIoqM,EAAO9xN,EAAI+xN,EAAIryN,EAIhCwmB,IAHS6rM,EAAIlyN,EAAIiyN,EAAO1rN,EAAI2rN,EAAI/zN,EAIhCgyB,MAAO8hM,EAAO9hM,MACdC,OAAQ6hM,EAAO7hM,QAInB,SAASgiM,GAAsBxlN,EAAKylN,EAAQC,EAAM18K,EAAWnyB,GAC3D65K,EAAO76E,MAAM,0BAA2B4vG,EAAQC,GAChD,IAAMC,EAAWP,GAAiBplN,EAAIhE,OAAO,SAAWypN,EAAS,YAC3DG,EAASR,GAAiBplN,EAAIhE,OAAO,SAAW0pN,EAAO,YAC7D,OAAQ18K,GACN,IAAK,KAIH,GAAI28K,EAASlyN,KAAOmyN,EAAOnyN,KAAO8zG,GAAO8vF,YAAa,CACpD,IAAM7zJ,EAAY,CAChBjwC,EAAGoyN,EAASlyN,KAAO8zG,GAAO8vF,YAC1B19L,EAAGisN,EAAOnsM,IAAMmsM,EAAOpiM,OAAS,GAGlCyhM,GAAYjlN,EAAK,CAACwjC,EADF,CAAEjwC,EAAGqyN,EAAOnyN,KAAOmyN,EAAOriM,MAAO5pB,EAAGisN,EAAOnsM,IAAMmsM,EAAOpiM,OAAS,IAC1C3M,EAAO,UAC9CouM,GACEjlN,EACA,CACE,CAAEzM,EAAGoyN,EAASlyN,KAAMkG,EAAGgsN,EAASlsM,IAAMksM,EAASniM,OAAS,GACxD,CAAEjwB,EAAGoyN,EAASlyN,KAAO8zG,GAAO8vF,YAAc,EAAG19L,EAAGgsN,EAASlsM,IAAMksM,EAASniM,OAAS,GACjF,CAAEjwB,EAAGoyN,EAASlyN,KAAO8zG,GAAO8vF,YAAc,EAAG19L,EAAG6pC,EAAU7pC,GAC1D6pC,GAEF3sB,QAGFouM,GACEjlN,EACA,CACE,CACEzM,EAAGoyN,EAASlyN,KACZkG,EAAGgsN,EAASlsM,IAAMksM,EAASniM,OAAS,GAEtC,CACEjwB,EAAGoyN,EAASlyN,KAAO8zG,GAAO8vF,YAAc,EACxC19L,EAAGgsN,EAASlsM,IAAMksM,EAASniM,OAAS,GAEtC,CACEjwB,EAAGoyN,EAASlyN,KAAO8zG,GAAO8vF,YAAc,EACxC19L,EAAGisN,EAAOnsM,IAAMmsM,EAAOpiM,OAAS,GAElC,CACEjwB,EAAGqyN,EAAOnyN,KAAOmyN,EAAOriM,MACxB5pB,EAAGisN,EAAOnsM,IAAMmsM,EAAOpiM,OAAS,IAGpC3M,GAGJ,MACF,IAAK,KAKH,GAAI+uM,EAAOnsM,IAAMksM,EAASlsM,IAAM8tF,GAAO8vF,YAAa,CAClD,IAAM7zJ,EAAY,CAChBjwC,EAAGqyN,EAAOnyN,KAAOmyN,EAAOriM,MAAQ,EAChC5pB,EAAGgsN,EAASlsM,IAAMksM,EAASniM,OAAS+jF,GAAO8vF,aAG7C4tB,GAAYjlN,EAAK,CAACwjC,EADF,CAAEjwC,EAAGqyN,EAAOnyN,KAAOmyN,EAAOriM,MAAQ,EAAG5pB,EAAGisN,EAAOnsM,MACxB5C,EAAO,UAC9CouM,GACEjlN,EACA,CACE,CAAEzM,EAAGoyN,EAASlyN,KAAOkyN,EAASpiM,MAAQ,EAAG5pB,EAAGgsN,EAASlsM,IAAMksM,EAASniM,QACpE,CACEjwB,EAAGoyN,EAASlyN,KAAOkyN,EAASpiM,MAAQ,EACpC5pB,EAAGgsN,EAASlsM,IAAMksM,EAASniM,OAAS+jF,GAAO8vF,YAAc,GAE3D,CAAE9jM,EAAGqyN,EAAOnyN,KAAOmyN,EAAOriM,MAAQ,EAAG5pB,EAAG6pC,EAAU7pC,EAAI4tG,GAAO8vF,YAAc,GAC3E7zJ,GAEF3sB,QAGFouM,GACEjlN,EACA,CACE,CACEzM,EAAGoyN,EAASlyN,KAAOkyN,EAASpiM,MAAQ,EACpC5pB,EAAGgsN,EAASlsM,IAAMksM,EAASniM,QAE7B,CACEjwB,EAAGoyN,EAASlyN,KAAOkyN,EAASpiM,MAAQ,EACpC5pB,EAAGgsN,EAASlsM,IAAM8tF,GAAO8vF,YAAc,GAEzC,CACE9jM,EAAGqyN,EAAOnyN,KAAOmyN,EAAOriM,MAAQ,EAChC5pB,EAAGisN,EAAOnsM,IAAM8tF,GAAO8vF,YAAc,GAEvC,CACE9jM,EAAGqyN,EAAOnyN,KAAOmyN,EAAOriM,MAAQ,EAChC5pB,EAAGisN,EAAOnsM,MAGd5C,IAOV,SAASlS,GAAU3E,EAAK3B,GACtB,OAAO2B,EACJhE,OAAOqC,GACPmB,OACAmF,WAAU,GAGf,SAASkhN,GAAoB7lN,EAAK8lN,EAAUxD,EAAUt5K,GACpD,IAAImqF,EACE4yF,EAAap0N,OAAOyyB,KAAKigM,IAAgB/wN,OAC/C,GAAwB,iBAAbwyN,EACT,EAAG,CAGD,GAFA3yF,EAASkxF,GAAeyB,GACxBp1B,EAAO76E,MAAM,yBAA0Bsd,EAAOl3G,GAAIk3G,EAAOyyC,KACrD5lK,EAAIhE,OAAO,SAAW8pN,GAAUr+M,OAAS,EAC3C,OAEFzH,EACGnE,QAAO,WACN,OAAO8I,GAAU3E,EAAK,kBAEvBlE,KAAK,QAAS,UACdA,KAAK,MAAM,WACV,MAAO,QAAUq3H,EAAOl3G,MAEzBngB,KAAK,aAAa,WACjB,OAAQktC,GACN,IAAK,KACH,MACE,cACCmqF,EAAOyyC,IAAMr+D,GAAO8vF,YAAc9vF,GAAOq9G,YAC1C,KACAtB,GAAY/7G,GAAOm9G,aACnB,IAEJ,IAAK,KACH,MACE,cACCpB,GAAY/7G,GAAOm9G,aAAen9G,GAAOq9G,YAC1C,MACCmB,EAAa5yF,EAAOyyC,KAAOr+D,GAAO8vF,YACnC,QAIPv7L,KAAK,OAAQyrG,GAAO+8G,eACpBxoN,KAAK,SAAUyrG,GAAOi9G,iBACtB1oN,KAAK,eAAgByrG,GAAOg9G,iBAE/B,IAAInxF,OAAM,EACV,IAAK,IAAI4yF,KAAc1D,EACrB,GAAIA,EAAS0D,GAAY7yF,SAAWA,EAAQ,CAC1CC,EAASkvF,EAAS0D,GAClB,MAGA5yF,IACFs9D,EAAO76E,MAAM,gBAAiBud,EAAO5hI,MACrCwO,EACGhE,OAAO,SAAWm3H,EAAOl3G,GAAK,MAC9BpgB,OAAO,cACPC,KAAK,QAAS,gBACdG,KAAKm3H,EAAO5hI,KAAO,OAExBwO,EACGhE,OAAO,SAAWm3H,EAAOl3G,GAAK,MAC9BpgB,OAAO,cACPC,KAAK,QAAS,aACdG,KAAKk3H,EAAOl3G,IACQ,KAAnBk3G,EAAO+E,SAAgC,OAAdlvF,GAC3BhpC,EACGhE,OAAO,SAAWm3H,EAAOl3G,GAAK,MAC9BpgB,OAAO,cACPC,KAAK,QAAS,cACdG,KAAK,KAAOk3H,EAAO+E,SAExB4tF,EAAW3yF,EAAOx0H,aACXmnN,GAAYzB,GAAeyB,IAGlCxxN,MAAM2D,QAAQ6tN,KAChBp1B,EAAO76E,MAAM,sBAAuBiwG,GACpCD,GAAoB7lN,EAAK8lN,EAAS,GAAIxD,EAAUt5K,GAChDs6K,KACAuC,GAAoB7lN,EAAK8lN,EAAS,GAAIxD,EAAUt5K,GAChDs6K,MAIJ,SAAS2C,GAAYjmN,EAAKmzH,EAAQnqF,EAAWk9K,GAE3C,IADAA,EAAcA,GAAe,EACtB/yF,EAAOyyC,IAAM,IAAMzyC,EAAOgzF,WACF,iBAAlBhzF,EAAOx0H,QAChB6mN,GAAsBxlN,EAAKmzH,EAAOl3G,GAAIk3G,EAAOx0H,OAAQqqC,EAAWk9K,GAChE/yF,EAAOgzF,WAAY,EACnBhzF,EAASkxF,GAAelxF,EAAOx0H,SACtBrK,MAAM2D,QAAQk7H,EAAOx0H,UAC9B6mN,GAAsBxlN,EAAKmzH,EAAOl3G,GAAIk3G,EAAOx0H,OAAO,GAAIqqC,EAAWk9K,GACnEV,GAAsBxlN,EAAKmzH,EAAOl3G,GAAIk3G,EAAOx0H,OAAO,GAAIqqC,EAAWk9K,EAAc,GACjFD,GAAYjmN,EAAKqkN,GAAelxF,EAAOx0H,OAAO,IAAKqqC,EAAWk9K,EAAc,GAC5E/yF,EAAOgzF,WAAY,EACnBhzF,EAASkxF,GAAelxF,EAAOx0H,OAAO,KAKrC,ICpRH6jB,GD2TW,GArTQ,SAASlxB,GAC9B0zN,GAAY1zN,GAoTC,GAvCK,SAAS6/L,EAAKl1K,EAAImqM,GACpC,IACE,IAAMvsL,EAASwsL,KAAexsL,OAC9BA,EAAO8uC,GAAKylG,GACZv0I,EAAO8uC,GAAGvhD,QAEVspK,EAAO76E,MAAM,uBAAwBs7E,EAAM,KAAM,MAAOl1K,EAAImqM,GAE5DvsL,EAAOvc,MAAM6zK,EAAM,MAEnB5pF,GAAS51G,OAAOykB,OAAOmxF,GAAQy9G,GAAW52C,GAAGq1C,cAC7C/yB,EAAO76E,MAAM,oBAAqBtO,IAClC,IAAMv+D,EAAYolI,GAAGwvB,eACrBymB,GAAiBj2C,GAAG81C,aACpB,IAAM5B,EAAWl0C,GAAG21C,wBACF,OAAd/6K,IACFu+D,GAAOw9G,UAAUxxN,EAAI+uN,EAAShvN,OAASi0G,GAAOm9G,aAC9Cn9G,GAAOw9G,UAAUxhM,MAAQ,OACzBgkF,GAAOw9G,UAAUprN,GAAI,EAAS4tG,GAAOu9G,YAEvC,IAAM9kN,EAAMhE,iBAAO,QAAD,OAASigB,EAAT,OAGlB,IAAK,IAAIm3G,KAjSb,SAAuBpzH,GACrBA,EACGnE,OAAO,QACPA,OAAO,KACPC,KAAK,KAAM,cACXD,OAAO,UACPC,KAAK,IAAKyrG,GAAOu9G,YACjBhpN,KAAK,KAAM,GACXA,KAAK,KAAM,GACdkE,EACGhE,OAAO,eACPH,OAAO,iBACPC,KAAK,QAASyrG,GAAOw9G,UAAUxhM,OAC/BznB,KAAK,SAAUyrG,GAAOw9G,UAAUvhM,QAChC1nB,KAAK,IAAKyrG,GAAOw9G,UAAUxxN,GAC3BuI,KAAK,IAAKyrG,GAAOw9G,UAAUprN,GAC3BmC,KAAK,QAAS,cACdA,KAAK,mBAAoB,oDACzBD,OAAO,KACPoN,KAAK,IA4QNq9M,CAActmN,GACdsjN,GAAY,EACOhB,EAAU,CAC3B,IAAMhtN,EAAIgtN,EAASlvF,GACnByyF,GAAoB7lN,EAAK1K,EAAE69H,OAAOl3G,GAAIqmM,EAAUt5K,GAChDi9K,GAAYjmN,EAAK1K,EAAE69H,OAAQnqF,GAC3Bs6K,KAEFtjN,EAAIlE,KAAK,UAAU,WACjB,MAAkB,OAAdktC,EAA2Br3C,OAAOyyB,KAAKigM,IAAgB/wN,OAASi0G,GAAO8vF,aACnEirB,EAAShvN,OAAS,GAAKi0G,GAAOm9G,gBAExC,MAAOzpM,GACPy1K,EAAO15L,MAAM,kCACb05L,EAAO15L,MAAMikB,EAAEi9G,WExUfA,GAAU,GACVyxB,IAAO,EAuBI,IACb48D,WAtBwB,SAAAp1B,GACxBT,EAAO76E,MAAM,uBAAyBs7E,GACtCj5D,GAAUi5D,GAqBVq1B,WAlBwB,WACxB,OAAOtuF,IAkBP5E,QAfqB,SAAArX,GACrB0tC,GAAO1tC,GAePwqG,QAZqB,WACrB,OAAO98D,K,oBCdH1+B,GAAO,GA4CE,GA3CQ,SAASi2E,GACjBvvM,OAAOyyB,KAAK88K,GAEpB54K,SAAQ,SAAS91B,GACpBy4H,GAAKz4H,GAAO0uM,EAAI1uM,OAuCL,GA9BK,SAAC2+L,EAAKl1K,EAAImqM,GAC5B,IACE,IAAMvsL,EAAS6sL,KAAW7sL,OAC1BA,EAAO8uC,GAAKylG,GACZsiB,EAAO76E,MAAM,0BAA4Bs7E,GAEzCt3J,EAAOvc,MAAM6zK,GACbT,EAAO76E,MAAM,uBAEb,IAAM71G,EAAMhE,iBAAO,IAAMigB,GAEfjc,EAAInE,OAAO,KAEnBA,OAAO,QACNC,KAAK,IAAK,KACVA,KAAK,IAAK,IACVA,KAAK,QAAS,WACdA,KAAK,YAAa,QAClBwF,MAAM,cAAe,UACrBrF,KAAK,KAAOmqN,GAEfpmN,EAAIlE,KAAK,SAAU,KACnBkE,EAAIlE,KAAK,QAAS,KAElB,MAAOmf,GACPy1K,EAAO15L,MAAM,sCACb05L,EAAO15L,MAAMikB,EAAEi9G,WC1CbjN,GAAO,GAwFE,GAvFQ,SAASi2E,GACjBvvM,OAAOyyB,KAAK88K,GAEpB54K,SAAQ,SAAS91B,GACpBy4H,GAAKz4H,GAAO0uM,EAAI1uM,OAmFL,GA1EK,SAACypB,EAAImqM,GACvB,IACE11B,EAAO76E,MAAM,mCAEb,IAAM71G,EAAMhE,iBAAO,IAAMigB,GAEnBnH,EAAI9U,EAAInE,OAAO,KAErBiZ,EAAEjZ,OAAO,QACNC,KAAK,QAAS,cACdA,KACC,IACA,8kBAGJgZ,EAAEjZ,OAAO,QACNC,KAAK,QAAS,cACdA,KACC,IACA,+LAGJgZ,EAAEjZ,OAAO,QACNC,KAAK,QAAS,cACdA,KACC,IACA,gMAGJgZ,EAAEjZ,OAAO,QACNC,KAAK,QAAS,cACdA,KACC,IACA,+GAGJgZ,EAAEjZ,OAAO,QACNC,KAAK,QAAS,cACdA,KACC,IACA,oHAGJgZ,EAAEjZ,OAAO,QACNC,KAAK,QAAS,cACdA,KACC,IACA,iMAGJgZ,EAAEjZ,OAAO,QACNC,KAAK,QAAS,cACdA,KAAK,IAAK,MACVA,KAAK,IAAK,KACVA,KAAK,YAAa,SAClBwF,MAAM,cAAe,UACrBrF,KAAK,yBACR6Y,EAAEjZ,OAAO,QACNC,KAAK,QAAS,cACdA,KAAK,IAAK,MACVA,KAAK,IAAK,KACVA,KAAK,YAAa,SAClBwF,MAAM,cAAe,UACrBrF,KAAK,mBAAqBmqN,GAE7BpmN,EAAIlE,KAAK,SAAU,KACnBkE,EAAIlE,KAAK,QAAS,KAClBkE,EAAIlE,KAAK,UAAW,iBACpB,MAAOmf,GACPy1K,EAAO15L,MAAM,sCACb05L,EAAO15L,MAAMikB,EAAEi9G,WCrFf+xE,GAAW,GACX7+G,GAAQ,GAkCG,IACbsyB,WAjCiB,SAASzhG,EAAI/pB,QACF,IAAjB+3M,GAAShuL,KAClBguL,GAAShuL,GAAM/pB,EACfw+L,EAAO76E,MAAM,sBAAuB55F,KA+BtCs5L,YA5BkB,kBAAMtL,IA6BxB12E,aApBmB,SAASrhI,GAC5B,MAA8B,MAA1BA,EAAM+tC,UAAU,EAAG,IACrB/tC,EAAQA,EAAM+tC,UAAU,GAAG1iC,OACpByiC,OAAO9tC,EAAMqL,SAEbyiC,OAAO9tC,EAAMqL,SAgBtB6pB,MAZY,WACZ6iL,GAAW,GACX7+G,GAAQ,IAWRqyB,SA7Be,SAAS0zE,GACxB/lG,GAAQ+lG,GA6BRib,SA1Be,WACf,OAAOhhH,K,oBJbH6/B,GAAO,GAuJE,GAtJQ,SAASi2E,GACjBvvM,OAAOyyB,KAAK88K,GAEpB54K,SAAQ,SAAS91B,GACpBy4H,GAAKz4H,GAAO0uM,EAAI1uM,OAkJL,GAxIK,SAAC2+L,EAAKl1K,GACxB,IACE,IAAM4d,EAAS8sL,KAAU9sL,OACzBA,EAAO8uC,GAAKi+I,GACZl2B,EAAO76E,MAAM,2BAA6Bs7E,GAE1Ct3J,EAAO8uC,GAAGvhD,QACVyS,EAAOvc,MAAM6zK,GACbT,EAAO76E,MAAM,uBACb,IAAM4yD,EAAOrnK,SAAS21M,eAAe96L,QAGpB,KAFjBuG,GAAIimJ,EAAKuuC,cAAcC,eAGrBz0L,GAAI,WAGuB,IAAlByoG,GAAKisF,WACd10L,GAAIyoG,GAAKisF,UAGXzuC,EAAK3nK,aAAa,SAAU,QAE5B2nK,EAAK3nK,aAAa,UAAW,OAAS0hB,GAAI,QAI1C,IAAIe,EAAQf,GAMR2I,EAAS31B,KAAKE,IAAI6tB,EALT,KAK0B,EAJ1B,GAMTvjB,EAAMhE,iBAAO,IAAMigB,GACpBpgB,OAAO,OACPC,KAAK,QAASynB,GACdznB,KAAK,SAVK,KAWVD,OAAO,KACPC,KAAK,YAAa,aAAeynB,EAAQ,EAAI,SAE5C3rB,EAAOgvN,GAAQrR,cACfrgN,EAAM,EACVvD,OAAOyyB,KAAKxsB,GAAM0wB,SAAQ,SAAS91B,GACjC0C,GAAO0C,EAAKpF,MAEdk+L,EAAO/mC,KAAK/xJ,GAGZ,IAAIif,EAAQgwM,yBACTrvN,OAAOI,GACPzB,MAAM2wN,cAMLC,EAHMC,gBAAQ90N,OAAM,SAASX,GAC/B,OAAOA,EAAEW,QAEKslE,CAAIrrC,kBAAQv0B,IAGxBqvN,EAAer8L,gBAChBwpC,YAAY,GACZE,YAAYnpC,GAGfnrB,EACG1E,UAAU,YACV1D,KAAKmvN,GACLnrN,QACAC,OAAO,QACPC,KAAK,IAAKmrN,GACVnrN,KAAK,QAAQ,SAASvK,GACrB,OAAOslB,EAAMtlB,EAAEqG,KAAKpF,QAErBsJ,KAAK,SAAU,SACfwF,MAAM,eAAgB,OACtBA,MAAM,UAAW,IAGpBtB,EACG1E,UAAU,YACV1D,KAAKmvN,GACLnrN,QACAC,OAAO,QACPI,MAAK,SAAS1K,GACb,OAASA,EAAEqG,KAAK1F,MAAQgD,EAAO,KAAKsqC,QAAQ,GAAK,OAElD1jC,KAAK,aAAa,SAASvK,GAC1B,MAAO,aAAe01N,EAAav1K,SAASngD,GAAK,OAElD+P,MAAM,cAAe,UACrBxF,KAAK,QAAS,SACdwF,MAAM,YAAa,IAEtBtB,EACGnE,OAAO,QACPI,KAAK49B,EAAO8uC,GAAGyjI,YACftwM,KAAK,IAAK,GACVA,KAAK,KAAK,KACVA,KAAK,QAAS,gBAGjB,IAAIorN,EAASlnN,EACV1E,UAAU,WACV1D,KAAKif,EAAMrf,UACXoE,QACAC,OAAO,KACPC,KAAK,QAAS,UACdA,KAAK,aAAa,SAASvK,EAAGN,GAK7B,MAAO,kBAJMk2N,GAGFl2N,EAHEk2N,GACUtwM,EAAMrf,SAASlE,OAAU,GAGN,OAG9C4zN,EACGrrN,OAAO,QACPC,KAAK,QAzFa,IA0FlBA,KAAK,SA1Fa,IA2FlBwF,MAAM,OAAQuV,GACdvV,MAAM,SAAUuV,GAEnBqwM,EACGrrN,OAAO,QACPC,KAAK,IAAKqrN,IACVrrN,KAAK,IAAKqrN,IACVlrN,MAAK,SAAS1K,GACb,OAAOA,KAEX,MAAO0pB,GACPy1K,EAAO15L,MAAM,sCACb05L,EAAO15L,MAAMikB,EAAEi9G,WKtJfkvF,GAAW,GACXC,GAAgB,GAChBj8H,GAAQ,GA2DG,IACbyoC,YA1DkB,CAClBC,YAAa,cACbC,aAAc,eACdC,YAAa,cACbC,SAAU,YAuDVC,eApDqB,CACrBC,gBAAiB,kBACjBC,YAAa,eAmDbZ,UAhDgB,SAAShiI,QACK,IAAnB41N,GAAS51N,KAClB41N,GAAS51N,GAAQA,EACjBk/L,EAAO76E,MAAM,qBAAsBrkH,KA8CrC81N,YA1CkB,kBAAMF,IA2CxB3zF,gBAlCsB,SAAS8zF,EAAMC,EAAMC,EAAMC,GACjD,IAAIC,EAAM,CACRC,QAASL,EACTM,MAAOL,EACPM,QAASL,EACTM,QAASL,GAGXL,GAAc/uN,KAAKqvN,GACnBj3B,EAAO76E,MAAM,2BAA4B8xG,IA0BzCK,iBAvBuB,kBAAMX,IAwB7BjgM,MAbY,WACZggM,GAAW,GACXC,GAAgB,GAChBj8H,GAAQ,IAWRqyB,SAtBe,SAAS0zE,GACxB/lG,GAAQ+lG,GAsBRib,SAnBe,WACf,OAAOhhH,K,oBCzDH68H,GAAY,CAChBC,eAAgB,iBAChBC,aAAc,eACdC,kBAAmB,oBACnBC,gBAAiB,kBACjBC,kBAAmB,oBACnBC,gBAAiB,kBACjBC,mBAAoB,qBACpBC,iBAAkB,oBA4JL,GACbR,GADa,GAtJO,SAASx/C,EAAMx9C,GACnC,IAAIjgC,EAEJy9E,EACG5sK,OAAO,QACPA,OAAO,UACPC,KAAK,KAAMmsN,GAAUC,gBACrBpsN,KAAK,OAAQ,GACbA,KAAK,OAAQ,GACbA,KAAK,cAAe,IACpBA,KAAK,eAAgB,IACrBA,KAAK,SAAU,QACfD,OAAO,QACPC,KAAK,SAAUmvH,EAAK9O,QACpBrgH,KAAK,OAAQ,QACbA,KAAK,IAAK,2BAEb2sK,EACG5sK,OAAO,QACPA,OAAO,UACPC,KAAK,KAAMmsN,GAAUE,cACrBrsN,KAAK,OAAQ,IACbA,KAAK,OAAQ,GACbA,KAAK,cAAe,IACpBA,KAAK,eAAgB,IACrBA,KAAK,SAAU,QACfD,OAAO,QACPC,KAAK,SAAUmvH,EAAK9O,QACpBrgH,KAAK,OAAQ,QACbA,KAAK,IAAK,0BAEbkvF,EAASy9E,EACN5sK,OAAO,QACPA,OAAO,UACPC,KAAK,KAAMmsN,GAAUG,mBACrBtsN,KAAK,OAAQ,GACbA,KAAK,OAAQ,GACbA,KAAK,cAAe,IACpBA,KAAK,eAAgB,IACrBA,KAAK,SAAU,SAEfD,OAAO,UACPC,KAAK,SAAUmvH,EAAK9O,QACpBrgH,KAAK,OAAQ,SACbA,KAAK,KAAM,IACXA,KAAK,KAAM,GACXA,KAAK,IAAK,GACbkvF,EACGnvF,OAAO,QACPC,KAAK,SAAUmvH,EAAK9O,QACpBrgH,KAAK,OAAQ,QACbA,KAAK,IAAK,eAEbkvF,EAASy9E,EACN5sK,OAAO,QACPA,OAAO,UACPC,KAAK,KAAMmsN,GAAUI,iBACrBvsN,KAAK,OAAQ,IACbA,KAAK,OAAQ,GACbA,KAAK,cAAe,IACpBA,KAAK,eAAgB,IACrBA,KAAK,SAAU,SAEfD,OAAO,UACPC,KAAK,SAAUmvH,EAAK9O,QACpBrgH,KAAK,OAAQ,SACbA,KAAK,KAAM,GACXA,KAAK,KAAM,GACXA,KAAK,IAAK,GACbkvF,EACGnvF,OAAO,QACPC,KAAK,SAAUmvH,EAAK9O,QACpBrgH,KAAK,OAAQ,QACbA,KAAK,IAAK,gBAEb2sK,EACG5sK,OAAO,QACPA,OAAO,UACPC,KAAK,KAAMmsN,GAAUK,mBACrBxsN,KAAK,OAAQ,IACbA,KAAK,OAAQ,IACbA,KAAK,cAAe,IACpBA,KAAK,eAAgB,IACrBA,KAAK,SAAU,QACfD,OAAO,QACPC,KAAK,SAAUmvH,EAAK9O,QACpBrgH,KAAK,OAAQ,QACbA,KAAK,IAAK,gDAEb2sK,EACG5sK,OAAO,QACPA,OAAO,UACPC,KAAK,KAAMmsN,GAAUM,iBACrBzsN,KAAK,OAAQ,IACbA,KAAK,OAAQ,IACbA,KAAK,cAAe,IACpBA,KAAK,eAAgB,IACrBA,KAAK,SAAU,QACfD,OAAO,QACPC,KAAK,SAAUmvH,EAAK9O,QACpBrgH,KAAK,OAAQ,QACbA,KAAK,IAAK,6CAEbkvF,EAASy9E,EACN5sK,OAAO,QACPA,OAAO,UACPC,KAAK,KAAMmsN,GAAUO,oBACrB1sN,KAAK,OAAQ,IACbA,KAAK,OAAQ,IACbA,KAAK,cAAe,IACpBA,KAAK,eAAgB,IACrBA,KAAK,SAAU,SAEfD,OAAO,UACPC,KAAK,SAAUmvH,EAAK9O,QACpBrgH,KAAK,OAAQ,SACbA,KAAK,KAAM,IACXA,KAAK,KAAM,IACXA,KAAK,IAAK,GACbkvF,EACGnvF,OAAO,QACPC,KAAK,SAAUmvH,EAAK9O,QACpBrgH,KAAK,OAAQ,QACbA,KAAK,IAAK,kCAEbkvF,EAASy9E,EACN5sK,OAAO,QACPA,OAAO,UACPC,KAAK,KAAMmsN,GAAUQ,kBACrB3sN,KAAK,OAAQ,IACbA,KAAK,OAAQ,IACbA,KAAK,cAAe,IACpBA,KAAK,eAAgB,IACrBA,KAAK,SAAU,SAEfD,OAAO,UACPC,KAAK,SAAUmvH,EAAK9O,QACpBrgH,KAAK,OAAQ,SACbA,KAAK,KAAM,GACXA,KAAK,KAAM,IACXA,KAAK,IAAK,GACbkvF,EACGnvF,OAAO,QACPC,KAAK,SAAUmvH,EAAK9O,QACpBrgH,KAAK,OAAQ,QACbA,KAAK,IAAK,oCCtJTmvH,GAAO,GAiGPy9F,GAAc,SAASf,GAC3B,OAAQA,EAAIC,QAAUD,EAAIE,MAAQF,EAAIG,SAAS/yL,QAAQ,MAAO,KAgB5D4zL,GAAS,EAgOE,GA3UQ,SAASznB,GAE9B,IADA,IAAM98K,EAAOzyB,OAAOyyB,KAAK88K,GAChBjwM,EAAI,EAAGA,EAAImzB,EAAK9wB,OAAQrC,IAC/Bg6H,GAAK7mG,EAAKnzB,IAAMiwM,EAAI98K,EAAKnzB,KAwUd,GAzFK,SAASgL,EAAMggB,GACjCy0K,EAAO/mC,KAAK,sBACZi/D,GAAKxhM,QACL,IAAMyS,EAASgvL,KAAShvL,OACxBA,EAAO8uC,GAAKigJ,GAGZ,IACE/uL,EAAOvc,MAAMrhB,GACb,MAAO8iH,GACP2xE,EAAO76E,MAAM,kBAIf,IAoBI/gG,EApBE9U,EAAMhE,iBAAO,QAAD,OAASigB,EAAT,OAGlB6sM,GAAwB9oN,EAAKirH,IAwB7Bn2G,EAAI,IAAIsgF,KAASzf,MAAM,CACrB6gB,YAAY,EACZktC,UAAU,EACVG,UAAU,IAET5tC,SAAS,CACR4iF,QAAS5tD,GAAK4vE,gBACdrgB,QAAS,GACTE,QAAS,GACTa,QAAS,IACTD,QAAS,IACT3C,QAAS,MAEVtyC,qBAAoB,WACnB,MAAO,MAKX,IAhS4B1pH,EAASyqM,EAAUlxH,EAE3C6yH,EA8REC,GAhSsBrsM,EAgSK3c,EAhSIonN,EAgSCwB,GAAKtB,cAhSIpxH,EAgSWphF,EA/R7CnjB,OAAOyyB,KAAKgjM,GAGpB9+L,SAAQ,SAASrM,GAEpB,IAAMgtM,EAAYtsM,EAAQ9gB,OAAO,KAAKC,KAAK,KAAMmgB,GAEjD8sM,OAAwB9nM,IAAb8nM,EAAyB9sM,EAAK8sM,EAIzC,IAAMG,EAAS,UAAYjtM,EACrBktM,EAAWF,EACdptN,OAAO,QACPC,KAAK,KAAMotN,GACXptN,KAAK,IAAK,GACVA,KAAK,IAAK,GACVA,KAAK,oBAAqB,UAC1BA,KAAK,cAAe,UACpBA,KACC,QACA,gBAAkB0/L,IAAYhI,WAAa,gBAAkBvoE,GAAKwoE,SAAW,MAE9Ex3L,KAAKggB,GAGFmtM,EAAWD,EAAS3pN,OAAO2pI,UAC3BkgF,EAAc7zN,KAAKG,IAAIs1H,GAAK6vE,eAAgBsuB,EAAS7lM,MAA6B,EAArB0nG,GAAK+vE,eAClEsuB,EAAe9zN,KAAKG,IAAIs1H,GAAK8vE,gBAAiBquB,EAAS5lM,OAA8B,EAArBynG,GAAK+vE,eAG3EmuB,EAASrtN,KAAK,YAAa,aAAeutN,EAAc,EAAI,IAAMC,EAAe,EAAI,KAGrF,IAUMC,EAVWN,EACd9sN,OAAO,OAAQ,IAAM+sN,GACrBptN,KAAK,OAAQmvH,GAAKjsF,MAClBljC,KAAK,eAAgB,QACrBA,KAAK,SAAUmvH,GAAK9O,QACpBrgH,KAAK,IAAK,GACVA,KAAK,IAAK,GACVA,KAAK,QAASutN,GACdvtN,KAAK,SAAUwtN,GAEQ9pN,OAAO2pI,UAGjCjzC,EAAMN,QAAQ35E,EAAI,CAChBsH,MAAOgmM,EAAShmM,MAChBC,OAAQ+lM,EAAS/lM,OACjB0qK,MAAO,OACPjyK,GAAIA,OAGD8sM,GA8OD1B,EA/MiB,SAASA,EAAevyM,GAI/C,OAHAuyM,EAAc/+L,SAAQ,SAASv2B,GAC7B+iB,EAAEwhF,QAAQvkG,EAAE61N,QAAS71N,EAAE+1N,QAAS,CAAE5iC,aAAcnzL,GAAK22N,GAAY32N,OAE5Ds1N,EA2MemC,CAAiBZ,GAAKZ,mBAAoBlzM,GAEhEugF,KAAMugB,OAAO9gG,GA7OQ,SAAS6H,EAASu5E,GACvCA,EAAMrtF,QAAQyf,SAAQ,SAAShzB,QACZ,IAANA,QAA8C,IAAlB4gG,EAAM12F,KAAKlK,IAChDqnB,EACG3gB,OAAO,IAAM1G,GACbwG,KACC,YACA,cACGo6F,EAAM12F,KAAKlK,GAAG/B,EAAI2iG,EAAM12F,KAAKlK,GAAGiuB,MAAQ,GACzC,KACC2yE,EAAM12F,KAAKlK,GAAGqE,EAAIu8F,EAAM12F,KAAKlK,GAAGkuB,OAAS,GAC1C,SAqOVimM,CAAezpN,EAAK8U,GAGpBuyM,EAAc/+L,SAAQ,SAASq/L,IAxME,SAAS3nN,EAAK2nN,EAAK7yM,EAAG3Y,GACvDwsN,KAGA,IAAM1pJ,EAAOnqD,EAAEmqD,KAAK0oJ,EAAIC,QAASD,EAAIG,QAASY,GAAYf,IAGpDzgB,EAAenrM,iBAClBxI,GAAE,SAAShC,GACV,OAAOA,EAAEgC,KAEVoG,GAAE,SAASpI,GACV,OAAOA,EAAEoI,KAEVo9D,MAAM26H,cAGH2V,EAAUrnM,EACb7D,OAAO,OAAQ,IAAMA,GACrBL,KAAK,IAAKorM,EAAajoI,EAAKx1B,SAC5B3tC,KAAK,SAAUmvH,GAAK9O,QACpBrgH,KAAK,OAAQ,QAGZ6rN,EAAII,QAAQp0F,UAAYi1F,GAAK10F,eAAeC,iBAC9CkzE,EAAQvrM,KAAK,mBAAoB,OAInC,IAAI+2H,EAAM,GAgBV,OAfI5H,GAAKksE,sBAQPtkE,GADAA,GANAA,EACExsH,OAAOk+D,SAAS+iI,SAChB,KACAjhM,OAAOk+D,SAASgjI,KAChBlhM,OAAOk+D,SAASijI,SAChBnhM,OAAOk+D,SAASkjI,QACR1yK,QAAQ,MAAO,QACfA,QAAQ,MAAO,QAOnB4yL,EAAII,QAAQr0F,OAClB,KAAKk1F,GAAK/0F,YAAYC,YACpBuzE,EAAQvrM,KAAK,aAAc,OAAS+2H,EAAM,IAAMi2F,GAAoBT,gBAAkB,KACtF,MACF,KAAKO,GAAK/0F,YAAYE,aACpBszE,EAAQvrM,KAAK,aAAc,OAAS+2H,EAAM,IAAMi2F,GAAoBL,iBAAmB,KACvF,MACF,KAAKG,GAAK/0F,YAAYG,YACpBqzE,EAAQvrM,KAAK,aAAc,OAAS+2H,EAAM,IAAMi2F,GAAoBP,gBAAkB,KACtF,MACF,KAAKK,GAAK/0F,YAAYI,SACpBozE,EAAQvrM,KAAK,aAAc,OAAS+2H,EAAM,IAAMi2F,GAAoBX,aAAe,KAIvF,OAAQR,EAAII,QAAQn0F,OAClB,KAAKg1F,GAAK/0F,YAAYC,YACpBuzE,EAAQvrM,KACN,eACA,OAAS+2H,EAAM,IAAMi2F,GAAoBV,kBAAoB,KAE/D,MACF,KAAKQ,GAAK/0F,YAAYE,aACpBszE,EAAQvrM,KACN,eACA,OAAS+2H,EAAM,IAAMi2F,GAAoBN,mBAAqB,KAEhE,MACF,KAAKI,GAAK/0F,YAAYG,YACpBqzE,EAAQvrM,KACN,eACA,OAAS+2H,EAAM,IAAMi2F,GAAoBR,kBAAoB,KAE/D,MACF,KAAKM,GAAK/0F,YAAYI,SACpBozE,EAAQvrM,KAAK,eAAgB,OAAS+2H,EAAM,IAAMi2F,GAAoBZ,eAAiB,KAO3F,IAAM52I,EAAM+1H,EAAQ7nM,OAAOkqN,iBACrBC,EAAatiB,EAAQ7nM,OAAOoqN,iBAAuB,GAANt4I,GAG7Cs9G,EAAU,MAAQ+5B,GAgBlBz/E,EAdYlpI,EACfnE,OAAO,QACPC,KAAK,KAAM8yL,GACX9yL,KAAK,IAAK6tN,EAAWp2N,GACrBuI,KAAK,IAAK6tN,EAAWhwN,GACrBmC,KAAK,cAAe,UACpBA,KAAK,oBAAqB,UAC1BA,KACC,QACA,gBAAkB0/L,IAAYhI,WAAa,gBAAkBvoE,GAAKwoE,SAAW,MAE9Ex3L,KAAK0rN,EAAIE,OAGgBroN,OAAO2pI,UAGnCnpI,EACG7D,OAAO,OAAQ,IAAMyyL,GACrB9yL,KAAK,IAAK6tN,EAAWp2N,EAAI21I,EAAU3lH,MAAQ,GAC3CznB,KAAK,IAAK6tN,EAAWhwN,EAAIuvI,EAAU1lH,OAAS,GAC5C1nB,KAAK,QAASotI,EAAU3lH,OACxBznB,KAAK,SAAUotI,EAAU1lH,QACzB1nB,KAAK,OAAQ,SACbA,KAAK,eAAgB,OAoFtB+tN,CAA2B7pN,EAAK2nN,EAAK7yM,EAAGk0M,MAG1C,IAAM1nL,EAAU2pF,GAAK2vE,eAEf2G,EAAYvhM,EAAIR,OAAO2pI,UACvB5lH,EAAQg+K,EAAUh+K,MAAkB,EAAV+d,EAC1B9d,EAAS+9K,EAAU/9K,OAAmB,EAAV8d,EAElCthC,EAAIlE,KAAK,SAAU0nB,GACnBxjB,EAAIlE,KAAK,QAAS,QAClBkE,EAAIlE,KAAK,QAAT,qBAAgCynB,EAAhC,QACAvjB,EAAIlE,KAAK,UAAT,UAAuBylM,EAAUhuM,EAAI+tC,EAArC,YAAgDigK,EAAU5nM,EAAI2nC,EAA9D,YAAyE/d,EAAzE,YAAkFC,K,0WCxVpF,IAAI4nE,GAAQ,GACR4nH,GAAiB,GAEf/I,GAAW,GACX8I,GAAQ,GACRwB,GAAW,GAyFXE,GAAe,WAMnB,IALA,IAIIM,GAAe,EACV9jN,EAAI,EAAGA,EAAIsjN,GAASjhN,OAAQrC,IAJ5BsjN,GAKKtjN,GALS6jN,UAOrBC,EAAeA,GAAgBR,GAAStjN,GAAG6jN,UAE7C,OAAOC,GAOM,IACb3tL,MA1GmB,WACnB6iL,GAAS32M,OAAS,EAClBy/M,GAAMz/M,OAAS,EACf0/M,GAAiB,GACjB5nH,GAAQ,GACRmpH,GAASjhN,OAAS,GAsGlBmqH,SAnGsB,SAAS0zE,GAC/B/lG,GAAQ+lG,GAmGRib,SAhGsB,WACtB,OAAOhhH,IAgGPsyB,WA7FwB,SAASyzE,GACjC6hB,GAAiB7hB,EACjB8Y,GAAS3xM,KAAK64L,IA4FdokB,YAzFyB,WACzB,OAAOtL,IAyFPuL,SAtFsB,WAItB,IAHA,IAAIsU,EAAoBrV,KAEpBiB,EAAiB,GACboU,GAAqBpU,EAFZ,KAGfoU,EAAoBrV,KACpBiB,IAKF,OAFA3C,GAAMz6M,KAAN,MAAAy6M,GAAcwB,IAEPxB,IA4EPp1F,QA7DqB,SAASsnF,EAAO8kB,GACrC,IAAMC,EAASD,EAASt3I,OAAO,GAAGj1E,MAAM,KAEpC0+C,EAAQ,EACR+tK,EAAQ,GACU,IAAlBD,EAAO12N,QACT4oD,EAAQlc,OAAOgqL,EAAO,IACtBC,EAAQ,KAER/tK,EAAQlc,OAAOgqL,EAAO,IACtBC,EAAQD,EAAO,GAAGxsN,MAAM,MAE1B,IAAM0sN,EAAaD,EAAMp0N,KAAI,SAAA7C,GAAC,OAAIA,EAAEuK,UAE9By3M,EAAU,CACdW,QAAS3C,GACTt1M,KAAMs1M,GACNmX,OAAQD,EACRr3D,KAAMoyC,EACN/oJ,SAGFq4J,GAASj8M,KAAK08M,IAwCdkB,WArCwB,SAASjR,GACjC,IAAMkR,EAAU,CACdR,QAAS3C,GACTt1M,KAAMs1M,GACNjnI,YAAak5H,EACbpyC,KAAMoyC,EACNtJ,QAAS,IAEXoX,GAAMz6M,KAAK69M,IA8BXlK,UAbgB,WAChB,OA9DMme,EAAa,GACnBrX,GAAMzqL,SAAQ,SAAAuqI,GACRA,EAAKs3D,QACPC,EAAW9xN,KAAX,MAAA8xN,EAAU,GAASv3D,EAAKs3D,YAKrB,GADQ,IAAIj9L,IAAIk9L,IACJ1xN,OATA,IACb0xN,IC7CKviB,GAAW,SAASp/B,EAAMq/B,GACrC,IAAMC,EAAWt/B,EAAK5sK,OAAO,QAc7B,OAbAksM,EAASjsM,KAAK,IAAKgsM,EAASv0M,GAC5Bw0M,EAASjsM,KAAK,IAAKgsM,EAASnuM,GAC5BouM,EAASjsM,KAAK,OAAQgsM,EAAS9oK,MAC/B+oK,EAASjsM,KAAK,SAAUgsM,EAAS3rF,QACjC4rF,EAASjsM,KAAK,QAASgsM,EAASvkL,OAChCwkL,EAASjsM,KAAK,SAAUgsM,EAAStkL,QACjCukL,EAASjsM,KAAK,KAAMgsM,EAASjoI,IAC7BkoI,EAASjsM,KAAK,KAAMgsM,EAAShoI,SAEC,IAAnBgoI,EAASnU,OAClBoU,EAASjsM,KAAK,QAASgsM,EAASnU,OAG3BoU,GAuFIsiB,GAAa,SAAS1tB,EAAS2tB,GAC1C,IAAMC,EAAgB5tB,EAAQ9gM,OAAO,UAerC,OAdA0uN,EAAczuN,KAAK,KAAMwuN,EAAW1iL,IACpC2iL,EAAczuN,KAAK,KAAMwuN,EAAWziL,IACpC0iL,EAAczuN,KAAK,OAAQwuN,EAAWtrL,MACtCurL,EAAczuN,KAAK,SAAUwuN,EAAWnuG,QACxCouG,EAAczuN,KAAK,IAAKwuN,EAAWv4N,QAEA,IAAxBw4N,EAAc52B,OACvB42B,EAAczuN,KAAK,QAASyuN,EAAc52B,YAGZ,IAArB22B,EAAWl/H,OACpBm/H,EAAc1uN,OAAO,SAASI,KAAKquN,EAAWl/H,OAGzCm/H,GAGIviB,GAAW,SAASv/B,EAAM2qB,GAErC,IAAMC,EAAQD,EAASn3L,KAAK84B,QAAQ,eAAgB,KAE9Cu+J,EAAW7qB,EAAK5sK,OAAO,QAC7By3L,EAASx3L,KAAK,IAAKs3L,EAAS7/L,GAC5B+/L,EAASx3L,KAAK,IAAKs3L,EAASz5L,GAC5B25L,EAASx3L,KAAK,OAAQs3L,EAASp0J,MAC/Bs0J,EAAShyL,MAAM,cAAe8xL,EAASG,aAET,IAAnBH,EAASO,OAClBL,EAASx3L,KAAK,QAASs3L,EAASO,OAGlC,IAAMC,EAAON,EAASz3L,OAAO,SAI7B,OAHA+3L,EAAK93L,KAAK,IAAKs3L,EAAS7/L,EAA0B,EAAtB6/L,EAASS,YACrCD,EAAK33L,KAAKo3L,GAEHC,GA+DLk3B,IAAa,EAqGJ9hB,GAAc,WACzB,MAAO,CACLn1M,EAAG,EACHoG,EAAG,EACH4pB,MAAO,IACPgwK,OAAQ,QACR/vK,OAAQ,IACRq8C,GAAI,EACJC,GAAI,IAIF6oI,GAA0B,WAC9B,SAASC,EAAOthF,EAASxyG,EAAGvhB,EAAGoG,EAAG4pB,EAAOC,EAAQqlL,EAAW4hB,GAQ1D3hB,EAPah0L,EACVjZ,OAAO,QACPC,KAAK,IAAKvI,EAAIgwB,EAAQ,GACtBznB,KAAK,IAAKnC,EAAI6pB,EAAS,EAAI,GAC3BliB,MAAM,aAAcmpN,GACpBnpN,MAAM,cAAe,UACrBrF,KAAKqrH,GACYuhF,GAGtB,SAASE,EAAQzhF,EAASxyG,EAAGvhB,EAAGoG,EAAG4pB,EAAOC,EAAQqlL,EAAW59E,EAAMw/F,GAIjE,IAJyE,IACjEC,EAAiCz/F,EAAjCy/F,aAAcC,EAAmB1/F,EAAnB0/F,eAEhBrhL,EAAQg+E,EAAQ9pH,MAAM,gBACnBvM,EAAI,EAAGA,EAAIq4C,EAAMh2C,OAAQrC,IAAK,CACrC,IAAMk1B,EAAKl1B,EAAIy5N,EAAgBA,GAAgBphL,EAAMh2C,OAAS,GAAM,EAC9D2I,EAAO6Y,EACVjZ,OAAO,QACPC,KAAK,IAAKvI,EAAIgwB,EAAQ,GACtBznB,KAAK,IAAKnC,GACVmC,KAAK,OAAQ2uN,GACbnpN,MAAM,cAAe,UACrBA,MAAM,YAAaopN,GACnBppN,MAAM,cAAeqpN,GACxB1uN,EACGJ,OAAO,SACPC,KAAK,IAAKvI,EAAIgwB,EAAQ,GACtBznB,KAAK,KAAMqqB,GACXlqB,KAAKqtC,EAAMr4C,IAEdgL,EACGH,KAAK,IAAKnC,EAAI6pB,EAAS,GACvB1nB,KAAK,oBAAqB,WAC1BA,KAAK,qBAAsB,WAE9BgtM,EAAc7sM,EAAM4sM,IAIxB,SAASG,EAAK1hF,EAASxyG,EAAGvhB,EAAGoG,EAAG4pB,EAAOC,EAAQqlL,EAAW59E,EAAMw/F,GAC9D,IAAMxuE,EAAOnnI,EAAEjZ,OAAO,UAShBI,EARIggJ,EACPpgJ,OAAO,iBACPC,KAAK,IAAKvI,GACVuI,KAAK,IAAKnC,GACVmC,KAAK,QAASynB,GACdznB,KAAK,SAAU0nB,GACf1nB,KAAK,WAAY,SAGjBD,OAAO,OACPyF,MAAM,UAAW,SACjBA,MAAM,SAAU,QAChBA,MAAM,QAAS,QAElBrF,EACGJ,OAAO,OACPyF,MAAM,UAAW,cACjBA,MAAM,aAAc,UACpBA,MAAM,iBAAkB,UACxBA,MAAM,QAASmpN,GACfxuN,KAAKqrH,GAERyhF,EAAQzhF,EAAS20B,EAAM1oJ,EAAGoG,EAAG4pB,EAAOC,EAAQqlL,EAAW59E,GACvD69E,EAAc7sM,EAAM4sM,GAGtB,SAASC,EAAcG,EAAQC,GAC7B,IAAK,IAAM12M,KAAO02M,EACZ12M,KAAO02M,GAGTD,EAAOntM,KAAKtJ,EAAK02M,EAAkB12M,IAKzC,OAAO,SAASy4H,GACd,MAA8B,OAAvBA,EAAKk+E,cAAyBH,EAA8B,QAAvB/9E,EAAKk+E,cAA0BP,EAASG,GAhFxD,GAkGjB,GAEbshB,GAFa,GA9OY,SAAS5hD,EAAMktC,EAAS1qF,GACjD,IAAMn2G,EAAI2zJ,EAAK5sK,OAAO,KAEhByd,EAAOovL,KACbpvL,EAAK/lB,EAAIoiN,EAAQpiN,EACjB+lB,EAAK3f,EAAIg8M,EAAQh8M,EACjB2f,EAAK0lB,KAAO22K,EAAQ32K,KACpB1lB,EAAKiK,MAAQ0nG,EAAK1nG,MAClBjK,EAAKkK,OAASynG,EAAKznG,OACnBlK,EAAKq6K,MAAQ,kBACbr6K,EAAKumD,GAAK,EACVvmD,EAAKwmD,GAAK,EACV+nI,GAAS/yL,EAAGwE,GAEZqvL,GAAuB19E,EAAvB09E,CACEgN,EAAQ15M,KACR6Y,EACAwE,EAAK/lB,EACL+lB,EAAK3f,EACL2f,EAAKiK,MACLjK,EAAKkK,OACL,CAAEmwK,MAAO,mBACT1oE,EACA0qF,EAAQ8U,SAuNG,GAIbziB,GAJa,GA5MS,SAASv/B,EAAM5V,EAAM5nC,GAC3C,IAAM7hF,EAASypH,EAAKt/J,EAAI03H,EAAK1nG,MAAQ,EAC/BzO,EAAI2zJ,EAAK5sK,OAAO,KACtB2uN,KACA,IAnM+B7tB,EAASiuB,EAYlCC,EAwLN/1M,EAAEjZ,OAAO,QACNC,KAAK,KAAM,OAAS0uN,IACpB1uN,KAAK,KAAMstC,GACXttC,KAAK,KAAM+2J,EAAKl5J,GAChBmC,KAAK,KAAMstC,GACXttC,KAAK,KANU,KAOfA,KAAK,QAAS,aACdA,KAAK,eAAgB,OACrBA,KAAK,mBAAoB,OACzBA,KAAK,SAAU,QA7Ma6gM,EA+MtB7nL,EA/M+B81M,EA+M5B,CACVhjL,GAAIwB,EACJvB,GAAI,IAAyB,IAAlB,EAAIgrH,EAAK32G,OACpBA,MAAO22G,EAAK32G,OAhNQygJ,EACnB9gM,OAAO,UACPC,KAAK,KAAM8uN,EAAShjL,IACpB9rC,KAAK,KAAM8uN,EAAS/iL,IACpB/rC,KAAK,OAAQ,WACbA,KAAK,SAAU,QACfA,KAAK,IAPO,IAQZA,KAAK,eAAgB,GACrBA,KAAK,WAAY,YAEd+uN,EAAOluB,EAAQ9gM,OAAO,MAIzBA,OAAO,UACPC,KAAK,KAAM8uN,EAAShjL,GAAKzc,GACzBrvB,KAAK,KAAM8uN,EAAS/iL,GAAK1c,GACzBrvB,KAAK,IAAK,KACVA,KAAK,eAAgB,GACrBA,KAAK,OAAQ,QACbA,KAAK,SAAU,QAGlB+uN,EACGhvN,OAAO,UACPC,KAAK,KAAM8uN,EAAShjL,GAAKzc,GACzBrvB,KAAK,KAAM8uN,EAAS/iL,GAAK1c,GACzBrvB,KAAK,IAAK,KACVA,KAAK,eAAgB,GACrBA,KAAK,OAAQ,QACbA,KAAK,SAAU,QAyCd8uN,EAAS1uK,MAAQ,EAvCrB,SAAe2uK,GACb,IAAMjgM,EAAMkgM,gBACTliM,WAAWpzB,KAAKsnB,GAAK,GACrB+L,SAAcrzB,KAAKsnB,GAAK,EAAf,GACTs3C,YAAYjpC,KACZmpC,YAtCU,GAsCW,KAExBu2J,EACGhvN,OAAO,QACPC,KAAK,IAAK8uB,GACV9uB,KAAK,YAAa,aAAe8uN,EAAShjL,GAAK,KAAOgjL,EAAS/iL,GAAK,GAAK,KA8B5EkjL,CAAMF,GACGD,EAAS1uK,MAAQ,EA5B5B,SAAa2uK,GACX,IAAMjgM,EAAMkgM,gBACTliM,WAAY,EAAIpzB,KAAKsnB,GAAM,GAC3B+L,SAAcrzB,KAAKsnB,GAAK,EAAf,GACTs3C,YAAYjpC,KACZmpC,YAnDU,GAmDW,KAExBu2J,EACGhvN,OAAO,QACPC,KAAK,IAAK8uB,GACV9uB,KAAK,YAAa,aAAe8uN,EAAShjL,GAAK,KAAOgjL,EAAS/iL,GAAK,GAAK,KAmB5EmjL,CAAIH,GAhBN,SAAoBA,GAClBA,EACGhvN,OAAO,QACPC,KAAK,SAAU,GACfA,KAAK,KAAM8uN,EAAShjL,GAAK,GACzB9rC,KAAK,KAAM8uN,EAAS/iL,GAAK,GACzB/rC,KAAK,KAAM8uN,EAAShjL,GAAK,GACzB9rC,KAAK,KAAM8uN,EAAS/iL,GAAK,GACzB/rC,KAAK,QAAS,aACdA,KAAK,eAAgB,OACrBA,KAAK,SAAU,QAQlBmvN,CAAWJ,GAuIb,IAAMvxM,EAAOovL,KACbpvL,EAAK/lB,EAAIs/J,EAAKt/J,EACd+lB,EAAK3f,EAAIk5J,EAAKl5J,EACd2f,EAAK0lB,KAAO6zH,EAAK7zH,KACjB1lB,EAAKiK,MAAQ0nG,EAAK1nG,MAClBjK,EAAKkK,OAASynG,EAAKznG,OACnBlK,EAAKq6K,MAAQ,OACbr6K,EAAKumD,GAAK,EACVvmD,EAAKwmD,GAAK,EACV+nI,GAAS/yL,EAAGwE,GAEZ,IAAIqoL,EAAO9uC,EAAKt/J,EAAI,GACpBs/J,EAAKs3D,OAAO7hM,SAAQ,SAAA4iM,GAClB,IAAMT,EAAS53D,EAAK63C,OAAOwgB,GAErB7hL,EAAS,CACbzB,GAAI+5J,EACJ95J,GAAIgrH,EAAKl5J,EACT5H,EAAG,EACHitC,KAAMyrL,EACNtuG,OAAQ,OACR/wB,MAAO8/H,GAGTb,GAAWv1M,EAAGu0B,GACds4J,GAAQ,MAGVgH,GAAuB19E,EAAvB09E,CACE91C,EAAKA,KACL/9I,EACAwE,EAAK/lB,EACL+lB,EAAK3f,EACL2f,EAAKiK,MACLjK,EAAKkK,OACL,CAAEmwK,MAAO,QACT1oE,EACA4nC,EAAK43D,SAiJM,GAdM,SAASU,GAC5BA,EACGtvN,OAAO,QACPA,OAAO,UACPC,KAAK,KAAM,aACXA,KAAK,OAAQ,GACbA,KAAK,OAAQ,GACbA,KAAK,cAAe,GACpBA,KAAK,eAAgB,GACrBA,KAAK,SAAU,QACfD,OAAO,QACPC,KAAK,IAAK,qBCvZf+9B,UAAO8uC,GAAKyiJ,GAEZ,IAAMngG,GAAO,CACX25F,WAAY,IACZntB,eAAgB,GAChBC,eAAgB,GAEhB2zB,WAAY,GAEZ9nM,MAAO,IAEPC,OAAQ,GACRknM,aAAc,GACdC,eAAgB,4BAEhB/yB,UAAW,GACXC,cAAe,EACfC,WAAY,GAEZC,cAAe,GAEfC,aAAc,SAGdE,gBAAiB,EAGjBV,gBAAiB,GAGjB2R,cAAe,KAEfmiB,aAAc,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,WAEtEC,aAAc,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WACjFC,eAAgB,CAAC,SAWb9gB,GAAS,GA6Bf,IAAM+gB,GAAcxgG,GAAK25F,WAgEZnzK,GAAS,CACpB75C,KAAM,CACJ8xM,YAAQzoL,EACR2oL,WAAO3oL,EACP0oL,YAAQ1oL,EACR+oL,WAAO/oL,GAETsoL,YAAa,EAEbsD,cAAe,GACf7zK,KAAM,WACJnoC,KAAKg8M,cAAgB,GACrBh8M,KAAK+G,KAAO,CACV8xM,YAAQzoL,EACR2oL,WAAO3oL,EACP0oL,YAAQ1oL,EACR+oL,WAAO/oL,GAETpwB,KAAK04M,YAAc,GAErBoE,UAAW,SAASzgH,EAAK16F,EAAKokF,EAAK4T,QACT,IAAb0C,EAAI16F,GACb06F,EAAI16F,GAAOokF,EAEXsW,EAAI16F,GAAOg4F,EAAI5T,EAAKsW,EAAI16F,KAG5Bo7M,aAAc,SAASlE,EAAQC,EAAQC,EAAOI,GAC5C,IAEkBtsM,EAFZmwM,EAAQh9M,KACVkiM,EAAM,EAuBVliM,KAAKg8M,cAAcvkL,SArBV,SAA0B++F,GAC/B0rE,IAEA,IAAMrgM,EAAIm7M,EAAMhB,cAAcv5M,OAASy/L,EAAM,EAE7C8a,EAAMF,UAAUtmF,EAAM,SAAUsiF,EAASj3M,EAAIu4H,GAAK2sE,UAAWpiM,KAAKE,KAClEm4M,EAAMF,UAAUtmF,EAAM,QAAS2iF,EAAQt3M,EAAIu4H,GAAK2sE,UAAWpiM,KAAKG,KAEhEk4M,EAAMF,UAAUl8J,GAAO75C,KAAM,SAAU8xM,EAASh3M,EAAIu4H,GAAK2sE,UAAWpiM,KAAKE,KACzEm4M,EAAMF,UAAUl8J,GAAO75C,KAAM,QAASgyM,EAAQl3M,EAAIu4H,GAAK2sE,UAAWpiM,KAAKG,KAExD,eAAT+H,IACJmwM,EAAMF,UAAUtmF,EAAM,SAAUqiF,EAASh3M,EAAIu4H,GAAK2sE,UAAWpiM,KAAKE,KAClEm4M,EAAMF,UAAUtmF,EAAM,QAASuiF,EAAQl3M,EAAIu4H,GAAK2sE,UAAWpiM,KAAKG,KAEhEk4M,EAAMF,UAAUl8J,GAAO75C,KAAM,SAAU+xM,EAASj3M,EAAIu4H,GAAK2sE,UAAWpiM,KAAKE,KACzEm4M,EAAMF,UAAUl8J,GAAO75C,KAAM,QAASoyM,EAAQt3M,EAAIu4H,GAAK2sE,UAAWpiM,KAAKG,UAO/EwG,OAAQ,SAASutM,EAAQC,EAAQC,EAAOI,GACtC,IAAM+D,EAAUv4M,KAAKE,IAAIg0M,EAAQE,GAC3BoE,EAASx4M,KAAKG,IAAI+zM,EAAQE,GAC1BqE,EAAUz4M,KAAKE,IAAIi0M,EAAQK,GAC3BkE,EAAS14M,KAAKG,IAAIg0M,EAAQK,GAEhCn5M,KAAK88M,UAAUl8J,GAAO75C,KAAM,SAAUm2M,EAASv4M,KAAKE,KACpD7E,KAAK88M,UAAUl8J,GAAO75C,KAAM,SAAUq2M,EAASz4M,KAAKE,KACpD7E,KAAK88M,UAAUl8J,GAAO75C,KAAM,QAASo2M,EAAQx4M,KAAKG,KAClD9E,KAAK88M,UAAUl8J,GAAO75C,KAAM,QAASs2M,EAAQ14M,KAAKG,KAElD9E,KAAK+8M,aAAaG,EAASE,EAASD,EAAQE,IAE9Ce,gBAAiB,SAASC,GACxBr+M,KAAK04M,YAAc14M,KAAK04M,YAAc2F,EACtCr+M,KAAK+G,KAAKoyM,MAAQn5M,KAAK04M,aAEzByF,eAAgB,WACd,OAAOn+M,KAAK04M,aAEd4F,UAAW,WACT,OAAOt+M,KAAK+G,OAIV8zN,GAAQzgG,GAAKsgG,aACbI,GAAc1gG,GAAKugG,eAEZI,GAAY,SAASxd,EAAS2E,EAAOxJ,GAUhD,IATA,IAAIsiB,EAAc,GAEZC,EAAUviB,GADqB,EAAdt+E,GAAKznG,OAAaynG,GAAKysE,gBAG1Cq0B,EAAgB,EAChB/sL,EAAO,OACPyrL,EAAS,QAGJx5N,EAAI,EAAGA,EAAI8hN,EAAMz/M,OAAQrC,IAAK,CACrC,IAAI4hK,EAAOkgD,EAAM9hN,GACjB,GAAI46N,IAAgBh5D,EAAK8iD,QAAS,CAChC32K,EAAO0sL,GAAMK,EAAgBL,GAAMp4N,QACnCm3N,EAASkB,GAAYI,EAAgBJ,GAAYr4N,QAEjD,IAAMqiN,EAAU,CACdpiN,EAAGtC,EAAIg6H,GAAKogG,WAAap6N,EAAIg6H,GAAK1nG,MAAQkoM,GAC1C9xN,EAAG,GACHsC,KAAM42J,EAAK8iD,QACX32K,OACAyrL,UAGFlc,GAAoBH,EAASuH,EAAS1qF,IACtC4gG,EAAch5D,EAAK8iD,QACnBoW,IAIF,IAAMC,EAAan5D,EAAKs3D,OAAOp1N,QAAO,SAACwwF,EAAK0mI,GAK1C,OAJIvhB,GAAOuhB,KACT1mI,EAAI0mI,GAAavhB,GAAOuhB,IAGnB1mI,IACN,IAGHstE,EAAKt/J,EAAItC,EAAIg6H,GAAKogG,WAAap6N,EAAIg6H,GAAK1nG,MAAQkoM,GAChD54D,EAAKl5J,EAAImyN,EACTj5D,EAAKtvI,MAAQ0nG,GAAKwsE,eAClB5kC,EAAKrvI,OAASynG,GAAKysE,eACnB7kC,EAAK43D,OAASA,EACd53D,EAAK7zH,KAAOA,EACZ6zH,EAAK63C,OAASshB,EAGdzd,GAAiBH,EAASv7C,EAAM5nC,IAChCx5E,GAAOt1C,OAAO02J,EAAKt/J,EAAGs/J,EAAKl5J,EAAGk5J,EAAKt/J,EAAIs/J,EAAKtvI,MAAQ0nG,GAAKogG,WAAY,OAI1D,GA5OQ,SAASnqB,GACjBvvM,OAAOyyB,KAAK88K,GAEpB54K,SAAQ,SAAS91B,GACpBy4H,GAAKz4H,GAAO0uM,EAAI1uM,OAwOL,GAtMK,SAASyJ,EAAMggB,GACjC4d,UAAO8uC,GAAGvhD,QACVyS,UAAOvc,MAAMrhB,EAAO,MAEpBw1C,GAAOzY,OACP,IAAMo1K,EAAUpyM,iBAAO,IAAMigB,GAC7BmyL,EAAQtyM,KAAK,cAAe,gCAE5ByyM,GAAqBH,GAErB,IAAM2E,EAAQl5K,UAAO8uC,GAAG6sI,WAClBpqH,EAAQvxD,UAAO8uC,GAAGyjI,WAElB8f,EAAaryL,UAAO8uC,GAAGsjI,YAC7B,IAAK,IAAIiO,KAAUxP,UAAeA,GAAOwP,GACzC,IAAIiS,EAAW,EACfD,EAAW5jM,SAAQ,SAAA2jM,GACjBvhB,GAAOuhB,GAAahhG,GAAKqgG,aAAaa,EAAWlhG,GAAKqgG,aAAah4N,QACnE64N,OA9CJ,SAAyB/d,GAEvB,IAAIxM,EAAO,GACXjwM,OAAOyyB,KAAKsmL,IAAQpiL,SAAQ,SAAA4iM,GAC1B,IAAMT,EAAS/f,GAAOwgB,GAStB3c,GAAmBH,EAPA,CACjBxmK,GAAI,GACJC,GAAI+5J,EACJ7vM,EAAG,EACHitC,KAAMyrL,EACNtuG,OAAQ,SAUVoyF,GAAiBH,EANC,CAChB76M,EAAG,GACHoG,EAAGioM,EAAO,EACV5iK,KAAM,OACN/iC,KAAMivN,IAIRtpB,GAAQ,MA0BVwqB,CAAgBhe,GAChB38J,GAAOt1C,OAAO,EAAG,EAAGsvN,GAA0C,GAA7B95N,OAAOyyB,KAAKsmL,IAAQp3M,QAErDs4N,GAAUxd,EAAS2E,EAAO,GAE1B,IAAMP,EAAM/gK,GAAO09J,YACf/jH,GACFgjH,EACGvyM,OAAO,QACPI,KAAKmvF,GACLtvF,KAAK,IAAK2vN,IACV3vN,KAAK,YAAa,OAClBA,KAAK,cAAe,QACpBA,KAAK,IAAK,IAEf,IAAM0nB,EAASgvL,EAAIxI,MAAQwI,EAAI7I,OAAS,EAAI1+E,GAAKysE,eAC3Cn0K,EAAQkoM,GAAcjZ,EAAI5I,MAAQ,EAAI3+E,GAAKwsE,eAC7CxsE,GAAKktE,aACPiW,EAAQtyM,KAAK,SAAU,QACvBsyM,EAAQtyM,KAAK,QAAS,QACtBsyM,EAAQtyM,KAAK,QAAS,aAAeynB,EAAQ,SAE7C6qL,EAAQtyM,KAAK,SAAU0nB,GACvB4qL,EAAQtyM,KAAK,QAASynB,IAIxB6qL,EACGvyM,OAAO,QACPC,KAAK,KAAM2vN,IACX3vN,KAAK,KAAoB,EAAdmvH,GAAKznG,QAChB1nB,KAAK,KAAMynB,EAAQkoM,GAAc,GACjC3vN,KAAK,KAAoB,EAAdmvH,GAAKznG,QAChB1nB,KAAK,eAAgB,GACrBA,KAAK,SAAU,SACfA,KAAK,aAAc,mBAEtB,IAAM22M,EAAoBrnH,EAAQ,GAAK,EACvCgjH,EAAQtyM,KAAK,UAAb,UAA2B02M,EAAI9I,OAA/B,gBAA6CnmL,EAA7C,YAAsDC,EAASivL,IAC/DrE,EAAQtyM,KAAK,sBAAuB,kB,uOCtFtC,IAFA,IAAMuwN,GAAS,GAEf,QAAwB,CAAC,UAAW,SAAU,OAAQ,WAAtD,kBAAkE,CAA7D,IAAMC,GAAS,OAClBD,GAAOC,IAAahlF,OAAQ,YAAYglF,GAAb,gBA+EtB,IAoSHC,GAAmB,GA8BjBC,GAAkB,SAASp6B,EAAW10L,GAE1C,OADAgzL,EAAO76E,MAAP,yBAA+Bu8E,EAAU10L,KAAzC,eAA4D00L,EAAUj0L,MAC9Di0L,EAAU10L,MAChB,IAAK,OACL,IAAK,aACH,CAAC,UAAU4qB,SAAQ,SAAA6gJ,QACmB,IAAzBipB,EAAUj0L,KAAKgrK,KACX,iBAATzrK,IACFA,EAAO,aAET00L,EAAUj0L,KAAKT,GAAQ00L,EAAUj0L,KAAKgrK,UAC/BipB,EAAUj0L,KAAKgrK,OAI1BsjD,GAAar6B,EAAUj0L,MACvB,MAEF,IAAK,OACL,IAAK,SACHi0L,EAAUj0L,KAAO,CAAEopG,OAAQ,CAAExhG,KAAyB,SAAnBqsL,EAAU10L,OAC7C,CAAC,UAAU4qB,SAAQ,SAAA6gJ,QACmB,IAAzBipB,EAAUj0L,KAAKgrK,KACX,iBAATzrK,IACFA,EAAO,aAET00L,EAAUj0L,KAAKT,GAAQ00L,EAAUj0L,KAAKgrK,UAC/BipB,EAAUj0L,KAAKgrK,OAG1BsjD,GAAar6B,EAAUj0L,MACvB,MACF,QACEuyL,EAAOrwF,KAAP,2CACsC+xF,EAAU10L,KADhD,aACyDu1B,KAAKC,UAC1Dk/J,EAAUj0L,KAAOi0L,EAAUj0L,KAAO,IAFtC,OAIEi0L,KAMR,SAASs6B,GAAsBzhG,GAC7B0hG,GAAyB1hG,EAAK+uE,KAC9B4yB,GAAqB3hG,EAAKomE,WAC1Bw7B,GAAuB5hG,EAAKomE,gBACW,IAA5BpmE,EAAI,iBACb6hG,GAAiBpf,QAAQza,EAAgBhoE,EAAKssE,SAAUtsE,EAAI,kBAE9D6hG,GAAiBpf,QAAQziF,EAAKssE,UAC9Bw1B,GAAsB9hG,EAAKquE,OAC3B0zB,GAAsB/hG,EAAK0oE,OAC3Bs5B,GAAsBhiG,EAAK9uG,OAC3B+wM,GAAwBjiG,EAAK9uG,OAC7BgxM,GAAqBliG,EAAK0oE,OAC1By5B,GAAoBniG,EAAK0oE,OACzB05B,GAAmBpiG,EAAK6K,IACxBw3F,GAAwBriG,EAAK8uE,SAC7BwzB,GAAsBtiG,EAAK0oE,OAG7B,SAAS84B,GAAax7I,GACpBoD,QAAQv9E,IAAR,oCAAyC02N,EAAI33I,SAAW5E,GAExD,IAAMs2B,EAA4B,WAAnB,GAAOt2B,GAAuBqqH,EAAUrqH,GAAWoqH,IAClEqxB,GAAsBnlH,GACtBopF,EAAYppF,EAAO0vF,UACnBvG,EAAO76E,MAAM,4BAA6BtO,GAgB5C,IAAM+kG,GAAa36M,OAAO+0I,OAAO,CAC/BpxC,OAxVa,SAASr5E,EAAIwxM,EAAM9/K,EAAI5b,GACpC,IAAMmvK,EAAM1F,IAERrK,EAAMs8B,EACNA,EAAKn6N,OAAS4tM,EAAIlK,cACpB7F,EAAM,uEAER,IAAMu8B,EAAY31H,EAAM09F,WAAWtE,GAMnC,GALIu8B,IACFjB,GAAaiB,GACbz6B,EAAgBiO,EAAK1F,WAGE,IAAdzpK,EACTA,EAAUvuB,UAAY,GAEtBxH,iBAAO+1B,GACJl2B,OAAO,OACPC,KAAK,KAAM,IAAMmgB,GACjBngB,KAAK,QAAS,gBAAkBolM,EAAI1N,YACpC33L,OAAO,OACPC,KAAK,KAAMmgB,GACXngB,KAAK,QAAS,QACdA,KAAK,QAAS,8BACdD,OAAO,SACL,CACL,IAAM8xN,EAAcvsN,SAAS21M,eAAe96L,GACxC0xM,GACFA,EAAYpxN,SAEd,IAAMogM,EAAUv7L,SAAS9C,cAAc,KAAY2d,GAC/C0gL,GACFA,EAAQpgM,SAGVP,iBAAO,QACJH,OAAO,OACPC,KAAK,KAAM,IAAMmgB,GACjBpgB,OAAO,OACPC,KAAK,KAAMmgB,GACXngB,KAAK,QAAS,QACdA,KAAK,QAAS,8BACdD,OAAO,KAGZwK,OAAO8qL,IAAMA,EACbA,EA7G4B,SAASl1L,GACrC,IAAIk1L,EAAMl1L,EAsBV,OAXAk1L,GALAA,GAJAA,EAAMA,EAAIp8J,QAAQ,oBAAoB,SAAS/hC,GAE7C,OADiBA,EAAEitC,UAAU,EAAGjtC,EAAEM,OAAS,OAGnCyhC,QAAQ,uBAAuB,SAAS/hC,GAEhD,OADiBA,EAAEitC,UAAU,EAAGjtC,EAAEM,OAAS,OAInCyhC,QAAQ,UAAU,SAAS/hC,GACnC,IAAM46N,EAAW56N,EAAEitC,UAAU,EAAGjtC,EAAEM,OAAS,GAG3C,MADc,WAAW2J,KAAK2wN,GAErB,MAAQA,EAAW,KAEnB,KAAOA,EAAW,QA0FvBC,CAAe18B,GAErB,IAAMwL,EAAU3gM,iBAAO,KAAOigB,GAAIzc,OAC5BsuN,EAAY/1H,EAAM06F,WAAWtB,GAG7BnxL,EAAM28L,EAAQ54L,WACdA,EAAa/D,EAAI+D,WAGnBzC,EAAQ+qN,GAAOnrB,EAAIpK,OAmBvB,QAlBc71K,IAAV3f,IACFA,EAAQ,SAIW2f,IAAjBigL,EAAInK,WACNz1L,GAAS,KAAJ,OAAS4/L,EAAInK,gBAGG91K,IAAnBigL,EAAI1N,aACNlyL,GAAS,oCAAJ,OAAwC4/L,EAAI1N,WAA5C,WAGmBvyK,IAAtBigL,EAAI6sB,gBACNzsN,GAAS,wCAAJ,OAA4C4/L,EAAI6sB,cAAhD,MAIW,cAAdD,GAA2C,iBAAdA,EAA8B,CAC7D,IAAMnyB,EAAUixB,GAAwBz7B,GACxC,IAAK,IAAMoL,KAAaZ,EACtBr6L,GAAS,MAAJ,OAAUi7L,EAAV,kBAA6BZ,EAAQY,GAAWhvC,OAAOvqJ,KAC1D,iBADG,kBAGD24L,EAAQY,GAAWgB,aACrBj8L,GAAS,MAAJ,OAAUi7L,EAAV,oBAA+BZ,EAAQY,GAAWgB,WAAWv6L,KAChE,iBADG,mBAOX,IAAMgrN,EAAS5sN,SAAS+C,cAAc,SACtC6pN,EAAOxqN,UAAY6kJ,IAAM/mJ,EAAD,WAAY2a,IACpCjc,EAAIZ,aAAa4uN,EAAQjqN,GAEzB,IAAMkqN,EAAS7sN,SAAS+C,cAAc,SAChC+pN,EAAK7nN,OAAOvE,iBAAiB9B,GACnCiuN,EAAOzqN,UAAP,WAAuByY,EAAvB,0BACWiyM,EAAGr3M,MADd,wBAEUq3M,EAAGC,KAFb,UAIAnuN,EAAIZ,aAAa6uN,EAAQlqN,GAEzB,IACE,OAAQ+pN,GACN,IAAK,MACH5sB,EAAI7P,UAAU8F,oBAAsB+J,EAAI/J,oBACxCw1B,GAAyBzrB,EAAIlH,KAC7B2yB,GAAsBx7B,EAAKl1K,GAAI,GAC/B,MACF,IAAK,YACHilL,EAAI7P,UAAU8F,oBAAsB+J,EAAI/J,oBACxCy1B,GAAqB1rB,EAAI7P,WACzBu7B,GAAkBz7B,EAAKl1K,GAAI,GAC3B,MACF,IAAK,eACHilL,EAAI7P,UAAU8F,oBAAsB+J,EAAI/J,oBACxC01B,GAAuB3rB,EAAI7P,WAC3Bw7B,GAAoB17B,EAAKl1K,GAAI,GAC7B,MACF,IAAK,WACHilL,EAAI3J,SAASJ,oBAAsB+J,EAAI/J,oBACnC+J,EAAIktB,iBAENtB,GAAiBpf,QAAQ/7M,OAAOykB,OAAO8qL,EAAI3J,SAAU2J,EAAIktB,kBACzD/5I,QAAQr9E,MACN,+GAGF81N,GAAiBpf,QAAQxM,EAAI3J,UAE/Bu1B,GAAiB/zJ,KAAKo4H,EAAKl1K,GAC3B,MACF,IAAK,QACHilL,EAAI5H,MAAMnC,oBAAsB+J,EAAI/J,oBACpC41B,GAAsB7rB,EAAI5H,OAC1ByzB,GAAmB57B,EAAKl1K,GACxB,MACF,IAAK,QACHilL,EAAIvN,MAAMwD,oBAAsB+J,EAAI/J,oBACpC61B,GAAsB9rB,EAAIvN,OAC1Bq5B,GAAmB77B,EAAKl1K,GACxB,MACF,IAAK,QACHilL,EAAIvN,MAAMwD,oBAAsB+J,EAAI/J,oBACpC81B,GAAsB/rB,EAAI/kL,OAC1B8wM,GAAmB97B,EAAKl1K,GACxB,MACF,IAAK,eACHilL,EAAIvN,MAAMwD,oBAAsB+J,EAAI/J,oBACpC+1B,GAAwBhsB,EAAI/kL,OAC5B+wM,GAAqB/7B,EAAKl1K,GAC1B,MACF,IAAK,OACHilL,EAAIvN,MAAMwD,oBAAsB+J,EAAI/J,oBACpCg2B,GAAqBjsB,EAAIvN,OACzBw5B,GAAkBh8B,EAAKl1K,EAAIuxM,EAAI33I,SAC/B,MACF,IAAK,MACHqrH,EAAIvN,MAAMwD,oBAAsB+J,EAAI/J,oBACpCi2B,GAAoBlsB,EAAIvN,OACxBy5B,GAAiBj8B,EAAKl1K,EAAIuxM,EAAI33I,SAC9B,MACF,IAAK,KACHw3I,GAAmBnsB,EAAIprE,IACvBu3F,GAAgBl8B,EAAKl1K,EAAIuxM,EAAI33I,SAC7B,MACF,IAAK,UACHy3I,GAAwBpsB,EAAInH,SAC5BuzB,GAAqBn8B,EAAKl1K,EAAIuxM,EAAI33I,UAGtC,MAAO56D,GAGP,MADAsyM,GAAmBtxM,EAAIuxM,EAAI33I,SACrB56D,EAGRjf,iBAAO,QAAD,OAASigB,EAAT,OACH3gB,UAAU,qBACVQ,KAAK,QAAS,gCAcjB,IAAIuyN,EAAUryN,iBAAO,KAAOigB,GAAIzc,OAAOgE,UAQvC,GAPAktL,EAAO76E,MAAM,0BAA2BqrF,EAAI/J,qBACvC+J,EAAI/J,qBAAmD,UAA5B+J,EAAI/J,sBAClCk3B,EAAUA,EAAQt5L,QAAQ,yBAA0B,oBAAqB,MAG3Es5L,EA3O4B,SAASpyN,GACrC,IAAIk1L,EAAMl1L,EAYV,OAJAk1L,GAHAA,GAHAA,EAAMA,EAAIp8J,QAAQ,QAAQ,WACxB,MAAO,SAECA,QAAQ,OAAO,WACvB,MAAO,QAECA,QAAQ,OAAO,WACvB,MAAO,OAiOCu5L,CAAeD,QAEP,IAAP1gL,EACT,OAAQmgL,GACN,IAAK,YACL,IAAK,eACHngL,EAAG0gL,EAASltB,GAAOxD,eACnB,MACF,IAAK,QACHhwJ,EAAG0gL,EAASxX,GAAQlZ,eACpB,MACF,IAAK,QACHhwJ,EAAG0gL,EAAS5Q,GAAQ9f,eACpB,MACF,QACEhwJ,EAAG0gL,QAGP39B,EAAO76E,MAAM,mBAGf,IAAMr2G,EAAOxD,iBAAO,KAAOigB,GAAIzc,OAO/B,OANa,OAATA,GAAwC,mBAAhBA,EAAKjD,QAC/BP,iBAAO,KAAOigB,GACXzc,OACAjD,SAGE8xN,GAuHP/wM,MApeF,SAAerhB,GACb,IAAMyxN,EAAY31H,EAAM09F,WAAWx5L,GAC/ByxN,IACFjB,GAAaiB,GACbh9B,EAAO76E,MAAM,UAAW63G,IAE1B,IACI7zL,EADEi0L,EAAY/1H,EAAM06F,WAAWx2L,GAInC,OADAy0L,EAAO76E,MAAM,QAAUi4G,GACfA,GACN,IAAK,OACHj0L,EAASwsL,MACFxsL,OAAO8uC,GAAK4lJ,GACnB,MACF,IAAK,YAKL,IAAK,eACHptB,GAAO/5K,SACPyS,EAAS20L,MACF30L,OAAO8uC,GAAKw4H,GACnB,MACF,IAAK,YACHtnK,EAAS40L,MACF50L,OAAO8uC,GAAKikI,GACnB,MACF,IAAK,SACH/yK,EAAS60L,MACF70L,OAAO8uC,GAAKkuI,GACnB,MACF,IAAK,SACHh9K,EAAS80L,MACF90L,OAAO8uC,GAAK80I,GACnB,MACF,IAAK,QAIL,IAAK,gBACH5jL,EAAS+0L,MACF/0L,OAAO8uC,GAAKm4I,GACnB,MACF,IAAK,OACHpwB,EAAO76E,MAAM,mBACbh8E,EAAS6sL,MACF7sL,OAAO8uC,GAAKkmJ,GACnB,MACF,IAAK,MACHn+B,EAAO76E,MAAM,QACbh8E,EAAS8sL,MACF9sL,OAAO8uC,GAAKmmJ,GACnB,MACF,IAAK,KACHp+B,EAAO76E,MAAM,OACbh8E,EAASgvL,MACFhvL,OAAO8uC,GAAKigJ,GACnB,MACF,IAAK,UACHl4B,EAAO76E,MAAM,YACbh8E,EAASk1L,MACFl1L,OAAO8uC,GAAKyiJ,GAUvB,OAPAvxL,EAAOA,OAAO8uC,GAAGmlJ,UAAYA,EAC7Bj0L,EAAOA,OAAO8uC,GAAGwH,WAAa,SAACC,EAAKC,GAElC,KADc,CAAED,MAAKC,SAIvBx2C,EAAOvc,MAAMrhB,GACN49B,GA4ZPs0C,eAnHqB,SAASk+H,EAAWzxM,EAAS8C,GAClD,IACE,QAAkBujB,IAAdorL,EAEF,OADAA,EAAYA,EAAU9uM,OACd3C,GACN,IAAK,iBACH2xN,GAAmB,GACnB,MACF,IAAK,iBACHA,GAAiB7uN,KAAO2uM,EAAU93L,cAClC,MACF,IAAK,gBACHg4M,GAAiBpuN,KAAO80B,KAAK3V,MAAM+uL,GACnC,MACF,IAAK,kBACHmgB,GAAgBD,GAAkB7uN,GAClC6uN,GAAmB,MAIzB,MAAOv1N,GACP05L,EAAO15L,MAAP,2DACsDq1M,EADtD,2BACkFzxM,IAElF81L,EAAO15L,MAAMA,EAAMkhI,WA4FrB1zG,WAjBF,SAAoBysD,GAGlB,IAAMs2B,EAA4B,WAAnB,GAAOt2B,GAAuBmqH,EAAcnqH,GAAWoqH,IACtEqxB,GAAsBnlH,GACtBopF,EAAYppF,EAAO0vF,UACnBvG,EAAO76E,MAAM,0BAA2BtO,IAYxCklH,gBACAjxB,YACAH,gBACA35J,MAAO,WAEL+5J,EAAU/5J,QAEVgrL,GADmBrxB,MAGrB2zB,YAAa,WACXvzB,EAAU/5J,MAAM+5J,EAAUR,eAC1ByxB,GAAsBlxB,MAExBP,cAAeQ,EAAUR,gBAG3BtK,EAAY6K,IAAYvE,UACxBwE,EAAU/5J,MAAM85J,KAED8Q,UCjaT2iB,GAAgB,WAGhBC,GAAQh4B,YAEDoV,GAAW9Q,YACTtE,aACTg4B,GAAQl2L,YAGyB,IAAxBk2L,GAAQh4B,cACjBxG,EAAO76E,MAAM,uBACJy2F,GAAW9Q,YACTtE,aACTg4B,GAAQl2L,SAMQ,oBAAb53B;;;;AAITiF,OAAOL,iBACL,QACA,WACEipN,QAEF,GAIJ,IAAMC,GAAU,CACdh4B,aAAa,EACb9F,YAAY,EAEZkb,cACAhvL,MAAOgvL,GAAWhvL,MAClBg4E,OAAQg3G,GAAWh3G,OAEnBt8D,KA9JW,WAAW,IAGlBnwB,EAaAjL,EAiCAuzL,EAjDkB,OAChBlmE,EAAOqhF,GAAW9Q,YAGpBvlM,UAAU3C,QAAU;;KAEM,IAAjB2C,UAAU,KACnBi5N,GAAQC,eAAiBl5N,UAAU,IAGrC4S,EAAQ5S,UAAU,IAElB4S,EAAQ5S,UAAU,GAK2B,mBAApCA,UAAUA,UAAU3C,OAAS,IACtCsK,EAAW3H,UAAUA,UAAU3C,OAAS,GACxCo9L,EAAO76E,MAAM,iCAEe,IAAjBoV,EAAKikG,UACuB,mBAA1BjkG,EAAKikG,QAAQtxN,UACtBA,EAAWqtH,EAAKikG,QAAQtxN,SACxB8yL,EAAO76E,MAAM,4BAEb66E,EAAO76E,MAAM,+BAInBhtG,OACYoY,IAAVpY,EACIzH,SAAS7C,iBAAiB,YACT,iBAAVsK,EACPzH,SAAS7C,iBAAiBsK,GAC1BA,aAAiBxC,OAAO0zC,KACxB,CAAClxC,GACDA,EAEN6nL,EAAO76E,MAAM,yBAA2Bq5G,GAAQh4B,kBACb,IAAxBg4B,GAAQh4B,cACjBxG,EAAO76E,MAAM,wBAA0Bq5G,GAAQh4B,aAC/CoV,GAAW9nL,WAAW,CAAE0yK,YAAag4B,GAAQh4B,oBAGZ,IAAxBg4B,GAAQE,aACjB9iB,GAAW9nL,WAAW,CAAE80K,MAAO41B,GAAQE,cAKzC,IAnDsB,eAmDbn+N,GACP,IAAM0rM,EAAU9zL,EAAM5X;oCAGtB,GAAK0rM,EAAQtgM,aAAa,kBAGxB,iBAFAsgM,EAAQ77L,aAAa,kBAAkB,GAKzC,IAAMmb,EAAK,WAAH,OAAcnE,KAAKuC,OAM3B82K,EAAM1iE,EAHN0iE,EAAMwL,EAAQn5L,WAIXjG,OACAw3B,QAAQ,eAAgB,SAE3B,IAAMiE,EAAO++D,EAAM09F,WAAWtE,GAC1Bn4J,GACF03J,EAAO76E,MAAM,0BAA2B78E,GAG1C,IACEszK,GAAWh3G,OACTr5E,EACAk1K,GACA,SAACk9B,EAAS1wB,GACRhB,EAAQn5L,UAAY6qN,OACI,IAAbzwN,GACTA,EAASqe,GAEP0hL,GAAeA,EAAchB,KAEnCA,GAEF,MAAO1hL,GACPy1K,EAAOrwF,KAAK,0BACZqwF,EAAOrwF,KAAKplF,GACR,EAAKk1D,YACP,EAAKA,WAAWl1D,KA1CbhqB,EAAI,EAAGA,EAAI4X,EAAMvV,OAAQrC,IAAK,EAA9BA,IA4GTuzB,WA5DiB,SAAS+iF,GAC1B+kG,GAAW5qK,aACmB,IAAnB6lE,EAAO2nH,eAC0B,IAA/B3nH,EAAO2nH,QAAQh4B,cACxBg4B,GAAQh4B,YAAc3vF,EAAO2nH,QAAQh4B,kBAEE,IAA9B3vF,EAAO2nH,QAAQ99B,aACxB89B,GAAQ99B,WAAa7pF,EAAO2nH,QAAQ99B,aAGxCkb,GAAW9nL,WAAW+iF,IAoDtB0nH,kBAGaC,gB","file":"mermaid.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"mermaid\"] = factory();\n\telse\n\t\troot[\"mermaid\"] = factory();\n})(typeof self !== \"undefined\" ? self : this, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 510);\n","export var name = \"d3\";\nexport var version = \"5.15.0\";\nexport var description = \"Data-Driven Documents\";\nexport var keywords = [\"dom\",\"visualization\",\"svg\",\"animation\",\"canvas\"];\nexport var homepage = \"https://d3js.org\";\nexport var license = \"BSD-3-Clause\";\nexport var author = {\"name\":\"Mike Bostock\",\"url\":\"https://bost.ocks.org/mike\"};\nexport var main = \"dist/d3.node.js\";\nexport var unpkg = \"dist/d3.min.js\";\nexport var jsdelivr = \"dist/d3.min.js\";\nexport var module = \"index.js\";\nexport var repository = {\"type\":\"git\",\"url\":\"https://github.com/d3/d3.git\"};\nexport var files = [\"dist/**/*.js\",\"index.js\"];\nexport var scripts = {\"pretest\":\"rimraf dist && mkdir dist && json2module package.json > dist/package.js && rollup -c\",\"test\":\"tape 'test/**/*-test.js'\",\"prepublishOnly\":\"yarn test\",\"postpublish\":\"git push && git push --tags && cd ../d3.github.com && git pull && cp ../d3/dist/d3.js d3.v5.js && cp ../d3/dist/d3.min.js d3.v5.min.js && git add d3.v5.js d3.v5.min.js && git commit -m \\\"d3 ${npm_package_version}\\\" && git push && cd - && cd ../d3-bower && git pull && cp ../d3/LICENSE ../d3/README.md ../d3/dist/d3.js ../d3/dist/d3.min.js . && git add -- LICENSE README.md d3.js d3.min.js && git commit -m \\\"${npm_package_version}\\\" && git tag -am \\\"${npm_package_version}\\\" v${npm_package_version} && git push && git push --tags && cd - && zip -j dist/d3.zip -- LICENSE README.md API.md CHANGES.md dist/d3.js dist/d3.min.js\"};\nexport var devDependencies = {\"json2module\":\"0.0\",\"rimraf\":\"2\",\"rollup\":\"1\",\"rollup-plugin-ascii\":\"0.0\",\"rollup-plugin-node-resolve\":\"3\",\"rollup-plugin-terser\":\"5\",\"tape\":\"4\"};\nexport var dependencies = {\"d3-array\":\"1\",\"d3-axis\":\"1\",\"d3-brush\":\"1\",\"d3-chord\":\"1\",\"d3-collection\":\"1\",\"d3-color\":\"1\",\"d3-contour\":\"1\",\"d3-dispatch\":\"1\",\"d3-drag\":\"1\",\"d3-dsv\":\"1\",\"d3-ease\":\"1\",\"d3-fetch\":\"1\",\"d3-force\":\"1\",\"d3-format\":\"1\",\"d3-geo\":\"1\",\"d3-hierarchy\":\"1\",\"d3-interpolate\":\"1\",\"d3-path\":\"1\",\"d3-polygon\":\"1\",\"d3-quadtree\":\"1\",\"d3-random\":\"1\",\"d3-scale\":\"2\",\"d3-scale-chromatic\":\"1\",\"d3-selection\":\"1\",\"d3-shape\":\"1\",\"d3-time\":\"1\",\"d3-time-format\":\"2\",\"d3-timer\":\"1\",\"d3-transition\":\"1\",\"d3-voronoi\":\"1\",\"d3-zoom\":\"1\"};\n","export default function(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","import ascending from \"./ascending\";\n\nexport default function(compare) {\n if (compare.length === 1) compare = ascendingComparator(compare);\n return {\n left: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n }\n return lo;\n },\n right: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) > 0) hi = mid;\n else lo = mid + 1;\n }\n return lo;\n }\n };\n}\n\nfunction ascendingComparator(f) {\n return function(d, x) {\n return ascending(f(d), x);\n };\n}\n","import ascending from \"./ascending\";\nimport bisector from \"./bisector\";\n\nvar ascendingBisect = bisector(ascending);\nexport var bisectRight = ascendingBisect.right;\nexport var bisectLeft = ascendingBisect.left;\nexport default bisectRight;\n","export default function(array, f) {\n if (f == null) f = pair;\n var i = 0, n = array.length - 1, p = array[0], pairs = new Array(n < 0 ? 0 : n);\n while (i < n) pairs[i] = f(p, p = array[++i]);\n return pairs;\n}\n\nexport function pair(a, b) {\n return [a, b];\n}\n","import {pair} from \"./pairs\";\n\nexport default function(values0, values1, reduce) {\n var n0 = values0.length,\n n1 = values1.length,\n values = new Array(n0 * n1),\n i0,\n i1,\n i,\n value0;\n\n if (reduce == null) reduce = pair;\n\n for (i0 = i = 0; i0 < n0; ++i0) {\n for (value0 = values0[i0], i1 = 0; i1 < n1; ++i1, ++i) {\n values[i] = reduce(value0, values1[i1]);\n }\n }\n\n return values;\n}\n","export default function(a, b) {\n return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n}\n","export default function(x) {\n return x === null ? NaN : +x;\n}\n","import number from \"./number\";\n\nexport default function(values, valueof) {\n var n = values.length,\n m = 0,\n i = -1,\n mean = 0,\n value,\n delta,\n sum = 0;\n\n if (valueof == null) {\n while (++i < n) {\n if (!isNaN(value = number(values[i]))) {\n delta = value - mean;\n mean += delta / ++m;\n sum += delta * (value - mean);\n }\n }\n }\n\n else {\n while (++i < n) {\n if (!isNaN(value = number(valueof(values[i], i, values)))) {\n delta = value - mean;\n mean += delta / ++m;\n sum += delta * (value - mean);\n }\n }\n }\n\n if (m > 1) return sum / (m - 1);\n}\n","import variance from \"./variance\";\n\nexport default function(array, f) {\n var v = variance(array, f);\n return v ? Math.sqrt(v) : v;\n}\n","export default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n min,\n max;\n\n if (valueof == null) {\n while (++i < n) { // Find the first comparable value.\n if ((value = values[i]) != null && value >= value) {\n min = max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = values[i]) != null) {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n }\n }\n\n else {\n while (++i < n) { // Find the first comparable value.\n if ((value = valueof(values[i], i, values)) != null && value >= value) {\n min = max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = valueof(values[i], i, values)) != null) {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n }\n }\n\n return [min, max];\n}\n","var array = Array.prototype;\n\nexport var slice = array.slice;\nexport var map = array.map;\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(x) {\n return x;\n}\n","export default function(start, stop, step) {\n start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n\n var i = -1,\n n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n range = new Array(n);\n\n while (++i < n) {\n range[i] = start + i * step;\n }\n\n return range;\n}\n","var e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\n\nexport default function(start, stop, count) {\n var reverse,\n i = -1,\n n,\n ticks,\n step;\n\n stop = +stop, start = +start, count = +count;\n if (start === stop && count > 0) return [start];\n if (reverse = stop < start) n = start, start = stop, stop = n;\n if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) return [];\n\n if (step > 0) {\n start = Math.ceil(start / step);\n stop = Math.floor(stop / step);\n ticks = new Array(n = Math.ceil(stop - start + 1));\n while (++i < n) ticks[i] = (start + i) * step;\n } else {\n start = Math.floor(start * step);\n stop = Math.ceil(stop * step);\n ticks = new Array(n = Math.ceil(start - stop + 1));\n while (++i < n) ticks[i] = (start - i) / step;\n }\n\n if (reverse) ticks.reverse();\n\n return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n var step = (stop - start) / Math.max(0, count),\n power = Math.floor(Math.log(step) / Math.LN10),\n error = step / Math.pow(10, power);\n return power >= 0\n ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power)\n : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);\n}\n\nexport function tickStep(start, stop, count) {\n var step0 = Math.abs(stop - start) / Math.max(0, count),\n step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)),\n error = step0 / step1;\n if (error >= e10) step1 *= 10;\n else if (error >= e5) step1 *= 5;\n else if (error >= e2) step1 *= 2;\n return stop < start ? -step1 : step1;\n}\n","export default function(values) {\n return Math.ceil(Math.log(values.length) / Math.LN2) + 1;\n}\n","import {slice} from \"./array\";\nimport bisect from \"./bisect\";\nimport constant from \"./constant\";\nimport extent from \"./extent\";\nimport identity from \"./identity\";\nimport range from \"./range\";\nimport {tickStep} from \"./ticks\";\nimport sturges from \"./threshold/sturges\";\n\nexport default function() {\n var value = identity,\n domain = extent,\n threshold = sturges;\n\n function histogram(data) {\n var i,\n n = data.length,\n x,\n values = new Array(n);\n\n for (i = 0; i < n; ++i) {\n values[i] = value(data[i], i, data);\n }\n\n var xz = domain(values),\n x0 = xz[0],\n x1 = xz[1],\n tz = threshold(values, x0, x1);\n\n // Convert number of thresholds into uniform thresholds.\n if (!Array.isArray(tz)) {\n tz = tickStep(x0, x1, tz);\n tz = range(Math.ceil(x0 / tz) * tz, x1, tz); // exclusive\n }\n\n // Remove any thresholds outside the domain.\n var m = tz.length;\n while (tz[0] <= x0) tz.shift(), --m;\n while (tz[m - 1] > x1) tz.pop(), --m;\n\n var bins = new Array(m + 1),\n bin;\n\n // Initialize bins.\n for (i = 0; i <= m; ++i) {\n bin = bins[i] = [];\n bin.x0 = i > 0 ? tz[i - 1] : x0;\n bin.x1 = i < m ? tz[i] : x1;\n }\n\n // Assign data to bins by value, ignoring any outside the domain.\n for (i = 0; i < n; ++i) {\n x = values[i];\n if (x0 <= x && x <= x1) {\n bins[bisect(tz, x, 0, m)].push(data[i]);\n }\n }\n\n return bins;\n }\n\n histogram.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(_), histogram) : value;\n };\n\n histogram.domain = function(_) {\n return arguments.length ? (domain = typeof _ === \"function\" ? _ : constant([_[0], _[1]]), histogram) : domain;\n };\n\n histogram.thresholds = function(_) {\n return arguments.length ? (threshold = typeof _ === \"function\" ? _ : Array.isArray(_) ? constant(slice.call(_)) : constant(_), histogram) : threshold;\n };\n\n return histogram;\n}\n","import number from \"./number\";\n\nexport default function(values, p, valueof) {\n if (valueof == null) valueof = number;\n if (!(n = values.length)) return;\n if ((p = +p) <= 0 || n < 2) return +valueof(values[0], 0, values);\n if (p >= 1) return +valueof(values[n - 1], n - 1, values);\n var n,\n i = (n - 1) * p,\n i0 = Math.floor(i),\n value0 = +valueof(values[i0], i0, values),\n value1 = +valueof(values[i0 + 1], i0 + 1, values);\n return value0 + (value1 - value0) * (i - i0);\n}\n","import {map} from \"../array\";\nimport ascending from \"../ascending\";\nimport number from \"../number\";\nimport quantile from \"../quantile\";\n\nexport default function(values, min, max) {\n values = map.call(values, number).sort(ascending);\n return Math.ceil((max - min) / (2 * (quantile(values, 0.75) - quantile(values, 0.25)) * Math.pow(values.length, -1 / 3)));\n}\n","import deviation from \"../deviation\";\n\nexport default function(values, min, max) {\n return Math.ceil((max - min) / (3.5 * deviation(values) * Math.pow(values.length, -1 / 3)));\n}\n","export default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n max;\n\n if (valueof == null) {\n while (++i < n) { // Find the first comparable value.\n if ((value = values[i]) != null && value >= value) {\n max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = values[i]) != null && value > max) {\n max = value;\n }\n }\n }\n }\n }\n\n else {\n while (++i < n) { // Find the first comparable value.\n if ((value = valueof(values[i], i, values)) != null && value >= value) {\n max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = valueof(values[i], i, values)) != null && value > max) {\n max = value;\n }\n }\n }\n }\n }\n\n return max;\n}\n","import number from \"./number\";\n\nexport default function(values, valueof) {\n var n = values.length,\n m = n,\n i = -1,\n value,\n sum = 0;\n\n if (valueof == null) {\n while (++i < n) {\n if (!isNaN(value = number(values[i]))) sum += value;\n else --m;\n }\n }\n\n else {\n while (++i < n) {\n if (!isNaN(value = number(valueof(values[i], i, values)))) sum += value;\n else --m;\n }\n }\n\n if (m) return sum / m;\n}\n","import ascending from \"./ascending\";\nimport number from \"./number\";\nimport quantile from \"./quantile\";\n\nexport default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n numbers = [];\n\n if (valueof == null) {\n while (++i < n) {\n if (!isNaN(value = number(values[i]))) {\n numbers.push(value);\n }\n }\n }\n\n else {\n while (++i < n) {\n if (!isNaN(value = number(valueof(values[i], i, values)))) {\n numbers.push(value);\n }\n }\n }\n\n return quantile(numbers.sort(ascending), 0.5);\n}\n","export default function(arrays) {\n var n = arrays.length,\n m,\n i = -1,\n j = 0,\n merged,\n array;\n\n while (++i < n) j += arrays[i].length;\n merged = new Array(j);\n\n while (--n >= 0) {\n array = arrays[n];\n m = array.length;\n while (--m >= 0) {\n merged[--j] = array[m];\n }\n }\n\n return merged;\n}\n","export default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n min;\n\n if (valueof == null) {\n while (++i < n) { // Find the first comparable value.\n if ((value = values[i]) != null && value >= value) {\n min = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = values[i]) != null && min > value) {\n min = value;\n }\n }\n }\n }\n }\n\n else {\n while (++i < n) { // Find the first comparable value.\n if ((value = valueof(values[i], i, values)) != null && value >= value) {\n min = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = valueof(values[i], i, values)) != null && min > value) {\n min = value;\n }\n }\n }\n }\n }\n\n return min;\n}\n","export default function(array, indexes) {\n var i = indexes.length, permutes = new Array(i);\n while (i--) permutes[i] = array[indexes[i]];\n return permutes;\n}\n","import ascending from \"./ascending\";\n\nexport default function(values, compare) {\n if (!(n = values.length)) return;\n var n,\n i = 0,\n j = 0,\n xi,\n xj = values[j];\n\n if (compare == null) compare = ascending;\n\n while (++i < n) {\n if (compare(xi = values[i], xj) < 0 || compare(xj, xj) !== 0) {\n xj = xi, j = i;\n }\n }\n\n if (compare(xj, xj) === 0) return j;\n}\n","export default function(array, i0, i1) {\n var m = (i1 == null ? array.length : i1) - (i0 = i0 == null ? 0 : +i0),\n t,\n i;\n\n while (m) {\n i = Math.random() * m-- | 0;\n t = array[m + i0];\n array[m + i0] = array[i + i0];\n array[i + i0] = t;\n }\n\n return array;\n}\n","export default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n sum = 0;\n\n if (valueof == null) {\n while (++i < n) {\n if (value = +values[i]) sum += value; // Note: zero and null are equivalent.\n }\n }\n\n else {\n while (++i < n) {\n if (value = +valueof(values[i], i, values)) sum += value;\n }\n }\n\n return sum;\n}\n","import min from \"./min\";\n\nexport default function(matrix) {\n if (!(n = matrix.length)) return [];\n for (var i = -1, m = min(matrix, length), transpose = new Array(m); ++i < m;) {\n for (var j = -1, n, row = transpose[i] = new Array(n); ++j < n;) {\n row[j] = matrix[j][i];\n }\n }\n return transpose;\n}\n\nfunction length(d) {\n return d.length;\n}\n","import transpose from \"./transpose\";\n\nexport default function() {\n return transpose(arguments);\n}\n","export var slice = Array.prototype.slice;\n","export default function(x) {\n return x;\n}\n","import {slice} from \"./array\";\nimport identity from \"./identity\";\n\nvar top = 1,\n right = 2,\n bottom = 3,\n left = 4,\n epsilon = 1e-6;\n\nfunction translateX(x) {\n return \"translate(\" + (x + 0.5) + \",0)\";\n}\n\nfunction translateY(y) {\n return \"translate(0,\" + (y + 0.5) + \")\";\n}\n\nfunction number(scale) {\n return function(d) {\n return +scale(d);\n };\n}\n\nfunction center(scale) {\n var offset = Math.max(0, scale.bandwidth() - 1) / 2; // Adjust for 0.5px offset.\n if (scale.round()) offset = Math.round(offset);\n return function(d) {\n return +scale(d) + offset;\n };\n}\n\nfunction entering() {\n return !this.__axis;\n}\n\nfunction axis(orient, scale) {\n var tickArguments = [],\n tickValues = null,\n tickFormat = null,\n tickSizeInner = 6,\n tickSizeOuter = 6,\n tickPadding = 3,\n k = orient === top || orient === left ? -1 : 1,\n x = orient === left || orient === right ? \"x\" : \"y\",\n transform = orient === top || orient === bottom ? translateX : translateY;\n\n function axis(context) {\n var values = tickValues == null ? (scale.ticks ? scale.ticks.apply(scale, tickArguments) : scale.domain()) : tickValues,\n format = tickFormat == null ? (scale.tickFormat ? scale.tickFormat.apply(scale, tickArguments) : identity) : tickFormat,\n spacing = Math.max(tickSizeInner, 0) + tickPadding,\n range = scale.range(),\n range0 = +range[0] + 0.5,\n range1 = +range[range.length - 1] + 0.5,\n position = (scale.bandwidth ? center : number)(scale.copy()),\n selection = context.selection ? context.selection() : context,\n path = selection.selectAll(\".domain\").data([null]),\n tick = selection.selectAll(\".tick\").data(values, scale).order(),\n tickExit = tick.exit(),\n tickEnter = tick.enter().append(\"g\").attr(\"class\", \"tick\"),\n line = tick.select(\"line\"),\n text = tick.select(\"text\");\n\n path = path.merge(path.enter().insert(\"path\", \".tick\")\n .attr(\"class\", \"domain\")\n .attr(\"stroke\", \"currentColor\"));\n\n tick = tick.merge(tickEnter);\n\n line = line.merge(tickEnter.append(\"line\")\n .attr(\"stroke\", \"currentColor\")\n .attr(x + \"2\", k * tickSizeInner));\n\n text = text.merge(tickEnter.append(\"text\")\n .attr(\"fill\", \"currentColor\")\n .attr(x, k * spacing)\n .attr(\"dy\", orient === top ? \"0em\" : orient === bottom ? \"0.71em\" : \"0.32em\"));\n\n if (context !== selection) {\n path = path.transition(context);\n tick = tick.transition(context);\n line = line.transition(context);\n text = text.transition(context);\n\n tickExit = tickExit.transition(context)\n .attr(\"opacity\", epsilon)\n .attr(\"transform\", function(d) { return isFinite(d = position(d)) ? transform(d) : this.getAttribute(\"transform\"); });\n\n tickEnter\n .attr(\"opacity\", epsilon)\n .attr(\"transform\", function(d) { var p = this.parentNode.__axis; return transform(p && isFinite(p = p(d)) ? p : position(d)); });\n }\n\n tickExit.remove();\n\n path\n .attr(\"d\", orient === left || orient == right\n ? (tickSizeOuter ? \"M\" + k * tickSizeOuter + \",\" + range0 + \"H0.5V\" + range1 + \"H\" + k * tickSizeOuter : \"M0.5,\" + range0 + \"V\" + range1)\n : (tickSizeOuter ? \"M\" + range0 + \",\" + k * tickSizeOuter + \"V0.5H\" + range1 + \"V\" + k * tickSizeOuter : \"M\" + range0 + \",0.5H\" + range1));\n\n tick\n .attr(\"opacity\", 1)\n .attr(\"transform\", function(d) { return transform(position(d)); });\n\n line\n .attr(x + \"2\", k * tickSizeInner);\n\n text\n .attr(x, k * spacing)\n .text(format);\n\n selection.filter(entering)\n .attr(\"fill\", \"none\")\n .attr(\"font-size\", 10)\n .attr(\"font-family\", \"sans-serif\")\n .attr(\"text-anchor\", orient === right ? \"start\" : orient === left ? \"end\" : \"middle\");\n\n selection\n .each(function() { this.__axis = position; });\n }\n\n axis.scale = function(_) {\n return arguments.length ? (scale = _, axis) : scale;\n };\n\n axis.ticks = function() {\n return tickArguments = slice.call(arguments), axis;\n };\n\n axis.tickArguments = function(_) {\n return arguments.length ? (tickArguments = _ == null ? [] : slice.call(_), axis) : tickArguments.slice();\n };\n\n axis.tickValues = function(_) {\n return arguments.length ? (tickValues = _ == null ? null : slice.call(_), axis) : tickValues && tickValues.slice();\n };\n\n axis.tickFormat = function(_) {\n return arguments.length ? (tickFormat = _, axis) : tickFormat;\n };\n\n axis.tickSize = function(_) {\n return arguments.length ? (tickSizeInner = tickSizeOuter = +_, axis) : tickSizeInner;\n };\n\n axis.tickSizeInner = function(_) {\n return arguments.length ? (tickSizeInner = +_, axis) : tickSizeInner;\n };\n\n axis.tickSizeOuter = function(_) {\n return arguments.length ? (tickSizeOuter = +_, axis) : tickSizeOuter;\n };\n\n axis.tickPadding = function(_) {\n return arguments.length ? (tickPadding = +_, axis) : tickPadding;\n };\n\n return axis;\n}\n\nexport function axisTop(scale) {\n return axis(top, scale);\n}\n\nexport function axisRight(scale) {\n return axis(right, scale);\n}\n\nexport function axisBottom(scale) {\n return axis(bottom, scale);\n}\n\nexport function axisLeft(scale) {\n return axis(left, scale);\n}\n","var noop = {value: function() {}};\n\nfunction dispatch() {\n for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n if (!(t = arguments[i] + \"\") || (t in _) || /[\\s.]/.test(t)) throw new Error(\"illegal type: \" + t);\n _[t] = [];\n }\n return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n return {type: t, name: name};\n });\n}\n\nDispatch.prototype = dispatch.prototype = {\n constructor: Dispatch,\n on: function(typename, callback) {\n var _ = this._,\n T = parseTypenames(typename + \"\", _),\n t,\n i = -1,\n n = T.length;\n\n // If no callback was specified, return the callback of the given type and name.\n if (arguments.length < 2) {\n while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n return;\n }\n\n // If a type was specified, set the callback for the given type and name.\n // Otherwise, if a null callback was specified, remove callbacks of the given name.\n if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n while (++i < n) {\n if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n }\n\n return this;\n },\n copy: function() {\n var copy = {}, _ = this._;\n for (var t in _) copy[t] = _[t].slice();\n return new Dispatch(copy);\n },\n call: function(type, that) {\n if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n },\n apply: function(type, that, args) {\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n }\n};\n\nfunction get(type, name) {\n for (var i = 0, n = type.length, c; i < n; ++i) {\n if ((c = type[i]).name === name) {\n return c.value;\n }\n }\n}\n\nfunction set(type, name, callback) {\n for (var i = 0, n = type.length; i < n; ++i) {\n if (type[i].name === name) {\n type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n break;\n }\n }\n if (callback != null) type.push({name: name, value: callback});\n return type;\n}\n\nexport default dispatch;\n","function none() {}\n\nexport default function(selector) {\n return selector == null ? none : function() {\n return this.querySelector(selector);\n };\n}\n","function empty() {\n return [];\n}\n\nexport default function(selector) {\n return selector == null ? empty : function() {\n return this.querySelectorAll(selector);\n };\n}\n","export default function(selector) {\n return function() {\n return this.matches(selector);\n };\n}\n","export default function(update) {\n return new Array(update.length);\n}\n","import sparse from \"./sparse\";\nimport {Selection} from \"./index\";\n\nexport default function() {\n return new Selection(this._enter || this._groups.map(sparse), this._parents);\n}\n\nexport function EnterNode(parent, datum) {\n this.ownerDocument = parent.ownerDocument;\n this.namespaceURI = parent.namespaceURI;\n this._next = null;\n this._parent = parent;\n this.__data__ = datum;\n}\n\nEnterNode.prototype = {\n constructor: EnterNode,\n appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n querySelector: function(selector) { return this._parent.querySelector(selector); },\n querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n};\n","import {Selection} from \"./index\";\nimport {EnterNode} from \"./enter\";\nimport constant from \"../constant\";\n\nvar keyPrefix = \"$\"; // Protect against keys like “__proto__”.\n\nfunction bindIndex(parent, group, enter, update, exit, data) {\n var i = 0,\n node,\n groupLength = group.length,\n dataLength = data.length;\n\n // Put any non-null nodes that fit into update.\n // Put any null nodes into enter.\n // Put any remaining data into enter.\n for (; i < dataLength; ++i) {\n if (node = group[i]) {\n node.__data__ = data[i];\n update[i] = node;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Put any non-null nodes that don’t fit into exit.\n for (; i < groupLength; ++i) {\n if (node = group[i]) {\n exit[i] = node;\n }\n }\n}\n\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n var i,\n node,\n nodeByKeyValue = {},\n groupLength = group.length,\n dataLength = data.length,\n keyValues = new Array(groupLength),\n keyValue;\n\n // Compute the key for each node.\n // If multiple nodes have the same key, the duplicates are added to exit.\n for (i = 0; i < groupLength; ++i) {\n if (node = group[i]) {\n keyValues[i] = keyValue = keyPrefix + key.call(node, node.__data__, i, group);\n if (keyValue in nodeByKeyValue) {\n exit[i] = node;\n } else {\n nodeByKeyValue[keyValue] = node;\n }\n }\n }\n\n // Compute the key for each datum.\n // If there a node associated with this key, join and add it to update.\n // If there is not (or the key is a duplicate), add it to enter.\n for (i = 0; i < dataLength; ++i) {\n keyValue = keyPrefix + key.call(parent, data[i], i, data);\n if (node = nodeByKeyValue[keyValue]) {\n update[i] = node;\n node.__data__ = data[i];\n nodeByKeyValue[keyValue] = null;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Add any remaining nodes that were not bound to data to exit.\n for (i = 0; i < groupLength; ++i) {\n if ((node = group[i]) && (nodeByKeyValue[keyValues[i]] === node)) {\n exit[i] = node;\n }\n }\n}\n\nexport default function(value, key) {\n if (!value) {\n data = new Array(this.size()), j = -1;\n this.each(function(d) { data[++j] = d; });\n return data;\n }\n\n var bind = key ? bindKey : bindIndex,\n parents = this._parents,\n groups = this._groups;\n\n if (typeof value !== \"function\") value = constant(value);\n\n for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n var parent = parents[j],\n group = groups[j],\n groupLength = group.length,\n data = value.call(parent, parent && parent.__data__, j, parents),\n dataLength = data.length,\n enterGroup = enter[j] = new Array(dataLength),\n updateGroup = update[j] = new Array(dataLength),\n exitGroup = exit[j] = new Array(groupLength);\n\n bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\n // Now connect the enter nodes to their following update node, such that\n // appendChild can insert the materialized enter node before this node,\n // rather than at the end of the parent node.\n for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n if (previous = enterGroup[i0]) {\n if (i0 >= i1) i1 = i0 + 1;\n while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n previous._next = next || null;\n }\n }\n }\n\n update = new Selection(update, parents);\n update._enter = enter;\n update._exit = exit;\n return update;\n}\n","import {Selection} from \"./index\";\n\nexport default function(compare) {\n if (!compare) compare = ascending;\n\n function compareNode(a, b) {\n return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n }\n\n for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n sortgroup[i] = node;\n }\n }\n sortgroup.sort(compareNode);\n }\n\n return new Selection(sortgroups, this._parents).order();\n}\n\nfunction ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export default function() {\n var callback = arguments[0];\n arguments[0] = this;\n callback.apply(null, arguments);\n return this;\n}\n","export var xhtml = \"http://www.w3.org/1999/xhtml\";\n\nexport default {\n svg: \"http://www.w3.org/2000/svg\",\n xhtml: xhtml,\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\",\n xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\n","import namespaces from \"./namespaces\";\n\nexport default function(name) {\n var prefix = name += \"\", i = prefix.indexOf(\":\");\n if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name;\n}\n","import namespace from \"../namespace\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, value) {\n return function() {\n this.setAttribute(name, value);\n };\n}\n\nfunction attrConstantNS(fullname, value) {\n return function() {\n this.setAttributeNS(fullname.space, fullname.local, value);\n };\n}\n\nfunction attrFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttribute(name);\n else this.setAttribute(name, v);\n };\n}\n\nfunction attrFunctionNS(fullname, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttributeNS(fullname.space, fullname.local);\n else this.setAttributeNS(fullname.space, fullname.local, v);\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name);\n\n if (arguments.length < 2) {\n var node = this.node();\n return fullname.local\n ? node.getAttributeNS(fullname.space, fullname.local)\n : node.getAttribute(fullname);\n }\n\n return this.each((value == null\n ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)\n : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));\n}\n","export default function(node) {\n return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node\n || (node.document && node) // node is a Window\n || node.defaultView; // node is a Document\n}\n","import defaultView from \"../window\";\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, value, priority) {\n return function() {\n this.style.setProperty(name, value, priority);\n };\n}\n\nfunction styleFunction(name, value, priority) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.style.removeProperty(name);\n else this.style.setProperty(name, v, priority);\n };\n}\n\nexport default function(name, value, priority) {\n return arguments.length > 1\n ? this.each((value == null\n ? styleRemove : typeof value === \"function\"\n ? styleFunction\n : styleConstant)(name, value, priority == null ? \"\" : priority))\n : styleValue(this.node(), name);\n}\n\nexport function styleValue(node, name) {\n return node.style.getPropertyValue(name)\n || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n","function propertyRemove(name) {\n return function() {\n delete this[name];\n };\n}\n\nfunction propertyConstant(name, value) {\n return function() {\n this[name] = value;\n };\n}\n\nfunction propertyFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) delete this[name];\n else this[name] = v;\n };\n}\n\nexport default function(name, value) {\n return arguments.length > 1\n ? this.each((value == null\n ? propertyRemove : typeof value === \"function\"\n ? propertyFunction\n : propertyConstant)(name, value))\n : this.node()[name];\n}\n","function classArray(string) {\n return string.trim().split(/^|\\s+/);\n}\n\nfunction classList(node) {\n return node.classList || new ClassList(node);\n}\n\nfunction ClassList(node) {\n this._node = node;\n this._names = classArray(node.getAttribute(\"class\") || \"\");\n}\n\nClassList.prototype = {\n add: function(name) {\n var i = this._names.indexOf(name);\n if (i < 0) {\n this._names.push(name);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n remove: function(name) {\n var i = this._names.indexOf(name);\n if (i >= 0) {\n this._names.splice(i, 1);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n contains: function(name) {\n return this._names.indexOf(name) >= 0;\n }\n};\n\nfunction classedAdd(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.add(names[i]);\n}\n\nfunction classedRemove(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.remove(names[i]);\n}\n\nfunction classedTrue(names) {\n return function() {\n classedAdd(this, names);\n };\n}\n\nfunction classedFalse(names) {\n return function() {\n classedRemove(this, names);\n };\n}\n\nfunction classedFunction(names, value) {\n return function() {\n (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n };\n}\n\nexport default function(name, value) {\n var names = classArray(name + \"\");\n\n if (arguments.length < 2) {\n var list = classList(this.node()), i = -1, n = names.length;\n while (++i < n) if (!list.contains(names[i])) return false;\n return true;\n }\n\n return this.each((typeof value === \"function\"\n ? classedFunction : value\n ? classedTrue\n : classedFalse)(names, value));\n}\n","function textRemove() {\n this.textContent = \"\";\n}\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.textContent = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? textRemove : (typeof value === \"function\"\n ? textFunction\n : textConstant)(value))\n : this.node().textContent;\n}\n","function htmlRemove() {\n this.innerHTML = \"\";\n}\n\nfunction htmlConstant(value) {\n return function() {\n this.innerHTML = value;\n };\n}\n\nfunction htmlFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.innerHTML = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? htmlRemove : (typeof value === \"function\"\n ? htmlFunction\n : htmlConstant)(value))\n : this.node().innerHTML;\n}\n","function raise() {\n if (this.nextSibling) this.parentNode.appendChild(this);\n}\n\nexport default function() {\n return this.each(raise);\n}\n","function lower() {\n if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\n\nexport default function() {\n return this.each(lower);\n}\n","import namespace from \"./namespace\";\nimport {xhtml} from \"./namespaces\";\n\nfunction creatorInherit(name) {\n return function() {\n var document = this.ownerDocument,\n uri = this.namespaceURI;\n return uri === xhtml && document.documentElement.namespaceURI === xhtml\n ? document.createElement(name)\n : document.createElementNS(uri, name);\n };\n}\n\nfunction creatorFixed(fullname) {\n return function() {\n return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n };\n}\n\nexport default function(name) {\n var fullname = namespace(name);\n return (fullname.local\n ? creatorFixed\n : creatorInherit)(fullname);\n}\n","import creator from \"../creator\";\nimport selector from \"../selector\";\n\nfunction constantNull() {\n return null;\n}\n\nexport default function(name, before) {\n var create = typeof name === \"function\" ? name : creator(name),\n select = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n return this.select(function() {\n return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n });\n}\n","function remove() {\n var parent = this.parentNode;\n if (parent) parent.removeChild(this);\n}\n\nexport default function() {\n return this.each(remove);\n}\n","function selection_cloneShallow() {\n var clone = this.cloneNode(false), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nfunction selection_cloneDeep() {\n var clone = this.cloneNode(true), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nexport default function(deep) {\n return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n","var filterEvents = {};\n\nexport var event = null;\n\nif (typeof document !== \"undefined\") {\n var element = document.documentElement;\n if (!(\"onmouseenter\" in element)) {\n filterEvents = {mouseenter: \"mouseover\", mouseleave: \"mouseout\"};\n }\n}\n\nfunction filterContextListener(listener, index, group) {\n listener = contextListener(listener, index, group);\n return function(event) {\n var related = event.relatedTarget;\n if (!related || (related !== this && !(related.compareDocumentPosition(this) & 8))) {\n listener.call(this, event);\n }\n };\n}\n\nfunction contextListener(listener, index, group) {\n return function(event1) {\n var event0 = event; // Events can be reentrant (e.g., focus).\n event = event1;\n try {\n listener.call(this, this.__data__, index, group);\n } finally {\n event = event0;\n }\n };\n}\n\nfunction parseTypenames(typenames) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n return {type: t, name: name};\n });\n}\n\nfunction onRemove(typename) {\n return function() {\n var on = this.__on;\n if (!on) return;\n for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.capture);\n } else {\n on[++i] = o;\n }\n }\n if (++i) on.length = i;\n else delete this.__on;\n };\n}\n\nfunction onAdd(typename, value, capture) {\n var wrap = filterEvents.hasOwnProperty(typename.type) ? filterContextListener : contextListener;\n return function(d, i, group) {\n var on = this.__on, o, listener = wrap(value, i, group);\n if (on) for (var j = 0, m = on.length; j < m; ++j) {\n if ((o = on[j]).type === typename.type && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.capture);\n this.addEventListener(o.type, o.listener = listener, o.capture = capture);\n o.value = value;\n return;\n }\n }\n this.addEventListener(typename.type, listener, capture);\n o = {type: typename.type, name: typename.name, value: value, listener: listener, capture: capture};\n if (!on) this.__on = [o];\n else on.push(o);\n };\n}\n\nexport default function(typename, value, capture) {\n var typenames = parseTypenames(typename + \"\"), i, n = typenames.length, t;\n\n if (arguments.length < 2) {\n var on = this.node().__on;\n if (on) for (var j = 0, m = on.length, o; j < m; ++j) {\n for (i = 0, o = on[j]; i < n; ++i) {\n if ((t = typenames[i]).type === o.type && t.name === o.name) {\n return o.value;\n }\n }\n }\n return;\n }\n\n on = value ? onAdd : onRemove;\n if (capture == null) capture = false;\n for (i = 0; i < n; ++i) this.each(on(typenames[i], value, capture));\n return this;\n}\n\nexport function customEvent(event1, listener, that, args) {\n var event0 = event;\n event1.sourceEvent = event;\n event = event1;\n try {\n return listener.apply(that, args);\n } finally {\n event = event0;\n }\n}\n","import defaultView from \"../window\";\n\nfunction dispatchEvent(node, type, params) {\n var window = defaultView(node),\n event = window.CustomEvent;\n\n if (typeof event === \"function\") {\n event = new event(type, params);\n } else {\n event = window.document.createEvent(\"Event\");\n if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n else event.initEvent(type, false, false);\n }\n\n node.dispatchEvent(event);\n}\n\nfunction dispatchConstant(type, params) {\n return function() {\n return dispatchEvent(this, type, params);\n };\n}\n\nfunction dispatchFunction(type, params) {\n return function() {\n return dispatchEvent(this, type, params.apply(this, arguments));\n };\n}\n\nexport default function(type, params) {\n return this.each((typeof params === \"function\"\n ? dispatchFunction\n : dispatchConstant)(type, params));\n}\n","import selection_select from \"./select\";\nimport selection_selectAll from \"./selectAll\";\nimport selection_filter from \"./filter\";\nimport selection_data from \"./data\";\nimport selection_enter from \"./enter\";\nimport selection_exit from \"./exit\";\nimport selection_join from \"./join\";\nimport selection_merge from \"./merge\";\nimport selection_order from \"./order\";\nimport selection_sort from \"./sort\";\nimport selection_call from \"./call\";\nimport selection_nodes from \"./nodes\";\nimport selection_node from \"./node\";\nimport selection_size from \"./size\";\nimport selection_empty from \"./empty\";\nimport selection_each from \"./each\";\nimport selection_attr from \"./attr\";\nimport selection_style from \"./style\";\nimport selection_property from \"./property\";\nimport selection_classed from \"./classed\";\nimport selection_text from \"./text\";\nimport selection_html from \"./html\";\nimport selection_raise from \"./raise\";\nimport selection_lower from \"./lower\";\nimport selection_append from \"./append\";\nimport selection_insert from \"./insert\";\nimport selection_remove from \"./remove\";\nimport selection_clone from \"./clone\";\nimport selection_datum from \"./datum\";\nimport selection_on from \"./on\";\nimport selection_dispatch from \"./dispatch\";\n\nexport var root = [null];\n\nexport function Selection(groups, parents) {\n this._groups = groups;\n this._parents = parents;\n}\n\nfunction selection() {\n return new Selection([[document.documentElement]], root);\n}\n\nSelection.prototype = selection.prototype = {\n constructor: Selection,\n select: selection_select,\n selectAll: selection_selectAll,\n filter: selection_filter,\n data: selection_data,\n enter: selection_enter,\n exit: selection_exit,\n join: selection_join,\n merge: selection_merge,\n order: selection_order,\n sort: selection_sort,\n call: selection_call,\n nodes: selection_nodes,\n node: selection_node,\n size: selection_size,\n empty: selection_empty,\n each: selection_each,\n attr: selection_attr,\n style: selection_style,\n property: selection_property,\n classed: selection_classed,\n text: selection_text,\n html: selection_html,\n raise: selection_raise,\n lower: selection_lower,\n append: selection_append,\n insert: selection_insert,\n remove: selection_remove,\n clone: selection_clone,\n datum: selection_datum,\n on: selection_on,\n dispatch: selection_dispatch\n};\n\nexport default selection;\n","import {Selection} from \"./index\";\nimport selector from \"../selector\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","import {Selection} from \"./index\";\nimport selectorAll from \"../selectorAll\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n subgroups.push(select.call(node, node.__data__, i, group));\n parents.push(node);\n }\n }\n }\n\n return new Selection(subgroups, parents);\n}\n","import {Selection} from \"./index\";\nimport matcher from \"../matcher\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import sparse from \"./sparse\";\nimport {Selection} from \"./index\";\n\nexport default function() {\n return new Selection(this._exit || this._groups.map(sparse), this._parents);\n}\n","export default function(onenter, onupdate, onexit) {\n var enter = this.enter(), update = this, exit = this.exit();\n enter = typeof onenter === \"function\" ? onenter(enter) : enter.append(onenter + \"\");\n if (onupdate != null) update = onupdate(update);\n if (onexit == null) exit.remove(); else onexit(exit);\n return enter && update ? enter.merge(update).order() : update;\n}\n","import {Selection} from \"./index\";\n\nexport default function(selection) {\n\n for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Selection(merges, this._parents);\n}\n","export default function() {\n\n for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {\n for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n if (node = group[i]) {\n if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next);\n next = node;\n }\n }\n }\n\n return this;\n}\n","export default function() {\n var nodes = new Array(this.size()), i = -1;\n this.each(function() { nodes[++i] = this; });\n return nodes;\n}\n","export default function() {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n var node = group[i];\n if (node) return node;\n }\n }\n\n return null;\n}\n","export default function() {\n var size = 0;\n this.each(function() { ++size; });\n return size;\n}\n","export default function() {\n return !this.node();\n}\n","export default function(callback) {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) callback.call(node, node.__data__, i, group);\n }\n }\n\n return this;\n}\n","import creator from \"../creator\";\n\nexport default function(name) {\n var create = typeof name === \"function\" ? name : creator(name);\n return this.select(function() {\n return this.appendChild(create.apply(this, arguments));\n });\n}\n","export default function(value) {\n return arguments.length\n ? this.property(\"__data__\", value)\n : this.node().__data__;\n}\n","import {Selection, root} from \"./selection/index\";\n\nexport default function(selector) {\n return typeof selector === \"string\"\n ? new Selection([[document.querySelector(selector)]], [document.documentElement])\n : new Selection([[selector]], root);\n}\n","import {event} from \"d3-selection\";\n\nexport function nopropagation() {\n event.stopImmediatePropagation();\n}\n\nexport default function() {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n","import {select} from \"d3-selection\";\nimport noevent from \"./noevent.js\";\n\nexport default function(view) {\n var root = view.document.documentElement,\n selection = select(view).on(\"dragstart.drag\", noevent, true);\n if (\"onselectstart\" in root) {\n selection.on(\"selectstart.drag\", noevent, true);\n } else {\n root.__noselect = root.style.MozUserSelect;\n root.style.MozUserSelect = \"none\";\n }\n}\n\nexport function yesdrag(view, noclick) {\n var root = view.document.documentElement,\n selection = select(view).on(\"dragstart.drag\", null);\n if (noclick) {\n selection.on(\"click.drag\", noevent, true);\n setTimeout(function() { selection.on(\"click.drag\", null); }, 0);\n }\n if (\"onselectstart\" in root) {\n selection.on(\"selectstart.drag\", null);\n } else {\n root.style.MozUserSelect = root.__noselect;\n delete root.__noselect;\n }\n}\n","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(\"^rgb\\\\(\" + [reI, reI, reI] + \"\\\\)$\"),\n reRgbPercent = new RegExp(\"^rgb\\\\(\" + [reP, reP, reP] + \"\\\\)$\"),\n reRgbaInteger = new RegExp(\"^rgba\\\\(\" + [reI, reI, reI, reN] + \"\\\\)$\"),\n reRgbaPercent = new RegExp(\"^rgba\\\\(\" + [reP, reP, reP, reN] + \"\\\\)$\"),\n reHslPercent = new RegExp(\"^hsl\\\\(\" + [reN, reP, reP] + \"\\\\)$\"),\n reHslaPercent = new RegExp(\"^hsla\\\\(\" + [reN, reP, reP, reN] + \"\\\\)$\");\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy: function(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable: function() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? new Rgb(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? new Rgb((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb: function() {\n return this;\n },\n displayable: function() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return \"#\" + hex(this.r) + hex(this.g) + hex(this.b);\n}\n\nfunction rgb_formatRgb() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"rgb(\" : \"rgba(\")\n + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.b) || 0))\n + (a === 1 ? \")\" : \", \" + a + \")\");\n}\n\nfunction hex(value) {\n value = Math.max(0, Math.min(255, Math.round(value) || 0));\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n displayable: function() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl: function() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"hsl(\" : \"hsla(\")\n + (this.h || 0) + \", \"\n + (this.s || 0) * 100 + \"%, \"\n + (this.l || 0) * 100 + \"%\"\n + (a === 1 ? \")\" : \", \" + a + \")\");\n }\n}));\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","export function basis(t1, v0, v1, v2, v3) {\n var t2 = t1 * t1, t3 = t2 * t1;\n return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n + (4 - 6 * t2 + 3 * t3) * v1\n + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n + t3 * v3) / 6;\n}\n\nexport default function(values) {\n var n = values.length - 1;\n return function(t) {\n var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n v1 = values[i],\n v2 = values[i + 1],\n v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","import {basis} from \"./basis.js\";\n\nexport default function(values) {\n var n = values.length;\n return function(t) {\n var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n v0 = values[(i + n - 1) % n],\n v1 = values[i % n],\n v2 = values[(i + 1) % n],\n v3 = values[(i + 2) % n];\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","export default function(a, b) {\n if (!b) b = [];\n var n = a ? Math.min(b.length, a.length) : 0,\n c = b.slice(),\n i;\n return function(t) {\n for (i = 0; i < n; ++i) c[i] = a[i] * (1 - t) + b[i] * t;\n return c;\n };\n}\n\nexport function isNumberArray(x) {\n return ArrayBuffer.isView(x) && !(x instanceof DataView);\n}\n","import value from \"./value.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n return (isNumberArray(b) ? numberArray : genericArray)(a, b);\n}\n\nexport function genericArray(a, b) {\n var nb = b ? b.length : 0,\n na = a ? Math.min(nb, a.length) : 0,\n x = new Array(na),\n c = new Array(nb),\n i;\n\n for (i = 0; i < na; ++i) x[i] = value(a[i], b[i]);\n for (; i < nb; ++i) c[i] = b[i];\n\n return function(t) {\n for (i = 0; i < na; ++i) c[i] = x[i](t);\n return c;\n };\n}\n","export default function(a, b) {\n var d = new Date;\n return a = +a, b = +b, function(t) {\n return d.setTime(a * (1 - t) + b * t), d;\n };\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return a * (1 - t) + b * t;\n };\n}\n","import value from \"./value.js\";\n\nexport default function(a, b) {\n var i = {},\n c = {},\n k;\n\n if (a === null || typeof a !== \"object\") a = {};\n if (b === null || typeof b !== \"object\") b = {};\n\n for (k in b) {\n if (k in a) {\n i[k] = value(a[k], b[k]);\n } else {\n c[k] = b[k];\n }\n }\n\n return function(t) {\n for (k in i) c[k] = i[k](t);\n return c;\n };\n}\n","import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n","var frame = 0, // is an animation frame pending?\n timeout = 0, // is a timeout pending?\n interval = 0, // are any timers active?\n pokeDelay = 1000, // how frequently we check for clock skew\n taskHead,\n taskTail,\n clockLast = 0,\n clockNow = 0,\n clockSkew = 0,\n clock = typeof performance === \"object\" && performance.now ? performance : Date,\n setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n clockNow = 0;\n}\n\nexport function Timer() {\n this._call =\n this._time =\n this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function(callback, delay, time) {\n if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail) taskTail._next = this;\n else taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\n\nexport function timer(callback, delay, time) {\n var t = new Timer;\n t.restart(callback, delay, time);\n return t;\n}\n\nexport function timerFlush() {\n now(); // Get the current time, if not already set.\n ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n var t = taskHead, e;\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(null, e);\n t = t._next;\n }\n --frame;\n}\n\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\n\nfunction poke() {\n var now = clock.now(), delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n var t0, t1 = taskHead, t2, time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\n\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\n","import {color} from \"d3-color\";\nimport rgb from \"./rgb.js\";\nimport {genericArray} from \"./array.js\";\nimport date from \"./date.js\";\nimport number from \"./number.js\";\nimport object from \"./object.js\";\nimport string from \"./string.js\";\nimport constant from \"./constant.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n var t = typeof b, c;\n return b == null || t === \"boolean\" ? constant(b)\n : (t === \"number\" ? number\n : t === \"string\" ? ((c = color(b)) ? (b = c, rgb) : string)\n : b instanceof color ? rgb\n : b instanceof Date ? date\n : isNumberArray(b) ? numberArray\n : Array.isArray(b) ? genericArray\n : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object\n : number)(a, b);\n}\n","import {event} from \"./selection/on\";\n\nexport default function() {\n var current = event, source;\n while (source = current.sourceEvent) current = source;\n return current;\n}\n","export default function(node, event) {\n var svg = node.ownerSVGElement || node;\n\n if (svg.createSVGPoint) {\n var point = svg.createSVGPoint();\n point.x = event.clientX, point.y = event.clientY;\n point = point.matrixTransform(node.getScreenCTM().inverse());\n return [point.x, point.y];\n }\n\n var rect = node.getBoundingClientRect();\n return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop];\n}\n","import sourceEvent from \"./sourceEvent\";\nimport point from \"./point\";\n\nexport default function(node, touches, identifier) {\n if (arguments.length < 3) identifier = touches, touches = sourceEvent().changedTouches;\n\n for (var i = 0, n = touches ? touches.length : 0, touch; i < n; ++i) {\n if ((touch = touches[i]).identifier === identifier) {\n return point(node, touch);\n }\n }\n\n return null;\n}\n","import sourceEvent from \"./sourceEvent\";\nimport point from \"./point\";\n\nexport default function(node) {\n var event = sourceEvent();\n if (event.changedTouches) event = event.changedTouches[0];\n return point(node, event);\n}\n","import {Timer} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n var t = new Timer;\n delay = delay == null ? 0 : +delay;\n t.restart(function(elapsed) {\n t.stop();\n callback(elapsed + delay);\n }, delay, time);\n return t;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {timer, timeout} from \"d3-timer\";\n\nvar emptyOn = dispatch(\"start\", \"end\", \"cancel\", \"interrupt\");\nvar emptyTween = [];\n\nexport var CREATED = 0;\nexport var SCHEDULED = 1;\nexport var STARTING = 2;\nexport var STARTED = 3;\nexport var RUNNING = 4;\nexport var ENDING = 5;\nexport var ENDED = 6;\n\nexport default function(node, name, id, index, group, timing) {\n var schedules = node.__transition;\n if (!schedules) node.__transition = {};\n else if (id in schedules) return;\n create(node, id, {\n name: name,\n index: index, // For context during callback.\n group: group, // For context during callback.\n on: emptyOn,\n tween: emptyTween,\n time: timing.time,\n delay: timing.delay,\n duration: timing.duration,\n ease: timing.ease,\n timer: null,\n state: CREATED\n });\n}\n\nexport function init(node, id) {\n var schedule = get(node, id);\n if (schedule.state > CREATED) throw new Error(\"too late; already scheduled\");\n return schedule;\n}\n\nexport function set(node, id) {\n var schedule = get(node, id);\n if (schedule.state > STARTED) throw new Error(\"too late; already running\");\n return schedule;\n}\n\nexport function get(node, id) {\n var schedule = node.__transition;\n if (!schedule || !(schedule = schedule[id])) throw new Error(\"transition not found\");\n return schedule;\n}\n\nfunction create(node, id, self) {\n var schedules = node.__transition,\n tween;\n\n // Initialize the self timer when the transition is created.\n // Note the actual delay is not known until the first callback!\n schedules[id] = self;\n self.timer = timer(schedule, 0, self.time);\n\n function schedule(elapsed) {\n self.state = SCHEDULED;\n self.timer.restart(start, self.delay, self.time);\n\n // If the elapsed delay is less than our first sleep, start immediately.\n if (self.delay <= elapsed) start(elapsed - self.delay);\n }\n\n function start(elapsed) {\n var i, j, n, o;\n\n // If the state is not SCHEDULED, then we previously errored on start.\n if (self.state !== SCHEDULED) return stop();\n\n for (i in schedules) {\n o = schedules[i];\n if (o.name !== self.name) continue;\n\n // While this element already has a starting transition during this frame,\n // defer starting an interrupting transition until that transition has a\n // chance to tick (and possibly end); see d3/d3-transition#54!\n if (o.state === STARTED) return timeout(start);\n\n // Interrupt the active transition, if any.\n if (o.state === RUNNING) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"interrupt\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n\n // Cancel any pre-empted transitions.\n else if (+i < id) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"cancel\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n }\n\n // Defer the first tick to end of the current frame; see d3/d3#1576.\n // Note the transition may be canceled after start and before the first tick!\n // Note this must be scheduled before the start event; see d3/d3-transition#16!\n // Assuming this is successful, subsequent callbacks go straight to tick.\n timeout(function() {\n if (self.state === STARTED) {\n self.state = RUNNING;\n self.timer.restart(tick, self.delay, self.time);\n tick(elapsed);\n }\n });\n\n // Dispatch the start event.\n // Note this must be done before the tween are initialized.\n self.state = STARTING;\n self.on.call(\"start\", node, node.__data__, self.index, self.group);\n if (self.state !== STARTING) return; // interrupted\n self.state = STARTED;\n\n // Initialize the tween, deleting null tween.\n tween = new Array(n = self.tween.length);\n for (i = 0, j = -1; i < n; ++i) {\n if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {\n tween[++j] = o;\n }\n }\n tween.length = j + 1;\n }\n\n function tick(elapsed) {\n var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1),\n i = -1,\n n = tween.length;\n\n while (++i < n) {\n tween[i].call(node, t);\n }\n\n // Dispatch the end event.\n if (self.state === ENDING) {\n self.on.call(\"end\", node, node.__data__, self.index, self.group);\n stop();\n }\n }\n\n function stop() {\n self.state = ENDED;\n self.timer.stop();\n delete schedules[id];\n for (var i in schedules) return; // eslint-disable-line no-unused-vars\n delete node.__transition;\n }\n}\n","import {STARTING, ENDING, ENDED} from \"./transition/schedule.js\";\n\nexport default function(node, name) {\n var schedules = node.__transition,\n schedule,\n active,\n empty = true,\n i;\n\n if (!schedules) return;\n\n name = name == null ? null : name + \"\";\n\n for (i in schedules) {\n if ((schedule = schedules[i]).name !== name) { empty = false; continue; }\n active = schedule.state > STARTING && schedule.state < ENDING;\n schedule.state = ENDED;\n schedule.timer.stop();\n schedule.on.call(active ? \"interrupt\" : \"cancel\", node, node.__data__, schedule.index, schedule.group);\n delete schedules[i];\n }\n\n if (empty) delete node.__transition;\n}\n","import decompose, {identity} from \"./decompose.js\";\n\nvar cssNode,\n cssRoot,\n cssView,\n svgNode;\n\nexport function parseCss(value) {\n if (value === \"none\") return identity;\n if (!cssNode) cssNode = document.createElement(\"DIV\"), cssRoot = document.documentElement, cssView = document.defaultView;\n cssNode.style.transform = value;\n value = cssView.getComputedStyle(cssRoot.appendChild(cssNode), null).getPropertyValue(\"transform\");\n cssRoot.removeChild(cssNode);\n value = value.slice(7, -1).split(\",\");\n return decompose(+value[0], +value[1], +value[2], +value[3], +value[4], +value[5]);\n}\n\nexport function parseSvg(value) {\n if (value == null) return identity;\n if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n svgNode.setAttribute(\"transform\", value);\n if (!(value = svgNode.transform.baseVal.consolidate())) return identity;\n value = value.matrix;\n return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n}\n","var degrees = 180 / Math.PI;\n\nexport var identity = {\n translateX: 0,\n translateY: 0,\n rotate: 0,\n skewX: 0,\n scaleX: 1,\n scaleY: 1\n};\n\nexport default function(a, b, c, d, e, f) {\n var scaleX, scaleY, skewX;\n if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n return {\n translateX: e,\n translateY: f,\n rotate: Math.atan2(b, a) * degrees,\n skewX: Math.atan(skewX) * degrees,\n scaleX: scaleX,\n scaleY: scaleY\n };\n}\n","import number from \"../number.js\";\nimport {parseCss, parseSvg} from \"./parse.js\";\n\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n\n function pop(s) {\n return s.length ? s.pop() + \" \" : \"\";\n }\n\n function translate(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb || yb) {\n s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n }\n }\n\n function rotate(a, b, s, q) {\n if (a !== b) {\n if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path\n q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"rotate(\" + b + degParen);\n }\n }\n\n function skewX(a, b, s, q) {\n if (a !== b) {\n q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"skewX(\" + b + degParen);\n }\n }\n\n function scale(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb !== 1 || yb !== 1) {\n s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n }\n }\n\n return function(a, b) {\n var s = [], // string constants and placeholders\n q = []; // number interpolators\n a = parse(a), b = parse(b);\n translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n rotate(a.rotate, b.rotate, s, q);\n skewX(a.skewX, b.skewX, s, q);\n scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n a = b = null; // gc\n return function(t) {\n var i = -1, n = q.length, o;\n while (++i < n) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n };\n };\n}\n\nexport var interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nexport var interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\n","import {get, set} from \"./schedule.js\";\n\nfunction tweenRemove(id, name) {\n var tween0, tween1;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = tween0 = tween;\n for (var i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1 = tween1.slice();\n tween1.splice(i, 1);\n break;\n }\n }\n }\n\n schedule.tween = tween1;\n };\n}\n\nfunction tweenFunction(id, name, value) {\n var tween0, tween1;\n if (typeof value !== \"function\") throw new Error;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = (tween0 = tween).slice();\n for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1[i] = t;\n break;\n }\n }\n if (i === n) tween1.push(t);\n }\n\n schedule.tween = tween1;\n };\n}\n\nexport default function(name, value) {\n var id = this._id;\n\n name += \"\";\n\n if (arguments.length < 2) {\n var tween = get(this.node(), id).tween;\n for (var i = 0, n = tween.length, t; i < n; ++i) {\n if ((t = tween[i]).name === name) {\n return t.value;\n }\n }\n return null;\n }\n\n return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value));\n}\n\nexport function tweenValue(transition, name, value) {\n var id = transition._id;\n\n transition.each(function() {\n var schedule = set(this, id);\n (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);\n });\n\n return function(node) {\n return get(node, id).value[name];\n };\n}\n","import {color} from \"d3-color\";\nimport {interpolateNumber, interpolateRgb, interpolateString} from \"d3-interpolate\";\n\nexport default function(a, b) {\n var c;\n return (typeof b === \"number\" ? interpolateNumber\n : b instanceof color ? interpolateRgb\n : (c = color(b)) ? (b = c, interpolateRgb)\n : interpolateString)(a, b);\n}\n","import {interpolateTransformSvg as interpolateTransform} from \"d3-interpolate\";\nimport {namespace} from \"d3-selection\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttribute(name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrConstantNS(fullname, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttributeNS(fullname.space, fullname.local);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttribute(name);\n string0 = this.getAttribute(name);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction attrFunctionNS(fullname, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);\n string0 = this.getAttributeNS(fullname.space, fullname.local);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name), i = fullname === \"transform\" ? interpolateTransform : interpolate;\n return this.attrTween(name, typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, \"attr.\" + name, value))\n : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname)\n : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value));\n}\n","import {namespace} from \"d3-selection\";\n\nfunction attrInterpolate(name, i) {\n return function(t) {\n this.setAttribute(name, i.call(this, t));\n };\n}\n\nfunction attrInterpolateNS(fullname, i) {\n return function(t) {\n this.setAttributeNS(fullname.space, fullname.local, i.call(this, t));\n };\n}\n\nfunction attrTweenNS(fullname, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolateNS(fullname, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nfunction attrTween(name, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolate(name, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value) {\n var key = \"attr.\" + name;\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n var fullname = namespace(name);\n return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n}\n","import {get, init} from \"./schedule.js\";\n\nfunction delayFunction(id, value) {\n return function() {\n init(this, id).delay = +value.apply(this, arguments);\n };\n}\n\nfunction delayConstant(id, value) {\n return value = +value, function() {\n init(this, id).delay = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? delayFunction\n : delayConstant)(id, value))\n : get(this.node(), id).delay;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction durationFunction(id, value) {\n return function() {\n set(this, id).duration = +value.apply(this, arguments);\n };\n}\n\nfunction durationConstant(id, value) {\n return value = +value, function() {\n set(this, id).duration = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? durationFunction\n : durationConstant)(id, value))\n : get(this.node(), id).duration;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction easeConstant(id, value) {\n if (typeof value !== \"function\") throw new Error;\n return function() {\n set(this, id).ease = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each(easeConstant(id, value))\n : get(this.node(), id).ease;\n}\n","import {get, set, init} from \"./schedule.js\";\n\nfunction start(name) {\n return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n var i = t.indexOf(\".\");\n if (i >= 0) t = t.slice(0, i);\n return !t || t === \"start\";\n });\n}\n\nfunction onFunction(id, name, listener) {\n var on0, on1, sit = start(name) ? init : set;\n return function() {\n var schedule = sit(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, listener) {\n var id = this._id;\n\n return arguments.length < 2\n ? get(this.node(), id).on.on(name)\n : this.each(onFunction(id, name, listener));\n}\n","function removeFunction(id) {\n return function() {\n var parent = this.parentNode;\n for (var i in this.__transition) if (+i !== id) return;\n if (parent) parent.removeChild(this);\n };\n}\n\nexport default function() {\n return this.on(\"end.remove\", removeFunction(this._id));\n}\n","import {selection} from \"d3-selection\";\n\nvar Selection = selection.prototype.constructor;\n\nexport default function() {\n return new Selection(this._groups, this._parents);\n}\n","import {interpolateTransformCss as interpolateTransform} from \"d3-interpolate\";\nimport {style} from \"d3-selection\";\nimport {set} from \"./schedule.js\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction styleNull(name, interpolate) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n string1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, string10 = string1);\n };\n}\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = style(this, name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction styleFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n value1 = value(this),\n string1 = value1 + \"\";\n if (value1 == null) string1 = value1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction styleMaybeRemove(id, name) {\n var on0, on1, listener0, key = \"style.\" + name, event = \"end.\" + key, remove;\n return function() {\n var schedule = set(this, id),\n on = schedule.on,\n listener = schedule.value[key] == null ? remove || (remove = styleRemove(name)) : undefined;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, value, priority) {\n var i = (name += \"\") === \"transform\" ? interpolateTransform : interpolate;\n return value == null ? this\n .styleTween(name, styleNull(name, i))\n .on(\"end.style.\" + name, styleRemove(name))\n : typeof value === \"function\" ? this\n .styleTween(name, styleFunction(name, i, tweenValue(this, \"style.\" + name, value)))\n .each(styleMaybeRemove(this._id, name))\n : this\n .styleTween(name, styleConstant(name, i, value), priority)\n .on(\"end.style.\" + name, null);\n}\n","function styleInterpolate(name, i, priority) {\n return function(t) {\n this.style.setProperty(name, i.call(this, t), priority);\n };\n}\n\nfunction styleTween(name, value, priority) {\n var t, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority);\n return t;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value, priority) {\n var key = \"style.\" + (name += \"\");\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n}\n","function textInterpolate(i) {\n return function(t) {\n this.textContent = i.call(this, t);\n };\n}\n\nfunction textTween(value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && textInterpolate(i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(value) {\n var key = \"text\";\n if (arguments.length < 1) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, textTween(value));\n}\n","import {selection} from \"d3-selection\";\nimport transition_attr from \"./attr.js\";\nimport transition_attrTween from \"./attrTween.js\";\nimport transition_delay from \"./delay.js\";\nimport transition_duration from \"./duration.js\";\nimport transition_ease from \"./ease.js\";\nimport transition_filter from \"./filter.js\";\nimport transition_merge from \"./merge.js\";\nimport transition_on from \"./on.js\";\nimport transition_remove from \"./remove.js\";\nimport transition_select from \"./select.js\";\nimport transition_selectAll from \"./selectAll.js\";\nimport transition_selection from \"./selection.js\";\nimport transition_style from \"./style.js\";\nimport transition_styleTween from \"./styleTween.js\";\nimport transition_text from \"./text.js\";\nimport transition_textTween from \"./textTween.js\";\nimport transition_transition from \"./transition.js\";\nimport transition_tween from \"./tween.js\";\nimport transition_end from \"./end.js\";\n\nvar id = 0;\n\nexport function Transition(groups, parents, name, id) {\n this._groups = groups;\n this._parents = parents;\n this._name = name;\n this._id = id;\n}\n\nexport default function transition(name) {\n return selection().transition(name);\n}\n\nexport function newId() {\n return ++id;\n}\n\nvar selection_prototype = selection.prototype;\n\nTransition.prototype = transition.prototype = {\n constructor: Transition,\n select: transition_select,\n selectAll: transition_selectAll,\n filter: transition_filter,\n merge: transition_merge,\n selection: transition_selection,\n transition: transition_transition,\n call: selection_prototype.call,\n nodes: selection_prototype.nodes,\n node: selection_prototype.node,\n size: selection_prototype.size,\n empty: selection_prototype.empty,\n each: selection_prototype.each,\n on: transition_on,\n attr: transition_attr,\n attrTween: transition_attrTween,\n style: transition_style,\n styleTween: transition_styleTween,\n text: transition_text,\n textTween: transition_textTween,\n remove: transition_remove,\n tween: transition_tween,\n delay: transition_delay,\n duration: transition_duration,\n ease: transition_ease,\n end: transition_end\n};\n","export function cubicIn(t) {\n return t * t * t;\n}\n\nexport function cubicOut(t) {\n return --t * t * t + 1;\n}\n\nexport function cubicInOut(t) {\n return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n","import {selector} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n schedule(subgroup[i], name, id, i, subgroup, get(node, id));\n }\n }\n }\n\n return new Transition(subgroups, this._parents, name, id);\n}\n","import {selectorAll} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n for (var children = select.call(node, node.__data__, i, group), child, inherit = get(node, id), k = 0, l = children.length; k < l; ++k) {\n if (child = children[k]) {\n schedule(child, name, id, k, children, inherit);\n }\n }\n subgroups.push(children);\n parents.push(node);\n }\n }\n }\n\n return new Transition(subgroups, parents, name, id);\n}\n","import {matcher} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Transition(subgroups, this._parents, this._name, this._id);\n}\n","import {Transition} from \"./index.js\";\n\nexport default function(transition) {\n if (transition._id !== this._id) throw new Error;\n\n for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Transition(merges, this._parents, this._name, this._id);\n}\n","import {Transition, newId} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function() {\n var name = this._name,\n id0 = this._id,\n id1 = newId();\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n var inherit = get(node, id0);\n schedule(node, name, id1, i, group, {\n time: inherit.time + inherit.delay + inherit.duration,\n delay: 0,\n duration: inherit.duration,\n ease: inherit.ease\n });\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id1);\n}\n","import {tweenValue} from \"./tween.js\";\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var value1 = value(this);\n this.textContent = value1 == null ? \"\" : value1;\n };\n}\n\nexport default function(value) {\n return this.tween(\"text\", typeof value === \"function\"\n ? textFunction(tweenValue(this, \"text\", value))\n : textConstant(value == null ? \"\" : value + \"\"));\n}\n","import {set} from \"./schedule.js\";\n\nexport default function() {\n var on0, on1, that = this, id = that._id, size = that.size();\n return new Promise(function(resolve, reject) {\n var cancel = {value: reject},\n end = {value: function() { if (--size === 0) resolve(); }};\n\n that.each(function() {\n var schedule = set(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) {\n on1 = (on0 = on).copy();\n on1._.cancel.push(cancel);\n on1._.interrupt.push(cancel);\n on1._.end.push(end);\n }\n\n schedule.on = on1;\n });\n });\n}\n","import {Transition, newId} from \"../transition/index.js\";\nimport schedule from \"../transition/schedule.js\";\nimport {easeCubicInOut} from \"d3-ease\";\nimport {now} from \"d3-timer\";\n\nvar defaultTiming = {\n time: null, // Set on use.\n delay: 0,\n duration: 250,\n ease: easeCubicInOut\n};\n\nfunction inherit(node, id) {\n var timing;\n while (!(timing = node.__transition) || !(timing = timing[id])) {\n if (!(node = node.parentNode)) {\n return defaultTiming.time = now(), defaultTiming;\n }\n }\n return timing;\n}\n\nexport default function(name) {\n var id,\n timing;\n\n if (name instanceof Transition) {\n id = name._id, name = name._name;\n } else {\n id = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + \"\";\n }\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n schedule(node, name, id, i, group, timing || inherit(node, id));\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id);\n}\n","import {selection} from \"d3-selection\";\nimport selection_interrupt from \"./interrupt.js\";\nimport selection_transition from \"./transition.js\";\n\nselection.prototype.interrupt = selection_interrupt;\nselection.prototype.transition = selection_transition;\n","import interrupt from \"../interrupt.js\";\n\nexport default function(name) {\n return this.each(function() {\n interrupt(this, name);\n });\n}\n","import {Transition} from \"./transition/index.js\";\nimport {SCHEDULED} from \"./transition/schedule.js\";\n\nvar root = [null];\n\nexport default function(node, name) {\n var schedules = node.__transition,\n schedule,\n i;\n\n if (schedules) {\n name = name == null ? null : name + \"\";\n for (i in schedules) {\n if ((schedule = schedules[i]).state > SCHEDULED && schedule.name === name) {\n return new Transition([[node]], root, name, +i);\n }\n }\n }\n\n return null;\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(target, type, selection) {\n this.target = target;\n this.type = type;\n this.selection = selection;\n}\n","import {event} from \"d3-selection\";\n\nexport function nopropagation() {\n event.stopImmediatePropagation();\n}\n\nexport default function() {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolate} from \"d3-interpolate\";\nimport {customEvent, event, touch, mouse, select} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant.js\";\nimport BrushEvent from \"./event.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\n\nvar MODE_DRAG = {name: \"drag\"},\n MODE_SPACE = {name: \"space\"},\n MODE_HANDLE = {name: \"handle\"},\n MODE_CENTER = {name: \"center\"};\n\nfunction number1(e) {\n return [+e[0], +e[1]];\n}\n\nfunction number2(e) {\n return [number1(e[0]), number1(e[1])];\n}\n\nfunction toucher(identifier) {\n return function(target) {\n return touch(target, event.touches, identifier);\n };\n}\n\nvar X = {\n name: \"x\",\n handles: [\"w\", \"e\"].map(type),\n input: function(x, e) { return x == null ? null : [[+x[0], e[0][1]], [+x[1], e[1][1]]]; },\n output: function(xy) { return xy && [xy[0][0], xy[1][0]]; }\n};\n\nvar Y = {\n name: \"y\",\n handles: [\"n\", \"s\"].map(type),\n input: function(y, e) { return y == null ? null : [[e[0][0], +y[0]], [e[1][0], +y[1]]]; },\n output: function(xy) { return xy && [xy[0][1], xy[1][1]]; }\n};\n\nvar XY = {\n name: \"xy\",\n handles: [\"n\", \"w\", \"e\", \"s\", \"nw\", \"ne\", \"sw\", \"se\"].map(type),\n input: function(xy) { return xy == null ? null : number2(xy); },\n output: function(xy) { return xy; }\n};\n\nvar cursors = {\n overlay: \"crosshair\",\n selection: \"move\",\n n: \"ns-resize\",\n e: \"ew-resize\",\n s: \"ns-resize\",\n w: \"ew-resize\",\n nw: \"nwse-resize\",\n ne: \"nesw-resize\",\n se: \"nwse-resize\",\n sw: \"nesw-resize\"\n};\n\nvar flipX = {\n e: \"w\",\n w: \"e\",\n nw: \"ne\",\n ne: \"nw\",\n se: \"sw\",\n sw: \"se\"\n};\n\nvar flipY = {\n n: \"s\",\n s: \"n\",\n nw: \"sw\",\n ne: \"se\",\n se: \"ne\",\n sw: \"nw\"\n};\n\nvar signsX = {\n overlay: +1,\n selection: +1,\n n: null,\n e: +1,\n s: null,\n w: -1,\n nw: -1,\n ne: +1,\n se: +1,\n sw: -1\n};\n\nvar signsY = {\n overlay: +1,\n selection: +1,\n n: -1,\n e: null,\n s: +1,\n w: null,\n nw: -1,\n ne: -1,\n se: +1,\n sw: +1\n};\n\nfunction type(t) {\n return {type: t};\n}\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter() {\n return !event.ctrlKey && !event.button;\n}\n\nfunction defaultExtent() {\n var svg = this.ownerSVGElement || this;\n if (svg.hasAttribute(\"viewBox\")) {\n svg = svg.viewBox.baseVal;\n return [[svg.x, svg.y], [svg.x + svg.width, svg.y + svg.height]];\n }\n return [[0, 0], [svg.width.baseVal.value, svg.height.baseVal.value]];\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\n// Like d3.local, but with the name “__brush” rather than auto-generated.\nfunction local(node) {\n while (!node.__brush) if (!(node = node.parentNode)) return;\n return node.__brush;\n}\n\nfunction empty(extent) {\n return extent[0][0] === extent[1][0]\n || extent[0][1] === extent[1][1];\n}\n\nexport function brushSelection(node) {\n var state = node.__brush;\n return state ? state.dim.output(state.selection) : null;\n}\n\nexport function brushX() {\n return brush(X);\n}\n\nexport function brushY() {\n return brush(Y);\n}\n\nexport default function() {\n return brush(XY);\n}\n\nfunction brush(dim) {\n var extent = defaultExtent,\n filter = defaultFilter,\n touchable = defaultTouchable,\n keys = true,\n listeners = dispatch(\"start\", \"brush\", \"end\"),\n handleSize = 6,\n touchending;\n\n function brush(group) {\n var overlay = group\n .property(\"__brush\", initialize)\n .selectAll(\".overlay\")\n .data([type(\"overlay\")]);\n\n overlay.enter().append(\"rect\")\n .attr(\"class\", \"overlay\")\n .attr(\"pointer-events\", \"all\")\n .attr(\"cursor\", cursors.overlay)\n .merge(overlay)\n .each(function() {\n var extent = local(this).extent;\n select(this)\n .attr(\"x\", extent[0][0])\n .attr(\"y\", extent[0][1])\n .attr(\"width\", extent[1][0] - extent[0][0])\n .attr(\"height\", extent[1][1] - extent[0][1]);\n });\n\n group.selectAll(\".selection\")\n .data([type(\"selection\")])\n .enter().append(\"rect\")\n .attr(\"class\", \"selection\")\n .attr(\"cursor\", cursors.selection)\n .attr(\"fill\", \"#777\")\n .attr(\"fill-opacity\", 0.3)\n .attr(\"stroke\", \"#fff\")\n .attr(\"shape-rendering\", \"crispEdges\");\n\n var handle = group.selectAll(\".handle\")\n .data(dim.handles, function(d) { return d.type; });\n\n handle.exit().remove();\n\n handle.enter().append(\"rect\")\n .attr(\"class\", function(d) { return \"handle handle--\" + d.type; })\n .attr(\"cursor\", function(d) { return cursors[d.type]; });\n\n group\n .each(redraw)\n .attr(\"fill\", \"none\")\n .attr(\"pointer-events\", \"all\")\n .on(\"mousedown.brush\", started)\n .filter(touchable)\n .on(\"touchstart.brush\", started)\n .on(\"touchmove.brush\", touchmoved)\n .on(\"touchend.brush touchcancel.brush\", touchended)\n .style(\"touch-action\", \"none\")\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n brush.move = function(group, selection) {\n if (group.selection) {\n group\n .on(\"start.brush\", function() { emitter(this, arguments).beforestart().start(); })\n .on(\"interrupt.brush end.brush\", function() { emitter(this, arguments).end(); })\n .tween(\"brush\", function() {\n var that = this,\n state = that.__brush,\n emit = emitter(that, arguments),\n selection0 = state.selection,\n selection1 = dim.input(typeof selection === \"function\" ? selection.apply(this, arguments) : selection, state.extent),\n i = interpolate(selection0, selection1);\n\n function tween(t) {\n state.selection = t === 1 && selection1 === null ? null : i(t);\n redraw.call(that);\n emit.brush();\n }\n\n return selection0 !== null && selection1 !== null ? tween : tween(1);\n });\n } else {\n group\n .each(function() {\n var that = this,\n args = arguments,\n state = that.__brush,\n selection1 = dim.input(typeof selection === \"function\" ? selection.apply(that, args) : selection, state.extent),\n emit = emitter(that, args).beforestart();\n\n interrupt(that);\n state.selection = selection1 === null ? null : selection1;\n redraw.call(that);\n emit.start().brush().end();\n });\n }\n };\n\n brush.clear = function(group) {\n brush.move(group, null);\n };\n\n function redraw() {\n var group = select(this),\n selection = local(this).selection;\n\n if (selection) {\n group.selectAll(\".selection\")\n .style(\"display\", null)\n .attr(\"x\", selection[0][0])\n .attr(\"y\", selection[0][1])\n .attr(\"width\", selection[1][0] - selection[0][0])\n .attr(\"height\", selection[1][1] - selection[0][1]);\n\n group.selectAll(\".handle\")\n .style(\"display\", null)\n .attr(\"x\", function(d) { return d.type[d.type.length - 1] === \"e\" ? selection[1][0] - handleSize / 2 : selection[0][0] - handleSize / 2; })\n .attr(\"y\", function(d) { return d.type[0] === \"s\" ? selection[1][1] - handleSize / 2 : selection[0][1] - handleSize / 2; })\n .attr(\"width\", function(d) { return d.type === \"n\" || d.type === \"s\" ? selection[1][0] - selection[0][0] + handleSize : handleSize; })\n .attr(\"height\", function(d) { return d.type === \"e\" || d.type === \"w\" ? selection[1][1] - selection[0][1] + handleSize : handleSize; });\n }\n\n else {\n group.selectAll(\".selection,.handle\")\n .style(\"display\", \"none\")\n .attr(\"x\", null)\n .attr(\"y\", null)\n .attr(\"width\", null)\n .attr(\"height\", null);\n }\n }\n\n function emitter(that, args, clean) {\n return (!clean && that.__brush.emitter) || new Emitter(that, args);\n }\n\n function Emitter(that, args) {\n this.that = that;\n this.args = args;\n this.state = that.__brush;\n this.active = 0;\n }\n\n Emitter.prototype = {\n beforestart: function() {\n if (++this.active === 1) this.state.emitter = this, this.starting = true;\n return this;\n },\n start: function() {\n if (this.starting) this.starting = false, this.emit(\"start\");\n else this.emit(\"brush\");\n return this;\n },\n brush: function() {\n this.emit(\"brush\");\n return this;\n },\n end: function() {\n if (--this.active === 0) delete this.state.emitter, this.emit(\"end\");\n return this;\n },\n emit: function(type) {\n customEvent(new BrushEvent(brush, type, dim.output(this.state.selection)), listeners.apply, listeners, [type, this.that, this.args]);\n }\n };\n\n function started() {\n if (touchending && !event.touches) return;\n if (!filter.apply(this, arguments)) return;\n\n var that = this,\n type = event.target.__data__.type,\n mode = (keys && event.metaKey ? type = \"overlay\" : type) === \"selection\" ? MODE_DRAG : (keys && event.altKey ? MODE_CENTER : MODE_HANDLE),\n signX = dim === Y ? null : signsX[type],\n signY = dim === X ? null : signsY[type],\n state = local(that),\n extent = state.extent,\n selection = state.selection,\n W = extent[0][0], w0, w1,\n N = extent[0][1], n0, n1,\n E = extent[1][0], e0, e1,\n S = extent[1][1], s0, s1,\n dx = 0,\n dy = 0,\n moving,\n shifting = signX && signY && keys && event.shiftKey,\n lockX,\n lockY,\n pointer = event.touches ? toucher(event.changedTouches[0].identifier) : mouse,\n point0 = pointer(that),\n point = point0,\n emit = emitter(that, arguments, true).beforestart();\n\n if (type === \"overlay\") {\n if (selection) moving = true;\n state.selection = selection = [\n [w0 = dim === Y ? W : point0[0], n0 = dim === X ? N : point0[1]],\n [e0 = dim === Y ? E : w0, s0 = dim === X ? S : n0]\n ];\n } else {\n w0 = selection[0][0];\n n0 = selection[0][1];\n e0 = selection[1][0];\n s0 = selection[1][1];\n }\n\n w1 = w0;\n n1 = n0;\n e1 = e0;\n s1 = s0;\n\n var group = select(that)\n .attr(\"pointer-events\", \"none\");\n\n var overlay = group.selectAll(\".overlay\")\n .attr(\"cursor\", cursors[type]);\n\n if (event.touches) {\n emit.moved = moved;\n emit.ended = ended;\n } else {\n var view = select(event.view)\n .on(\"mousemove.brush\", moved, true)\n .on(\"mouseup.brush\", ended, true);\n if (keys) view\n .on(\"keydown.brush\", keydowned, true)\n .on(\"keyup.brush\", keyupped, true)\n\n dragDisable(event.view);\n }\n\n nopropagation();\n interrupt(that);\n redraw.call(that);\n emit.start();\n\n function moved() {\n var point1 = pointer(that);\n if (shifting && !lockX && !lockY) {\n if (Math.abs(point1[0] - point[0]) > Math.abs(point1[1] - point[1])) lockY = true;\n else lockX = true;\n }\n point = point1;\n moving = true;\n noevent();\n move();\n }\n\n function move() {\n var t;\n\n dx = point[0] - point0[0];\n dy = point[1] - point0[1];\n\n switch (mode) {\n case MODE_SPACE:\n case MODE_DRAG: {\n if (signX) dx = Math.max(W - w0, Math.min(E - e0, dx)), w1 = w0 + dx, e1 = e0 + dx;\n if (signY) dy = Math.max(N - n0, Math.min(S - s0, dy)), n1 = n0 + dy, s1 = s0 + dy;\n break;\n }\n case MODE_HANDLE: {\n if (signX < 0) dx = Math.max(W - w0, Math.min(E - w0, dx)), w1 = w0 + dx, e1 = e0;\n else if (signX > 0) dx = Math.max(W - e0, Math.min(E - e0, dx)), w1 = w0, e1 = e0 + dx;\n if (signY < 0) dy = Math.max(N - n0, Math.min(S - n0, dy)), n1 = n0 + dy, s1 = s0;\n else if (signY > 0) dy = Math.max(N - s0, Math.min(S - s0, dy)), n1 = n0, s1 = s0 + dy;\n break;\n }\n case MODE_CENTER: {\n if (signX) w1 = Math.max(W, Math.min(E, w0 - dx * signX)), e1 = Math.max(W, Math.min(E, e0 + dx * signX));\n if (signY) n1 = Math.max(N, Math.min(S, n0 - dy * signY)), s1 = Math.max(N, Math.min(S, s0 + dy * signY));\n break;\n }\n }\n\n if (e1 < w1) {\n signX *= -1;\n t = w0, w0 = e0, e0 = t;\n t = w1, w1 = e1, e1 = t;\n if (type in flipX) overlay.attr(\"cursor\", cursors[type = flipX[type]]);\n }\n\n if (s1 < n1) {\n signY *= -1;\n t = n0, n0 = s0, s0 = t;\n t = n1, n1 = s1, s1 = t;\n if (type in flipY) overlay.attr(\"cursor\", cursors[type = flipY[type]]);\n }\n\n if (state.selection) selection = state.selection; // May be set by brush.move!\n if (lockX) w1 = selection[0][0], e1 = selection[1][0];\n if (lockY) n1 = selection[0][1], s1 = selection[1][1];\n\n if (selection[0][0] !== w1\n || selection[0][1] !== n1\n || selection[1][0] !== e1\n || selection[1][1] !== s1) {\n state.selection = [[w1, n1], [e1, s1]];\n redraw.call(that);\n emit.brush();\n }\n }\n\n function ended() {\n nopropagation();\n if (event.touches) {\n if (event.touches.length) return;\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!\n } else {\n dragEnable(event.view, moving);\n view.on(\"keydown.brush keyup.brush mousemove.brush mouseup.brush\", null);\n }\n group.attr(\"pointer-events\", \"all\");\n overlay.attr(\"cursor\", cursors.overlay);\n if (state.selection) selection = state.selection; // May be set by brush.move (on start)!\n if (empty(selection)) state.selection = null, redraw.call(that);\n emit.end();\n }\n\n function keydowned() {\n switch (event.keyCode) {\n case 16: { // SHIFT\n shifting = signX && signY;\n break;\n }\n case 18: { // ALT\n if (mode === MODE_HANDLE) {\n if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n mode = MODE_CENTER;\n move();\n }\n break;\n }\n case 32: { // SPACE; takes priority over ALT\n if (mode === MODE_HANDLE || mode === MODE_CENTER) {\n if (signX < 0) e0 = e1 - dx; else if (signX > 0) w0 = w1 - dx;\n if (signY < 0) s0 = s1 - dy; else if (signY > 0) n0 = n1 - dy;\n mode = MODE_SPACE;\n overlay.attr(\"cursor\", cursors.selection);\n move();\n }\n break;\n }\n default: return;\n }\n noevent();\n }\n\n function keyupped() {\n switch (event.keyCode) {\n case 16: { // SHIFT\n if (shifting) {\n lockX = lockY = shifting = false;\n move();\n }\n break;\n }\n case 18: { // ALT\n if (mode === MODE_CENTER) {\n if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n mode = MODE_HANDLE;\n move();\n }\n break;\n }\n case 32: { // SPACE\n if (mode === MODE_SPACE) {\n if (event.altKey) {\n if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n mode = MODE_CENTER;\n } else {\n if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n mode = MODE_HANDLE;\n }\n overlay.attr(\"cursor\", cursors[type]);\n move();\n }\n break;\n }\n default: return;\n }\n noevent();\n }\n }\n\n function touchmoved() {\n emitter(this, arguments).moved();\n }\n\n function touchended() {\n emitter(this, arguments).ended();\n }\n\n function initialize() {\n var state = this.__brush || {selection: null};\n state.extent = number2(extent.apply(this, arguments));\n state.dim = dim;\n return state;\n }\n\n brush.extent = function(_) {\n return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant(number2(_)), brush) : extent;\n };\n\n brush.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), brush) : filter;\n };\n\n brush.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), brush) : touchable;\n };\n\n brush.handleSize = function(_) {\n return arguments.length ? (handleSize = +_, brush) : handleSize;\n };\n\n brush.keyModifiers = function(_) {\n return arguments.length ? (keys = !!_, brush) : keys;\n };\n\n brush.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? brush : value;\n };\n\n return brush;\n}\n","export var cos = Math.cos;\nexport var sin = Math.sin;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var tau = pi * 2;\nexport var max = Math.max;\n","import {range} from \"d3-array\";\nimport {max, tau} from \"./math\";\n\nfunction compareValue(compare) {\n return function(a, b) {\n return compare(\n a.source.value + a.target.value,\n b.source.value + b.target.value\n );\n };\n}\n\nexport default function() {\n var padAngle = 0,\n sortGroups = null,\n sortSubgroups = null,\n sortChords = null;\n\n function chord(matrix) {\n var n = matrix.length,\n groupSums = [],\n groupIndex = range(n),\n subgroupIndex = [],\n chords = [],\n groups = chords.groups = new Array(n),\n subgroups = new Array(n * n),\n k,\n x,\n x0,\n dx,\n i,\n j;\n\n // Compute the sum.\n k = 0, i = -1; while (++i < n) {\n x = 0, j = -1; while (++j < n) {\n x += matrix[i][j];\n }\n groupSums.push(x);\n subgroupIndex.push(range(n));\n k += x;\n }\n\n // Sort groups…\n if (sortGroups) groupIndex.sort(function(a, b) {\n return sortGroups(groupSums[a], groupSums[b]);\n });\n\n // Sort subgroups…\n if (sortSubgroups) subgroupIndex.forEach(function(d, i) {\n d.sort(function(a, b) {\n return sortSubgroups(matrix[i][a], matrix[i][b]);\n });\n });\n\n // Convert the sum to scaling factor for [0, 2pi].\n // TODO Allow start and end angle to be specified?\n // TODO Allow padding to be specified as percentage?\n k = max(0, tau - padAngle * n) / k;\n dx = k ? padAngle : tau / n;\n\n // Compute the start and end angle for each group and subgroup.\n // Note: Opera has a bug reordering object literal properties!\n x = 0, i = -1; while (++i < n) {\n x0 = x, j = -1; while (++j < n) {\n var di = groupIndex[i],\n dj = subgroupIndex[di][j],\n v = matrix[di][dj],\n a0 = x,\n a1 = x += v * k;\n subgroups[dj * n + di] = {\n index: di,\n subindex: dj,\n startAngle: a0,\n endAngle: a1,\n value: v\n };\n }\n groups[di] = {\n index: di,\n startAngle: x0,\n endAngle: x,\n value: groupSums[di]\n };\n x += dx;\n }\n\n // Generate chords for each (non-empty) subgroup-subgroup link.\n i = -1; while (++i < n) {\n j = i - 1; while (++j < n) {\n var source = subgroups[j * n + i],\n target = subgroups[i * n + j];\n if (source.value || target.value) {\n chords.push(source.value < target.value\n ? {source: target, target: source}\n : {source: source, target: target});\n }\n }\n }\n\n return sortChords ? chords.sort(sortChords) : chords;\n }\n\n chord.padAngle = function(_) {\n return arguments.length ? (padAngle = max(0, _), chord) : padAngle;\n };\n\n chord.sortGroups = function(_) {\n return arguments.length ? (sortGroups = _, chord) : sortGroups;\n };\n\n chord.sortSubgroups = function(_) {\n return arguments.length ? (sortSubgroups = _, chord) : sortSubgroups;\n };\n\n chord.sortChords = function(_) {\n return arguments.length ? (_ == null ? sortChords = null : (sortChords = compareValue(_))._ = _, chord) : sortChords && sortChords._;\n };\n\n return chord;\n}\n","export var slice = Array.prototype.slice;\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","var pi = Math.PI,\n tau = 2 * pi,\n epsilon = 1e-6,\n tauEpsilon = tau - epsilon;\n\nfunction Path() {\n this._x0 = this._y0 = // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n}\n\nfunction path() {\n return new Path;\n}\n\nPath.prototype = path.prototype = {\n constructor: Path,\n moveTo: function(x, y) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y);\n },\n closePath: function() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._ += \"Z\";\n }\n },\n lineTo: function(x, y) {\n this._ += \"L\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n quadraticCurveTo: function(x1, y1, x, y) {\n this._ += \"Q\" + (+x1) + \",\" + (+y1) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) {\n this._ += \"C\" + (+x1) + \",\" + (+y1) + \",\" + (+x2) + \",\" + (+y2) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n arcTo: function(x1, y1, x2, y2, r) {\n x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n var x0 = this._x1,\n y0 = this._y1,\n x21 = x2 - x1,\n y21 = y2 - y1,\n x01 = x0 - x1,\n y01 = y0 - y1,\n l01_2 = x01 * x01 + y01 * y01;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x1,y1).\n if (this._x1 === null) {\n this._ += \"M\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n else if (!(l01_2 > epsilon));\n\n // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n // Equivalently, is (x1,y1) coincident with (x2,y2)?\n // Or, is the radius zero? Line to (x1,y1).\n else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n this._ += \"L\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Otherwise, draw an arc!\n else {\n var x20 = x2 - x0,\n y20 = y2 - y0,\n l21_2 = x21 * x21 + y21 * y21,\n l20_2 = x20 * x20 + y20 * y20,\n l21 = Math.sqrt(l21_2),\n l01 = Math.sqrt(l01_2),\n l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n t01 = l / l01,\n t21 = l / l21;\n\n // If the start tangent is not coincident with (x0,y0), line to.\n if (Math.abs(t01 - 1) > epsilon) {\n this._ += \"L\" + (x1 + t01 * x01) + \",\" + (y1 + t01 * y01);\n }\n\n this._ += \"A\" + r + \",\" + r + \",0,0,\" + (+(y01 * x20 > x01 * y20)) + \",\" + (this._x1 = x1 + t21 * x21) + \",\" + (this._y1 = y1 + t21 * y21);\n }\n },\n arc: function(x, y, r, a0, a1, ccw) {\n x = +x, y = +y, r = +r, ccw = !!ccw;\n var dx = r * Math.cos(a0),\n dy = r * Math.sin(a0),\n x0 = x + dx,\n y0 = y + dy,\n cw = 1 ^ ccw,\n da = ccw ? a0 - a1 : a1 - a0;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x0,y0).\n if (this._x1 === null) {\n this._ += \"M\" + x0 + \",\" + y0;\n }\n\n // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n this._ += \"L\" + x0 + \",\" + y0;\n }\n\n // Is this arc empty? We’re done.\n if (!r) return;\n\n // Does the angle go the wrong way? Flip the direction.\n if (da < 0) da = da % tau + tau;\n\n // Is this a complete circle? Draw two arcs to complete the circle.\n if (da > tauEpsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (x - dx) + \",\" + (y - dy) + \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (this._x1 = x0) + \",\" + (this._y1 = y0);\n }\n\n // Is this arc non-empty? Draw an arc!\n else if (da > epsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,\" + (+(da >= pi)) + \",\" + cw + \",\" + (this._x1 = x + r * Math.cos(a1)) + \",\" + (this._y1 = y + r * Math.sin(a1));\n }\n },\n rect: function(x, y, w, h) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y) + \"h\" + (+w) + \"v\" + (+h) + \"h\" + (-w) + \"Z\";\n },\n toString: function() {\n return this._;\n }\n};\n\nexport default path;\n","import {slice} from \"./array\";\nimport constant from \"./constant\";\nimport {cos, halfPi, sin} from \"./math\";\nimport {path} from \"d3-path\";\n\nfunction defaultSource(d) {\n return d.source;\n}\n\nfunction defaultTarget(d) {\n return d.target;\n}\n\nfunction defaultRadius(d) {\n return d.radius;\n}\n\nfunction defaultStartAngle(d) {\n return d.startAngle;\n}\n\nfunction defaultEndAngle(d) {\n return d.endAngle;\n}\n\nexport default function() {\n var source = defaultSource,\n target = defaultTarget,\n radius = defaultRadius,\n startAngle = defaultStartAngle,\n endAngle = defaultEndAngle,\n context = null;\n\n function ribbon() {\n var buffer,\n argv = slice.call(arguments),\n s = source.apply(this, argv),\n t = target.apply(this, argv),\n sr = +radius.apply(this, (argv[0] = s, argv)),\n sa0 = startAngle.apply(this, argv) - halfPi,\n sa1 = endAngle.apply(this, argv) - halfPi,\n sx0 = sr * cos(sa0),\n sy0 = sr * sin(sa0),\n tr = +radius.apply(this, (argv[0] = t, argv)),\n ta0 = startAngle.apply(this, argv) - halfPi,\n ta1 = endAngle.apply(this, argv) - halfPi;\n\n if (!context) context = buffer = path();\n\n context.moveTo(sx0, sy0);\n context.arc(0, 0, sr, sa0, sa1);\n if (sa0 !== ta0 || sa1 !== ta1) { // TODO sr !== tr?\n context.quadraticCurveTo(0, 0, tr * cos(ta0), tr * sin(ta0));\n context.arc(0, 0, tr, ta0, ta1);\n }\n context.quadraticCurveTo(0, 0, sx0, sy0);\n context.closePath();\n\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n ribbon.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), ribbon) : radius;\n };\n\n ribbon.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), ribbon) : startAngle;\n };\n\n ribbon.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), ribbon) : endAngle;\n };\n\n ribbon.source = function(_) {\n return arguments.length ? (source = _, ribbon) : source;\n };\n\n ribbon.target = function(_) {\n return arguments.length ? (target = _, ribbon) : target;\n };\n\n ribbon.context = function(_) {\n return arguments.length ? ((context = _ == null ? null : _), ribbon) : context;\n };\n\n return ribbon;\n}\n","export var prefix = \"$\";\n\nfunction Map() {}\n\nMap.prototype = map.prototype = {\n constructor: Map,\n has: function(key) {\n return (prefix + key) in this;\n },\n get: function(key) {\n return this[prefix + key];\n },\n set: function(key, value) {\n this[prefix + key] = value;\n return this;\n },\n remove: function(key) {\n var property = prefix + key;\n return property in this && delete this[property];\n },\n clear: function() {\n for (var property in this) if (property[0] === prefix) delete this[property];\n },\n keys: function() {\n var keys = [];\n for (var property in this) if (property[0] === prefix) keys.push(property.slice(1));\n return keys;\n },\n values: function() {\n var values = [];\n for (var property in this) if (property[0] === prefix) values.push(this[property]);\n return values;\n },\n entries: function() {\n var entries = [];\n for (var property in this) if (property[0] === prefix) entries.push({key: property.slice(1), value: this[property]});\n return entries;\n },\n size: function() {\n var size = 0;\n for (var property in this) if (property[0] === prefix) ++size;\n return size;\n },\n empty: function() {\n for (var property in this) if (property[0] === prefix) return false;\n return true;\n },\n each: function(f) {\n for (var property in this) if (property[0] === prefix) f(this[property], property.slice(1), this);\n }\n};\n\nfunction map(object, f) {\n var map = new Map;\n\n // Copy constructor.\n if (object instanceof Map) object.each(function(value, key) { map.set(key, value); });\n\n // Index array by numeric index or specified key function.\n else if (Array.isArray(object)) {\n var i = -1,\n n = object.length,\n o;\n\n if (f == null) while (++i < n) map.set(i, object[i]);\n else while (++i < n) map.set(f(o = object[i], i, object), o);\n }\n\n // Convert object to map.\n else if (object) for (var key in object) map.set(key, object[key]);\n\n return map;\n}\n\nexport default map;\n","import map from \"./map\";\n\nexport default function() {\n var keys = [],\n sortKeys = [],\n sortValues,\n rollup,\n nest;\n\n function apply(array, depth, createResult, setResult) {\n if (depth >= keys.length) {\n if (sortValues != null) array.sort(sortValues);\n return rollup != null ? rollup(array) : array;\n }\n\n var i = -1,\n n = array.length,\n key = keys[depth++],\n keyValue,\n value,\n valuesByKey = map(),\n values,\n result = createResult();\n\n while (++i < n) {\n if (values = valuesByKey.get(keyValue = key(value = array[i]) + \"\")) {\n values.push(value);\n } else {\n valuesByKey.set(keyValue, [value]);\n }\n }\n\n valuesByKey.each(function(values, key) {\n setResult(result, key, apply(values, depth, createResult, setResult));\n });\n\n return result;\n }\n\n function entries(map, depth) {\n if (++depth > keys.length) return map;\n var array, sortKey = sortKeys[depth - 1];\n if (rollup != null && depth >= keys.length) array = map.entries();\n else array = [], map.each(function(v, k) { array.push({key: k, values: entries(v, depth)}); });\n return sortKey != null ? array.sort(function(a, b) { return sortKey(a.key, b.key); }) : array;\n }\n\n return nest = {\n object: function(array) { return apply(array, 0, createObject, setObject); },\n map: function(array) { return apply(array, 0, createMap, setMap); },\n entries: function(array) { return entries(apply(array, 0, createMap, setMap), 0); },\n key: function(d) { keys.push(d); return nest; },\n sortKeys: function(order) { sortKeys[keys.length - 1] = order; return nest; },\n sortValues: function(order) { sortValues = order; return nest; },\n rollup: function(f) { rollup = f; return nest; }\n };\n}\n\nfunction createObject() {\n return {};\n}\n\nfunction setObject(object, key, value) {\n object[key] = value;\n}\n\nfunction createMap() {\n return map();\n}\n\nfunction setMap(map, key, value) {\n map.set(key, value);\n}\n","import {default as map, prefix} from \"./map\";\n\nfunction Set() {}\n\nvar proto = map.prototype;\n\nSet.prototype = set.prototype = {\n constructor: Set,\n has: proto.has,\n add: function(value) {\n value += \"\";\n this[prefix + value] = value;\n return this;\n },\n remove: proto.remove,\n clear: proto.clear,\n values: proto.keys,\n size: proto.size,\n empty: proto.empty,\n each: proto.each\n};\n\nfunction set(object, f) {\n var set = new Set;\n\n // Copy constructor.\n if (object instanceof Set) object.each(function(value) { set.add(value); });\n\n // Otherwise, assume it’s an array.\n else if (object) {\n var i = -1, n = object.length;\n if (f == null) while (++i < n) set.add(object[i]);\n else while (++i < n) set.add(f(object[i], i, object));\n }\n\n return set;\n}\n\nexport default set;\n","export default function(map) {\n var keys = [];\n for (var key in map) keys.push(key);\n return keys;\n}\n","export default function(map) {\n var values = [];\n for (var key in map) values.push(map[key]);\n return values;\n}\n","export default function(map) {\n var entries = [];\n for (var key in map) entries.push({key: key, value: map[key]});\n return entries;\n}\n","export var deg2rad = Math.PI / 180;\nexport var rad2deg = 180 / Math.PI;\n","import define, {extend} from \"./define.js\";\nimport {Color, rgbConvert, Rgb} from \"./color.js\";\nimport {deg2rad, rad2deg} from \"./math.js\";\n\n// https://observablehq.com/@mbostock/lab-and-rgb\nvar K = 18,\n Xn = 0.96422,\n Yn = 1,\n Zn = 0.82521,\n t0 = 4 / 29,\n t1 = 6 / 29,\n t2 = 3 * t1 * t1,\n t3 = t1 * t1 * t1;\n\nfunction labConvert(o) {\n if (o instanceof Lab) return new Lab(o.l, o.a, o.b, o.opacity);\n if (o instanceof Hcl) return hcl2lab(o);\n if (!(o instanceof Rgb)) o = rgbConvert(o);\n var r = rgb2lrgb(o.r),\n g = rgb2lrgb(o.g),\n b = rgb2lrgb(o.b),\n y = xyz2lab((0.2225045 * r + 0.7168786 * g + 0.0606169 * b) / Yn), x, z;\n if (r === g && g === b) x = z = y; else {\n x = xyz2lab((0.4360747 * r + 0.3850649 * g + 0.1430804 * b) / Xn);\n z = xyz2lab((0.0139322 * r + 0.0971045 * g + 0.7141733 * b) / Zn);\n }\n return new Lab(116 * y - 16, 500 * (x - y), 200 * (y - z), o.opacity);\n}\n\nexport function gray(l, opacity) {\n return new Lab(l, 0, 0, opacity == null ? 1 : opacity);\n}\n\nexport default function lab(l, a, b, opacity) {\n return arguments.length === 1 ? labConvert(l) : new Lab(l, a, b, opacity == null ? 1 : opacity);\n}\n\nexport function Lab(l, a, b, opacity) {\n this.l = +l;\n this.a = +a;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Lab, lab, extend(Color, {\n brighter: function(k) {\n return new Lab(this.l + K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n darker: function(k) {\n return new Lab(this.l - K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n rgb: function() {\n var y = (this.l + 16) / 116,\n x = isNaN(this.a) ? y : y + this.a / 500,\n z = isNaN(this.b) ? y : y - this.b / 200;\n x = Xn * lab2xyz(x);\n y = Yn * lab2xyz(y);\n z = Zn * lab2xyz(z);\n return new Rgb(\n lrgb2rgb( 3.1338561 * x - 1.6168667 * y - 0.4906146 * z),\n lrgb2rgb(-0.9787684 * x + 1.9161415 * y + 0.0334540 * z),\n lrgb2rgb( 0.0719453 * x - 0.2289914 * y + 1.4052427 * z),\n this.opacity\n );\n }\n}));\n\nfunction xyz2lab(t) {\n return t > t3 ? Math.pow(t, 1 / 3) : t / t2 + t0;\n}\n\nfunction lab2xyz(t) {\n return t > t1 ? t * t * t : t2 * (t - t0);\n}\n\nfunction lrgb2rgb(x) {\n return 255 * (x <= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055);\n}\n\nfunction rgb2lrgb(x) {\n return (x /= 255) <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);\n}\n\nfunction hclConvert(o) {\n if (o instanceof Hcl) return new Hcl(o.h, o.c, o.l, o.opacity);\n if (!(o instanceof Lab)) o = labConvert(o);\n if (o.a === 0 && o.b === 0) return new Hcl(NaN, 0 < o.l && o.l < 100 ? 0 : NaN, o.l, o.opacity);\n var h = Math.atan2(o.b, o.a) * rad2deg;\n return new Hcl(h < 0 ? h + 360 : h, Math.sqrt(o.a * o.a + o.b * o.b), o.l, o.opacity);\n}\n\nexport function lch(l, c, h, opacity) {\n return arguments.length === 1 ? hclConvert(l) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function hcl(h, c, l, opacity) {\n return arguments.length === 1 ? hclConvert(h) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function Hcl(h, c, l, opacity) {\n this.h = +h;\n this.c = +c;\n this.l = +l;\n this.opacity = +opacity;\n}\n\nfunction hcl2lab(o) {\n if (isNaN(o.h)) return new Lab(o.l, 0, 0, o.opacity);\n var h = o.h * deg2rad;\n return new Lab(o.l, Math.cos(h) * o.c, Math.sin(h) * o.c, o.opacity);\n}\n\ndefine(Hcl, hcl, extend(Color, {\n brighter: function(k) {\n return new Hcl(this.h, this.c, this.l + K * (k == null ? 1 : k), this.opacity);\n },\n darker: function(k) {\n return new Hcl(this.h, this.c, this.l - K * (k == null ? 1 : k), this.opacity);\n },\n rgb: function() {\n return hcl2lab(this).rgb();\n }\n}));\n","import define, {extend} from \"./define.js\";\nimport {Color, rgbConvert, Rgb, darker, brighter} from \"./color.js\";\nimport {deg2rad, rad2deg} from \"./math.js\";\n\nvar A = -0.14861,\n B = +1.78277,\n C = -0.29227,\n D = -0.90649,\n E = +1.97294,\n ED = E * D,\n EB = E * B,\n BC_DA = B * C - D * A;\n\nfunction cubehelixConvert(o) {\n if (o instanceof Cubehelix) return new Cubehelix(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Rgb)) o = rgbConvert(o);\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n l = (BC_DA * b + ED * r - EB * g) / (BC_DA + ED - EB),\n bl = b - l,\n k = (E * (g - l) - C * bl) / D,\n s = Math.sqrt(k * k + bl * bl) / (E * l * (1 - l)), // NaN if l=0 or l=1\n h = s ? Math.atan2(k, bl) * rad2deg - 120 : NaN;\n return new Cubehelix(h < 0 ? h + 360 : h, s, l, o.opacity);\n}\n\nexport default function cubehelix(h, s, l, opacity) {\n return arguments.length === 1 ? cubehelixConvert(h) : new Cubehelix(h, s, l, opacity == null ? 1 : opacity);\n}\n\nexport function Cubehelix(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Cubehelix, cubehelix, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function() {\n var h = isNaN(this.h) ? 0 : (this.h + 120) * deg2rad,\n l = +this.l,\n a = isNaN(this.s) ? 0 : this.s * l * (1 - l),\n cosh = Math.cos(h),\n sinh = Math.sin(h);\n return new Rgb(\n 255 * (l + a * (A * cosh + B * sinh)),\n 255 * (l + a * (C * cosh + D * sinh)),\n 255 * (l + a * (E * cosh)),\n this.opacity\n );\n }\n}));\n","var array = Array.prototype;\n\nexport var slice = array.slice;\n","export default function(a, b) {\n return a - b;\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(ring, hole) {\n var i = -1, n = hole.length, c;\n while (++i < n) if (c = ringContains(ring, hole[i])) return c;\n return 0;\n}\n\nfunction ringContains(ring, point) {\n var x = point[0], y = point[1], contains = -1;\n for (var i = 0, n = ring.length, j = n - 1; i < n; j = i++) {\n var pi = ring[i], xi = pi[0], yi = pi[1], pj = ring[j], xj = pj[0], yj = pj[1];\n if (segmentContains(pi, pj, point)) return 0;\n if (((yi > y) !== (yj > y)) && ((x < (xj - xi) * (y - yi) / (yj - yi) + xi))) contains = -contains;\n }\n return contains;\n}\n\nfunction segmentContains(a, b, c) {\n var i; return collinear(a, b, c) && within(a[i = +(a[0] === b[0])], c[i], b[i]);\n}\n\nfunction collinear(a, b, c) {\n return (b[0] - a[0]) * (c[1] - a[1]) === (c[0] - a[0]) * (b[1] - a[1]);\n}\n\nfunction within(p, q, r) {\n return p <= q && q <= r || r <= q && q <= p;\n}\n","export default function() {}\n","import {extent, thresholdSturges, tickStep, range} from \"d3-array\";\nimport {slice} from \"./array\";\nimport ascending from \"./ascending\";\nimport area from \"./area\";\nimport constant from \"./constant\";\nimport contains from \"./contains\";\nimport noop from \"./noop\";\n\nvar cases = [\n [],\n [[[1.0, 1.5], [0.5, 1.0]]],\n [[[1.5, 1.0], [1.0, 1.5]]],\n [[[1.5, 1.0], [0.5, 1.0]]],\n [[[1.0, 0.5], [1.5, 1.0]]],\n [[[1.0, 1.5], [0.5, 1.0]], [[1.0, 0.5], [1.5, 1.0]]],\n [[[1.0, 0.5], [1.0, 1.5]]],\n [[[1.0, 0.5], [0.5, 1.0]]],\n [[[0.5, 1.0], [1.0, 0.5]]],\n [[[1.0, 1.5], [1.0, 0.5]]],\n [[[0.5, 1.0], [1.0, 0.5]], [[1.5, 1.0], [1.0, 1.5]]],\n [[[1.5, 1.0], [1.0, 0.5]]],\n [[[0.5, 1.0], [1.5, 1.0]]],\n [[[1.0, 1.5], [1.5, 1.0]]],\n [[[0.5, 1.0], [1.0, 1.5]]],\n []\n];\n\nexport default function() {\n var dx = 1,\n dy = 1,\n threshold = thresholdSturges,\n smooth = smoothLinear;\n\n function contours(values) {\n var tz = threshold(values);\n\n // Convert number of thresholds into uniform thresholds.\n if (!Array.isArray(tz)) {\n var domain = extent(values), start = domain[0], stop = domain[1];\n tz = tickStep(start, stop, tz);\n tz = range(Math.floor(start / tz) * tz, Math.floor(stop / tz) * tz, tz);\n } else {\n tz = tz.slice().sort(ascending);\n }\n\n return tz.map(function(value) {\n return contour(values, value);\n });\n }\n\n // Accumulate, smooth contour rings, assign holes to exterior rings.\n // Based on https://github.com/mbostock/shapefile/blob/v0.6.2/shp/polygon.js\n function contour(values, value) {\n var polygons = [],\n holes = [];\n\n isorings(values, value, function(ring) {\n smooth(ring, values, value);\n if (area(ring) > 0) polygons.push([ring]);\n else holes.push(ring);\n });\n\n holes.forEach(function(hole) {\n for (var i = 0, n = polygons.length, polygon; i < n; ++i) {\n if (contains((polygon = polygons[i])[0], hole) !== -1) {\n polygon.push(hole);\n return;\n }\n }\n });\n\n return {\n type: \"MultiPolygon\",\n value: value,\n coordinates: polygons\n };\n }\n\n // Marching squares with isolines stitched into rings.\n // Based on https://github.com/topojson/topojson-client/blob/v3.0.0/src/stitch.js\n function isorings(values, value, callback) {\n var fragmentByStart = new Array,\n fragmentByEnd = new Array,\n x, y, t0, t1, t2, t3;\n\n // Special case for the first row (y = -1, t2 = t3 = 0).\n x = y = -1;\n t1 = values[0] >= value;\n cases[t1 << 1].forEach(stitch);\n while (++x < dx - 1) {\n t0 = t1, t1 = values[x + 1] >= value;\n cases[t0 | t1 << 1].forEach(stitch);\n }\n cases[t1 << 0].forEach(stitch);\n\n // General case for the intermediate rows.\n while (++y < dy - 1) {\n x = -1;\n t1 = values[y * dx + dx] >= value;\n t2 = values[y * dx] >= value;\n cases[t1 << 1 | t2 << 2].forEach(stitch);\n while (++x < dx - 1) {\n t0 = t1, t1 = values[y * dx + dx + x + 1] >= value;\n t3 = t2, t2 = values[y * dx + x + 1] >= value;\n cases[t0 | t1 << 1 | t2 << 2 | t3 << 3].forEach(stitch);\n }\n cases[t1 | t2 << 3].forEach(stitch);\n }\n\n // Special case for the last row (y = dy - 1, t0 = t1 = 0).\n x = -1;\n t2 = values[y * dx] >= value;\n cases[t2 << 2].forEach(stitch);\n while (++x < dx - 1) {\n t3 = t2, t2 = values[y * dx + x + 1] >= value;\n cases[t2 << 2 | t3 << 3].forEach(stitch);\n }\n cases[t2 << 3].forEach(stitch);\n\n function stitch(line) {\n var start = [line[0][0] + x, line[0][1] + y],\n end = [line[1][0] + x, line[1][1] + y],\n startIndex = index(start),\n endIndex = index(end),\n f, g;\n if (f = fragmentByEnd[startIndex]) {\n if (g = fragmentByStart[endIndex]) {\n delete fragmentByEnd[f.end];\n delete fragmentByStart[g.start];\n if (f === g) {\n f.ring.push(end);\n callback(f.ring);\n } else {\n fragmentByStart[f.start] = fragmentByEnd[g.end] = {start: f.start, end: g.end, ring: f.ring.concat(g.ring)};\n }\n } else {\n delete fragmentByEnd[f.end];\n f.ring.push(end);\n fragmentByEnd[f.end = endIndex] = f;\n }\n } else if (f = fragmentByStart[endIndex]) {\n if (g = fragmentByEnd[startIndex]) {\n delete fragmentByStart[f.start];\n delete fragmentByEnd[g.end];\n if (f === g) {\n f.ring.push(end);\n callback(f.ring);\n } else {\n fragmentByStart[g.start] = fragmentByEnd[f.end] = {start: g.start, end: f.end, ring: g.ring.concat(f.ring)};\n }\n } else {\n delete fragmentByStart[f.start];\n f.ring.unshift(start);\n fragmentByStart[f.start = startIndex] = f;\n }\n } else {\n fragmentByStart[startIndex] = fragmentByEnd[endIndex] = {start: startIndex, end: endIndex, ring: [start, end]};\n }\n }\n }\n\n function index(point) {\n return point[0] * 2 + point[1] * (dx + 1) * 4;\n }\n\n function smoothLinear(ring, values, value) {\n ring.forEach(function(point) {\n var x = point[0],\n y = point[1],\n xt = x | 0,\n yt = y | 0,\n v0,\n v1 = values[yt * dx + xt];\n if (x > 0 && x < dx && xt === x) {\n v0 = values[yt * dx + xt - 1];\n point[0] = x + (value - v0) / (v1 - v0) - 0.5;\n }\n if (y > 0 && y < dy && yt === y) {\n v0 = values[(yt - 1) * dx + xt];\n point[1] = y + (value - v0) / (v1 - v0) - 0.5;\n }\n });\n }\n\n contours.contour = contour;\n\n contours.size = function(_) {\n if (!arguments.length) return [dx, dy];\n var _0 = Math.ceil(_[0]), _1 = Math.ceil(_[1]);\n if (!(_0 > 0) || !(_1 > 0)) throw new Error(\"invalid size\");\n return dx = _0, dy = _1, contours;\n };\n\n contours.thresholds = function(_) {\n return arguments.length ? (threshold = typeof _ === \"function\" ? _ : Array.isArray(_) ? constant(slice.call(_)) : constant(_), contours) : threshold;\n };\n\n contours.smooth = function(_) {\n return arguments.length ? (smooth = _ ? smoothLinear : noop, contours) : smooth === smoothLinear;\n };\n\n return contours;\n}\n","export default function(ring) {\n var i = 0, n = ring.length, area = ring[n - 1][1] * ring[0][0] - ring[n - 1][0] * ring[0][1];\n while (++i < n) area += ring[i - 1][1] * ring[i][0] - ring[i - 1][0] * ring[i][1];\n return area;\n}\n","// TODO Optimize edge cases.\n// TODO Optimize index calculation.\n// TODO Optimize arguments.\nexport function blurX(source, target, r) {\n var n = source.width,\n m = source.height,\n w = (r << 1) + 1;\n for (var j = 0; j < m; ++j) {\n for (var i = 0, sr = 0; i < n + r; ++i) {\n if (i < n) {\n sr += source.data[i + j * n];\n }\n if (i >= r) {\n if (i >= w) {\n sr -= source.data[i - w + j * n];\n }\n target.data[i - r + j * n] = sr / Math.min(i + 1, n - 1 + w - i, w);\n }\n }\n }\n}\n\n// TODO Optimize edge cases.\n// TODO Optimize index calculation.\n// TODO Optimize arguments.\nexport function blurY(source, target, r) {\n var n = source.width,\n m = source.height,\n w = (r << 1) + 1;\n for (var i = 0; i < n; ++i) {\n for (var j = 0, sr = 0; j < m + r; ++j) {\n if (j < m) {\n sr += source.data[i + j * n];\n }\n if (j >= r) {\n if (j >= w) {\n sr -= source.data[i + (j - w) * n];\n }\n target.data[i + (j - r) * n] = sr / Math.min(j + 1, m - 1 + w - j, w);\n }\n }\n }\n}\n","import {max, range, tickStep} from \"d3-array\";\nimport {slice} from \"./array\";\nimport {blurX, blurY} from \"./blur\";\nimport constant from \"./constant\";\nimport contours from \"./contours\";\n\nfunction defaultX(d) {\n return d[0];\n}\n\nfunction defaultY(d) {\n return d[1];\n}\n\nfunction defaultWeight() {\n return 1;\n}\n\nexport default function() {\n var x = defaultX,\n y = defaultY,\n weight = defaultWeight,\n dx = 960,\n dy = 500,\n r = 20, // blur radius\n k = 2, // log2(grid cell size)\n o = r * 3, // grid offset, to pad for blur\n n = (dx + o * 2) >> k, // grid width\n m = (dy + o * 2) >> k, // grid height\n threshold = constant(20);\n\n function density(data) {\n var values0 = new Float32Array(n * m),\n values1 = new Float32Array(n * m);\n\n data.forEach(function(d, i, data) {\n var xi = (+x(d, i, data) + o) >> k,\n yi = (+y(d, i, data) + o) >> k,\n wi = +weight(d, i, data);\n if (xi >= 0 && xi < n && yi >= 0 && yi < m) {\n values0[xi + yi * n] += wi;\n }\n });\n\n // TODO Optimize.\n blurX({width: n, height: m, data: values0}, {width: n, height: m, data: values1}, r >> k);\n blurY({width: n, height: m, data: values1}, {width: n, height: m, data: values0}, r >> k);\n blurX({width: n, height: m, data: values0}, {width: n, height: m, data: values1}, r >> k);\n blurY({width: n, height: m, data: values1}, {width: n, height: m, data: values0}, r >> k);\n blurX({width: n, height: m, data: values0}, {width: n, height: m, data: values1}, r >> k);\n blurY({width: n, height: m, data: values1}, {width: n, height: m, data: values0}, r >> k);\n\n var tz = threshold(values0);\n\n // Convert number of thresholds into uniform thresholds.\n if (!Array.isArray(tz)) {\n var stop = max(values0);\n tz = tickStep(0, stop, tz);\n tz = range(0, Math.floor(stop / tz) * tz, tz);\n tz.shift();\n }\n\n return contours()\n .thresholds(tz)\n .size([n, m])\n (values0)\n .map(transform);\n }\n\n function transform(geometry) {\n geometry.value *= Math.pow(2, -2 * k); // Density in points per square pixel.\n geometry.coordinates.forEach(transformPolygon);\n return geometry;\n }\n\n function transformPolygon(coordinates) {\n coordinates.forEach(transformRing);\n }\n\n function transformRing(coordinates) {\n coordinates.forEach(transformPoint);\n }\n\n // TODO Optimize.\n function transformPoint(coordinates) {\n coordinates[0] = coordinates[0] * Math.pow(2, k) - o;\n coordinates[1] = coordinates[1] * Math.pow(2, k) - o;\n }\n\n function resize() {\n o = r * 3;\n n = (dx + o * 2) >> k;\n m = (dy + o * 2) >> k;\n return density;\n }\n\n density.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), density) : x;\n };\n\n density.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), density) : y;\n };\n\n density.weight = function(_) {\n return arguments.length ? (weight = typeof _ === \"function\" ? _ : constant(+_), density) : weight;\n };\n\n density.size = function(_) {\n if (!arguments.length) return [dx, dy];\n var _0 = Math.ceil(_[0]), _1 = Math.ceil(_[1]);\n if (!(_0 >= 0) && !(_0 >= 0)) throw new Error(\"invalid size\");\n return dx = _0, dy = _1, resize();\n };\n\n density.cellSize = function(_) {\n if (!arguments.length) return 1 << k;\n if (!((_ = +_) >= 1)) throw new Error(\"invalid cell size\");\n return k = Math.floor(Math.log(_) / Math.LN2), resize();\n };\n\n density.thresholds = function(_) {\n return arguments.length ? (threshold = typeof _ === \"function\" ? _ : Array.isArray(_) ? constant(slice.call(_)) : constant(_), density) : threshold;\n };\n\n density.bandwidth = function(_) {\n if (!arguments.length) return Math.sqrt(r * (r + 1));\n if (!((_ = +_) >= 0)) throw new Error(\"invalid bandwidth\");\n return r = Math.round((Math.sqrt(4 * _ * _ + 1) - 1) / 2), resize();\n };\n\n return density;\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function DragEvent(target, type, subject, id, active, x, y, dx, dy, dispatch) {\n this.target = target;\n this.type = type;\n this.subject = subject;\n this.identifier = id;\n this.active = active;\n this.x = x;\n this.y = y;\n this.dx = dx;\n this.dy = dy;\n this._ = dispatch;\n}\n\nDragEvent.prototype.on = function() {\n var value = this._.on.apply(this._, arguments);\n return value === this._ ? this : value;\n};\n","import {dispatch} from \"d3-dispatch\";\nimport {event, customEvent, select, mouse, touch} from \"d3-selection\";\nimport nodrag, {yesdrag} from \"./nodrag.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\nimport constant from \"./constant.js\";\nimport DragEvent from \"./event.js\";\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter() {\n return !event.ctrlKey && !event.button;\n}\n\nfunction defaultContainer() {\n return this.parentNode;\n}\n\nfunction defaultSubject(d) {\n return d == null ? {x: event.x, y: event.y} : d;\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\nexport default function() {\n var filter = defaultFilter,\n container = defaultContainer,\n subject = defaultSubject,\n touchable = defaultTouchable,\n gestures = {},\n listeners = dispatch(\"start\", \"drag\", \"end\"),\n active = 0,\n mousedownx,\n mousedowny,\n mousemoving,\n touchending,\n clickDistance2 = 0;\n\n function drag(selection) {\n selection\n .on(\"mousedown.drag\", mousedowned)\n .filter(touchable)\n .on(\"touchstart.drag\", touchstarted)\n .on(\"touchmove.drag\", touchmoved)\n .on(\"touchend.drag touchcancel.drag\", touchended)\n .style(\"touch-action\", \"none\")\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n function mousedowned() {\n if (touchending || !filter.apply(this, arguments)) return;\n var gesture = beforestart(\"mouse\", container.apply(this, arguments), mouse, this, arguments);\n if (!gesture) return;\n select(event.view).on(\"mousemove.drag\", mousemoved, true).on(\"mouseup.drag\", mouseupped, true);\n nodrag(event.view);\n nopropagation();\n mousemoving = false;\n mousedownx = event.clientX;\n mousedowny = event.clientY;\n gesture(\"start\");\n }\n\n function mousemoved() {\n noevent();\n if (!mousemoving) {\n var dx = event.clientX - mousedownx, dy = event.clientY - mousedowny;\n mousemoving = dx * dx + dy * dy > clickDistance2;\n }\n gestures.mouse(\"drag\");\n }\n\n function mouseupped() {\n select(event.view).on(\"mousemove.drag mouseup.drag\", null);\n yesdrag(event.view, mousemoving);\n noevent();\n gestures.mouse(\"end\");\n }\n\n function touchstarted() {\n if (!filter.apply(this, arguments)) return;\n var touches = event.changedTouches,\n c = container.apply(this, arguments),\n n = touches.length, i, gesture;\n\n for (i = 0; i < n; ++i) {\n if (gesture = beforestart(touches[i].identifier, c, touch, this, arguments)) {\n nopropagation();\n gesture(\"start\");\n }\n }\n }\n\n function touchmoved() {\n var touches = event.changedTouches,\n n = touches.length, i, gesture;\n\n for (i = 0; i < n; ++i) {\n if (gesture = gestures[touches[i].identifier]) {\n noevent();\n gesture(\"drag\");\n }\n }\n }\n\n function touchended() {\n var touches = event.changedTouches,\n n = touches.length, i, gesture;\n\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!\n for (i = 0; i < n; ++i) {\n if (gesture = gestures[touches[i].identifier]) {\n nopropagation();\n gesture(\"end\");\n }\n }\n }\n\n function beforestart(id, container, point, that, args) {\n var p = point(container, id), s, dx, dy,\n sublisteners = listeners.copy();\n\n if (!customEvent(new DragEvent(drag, \"beforestart\", s, id, active, p[0], p[1], 0, 0, sublisteners), function() {\n if ((event.subject = s = subject.apply(that, args)) == null) return false;\n dx = s.x - p[0] || 0;\n dy = s.y - p[1] || 0;\n return true;\n })) return;\n\n return function gesture(type) {\n var p0 = p, n;\n switch (type) {\n case \"start\": gestures[id] = gesture, n = active++; break;\n case \"end\": delete gestures[id], --active; // nobreak\n case \"drag\": p = point(container, id), n = active; break;\n }\n customEvent(new DragEvent(drag, type, s, id, n, p[0] + dx, p[1] + dy, p[0] - p0[0], p[1] - p0[1], sublisteners), sublisteners.apply, sublisteners, [type, that, args]);\n };\n }\n\n drag.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), drag) : filter;\n };\n\n drag.container = function(_) {\n return arguments.length ? (container = typeof _ === \"function\" ? _ : constant(_), drag) : container;\n };\n\n drag.subject = function(_) {\n return arguments.length ? (subject = typeof _ === \"function\" ? _ : constant(_), drag) : subject;\n };\n\n drag.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), drag) : touchable;\n };\n\n drag.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? drag : value;\n };\n\n drag.clickDistance = function(_) {\n return arguments.length ? (clickDistance2 = (_ = +_) * _, drag) : Math.sqrt(clickDistance2);\n };\n\n return drag;\n}\n","var EOL = {},\n EOF = {},\n QUOTE = 34,\n NEWLINE = 10,\n RETURN = 13;\n\nfunction objectConverter(columns) {\n return new Function(\"d\", \"return {\" + columns.map(function(name, i) {\n return JSON.stringify(name) + \": d[\" + i + \"] || \\\"\\\"\";\n }).join(\",\") + \"}\");\n}\n\nfunction customConverter(columns, f) {\n var object = objectConverter(columns);\n return function(row, i) {\n return f(object(row), i, columns);\n };\n}\n\n// Compute unique columns in order of discovery.\nfunction inferColumns(rows) {\n var columnSet = Object.create(null),\n columns = [];\n\n rows.forEach(function(row) {\n for (var column in row) {\n if (!(column in columnSet)) {\n columns.push(columnSet[column] = column);\n }\n }\n });\n\n return columns;\n}\n\nfunction pad(value, width) {\n var s = value + \"\", length = s.length;\n return length < width ? new Array(width - length + 1).join(0) + s : s;\n}\n\nfunction formatYear(year) {\n return year < 0 ? \"-\" + pad(-year, 6)\n : year > 9999 ? \"+\" + pad(year, 6)\n : pad(year, 4);\n}\n\nfunction formatDate(date) {\n var hours = date.getUTCHours(),\n minutes = date.getUTCMinutes(),\n seconds = date.getUTCSeconds(),\n milliseconds = date.getUTCMilliseconds();\n return isNaN(date) ? \"Invalid Date\"\n : formatYear(date.getUTCFullYear(), 4) + \"-\" + pad(date.getUTCMonth() + 1, 2) + \"-\" + pad(date.getUTCDate(), 2)\n + (milliseconds ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \":\" + pad(seconds, 2) + \".\" + pad(milliseconds, 3) + \"Z\"\n : seconds ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \":\" + pad(seconds, 2) + \"Z\"\n : minutes || hours ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \"Z\"\n : \"\");\n}\n\nexport default function(delimiter) {\n var reFormat = new RegExp(\"[\\\"\" + delimiter + \"\\n\\r]\"),\n DELIMITER = delimiter.charCodeAt(0);\n\n function parse(text, f) {\n var convert, columns, rows = parseRows(text, function(row, i) {\n if (convert) return convert(row, i - 1);\n columns = row, convert = f ? customConverter(row, f) : objectConverter(row);\n });\n rows.columns = columns || [];\n return rows;\n }\n\n function parseRows(text, f) {\n var rows = [], // output rows\n N = text.length,\n I = 0, // current character index\n n = 0, // current line number\n t, // current token\n eof = N <= 0, // current token followed by EOF?\n eol = false; // current token followed by EOL?\n\n // Strip the trailing newline.\n if (text.charCodeAt(N - 1) === NEWLINE) --N;\n if (text.charCodeAt(N - 1) === RETURN) --N;\n\n function token() {\n if (eof) return EOF;\n if (eol) return eol = false, EOL;\n\n // Unescape quotes.\n var i, j = I, c;\n if (text.charCodeAt(j) === QUOTE) {\n while (I++ < N && text.charCodeAt(I) !== QUOTE || text.charCodeAt(++I) === QUOTE);\n if ((i = I) >= N) eof = true;\n else if ((c = text.charCodeAt(I++)) === NEWLINE) eol = true;\n else if (c === RETURN) { eol = true; if (text.charCodeAt(I) === NEWLINE) ++I; }\n return text.slice(j + 1, i - 1).replace(/\"\"/g, \"\\\"\");\n }\n\n // Find next delimiter or newline.\n while (I < N) {\n if ((c = text.charCodeAt(i = I++)) === NEWLINE) eol = true;\n else if (c === RETURN) { eol = true; if (text.charCodeAt(I) === NEWLINE) ++I; }\n else if (c !== DELIMITER) continue;\n return text.slice(j, i);\n }\n\n // Return last token before EOF.\n return eof = true, text.slice(j, N);\n }\n\n while ((t = token()) !== EOF) {\n var row = [];\n while (t !== EOL && t !== EOF) row.push(t), t = token();\n if (f && (row = f(row, n++)) == null) continue;\n rows.push(row);\n }\n\n return rows;\n }\n\n function preformatBody(rows, columns) {\n return rows.map(function(row) {\n return columns.map(function(column) {\n return formatValue(row[column]);\n }).join(delimiter);\n });\n }\n\n function format(rows, columns) {\n if (columns == null) columns = inferColumns(rows);\n return [columns.map(formatValue).join(delimiter)].concat(preformatBody(rows, columns)).join(\"\\n\");\n }\n\n function formatBody(rows, columns) {\n if (columns == null) columns = inferColumns(rows);\n return preformatBody(rows, columns).join(\"\\n\");\n }\n\n function formatRows(rows) {\n return rows.map(formatRow).join(\"\\n\");\n }\n\n function formatRow(row) {\n return row.map(formatValue).join(delimiter);\n }\n\n function formatValue(value) {\n return value == null ? \"\"\n : value instanceof Date ? formatDate(value)\n : reFormat.test(value += \"\") ? \"\\\"\" + value.replace(/\"/g, \"\\\"\\\"\") + \"\\\"\"\n : value;\n }\n\n return {\n parse: parse,\n parseRows: parseRows,\n format: format,\n formatBody: formatBody,\n formatRows: formatRows,\n formatRow: formatRow,\n formatValue: formatValue\n };\n}\n","import dsv from \"./dsv.js\";\n\nvar csv = dsv(\",\");\n\nexport var csvParse = csv.parse;\nexport var csvParseRows = csv.parseRows;\nexport var csvFormat = csv.format;\nexport var csvFormatBody = csv.formatBody;\nexport var csvFormatRows = csv.formatRows;\nexport var csvFormatRow = csv.formatRow;\nexport var csvFormatValue = csv.formatValue;\n","import dsv from \"./dsv.js\";\n\nvar tsv = dsv(\"\\t\");\n\nexport var tsvParse = tsv.parse;\nexport var tsvParseRows = tsv.parseRows;\nexport var tsvFormat = tsv.format;\nexport var tsvFormatBody = tsv.formatBody;\nexport var tsvFormatRows = tsv.formatRows;\nexport var tsvFormatRow = tsv.formatRow;\nexport var tsvFormatValue = tsv.formatValue;\n","export default function autoType(object) {\n for (var key in object) {\n var value = object[key].trim(), number, m;\n if (!value) value = null;\n else if (value === \"true\") value = true;\n else if (value === \"false\") value = false;\n else if (value === \"NaN\") value = NaN;\n else if (!isNaN(number = +value)) value = number;\n else if (m = value.match(/^([-+]\\d{2})?\\d{4}(-\\d{2}(-\\d{2})?)?(T\\d{2}:\\d{2}(:\\d{2}(\\.\\d{3})?)?(Z|[-+]\\d{2}:\\d{2})?)?$/)) {\n if (fixtz && !!m[4] && !m[7]) value = value.replace(/-/g, \"/\").replace(/T/, \" \");\n value = new Date(value);\n }\n else continue;\n object[key] = value;\n }\n return object;\n}\n\n// https://github.com/d3/d3-dsv/issues/45\nvar fixtz = new Date(\"2019-01-01T00:00\").getHours() || new Date(\"2019-07-01T00:00\").getHours();","export function linear(t) {\n return +t;\n}\n","export function quadIn(t) {\n return t * t;\n}\n\nexport function quadOut(t) {\n return t * (2 - t);\n}\n\nexport function quadInOut(t) {\n return ((t *= 2) <= 1 ? t * t : --t * (2 - t) + 1) / 2;\n}\n","var exponent = 3;\n\nexport var polyIn = (function custom(e) {\n e = +e;\n\n function polyIn(t) {\n return Math.pow(t, e);\n }\n\n polyIn.exponent = custom;\n\n return polyIn;\n})(exponent);\n\nexport var polyOut = (function custom(e) {\n e = +e;\n\n function polyOut(t) {\n return 1 - Math.pow(1 - t, e);\n }\n\n polyOut.exponent = custom;\n\n return polyOut;\n})(exponent);\n\nexport var polyInOut = (function custom(e) {\n e = +e;\n\n function polyInOut(t) {\n return ((t *= 2) <= 1 ? Math.pow(t, e) : 2 - Math.pow(2 - t, e)) / 2;\n }\n\n polyInOut.exponent = custom;\n\n return polyInOut;\n})(exponent);\n","var pi = Math.PI,\n halfPi = pi / 2;\n\nexport function sinIn(t) {\n return 1 - Math.cos(t * halfPi);\n}\n\nexport function sinOut(t) {\n return Math.sin(t * halfPi);\n}\n\nexport function sinInOut(t) {\n return (1 - Math.cos(pi * t)) / 2;\n}\n","export function expIn(t) {\n return Math.pow(2, 10 * t - 10);\n}\n\nexport function expOut(t) {\n return 1 - Math.pow(2, -10 * t);\n}\n\nexport function expInOut(t) {\n return ((t *= 2) <= 1 ? Math.pow(2, 10 * t - 10) : 2 - Math.pow(2, 10 - 10 * t)) / 2;\n}\n","export function circleIn(t) {\n return 1 - Math.sqrt(1 - t * t);\n}\n\nexport function circleOut(t) {\n return Math.sqrt(1 - --t * t);\n}\n\nexport function circleInOut(t) {\n return ((t *= 2) <= 1 ? 1 - Math.sqrt(1 - t * t) : Math.sqrt(1 - (t -= 2) * t) + 1) / 2;\n}\n","var b1 = 4 / 11,\n b2 = 6 / 11,\n b3 = 8 / 11,\n b4 = 3 / 4,\n b5 = 9 / 11,\n b6 = 10 / 11,\n b7 = 15 / 16,\n b8 = 21 / 22,\n b9 = 63 / 64,\n b0 = 1 / b1 / b1;\n\nexport function bounceIn(t) {\n return 1 - bounceOut(1 - t);\n}\n\nexport function bounceOut(t) {\n return (t = +t) < b1 ? b0 * t * t : t < b3 ? b0 * (t -= b2) * t + b4 : t < b6 ? b0 * (t -= b5) * t + b7 : b0 * (t -= b8) * t + b9;\n}\n\nexport function bounceInOut(t) {\n return ((t *= 2) <= 1 ? 1 - bounceOut(1 - t) : bounceOut(t - 1) + 1) / 2;\n}\n","var overshoot = 1.70158;\n\nexport var backIn = (function custom(s) {\n s = +s;\n\n function backIn(t) {\n return t * t * ((s + 1) * t - s);\n }\n\n backIn.overshoot = custom;\n\n return backIn;\n})(overshoot);\n\nexport var backOut = (function custom(s) {\n s = +s;\n\n function backOut(t) {\n return --t * t * ((s + 1) * t + s) + 1;\n }\n\n backOut.overshoot = custom;\n\n return backOut;\n})(overshoot);\n\nexport var backInOut = (function custom(s) {\n s = +s;\n\n function backInOut(t) {\n return ((t *= 2) < 1 ? t * t * ((s + 1) * t - s) : (t -= 2) * t * ((s + 1) * t + s) + 2) / 2;\n }\n\n backInOut.overshoot = custom;\n\n return backInOut;\n})(overshoot);\n","var tau = 2 * Math.PI,\n amplitude = 1,\n period = 0.3;\n\nexport var elasticIn = (function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n function elasticIn(t) {\n return a * Math.pow(2, 10 * --t) * Math.sin((s - t) / p);\n }\n\n elasticIn.amplitude = function(a) { return custom(a, p * tau); };\n elasticIn.period = function(p) { return custom(a, p); };\n\n return elasticIn;\n})(amplitude, period);\n\nexport var elasticOut = (function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n function elasticOut(t) {\n return 1 - a * Math.pow(2, -10 * (t = +t)) * Math.sin((t + s) / p);\n }\n\n elasticOut.amplitude = function(a) { return custom(a, p * tau); };\n elasticOut.period = function(p) { return custom(a, p); };\n\n return elasticOut;\n})(amplitude, period);\n\nexport var elasticInOut = (function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n function elasticInOut(t) {\n return ((t = t * 2 - 1) < 0\n ? a * Math.pow(2, 10 * t) * Math.sin((s - t) / p)\n : 2 - a * Math.pow(2, -10 * t) * Math.sin((s + t) / p)) / 2;\n }\n\n elasticInOut.amplitude = function(a) { return custom(a, p * tau); };\n elasticInOut.period = function(p) { return custom(a, p); };\n\n return elasticInOut;\n})(amplitude, period);\n","function responseBlob(response) {\n if (!response.ok) throw new Error(response.status + \" \" + response.statusText);\n return response.blob();\n}\n\nexport default function(input, init) {\n return fetch(input, init).then(responseBlob);\n}\n","function responseArrayBuffer(response) {\n if (!response.ok) throw new Error(response.status + \" \" + response.statusText);\n return response.arrayBuffer();\n}\n\nexport default function(input, init) {\n return fetch(input, init).then(responseArrayBuffer);\n}\n","function responseText(response) {\n if (!response.ok) throw new Error(response.status + \" \" + response.statusText);\n return response.text();\n}\n\nexport default function(input, init) {\n return fetch(input, init).then(responseText);\n}\n","import {csvParse, dsvFormat, tsvParse} from \"d3-dsv\";\nimport text from \"./text\";\n\nfunction dsvParse(parse) {\n return function(input, init, row) {\n if (arguments.length === 2 && typeof init === \"function\") row = init, init = undefined;\n return text(input, init).then(function(response) {\n return parse(response, row);\n });\n };\n}\n\nexport default function dsv(delimiter, input, init, row) {\n if (arguments.length === 3 && typeof init === \"function\") row = init, init = undefined;\n var format = dsvFormat(delimiter);\n return text(input, init).then(function(response) {\n return format.parse(response, row);\n });\n}\n\nexport var csv = dsvParse(csvParse);\nexport var tsv = dsvParse(tsvParse);\n","export default function(input, init) {\n return new Promise(function(resolve, reject) {\n var image = new Image;\n for (var key in init) image[key] = init[key];\n image.onerror = reject;\n image.onload = function() { resolve(image); };\n image.src = input;\n });\n}\n","function responseJson(response) {\n if (!response.ok) throw new Error(response.status + \" \" + response.statusText);\n return response.json();\n}\n\nexport default function(input, init) {\n return fetch(input, init).then(responseJson);\n}\n","import text from \"./text\";\n\nfunction parser(type) {\n return function(input, init) {\n return text(input, init).then(function(text) {\n return (new DOMParser).parseFromString(text, type);\n });\n };\n}\n\nexport default parser(\"application/xml\");\n\nexport var html = parser(\"text/html\");\n\nexport var svg = parser(\"image/svg+xml\");\n","export default function(x, y) {\n var nodes;\n\n if (x == null) x = 0;\n if (y == null) y = 0;\n\n function force() {\n var i,\n n = nodes.length,\n node,\n sx = 0,\n sy = 0;\n\n for (i = 0; i < n; ++i) {\n node = nodes[i], sx += node.x, sy += node.y;\n }\n\n for (sx = sx / n - x, sy = sy / n - y, i = 0; i < n; ++i) {\n node = nodes[i], node.x -= sx, node.y -= sy;\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n };\n\n force.x = function(_) {\n return arguments.length ? (x = +_, force) : x;\n };\n\n force.y = function(_) {\n return arguments.length ? (y = +_, force) : y;\n };\n\n return force;\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function() {\n return (Math.random() - 0.5) * 1e-6;\n}\n","export default function(d) {\n var x = +this._x.call(null, d),\n y = +this._y.call(null, d);\n return add(this.cover(x, y), x, y, d);\n}\n\nfunction add(tree, x, y, d) {\n if (isNaN(x) || isNaN(y)) return tree; // ignore invalid points\n\n var parent,\n node = tree._root,\n leaf = {data: d},\n x0 = tree._x0,\n y0 = tree._y0,\n x1 = tree._x1,\n y1 = tree._y1,\n xm,\n ym,\n xp,\n yp,\n right,\n bottom,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return tree._root = leaf, tree;\n\n // Find the existing leaf for the new point, or add it.\n while (node.length) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n if (parent = node, !(node = node[i = bottom << 1 | right])) return parent[i] = leaf, tree;\n }\n\n // Is the new point is exactly coincident with the existing point?\n xp = +tree._x.call(null, node.data);\n yp = +tree._y.call(null, node.data);\n if (x === xp && y === yp) return leaf.next = node, parent ? parent[i] = leaf : tree._root = leaf, tree;\n\n // Otherwise, split the leaf node until the old and new point are separated.\n do {\n parent = parent ? parent[i] = new Array(4) : tree._root = new Array(4);\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n } while ((i = bottom << 1 | right) === (j = (yp >= ym) << 1 | (xp >= xm)));\n return parent[j] = node, parent[i] = leaf, tree;\n}\n\nexport function addAll(data) {\n var d, i, n = data.length,\n x,\n y,\n xz = new Array(n),\n yz = new Array(n),\n x0 = Infinity,\n y0 = Infinity,\n x1 = -Infinity,\n y1 = -Infinity;\n\n // Compute the points and their extent.\n for (i = 0; i < n; ++i) {\n if (isNaN(x = +this._x.call(null, d = data[i])) || isNaN(y = +this._y.call(null, d))) continue;\n xz[i] = x;\n yz[i] = y;\n if (x < x0) x0 = x;\n if (x > x1) x1 = x;\n if (y < y0) y0 = y;\n if (y > y1) y1 = y;\n }\n\n // If there were no (valid) points, abort.\n if (x0 > x1 || y0 > y1) return this;\n\n // Expand the tree to cover the new points.\n this.cover(x0, y0).cover(x1, y1);\n\n // Add the new points.\n for (i = 0; i < n; ++i) {\n add(this, xz[i], yz[i], data[i]);\n }\n\n return this;\n}\n","export default function(x, y) {\n if (isNaN(x = +x) || isNaN(y = +y)) return this; // ignore invalid points\n\n var x0 = this._x0,\n y0 = this._y0,\n x1 = this._x1,\n y1 = this._y1;\n\n // If the quadtree has no extent, initialize them.\n // Integer extent are necessary so that if we later double the extent,\n // the existing quadrant boundaries don’t change due to floating point error!\n if (isNaN(x0)) {\n x1 = (x0 = Math.floor(x)) + 1;\n y1 = (y0 = Math.floor(y)) + 1;\n }\n\n // Otherwise, double repeatedly to cover.\n else {\n var z = x1 - x0,\n node = this._root,\n parent,\n i;\n\n while (x0 > x || x >= x1 || y0 > y || y >= y1) {\n i = (y < y0) << 1 | (x < x0);\n parent = new Array(4), parent[i] = node, node = parent, z *= 2;\n switch (i) {\n case 0: x1 = x0 + z, y1 = y0 + z; break;\n case 1: x0 = x1 - z, y1 = y0 + z; break;\n case 2: x1 = x0 + z, y0 = y1 - z; break;\n case 3: x0 = x1 - z, y0 = y1 - z; break;\n }\n }\n\n if (this._root && this._root.length) this._root = node;\n }\n\n this._x0 = x0;\n this._y0 = y0;\n this._x1 = x1;\n this._y1 = y1;\n return this;\n}\n","export default function(node, x0, y0, x1, y1) {\n this.node = node;\n this.x0 = x0;\n this.y0 = y0;\n this.x1 = x1;\n this.y1 = y1;\n}\n","export function defaultX(d) {\n return d[0];\n}\n\nexport default function(_) {\n return arguments.length ? (this._x = _, this) : this._x;\n}\n","export function defaultY(d) {\n return d[1];\n}\n\nexport default function(_) {\n return arguments.length ? (this._y = _, this) : this._y;\n}\n","import tree_add, {addAll as tree_addAll} from \"./add.js\";\nimport tree_cover from \"./cover.js\";\nimport tree_data from \"./data.js\";\nimport tree_extent from \"./extent.js\";\nimport tree_find from \"./find.js\";\nimport tree_remove, {removeAll as tree_removeAll} from \"./remove.js\";\nimport tree_root from \"./root.js\";\nimport tree_size from \"./size.js\";\nimport tree_visit from \"./visit.js\";\nimport tree_visitAfter from \"./visitAfter.js\";\nimport tree_x, {defaultX} from \"./x.js\";\nimport tree_y, {defaultY} from \"./y.js\";\n\nexport default function quadtree(nodes, x, y) {\n var tree = new Quadtree(x == null ? defaultX : x, y == null ? defaultY : y, NaN, NaN, NaN, NaN);\n return nodes == null ? tree : tree.addAll(nodes);\n}\n\nfunction Quadtree(x, y, x0, y0, x1, y1) {\n this._x = x;\n this._y = y;\n this._x0 = x0;\n this._y0 = y0;\n this._x1 = x1;\n this._y1 = y1;\n this._root = undefined;\n}\n\nfunction leaf_copy(leaf) {\n var copy = {data: leaf.data}, next = copy;\n while (leaf = leaf.next) next = next.next = {data: leaf.data};\n return copy;\n}\n\nvar treeProto = quadtree.prototype = Quadtree.prototype;\n\ntreeProto.copy = function() {\n var copy = new Quadtree(this._x, this._y, this._x0, this._y0, this._x1, this._y1),\n node = this._root,\n nodes,\n child;\n\n if (!node) return copy;\n\n if (!node.length) return copy._root = leaf_copy(node), copy;\n\n nodes = [{source: node, target: copy._root = new Array(4)}];\n while (node = nodes.pop()) {\n for (var i = 0; i < 4; ++i) {\n if (child = node.source[i]) {\n if (child.length) nodes.push({source: child, target: node.target[i] = new Array(4)});\n else node.target[i] = leaf_copy(child);\n }\n }\n }\n\n return copy;\n};\n\ntreeProto.add = tree_add;\ntreeProto.addAll = tree_addAll;\ntreeProto.cover = tree_cover;\ntreeProto.data = tree_data;\ntreeProto.extent = tree_extent;\ntreeProto.find = tree_find;\ntreeProto.remove = tree_remove;\ntreeProto.removeAll = tree_removeAll;\ntreeProto.root = tree_root;\ntreeProto.size = tree_size;\ntreeProto.visit = tree_visit;\ntreeProto.visitAfter = tree_visitAfter;\ntreeProto.x = tree_x;\ntreeProto.y = tree_y;\n","import constant from \"./constant\";\nimport jiggle from \"./jiggle\";\nimport {quadtree} from \"d3-quadtree\";\n\nfunction x(d) {\n return d.x + d.vx;\n}\n\nfunction y(d) {\n return d.y + d.vy;\n}\n\nexport default function(radius) {\n var nodes,\n radii,\n strength = 1,\n iterations = 1;\n\n if (typeof radius !== \"function\") radius = constant(radius == null ? 1 : +radius);\n\n function force() {\n var i, n = nodes.length,\n tree,\n node,\n xi,\n yi,\n ri,\n ri2;\n\n for (var k = 0; k < iterations; ++k) {\n tree = quadtree(nodes, x, y).visitAfter(prepare);\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n ri = radii[node.index], ri2 = ri * ri;\n xi = node.x + node.vx;\n yi = node.y + node.vy;\n tree.visit(apply);\n }\n }\n\n function apply(quad, x0, y0, x1, y1) {\n var data = quad.data, rj = quad.r, r = ri + rj;\n if (data) {\n if (data.index > node.index) {\n var x = xi - data.x - data.vx,\n y = yi - data.y - data.vy,\n l = x * x + y * y;\n if (l < r * r) {\n if (x === 0) x = jiggle(), l += x * x;\n if (y === 0) y = jiggle(), l += y * y;\n l = (r - (l = Math.sqrt(l))) / l * strength;\n node.vx += (x *= l) * (r = (rj *= rj) / (ri2 + rj));\n node.vy += (y *= l) * r;\n data.vx -= x * (r = 1 - r);\n data.vy -= y * r;\n }\n }\n return;\n }\n return x0 > xi + r || x1 < xi - r || y0 > yi + r || y1 < yi - r;\n }\n }\n\n function prepare(quad) {\n if (quad.data) return quad.r = radii[quad.data.index];\n for (var i = quad.r = 0; i < 4; ++i) {\n if (quad[i] && quad[i].r > quad.r) {\n quad.r = quad[i].r;\n }\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length, node;\n radii = new Array(n);\n for (i = 0; i < n; ++i) node = nodes[i], radii[node.index] = +radius(node, i, nodes);\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.iterations = function(_) {\n return arguments.length ? (iterations = +_, force) : iterations;\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = +_, force) : strength;\n };\n\n force.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : radius;\n };\n\n return force;\n}\n","export default function() {\n var data = [];\n this.visit(function(node) {\n if (!node.length) do data.push(node.data); while (node = node.next)\n });\n return data;\n}\n","export default function(_) {\n return arguments.length\n ? this.cover(+_[0][0], +_[0][1]).cover(+_[1][0], +_[1][1])\n : isNaN(this._x0) ? undefined : [[this._x0, this._y0], [this._x1, this._y1]];\n}\n","import Quad from \"./quad.js\";\n\nexport default function(x, y, radius) {\n var data,\n x0 = this._x0,\n y0 = this._y0,\n x1,\n y1,\n x2,\n y2,\n x3 = this._x1,\n y3 = this._y1,\n quads = [],\n node = this._root,\n q,\n i;\n\n if (node) quads.push(new Quad(node, x0, y0, x3, y3));\n if (radius == null) radius = Infinity;\n else {\n x0 = x - radius, y0 = y - radius;\n x3 = x + radius, y3 = y + radius;\n radius *= radius;\n }\n\n while (q = quads.pop()) {\n\n // Stop searching if this quadrant can’t contain a closer node.\n if (!(node = q.node)\n || (x1 = q.x0) > x3\n || (y1 = q.y0) > y3\n || (x2 = q.x1) < x0\n || (y2 = q.y1) < y0) continue;\n\n // Bisect the current quadrant.\n if (node.length) {\n var xm = (x1 + x2) / 2,\n ym = (y1 + y2) / 2;\n\n quads.push(\n new Quad(node[3], xm, ym, x2, y2),\n new Quad(node[2], x1, ym, xm, y2),\n new Quad(node[1], xm, y1, x2, ym),\n new Quad(node[0], x1, y1, xm, ym)\n );\n\n // Visit the closest quadrant first.\n if (i = (y >= ym) << 1 | (x >= xm)) {\n q = quads[quads.length - 1];\n quads[quads.length - 1] = quads[quads.length - 1 - i];\n quads[quads.length - 1 - i] = q;\n }\n }\n\n // Visit this point. (Visiting coincident points isn’t necessary!)\n else {\n var dx = x - +this._x.call(null, node.data),\n dy = y - +this._y.call(null, node.data),\n d2 = dx * dx + dy * dy;\n if (d2 < radius) {\n var d = Math.sqrt(radius = d2);\n x0 = x - d, y0 = y - d;\n x3 = x + d, y3 = y + d;\n data = node.data;\n }\n }\n }\n\n return data;\n}\n","export default function(d) {\n if (isNaN(x = +this._x.call(null, d)) || isNaN(y = +this._y.call(null, d))) return this; // ignore invalid points\n\n var parent,\n node = this._root,\n retainer,\n previous,\n next,\n x0 = this._x0,\n y0 = this._y0,\n x1 = this._x1,\n y1 = this._y1,\n x,\n y,\n xm,\n ym,\n right,\n bottom,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return this;\n\n // Find the leaf node for the point.\n // While descending, also retain the deepest parent with a non-removed sibling.\n if (node.length) while (true) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n if (!(parent = node, node = node[i = bottom << 1 | right])) return this;\n if (!node.length) break;\n if (parent[(i + 1) & 3] || parent[(i + 2) & 3] || parent[(i + 3) & 3]) retainer = parent, j = i;\n }\n\n // Find the point to remove.\n while (node.data !== d) if (!(previous = node, node = node.next)) return this;\n if (next = node.next) delete node.next;\n\n // If there are multiple coincident points, remove just the point.\n if (previous) return (next ? previous.next = next : delete previous.next), this;\n\n // If this is the root point, remove it.\n if (!parent) return this._root = next, this;\n\n // Remove this leaf.\n next ? parent[i] = next : delete parent[i];\n\n // If the parent now contains exactly one leaf, collapse superfluous parents.\n if ((node = parent[0] || parent[1] || parent[2] || parent[3])\n && node === (parent[3] || parent[2] || parent[1] || parent[0])\n && !node.length) {\n if (retainer) retainer[j] = node;\n else this._root = node;\n }\n\n return this;\n}\n\nexport function removeAll(data) {\n for (var i = 0, n = data.length; i < n; ++i) this.remove(data[i]);\n return this;\n}\n","export default function() {\n return this._root;\n}\n","export default function() {\n var size = 0;\n this.visit(function(node) {\n if (!node.length) do ++size; while (node = node.next)\n });\n return size;\n}\n","import Quad from \"./quad.js\";\n\nexport default function(callback) {\n var quads = [], q, node = this._root, child, x0, y0, x1, y1;\n if (node) quads.push(new Quad(node, this._x0, this._y0, this._x1, this._y1));\n while (q = quads.pop()) {\n if (!callback(node = q.node, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1) && node.length) {\n var xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n }\n }\n return this;\n}\n","import Quad from \"./quad.js\";\n\nexport default function(callback) {\n var quads = [], next = [], q;\n if (this._root) quads.push(new Quad(this._root, this._x0, this._y0, this._x1, this._y1));\n while (q = quads.pop()) {\n var node = q.node;\n if (node.length) {\n var child, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1, xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n }\n next.push(q);\n }\n while (q = next.pop()) {\n callback(q.node, q.x0, q.y0, q.x1, q.y1);\n }\n return this;\n}\n","import constant from \"./constant\";\nimport jiggle from \"./jiggle\";\nimport {map} from \"d3-collection\";\n\nfunction index(d) {\n return d.index;\n}\n\nfunction find(nodeById, nodeId) {\n var node = nodeById.get(nodeId);\n if (!node) throw new Error(\"missing: \" + nodeId);\n return node;\n}\n\nexport default function(links) {\n var id = index,\n strength = defaultStrength,\n strengths,\n distance = constant(30),\n distances,\n nodes,\n count,\n bias,\n iterations = 1;\n\n if (links == null) links = [];\n\n function defaultStrength(link) {\n return 1 / Math.min(count[link.source.index], count[link.target.index]);\n }\n\n function force(alpha) {\n for (var k = 0, n = links.length; k < iterations; ++k) {\n for (var i = 0, link, source, target, x, y, l, b; i < n; ++i) {\n link = links[i], source = link.source, target = link.target;\n x = target.x + target.vx - source.x - source.vx || jiggle();\n y = target.y + target.vy - source.y - source.vy || jiggle();\n l = Math.sqrt(x * x + y * y);\n l = (l - distances[i]) / l * alpha * strengths[i];\n x *= l, y *= l;\n target.vx -= x * (b = bias[i]);\n target.vy -= y * b;\n source.vx += x * (b = 1 - b);\n source.vy += y * b;\n }\n }\n }\n\n function initialize() {\n if (!nodes) return;\n\n var i,\n n = nodes.length,\n m = links.length,\n nodeById = map(nodes, id),\n link;\n\n for (i = 0, count = new Array(n); i < m; ++i) {\n link = links[i], link.index = i;\n if (typeof link.source !== \"object\") link.source = find(nodeById, link.source);\n if (typeof link.target !== \"object\") link.target = find(nodeById, link.target);\n count[link.source.index] = (count[link.source.index] || 0) + 1;\n count[link.target.index] = (count[link.target.index] || 0) + 1;\n }\n\n for (i = 0, bias = new Array(m); i < m; ++i) {\n link = links[i], bias[i] = count[link.source.index] / (count[link.source.index] + count[link.target.index]);\n }\n\n strengths = new Array(m), initializeStrength();\n distances = new Array(m), initializeDistance();\n }\n\n function initializeStrength() {\n if (!nodes) return;\n\n for (var i = 0, n = links.length; i < n; ++i) {\n strengths[i] = +strength(links[i], i, links);\n }\n }\n\n function initializeDistance() {\n if (!nodes) return;\n\n for (var i = 0, n = links.length; i < n; ++i) {\n distances[i] = +distance(links[i], i, links);\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.links = function(_) {\n return arguments.length ? (links = _, initialize(), force) : links;\n };\n\n force.id = function(_) {\n return arguments.length ? (id = _, force) : id;\n };\n\n force.iterations = function(_) {\n return arguments.length ? (iterations = +_, force) : iterations;\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initializeStrength(), force) : strength;\n };\n\n force.distance = function(_) {\n return arguments.length ? (distance = typeof _ === \"function\" ? _ : constant(+_), initializeDistance(), force) : distance;\n };\n\n return force;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {map} from \"d3-collection\";\nimport {timer} from \"d3-timer\";\n\nexport function x(d) {\n return d.x;\n}\n\nexport function y(d) {\n return d.y;\n}\n\nvar initialRadius = 10,\n initialAngle = Math.PI * (3 - Math.sqrt(5));\n\nexport default function(nodes) {\n var simulation,\n alpha = 1,\n alphaMin = 0.001,\n alphaDecay = 1 - Math.pow(alphaMin, 1 / 300),\n alphaTarget = 0,\n velocityDecay = 0.6,\n forces = map(),\n stepper = timer(step),\n event = dispatch(\"tick\", \"end\");\n\n if (nodes == null) nodes = [];\n\n function step() {\n tick();\n event.call(\"tick\", simulation);\n if (alpha < alphaMin) {\n stepper.stop();\n event.call(\"end\", simulation);\n }\n }\n\n function tick(iterations) {\n var i, n = nodes.length, node;\n\n if (iterations === undefined) iterations = 1;\n\n for (var k = 0; k < iterations; ++k) {\n alpha += (alphaTarget - alpha) * alphaDecay;\n\n forces.each(function (force) {\n force(alpha);\n });\n\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n if (node.fx == null) node.x += node.vx *= velocityDecay;\n else node.x = node.fx, node.vx = 0;\n if (node.fy == null) node.y += node.vy *= velocityDecay;\n else node.y = node.fy, node.vy = 0;\n }\n }\n\n return simulation;\n }\n\n function initializeNodes() {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.index = i;\n if (node.fx != null) node.x = node.fx;\n if (node.fy != null) node.y = node.fy;\n if (isNaN(node.x) || isNaN(node.y)) {\n var radius = initialRadius * Math.sqrt(i), angle = i * initialAngle;\n node.x = radius * Math.cos(angle);\n node.y = radius * Math.sin(angle);\n }\n if (isNaN(node.vx) || isNaN(node.vy)) {\n node.vx = node.vy = 0;\n }\n }\n }\n\n function initializeForce(force) {\n if (force.initialize) force.initialize(nodes);\n return force;\n }\n\n initializeNodes();\n\n return simulation = {\n tick: tick,\n\n restart: function() {\n return stepper.restart(step), simulation;\n },\n\n stop: function() {\n return stepper.stop(), simulation;\n },\n\n nodes: function(_) {\n return arguments.length ? (nodes = _, initializeNodes(), forces.each(initializeForce), simulation) : nodes;\n },\n\n alpha: function(_) {\n return arguments.length ? (alpha = +_, simulation) : alpha;\n },\n\n alphaMin: function(_) {\n return arguments.length ? (alphaMin = +_, simulation) : alphaMin;\n },\n\n alphaDecay: function(_) {\n return arguments.length ? (alphaDecay = +_, simulation) : +alphaDecay;\n },\n\n alphaTarget: function(_) {\n return arguments.length ? (alphaTarget = +_, simulation) : alphaTarget;\n },\n\n velocityDecay: function(_) {\n return arguments.length ? (velocityDecay = 1 - _, simulation) : 1 - velocityDecay;\n },\n\n force: function(name, _) {\n return arguments.length > 1 ? ((_ == null ? forces.remove(name) : forces.set(name, initializeForce(_))), simulation) : forces.get(name);\n },\n\n find: function(x, y, radius) {\n var i = 0,\n n = nodes.length,\n dx,\n dy,\n d2,\n node,\n closest;\n\n if (radius == null) radius = Infinity;\n else radius *= radius;\n\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n dx = x - node.x;\n dy = y - node.y;\n d2 = dx * dx + dy * dy;\n if (d2 < radius) closest = node, radius = d2;\n }\n\n return closest;\n },\n\n on: function(name, _) {\n return arguments.length > 1 ? (event.on(name, _), simulation) : event.on(name);\n }\n };\n}\n","import constant from \"./constant\";\nimport jiggle from \"./jiggle\";\nimport {quadtree} from \"d3-quadtree\";\nimport {x, y} from \"./simulation\";\n\nexport default function() {\n var nodes,\n node,\n alpha,\n strength = constant(-30),\n strengths,\n distanceMin2 = 1,\n distanceMax2 = Infinity,\n theta2 = 0.81;\n\n function force(_) {\n var i, n = nodes.length, tree = quadtree(nodes, x, y).visitAfter(accumulate);\n for (alpha = _, i = 0; i < n; ++i) node = nodes[i], tree.visit(apply);\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length, node;\n strengths = new Array(n);\n for (i = 0; i < n; ++i) node = nodes[i], strengths[node.index] = +strength(node, i, nodes);\n }\n\n function accumulate(quad) {\n var strength = 0, q, c, weight = 0, x, y, i;\n\n // For internal nodes, accumulate forces from child quadrants.\n if (quad.length) {\n for (x = y = i = 0; i < 4; ++i) {\n if ((q = quad[i]) && (c = Math.abs(q.value))) {\n strength += q.value, weight += c, x += c * q.x, y += c * q.y;\n }\n }\n quad.x = x / weight;\n quad.y = y / weight;\n }\n\n // For leaf nodes, accumulate forces from coincident quadrants.\n else {\n q = quad;\n q.x = q.data.x;\n q.y = q.data.y;\n do strength += strengths[q.data.index];\n while (q = q.next);\n }\n\n quad.value = strength;\n }\n\n function apply(quad, x1, _, x2) {\n if (!quad.value) return true;\n\n var x = quad.x - node.x,\n y = quad.y - node.y,\n w = x2 - x1,\n l = x * x + y * y;\n\n // Apply the Barnes-Hut approximation if possible.\n // Limit forces for very close nodes; randomize direction if coincident.\n if (w * w / theta2 < l) {\n if (l < distanceMax2) {\n if (x === 0) x = jiggle(), l += x * x;\n if (y === 0) y = jiggle(), l += y * y;\n if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);\n node.vx += x * quad.value * alpha / l;\n node.vy += y * quad.value * alpha / l;\n }\n return true;\n }\n\n // Otherwise, process points directly.\n else if (quad.length || l >= distanceMax2) return;\n\n // Limit forces for very close nodes; randomize direction if coincident.\n if (quad.data !== node || quad.next) {\n if (x === 0) x = jiggle(), l += x * x;\n if (y === 0) y = jiggle(), l += y * y;\n if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);\n }\n\n do if (quad.data !== node) {\n w = strengths[quad.data.index] * alpha / l;\n node.vx += x * w;\n node.vy += y * w;\n } while (quad = quad.next);\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.distanceMin = function(_) {\n return arguments.length ? (distanceMin2 = _ * _, force) : Math.sqrt(distanceMin2);\n };\n\n force.distanceMax = function(_) {\n return arguments.length ? (distanceMax2 = _ * _, force) : Math.sqrt(distanceMax2);\n };\n\n force.theta = function(_) {\n return arguments.length ? (theta2 = _ * _, force) : Math.sqrt(theta2);\n };\n\n return force;\n}\n","import constant from \"./constant\";\n\nexport default function(radius, x, y) {\n var nodes,\n strength = constant(0.1),\n strengths,\n radiuses;\n\n if (typeof radius !== \"function\") radius = constant(+radius);\n if (x == null) x = 0;\n if (y == null) y = 0;\n\n function force(alpha) {\n for (var i = 0, n = nodes.length; i < n; ++i) {\n var node = nodes[i],\n dx = node.x - x || 1e-6,\n dy = node.y - y || 1e-6,\n r = Math.sqrt(dx * dx + dy * dy),\n k = (radiuses[i] - r) * strengths[i] * alpha / r;\n node.vx += dx * k;\n node.vy += dy * k;\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length;\n strengths = new Array(n);\n radiuses = new Array(n);\n for (i = 0; i < n; ++i) {\n radiuses[i] = +radius(nodes[i], i, nodes);\n strengths[i] = isNaN(radiuses[i]) ? 0 : +strength(nodes[i], i, nodes);\n }\n }\n\n force.initialize = function(_) {\n nodes = _, initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : radius;\n };\n\n force.x = function(_) {\n return arguments.length ? (x = +_, force) : x;\n };\n\n force.y = function(_) {\n return arguments.length ? (y = +_, force) : y;\n };\n\n return force;\n}\n","import constant from \"./constant\";\n\nexport default function(x) {\n var strength = constant(0.1),\n nodes,\n strengths,\n xz;\n\n if (typeof x !== \"function\") x = constant(x == null ? 0 : +x);\n\n function force(alpha) {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.vx += (xz[i] - node.x) * strengths[i] * alpha;\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length;\n strengths = new Array(n);\n xz = new Array(n);\n for (i = 0; i < n; ++i) {\n strengths[i] = isNaN(xz[i] = +x(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes);\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : x;\n };\n\n return force;\n}\n","import constant from \"./constant\";\n\nexport default function(y) {\n var strength = constant(0.1),\n nodes,\n strengths,\n yz;\n\n if (typeof y !== \"function\") y = constant(y == null ? 0 : +y);\n\n function force(alpha) {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.vy += (yz[i] - node.y) * strengths[i] * alpha;\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length;\n strengths = new Array(n);\n yz = new Array(n);\n for (i = 0; i < n; ++i) {\n strengths[i] = isNaN(yz[i] = +y(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes);\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : y;\n };\n\n return force;\n}\n","// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimal(1.23) returns [\"123\", 0].\nexport default function(x, p) {\n if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n var i, coefficient = x.slice(0, i);\n\n // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n return [\n coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n +x.slice(i + 1)\n ];\n}\n","import formatDecimal from \"./formatDecimal.js\";\n\nexport default function(x) {\n return x = formatDecimal(Math.abs(x)), x ? x[1] : NaN;\n}\n","// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nexport default function formatSpecifier(specifier) {\n if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n var match;\n return new FormatSpecifier({\n fill: match[1],\n align: match[2],\n sign: match[3],\n symbol: match[4],\n zero: match[5],\n width: match[6],\n comma: match[7],\n precision: match[8] && match[8].slice(1),\n trim: match[9],\n type: match[10]\n });\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nexport function FormatSpecifier(specifier) {\n this.fill = specifier.fill === undefined ? \" \" : specifier.fill + \"\";\n this.align = specifier.align === undefined ? \">\" : specifier.align + \"\";\n this.sign = specifier.sign === undefined ? \"-\" : specifier.sign + \"\";\n this.symbol = specifier.symbol === undefined ? \"\" : specifier.symbol + \"\";\n this.zero = !!specifier.zero;\n this.width = specifier.width === undefined ? undefined : +specifier.width;\n this.comma = !!specifier.comma;\n this.precision = specifier.precision === undefined ? undefined : +specifier.precision;\n this.trim = !!specifier.trim;\n this.type = specifier.type === undefined ? \"\" : specifier.type + \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n return this.fill\n + this.align\n + this.sign\n + this.symbol\n + (this.zero ? \"0\" : \"\")\n + (this.width === undefined ? \"\" : Math.max(1, this.width | 0))\n + (this.comma ? \",\" : \"\")\n + (this.precision === undefined ? \"\" : \".\" + Math.max(0, this.precision | 0))\n + (this.trim ? \"~\" : \"\")\n + this.type;\n};\n","// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nexport default function(s) {\n out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n switch (s[i]) {\n case \".\": i0 = i1 = i; break;\n case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n default: if (!+s[i]) break out; if (i0 > 0) i0 = 0; break;\n }\n }\n return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\n","import formatDecimal from \"./formatDecimal.js\";\n\nexport var prefixExponent;\n\nexport default function(x, p) {\n var d = formatDecimal(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1],\n i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n n = coefficient.length;\n return i === n ? coefficient\n : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimal(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n decimal: \".\",\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"],\n minus: \"-\"\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n format = locale.format;\n formatPrefix = locale.formatPrefix;\n return locale;\n}\n","import formatDecimal from \"./formatDecimal.js\";\n\nexport default function(x, p) {\n var d = formatDecimal(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1];\n return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}\n","import formatPrefixAuto from \"./formatPrefixAuto.js\";\nimport formatRounded from \"./formatRounded.js\";\n\nexport default {\n \"%\": function(x, p) { return (x * 100).toFixed(p); },\n \"b\": function(x) { return Math.round(x).toString(2); },\n \"c\": function(x) { return x + \"\"; },\n \"d\": function(x) { return Math.round(x).toString(10); },\n \"e\": function(x, p) { return x.toExponential(p); },\n \"f\": function(x, p) { return x.toFixed(p); },\n \"g\": function(x, p) { return x.toPrecision(p); },\n \"o\": function(x) { return Math.round(x).toString(8); },\n \"p\": function(x, p) { return formatRounded(x * 100, p); },\n \"r\": formatRounded,\n \"s\": formatPrefixAuto,\n \"X\": function(x) { return Math.round(x).toString(16).toUpperCase(); },\n \"x\": function(x) { return Math.round(x).toString(16); }\n};\n","export default function(x) {\n return x;\n}\n","import exponent from \"./exponent.js\";\nimport formatGroup from \"./formatGroup.js\";\nimport formatNumerals from \"./formatNumerals.js\";\nimport formatSpecifier from \"./formatSpecifier.js\";\nimport formatTrim from \"./formatTrim.js\";\nimport formatTypes from \"./formatTypes.js\";\nimport {prefixExponent} from \"./formatPrefixAuto.js\";\nimport identity from \"./identity.js\";\n\nvar map = Array.prototype.map,\n prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nexport default function(locale) {\n var group = locale.grouping === undefined || locale.thousands === undefined ? identity : formatGroup(map.call(locale.grouping, Number), locale.thousands + \"\"),\n currencyPrefix = locale.currency === undefined ? \"\" : locale.currency[0] + \"\",\n currencySuffix = locale.currency === undefined ? \"\" : locale.currency[1] + \"\",\n decimal = locale.decimal === undefined ? \".\" : locale.decimal + \"\",\n numerals = locale.numerals === undefined ? identity : formatNumerals(map.call(locale.numerals, String)),\n percent = locale.percent === undefined ? \"%\" : locale.percent + \"\",\n minus = locale.minus === undefined ? \"-\" : locale.minus + \"\",\n nan = locale.nan === undefined ? \"NaN\" : locale.nan + \"\";\n\n function newFormat(specifier) {\n specifier = formatSpecifier(specifier);\n\n var fill = specifier.fill,\n align = specifier.align,\n sign = specifier.sign,\n symbol = specifier.symbol,\n zero = specifier.zero,\n width = specifier.width,\n comma = specifier.comma,\n precision = specifier.precision,\n trim = specifier.trim,\n type = specifier.type;\n\n // The \"n\" type is an alias for \",g\".\n if (type === \"n\") comma = true, type = \"g\";\n\n // The \"\" type, and any invalid type, is an alias for \".12~g\".\n else if (!formatTypes[type]) precision === undefined && (precision = 12), trim = true, type = \"g\";\n\n // If zero fill is specified, padding goes after sign and before digits.\n if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n var prefix = symbol === \"$\" ? currencyPrefix : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n suffix = symbol === \"$\" ? currencySuffix : /[%p]/.test(type) ? percent : \"\";\n\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n var formatType = formatTypes[type],\n maybeSuffix = /[defgprs%]/.test(type);\n\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n precision = precision === undefined ? 6\n : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n : Math.max(0, Math.min(20, precision));\n\n function format(value) {\n var valuePrefix = prefix,\n valueSuffix = suffix,\n i, n, c;\n\n if (type === \"c\") {\n valueSuffix = formatType(value) + valueSuffix;\n value = \"\";\n } else {\n value = +value;\n\n // Perform the initial formatting.\n var valueNegative = value < 0;\n value = isNaN(value) ? nan : formatType(Math.abs(value), precision);\n\n // Trim insignificant zeros.\n if (trim) value = formatTrim(value);\n\n // If a negative value rounds to zero during formatting, treat as positive.\n if (valueNegative && +value === 0) valueNegative = false;\n\n // Compute the prefix and suffix.\n valuePrefix = (valueNegative ? (sign === \"(\" ? sign : minus) : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n\n valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n // Break the formatted value into the integer “value” part that can be\n // grouped, and fractional or exponential “suffix” part that is not.\n if (maybeSuffix) {\n i = -1, n = value.length;\n while (++i < n) {\n if (c = value.charCodeAt(i), 48 > c || c > 57) {\n valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n value = value.slice(0, i);\n break;\n }\n }\n }\n }\n\n // If the fill character is not \"0\", grouping is applied before padding.\n if (comma && !zero) value = group(value, Infinity);\n\n // Compute the padding.\n var length = valuePrefix.length + value.length + valueSuffix.length,\n padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n // If the fill character is \"0\", grouping is applied after padding.\n if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n default: value = padding + valuePrefix + value + valueSuffix; break;\n }\n\n return numerals(value);\n }\n\n format.toString = function() {\n return specifier + \"\";\n };\n\n return format;\n }\n\n function formatPrefix(specifier, value) {\n var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n k = Math.pow(10, -e),\n prefix = prefixes[8 + e / 3];\n return function(value) {\n return f(k * value) + prefix;\n };\n }\n\n return {\n format: newFormat,\n formatPrefix: formatPrefix\n };\n}\n","export default function(grouping, thousands) {\n return function(value, width) {\n var i = value.length,\n t = [],\n j = 0,\n g = grouping[0],\n length = 0;\n\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) g = Math.max(1, width - length);\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) break;\n g = grouping[j = (j + 1) % grouping.length];\n }\n\n return t.reverse().join(thousands);\n };\n}\n","export default function(numerals) {\n return function(value) {\n return value.replace(/[0-9]/g, function(i) {\n return numerals[+i];\n });\n };\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step) {\n return Math.max(0, -exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, value) {\n return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, max) {\n step = Math.abs(step), max = Math.abs(max) - step;\n return Math.max(0, exponent(max) - exponent(step)) + 1;\n}\n","// Adds floating point numbers with twice the normal precision.\n// Reference: J. R. Shewchuk, Adaptive Precision Floating-Point Arithmetic and\n// Fast Robust Geometric Predicates, Discrete & Computational Geometry 18(3)\n// 305–363 (1997).\n// Code adapted from GeographicLib by Charles F. F. Karney,\n// http://geographiclib.sourceforge.net/\n\nexport default function() {\n return new Adder;\n}\n\nfunction Adder() {\n this.reset();\n}\n\nAdder.prototype = {\n constructor: Adder,\n reset: function() {\n this.s = // rounded value\n this.t = 0; // exact error\n },\n add: function(y) {\n add(temp, y, this.t);\n add(this, temp.s, this.s);\n if (this.s) this.t += temp.t;\n else this.s = temp.t;\n },\n valueOf: function() {\n return this.s;\n }\n};\n\nvar temp = new Adder;\n\nfunction add(adder, a, b) {\n var x = adder.s = a + b,\n bv = x - a,\n av = x - bv;\n adder.t = (a - av) + (b - bv);\n}\n","export var epsilon = 1e-6;\nexport var epsilon2 = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var quarterPi = pi / 4;\nexport var tau = pi * 2;\n\nexport var degrees = 180 / pi;\nexport var radians = pi / 180;\n\nexport var abs = Math.abs;\nexport var atan = Math.atan;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var ceil = Math.ceil;\nexport var exp = Math.exp;\nexport var floor = Math.floor;\nexport var log = Math.log;\nexport var pow = Math.pow;\nexport var sin = Math.sin;\nexport var sign = Math.sign || function(x) { return x > 0 ? 1 : x < 0 ? -1 : 0; };\nexport var sqrt = Math.sqrt;\nexport var tan = Math.tan;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x > 1 ? halfPi : x < -1 ? -halfPi : Math.asin(x);\n}\n\nexport function haversin(x) {\n return (x = sin(x / 2)) * x;\n}\n","export default function noop() {}\n","function streamGeometry(geometry, stream) {\n if (geometry && streamGeometryType.hasOwnProperty(geometry.type)) {\n streamGeometryType[geometry.type](geometry, stream);\n }\n}\n\nvar streamObjectType = {\n Feature: function(object, stream) {\n streamGeometry(object.geometry, stream);\n },\n FeatureCollection: function(object, stream) {\n var features = object.features, i = -1, n = features.length;\n while (++i < n) streamGeometry(features[i].geometry, stream);\n }\n};\n\nvar streamGeometryType = {\n Sphere: function(object, stream) {\n stream.sphere();\n },\n Point: function(object, stream) {\n object = object.coordinates;\n stream.point(object[0], object[1], object[2]);\n },\n MultiPoint: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) object = coordinates[i], stream.point(object[0], object[1], object[2]);\n },\n LineString: function(object, stream) {\n streamLine(object.coordinates, stream, 0);\n },\n MultiLineString: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) streamLine(coordinates[i], stream, 0);\n },\n Polygon: function(object, stream) {\n streamPolygon(object.coordinates, stream);\n },\n MultiPolygon: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) streamPolygon(coordinates[i], stream);\n },\n GeometryCollection: function(object, stream) {\n var geometries = object.geometries, i = -1, n = geometries.length;\n while (++i < n) streamGeometry(geometries[i], stream);\n }\n};\n\nfunction streamLine(coordinates, stream, closed) {\n var i = -1, n = coordinates.length - closed, coordinate;\n stream.lineStart();\n while (++i < n) coordinate = coordinates[i], stream.point(coordinate[0], coordinate[1], coordinate[2]);\n stream.lineEnd();\n}\n\nfunction streamPolygon(coordinates, stream) {\n var i = -1, n = coordinates.length;\n stream.polygonStart();\n while (++i < n) streamLine(coordinates[i], stream, 1);\n stream.polygonEnd();\n}\n\nexport default function(object, stream) {\n if (object && streamObjectType.hasOwnProperty(object.type)) {\n streamObjectType[object.type](object, stream);\n } else {\n streamGeometry(object, stream);\n }\n}\n","import adder from \"./adder.js\";\nimport {atan2, cos, quarterPi, radians, sin, tau} from \"./math.js\";\nimport noop from \"./noop.js\";\nimport stream from \"./stream.js\";\n\nexport var areaRingSum = adder();\n\nvar areaSum = adder(),\n lambda00,\n phi00,\n lambda0,\n cosPhi0,\n sinPhi0;\n\nexport var areaStream = {\n point: noop,\n lineStart: noop,\n lineEnd: noop,\n polygonStart: function() {\n areaRingSum.reset();\n areaStream.lineStart = areaRingStart;\n areaStream.lineEnd = areaRingEnd;\n },\n polygonEnd: function() {\n var areaRing = +areaRingSum;\n areaSum.add(areaRing < 0 ? tau + areaRing : areaRing);\n this.lineStart = this.lineEnd = this.point = noop;\n },\n sphere: function() {\n areaSum.add(tau);\n }\n};\n\nfunction areaRingStart() {\n areaStream.point = areaPointFirst;\n}\n\nfunction areaRingEnd() {\n areaPoint(lambda00, phi00);\n}\n\nfunction areaPointFirst(lambda, phi) {\n areaStream.point = areaPoint;\n lambda00 = lambda, phi00 = phi;\n lambda *= radians, phi *= radians;\n lambda0 = lambda, cosPhi0 = cos(phi = phi / 2 + quarterPi), sinPhi0 = sin(phi);\n}\n\nfunction areaPoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n phi = phi / 2 + quarterPi; // half the angular distance from south pole\n\n // Spherical excess E for a spherical triangle with vertices: south pole,\n // previous point, current point. Uses a formula derived from Cagnoli’s\n // theorem. See Todhunter, Spherical Trig. (1871), Sec. 103, Eq. (2).\n var dLambda = lambda - lambda0,\n sdLambda = dLambda >= 0 ? 1 : -1,\n adLambda = sdLambda * dLambda,\n cosPhi = cos(phi),\n sinPhi = sin(phi),\n k = sinPhi0 * sinPhi,\n u = cosPhi0 * cosPhi + k * cos(adLambda),\n v = k * sdLambda * sin(adLambda);\n areaRingSum.add(atan2(v, u));\n\n // Advance the previous points.\n lambda0 = lambda, cosPhi0 = cosPhi, sinPhi0 = sinPhi;\n}\n\nexport default function(object) {\n areaSum.reset();\n stream(object, areaStream);\n return areaSum * 2;\n}\n","import {asin, atan2, cos, sin, sqrt} from \"./math.js\";\n\nexport function spherical(cartesian) {\n return [atan2(cartesian[1], cartesian[0]), asin(cartesian[2])];\n}\n\nexport function cartesian(spherical) {\n var lambda = spherical[0], phi = spherical[1], cosPhi = cos(phi);\n return [cosPhi * cos(lambda), cosPhi * sin(lambda), sin(phi)];\n}\n\nexport function cartesianDot(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n}\n\nexport function cartesianCross(a, b) {\n return [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]];\n}\n\n// TODO return a\nexport function cartesianAddInPlace(a, b) {\n a[0] += b[0], a[1] += b[1], a[2] += b[2];\n}\n\nexport function cartesianScale(vector, k) {\n return [vector[0] * k, vector[1] * k, vector[2] * k];\n}\n\n// TODO return d\nexport function cartesianNormalizeInPlace(d) {\n var l = sqrt(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]);\n d[0] /= l, d[1] /= l, d[2] /= l;\n}\n","import adder from \"./adder.js\";\nimport {areaStream, areaRingSum} from \"./area.js\";\nimport {cartesian, cartesianCross, cartesianNormalizeInPlace, spherical} from \"./cartesian.js\";\nimport {abs, degrees, epsilon, radians} from \"./math.js\";\nimport stream from \"./stream.js\";\n\nvar lambda0, phi0, lambda1, phi1, // bounds\n lambda2, // previous lambda-coordinate\n lambda00, phi00, // first point\n p0, // previous 3D point\n deltaSum = adder(),\n ranges,\n range;\n\nvar boundsStream = {\n point: boundsPoint,\n lineStart: boundsLineStart,\n lineEnd: boundsLineEnd,\n polygonStart: function() {\n boundsStream.point = boundsRingPoint;\n boundsStream.lineStart = boundsRingStart;\n boundsStream.lineEnd = boundsRingEnd;\n deltaSum.reset();\n areaStream.polygonStart();\n },\n polygonEnd: function() {\n areaStream.polygonEnd();\n boundsStream.point = boundsPoint;\n boundsStream.lineStart = boundsLineStart;\n boundsStream.lineEnd = boundsLineEnd;\n if (areaRingSum < 0) lambda0 = -(lambda1 = 180), phi0 = -(phi1 = 90);\n else if (deltaSum > epsilon) phi1 = 90;\n else if (deltaSum < -epsilon) phi0 = -90;\n range[0] = lambda0, range[1] = lambda1;\n },\n sphere: function() {\n lambda0 = -(lambda1 = 180), phi0 = -(phi1 = 90);\n }\n};\n\nfunction boundsPoint(lambda, phi) {\n ranges.push(range = [lambda0 = lambda, lambda1 = lambda]);\n if (phi < phi0) phi0 = phi;\n if (phi > phi1) phi1 = phi;\n}\n\nfunction linePoint(lambda, phi) {\n var p = cartesian([lambda * radians, phi * radians]);\n if (p0) {\n var normal = cartesianCross(p0, p),\n equatorial = [normal[1], -normal[0], 0],\n inflection = cartesianCross(equatorial, normal);\n cartesianNormalizeInPlace(inflection);\n inflection = spherical(inflection);\n var delta = lambda - lambda2,\n sign = delta > 0 ? 1 : -1,\n lambdai = inflection[0] * degrees * sign,\n phii,\n antimeridian = abs(delta) > 180;\n if (antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) {\n phii = inflection[1] * degrees;\n if (phii > phi1) phi1 = phii;\n } else if (lambdai = (lambdai + 360) % 360 - 180, antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) {\n phii = -inflection[1] * degrees;\n if (phii < phi0) phi0 = phii;\n } else {\n if (phi < phi0) phi0 = phi;\n if (phi > phi1) phi1 = phi;\n }\n if (antimeridian) {\n if (lambda < lambda2) {\n if (angle(lambda0, lambda) > angle(lambda0, lambda1)) lambda1 = lambda;\n } else {\n if (angle(lambda, lambda1) > angle(lambda0, lambda1)) lambda0 = lambda;\n }\n } else {\n if (lambda1 >= lambda0) {\n if (lambda < lambda0) lambda0 = lambda;\n if (lambda > lambda1) lambda1 = lambda;\n } else {\n if (lambda > lambda2) {\n if (angle(lambda0, lambda) > angle(lambda0, lambda1)) lambda1 = lambda;\n } else {\n if (angle(lambda, lambda1) > angle(lambda0, lambda1)) lambda0 = lambda;\n }\n }\n }\n } else {\n ranges.push(range = [lambda0 = lambda, lambda1 = lambda]);\n }\n if (phi < phi0) phi0 = phi;\n if (phi > phi1) phi1 = phi;\n p0 = p, lambda2 = lambda;\n}\n\nfunction boundsLineStart() {\n boundsStream.point = linePoint;\n}\n\nfunction boundsLineEnd() {\n range[0] = lambda0, range[1] = lambda1;\n boundsStream.point = boundsPoint;\n p0 = null;\n}\n\nfunction boundsRingPoint(lambda, phi) {\n if (p0) {\n var delta = lambda - lambda2;\n deltaSum.add(abs(delta) > 180 ? delta + (delta > 0 ? 360 : -360) : delta);\n } else {\n lambda00 = lambda, phi00 = phi;\n }\n areaStream.point(lambda, phi);\n linePoint(lambda, phi);\n}\n\nfunction boundsRingStart() {\n areaStream.lineStart();\n}\n\nfunction boundsRingEnd() {\n boundsRingPoint(lambda00, phi00);\n areaStream.lineEnd();\n if (abs(deltaSum) > epsilon) lambda0 = -(lambda1 = 180);\n range[0] = lambda0, range[1] = lambda1;\n p0 = null;\n}\n\n// Finds the left-right distance between two longitudes.\n// This is almost the same as (lambda1 - lambda0 + 360°) % 360°, except that we want\n// the distance between ±180° to be 360°.\nfunction angle(lambda0, lambda1) {\n return (lambda1 -= lambda0) < 0 ? lambda1 + 360 : lambda1;\n}\n\nfunction rangeCompare(a, b) {\n return a[0] - b[0];\n}\n\nfunction rangeContains(range, x) {\n return range[0] <= range[1] ? range[0] <= x && x <= range[1] : x < range[0] || range[1] < x;\n}\n\nexport default function(feature) {\n var i, n, a, b, merged, deltaMax, delta;\n\n phi1 = lambda1 = -(lambda0 = phi0 = Infinity);\n ranges = [];\n stream(feature, boundsStream);\n\n // First, sort ranges by their minimum longitudes.\n if (n = ranges.length) {\n ranges.sort(rangeCompare);\n\n // Then, merge any ranges that overlap.\n for (i = 1, a = ranges[0], merged = [a]; i < n; ++i) {\n b = ranges[i];\n if (rangeContains(a, b[0]) || rangeContains(a, b[1])) {\n if (angle(a[0], b[1]) > angle(a[0], a[1])) a[1] = b[1];\n if (angle(b[0], a[1]) > angle(a[0], a[1])) a[0] = b[0];\n } else {\n merged.push(a = b);\n }\n }\n\n // Finally, find the largest gap between the merged ranges.\n // The final bounding box will be the inverse of this gap.\n for (deltaMax = -Infinity, n = merged.length - 1, i = 0, a = merged[n]; i <= n; a = b, ++i) {\n b = merged[i];\n if ((delta = angle(a[1], b[0])) > deltaMax) deltaMax = delta, lambda0 = b[0], lambda1 = a[1];\n }\n }\n\n ranges = range = null;\n\n return lambda0 === Infinity || phi0 === Infinity\n ? [[NaN, NaN], [NaN, NaN]]\n : [[lambda0, phi0], [lambda1, phi1]];\n}\n","import {asin, atan2, cos, degrees, epsilon, epsilon2, radians, sin, sqrt} from \"./math.js\";\nimport noop from \"./noop.js\";\nimport stream from \"./stream.js\";\n\nvar W0, W1,\n X0, Y0, Z0,\n X1, Y1, Z1,\n X2, Y2, Z2,\n lambda00, phi00, // first point\n x0, y0, z0; // previous point\n\nvar centroidStream = {\n sphere: noop,\n point: centroidPoint,\n lineStart: centroidLineStart,\n lineEnd: centroidLineEnd,\n polygonStart: function() {\n centroidStream.lineStart = centroidRingStart;\n centroidStream.lineEnd = centroidRingEnd;\n },\n polygonEnd: function() {\n centroidStream.lineStart = centroidLineStart;\n centroidStream.lineEnd = centroidLineEnd;\n }\n};\n\n// Arithmetic mean of Cartesian vectors.\nfunction centroidPoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n var cosPhi = cos(phi);\n centroidPointCartesian(cosPhi * cos(lambda), cosPhi * sin(lambda), sin(phi));\n}\n\nfunction centroidPointCartesian(x, y, z) {\n ++W0;\n X0 += (x - X0) / W0;\n Y0 += (y - Y0) / W0;\n Z0 += (z - Z0) / W0;\n}\n\nfunction centroidLineStart() {\n centroidStream.point = centroidLinePointFirst;\n}\n\nfunction centroidLinePointFirst(lambda, phi) {\n lambda *= radians, phi *= radians;\n var cosPhi = cos(phi);\n x0 = cosPhi * cos(lambda);\n y0 = cosPhi * sin(lambda);\n z0 = sin(phi);\n centroidStream.point = centroidLinePoint;\n centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidLinePoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n var cosPhi = cos(phi),\n x = cosPhi * cos(lambda),\n y = cosPhi * sin(lambda),\n z = sin(phi),\n w = atan2(sqrt((w = y0 * z - z0 * y) * w + (w = z0 * x - x0 * z) * w + (w = x0 * y - y0 * x) * w), x0 * x + y0 * y + z0 * z);\n W1 += w;\n X1 += w * (x0 + (x0 = x));\n Y1 += w * (y0 + (y0 = y));\n Z1 += w * (z0 + (z0 = z));\n centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidLineEnd() {\n centroidStream.point = centroidPoint;\n}\n\n// See J. E. Brock, The Inertia Tensor for a Spherical Triangle,\n// J. Applied Mechanics 42, 239 (1975).\nfunction centroidRingStart() {\n centroidStream.point = centroidRingPointFirst;\n}\n\nfunction centroidRingEnd() {\n centroidRingPoint(lambda00, phi00);\n centroidStream.point = centroidPoint;\n}\n\nfunction centroidRingPointFirst(lambda, phi) {\n lambda00 = lambda, phi00 = phi;\n lambda *= radians, phi *= radians;\n centroidStream.point = centroidRingPoint;\n var cosPhi = cos(phi);\n x0 = cosPhi * cos(lambda);\n y0 = cosPhi * sin(lambda);\n z0 = sin(phi);\n centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidRingPoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n var cosPhi = cos(phi),\n x = cosPhi * cos(lambda),\n y = cosPhi * sin(lambda),\n z = sin(phi),\n cx = y0 * z - z0 * y,\n cy = z0 * x - x0 * z,\n cz = x0 * y - y0 * x,\n m = sqrt(cx * cx + cy * cy + cz * cz),\n w = asin(m), // line weight = angle\n v = m && -w / m; // area weight multiplier\n X2 += v * cx;\n Y2 += v * cy;\n Z2 += v * cz;\n W1 += w;\n X1 += w * (x0 + (x0 = x));\n Y1 += w * (y0 + (y0 = y));\n Z1 += w * (z0 + (z0 = z));\n centroidPointCartesian(x0, y0, z0);\n}\n\nexport default function(object) {\n W0 = W1 =\n X0 = Y0 = Z0 =\n X1 = Y1 = Z1 =\n X2 = Y2 = Z2 = 0;\n stream(object, centroidStream);\n\n var x = X2,\n y = Y2,\n z = Z2,\n m = x * x + y * y + z * z;\n\n // If the area-weighted ccentroid is undefined, fall back to length-weighted ccentroid.\n if (m < epsilon2) {\n x = X1, y = Y1, z = Z1;\n // If the feature has zero length, fall back to arithmetic mean of point vectors.\n if (W1 < epsilon) x = X0, y = Y0, z = Z0;\n m = x * x + y * y + z * z;\n // If the feature still has an undefined ccentroid, then return.\n if (m < epsilon2) return [NaN, NaN];\n }\n\n return [atan2(y, x) * degrees, asin(z / sqrt(m)) * degrees];\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(a, b) {\n\n function compose(x, y) {\n return x = a(x, y), b(x[0], x[1]);\n }\n\n if (a.invert && b.invert) compose.invert = function(x, y) {\n return x = b.invert(x, y), x && a.invert(x[0], x[1]);\n };\n\n return compose;\n}\n","import compose from \"./compose.js\";\nimport {abs, asin, atan2, cos, degrees, pi, radians, sin, tau} from \"./math.js\";\n\nfunction rotationIdentity(lambda, phi) {\n return [abs(lambda) > pi ? lambda + Math.round(-lambda / tau) * tau : lambda, phi];\n}\n\nrotationIdentity.invert = rotationIdentity;\n\nexport function rotateRadians(deltaLambda, deltaPhi, deltaGamma) {\n return (deltaLambda %= tau) ? (deltaPhi || deltaGamma ? compose(rotationLambda(deltaLambda), rotationPhiGamma(deltaPhi, deltaGamma))\n : rotationLambda(deltaLambda))\n : (deltaPhi || deltaGamma ? rotationPhiGamma(deltaPhi, deltaGamma)\n : rotationIdentity);\n}\n\nfunction forwardRotationLambda(deltaLambda) {\n return function(lambda, phi) {\n return lambda += deltaLambda, [lambda > pi ? lambda - tau : lambda < -pi ? lambda + tau : lambda, phi];\n };\n}\n\nfunction rotationLambda(deltaLambda) {\n var rotation = forwardRotationLambda(deltaLambda);\n rotation.invert = forwardRotationLambda(-deltaLambda);\n return rotation;\n}\n\nfunction rotationPhiGamma(deltaPhi, deltaGamma) {\n var cosDeltaPhi = cos(deltaPhi),\n sinDeltaPhi = sin(deltaPhi),\n cosDeltaGamma = cos(deltaGamma),\n sinDeltaGamma = sin(deltaGamma);\n\n function rotation(lambda, phi) {\n var cosPhi = cos(phi),\n x = cos(lambda) * cosPhi,\n y = sin(lambda) * cosPhi,\n z = sin(phi),\n k = z * cosDeltaPhi + x * sinDeltaPhi;\n return [\n atan2(y * cosDeltaGamma - k * sinDeltaGamma, x * cosDeltaPhi - z * sinDeltaPhi),\n asin(k * cosDeltaGamma + y * sinDeltaGamma)\n ];\n }\n\n rotation.invert = function(lambda, phi) {\n var cosPhi = cos(phi),\n x = cos(lambda) * cosPhi,\n y = sin(lambda) * cosPhi,\n z = sin(phi),\n k = z * cosDeltaGamma - y * sinDeltaGamma;\n return [\n atan2(y * cosDeltaGamma + z * sinDeltaGamma, x * cosDeltaPhi + k * sinDeltaPhi),\n asin(k * cosDeltaPhi - x * sinDeltaPhi)\n ];\n };\n\n return rotation;\n}\n\nexport default function(rotate) {\n rotate = rotateRadians(rotate[0] * radians, rotate[1] * radians, rotate.length > 2 ? rotate[2] * radians : 0);\n\n function forward(coordinates) {\n coordinates = rotate(coordinates[0] * radians, coordinates[1] * radians);\n return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates;\n }\n\n forward.invert = function(coordinates) {\n coordinates = rotate.invert(coordinates[0] * radians, coordinates[1] * radians);\n return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates;\n };\n\n return forward;\n}\n","import {cartesian, cartesianNormalizeInPlace, spherical} from \"./cartesian.js\";\nimport constant from \"./constant.js\";\nimport {acos, cos, degrees, epsilon, radians, sin, tau} from \"./math.js\";\nimport {rotateRadians} from \"./rotation.js\";\n\n// Generates a circle centered at [0°, 0°], with a given radius and precision.\nexport function circleStream(stream, radius, delta, direction, t0, t1) {\n if (!delta) return;\n var cosRadius = cos(radius),\n sinRadius = sin(radius),\n step = direction * delta;\n if (t0 == null) {\n t0 = radius + direction * tau;\n t1 = radius - step / 2;\n } else {\n t0 = circleRadius(cosRadius, t0);\n t1 = circleRadius(cosRadius, t1);\n if (direction > 0 ? t0 < t1 : t0 > t1) t0 += direction * tau;\n }\n for (var point, t = t0; direction > 0 ? t > t1 : t < t1; t -= step) {\n point = spherical([cosRadius, -sinRadius * cos(t), -sinRadius * sin(t)]);\n stream.point(point[0], point[1]);\n }\n}\n\n// Returns the signed angle of a cartesian point relative to [cosRadius, 0, 0].\nfunction circleRadius(cosRadius, point) {\n point = cartesian(point), point[0] -= cosRadius;\n cartesianNormalizeInPlace(point);\n var radius = acos(-point[1]);\n return ((-point[2] < 0 ? -radius : radius) + tau - epsilon) % tau;\n}\n\nexport default function() {\n var center = constant([0, 0]),\n radius = constant(90),\n precision = constant(6),\n ring,\n rotate,\n stream = {point: point};\n\n function point(x, y) {\n ring.push(x = rotate(x, y));\n x[0] *= degrees, x[1] *= degrees;\n }\n\n function circle() {\n var c = center.apply(this, arguments),\n r = radius.apply(this, arguments) * radians,\n p = precision.apply(this, arguments) * radians;\n ring = [];\n rotate = rotateRadians(-c[0] * radians, -c[1] * radians, 0).invert;\n circleStream(stream, r, p, 1);\n c = {type: \"Polygon\", coordinates: [ring]};\n ring = rotate = null;\n return c;\n }\n\n circle.center = function(_) {\n return arguments.length ? (center = typeof _ === \"function\" ? _ : constant([+_[0], +_[1]]), circle) : center;\n };\n\n circle.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), circle) : radius;\n };\n\n circle.precision = function(_) {\n return arguments.length ? (precision = typeof _ === \"function\" ? _ : constant(+_), circle) : precision;\n };\n\n return circle;\n}\n","import noop from \"../noop.js\";\n\nexport default function() {\n var lines = [],\n line;\n return {\n point: function(x, y) {\n line.push([x, y]);\n },\n lineStart: function() {\n lines.push(line = []);\n },\n lineEnd: noop,\n rejoin: function() {\n if (lines.length > 1) lines.push(lines.pop().concat(lines.shift()));\n },\n result: function() {\n var result = lines;\n lines = [];\n line = null;\n return result;\n }\n };\n}\n","import {abs, epsilon} from \"./math.js\";\n\nexport default function(a, b) {\n return abs(a[0] - b[0]) < epsilon && abs(a[1] - b[1]) < epsilon;\n}\n","import pointEqual from \"../pointEqual.js\";\n\nfunction Intersection(point, points, other, entry) {\n this.x = point;\n this.z = points;\n this.o = other; // another intersection\n this.e = entry; // is an entry?\n this.v = false; // visited\n this.n = this.p = null; // next & previous\n}\n\n// A generalized polygon clipping algorithm: given a polygon that has been cut\n// into its visible line segments, and rejoins the segments by interpolating\n// along the clip edge.\nexport default function(segments, compareIntersection, startInside, interpolate, stream) {\n var subject = [],\n clip = [],\n i,\n n;\n\n segments.forEach(function(segment) {\n if ((n = segment.length - 1) <= 0) return;\n var n, p0 = segment[0], p1 = segment[n], x;\n\n // If the first and last points of a segment are coincident, then treat as a\n // closed ring. TODO if all rings are closed, then the winding order of the\n // exterior ring should be checked.\n if (pointEqual(p0, p1)) {\n stream.lineStart();\n for (i = 0; i < n; ++i) stream.point((p0 = segment[i])[0], p0[1]);\n stream.lineEnd();\n return;\n }\n\n subject.push(x = new Intersection(p0, segment, null, true));\n clip.push(x.o = new Intersection(p0, null, x, false));\n subject.push(x = new Intersection(p1, segment, null, false));\n clip.push(x.o = new Intersection(p1, null, x, true));\n });\n\n if (!subject.length) return;\n\n clip.sort(compareIntersection);\n link(subject);\n link(clip);\n\n for (i = 0, n = clip.length; i < n; ++i) {\n clip[i].e = startInside = !startInside;\n }\n\n var start = subject[0],\n points,\n point;\n\n while (1) {\n // Find first unvisited intersection.\n var current = start,\n isSubject = true;\n while (current.v) if ((current = current.n) === start) return;\n points = current.z;\n stream.lineStart();\n do {\n current.v = current.o.v = true;\n if (current.e) {\n if (isSubject) {\n for (i = 0, n = points.length; i < n; ++i) stream.point((point = points[i])[0], point[1]);\n } else {\n interpolate(current.x, current.n.x, 1, stream);\n }\n current = current.n;\n } else {\n if (isSubject) {\n points = current.p.z;\n for (i = points.length - 1; i >= 0; --i) stream.point((point = points[i])[0], point[1]);\n } else {\n interpolate(current.x, current.p.x, -1, stream);\n }\n current = current.p;\n }\n current = current.o;\n points = current.z;\n isSubject = !isSubject;\n } while (!current.v);\n stream.lineEnd();\n }\n}\n\nfunction link(array) {\n if (!(n = array.length)) return;\n var n,\n i = 0,\n a = array[0],\n b;\n while (++i < n) {\n a.n = b = array[i];\n b.p = a;\n a = b;\n }\n a.n = b = array[0];\n b.p = a;\n}\n","import adder from \"./adder.js\";\nimport {cartesian, cartesianCross, cartesianNormalizeInPlace} from \"./cartesian.js\";\nimport {abs, asin, atan2, cos, epsilon, halfPi, pi, quarterPi, sign, sin, tau} from \"./math.js\";\n\nvar sum = adder();\n\nfunction longitude(point) {\n if (abs(point[0]) <= pi)\n return point[0];\n else\n return sign(point[0]) * ((abs(point[0]) + pi) % tau - pi);\n}\n\nexport default function(polygon, point) {\n var lambda = longitude(point),\n phi = point[1],\n sinPhi = sin(phi),\n normal = [sin(lambda), -cos(lambda), 0],\n angle = 0,\n winding = 0;\n\n sum.reset();\n\n if (sinPhi === 1) phi = halfPi + epsilon;\n else if (sinPhi === -1) phi = -halfPi - epsilon;\n\n for (var i = 0, n = polygon.length; i < n; ++i) {\n if (!(m = (ring = polygon[i]).length)) continue;\n var ring,\n m,\n point0 = ring[m - 1],\n lambda0 = longitude(point0),\n phi0 = point0[1] / 2 + quarterPi,\n sinPhi0 = sin(phi0),\n cosPhi0 = cos(phi0);\n\n for (var j = 0; j < m; ++j, lambda0 = lambda1, sinPhi0 = sinPhi1, cosPhi0 = cosPhi1, point0 = point1) {\n var point1 = ring[j],\n lambda1 = longitude(point1),\n phi1 = point1[1] / 2 + quarterPi,\n sinPhi1 = sin(phi1),\n cosPhi1 = cos(phi1),\n delta = lambda1 - lambda0,\n sign = delta >= 0 ? 1 : -1,\n absDelta = sign * delta,\n antimeridian = absDelta > pi,\n k = sinPhi0 * sinPhi1;\n\n sum.add(atan2(k * sign * sin(absDelta), cosPhi0 * cosPhi1 + k * cos(absDelta)));\n angle += antimeridian ? delta + sign * tau : delta;\n\n // Are the longitudes either side of the point’s meridian (lambda),\n // and are the latitudes smaller than the parallel (phi)?\n if (antimeridian ^ lambda0 >= lambda ^ lambda1 >= lambda) {\n var arc = cartesianCross(cartesian(point0), cartesian(point1));\n cartesianNormalizeInPlace(arc);\n var intersection = cartesianCross(normal, arc);\n cartesianNormalizeInPlace(intersection);\n var phiArc = (antimeridian ^ delta >= 0 ? -1 : 1) * asin(intersection[2]);\n if (phi > phiArc || phi === phiArc && (arc[0] || arc[1])) {\n winding += antimeridian ^ delta >= 0 ? 1 : -1;\n }\n }\n }\n }\n\n // First, determine whether the South pole is inside or outside:\n //\n // It is inside if:\n // * the polygon winds around it in a clockwise direction.\n // * the polygon does not (cumulatively) wind around it, but has a negative\n // (counter-clockwise) area.\n //\n // Second, count the (signed) number of times a segment crosses a lambda\n // from the point to the South pole. If it is zero, then the point is the\n // same side as the South pole.\n\n return (angle < -epsilon || angle < epsilon && sum < -epsilon) ^ (winding & 1);\n}\n","import clipBuffer from \"./buffer.js\";\nimport clipRejoin from \"./rejoin.js\";\nimport {epsilon, halfPi} from \"../math.js\";\nimport polygonContains from \"../polygonContains.js\";\nimport {merge} from \"d3-array\";\n\nexport default function(pointVisible, clipLine, interpolate, start) {\n return function(sink) {\n var line = clipLine(sink),\n ringBuffer = clipBuffer(),\n ringSink = clipLine(ringBuffer),\n polygonStarted = false,\n polygon,\n segments,\n ring;\n\n var clip = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function() {\n clip.point = pointRing;\n clip.lineStart = ringStart;\n clip.lineEnd = ringEnd;\n segments = [];\n polygon = [];\n },\n polygonEnd: function() {\n clip.point = point;\n clip.lineStart = lineStart;\n clip.lineEnd = lineEnd;\n segments = merge(segments);\n var startInside = polygonContains(polygon, start);\n if (segments.length) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n clipRejoin(segments, compareIntersection, startInside, interpolate, sink);\n } else if (startInside) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n sink.lineStart();\n interpolate(null, null, 1, sink);\n sink.lineEnd();\n }\n if (polygonStarted) sink.polygonEnd(), polygonStarted = false;\n segments = polygon = null;\n },\n sphere: function() {\n sink.polygonStart();\n sink.lineStart();\n interpolate(null, null, 1, sink);\n sink.lineEnd();\n sink.polygonEnd();\n }\n };\n\n function point(lambda, phi) {\n if (pointVisible(lambda, phi)) sink.point(lambda, phi);\n }\n\n function pointLine(lambda, phi) {\n line.point(lambda, phi);\n }\n\n function lineStart() {\n clip.point = pointLine;\n line.lineStart();\n }\n\n function lineEnd() {\n clip.point = point;\n line.lineEnd();\n }\n\n function pointRing(lambda, phi) {\n ring.push([lambda, phi]);\n ringSink.point(lambda, phi);\n }\n\n function ringStart() {\n ringSink.lineStart();\n ring = [];\n }\n\n function ringEnd() {\n pointRing(ring[0][0], ring[0][1]);\n ringSink.lineEnd();\n\n var clean = ringSink.clean(),\n ringSegments = ringBuffer.result(),\n i, n = ringSegments.length, m,\n segment,\n point;\n\n ring.pop();\n polygon.push(ring);\n ring = null;\n\n if (!n) return;\n\n // No intersections.\n if (clean & 1) {\n segment = ringSegments[0];\n if ((m = segment.length - 1) > 0) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n sink.lineStart();\n for (i = 0; i < m; ++i) sink.point((point = segment[i])[0], point[1]);\n sink.lineEnd();\n }\n return;\n }\n\n // Rejoin connected segments.\n // TODO reuse ringBuffer.rejoin()?\n if (n > 1 && clean & 2) ringSegments.push(ringSegments.pop().concat(ringSegments.shift()));\n\n segments.push(ringSegments.filter(validSegment));\n }\n\n return clip;\n };\n}\n\nfunction validSegment(segment) {\n return segment.length > 1;\n}\n\n// Intersections are sorted along the clip edge. For both antimeridian cutting\n// and circle clipping, the same comparison is used.\nfunction compareIntersection(a, b) {\n return ((a = a.x)[0] < 0 ? a[1] - halfPi - epsilon : halfPi - a[1])\n - ((b = b.x)[0] < 0 ? b[1] - halfPi - epsilon : halfPi - b[1]);\n}\n","import clip from \"./index.js\";\nimport {abs, atan, cos, epsilon, halfPi, pi, sin} from \"../math.js\";\n\nexport default clip(\n function() { return true; },\n clipAntimeridianLine,\n clipAntimeridianInterpolate,\n [-pi, -halfPi]\n);\n\n// Takes a line and cuts into visible segments. Return values: 0 - there were\n// intersections or the line was empty; 1 - no intersections; 2 - there were\n// intersections, and the first and last segments should be rejoined.\nfunction clipAntimeridianLine(stream) {\n var lambda0 = NaN,\n phi0 = NaN,\n sign0 = NaN,\n clean; // no intersections\n\n return {\n lineStart: function() {\n stream.lineStart();\n clean = 1;\n },\n point: function(lambda1, phi1) {\n var sign1 = lambda1 > 0 ? pi : -pi,\n delta = abs(lambda1 - lambda0);\n if (abs(delta - pi) < epsilon) { // line crosses a pole\n stream.point(lambda0, phi0 = (phi0 + phi1) / 2 > 0 ? halfPi : -halfPi);\n stream.point(sign0, phi0);\n stream.lineEnd();\n stream.lineStart();\n stream.point(sign1, phi0);\n stream.point(lambda1, phi0);\n clean = 0;\n } else if (sign0 !== sign1 && delta >= pi) { // line crosses antimeridian\n if (abs(lambda0 - sign0) < epsilon) lambda0 -= sign0 * epsilon; // handle degeneracies\n if (abs(lambda1 - sign1) < epsilon) lambda1 -= sign1 * epsilon;\n phi0 = clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1);\n stream.point(sign0, phi0);\n stream.lineEnd();\n stream.lineStart();\n stream.point(sign1, phi0);\n clean = 0;\n }\n stream.point(lambda0 = lambda1, phi0 = phi1);\n sign0 = sign1;\n },\n lineEnd: function() {\n stream.lineEnd();\n lambda0 = phi0 = NaN;\n },\n clean: function() {\n return 2 - clean; // if intersections, rejoin first and last segments\n }\n };\n}\n\nfunction clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1) {\n var cosPhi0,\n cosPhi1,\n sinLambda0Lambda1 = sin(lambda0 - lambda1);\n return abs(sinLambda0Lambda1) > epsilon\n ? atan((sin(phi0) * (cosPhi1 = cos(phi1)) * sin(lambda1)\n - sin(phi1) * (cosPhi0 = cos(phi0)) * sin(lambda0))\n / (cosPhi0 * cosPhi1 * sinLambda0Lambda1))\n : (phi0 + phi1) / 2;\n}\n\nfunction clipAntimeridianInterpolate(from, to, direction, stream) {\n var phi;\n if (from == null) {\n phi = direction * halfPi;\n stream.point(-pi, phi);\n stream.point(0, phi);\n stream.point(pi, phi);\n stream.point(pi, 0);\n stream.point(pi, -phi);\n stream.point(0, -phi);\n stream.point(-pi, -phi);\n stream.point(-pi, 0);\n stream.point(-pi, phi);\n } else if (abs(from[0] - to[0]) > epsilon) {\n var lambda = from[0] < to[0] ? pi : -pi;\n phi = direction * lambda / 2;\n stream.point(-lambda, phi);\n stream.point(0, phi);\n stream.point(lambda, phi);\n } else {\n stream.point(to[0], to[1]);\n }\n}\n","import {cartesian, cartesianAddInPlace, cartesianCross, cartesianDot, cartesianScale, spherical} from \"../cartesian.js\";\nimport {circleStream} from \"../circle.js\";\nimport {abs, cos, epsilon, pi, radians, sqrt} from \"../math.js\";\nimport pointEqual from \"../pointEqual.js\";\nimport clip from \"./index.js\";\n\nexport default function(radius) {\n var cr = cos(radius),\n delta = 6 * radians,\n smallRadius = cr > 0,\n notHemisphere = abs(cr) > epsilon; // TODO optimise for this common case\n\n function interpolate(from, to, direction, stream) {\n circleStream(stream, radius, delta, direction, from, to);\n }\n\n function visible(lambda, phi) {\n return cos(lambda) * cos(phi) > cr;\n }\n\n // Takes a line and cuts into visible segments. Return values used for polygon\n // clipping: 0 - there were intersections or the line was empty; 1 - no\n // intersections 2 - there were intersections, and the first and last segments\n // should be rejoined.\n function clipLine(stream) {\n var point0, // previous point\n c0, // code for previous point\n v0, // visibility of previous point\n v00, // visibility of first point\n clean; // no intersections\n return {\n lineStart: function() {\n v00 = v0 = false;\n clean = 1;\n },\n point: function(lambda, phi) {\n var point1 = [lambda, phi],\n point2,\n v = visible(lambda, phi),\n c = smallRadius\n ? v ? 0 : code(lambda, phi)\n : v ? code(lambda + (lambda < 0 ? pi : -pi), phi) : 0;\n if (!point0 && (v00 = v0 = v)) stream.lineStart();\n // Handle degeneracies.\n // TODO ignore if not clipping polygons.\n if (v !== v0) {\n point2 = intersect(point0, point1);\n if (!point2 || pointEqual(point0, point2) || pointEqual(point1, point2)) {\n point1[0] += epsilon;\n point1[1] += epsilon;\n v = visible(point1[0], point1[1]);\n }\n }\n if (v !== v0) {\n clean = 0;\n if (v) {\n // outside going in\n stream.lineStart();\n point2 = intersect(point1, point0);\n stream.point(point2[0], point2[1]);\n } else {\n // inside going out\n point2 = intersect(point0, point1);\n stream.point(point2[0], point2[1]);\n stream.lineEnd();\n }\n point0 = point2;\n } else if (notHemisphere && point0 && smallRadius ^ v) {\n var t;\n // If the codes for two points are different, or are both zero,\n // and there this segment intersects with the small circle.\n if (!(c & c0) && (t = intersect(point1, point0, true))) {\n clean = 0;\n if (smallRadius) {\n stream.lineStart();\n stream.point(t[0][0], t[0][1]);\n stream.point(t[1][0], t[1][1]);\n stream.lineEnd();\n } else {\n stream.point(t[1][0], t[1][1]);\n stream.lineEnd();\n stream.lineStart();\n stream.point(t[0][0], t[0][1]);\n }\n }\n }\n if (v && (!point0 || !pointEqual(point0, point1))) {\n stream.point(point1[0], point1[1]);\n }\n point0 = point1, v0 = v, c0 = c;\n },\n lineEnd: function() {\n if (v0) stream.lineEnd();\n point0 = null;\n },\n // Rejoin first and last segments if there were intersections and the first\n // and last points were visible.\n clean: function() {\n return clean | ((v00 && v0) << 1);\n }\n };\n }\n\n // Intersects the great circle between a and b with the clip circle.\n function intersect(a, b, two) {\n var pa = cartesian(a),\n pb = cartesian(b);\n\n // We have two planes, n1.p = d1 and n2.p = d2.\n // Find intersection line p(t) = c1 n1 + c2 n2 + t (n1 ⨯ n2).\n var n1 = [1, 0, 0], // normal\n n2 = cartesianCross(pa, pb),\n n2n2 = cartesianDot(n2, n2),\n n1n2 = n2[0], // cartesianDot(n1, n2),\n determinant = n2n2 - n1n2 * n1n2;\n\n // Two polar points.\n if (!determinant) return !two && a;\n\n var c1 = cr * n2n2 / determinant,\n c2 = -cr * n1n2 / determinant,\n n1xn2 = cartesianCross(n1, n2),\n A = cartesianScale(n1, c1),\n B = cartesianScale(n2, c2);\n cartesianAddInPlace(A, B);\n\n // Solve |p(t)|^2 = 1.\n var u = n1xn2,\n w = cartesianDot(A, u),\n uu = cartesianDot(u, u),\n t2 = w * w - uu * (cartesianDot(A, A) - 1);\n\n if (t2 < 0) return;\n\n var t = sqrt(t2),\n q = cartesianScale(u, (-w - t) / uu);\n cartesianAddInPlace(q, A);\n q = spherical(q);\n\n if (!two) return q;\n\n // Two intersection points.\n var lambda0 = a[0],\n lambda1 = b[0],\n phi0 = a[1],\n phi1 = b[1],\n z;\n\n if (lambda1 < lambda0) z = lambda0, lambda0 = lambda1, lambda1 = z;\n\n var delta = lambda1 - lambda0,\n polar = abs(delta - pi) < epsilon,\n meridian = polar || delta < epsilon;\n\n if (!polar && phi1 < phi0) z = phi0, phi0 = phi1, phi1 = z;\n\n // Check that the first point is between a and b.\n if (meridian\n ? polar\n ? phi0 + phi1 > 0 ^ q[1] < (abs(q[0] - lambda0) < epsilon ? phi0 : phi1)\n : phi0 <= q[1] && q[1] <= phi1\n : delta > pi ^ (lambda0 <= q[0] && q[0] <= lambda1)) {\n var q1 = cartesianScale(u, (-w + t) / uu);\n cartesianAddInPlace(q1, A);\n return [q, spherical(q1)];\n }\n }\n\n // Generates a 4-bit vector representing the location of a point relative to\n // the small circle's bounding box.\n function code(lambda, phi) {\n var r = smallRadius ? radius : pi - radius,\n code = 0;\n if (lambda < -r) code |= 1; // left\n else if (lambda > r) code |= 2; // right\n if (phi < -r) code |= 4; // below\n else if (phi > r) code |= 8; // above\n return code;\n }\n\n return clip(visible, clipLine, interpolate, smallRadius ? [0, -radius] : [-pi, radius - pi]);\n}\n","import {abs, epsilon} from \"../math.js\";\nimport clipBuffer from \"./buffer.js\";\nimport clipLine from \"./line.js\";\nimport clipRejoin from \"./rejoin.js\";\nimport {merge} from \"d3-array\";\n\nvar clipMax = 1e9, clipMin = -clipMax;\n\n// TODO Use d3-polygon’s polygonContains here for the ring check?\n// TODO Eliminate duplicate buffering in clipBuffer and polygon.push?\n\nexport default function clipRectangle(x0, y0, x1, y1) {\n\n function visible(x, y) {\n return x0 <= x && x <= x1 && y0 <= y && y <= y1;\n }\n\n function interpolate(from, to, direction, stream) {\n var a = 0, a1 = 0;\n if (from == null\n || (a = corner(from, direction)) !== (a1 = corner(to, direction))\n || comparePoint(from, to) < 0 ^ direction > 0) {\n do stream.point(a === 0 || a === 3 ? x0 : x1, a > 1 ? y1 : y0);\n while ((a = (a + direction + 4) % 4) !== a1);\n } else {\n stream.point(to[0], to[1]);\n }\n }\n\n function corner(p, direction) {\n return abs(p[0] - x0) < epsilon ? direction > 0 ? 0 : 3\n : abs(p[0] - x1) < epsilon ? direction > 0 ? 2 : 1\n : abs(p[1] - y0) < epsilon ? direction > 0 ? 1 : 0\n : direction > 0 ? 3 : 2; // abs(p[1] - y1) < epsilon\n }\n\n function compareIntersection(a, b) {\n return comparePoint(a.x, b.x);\n }\n\n function comparePoint(a, b) {\n var ca = corner(a, 1),\n cb = corner(b, 1);\n return ca !== cb ? ca - cb\n : ca === 0 ? b[1] - a[1]\n : ca === 1 ? a[0] - b[0]\n : ca === 2 ? a[1] - b[1]\n : b[0] - a[0];\n }\n\n return function(stream) {\n var activeStream = stream,\n bufferStream = clipBuffer(),\n segments,\n polygon,\n ring,\n x__, y__, v__, // first point\n x_, y_, v_, // previous point\n first,\n clean;\n\n var clipStream = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: polygonStart,\n polygonEnd: polygonEnd\n };\n\n function point(x, y) {\n if (visible(x, y)) activeStream.point(x, y);\n }\n\n function polygonInside() {\n var winding = 0;\n\n for (var i = 0, n = polygon.length; i < n; ++i) {\n for (var ring = polygon[i], j = 1, m = ring.length, point = ring[0], a0, a1, b0 = point[0], b1 = point[1]; j < m; ++j) {\n a0 = b0, a1 = b1, point = ring[j], b0 = point[0], b1 = point[1];\n if (a1 <= y1) { if (b1 > y1 && (b0 - a0) * (y1 - a1) > (b1 - a1) * (x0 - a0)) ++winding; }\n else { if (b1 <= y1 && (b0 - a0) * (y1 - a1) < (b1 - a1) * (x0 - a0)) --winding; }\n }\n }\n\n return winding;\n }\n\n // Buffer geometry within a polygon and then clip it en masse.\n function polygonStart() {\n activeStream = bufferStream, segments = [], polygon = [], clean = true;\n }\n\n function polygonEnd() {\n var startInside = polygonInside(),\n cleanInside = clean && startInside,\n visible = (segments = merge(segments)).length;\n if (cleanInside || visible) {\n stream.polygonStart();\n if (cleanInside) {\n stream.lineStart();\n interpolate(null, null, 1, stream);\n stream.lineEnd();\n }\n if (visible) {\n clipRejoin(segments, compareIntersection, startInside, interpolate, stream);\n }\n stream.polygonEnd();\n }\n activeStream = stream, segments = polygon = ring = null;\n }\n\n function lineStart() {\n clipStream.point = linePoint;\n if (polygon) polygon.push(ring = []);\n first = true;\n v_ = false;\n x_ = y_ = NaN;\n }\n\n // TODO rather than special-case polygons, simply handle them separately.\n // Ideally, coincident intersection points should be jittered to avoid\n // clipping issues.\n function lineEnd() {\n if (segments) {\n linePoint(x__, y__);\n if (v__ && v_) bufferStream.rejoin();\n segments.push(bufferStream.result());\n }\n clipStream.point = point;\n if (v_) activeStream.lineEnd();\n }\n\n function linePoint(x, y) {\n var v = visible(x, y);\n if (polygon) ring.push([x, y]);\n if (first) {\n x__ = x, y__ = y, v__ = v;\n first = false;\n if (v) {\n activeStream.lineStart();\n activeStream.point(x, y);\n }\n } else {\n if (v && v_) activeStream.point(x, y);\n else {\n var a = [x_ = Math.max(clipMin, Math.min(clipMax, x_)), y_ = Math.max(clipMin, Math.min(clipMax, y_))],\n b = [x = Math.max(clipMin, Math.min(clipMax, x)), y = Math.max(clipMin, Math.min(clipMax, y))];\n if (clipLine(a, b, x0, y0, x1, y1)) {\n if (!v_) {\n activeStream.lineStart();\n activeStream.point(a[0], a[1]);\n }\n activeStream.point(b[0], b[1]);\n if (!v) activeStream.lineEnd();\n clean = false;\n } else if (v) {\n activeStream.lineStart();\n activeStream.point(x, y);\n clean = false;\n }\n }\n }\n x_ = x, y_ = y, v_ = v;\n }\n\n return clipStream;\n };\n}\n","export default function(a, b, x0, y0, x1, y1) {\n var ax = a[0],\n ay = a[1],\n bx = b[0],\n by = b[1],\n t0 = 0,\n t1 = 1,\n dx = bx - ax,\n dy = by - ay,\n r;\n\n r = x0 - ax;\n if (!dx && r > 0) return;\n r /= dx;\n if (dx < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dx > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = x1 - ax;\n if (!dx && r < 0) return;\n r /= dx;\n if (dx < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dx > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n r = y0 - ay;\n if (!dy && r > 0) return;\n r /= dy;\n if (dy < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dy > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = y1 - ay;\n if (!dy && r < 0) return;\n r /= dy;\n if (dy < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dy > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n if (t0 > 0) a[0] = ax + t0 * dx, a[1] = ay + t0 * dy;\n if (t1 < 1) b[0] = ax + t1 * dx, b[1] = ay + t1 * dy;\n return true;\n}\n","import clipRectangle from \"./rectangle.js\";\n\nexport default function() {\n var x0 = 0,\n y0 = 0,\n x1 = 960,\n y1 = 500,\n cache,\n cacheStream,\n clip;\n\n return clip = {\n stream: function(stream) {\n return cache && cacheStream === stream ? cache : cache = clipRectangle(x0, y0, x1, y1)(cacheStream = stream);\n },\n extent: function(_) {\n return arguments.length ? (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1], cache = cacheStream = null, clip) : [[x0, y0], [x1, y1]];\n }\n };\n}\n","import adder from \"./adder.js\";\nimport {abs, atan2, cos, radians, sin, sqrt} from \"./math.js\";\nimport noop from \"./noop.js\";\nimport stream from \"./stream.js\";\n\nvar lengthSum = adder(),\n lambda0,\n sinPhi0,\n cosPhi0;\n\nvar lengthStream = {\n sphere: noop,\n point: noop,\n lineStart: lengthLineStart,\n lineEnd: noop,\n polygonStart: noop,\n polygonEnd: noop\n};\n\nfunction lengthLineStart() {\n lengthStream.point = lengthPointFirst;\n lengthStream.lineEnd = lengthLineEnd;\n}\n\nfunction lengthLineEnd() {\n lengthStream.point = lengthStream.lineEnd = noop;\n}\n\nfunction lengthPointFirst(lambda, phi) {\n lambda *= radians, phi *= radians;\n lambda0 = lambda, sinPhi0 = sin(phi), cosPhi0 = cos(phi);\n lengthStream.point = lengthPoint;\n}\n\nfunction lengthPoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n var sinPhi = sin(phi),\n cosPhi = cos(phi),\n delta = abs(lambda - lambda0),\n cosDelta = cos(delta),\n sinDelta = sin(delta),\n x = cosPhi * sinDelta,\n y = cosPhi0 * sinPhi - sinPhi0 * cosPhi * cosDelta,\n z = sinPhi0 * sinPhi + cosPhi0 * cosPhi * cosDelta;\n lengthSum.add(atan2(sqrt(x * x + y * y), z));\n lambda0 = lambda, sinPhi0 = sinPhi, cosPhi0 = cosPhi;\n}\n\nexport default function(object) {\n lengthSum.reset();\n stream(object, lengthStream);\n return +lengthSum;\n}\n","import length from \"./length.js\";\n\nvar coordinates = [null, null],\n object = {type: \"LineString\", coordinates: coordinates};\n\nexport default function(a, b) {\n coordinates[0] = a;\n coordinates[1] = b;\n return length(object);\n}\n","import {default as polygonContains} from \"./polygonContains.js\";\nimport {default as distance} from \"./distance.js\";\nimport {epsilon2, radians} from \"./math.js\";\n\nvar containsObjectType = {\n Feature: function(object, point) {\n return containsGeometry(object.geometry, point);\n },\n FeatureCollection: function(object, point) {\n var features = object.features, i = -1, n = features.length;\n while (++i < n) if (containsGeometry(features[i].geometry, point)) return true;\n return false;\n }\n};\n\nvar containsGeometryType = {\n Sphere: function() {\n return true;\n },\n Point: function(object, point) {\n return containsPoint(object.coordinates, point);\n },\n MultiPoint: function(object, point) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) if (containsPoint(coordinates[i], point)) return true;\n return false;\n },\n LineString: function(object, point) {\n return containsLine(object.coordinates, point);\n },\n MultiLineString: function(object, point) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) if (containsLine(coordinates[i], point)) return true;\n return false;\n },\n Polygon: function(object, point) {\n return containsPolygon(object.coordinates, point);\n },\n MultiPolygon: function(object, point) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) if (containsPolygon(coordinates[i], point)) return true;\n return false;\n },\n GeometryCollection: function(object, point) {\n var geometries = object.geometries, i = -1, n = geometries.length;\n while (++i < n) if (containsGeometry(geometries[i], point)) return true;\n return false;\n }\n};\n\nfunction containsGeometry(geometry, point) {\n return geometry && containsGeometryType.hasOwnProperty(geometry.type)\n ? containsGeometryType[geometry.type](geometry, point)\n : false;\n}\n\nfunction containsPoint(coordinates, point) {\n return distance(coordinates, point) === 0;\n}\n\nfunction containsLine(coordinates, point) {\n var ao, bo, ab;\n for (var i = 0, n = coordinates.length; i < n; i++) {\n bo = distance(coordinates[i], point);\n if (bo === 0) return true;\n if (i > 0) {\n ab = distance(coordinates[i], coordinates[i - 1]);\n if (\n ab > 0 &&\n ao <= ab &&\n bo <= ab &&\n (ao + bo - ab) * (1 - Math.pow((ao - bo) / ab, 2)) < epsilon2 * ab\n )\n return true;\n }\n ao = bo;\n }\n return false;\n}\n\nfunction containsPolygon(coordinates, point) {\n return !!polygonContains(coordinates.map(ringRadians), pointRadians(point));\n}\n\nfunction ringRadians(ring) {\n return ring = ring.map(pointRadians), ring.pop(), ring;\n}\n\nfunction pointRadians(point) {\n return [point[0] * radians, point[1] * radians];\n}\n\nexport default function(object, point) {\n return (object && containsObjectType.hasOwnProperty(object.type)\n ? containsObjectType[object.type]\n : containsGeometry)(object, point);\n}\n","import {range} from \"d3-array\";\nimport {abs, ceil, epsilon} from \"./math.js\";\n\nfunction graticuleX(y0, y1, dy) {\n var y = range(y0, y1 - epsilon, dy).concat(y1);\n return function(x) { return y.map(function(y) { return [x, y]; }); };\n}\n\nfunction graticuleY(x0, x1, dx) {\n var x = range(x0, x1 - epsilon, dx).concat(x1);\n return function(y) { return x.map(function(x) { return [x, y]; }); };\n}\n\nexport default function graticule() {\n var x1, x0, X1, X0,\n y1, y0, Y1, Y0,\n dx = 10, dy = dx, DX = 90, DY = 360,\n x, y, X, Y,\n precision = 2.5;\n\n function graticule() {\n return {type: \"MultiLineString\", coordinates: lines()};\n }\n\n function lines() {\n return range(ceil(X0 / DX) * DX, X1, DX).map(X)\n .concat(range(ceil(Y0 / DY) * DY, Y1, DY).map(Y))\n .concat(range(ceil(x0 / dx) * dx, x1, dx).filter(function(x) { return abs(x % DX) > epsilon; }).map(x))\n .concat(range(ceil(y0 / dy) * dy, y1, dy).filter(function(y) { return abs(y % DY) > epsilon; }).map(y));\n }\n\n graticule.lines = function() {\n return lines().map(function(coordinates) { return {type: \"LineString\", coordinates: coordinates}; });\n };\n\n graticule.outline = function() {\n return {\n type: \"Polygon\",\n coordinates: [\n X(X0).concat(\n Y(Y1).slice(1),\n X(X1).reverse().slice(1),\n Y(Y0).reverse().slice(1))\n ]\n };\n };\n\n graticule.extent = function(_) {\n if (!arguments.length) return graticule.extentMinor();\n return graticule.extentMajor(_).extentMinor(_);\n };\n\n graticule.extentMajor = function(_) {\n if (!arguments.length) return [[X0, Y0], [X1, Y1]];\n X0 = +_[0][0], X1 = +_[1][0];\n Y0 = +_[0][1], Y1 = +_[1][1];\n if (X0 > X1) _ = X0, X0 = X1, X1 = _;\n if (Y0 > Y1) _ = Y0, Y0 = Y1, Y1 = _;\n return graticule.precision(precision);\n };\n\n graticule.extentMinor = function(_) {\n if (!arguments.length) return [[x0, y0], [x1, y1]];\n x0 = +_[0][0], x1 = +_[1][0];\n y0 = +_[0][1], y1 = +_[1][1];\n if (x0 > x1) _ = x0, x0 = x1, x1 = _;\n if (y0 > y1) _ = y0, y0 = y1, y1 = _;\n return graticule.precision(precision);\n };\n\n graticule.step = function(_) {\n if (!arguments.length) return graticule.stepMinor();\n return graticule.stepMajor(_).stepMinor(_);\n };\n\n graticule.stepMajor = function(_) {\n if (!arguments.length) return [DX, DY];\n DX = +_[0], DY = +_[1];\n return graticule;\n };\n\n graticule.stepMinor = function(_) {\n if (!arguments.length) return [dx, dy];\n dx = +_[0], dy = +_[1];\n return graticule;\n };\n\n graticule.precision = function(_) {\n if (!arguments.length) return precision;\n precision = +_;\n x = graticuleX(y0, y1, 90);\n y = graticuleY(x0, x1, precision);\n X = graticuleX(Y0, Y1, 90);\n Y = graticuleY(X0, X1, precision);\n return graticule;\n };\n\n return graticule\n .extentMajor([[-180, -90 + epsilon], [180, 90 - epsilon]])\n .extentMinor([[-180, -80 - epsilon], [180, 80 + epsilon]]);\n}\n\nexport function graticule10() {\n return graticule()();\n}\n","import {asin, atan2, cos, degrees, haversin, radians, sin, sqrt} from \"./math.js\";\n\nexport default function(a, b) {\n var x0 = a[0] * radians,\n y0 = a[1] * radians,\n x1 = b[0] * radians,\n y1 = b[1] * radians,\n cy0 = cos(y0),\n sy0 = sin(y0),\n cy1 = cos(y1),\n sy1 = sin(y1),\n kx0 = cy0 * cos(x0),\n ky0 = cy0 * sin(x0),\n kx1 = cy1 * cos(x1),\n ky1 = cy1 * sin(x1),\n d = 2 * asin(sqrt(haversin(y1 - y0) + cy0 * cy1 * haversin(x1 - x0))),\n k = sin(d);\n\n var interpolate = d ? function(t) {\n var B = sin(t *= d) / k,\n A = sin(d - t) / k,\n x = A * kx0 + B * kx1,\n y = A * ky0 + B * ky1,\n z = A * sy0 + B * sy1;\n return [\n atan2(y, x) * degrees,\n atan2(z, sqrt(x * x + y * y)) * degrees\n ];\n } : function() {\n return [x0 * degrees, y0 * degrees];\n };\n\n interpolate.distance = d;\n\n return interpolate;\n}\n","import adder from \"../adder.js\";\nimport {abs} from \"../math.js\";\nimport noop from \"../noop.js\";\n\nvar areaSum = adder(),\n areaRingSum = adder(),\n x00,\n y00,\n x0,\n y0;\n\nvar areaStream = {\n point: noop,\n lineStart: noop,\n lineEnd: noop,\n polygonStart: function() {\n areaStream.lineStart = areaRingStart;\n areaStream.lineEnd = areaRingEnd;\n },\n polygonEnd: function() {\n areaStream.lineStart = areaStream.lineEnd = areaStream.point = noop;\n areaSum.add(abs(areaRingSum));\n areaRingSum.reset();\n },\n result: function() {\n var area = areaSum / 2;\n areaSum.reset();\n return area;\n }\n};\n\nfunction areaRingStart() {\n areaStream.point = areaPointFirst;\n}\n\nfunction areaPointFirst(x, y) {\n areaStream.point = areaPoint;\n x00 = x0 = x, y00 = y0 = y;\n}\n\nfunction areaPoint(x, y) {\n areaRingSum.add(y0 * x - x0 * y);\n x0 = x, y0 = y;\n}\n\nfunction areaRingEnd() {\n areaPoint(x00, y00);\n}\n\nexport default areaStream;\n","export default function(x) {\n return x;\n}\n","import noop from \"../noop.js\";\n\nvar x0 = Infinity,\n y0 = x0,\n x1 = -x0,\n y1 = x1;\n\nvar boundsStream = {\n point: boundsPoint,\n lineStart: noop,\n lineEnd: noop,\n polygonStart: noop,\n polygonEnd: noop,\n result: function() {\n var bounds = [[x0, y0], [x1, y1]];\n x1 = y1 = -(y0 = x0 = Infinity);\n return bounds;\n }\n};\n\nfunction boundsPoint(x, y) {\n if (x < x0) x0 = x;\n if (x > x1) x1 = x;\n if (y < y0) y0 = y;\n if (y > y1) y1 = y;\n}\n\nexport default boundsStream;\n","import {sqrt} from \"../math.js\";\n\n// TODO Enforce positive area for exterior, negative area for interior?\n\nvar X0 = 0,\n Y0 = 0,\n Z0 = 0,\n X1 = 0,\n Y1 = 0,\n Z1 = 0,\n X2 = 0,\n Y2 = 0,\n Z2 = 0,\n x00,\n y00,\n x0,\n y0;\n\nvar centroidStream = {\n point: centroidPoint,\n lineStart: centroidLineStart,\n lineEnd: centroidLineEnd,\n polygonStart: function() {\n centroidStream.lineStart = centroidRingStart;\n centroidStream.lineEnd = centroidRingEnd;\n },\n polygonEnd: function() {\n centroidStream.point = centroidPoint;\n centroidStream.lineStart = centroidLineStart;\n centroidStream.lineEnd = centroidLineEnd;\n },\n result: function() {\n var centroid = Z2 ? [X2 / Z2, Y2 / Z2]\n : Z1 ? [X1 / Z1, Y1 / Z1]\n : Z0 ? [X0 / Z0, Y0 / Z0]\n : [NaN, NaN];\n X0 = Y0 = Z0 =\n X1 = Y1 = Z1 =\n X2 = Y2 = Z2 = 0;\n return centroid;\n }\n};\n\nfunction centroidPoint(x, y) {\n X0 += x;\n Y0 += y;\n ++Z0;\n}\n\nfunction centroidLineStart() {\n centroidStream.point = centroidPointFirstLine;\n}\n\nfunction centroidPointFirstLine(x, y) {\n centroidStream.point = centroidPointLine;\n centroidPoint(x0 = x, y0 = y);\n}\n\nfunction centroidPointLine(x, y) {\n var dx = x - x0, dy = y - y0, z = sqrt(dx * dx + dy * dy);\n X1 += z * (x0 + x) / 2;\n Y1 += z * (y0 + y) / 2;\n Z1 += z;\n centroidPoint(x0 = x, y0 = y);\n}\n\nfunction centroidLineEnd() {\n centroidStream.point = centroidPoint;\n}\n\nfunction centroidRingStart() {\n centroidStream.point = centroidPointFirstRing;\n}\n\nfunction centroidRingEnd() {\n centroidPointRing(x00, y00);\n}\n\nfunction centroidPointFirstRing(x, y) {\n centroidStream.point = centroidPointRing;\n centroidPoint(x00 = x0 = x, y00 = y0 = y);\n}\n\nfunction centroidPointRing(x, y) {\n var dx = x - x0,\n dy = y - y0,\n z = sqrt(dx * dx + dy * dy);\n\n X1 += z * (x0 + x) / 2;\n Y1 += z * (y0 + y) / 2;\n Z1 += z;\n\n z = y0 * x - x0 * y;\n X2 += z * (x0 + x);\n Y2 += z * (y0 + y);\n Z2 += z * 3;\n centroidPoint(x0 = x, y0 = y);\n}\n\nexport default centroidStream;\n","import {tau} from \"../math.js\";\nimport noop from \"../noop.js\";\n\nexport default function PathContext(context) {\n this._context = context;\n}\n\nPathContext.prototype = {\n _radius: 4.5,\n pointRadius: function(_) {\n return this._radius = _, this;\n },\n polygonStart: function() {\n this._line = 0;\n },\n polygonEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line === 0) this._context.closePath();\n this._point = NaN;\n },\n point: function(x, y) {\n switch (this._point) {\n case 0: {\n this._context.moveTo(x, y);\n this._point = 1;\n break;\n }\n case 1: {\n this._context.lineTo(x, y);\n break;\n }\n default: {\n this._context.moveTo(x + this._radius, y);\n this._context.arc(x, y, this._radius, 0, tau);\n break;\n }\n }\n },\n result: noop\n};\n","import adder from \"../adder.js\";\nimport {sqrt} from \"../math.js\";\nimport noop from \"../noop.js\";\n\nvar lengthSum = adder(),\n lengthRing,\n x00,\n y00,\n x0,\n y0;\n\nvar lengthStream = {\n point: noop,\n lineStart: function() {\n lengthStream.point = lengthPointFirst;\n },\n lineEnd: function() {\n if (lengthRing) lengthPoint(x00, y00);\n lengthStream.point = noop;\n },\n polygonStart: function() {\n lengthRing = true;\n },\n polygonEnd: function() {\n lengthRing = null;\n },\n result: function() {\n var length = +lengthSum;\n lengthSum.reset();\n return length;\n }\n};\n\nfunction lengthPointFirst(x, y) {\n lengthStream.point = lengthPoint;\n x00 = x0 = x, y00 = y0 = y;\n}\n\nfunction lengthPoint(x, y) {\n x0 -= x, y0 -= y;\n lengthSum.add(sqrt(x0 * x0 + y0 * y0));\n x0 = x, y0 = y;\n}\n\nexport default lengthStream;\n","export default function PathString() {\n this._string = [];\n}\n\nPathString.prototype = {\n _radius: 4.5,\n _circle: circle(4.5),\n pointRadius: function(_) {\n if ((_ = +_) !== this._radius) this._radius = _, this._circle = null;\n return this;\n },\n polygonStart: function() {\n this._line = 0;\n },\n polygonEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line === 0) this._string.push(\"Z\");\n this._point = NaN;\n },\n point: function(x, y) {\n switch (this._point) {\n case 0: {\n this._string.push(\"M\", x, \",\", y);\n this._point = 1;\n break;\n }\n case 1: {\n this._string.push(\"L\", x, \",\", y);\n break;\n }\n default: {\n if (this._circle == null) this._circle = circle(this._radius);\n this._string.push(\"M\", x, \",\", y, this._circle);\n break;\n }\n }\n },\n result: function() {\n if (this._string.length) {\n var result = this._string.join(\"\");\n this._string = [];\n return result;\n } else {\n return null;\n }\n }\n};\n\nfunction circle(radius) {\n return \"m0,\" + radius\n + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + -2 * radius\n + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + 2 * radius\n + \"z\";\n}\n","import identity from \"../identity.js\";\nimport stream from \"../stream.js\";\nimport pathArea from \"./area.js\";\nimport pathBounds from \"./bounds.js\";\nimport pathCentroid from \"./centroid.js\";\nimport PathContext from \"./context.js\";\nimport pathMeasure from \"./measure.js\";\nimport PathString from \"./string.js\";\n\nexport default function(projection, context) {\n var pointRadius = 4.5,\n projectionStream,\n contextStream;\n\n function path(object) {\n if (object) {\n if (typeof pointRadius === \"function\") contextStream.pointRadius(+pointRadius.apply(this, arguments));\n stream(object, projectionStream(contextStream));\n }\n return contextStream.result();\n }\n\n path.area = function(object) {\n stream(object, projectionStream(pathArea));\n return pathArea.result();\n };\n\n path.measure = function(object) {\n stream(object, projectionStream(pathMeasure));\n return pathMeasure.result();\n };\n\n path.bounds = function(object) {\n stream(object, projectionStream(pathBounds));\n return pathBounds.result();\n };\n\n path.centroid = function(object) {\n stream(object, projectionStream(pathCentroid));\n return pathCentroid.result();\n };\n\n path.projection = function(_) {\n return arguments.length ? (projectionStream = _ == null ? (projection = null, identity) : (projection = _).stream, path) : projection;\n };\n\n path.context = function(_) {\n if (!arguments.length) return context;\n contextStream = _ == null ? (context = null, new PathString) : new PathContext(context = _);\n if (typeof pointRadius !== \"function\") contextStream.pointRadius(pointRadius);\n return path;\n };\n\n path.pointRadius = function(_) {\n if (!arguments.length) return pointRadius;\n pointRadius = typeof _ === \"function\" ? _ : (contextStream.pointRadius(+_), +_);\n return path;\n };\n\n return path.projection(projection).context(context);\n}\n","export default function(methods) {\n return {\n stream: transformer(methods)\n };\n}\n\nexport function transformer(methods) {\n return function(stream) {\n var s = new TransformStream;\n for (var key in methods) s[key] = methods[key];\n s.stream = stream;\n return s;\n };\n}\n\nfunction TransformStream() {}\n\nTransformStream.prototype = {\n constructor: TransformStream,\n point: function(x, y) { this.stream.point(x, y); },\n sphere: function() { this.stream.sphere(); },\n lineStart: function() { this.stream.lineStart(); },\n lineEnd: function() { this.stream.lineEnd(); },\n polygonStart: function() { this.stream.polygonStart(); },\n polygonEnd: function() { this.stream.polygonEnd(); }\n};\n","import {default as geoStream} from \"../stream.js\";\nimport boundsStream from \"../path/bounds.js\";\n\nfunction fit(projection, fitBounds, object) {\n var clip = projection.clipExtent && projection.clipExtent();\n projection.scale(150).translate([0, 0]);\n if (clip != null) projection.clipExtent(null);\n geoStream(object, projection.stream(boundsStream));\n fitBounds(boundsStream.result());\n if (clip != null) projection.clipExtent(clip);\n return projection;\n}\n\nexport function fitExtent(projection, extent, object) {\n return fit(projection, function(b) {\n var w = extent[1][0] - extent[0][0],\n h = extent[1][1] - extent[0][1],\n k = Math.min(w / (b[1][0] - b[0][0]), h / (b[1][1] - b[0][1])),\n x = +extent[0][0] + (w - k * (b[1][0] + b[0][0])) / 2,\n y = +extent[0][1] + (h - k * (b[1][1] + b[0][1])) / 2;\n projection.scale(150 * k).translate([x, y]);\n }, object);\n}\n\nexport function fitSize(projection, size, object) {\n return fitExtent(projection, [[0, 0], size], object);\n}\n\nexport function fitWidth(projection, width, object) {\n return fit(projection, function(b) {\n var w = +width,\n k = w / (b[1][0] - b[0][0]),\n x = (w - k * (b[1][0] + b[0][0])) / 2,\n y = -k * b[0][1];\n projection.scale(150 * k).translate([x, y]);\n }, object);\n}\n\nexport function fitHeight(projection, height, object) {\n return fit(projection, function(b) {\n var h = +height,\n k = h / (b[1][1] - b[0][1]),\n x = -k * b[0][0],\n y = (h - k * (b[1][1] + b[0][1])) / 2;\n projection.scale(150 * k).translate([x, y]);\n }, object);\n}\n","import {cartesian} from \"../cartesian.js\";\nimport {abs, asin, atan2, cos, epsilon, radians, sqrt} from \"../math.js\";\nimport {transformer} from \"../transform.js\";\n\nvar maxDepth = 16, // maximum depth of subdivision\n cosMinDistance = cos(30 * radians); // cos(minimum angular distance)\n\nexport default function(project, delta2) {\n return +delta2 ? resample(project, delta2) : resampleNone(project);\n}\n\nfunction resampleNone(project) {\n return transformer({\n point: function(x, y) {\n x = project(x, y);\n this.stream.point(x[0], x[1]);\n }\n });\n}\n\nfunction resample(project, delta2) {\n\n function resampleLineTo(x0, y0, lambda0, a0, b0, c0, x1, y1, lambda1, a1, b1, c1, depth, stream) {\n var dx = x1 - x0,\n dy = y1 - y0,\n d2 = dx * dx + dy * dy;\n if (d2 > 4 * delta2 && depth--) {\n var a = a0 + a1,\n b = b0 + b1,\n c = c0 + c1,\n m = sqrt(a * a + b * b + c * c),\n phi2 = asin(c /= m),\n lambda2 = abs(abs(c) - 1) < epsilon || abs(lambda0 - lambda1) < epsilon ? (lambda0 + lambda1) / 2 : atan2(b, a),\n p = project(lambda2, phi2),\n x2 = p[0],\n y2 = p[1],\n dx2 = x2 - x0,\n dy2 = y2 - y0,\n dz = dy * dx2 - dx * dy2;\n if (dz * dz / d2 > delta2 // perpendicular projected distance\n || abs((dx * dx2 + dy * dy2) / d2 - 0.5) > 0.3 // midpoint close to an end\n || a0 * a1 + b0 * b1 + c0 * c1 < cosMinDistance) { // angular distance\n resampleLineTo(x0, y0, lambda0, a0, b0, c0, x2, y2, lambda2, a /= m, b /= m, c, depth, stream);\n stream.point(x2, y2);\n resampleLineTo(x2, y2, lambda2, a, b, c, x1, y1, lambda1, a1, b1, c1, depth, stream);\n }\n }\n }\n return function(stream) {\n var lambda00, x00, y00, a00, b00, c00, // first point\n lambda0, x0, y0, a0, b0, c0; // previous point\n\n var resampleStream = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function() { stream.polygonStart(); resampleStream.lineStart = ringStart; },\n polygonEnd: function() { stream.polygonEnd(); resampleStream.lineStart = lineStart; }\n };\n\n function point(x, y) {\n x = project(x, y);\n stream.point(x[0], x[1]);\n }\n\n function lineStart() {\n x0 = NaN;\n resampleStream.point = linePoint;\n stream.lineStart();\n }\n\n function linePoint(lambda, phi) {\n var c = cartesian([lambda, phi]), p = project(lambda, phi);\n resampleLineTo(x0, y0, lambda0, a0, b0, c0, x0 = p[0], y0 = p[1], lambda0 = lambda, a0 = c[0], b0 = c[1], c0 = c[2], maxDepth, stream);\n stream.point(x0, y0);\n }\n\n function lineEnd() {\n resampleStream.point = point;\n stream.lineEnd();\n }\n\n function ringStart() {\n lineStart();\n resampleStream.point = ringPoint;\n resampleStream.lineEnd = ringEnd;\n }\n\n function ringPoint(lambda, phi) {\n linePoint(lambda00 = lambda, phi), x00 = x0, y00 = y0, a00 = a0, b00 = b0, c00 = c0;\n resampleStream.point = linePoint;\n }\n\n function ringEnd() {\n resampleLineTo(x0, y0, lambda0, a0, b0, c0, x00, y00, lambda00, a00, b00, c00, maxDepth, stream);\n resampleStream.lineEnd = lineEnd;\n lineEnd();\n }\n\n return resampleStream;\n };\n}\n","import clipAntimeridian from \"../clip/antimeridian.js\";\nimport clipCircle from \"../clip/circle.js\";\nimport clipRectangle from \"../clip/rectangle.js\";\nimport compose from \"../compose.js\";\nimport identity from \"../identity.js\";\nimport {cos, degrees, radians, sin, sqrt} from \"../math.js\";\nimport {rotateRadians} from \"../rotation.js\";\nimport {transformer} from \"../transform.js\";\nimport {fitExtent, fitSize, fitWidth, fitHeight} from \"./fit.js\";\nimport resample from \"./resample.js\";\n\nvar transformRadians = transformer({\n point: function(x, y) {\n this.stream.point(x * radians, y * radians);\n }\n});\n\nfunction transformRotate(rotate) {\n return transformer({\n point: function(x, y) {\n var r = rotate(x, y);\n return this.stream.point(r[0], r[1]);\n }\n });\n}\n\nfunction scaleTranslate(k, dx, dy) {\n function transform(x, y) {\n return [dx + k * x, dy - k * y];\n }\n transform.invert = function(x, y) {\n return [(x - dx) / k, (dy - y) / k];\n };\n return transform;\n}\n\nfunction scaleTranslateRotate(k, dx, dy, alpha) {\n var cosAlpha = cos(alpha),\n sinAlpha = sin(alpha),\n a = cosAlpha * k,\n b = sinAlpha * k,\n ai = cosAlpha / k,\n bi = sinAlpha / k,\n ci = (sinAlpha * dy - cosAlpha * dx) / k,\n fi = (sinAlpha * dx + cosAlpha * dy) / k;\n function transform(x, y) {\n return [a * x - b * y + dx, dy - b * x - a * y];\n }\n transform.invert = function(x, y) {\n return [ai * x - bi * y + ci, fi - bi * x - ai * y];\n };\n return transform;\n}\n\nexport default function projection(project) {\n return projectionMutator(function() { return project; })();\n}\n\nexport function projectionMutator(projectAt) {\n var project,\n k = 150, // scale\n x = 480, y = 250, // translate\n lambda = 0, phi = 0, // center\n deltaLambda = 0, deltaPhi = 0, deltaGamma = 0, rotate, // pre-rotate\n alpha = 0, // post-rotate\n theta = null, preclip = clipAntimeridian, // pre-clip angle\n x0 = null, y0, x1, y1, postclip = identity, // post-clip extent\n delta2 = 0.5, // precision\n projectResample,\n projectTransform,\n projectRotateTransform,\n cache,\n cacheStream;\n\n function projection(point) {\n return projectRotateTransform(point[0] * radians, point[1] * radians);\n }\n\n function invert(point) {\n point = projectRotateTransform.invert(point[0], point[1]);\n return point && [point[0] * degrees, point[1] * degrees];\n }\n\n projection.stream = function(stream) {\n return cache && cacheStream === stream ? cache : cache = transformRadians(transformRotate(rotate)(preclip(projectResample(postclip(cacheStream = stream)))));\n };\n\n projection.preclip = function(_) {\n return arguments.length ? (preclip = _, theta = undefined, reset()) : preclip;\n };\n\n projection.postclip = function(_) {\n return arguments.length ? (postclip = _, x0 = y0 = x1 = y1 = null, reset()) : postclip;\n };\n\n projection.clipAngle = function(_) {\n return arguments.length ? (preclip = +_ ? clipCircle(theta = _ * radians) : (theta = null, clipAntimeridian), reset()) : theta * degrees;\n };\n\n projection.clipExtent = function(_) {\n return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, identity) : clipRectangle(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n };\n\n projection.scale = function(_) {\n return arguments.length ? (k = +_, recenter()) : k;\n };\n\n projection.translate = function(_) {\n return arguments.length ? (x = +_[0], y = +_[1], recenter()) : [x, y];\n };\n\n projection.center = function(_) {\n return arguments.length ? (lambda = _[0] % 360 * radians, phi = _[1] % 360 * radians, recenter()) : [lambda * degrees, phi * degrees];\n };\n\n projection.rotate = function(_) {\n return arguments.length ? (deltaLambda = _[0] % 360 * radians, deltaPhi = _[1] % 360 * radians, deltaGamma = _.length > 2 ? _[2] % 360 * radians : 0, recenter()) : [deltaLambda * degrees, deltaPhi * degrees, deltaGamma * degrees];\n };\n\n projection.angle = function(_) {\n return arguments.length ? (alpha = _ % 360 * radians, recenter()) : alpha * degrees;\n };\n\n projection.precision = function(_) {\n return arguments.length ? (projectResample = resample(projectTransform, delta2 = _ * _), reset()) : sqrt(delta2);\n };\n\n projection.fitExtent = function(extent, object) {\n return fitExtent(projection, extent, object);\n };\n\n projection.fitSize = function(size, object) {\n return fitSize(projection, size, object);\n };\n\n projection.fitWidth = function(width, object) {\n return fitWidth(projection, width, object);\n };\n\n projection.fitHeight = function(height, object) {\n return fitHeight(projection, height, object);\n };\n\n function recenter() {\n var center = scaleTranslateRotate(k, 0, 0, alpha).apply(null, project(lambda, phi)),\n transform = (alpha ? scaleTranslateRotate : scaleTranslate)(k, x - center[0], y - center[1], alpha);\n rotate = rotateRadians(deltaLambda, deltaPhi, deltaGamma);\n projectTransform = compose(project, transform);\n projectRotateTransform = compose(rotate, projectTransform);\n projectResample = resample(projectTransform, delta2);\n return reset();\n }\n\n function reset() {\n cache = cacheStream = null;\n return projection;\n }\n\n return function() {\n project = projectAt.apply(this, arguments);\n projection.invert = project.invert && invert;\n return recenter();\n };\n}\n","import {degrees, pi, radians} from \"../math.js\";\nimport {projectionMutator} from \"./index.js\";\n\nexport function conicProjection(projectAt) {\n var phi0 = 0,\n phi1 = pi / 3,\n m = projectionMutator(projectAt),\n p = m(phi0, phi1);\n\n p.parallels = function(_) {\n return arguments.length ? m(phi0 = _[0] * radians, phi1 = _[1] * radians) : [phi0 * degrees, phi1 * degrees];\n };\n\n return p;\n}\n","import {abs, asin, atan2, cos, epsilon, sign, sin, sqrt} from \"../math.js\";\nimport {conicProjection} from \"./conic.js\";\nimport {cylindricalEqualAreaRaw} from \"./cylindricalEqualArea.js\";\n\nexport function conicEqualAreaRaw(y0, y1) {\n var sy0 = sin(y0), n = (sy0 + sin(y1)) / 2;\n\n // Are the parallels symmetrical around the Equator?\n if (abs(n) < epsilon) return cylindricalEqualAreaRaw(y0);\n\n var c = 1 + sy0 * (2 * n - sy0), r0 = sqrt(c) / n;\n\n function project(x, y) {\n var r = sqrt(c - 2 * n * sin(y)) / n;\n return [r * sin(x *= n), r0 - r * cos(x)];\n }\n\n project.invert = function(x, y) {\n var r0y = r0 - y;\n return [atan2(x, abs(r0y)) / n * sign(r0y), asin((c - (x * x + r0y * r0y) * n * n) / (2 * n))];\n };\n\n return project;\n}\n\nexport default function() {\n return conicProjection(conicEqualAreaRaw)\n .scale(155.424)\n .center([0, 33.6442]);\n}\n","import {asin, cos, sin} from \"../math.js\";\n\nexport function cylindricalEqualAreaRaw(phi0) {\n var cosPhi0 = cos(phi0);\n\n function forward(lambda, phi) {\n return [lambda * cosPhi0, sin(phi) / cosPhi0];\n }\n\n forward.invert = function(x, y) {\n return [x / cosPhi0, asin(y * cosPhi0)];\n };\n\n return forward;\n}\n","import conicEqualArea from \"./conicEqualArea.js\";\n\nexport default function() {\n return conicEqualArea()\n .parallels([29.5, 45.5])\n .scale(1070)\n .translate([480, 250])\n .rotate([96, 0])\n .center([-0.6, 38.7]);\n}\n","import {epsilon} from \"../math.js\";\nimport albers from \"./albers.js\";\nimport conicEqualArea from \"./conicEqualArea.js\";\nimport {fitExtent, fitSize, fitWidth, fitHeight} from \"./fit.js\";\n\n// The projections must have mutually exclusive clip regions on the sphere,\n// as this will avoid emitting interleaving lines and polygons.\nfunction multiplex(streams) {\n var n = streams.length;\n return {\n point: function(x, y) { var i = -1; while (++i < n) streams[i].point(x, y); },\n sphere: function() { var i = -1; while (++i < n) streams[i].sphere(); },\n lineStart: function() { var i = -1; while (++i < n) streams[i].lineStart(); },\n lineEnd: function() { var i = -1; while (++i < n) streams[i].lineEnd(); },\n polygonStart: function() { var i = -1; while (++i < n) streams[i].polygonStart(); },\n polygonEnd: function() { var i = -1; while (++i < n) streams[i].polygonEnd(); }\n };\n}\n\n// A composite projection for the United States, configured by default for\n// 960×500. The projection also works quite well at 960×600 if you change the\n// scale to 1285 and adjust the translate accordingly. The set of standard\n// parallels for each region comes from USGS, which is published here:\n// http://egsc.usgs.gov/isb/pubs/MapProjections/projections.html#albers\nexport default function() {\n var cache,\n cacheStream,\n lower48 = albers(), lower48Point,\n alaska = conicEqualArea().rotate([154, 0]).center([-2, 58.5]).parallels([55, 65]), alaskaPoint, // EPSG:3338\n hawaii = conicEqualArea().rotate([157, 0]).center([-3, 19.9]).parallels([8, 18]), hawaiiPoint, // ESRI:102007\n point, pointStream = {point: function(x, y) { point = [x, y]; }};\n\n function albersUsa(coordinates) {\n var x = coordinates[0], y = coordinates[1];\n return point = null,\n (lower48Point.point(x, y), point)\n || (alaskaPoint.point(x, y), point)\n || (hawaiiPoint.point(x, y), point);\n }\n\n albersUsa.invert = function(coordinates) {\n var k = lower48.scale(),\n t = lower48.translate(),\n x = (coordinates[0] - t[0]) / k,\n y = (coordinates[1] - t[1]) / k;\n return (y >= 0.120 && y < 0.234 && x >= -0.425 && x < -0.214 ? alaska\n : y >= 0.166 && y < 0.234 && x >= -0.214 && x < -0.115 ? hawaii\n : lower48).invert(coordinates);\n };\n\n albersUsa.stream = function(stream) {\n return cache && cacheStream === stream ? cache : cache = multiplex([lower48.stream(cacheStream = stream), alaska.stream(stream), hawaii.stream(stream)]);\n };\n\n albersUsa.precision = function(_) {\n if (!arguments.length) return lower48.precision();\n lower48.precision(_), alaska.precision(_), hawaii.precision(_);\n return reset();\n };\n\n albersUsa.scale = function(_) {\n if (!arguments.length) return lower48.scale();\n lower48.scale(_), alaska.scale(_ * 0.35), hawaii.scale(_);\n return albersUsa.translate(lower48.translate());\n };\n\n albersUsa.translate = function(_) {\n if (!arguments.length) return lower48.translate();\n var k = lower48.scale(), x = +_[0], y = +_[1];\n\n lower48Point = lower48\n .translate(_)\n .clipExtent([[x - 0.455 * k, y - 0.238 * k], [x + 0.455 * k, y + 0.238 * k]])\n .stream(pointStream);\n\n alaskaPoint = alaska\n .translate([x - 0.307 * k, y + 0.201 * k])\n .clipExtent([[x - 0.425 * k + epsilon, y + 0.120 * k + epsilon], [x - 0.214 * k - epsilon, y + 0.234 * k - epsilon]])\n .stream(pointStream);\n\n hawaiiPoint = hawaii\n .translate([x - 0.205 * k, y + 0.212 * k])\n .clipExtent([[x - 0.214 * k + epsilon, y + 0.166 * k + epsilon], [x - 0.115 * k - epsilon, y + 0.234 * k - epsilon]])\n .stream(pointStream);\n\n return reset();\n };\n\n albersUsa.fitExtent = function(extent, object) {\n return fitExtent(albersUsa, extent, object);\n };\n\n albersUsa.fitSize = function(size, object) {\n return fitSize(albersUsa, size, object);\n };\n\n albersUsa.fitWidth = function(width, object) {\n return fitWidth(albersUsa, width, object);\n };\n\n albersUsa.fitHeight = function(height, object) {\n return fitHeight(albersUsa, height, object);\n };\n\n function reset() {\n cache = cacheStream = null;\n return albersUsa;\n }\n\n return albersUsa.scale(1070);\n}\n","import {asin, atan2, cos, sin, sqrt} from \"../math.js\";\n\nexport function azimuthalRaw(scale) {\n return function(x, y) {\n var cx = cos(x),\n cy = cos(y),\n k = scale(cx * cy);\n return [\n k * cy * sin(x),\n k * sin(y)\n ];\n }\n}\n\nexport function azimuthalInvert(angle) {\n return function(x, y) {\n var z = sqrt(x * x + y * y),\n c = angle(z),\n sc = sin(c),\n cc = cos(c);\n return [\n atan2(x * sc, z * cc),\n asin(z && y * sc / z)\n ];\n }\n}\n","import {asin, sqrt} from \"../math.js\";\nimport {azimuthalRaw, azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport var azimuthalEqualAreaRaw = azimuthalRaw(function(cxcy) {\n return sqrt(2 / (1 + cxcy));\n});\n\nazimuthalEqualAreaRaw.invert = azimuthalInvert(function(z) {\n return 2 * asin(z / 2);\n});\n\nexport default function() {\n return projection(azimuthalEqualAreaRaw)\n .scale(124.75)\n .clipAngle(180 - 1e-3);\n}\n","import {acos, sin} from \"../math.js\";\nimport {azimuthalRaw, azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport var azimuthalEquidistantRaw = azimuthalRaw(function(c) {\n return (c = acos(c)) && c / sin(c);\n});\n\nazimuthalEquidistantRaw.invert = azimuthalInvert(function(z) {\n return z;\n});\n\nexport default function() {\n return projection(azimuthalEquidistantRaw)\n .scale(79.4188)\n .clipAngle(180 - 1e-3);\n}\n","import {atan, exp, halfPi, log, pi, tan, tau} from \"../math.js\";\nimport rotation from \"../rotation.js\";\nimport projection from \"./index.js\";\n\nexport function mercatorRaw(lambda, phi) {\n return [lambda, log(tan((halfPi + phi) / 2))];\n}\n\nmercatorRaw.invert = function(x, y) {\n return [x, 2 * atan(exp(y)) - halfPi];\n};\n\nexport default function() {\n return mercatorProjection(mercatorRaw)\n .scale(961 / tau);\n}\n\nexport function mercatorProjection(project) {\n var m = projection(project),\n center = m.center,\n scale = m.scale,\n translate = m.translate,\n clipExtent = m.clipExtent,\n x0 = null, y0, x1, y1; // clip extent\n\n m.scale = function(_) {\n return arguments.length ? (scale(_), reclip()) : scale();\n };\n\n m.translate = function(_) {\n return arguments.length ? (translate(_), reclip()) : translate();\n };\n\n m.center = function(_) {\n return arguments.length ? (center(_), reclip()) : center();\n };\n\n m.clipExtent = function(_) {\n return arguments.length ? ((_ == null ? x0 = y0 = x1 = y1 = null : (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1])), reclip()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n };\n\n function reclip() {\n var k = pi * scale(),\n t = m(rotation(m.rotate()).invert([0, 0]));\n return clipExtent(x0 == null\n ? [[t[0] - k, t[1] - k], [t[0] + k, t[1] + k]] : project === mercatorRaw\n ? [[Math.max(t[0] - k, x0), y0], [Math.min(t[0] + k, x1), y1]]\n : [[x0, Math.max(t[1] - k, y0)], [x1, Math.min(t[1] + k, y1)]]);\n }\n\n return reclip();\n}\n","import {abs, atan, atan2, cos, epsilon, halfPi, log, pow, sign, sin, sqrt, tan} from \"../math.js\";\nimport {conicProjection} from \"./conic.js\";\nimport {mercatorRaw} from \"./mercator.js\";\n\nfunction tany(y) {\n return tan((halfPi + y) / 2);\n}\n\nexport function conicConformalRaw(y0, y1) {\n var cy0 = cos(y0),\n n = y0 === y1 ? sin(y0) : log(cy0 / cos(y1)) / log(tany(y1) / tany(y0)),\n f = cy0 * pow(tany(y0), n) / n;\n\n if (!n) return mercatorRaw;\n\n function project(x, y) {\n if (f > 0) { if (y < -halfPi + epsilon) y = -halfPi + epsilon; }\n else { if (y > halfPi - epsilon) y = halfPi - epsilon; }\n var r = f / pow(tany(y), n);\n return [r * sin(n * x), f - r * cos(n * x)];\n }\n\n project.invert = function(x, y) {\n var fy = f - y, r = sign(n) * sqrt(x * x + fy * fy);\n return [atan2(x, abs(fy)) / n * sign(fy), 2 * atan(pow(f / r, 1 / n)) - halfPi];\n };\n\n return project;\n}\n\nexport default function() {\n return conicProjection(conicConformalRaw)\n .scale(109.5)\n .parallels([30, 30]);\n}\n","import projection from \"./index.js\";\n\nexport function equirectangularRaw(lambda, phi) {\n return [lambda, phi];\n}\n\nequirectangularRaw.invert = equirectangularRaw;\n\nexport default function() {\n return projection(equirectangularRaw)\n .scale(152.63);\n}\n","import {abs, atan2, cos, epsilon, sign, sin, sqrt} from \"../math.js\";\nimport {conicProjection} from \"./conic.js\";\nimport {equirectangularRaw} from \"./equirectangular.js\";\n\nexport function conicEquidistantRaw(y0, y1) {\n var cy0 = cos(y0),\n n = y0 === y1 ? sin(y0) : (cy0 - cos(y1)) / (y1 - y0),\n g = cy0 / n + y0;\n\n if (abs(n) < epsilon) return equirectangularRaw;\n\n function project(x, y) {\n var gy = g - y, nx = n * x;\n return [gy * sin(nx), g - gy * cos(nx)];\n }\n\n project.invert = function(x, y) {\n var gy = g - y;\n return [atan2(x, abs(gy)) / n * sign(gy), g - sign(n) * sqrt(x * x + gy * gy)];\n };\n\n return project;\n}\n\nexport default function() {\n return conicProjection(conicEquidistantRaw)\n .scale(131.154)\n .center([0, 13.9389]);\n}\n","import projection from \"./index.js\";\nimport {abs, asin, cos, epsilon2, sin, sqrt} from \"../math.js\";\n\nvar A1 = 1.340264,\n A2 = -0.081106,\n A3 = 0.000893,\n A4 = 0.003796,\n M = sqrt(3) / 2,\n iterations = 12;\n\nexport function equalEarthRaw(lambda, phi) {\n var l = asin(M * sin(phi)), l2 = l * l, l6 = l2 * l2 * l2;\n return [\n lambda * cos(l) / (M * (A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2))),\n l * (A1 + A2 * l2 + l6 * (A3 + A4 * l2))\n ];\n}\n\nequalEarthRaw.invert = function(x, y) {\n var l = y, l2 = l * l, l6 = l2 * l2 * l2;\n for (var i = 0, delta, fy, fpy; i < iterations; ++i) {\n fy = l * (A1 + A2 * l2 + l6 * (A3 + A4 * l2)) - y;\n fpy = A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2);\n l -= delta = fy / fpy, l2 = l * l, l6 = l2 * l2 * l2;\n if (abs(delta) < epsilon2) break;\n }\n return [\n M * x * (A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2)) / cos(l),\n asin(sin(l) / M)\n ];\n};\n\nexport default function() {\n return projection(equalEarthRaw)\n .scale(177.158);\n}\n","import {atan, cos, sin} from \"../math.js\";\nimport {azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport function gnomonicRaw(x, y) {\n var cy = cos(y), k = cos(x) * cy;\n return [cy * sin(x) / k, sin(y) / k];\n}\n\ngnomonicRaw.invert = azimuthalInvert(atan);\n\nexport default function() {\n return projection(gnomonicRaw)\n .scale(144.049)\n .clipAngle(60);\n}\n","import clipRectangle from \"../clip/rectangle.js\";\nimport identity from \"../identity.js\";\nimport {transformer} from \"../transform.js\";\nimport {fitExtent, fitSize, fitWidth, fitHeight} from \"./fit.js\";\n\nfunction scaleTranslate(kx, ky, tx, ty) {\n return kx === 1 && ky === 1 && tx === 0 && ty === 0 ? identity : transformer({\n point: function(x, y) {\n this.stream.point(x * kx + tx, y * ky + ty);\n }\n });\n}\n\nexport default function() {\n var k = 1, tx = 0, ty = 0, sx = 1, sy = 1, transform = identity, // scale, translate and reflect\n x0 = null, y0, x1, y1, // clip extent\n postclip = identity,\n cache,\n cacheStream,\n projection;\n\n function reset() {\n cache = cacheStream = null;\n return projection;\n }\n\n return projection = {\n stream: function(stream) {\n return cache && cacheStream === stream ? cache : cache = transform(postclip(cacheStream = stream));\n },\n postclip: function(_) {\n return arguments.length ? (postclip = _, x0 = y0 = x1 = y1 = null, reset()) : postclip;\n },\n clipExtent: function(_) {\n return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, identity) : clipRectangle(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n },\n scale: function(_) {\n return arguments.length ? (transform = scaleTranslate((k = +_) * sx, k * sy, tx, ty), reset()) : k;\n },\n translate: function(_) {\n return arguments.length ? (transform = scaleTranslate(k * sx, k * sy, tx = +_[0], ty = +_[1]), reset()) : [tx, ty];\n },\n reflectX: function(_) {\n return arguments.length ? (transform = scaleTranslate(k * (sx = _ ? -1 : 1), k * sy, tx, ty), reset()) : sx < 0;\n },\n reflectY: function(_) {\n return arguments.length ? (transform = scaleTranslate(k * sx, k * (sy = _ ? -1 : 1), tx, ty), reset()) : sy < 0;\n },\n fitExtent: function(extent, object) {\n return fitExtent(projection, extent, object);\n },\n fitSize: function(size, object) {\n return fitSize(projection, size, object);\n },\n fitWidth: function(width, object) {\n return fitWidth(projection, width, object);\n },\n fitHeight: function(height, object) {\n return fitHeight(projection, height, object);\n }\n };\n}\n","import projection from \"./index.js\";\nimport {abs, epsilon} from \"../math.js\";\n\nexport function naturalEarth1Raw(lambda, phi) {\n var phi2 = phi * phi, phi4 = phi2 * phi2;\n return [\n lambda * (0.8707 - 0.131979 * phi2 + phi4 * (-0.013791 + phi4 * (0.003971 * phi2 - 0.001529 * phi4))),\n phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4)))\n ];\n}\n\nnaturalEarth1Raw.invert = function(x, y) {\n var phi = y, i = 25, delta;\n do {\n var phi2 = phi * phi, phi4 = phi2 * phi2;\n phi -= delta = (phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4))) - y) /\n (1.007226 + phi2 * (0.015085 * 3 + phi4 * (-0.044475 * 7 + 0.028874 * 9 * phi2 - 0.005916 * 11 * phi4)));\n } while (abs(delta) > epsilon && --i > 0);\n return [\n x / (0.8707 + (phi2 = phi * phi) * (-0.131979 + phi2 * (-0.013791 + phi2 * phi2 * phi2 * (0.003971 - 0.001529 * phi2)))),\n phi\n ];\n};\n\nexport default function() {\n return projection(naturalEarth1Raw)\n .scale(175.295);\n}\n","import {asin, cos, epsilon, sin} from \"../math.js\";\nimport {azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport function orthographicRaw(x, y) {\n return [cos(y) * sin(x), sin(y)];\n}\n\northographicRaw.invert = azimuthalInvert(asin);\n\nexport default function() {\n return projection(orthographicRaw)\n .scale(249.5)\n .clipAngle(90 + epsilon);\n}\n","import {atan, cos, sin} from \"../math.js\";\nimport {azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport function stereographicRaw(x, y) {\n var cy = cos(y), k = 1 + cos(x) * cy;\n return [cy * sin(x) / k, sin(y) / k];\n}\n\nstereographicRaw.invert = azimuthalInvert(function(z) {\n return 2 * atan(z);\n});\n\nexport default function() {\n return projection(stereographicRaw)\n .scale(250)\n .clipAngle(142);\n}\n","import {atan, exp, halfPi, log, tan} from \"../math.js\";\nimport {mercatorProjection} from \"./mercator.js\";\n\nexport function transverseMercatorRaw(lambda, phi) {\n return [log(tan((halfPi + phi) / 2)), -lambda];\n}\n\ntransverseMercatorRaw.invert = function(x, y) {\n return [-y, 2 * atan(exp(x)) - halfPi];\n};\n\nexport default function() {\n var m = mercatorProjection(transverseMercatorRaw),\n center = m.center,\n rotate = m.rotate;\n\n m.center = function(_) {\n return arguments.length ? center([-_[1], _[0]]) : (_ = center(), [_[1], -_[0]]);\n };\n\n m.rotate = function(_) {\n return arguments.length ? rotate([_[0], _[1], _.length > 2 ? _[2] + 90 : 90]) : (_ = rotate(), [_[0], _[1], _[2] - 90]);\n };\n\n return rotate([0, 0, 90])\n .scale(159.155);\n}\n","function defaultSeparation(a, b) {\n return a.parent === b.parent ? 1 : 2;\n}\n\nfunction meanX(children) {\n return children.reduce(meanXReduce, 0) / children.length;\n}\n\nfunction meanXReduce(x, c) {\n return x + c.x;\n}\n\nfunction maxY(children) {\n return 1 + children.reduce(maxYReduce, 0);\n}\n\nfunction maxYReduce(y, c) {\n return Math.max(y, c.y);\n}\n\nfunction leafLeft(node) {\n var children;\n while (children = node.children) node = children[0];\n return node;\n}\n\nfunction leafRight(node) {\n var children;\n while (children = node.children) node = children[children.length - 1];\n return node;\n}\n\nexport default function() {\n var separation = defaultSeparation,\n dx = 1,\n dy = 1,\n nodeSize = false;\n\n function cluster(root) {\n var previousNode,\n x = 0;\n\n // First walk, computing the initial x & y values.\n root.eachAfter(function(node) {\n var children = node.children;\n if (children) {\n node.x = meanX(children);\n node.y = maxY(children);\n } else {\n node.x = previousNode ? x += separation(node, previousNode) : 0;\n node.y = 0;\n previousNode = node;\n }\n });\n\n var left = leafLeft(root),\n right = leafRight(root),\n x0 = left.x - separation(left, right) / 2,\n x1 = right.x + separation(right, left) / 2;\n\n // Second walk, normalizing x & y to the desired size.\n return root.eachAfter(nodeSize ? function(node) {\n node.x = (node.x - root.x) * dx;\n node.y = (root.y - node.y) * dy;\n } : function(node) {\n node.x = (node.x - x0) / (x1 - x0) * dx;\n node.y = (1 - (root.y ? node.y / root.y : 1)) * dy;\n });\n }\n\n cluster.separation = function(x) {\n return arguments.length ? (separation = x, cluster) : separation;\n };\n\n cluster.size = function(x) {\n return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], cluster) : (nodeSize ? null : [dx, dy]);\n };\n\n cluster.nodeSize = function(x) {\n return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], cluster) : (nodeSize ? [dx, dy] : null);\n };\n\n return cluster;\n}\n","function count(node) {\n var sum = 0,\n children = node.children,\n i = children && children.length;\n if (!i) sum = 1;\n else while (--i >= 0) sum += children[i].value;\n node.value = sum;\n}\n\nexport default function() {\n return this.eachAfter(count);\n}\n","import node_count from \"./count.js\";\nimport node_each from \"./each.js\";\nimport node_eachBefore from \"./eachBefore.js\";\nimport node_eachAfter from \"./eachAfter.js\";\nimport node_sum from \"./sum.js\";\nimport node_sort from \"./sort.js\";\nimport node_path from \"./path.js\";\nimport node_ancestors from \"./ancestors.js\";\nimport node_descendants from \"./descendants.js\";\nimport node_leaves from \"./leaves.js\";\nimport node_links from \"./links.js\";\n\nexport default function hierarchy(data, children) {\n var root = new Node(data),\n valued = +data.value && (root.value = data.value),\n node,\n nodes = [root],\n child,\n childs,\n i,\n n;\n\n if (children == null) children = defaultChildren;\n\n while (node = nodes.pop()) {\n if (valued) node.value = +node.data.value;\n if ((childs = children(node.data)) && (n = childs.length)) {\n node.children = new Array(n);\n for (i = n - 1; i >= 0; --i) {\n nodes.push(child = node.children[i] = new Node(childs[i]));\n child.parent = node;\n child.depth = node.depth + 1;\n }\n }\n }\n\n return root.eachBefore(computeHeight);\n}\n\nfunction node_copy() {\n return hierarchy(this).eachBefore(copyData);\n}\n\nfunction defaultChildren(d) {\n return d.children;\n}\n\nfunction copyData(node) {\n node.data = node.data.data;\n}\n\nexport function computeHeight(node) {\n var height = 0;\n do node.height = height;\n while ((node = node.parent) && (node.height < ++height));\n}\n\nexport function Node(data) {\n this.data = data;\n this.depth =\n this.height = 0;\n this.parent = null;\n}\n\nNode.prototype = hierarchy.prototype = {\n constructor: Node,\n count: node_count,\n each: node_each,\n eachAfter: node_eachAfter,\n eachBefore: node_eachBefore,\n sum: node_sum,\n sort: node_sort,\n path: node_path,\n ancestors: node_ancestors,\n descendants: node_descendants,\n leaves: node_leaves,\n links: node_links,\n copy: node_copy\n};\n","export default function(callback) {\n var node = this, current, next = [node], children, i, n;\n do {\n current = next.reverse(), next = [];\n while (node = current.pop()) {\n callback(node), children = node.children;\n if (children) for (i = 0, n = children.length; i < n; ++i) {\n next.push(children[i]);\n }\n }\n } while (next.length);\n return this;\n}\n","export default function(callback) {\n var node = this, nodes = [node], next = [], children, i, n;\n while (node = nodes.pop()) {\n next.push(node), children = node.children;\n if (children) for (i = 0, n = children.length; i < n; ++i) {\n nodes.push(children[i]);\n }\n }\n while (node = next.pop()) {\n callback(node);\n }\n return this;\n}\n","export default function(callback) {\n var node = this, nodes = [node], children, i;\n while (node = nodes.pop()) {\n callback(node), children = node.children;\n if (children) for (i = children.length - 1; i >= 0; --i) {\n nodes.push(children[i]);\n }\n }\n return this;\n}\n","export default function(value) {\n return this.eachAfter(function(node) {\n var sum = +value(node.data) || 0,\n children = node.children,\n i = children && children.length;\n while (--i >= 0) sum += children[i].value;\n node.value = sum;\n });\n}\n","export default function(compare) {\n return this.eachBefore(function(node) {\n if (node.children) {\n node.children.sort(compare);\n }\n });\n}\n","export default function(end) {\n var start = this,\n ancestor = leastCommonAncestor(start, end),\n nodes = [start];\n while (start !== ancestor) {\n start = start.parent;\n nodes.push(start);\n }\n var k = nodes.length;\n while (end !== ancestor) {\n nodes.splice(k, 0, end);\n end = end.parent;\n }\n return nodes;\n}\n\nfunction leastCommonAncestor(a, b) {\n if (a === b) return a;\n var aNodes = a.ancestors(),\n bNodes = b.ancestors(),\n c = null;\n a = aNodes.pop();\n b = bNodes.pop();\n while (a === b) {\n c = a;\n a = aNodes.pop();\n b = bNodes.pop();\n }\n return c;\n}\n","export default function() {\n var node = this, nodes = [node];\n while (node = node.parent) {\n nodes.push(node);\n }\n return nodes;\n}\n","export default function() {\n var nodes = [];\n this.each(function(node) {\n nodes.push(node);\n });\n return nodes;\n}\n","export default function() {\n var leaves = [];\n this.eachBefore(function(node) {\n if (!node.children) {\n leaves.push(node);\n }\n });\n return leaves;\n}\n","export default function() {\n var root = this, links = [];\n root.each(function(node) {\n if (node !== root) { // Don’t include the root’s parent, if any.\n links.push({source: node.parent, target: node});\n }\n });\n return links;\n}\n","export var slice = Array.prototype.slice;\n\nexport function shuffle(array) {\n var m = array.length,\n t,\n i;\n\n while (m) {\n i = Math.random() * m-- | 0;\n t = array[m];\n array[m] = array[i];\n array[i] = t;\n }\n\n return array;\n}\n","import {shuffle, slice} from \"../array.js\";\n\nexport default function(circles) {\n var i = 0, n = (circles = shuffle(slice.call(circles))).length, B = [], p, e;\n\n while (i < n) {\n p = circles[i];\n if (e && enclosesWeak(e, p)) ++i;\n else e = encloseBasis(B = extendBasis(B, p)), i = 0;\n }\n\n return e;\n}\n\nfunction extendBasis(B, p) {\n var i, j;\n\n if (enclosesWeakAll(p, B)) return [p];\n\n // If we get here then B must have at least one element.\n for (i = 0; i < B.length; ++i) {\n if (enclosesNot(p, B[i])\n && enclosesWeakAll(encloseBasis2(B[i], p), B)) {\n return [B[i], p];\n }\n }\n\n // If we get here then B must have at least two elements.\n for (i = 0; i < B.length - 1; ++i) {\n for (j = i + 1; j < B.length; ++j) {\n if (enclosesNot(encloseBasis2(B[i], B[j]), p)\n && enclosesNot(encloseBasis2(B[i], p), B[j])\n && enclosesNot(encloseBasis2(B[j], p), B[i])\n && enclosesWeakAll(encloseBasis3(B[i], B[j], p), B)) {\n return [B[i], B[j], p];\n }\n }\n }\n\n // If we get here then something is very wrong.\n throw new Error;\n}\n\nfunction enclosesNot(a, b) {\n var dr = a.r - b.r, dx = b.x - a.x, dy = b.y - a.y;\n return dr < 0 || dr * dr < dx * dx + dy * dy;\n}\n\nfunction enclosesWeak(a, b) {\n var dr = a.r - b.r + 1e-6, dx = b.x - a.x, dy = b.y - a.y;\n return dr > 0 && dr * dr > dx * dx + dy * dy;\n}\n\nfunction enclosesWeakAll(a, B) {\n for (var i = 0; i < B.length; ++i) {\n if (!enclosesWeak(a, B[i])) {\n return false;\n }\n }\n return true;\n}\n\nfunction encloseBasis(B) {\n switch (B.length) {\n case 1: return encloseBasis1(B[0]);\n case 2: return encloseBasis2(B[0], B[1]);\n case 3: return encloseBasis3(B[0], B[1], B[2]);\n }\n}\n\nfunction encloseBasis1(a) {\n return {\n x: a.x,\n y: a.y,\n r: a.r\n };\n}\n\nfunction encloseBasis2(a, b) {\n var x1 = a.x, y1 = a.y, r1 = a.r,\n x2 = b.x, y2 = b.y, r2 = b.r,\n x21 = x2 - x1, y21 = y2 - y1, r21 = r2 - r1,\n l = Math.sqrt(x21 * x21 + y21 * y21);\n return {\n x: (x1 + x2 + x21 / l * r21) / 2,\n y: (y1 + y2 + y21 / l * r21) / 2,\n r: (l + r1 + r2) / 2\n };\n}\n\nfunction encloseBasis3(a, b, c) {\n var x1 = a.x, y1 = a.y, r1 = a.r,\n x2 = b.x, y2 = b.y, r2 = b.r,\n x3 = c.x, y3 = c.y, r3 = c.r,\n a2 = x1 - x2,\n a3 = x1 - x3,\n b2 = y1 - y2,\n b3 = y1 - y3,\n c2 = r2 - r1,\n c3 = r3 - r1,\n d1 = x1 * x1 + y1 * y1 - r1 * r1,\n d2 = d1 - x2 * x2 - y2 * y2 + r2 * r2,\n d3 = d1 - x3 * x3 - y3 * y3 + r3 * r3,\n ab = a3 * b2 - a2 * b3,\n xa = (b2 * d3 - b3 * d2) / (ab * 2) - x1,\n xb = (b3 * c2 - b2 * c3) / ab,\n ya = (a3 * d2 - a2 * d3) / (ab * 2) - y1,\n yb = (a2 * c3 - a3 * c2) / ab,\n A = xb * xb + yb * yb - 1,\n B = 2 * (r1 + xa * xb + ya * yb),\n C = xa * xa + ya * ya - r1 * r1,\n r = -(A ? (B + Math.sqrt(B * B - 4 * A * C)) / (2 * A) : C / B);\n return {\n x: x1 + xa + xb * r,\n y: y1 + ya + yb * r,\n r: r\n };\n}\n","import enclose from \"./enclose.js\";\n\nfunction place(b, a, c) {\n var dx = b.x - a.x, x, a2,\n dy = b.y - a.y, y, b2,\n d2 = dx * dx + dy * dy;\n if (d2) {\n a2 = a.r + c.r, a2 *= a2;\n b2 = b.r + c.r, b2 *= b2;\n if (a2 > b2) {\n x = (d2 + b2 - a2) / (2 * d2);\n y = Math.sqrt(Math.max(0, b2 / d2 - x * x));\n c.x = b.x - x * dx - y * dy;\n c.y = b.y - x * dy + y * dx;\n } else {\n x = (d2 + a2 - b2) / (2 * d2);\n y = Math.sqrt(Math.max(0, a2 / d2 - x * x));\n c.x = a.x + x * dx - y * dy;\n c.y = a.y + x * dy + y * dx;\n }\n } else {\n c.x = a.x + c.r;\n c.y = a.y;\n }\n}\n\nfunction intersects(a, b) {\n var dr = a.r + b.r - 1e-6, dx = b.x - a.x, dy = b.y - a.y;\n return dr > 0 && dr * dr > dx * dx + dy * dy;\n}\n\nfunction score(node) {\n var a = node._,\n b = node.next._,\n ab = a.r + b.r,\n dx = (a.x * b.r + b.x * a.r) / ab,\n dy = (a.y * b.r + b.y * a.r) / ab;\n return dx * dx + dy * dy;\n}\n\nfunction Node(circle) {\n this._ = circle;\n this.next = null;\n this.previous = null;\n}\n\nexport function packEnclose(circles) {\n if (!(n = circles.length)) return 0;\n\n var a, b, c, n, aa, ca, i, j, k, sj, sk;\n\n // Place the first circle.\n a = circles[0], a.x = 0, a.y = 0;\n if (!(n > 1)) return a.r;\n\n // Place the second circle.\n b = circles[1], a.x = -b.r, b.x = a.r, b.y = 0;\n if (!(n > 2)) return a.r + b.r;\n\n // Place the third circle.\n place(b, a, c = circles[2]);\n\n // Initialize the front-chain using the first three circles a, b and c.\n a = new Node(a), b = new Node(b), c = new Node(c);\n a.next = c.previous = b;\n b.next = a.previous = c;\n c.next = b.previous = a;\n\n // Attempt to place each remaining circle…\n pack: for (i = 3; i < n; ++i) {\n place(a._, b._, c = circles[i]), c = new Node(c);\n\n // Find the closest intersecting circle on the front-chain, if any.\n // “Closeness” is determined by linear distance along the front-chain.\n // “Ahead” or “behind” is likewise determined by linear distance.\n j = b.next, k = a.previous, sj = b._.r, sk = a._.r;\n do {\n if (sj <= sk) {\n if (intersects(j._, c._)) {\n b = j, a.next = b, b.previous = a, --i;\n continue pack;\n }\n sj += j._.r, j = j.next;\n } else {\n if (intersects(k._, c._)) {\n a = k, a.next = b, b.previous = a, --i;\n continue pack;\n }\n sk += k._.r, k = k.previous;\n }\n } while (j !== k.next);\n\n // Success! Insert the new circle c between a and b.\n c.previous = a, c.next = b, a.next = b.previous = b = c;\n\n // Compute the new closest circle pair to the centroid.\n aa = score(a);\n while ((c = c.next) !== b) {\n if ((ca = score(c)) < aa) {\n a = c, aa = ca;\n }\n }\n b = a.next;\n }\n\n // Compute the enclosing circle of the front chain.\n a = [b._], c = b; while ((c = c.next) !== b) a.push(c._); c = enclose(a);\n\n // Translate the circles to put the enclosing circle around the origin.\n for (i = 0; i < n; ++i) a = circles[i], a.x -= c.x, a.y -= c.y;\n\n return c.r;\n}\n\nexport default function(circles) {\n packEnclose(circles);\n return circles;\n}\n","export function optional(f) {\n return f == null ? null : required(f);\n}\n\nexport function required(f) {\n if (typeof f !== \"function\") throw new Error;\n return f;\n}\n","export function constantZero() {\n return 0;\n}\n\nexport default function(x) {\n return function() {\n return x;\n };\n}\n","import {packEnclose} from \"./siblings.js\";\nimport {optional} from \"../accessors.js\";\nimport constant, {constantZero} from \"../constant.js\";\n\nfunction defaultRadius(d) {\n return Math.sqrt(d.value);\n}\n\nexport default function() {\n var radius = null,\n dx = 1,\n dy = 1,\n padding = constantZero;\n\n function pack(root) {\n root.x = dx / 2, root.y = dy / 2;\n if (radius) {\n root.eachBefore(radiusLeaf(radius))\n .eachAfter(packChildren(padding, 0.5))\n .eachBefore(translateChild(1));\n } else {\n root.eachBefore(radiusLeaf(defaultRadius))\n .eachAfter(packChildren(constantZero, 1))\n .eachAfter(packChildren(padding, root.r / Math.min(dx, dy)))\n .eachBefore(translateChild(Math.min(dx, dy) / (2 * root.r)));\n }\n return root;\n }\n\n pack.radius = function(x) {\n return arguments.length ? (radius = optional(x), pack) : radius;\n };\n\n pack.size = function(x) {\n return arguments.length ? (dx = +x[0], dy = +x[1], pack) : [dx, dy];\n };\n\n pack.padding = function(x) {\n return arguments.length ? (padding = typeof x === \"function\" ? x : constant(+x), pack) : padding;\n };\n\n return pack;\n}\n\nfunction radiusLeaf(radius) {\n return function(node) {\n if (!node.children) {\n node.r = Math.max(0, +radius(node) || 0);\n }\n };\n}\n\nfunction packChildren(padding, k) {\n return function(node) {\n if (children = node.children) {\n var children,\n i,\n n = children.length,\n r = padding(node) * k || 0,\n e;\n\n if (r) for (i = 0; i < n; ++i) children[i].r += r;\n e = packEnclose(children);\n if (r) for (i = 0; i < n; ++i) children[i].r -= r;\n node.r = e + r;\n }\n };\n}\n\nfunction translateChild(k) {\n return function(node) {\n var parent = node.parent;\n node.r *= k;\n if (parent) {\n node.x = parent.x + k * node.x;\n node.y = parent.y + k * node.y;\n }\n };\n}\n","export default function(node) {\n node.x0 = Math.round(node.x0);\n node.y0 = Math.round(node.y0);\n node.x1 = Math.round(node.x1);\n node.y1 = Math.round(node.y1);\n}\n","export default function(parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n node,\n i = -1,\n n = nodes.length,\n k = parent.value && (x1 - x0) / parent.value;\n\n while (++i < n) {\n node = nodes[i], node.y0 = y0, node.y1 = y1;\n node.x0 = x0, node.x1 = x0 += node.value * k;\n }\n}\n","import roundNode from \"./treemap/round.js\";\nimport treemapDice from \"./treemap/dice.js\";\n\nexport default function() {\n var dx = 1,\n dy = 1,\n padding = 0,\n round = false;\n\n function partition(root) {\n var n = root.height + 1;\n root.x0 =\n root.y0 = padding;\n root.x1 = dx;\n root.y1 = dy / n;\n root.eachBefore(positionNode(dy, n));\n if (round) root.eachBefore(roundNode);\n return root;\n }\n\n function positionNode(dy, n) {\n return function(node) {\n if (node.children) {\n treemapDice(node, node.x0, dy * (node.depth + 1) / n, node.x1, dy * (node.depth + 2) / n);\n }\n var x0 = node.x0,\n y0 = node.y0,\n x1 = node.x1 - padding,\n y1 = node.y1 - padding;\n if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n node.x0 = x0;\n node.y0 = y0;\n node.x1 = x1;\n node.y1 = y1;\n };\n }\n\n partition.round = function(x) {\n return arguments.length ? (round = !!x, partition) : round;\n };\n\n partition.size = function(x) {\n return arguments.length ? (dx = +x[0], dy = +x[1], partition) : [dx, dy];\n };\n\n partition.padding = function(x) {\n return arguments.length ? (padding = +x, partition) : padding;\n };\n\n return partition;\n}\n","import {required} from \"./accessors.js\";\nimport {Node, computeHeight} from \"./hierarchy/index.js\";\n\nvar keyPrefix = \"$\", // Protect against keys like “__proto__”.\n preroot = {depth: -1},\n ambiguous = {};\n\nfunction defaultId(d) {\n return d.id;\n}\n\nfunction defaultParentId(d) {\n return d.parentId;\n}\n\nexport default function() {\n var id = defaultId,\n parentId = defaultParentId;\n\n function stratify(data) {\n var d,\n i,\n n = data.length,\n root,\n parent,\n node,\n nodes = new Array(n),\n nodeId,\n nodeKey,\n nodeByKey = {};\n\n for (i = 0; i < n; ++i) {\n d = data[i], node = nodes[i] = new Node(d);\n if ((nodeId = id(d, i, data)) != null && (nodeId += \"\")) {\n nodeKey = keyPrefix + (node.id = nodeId);\n nodeByKey[nodeKey] = nodeKey in nodeByKey ? ambiguous : node;\n }\n }\n\n for (i = 0; i < n; ++i) {\n node = nodes[i], nodeId = parentId(data[i], i, data);\n if (nodeId == null || !(nodeId += \"\")) {\n if (root) throw new Error(\"multiple roots\");\n root = node;\n } else {\n parent = nodeByKey[keyPrefix + nodeId];\n if (!parent) throw new Error(\"missing: \" + nodeId);\n if (parent === ambiguous) throw new Error(\"ambiguous: \" + nodeId);\n if (parent.children) parent.children.push(node);\n else parent.children = [node];\n node.parent = parent;\n }\n }\n\n if (!root) throw new Error(\"no root\");\n root.parent = preroot;\n root.eachBefore(function(node) { node.depth = node.parent.depth + 1; --n; }).eachBefore(computeHeight);\n root.parent = null;\n if (n > 0) throw new Error(\"cycle\");\n\n return root;\n }\n\n stratify.id = function(x) {\n return arguments.length ? (id = required(x), stratify) : id;\n };\n\n stratify.parentId = function(x) {\n return arguments.length ? (parentId = required(x), stratify) : parentId;\n };\n\n return stratify;\n}\n","import {Node} from \"./hierarchy/index.js\";\n\nfunction defaultSeparation(a, b) {\n return a.parent === b.parent ? 1 : 2;\n}\n\n// function radialSeparation(a, b) {\n// return (a.parent === b.parent ? 1 : 2) / a.depth;\n// }\n\n// This function is used to traverse the left contour of a subtree (or\n// subforest). It returns the successor of v on this contour. This successor is\n// either given by the leftmost child of v or by the thread of v. The function\n// returns null if and only if v is on the highest level of its subtree.\nfunction nextLeft(v) {\n var children = v.children;\n return children ? children[0] : v.t;\n}\n\n// This function works analogously to nextLeft.\nfunction nextRight(v) {\n var children = v.children;\n return children ? children[children.length - 1] : v.t;\n}\n\n// Shifts the current subtree rooted at w+. This is done by increasing\n// prelim(w+) and mod(w+) by shift.\nfunction moveSubtree(wm, wp, shift) {\n var change = shift / (wp.i - wm.i);\n wp.c -= change;\n wp.s += shift;\n wm.c += change;\n wp.z += shift;\n wp.m += shift;\n}\n\n// All other shifts, applied to the smaller subtrees between w- and w+, are\n// performed by this function. To prepare the shifts, we have to adjust\n// change(w+), shift(w+), and change(w-).\nfunction executeShifts(v) {\n var shift = 0,\n change = 0,\n children = v.children,\n i = children.length,\n w;\n while (--i >= 0) {\n w = children[i];\n w.z += shift;\n w.m += shift;\n shift += w.s + (change += w.c);\n }\n}\n\n// If vi-’s ancestor is a sibling of v, returns vi-’s ancestor. Otherwise,\n// returns the specified (default) ancestor.\nfunction nextAncestor(vim, v, ancestor) {\n return vim.a.parent === v.parent ? vim.a : ancestor;\n}\n\nfunction TreeNode(node, i) {\n this._ = node;\n this.parent = null;\n this.children = null;\n this.A = null; // default ancestor\n this.a = this; // ancestor\n this.z = 0; // prelim\n this.m = 0; // mod\n this.c = 0; // change\n this.s = 0; // shift\n this.t = null; // thread\n this.i = i; // number\n}\n\nTreeNode.prototype = Object.create(Node.prototype);\n\nfunction treeRoot(root) {\n var tree = new TreeNode(root, 0),\n node,\n nodes = [tree],\n child,\n children,\n i,\n n;\n\n while (node = nodes.pop()) {\n if (children = node._.children) {\n node.children = new Array(n = children.length);\n for (i = n - 1; i >= 0; --i) {\n nodes.push(child = node.children[i] = new TreeNode(children[i], i));\n child.parent = node;\n }\n }\n }\n\n (tree.parent = new TreeNode(null, 0)).children = [tree];\n return tree;\n}\n\n// Node-link tree diagram using the Reingold-Tilford \"tidy\" algorithm\nexport default function() {\n var separation = defaultSeparation,\n dx = 1,\n dy = 1,\n nodeSize = null;\n\n function tree(root) {\n var t = treeRoot(root);\n\n // Compute the layout using Buchheim et al.’s algorithm.\n t.eachAfter(firstWalk), t.parent.m = -t.z;\n t.eachBefore(secondWalk);\n\n // If a fixed node size is specified, scale x and y.\n if (nodeSize) root.eachBefore(sizeNode);\n\n // If a fixed tree size is specified, scale x and y based on the extent.\n // Compute the left-most, right-most, and depth-most nodes for extents.\n else {\n var left = root,\n right = root,\n bottom = root;\n root.eachBefore(function(node) {\n if (node.x < left.x) left = node;\n if (node.x > right.x) right = node;\n if (node.depth > bottom.depth) bottom = node;\n });\n var s = left === right ? 1 : separation(left, right) / 2,\n tx = s - left.x,\n kx = dx / (right.x + s + tx),\n ky = dy / (bottom.depth || 1);\n root.eachBefore(function(node) {\n node.x = (node.x + tx) * kx;\n node.y = node.depth * ky;\n });\n }\n\n return root;\n }\n\n // Computes a preliminary x-coordinate for v. Before that, FIRST WALK is\n // applied recursively to the children of v, as well as the function\n // APPORTION. After spacing out the children by calling EXECUTE SHIFTS, the\n // node v is placed to the midpoint of its outermost children.\n function firstWalk(v) {\n var children = v.children,\n siblings = v.parent.children,\n w = v.i ? siblings[v.i - 1] : null;\n if (children) {\n executeShifts(v);\n var midpoint = (children[0].z + children[children.length - 1].z) / 2;\n if (w) {\n v.z = w.z + separation(v._, w._);\n v.m = v.z - midpoint;\n } else {\n v.z = midpoint;\n }\n } else if (w) {\n v.z = w.z + separation(v._, w._);\n }\n v.parent.A = apportion(v, w, v.parent.A || siblings[0]);\n }\n\n // Computes all real x-coordinates by summing up the modifiers recursively.\n function secondWalk(v) {\n v._.x = v.z + v.parent.m;\n v.m += v.parent.m;\n }\n\n // The core of the algorithm. Here, a new subtree is combined with the\n // previous subtrees. Threads are used to traverse the inside and outside\n // contours of the left and right subtree up to the highest common level. The\n // vertices used for the traversals are vi+, vi-, vo-, and vo+, where the\n // superscript o means outside and i means inside, the subscript - means left\n // subtree and + means right subtree. For summing up the modifiers along the\n // contour, we use respective variables si+, si-, so-, and so+. Whenever two\n // nodes of the inside contours conflict, we compute the left one of the\n // greatest uncommon ancestors using the function ANCESTOR and call MOVE\n // SUBTREE to shift the subtree and prepare the shifts of smaller subtrees.\n // Finally, we add a new thread (if necessary).\n function apportion(v, w, ancestor) {\n if (w) {\n var vip = v,\n vop = v,\n vim = w,\n vom = vip.parent.children[0],\n sip = vip.m,\n sop = vop.m,\n sim = vim.m,\n som = vom.m,\n shift;\n while (vim = nextRight(vim), vip = nextLeft(vip), vim && vip) {\n vom = nextLeft(vom);\n vop = nextRight(vop);\n vop.a = v;\n shift = vim.z + sim - vip.z - sip + separation(vim._, vip._);\n if (shift > 0) {\n moveSubtree(nextAncestor(vim, v, ancestor), v, shift);\n sip += shift;\n sop += shift;\n }\n sim += vim.m;\n sip += vip.m;\n som += vom.m;\n sop += vop.m;\n }\n if (vim && !nextRight(vop)) {\n vop.t = vim;\n vop.m += sim - sop;\n }\n if (vip && !nextLeft(vom)) {\n vom.t = vip;\n vom.m += sip - som;\n ancestor = v;\n }\n }\n return ancestor;\n }\n\n function sizeNode(node) {\n node.x *= dx;\n node.y = node.depth * dy;\n }\n\n tree.separation = function(x) {\n return arguments.length ? (separation = x, tree) : separation;\n };\n\n tree.size = function(x) {\n return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], tree) : (nodeSize ? null : [dx, dy]);\n };\n\n tree.nodeSize = function(x) {\n return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], tree) : (nodeSize ? [dx, dy] : null);\n };\n\n return tree;\n}\n","export default function(parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n node,\n i = -1,\n n = nodes.length,\n k = parent.value && (y1 - y0) / parent.value;\n\n while (++i < n) {\n node = nodes[i], node.x0 = x0, node.x1 = x1;\n node.y0 = y0, node.y1 = y0 += node.value * k;\n }\n}\n","import treemapDice from \"./dice.js\";\nimport treemapSlice from \"./slice.js\";\n\nexport var phi = (1 + Math.sqrt(5)) / 2;\n\nexport function squarifyRatio(ratio, parent, x0, y0, x1, y1) {\n var rows = [],\n nodes = parent.children,\n row,\n nodeValue,\n i0 = 0,\n i1 = 0,\n n = nodes.length,\n dx, dy,\n value = parent.value,\n sumValue,\n minValue,\n maxValue,\n newRatio,\n minRatio,\n alpha,\n beta;\n\n while (i0 < n) {\n dx = x1 - x0, dy = y1 - y0;\n\n // Find the next non-empty node.\n do sumValue = nodes[i1++].value; while (!sumValue && i1 < n);\n minValue = maxValue = sumValue;\n alpha = Math.max(dy / dx, dx / dy) / (value * ratio);\n beta = sumValue * sumValue * alpha;\n minRatio = Math.max(maxValue / beta, beta / minValue);\n\n // Keep adding nodes while the aspect ratio maintains or improves.\n for (; i1 < n; ++i1) {\n sumValue += nodeValue = nodes[i1].value;\n if (nodeValue < minValue) minValue = nodeValue;\n if (nodeValue > maxValue) maxValue = nodeValue;\n beta = sumValue * sumValue * alpha;\n newRatio = Math.max(maxValue / beta, beta / minValue);\n if (newRatio > minRatio) { sumValue -= nodeValue; break; }\n minRatio = newRatio;\n }\n\n // Position and record the row orientation.\n rows.push(row = {value: sumValue, dice: dx < dy, children: nodes.slice(i0, i1)});\n if (row.dice) treemapDice(row, x0, y0, x1, value ? y0 += dy * sumValue / value : y1);\n else treemapSlice(row, x0, y0, value ? x0 += dx * sumValue / value : x1, y1);\n value -= sumValue, i0 = i1;\n }\n\n return rows;\n}\n\nexport default (function custom(ratio) {\n\n function squarify(parent, x0, y0, x1, y1) {\n squarifyRatio(ratio, parent, x0, y0, x1, y1);\n }\n\n squarify.ratio = function(x) {\n return custom((x = +x) > 1 ? x : 1);\n };\n\n return squarify;\n})(phi);\n","import roundNode from \"./round.js\";\nimport squarify from \"./squarify.js\";\nimport {required} from \"../accessors.js\";\nimport constant, {constantZero} from \"../constant.js\";\n\nexport default function() {\n var tile = squarify,\n round = false,\n dx = 1,\n dy = 1,\n paddingStack = [0],\n paddingInner = constantZero,\n paddingTop = constantZero,\n paddingRight = constantZero,\n paddingBottom = constantZero,\n paddingLeft = constantZero;\n\n function treemap(root) {\n root.x0 =\n root.y0 = 0;\n root.x1 = dx;\n root.y1 = dy;\n root.eachBefore(positionNode);\n paddingStack = [0];\n if (round) root.eachBefore(roundNode);\n return root;\n }\n\n function positionNode(node) {\n var p = paddingStack[node.depth],\n x0 = node.x0 + p,\n y0 = node.y0 + p,\n x1 = node.x1 - p,\n y1 = node.y1 - p;\n if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n node.x0 = x0;\n node.y0 = y0;\n node.x1 = x1;\n node.y1 = y1;\n if (node.children) {\n p = paddingStack[node.depth + 1] = paddingInner(node) / 2;\n x0 += paddingLeft(node) - p;\n y0 += paddingTop(node) - p;\n x1 -= paddingRight(node) - p;\n y1 -= paddingBottom(node) - p;\n if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n tile(node, x0, y0, x1, y1);\n }\n }\n\n treemap.round = function(x) {\n return arguments.length ? (round = !!x, treemap) : round;\n };\n\n treemap.size = function(x) {\n return arguments.length ? (dx = +x[0], dy = +x[1], treemap) : [dx, dy];\n };\n\n treemap.tile = function(x) {\n return arguments.length ? (tile = required(x), treemap) : tile;\n };\n\n treemap.padding = function(x) {\n return arguments.length ? treemap.paddingInner(x).paddingOuter(x) : treemap.paddingInner();\n };\n\n treemap.paddingInner = function(x) {\n return arguments.length ? (paddingInner = typeof x === \"function\" ? x : constant(+x), treemap) : paddingInner;\n };\n\n treemap.paddingOuter = function(x) {\n return arguments.length ? treemap.paddingTop(x).paddingRight(x).paddingBottom(x).paddingLeft(x) : treemap.paddingTop();\n };\n\n treemap.paddingTop = function(x) {\n return arguments.length ? (paddingTop = typeof x === \"function\" ? x : constant(+x), treemap) : paddingTop;\n };\n\n treemap.paddingRight = function(x) {\n return arguments.length ? (paddingRight = typeof x === \"function\" ? x : constant(+x), treemap) : paddingRight;\n };\n\n treemap.paddingBottom = function(x) {\n return arguments.length ? (paddingBottom = typeof x === \"function\" ? x : constant(+x), treemap) : paddingBottom;\n };\n\n treemap.paddingLeft = function(x) {\n return arguments.length ? (paddingLeft = typeof x === \"function\" ? x : constant(+x), treemap) : paddingLeft;\n };\n\n return treemap;\n}\n","export default function(parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n i, n = nodes.length,\n sum, sums = new Array(n + 1);\n\n for (sums[0] = sum = i = 0; i < n; ++i) {\n sums[i + 1] = sum += nodes[i].value;\n }\n\n partition(0, n, parent.value, x0, y0, x1, y1);\n\n function partition(i, j, value, x0, y0, x1, y1) {\n if (i >= j - 1) {\n var node = nodes[i];\n node.x0 = x0, node.y0 = y0;\n node.x1 = x1, node.y1 = y1;\n return;\n }\n\n var valueOffset = sums[i],\n valueTarget = (value / 2) + valueOffset,\n k = i + 1,\n hi = j - 1;\n\n while (k < hi) {\n var mid = k + hi >>> 1;\n if (sums[mid] < valueTarget) k = mid + 1;\n else hi = mid;\n }\n\n if ((valueTarget - sums[k - 1]) < (sums[k] - valueTarget) && i + 1 < k) --k;\n\n var valueLeft = sums[k] - valueOffset,\n valueRight = value - valueLeft;\n\n if ((x1 - x0) > (y1 - y0)) {\n var xk = (x0 * valueRight + x1 * valueLeft) / value;\n partition(i, k, valueLeft, x0, y0, xk, y1);\n partition(k, j, valueRight, xk, y0, x1, y1);\n } else {\n var yk = (y0 * valueRight + y1 * valueLeft) / value;\n partition(i, k, valueLeft, x0, y0, x1, yk);\n partition(k, j, valueRight, x0, yk, x1, y1);\n }\n }\n}\n","import dice from \"./dice.js\";\nimport slice from \"./slice.js\";\n\nexport default function(parent, x0, y0, x1, y1) {\n (parent.depth & 1 ? slice : dice)(parent, x0, y0, x1, y1);\n}\n","import treemapDice from \"./dice.js\";\nimport treemapSlice from \"./slice.js\";\nimport {phi, squarifyRatio} from \"./squarify.js\";\n\nexport default (function custom(ratio) {\n\n function resquarify(parent, x0, y0, x1, y1) {\n if ((rows = parent._squarify) && (rows.ratio === ratio)) {\n var rows,\n row,\n nodes,\n i,\n j = -1,\n n,\n m = rows.length,\n value = parent.value;\n\n while (++j < m) {\n row = rows[j], nodes = row.children;\n for (i = row.value = 0, n = nodes.length; i < n; ++i) row.value += nodes[i].value;\n if (row.dice) treemapDice(row, x0, y0, x1, y0 += (y1 - y0) * row.value / value);\n else treemapSlice(row, x0, y0, x0 += (x1 - x0) * row.value / value, y1);\n value -= row.value;\n }\n } else {\n parent._squarify = rows = squarifyRatio(ratio, parent, x0, y0, x1, y1);\n rows.ratio = ratio;\n }\n }\n\n resquarify.ratio = function(x) {\n return custom((x = +x) > 1 ? x : 1);\n };\n\n return resquarify;\n})(phi);\n","export default function(range) {\n var n = range.length;\n return function(t) {\n return range[Math.max(0, Math.min(n - 1, Math.floor(t * n)))];\n };\n}\n","import {hue} from \"./color.js\";\n\nexport default function(a, b) {\n var i = hue(+a, +b);\n return function(t) {\n var x = i(t);\n return x - 360 * Math.floor(x / 360);\n };\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return Math.round(a * (1 - t) + b * t);\n };\n}\n","var rho = Math.SQRT2,\n rho2 = 2,\n rho4 = 4,\n epsilon2 = 1e-12;\n\nfunction cosh(x) {\n return ((x = Math.exp(x)) + 1 / x) / 2;\n}\n\nfunction sinh(x) {\n return ((x = Math.exp(x)) - 1 / x) / 2;\n}\n\nfunction tanh(x) {\n return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n}\n\n// p0 = [ux0, uy0, w0]\n// p1 = [ux1, uy1, w1]\nexport default function(p0, p1) {\n var ux0 = p0[0], uy0 = p0[1], w0 = p0[2],\n ux1 = p1[0], uy1 = p1[1], w1 = p1[2],\n dx = ux1 - ux0,\n dy = uy1 - uy0,\n d2 = dx * dx + dy * dy,\n i,\n S;\n\n // Special case for u0 ≅ u1.\n if (d2 < epsilon2) {\n S = Math.log(w1 / w0) / rho;\n i = function(t) {\n return [\n ux0 + t * dx,\n uy0 + t * dy,\n w0 * Math.exp(rho * t * S)\n ];\n }\n }\n\n // General case.\n else {\n var d1 = Math.sqrt(d2),\n b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1),\n b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1),\n r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0),\n r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n S = (r1 - r0) / rho;\n i = function(t) {\n var s = t * S,\n coshr0 = cosh(r0),\n u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0));\n return [\n ux0 + u * dx,\n uy0 + u * dy,\n w0 * coshr0 / cosh(rho * s + r0)\n ];\n }\n }\n\n i.duration = S * 1000;\n\n return i;\n}\n","import {hsl as colorHsl} from \"d3-color\";\nimport color, {hue} from \"./color.js\";\n\nfunction hsl(hue) {\n return function(start, end) {\n var h = hue((start = colorHsl(start)).h, (end = colorHsl(end)).h),\n s = color(start.s, end.s),\n l = color(start.l, end.l),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.s = s(t);\n start.l = l(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n}\n\nexport default hsl(hue);\nexport var hslLong = hsl(color);\n","import {lab as colorLab} from \"d3-color\";\nimport color from \"./color.js\";\n\nexport default function lab(start, end) {\n var l = color((start = colorLab(start)).l, (end = colorLab(end)).l),\n a = color(start.a, end.a),\n b = color(start.b, end.b),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.l = l(t);\n start.a = a(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n}\n","import {hcl as colorHcl} from \"d3-color\";\nimport color, {hue} from \"./color.js\";\n\nfunction hcl(hue) {\n return function(start, end) {\n var h = hue((start = colorHcl(start)).h, (end = colorHcl(end)).h),\n c = color(start.c, end.c),\n l = color(start.l, end.l),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.c = c(t);\n start.l = l(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n}\n\nexport default hcl(hue);\nexport var hclLong = hcl(color);\n","import {cubehelix as colorCubehelix} from \"d3-color\";\nimport color, {hue} from \"./color.js\";\n\nfunction cubehelix(hue) {\n return (function cubehelixGamma(y) {\n y = +y;\n\n function cubehelix(start, end) {\n var h = hue((start = colorCubehelix(start)).h, (end = colorCubehelix(end)).h),\n s = color(start.s, end.s),\n l = color(start.l, end.l),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.s = s(t);\n start.l = l(Math.pow(t, y));\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n cubehelix.gamma = cubehelixGamma;\n\n return cubehelix;\n })(1);\n}\n\nexport default cubehelix(hue);\nexport var cubehelixLong = cubehelix(color);\n","export default function piecewise(interpolate, values) {\n var i = 0, n = values.length - 1, v = values[0], I = new Array(n < 0 ? 0 : n);\n while (i < n) I[i] = interpolate(v, v = values[++i]);\n return function(t) {\n var i = Math.max(0, Math.min(n - 1, Math.floor(t *= n)));\n return I[i](t - i);\n };\n}\n","export default function(interpolator, n) {\n var samples = new Array(n);\n for (var i = 0; i < n; ++i) samples[i] = interpolator(i / (n - 1));\n return samples;\n}\n","export default function(polygon) {\n var i = -1,\n n = polygon.length,\n a,\n b = polygon[n - 1],\n area = 0;\n\n while (++i < n) {\n a = b;\n b = polygon[i];\n area += a[1] * b[0] - a[0] * b[1];\n }\n\n return area / 2;\n}\n","export default function(polygon) {\n var i = -1,\n n = polygon.length,\n x = 0,\n y = 0,\n a,\n b = polygon[n - 1],\n c,\n k = 0;\n\n while (++i < n) {\n a = b;\n b = polygon[i];\n k += c = a[0] * b[1] - b[0] * a[1];\n x += (a[0] + b[0]) * c;\n y += (a[1] + b[1]) * c;\n }\n\n return k *= 3, [x / k, y / k];\n}\n","import cross from \"./cross.js\";\n\nfunction lexicographicOrder(a, b) {\n return a[0] - b[0] || a[1] - b[1];\n}\n\n// Computes the upper convex hull per the monotone chain algorithm.\n// Assumes points.length >= 3, is sorted by x, unique in y.\n// Returns an array of indices into points in left-to-right order.\nfunction computeUpperHullIndexes(points) {\n var n = points.length,\n indexes = [0, 1],\n size = 2;\n\n for (var i = 2; i < n; ++i) {\n while (size > 1 && cross(points[indexes[size - 2]], points[indexes[size - 1]], points[i]) <= 0) --size;\n indexes[size++] = i;\n }\n\n return indexes.slice(0, size); // remove popped points\n}\n\nexport default function(points) {\n if ((n = points.length) < 3) return null;\n\n var i,\n n,\n sortedPoints = new Array(n),\n flippedPoints = new Array(n);\n\n for (i = 0; i < n; ++i) sortedPoints[i] = [+points[i][0], +points[i][1], i];\n sortedPoints.sort(lexicographicOrder);\n for (i = 0; i < n; ++i) flippedPoints[i] = [sortedPoints[i][0], -sortedPoints[i][1]];\n\n var upperIndexes = computeUpperHullIndexes(sortedPoints),\n lowerIndexes = computeUpperHullIndexes(flippedPoints);\n\n // Construct the hull polygon, removing possible duplicate endpoints.\n var skipLeft = lowerIndexes[0] === upperIndexes[0],\n skipRight = lowerIndexes[lowerIndexes.length - 1] === upperIndexes[upperIndexes.length - 1],\n hull = [];\n\n // Add upper hull in right-to-l order.\n // Then add lower hull in left-to-right order.\n for (i = upperIndexes.length - 1; i >= 0; --i) hull.push(points[sortedPoints[upperIndexes[i]][2]]);\n for (i = +skipLeft; i < lowerIndexes.length - skipRight; ++i) hull.push(points[sortedPoints[lowerIndexes[i]][2]]);\n\n return hull;\n}\n","// Returns the 2D cross product of AB and AC vectors, i.e., the z-component of\n// the 3D cross product in a quadrant I Cartesian coordinate system (+x is\n// right, +y is up). Returns a positive value if ABC is counter-clockwise,\n// negative if clockwise, and zero if the points are collinear.\nexport default function(a, b, c) {\n return (b[0] - a[0]) * (c[1] - a[1]) - (b[1] - a[1]) * (c[0] - a[0]);\n}\n","export default function(polygon, point) {\n var n = polygon.length,\n p = polygon[n - 1],\n x = point[0], y = point[1],\n x0 = p[0], y0 = p[1],\n x1, y1,\n inside = false;\n\n for (var i = 0; i < n; ++i) {\n p = polygon[i], x1 = p[0], y1 = p[1];\n if (((y1 > y) !== (y0 > y)) && (x < (x0 - x1) * (y - y1) / (y0 - y1) + x1)) inside = !inside;\n x0 = x1, y0 = y1;\n }\n\n return inside;\n}\n","export default function(polygon) {\n var i = -1,\n n = polygon.length,\n b = polygon[n - 1],\n xa,\n ya,\n xb = b[0],\n yb = b[1],\n perimeter = 0;\n\n while (++i < n) {\n xa = xb;\n ya = yb;\n b = polygon[i];\n xb = b[0];\n yb = b[1];\n xa -= xb;\n ya -= yb;\n perimeter += Math.sqrt(xa * xa + ya * ya);\n }\n\n return perimeter;\n}\n","export default function() {\n return Math.random();\n}\n","import defaultSource from \"./defaultSource\";\n\nexport default (function sourceRandomUniform(source) {\n function randomUniform(min, max) {\n min = min == null ? 0 : +min;\n max = max == null ? 1 : +max;\n if (arguments.length === 1) max = min, min = 0;\n else max -= min;\n return function() {\n return source() * max + min;\n };\n }\n\n randomUniform.source = sourceRandomUniform;\n\n return randomUniform;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\n\nexport default (function sourceRandomNormal(source) {\n function randomNormal(mu, sigma) {\n var x, r;\n mu = mu == null ? 0 : +mu;\n sigma = sigma == null ? 1 : +sigma;\n return function() {\n var y;\n\n // If available, use the second previously-generated uniform random.\n if (x != null) y = x, x = null;\n\n // Otherwise, generate a new x and y.\n else do {\n x = source() * 2 - 1;\n y = source() * 2 - 1;\n r = x * x + y * y;\n } while (!r || r > 1);\n\n return mu + sigma * y * Math.sqrt(-2 * Math.log(r) / r);\n };\n }\n\n randomNormal.source = sourceRandomNormal;\n\n return randomNormal;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\nimport normal from \"./normal\";\n\nexport default (function sourceRandomLogNormal(source) {\n function randomLogNormal() {\n var randomNormal = normal.source(source).apply(this, arguments);\n return function() {\n return Math.exp(randomNormal());\n };\n }\n\n randomLogNormal.source = sourceRandomLogNormal;\n\n return randomLogNormal;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\n\nexport default (function sourceRandomIrwinHall(source) {\n function randomIrwinHall(n) {\n return function() {\n for (var sum = 0, i = 0; i < n; ++i) sum += source();\n return sum;\n };\n }\n\n randomIrwinHall.source = sourceRandomIrwinHall;\n\n return randomIrwinHall;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\nimport irwinHall from \"./irwinHall\";\n\nexport default (function sourceRandomBates(source) {\n function randomBates(n) {\n var randomIrwinHall = irwinHall.source(source)(n);\n return function() {\n return randomIrwinHall() / n;\n };\n }\n\n randomBates.source = sourceRandomBates;\n\n return randomBates;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\n\nexport default (function sourceRandomExponential(source) {\n function randomExponential(lambda) {\n return function() {\n return -Math.log(1 - source()) / lambda;\n };\n }\n\n randomExponential.source = sourceRandomExponential;\n\n return randomExponential;\n})(defaultSource);\n","export function initRange(domain, range) {\n switch (arguments.length) {\n case 0: break;\n case 1: this.range(domain); break;\n default: this.range(range).domain(domain); break;\n }\n return this;\n}\n\nexport function initInterpolator(domain, interpolator) {\n switch (arguments.length) {\n case 0: break;\n case 1: this.interpolator(domain); break;\n default: this.interpolator(interpolator).domain(domain); break;\n }\n return this;\n}\n","var array = Array.prototype;\n\nexport var map = array.map;\nexport var slice = array.slice;\n","import {map} from \"d3-collection\";\nimport {slice} from \"./array\";\nimport {initRange} from \"./init\";\n\nexport var implicit = {name: \"implicit\"};\n\nexport default function ordinal() {\n var index = map(),\n domain = [],\n range = [],\n unknown = implicit;\n\n function scale(d) {\n var key = d + \"\", i = index.get(key);\n if (!i) {\n if (unknown !== implicit) return unknown;\n index.set(key, i = domain.push(d));\n }\n return range[(i - 1) % range.length];\n }\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [], index = map();\n var i = -1, n = _.length, d, key;\n while (++i < n) if (!index.has(key = (d = _[i]) + \"\")) index.set(key, domain.push(d));\n return scale;\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = slice.call(_), scale) : range.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return ordinal(domain, range).unknown(unknown);\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n","import {range as sequence} from \"d3-array\";\nimport {initRange} from \"./init\";\nimport ordinal from \"./ordinal\";\n\nexport default function band() {\n var scale = ordinal().unknown(undefined),\n domain = scale.domain,\n ordinalRange = scale.range,\n range = [0, 1],\n step,\n bandwidth,\n round = false,\n paddingInner = 0,\n paddingOuter = 0,\n align = 0.5;\n\n delete scale.unknown;\n\n function rescale() {\n var n = domain().length,\n reverse = range[1] < range[0],\n start = range[reverse - 0],\n stop = range[1 - reverse];\n step = (stop - start) / Math.max(1, n - paddingInner + paddingOuter * 2);\n if (round) step = Math.floor(step);\n start += (stop - start - step * (n - paddingInner)) * align;\n bandwidth = step * (1 - paddingInner);\n if (round) start = Math.round(start), bandwidth = Math.round(bandwidth);\n var values = sequence(n).map(function(i) { return start + step * i; });\n return ordinalRange(reverse ? values.reverse() : values);\n }\n\n scale.domain = function(_) {\n return arguments.length ? (domain(_), rescale()) : domain();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = [+_[0], +_[1]], rescale()) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return range = [+_[0], +_[1]], round = true, rescale();\n };\n\n scale.bandwidth = function() {\n return bandwidth;\n };\n\n scale.step = function() {\n return step;\n };\n\n scale.round = function(_) {\n return arguments.length ? (round = !!_, rescale()) : round;\n };\n\n scale.padding = function(_) {\n return arguments.length ? (paddingInner = Math.min(1, paddingOuter = +_), rescale()) : paddingInner;\n };\n\n scale.paddingInner = function(_) {\n return arguments.length ? (paddingInner = Math.min(1, _), rescale()) : paddingInner;\n };\n\n scale.paddingOuter = function(_) {\n return arguments.length ? (paddingOuter = +_, rescale()) : paddingOuter;\n };\n\n scale.align = function(_) {\n return arguments.length ? (align = Math.max(0, Math.min(1, _)), rescale()) : align;\n };\n\n scale.copy = function() {\n return band(domain(), range)\n .round(round)\n .paddingInner(paddingInner)\n .paddingOuter(paddingOuter)\n .align(align);\n };\n\n return initRange.apply(rescale(), arguments);\n}\n\nfunction pointish(scale) {\n var copy = scale.copy;\n\n scale.padding = scale.paddingOuter;\n delete scale.paddingInner;\n delete scale.paddingOuter;\n\n scale.copy = function() {\n return pointish(copy());\n };\n\n return scale;\n}\n\nexport function point() {\n return pointish(band.apply(null, arguments).paddingInner(1));\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(x) {\n return +x;\n}\n","import {bisect} from \"d3-array\";\nimport {interpolate as interpolateValue, interpolateNumber, interpolateRound} from \"d3-interpolate\";\nimport {map, slice} from \"./array\";\nimport constant from \"./constant\";\nimport number from \"./number\";\n\nvar unit = [0, 1];\n\nexport function identity(x) {\n return x;\n}\n\nfunction normalize(a, b) {\n return (b -= (a = +a))\n ? function(x) { return (x - a) / b; }\n : constant(isNaN(b) ? NaN : 0.5);\n}\n\nfunction clamper(domain) {\n var a = domain[0], b = domain[domain.length - 1], t;\n if (a > b) t = a, a = b, b = t;\n return function(x) { return Math.max(a, Math.min(b, x)); };\n}\n\n// normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n// interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b].\nfunction bimap(domain, range, interpolate) {\n var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1];\n if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0);\n else d0 = normalize(d0, d1), r0 = interpolate(r0, r1);\n return function(x) { return r0(d0(x)); };\n}\n\nfunction polymap(domain, range, interpolate) {\n var j = Math.min(domain.length, range.length) - 1,\n d = new Array(j),\n r = new Array(j),\n i = -1;\n\n // Reverse descending domains.\n if (domain[j] < domain[0]) {\n domain = domain.slice().reverse();\n range = range.slice().reverse();\n }\n\n while (++i < j) {\n d[i] = normalize(domain[i], domain[i + 1]);\n r[i] = interpolate(range[i], range[i + 1]);\n }\n\n return function(x) {\n var i = bisect(domain, x, 1, j) - 1;\n return r[i](d[i](x));\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .range(source.range())\n .interpolate(source.interpolate())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nexport function transformer() {\n var domain = unit,\n range = unit,\n interpolate = interpolateValue,\n transform,\n untransform,\n unknown,\n clamp = identity,\n piecewise,\n output,\n input;\n\n function rescale() {\n piecewise = Math.min(domain.length, range.length) > 2 ? polymap : bimap;\n output = input = null;\n return scale;\n }\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x)));\n }\n\n scale.invert = function(y) {\n return clamp(untransform((input || (input = piecewise(range, domain.map(transform), interpolateNumber)))(y)));\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain = map.call(_, number), clamp === identity || (clamp = clamper(domain)), rescale()) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = slice.call(_), rescale()) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return range = slice.call(_), interpolate = interpolateRound, rescale();\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = _ ? clamper(domain) : identity, scale) : clamp !== identity;\n };\n\n scale.interpolate = function(_) {\n return arguments.length ? (interpolate = _, rescale()) : interpolate;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t, u) {\n transform = t, untransform = u;\n return rescale();\n };\n}\n\nexport default function continuous(transform, untransform) {\n return transformer()(transform, untransform);\n}\n","import {tickStep} from \"d3-array\";\nimport {format, formatPrefix, formatSpecifier, precisionFixed, precisionPrefix, precisionRound} from \"d3-format\";\n\nexport default function(start, stop, count, specifier) {\n var step = tickStep(start, stop, count),\n precision;\n specifier = formatSpecifier(specifier == null ? \",f\" : specifier);\n switch (specifier.type) {\n case \"s\": {\n var value = Math.max(Math.abs(start), Math.abs(stop));\n if (specifier.precision == null && !isNaN(precision = precisionPrefix(step, value))) specifier.precision = precision;\n return formatPrefix(specifier, value);\n }\n case \"\":\n case \"e\":\n case \"g\":\n case \"p\":\n case \"r\": {\n if (specifier.precision == null && !isNaN(precision = precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === \"e\");\n break;\n }\n case \"f\":\n case \"%\": {\n if (specifier.precision == null && !isNaN(precision = precisionFixed(step))) specifier.precision = precision - (specifier.type === \"%\") * 2;\n break;\n }\n }\n return format(specifier);\n}\n","import {ticks, tickIncrement} from \"d3-array\";\nimport continuous, {copy, identity} from \"./continuous\";\nimport {initRange} from \"./init\";\nimport tickFormat from \"./tickFormat\";\n\nexport function linearish(scale) {\n var domain = scale.domain;\n\n scale.ticks = function(count) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], count == null ? 10 : count);\n };\n\n scale.tickFormat = function(count, specifier) {\n var d = domain();\n return tickFormat(d[0], d[d.length - 1], count == null ? 10 : count, specifier);\n };\n\n scale.nice = function(count) {\n if (count == null) count = 10;\n\n var d = domain(),\n i0 = 0,\n i1 = d.length - 1,\n start = d[i0],\n stop = d[i1],\n step;\n\n if (stop < start) {\n step = start, start = stop, stop = step;\n step = i0, i0 = i1, i1 = step;\n }\n\n step = tickIncrement(start, stop, count);\n\n if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n step = tickIncrement(start, stop, count);\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n step = tickIncrement(start, stop, count);\n }\n\n if (step > 0) {\n d[i0] = Math.floor(start / step) * step;\n d[i1] = Math.ceil(stop / step) * step;\n domain(d);\n } else if (step < 0) {\n d[i0] = Math.ceil(start * step) / step;\n d[i1] = Math.floor(stop * step) / step;\n domain(d);\n }\n\n return scale;\n };\n\n return scale;\n}\n\nexport default function linear() {\n var scale = continuous(identity, identity);\n\n scale.copy = function() {\n return copy(scale, linear());\n };\n\n initRange.apply(scale, arguments);\n\n return linearish(scale);\n}\n","import {map} from \"./array\";\nimport {linearish} from \"./linear\";\nimport number from \"./number\";\n\nexport default function identity(domain) {\n var unknown;\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : x;\n }\n\n scale.invert = scale;\n\n scale.domain = scale.range = function(_) {\n return arguments.length ? (domain = map.call(_, number), scale) : domain.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return identity(domain).unknown(unknown);\n };\n\n domain = arguments.length ? map.call(domain, number) : [0, 1];\n\n return linearish(scale);\n}\n","export default function(domain, interval) {\n domain = domain.slice();\n\n var i0 = 0,\n i1 = domain.length - 1,\n x0 = domain[i0],\n x1 = domain[i1],\n t;\n\n if (x1 < x0) {\n t = i0, i0 = i1, i1 = t;\n t = x0, x0 = x1, x1 = t;\n }\n\n domain[i0] = interval.floor(x0);\n domain[i1] = interval.ceil(x1);\n return domain;\n}\n","import {ticks} from \"d3-array\";\nimport {format} from \"d3-format\";\nimport nice from \"./nice\";\nimport {copy, transformer} from \"./continuous\";\nimport {initRange} from \"./init\";\n\nfunction transformLog(x) {\n return Math.log(x);\n}\n\nfunction transformExp(x) {\n return Math.exp(x);\n}\n\nfunction transformLogn(x) {\n return -Math.log(-x);\n}\n\nfunction transformExpn(x) {\n return -Math.exp(-x);\n}\n\nfunction pow10(x) {\n return isFinite(x) ? +(\"1e\" + x) : x < 0 ? 0 : x;\n}\n\nfunction powp(base) {\n return base === 10 ? pow10\n : base === Math.E ? Math.exp\n : function(x) { return Math.pow(base, x); };\n}\n\nfunction logp(base) {\n return base === Math.E ? Math.log\n : base === 10 && Math.log10\n || base === 2 && Math.log2\n || (base = Math.log(base), function(x) { return Math.log(x) / base; });\n}\n\nfunction reflect(f) {\n return function(x) {\n return -f(-x);\n };\n}\n\nexport function loggish(transform) {\n var scale = transform(transformLog, transformExp),\n domain = scale.domain,\n base = 10,\n logs,\n pows;\n\n function rescale() {\n logs = logp(base), pows = powp(base);\n if (domain()[0] < 0) {\n logs = reflect(logs), pows = reflect(pows);\n transform(transformLogn, transformExpn);\n } else {\n transform(transformLog, transformExp);\n }\n return scale;\n }\n\n scale.base = function(_) {\n return arguments.length ? (base = +_, rescale()) : base;\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain(_), rescale()) : domain();\n };\n\n scale.ticks = function(count) {\n var d = domain(),\n u = d[0],\n v = d[d.length - 1],\n r;\n\n if (r = v < u) i = u, u = v, v = i;\n\n var i = logs(u),\n j = logs(v),\n p,\n k,\n t,\n n = count == null ? 10 : +count,\n z = [];\n\n if (!(base % 1) && j - i < n) {\n i = Math.round(i) - 1, j = Math.round(j) + 1;\n if (u > 0) for (; i < j; ++i) {\n for (k = 1, p = pows(i); k < base; ++k) {\n t = p * k;\n if (t < u) continue;\n if (t > v) break;\n z.push(t);\n }\n } else for (; i < j; ++i) {\n for (k = base - 1, p = pows(i); k >= 1; --k) {\n t = p * k;\n if (t < u) continue;\n if (t > v) break;\n z.push(t);\n }\n }\n } else {\n z = ticks(i, j, Math.min(j - i, n)).map(pows);\n }\n\n return r ? z.reverse() : z;\n };\n\n scale.tickFormat = function(count, specifier) {\n if (specifier == null) specifier = base === 10 ? \".0e\" : \",\";\n if (typeof specifier !== \"function\") specifier = format(specifier);\n if (count === Infinity) return specifier;\n if (count == null) count = 10;\n var k = Math.max(1, base * count / scale.ticks().length); // TODO fast estimate?\n return function(d) {\n var i = d / pows(Math.round(logs(d)));\n if (i * base < base - 0.5) i *= base;\n return i <= k ? specifier(d) : \"\";\n };\n };\n\n scale.nice = function() {\n return domain(nice(domain(), {\n floor: function(x) { return pows(Math.floor(logs(x))); },\n ceil: function(x) { return pows(Math.ceil(logs(x))); }\n }));\n };\n\n return scale;\n}\n\nexport default function log() {\n var scale = loggish(transformer()).domain([1, 10]);\n\n scale.copy = function() {\n return copy(scale, log()).base(scale.base());\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n","import {linearish} from \"./linear\";\nimport {copy, transformer} from \"./continuous\";\nimport {initRange} from \"./init\";\n\nfunction transformSymlog(c) {\n return function(x) {\n return Math.sign(x) * Math.log1p(Math.abs(x / c));\n };\n}\n\nfunction transformSymexp(c) {\n return function(x) {\n return Math.sign(x) * Math.expm1(Math.abs(x)) * c;\n };\n}\n\nexport function symlogish(transform) {\n var c = 1, scale = transform(transformSymlog(c), transformSymexp(c));\n\n scale.constant = function(_) {\n return arguments.length ? transform(transformSymlog(c = +_), transformSymexp(c)) : c;\n };\n\n return linearish(scale);\n}\n\nexport default function symlog() {\n var scale = symlogish(transformer());\n\n scale.copy = function() {\n return copy(scale, symlog()).constant(scale.constant());\n };\n\n return initRange.apply(scale, arguments);\n}\n","import {linearish} from \"./linear\";\nimport {copy, identity, transformer} from \"./continuous\";\nimport {initRange} from \"./init\";\n\nfunction transformPow(exponent) {\n return function(x) {\n return x < 0 ? -Math.pow(-x, exponent) : Math.pow(x, exponent);\n };\n}\n\nfunction transformSqrt(x) {\n return x < 0 ? -Math.sqrt(-x) : Math.sqrt(x);\n}\n\nfunction transformSquare(x) {\n return x < 0 ? -x * x : x * x;\n}\n\nexport function powish(transform) {\n var scale = transform(identity, identity),\n exponent = 1;\n\n function rescale() {\n return exponent === 1 ? transform(identity, identity)\n : exponent === 0.5 ? transform(transformSqrt, transformSquare)\n : transform(transformPow(exponent), transformPow(1 / exponent));\n }\n\n scale.exponent = function(_) {\n return arguments.length ? (exponent = +_, rescale()) : exponent;\n };\n\n return linearish(scale);\n}\n\nexport default function pow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, pow()).exponent(scale.exponent());\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n\nexport function sqrt() {\n return pow.apply(null, arguments).exponent(0.5);\n}\n","import {ascending, bisect, quantile as threshold} from \"d3-array\";\nimport {slice} from \"./array\";\nimport {initRange} from \"./init\";\n\nexport default function quantile() {\n var domain = [],\n range = [],\n thresholds = [],\n unknown;\n\n function rescale() {\n var i = 0, n = Math.max(1, range.length);\n thresholds = new Array(n - 1);\n while (++i < n) thresholds[i - 1] = threshold(domain, i / n);\n return scale;\n }\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : range[bisect(thresholds, x)];\n }\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return i < 0 ? [NaN, NaN] : [\n i > 0 ? thresholds[i - 1] : domain[0],\n i < thresholds.length ? thresholds[i] : domain[domain.length - 1]\n ];\n };\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [];\n for (var i = 0, n = _.length, d; i < n; ++i) if (d = _[i], d != null && !isNaN(d = +d)) domain.push(d);\n domain.sort(ascending);\n return rescale();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = slice.call(_), rescale()) : range.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.quantiles = function() {\n return thresholds.slice();\n };\n\n scale.copy = function() {\n return quantile()\n .domain(domain)\n .range(range)\n .unknown(unknown);\n };\n\n return initRange.apply(scale, arguments);\n}\n","import {bisect} from \"d3-array\";\nimport {slice} from \"./array\";\nimport {linearish} from \"./linear\";\nimport {initRange} from \"./init\";\n\nexport default function quantize() {\n var x0 = 0,\n x1 = 1,\n n = 1,\n domain = [0.5],\n range = [0, 1],\n unknown;\n\n function scale(x) {\n return x <= x ? range[bisect(domain, x, 0, n)] : unknown;\n }\n\n function rescale() {\n var i = -1;\n domain = new Array(n);\n while (++i < n) domain[i] = ((i + 1) * x1 - (i - n) * x0) / (n + 1);\n return scale;\n }\n\n scale.domain = function(_) {\n return arguments.length ? (x0 = +_[0], x1 = +_[1], rescale()) : [x0, x1];\n };\n\n scale.range = function(_) {\n return arguments.length ? (n = (range = slice.call(_)).length - 1, rescale()) : range.slice();\n };\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return i < 0 ? [NaN, NaN]\n : i < 1 ? [x0, domain[0]]\n : i >= n ? [domain[n - 1], x1]\n : [domain[i - 1], domain[i]];\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : scale;\n };\n\n scale.thresholds = function() {\n return domain.slice();\n };\n\n scale.copy = function() {\n return quantize()\n .domain([x0, x1])\n .range(range)\n .unknown(unknown);\n };\n\n return initRange.apply(linearish(scale), arguments);\n}\n","import {bisect} from \"d3-array\";\nimport {slice} from \"./array\";\nimport {initRange} from \"./init\";\n\nexport default function threshold() {\n var domain = [0.5],\n range = [0, 1],\n unknown,\n n = 1;\n\n function scale(x) {\n return x <= x ? range[bisect(domain, x, 0, n)] : unknown;\n }\n\n scale.domain = function(_) {\n return arguments.length ? (domain = slice.call(_), n = Math.min(domain.length, range.length - 1), scale) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = slice.call(_), n = Math.min(domain.length, range.length - 1), scale) : range.slice();\n };\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return [domain[i - 1], domain[i]];\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return threshold()\n .domain(domain)\n .range(range)\n .unknown(unknown);\n };\n\n return initRange.apply(scale, arguments);\n}\n","var t0 = new Date,\n t1 = new Date;\n\nexport default function newInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date;\n }\n\n interval.floor = function(date) {\n return floori(date = new Date(+date)), date;\n };\n\n interval.ceil = function(date) {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = function(date) {\n var d0 = interval(date),\n d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = function(date, step) {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = function(start, stop, step) {\n var range = [], previous;\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n while (previous < start && start < stop);\n return range;\n };\n\n interval.filter = function(test) {\n return newInterval(function(date) {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, function(date, step) {\n if (date >= date) {\n if (step < 0) while (++step <= 0) {\n while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n } else while (--step >= 0) {\n while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n }\n }\n });\n };\n\n if (count) {\n interval.count = function(start, end) {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = function(step) {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? function(d) { return field(d) % step === 0; }\n : function(d) { return interval.count(0, d) % step === 0; });\n };\n }\n\n return interval;\n}\n","import interval from \"./interval.js\";\n\nvar year = interval(function(date) {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setFullYear(date.getFullYear() + step);\n}, function(start, end) {\n return end.getFullYear() - start.getFullYear();\n}, function(date) {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\nyear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport default year;\nexport var years = year.range;\n","import interval from \"./interval.js\";\n\nvar month = interval(function(date) {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setMonth(date.getMonth() + step);\n}, function(start, end) {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, function(date) {\n return date.getMonth();\n});\n\nexport default month;\nexport var months = month.range;\n","import interval from \"./interval.js\";\nimport {durationMinute, durationWeek} from \"./duration.js\";\n\nfunction weekday(i) {\n return interval(function(date) {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setDate(date.getDate() + step * 7);\n }, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport var sunday = weekday(0);\nexport var monday = weekday(1);\nexport var tuesday = weekday(2);\nexport var wednesday = weekday(3);\nexport var thursday = weekday(4);\nexport var friday = weekday(5);\nexport var saturday = weekday(6);\n\nexport var sundays = sunday.range;\nexport var mondays = monday.range;\nexport var tuesdays = tuesday.range;\nexport var wednesdays = wednesday.range;\nexport var thursdays = thursday.range;\nexport var fridays = friday.range;\nexport var saturdays = saturday.range;\n","export var durationSecond = 1e3;\nexport var durationMinute = 6e4;\nexport var durationHour = 36e5;\nexport var durationDay = 864e5;\nexport var durationWeek = 6048e5;\n","import interval from \"./interval.js\";\nimport {durationDay, durationMinute} from \"./duration.js\";\n\nvar day = interval(function(date) {\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setDate(date.getDate() + step);\n}, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay;\n}, function(date) {\n return date.getDate() - 1;\n});\n\nexport default day;\nexport var days = day.range;\n","import interval from \"./interval.js\";\nimport {durationHour, durationMinute, durationSecond} from \"./duration.js\";\n\nvar hour = interval(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getHours();\n});\n\nexport default hour;\nexport var hours = hour.range;\n","import interval from \"./interval.js\";\nimport {durationMinute, durationSecond} from \"./duration.js\";\n\nvar minute = interval(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getMinutes();\n});\n\nexport default minute;\nexport var minutes = minute.range;\n","import interval from \"./interval.js\";\nimport {durationSecond} from \"./duration.js\";\n\nvar second = interval(function(date) {\n date.setTime(date - date.getMilliseconds());\n}, function(date, step) {\n date.setTime(+date + step * durationSecond);\n}, function(start, end) {\n return (end - start) / durationSecond;\n}, function(date) {\n return date.getUTCSeconds();\n});\n\nexport default second;\nexport var seconds = second.range;\n","import interval from \"./interval.js\";\n\nvar millisecond = interval(function() {\n // noop\n}, function(date, step) {\n date.setTime(+date + step);\n}, function(start, end) {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = function(k) {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return interval(function(date) {\n date.setTime(Math.floor(date / k) * k);\n }, function(date, step) {\n date.setTime(+date + step * k);\n }, function(start, end) {\n return (end - start) / k;\n });\n};\n\nexport default millisecond;\nexport var milliseconds = millisecond.range;\n","import interval from \"./interval.js\";\nimport {durationWeek} from \"./duration.js\";\n\nfunction utcWeekday(i) {\n return interval(function(date) {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, function(start, end) {\n return (end - start) / durationWeek;\n });\n}\n\nexport var utcSunday = utcWeekday(0);\nexport var utcMonday = utcWeekday(1);\nexport var utcTuesday = utcWeekday(2);\nexport var utcWednesday = utcWeekday(3);\nexport var utcThursday = utcWeekday(4);\nexport var utcFriday = utcWeekday(5);\nexport var utcSaturday = utcWeekday(6);\n\nexport var utcSundays = utcSunday.range;\nexport var utcMondays = utcMonday.range;\nexport var utcTuesdays = utcTuesday.range;\nexport var utcWednesdays = utcWednesday.range;\nexport var utcThursdays = utcThursday.range;\nexport var utcFridays = utcFriday.range;\nexport var utcSaturdays = utcSaturday.range;\n","import interval from \"./interval.js\";\nimport {durationDay} from \"./duration.js\";\n\nvar utcDay = interval(function(date) {\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step);\n}, function(start, end) {\n return (end - start) / durationDay;\n}, function(date) {\n return date.getUTCDate() - 1;\n});\n\nexport default utcDay;\nexport var utcDays = utcDay.range;\n","import interval from \"./interval.js\";\n\nvar utcYear = interval(function(date) {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, function(start, end) {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, function(date) {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport default utcYear;\nexport var utcYears = utcYear.range;\n","import {\n timeDay,\n timeSunday,\n timeMonday,\n timeThursday,\n timeYear,\n utcDay,\n utcSunday,\n utcMonday,\n utcThursday,\n utcYear\n} from \"d3-time\";\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newDate(y, m, d) {\n return {y: y, m: m, d: d, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"f\": formatMicroseconds,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"q\": formatQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatSeconds,\n \"u\": formatWeekdayNumberMonday,\n \"U\": formatWeekNumberSunday,\n \"V\": formatWeekNumberISO,\n \"w\": formatWeekdayNumberSunday,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"f\": formatUTCMicroseconds,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"q\": formatUTCQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatUTCSeconds,\n \"u\": formatUTCWeekdayNumberMonday,\n \"U\": formatUTCWeekNumberSunday,\n \"V\": formatUTCWeekNumberISO,\n \"w\": formatUTCWeekdayNumberSunday,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"f\": parseMicroseconds,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"q\": parseQuarter,\n \"Q\": parseUnixTimestamp,\n \"s\": parseUnixTimestampSeconds,\n \"S\": parseSeconds,\n \"u\": parseWeekdayNumberMonday,\n \"U\": parseWeekNumberSunday,\n \"V\": parseWeekNumberISO,\n \"w\": parseWeekdayNumberSunday,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function(date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, Z) {\n return function(string) {\n var d = newDate(1900, undefined, 1),\n i = parseSpecifier(d, specifier, string += \"\", 0),\n week, day;\n if (i != string.length) return null;\n\n // If a UNIX timestamp is specified, return it.\n if (\"Q\" in d) return new Date(d.Q);\n if (\"s\" in d) return new Date(d.s * 1000 + (\"L\" in d ? d.L : 0));\n\n // If this is utcParse, never use the local timezone.\n if (Z && !(\"Z\" in d)) d.Z = 0;\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // If the month was not specified, inherit from the quarter.\n if (d.m === undefined) d.m = \"q\" in d ? d.q : 0;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"V\" in d) {\n if (d.V < 1 || d.V > 53) return null;\n if (!(\"w\" in d)) d.w = 1;\n if (\"Z\" in d) {\n week = utcDate(newDate(d.y, 0, 1)), day = week.getUTCDay();\n week = day > 4 || day === 0 ? utcMonday.ceil(week) : utcMonday(week);\n week = utcDay.offset(week, (d.V - 1) * 7);\n d.y = week.getUTCFullYear();\n d.m = week.getUTCMonth();\n d.d = week.getUTCDate() + (d.w + 6) % 7;\n } else {\n week = localDate(newDate(d.y, 0, 1)), day = week.getDay();\n week = day > 4 || day === 0 ? timeMonday.ceil(week) : timeMonday(week);\n week = timeDay.offset(week, (d.V - 1) * 7);\n d.y = week.getFullYear();\n d.m = week.getMonth();\n d.d = week.getDate() + (d.w + 6) % 7;\n }\n } else if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n day = \"Z\" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return localDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatQuarter(d) {\n return 1 + ~~(d.getMonth() / 3);\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n function formatUTCQuarter(d) {\n return 1 + ~~(d.getUTCMonth() / 3);\n }\n\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function() { return specifier; };\n return f;\n },\n parse: function(specifier) {\n var p = newParse(specifier += \"\", false);\n p.toString = function() { return specifier; };\n return p;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function() { return specifier; };\n return f;\n },\n utcParse: function(specifier) {\n var p = newParse(specifier += \"\", true);\n p.toString = function() { return specifier; };\n return p;\n }\n };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n numberRe = /^\\s*\\d+/, // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n var map = {}, i = -1, n = names.length;\n while (++i < n) map[names[i].toLowerCase()] = i;\n return map;\n}\n\nfunction parseWeekdayNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekdayNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberISO(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseQuarter(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMicroseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 6));\n return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\n\nfunction parseUnixTimestamp(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseUnixTimestampSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.s = +n[0], i + n[0].length) : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMicroseconds(d, p) {\n return formatMilliseconds(d, p) + \"000\";\n}\n\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekdayNumberMonday(d) {\n var day = d.getDay();\n return day === 0 ? 7 : day;\n}\n\nfunction formatWeekNumberSunday(d, p) {\n return pad(timeSunday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction formatWeekNumberISO(d, p) {\n var day = d.getDay();\n d = (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n return pad(timeThursday.count(timeYear(d), d) + (timeYear(d).getDay() === 4), p, 2);\n}\n\nfunction formatWeekdayNumberSunday(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMicroseconds(d, p) {\n return formatUTCMilliseconds(d, p) + \"000\";\n}\n\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekdayNumberMonday(d) {\n var dow = d.getUTCDay();\n return dow === 0 ? 7 : dow;\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction formatUTCWeekNumberISO(d, p) {\n var day = d.getUTCDay();\n d = (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n return pad(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2);\n}\n\nfunction formatUTCWeekdayNumberSunday(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n\nfunction formatUnixTimestamp(d) {\n return +d;\n}\n\nfunction formatUnixTimestampSeconds(d) {\n return Math.floor(+d / 1000);\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}\n","import {bisector, tickStep} from \"d3-array\";\nimport {timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeMillisecond} from \"d3-time\";\nimport {timeFormat} from \"d3-time-format\";\nimport {map} from \"./array\";\nimport continuous, {copy, identity} from \"./continuous\";\nimport {initRange} from \"./init\";\nimport nice from \"./nice\";\n\nvar durationSecond = 1000,\n durationMinute = durationSecond * 60,\n durationHour = durationMinute * 60,\n durationDay = durationHour * 24,\n durationWeek = durationDay * 7,\n durationMonth = durationDay * 30,\n durationYear = durationDay * 365;\n\nfunction date(t) {\n return new Date(t);\n}\n\nfunction number(t) {\n return t instanceof Date ? +t : +new Date(+t);\n}\n\nexport function calendar(year, month, week, day, hour, minute, second, millisecond, format) {\n var scale = continuous(identity, identity),\n invert = scale.invert,\n domain = scale.domain;\n\n var formatMillisecond = format(\".%L\"),\n formatSecond = format(\":%S\"),\n formatMinute = format(\"%I:%M\"),\n formatHour = format(\"%I %p\"),\n formatDay = format(\"%a %d\"),\n formatWeek = format(\"%b %d\"),\n formatMonth = format(\"%B\"),\n formatYear = format(\"%Y\");\n\n var tickIntervals = [\n [second, 1, durationSecond],\n [second, 5, 5 * durationSecond],\n [second, 15, 15 * durationSecond],\n [second, 30, 30 * durationSecond],\n [minute, 1, durationMinute],\n [minute, 5, 5 * durationMinute],\n [minute, 15, 15 * durationMinute],\n [minute, 30, 30 * durationMinute],\n [ hour, 1, durationHour ],\n [ hour, 3, 3 * durationHour ],\n [ hour, 6, 6 * durationHour ],\n [ hour, 12, 12 * durationHour ],\n [ day, 1, durationDay ],\n [ day, 2, 2 * durationDay ],\n [ week, 1, durationWeek ],\n [ month, 1, durationMonth ],\n [ month, 3, 3 * durationMonth ],\n [ year, 1, durationYear ]\n ];\n\n function tickFormat(date) {\n return (second(date) < date ? formatMillisecond\n : minute(date) < date ? formatSecond\n : hour(date) < date ? formatMinute\n : day(date) < date ? formatHour\n : month(date) < date ? (week(date) < date ? formatDay : formatWeek)\n : year(date) < date ? formatMonth\n : formatYear)(date);\n }\n\n function tickInterval(interval, start, stop, step) {\n if (interval == null) interval = 10;\n\n // If a desired tick count is specified, pick a reasonable tick interval\n // based on the extent of the domain and a rough estimate of tick size.\n // Otherwise, assume interval is already a time interval and use it.\n if (typeof interval === \"number\") {\n var target = Math.abs(stop - start) / interval,\n i = bisector(function(i) { return i[2]; }).right(tickIntervals, target);\n if (i === tickIntervals.length) {\n step = tickStep(start / durationYear, stop / durationYear, interval);\n interval = year;\n } else if (i) {\n i = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];\n step = i[1];\n interval = i[0];\n } else {\n step = Math.max(tickStep(start, stop, interval), 1);\n interval = millisecond;\n }\n }\n\n return step == null ? interval : interval.every(step);\n }\n\n scale.invert = function(y) {\n return new Date(invert(y));\n };\n\n scale.domain = function(_) {\n return arguments.length ? domain(map.call(_, number)) : domain().map(date);\n };\n\n scale.ticks = function(interval, step) {\n var d = domain(),\n t0 = d[0],\n t1 = d[d.length - 1],\n r = t1 < t0,\n t;\n if (r) t = t0, t0 = t1, t1 = t;\n t = tickInterval(interval, t0, t1, step);\n t = t ? t.range(t0, t1 + 1) : []; // inclusive stop\n return r ? t.reverse() : t;\n };\n\n scale.tickFormat = function(count, specifier) {\n return specifier == null ? tickFormat : format(specifier);\n };\n\n scale.nice = function(interval, step) {\n var d = domain();\n return (interval = tickInterval(interval, d[0], d[d.length - 1], step))\n ? domain(nice(d, interval))\n : scale;\n };\n\n scale.copy = function() {\n return copy(scale, calendar(year, month, week, day, hour, minute, second, millisecond, format));\n };\n\n return scale;\n}\n\nexport default function() {\n return initRange.apply(calendar(timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeMillisecond, timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]), arguments);\n}\n","import interval from \"./interval.js\";\n\nvar utcMonth = interval(function(date) {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, function(start, end) {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, function(date) {\n return date.getUTCMonth();\n});\n\nexport default utcMonth;\nexport var utcMonths = utcMonth.range;\n","import interval from \"./interval.js\";\nimport {durationHour} from \"./duration.js\";\n\nvar utcHour = interval(function(date) {\n date.setUTCMinutes(0, 0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getUTCHours();\n});\n\nexport default utcHour;\nexport var utcHours = utcHour.range;\n","import interval from \"./interval.js\";\nimport {durationMinute} from \"./duration.js\";\n\nvar utcMinute = interval(function(date) {\n date.setUTCSeconds(0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getUTCMinutes();\n});\n\nexport default utcMinute;\nexport var utcMinutes = utcMinute.range;\n","import {calendar} from \"./time\";\nimport {utcFormat} from \"d3-time-format\";\nimport {utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcMillisecond} from \"d3-time\";\nimport {initRange} from \"./init\";\n\nexport default function() {\n return initRange.apply(calendar(utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcMillisecond, utcFormat).domain([Date.UTC(2000, 0, 1), Date.UTC(2000, 0, 2)]), arguments);\n}\n","import {identity} from \"./continuous\";\nimport {initInterpolator} from \"./init\";\nimport {linearish} from \"./linear\";\nimport {loggish} from \"./log\";\nimport {symlogish} from \"./symlog\";\nimport {powish} from \"./pow\";\n\nfunction transformer() {\n var x0 = 0,\n x1 = 1,\n t0,\n t1,\n k10,\n transform,\n interpolator = identity,\n clamp = false,\n unknown;\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : interpolator(k10 === 0 ? 0.5 : (x = (transform(x) - t0) * k10, clamp ? Math.max(0, Math.min(1, x)) : x));\n }\n\n scale.domain = function(_) {\n return arguments.length ? (t0 = transform(x0 = +_[0]), t1 = transform(x1 = +_[1]), k10 = t0 === t1 ? 0 : 1 / (t1 - t0), scale) : [x0, x1];\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = !!_, scale) : clamp;\n };\n\n scale.interpolator = function(_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t) {\n transform = t, t0 = t(x0), t1 = t(x1), k10 = t0 === t1 ? 0 : 1 / (t1 - t0);\n return scale;\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .interpolator(source.interpolator())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nexport default function sequential() {\n var scale = linearish(transformer()(identity));\n\n scale.copy = function() {\n return copy(scale, sequential());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialLog() {\n var scale = loggish(transformer()).domain([1, 10]);\n\n scale.copy = function() {\n return copy(scale, sequentialLog()).base(scale.base());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialSymlog() {\n var scale = symlogish(transformer());\n\n scale.copy = function() {\n return copy(scale, sequentialSymlog()).constant(scale.constant());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialPow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, sequentialPow()).exponent(scale.exponent());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialSqrt() {\n return sequentialPow.apply(null, arguments).exponent(0.5);\n}\n","import {ascending, bisect} from \"d3-array\";\nimport {identity} from \"./continuous\";\nimport {initInterpolator} from \"./init\";\n\nexport default function sequentialQuantile() {\n var domain = [],\n interpolator = identity;\n\n function scale(x) {\n if (!isNaN(x = +x)) return interpolator((bisect(domain, x) - 1) / (domain.length - 1));\n }\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [];\n for (var i = 0, n = _.length, d; i < n; ++i) if (d = _[i], d != null && !isNaN(d = +d)) domain.push(d);\n domain.sort(ascending);\n return scale;\n };\n\n scale.interpolator = function(_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n scale.copy = function() {\n return sequentialQuantile(interpolator).domain(domain);\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n","import {identity} from \"./continuous\";\nimport {initInterpolator} from \"./init\";\nimport {linearish} from \"./linear\";\nimport {loggish} from \"./log\";\nimport {copy} from \"./sequential\";\nimport {symlogish} from \"./symlog\";\nimport {powish} from \"./pow\";\n\nfunction transformer() {\n var x0 = 0,\n x1 = 0.5,\n x2 = 1,\n t0,\n t1,\n t2,\n k10,\n k21,\n interpolator = identity,\n transform,\n clamp = false,\n unknown;\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : (x = 0.5 + ((x = +transform(x)) - t1) * (x < t1 ? k10 : k21), interpolator(clamp ? Math.max(0, Math.min(1, x)) : x));\n }\n\n scale.domain = function(_) {\n return arguments.length ? (t0 = transform(x0 = +_[0]), t1 = transform(x1 = +_[1]), t2 = transform(x2 = +_[2]), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1), scale) : [x0, x1, x2];\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = !!_, scale) : clamp;\n };\n\n scale.interpolator = function(_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t) {\n transform = t, t0 = t(x0), t1 = t(x1), t2 = t(x2), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1);\n return scale;\n };\n}\n\nexport default function diverging() {\n var scale = linearish(transformer()(identity));\n\n scale.copy = function() {\n return copy(scale, diverging());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingLog() {\n var scale = loggish(transformer()).domain([0.1, 1, 10]);\n\n scale.copy = function() {\n return copy(scale, divergingLog()).base(scale.base());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingSymlog() {\n var scale = symlogish(transformer());\n\n scale.copy = function() {\n return copy(scale, divergingSymlog()).constant(scale.constant());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingPow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, divergingPow()).exponent(scale.exponent());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingSqrt() {\n return divergingPow.apply(null, arguments).exponent(0.5);\n}\n","export default function(specifier) {\n var n = specifier.length / 6 | 0, colors = new Array(n), i = 0;\n while (i < n) colors[i] = \"#\" + specifier.slice(i * 6, ++i * 6);\n return colors;\n}\n","import colors from \"../colors.js\";\n\nexport default colors(\"1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"7fc97fbeaed4fdc086ffff99386cb0f0027fbf5b17666666\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"1b9e77d95f027570b3e7298a66a61ee6ab02a6761d666666\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"fbb4aeb3cde3ccebc5decbe4fed9a6ffffcce5d8bdfddaecf2f2f2\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"b3e2cdfdcdaccbd5e8f4cae4e6f5c9fff2aef1e2cccccccc\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"e41a1c377eb84daf4a984ea3ff7f00ffff33a65628f781bf999999\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"66c2a5fc8d628da0cbe78ac3a6d854ffd92fe5c494b3b3b3\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9bc80bdccebc5ffed6f\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"4e79a7f28e2ce1575976b7b259a14fedc949af7aa1ff9da79c755fbab0ab\");\n","import {interpolateRgbBasis} from \"d3-interpolate\";\n\nexport default function(scheme) {\n return interpolateRgbBasis(scheme[scheme.length - 1]);\n}\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"d8b365f5f5f55ab4ac\",\n \"a6611adfc27d80cdc1018571\",\n \"a6611adfc27df5f5f580cdc1018571\",\n \"8c510ad8b365f6e8c3c7eae55ab4ac01665e\",\n \"8c510ad8b365f6e8c3f5f5f5c7eae55ab4ac01665e\",\n \"8c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e\",\n \"8c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e\",\n \"5430058c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e003c30\",\n \"5430058c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e003c30\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"af8dc3f7f7f77fbf7b\",\n \"7b3294c2a5cfa6dba0008837\",\n \"7b3294c2a5cff7f7f7a6dba0008837\",\n \"762a83af8dc3e7d4e8d9f0d37fbf7b1b7837\",\n \"762a83af8dc3e7d4e8f7f7f7d9f0d37fbf7b1b7837\",\n \"762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b7837\",\n \"762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b7837\",\n \"40004b762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b783700441b\",\n \"40004b762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b783700441b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e9a3c9f7f7f7a1d76a\",\n \"d01c8bf1b6dab8e1864dac26\",\n \"d01c8bf1b6daf7f7f7b8e1864dac26\",\n \"c51b7de9a3c9fde0efe6f5d0a1d76a4d9221\",\n \"c51b7de9a3c9fde0eff7f7f7e6f5d0a1d76a4d9221\",\n \"c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221\",\n \"c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221\",\n \"8e0152c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221276419\",\n \"8e0152c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221276419\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"998ec3f7f7f7f1a340\",\n \"5e3c99b2abd2fdb863e66101\",\n \"5e3c99b2abd2f7f7f7fdb863e66101\",\n \"542788998ec3d8daebfee0b6f1a340b35806\",\n \"542788998ec3d8daebf7f7f7fee0b6f1a340b35806\",\n \"5427888073acb2abd2d8daebfee0b6fdb863e08214b35806\",\n \"5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b35806\",\n \"2d004b5427888073acb2abd2d8daebfee0b6fdb863e08214b358067f3b08\",\n \"2d004b5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b358067f3b08\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"ef8a62f7f7f767a9cf\",\n \"ca0020f4a58292c5de0571b0\",\n \"ca0020f4a582f7f7f792c5de0571b0\",\n \"b2182bef8a62fddbc7d1e5f067a9cf2166ac\",\n \"b2182bef8a62fddbc7f7f7f7d1e5f067a9cf2166ac\",\n \"b2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac\",\n \"b2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac\",\n \"67001fb2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac053061\",\n \"67001fb2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac053061\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"ef8a62ffffff999999\",\n \"ca0020f4a582bababa404040\",\n \"ca0020f4a582ffffffbababa404040\",\n \"b2182bef8a62fddbc7e0e0e09999994d4d4d\",\n \"b2182bef8a62fddbc7ffffffe0e0e09999994d4d4d\",\n \"b2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d\",\n \"b2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d\",\n \"67001fb2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d1a1a1a\",\n \"67001fb2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d1a1a1a\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fc8d59ffffbf91bfdb\",\n \"d7191cfdae61abd9e92c7bb6\",\n \"d7191cfdae61ffffbfabd9e92c7bb6\",\n \"d73027fc8d59fee090e0f3f891bfdb4575b4\",\n \"d73027fc8d59fee090ffffbfe0f3f891bfdb4575b4\",\n \"d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4\",\n \"d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4\",\n \"a50026d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4313695\",\n \"a50026d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4313695\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fc8d59ffffbf91cf60\",\n \"d7191cfdae61a6d96a1a9641\",\n \"d7191cfdae61ffffbfa6d96a1a9641\",\n \"d73027fc8d59fee08bd9ef8b91cf601a9850\",\n \"d73027fc8d59fee08bffffbfd9ef8b91cf601a9850\",\n \"d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850\",\n \"d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850\",\n \"a50026d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850006837\",\n \"a50026d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850006837\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fc8d59ffffbf99d594\",\n \"d7191cfdae61abdda42b83ba\",\n \"d7191cfdae61ffffbfabdda42b83ba\",\n \"d53e4ffc8d59fee08be6f59899d5943288bd\",\n \"d53e4ffc8d59fee08bffffbfe6f59899d5943288bd\",\n \"d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd\",\n \"d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd\",\n \"9e0142d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd5e4fa2\",\n \"9e0142d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd5e4fa2\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e5f5f999d8c92ca25f\",\n \"edf8fbb2e2e266c2a4238b45\",\n \"edf8fbb2e2e266c2a42ca25f006d2c\",\n \"edf8fbccece699d8c966c2a42ca25f006d2c\",\n \"edf8fbccece699d8c966c2a441ae76238b45005824\",\n \"f7fcfde5f5f9ccece699d8c966c2a441ae76238b45005824\",\n \"f7fcfde5f5f9ccece699d8c966c2a441ae76238b45006d2c00441b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e0ecf49ebcda8856a7\",\n \"edf8fbb3cde38c96c688419d\",\n \"edf8fbb3cde38c96c68856a7810f7c\",\n \"edf8fbbfd3e69ebcda8c96c68856a7810f7c\",\n \"edf8fbbfd3e69ebcda8c96c68c6bb188419d6e016b\",\n \"f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d6e016b\",\n \"f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d810f7c4d004b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e0f3dba8ddb543a2ca\",\n \"f0f9e8bae4bc7bccc42b8cbe\",\n \"f0f9e8bae4bc7bccc443a2ca0868ac\",\n \"f0f9e8ccebc5a8ddb57bccc443a2ca0868ac\",\n \"f0f9e8ccebc5a8ddb57bccc44eb3d32b8cbe08589e\",\n \"f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe08589e\",\n \"f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe0868ac084081\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fee8c8fdbb84e34a33\",\n \"fef0d9fdcc8afc8d59d7301f\",\n \"fef0d9fdcc8afc8d59e34a33b30000\",\n \"fef0d9fdd49efdbb84fc8d59e34a33b30000\",\n \"fef0d9fdd49efdbb84fc8d59ef6548d7301f990000\",\n \"fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301f990000\",\n \"fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301fb300007f0000\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"ece2f0a6bddb1c9099\",\n \"f6eff7bdc9e167a9cf02818a\",\n \"f6eff7bdc9e167a9cf1c9099016c59\",\n \"f6eff7d0d1e6a6bddb67a9cf1c9099016c59\",\n \"f6eff7d0d1e6a6bddb67a9cf3690c002818a016450\",\n \"fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016450\",\n \"fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016c59014636\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"ece7f2a6bddb2b8cbe\",\n \"f1eef6bdc9e174a9cf0570b0\",\n \"f1eef6bdc9e174a9cf2b8cbe045a8d\",\n \"f1eef6d0d1e6a6bddb74a9cf2b8cbe045a8d\",\n \"f1eef6d0d1e6a6bddb74a9cf3690c00570b0034e7b\",\n \"fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0034e7b\",\n \"fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0045a8d023858\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e7e1efc994c7dd1c77\",\n \"f1eef6d7b5d8df65b0ce1256\",\n \"f1eef6d7b5d8df65b0dd1c77980043\",\n \"f1eef6d4b9dac994c7df65b0dd1c77980043\",\n \"f1eef6d4b9dac994c7df65b0e7298ace125691003f\",\n \"f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125691003f\",\n \"f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125698004367001f\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fde0ddfa9fb5c51b8a\",\n \"feebe2fbb4b9f768a1ae017e\",\n \"feebe2fbb4b9f768a1c51b8a7a0177\",\n \"feebe2fcc5c0fa9fb5f768a1c51b8a7a0177\",\n \"feebe2fcc5c0fa9fb5f768a1dd3497ae017e7a0177\",\n \"fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a0177\",\n \"fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a017749006a\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"edf8b17fcdbb2c7fb8\",\n \"ffffcca1dab441b6c4225ea8\",\n \"ffffcca1dab441b6c42c7fb8253494\",\n \"ffffccc7e9b47fcdbb41b6c42c7fb8253494\",\n \"ffffccc7e9b47fcdbb41b6c41d91c0225ea80c2c84\",\n \"ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea80c2c84\",\n \"ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea8253494081d58\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"f7fcb9addd8e31a354\",\n \"ffffccc2e69978c679238443\",\n \"ffffccc2e69978c67931a354006837\",\n \"ffffccd9f0a3addd8e78c67931a354006837\",\n \"ffffccd9f0a3addd8e78c67941ab5d238443005a32\",\n \"ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443005a32\",\n \"ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443006837004529\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fff7bcfec44fd95f0e\",\n \"ffffd4fed98efe9929cc4c02\",\n \"ffffd4fed98efe9929d95f0e993404\",\n \"ffffd4fee391fec44ffe9929d95f0e993404\",\n \"ffffd4fee391fec44ffe9929ec7014cc4c028c2d04\",\n \"ffffe5fff7bcfee391fec44ffe9929ec7014cc4c028c2d04\",\n \"ffffe5fff7bcfee391fec44ffe9929ec7014cc4c02993404662506\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"ffeda0feb24cf03b20\",\n \"ffffb2fecc5cfd8d3ce31a1c\",\n \"ffffb2fecc5cfd8d3cf03b20bd0026\",\n \"ffffb2fed976feb24cfd8d3cf03b20bd0026\",\n \"ffffb2fed976feb24cfd8d3cfc4e2ae31a1cb10026\",\n \"ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cb10026\",\n \"ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cbd0026800026\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"deebf79ecae13182bd\",\n \"eff3ffbdd7e76baed62171b5\",\n \"eff3ffbdd7e76baed63182bd08519c\",\n \"eff3ffc6dbef9ecae16baed63182bd08519c\",\n \"eff3ffc6dbef9ecae16baed64292c62171b5084594\",\n \"f7fbffdeebf7c6dbef9ecae16baed64292c62171b5084594\",\n \"f7fbffdeebf7c6dbef9ecae16baed64292c62171b508519c08306b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e5f5e0a1d99b31a354\",\n \"edf8e9bae4b374c476238b45\",\n \"edf8e9bae4b374c47631a354006d2c\",\n \"edf8e9c7e9c0a1d99b74c47631a354006d2c\",\n \"edf8e9c7e9c0a1d99b74c47641ab5d238b45005a32\",\n \"f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45005a32\",\n \"f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45006d2c00441b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"f0f0f0bdbdbd636363\",\n \"f7f7f7cccccc969696525252\",\n \"f7f7f7cccccc969696636363252525\",\n \"f7f7f7d9d9d9bdbdbd969696636363252525\",\n \"f7f7f7d9d9d9bdbdbd969696737373525252252525\",\n \"fffffff0f0f0d9d9d9bdbdbd969696737373525252252525\",\n \"fffffff0f0f0d9d9d9bdbdbd969696737373525252252525000000\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"efedf5bcbddc756bb1\",\n \"f2f0f7cbc9e29e9ac86a51a3\",\n \"f2f0f7cbc9e29e9ac8756bb154278f\",\n \"f2f0f7dadaebbcbddc9e9ac8756bb154278f\",\n \"f2f0f7dadaebbcbddc9e9ac8807dba6a51a34a1486\",\n \"fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a34a1486\",\n \"fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a354278f3f007d\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fee0d2fc9272de2d26\",\n \"fee5d9fcae91fb6a4acb181d\",\n \"fee5d9fcae91fb6a4ade2d26a50f15\",\n \"fee5d9fcbba1fc9272fb6a4ade2d26a50f15\",\n \"fee5d9fcbba1fc9272fb6a4aef3b2ccb181d99000d\",\n \"fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181d99000d\",\n \"fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181da50f1567000d\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fee6cefdae6be6550d\",\n \"feeddefdbe85fd8d3cd94701\",\n \"feeddefdbe85fd8d3ce6550da63603\",\n \"feeddefdd0a2fdae6bfd8d3ce6550da63603\",\n \"feeddefdd0a2fdae6bfd8d3cf16913d948018c2d04\",\n \"fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d948018c2d04\",\n \"fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d94801a636037f2704\"\n).map(colors);\n\nexport default ramp(scheme);\n","export default function(t) {\n t = Math.max(0, Math.min(1, t));\n return \"rgb(\"\n + Math.max(0, Math.min(255, Math.round(-4.54 - t * (35.34 - t * (2381.73 - t * (6402.7 - t * (7024.72 - t * 2710.57))))))) + \", \"\n + Math.max(0, Math.min(255, Math.round(32.49 + t * (170.73 + t * (52.82 - t * (131.46 - t * (176.58 - t * 67.37))))))) + \", \"\n + Math.max(0, Math.min(255, Math.round(81.24 + t * (442.36 - t * (2482.43 - t * (6167.24 - t * (6614.94 - t * 2475.67)))))))\n + \")\";\n}\n","import {cubehelix} from \"d3-color\";\nimport {interpolateCubehelixLong} from \"d3-interpolate\";\n\nexport default interpolateCubehelixLong(cubehelix(300, 0.5, 0.0), cubehelix(-240, 0.5, 1.0));\n","import {cubehelix} from \"d3-color\";\nimport {interpolateCubehelixLong} from \"d3-interpolate\";\n\nexport var warm = interpolateCubehelixLong(cubehelix(-100, 0.75, 0.35), cubehelix(80, 1.50, 0.8));\n\nexport var cool = interpolateCubehelixLong(cubehelix(260, 0.75, 0.35), cubehelix(80, 1.50, 0.8));\n\nvar c = cubehelix();\n\nexport default function(t) {\n if (t < 0 || t > 1) t -= Math.floor(t);\n var ts = Math.abs(t - 0.5);\n c.h = 360 * t - 100;\n c.s = 1.5 - 1.5 * ts;\n c.l = 0.8 - 0.9 * ts;\n return c + \"\";\n}\n","import {rgb} from \"d3-color\";\n\nvar c = rgb(),\n pi_1_3 = Math.PI / 3,\n pi_2_3 = Math.PI * 2 / 3;\n\nexport default function(t) {\n var x;\n t = (0.5 - t) * Math.PI;\n c.r = 255 * (x = Math.sin(t)) * x;\n c.g = 255 * (x = Math.sin(t + pi_1_3)) * x;\n c.b = 255 * (x = Math.sin(t + pi_2_3)) * x;\n return c + \"\";\n}\n","export default function(t) {\n t = Math.max(0, Math.min(1, t));\n return \"rgb(\"\n + Math.max(0, Math.min(255, Math.round(34.61 + t * (1172.33 - t * (10793.56 - t * (33300.12 - t * (38394.49 - t * 14825.05))))))) + \", \"\n + Math.max(0, Math.min(255, Math.round(23.31 + t * (557.33 + t * (1225.33 - t * (3574.96 - t * (1073.77 + t * 707.56))))))) + \", \"\n + Math.max(0, Math.min(255, Math.round(27.2 + t * (3211.1 - t * (15327.97 - t * (27814 - t * (22569.18 - t * 6838.66)))))))\n + \")\";\n}\n","import colors from \"../colors.js\";\n\nfunction ramp(range) {\n var n = range.length;\n return function(t) {\n return range[Math.max(0, Math.min(n - 1, Math.floor(t * n)))];\n };\n}\n\nexport default ramp(colors(\"44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725\"));\n\nexport var magma = ramp(colors(\"00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf\"));\n\nexport var inferno = ramp(colors(\"00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4\"));\n\nexport var plasma = ramp(colors(\"0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d43039e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a45901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a29511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a62098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d04d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5de66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3afba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffdb42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc827fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1f525f0f724f0f921\"));\n","import creator from \"./creator\";\nimport select from \"./select\";\n\nexport default function(name) {\n return select(creator(name).call(document.documentElement));\n}\n","var nextId = 0;\n\nexport default function local() {\n return new Local;\n}\n\nfunction Local() {\n this._ = \"@\" + (++nextId).toString(36);\n}\n\nLocal.prototype = local.prototype = {\n constructor: Local,\n get: function(node) {\n var id = this._;\n while (!(id in node)) if (!(node = node.parentNode)) return;\n return node[id];\n },\n set: function(node, value) {\n return node[this._] = value;\n },\n remove: function(node) {\n return this._ in node && delete node[this._];\n },\n toString: function() {\n return this._;\n }\n};\n","import {Selection, root} from \"./selection/index\";\n\nexport default function(selector) {\n return typeof selector === \"string\"\n ? new Selection([document.querySelectorAll(selector)], [document.documentElement])\n : new Selection([selector == null ? [] : selector], root);\n}\n","import sourceEvent from \"./sourceEvent\";\nimport point from \"./point\";\n\nexport default function(node, touches) {\n if (touches == null) touches = sourceEvent().touches;\n\n for (var i = 0, n = touches ? touches.length : 0, points = new Array(n); i < n; ++i) {\n points[i] = point(node, touches[i]);\n }\n\n return points;\n}\n","export default function(x) {\n return function constant() {\n return x;\n };\n}\n","export var abs = Math.abs;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var max = Math.max;\nexport var min = Math.min;\nexport var sin = Math.sin;\nexport var sqrt = Math.sqrt;\n\nexport var epsilon = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var tau = 2 * pi;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x);\n}\n","import {path} from \"d3-path\";\nimport constant from \"./constant.js\";\nimport {abs, acos, asin, atan2, cos, epsilon, halfPi, max, min, pi, sin, sqrt, tau} from \"./math.js\";\n\nfunction arcInnerRadius(d) {\n return d.innerRadius;\n}\n\nfunction arcOuterRadius(d) {\n return d.outerRadius;\n}\n\nfunction arcStartAngle(d) {\n return d.startAngle;\n}\n\nfunction arcEndAngle(d) {\n return d.endAngle;\n}\n\nfunction arcPadAngle(d) {\n return d && d.padAngle; // Note: optional!\n}\n\nfunction intersect(x0, y0, x1, y1, x2, y2, x3, y3) {\n var x10 = x1 - x0, y10 = y1 - y0,\n x32 = x3 - x2, y32 = y3 - y2,\n t = y32 * x10 - x32 * y10;\n if (t * t < epsilon) return;\n t = (x32 * (y0 - y2) - y32 * (x0 - x2)) / t;\n return [x0 + t * x10, y0 + t * y10];\n}\n\n// Compute perpendicular offset line of length rc.\n// http://mathworld.wolfram.com/Circle-LineIntersection.html\nfunction cornerTangents(x0, y0, x1, y1, r1, rc, cw) {\n var x01 = x0 - x1,\n y01 = y0 - y1,\n lo = (cw ? rc : -rc) / sqrt(x01 * x01 + y01 * y01),\n ox = lo * y01,\n oy = -lo * x01,\n x11 = x0 + ox,\n y11 = y0 + oy,\n x10 = x1 + ox,\n y10 = y1 + oy,\n x00 = (x11 + x10) / 2,\n y00 = (y11 + y10) / 2,\n dx = x10 - x11,\n dy = y10 - y11,\n d2 = dx * dx + dy * dy,\n r = r1 - rc,\n D = x11 * y10 - x10 * y11,\n d = (dy < 0 ? -1 : 1) * sqrt(max(0, r * r * d2 - D * D)),\n cx0 = (D * dy - dx * d) / d2,\n cy0 = (-D * dx - dy * d) / d2,\n cx1 = (D * dy + dx * d) / d2,\n cy1 = (-D * dx + dy * d) / d2,\n dx0 = cx0 - x00,\n dy0 = cy0 - y00,\n dx1 = cx1 - x00,\n dy1 = cy1 - y00;\n\n // Pick the closer of the two intersection points.\n // TODO Is there a faster way to determine which intersection to use?\n if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;\n\n return {\n cx: cx0,\n cy: cy0,\n x01: -ox,\n y01: -oy,\n x11: cx0 * (r1 / r - 1),\n y11: cy0 * (r1 / r - 1)\n };\n}\n\nexport default function() {\n var innerRadius = arcInnerRadius,\n outerRadius = arcOuterRadius,\n cornerRadius = constant(0),\n padRadius = null,\n startAngle = arcStartAngle,\n endAngle = arcEndAngle,\n padAngle = arcPadAngle,\n context = null;\n\n function arc() {\n var buffer,\n r,\n r0 = +innerRadius.apply(this, arguments),\n r1 = +outerRadius.apply(this, arguments),\n a0 = startAngle.apply(this, arguments) - halfPi,\n a1 = endAngle.apply(this, arguments) - halfPi,\n da = abs(a1 - a0),\n cw = a1 > a0;\n\n if (!context) context = buffer = path();\n\n // Ensure that the outer radius is always larger than the inner radius.\n if (r1 < r0) r = r1, r1 = r0, r0 = r;\n\n // Is it a point?\n if (!(r1 > epsilon)) context.moveTo(0, 0);\n\n // Or is it a circle or annulus?\n else if (da > tau - epsilon) {\n context.moveTo(r1 * cos(a0), r1 * sin(a0));\n context.arc(0, 0, r1, a0, a1, !cw);\n if (r0 > epsilon) {\n context.moveTo(r0 * cos(a1), r0 * sin(a1));\n context.arc(0, 0, r0, a1, a0, cw);\n }\n }\n\n // Or is it a circular or annular sector?\n else {\n var a01 = a0,\n a11 = a1,\n a00 = a0,\n a10 = a1,\n da0 = da,\n da1 = da,\n ap = padAngle.apply(this, arguments) / 2,\n rp = (ap > epsilon) && (padRadius ? +padRadius.apply(this, arguments) : sqrt(r0 * r0 + r1 * r1)),\n rc = min(abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments)),\n rc0 = rc,\n rc1 = rc,\n t0,\n t1;\n\n // Apply padding? Note that since r1 ≥ r0, da1 ≥ da0.\n if (rp > epsilon) {\n var p0 = asin(rp / r0 * sin(ap)),\n p1 = asin(rp / r1 * sin(ap));\n if ((da0 -= p0 * 2) > epsilon) p0 *= (cw ? 1 : -1), a00 += p0, a10 -= p0;\n else da0 = 0, a00 = a10 = (a0 + a1) / 2;\n if ((da1 -= p1 * 2) > epsilon) p1 *= (cw ? 1 : -1), a01 += p1, a11 -= p1;\n else da1 = 0, a01 = a11 = (a0 + a1) / 2;\n }\n\n var x01 = r1 * cos(a01),\n y01 = r1 * sin(a01),\n x10 = r0 * cos(a10),\n y10 = r0 * sin(a10);\n\n // Apply rounded corners?\n if (rc > epsilon) {\n var x11 = r1 * cos(a11),\n y11 = r1 * sin(a11),\n x00 = r0 * cos(a00),\n y00 = r0 * sin(a00),\n oc;\n\n // Restrict the corner radius according to the sector angle.\n if (da < pi && (oc = intersect(x01, y01, x00, y00, x11, y11, x10, y10))) {\n var ax = x01 - oc[0],\n ay = y01 - oc[1],\n bx = x11 - oc[0],\n by = y11 - oc[1],\n kc = 1 / sin(acos((ax * bx + ay * by) / (sqrt(ax * ax + ay * ay) * sqrt(bx * bx + by * by))) / 2),\n lc = sqrt(oc[0] * oc[0] + oc[1] * oc[1]);\n rc0 = min(rc, (r0 - lc) / (kc - 1));\n rc1 = min(rc, (r1 - lc) / (kc + 1));\n }\n }\n\n // Is the sector collapsed to a line?\n if (!(da1 > epsilon)) context.moveTo(x01, y01);\n\n // Does the sector’s outer ring have rounded corners?\n else if (rc1 > epsilon) {\n t0 = cornerTangents(x00, y00, x01, y01, r1, rc1, cw);\n t1 = cornerTangents(x11, y11, x10, y10, r1, rc1, cw);\n\n context.moveTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc1 < rc) context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r1, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), !cw);\n context.arc(t1.cx, t1.cy, rc1, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the outer ring just a circular arc?\n else context.moveTo(x01, y01), context.arc(0, 0, r1, a01, a11, !cw);\n\n // Is there no inner ring, and it’s a circular sector?\n // Or perhaps it’s an annular sector collapsed due to padding?\n if (!(r0 > epsilon) || !(da0 > epsilon)) context.lineTo(x10, y10);\n\n // Does the sector’s inner ring (or point) have rounded corners?\n else if (rc0 > epsilon) {\n t0 = cornerTangents(x10, y10, x11, y11, r0, -rc0, cw);\n t1 = cornerTangents(x01, y01, x00, y00, r0, -rc0, cw);\n\n context.lineTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc0 < rc) context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r0, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), cw);\n context.arc(t1.cx, t1.cy, rc0, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the inner ring just a circular arc?\n else context.arc(0, 0, r0, a10, a00, cw);\n }\n\n context.closePath();\n\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n arc.centroid = function() {\n var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2,\n a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - pi / 2;\n return [cos(a) * r, sin(a) * r];\n };\n\n arc.innerRadius = function(_) {\n return arguments.length ? (innerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : innerRadius;\n };\n\n arc.outerRadius = function(_) {\n return arguments.length ? (outerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : outerRadius;\n };\n\n arc.cornerRadius = function(_) {\n return arguments.length ? (cornerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : cornerRadius;\n };\n\n arc.padRadius = function(_) {\n return arguments.length ? (padRadius = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), arc) : padRadius;\n };\n\n arc.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : startAngle;\n };\n\n arc.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : endAngle;\n };\n\n arc.padAngle = function(_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : padAngle;\n };\n\n arc.context = function(_) {\n return arguments.length ? ((context = _ == null ? null : _), arc) : context;\n };\n\n return arc;\n}\n","function Linear(context) {\n this._context = context;\n}\n\nLinear.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // proceed\n default: this._context.lineTo(x, y); break;\n }\n }\n};\n\nexport default function(context) {\n return new Linear(context);\n}\n","export function x(p) {\n return p[0];\n}\n\nexport function y(p) {\n return p[1];\n}\n","import {path} from \"d3-path\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function() {\n var x = pointX,\n y = pointY,\n defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null;\n\n function line(data) {\n var i,\n n = data.length,\n d,\n defined0 = false,\n buffer;\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) output.lineStart();\n else output.lineEnd();\n }\n if (defined0) output.point(+x(d, i, data), +y(d, i, data));\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n line.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), line) : x;\n };\n\n line.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), line) : y;\n };\n\n line.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), line) : defined;\n };\n\n line.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve;\n };\n\n line.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context;\n };\n\n return line;\n}\n","import {path} from \"d3-path\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport line from \"./line.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function() {\n var x0 = pointX,\n x1 = null,\n y0 = constant(0),\n y1 = pointY,\n defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null;\n\n function area(data) {\n var i,\n j,\n k,\n n = data.length,\n d,\n defined0 = false,\n buffer,\n x0z = new Array(n),\n y0z = new Array(n);\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) {\n j = i;\n output.areaStart();\n output.lineStart();\n } else {\n output.lineEnd();\n output.lineStart();\n for (k = i - 1; k >= j; --k) {\n output.point(x0z[k], y0z[k]);\n }\n output.lineEnd();\n output.areaEnd();\n }\n }\n if (defined0) {\n x0z[i] = +x0(d, i, data), y0z[i] = +y0(d, i, data);\n output.point(x1 ? +x1(d, i, data) : x0z[i], y1 ? +y1(d, i, data) : y0z[i]);\n }\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n function arealine() {\n return line().defined(defined).curve(curve).context(context);\n }\n\n area.x = function(_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), x1 = null, area) : x0;\n };\n\n area.x0 = function(_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), area) : x0;\n };\n\n area.x1 = function(_) {\n return arguments.length ? (x1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : x1;\n };\n\n area.y = function(_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), y1 = null, area) : y0;\n };\n\n area.y0 = function(_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), area) : y0;\n };\n\n area.y1 = function(_) {\n return arguments.length ? (y1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : y1;\n };\n\n area.lineX0 =\n area.lineY0 = function() {\n return arealine().x(x0).y(y0);\n };\n\n area.lineY1 = function() {\n return arealine().x(x0).y(y1);\n };\n\n area.lineX1 = function() {\n return arealine().x(x1).y(y0);\n };\n\n area.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), area) : defined;\n };\n\n area.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), area) : curve;\n };\n\n area.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), area) : context;\n };\n\n return area;\n}\n","export default function(a, b) {\n return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n}\n","export default function(d) {\n return d;\n}\n","import constant from \"./constant.js\";\nimport descending from \"./descending.js\";\nimport identity from \"./identity.js\";\nimport {tau} from \"./math.js\";\n\nexport default function() {\n var value = identity,\n sortValues = descending,\n sort = null,\n startAngle = constant(0),\n endAngle = constant(tau),\n padAngle = constant(0);\n\n function pie(data) {\n var i,\n n = data.length,\n j,\n k,\n sum = 0,\n index = new Array(n),\n arcs = new Array(n),\n a0 = +startAngle.apply(this, arguments),\n da = Math.min(tau, Math.max(-tau, endAngle.apply(this, arguments) - a0)),\n a1,\n p = Math.min(Math.abs(da) / n, padAngle.apply(this, arguments)),\n pa = p * (da < 0 ? -1 : 1),\n v;\n\n for (i = 0; i < n; ++i) {\n if ((v = arcs[index[i] = i] = +value(data[i], i, data)) > 0) {\n sum += v;\n }\n }\n\n // Optionally sort the arcs by previously-computed values or by data.\n if (sortValues != null) index.sort(function(i, j) { return sortValues(arcs[i], arcs[j]); });\n else if (sort != null) index.sort(function(i, j) { return sort(data[i], data[j]); });\n\n // Compute the arcs! They are stored in the original data's order.\n for (i = 0, k = sum ? (da - n * pa) / sum : 0; i < n; ++i, a0 = a1) {\n j = index[i], v = arcs[j], a1 = a0 + (v > 0 ? v * k : 0) + pa, arcs[j] = {\n data: data[j],\n index: i,\n value: v,\n startAngle: a0,\n endAngle: a1,\n padAngle: p\n };\n }\n\n return arcs;\n }\n\n pie.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(+_), pie) : value;\n };\n\n pie.sortValues = function(_) {\n return arguments.length ? (sortValues = _, sort = null, pie) : sortValues;\n };\n\n pie.sort = function(_) {\n return arguments.length ? (sort = _, sortValues = null, pie) : sort;\n };\n\n pie.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : startAngle;\n };\n\n pie.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : endAngle;\n };\n\n pie.padAngle = function(_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : padAngle;\n };\n\n return pie;\n}\n","import curveLinear from \"./linear.js\";\n\nexport var curveRadialLinear = curveRadial(curveLinear);\n\nfunction Radial(curve) {\n this._curve = curve;\n}\n\nRadial.prototype = {\n areaStart: function() {\n this._curve.areaStart();\n },\n areaEnd: function() {\n this._curve.areaEnd();\n },\n lineStart: function() {\n this._curve.lineStart();\n },\n lineEnd: function() {\n this._curve.lineEnd();\n },\n point: function(a, r) {\n this._curve.point(r * Math.sin(a), r * -Math.cos(a));\n }\n};\n\nexport default function curveRadial(curve) {\n\n function radial(context) {\n return new Radial(curve(context));\n }\n\n radial._curve = curve;\n\n return radial;\n}\n","import curveRadial, {curveRadialLinear} from \"./curve/radial.js\";\nimport line from \"./line.js\";\n\nexport function lineRadial(l) {\n var c = l.curve;\n\n l.angle = l.x, delete l.x;\n l.radius = l.y, delete l.y;\n\n l.curve = function(_) {\n return arguments.length ? c(curveRadial(_)) : c()._curve;\n };\n\n return l;\n}\n\nexport default function() {\n return lineRadial(line().curve(curveRadialLinear));\n}\n","import curveRadial, {curveRadialLinear} from \"./curve/radial.js\";\nimport area from \"./area.js\";\nimport {lineRadial} from \"./lineRadial.js\";\n\nexport default function() {\n var a = area().curve(curveRadialLinear),\n c = a.curve,\n x0 = a.lineX0,\n x1 = a.lineX1,\n y0 = a.lineY0,\n y1 = a.lineY1;\n\n a.angle = a.x, delete a.x;\n a.startAngle = a.x0, delete a.x0;\n a.endAngle = a.x1, delete a.x1;\n a.radius = a.y, delete a.y;\n a.innerRadius = a.y0, delete a.y0;\n a.outerRadius = a.y1, delete a.y1;\n a.lineStartAngle = function() { return lineRadial(x0()); }, delete a.lineX0;\n a.lineEndAngle = function() { return lineRadial(x1()); }, delete a.lineX1;\n a.lineInnerRadius = function() { return lineRadial(y0()); }, delete a.lineY0;\n a.lineOuterRadius = function() { return lineRadial(y1()); }, delete a.lineY1;\n\n a.curve = function(_) {\n return arguments.length ? c(curveRadial(_)) : c()._curve;\n };\n\n return a;\n}\n","export default function(x, y) {\n return [(y = +y) * Math.cos(x -= Math.PI / 2), y * Math.sin(x)];\n}\n","export var slice = Array.prototype.slice;\n","import {path} from \"d3-path\";\nimport {slice} from \"../array.js\";\nimport constant from \"../constant.js\";\nimport {x as pointX, y as pointY} from \"../point.js\";\nimport pointRadial from \"../pointRadial.js\";\n\nfunction linkSource(d) {\n return d.source;\n}\n\nfunction linkTarget(d) {\n return d.target;\n}\n\nfunction link(curve) {\n var source = linkSource,\n target = linkTarget,\n x = pointX,\n y = pointY,\n context = null;\n\n function link() {\n var buffer, argv = slice.call(arguments), s = source.apply(this, argv), t = target.apply(this, argv);\n if (!context) context = buffer = path();\n curve(context, +x.apply(this, (argv[0] = s, argv)), +y.apply(this, argv), +x.apply(this, (argv[0] = t, argv)), +y.apply(this, argv));\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n link.source = function(_) {\n return arguments.length ? (source = _, link) : source;\n };\n\n link.target = function(_) {\n return arguments.length ? (target = _, link) : target;\n };\n\n link.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), link) : x;\n };\n\n link.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), link) : y;\n };\n\n link.context = function(_) {\n return arguments.length ? ((context = _ == null ? null : _), link) : context;\n };\n\n return link;\n}\n\nfunction curveHorizontal(context, x0, y0, x1, y1) {\n context.moveTo(x0, y0);\n context.bezierCurveTo(x0 = (x0 + x1) / 2, y0, x0, y1, x1, y1);\n}\n\nfunction curveVertical(context, x0, y0, x1, y1) {\n context.moveTo(x0, y0);\n context.bezierCurveTo(x0, y0 = (y0 + y1) / 2, x1, y0, x1, y1);\n}\n\nfunction curveRadial(context, x0, y0, x1, y1) {\n var p0 = pointRadial(x0, y0),\n p1 = pointRadial(x0, y0 = (y0 + y1) / 2),\n p2 = pointRadial(x1, y0),\n p3 = pointRadial(x1, y1);\n context.moveTo(p0[0], p0[1]);\n context.bezierCurveTo(p1[0], p1[1], p2[0], p2[1], p3[0], p3[1]);\n}\n\nexport function linkHorizontal() {\n return link(curveHorizontal);\n}\n\nexport function linkVertical() {\n return link(curveVertical);\n}\n\nexport function linkRadial() {\n var l = link(curveRadial);\n l.angle = l.x, delete l.x;\n l.radius = l.y, delete l.y;\n return l;\n}\n","import {pi, tau} from \"../math.js\";\n\nexport default {\n draw: function(context, size) {\n var r = Math.sqrt(size / pi);\n context.moveTo(r, 0);\n context.arc(0, 0, r, 0, tau);\n }\n};\n","export default {\n draw: function(context, size) {\n var r = Math.sqrt(size / 5) / 2;\n context.moveTo(-3 * r, -r);\n context.lineTo(-r, -r);\n context.lineTo(-r, -3 * r);\n context.lineTo(r, -3 * r);\n context.lineTo(r, -r);\n context.lineTo(3 * r, -r);\n context.lineTo(3 * r, r);\n context.lineTo(r, r);\n context.lineTo(r, 3 * r);\n context.lineTo(-r, 3 * r);\n context.lineTo(-r, r);\n context.lineTo(-3 * r, r);\n context.closePath();\n }\n};\n","var tan30 = Math.sqrt(1 / 3),\n tan30_2 = tan30 * 2;\n\nexport default {\n draw: function(context, size) {\n var y = Math.sqrt(size / tan30_2),\n x = y * tan30;\n context.moveTo(0, -y);\n context.lineTo(x, 0);\n context.lineTo(0, y);\n context.lineTo(-x, 0);\n context.closePath();\n }\n};\n","import {pi, tau} from \"../math.js\";\n\nvar ka = 0.89081309152928522810,\n kr = Math.sin(pi / 10) / Math.sin(7 * pi / 10),\n kx = Math.sin(tau / 10) * kr,\n ky = -Math.cos(tau / 10) * kr;\n\nexport default {\n draw: function(context, size) {\n var r = Math.sqrt(size * ka),\n x = kx * r,\n y = ky * r;\n context.moveTo(0, -r);\n context.lineTo(x, y);\n for (var i = 1; i < 5; ++i) {\n var a = tau * i / 5,\n c = Math.cos(a),\n s = Math.sin(a);\n context.lineTo(s * r, -c * r);\n context.lineTo(c * x - s * y, s * x + c * y);\n }\n context.closePath();\n }\n};\n","export default {\n draw: function(context, size) {\n var w = Math.sqrt(size),\n x = -w / 2;\n context.rect(x, x, w, w);\n }\n};\n","var sqrt3 = Math.sqrt(3);\n\nexport default {\n draw: function(context, size) {\n var y = -Math.sqrt(size / (sqrt3 * 3));\n context.moveTo(0, y * 2);\n context.lineTo(-sqrt3 * y, -y);\n context.lineTo(sqrt3 * y, -y);\n context.closePath();\n }\n};\n","var c = -0.5,\n s = Math.sqrt(3) / 2,\n k = 1 / Math.sqrt(12),\n a = (k / 2 + 1) * 3;\n\nexport default {\n draw: function(context, size) {\n var r = Math.sqrt(size / a),\n x0 = r / 2,\n y0 = r * k,\n x1 = x0,\n y1 = r * k + r,\n x2 = -x1,\n y2 = y1;\n context.moveTo(x0, y0);\n context.lineTo(x1, y1);\n context.lineTo(x2, y2);\n context.lineTo(c * x0 - s * y0, s * x0 + c * y0);\n context.lineTo(c * x1 - s * y1, s * x1 + c * y1);\n context.lineTo(c * x2 - s * y2, s * x2 + c * y2);\n context.lineTo(c * x0 + s * y0, c * y0 - s * x0);\n context.lineTo(c * x1 + s * y1, c * y1 - s * x1);\n context.lineTo(c * x2 + s * y2, c * y2 - s * x2);\n context.closePath();\n }\n};\n","import {path} from \"d3-path\";\nimport circle from \"./symbol/circle.js\";\nimport cross from \"./symbol/cross.js\";\nimport diamond from \"./symbol/diamond.js\";\nimport star from \"./symbol/star.js\";\nimport square from \"./symbol/square.js\";\nimport triangle from \"./symbol/triangle.js\";\nimport wye from \"./symbol/wye.js\";\nimport constant from \"./constant.js\";\n\nexport var symbols = [\n circle,\n cross,\n diamond,\n square,\n star,\n triangle,\n wye\n];\n\nexport default function() {\n var type = constant(circle),\n size = constant(64),\n context = null;\n\n function symbol() {\n var buffer;\n if (!context) context = buffer = path();\n type.apply(this, arguments).draw(context, +size.apply(this, arguments));\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n symbol.type = function(_) {\n return arguments.length ? (type = typeof _ === \"function\" ? _ : constant(_), symbol) : type;\n };\n\n symbol.size = function(_) {\n return arguments.length ? (size = typeof _ === \"function\" ? _ : constant(+_), symbol) : size;\n };\n\n symbol.context = function(_) {\n return arguments.length ? (context = _ == null ? null : _, symbol) : context;\n };\n\n return symbol;\n}\n","export default function() {}\n","export function point(that, x, y) {\n that._context.bezierCurveTo(\n (2 * that._x0 + that._x1) / 3,\n (2 * that._y0 + that._y1) / 3,\n (that._x0 + 2 * that._x1) / 3,\n (that._y0 + 2 * that._y1) / 3,\n (that._x0 + 4 * that._x1 + x) / 6,\n (that._y0 + 4 * that._y1 + y) / 6\n );\n}\n\nexport function Basis(context) {\n this._context = context;\n}\n\nBasis.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 3: point(this, this._x1, this._y1); // proceed\n case 2: this._context.lineTo(this._x1, this._y1); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._context.lineTo((5 * this._x0 + this._x1) / 6, (5 * this._y0 + this._y1) / 6); // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new Basis(context);\n}\n","import noop from \"../noop.js\";\nimport {point} from \"./basis.js\";\n\nfunction BasisClosed(context) {\n this._context = context;\n}\n\nBasisClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x2, this._y2);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.moveTo((this._x2 + 2 * this._x3) / 3, (this._y2 + 2 * this._y3) / 3);\n this._context.lineTo((this._x3 + 2 * this._x2) / 3, (this._y3 + 2 * this._y2) / 3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x2, this._y2);\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._x2 = x, this._y2 = y; break;\n case 1: this._point = 2; this._x3 = x, this._y3 = y; break;\n case 2: this._point = 3; this._x4 = x, this._y4 = y; this._context.moveTo((this._x0 + 4 * this._x1 + x) / 6, (this._y0 + 4 * this._y1 + y) / 6); break;\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new BasisClosed(context);\n}\n","import {point} from \"./basis.js\";\n\nfunction BasisOpen(context) {\n this._context = context;\n}\n\nBasisOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; var x0 = (this._x0 + 4 * this._x1 + x) / 6, y0 = (this._y0 + 4 * this._y1 + y) / 6; this._line ? this._context.lineTo(x0, y0) : this._context.moveTo(x0, y0); break;\n case 3: this._point = 4; // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new BasisOpen(context);\n}\n","import {Basis} from \"./basis.js\";\n\nfunction Bundle(context, beta) {\n this._basis = new Basis(context);\n this._beta = beta;\n}\n\nBundle.prototype = {\n lineStart: function() {\n this._x = [];\n this._y = [];\n this._basis.lineStart();\n },\n lineEnd: function() {\n var x = this._x,\n y = this._y,\n j = x.length - 1;\n\n if (j > 0) {\n var x0 = x[0],\n y0 = y[0],\n dx = x[j] - x0,\n dy = y[j] - y0,\n i = -1,\n t;\n\n while (++i <= j) {\n t = i / j;\n this._basis.point(\n this._beta * x[i] + (1 - this._beta) * (x0 + t * dx),\n this._beta * y[i] + (1 - this._beta) * (y0 + t * dy)\n );\n }\n }\n\n this._x = this._y = null;\n this._basis.lineEnd();\n },\n point: function(x, y) {\n this._x.push(+x);\n this._y.push(+y);\n }\n};\n\nexport default (function custom(beta) {\n\n function bundle(context) {\n return beta === 1 ? new Basis(context) : new Bundle(context, beta);\n }\n\n bundle.beta = function(beta) {\n return custom(+beta);\n };\n\n return bundle;\n})(0.85);\n","export function point(that, x, y) {\n that._context.bezierCurveTo(\n that._x1 + that._k * (that._x2 - that._x0),\n that._y1 + that._k * (that._y2 - that._y0),\n that._x2 + that._k * (that._x1 - x),\n that._y2 + that._k * (that._y1 - y),\n that._x2,\n that._y2\n );\n}\n\nexport function Cardinal(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinal.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x2, this._y2); break;\n case 3: point(this, this._x1, this._y1); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; this._x1 = x, this._y1 = y; break;\n case 2: this._point = 3; // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new Cardinal(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n","import noop from \"../noop.js\";\nimport {point} from \"./cardinal.js\";\n\nexport function CardinalClosed(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinalClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.lineTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n this.point(this._x5, this._y5);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._x3 = x, this._y3 = y; break;\n case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break;\n case 2: this._point = 3; this._x5 = x, this._y5 = y; break;\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new CardinalClosed(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n","import {point} from \"./cardinal.js\";\n\nexport function CardinalOpen(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinalOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break;\n case 3: this._point = 4; // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new CardinalOpen(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n","import {epsilon} from \"../math.js\";\nimport {Cardinal} from \"./cardinal.js\";\n\nexport function point(that, x, y) {\n var x1 = that._x1,\n y1 = that._y1,\n x2 = that._x2,\n y2 = that._y2;\n\n if (that._l01_a > epsilon) {\n var a = 2 * that._l01_2a + 3 * that._l01_a * that._l12_a + that._l12_2a,\n n = 3 * that._l01_a * (that._l01_a + that._l12_a);\n x1 = (x1 * a - that._x0 * that._l12_2a + that._x2 * that._l01_2a) / n;\n y1 = (y1 * a - that._y0 * that._l12_2a + that._y2 * that._l01_2a) / n;\n }\n\n if (that._l23_a > epsilon) {\n var b = 2 * that._l23_2a + 3 * that._l23_a * that._l12_a + that._l12_2a,\n m = 3 * that._l23_a * (that._l23_a + that._l12_a);\n x2 = (x2 * b + that._x1 * that._l23_2a - x * that._l12_2a) / m;\n y2 = (y2 * b + that._y1 * that._l23_2a - y * that._l12_2a) / m;\n }\n\n that._context.bezierCurveTo(x1, y1, x2, y2, that._x2, that._y2);\n}\n\nfunction CatmullRom(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRom.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x2, this._y2); break;\n case 3: this.point(this._x2, this._y2); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; // proceed\n default: point(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRom(context, alpha) : new Cardinal(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n})(0.5);\n","import {CardinalClosed} from \"./cardinalClosed.js\";\nimport noop from \"../noop.js\";\nimport {point} from \"./catmullRom.js\";\n\nfunction CatmullRomClosed(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRomClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.lineTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n this.point(this._x5, this._y5);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; this._x3 = x, this._y3 = y; break;\n case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break;\n case 2: this._point = 3; this._x5 = x, this._y5 = y; break;\n default: point(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRomClosed(context, alpha) : new CardinalClosed(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n})(0.5);\n","import {CardinalOpen} from \"./cardinalOpen.js\";\nimport {point} from \"./catmullRom.js\";\n\nfunction CatmullRomOpen(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRomOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break;\n case 3: this._point = 4; // proceed\n default: point(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRomOpen(context, alpha) : new CardinalOpen(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n})(0.5);\n","import noop from \"../noop.js\";\n\nfunction LinearClosed(context) {\n this._context = context;\n}\n\nLinearClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._point) this._context.closePath();\n },\n point: function(x, y) {\n x = +x, y = +y;\n if (this._point) this._context.lineTo(x, y);\n else this._point = 1, this._context.moveTo(x, y);\n }\n};\n\nexport default function(context) {\n return new LinearClosed(context);\n}\n","function sign(x) {\n return x < 0 ? -1 : 1;\n}\n\n// Calculate the slopes of the tangents (Hermite-type interpolation) based on\n// the following paper: Steffen, M. 1990. A Simple Method for Monotonic\n// Interpolation in One Dimension. Astronomy and Astrophysics, Vol. 239, NO.\n// NOV(II), P. 443, 1990.\nfunction slope3(that, x2, y2) {\n var h0 = that._x1 - that._x0,\n h1 = x2 - that._x1,\n s0 = (that._y1 - that._y0) / (h0 || h1 < 0 && -0),\n s1 = (y2 - that._y1) / (h1 || h0 < 0 && -0),\n p = (s0 * h1 + s1 * h0) / (h0 + h1);\n return (sign(s0) + sign(s1)) * Math.min(Math.abs(s0), Math.abs(s1), 0.5 * Math.abs(p)) || 0;\n}\n\n// Calculate a one-sided slope.\nfunction slope2(that, t) {\n var h = that._x1 - that._x0;\n return h ? (3 * (that._y1 - that._y0) / h - t) / 2 : t;\n}\n\n// According to https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Representations\n// \"you can express cubic Hermite interpolation in terms of cubic Bézier curves\n// with respect to the four values p0, p0 + m0 / 3, p1 - m1 / 3, p1\".\nfunction point(that, t0, t1) {\n var x0 = that._x0,\n y0 = that._y0,\n x1 = that._x1,\n y1 = that._y1,\n dx = (x1 - x0) / 3;\n that._context.bezierCurveTo(x0 + dx, y0 + dx * t0, x1 - dx, y1 - dx * t1, x1, y1);\n}\n\nfunction MonotoneX(context) {\n this._context = context;\n}\n\nMonotoneX.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 =\n this._t0 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x1, this._y1); break;\n case 3: point(this, this._t0, slope2(this, this._t0)); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n var t1 = NaN;\n\n x = +x, y = +y;\n if (x === this._x1 && y === this._y1) return; // Ignore coincident points.\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; point(this, slope2(this, t1 = slope3(this, x, y)), t1); break;\n default: point(this, this._t0, t1 = slope3(this, x, y)); break;\n }\n\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n this._t0 = t1;\n }\n}\n\nfunction MonotoneY(context) {\n this._context = new ReflectContext(context);\n}\n\n(MonotoneY.prototype = Object.create(MonotoneX.prototype)).point = function(x, y) {\n MonotoneX.prototype.point.call(this, y, x);\n};\n\nfunction ReflectContext(context) {\n this._context = context;\n}\n\nReflectContext.prototype = {\n moveTo: function(x, y) { this._context.moveTo(y, x); },\n closePath: function() { this._context.closePath(); },\n lineTo: function(x, y) { this._context.lineTo(y, x); },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) { this._context.bezierCurveTo(y1, x1, y2, x2, y, x); }\n};\n\nexport function monotoneX(context) {\n return new MonotoneX(context);\n}\n\nexport function monotoneY(context) {\n return new MonotoneY(context);\n}\n","function Natural(context) {\n this._context = context;\n}\n\nNatural.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x = [];\n this._y = [];\n },\n lineEnd: function() {\n var x = this._x,\n y = this._y,\n n = x.length;\n\n if (n) {\n this._line ? this._context.lineTo(x[0], y[0]) : this._context.moveTo(x[0], y[0]);\n if (n === 2) {\n this._context.lineTo(x[1], y[1]);\n } else {\n var px = controlPoints(x),\n py = controlPoints(y);\n for (var i0 = 0, i1 = 1; i1 < n; ++i0, ++i1) {\n this._context.bezierCurveTo(px[0][i0], py[0][i0], px[1][i0], py[1][i0], x[i1], y[i1]);\n }\n }\n }\n\n if (this._line || (this._line !== 0 && n === 1)) this._context.closePath();\n this._line = 1 - this._line;\n this._x = this._y = null;\n },\n point: function(x, y) {\n this._x.push(+x);\n this._y.push(+y);\n }\n};\n\n// See https://www.particleincell.com/2012/bezier-splines/ for derivation.\nfunction controlPoints(x) {\n var i,\n n = x.length - 1,\n m,\n a = new Array(n),\n b = new Array(n),\n r = new Array(n);\n a[0] = 0, b[0] = 2, r[0] = x[0] + 2 * x[1];\n for (i = 1; i < n - 1; ++i) a[i] = 1, b[i] = 4, r[i] = 4 * x[i] + 2 * x[i + 1];\n a[n - 1] = 2, b[n - 1] = 7, r[n - 1] = 8 * x[n - 1] + x[n];\n for (i = 1; i < n; ++i) m = a[i] / b[i - 1], b[i] -= m, r[i] -= m * r[i - 1];\n a[n - 1] = r[n - 1] / b[n - 1];\n for (i = n - 2; i >= 0; --i) a[i] = (r[i] - a[i + 1]) / b[i];\n b[n - 1] = (x[n] + a[n - 1]) / 2;\n for (i = 0; i < n - 1; ++i) b[i] = 2 * x[i + 1] - a[i + 1];\n return [a, b];\n}\n\nexport default function(context) {\n return new Natural(context);\n}\n","function Step(context, t) {\n this._context = context;\n this._t = t;\n}\n\nStep.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x = this._y = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (0 < this._t && this._t < 1 && this._point === 2) this._context.lineTo(this._x, this._y);\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n if (this._line >= 0) this._t = 1 - this._t, this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // proceed\n default: {\n if (this._t <= 0) {\n this._context.lineTo(this._x, y);\n this._context.lineTo(x, y);\n } else {\n var x1 = this._x * (1 - this._t) + x * this._t;\n this._context.lineTo(x1, this._y);\n this._context.lineTo(x1, y);\n }\n break;\n }\n }\n this._x = x, this._y = y;\n }\n};\n\nexport default function(context) {\n return new Step(context, 0.5);\n}\n\nexport function stepBefore(context) {\n return new Step(context, 0);\n}\n\nexport function stepAfter(context) {\n return new Step(context, 1);\n}\n","export default function(series, order) {\n if (!((n = series.length) > 1)) return;\n for (var i = 1, j, s0, s1 = series[order[0]], n, m = s1.length; i < n; ++i) {\n s0 = s1, s1 = series[order[i]];\n for (j = 0; j < m; ++j) {\n s1[j][1] += s1[j][0] = isNaN(s0[j][1]) ? s0[j][0] : s0[j][1];\n }\n }\n}\n","export default function(series) {\n var n = series.length, o = new Array(n);\n while (--n >= 0) o[n] = n;\n return o;\n}\n","import {slice} from \"./array.js\";\nimport constant from \"./constant.js\";\nimport offsetNone from \"./offset/none.js\";\nimport orderNone from \"./order/none.js\";\n\nfunction stackValue(d, key) {\n return d[key];\n}\n\nexport default function() {\n var keys = constant([]),\n order = orderNone,\n offset = offsetNone,\n value = stackValue;\n\n function stack(data) {\n var kz = keys.apply(this, arguments),\n i,\n m = data.length,\n n = kz.length,\n sz = new Array(n),\n oz;\n\n for (i = 0; i < n; ++i) {\n for (var ki = kz[i], si = sz[i] = new Array(m), j = 0, sij; j < m; ++j) {\n si[j] = sij = [0, +value(data[j], ki, j, data)];\n sij.data = data[j];\n }\n si.key = ki;\n }\n\n for (i = 0, oz = order(sz); i < n; ++i) {\n sz[oz[i]].index = i;\n }\n\n offset(sz, oz);\n return sz;\n }\n\n stack.keys = function(_) {\n return arguments.length ? (keys = typeof _ === \"function\" ? _ : constant(slice.call(_)), stack) : keys;\n };\n\n stack.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(+_), stack) : value;\n };\n\n stack.order = function(_) {\n return arguments.length ? (order = _ == null ? orderNone : typeof _ === \"function\" ? _ : constant(slice.call(_)), stack) : order;\n };\n\n stack.offset = function(_) {\n return arguments.length ? (offset = _ == null ? offsetNone : _, stack) : offset;\n };\n\n return stack;\n}\n","import none from \"./none.js\";\n\nexport default function(series, order) {\n if (!((n = series.length) > 0)) return;\n for (var i, n, j = 0, m = series[0].length, y; j < m; ++j) {\n for (y = i = 0; i < n; ++i) y += series[i][j][1] || 0;\n if (y) for (i = 0; i < n; ++i) series[i][j][1] /= y;\n }\n none(series, order);\n}\n","export default function(series, order) {\n if (!((n = series.length) > 0)) return;\n for (var i, j = 0, d, dy, yp, yn, n, m = series[order[0]].length; j < m; ++j) {\n for (yp = yn = 0, i = 0; i < n; ++i) {\n if ((dy = (d = series[order[i]][j])[1] - d[0]) > 0) {\n d[0] = yp, d[1] = yp += dy;\n } else if (dy < 0) {\n d[1] = yn, d[0] = yn += dy;\n } else {\n d[0] = 0, d[1] = dy;\n }\n }\n }\n}\n","import none from \"./none.js\";\n\nexport default function(series, order) {\n if (!((n = series.length) > 0)) return;\n for (var j = 0, s0 = series[order[0]], n, m = s0.length; j < m; ++j) {\n for (var i = 0, y = 0; i < n; ++i) y += series[i][j][1] || 0;\n s0[j][1] += s0[j][0] = -y / 2;\n }\n none(series, order);\n}\n","import none from \"./none.js\";\n\nexport default function(series, order) {\n if (!((n = series.length) > 0) || !((m = (s0 = series[order[0]]).length) > 0)) return;\n for (var y = 0, j = 1, s0, m, n; j < m; ++j) {\n for (var i = 0, s1 = 0, s2 = 0; i < n; ++i) {\n var si = series[order[i]],\n sij0 = si[j][1] || 0,\n sij1 = si[j - 1][1] || 0,\n s3 = (sij0 - sij1) / 2;\n for (var k = 0; k < i; ++k) {\n var sk = series[order[k]],\n skj0 = sk[j][1] || 0,\n skj1 = sk[j - 1][1] || 0;\n s3 += skj0 - skj1;\n }\n s1 += sij0, s2 += s3 * sij0;\n }\n s0[j - 1][1] += s0[j - 1][0] = y;\n if (s1) y -= s2 / s1;\n }\n s0[j - 1][1] += s0[j - 1][0] = y;\n none(series, order);\n}\n","import none from \"./none.js\";\n\nexport default function(series) {\n var peaks = series.map(peak);\n return none(series).sort(function(a, b) { return peaks[a] - peaks[b]; });\n}\n\nfunction peak(series) {\n var i = -1, j = 0, n = series.length, vi, vj = -Infinity;\n while (++i < n) if ((vi = +series[i][1]) > vj) vj = vi, j = i;\n return j;\n}\n","import none from \"./none.js\";\n\nexport default function(series) {\n var sums = series.map(sum);\n return none(series).sort(function(a, b) { return sums[a] - sums[b]; });\n}\n\nexport function sum(series) {\n var s = 0, i = -1, n = series.length, v;\n while (++i < n) if (v = +series[i][1]) s += v;\n return s;\n}\n","import ascending from \"./ascending.js\";\n\nexport default function(series) {\n return ascending(series).reverse();\n}\n","import appearance from \"./appearance.js\";\nimport {sum} from \"./ascending.js\";\n\nexport default function(series) {\n var n = series.length,\n i,\n j,\n sums = series.map(sum),\n order = appearance(series),\n top = 0,\n bottom = 0,\n tops = [],\n bottoms = [];\n\n for (i = 0; i < n; ++i) {\n j = order[i];\n if (top < bottom) {\n top += sums[j];\n tops.push(j);\n } else {\n bottom += sums[j];\n bottoms.push(j);\n }\n }\n\n return bottoms.reverse().concat(tops);\n}\n","import none from \"./none.js\";\n\nexport default function(series) {\n return none(series).reverse();\n}\n","import {utcFormat} from \"./defaultLocale.js\";\n\nexport var isoSpecifier = \"%Y-%m-%dT%H:%M:%S.%LZ\";\n\nfunction formatIsoNative(date) {\n return date.toISOString();\n}\n\nvar formatIso = Date.prototype.toISOString\n ? formatIsoNative\n : utcFormat(isoSpecifier);\n\nexport default formatIso;\n","import {isoSpecifier} from \"./isoFormat.js\";\nimport {utcParse} from \"./defaultLocale.js\";\n\nfunction parseIsoNative(string) {\n var date = new Date(string);\n return isNaN(date) ? null : date;\n}\n\nvar parseIso = +new Date(\"2000-01-01T00:00:00.000Z\")\n ? parseIsoNative\n : utcParse(isoSpecifier);\n\nexport default parseIso;\n","import {Timer, now} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n var t = new Timer, total = delay;\n if (delay == null) return t.restart(callback, delay, time), t;\n delay = +delay, time = time == null ? now() : +time;\n t.restart(function tick(elapsed) {\n elapsed += total;\n t.restart(tick, total += delay, time);\n callback(elapsed);\n }, delay, time);\n return t;\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export function x(d) {\n return d[0];\n}\n\nexport function y(d) {\n return d[1];\n}\n","function RedBlackTree() {\n this._ = null; // root node\n}\n\nexport function RedBlackNode(node) {\n node.U = // parent node\n node.C = // color - true for red, false for black\n node.L = // left node\n node.R = // right node\n node.P = // previous node\n node.N = null; // next node\n}\n\nRedBlackTree.prototype = {\n constructor: RedBlackTree,\n\n insert: function(after, node) {\n var parent, grandpa, uncle;\n\n if (after) {\n node.P = after;\n node.N = after.N;\n if (after.N) after.N.P = node;\n after.N = node;\n if (after.R) {\n after = after.R;\n while (after.L) after = after.L;\n after.L = node;\n } else {\n after.R = node;\n }\n parent = after;\n } else if (this._) {\n after = RedBlackFirst(this._);\n node.P = null;\n node.N = after;\n after.P = after.L = node;\n parent = after;\n } else {\n node.P = node.N = null;\n this._ = node;\n parent = null;\n }\n node.L = node.R = null;\n node.U = parent;\n node.C = true;\n\n after = node;\n while (parent && parent.C) {\n grandpa = parent.U;\n if (parent === grandpa.L) {\n uncle = grandpa.R;\n if (uncle && uncle.C) {\n parent.C = uncle.C = false;\n grandpa.C = true;\n after = grandpa;\n } else {\n if (after === parent.R) {\n RedBlackRotateLeft(this, parent);\n after = parent;\n parent = after.U;\n }\n parent.C = false;\n grandpa.C = true;\n RedBlackRotateRight(this, grandpa);\n }\n } else {\n uncle = grandpa.L;\n if (uncle && uncle.C) {\n parent.C = uncle.C = false;\n grandpa.C = true;\n after = grandpa;\n } else {\n if (after === parent.L) {\n RedBlackRotateRight(this, parent);\n after = parent;\n parent = after.U;\n }\n parent.C = false;\n grandpa.C = true;\n RedBlackRotateLeft(this, grandpa);\n }\n }\n parent = after.U;\n }\n this._.C = false;\n },\n\n remove: function(node) {\n if (node.N) node.N.P = node.P;\n if (node.P) node.P.N = node.N;\n node.N = node.P = null;\n\n var parent = node.U,\n sibling,\n left = node.L,\n right = node.R,\n next,\n red;\n\n if (!left) next = right;\n else if (!right) next = left;\n else next = RedBlackFirst(right);\n\n if (parent) {\n if (parent.L === node) parent.L = next;\n else parent.R = next;\n } else {\n this._ = next;\n }\n\n if (left && right) {\n red = next.C;\n next.C = node.C;\n next.L = left;\n left.U = next;\n if (next !== right) {\n parent = next.U;\n next.U = node.U;\n node = next.R;\n parent.L = node;\n next.R = right;\n right.U = next;\n } else {\n next.U = parent;\n parent = next;\n node = next.R;\n }\n } else {\n red = node.C;\n node = next;\n }\n\n if (node) node.U = parent;\n if (red) return;\n if (node && node.C) { node.C = false; return; }\n\n do {\n if (node === this._) break;\n if (node === parent.L) {\n sibling = parent.R;\n if (sibling.C) {\n sibling.C = false;\n parent.C = true;\n RedBlackRotateLeft(this, parent);\n sibling = parent.R;\n }\n if ((sibling.L && sibling.L.C)\n || (sibling.R && sibling.R.C)) {\n if (!sibling.R || !sibling.R.C) {\n sibling.L.C = false;\n sibling.C = true;\n RedBlackRotateRight(this, sibling);\n sibling = parent.R;\n }\n sibling.C = parent.C;\n parent.C = sibling.R.C = false;\n RedBlackRotateLeft(this, parent);\n node = this._;\n break;\n }\n } else {\n sibling = parent.L;\n if (sibling.C) {\n sibling.C = false;\n parent.C = true;\n RedBlackRotateRight(this, parent);\n sibling = parent.L;\n }\n if ((sibling.L && sibling.L.C)\n || (sibling.R && sibling.R.C)) {\n if (!sibling.L || !sibling.L.C) {\n sibling.R.C = false;\n sibling.C = true;\n RedBlackRotateLeft(this, sibling);\n sibling = parent.L;\n }\n sibling.C = parent.C;\n parent.C = sibling.L.C = false;\n RedBlackRotateRight(this, parent);\n node = this._;\n break;\n }\n }\n sibling.C = true;\n node = parent;\n parent = parent.U;\n } while (!node.C);\n\n if (node) node.C = false;\n }\n};\n\nfunction RedBlackRotateLeft(tree, node) {\n var p = node,\n q = node.R,\n parent = p.U;\n\n if (parent) {\n if (parent.L === p) parent.L = q;\n else parent.R = q;\n } else {\n tree._ = q;\n }\n\n q.U = parent;\n p.U = q;\n p.R = q.L;\n if (p.R) p.R.U = p;\n q.L = p;\n}\n\nfunction RedBlackRotateRight(tree, node) {\n var p = node,\n q = node.L,\n parent = p.U;\n\n if (parent) {\n if (parent.L === p) parent.L = q;\n else parent.R = q;\n } else {\n tree._ = q;\n }\n\n q.U = parent;\n p.U = q;\n p.L = q.R;\n if (p.L) p.L.U = p;\n q.R = p;\n}\n\nfunction RedBlackFirst(node) {\n while (node.L) node = node.L;\n return node;\n}\n\nexport default RedBlackTree;\n","import {cells, edges, epsilon} from \"./Diagram\";\n\nexport function createEdge(left, right, v0, v1) {\n var edge = [null, null],\n index = edges.push(edge) - 1;\n edge.left = left;\n edge.right = right;\n if (v0) setEdgeEnd(edge, left, right, v0);\n if (v1) setEdgeEnd(edge, right, left, v1);\n cells[left.index].halfedges.push(index);\n cells[right.index].halfedges.push(index);\n return edge;\n}\n\nexport function createBorderEdge(left, v0, v1) {\n var edge = [v0, v1];\n edge.left = left;\n return edge;\n}\n\nexport function setEdgeEnd(edge, left, right, vertex) {\n if (!edge[0] && !edge[1]) {\n edge[0] = vertex;\n edge.left = left;\n edge.right = right;\n } else if (edge.left === right) {\n edge[1] = vertex;\n } else {\n edge[0] = vertex;\n }\n}\n\n// Liang–Barsky line clipping.\nfunction clipEdge(edge, x0, y0, x1, y1) {\n var a = edge[0],\n b = edge[1],\n ax = a[0],\n ay = a[1],\n bx = b[0],\n by = b[1],\n t0 = 0,\n t1 = 1,\n dx = bx - ax,\n dy = by - ay,\n r;\n\n r = x0 - ax;\n if (!dx && r > 0) return;\n r /= dx;\n if (dx < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dx > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = x1 - ax;\n if (!dx && r < 0) return;\n r /= dx;\n if (dx < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dx > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n r = y0 - ay;\n if (!dy && r > 0) return;\n r /= dy;\n if (dy < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dy > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = y1 - ay;\n if (!dy && r < 0) return;\n r /= dy;\n if (dy < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dy > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n if (!(t0 > 0) && !(t1 < 1)) return true; // TODO Better check?\n\n if (t0 > 0) edge[0] = [ax + t0 * dx, ay + t0 * dy];\n if (t1 < 1) edge[1] = [ax + t1 * dx, ay + t1 * dy];\n return true;\n}\n\nfunction connectEdge(edge, x0, y0, x1, y1) {\n var v1 = edge[1];\n if (v1) return true;\n\n var v0 = edge[0],\n left = edge.left,\n right = edge.right,\n lx = left[0],\n ly = left[1],\n rx = right[0],\n ry = right[1],\n fx = (lx + rx) / 2,\n fy = (ly + ry) / 2,\n fm,\n fb;\n\n if (ry === ly) {\n if (fx < x0 || fx >= x1) return;\n if (lx > rx) {\n if (!v0) v0 = [fx, y0];\n else if (v0[1] >= y1) return;\n v1 = [fx, y1];\n } else {\n if (!v0) v0 = [fx, y1];\n else if (v0[1] < y0) return;\n v1 = [fx, y0];\n }\n } else {\n fm = (lx - rx) / (ry - ly);\n fb = fy - fm * fx;\n if (fm < -1 || fm > 1) {\n if (lx > rx) {\n if (!v0) v0 = [(y0 - fb) / fm, y0];\n else if (v0[1] >= y1) return;\n v1 = [(y1 - fb) / fm, y1];\n } else {\n if (!v0) v0 = [(y1 - fb) / fm, y1];\n else if (v0[1] < y0) return;\n v1 = [(y0 - fb) / fm, y0];\n }\n } else {\n if (ly < ry) {\n if (!v0) v0 = [x0, fm * x0 + fb];\n else if (v0[0] >= x1) return;\n v1 = [x1, fm * x1 + fb];\n } else {\n if (!v0) v0 = [x1, fm * x1 + fb];\n else if (v0[0] < x0) return;\n v1 = [x0, fm * x0 + fb];\n }\n }\n }\n\n edge[0] = v0;\n edge[1] = v1;\n return true;\n}\n\nexport function clipEdges(x0, y0, x1, y1) {\n var i = edges.length,\n edge;\n\n while (i--) {\n if (!connectEdge(edge = edges[i], x0, y0, x1, y1)\n || !clipEdge(edge, x0, y0, x1, y1)\n || !(Math.abs(edge[0][0] - edge[1][0]) > epsilon\n || Math.abs(edge[0][1] - edge[1][1]) > epsilon)) {\n delete edges[i];\n }\n }\n}\n","import {createBorderEdge} from \"./Edge\";\nimport {cells, edges, epsilon} from \"./Diagram\";\n\nexport function createCell(site) {\n return cells[site.index] = {\n site: site,\n halfedges: []\n };\n}\n\nfunction cellHalfedgeAngle(cell, edge) {\n var site = cell.site,\n va = edge.left,\n vb = edge.right;\n if (site === vb) vb = va, va = site;\n if (vb) return Math.atan2(vb[1] - va[1], vb[0] - va[0]);\n if (site === va) va = edge[1], vb = edge[0];\n else va = edge[0], vb = edge[1];\n return Math.atan2(va[0] - vb[0], vb[1] - va[1]);\n}\n\nexport function cellHalfedgeStart(cell, edge) {\n return edge[+(edge.left !== cell.site)];\n}\n\nexport function cellHalfedgeEnd(cell, edge) {\n return edge[+(edge.left === cell.site)];\n}\n\nexport function sortCellHalfedges() {\n for (var i = 0, n = cells.length, cell, halfedges, j, m; i < n; ++i) {\n if ((cell = cells[i]) && (m = (halfedges = cell.halfedges).length)) {\n var index = new Array(m),\n array = new Array(m);\n for (j = 0; j < m; ++j) index[j] = j, array[j] = cellHalfedgeAngle(cell, edges[halfedges[j]]);\n index.sort(function(i, j) { return array[j] - array[i]; });\n for (j = 0; j < m; ++j) array[j] = halfedges[index[j]];\n for (j = 0; j < m; ++j) halfedges[j] = array[j];\n }\n }\n}\n\nexport function clipCells(x0, y0, x1, y1) {\n var nCells = cells.length,\n iCell,\n cell,\n site,\n iHalfedge,\n halfedges,\n nHalfedges,\n start,\n startX,\n startY,\n end,\n endX,\n endY,\n cover = true;\n\n for (iCell = 0; iCell < nCells; ++iCell) {\n if (cell = cells[iCell]) {\n site = cell.site;\n halfedges = cell.halfedges;\n iHalfedge = halfedges.length;\n\n // Remove any dangling clipped edges.\n while (iHalfedge--) {\n if (!edges[halfedges[iHalfedge]]) {\n halfedges.splice(iHalfedge, 1);\n }\n }\n\n // Insert any border edges as necessary.\n iHalfedge = 0, nHalfedges = halfedges.length;\n while (iHalfedge < nHalfedges) {\n end = cellHalfedgeEnd(cell, edges[halfedges[iHalfedge]]), endX = end[0], endY = end[1];\n start = cellHalfedgeStart(cell, edges[halfedges[++iHalfedge % nHalfedges]]), startX = start[0], startY = start[1];\n if (Math.abs(endX - startX) > epsilon || Math.abs(endY - startY) > epsilon) {\n halfedges.splice(iHalfedge, 0, edges.push(createBorderEdge(site, end,\n Math.abs(endX - x0) < epsilon && y1 - endY > epsilon ? [x0, Math.abs(startX - x0) < epsilon ? startY : y1]\n : Math.abs(endY - y1) < epsilon && x1 - endX > epsilon ? [Math.abs(startY - y1) < epsilon ? startX : x1, y1]\n : Math.abs(endX - x1) < epsilon && endY - y0 > epsilon ? [x1, Math.abs(startX - x1) < epsilon ? startY : y0]\n : Math.abs(endY - y0) < epsilon && endX - x0 > epsilon ? [Math.abs(startY - y0) < epsilon ? startX : x0, y0]\n : null)) - 1);\n ++nHalfedges;\n }\n }\n\n if (nHalfedges) cover = false;\n }\n }\n\n // If there weren’t any edges, have the closest site cover the extent.\n // It doesn’t matter which corner of the extent we measure!\n if (cover) {\n var dx, dy, d2, dc = Infinity;\n\n for (iCell = 0, cover = null; iCell < nCells; ++iCell) {\n if (cell = cells[iCell]) {\n site = cell.site;\n dx = site[0] - x0;\n dy = site[1] - y0;\n d2 = dx * dx + dy * dy;\n if (d2 < dc) dc = d2, cover = cell;\n }\n }\n\n if (cover) {\n var v00 = [x0, y0], v01 = [x0, y1], v11 = [x1, y1], v10 = [x1, y0];\n cover.halfedges.push(\n edges.push(createBorderEdge(site = cover.site, v00, v01)) - 1,\n edges.push(createBorderEdge(site, v01, v11)) - 1,\n edges.push(createBorderEdge(site, v11, v10)) - 1,\n edges.push(createBorderEdge(site, v10, v00)) - 1\n );\n }\n }\n\n // Lastly delete any cells with no edges; these were entirely clipped.\n for (iCell = 0; iCell < nCells; ++iCell) {\n if (cell = cells[iCell]) {\n if (!cell.halfedges.length) {\n delete cells[iCell];\n }\n }\n }\n}\n","import {RedBlackNode} from \"./RedBlackTree\";\nimport {circles, epsilon2} from \"./Diagram\";\n\nvar circlePool = [];\n\nexport var firstCircle;\n\nfunction Circle() {\n RedBlackNode(this);\n this.x =\n this.y =\n this.arc =\n this.site =\n this.cy = null;\n}\n\nexport function attachCircle(arc) {\n var lArc = arc.P,\n rArc = arc.N;\n\n if (!lArc || !rArc) return;\n\n var lSite = lArc.site,\n cSite = arc.site,\n rSite = rArc.site;\n\n if (lSite === rSite) return;\n\n var bx = cSite[0],\n by = cSite[1],\n ax = lSite[0] - bx,\n ay = lSite[1] - by,\n cx = rSite[0] - bx,\n cy = rSite[1] - by;\n\n var d = 2 * (ax * cy - ay * cx);\n if (d >= -epsilon2) return;\n\n var ha = ax * ax + ay * ay,\n hc = cx * cx + cy * cy,\n x = (cy * ha - ay * hc) / d,\n y = (ax * hc - cx * ha) / d;\n\n var circle = circlePool.pop() || new Circle;\n circle.arc = arc;\n circle.site = cSite;\n circle.x = x + bx;\n circle.y = (circle.cy = y + by) + Math.sqrt(x * x + y * y); // y bottom\n\n arc.circle = circle;\n\n var before = null,\n node = circles._;\n\n while (node) {\n if (circle.y < node.y || (circle.y === node.y && circle.x <= node.x)) {\n if (node.L) node = node.L;\n else { before = node.P; break; }\n } else {\n if (node.R) node = node.R;\n else { before = node; break; }\n }\n }\n\n circles.insert(before, circle);\n if (!before) firstCircle = circle;\n}\n\nexport function detachCircle(arc) {\n var circle = arc.circle;\n if (circle) {\n if (!circle.P) firstCircle = circle.N;\n circles.remove(circle);\n circlePool.push(circle);\n RedBlackNode(circle);\n arc.circle = null;\n }\n}\n","import {RedBlackNode} from \"./RedBlackTree\";\nimport {createCell} from \"./Cell\";\nimport {attachCircle, detachCircle} from \"./Circle\";\nimport {createEdge, setEdgeEnd} from \"./Edge\";\nimport {beaches, epsilon} from \"./Diagram\";\n\nvar beachPool = [];\n\nfunction Beach() {\n RedBlackNode(this);\n this.edge =\n this.site =\n this.circle = null;\n}\n\nfunction createBeach(site) {\n var beach = beachPool.pop() || new Beach;\n beach.site = site;\n return beach;\n}\n\nfunction detachBeach(beach) {\n detachCircle(beach);\n beaches.remove(beach);\n beachPool.push(beach);\n RedBlackNode(beach);\n}\n\nexport function removeBeach(beach) {\n var circle = beach.circle,\n x = circle.x,\n y = circle.cy,\n vertex = [x, y],\n previous = beach.P,\n next = beach.N,\n disappearing = [beach];\n\n detachBeach(beach);\n\n var lArc = previous;\n while (lArc.circle\n && Math.abs(x - lArc.circle.x) < epsilon\n && Math.abs(y - lArc.circle.cy) < epsilon) {\n previous = lArc.P;\n disappearing.unshift(lArc);\n detachBeach(lArc);\n lArc = previous;\n }\n\n disappearing.unshift(lArc);\n detachCircle(lArc);\n\n var rArc = next;\n while (rArc.circle\n && Math.abs(x - rArc.circle.x) < epsilon\n && Math.abs(y - rArc.circle.cy) < epsilon) {\n next = rArc.N;\n disappearing.push(rArc);\n detachBeach(rArc);\n rArc = next;\n }\n\n disappearing.push(rArc);\n detachCircle(rArc);\n\n var nArcs = disappearing.length,\n iArc;\n for (iArc = 1; iArc < nArcs; ++iArc) {\n rArc = disappearing[iArc];\n lArc = disappearing[iArc - 1];\n setEdgeEnd(rArc.edge, lArc.site, rArc.site, vertex);\n }\n\n lArc = disappearing[0];\n rArc = disappearing[nArcs - 1];\n rArc.edge = createEdge(lArc.site, rArc.site, null, vertex);\n\n attachCircle(lArc);\n attachCircle(rArc);\n}\n\nexport function addBeach(site) {\n var x = site[0],\n directrix = site[1],\n lArc,\n rArc,\n dxl,\n dxr,\n node = beaches._;\n\n while (node) {\n dxl = leftBreakPoint(node, directrix) - x;\n if (dxl > epsilon) node = node.L; else {\n dxr = x - rightBreakPoint(node, directrix);\n if (dxr > epsilon) {\n if (!node.R) {\n lArc = node;\n break;\n }\n node = node.R;\n } else {\n if (dxl > -epsilon) {\n lArc = node.P;\n rArc = node;\n } else if (dxr > -epsilon) {\n lArc = node;\n rArc = node.N;\n } else {\n lArc = rArc = node;\n }\n break;\n }\n }\n }\n\n createCell(site);\n var newArc = createBeach(site);\n beaches.insert(lArc, newArc);\n\n if (!lArc && !rArc) return;\n\n if (lArc === rArc) {\n detachCircle(lArc);\n rArc = createBeach(lArc.site);\n beaches.insert(newArc, rArc);\n newArc.edge = rArc.edge = createEdge(lArc.site, newArc.site);\n attachCircle(lArc);\n attachCircle(rArc);\n return;\n }\n\n if (!rArc) { // && lArc\n newArc.edge = createEdge(lArc.site, newArc.site);\n return;\n }\n\n // else lArc !== rArc\n detachCircle(lArc);\n detachCircle(rArc);\n\n var lSite = lArc.site,\n ax = lSite[0],\n ay = lSite[1],\n bx = site[0] - ax,\n by = site[1] - ay,\n rSite = rArc.site,\n cx = rSite[0] - ax,\n cy = rSite[1] - ay,\n d = 2 * (bx * cy - by * cx),\n hb = bx * bx + by * by,\n hc = cx * cx + cy * cy,\n vertex = [(cy * hb - by * hc) / d + ax, (bx * hc - cx * hb) / d + ay];\n\n setEdgeEnd(rArc.edge, lSite, rSite, vertex);\n newArc.edge = createEdge(lSite, site, null, vertex);\n rArc.edge = createEdge(site, rSite, null, vertex);\n attachCircle(lArc);\n attachCircle(rArc);\n}\n\nfunction leftBreakPoint(arc, directrix) {\n var site = arc.site,\n rfocx = site[0],\n rfocy = site[1],\n pby2 = rfocy - directrix;\n\n if (!pby2) return rfocx;\n\n var lArc = arc.P;\n if (!lArc) return -Infinity;\n\n site = lArc.site;\n var lfocx = site[0],\n lfocy = site[1],\n plby2 = lfocy - directrix;\n\n if (!plby2) return lfocx;\n\n var hl = lfocx - rfocx,\n aby2 = 1 / pby2 - 1 / plby2,\n b = hl / plby2;\n\n if (aby2) return (-b + Math.sqrt(b * b - 2 * aby2 * (hl * hl / (-2 * plby2) - lfocy + plby2 / 2 + rfocy - pby2 / 2))) / aby2 + rfocx;\n\n return (rfocx + lfocx) / 2;\n}\n\nfunction rightBreakPoint(arc, directrix) {\n var rArc = arc.N;\n if (rArc) return leftBreakPoint(rArc, directrix);\n var site = arc.site;\n return site[1] === directrix ? site[0] : Infinity;\n}\n","import {addBeach, removeBeach} from \"./Beach\";\nimport {sortCellHalfedges, cellHalfedgeStart, clipCells} from \"./Cell\";\nimport {firstCircle} from \"./Circle\";\nimport {clipEdges} from \"./Edge\";\nimport RedBlackTree from \"./RedBlackTree\";\n\nexport var epsilon = 1e-6;\nexport var epsilon2 = 1e-12;\nexport var beaches;\nexport var cells;\nexport var circles;\nexport var edges;\n\nfunction triangleArea(a, b, c) {\n return (a[0] - c[0]) * (b[1] - a[1]) - (a[0] - b[0]) * (c[1] - a[1]);\n}\n\nfunction lexicographic(a, b) {\n return b[1] - a[1]\n || b[0] - a[0];\n}\n\nexport default function Diagram(sites, extent) {\n var site = sites.sort(lexicographic).pop(),\n x,\n y,\n circle;\n\n edges = [];\n cells = new Array(sites.length);\n beaches = new RedBlackTree;\n circles = new RedBlackTree;\n\n while (true) {\n circle = firstCircle;\n if (site && (!circle || site[1] < circle.y || (site[1] === circle.y && site[0] < circle.x))) {\n if (site[0] !== x || site[1] !== y) {\n addBeach(site);\n x = site[0], y = site[1];\n }\n site = sites.pop();\n } else if (circle) {\n removeBeach(circle.arc);\n } else {\n break;\n }\n }\n\n sortCellHalfedges();\n\n if (extent) {\n var x0 = +extent[0][0],\n y0 = +extent[0][1],\n x1 = +extent[1][0],\n y1 = +extent[1][1];\n clipEdges(x0, y0, x1, y1);\n clipCells(x0, y0, x1, y1);\n }\n\n this.edges = edges;\n this.cells = cells;\n\n beaches =\n circles =\n edges =\n cells = null;\n}\n\nDiagram.prototype = {\n constructor: Diagram,\n\n polygons: function() {\n var edges = this.edges;\n\n return this.cells.map(function(cell) {\n var polygon = cell.halfedges.map(function(i) { return cellHalfedgeStart(cell, edges[i]); });\n polygon.data = cell.site.data;\n return polygon;\n });\n },\n\n triangles: function() {\n var triangles = [],\n edges = this.edges;\n\n this.cells.forEach(function(cell, i) {\n if (!(m = (halfedges = cell.halfedges).length)) return;\n var site = cell.site,\n halfedges,\n j = -1,\n m,\n s0,\n e1 = edges[halfedges[m - 1]],\n s1 = e1.left === site ? e1.right : e1.left;\n\n while (++j < m) {\n s0 = s1;\n e1 = edges[halfedges[j]];\n s1 = e1.left === site ? e1.right : e1.left;\n if (s0 && s1 && i < s0.index && i < s1.index && triangleArea(site, s0, s1) < 0) {\n triangles.push([site.data, s0.data, s1.data]);\n }\n }\n });\n\n return triangles;\n },\n\n links: function() {\n return this.edges.filter(function(edge) {\n return edge.right;\n }).map(function(edge) {\n return {\n source: edge.left.data,\n target: edge.right.data\n };\n });\n },\n\n find: function(x, y, radius) {\n var that = this, i0, i1 = that._found || 0, n = that.cells.length, cell;\n\n // Use the previously-found cell, or start with an arbitrary one.\n while (!(cell = that.cells[i1])) if (++i1 >= n) return null;\n var dx = x - cell.site[0], dy = y - cell.site[1], d2 = dx * dx + dy * dy;\n\n // Traverse the half-edges to find a closer cell, if any.\n do {\n cell = that.cells[i0 = i1], i1 = null;\n cell.halfedges.forEach(function(e) {\n var edge = that.edges[e], v = edge.left;\n if ((v === cell.site || !v) && !(v = edge.right)) return;\n var vx = x - v[0], vy = y - v[1], v2 = vx * vx + vy * vy;\n if (v2 < d2) d2 = v2, i1 = v.index;\n });\n } while (i1 !== null);\n\n that._found = i0;\n\n return radius == null || d2 <= radius * radius ? cell.site : null;\n }\n}\n","import constant from \"./constant\";\nimport {x as pointX, y as pointY} from \"./point\";\nimport Diagram, {epsilon} from \"./Diagram\";\n\nexport default function() {\n var x = pointX,\n y = pointY,\n extent = null;\n\n function voronoi(data) {\n return new Diagram(data.map(function(d, i) {\n var s = [Math.round(x(d, i, data) / epsilon) * epsilon, Math.round(y(d, i, data) / epsilon) * epsilon];\n s.index = i;\n s.data = d;\n return s;\n }), extent);\n }\n\n voronoi.polygons = function(data) {\n return voronoi(data).polygons();\n };\n\n voronoi.links = function(data) {\n return voronoi(data).links();\n };\n\n voronoi.triangles = function(data) {\n return voronoi(data).triangles();\n };\n\n voronoi.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), voronoi) : x;\n };\n\n voronoi.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), voronoi) : y;\n };\n\n voronoi.extent = function(_) {\n return arguments.length ? (extent = _ == null ? null : [[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]], voronoi) : extent && [[extent[0][0], extent[0][1]], [extent[1][0], extent[1][1]]];\n };\n\n voronoi.size = function(_) {\n return arguments.length ? (extent = _ == null ? null : [[0, 0], [+_[0], +_[1]]], voronoi) : extent && [extent[1][0] - extent[0][0], extent[1][1] - extent[0][1]];\n };\n\n return voronoi;\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function ZoomEvent(target, type, transform) {\n this.target = target;\n this.type = type;\n this.transform = transform;\n}\n","export function Transform(k, x, y) {\n this.k = k;\n this.x = x;\n this.y = y;\n}\n\nTransform.prototype = {\n constructor: Transform,\n scale: function(k) {\n return k === 1 ? this : new Transform(this.k * k, this.x, this.y);\n },\n translate: function(x, y) {\n return x === 0 & y === 0 ? this : new Transform(this.k, this.x + this.k * x, this.y + this.k * y);\n },\n apply: function(point) {\n return [point[0] * this.k + this.x, point[1] * this.k + this.y];\n },\n applyX: function(x) {\n return x * this.k + this.x;\n },\n applyY: function(y) {\n return y * this.k + this.y;\n },\n invert: function(location) {\n return [(location[0] - this.x) / this.k, (location[1] - this.y) / this.k];\n },\n invertX: function(x) {\n return (x - this.x) / this.k;\n },\n invertY: function(y) {\n return (y - this.y) / this.k;\n },\n rescaleX: function(x) {\n return x.copy().domain(x.range().map(this.invertX, this).map(x.invert, x));\n },\n rescaleY: function(y) {\n return y.copy().domain(y.range().map(this.invertY, this).map(y.invert, y));\n },\n toString: function() {\n return \"translate(\" + this.x + \",\" + this.y + \") scale(\" + this.k + \")\";\n }\n};\n\nexport var identity = new Transform(1, 0, 0);\n\ntransform.prototype = Transform.prototype;\n\nexport default function transform(node) {\n while (!node.__zoom) if (!(node = node.parentNode)) return identity;\n return node.__zoom;\n}\n","import {event} from \"d3-selection\";\n\nexport function nopropagation() {\n event.stopImmediatePropagation();\n}\n\nexport default function() {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolateZoom} from \"d3-interpolate\";\nimport {event, customEvent, select, mouse, touch} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant.js\";\nimport ZoomEvent from \"./event.js\";\nimport {Transform, identity} from \"./transform.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter() {\n return !event.ctrlKey && !event.button;\n}\n\nfunction defaultExtent() {\n var e = this;\n if (e instanceof SVGElement) {\n e = e.ownerSVGElement || e;\n if (e.hasAttribute(\"viewBox\")) {\n e = e.viewBox.baseVal;\n return [[e.x, e.y], [e.x + e.width, e.y + e.height]];\n }\n return [[0, 0], [e.width.baseVal.value, e.height.baseVal.value]];\n }\n return [[0, 0], [e.clientWidth, e.clientHeight]];\n}\n\nfunction defaultTransform() {\n return this.__zoom || identity;\n}\n\nfunction defaultWheelDelta() {\n return -event.deltaY * (event.deltaMode === 1 ? 0.05 : event.deltaMode ? 1 : 0.002);\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\nfunction defaultConstrain(transform, extent, translateExtent) {\n var dx0 = transform.invertX(extent[0][0]) - translateExtent[0][0],\n dx1 = transform.invertX(extent[1][0]) - translateExtent[1][0],\n dy0 = transform.invertY(extent[0][1]) - translateExtent[0][1],\n dy1 = transform.invertY(extent[1][1]) - translateExtent[1][1];\n return transform.translate(\n dx1 > dx0 ? (dx0 + dx1) / 2 : Math.min(0, dx0) || Math.max(0, dx1),\n dy1 > dy0 ? (dy0 + dy1) / 2 : Math.min(0, dy0) || Math.max(0, dy1)\n );\n}\n\nexport default function() {\n var filter = defaultFilter,\n extent = defaultExtent,\n constrain = defaultConstrain,\n wheelDelta = defaultWheelDelta,\n touchable = defaultTouchable,\n scaleExtent = [0, Infinity],\n translateExtent = [[-Infinity, -Infinity], [Infinity, Infinity]],\n duration = 250,\n interpolate = interpolateZoom,\n listeners = dispatch(\"start\", \"zoom\", \"end\"),\n touchstarting,\n touchending,\n touchDelay = 500,\n wheelDelay = 150,\n clickDistance2 = 0;\n\n function zoom(selection) {\n selection\n .property(\"__zoom\", defaultTransform)\n .on(\"wheel.zoom\", wheeled)\n .on(\"mousedown.zoom\", mousedowned)\n .on(\"dblclick.zoom\", dblclicked)\n .filter(touchable)\n .on(\"touchstart.zoom\", touchstarted)\n .on(\"touchmove.zoom\", touchmoved)\n .on(\"touchend.zoom touchcancel.zoom\", touchended)\n .style(\"touch-action\", \"none\")\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n zoom.transform = function(collection, transform, point) {\n var selection = collection.selection ? collection.selection() : collection;\n selection.property(\"__zoom\", defaultTransform);\n if (collection !== selection) {\n schedule(collection, transform, point);\n } else {\n selection.interrupt().each(function() {\n gesture(this, arguments)\n .start()\n .zoom(null, typeof transform === \"function\" ? transform.apply(this, arguments) : transform)\n .end();\n });\n }\n };\n\n zoom.scaleBy = function(selection, k, p) {\n zoom.scaleTo(selection, function() {\n var k0 = this.__zoom.k,\n k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n return k0 * k1;\n }, p);\n };\n\n zoom.scaleTo = function(selection, k, p) {\n zoom.transform(selection, function() {\n var e = extent.apply(this, arguments),\n t0 = this.__zoom,\n p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p,\n p1 = t0.invert(p0),\n k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n return constrain(translate(scale(t0, k1), p0, p1), e, translateExtent);\n }, p);\n };\n\n zoom.translateBy = function(selection, x, y) {\n zoom.transform(selection, function() {\n return constrain(this.__zoom.translate(\n typeof x === \"function\" ? x.apply(this, arguments) : x,\n typeof y === \"function\" ? y.apply(this, arguments) : y\n ), extent.apply(this, arguments), translateExtent);\n });\n };\n\n zoom.translateTo = function(selection, x, y, p) {\n zoom.transform(selection, function() {\n var e = extent.apply(this, arguments),\n t = this.__zoom,\n p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p;\n return constrain(identity.translate(p0[0], p0[1]).scale(t.k).translate(\n typeof x === \"function\" ? -x.apply(this, arguments) : -x,\n typeof y === \"function\" ? -y.apply(this, arguments) : -y\n ), e, translateExtent);\n }, p);\n };\n\n function scale(transform, k) {\n k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], k));\n return k === transform.k ? transform : new Transform(k, transform.x, transform.y);\n }\n\n function translate(transform, p0, p1) {\n var x = p0[0] - p1[0] * transform.k, y = p0[1] - p1[1] * transform.k;\n return x === transform.x && y === transform.y ? transform : new Transform(transform.k, x, y);\n }\n\n function centroid(extent) {\n return [(+extent[0][0] + +extent[1][0]) / 2, (+extent[0][1] + +extent[1][1]) / 2];\n }\n\n function schedule(transition, transform, point) {\n transition\n .on(\"start.zoom\", function() { gesture(this, arguments).start(); })\n .on(\"interrupt.zoom end.zoom\", function() { gesture(this, arguments).end(); })\n .tween(\"zoom\", function() {\n var that = this,\n args = arguments,\n g = gesture(that, args),\n e = extent.apply(that, args),\n p = point == null ? centroid(e) : typeof point === \"function\" ? point.apply(that, args) : point,\n w = Math.max(e[1][0] - e[0][0], e[1][1] - e[0][1]),\n a = that.__zoom,\n b = typeof transform === \"function\" ? transform.apply(that, args) : transform,\n i = interpolate(a.invert(p).concat(w / a.k), b.invert(p).concat(w / b.k));\n return function(t) {\n if (t === 1) t = b; // Avoid rounding error on end.\n else { var l = i(t), k = w / l[2]; t = new Transform(k, p[0] - l[0] * k, p[1] - l[1] * k); }\n g.zoom(null, t);\n };\n });\n }\n\n function gesture(that, args, clean) {\n return (!clean && that.__zooming) || new Gesture(that, args);\n }\n\n function Gesture(that, args) {\n this.that = that;\n this.args = args;\n this.active = 0;\n this.extent = extent.apply(that, args);\n this.taps = 0;\n }\n\n Gesture.prototype = {\n start: function() {\n if (++this.active === 1) {\n this.that.__zooming = this;\n this.emit(\"start\");\n }\n return this;\n },\n zoom: function(key, transform) {\n if (this.mouse && key !== \"mouse\") this.mouse[1] = transform.invert(this.mouse[0]);\n if (this.touch0 && key !== \"touch\") this.touch0[1] = transform.invert(this.touch0[0]);\n if (this.touch1 && key !== \"touch\") this.touch1[1] = transform.invert(this.touch1[0]);\n this.that.__zoom = transform;\n this.emit(\"zoom\");\n return this;\n },\n end: function() {\n if (--this.active === 0) {\n delete this.that.__zooming;\n this.emit(\"end\");\n }\n return this;\n },\n emit: function(type) {\n customEvent(new ZoomEvent(zoom, type, this.that.__zoom), listeners.apply, listeners, [type, this.that, this.args]);\n }\n };\n\n function wheeled() {\n if (!filter.apply(this, arguments)) return;\n var g = gesture(this, arguments),\n t = this.__zoom,\n k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], t.k * Math.pow(2, wheelDelta.apply(this, arguments)))),\n p = mouse(this);\n\n // If the mouse is in the same location as before, reuse it.\n // If there were recent wheel events, reset the wheel idle timeout.\n if (g.wheel) {\n if (g.mouse[0][0] !== p[0] || g.mouse[0][1] !== p[1]) {\n g.mouse[1] = t.invert(g.mouse[0] = p);\n }\n clearTimeout(g.wheel);\n }\n\n // If this wheel event won’t trigger a transform change, ignore it.\n else if (t.k === k) return;\n\n // Otherwise, capture the mouse point and location at the start.\n else {\n g.mouse = [p, t.invert(p)];\n interrupt(this);\n g.start();\n }\n\n noevent();\n g.wheel = setTimeout(wheelidled, wheelDelay);\n g.zoom(\"mouse\", constrain(translate(scale(t, k), g.mouse[0], g.mouse[1]), g.extent, translateExtent));\n\n function wheelidled() {\n g.wheel = null;\n g.end();\n }\n }\n\n function mousedowned() {\n if (touchending || !filter.apply(this, arguments)) return;\n var g = gesture(this, arguments, true),\n v = select(event.view).on(\"mousemove.zoom\", mousemoved, true).on(\"mouseup.zoom\", mouseupped, true),\n p = mouse(this),\n x0 = event.clientX,\n y0 = event.clientY;\n\n dragDisable(event.view);\n nopropagation();\n g.mouse = [p, this.__zoom.invert(p)];\n interrupt(this);\n g.start();\n\n function mousemoved() {\n noevent();\n if (!g.moved) {\n var dx = event.clientX - x0, dy = event.clientY - y0;\n g.moved = dx * dx + dy * dy > clickDistance2;\n }\n g.zoom(\"mouse\", constrain(translate(g.that.__zoom, g.mouse[0] = mouse(g.that), g.mouse[1]), g.extent, translateExtent));\n }\n\n function mouseupped() {\n v.on(\"mousemove.zoom mouseup.zoom\", null);\n dragEnable(event.view, g.moved);\n noevent();\n g.end();\n }\n }\n\n function dblclicked() {\n if (!filter.apply(this, arguments)) return;\n var t0 = this.__zoom,\n p0 = mouse(this),\n p1 = t0.invert(p0),\n k1 = t0.k * (event.shiftKey ? 0.5 : 2),\n t1 = constrain(translate(scale(t0, k1), p0, p1), extent.apply(this, arguments), translateExtent);\n\n noevent();\n if (duration > 0) select(this).transition().duration(duration).call(schedule, t1, p0);\n else select(this).call(zoom.transform, t1);\n }\n\n function touchstarted() {\n if (!filter.apply(this, arguments)) return;\n var touches = event.touches,\n n = touches.length,\n g = gesture(this, arguments, event.changedTouches.length === n),\n started, i, t, p;\n\n nopropagation();\n for (i = 0; i < n; ++i) {\n t = touches[i], p = touch(this, touches, t.identifier);\n p = [p, this.__zoom.invert(p), t.identifier];\n if (!g.touch0) g.touch0 = p, started = true, g.taps = 1 + !!touchstarting;\n else if (!g.touch1 && g.touch0[2] !== p[2]) g.touch1 = p, g.taps = 0;\n }\n\n if (touchstarting) touchstarting = clearTimeout(touchstarting);\n\n if (started) {\n if (g.taps < 2) touchstarting = setTimeout(function() { touchstarting = null; }, touchDelay);\n interrupt(this);\n g.start();\n }\n }\n\n function touchmoved() {\n if (!this.__zooming) return;\n var g = gesture(this, arguments),\n touches = event.changedTouches,\n n = touches.length, i, t, p, l;\n\n noevent();\n if (touchstarting) touchstarting = clearTimeout(touchstarting);\n g.taps = 0;\n for (i = 0; i < n; ++i) {\n t = touches[i], p = touch(this, touches, t.identifier);\n if (g.touch0 && g.touch0[2] === t.identifier) g.touch0[0] = p;\n else if (g.touch1 && g.touch1[2] === t.identifier) g.touch1[0] = p;\n }\n t = g.that.__zoom;\n if (g.touch1) {\n var p0 = g.touch0[0], l0 = g.touch0[1],\n p1 = g.touch1[0], l1 = g.touch1[1],\n dp = (dp = p1[0] - p0[0]) * dp + (dp = p1[1] - p0[1]) * dp,\n dl = (dl = l1[0] - l0[0]) * dl + (dl = l1[1] - l0[1]) * dl;\n t = scale(t, Math.sqrt(dp / dl));\n p = [(p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2];\n l = [(l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2];\n }\n else if (g.touch0) p = g.touch0[0], l = g.touch0[1];\n else return;\n g.zoom(\"touch\", constrain(translate(t, p, l), g.extent, translateExtent));\n }\n\n function touchended() {\n if (!this.__zooming) return;\n var g = gesture(this, arguments),\n touches = event.changedTouches,\n n = touches.length, i, t;\n\n nopropagation();\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, touchDelay);\n for (i = 0; i < n; ++i) {\n t = touches[i];\n if (g.touch0 && g.touch0[2] === t.identifier) delete g.touch0;\n else if (g.touch1 && g.touch1[2] === t.identifier) delete g.touch1;\n }\n if (g.touch1 && !g.touch0) g.touch0 = g.touch1, delete g.touch1;\n if (g.touch0) g.touch0[1] = this.__zoom.invert(g.touch0[0]);\n else {\n g.end();\n // If this was a dbltap, reroute to the (optional) dblclick.zoom handler.\n if (g.taps === 2) {\n var p = select(this).on(\"dblclick.zoom\");\n if (p) p.apply(this, arguments);\n }\n }\n }\n\n zoom.wheelDelta = function(_) {\n return arguments.length ? (wheelDelta = typeof _ === \"function\" ? _ : constant(+_), zoom) : wheelDelta;\n };\n\n zoom.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), zoom) : filter;\n };\n\n zoom.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), zoom) : touchable;\n };\n\n zoom.extent = function(_) {\n return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant([[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]]), zoom) : extent;\n };\n\n zoom.scaleExtent = function(_) {\n return arguments.length ? (scaleExtent[0] = +_[0], scaleExtent[1] = +_[1], zoom) : [scaleExtent[0], scaleExtent[1]];\n };\n\n zoom.translateExtent = function(_) {\n return arguments.length ? (translateExtent[0][0] = +_[0][0], translateExtent[1][0] = +_[1][0], translateExtent[0][1] = +_[0][1], translateExtent[1][1] = +_[1][1], zoom) : [[translateExtent[0][0], translateExtent[0][1]], [translateExtent[1][0], translateExtent[1][1]]];\n };\n\n zoom.constrain = function(_) {\n return arguments.length ? (constrain = _, zoom) : constrain;\n };\n\n zoom.duration = function(_) {\n return arguments.length ? (duration = +_, zoom) : duration;\n };\n\n zoom.interpolate = function(_) {\n return arguments.length ? (interpolate = _, zoom) : interpolate;\n };\n\n zoom.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? zoom : value;\n };\n\n zoom.clickDistance = function(_) {\n return arguments.length ? (clickDistance2 = (_ = +_) * _, zoom) : Math.sqrt(clickDistance2);\n };\n\n return zoom;\n}\n","export {version} from \"./dist/package.js\";\nexport * from \"d3-array\";\nexport * from \"d3-axis\";\nexport * from \"d3-brush\";\nexport * from \"d3-chord\";\nexport * from \"d3-collection\";\nexport * from \"d3-color\";\nexport * from \"d3-contour\";\nexport * from \"d3-dispatch\";\nexport * from \"d3-drag\";\nexport * from \"d3-dsv\";\nexport * from \"d3-ease\";\nexport * from \"d3-fetch\";\nexport * from \"d3-force\";\nexport * from \"d3-format\";\nexport * from \"d3-geo\";\nexport * from \"d3-hierarchy\";\nexport * from \"d3-interpolate\";\nexport * from \"d3-path\";\nexport * from \"d3-polygon\";\nexport * from \"d3-quadtree\";\nexport * from \"d3-random\";\nexport * from \"d3-scale\";\nexport * from \"d3-scale-chromatic\";\nexport * from \"d3-selection\";\nexport * from \"d3-shape\";\nexport * from \"d3-time\";\nexport * from \"d3-time-format\";\nexport * from \"d3-timer\";\nexport * from \"d3-transition\";\nexport * from \"d3-voronoi\";\nexport * from \"d3-zoom\";\n","/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,2],$V1=[1,3],$V2=[1,5],$V3=[1,7],$V4=[2,5],$V5=[1,15],$V6=[1,17],$V7=[1,18],$V8=[1,20],$V9=[1,21],$Va=[1,22],$Vb=[1,24],$Vc=[1,25],$Vd=[1,26],$Ve=[1,27],$Vf=[1,28],$Vg=[1,29],$Vh=[1,32],$Vi=[1,33],$Vj=[1,36],$Vk=[1,4,5,16,21,22,23,25,27,28,29,30,31,33,35,36,37,48,56],$Vl=[1,44],$Vm=[4,5,16,21,22,23,25,27,28,29,30,31,33,37,48,56],$Vn=[4,5,16,21,22,23,25,27,28,29,30,31,33,36,37,48,56],$Vo=[4,5,16,21,22,23,25,27,28,29,30,31,33,35,37,48,56],$Vp=[46,47,48],$Vq=[1,4,5,7,16,21,22,23,25,27,28,29,30,31,33,35,36,37,48,56];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"SPACE\":4,\"NL\":5,\"directive\":6,\"SD\":7,\"document\":8,\"line\":9,\"statement\":10,\"openDirective\":11,\"typeDirective\":12,\"closeDirective\":13,\":\":14,\"argDirective\":15,\"participant\":16,\"actor\":17,\"AS\":18,\"restOfLine\":19,\"signal\":20,\"autonumber\":21,\"activate\":22,\"deactivate\":23,\"note_statement\":24,\"title\":25,\"text2\":26,\"loop\":27,\"end\":28,\"rect\":29,\"opt\":30,\"alt\":31,\"else_sections\":32,\"par\":33,\"par_sections\":34,\"and\":35,\"else\":36,\"note\":37,\"placement\":38,\"over\":39,\"actor_pair\":40,\"spaceList\":41,\",\":42,\"left_of\":43,\"right_of\":44,\"signaltype\":45,\"+\":46,\"-\":47,\"ACTOR\":48,\"SOLID_OPEN_ARROW\":49,\"DOTTED_OPEN_ARROW\":50,\"SOLID_ARROW\":51,\"DOTTED_ARROW\":52,\"SOLID_CROSS\":53,\"DOTTED_CROSS\":54,\"TXT\":55,\"open_directive\":56,\"type_directive\":57,\"arg_directive\":58,\"close_directive\":59,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",4:\"SPACE\",5:\"NL\",7:\"SD\",14:\":\",16:\"participant\",18:\"AS\",19:\"restOfLine\",21:\"autonumber\",22:\"activate\",23:\"deactivate\",25:\"title\",27:\"loop\",28:\"end\",29:\"rect\",30:\"opt\",31:\"alt\",33:\"par\",35:\"and\",36:\"else\",37:\"note\",39:\"over\",42:\",\",43:\"left_of\",44:\"right_of\",46:\"+\",47:\"-\",48:\"ACTOR\",49:\"SOLID_OPEN_ARROW\",50:\"DOTTED_OPEN_ARROW\",51:\"SOLID_ARROW\",52:\"DOTTED_ARROW\",53:\"SOLID_CROSS\",54:\"DOTTED_CROSS\",55:\"TXT\",56:\"open_directive\",57:\"type_directive\",58:\"arg_directive\",59:\"close_directive\"},\nproductions_: [0,[3,2],[3,2],[3,2],[3,2],[8,0],[8,2],[9,2],[9,1],[9,1],[6,4],[6,6],[10,5],[10,3],[10,2],[10,1],[10,3],[10,3],[10,2],[10,3],[10,4],[10,4],[10,4],[10,4],[10,4],[10,1],[34,1],[34,4],[32,1],[32,4],[24,4],[24,4],[41,2],[41,1],[40,3],[40,1],[38,1],[38,1],[20,5],[20,5],[20,4],[17,1],[45,1],[45,1],[45,1],[45,1],[45,1],[45,1],[26,1],[11,1],[12,1],[15,1],[13,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 4:\n yy.apply($$[$0]);return $$[$0]; \nbreak;\ncase 5:\n this.$ = [] \nbreak;\ncase 6:\n$$[$0-1].push($$[$0]);this.$ = $$[$0-1]\nbreak;\ncase 7: case 8:\n this.$ = $$[$0] \nbreak;\ncase 9:\n this.$=[]; \nbreak;\ncase 12:\n$$[$0-3].description=yy.parseMessage($$[$0-1]); this.$=$$[$0-3];\nbreak;\ncase 13:\nthis.$=$$[$0-1];\nbreak;\ncase 15:\nyy.enableSequenceNumbers()\nbreak;\ncase 16:\nthis.$={type: 'activeStart', signalType: yy.LINETYPE.ACTIVE_START, actor: $$[$0-1]};\nbreak;\ncase 17:\nthis.$={type: 'activeEnd', signalType: yy.LINETYPE.ACTIVE_END, actor: $$[$0-1]};\nbreak;\ncase 19:\nthis.$=[{type:'setTitle', text:$$[$0-1]}]\nbreak;\ncase 20:\n\n\t\t$$[$0-1].unshift({type: 'loopStart', loopText:yy.parseMessage($$[$0-2]), signalType: yy.LINETYPE.LOOP_START});\n\t\t$$[$0-1].push({type: 'loopEnd', loopText:$$[$0-2], signalType: yy.LINETYPE.LOOP_END});\n\t\tthis.$=$$[$0-1];\nbreak;\ncase 21:\n\n\t\t$$[$0-1].unshift({type: 'rectStart', color:yy.parseMessage($$[$0-2]), signalType: yy.LINETYPE.RECT_START });\n\t\t$$[$0-1].push({type: 'rectEnd', color:yy.parseMessage($$[$0-2]), signalType: yy.LINETYPE.RECT_END });\n\t\tthis.$=$$[$0-1];\nbreak;\ncase 22:\n\n\t\t$$[$0-1].unshift({type: 'optStart', optText:yy.parseMessage($$[$0-2]), signalType: yy.LINETYPE.OPT_START});\n\t\t$$[$0-1].push({type: 'optEnd', optText:yy.parseMessage($$[$0-2]), signalType: yy.LINETYPE.OPT_END});\n\t\tthis.$=$$[$0-1];\nbreak;\ncase 23:\n\n\t\t// Alt start\n\t\t$$[$0-1].unshift({type: 'altStart', altText:yy.parseMessage($$[$0-2]), signalType: yy.LINETYPE.ALT_START});\n\t\t// Content in alt is already in $$[$0-1]\n\t\t// End\n\t\t$$[$0-1].push({type: 'altEnd', signalType: yy.LINETYPE.ALT_END});\n\t\tthis.$=$$[$0-1];\nbreak;\ncase 24:\n\n\t\t// Parallel start\n\t\t$$[$0-1].unshift({type: 'parStart', parText:yy.parseMessage($$[$0-2]), signalType: yy.LINETYPE.PAR_START});\n\t\t// Content in par is already in $$[$0-1]\n\t\t// End\n\t\t$$[$0-1].push({type: 'parEnd', signalType: yy.LINETYPE.PAR_END});\n\t\tthis.$=$$[$0-1];\nbreak;\ncase 27:\n this.$ = $$[$0-3].concat([{type: 'and', parText:yy.parseMessage($$[$0-1]), signalType: yy.LINETYPE.PAR_AND}, $$[$0]]); \nbreak;\ncase 29:\n this.$ = $$[$0-3].concat([{type: 'else', altText:yy.parseMessage($$[$0-1]), signalType: yy.LINETYPE.ALT_ELSE}, $$[$0]]); \nbreak;\ncase 30:\n\n\t\tthis.$ = [$$[$0-1], {type:'addNote', placement:$$[$0-2], actor:$$[$0-1].actor, text:$$[$0]}];\nbreak;\ncase 31:\n\n\t\t// Coerce actor_pair into a [to, from, ...] array\n\t\t$$[$0-2] = [].concat($$[$0-1], $$[$0-1]).slice(0, 2);\n\t\t$$[$0-2][0] = $$[$0-2][0].actor;\n\t\t$$[$0-2][1] = $$[$0-2][1].actor;\n\t\tthis.$ = [$$[$0-1], {type:'addNote', placement:yy.PLACEMENT.OVER, actor:$$[$0-2].slice(0, 2), text:$$[$0]}];\nbreak;\ncase 34:\n this.$ = [$$[$0-2], $$[$0]]; \nbreak;\ncase 35:\n this.$ = $$[$0]; \nbreak;\ncase 36:\n this.$ = yy.PLACEMENT.LEFTOF; \nbreak;\ncase 37:\n this.$ = yy.PLACEMENT.RIGHTOF; \nbreak;\ncase 38:\n this.$ = [$$[$0-4],$$[$0-1],{type: 'addMessage', from:$$[$0-4].actor, to:$$[$0-1].actor, signalType:$$[$0-3], msg:$$[$0]},\n\t {type: 'activeStart', signalType: yy.LINETYPE.ACTIVE_START, actor: $$[$0-1]}\n\t ]\nbreak;\ncase 39:\n this.$ = [$$[$0-4],$$[$0-1],{type: 'addMessage', from:$$[$0-4].actor, to:$$[$0-1].actor, signalType:$$[$0-3], msg:$$[$0]},\n\t {type: 'activeEnd', signalType: yy.LINETYPE.ACTIVE_END, actor: $$[$0-4]}\n\t ]\nbreak;\ncase 40:\n this.$ = [$$[$0-3],$$[$0-1],{type: 'addMessage', from:$$[$0-3].actor, to:$$[$0-1].actor, signalType:$$[$0-2], msg:$$[$0]}]\nbreak;\ncase 41:\nthis.$={type: 'addActor', actor:$$[$0]}\nbreak;\ncase 42:\n this.$ = yy.LINETYPE.SOLID_OPEN; \nbreak;\ncase 43:\n this.$ = yy.LINETYPE.DOTTED_OPEN; \nbreak;\ncase 44:\n this.$ = yy.LINETYPE.SOLID; \nbreak;\ncase 45:\n this.$ = yy.LINETYPE.DOTTED; \nbreak;\ncase 46:\n this.$ = yy.LINETYPE.SOLID_CROSS; \nbreak;\ncase 47:\n this.$ = yy.LINETYPE.DOTTED_CROSS; \nbreak;\ncase 48:\nthis.$ = yy.parseMessage($$[$0].trim().substring(1)) \nbreak;\ncase 49:\n yy.parseDirective('%%{', 'open_directive'); \nbreak;\ncase 50:\n yy.parseDirective($$[$0], 'type_directive'); \nbreak;\ncase 51:\n $$[$0] = $$[$0].trim().replace(/'/g, '\"'); yy.parseDirective($$[$0], 'arg_directive'); \nbreak;\ncase 52:\n yy.parseDirective('}%%', 'close_directive', 'sequence'); \nbreak;\n}\n},\ntable: [{3:1,4:$V0,5:$V1,6:4,7:$V2,11:6,56:$V3},{1:[3]},{3:8,4:$V0,5:$V1,6:4,7:$V2,11:6,56:$V3},{3:9,4:$V0,5:$V1,6:4,7:$V2,11:6,56:$V3},{3:10,4:$V0,5:$V1,6:4,7:$V2,11:6,56:$V3},o([1,4,5,16,21,22,23,25,27,29,30,31,33,37,48,56],$V4,{8:11}),{12:12,57:[1,13]},{57:[2,49]},{1:[2,1]},{1:[2,2]},{1:[2,3]},{1:[2,4],4:$V5,5:$V6,6:30,9:14,10:16,11:6,16:$V7,17:31,20:19,21:$V8,22:$V9,23:$Va,24:23,25:$Vb,27:$Vc,29:$Vd,30:$Ve,31:$Vf,33:$Vg,37:$Vh,48:$Vi,56:$V3},{13:34,14:[1,35],59:$Vj},o([14,59],[2,50]),o($Vk,[2,6]),{6:30,10:37,11:6,16:$V7,17:31,20:19,21:$V8,22:$V9,23:$Va,24:23,25:$Vb,27:$Vc,29:$Vd,30:$Ve,31:$Vf,33:$Vg,37:$Vh,48:$Vi,56:$V3},o($Vk,[2,8]),o($Vk,[2,9]),{17:38,48:$Vi},{5:[1,39]},o($Vk,[2,15]),{17:40,48:$Vi},{17:41,48:$Vi},{5:[1,42]},{26:43,55:$Vl},{19:[1,45]},{19:[1,46]},{19:[1,47]},{19:[1,48]},{19:[1,49]},o($Vk,[2,25]),{45:50,49:[1,51],50:[1,52],51:[1,53],52:[1,54],53:[1,55],54:[1,56]},{38:57,39:[1,58],43:[1,59],44:[1,60]},o([5,18,42,49,50,51,52,53,54,55],[2,41]),{5:[1,61]},{15:62,58:[1,63]},{5:[2,52]},o($Vk,[2,7]),{5:[1,65],18:[1,64]},o($Vk,[2,14]),{5:[1,66]},{5:[1,67]},o($Vk,[2,18]),{5:[1,68]},{5:[2,48]},o($Vm,$V4,{8:69}),o($Vm,$V4,{8:70}),o($Vm,$V4,{8:71}),o($Vn,$V4,{32:72,8:73}),o($Vo,$V4,{34:74,8:75}),{17:78,46:[1,76],47:[1,77],48:$Vi},o($Vp,[2,42]),o($Vp,[2,43]),o($Vp,[2,44]),o($Vp,[2,45]),o($Vp,[2,46]),o($Vp,[2,47]),{17:79,48:$Vi},{17:81,40:80,48:$Vi},{48:[2,36]},{48:[2,37]},o($Vq,[2,10]),{13:82,59:$Vj},{59:[2,51]},{19:[1,83]},o($Vk,[2,13]),o($Vk,[2,16]),o($Vk,[2,17]),o($Vk,[2,19]),{4:$V5,5:$V6,6:30,9:14,10:16,11:6,16:$V7,17:31,20:19,21:$V8,22:$V9,23:$Va,24:23,25:$Vb,27:$Vc,28:[1,84],29:$Vd,30:$Ve,31:$Vf,33:$Vg,37:$Vh,48:$Vi,56:$V3},{4:$V5,5:$V6,6:30,9:14,10:16,11:6,16:$V7,17:31,20:19,21:$V8,22:$V9,23:$Va,24:23,25:$Vb,27:$Vc,28:[1,85],29:$Vd,30:$Ve,31:$Vf,33:$Vg,37:$Vh,48:$Vi,56:$V3},{4:$V5,5:$V6,6:30,9:14,10:16,11:6,16:$V7,17:31,20:19,21:$V8,22:$V9,23:$Va,24:23,25:$Vb,27:$Vc,28:[1,86],29:$Vd,30:$Ve,31:$Vf,33:$Vg,37:$Vh,48:$Vi,56:$V3},{28:[1,87]},{4:$V5,5:$V6,6:30,9:14,10:16,11:6,16:$V7,17:31,20:19,21:$V8,22:$V9,23:$Va,24:23,25:$Vb,27:$Vc,28:[2,28],29:$Vd,30:$Ve,31:$Vf,33:$Vg,36:[1,88],37:$Vh,48:$Vi,56:$V3},{28:[1,89]},{4:$V5,5:$V6,6:30,9:14,10:16,11:6,16:$V7,17:31,20:19,21:$V8,22:$V9,23:$Va,24:23,25:$Vb,27:$Vc,28:[2,26],29:$Vd,30:$Ve,31:$Vf,33:$Vg,35:[1,90],37:$Vh,48:$Vi,56:$V3},{17:91,48:$Vi},{17:92,48:$Vi},{26:93,55:$Vl},{26:94,55:$Vl},{26:95,55:$Vl},{42:[1,96],55:[2,35]},{5:[1,97]},{5:[1,98]},o($Vk,[2,20]),o($Vk,[2,21]),o($Vk,[2,22]),o($Vk,[2,23]),{19:[1,99]},o($Vk,[2,24]),{19:[1,100]},{26:101,55:$Vl},{26:102,55:$Vl},{5:[2,40]},{5:[2,30]},{5:[2,31]},{17:103,48:$Vi},o($Vq,[2,11]),o($Vk,[2,12]),o($Vn,$V4,{8:73,32:104}),o($Vo,$V4,{8:75,34:105}),{5:[2,38]},{5:[2,39]},{55:[2,34]},{28:[2,29]},{28:[2,27]}],\ndefaultActions: {7:[2,49],8:[2,1],9:[2,2],10:[2,3],36:[2,52],44:[2,48],59:[2,36],60:[2,37],63:[2,51],93:[2,40],94:[2,30],95:[2,31],101:[2,38],102:[2,39],103:[2,34],104:[2,29],105:[2,27]},\nparseError: function parseError (str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer.lex() || EOF;\n if (typeof token !== 'number') {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {\"case-insensitive\":true},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0: this.begin('OPEN_DIRECTIVE'); return 56; \nbreak;\ncase 1: this.begin('TYPE_DIRECTIVE'); return 57; \nbreak;\ncase 2: this.popState(); this.begin('ARG_DIRECTIVE'); return 14; \nbreak;\ncase 3: this.popState(); this.popState(); return 59; \nbreak;\ncase 4:return 58;\nbreak;\ncase 5:return 5;\nbreak;\ncase 6:/* skip all whitespace */\nbreak;\ncase 7:/* skip same-line whitespace */\nbreak;\ncase 8:/* skip comments */\nbreak;\ncase 9:/* skip comments */\nbreak;\ncase 10:/* skip comments */\nbreak;\ncase 11: this.begin('ID'); return 16; \nbreak;\ncase 12: yy_.yytext = yy_.yytext.trim(); this.begin('ALIAS'); return 48; \nbreak;\ncase 13: this.popState(); this.popState(); this.begin('LINE'); return 18; \nbreak;\ncase 14: this.popState(); this.popState(); return 5; \nbreak;\ncase 15: this.begin('LINE'); return 27; \nbreak;\ncase 16: this.begin('LINE'); return 29; \nbreak;\ncase 17: this.begin('LINE'); return 30; \nbreak;\ncase 18: this.begin('LINE'); return 31; \nbreak;\ncase 19: this.begin('LINE'); return 36; \nbreak;\ncase 20: this.begin('LINE'); return 33; \nbreak;\ncase 21: this.begin('LINE'); return 35; \nbreak;\ncase 22: this.popState(); return 19; \nbreak;\ncase 23:return 28;\nbreak;\ncase 24:return 43;\nbreak;\ncase 25:return 44;\nbreak;\ncase 26:return 39;\nbreak;\ncase 27:return 37;\nbreak;\ncase 28: this.begin('ID'); return 22; \nbreak;\ncase 29: this.begin('ID'); return 23; \nbreak;\ncase 30:return 25;\nbreak;\ncase 31:return 7;\nbreak;\ncase 32:return 21;\nbreak;\ncase 33:return 42;\nbreak;\ncase 34:return 5;\nbreak;\ncase 35: yy_.yytext = yy_.yytext.trim(); return 48; \nbreak;\ncase 36:return 51;\nbreak;\ncase 37:return 52;\nbreak;\ncase 38:return 49;\nbreak;\ncase 39:return 50;\nbreak;\ncase 40:return 53;\nbreak;\ncase 41:return 54;\nbreak;\ncase 42:return 55;\nbreak;\ncase 43:return 46;\nbreak;\ncase 44:return 47;\nbreak;\ncase 45:return 5;\nbreak;\ncase 46:return 'INVALID';\nbreak;\n}\n},\nrules: [/^(?:%%\\{)/i,/^(?:((?:(?!\\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\\}%%)/i,/^(?:((?:(?!\\}%%).|\\n)*))/i,/^(?:[\\n]+)/i,/^(?:\\s+)/i,/^(?:((?!\\n)\\s)+)/i,/^(?:#[^\\n]*)/i,/^(?:%(?!\\{)[^\\n]*)/i,/^(?:[^\\}]%%[^\\n]*)/i,/^(?:participant\\b)/i,/^(?:[^\\->:\\n,;]+?(?=((?!\\n)\\s)+as(?!\\n)\\s|[#\\n;]|$))/i,/^(?:as\\b)/i,/^(?:(?:))/i,/^(?:loop\\b)/i,/^(?:rect\\b)/i,/^(?:opt\\b)/i,/^(?:alt\\b)/i,/^(?:else\\b)/i,/^(?:par\\b)/i,/^(?:and\\b)/i,/^(?:(?:[:]?(?:no)?wrap)?[^#\\n;]*)/i,/^(?:end\\b)/i,/^(?:left of\\b)/i,/^(?:right of\\b)/i,/^(?:over\\b)/i,/^(?:note\\b)/i,/^(?:activate\\b)/i,/^(?:deactivate\\b)/i,/^(?:title\\b)/i,/^(?:sequenceDiagram\\b)/i,/^(?:autonumber\\b)/i,/^(?:,)/i,/^(?:;)/i,/^(?:[^\\+\\->:\\n,;]+)/i,/^(?:->>)/i,/^(?:-->>)/i,/^(?:->)/i,/^(?:-->)/i,/^(?:-[x])/i,/^(?:--[x])/i,/^(?::(?:(?:no)?wrap)?[^#\\n;]+)/i,/^(?:\\+)/i,/^(?:-)/i,/^(?:$)/i,/^(?:.)/i],\nconditions: {\"LINE\":{\"rules\":[7,8,22],\"inclusive\":false},\"ARG_DIRECTIVE\":{\"rules\":[3,4,8],\"inclusive\":false},\"TYPE_DIRECTIVE\":{\"rules\":[2,3,8],\"inclusive\":false},\"OPEN_DIRECTIVE\":{\"rules\":[1,8],\"inclusive\":false},\"ALIAS\":{\"rules\":[7,8,13,14],\"inclusive\":false},\"ID\":{\"rules\":[7,8,12],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,5,6,8,9,10,11,15,16,17,18,19,20,21,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain (args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","/**\n * Copyright (c) 2014, Chris Pettitt\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * 1. Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * 2. Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * 3. Neither the name of the copyright holder nor the names of its contributors\n * may be used to endorse or promote products derived from this software without\n * specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\n * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nvar lib = require(\"./lib\");\n\nmodule.exports = {\n Graph: lib.Graph,\n json: require(\"./lib/json\"),\n alg: require(\"./lib/alg\"),\n version: lib.version\n};\n","/* global window */\n\nvar lodash;\n\nif (typeof require === \"function\") {\n try {\n lodash = {\n cloneDeep: require(\"lodash/cloneDeep\"),\n constant: require(\"lodash/constant\"),\n defaults: require(\"lodash/defaults\"),\n each: require(\"lodash/each\"),\n filter: require(\"lodash/filter\"),\n find: require(\"lodash/find\"),\n flatten: require(\"lodash/flatten\"),\n forEach: require(\"lodash/forEach\"),\n forIn: require(\"lodash/forIn\"),\n has: require(\"lodash/has\"),\n isUndefined: require(\"lodash/isUndefined\"),\n last: require(\"lodash/last\"),\n map: require(\"lodash/map\"),\n mapValues: require(\"lodash/mapValues\"),\n max: require(\"lodash/max\"),\n merge: require(\"lodash/merge\"),\n min: require(\"lodash/min\"),\n minBy: require(\"lodash/minBy\"),\n now: require(\"lodash/now\"),\n pick: require(\"lodash/pick\"),\n range: require(\"lodash/range\"),\n reduce: require(\"lodash/reduce\"),\n sortBy: require(\"lodash/sortBy\"),\n uniqueId: require(\"lodash/uniqueId\"),\n values: require(\"lodash/values\"),\n zipObject: require(\"lodash/zipObject\"),\n };\n } catch (e) {\n // continue regardless of error\n }\n}\n\nif (!lodash) {\n lodash = window._;\n}\n\nmodule.exports = lodash;\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n Buffer = require('buffer').Buffer;\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n }\n\n if (base === 16) {\n this._parseHex(number, start);\n } else {\n this._parseBase(number, base, start);\n }\n\n if (number[0] === '-') {\n this.negative = 1;\n }\n\n this.strip();\n\n if (endian !== 'le') return;\n\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex (str, start, end) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r <<= 4;\n\n // 'a' - 'f'\n if (c >= 49 && c <= 54) {\n r |= c - 49 + 0xa;\n\n // 'A' - 'F'\n } else if (c >= 17 && c <= 22) {\n r |= c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r |= c & 0xf;\n }\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n // Scan 24-bit chunks and add them to the number\n var off = 0;\n for (i = number.length - 6, j = 0; i >= start; i -= 6) {\n w = parseHex(number, i, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n // NOTE: `0x3fffff` is intentional here, 26bits max shift + 24bit hex limb\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n if (i + 6 !== start) {\n w = parseHex(number, start, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n }\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '
/gi;\n\nexport const hasBreaks = text => {\n return /
/gi.test(text);\n};\n\nexport const splitBreaks = text => {\n return text.split(/
/gi);\n};\n\nconst breakToPlaceholder = s => {\n return s.replace(lineBreakRegex, '#br#');\n};\n\nconst placeholderToBreak = s => {\n return s.replace(/#br#/g, '
');\n};\n\nexport default {\n getRows,\n sanitizeText,\n hasBreaks,\n splitBreaks,\n lineBreakRegex,\n removeScript\n};\n","import {\n curveBasis,\n curveBasisClosed,\n curveBasisOpen,\n curveLinear,\n curveLinearClosed,\n curveMonotoneX,\n curveMonotoneY,\n curveNatural,\n curveStep,\n curveStepAfter,\n curveStepBefore,\n select\n} from 'd3';\nimport { logger } from './logger';\nimport { sanitizeUrl } from '@braintree/sanitize-url';\nimport common from './diagrams/common/common';\n// import cryptoRandomString from 'crypto-random-string';\n\n// Effectively an enum of the supported curve types, accessible by name\nconst d3CurveTypes = {\n curveBasis: curveBasis,\n curveBasisClosed: curveBasisClosed,\n curveBasisOpen: curveBasisOpen,\n curveLinear: curveLinear,\n curveLinearClosed: curveLinearClosed,\n curveMonotoneX: curveMonotoneX,\n curveMonotoneY: curveMonotoneY,\n curveNatural: curveNatural,\n curveStep: curveStep,\n curveStepAfter: curveStepAfter,\n curveStepBefore: curveStepBefore\n};\nconst directive = /[%]{2}[{]\\s*(?:(?:(\\w+)\\s*:|(\\w+))\\s*(?:(?:(\\w+))|((?:(?![}][%]{2}).|\\r?\\n)*))?\\s*)(?:[}][%]{2})?/gi;\nconst directiveWithoutOpen = /\\s*(?:(?:(\\w+)(?=:):|(\\w+))\\s*(?:(?:(\\w+))|((?:(?![}][%]{2}).|\\r?\\n)*))?\\s*)(?:[}][%]{2})?/gi;\nconst anyComment = /\\s*%%.*\\n/gm;\n\n/**\n * @function detectInit\n * Detects the init config object from the text\n * ```mermaid\n * %%{init: {\"theme\": \"debug\", \"logLevel\": 1 }}%%\n * graph LR\n * a-->b\n * b-->c\n * c-->d\n * d-->e\n * e-->f\n * f-->g\n * g-->h\n * ```\n * or\n * ```mermaid\n * %%{initialize: {\"theme\": \"dark\", logLevel: \"debug\" }}%%\n * graph LR\n * a-->b\n * b-->c\n * c-->d\n * d-->e\n * e-->f\n * f-->g\n * g-->h\n * ```\n *\n * @param {string} text The text defining the graph\n * @returns {object} the json object representing the init passed to mermaid.initialize()\n */\nexport const detectInit = function(text) {\n let inits = detectDirective(text, /(?:init\\b)|(?:initialize\\b)/);\n let results = {};\n if (Array.isArray(inits)) {\n let args = inits.map(init => init.args);\n results = assignWithDepth(results, [...args]);\n } else {\n results = inits.args;\n }\n if (results) {\n let type = detectType(text);\n ['config'].forEach(prop => {\n if (typeof results[prop] !== 'undefined') {\n if (type === 'flowchart-v2') {\n type = 'flowchart';\n }\n results[type] = results[prop];\n delete results[prop];\n }\n });\n }\n return results;\n};\n\n/**\n * @function detectDirective\n * Detects the directive from the text. Text can be single line or multiline. If type is null or omitted\n * the first directive encountered in text will be returned\n * ```mermaid\n * graph LR\n * %%{somedirective}%%\n * a-->b\n * b-->c\n * c-->d\n * d-->e\n * e-->f\n * f-->g\n * g-->h\n * ```\n *\n * @param {string} text The text defining the graph\n * @param {string|RegExp} type The directive to return (default: null)\n * @returns {object | Array} An object or Array representing the directive(s): { type: string, args: object|null } matched by the input type\n * if a single directive was found, that directive object will be returned.\n */\nexport const detectDirective = function(text, type = null) {\n try {\n const commentWithoutDirectives = new RegExp(\n `[%]{2}(?![{]${directiveWithoutOpen.source})(?=[}][%]{2}).*\\n`,\n 'ig'\n );\n text = text\n .trim()\n .replace(commentWithoutDirectives, '')\n .replace(/'/gm, '\"');\n logger.debug(\n `Detecting diagram directive${type !== null ? ' type:' + type : ''} based on the text:${text}`\n );\n let match,\n result = [];\n while ((match = directive.exec(text)) !== null) {\n // This is necessary to avoid infinite loops with zero-width matches\n if (match.index === directive.lastIndex) {\n directive.lastIndex++;\n }\n if (\n (match && !type) ||\n (type && match[1] && match[1].match(type)) ||\n (type && match[2] && match[2].match(type))\n ) {\n let type = match[1] ? match[1] : match[2];\n let args = match[3] ? match[3].trim() : match[4] ? JSON.parse(match[4].trim()) : null;\n result.push({ type, args });\n }\n }\n if (result.length === 0) {\n result.push({ type: text, args: null });\n }\n\n return result.length === 1 ? result[0] : result;\n } catch (error) {\n logger.error(\n `ERROR: ${error.message} - Unable to parse directive${\n type !== null ? ' type:' + type : ''\n } based on the text:${text}`\n );\n return { type: null, args: null };\n }\n};\n\n/**\n * @function detectType\n * Detects the type of the graph text. Takes into consideration the possible existence of an %%init\n * directive\n * ```mermaid\n * %%{initialize: {\"startOnLoad\": true, logLevel: \"fatal\" }}%%\n * graph LR\n * a-->b\n * b-->c\n * c-->d\n * d-->e\n * e-->f\n * f-->g\n * g-->h\n * ```\n *\n * @param {string} text The text defining the graph\n * @returns {string} A graph definition key\n */\nexport const detectType = function(text) {\n text = text.replace(directive, '').replace(anyComment, '\\n');\n logger.debug('Detecting diagram type based on the text ' + text);\n if (text.match(/^\\s*sequenceDiagram/)) {\n return 'sequence';\n }\n\n if (text.match(/^\\s*gantt/)) {\n return 'gantt';\n }\n if (text.match(/^\\s*classDiagram-v2/)) {\n return 'classDiagram';\n }\n if (text.match(/^\\s*classDiagram/)) {\n return 'class';\n }\n\n if (text.match(/^\\s*stateDiagram-v2/)) {\n return 'stateDiagram';\n }\n\n if (text.match(/^\\s*stateDiagram/)) {\n return 'state';\n }\n\n if (text.match(/^\\s*gitGraph/)) {\n return 'git';\n }\n if (text.match(/^\\s*flowchart/)) {\n return 'flowchart-v2';\n }\n\n if (text.match(/^\\s*info/)) {\n return 'info';\n }\n if (text.match(/^\\s*pie/)) {\n return 'pie';\n }\n\n if (text.match(/^\\s*erDiagram/)) {\n return 'er';\n }\n\n if (text.match(/^\\s*journey/)) {\n return 'journey';\n }\n\n return 'flowchart';\n};\n\nconst memoize = (fn, resolver) => {\n let cache = {};\n return (...args) => {\n let n = resolver ? resolver.apply(this, args) : args[0];\n if (n in cache) {\n return cache[n];\n } else {\n let result = fn(...args);\n cache[n] = result;\n return result;\n }\n };\n};\n\n/**\n * @function isSubstringInArray\n * Detects whether a substring in present in a given array\n * @param {string} str The substring to detect\n * @param {array} arr The array to search\n * @returns {number} the array index containing the substring or -1 if not present\n **/\nexport const isSubstringInArray = function(str, arr) {\n for (let i = 0; i < arr.length; i++) {\n if (arr[i].match(str)) return i;\n }\n return -1;\n};\n\nexport const interpolateToCurve = (interpolate, defaultCurve) => {\n if (!interpolate) {\n return defaultCurve;\n }\n const curveName = `curve${interpolate.charAt(0).toUpperCase() + interpolate.slice(1)}`;\n return d3CurveTypes[curveName] || defaultCurve;\n};\n\nexport const formatUrl = (linkStr, config) => {\n let url = linkStr.trim();\n\n if (url) {\n if (config.securityLevel !== 'loose') {\n return sanitizeUrl(url);\n }\n\n return url;\n }\n};\n\nexport const runFunc = (functionName, ...params) => {\n const arrPaths = functionName.split('.');\n\n const len = arrPaths.length - 1;\n const fnName = arrPaths[len];\n\n let obj = window;\n for (let i = 0; i < len; i++) {\n obj = obj[arrPaths[i]];\n if (!obj) return;\n }\n\n obj[fnName](...params);\n};\n\nconst distance = (p1, p2) =>\n p1 && p2 ? Math.sqrt(Math.pow(p2.x - p1.x, 2) + Math.pow(p2.y - p1.y, 2)) : 0;\n\nconst traverseEdge = points => {\n let prevPoint;\n let totalDistance = 0;\n\n points.forEach(point => {\n totalDistance += distance(point, prevPoint);\n prevPoint = point;\n });\n\n // Traverse half of total distance along points\n let remainingDistance = totalDistance / 2;\n let center = undefined;\n prevPoint = undefined;\n points.forEach(point => {\n if (prevPoint && !center) {\n const vectorDistance = distance(point, prevPoint);\n if (vectorDistance < remainingDistance) {\n remainingDistance -= vectorDistance;\n } else {\n // The point is remainingDistance from prevPoint in the vector between prevPoint and point\n // Calculate the coordinates\n const distanceRatio = remainingDistance / vectorDistance;\n if (distanceRatio <= 0) center = prevPoint;\n if (distanceRatio >= 1) center = { x: point.x, y: point.y };\n if (distanceRatio > 0 && distanceRatio < 1) {\n center = {\n x: (1 - distanceRatio) * prevPoint.x + distanceRatio * point.x,\n y: (1 - distanceRatio) * prevPoint.y + distanceRatio * point.y\n };\n }\n }\n }\n prevPoint = point;\n });\n return center;\n};\n\nconst calcLabelPosition = points => {\n return traverseEdge(points);\n};\n\nconst calcCardinalityPosition = (isRelationTypePresent, points, initialPosition) => {\n let prevPoint;\n let totalDistance = 0; // eslint-disable-line\n if (points[0] !== initialPosition) {\n points = points.reverse();\n }\n points.forEach(point => {\n totalDistance += distance(point, prevPoint);\n prevPoint = point;\n });\n\n // Traverse only 25 total distance along points to find cardinality point\n const distanceToCardinalityPoint = 25;\n\n let remainingDistance = distanceToCardinalityPoint;\n let center;\n prevPoint = undefined;\n points.forEach(point => {\n if (prevPoint && !center) {\n const vectorDistance = distance(point, prevPoint);\n if (vectorDistance < remainingDistance) {\n remainingDistance -= vectorDistance;\n } else {\n // The point is remainingDistance from prevPoint in the vector between prevPoint and point\n // Calculate the coordinates\n const distanceRatio = remainingDistance / vectorDistance;\n if (distanceRatio <= 0) center = prevPoint;\n if (distanceRatio >= 1) center = { x: point.x, y: point.y };\n if (distanceRatio > 0 && distanceRatio < 1) {\n center = {\n x: (1 - distanceRatio) * prevPoint.x + distanceRatio * point.x,\n y: (1 - distanceRatio) * prevPoint.y + distanceRatio * point.y\n };\n }\n }\n }\n prevPoint = point;\n });\n // if relation is present (Arrows will be added), change cardinality point off-set distance (d)\n let d = isRelationTypePresent ? 10 : 5;\n //Calculate Angle for x and y axis\n let angle = Math.atan2(points[0].y - center.y, points[0].x - center.x);\n let cardinalityPosition = { x: 0, y: 0 };\n //Calculation cardinality position using angle, center point on the line/curve but pendicular and with offset-distance\n cardinalityPosition.x = Math.sin(angle) * d + (points[0].x + center.x) / 2;\n cardinalityPosition.y = -Math.cos(angle) * d + (points[0].y + center.y) / 2;\n return cardinalityPosition;\n};\n\nexport const getStylesFromArray = arr => {\n let style = '';\n let labelStyle = '';\n\n for (let i = 0; i < arr.length; i++) {\n if (typeof arr[i] !== 'undefined') {\n // add text properties to label style definition\n if (arr[i].startsWith('color:') || arr[i].startsWith('text-align:')) {\n labelStyle = labelStyle + arr[i] + ';';\n } else {\n style = style + arr[i] + ';';\n }\n }\n }\n\n return { style: style, labelStyle: labelStyle };\n};\n\nlet cnt = 0;\nexport const generateId = () => {\n cnt++;\n return (\n 'id-' +\n Math.random()\n .toString(36)\n .substr(2, 12) +\n '-' +\n cnt\n );\n};\n\nfunction makeid(length) {\n var result = '';\n var characters = '0123456789abcdef';\n var charactersLength = characters.length;\n for (var i = 0; i < length; i++) {\n result += characters.charAt(Math.floor(Math.random() * charactersLength));\n }\n return result;\n}\n\nexport const random = options => {\n return makeid(options.length);\n};\n\n/**\n * @function assignWithDepth\n * Extends the functionality of {@link ObjectConstructor.assign} with the ability to merge arbitrary-depth objects\n * For each key in src with path `k` (recursively) performs an Object.assign(dst[`k`], src[`k`]) with\n * a slight change from the typical handling of undefined for dst[`k`]: instead of raising an error,\n * dst[`k`] is auto-initialized to {} and effectively merged with src[`k`]\n *
' },\n config\n );\n if (common.lineBreakRegex.test(label)) {\n return label;\n }\n const words = label.split(' ');\n const completedLines = [];\n let nextLine = '';\n words.forEach((word, index) => {\n const wordLength = calculateTextWidth(`${word} `, config);\n const nextLineLength = calculateTextWidth(nextLine, config);\n if (wordLength > maxWidth) {\n const { hyphenatedStrings, remainingWord } = breakString(word, maxWidth, '-', config);\n completedLines.push(nextLine, ...hyphenatedStrings);\n nextLine = remainingWord;\n } else if (nextLineLength + wordLength >= maxWidth) {\n completedLines.push(nextLine);\n nextLine = word;\n } else {\n nextLine = [nextLine, word].filter(Boolean).join(' ');\n }\n const currentWord = index + 1;\n const isLastWord = currentWord === words.length;\n if (isLastWord) {\n completedLines.push(nextLine);\n }\n });\n return completedLines.filter(line => line !== '').join(config.joinWith);\n },\n (label, maxWidth, config) =>\n `${label}-${maxWidth}-${config.fontSize}-${config.fontWeight}-${config.fontFamily}-${config.joinWith}`\n);\n\nconst breakString = memoize(\n (word, maxWidth, hyphenCharacter = '-', config) => {\n config = Object.assign(\n { fontSize: 12, fontWeight: 400, fontFamily: 'Arial', margin: 0 },\n config\n );\n const characters = word.split('');\n const lines = [];\n let currentLine = '';\n characters.forEach((character, index) => {\n const nextLine = `${currentLine}${character}`;\n const lineWidth = calculateTextWidth(nextLine, config);\n if (lineWidth >= maxWidth) {\n const currentCharacter = index + 1;\n const isLastLine = characters.length === currentCharacter;\n const hyphenatedNextLine = `${nextLine}${hyphenCharacter}`;\n lines.push(isLastLine ? nextLine : hyphenatedNextLine);\n currentLine = '';\n } else {\n currentLine = nextLine;\n }\n });\n return { hyphenatedStrings: lines, remainingWord: currentLine };\n },\n (word, maxWidth, hyphenCharacter = '-', config) =>\n `${word}-${maxWidth}-${hyphenCharacter}-${config.fontSize}-${config.fontWeight}-${config.fontFamily}`\n);\n\n/**\n * This calculates the text's height, taking into account the wrap breaks and\n * both the statically configured height, width, and the length of the text (in pixels).\n *\n * If the wrapped text text has greater height, we extend the height, so it's\n * value won't overflow.\n *\n * @return - The height for the given text\n * @param text the text to measure\n * @param config - the config for fontSize, fontFamily, and fontWeight all impacting the resulting size\n */\nexport const calculateTextHeight = function(text, config) {\n config = Object.assign(\n { fontSize: 12, fontWeight: 400, fontFamily: 'Arial', margin: 15 },\n config\n );\n return calculateTextDimensions(text, config).height;\n};\n\n/**\n * This calculates the width of the given text, font size and family.\n *\n * @return - The width for the given text\n * @param text - The text to calculate the width of\n * @param config - the config for fontSize, fontFamily, and fontWeight all impacting the resulting size\n */\nexport const calculateTextWidth = function(text, config) {\n config = Object.assign({ fontSize: 12, fontWeight: 400, fontFamily: 'Arial' }, config);\n return calculateTextDimensions(text, config).width;\n};\n\n/**\n * This calculates the dimensions of the given text, font size, font family, font weight, and margins.\n *\n * @return - The width for the given text\n * @param text - The text to calculate the width of\n * @param config - the config for fontSize, fontFamily, fontWeight, and margin all impacting the resulting size\n */\nexport const calculateTextDimensions = memoize(\n function(text, config) {\n config = Object.assign({ fontSize: 12, fontWeight: 400, fontFamily: 'Arial' }, config);\n const { fontSize, fontFamily, fontWeight } = config;\n if (!text) {\n return { width: 0, height: 0 };\n }\n\n // We can't really know if the user supplied font family will render on the user agent;\n // thus, we'll take the max width between the user supplied font family, and a default\n // of sans-serif.\n const fontFamilies = ['sans-serif', fontFamily];\n const lines = text.split(common.lineBreakRegex);\n let dims = [];\n\n const body = select('body');\n // We don't want to leak DOM elements - if a removal operation isn't available\n // for any reason, do not continue.\n if (!body.remove) {\n return { width: 0, height: 0, lineHeight: 0 };\n }\n\n const g = body.append('svg');\n\n for (let fontFamily of fontFamilies) {\n let cheight = 0;\n let dim = { width: 0, height: 0, lineHeight: 0 };\n for (let line of lines) {\n const textObj = getTextObj();\n textObj.text = line;\n const textElem = drawSimpleText(g, textObj)\n .style('font-size', fontSize)\n .style('font-weight', fontWeight)\n .style('font-family', fontFamily);\n\n let bBox = (textElem._groups || textElem)[0][0].getBBox();\n dim.width = Math.round(Math.max(dim.width, bBox.width));\n cheight = Math.round(bBox.height);\n dim.height += cheight;\n dim.lineHeight = Math.round(Math.max(dim.lineHeight, cheight));\n }\n dims.push(dim);\n }\n\n g.remove();\n\n let index =\n isNaN(dims[1].height) ||\n isNaN(dims[1].width) ||\n isNaN(dims[1].lineHeight) ||\n (dims[0].height > dims[1].height &&\n dims[0].width > dims[1].width &&\n dims[0].lineHeight > dims[1].lineHeight)\n ? 0\n : 1;\n return dims[index];\n },\n (text, config) => `${text}-${config.fontSize}-${config.fontWeight}-${config.fontFamily}`\n);\n\nexport default {\n assignWithDepth,\n wrapLabel,\n calculateTextHeight,\n calculateTextWidth,\n calculateTextDimensions,\n detectInit,\n detectDirective,\n detectType,\n isSubstringInArray,\n interpolateToCurve,\n calcLabelPosition,\n calcCardinalityPosition,\n formatUrl,\n getStylesFromArray,\n generateId,\n random,\n memoize,\n runFunc\n};\n","import { darken, lighten, adjust } from 'khroma';\n\nclass Theme {\n constructor() {\n /* Base variables */\n this.primaryColor = '#9f33be';\n this.secondaryColor = '#b20238';\n this.tertiaryColor = lighten(this.primaryColor, 30);\n this.relationColor = '#000';\n\n // this.primaryColor = '#fa255e';\n // this.secondaryColor = '#c39ea0';\n // this.tertiaryColor = '#f8e5e5';\n\n // this.primaryColor = '#ECECFF';\n // this.secondaryColor = '#ffffde';\n // this.tertiaryColor = '#ffffde';\n\n this.background = 'white';\n this.lineColor = '#333333';\n this.border1 = '#9370DB';\n this.arrowheadColor = '#333333';\n this.fontFamily = '\"trebuchet ms\", verdana, arial';\n this.fontSize = '16px';\n this.labelBackground = '#e8e8e8';\n this.textColor = '#333';\n this.noteBkgColor = '#fff5ad';\n this.noteBorderColor = '#aaaa33';\n this.updateColors();\n }\n updateColors() {\n this.secondBkg = this.tertiaryColor;\n\n /* Flowchart variables */\n\n this.nodeBkg = this.primaryColor;\n this.mainBkg = this.primaryColor;\n this.nodeBorder = darken(this.primaryColor, 23); // border 1\n this.clusterBkg = this.tertiaryColor;\n this.clusterBorder = darken(this.tertiaryColor, 30);\n this.defaultLinkColor = this.lineColor;\n this.titleColor = this.textColor;\n this.edgeLabelBackground = this.labelBackground;\n\n /* Sequence Diagram variables */\n\n // this.actorBorder = lighten(this.border1, 0.5);\n this.actorBorder = lighten(this.border1, 23);\n this.actorBkg = this.mainBkg;\n this.actorTextColor = 'black';\n this.actorLineColor = 'grey';\n this.labelBoxBkgColor = this.actorBkg;\n this.signalColor = this.textColor;\n this.signalTextColor = this.textColor;\n this.labelBoxBorderColor = this.actorBorder;\n this.labelTextColor = this.actorTextColor;\n this.loopTextColor = this.actorTextColor;\n this.noteBorderColor = this.border2;\n this.noteTextColor = this.actorTextColor;\n this.activationBorderColor = darken(this.secondaryColor, 10);\n this.activationBkgColor = this.secondaryColor;\n this.sequenceNumberColor = 'white';\n\n /* Gantt chart variables */\n\n this.taskTextColor = this.taskTextLightColor;\n this.taskTextOutsideColor = this.taskTextDarkColor;\n this.sectionBkgColor = this.tertiaryColor;\n this.altSectionBkgColor = 'white';\n this.sectionBkgColor = this.secondaryColor;\n this.sectionBkgColor2 = this.tertiaryColor;\n this.altSectionBkgColor = 'white';\n this.sectionBkgColor2 = this.primaryColor;\n this.taskBorderColor = lighten(this.primaryColor, 23);\n this.taskBkgColor = this.primaryColor;\n this.taskTextLightColor = 'white';\n this.taskTextColor = 'calculated';\n this.taskTextDarkColor = 'black';\n this.taskTextOutsideColor = 'calculated';\n this.taskTextClickableColor = '#003163';\n this.activeTaskBorderColor = this.primaryColor;\n this.activeTaskBkgColor = lighten(this.primaryColor, 23);\n this.gridColor = 'lightgrey';\n this.doneTaskBkgColor = 'lightgrey';\n this.doneTaskBorderColor = 'grey';\n this.critBorderColor = '#ff8888';\n this.critBkgColor = 'red';\n this.todayLineColor = 'red';\n\n /* state colors */\n this.labelColor = 'black';\n this.errorBkgColor = '#552222';\n this.errorTextColor = '#552222';\n\n /* state colors */\n\n /* class */\n this.classText = this.textColor;\n\n /* user-journey */\n this.fillType0 = this.primaryColor;\n this.fillType1 = this.secondaryColor;\n this.fillType2 = adjust(this.primaryColor, { h: 64 });\n this.fillType3 = adjust(this.secondaryColor, { h: 64 });\n this.fillType4 = adjust(this.primaryColor, { h: -64 });\n this.fillType5 = adjust(this.secondaryColor, { h: -64 });\n this.fillType6 = adjust(this.primaryColor, { h: 128 });\n this.fillType7 = adjust(this.secondaryColor, { h: 128 });\n }\n calculate(overrides) {\n if (typeof overrides !== 'object') {\n // Calculate colors form base colors\n this.updateColors();\n return;\n }\n\n const keys = Object.keys(overrides);\n\n // Copy values from overrides, this is mainly for base colors\n keys.forEach(k => {\n this[k] = overrides[k];\n });\n\n // Calculate colors form base colors\n this.updateColors();\n // Copy values from overrides again in case of an override of derived value\n keys.forEach(k => {\n this[k] = overrides[k];\n });\n }\n}\n\nexport const getThemeVariables = userOverrides => {\n const theme = new Theme();\n theme.calculate(userOverrides);\n return theme;\n};\n","import { invert, lighten, darken, rgba, adjust } from 'khroma';\n\nclass Theme {\n constructor() {\n this.background = '#333';\n this.primaryColor = '#1f2020';\n this.secondaryColor = lighten(this.primaryColor, 16);\n this.mainBkg = '#1f2020';\n this.secondBkg = 'calculated';\n this.mainContrastColor = 'lightgrey';\n this.darkTextColor = lighten(invert('#323D47'), 10);\n this.lineColor = 'calculated';\n this.border1 = '#81B1DB';\n this.border2 = rgba(255, 255, 255, 0.25);\n this.arrowheadColor = 'calculated';\n this.fontFamily = '\"trebuchet ms\", verdana, arial';\n this.fontSize = '16px';\n this.labelBackground = '#181818';\n this.textColor = '#ccc';\n /* Flowchart variables */\n\n this.nodeBkg = 'calculated';\n this.nodeBorder = 'calculated';\n this.clusterBkg = 'calculated';\n this.clusterBorder = 'calculated';\n this.defaultLinkColor = 'calculated';\n this.titleColor = '#F9FFFE';\n this.edgeLabelBackground = 'calculated';\n\n /* Sequence Diagram variables */\n\n this.actorBorder = 'calculated';\n this.actorBkg = 'calculated';\n this.actorTextColor = 'calculated';\n this.actorLineColor = 'calculated';\n this.signalColor = 'calculated';\n this.signalTextColor = 'calculated';\n this.labelBoxBkgColor = 'calculated';\n this.labelBoxBorderColor = 'calculated';\n this.labelTextColor = 'calculated';\n this.loopTextColor = 'calculated';\n this.noteBorderColor = 'calculated';\n this.noteBkgColor = '#fff5ad';\n this.noteTextColor = 'calculated';\n this.activationBorderColor = 'calculated';\n this.activationBkgColor = 'calculated';\n this.sequenceNumberColor = 'black';\n\n /* Gantt chart variables */\n\n this.sectionBkgColor = darken('#EAE8D9', 30);\n this.altSectionBkgColor = 'calculated';\n this.sectionBkgColor2 = '#EAE8D9';\n this.taskBorderColor = rgba(255, 255, 255, 70);\n this.taskBkgColor = 'calculated';\n this.taskTextColor = 'calculated';\n this.taskTextLightColor = 'calculated';\n this.taskTextOutsideColor = 'calculated';\n this.taskTextClickableColor = '#003163';\n this.activeTaskBorderColor = rgba(255, 255, 255, 50);\n this.activeTaskBkgColor = '#81B1DB';\n this.gridColor = 'calculated';\n this.doneTaskBkgColor = 'calculated';\n this.doneTaskBorderColor = 'grey';\n this.critBorderColor = '#E83737';\n this.critBkgColor = '#E83737';\n this.taskTextDarkColor = 'calculated';\n this.todayLineColor = '#DB5757';\n\n /* state colors */\n this.labelColor = 'calculated';\n\n this.errorBkgColor = '#a44141';\n this.errorTextColor = '#ddd';\n }\n updateColors() {\n this.secondBkg = lighten(this.mainBkg, 16);\n this.lineColor = this.mainContrastColor;\n this.arrowheadColor = this.mainContrastColor;\n /* Flowchart variables */\n\n this.nodeBkg = this.mainBkg;\n this.nodeBorder = this.border1;\n this.clusterBkg = this.secondBkg;\n this.clusterBorder = this.border2;\n this.defaultLinkColor = this.lineColor;\n this.edgeLabelBackground = lighten(this.labelBackground, 25);\n\n /* Sequence Diagram variables */\n\n this.actorBorder = this.border1;\n this.actorBkg = this.mainBkg;\n this.actorTextColor = this.mainContrastColor;\n this.actorLineColor = this.mainContrastColor;\n this.signalColor = this.mainContrastColor;\n this.signalTextColor = this.mainContrastColor;\n this.labelBoxBkgColor = this.actorBkg;\n this.labelBoxBorderColor = this.actorBorder;\n this.labelTextColor = this.mainContrastColor;\n this.loopTextColor = this.mainContrastColor;\n this.noteBorderColor = this.border2;\n this.noteTextColor = this.mainBkg;\n this.activationBorderColor = this.border1;\n this.activationBkgColor = this.secondBkg;\n\n /* Gantt chart variables */\n\n this.altSectionBkgColor = this.background;\n this.taskBkgColor = lighten(this.mainBkg, 23);\n this.taskTextColor = this.darkTextColor;\n this.taskTextLightColor = this.mainContrastColor;\n this.taskTextOutsideColor = this.taskTextLightColor;\n this.gridColor = this.mainContrastColor;\n this.doneTaskBkgColor = this.mainContrastColor;\n this.taskTextDarkColor = this.darkTextColor;\n\n /* state colors */\n this.labelColor = this.textColor;\n this.altBackground = lighten(this.background, 20);\n\n this.fillType0 = this.primaryColor;\n this.fillType1 = this.secondaryColor;\n this.fillType2 = adjust(this.primaryColor, { h: 64 });\n this.fillType3 = adjust(this.secondaryColor, { h: 64 });\n this.fillType4 = adjust(this.primaryColor, { h: -64 });\n this.fillType5 = adjust(this.secondaryColor, { h: -64 });\n this.fillType6 = adjust(this.primaryColor, { h: 128 });\n this.fillType7 = adjust(this.secondaryColor, { h: 128 });\n /* class */\n this.classText = this.nodeBorder;\n }\n calculate(overrides) {\n if (typeof overrides !== 'object') {\n // Calculate colors form base colors\n this.updateColors();\n return;\n }\n\n const keys = Object.keys(overrides);\n\n // Copy values from overrides, this is mainly for base colors\n keys.forEach(k => {\n this[k] = overrides[k];\n });\n\n // Calculate colors form base colors\n this.updateColors();\n // Copy values from overrides again in case of an override of derived value\n keys.forEach(k => {\n this[k] = overrides[k];\n });\n }\n}\n\nexport const getThemeVariables = userOverrides => {\n const theme = new Theme();\n theme.calculate(userOverrides);\n return theme;\n};\n","import { lighten, rgba, adjust } from 'khroma';\n\nclass Theme {\n constructor() {\n /* Base variables */\n this.primaryColor = '#ECECFF';\n this.secondaryColor = '#ffffde';\n this.background = 'white';\n this.mainBkg = '#ECECFF';\n this.secondBkg = '#ffffde';\n this.lineColor = '#333333';\n this.border1 = '#9370DB';\n this.border2 = '#aaaa33';\n this.arrowheadColor = '#333333';\n this.fontFamily = '\"trebuchet ms\", verdana, arial';\n this.fontSize = '16px';\n this.labelBackground = '#e8e8e8';\n this.textColor = '#333';\n\n /* Flowchart variables */\n\n this.nodeBkg = 'calculated';\n this.nodeBorder = 'calculated';\n this.clusterBkg = 'calculated';\n this.clusterBorder = 'calculated';\n this.defaultLinkColor = 'calculated';\n this.titleColor = 'calculated';\n this.edgeLabelBackground = 'calculated';\n\n /* Sequence Diagram variables */\n\n this.actorBorder = 'calculated';\n this.actorBkg = 'calculated';\n this.actorTextColor = 'black';\n this.actorLineColor = 'grey';\n this.signalColor = 'calculated';\n this.signalTextColor = 'calculated';\n this.labelBoxBkgColor = 'calculated';\n this.labelBoxBorderColor = 'calculated';\n this.labelTextColor = 'calculated';\n this.loopTextColor = 'calculated';\n this.noteBorderColor = 'calculated';\n this.noteBkgColor = '#fff5ad';\n this.noteTextColor = 'calculated';\n this.activationBorderColor = '#666';\n this.activationBkgColor = '#f4f4f4';\n this.sequenceNumberColor = 'white';\n\n /* Gantt chart variables */\n\n this.sectionBkgColor = 'calculated';\n this.altSectionBkgColor = 'calculated';\n this.sectionBkgColor2 = 'calculated';\n this.taskBorderColor = 'calculated';\n this.taskBkgColor = 'calculated';\n this.taskTextLightColor = 'calculated';\n this.taskTextColor = this.taskTextLightColor;\n this.taskTextDarkColor = 'calculated';\n this.taskTextOutsideColor = this.taskTextDarkColor;\n this.taskTextClickableColor = 'calculated';\n this.activeTaskBorderColor = 'calculated';\n this.activeTaskBkgColor = 'calculated';\n this.gridColor = 'calculated';\n this.doneTaskBkgColor = 'calculated';\n this.doneTaskBorderColor = 'calculated';\n this.critBorderColor = 'calculated';\n this.critBkgColor = 'calculated';\n this.todayLineColor = 'calculated';\n\n this.sectionBkgColor = rgba(102, 102, 255, 0.49);\n this.altSectionBkgColor = 'white';\n this.sectionBkgColor2 = '#fff400';\n this.taskBorderColor = '#534fbc';\n this.taskBkgColor = '#8a90dd';\n this.taskTextLightColor = 'white';\n this.taskTextColor = 'calculated';\n this.taskTextDarkColor = 'black';\n this.taskTextOutsideColor = 'calculated';\n this.taskTextClickableColor = '#003163';\n this.activeTaskBorderColor = '#534fbc';\n this.activeTaskBkgColor = '#bfc7ff';\n this.gridColor = 'lightgrey';\n this.doneTaskBkgColor = 'lightgrey';\n this.doneTaskBorderColor = 'grey';\n this.critBorderColor = '#ff8888';\n this.critBkgColor = 'red';\n this.todayLineColor = 'red';\n\n /* state colors */\n this.labelColor = 'black';\n this.errorBkgColor = '#552222';\n this.errorTextColor = '#552222';\n this.updateColors();\n }\n updateColors() {\n /* Flowchart variables */\n\n this.nodeBkg = this.mainBkg;\n this.nodeBorder = this.border1; // border 1\n this.clusterBkg = this.secondBkg;\n this.clusterBorder = this.border2;\n this.defaultLinkColor = this.lineColor;\n this.titleColor = this.textColor;\n this.edgeLabelBackground = this.labelBackground;\n\n /* Sequence Diagram variables */\n\n // this.actorBorder = lighten(this.border1, 0.5);\n this.actorBorder = lighten(this.border1, 23);\n this.actorBkg = this.mainBkg;\n this.labelBoxBkgColor = this.actorBkg;\n this.signalColor = this.textColor;\n this.signalTextColor = this.textColor;\n this.labelBoxBorderColor = this.actorBorder;\n this.labelTextColor = this.actorTextColor;\n this.loopTextColor = this.actorTextColor;\n this.noteBorderColor = this.border2;\n this.noteTextColor = this.actorTextColor;\n\n /* Gantt chart variables */\n\n this.taskTextColor = this.taskTextLightColor;\n this.taskTextOutsideColor = this.taskTextDarkColor;\n\n /* state colors */\n /* class */\n this.classText = this.nodeBorder;\n /* journey */\n this.fillType0 = this.primaryColor;\n this.fillType1 = this.secondaryColor;\n this.fillType2 = adjust(this.primaryColor, { h: 64 });\n this.fillType3 = adjust(this.secondaryColor, { h: 64 });\n this.fillType4 = adjust(this.primaryColor, { h: -64 });\n this.fillType5 = adjust(this.secondaryColor, { h: -64 });\n this.fillType6 = adjust(this.primaryColor, { h: 128 });\n this.fillType7 = adjust(this.secondaryColor, { h: 128 });\n }\n calculate(overrides) {\n if (typeof overrides !== 'object') {\n // Calculate colors form base colors\n this.updateColors();\n return;\n }\n\n const keys = Object.keys(overrides);\n\n // Copy values from overrides, this is mainly for base colors\n keys.forEach(k => {\n this[k] = overrides[k];\n });\n\n // Calculate colors form base colors\n this.updateColors();\n // Copy values from overrides again in case of an override of derived value\n keys.forEach(k => {\n this[k] = overrides[k];\n });\n }\n}\n\nexport const getThemeVariables = userOverrides => {\n const theme = new Theme();\n theme.calculate(userOverrides);\n return theme;\n};\n","import { darken, adjust } from 'khroma';\nclass Theme {\n constructor() {\n /* Base vales */\n this.primaryColor = '#cde498';\n this.secondaryColor = '#cdffb2';\n this.background = 'white';\n this.mainBkg = '#cde498';\n this.secondBkg = '#cdffb2';\n this.lineColor = 'green';\n this.border1 = '#13540c';\n this.border2 = '#6eaa49';\n this.arrowheadColor = 'green';\n this.fontFamily = '\"trebuchet ms\", verdana, arial';\n this.fontSize = '16px';\n\n /* Flowchart variables */\n\n this.nodeBkg = 'calculated';\n this.nodeBorder = 'calculated';\n this.clusterBkg = 'calculated';\n this.clusterBorder = 'calculated';\n this.defaultLinkColor = 'calculated';\n this.titleColor = '#333';\n this.edgeLabelBackground = '#e8e8e8';\n\n /* Sequence Diagram variables */\n\n this.actorBorder = 'calculated';\n this.actorBkg = 'calculated';\n this.actorTextColor = 'black';\n this.actorLineColor = 'grey';\n this.signalColor = '#333';\n this.signalTextColor = '#333';\n this.labelBoxBkgColor = 'calculated';\n this.labelBoxBorderColor = '#326932';\n this.labelTextColor = 'calculated';\n this.loopTextColor = 'calculated';\n this.noteBorderColor = 'calculated';\n this.noteBkgColor = '#fff5ad';\n this.noteTextColor = 'calculated';\n this.activationBorderColor = '#666';\n this.activationBkgColor = '#f4f4f4';\n this.sequenceNumberColor = 'white';\n\n /* Gantt chart variables */\n\n this.sectionBkgColor = '#6eaa49';\n this.altSectionBkgColor = 'white';\n this.sectionBkgColor2 = '#6eaa49';\n this.taskBorderColor = 'calculated';\n this.taskBkgColor = '#487e3a';\n this.taskTextLightColor = 'white';\n this.taskTextColor = 'calculated';\n this.taskTextDarkColor = 'black';\n this.taskTextOutsideColor = 'calculated';\n this.taskTextClickableColor = '#003163';\n this.activeTaskBorderColor = 'calculated';\n this.activeTaskBkgColor = 'calculated';\n this.gridColor = 'lightgrey';\n this.doneTaskBkgColor = 'lightgrey';\n this.doneTaskBorderColor = 'grey';\n this.critBorderColor = '#ff8888';\n this.critBkgColor = 'red';\n this.todayLineColor = 'red';\n\n /* state colors */\n this.labelColor = 'black';\n\n this.errorBkgColor = '#552222';\n this.errorTextColor = '#552222';\n }\n updateColors() {\n /* Flowchart variables */\n\n this.nodeBkg = this.mainBkg;\n this.nodeBorder = this.border1;\n this.clusterBkg = this.secondBkg;\n this.clusterBorder = this.border2;\n this.defaultLinkColor = this.lineColor;\n\n /* Sequence Diagram variables */\n\n this.actorBorder = darken(this.mainBkg, 20);\n this.actorBkg = this.mainBkg;\n this.labelBoxBkgColor = this.actorBkg;\n this.labelTextColor = this.actorTextColor;\n this.loopTextColor = this.actorTextColor;\n this.noteBorderColor = this.border2;\n this.noteTextColor = this.actorTextColor;\n\n /* Gantt chart variables */\n\n this.taskBorderColor = this.border1;\n this.taskTextColor = this.taskTextLightColor;\n this.taskTextOutsideColor = this.taskTextDarkColor;\n this.activeTaskBorderColor = this.taskBorderColor;\n this.activeTaskBkgColor = this.mainBkg;\n\n /* state colors */\n /* class */\n this.classText = this.nodeBorder;\n /* journey */\n this.fillType0 = this.primaryColor;\n this.fillType1 = this.secondaryColor;\n this.fillType2 = adjust(this.primaryColor, { h: 64 });\n this.fillType3 = adjust(this.secondaryColor, { h: 64 });\n this.fillType4 = adjust(this.primaryColor, { h: -64 });\n this.fillType5 = adjust(this.secondaryColor, { h: -64 });\n this.fillType6 = adjust(this.primaryColor, { h: 128 });\n this.fillType7 = adjust(this.secondaryColor, { h: 128 });\n }\n calculate(overrides) {\n if (typeof overrides !== 'object') {\n // Calculate colors form base colors\n this.updateColors();\n return;\n }\n\n const keys = Object.keys(overrides);\n\n // Copy values from overrides, this is mainly for base colors\n keys.forEach(k => {\n this[k] = overrides[k];\n });\n\n // Calculate colors form base colors\n this.updateColors();\n // Copy values from overrides again in case of an override of derived value\n keys.forEach(k => {\n this[k] = overrides[k];\n });\n }\n}\n\nexport const getThemeVariables = userOverrides => {\n const theme = new Theme();\n theme.calculate(userOverrides);\n return theme;\n};\n","import { darken, lighten, adjust } from 'khroma';\n\n// const Color = require ( 'khroma/dist/color' ).default\n// Color.format.hex.stringify(Color.parse('hsl(210, 66.6666666667%, 95%)')); // => \"#EAF2FB\"\n\nclass Theme {\n constructor() {\n this.primaryColor = '#eee';\n this.contrast = '#26a';\n this.secondaryColor = lighten(this.contrast, 55);\n this.background = 'white';\n this.mainBkg = '#eee';\n this.secondBkg = 'calculated';\n this.lineColor = '#666';\n this.border1 = '#999';\n this.border2 = 'calculated';\n this.note = '#ffa';\n this.text = '#333';\n this.critical = '#d42';\n this.done = '#bbb';\n this.arrowheadColor = '#333333';\n this.fontFamily = '\"trebuchet ms\", verdana, arial';\n this.fontSize = '16px';\n\n /* Flowchart variables */\n\n this.nodeBkg = 'calculated';\n this.nodeBorder = 'calculated';\n this.clusterBkg = 'calculated';\n this.clusterBorder = 'calculated';\n this.defaultLinkColor = 'calculated';\n this.titleColor = 'calculated';\n this.edgeLabelBackground = 'white';\n\n /* Sequence Diagram variables */\n\n this.actorBorder = 'calculated';\n this.actorBkg = 'calculated';\n this.actorTextColor = 'calculated';\n this.actorLineColor = 'calculated';\n this.signalColor = 'calculated';\n this.signalTextColor = 'calculated';\n this.labelBoxBkgColor = 'calculated';\n this.labelBoxBorderColor = 'calculated';\n this.labelTextColor = 'calculated';\n this.loopTextColor = 'calculated';\n this.noteBorderColor = 'calculated';\n this.noteBkgColor = 'calculated';\n this.noteTextColor = 'calculated';\n this.activationBorderColor = '#666';\n this.activationBkgColor = '#f4f4f4';\n this.sequenceNumberColor = 'white';\n\n /* Gantt chart variables */\n\n this.sectionBkgColor = 'calculated';\n this.altSectionBkgColor = 'white';\n this.sectionBkgColor2 = 'calculated';\n this.taskBorderColor = 'calculated';\n this.taskBkgColor = 'calculated';\n this.taskTextLightColor = 'white';\n this.taskTextColor = 'calculated';\n this.taskTextDarkColor = 'calculated';\n this.taskTextOutsideColor = 'calculated';\n this.taskTextClickableColor = '#003163';\n this.activeTaskBorderColor = 'calculated';\n this.activeTaskBkgColor = 'calculated';\n this.gridColor = 'calculated';\n this.doneTaskBkgColor = 'calculated';\n this.doneTaskBorderColor = 'calculated';\n this.critBkgColor = 'calculated';\n this.critBorderColor = 'calculated';\n this.todayLineColor = 'calculated';\n\n /* state colors */\n this.labelColor = 'black';\n\n this.errorBkgColor = '#552222';\n this.errorTextColor = '#552222';\n }\n updateColors() {\n this.secondBkg = lighten(this.contrast, 55);\n this.border2 = this.contrast;\n\n /* Flowchart variables */\n\n this.nodeBkg = this.mainBkg;\n this.nodeBorder = this.border1;\n this.clusterBkg = this.secondBkg;\n this.clusterBorder = this.border2;\n this.defaultLinkColor = this.lineColor;\n this.titleColor = this.text;\n\n /* Sequence Diagram variables */\n\n this.actorBorder = lighten(this.border1, 23);\n this.actorBkg = this.mainBkg;\n this.actorTextColor = this.text;\n this.actorLineColor = this.lineColor;\n this.signalColor = this.text;\n this.signalTextColor = this.text;\n this.labelBoxBkgColor = this.actorBkg;\n this.labelBoxBorderColor = this.actorBorder;\n this.labelTextColor = this.text;\n this.loopTextColor = this.text;\n this.noteBorderColor = darken(this.note, 60);\n this.noteBkgColor = this.note;\n this.noteTextColor = this.actorTextColor;\n\n /* Gantt chart variables */\n\n this.sectionBkgColor = lighten(this.contrast, 30);\n this.sectionBkgColor2 = lighten(this.contrast, 30);\n\n this.taskBorderColor = darken(this.contrast, 10);\n\n this.taskBkgColor = this.contrast;\n this.taskTextColor = this.taskTextLightColor;\n this.taskTextDarkColor = this.text;\n this.taskTextOutsideColor = this.taskTextDarkColor;\n this.activeTaskBorderColor = this.taskBorderColor;\n this.activeTaskBkgColor = this.mainBkg;\n this.gridColor = lighten(this.border1, 30);\n\n this.doneTaskBkgColor = this.done;\n this.doneTaskBorderColor = this.lineColor;\n this.critBkgColor = this.critical;\n this.critBorderColor = darken(this.critBkgColor, 10);\n\n this.todayLineColor = this.critBkgColor;\n\n /* state colors */\n /* class */\n this.classText = this.nodeBorder;\n /* journey */\n this.fillType0 = this.primaryColor;\n this.fillType1 = this.secondaryColor;\n this.fillType2 = adjust(this.primaryColor, { h: 64 });\n this.fillType3 = adjust(this.secondaryColor, { h: 64 });\n this.fillType4 = adjust(this.primaryColor, { h: -64 });\n this.fillType5 = adjust(this.secondaryColor, { h: -64 });\n this.fillType6 = adjust(this.primaryColor, { h: 128 });\n this.fillType7 = adjust(this.secondaryColor, { h: 128 });\n }\n calculate(overrides) {\n if (typeof overrides !== 'object') {\n // Calculate colors form base colors\n this.updateColors();\n return;\n }\n\n const keys = Object.keys(overrides);\n\n // Copy values from overrides, this is mainly for base colors\n keys.forEach(k => {\n this[k] = overrides[k];\n });\n\n // Calculate colors form base colors\n this.updateColors();\n // Copy values from overrides again in case of an override of derived value\n keys.forEach(k => {\n this[k] = overrides[k];\n });\n }\n}\n\nexport const getThemeVariables = userOverrides => {\n const theme = new Theme();\n theme.calculate(userOverrides);\n console.info('Theme', userOverrides, theme);\n return theme;\n};\n","import { getThemeVariables as baseThemeVariables } from './theme-base';\nimport { getThemeVariables as darkThemeVariables } from './theme-dark';\nimport { getThemeVariables as defaultThemeVariables } from './theme-default';\nimport { getThemeVariables as forestThemeVariables } from './theme-forest';\nimport { getThemeVariables as neutralThemeVariables } from './theme-neutral';\n\nexport default {\n base: {\n getThemeVariables: baseThemeVariables\n },\n dark: {\n getThemeVariables: darkThemeVariables\n },\n default: {\n getThemeVariables: defaultThemeVariables\n },\n forest: {\n getThemeVariables: forestThemeVariables\n },\n neutral: {\n getThemeVariables: neutralThemeVariables\n }\n};\n","import { assignWithDepth } from './utils';\nimport { logger } from './logger';\nimport theme from './themes';\n\n// import { unflatten } from 'flat';\n// import flatten from 'flat';\n\n// import themeVariables from './theme-default';\n// import themeForestVariables from './theme-forest';\n// import themeNeutralVariables from './theme-neutral';\n\nconst handleThemeVariables = value => {\n return theme[value] ? theme[value].getThemeVariables() : theme.default.getThemeVariables();\n};\n\nconst manipulators = {\n themeVariables: handleThemeVariables\n};\n\n/**\n * **Configuration methods in Mermaid version 8.6.0 have been updated, to learn more[[click here](8.6.0_docs.md)].**\n *\n * ## **What follows are config instructions for older versions**\n * These are the default options which can be overridden with the initialization call like so:\n * **Example 1:**\n * \n * mermaid.initialize({\n * flowchart:{\n * htmlLabels: false\n * }\n * });\n *
\n *\n * **Example 2:**\n * \n * <script>\n * var config = {\n * startOnLoad:true,\n * flowchart:{\n * useMaxWidth:true,\n * htmlLabels:true,\n * curve:'cardinal',\n * },\n *\n * securityLevel:'loose',\n * };\n * mermaid.initialize(config);\n * </script>\n *
\n * A summary of all options and their defaults is found [here](#mermaidapi-configuration-defaults). A description of each option follows below.\n *\n * @name Configuration\n */\nconst config = {\n /** theme , the CSS style sheet\n *\n * theme , the CSS style sheet\n *\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| Theme |Built in Themes| String | Optional | Values include, default, forest, dark, neutral, null|\n *\n ***Notes:**To disable any pre-defined mermaid theme, use \"null\".\n * \n * \"theme\": \"forest\",\n * \"themeCSS\": \".node rect { fill: red; }\"\n *
\n */\n theme: 'default',\n themeVariables: theme['default'].getThemeVariables(),\n themeCSS: undefined,\n /* **maxTextSize** - The maximum allowed size of the users text diamgram */\n maxTextSize: 50000,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *|fontFamily | specifies the font to be used in the rendered diagrams| String | Required | Verdana, Arial, Trebuchet MS,|\n *\n ***notes: Default value is \\\\\"trebuchet ms\\\\\".\n */\n fontFamily: '\"trebuchet ms\", verdana, arial;',\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| logLevel |This option decides the amount of logging to be used.| String | Required | 1, 2, 3, 4, 5 |\n *\n *\n ***Notes:**\n *- debug: 1.\n *- info: 2.\n *- warn: 3.\n *- error: 4.\n *- fatal: 5(default).\n */\n logLevel: 5,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| securitylevel | Level of trust for parsed diagram|String | Required | Strict, Loose, antiscript |\n *\n ***Notes:\n *- **strict**: (**default**) tags in text are encoded, click functionality is disabeled\n *- **loose**: tags in text are allowed, click functionality is enabled\n *- **antiscript**: html tags in text are allowed, (only script element is removed), click functionality is enabled\n */\n securityLevel: 'strict',\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| startOnLoad| Dictates whether mermaind starts on Page load | Boolean | Required | True, False |\n *\n ***Notes:**\n ***Default value: true**\n */\n startOnLoad: true,\n\n /**\n *| Parameter | Description |Type | Required |Values|\n *| --- | --- | --- | --- | --- |\n *| arrowMarkerAbsolute | Controls whether or arrow markers in html code are absolute paths or anchors | Boolean | Required | True, False |\n *\n *\n *## Notes**: This matters if you are using base tag settings.\n ***Default value: false**.\n */\n arrowMarkerAbsolute: false,\n\n /**\n * This option controls which currentConfig keys are considered _secure_ and can only be changed via\n * call to mermaidAPI.initialize. Calls to mermaidAPI.reinitialize cannot make changes to\n * the `secure` keys in the current currentConfig. This prevents malicious graph directives from\n * overriding a site's default security.\n */\n secure: ['secure', 'securityLevel', 'startOnLoad', 'maxTextSize'],\n\n /**\n * The object containing configurations specific for flowcharts\n */\n flowchart: {\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| diagramPadding | amount of padding around the diagram as a whole | Integer | Required | Any Positive Value |\n *\n ***Notes:**The amount of padding around the diagram as a whole so that embedded diagrams have margins, expressed in pixels\n ***Default value: 8**.\n */\n diagramPadding: 8,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| htmlLabels | Flag for setting whether or not a html tag should be used for rendering labels on the edges. | Boolean| Required | True, False|\n *\n ***Notes: Default value: true**.\n */\n htmlLabels: true,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| nodeSpacing | Defines the spacing between nodes on the same level | Integer| Required | Any positive Numbers |\n *\n ***Notes:\n *Pertains to horizontal spacing for TB (top to bottom) or BT (bottom to top) graphs, and the vertical spacing for LR as well as RL graphs.**\n ***Default value 50**.\n */\n nodeSpacing: 50,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| rankSpacing | Defines the spacing between nodes on different levels | Integer | Required| Any Positive Numbers |\n *\n ***Notes: pertains to vertical spacing for TB (top to bottom) or BT (bottom to top), and the horizontal spacing for LR as well as RL graphs.\n ***Default value 50**.\n */\n rankSpacing: 50,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| curve | Defines how mermaid renders curves for flowcharts. | String | Required | Basis, Linear, Cardinal|\n *\n ***Notes:\n *Default Vaue: Linear**\n */\n curve: 'linear',\n // Only used in new experimental rendering\n // repreesents the padding between the labels and the shape\n padding: 15\n },\n\n /**\n * The object containing configurations specific for sequence diagrams\n */\n sequence: {\n /**\n * widt of the activation rect\n * **Default value 10**.\n */\n activationWidth: 10,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| diagramMarginX | margin to the right and left of the sequence diagram | Integer | Required | Any Positive Values |\n *\n ***Notes:**\n ***Default value 50**.\n */\n diagramMarginX: 50,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| diagramMarginY | Margin to the over and under the sequence diagram | Integer | Required | Any Positive Values|\n *\n ***Notes:**\n ***Default value 10**.\n */\n diagramMarginY: 10,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| actorMargin | Margin between actors. | Integer | Required | Any Positive Value |\n *\n ***Notes:**\n ***Default value 50**.\n */\n actorMargin: 50,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| width | Width of actor boxes | Integer | Required | Any Positive Value |\n *\n ***Notes:**\n ***Default value 150**.\n */\n width: 150,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| height | Height of actor boxes | Integer | Required | Any Positive Value|\n *\n ***Notes:**\n ***Default value 65**..\n */\n height: 65,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| boxMargin | Margin around loop boxes | Integer | Required | Any Positive Value |\n *\n ***Notes:**\n *\n ***Default value 10**.\n */\n boxMargin: 10,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| boxTextMargin| margin around the text in loop/alt/opt boxes | Integer | Required| Any Positive Value|\n *\n ***Notes:**\n *\n ***Default value 5**.\n */\n boxTextMargin: 5,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| noteMargin | margin around notes. | Integer | Required | Any Positive Value |\n *\n ***Notes:**\n *\n ***Default value 10**.\n */\n noteMargin: 10,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| messageMargin | Space between messages. | Integer | Required | Any Positive Value |\n *\n ***Notes:**\n *\n *Space between messages.\n ***Default value 35**.\n */\n messageMargin: 35,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| messageAlign | Multiline message alignment | Integer | Required | left, center, right |\n *\n ***Notes:**center **default**\n */\n messageAlign: 'center',\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| mirrorActors | mirror actors under diagram. | Boolean| Required | True, False |\n *\n ***Notes:**\n *\n ***Default value true**.\n */\n mirrorActors: true,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| bottomMarginAdj | Prolongs the edge of the diagram downwards. | Integer | Required | Any Positive Value |\n *\n ***Notes:**Depending on css styling this might need adjustment.\n ***Default value 1**.\n */\n bottomMarginAdj: 1,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| useMaxWidth | See Notes | Boolean | Required | True, False |\n *\n ***Notes:**\n *when this flag is set to true, the height and width is set to 100% and is then scaling with the\n *available space. If set to false, the absolute space required is used.\n ***Default value: True**.\n */\n useMaxWidth: true,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| rightAngles | display curve arrows as right angles| Boolean | Required | True, False |\n *\n ***Notes:**\n *\n *This will display arrows that start and begin at the same node as right angles, rather than a curve\n ***Default value false**.\n */\n rightAngles: false,\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| showSequenceNumbers | This will show the node numbers | Boolean | Required | True, False |\n *\n ***Notes:**\n ***Default value false**.\n */\n showSequenceNumbers: false,\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| actorFontSize| This sets the font size of the actor's description | Integer | Require | Any Positive Value |\n *\n ***Notes:**\n ***Default value 14**..\n */\n actorFontSize: 14,\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| actorFontFamily |This sets the font family of the actor's description | 3 | 4 | Open-Sans, Sans-Serif |\n *\n ***Notes:**\n ***Default value \"Open-Sans\", \"sans-serif\"**.\n */\n actorFontFamily: '\"Open-Sans\", \"sans-serif\"',\n /**\n * This sets the font weight of the actor's description\n * **Default value 400.\n */\n actorFontWeight: 400,\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| noteFontSize |This sets the font size of actor-attached notes. | Integer | Required | Any Positive Value |\n *\n ***Notes:**\n ***Default value 14**..\n */\n noteFontSize: 14,\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| noteFontFamily| This sets the font family of actor-attached notes. | String | Required | trebuchet ms, verdana, arial |\n *\n ***Notes:**\n ***Default value: trebuchet ms **.\n */\n noteFontFamily: '\"trebuchet ms\", verdana, arial',\n /**\n * This sets the font weight of the note's description\n * **Default value 400.\n */\n noteFontWeight: 400,\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| noteAlign | This sets the text alignment of actor-attached notes. | string | required | left, center, right|\n *\n ***Notes:**\n ***Default value center**.\n */\n noteAlign: 'center',\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| messageFontSize | This sets the font size of actor messages. | Integer | Required | Any Positive Number |\n *\n ***Notes:**\n ***Default value 16**.\n */\n messageFontSize: 16,\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| messageFontFamily | This sets the font family of actor messages. | String| Required | trebuchet ms\", verdana, aria |\n *\n ***Notes:**\n ***Default value:\"trebuchet ms**.\n */\n messageFontFamily: '\"trebuchet ms\", verdana, arial',\n /**\n * This sets the font weight of the message's description\n * **Default value 400.\n */\n messageFontWeight: 400,\n /**\n * This sets the auto-wrap state for the diagram\n * **Default value false.\n */\n wrap: false,\n /**\n * This sets the auto-wrap padding for the diagram (sides only)\n * **Default value 10.\n */\n wrapPadding: 10,\n /**\n * This sets the width of the loop-box (loop, alt, opt, par)\n * **Default value 50.\n */\n labelBoxWidth: 50,\n /**\n * This sets the height of the loop-box (loop, alt, opt, par)\n * **Default value 20.\n */\n labelBoxHeight: 20,\n messageFont: function() {\n return {\n fontFamily: this.messageFontFamily,\n fontSize: this.messageFontSize,\n fontWeight: this.messageFontWeight\n };\n },\n noteFont: function() {\n return {\n fontFamily: this.noteFontFamily,\n fontSize: this.noteFontSize,\n fontWeight: this.noteFontWeight\n };\n },\n actorFont: function() {\n return {\n fontFamily: this.actorFontFamily,\n fontSize: this.actorFontSize,\n fontWeight: this.actorFontWeight\n };\n }\n },\n\n /**\n * The object containing configurations specific for gantt diagrams*\n */\n gantt: {\n /**\n *### titleTopMargin\n *\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| titleTopMargin | Margin top for the text over the gantt diagram | Integer | Required | Any Positive Value |\n *\n ***Notes:**\n ***Default value 25**.\n */\n titleTopMargin: 25,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| barHeight | The height of the bars in the graph | Integer | Required | Any Positive Value |\n *\n ***Notes:**\n ***Default value 20**.\n */\n barHeight: 20,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| barGap | The margin between the different activities in the gantt diagram. | Integer | Optional |Any Positive Value |\n *\n ***Notes:**\n ***Default value 4**.\n */\n barGap: 4,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| topPadding | Margin between title and gantt diagram and between axis and gantt diagram. | Integer | Required | Any Positive Value |\n *\n ***Notes:**\n ***Default value 50**.\n */\n topPadding: 50,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| leftPadding | The space allocated for the section name to the left of the activities. | Integer| Required | Any Positive Value |\n *\n ***Notes:**\n ***Default value 75**.\n */\n leftPadding: 75,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| gridLineStartPadding | Vertical starting position of the grid lines. | Integer | Required | Any Positive Value |\n *\n ***Notes:**\n ***Default value 35**.\n */\n gridLineStartPadding: 35,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| fontSize | Font size| Integer | Required | Any Positive Value |\n *\n ***Notes:**\n ***Default value 11**.\n */\n fontSize: 11,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| fontFamily | font Family | string | required |\"Open-Sans\", \"sans-serif\" |\n *\n ***Notes:**\n *\n ***Default value '\"Open-Sans\", \"sans-serif\"'**.\n */\n fontFamily: '\"Open-Sans\", \"sans-serif\"',\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| numberSectionStyles | The number of alternating section styles | Integer | 4 | Any Positive Value |\n *\n ***Notes:**\n ***Default value 4**.\n */\n numberSectionStyles: 4,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| axisFormat | Datetime format of the axis. | 3 | Required | Date in yy-mm-dd |\n *\n ***Notes:**\n *\n * This might need adjustment to match your locale and preferences\n ***Default value '%Y-%m-%d'**.\n */\n axisFormat: '%Y-%m-%d'\n },\n /**\n * The object containing configurations specific for sequence diagrams\n */\n journey: {\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| diagramMarginX | margin to the right and left of the sequence diagram | Integer | Required | Any Positive Value |\n *\n ***Notes:**\n ***Default value 50**.\n */\n diagramMarginX: 50,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| diagramMarginY | margin to the over and under the sequence diagram. | Integer | Required | Any Positive Value|\n *\n ***Notes:**\n ***Default value 10**..\n */\n diagramMarginY: 10,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| actorMargin | Margin between actors. | Integer | Required | Any Positive Value|\n *\n ***Notes:**\n ***Default value 50**.\n */\n actorMargin: 50,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| width | Width of actor boxes | Integer | Required | Any Positive Value |\n *\n ***Notes:**\n ***Default value 150**.\n */\n width: 150,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| height | Height of actor boxes | Integer | Required | Any Positive Value |\n *\n ***Notes:**\n ***Default value 65**.\n */\n height: 65,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| boxMargin | Margin around loop boxes | Integer | Required | Any Positive Value |\n *\n ***Notes:**\n ***Default value 10**.\n */\n boxMargin: 10,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| boxTextMargin | margin around the text in loop/alt/opt boxes | Integer | Required | Any Positive Value |\n *\n ***Notes:**\n */\n boxTextMargin: 5,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| noteMargin | margin around notes. | Integer | Required | Any Positive Value |\n *\n ***Notes:**\n ***Default value 10**.\n */\n noteMargin: 10,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| messageMargin |Space between messages. | Integer | Required | Any Positive Value |\n *\n ***Notes:**\n *\n *Space between messages.\n ***Default value 35**.\n */\n messageMargin: 35,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| messageAlign |Multiline message alignment | 3 | 4 | left, center, right |\n *\n ***Notes:**default:center**\n */\n messageAlign: 'center',\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| bottomMarginAdj | Prolongs the edge of the diagram downwards. | Integer | 4 | Any Positive Value |\n *\n ***Notes:**Depending on css styling this might need adjustment.\n ***Default value 1**.\n */\n bottomMarginAdj: 1,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| useMaxWidth | See notes | Boolean | 4 | True, False |\n *\n ***Notes:**when this flag is set the height and width is set to 100% and is then scaling with the\n *available space if not the absolute space required is used.\n *\n ***Default value true**.\n */\n useMaxWidth: true,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| rightAngles | Curved Arrows become Right Angles, | 3 | 4 | True, False |\n *\n ***Notes:**This will display arrows that start and begin at the same node as right angles, rather than a curves\n ***Default value false**.\n */\n rightAngles: false\n },\n class: {\n arrowMarkerAbsolute: false\n },\n git: {\n arrowMarkerAbsolute: false\n },\n state: {\n dividerMargin: 10,\n sizeUnit: 5,\n padding: 8,\n textHeight: 10,\n titleShift: -15,\n noteMargin: 10,\n forkWidth: 70,\n forkHeight: 7,\n // Used\n miniPadding: 2,\n // Font size factor, this is used to guess the width of the edges labels before rendering by dagre\n // layout. This might need updating if/when switching font\n fontSizeFactor: 5.02,\n fontSize: 24,\n labelHeight: 16,\n edgeLengthFactor: '20',\n compositTitleSize: 35,\n radius: 5\n },\n\n /**\n * The object containing configurations specific for entity relationship diagrams\n */\n er: {\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| diagramPadding | amount of padding around the diagram as a whole | Integer | Required | Any Positive Value |\n *\n ***Notes:**The amount of padding around the diagram as a whole so that embedded diagrams have margins, expressed in pixels\n ***Default value: 20**.\n */\n diagramPadding: 20,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| layoutDirection | Directional bias for layout of entities. | String | Required | \"TB\", \"BT\",\"LR\",\"RL\" |\n *\n ***Notes:**\n *'TB' for Top-Bottom, 'BT'for Bottom-Top, 'LR' for Left-Right, or 'RL' for Right to Left.\n * T = top, B = bottom, L = left, and R = right.\n ***Default value: TB **.\n */\n layoutDirection: 'TB',\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| minEntityWidth | The mimimum width of an entity box, | Integer | Required| Any Positive Value |\n *\n ***Notes:**expressed in pixels\n ***Default value: 100**.\n */\n minEntityWidth: 100,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| minEntityHeight| The minimum height of an entity box, | Integer | 4 | Any Positive Value |\n *\n ***Notes:**expressed in pixels\n ***Default value: 75 **\n */\n minEntityHeight: 75,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| entityPadding|minimum internal padding betweentext in box and box borders| Integer | 4 | Any Positive Value |\n *\n ***Notes:**The minimum internal padding betweentext in an entity box and the enclosing box borders, expressed in pixels.\n ***Default value: 15 **\n */\n entityPadding: 15,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| stroke | Stroke color of box edges and lines | String | 4 | Any recognized color |\n ***Default value: gray **\n */\n stroke: 'gray',\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| fill | Fill color of entity boxes | String | 4 | Any recognized color |\n *\n ***Notes:**\n ***Default value:'honeydew'**\n */\n fill: 'honeydew',\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| fontSize| Font Size in pixels| Integer | | Any Positive Value |\n *\n ***Notes:**Font size (expressed as an integer representing a number of pixels)\n ***Default value: 12 **\n */\n fontSize: 12,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| useMaxWidth | See Notes | Boolean | Required | true, false |\n *\n ***Notes:**\n *When this flag is set to true, the diagram width is locked to 100% and\n *scaled based on available space. If set to false, the diagram reserves its\n *absolute width.\n ***Default value: true**.\n */\n useMaxWidth: true\n }\n};\n\n// debugger;\nconfig.class.arrowMarkerAbsolute = config.arrowMarkerAbsolute;\nconfig.git.arrowMarkerAbsolute = config.arrowMarkerAbsolute;\nexport const defaultConfig = Object.freeze(config);\n\nconst siteConfig = assignWithDepth({}, defaultConfig);\nconst currentConfig = assignWithDepth({}, defaultConfig);\n\n/**\n *## setSiteConfig\n *| Function | Description | Type | Values |\n *| --------- | ------------------- | ------- | ------------------ |\n *| setSiteConfig|Sets the siteConfig to desired values | Put Request | Any Values, except ones in secure array|\n ***Notes:**\n *Sets the siteConfig. The siteConfig is a protected configuration for repeat use. Calls to reset() will reset\n *the currentConfig to siteConfig. Calls to reset(configApi.defaultConfig) will reset siteConfig and currentConfig\n *to the defaultConfig\n *Note: currentConfig is set in this function\n **Default value: At default, will mirror Global Config**\n * @param conf - the base currentConfig to use as siteConfig\n * @returns {*} - the siteConfig\n */\nexport const setSiteConfig = conf => {\n Object.keys(conf).forEach(key => {\n const manipulator = manipulators[key];\n conf[key] = manipulator ? manipulator(conf[key]) : conf[key];\n });\n\n assignWithDepth(currentConfig, conf, { clobber: true });\n // Set theme variables if user has set the theme option\n assignWithDepth(siteConfig, conf);\n\n return getSiteConfig();\n};\n/**\n *## getSiteConfig\n *| Function | Description | Type | Values |\n *| --------- | ------------------- | ------- | ------------------ |\n *| setSiteConfig|Returns the current siteConfig base configuration | Get Request | Returns Any Values in siteConfig|\n ***Notes**:\n *Returns **any** values in siteConfig.\n * @returns {*}\n */\nexport const getSiteConfig = () => {\n return assignWithDepth({}, siteConfig);\n};\n/**\n *## setConfig\n *| Function | Description | Type | Values |\n *| --------- | ------------------- | ------- | ------------------ |\n *| setSiteConfig|Sets the siteConfig to desired values | Put Request| Any Values, except ones in secure array|\n ***Notes**:\n *Sets the currentConfig. The parameter conf is sanitized based on the siteConfig.secure keys. Any\n *values found in conf with key found in siteConfig.secure will be replaced with the corresponding\n *siteConfig value.\n * @param conf - the potential currentConfig\n * @returns {*} - the currentConfig merged with the sanitized conf\n */\nexport const setConfig = conf => {\n sanitize(conf);\n Object.keys(conf).forEach(key => {\n const manipulator = manipulators[key];\n conf[key] = manipulator ? manipulator(conf[key]) : conf[key];\n });\n\n assignWithDepth(currentConfig, conf);\n return getConfig();\n};\n/**\n * ## getConfig\n *| Function | Description | Type | Return Values |\n *| --------- | ------------------- | ------- | ------------------ |\n *| getConfig |Obtains the currentConfig | Get Request | Any Values from currentConfig|\n ***Notes**:\n *Returns **any** the currentConfig\n * @returns {*} - the currentConfig\n */\nexport const getConfig = () => {\n return assignWithDepth({}, currentConfig);\n};\n/**\n *## sanitize\n *| Function | Description | Type | Values |\n *| --------- | ------------------- | ------- | ------------------ |\n *| sanitize |Sets the siteConfig to desired values. | Put Request |None|\n *Ensures options parameter does not attempt to override siteConfig secure keys\n *Note: modifies options in-place\n * @param options - the potential setConfig parameter\n */\nexport const sanitize = options => {\n Object.keys(siteConfig.secure).forEach(key => {\n if (typeof options[siteConfig.secure[key]] !== 'undefined') {\n // DO NOT attempt to print options[siteConfig.secure[key]] within `${}` as a malicious script\n // can exploit the logger's attempt to stringify the value and execute arbitrary code\n logger.warn(\n `Denied attempt to modify a secure key ${siteConfig.secure[key]}`,\n options[siteConfig.secure[key]]\n );\n delete options[siteConfig.secure[key]];\n }\n });\n};\n/**\n *## reset\n *| Function | Description | Type | Required | Values |\n *| --------- | ------------------- | ------- | -------- | ------------------ |\n *| reset|Resets currentConfig to conf| Put Request | Required | None|\n *\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| conf| base set of values, which currentConfig coul be **reset** to.| Dictionary | Required | Any Values, with respect to the secure Array|\n *\n **Notes :\n (default: current siteConfig ) (optional, default `getSiteConfig()`)\n * @param conf - the base currentConfig to reset to (default: current siteConfig )\n */\nexport const reset = (conf = getSiteConfig()) => {\n Object.keys(siteConfig).forEach(key => delete siteConfig[key]);\n Object.keys(currentConfig).forEach(key => delete currentConfig[key]);\n assignWithDepth(siteConfig, conf, { clobber: true });\n assignWithDepth(currentConfig, conf, { clobber: true });\n};\n\nconst configApi = Object.freeze({\n sanitize,\n setSiteConfig,\n getSiteConfig,\n setConfig,\n getConfig,\n reset,\n defaultConfig\n});\nexport default configApi;\n","import { select } from 'd3';\nimport { logger } from '../../logger'; // eslint-disable-line\nimport utils from '../../utils';\nimport { getConfig } from '../../config';\nimport common from '../common/common';\n\n// const MERMAID_DOM_ID_PREFIX = 'mermaid-dom-id-';\nconst MERMAID_DOM_ID_PREFIX = '';\n\nlet config = getConfig();\nlet vertices = {};\nlet edges = [];\nlet classes = [];\nlet subGraphs = [];\nlet subGraphLookup = {};\nlet tooltips = {};\nlet subCount = 0;\nlet firstGraphFlag = true;\nlet direction;\n// Functions to be run after graph rendering\nlet funs = [];\n\n/**\n * Function called by parser when a node definition has been found\n * @param id\n * @param text\n * @param type\n * @param style\n * @param classes\n */\nexport const addVertex = function(_id, text, type, style, classes) {\n let txt;\n let id = _id;\n if (typeof id === 'undefined') {\n return;\n }\n if (id.trim().length === 0) {\n return;\n }\n\n if (id[0].match(/\\d/)) id = MERMAID_DOM_ID_PREFIX + id;\n\n if (typeof vertices[id] === 'undefined') {\n vertices[id] = { id: id, styles: [], classes: [] };\n }\n if (typeof text !== 'undefined') {\n config = getConfig();\n txt = common.sanitizeText(text.trim(), config);\n\n // strip quotes if string starts and ends with a quote\n if (txt[0] === '\"' && txt[txt.length - 1] === '\"') {\n txt = txt.substring(1, txt.length - 1);\n }\n\n vertices[id].text = txt;\n } else {\n if (typeof vertices[id].text === 'undefined') {\n vertices[id].text = _id;\n }\n }\n if (typeof type !== 'undefined') {\n vertices[id].type = type;\n }\n if (typeof style !== 'undefined') {\n if (style !== null) {\n style.forEach(function(s) {\n vertices[id].styles.push(s);\n });\n }\n }\n if (typeof classes !== 'undefined') {\n if (classes !== null) {\n classes.forEach(function(s) {\n vertices[id].classes.push(s);\n });\n }\n }\n};\n\n/**\n * Function called by parser when a link/edge definition has been found\n * @param start\n * @param end\n * @param type\n * @param linktext\n */\nexport const addSingleLink = function(_start, _end, type, linktext) {\n let start = _start;\n let end = _end;\n if (start[0].match(/\\d/)) start = MERMAID_DOM_ID_PREFIX + start;\n if (end[0].match(/\\d/)) end = MERMAID_DOM_ID_PREFIX + end;\n // logger.info('Got edge...', start, end);\n\n const edge = { start: start, end: end, type: undefined, text: '' };\n linktext = type.text;\n\n if (typeof linktext !== 'undefined') {\n edge.text = common.sanitizeText(linktext.trim(), config);\n\n // strip quotes if string starts and exnds with a quote\n if (edge.text[0] === '\"' && edge.text[edge.text.length - 1] === '\"') {\n edge.text = edge.text.substring(1, edge.text.length - 1);\n }\n }\n\n if (typeof type !== 'undefined') {\n edge.type = type.type;\n edge.stroke = type.stroke;\n }\n edges.push(edge);\n};\nexport const addLink = function(_start, _end, type, linktext) {\n let i, j;\n for (i = 0; i < _start.length; i++) {\n for (j = 0; j < _end.length; j++) {\n addSingleLink(_start[i], _end[j], type, linktext);\n }\n }\n};\n\n/**\n * Updates a link's line interpolation algorithm\n * @param pos\n * @param interpolate\n */\nexport const updateLinkInterpolate = function(positions, interp) {\n positions.forEach(function(pos) {\n if (pos === 'default') {\n edges.defaultInterpolate = interp;\n } else {\n edges[pos].interpolate = interp;\n }\n });\n};\n\n/**\n * Updates a link with a style\n * @param pos\n * @param style\n */\nexport const updateLink = function(positions, style) {\n positions.forEach(function(pos) {\n if (pos === 'default') {\n edges.defaultStyle = style;\n } else {\n if (utils.isSubstringInArray('fill', style) === -1) {\n style.push('fill:none');\n }\n edges[pos].style = style;\n }\n });\n};\n\nexport const addClass = function(id, style) {\n if (typeof classes[id] === 'undefined') {\n classes[id] = { id: id, styles: [], textStyles: [] };\n }\n\n if (typeof style !== 'undefined') {\n if (style !== null) {\n style.forEach(function(s) {\n if (s.match('color')) {\n const newStyle1 = s.replace('fill', 'bgFill');\n const newStyle2 = newStyle1.replace('color', 'fill');\n classes[id].textStyles.push(newStyle2);\n }\n classes[id].styles.push(s);\n });\n }\n }\n};\n\n/**\n * Called by parser when a graph definition is found, stores the direction of the chart.\n * @param dir\n */\nexport const setDirection = function(dir) {\n direction = dir;\n if (direction.match(/.*)) {\n direction = 'RL';\n }\n if (direction.match(/.*\\^/)) {\n direction = 'BT';\n }\n if (direction.match(/.*>/)) {\n direction = 'LR';\n }\n if (direction.match(/.*v/)) {\n direction = 'TB';\n }\n};\n\n/**\n * Called by parser when a special node is found, e.g. a clickable element.\n * @param ids Comma separated list of ids\n * @param className Class to add\n */\nexport const setClass = function(ids, className) {\n ids.split(',').forEach(function(_id) {\n let id = _id;\n if (_id[0].match(/\\d/)) id = MERMAID_DOM_ID_PREFIX + id;\n if (typeof vertices[id] !== 'undefined') {\n vertices[id].classes.push(className);\n }\n\n if (typeof subGraphLookup[id] !== 'undefined') {\n subGraphLookup[id].classes.push(className);\n }\n });\n};\n\nconst setTooltip = function(ids, tooltip) {\n ids.split(',').forEach(function(id) {\n if (typeof tooltip !== 'undefined') {\n tooltips[id] = common.sanitizeText(tooltip, config);\n }\n });\n};\n\nconst setClickFun = function(_id, functionName) {\n let id = _id;\n if (_id[0].match(/\\d/)) id = MERMAID_DOM_ID_PREFIX + id;\n if (getConfig().securityLevel !== 'loose') {\n return;\n }\n if (typeof functionName === 'undefined') {\n return;\n }\n if (typeof vertices[id] !== 'undefined') {\n funs.push(function() {\n const elem = document.querySelector(`[id=\"${id}\"]`);\n if (elem !== null) {\n elem.addEventListener(\n 'click',\n function() {\n utils.runFunc(functionName, id);\n },\n false\n );\n }\n });\n }\n};\n\n/**\n * Called by parser when a link is found. Adds the URL to the vertex data.\n * @param ids Comma separated list of ids\n * @param linkStr URL to create a link for\n * @param tooltip Tooltip for the clickable element\n */\nexport const setLink = function(ids, linkStr, tooltip) {\n ids.split(',').forEach(function(_id) {\n let id = _id;\n if (_id[0].match(/\\d/)) id = MERMAID_DOM_ID_PREFIX + id;\n if (typeof vertices[id] !== 'undefined') {\n vertices[id].link = utils.formatUrl(linkStr, config);\n }\n });\n setTooltip(ids, tooltip);\n setClass(ids, 'clickable');\n};\nexport const getTooltip = function(id) {\n return tooltips[id];\n};\n\n/**\n * Called by parser when a click definition is found. Registers an event handler.\n * @param ids Comma separated list of ids\n * @param functionName Function to be called on click\n * @param tooltip Tooltip for the clickable element\n */\nexport const setClickEvent = function(ids, functionName, tooltip) {\n ids.split(',').forEach(function(id) {\n setClickFun(id, functionName);\n });\n setTooltip(ids, tooltip);\n setClass(ids, 'clickable');\n};\n\nexport const bindFunctions = function(element) {\n funs.forEach(function(fun) {\n fun(element);\n });\n};\nexport const getDirection = function() {\n return direction.trim();\n};\n/**\n * Retrieval function for fetching the found nodes after parsing has completed.\n * @returns {{}|*|vertices}\n */\nexport const getVertices = function() {\n return vertices;\n};\n\n/**\n * Retrieval function for fetching the found links after parsing has completed.\n * @returns {{}|*|edges}\n */\nexport const getEdges = function() {\n return edges;\n};\n\n/**\n * Retrieval function for fetching the found class definitions after parsing has completed.\n * @returns {{}|*|classes}\n */\nexport const getClasses = function() {\n return classes;\n};\n\nconst setupToolTips = function(element) {\n let tooltipElem = select('.mermaidTooltip');\n if ((tooltipElem._groups || tooltipElem)[0][0] === null) {\n tooltipElem = select('body')\n .append('div')\n .attr('class', 'mermaidTooltip')\n .style('opacity', 0);\n }\n\n const svg = select(element).select('svg');\n\n const nodes = svg.selectAll('g.node');\n nodes\n .on('mouseover', function() {\n const el = select(this);\n const title = el.attr('title');\n\n // Dont try to draw a tooltip if no data is provided\n if (title === null) {\n return;\n }\n const rect = this.getBoundingClientRect();\n\n tooltipElem\n .transition()\n .duration(200)\n .style('opacity', '.9');\n tooltipElem\n .html(el.attr('title'))\n .style('left', window.scrollX + rect.left + (rect.right - rect.left) / 2 + 'px')\n .style('top', window.scrollY + rect.top - 14 + document.body.scrollTop + 'px');\n el.classed('hover', true);\n })\n .on('mouseout', function() {\n tooltipElem\n .transition()\n .duration(500)\n .style('opacity', 0);\n const el = select(this);\n el.classed('hover', false);\n });\n};\nfuns.push(setupToolTips);\n\n/**\n * Clears the internal graph db so that a new graph can be parsed.\n */\nexport const clear = function() {\n vertices = {};\n classes = {};\n edges = [];\n funs = [];\n funs.push(setupToolTips);\n subGraphs = [];\n subGraphLookup = {};\n subCount = 0;\n tooltips = [];\n firstGraphFlag = true;\n};\n/**\n *\n * @returns {string}\n */\nexport const defaultStyle = function() {\n return 'fill:#ffa;stroke: #f66; stroke-width: 3px; stroke-dasharray: 5, 5;fill:#ffa;stroke: #666;';\n};\n\n/**\n * Clears the internal graph db so that a new graph can be parsed.\n */\nexport const addSubGraph = function(_id, list, _title) {\n let id = _id.trim();\n let title = _title;\n if (_id === _title && _title.match(/\\s/)) {\n id = undefined;\n }\n function uniq(a) {\n const prims = { boolean: {}, number: {}, string: {} };\n const objs = [];\n\n return a.filter(function(item) {\n const type = typeof item;\n if (item.trim() === '') {\n return false;\n }\n if (type in prims) {\n return prims[type].hasOwnProperty(item) ? false : (prims[type][item] = true); // eslint-disable-line\n } else {\n return objs.indexOf(item) >= 0 ? false : objs.push(item);\n }\n });\n }\n\n let nodeList = [];\n\n nodeList = uniq(nodeList.concat.apply(nodeList, list));\n for (let i = 0; i < nodeList.length; i++) {\n if (nodeList[i][0].match(/\\d/)) nodeList[i] = MERMAID_DOM_ID_PREFIX + nodeList[i];\n }\n\n id = id || 'subGraph' + subCount;\n if (id[0].match(/\\d/)) id = MERMAID_DOM_ID_PREFIX + id;\n title = title || '';\n title = common.sanitizeText(title, config);\n subCount = subCount + 1;\n const subGraph = { id: id, nodes: nodeList, title: title.trim(), classes: [] };\n subGraphs.push(subGraph);\n subGraphLookup[id] = subGraph;\n return id;\n};\n\nconst getPosForId = function(id) {\n for (let i = 0; i < subGraphs.length; i++) {\n if (subGraphs[i].id === id) {\n return i;\n }\n }\n return -1;\n};\nlet secCount = -1;\nconst posCrossRef = [];\nconst indexNodes2 = function(id, pos) {\n const nodes = subGraphs[pos].nodes;\n secCount = secCount + 1;\n if (secCount > 2000) {\n return;\n }\n posCrossRef[secCount] = pos;\n // Check if match\n if (subGraphs[pos].id === id) {\n return {\n result: true,\n count: 0\n };\n }\n\n let count = 0;\n let posCount = 1;\n while (count < nodes.length) {\n const childPos = getPosForId(nodes[count]);\n // Ignore regular nodes (pos will be -1)\n if (childPos >= 0) {\n const res = indexNodes2(id, childPos);\n if (res.result) {\n return {\n result: true,\n count: posCount + res.count\n };\n } else {\n posCount = posCount + res.count;\n }\n }\n count = count + 1;\n }\n\n return {\n result: false,\n count: posCount\n };\n};\n\nexport const getDepthFirstPos = function(pos) {\n return posCrossRef[pos];\n};\nexport const indexNodes = function() {\n secCount = -1;\n if (subGraphs.length > 0) {\n indexNodes2('none', subGraphs.length - 1, 0);\n }\n};\n\nexport const getSubGraphs = function() {\n return subGraphs;\n};\n\nexport const firstGraph = () => {\n if (firstGraphFlag) {\n firstGraphFlag = false;\n return true;\n }\n return false;\n};\n\nconst destructStartLink = _str => {\n const str = _str.trim();\n\n switch (str) {\n case '<--':\n return { type: 'arrow_point', stroke: 'normal' };\n case 'x--':\n return { type: 'arrow_cross', stroke: 'normal' };\n case 'o--':\n return { type: 'arrow_circle', stroke: 'normal' };\n case '<-.':\n return { type: 'arrow_point', stroke: 'dotted' };\n case 'x-.':\n return { type: 'arrow_cross', stroke: 'dotted' };\n case 'o-.':\n return { type: 'arrow_circle', stroke: 'dotted' };\n case '<==':\n return { type: 'arrow_point', stroke: 'thick' };\n case 'x==':\n return { type: 'arrow_cross', stroke: 'thick' };\n case 'o==':\n return { type: 'arrow_circle', stroke: 'thick' };\n case '--':\n return { type: 'arrow_open', stroke: 'normal' };\n case '==':\n return { type: 'arrow_open', stroke: 'thick' };\n case '-.':\n return { type: 'arrow_open', stroke: 'dotted' };\n }\n};\n\nconst destructEndLink = _str => {\n const str = _str.trim();\n\n switch (str) {\n case '--x':\n return { type: 'arrow_cross', stroke: 'normal' };\n case '-->':\n return { type: 'arrow_point', stroke: 'normal' };\n case '<-->':\n return { type: 'double_arrow_point', stroke: 'normal' };\n case 'x--x':\n return { type: 'double_arrow_cross', stroke: 'normal' };\n case 'o--o':\n return { type: 'double_arrow_circle', stroke: 'normal' };\n case 'o.-o':\n return { type: 'double_arrow_circle', stroke: 'dotted' };\n case '<==>':\n return { type: 'double_arrow_point', stroke: 'thick' };\n case 'o==o':\n return { type: 'double_arrow_circle', stroke: 'thick' };\n case 'x==x':\n return { type: 'double_arrow_cross', stroke: 'thick' };\n case 'x.-x':\n return { type: 'double_arrow_cross', stroke: 'dotted' };\n case 'x-.-x':\n return { type: 'double_arrow_cross', stroke: 'dotted' };\n case '<.->':\n return { type: 'double_arrow_point', stroke: 'dotted' };\n case '<-.->':\n return { type: 'double_arrow_point', stroke: 'dotted' };\n case 'o-.-o':\n return { type: 'double_arrow_circle', stroke: 'dotted' };\n case '--o':\n return { type: 'arrow_circle', stroke: 'normal' };\n case '---':\n return { type: 'arrow_open', stroke: 'normal' };\n case '-.-x':\n return { type: 'arrow_cross', stroke: 'dotted' };\n case '-.->':\n return { type: 'arrow_point', stroke: 'dotted' };\n case '-.-o':\n return { type: 'arrow_circle', stroke: 'dotted' };\n case '-.-':\n return { type: 'arrow_open', stroke: 'dotted' };\n case '.-x':\n return { type: 'arrow_cross', stroke: 'dotted' };\n case '.->':\n return { type: 'arrow_point', stroke: 'dotted' };\n case '.-o':\n return { type: 'arrow_circle', stroke: 'dotted' };\n case '.-':\n return { type: 'arrow_open', stroke: 'dotted' };\n case '==x':\n return { type: 'arrow_cross', stroke: 'thick' };\n case '==>':\n return { type: 'arrow_point', stroke: 'thick' };\n case '==o':\n return { type: 'arrow_circle', stroke: 'thick' };\n case '===':\n return { type: 'arrow_open', stroke: 'thick' };\n }\n};\n\nconst destructLink = (_str, _startStr) => {\n const info = destructEndLink(_str);\n let startInfo;\n if (_startStr) {\n startInfo = destructStartLink(_startStr);\n\n if (startInfo.stroke !== info.stroke) {\n return { type: 'INVALID', stroke: 'INVALID' };\n }\n\n if (startInfo.type === 'arrow_open') {\n // -- xyz --> - take arrow type form ending\n startInfo.type = info.type;\n } else {\n // x-- xyz --> - not supported\n if (startInfo.type !== info.type) return { type: 'INVALID', stroke: 'INVALID' };\n\n startInfo.type = 'double_' + startInfo.type;\n }\n\n if (startInfo.type === 'double_arrow') {\n startInfo.type = 'double_arrow_point';\n }\n\n return startInfo;\n }\n\n return info;\n};\n\nexport default {\n addVertex,\n addLink,\n updateLinkInterpolate,\n updateLink,\n addClass,\n setDirection,\n setClass,\n getTooltip,\n setClickEvent,\n setLink,\n bindFunctions,\n getDirection,\n getVertices,\n getEdges,\n getClasses,\n clear,\n defaultStyle,\n addSubGraph,\n getDepthFirstPos,\n indexNodes,\n getSubGraphs,\n destructLink,\n lex: {\n firstGraph\n }\n};\n","import dagreD3 from 'dagre-d3';\n\nfunction question(parent, bbox, node) {\n const w = bbox.width;\n const h = bbox.height;\n const s = (w + h) * 0.9;\n const points = [\n { x: s / 2, y: 0 },\n { x: s, y: -s / 2 },\n { x: s / 2, y: -s },\n { x: 0, y: -s / 2 }\n ];\n const shapeSvg = insertPolygonShape(parent, s, s, points);\n node.intersect = function(point) {\n return dagreD3.intersect.polygon(node, points, point);\n };\n return shapeSvg;\n}\n\nfunction hexagon(parent, bbox, node) {\n const f = 4;\n const h = bbox.height;\n const m = h / f;\n const w = bbox.width + 2 * m;\n const points = [\n { x: m, y: 0 },\n { x: w - m, y: 0 },\n { x: w, y: -h / 2 },\n { x: w - m, y: -h },\n { x: m, y: -h },\n { x: 0, y: -h / 2 }\n ];\n const shapeSvg = insertPolygonShape(parent, w, h, points);\n node.intersect = function(point) {\n return dagreD3.intersect.polygon(node, points, point);\n };\n return shapeSvg;\n}\n\nfunction rect_left_inv_arrow(parent, bbox, node) {\n const w = bbox.width;\n const h = bbox.height;\n const points = [\n { x: -h / 2, y: 0 },\n { x: w, y: 0 },\n { x: w, y: -h },\n { x: -h / 2, y: -h },\n { x: 0, y: -h / 2 }\n ];\n const shapeSvg = insertPolygonShape(parent, w, h, points);\n node.intersect = function(point) {\n return dagreD3.intersect.polygon(node, points, point);\n };\n return shapeSvg;\n}\n\nfunction lean_right(parent, bbox, node) {\n const w = bbox.width;\n const h = bbox.height;\n const points = [\n { x: (-2 * h) / 6, y: 0 },\n { x: w - h / 6, y: 0 },\n { x: w + (2 * h) / 6, y: -h },\n { x: h / 6, y: -h }\n ];\n const shapeSvg = insertPolygonShape(parent, w, h, points);\n node.intersect = function(point) {\n return dagreD3.intersect.polygon(node, points, point);\n };\n return shapeSvg;\n}\n\nfunction lean_left(parent, bbox, node) {\n const w = bbox.width;\n const h = bbox.height;\n const points = [\n { x: (2 * h) / 6, y: 0 },\n { x: w + h / 6, y: 0 },\n { x: w - (2 * h) / 6, y: -h },\n { x: -h / 6, y: -h }\n ];\n const shapeSvg = insertPolygonShape(parent, w, h, points);\n node.intersect = function(point) {\n return dagreD3.intersect.polygon(node, points, point);\n };\n return shapeSvg;\n}\n\nfunction trapezoid(parent, bbox, node) {\n const w = bbox.width;\n const h = bbox.height;\n const points = [\n { x: (-2 * h) / 6, y: 0 },\n { x: w + (2 * h) / 6, y: 0 },\n { x: w - h / 6, y: -h },\n { x: h / 6, y: -h }\n ];\n const shapeSvg = insertPolygonShape(parent, w, h, points);\n node.intersect = function(point) {\n return dagreD3.intersect.polygon(node, points, point);\n };\n return shapeSvg;\n}\n\nfunction inv_trapezoid(parent, bbox, node) {\n const w = bbox.width;\n const h = bbox.height;\n const points = [\n { x: h / 6, y: 0 },\n { x: w - h / 6, y: 0 },\n { x: w + (2 * h) / 6, y: -h },\n { x: (-2 * h) / 6, y: -h }\n ];\n const shapeSvg = insertPolygonShape(parent, w, h, points);\n node.intersect = function(point) {\n return dagreD3.intersect.polygon(node, points, point);\n };\n return shapeSvg;\n}\n\nfunction rect_right_inv_arrow(parent, bbox, node) {\n const w = bbox.width;\n const h = bbox.height;\n const points = [\n { x: 0, y: 0 },\n { x: w + h / 2, y: 0 },\n { x: w, y: -h / 2 },\n { x: w + h / 2, y: -h },\n { x: 0, y: -h }\n ];\n const shapeSvg = insertPolygonShape(parent, w, h, points);\n node.intersect = function(point) {\n return dagreD3.intersect.polygon(node, points, point);\n };\n return shapeSvg;\n}\n\nfunction stadium(parent, bbox, node) {\n const h = bbox.height;\n const w = bbox.width + h / 4;\n\n const shapeSvg = parent\n .insert('rect', ':first-child')\n .attr('rx', h / 2)\n .attr('ry', h / 2)\n .attr('x', -w / 2)\n .attr('y', -h / 2)\n .attr('width', w)\n .attr('height', h);\n\n node.intersect = function(point) {\n return dagreD3.intersect.rect(node, point);\n };\n return shapeSvg;\n}\n\nfunction subroutine(parent, bbox, node) {\n const w = bbox.width;\n const h = bbox.height;\n const points = [\n { x: 0, y: 0 },\n { x: w, y: 0 },\n { x: w, y: -h },\n { x: 0, y: -h },\n { x: 0, y: 0 },\n { x: -8, y: 0 },\n { x: w + 8, y: 0 },\n { x: w + 8, y: -h },\n { x: -8, y: -h },\n { x: -8, y: 0 }\n ];\n const shapeSvg = insertPolygonShape(parent, w, h, points);\n node.intersect = function(point) {\n return dagreD3.intersect.polygon(node, points, point);\n };\n return shapeSvg;\n}\n\nfunction cylinder(parent, bbox, node) {\n const w = bbox.width;\n const rx = w / 2;\n const ry = rx / (2.5 + w / 50);\n const h = bbox.height + ry;\n\n const shape =\n 'M 0,' +\n ry +\n ' a ' +\n rx +\n ',' +\n ry +\n ' 0,0,0 ' +\n w +\n ' 0 a ' +\n rx +\n ',' +\n ry +\n ' 0,0,0 ' +\n -w +\n ' 0 l 0,' +\n h +\n ' a ' +\n rx +\n ',' +\n ry +\n ' 0,0,0 ' +\n w +\n ' 0 l 0,' +\n -h;\n\n const shapeSvg = parent\n .attr('label-offset-y', ry)\n .insert('path', ':first-child')\n .attr('d', shape)\n .attr('transform', 'translate(' + -w / 2 + ',' + -(h / 2 + ry) + ')');\n\n node.intersect = function(point) {\n const pos = dagreD3.intersect.rect(node, point);\n const x = pos.x - node.x;\n\n if (\n rx != 0 &&\n (Math.abs(x) < node.width / 2 ||\n (Math.abs(x) == node.width / 2 && Math.abs(pos.y - node.y) > node.height / 2 - ry))\n ) {\n // ellipsis equation: x*x / a*a + y*y / b*b = 1\n // solve for y to get adjustion value for pos.y\n let y = ry * ry * (1 - (x * x) / (rx * rx));\n if (y != 0) y = Math.sqrt(y);\n y = ry - y;\n if (point.y - node.y > 0) y = -y;\n\n pos.y += y;\n }\n\n return pos;\n };\n\n return shapeSvg;\n}\n\nexport function addToRender(render) {\n render.shapes().question = question;\n render.shapes().hexagon = hexagon;\n render.shapes().stadium = stadium;\n render.shapes().subroutine = subroutine;\n render.shapes().cylinder = cylinder;\n\n // Add custom shape for box with inverted arrow on left side\n render.shapes().rect_left_inv_arrow = rect_left_inv_arrow;\n\n // Add custom shape for box with inverted arrow on left side\n render.shapes().lean_right = lean_right;\n\n // Add custom shape for box with inverted arrow on left side\n render.shapes().lean_left = lean_left;\n\n // Add custom shape for box with inverted arrow on left side\n render.shapes().trapezoid = trapezoid;\n\n // Add custom shape for box with inverted arrow on left side\n render.shapes().inv_trapezoid = inv_trapezoid;\n\n // Add custom shape for box with inverted arrow on right side\n render.shapes().rect_right_inv_arrow = rect_right_inv_arrow;\n}\n\nexport function addToRenderV2(addShape) {\n addShape({ question });\n addShape({ hexagon });\n addShape({ stadium });\n addShape({ subroutine });\n addShape({ cylinder });\n\n // Add custom shape for box with inverted arrow on left side\n addShape({ rect_left_inv_arrow });\n\n // Add custom shape for box with inverted arrow on left side\n addShape({ lean_right });\n\n // Add custom shape for box with inverted arrow on left side\n addShape({ lean_left });\n\n // Add custom shape for box with inverted arrow on left side\n addShape({ trapezoid });\n\n // Add custom shape for box with inverted arrow on left side\n addShape({ inv_trapezoid });\n\n // Add custom shape for box with inverted arrow on right side\n addShape({ rect_right_inv_arrow });\n}\n\nfunction insertPolygonShape(parent, w, h, points) {\n return parent\n .insert('polygon', ':first-child')\n .attr(\n 'points',\n points\n .map(function(d) {\n return d.x + ',' + d.y;\n })\n .join(' ')\n )\n .attr('transform', 'translate(' + -w / 2 + ',' + h / 2 + ')');\n}\n\nexport default {\n addToRender,\n addToRenderV2\n};\n","import graphlib from 'graphlib';\nimport { select, curveLinear, selectAll } from 'd3';\n\nimport flowDb from './flowDb';\nimport flow from './parser/flow';\nimport { getConfig } from '../../config';\n\nimport dagreD3 from 'dagre-d3';\nimport addHtmlLabel from 'dagre-d3/lib/label/add-html-label.js';\nimport { logger } from '../../logger';\nimport common from '../common/common';\nimport { interpolateToCurve, getStylesFromArray } from '../../utils';\nimport flowChartShapes from './flowChartShapes';\n\nconst conf = {};\nexport const setConf = function(cnf) {\n const keys = Object.keys(cnf);\n for (let i = 0; i < keys.length; i++) {\n conf[keys[i]] = cnf[keys[i]];\n }\n};\n\n/**\n * Function that adds the vertices found in the graph definition to the graph to be rendered.\n * @param vert Object containing the vertices.\n * @param g The graph that is to be drawn.\n */\nexport const addVertices = function(vert, g, svgId) {\n const svg = select(`[id=\"${svgId}\"]`);\n const keys = Object.keys(vert);\n\n // Iterate through each item in the vertex object (containing all the vertices found) in the graph definition\n keys.forEach(function(id) {\n const vertex = vert[id];\n\n /**\n * Variable for storing the classes for the vertex\n * @type {string}\n */\n let classStr = 'default';\n if (vertex.classes.length > 0) {\n classStr = vertex.classes.join(' ');\n }\n\n const styles = getStylesFromArray(vertex.styles);\n\n // Use vertex id as text in the box if no text is provided by the graph definition\n let vertexText = vertex.text !== undefined ? vertex.text : vertex.id;\n\n // We create a SVG label, either by delegating to addHtmlLabel or manually\n let vertexNode;\n if (getConfig().flowchart.htmlLabels) {\n // TODO: addHtmlLabel accepts a labelStyle. Do we possibly have that?\n const node = {\n label: vertexText.replace(\n /fa[lrsb]?:fa-[\\w-]+/g,\n s => ``\n )\n };\n vertexNode = addHtmlLabel(svg, node).node();\n vertexNode.parentNode.removeChild(vertexNode);\n } else {\n const svgLabel = document.createElementNS('http://www.w3.org/2000/svg', 'text');\n svgLabel.setAttribute('style', styles.labelStyle.replace('color:', 'fill:'));\n\n const rows = vertexText.split(common.lineBreakRegex);\n\n for (let j = 0; j < rows.length; j++) {\n const tspan = document.createElementNS('http://www.w3.org/2000/svg', 'tspan');\n tspan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\n tspan.setAttribute('dy', '1em');\n tspan.setAttribute('x', '1');\n tspan.textContent = rows[j];\n svgLabel.appendChild(tspan);\n }\n vertexNode = svgLabel;\n }\n\n let radious = 0;\n let _shape = '';\n // Set the shape based parameters\n switch (vertex.type) {\n case 'round':\n radious = 5;\n _shape = 'rect';\n break;\n case 'square':\n _shape = 'rect';\n break;\n case 'diamond':\n _shape = 'question';\n break;\n case 'hexagon':\n _shape = 'hexagon';\n break;\n case 'odd':\n _shape = 'rect_left_inv_arrow';\n break;\n case 'lean_right':\n _shape = 'lean_right';\n break;\n case 'lean_left':\n _shape = 'lean_left';\n break;\n case 'trapezoid':\n _shape = 'trapezoid';\n break;\n case 'inv_trapezoid':\n _shape = 'inv_trapezoid';\n break;\n case 'odd_right':\n _shape = 'rect_left_inv_arrow';\n break;\n case 'circle':\n _shape = 'circle';\n break;\n case 'ellipse':\n _shape = 'ellipse';\n break;\n case 'stadium':\n _shape = 'stadium';\n break;\n case 'subroutine':\n _shape = 'subroutine';\n break;\n case 'cylinder':\n _shape = 'cylinder';\n break;\n case 'group':\n _shape = 'rect';\n break;\n default:\n _shape = 'rect';\n }\n // Add the node\n g.setNode(vertex.id, {\n labelType: 'svg',\n labelStyle: styles.labelStyle,\n shape: _shape,\n label: vertexNode,\n rx: radious,\n ry: radious,\n class: classStr,\n style: styles.style,\n id: vertex.id\n });\n });\n};\n\n/**\n * Add edges to graph based on parsed graph defninition\n * @param {Object} edges The edges to add to the graph\n * @param {Object} g The graph object\n */\nexport const addEdges = function(edges, g) {\n let cnt = 0;\n\n let defaultStyle;\n let defaultLabelStyle;\n\n if (typeof edges.defaultStyle !== 'undefined') {\n const defaultStyles = getStylesFromArray(edges.defaultStyle);\n defaultStyle = defaultStyles.style;\n defaultLabelStyle = defaultStyles.labelStyle;\n }\n\n edges.forEach(function(edge) {\n cnt++;\n\n // Identify Link\n var linkId = 'L-' + edge.start + '-' + edge.end;\n var linkNameStart = 'LS-' + edge.start;\n var linkNameEnd = 'LE-' + edge.end;\n\n const edgeData = {};\n\n // Set link type for rendering\n if (edge.type === 'arrow_open') {\n edgeData.arrowhead = 'none';\n } else {\n edgeData.arrowhead = 'normal';\n }\n\n let style = '';\n let labelStyle = '';\n\n if (typeof edge.style !== 'undefined') {\n const styles = getStylesFromArray(edge.style);\n style = styles.style;\n labelStyle = styles.labelStyle;\n } else {\n switch (edge.stroke) {\n case 'normal':\n style = 'fill:none';\n if (typeof defaultStyle !== 'undefined') {\n style = defaultStyle;\n }\n if (typeof defaultLabelStyle !== 'undefined') {\n labelStyle = defaultLabelStyle;\n }\n break;\n case 'dotted':\n style = 'fill:none;stroke-width:2px;stroke-dasharray:3;';\n break;\n case 'thick':\n style = ' stroke-width: 3.5px;fill:none';\n break;\n }\n }\n\n edgeData.style = style;\n edgeData.labelStyle = labelStyle;\n\n if (typeof edge.interpolate !== 'undefined') {\n edgeData.curve = interpolateToCurve(edge.interpolate, curveLinear);\n } else if (typeof edges.defaultInterpolate !== 'undefined') {\n edgeData.curve = interpolateToCurve(edges.defaultInterpolate, curveLinear);\n } else {\n edgeData.curve = interpolateToCurve(conf.curve, curveLinear);\n }\n\n if (typeof edge.text === 'undefined') {\n if (typeof edge.style !== 'undefined') {\n edgeData.arrowheadStyle = 'fill: #333';\n }\n } else {\n edgeData.arrowheadStyle = 'fill: #333';\n edgeData.labelpos = 'c';\n\n if (getConfig().flowchart.htmlLabels) {\n edgeData.labelType = 'html';\n edgeData.label = `${edge.text}`;\n } else {\n edgeData.labelType = 'text';\n edgeData.label = edge.text.replace(common.lineBreakRegex, '\\n');\n\n if (typeof edge.style === 'undefined') {\n edgeData.style = edgeData.style || 'stroke: #333; stroke-width: 1.5px;fill:none';\n }\n\n edgeData.labelStyle = edgeData.labelStyle.replace('color:', 'fill:');\n }\n }\n\n edgeData.id = linkId;\n edgeData.class = linkNameStart + ' ' + linkNameEnd;\n\n // Add the edge to the graph\n g.setEdge(edge.start, edge.end, edgeData, cnt);\n });\n};\n\n/**\n * Returns the all the styles from classDef statements in the graph definition.\n * @returns {object} classDef styles\n */\nexport const getClasses = function(text) {\n logger.info('Extracting classes');\n flowDb.clear();\n try {\n const parser = flow.parser;\n parser.yy = flowDb;\n\n // Parse the graph definition\n parser.parse(text);\n return flowDb.getClasses();\n } catch (e) {\n return;\n }\n};\n\n/**\n * Draws a flowchart in the tag with id: id based on the graph definition in text.\n * @param text\n * @param id\n */\nexport const draw = function(text, id) {\n logger.info('Drawing flowchart');\n flowDb.clear();\n const parser = flow.parser;\n parser.yy = flowDb;\n\n // Parse the graph definition\n // try {\n parser.parse(text);\n // } catch (err) {\n // logger.debug('Parsing failed');\n // }\n\n // Fetch the default direction, use TD if none was found\n let dir = flowDb.getDirection();\n if (typeof dir === 'undefined') {\n dir = 'TD';\n }\n\n const conf = getConfig().flowchart;\n const nodeSpacing = conf.nodeSpacing || 50;\n const rankSpacing = conf.rankSpacing || 50;\n\n // Create the input mermaid.graph\n const g = new graphlib.Graph({\n multigraph: true,\n compound: true\n })\n .setGraph({\n rankdir: dir,\n nodesep: nodeSpacing,\n ranksep: rankSpacing,\n marginx: 8,\n marginy: 8\n })\n .setDefaultEdgeLabel(function() {\n return {};\n });\n\n let subG;\n const subGraphs = flowDb.getSubGraphs();\n for (let i = subGraphs.length - 1; i >= 0; i--) {\n subG = subGraphs[i];\n flowDb.addVertex(subG.id, subG.title, 'group', undefined, subG.classes);\n }\n\n // Fetch the verices/nodes and edges/links from the parsed graph definition\n const vert = flowDb.getVertices();\n\n const edges = flowDb.getEdges();\n\n let i = 0;\n for (i = subGraphs.length - 1; i >= 0; i--) {\n subG = subGraphs[i];\n\n selectAll('cluster').append('text');\n\n for (let j = 0; j < subG.nodes.length; j++) {\n g.setParent(subG.nodes[j], subG.id);\n }\n }\n addVertices(vert, g, id);\n addEdges(edges, g);\n\n // Create the renderer\n const Render = dagreD3.render;\n const render = new Render();\n\n // Add custom shapes\n flowChartShapes.addToRender(render);\n\n // Add our custom arrow - an empty arrowhead\n render.arrows().none = function normal(parent, id, edge, type) {\n const marker = parent\n .append('marker')\n .attr('id', id)\n .attr('viewBox', '0 0 10 10')\n .attr('refX', 9)\n .attr('refY', 5)\n .attr('markerUnits', 'strokeWidth')\n .attr('markerWidth', 8)\n .attr('markerHeight', 6)\n .attr('orient', 'auto');\n\n const path = marker.append('path').attr('d', 'M 0 0 L 0 0 L 0 0 z');\n dagreD3.util.applyStyle(path, edge[type + 'Style']);\n };\n\n // Override normal arrowhead defined in d3. Remove style & add class to allow css styling.\n render.arrows().normal = function normal(parent, id) {\n const marker = parent\n .append('marker')\n .attr('id', id)\n .attr('viewBox', '0 0 10 10')\n .attr('refX', 9)\n .attr('refY', 5)\n .attr('markerUnits', 'strokeWidth')\n .attr('markerWidth', 8)\n .attr('markerHeight', 6)\n .attr('orient', 'auto');\n\n marker\n .append('path')\n .attr('d', 'M 0 0 L 10 5 L 0 10 z')\n .attr('class', 'arrowheadPath')\n .style('stroke-width', 1)\n .style('stroke-dasharray', '1,0');\n };\n\n // Set up an SVG group so that we can translate the final graph.\n const svg = select(`[id=\"${id}\"]`);\n\n // Run the renderer. This is what draws the final graph.\n const element = select('#' + id + ' g');\n render(element, g);\n\n element.selectAll('g.node').attr('title', function() {\n return flowDb.getTooltip(this.id);\n });\n\n const padding = conf.diagramPadding;\n const svgBounds = svg.node().getBBox();\n const width = svgBounds.width + padding * 2;\n const height = svgBounds.height + padding * 2;\n\n if (conf.useMaxWidth) {\n svg.attr('width', '100%');\n svg.attr('style', `max-width: ${width}px;`);\n } else {\n svg.attr('height', height);\n svg.attr('width', width);\n }\n\n // Ensure the viewBox includes the whole svgBounds area with extra space for padding\n const vBox = `${svgBounds.x - padding} ${svgBounds.y - padding} ${width} ${height}`;\n logger.debug(`viewBox ${vBox}`);\n svg.attr('viewBox', vBox);\n\n // Index nodes\n flowDb.indexNodes('subGraph' + i);\n\n // reposition labels\n for (i = 0; i < subGraphs.length; i++) {\n subG = subGraphs[i];\n\n if (subG.title !== 'undefined') {\n const clusterRects = document.querySelectorAll('#' + id + ' [id=\"' + subG.id + '\"] rect');\n const clusterEl = document.querySelectorAll('#' + id + ' [id=\"' + subG.id + '\"]');\n\n const xPos = clusterRects[0].x.baseVal.value;\n const yPos = clusterRects[0].y.baseVal.value;\n const width = clusterRects[0].width.baseVal.value;\n const cluster = select(clusterEl[0]);\n const te = cluster.select('.label');\n te.attr('transform', `translate(${xPos + width / 2}, ${yPos + 14})`);\n te.attr('id', id + 'Text');\n\n for (let j = 0; j < subG.classes.length; j++) {\n clusterEl[0].classList.add(subG.classes[j]);\n }\n }\n }\n\n // Add label rects for non html labels\n if (!conf.htmlLabels || true) { // eslint-disable-line\n const labels = document.querySelectorAll('[id=\"' + id + '\"] .edgeLabel .label');\n for (let k = 0; k < labels.length; k++) {\n const label = labels[k];\n\n // Get dimensions of label\n const dim = label.getBBox();\n\n const rect = document.createElementNS('http://www.w3.org/2000/svg', 'rect');\n rect.setAttribute('rx', 0);\n rect.setAttribute('ry', 0);\n rect.setAttribute('width', dim.width);\n rect.setAttribute('height', dim.height);\n rect.setAttribute('style', 'fill:#e8e8e8;');\n\n label.insertBefore(rect, label.firstChild);\n }\n }\n\n // If node has a link, wrap it in an anchor SVG object.\n const keys = Object.keys(vert);\n keys.forEach(function(key) {\n const vertex = vert[key];\n\n if (vertex.link) {\n const node = select('#' + id + ' [id=\"' + key + '\"]');\n if (node) {\n const link = document.createElementNS('http://www.w3.org/2000/svg', 'a');\n link.setAttributeNS('http://www.w3.org/2000/svg', 'class', vertex.classes.join(' '));\n link.setAttributeNS('http://www.w3.org/2000/svg', 'href', vertex.link);\n link.setAttributeNS('http://www.w3.org/2000/svg', 'rel', 'noopener');\n\n const linkNode = node.insert(function() {\n return link;\n }, ':first-child');\n\n const shape = node.select('.label-container');\n if (shape) {\n linkNode.append(function() {\n return shape.node();\n });\n }\n\n const label = node.select('.label');\n if (label) {\n linkNode.append(function() {\n return label.node();\n });\n }\n }\n }\n });\n};\n\nexport default {\n setConf,\n addVertices,\n addEdges,\n getClasses,\n draw\n};\n","/**\n * Setup arrow head and define the marker. The result is appended to the svg.\n */\n\nimport { logger } from '../logger';\n\n// Only add the number of markers that the diagram needs\nconst insertMarkers = (elem, markerArray, type, id) => {\n markerArray.forEach(markerName => {\n markers[markerName](elem, type, id);\n });\n};\n\nconst extension = (elem, type, id) => {\n logger.trace('Making markers for ', id);\n elem\n .append('defs')\n .append('marker')\n .attr('id', type + '-extensionStart')\n .attr('class', 'marker extension ' + type)\n .attr('refX', 0)\n .attr('refY', 7)\n .attr('markerWidth', 190)\n .attr('markerHeight', 240)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 1,7 L18,13 V 1 Z');\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', type + '-extensionEnd')\n .attr('class', 'marker extension ' + type)\n .attr('refX', 19)\n .attr('refY', 7)\n .attr('markerWidth', 20)\n .attr('markerHeight', 28)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 1,1 V 13 L18,7 Z'); // this is actual shape for arrowhead\n};\n\nconst composition = (elem, type) => {\n elem\n .append('defs')\n .append('marker')\n .attr('id', type + '-compositionStart')\n .attr('class', 'marker composition ' + type)\n .attr('refX', 0)\n .attr('refY', 7)\n .attr('markerWidth', 190)\n .attr('markerHeight', 240)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z');\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', type + '-compositionEnd')\n .attr('class', 'marker composition ' + type)\n .attr('refX', 19)\n .attr('refY', 7)\n .attr('markerWidth', 20)\n .attr('markerHeight', 28)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z');\n};\nconst aggregation = (elem, type) => {\n elem\n .append('defs')\n .append('marker')\n .attr('id', type + '-aggregationStart')\n .attr('class', 'marker aggregation ' + type)\n .attr('refX', 0)\n .attr('refY', 7)\n .attr('markerWidth', 190)\n .attr('markerHeight', 240)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z');\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', type + '-aggregationEnd')\n .attr('class', 'marker aggregation ' + type)\n .attr('refX', 19)\n .attr('refY', 7)\n .attr('markerWidth', 20)\n .attr('markerHeight', 28)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z');\n};\nconst dependency = (elem, type) => {\n elem\n .append('defs')\n .append('marker')\n .attr('id', type + '-dependencyStart')\n .attr('class', 'marker dependency ' + type)\n .attr('refX', 0)\n .attr('refY', 7)\n .attr('markerWidth', 190)\n .attr('markerHeight', 240)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 5,7 L9,13 L1,7 L9,1 Z');\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', type + '-dependencyEnd')\n .attr('class', 'marker dependency ' + type)\n .attr('refX', 19)\n .attr('refY', 7)\n .attr('markerWidth', 20)\n .attr('markerHeight', 28)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 18,7 L9,13 L14,7 L9,1 Z');\n};\nconst point = (elem, type) => {\n elem\n .append('marker')\n .attr('id', type + '-pointEnd')\n .attr('class', 'marker ' + type)\n .attr('viewBox', '0 0 10 10')\n .attr('refX', 9)\n .attr('refY', 5)\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('markerWidth', 12)\n .attr('markerHeight', 12)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 0 0 L 10 5 L 0 10 z')\n .attr('class', 'arrowMarkerPath')\n .style('stroke-width', 1)\n .style('stroke-dasharray', '1,0');\n elem\n .append('marker')\n .attr('id', type + '-pointStart')\n .attr('class', 'marker ' + type)\n .attr('viewBox', '0 0 10 10')\n .attr('refX', 0)\n .attr('refY', 5)\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('markerWidth', 12)\n .attr('markerHeight', 12)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 0 5 L 10 10 L 10 0 z')\n .attr('class', 'arrowMarkerPath')\n .style('stroke-width', 1)\n .style('stroke-dasharray', '1,0');\n};\nconst circle = (elem, type) => {\n elem\n .append('marker')\n .attr('id', type + '-circleEnd')\n .attr('class', 'marker ' + type)\n .attr('viewBox', '0 0 10 10')\n .attr('refX', 11)\n .attr('refY', 5)\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('markerWidth', 11)\n .attr('markerHeight', 11)\n .attr('orient', 'auto')\n .append('circle')\n .attr('cx', '5')\n .attr('cy', '5')\n .attr('r', '5')\n .attr('class', 'arrowMarkerPath')\n .style('stroke-width', 1)\n .style('stroke-dasharray', '1,0');\n\n elem\n .append('marker')\n .attr('id', type + '-circleStart')\n .attr('class', 'marker ' + type)\n .attr('viewBox', '0 0 10 10')\n .attr('refX', -1)\n .attr('refY', 5)\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('markerWidth', 11)\n .attr('markerHeight', 11)\n .attr('orient', 'auto')\n .append('circle')\n .attr('cx', '5')\n .attr('cy', '5')\n .attr('r', '5')\n .attr('class', 'arrowMarkerPath')\n .style('stroke-width', 1)\n .style('stroke-dasharray', '1,0');\n};\nconst cross = (elem, type) => {\n elem\n .append('marker')\n .attr('id', type + '-crossEnd')\n .attr('class', 'marker cross ' + type)\n .attr('viewBox', '0 0 11 11')\n .attr('refX', 12)\n .attr('refY', 5.2)\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('markerWidth', 11)\n .attr('markerHeight', 11)\n .attr('orient', 'auto')\n .append('path')\n // .attr('stroke', 'black')\n .attr('d', 'M 1,1 l 9,9 M 10,1 l -9,9')\n .attr('class', 'arrowMarkerPath')\n .style('stroke-width', 2)\n .style('stroke-dasharray', '1,0');\n\n elem\n .append('marker')\n .attr('id', type + '-crossStart')\n .attr('class', 'marker cross ' + type)\n .attr('viewBox', '0 0 11 11')\n .attr('refX', -1)\n .attr('refY', 5.2)\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('markerWidth', 11)\n .attr('markerHeight', 11)\n .attr('orient', 'auto')\n .append('path')\n // .attr('stroke', 'black')\n .attr('d', 'M 1,1 l 9,9 M 10,1 l -9,9')\n .attr('class', 'arrowMarkerPath')\n .style('stroke-width', 2)\n .style('stroke-dasharray', '1,0');\n};\nconst barb = (elem, type) => {\n elem\n .append('defs')\n .append('marker')\n .attr('id', type + '-barbEnd')\n .attr('refX', 19)\n .attr('refY', 7)\n .attr('markerWidth', 20)\n .attr('markerHeight', 14)\n .attr('markerUnits', 0)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 19,7 L9,13 L14,7 L9,1 Z');\n};\n\n// TODO rename the class diagram markers to something shape descriptive and semanitc free\nconst markers = {\n extension,\n composition,\n aggregation,\n dependency,\n point,\n circle,\n cross,\n barb\n};\nexport default insertMarkers;\n","import { select } from 'd3';\nimport { logger } from '../logger'; // eslint-disable-line\n// let vertexNode;\n// if (getConfig().flowchart.htmlLabels) {\n// // TODO: addHtmlLabel accepts a labelStyle. Do we possibly have that?\n// const node = {\n// label: vertexText.replace(/fa[lrsb]?:fa-[\\w-]+/g, s => ``)\n// };\n// vertexNode = addHtmlLabel(svg, node).node();\n// vertexNode.parentNode.removeChild(vertexNode);\n// } else {\n// const svgLabel = document.createElementNS('http://www.w3.org/2000/svg', 'text');\n// svgLabel.setAttribute('style', styles.labelStyle.replace('color:', 'fill:'));\n\n// const rows = vertexText.split(common.lineBreakRegex);\n\n// for (let j = 0; j < rows.length; j++) {\n// const tspan = document.createElementNS('http://www.w3.org/2000/svg', 'tspan');\n// tspan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\n// tspan.setAttribute('dy', '1em');\n// tspan.setAttribute('x', '1');\n// tspan.textContent = rows[j];\n// svgLabel.appendChild(tspan);\n// }\n// vertexNode = svgLabel;\n// }\nimport { getConfig } from '../config';\n\nfunction applyStyle(dom, styleFn) {\n if (styleFn) {\n dom.attr('style', styleFn);\n }\n}\n\nfunction addHtmlLabel(node) {\n // var fo = root.append('foreignObject').attr('width', '100000');\n\n // var div = fo.append('xhtml:div');\n // div.attr('xmlns', 'http://www.w3.org/1999/xhtml');\n\n // var label = node.label;\n // switch (typeof label) {\n // case 'function':\n // div.insert(label);\n // break;\n // case 'object':\n // // Currently we assume this is a DOM object.\n // div.insert(function() {\n // return label;\n // });\n // break;\n // default:\n // div.html(label);\n // }\n\n // applyStyle(div, node.labelStyle);\n // div.style('display', 'inline-block');\n // // Fix for firefox\n // div.style('white-space', 'nowrap');\n\n // var client = div.node().getBoundingClientRect();\n // fo.attr('width', client.width).attr('height', client.height);\n const fo = select(document.createElementNS('http://www.w3.org/2000/svg', 'foreignObject'));\n const div = fo.append('xhtml:div');\n\n const label = node.label;\n const labelClass = node.isNode ? 'nodeLabel' : 'edgeLabel';\n div.html('' + label + '');\n\n applyStyle(div, node.labelStyle);\n div.style('display', 'inline-block');\n // Fix for firefox\n div.style('white-space', 'nowrap');\n div.attr('xmlns', 'http://www.w3.org/1999/xhtml');\n return fo.node();\n}\n\nconst createLabel = (_vertexText, style, isTitle, isNode) => {\n let vertexText = _vertexText || '';\n if (getConfig().flowchart.htmlLabels) {\n // TODO: addHtmlLabel accepts a labelStyle. Do we possibly have that?\n vertexText = vertexText.replace(/\\\\n|\\n/g, '
');\n logger.info('vertexText' + vertexText);\n const node = {\n isNode,\n label: vertexText.replace(\n /fa[lrsb]?:fa-[\\w-]+/g,\n s => ``\n )\n };\n let vertexNode = addHtmlLabel(node);\n // vertexNode.parentNode.removeChild(vertexNode);\n return vertexNode;\n } else {\n const svgLabel = document.createElementNS('http://www.w3.org/2000/svg', 'text');\n svgLabel.setAttribute('style', style.replace('color:', 'fill:'));\n let rows = [];\n if (typeof vertexText === 'string') {\n rows = vertexText.split(/\\\\n|\\n|
/gi);\n } else if (Array.isArray(vertexText)) {\n rows = vertexText;\n } else {\n rows = [];\n }\n\n for (let j = 0; j < rows.length; j++) {\n const tspan = document.createElementNS('http://www.w3.org/2000/svg', 'tspan');\n tspan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\n tspan.setAttribute('dy', '1em');\n tspan.setAttribute('x', '0');\n if (isTitle) {\n tspan.setAttribute('class', 'title-row');\n } else {\n tspan.setAttribute('class', 'row');\n }\n tspan.textContent = rows[j].trim();\n svgLabel.appendChild(tspan);\n }\n return svgLabel;\n }\n};\n\nexport default createLabel;\n","import createLabel from '../createLabel';\nimport { getConfig } from '../../config';\nimport { select } from 'd3';\nexport const labelHelper = (parent, node, _classes, isNode) => {\n let classes;\n if (!_classes) {\n classes = 'node default';\n } else {\n classes = _classes;\n }\n // Add outer g element\n const shapeSvg = parent\n .insert('g')\n .attr('class', classes)\n .attr('id', node.id);\n\n // Create the label and insert it after the rect\n const label = shapeSvg.insert('g').attr('class', 'label');\n\n const text = label\n .node()\n .appendChild(createLabel(node.labelText, node.labelStyle, false, isNode));\n\n // Get the size of the label\n let bbox = text.getBBox();\n\n if (getConfig().flowchart.htmlLabels) {\n const div = text.children[0];\n const dv = select(text);\n bbox = div.getBoundingClientRect();\n dv.attr('width', bbox.width);\n dv.attr('height', bbox.height);\n }\n\n const halfPadding = node.padding / 2;\n\n // Center the label\n label.attr('transform', 'translate(' + -bbox.width / 2 + ', ' + -bbox.height / 2 + ')');\n\n return { shapeSvg, bbox, halfPadding, label };\n};\n\nexport const updateNodeBounds = (node, element) => {\n const bbox = element.node().getBBox();\n node.width = bbox.width;\n node.height = bbox.height;\n};\n\nexport function insertPolygonShape(parent, w, h, points) {\n return parent\n .insert('polygon', ':first-child')\n .attr(\n 'points',\n points\n .map(function(d) {\n return d.x + ',' + d.y;\n })\n .join(' ')\n )\n .attr('class', 'label-container')\n .attr('transform', 'translate(' + -w / 2 + ',' + h / 2 + ')');\n}\n","/**\n * Decorates with functions required by mermaids dagre-wrapper.\n */\nimport { logger as log } from '../logger';\nimport graphlib from 'graphlib';\n\nexport let clusterDb = {};\nlet decendants = {};\nlet parents = {};\n\nexport const clear = () => {\n decendants = {};\n parents = {};\n clusterDb = {};\n};\n\nconst isDecendant = (id, ancenstorId) => {\n // if (id === ancenstorId) return true;\n\n log.debug(\n 'In isDecendant',\n ancenstorId,\n ' ',\n id,\n ' = ',\n decendants[ancenstorId].indexOf(id) >= 0\n );\n if (decendants[ancenstorId].indexOf(id) >= 0) return true;\n\n return false;\n};\n\nconst edgeInCluster = (edge, clusterId) => {\n log.info('Decendants of ', clusterId, ' is ', decendants[clusterId]);\n log.info('Edge is ', edge);\n // Edges to/from the cluster is not in the cluster, they are in the parent\n if (edge.v === clusterId) return false;\n if (edge.w === clusterId) return false;\n\n if (!decendants[clusterId]) {\n log.debug('Tilt, ', clusterId, ',not in decendants');\n return false;\n }\n log.info('Here ');\n\n if (decendants[clusterId].indexOf(edge.v) >= 0) return true;\n if (isDecendant(edge.v, clusterId)) return true;\n if (isDecendant(edge.w, clusterId)) return true;\n if (decendants[clusterId].indexOf(edge.w) >= 0) return true;\n\n return false;\n};\n\nconst copy = (clusterId, graph, newGraph, rootId) => {\n log.info(\n 'Copying children of ',\n clusterId,\n 'root',\n rootId,\n 'data',\n graph.node(clusterId),\n rootId\n );\n const nodes = graph.children(clusterId) || [];\n\n // Include cluster node if it is not the root\n if (clusterId !== rootId) {\n nodes.push(clusterId);\n }\n\n log.debug('Copying (nodes) clusterId', clusterId, 'nodes', nodes);\n\n nodes.forEach(node => {\n if (graph.children(node).length > 0) {\n copy(node, graph, newGraph, rootId);\n } else {\n const data = graph.node(node);\n log.info('cp ', node, ' to ', rootId, ' with parent ', clusterId); //,node, data, ' parent is ', clusterId);\n newGraph.setNode(node, data);\n log.debug('Setting parent', node, graph.parent(node));\n if (rootId !== graph.parent(node)) {\n newGraph.setParent(node, graph.parent(node));\n }\n\n if (clusterId !== rootId && node !== clusterId) {\n log.debug('Setting parent', node, clusterId);\n newGraph.setParent(node, clusterId);\n } else {\n log.info('In copy ', clusterId, 'root', rootId, 'data', graph.node(clusterId), rootId);\n log.debug(\n 'Not Setting parent for node=',\n node,\n 'cluster!==rootId',\n clusterId !== rootId,\n 'node!==clusterId',\n node !== clusterId\n );\n }\n const edges = graph.edges(node);\n log.debug('Copying Edges', edges);\n edges.forEach(edge => {\n log.info('Edge', edge);\n const data = graph.edge(edge.v, edge.w, edge.name);\n log.info('Edge data', data, rootId);\n try {\n // Do not copy edges in and out of the root cluster, they belong to the parent graph\n if (edgeInCluster(edge, rootId)) {\n log.info('Copying as ', edge.v, edge.w, data, edge.name);\n newGraph.setEdge(edge.v, edge.w, data, edge.name);\n log.info('newGraph edges ', newGraph.edges(), newGraph.edge(newGraph.edges()[0]));\n } else {\n log.info(\n 'Skipping copy of edge ',\n edge.v,\n '-->',\n edge.w,\n ' rootId: ',\n rootId,\n ' clusterId:',\n clusterId\n );\n }\n } catch (e) {\n log.error(e);\n }\n });\n }\n log.debug('Removing node', node);\n graph.removeNode(node);\n });\n};\nexport const extractDecendants = (id, graph) => {\n // log.debug('Extracting ', id);\n const children = graph.children(id);\n let res = [].concat(children);\n\n for (let i = 0; i < children.length; i++) {\n parents[children[i]] = id;\n res = res.concat(extractDecendants(children[i], graph));\n }\n\n return res;\n};\n\n/**\n * Validates the graph, checking that all parent child relation points to existing nodes and that\n * edges between nodes also ia correct. When not correct the function logs the discrepancies.\n * @param {graphlib graph} g\n */\nexport const validate = graph => {\n const edges = graph.edges();\n log.trace('Edges: ', edges);\n for (let i = 0; i < edges.length; i++) {\n if (graph.children(edges[i].v).length > 0) {\n log.trace('The node ', edges[i].v, ' is part of and edge even though it has children');\n return false;\n }\n if (graph.children(edges[i].w).length > 0) {\n log.trace('The node ', edges[i].w, ' is part of and edge even though it has children');\n return false;\n }\n }\n return true;\n};\n\n/**\n * Finds a child that is not a cluster. When faking a edge between a node and a cluster.\n * @param {Finds a } id\n * @param {*} graph\n */\nexport const findNonClusterChild = (id, graph) => {\n // const node = graph.node(id);\n log.trace('Searching', id);\n // const children = graph.children(id).reverse();\n const children = graph.children(id); //.reverse();\n log.trace('Searching children of id ', id, children);\n if (children.length < 1) {\n log.trace('This is a valid node', id);\n return id;\n }\n for (let i = 0; i < children.length; i++) {\n const _id = findNonClusterChild(children[i], graph);\n if (_id) {\n log.trace('Found replacement for', id, ' => ', _id);\n return _id;\n }\n }\n};\n\nconst getAnchorId = id => {\n if (!clusterDb[id]) {\n return id;\n }\n // If the cluster has no external connections\n if (!clusterDb[id].externalConnections) {\n return id;\n }\n\n // Return the replacement node\n if (clusterDb[id]) {\n return clusterDb[id].id;\n }\n return id;\n};\n\nexport const adjustClustersAndEdges = (graph, depth) => {\n if (!graph || depth > 10) {\n log.debug('Opting out, no graph ');\n return;\n } else {\n log.debug('Opting in, graph ');\n }\n // Go through the nodes and for each cluster found, save a replacment node, this can be used when\n // faking a link to a cluster\n graph.nodes().forEach(function(id) {\n const children = graph.children(id);\n if (children.length > 0) {\n log.warn(\n 'Cluster identified',\n id,\n ' Replacement id in edges: ',\n findNonClusterChild(id, graph)\n );\n decendants[id] = extractDecendants(id, graph);\n clusterDb[id] = { id: findNonClusterChild(id, graph), clusterData: graph.node(id) };\n }\n });\n\n // Check incoming and outgoing edges for each cluster\n graph.nodes().forEach(function(id) {\n const children = graph.children(id);\n const edges = graph.edges();\n if (children.length > 0) {\n log.debug('Cluster identified', id, decendants);\n edges.forEach(edge => {\n // log.debug('Edge, decendants: ', edge, decendants[id]);\n\n // Check if any edge leaves the cluster (not the actual cluster, thats a link from the box)\n if (edge.v !== id && edge.w !== id) {\n // Any edge where either the one of the nodes is decending to the cluster but not the other\n // if (decendants[id].indexOf(edge.v) < 0 && decendants[id].indexOf(edge.w) < 0) {\n\n const d1 = isDecendant(edge.v, id);\n const d2 = isDecendant(edge.w, id);\n\n // d1 xor d2 - if either d1 is true and d2 is false or the other way around\n if (d1 ^ d2) {\n log.debug('Edge: ', edge, ' leaves cluster ', id);\n log.debug('Decendants of ', id, ': ', decendants[id]);\n clusterDb[id].externalConnections = true;\n }\n }\n });\n }\n });\n\n extractor(graph, 0);\n\n // For clusters with incoming and/or outgoing edges translate those edges to a real node\n // in the cluster inorder to fake the edge\n graph.edges().forEach(function(e) {\n const edge = graph.edge(e);\n log.trace('Edge ' + e.v + ' -> ' + e.w + ': ' + JSON.stringify(e));\n log.trace('Edge ' + e.v + ' -> ' + e.w + ': ' + JSON.stringify(graph.edge(e)));\n\n let v = e.v;\n let w = e.w;\n // Check if link is either from or to a cluster\n log.trace('Fix', clusterDb, 'ids:', e.v, e.w, 'Translateing: ', clusterDb[e.v], clusterDb[e.w]);\n if (clusterDb[e.v] || clusterDb[e.w]) {\n log.warn('Fixing and trixing - removing', e.v, e.w, e.name);\n v = getAnchorId(e.v);\n w = getAnchorId(e.w);\n graph.removeEdge(e.v, e.w, e.name);\n if (v !== e.v) edge.fromCluster = e.v;\n if (w !== e.w) edge.toCluster = e.w;\n log.warn('Replacing with', v, w, e.name);\n graph.setEdge(v, w, edge, e.name);\n }\n });\n log.warn('Adjusted Graph', graphlib.json.write(graph));\n\n log.trace(clusterDb);\n\n // Remove references to extracted cluster\n // graph.edges().forEach(edge => {\n // if (isDecendant(edge.v, clusterId) || isDecendant(edge.w, clusterId)) {\n // graph.removeEdge(edge);\n // }\n // });\n};\n\nexport const extractor = (graph, depth) => {\n log.debug('extractor - ', depth, graphlib.json.write(graph), graph.children('D'));\n if (depth > 10) {\n log.error('Bailing out');\n return;\n }\n // For clusters without incoming and/or outgoing edges, create a new cluster-node\n // containing the nodes and edges in the custer in a new graph\n // for (let i = 0;)\n let nodes = graph.nodes();\n let hasChildren = false;\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n const children = graph.children(node);\n hasChildren = hasChildren || children.length > 0;\n }\n\n if (!hasChildren) {\n log.debug('Done, no node has children', graph.nodes());\n return;\n }\n // const clusters = Object.keys(clusterDb);\n // clusters.forEach(clusterId => {\n log.debug('Nodes = ', nodes, depth);\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n\n log.debug(\n 'Extracting node',\n node,\n clusterDb,\n clusterDb[node] && !clusterDb[node].externalConnections,\n !graph.parent(node),\n graph.node(node),\n graph.children('D'),\n ' Depth ',\n depth\n );\n // Note that the node might have been removed after the Object.keys call so better check\n // that it still is in the game\n if (!clusterDb[node]) {\n // Skip if the node is not a cluster\n log.debug('Not a cluster', node, depth);\n // break;\n } else if (\n !clusterDb[node].externalConnections &&\n !graph.parent(node) &&\n graph.children(node) &&\n graph.children(node).length > 0\n ) {\n log.debug(\n 'Cluster without external connections, without a parent and with children',\n node,\n depth\n );\n\n const graphSettings = graph.graph();\n\n const clusterGraph = new graphlib.Graph({\n multigraph: true,\n compound: true\n })\n .setGraph({\n rankdir: graphSettings.rankdir === 'TB' ? 'LR' : 'TB',\n // Todo: set proper spacing\n nodesep: 50,\n ranksep: 50,\n marginx: 8,\n marginy: 8\n })\n .setDefaultEdgeLabel(function() {\n return {};\n });\n\n log.debug('Old graph before copy', graphlib.json.write(graph));\n copy(node, graph, clusterGraph, node);\n graph.setNode(node, {\n clusterNode: true,\n id: node,\n clusterData: clusterDb[node].clusterData,\n labelText: clusterDb[node].labelText,\n graph: clusterGraph\n });\n log.debug('New graph after copy', graphlib.json.write(clusterGraph));\n log.debug('Old graph after copy', graphlib.json.write(graph));\n } else {\n log.debug(\n 'Cluster ** ',\n node,\n ' **not meeting the criteria !externalConnections:',\n !clusterDb[node].externalConnections,\n ' no parent: ',\n !graph.parent(node),\n ' children ',\n graph.children(node) && graph.children(node).length > 0,\n graph.children('D'),\n depth\n );\n log.debug(clusterDb);\n }\n }\n\n nodes = graph.nodes();\n log.debug('New list of nodes', nodes);\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n const data = graph.node(node);\n log.debug(' Now next leveö', node, data);\n if (data.clusterNode) {\n extractor(data.graph, depth + 1);\n }\n }\n};\n","function intersectEllipse(node, rx, ry, point) {\n // Formulae from: http://mathworld.wolfram.com/Ellipse-LineIntersection.html\n\n var cx = node.x;\n var cy = node.y;\n\n var px = cx - point.x;\n var py = cy - point.y;\n\n var det = Math.sqrt(rx * rx * py * py + ry * ry * px * px);\n\n var dx = Math.abs((rx * ry * px) / det);\n if (point.x < cx) {\n dx = -dx;\n }\n var dy = Math.abs((rx * ry * py) / det);\n if (point.y < cy) {\n dy = -dy;\n }\n\n return { x: cx + dx, y: cy + dy };\n}\n\nexport default intersectEllipse;\n","import intersectEllipse from './intersect-ellipse';\n\nfunction intersectCircle(node, rx, point) {\n return intersectEllipse(node, rx, rx, point);\n}\n\nexport default intersectCircle;\n","/*\n * Returns the point at which two lines, p and q, intersect or returns\n * undefined if they do not intersect.\n */\nfunction intersectLine(p1, p2, q1, q2) {\n // Algorithm from J. Avro, (ed.) Graphics Gems, No 2, Morgan Kaufmann, 1994,\n // p7 and p473.\n\n var a1, a2, b1, b2, c1, c2;\n var r1, r2, r3, r4;\n var denom, offset, num;\n var x, y;\n\n // Compute a1, b1, c1, where line joining points 1 and 2 is F(x,y) = a1 x +\n // b1 y + c1 = 0.\n a1 = p2.y - p1.y;\n b1 = p1.x - p2.x;\n c1 = p2.x * p1.y - p1.x * p2.y;\n\n // Compute r3 and r4.\n r3 = a1 * q1.x + b1 * q1.y + c1;\n r4 = a1 * q2.x + b1 * q2.y + c1;\n\n // Check signs of r3 and r4. If both point 3 and point 4 lie on\n // same side of line 1, the line segments do not intersect.\n if (r3 !== 0 && r4 !== 0 && sameSign(r3, r4)) {\n return /*DONT_INTERSECT*/;\n }\n\n // Compute a2, b2, c2 where line joining points 3 and 4 is G(x,y) = a2 x + b2 y + c2 = 0\n a2 = q2.y - q1.y;\n b2 = q1.x - q2.x;\n c2 = q2.x * q1.y - q1.x * q2.y;\n\n // Compute r1 and r2\n r1 = a2 * p1.x + b2 * p1.y + c2;\n r2 = a2 * p2.x + b2 * p2.y + c2;\n\n // Check signs of r1 and r2. If both point 1 and point 2 lie\n // on same side of second line segment, the line segments do\n // not intersect.\n if (r1 !== 0 && r2 !== 0 && sameSign(r1, r2)) {\n return /*DONT_INTERSECT*/;\n }\n\n // Line segments intersect: compute intersection point.\n denom = a1 * b2 - a2 * b1;\n if (denom === 0) {\n return /*COLLINEAR*/;\n }\n\n offset = Math.abs(denom / 2);\n\n // The denom/2 is to get rounding instead of truncating. It\n // is added or subtracted to the numerator, depending upon the\n // sign of the numerator.\n num = b1 * c2 - b2 * c1;\n x = num < 0 ? (num - offset) / denom : (num + offset) / denom;\n\n num = a2 * c1 - a1 * c2;\n y = num < 0 ? (num - offset) / denom : (num + offset) / denom;\n\n return { x: x, y: y };\n}\n\nfunction sameSign(r1, r2) {\n return r1 * r2 > 0;\n}\n\nexport default intersectLine;\n","/* eslint \"no-console\": off */\n\nimport intersectLine from './intersect-line';\n\nexport default intersectPolygon;\n\n/*\n * Returns the point ({x, y}) at which the point argument intersects with the\n * node argument assuming that it has the shape specified by polygon.\n */\nfunction intersectPolygon(node, polyPoints, point) {\n var x1 = node.x;\n var y1 = node.y;\n\n var intersections = [];\n\n var minX = Number.POSITIVE_INFINITY;\n var minY = Number.POSITIVE_INFINITY;\n if (typeof polyPoints.forEach === 'function') {\n polyPoints.forEach(function(entry) {\n minX = Math.min(minX, entry.x);\n minY = Math.min(minY, entry.y);\n });\n } else {\n minX = Math.min(minX, polyPoints.x);\n minY = Math.min(minY, polyPoints.y);\n }\n\n var left = x1 - node.width / 2 - minX;\n var top = y1 - node.height / 2 - minY;\n\n for (var i = 0; i < polyPoints.length; i++) {\n var p1 = polyPoints[i];\n var p2 = polyPoints[i < polyPoints.length - 1 ? i + 1 : 0];\n var intersect = intersectLine(\n node,\n point,\n { x: left + p1.x, y: top + p1.y },\n { x: left + p2.x, y: top + p2.y }\n );\n if (intersect) {\n intersections.push(intersect);\n }\n }\n\n if (!intersections.length) {\n console.log('NO INTERSECTION FOUND, RETURN NODE CENTER', node);\n return node;\n }\n\n if (intersections.length > 1) {\n // More intersections, find the one nearest to edge end point\n intersections.sort(function(p, q) {\n var pdx = p.x - point.x;\n var pdy = p.y - point.y;\n var distp = Math.sqrt(pdx * pdx + pdy * pdy);\n\n var qdx = q.x - point.x;\n var qdy = q.y - point.y;\n var distq = Math.sqrt(qdx * qdx + qdy * qdy);\n\n return distp < distq ? -1 : distp === distq ? 0 : 1;\n });\n }\n return intersections[0];\n}\n","const intersectRect = (node, point) => {\n var x = node.x;\n var y = node.y;\n\n // Rectangle intersection algorithm from:\n // http://math.stackexchange.com/questions/108113/find-edge-between-two-boxes\n var dx = point.x - x;\n var dy = point.y - y;\n var w = node.width / 2;\n var h = node.height / 2;\n\n var sx, sy;\n if (Math.abs(dy) * w > Math.abs(dx) * h) {\n // Intersection is top or bottom of rect.\n if (dy < 0) {\n h = -h;\n }\n sx = dy === 0 ? 0 : (h * dx) / dy;\n sy = h;\n } else {\n // Intersection is left or right of rect.\n if (dx < 0) {\n w = -w;\n }\n sx = w;\n sy = dx === 0 ? 0 : (w * dy) / dx;\n }\n\n return { x: x + sx, y: y + sy };\n};\n\nexport default intersectRect;\n","/*\n * Borrowed with love from from dagrge-d3. Many thanks to cpettitt!\n */\n\nimport node from './intersect-node.js';\nimport circle from './intersect-circle.js';\nimport ellipse from './intersect-ellipse.js';\nimport polygon from './intersect-polygon.js';\nimport rect from './intersect-rect.js';\n\nexport default {\n node,\n circle,\n ellipse,\n polygon,\n rect\n};\n","import { select } from 'd3';\nimport { logger } from '../logger'; // eslint-disable-line\nimport { labelHelper, updateNodeBounds, insertPolygonShape } from './shapes/util';\nimport { getConfig } from '../config';\nimport intersect from './intersect/index.js';\nimport createLabel from './createLabel';\nimport note from './shapes/note';\n\nconst question = (parent, node) => {\n const { shapeSvg, bbox } = labelHelper(parent, node, undefined, true);\n\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const s = w + h;\n const points = [\n { x: s / 2, y: 0 },\n { x: s, y: -s / 2 },\n { x: s / 2, y: -s },\n { x: 0, y: -s / 2 }\n ];\n\n logger.info('Question main (Circle)');\n\n const questionElem = insertPolygonShape(shapeSvg, s, s, points);\n updateNodeBounds(node, questionElem);\n node.intersect = function(point) {\n logger.warn('Intersect called');\n return intersect.polygon(node, points, point);\n };\n\n return shapeSvg;\n};\n\nconst hexagon = (parent, node) => {\n const { shapeSvg, bbox } = labelHelper(parent, node, undefined, true);\n\n const f = 4;\n const h = bbox.height + node.padding;\n const m = h / f;\n const w = bbox.width + 2 * m + node.padding;\n const points = [\n { x: m, y: 0 },\n { x: w - m, y: 0 },\n { x: w, y: -h / 2 },\n { x: w - m, y: -h },\n { x: m, y: -h },\n { x: 0, y: -h / 2 }\n ];\n const hex = insertPolygonShape(shapeSvg, w, h, points);\n updateNodeBounds(node, hex);\n\n node.intersect = function(point) {\n return intersect.polygon(node, point);\n };\n\n return shapeSvg;\n};\n\nconst rect_left_inv_arrow = (parent, node) => {\n const { shapeSvg, bbox } = labelHelper(parent, node, undefined, true);\n\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: -h / 2, y: 0 },\n { x: w, y: 0 },\n { x: w, y: -h },\n { x: -h / 2, y: -h },\n { x: 0, y: -h / 2 }\n ];\n\n const el = insertPolygonShape(shapeSvg, w, h, points);\n updateNodeBounds(node, el);\n\n node.intersect = function(point) {\n return intersect.polygon(node, point);\n };\n\n return shapeSvg;\n};\nconst lean_right = (parent, node) => {\n const { shapeSvg, bbox } = labelHelper(parent, node, undefined, true);\n\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: (-2 * h) / 6, y: 0 },\n { x: w - h / 6, y: 0 },\n { x: w + (2 * h) / 6, y: -h },\n { x: h / 6, y: -h }\n ];\n\n const el = insertPolygonShape(shapeSvg, w, h, points);\n updateNodeBounds(node, el);\n\n node.intersect = function(point) {\n return intersect.polygon(node, point);\n };\n\n return shapeSvg;\n};\n\nconst lean_left = (parent, node) => {\n const { shapeSvg, bbox } = labelHelper(parent, node, undefined, true);\n\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: (2 * h) / 6, y: 0 },\n { x: w + h / 6, y: 0 },\n { x: w - (2 * h) / 6, y: -h },\n { x: -h / 6, y: -h }\n ];\n\n const el = insertPolygonShape(shapeSvg, w, h, points);\n updateNodeBounds(node, el);\n\n node.intersect = function(point) {\n return intersect.polygon(node, point);\n };\n\n return shapeSvg;\n};\n\nconst trapezoid = (parent, node) => {\n const { shapeSvg, bbox } = labelHelper(parent, node, undefined, true);\n\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: (-2 * h) / 6, y: 0 },\n { x: w + (2 * h) / 6, y: 0 },\n { x: w - h / 6, y: -h },\n { x: h / 6, y: -h }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n updateNodeBounds(node, el);\n\n node.intersect = function(point) {\n return intersect.polygon(node, point);\n };\n\n return shapeSvg;\n};\n\nconst inv_trapezoid = (parent, node) => {\n const { shapeSvg, bbox } = labelHelper(parent, node, undefined, true);\n\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: h / 6, y: 0 },\n { x: w - h / 6, y: 0 },\n { x: w + (2 * h) / 6, y: -h },\n { x: (-2 * h) / 6, y: -h }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n updateNodeBounds(node, el);\n\n node.intersect = function(point) {\n return intersect.polygon(node, point);\n };\n\n return shapeSvg;\n};\nconst rect_right_inv_arrow = (parent, node) => {\n const { shapeSvg, bbox } = labelHelper(parent, node, undefined, true);\n\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: 0, y: 0 },\n { x: w + h / 2, y: 0 },\n { x: w, y: -h / 2 },\n { x: w + h / 2, y: -h },\n { x: 0, y: -h }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n updateNodeBounds(node, el);\n\n node.intersect = function(point) {\n return intersect.polygon(node, point);\n };\n\n return shapeSvg;\n};\nconst cylinder = (parent, node) => {\n const { shapeSvg, bbox } = labelHelper(parent, node, undefined, true);\n\n const w = bbox.width + node.padding;\n const rx = w / 2;\n const ry = rx / (2.5 + w / 50);\n const h = bbox.height + ry + node.padding;\n\n const shape =\n 'M 0,' +\n ry +\n ' a ' +\n rx +\n ',' +\n ry +\n ' 0,0,0 ' +\n w +\n ' 0 a ' +\n rx +\n ',' +\n ry +\n ' 0,0,0 ' +\n -w +\n ' 0 l 0,' +\n h +\n ' a ' +\n rx +\n ',' +\n ry +\n ' 0,0,0 ' +\n w +\n ' 0 l 0,' +\n -h;\n\n const el = shapeSvg\n .attr('label-offset-y', ry)\n .insert('path', ':first-child')\n .attr('d', shape)\n .attr('transform', 'translate(' + -w / 2 + ',' + -(h / 2 + ry) + ')');\n\n updateNodeBounds(node, el);\n\n node.intersect = function(point) {\n const pos = intersect.rect(node, point);\n const x = pos.x - node.x;\n\n if (\n rx != 0 &&\n (Math.abs(x) < node.width / 2 ||\n (Math.abs(x) == node.width / 2 && Math.abs(pos.y - node.y) > node.height / 2 - ry))\n ) {\n // ellipsis equation: x*x / a*a + y*y / b*b = 1\n // solve for y to get adjustion value for pos.y\n let y = ry * ry * (1 - (x * x) / (rx * rx));\n if (y != 0) y = Math.sqrt(y);\n y = ry - y;\n if (point.y - node.y > 0) y = -y;\n\n pos.y += y;\n }\n\n return pos;\n };\n\n return shapeSvg;\n};\n\nconst rect = (parent, node) => {\n const { shapeSvg, bbox, halfPadding } = labelHelper(parent, node, 'node ' + node.classes, true);\n\n logger.trace('Classes = ', node.classes);\n // add the rect\n const rect = shapeSvg.insert('rect', ':first-child');\n\n rect\n .attr('class', 'basic label-container')\n .attr('rx', node.rx)\n .attr('ry', node.ry)\n .attr('x', -bbox.width / 2 - halfPadding)\n .attr('y', -bbox.height / 2 - halfPadding)\n .attr('width', bbox.width + node.padding)\n .attr('height', bbox.height + node.padding);\n\n updateNodeBounds(node, rect);\n\n node.intersect = function(point) {\n return intersect.rect(node, point);\n };\n\n return shapeSvg;\n};\nconst rectWithTitle = (parent, node) => {\n // const { shapeSvg, bbox, halfPadding } = labelHelper(parent, node, 'node ' + node.classes);\n\n let classes;\n if (!node.classes) {\n classes = 'node default';\n } else {\n classes = 'node ' + node.classes;\n }\n // Add outer g element\n const shapeSvg = parent\n .insert('g')\n .attr('class', classes)\n .attr('id', node.id);\n\n // Create the title label and insert it after the rect\n const rect = shapeSvg.insert('rect', ':first-child');\n // const innerRect = shapeSvg.insert('rect');\n const innerLine = shapeSvg.insert('line');\n\n const label = shapeSvg.insert('g').attr('class', 'label');\n\n const text2 = node.labelText.flat();\n logger.info('Label text', text2[0]);\n\n const text = label.node().appendChild(createLabel(text2[0], node.labelStyle, true, true));\n let bbox;\n if (getConfig().flowchart.htmlLabels) {\n const div = text.children[0];\n const dv = select(text);\n bbox = div.getBoundingClientRect();\n dv.attr('width', bbox.width);\n dv.attr('height', bbox.height);\n }\n logger.info('Text 2', text2);\n const textRows = text2.slice(1, text2.length);\n let titleBox = text.getBBox();\n const descr = label\n .node()\n .appendChild(createLabel(textRows.join('
'), node.labelStyle, true, true));\n\n if (getConfig().flowchart.htmlLabels) {\n const div = descr.children[0];\n const dv = select(descr);\n bbox = div.getBoundingClientRect();\n dv.attr('width', bbox.width);\n dv.attr('height', bbox.height);\n }\n // bbox = label.getBBox();\n // logger.info(descr);\n const halfPadding = node.padding / 2;\n select(descr).attr(\n 'transform',\n 'translate( ' +\n // (titleBox.width - bbox.width) / 2 +\n (bbox.width > titleBox.width ? 0 : (titleBox.width - bbox.width) / 2) +\n ', ' +\n (titleBox.height + halfPadding + 5) +\n ')'\n );\n select(text).attr(\n 'transform',\n 'translate( ' +\n // (titleBox.width - bbox.width) / 2 +\n (bbox.width < titleBox.width ? 0 : -(titleBox.width - bbox.width) / 2) +\n ', ' +\n 0 +\n ')'\n );\n // Get the size of the label\n\n // Bounding box for title and text\n bbox = label.node().getBBox();\n\n // Center the label\n label.attr(\n 'transform',\n 'translate(' + -bbox.width / 2 + ', ' + (-bbox.height / 2 - halfPadding + 3) + ')'\n );\n\n rect\n .attr('class', 'outer title-state')\n .attr('x', -bbox.width / 2 - halfPadding)\n .attr('y', -bbox.height / 2 - halfPadding)\n .attr('width', bbox.width + node.padding)\n .attr('height', bbox.height + node.padding);\n\n innerLine\n .attr('class', 'divider')\n .attr('x1', -bbox.width / 2 - halfPadding)\n .attr('x2', bbox.width / 2 + halfPadding)\n .attr('y1', -bbox.height / 2 - halfPadding + titleBox.height + halfPadding)\n .attr('y2', -bbox.height / 2 - halfPadding + titleBox.height + halfPadding);\n\n updateNodeBounds(node, rect);\n\n node.intersect = function(point) {\n return intersect.rect(node, point);\n };\n\n return shapeSvg;\n};\n\nconst stadium = (parent, node) => {\n const { shapeSvg, bbox } = labelHelper(parent, node, undefined, true);\n\n const h = bbox.height + node.padding;\n const w = bbox.width + h / 4 + node.padding;\n\n // add the rect\n const rect = shapeSvg\n .insert('rect', ':first-child')\n .attr('rx', h / 2)\n .attr('ry', h / 2)\n .attr('x', -w / 2)\n .attr('y', -h / 2)\n .attr('width', w)\n .attr('height', h);\n\n updateNodeBounds(node, rect);\n\n node.intersect = function(point) {\n return intersect.rect(node, point);\n };\n\n return shapeSvg;\n};\nconst circle = (parent, node) => {\n const { shapeSvg, bbox, halfPadding } = labelHelper(parent, node, undefined, true);\n const circle = shapeSvg.insert('circle', ':first-child');\n\n // center the circle around its coordinate\n circle\n .attr('rx', node.rx)\n .attr('ry', node.ry)\n .attr('r', bbox.width / 2 + halfPadding)\n .attr('width', bbox.width + node.padding)\n .attr('height', bbox.height + node.padding);\n\n logger.info('Circle main');\n\n updateNodeBounds(node, circle);\n\n node.intersect = function(point) {\n logger.info('Circle intersect', node, bbox.width / 2 + halfPadding, point);\n return intersect.circle(node, bbox.width / 2 + halfPadding, point);\n };\n\n return shapeSvg;\n};\n\nconst subroutine = (parent, node) => {\n const { shapeSvg, bbox } = labelHelper(parent, node, undefined, true);\n\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: 0, y: 0 },\n { x: w, y: 0 },\n { x: w, y: -h },\n { x: 0, y: -h },\n { x: 0, y: 0 },\n { x: -8, y: 0 },\n { x: w + 8, y: 0 },\n { x: w + 8, y: -h },\n { x: -8, y: -h },\n { x: -8, y: 0 }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n updateNodeBounds(node, el);\n\n node.intersect = function(point) {\n return intersect.polygon(node, point);\n };\n\n return shapeSvg;\n};\n\nconst start = (parent, node) => {\n const shapeSvg = parent\n .insert('g')\n .attr('class', 'node default')\n .attr('id', node.id);\n const circle = shapeSvg.insert('circle', ':first-child');\n\n // center the circle around its coordinate\n circle\n .attr('class', 'state-start')\n .attr('r', 7)\n .attr('width', 14)\n .attr('height', 14);\n\n updateNodeBounds(node, circle);\n\n node.intersect = function(point) {\n return intersect.circle(node, 7, point);\n };\n\n return shapeSvg;\n};\n\nconst forkJoin = (parent, node, dir) => {\n const shapeSvg = parent\n .insert('g')\n .attr('class', 'node default')\n .attr('id', node.id);\n\n let width = 70;\n let height = 10;\n\n if (dir === 'LR') {\n width = 10;\n height = 70;\n }\n\n const shape = shapeSvg\n .append('rect')\n .style('stroke', 'black')\n .style('fill', 'black')\n .attr('x', (-1 * width) / 2)\n .attr('y', (-1 * height) / 2)\n .attr('width', width)\n .attr('height', height)\n .attr('class', 'fork-join');\n\n updateNodeBounds(node, shape);\n node.height = node.height + node.padding / 2;\n node.width = node.width + node.padding / 2;\n node.intersect = function(point) {\n return intersect.rect(node, point);\n };\n\n return shapeSvg;\n};\n\nconst end = (parent, node) => {\n const shapeSvg = parent\n .insert('g')\n .attr('class', 'node default')\n .attr('id', node.id);\n const innerCircle = shapeSvg.insert('circle', ':first-child');\n const circle = shapeSvg.insert('circle', ':first-child');\n\n circle\n .attr('class', 'state-start')\n .attr('r', 7)\n .attr('width', 14)\n .attr('height', 14);\n\n innerCircle\n .attr('class', 'state-end')\n .attr('r', 5)\n .attr('width', 10)\n .attr('height', 10);\n\n updateNodeBounds(node, circle);\n\n node.intersect = function(point) {\n return intersect.circle(node, 7, point);\n };\n\n return shapeSvg;\n};\n\nconst class_box = (parent, node) => {\n const halfPadding = node.padding / 2;\n const rowPadding = 4;\n const lineHeight = 8;\n\n let classes;\n if (!node.classes) {\n classes = 'node default';\n } else {\n classes = 'node ' + node.classes;\n }\n // Add outer g element\n const shapeSvg = parent\n .insert('g')\n .attr('class', classes)\n .attr('id', node.id);\n\n // Create the title label and insert it after the rect\n const rect = shapeSvg.insert('rect', ':first-child');\n const topLine = shapeSvg.insert('line');\n const bottomLine = shapeSvg.insert('line');\n let maxWidth = 0;\n let maxHeight = rowPadding;\n\n const labelContainer = shapeSvg.insert('g').attr('class', 'label');\n let verticalPos = 0;\n const hasInterface = node.classData.annotations && node.classData.annotations[0];\n\n // 1. Create the labels\n const interfaceLabel = labelContainer\n .node()\n .appendChild(createLabel(node.classData.annotations[0], node.labelStyle, true, true));\n const interfaceBBox = interfaceLabel.getBBox();\n if (node.classData.annotations[0]) {\n maxHeight += interfaceBBox.height + rowPadding;\n maxWidth += interfaceBBox.width;\n }\n\n const classTitleLabel = labelContainer\n .node()\n .appendChild(createLabel(node.labelText, node.labelStyle, true, true));\n const classTitleBBox = classTitleLabel.getBBox();\n maxHeight += classTitleBBox.height + rowPadding;\n if (classTitleBBox.width > maxWidth) {\n maxWidth = classTitleBBox.width;\n }\n const classAttributes = [];\n node.classData.members.forEach(str => {\n const lbl = labelContainer.node().appendChild(createLabel(str, node.labelStyle, true, true));\n const bbox = lbl.getBBox();\n if (bbox.width > maxWidth) {\n maxWidth = bbox.width;\n }\n maxHeight += bbox.height + rowPadding;\n classAttributes.push(lbl);\n });\n\n const classMethods = [];\n node.classData.methods.forEach(str => {\n const lbl = labelContainer.node().appendChild(createLabel(str, node.labelStyle, true, true));\n const bbox = lbl.getBBox();\n if (bbox.width > maxWidth) {\n maxWidth = bbox.width;\n }\n maxHeight += bbox.height + rowPadding;\n\n classMethods.push(lbl);\n });\n\n maxHeight += lineHeight;\n\n // 2. Position the labels\n\n // position the interface label\n if (hasInterface) {\n select(interfaceLabel).attr(\n 'transform',\n 'translate( ' +\n -(maxWidth + node.padding - interfaceBBox.width / 2) / 2 +\n ', ' +\n (-1 * maxHeight) / 2 +\n ')'\n );\n verticalPos = interfaceBBox.height + rowPadding;\n }\n // Positin the class title label\n let diffX = (maxWidth - classTitleBBox.width) / 2;\n select(classTitleLabel).attr(\n 'transform',\n 'translate( ' +\n ((-1 * maxWidth) / 2 + diffX) +\n ', ' +\n ((-1 * maxHeight) / 2 + verticalPos) +\n ')'\n );\n verticalPos += classTitleBBox.height + rowPadding;\n\n topLine\n .attr('class', 'divider')\n .attr('x1', -maxWidth / 2 - halfPadding)\n .attr('x2', maxWidth / 2 + halfPadding)\n .attr('y1', -maxHeight / 2 - halfPadding + lineHeight + verticalPos)\n .attr('y2', -maxHeight / 2 - halfPadding + lineHeight + verticalPos);\n\n verticalPos += lineHeight;\n\n classAttributes.forEach(lbl => {\n select(lbl).attr(\n 'transform',\n 'translate( ' +\n -maxWidth / 2 +\n ', ' +\n ((-1 * maxHeight) / 2 + verticalPos + lineHeight / 2) +\n ')'\n );\n verticalPos += classTitleBBox.height + rowPadding;\n });\n\n bottomLine\n .attr('class', 'divider')\n .attr('x1', -maxWidth / 2 - halfPadding)\n .attr('x2', maxWidth / 2 + halfPadding)\n .attr('y1', -maxHeight / 2 - halfPadding + lineHeight + verticalPos)\n .attr('y2', -maxHeight / 2 - halfPadding + lineHeight + verticalPos);\n\n verticalPos += lineHeight;\n\n classMethods.forEach(lbl => {\n select(lbl).attr(\n 'transform',\n 'translate( ' + -maxWidth / 2 + ', ' + ((-1 * maxHeight) / 2 + verticalPos) + ')'\n );\n verticalPos += classTitleBBox.height + rowPadding;\n });\n //\n let bbox;\n if (getConfig().flowchart.htmlLabels) {\n const div = interfaceLabel.children[0];\n const dv = select(interfaceLabel);\n bbox = div.getBoundingClientRect();\n dv.attr('width', bbox.width);\n dv.attr('height', bbox.height);\n }\n // bbox = labelContainer.getBBox();\n\n // logger.info('Text 2', text2);\n // const textRows = text2.slice(1, text2.length);\n // let titleBox = text.getBBox();\n // const descr = label\n // .node()\n // .appendChild(createLabel(textRows.join('
'), node.labelStyle, true, true));\n\n // if (getConfig().flowchart.htmlLabels) {\n // const div = descr.children[0];\n // const dv = select(descr);\n // bbox = div.getBoundingClientRect();\n // dv.attr('width', bbox.width);\n // dv.attr('height', bbox.height);\n // }\n // // bbox = label.getBBox();\n // // logger.info(descr);\n // select(descr).attr(\n // 'transform',\n // 'translate( ' +\n // // (titleBox.width - bbox.width) / 2 +\n // (bbox.width > titleBox.width ? 0 : (titleBox.width - bbox.width) / 2) +\n // ', ' +\n // (titleBox.height + halfPadding + 5) +\n // ')'\n // );\n // select(text).attr(\n // 'transform',\n // 'translate( ' +\n // // (titleBox.width - bbox.width) / 2 +\n // (bbox.width < titleBox.width ? 0 : -(titleBox.width - bbox.width) / 2) +\n // ', ' +\n // 0 +\n // ')'\n // );\n // // Get the size of the label\n\n // // Bounding box for title and text\n // bbox = label.node().getBBox();\n\n // // Center the label\n // label.attr(\n // 'transform',\n // 'translate(' + -bbox.width / 2 + ', ' + (-bbox.height / 2 - halfPadding + 3) + ')'\n // );\n\n rect\n .attr('class', 'outer title-state')\n .attr('x', -maxWidth / 2 - halfPadding)\n .attr('y', -(maxHeight / 2) - halfPadding)\n .attr('width', maxWidth + node.padding)\n .attr('height', maxHeight + node.padding);\n\n // innerLine\n // .attr('class', 'divider')\n // .attr('x1', -bbox.width / 2 - halfPadding)\n // .attr('x2', bbox.width / 2 + halfPadding)\n // .attr('y1', -bbox.height / 2 - halfPadding + titleBox.height + halfPadding)\n // .attr('y2', -bbox.height / 2 - halfPadding + titleBox.height + halfPadding);\n\n updateNodeBounds(node, rect);\n\n node.intersect = function(point) {\n return intersect.rect(node, point);\n };\n\n return shapeSvg;\n};\n\nconst shapes = {\n question,\n rect,\n rectWithTitle,\n circle,\n stadium,\n hexagon,\n rect_left_inv_arrow,\n lean_right,\n lean_left,\n trapezoid,\n inv_trapezoid,\n rect_right_inv_arrow,\n cylinder,\n start,\n end,\n note,\n subroutine,\n fork: forkJoin,\n join: forkJoin,\n class_box\n};\n\nlet nodeElems = {};\n\nexport const insertNode = (elem, node, dir) => {\n nodeElems[node.id] = shapes[node.shape](elem, node, dir);\n};\nexport const setNodeElem = (elem, node) => {\n nodeElems[node.id] = elem;\n};\nexport const clear = () => {\n nodeElems = {};\n};\n\nexport const positionNode = node => {\n const el = nodeElems[node.id];\n logger.trace(\n 'Transforming node',\n node,\n 'translate(' + (node.x - node.width / 2 - 5) + ', ' + (node.y - node.height / 2 - 5) + ')'\n );\n const padding = 8;\n if (node.clusterNode) {\n el.attr(\n 'transform',\n 'translate(' +\n (node.x - node.width / 2 - padding) +\n ', ' +\n (node.y - node.height / 2 - padding) +\n ')'\n );\n } else {\n el.attr('transform', 'translate(' + node.x + ', ' + node.y + ')');\n }\n};\n","import { updateNodeBounds, labelHelper } from './util';\nimport { logger } from '../../logger'; // eslint-disable-line\nimport intersect from '../intersect/index.js';\n\nconst note = (parent, node) => {\n const { shapeSvg, bbox, halfPadding } = labelHelper(parent, node, 'node ' + node.classes, true);\n\n logger.info('Classes = ', node.classes);\n // add the rect\n const rect = shapeSvg.insert('rect', ':first-child');\n\n rect\n .attr('rx', node.rx)\n .attr('ry', node.ry)\n .attr('x', -bbox.width / 2 - halfPadding)\n .attr('y', -bbox.height / 2 - halfPadding)\n .attr('width', bbox.width + node.padding)\n .attr('height', bbox.height + node.padding);\n\n updateNodeBounds(node, rect);\n\n node.intersect = function(point) {\n return intersect.rect(node, point);\n };\n\n return shapeSvg;\n};\n\nexport default note;\n","import intersectRect from './intersect/intersect-rect';\nimport { logger as log } from '../logger'; // eslint-disable-line\nimport createLabel from './createLabel';\nimport { select } from 'd3';\nimport { getConfig } from '../config';\n\nconst rect = (parent, node) => {\n log.trace('Creating subgraph rect for ', node.id, node);\n\n // Add outer g element\n const shapeSvg = parent\n .insert('g')\n .attr('class', 'cluster')\n .attr('id', node.id);\n\n // add the rect\n const rect = shapeSvg.insert('rect', ':first-child');\n\n // Create the label and insert it after the rect\n const label = shapeSvg.insert('g').attr('class', 'cluster-label');\n\n const text = label\n .node()\n .appendChild(createLabel(node.labelText, node.labelStyle, undefined, true));\n\n // Get the size of the label\n let bbox = text.getBBox();\n\n if (getConfig().flowchart.htmlLabels) {\n const div = text.children[0];\n const dv = select(text);\n bbox = div.getBoundingClientRect();\n dv.attr('width', bbox.width);\n dv.attr('height', bbox.height);\n }\n\n const padding = 0 * node.padding;\n const halfPadding = padding / 2;\n\n log.trace('Data ', node, JSON.stringify(node));\n // center the rect around its coordinate\n rect\n .attr('rx', node.rx)\n .attr('ry', node.ry)\n .attr('x', node.x - node.width / 2 - halfPadding)\n .attr('y', node.y - node.height / 2 - halfPadding)\n .attr('width', node.width + padding)\n .attr('height', node.height + padding);\n\n // Center the label\n label.attr(\n 'transform',\n 'translate(' +\n (node.x - bbox.width / 2) +\n ', ' +\n (node.y - node.height / 2 - node.padding / 3 + 3) +\n ')'\n );\n\n const rectBox = rect.node().getBBox();\n node.width = rectBox.width;\n node.height = rectBox.height;\n\n node.intersect = function(point) {\n return intersectRect(node, point);\n };\n\n return shapeSvg;\n};\n\n/**\n * Non visiable cluster where the note is group with its\n */\nconst noteGroup = (parent, node) => {\n // Add outer g element\n const shapeSvg = parent\n .insert('g')\n .attr('class', 'note-cluster')\n .attr('id', node.id);\n\n // add the rect\n const rect = shapeSvg.insert('rect', ':first-child');\n\n const padding = 0 * node.padding;\n const halfPadding = padding / 2;\n\n // center the rect around its coordinate\n rect\n .attr('rx', node.rx)\n .attr('ry', node.ry)\n .attr('x', node.x - node.width / 2 - halfPadding)\n .attr('y', node.y - node.height / 2 - halfPadding)\n .attr('width', node.width + padding)\n .attr('height', node.height + padding)\n .attr('fill', 'none');\n\n const rectBox = rect.node().getBBox();\n node.width = rectBox.width;\n node.height = rectBox.height;\n\n node.intersect = function(point) {\n return intersectRect(node, point);\n };\n\n return shapeSvg;\n};\nconst roundedWithTitle = (parent, node) => {\n // Add outer g element\n const shapeSvg = parent\n .insert('g')\n .attr('class', node.classes)\n .attr('id', node.id);\n\n // add the rect\n const rect = shapeSvg.insert('rect', ':first-child');\n\n // Create the label and insert it after the rect\n const label = shapeSvg.insert('g').attr('class', 'cluster-label');\n const innerRect = shapeSvg.append('rect');\n\n const text = label\n .node()\n .appendChild(createLabel(node.labelText, node.labelStyle, undefined, true));\n\n // Get the size of the label\n let bbox = text.getBBox();\n if (getConfig().flowchart.htmlLabels) {\n const div = text.children[0];\n const dv = select(text);\n bbox = div.getBoundingClientRect();\n dv.attr('width', bbox.width);\n dv.attr('height', bbox.height);\n }\n bbox = text.getBBox();\n const padding = 0 * node.padding;\n const halfPadding = padding / 2;\n\n // center the rect around its coordinate\n rect\n .attr('class', 'outer')\n .attr('x', node.x - node.width / 2 - halfPadding)\n .attr('y', node.y - node.height / 2 - halfPadding)\n .attr('width', node.width + padding)\n .attr('height', node.height + padding);\n innerRect\n .attr('class', 'inner')\n .attr('x', node.x - node.width / 2 - halfPadding)\n .attr('y', node.y - node.height / 2 - halfPadding + bbox.height - 1)\n .attr('width', node.width + padding)\n .attr('height', node.height + padding - bbox.height - 3);\n\n // Center the label\n label.attr(\n 'transform',\n 'translate(' +\n (node.x - bbox.width / 2) +\n ', ' +\n (node.y - node.height / 2 - node.padding / 3 + (getConfig().flowchart.htmlLabels ? 5 : 3)) +\n ')'\n );\n\n const rectBox = rect.node().getBBox();\n node.width = rectBox.width;\n node.height = rectBox.height;\n\n node.intersect = function(point) {\n return intersectRect(node, point);\n };\n\n return shapeSvg;\n};\n\nconst divider = (parent, node) => {\n // Add outer g element\n const shapeSvg = parent\n .insert('g')\n .attr('class', node.classes)\n .attr('id', node.id);\n\n // add the rect\n const rect = shapeSvg.insert('rect', ':first-child');\n\n const padding = 0 * node.padding;\n const halfPadding = padding / 2;\n\n // center the rect around its coordinate\n rect\n .attr('class', 'divider')\n .attr('x', node.x - node.width / 2 - halfPadding)\n .attr('y', node.y - node.height / 2)\n .attr('width', node.width + padding)\n .attr('height', node.height + padding);\n\n const rectBox = rect.node().getBBox();\n node.width = rectBox.width;\n node.height = rectBox.height;\n\n node.intersect = function(point) {\n return intersectRect(node, point);\n };\n\n return shapeSvg;\n};\n\nconst shapes = { rect, roundedWithTitle, noteGroup, divider };\n\nlet clusterElems = {};\n\nexport const insertCluster = (elem, node) => {\n log.trace('Inserting cluster');\n const shape = node.shape || 'rect';\n clusterElems[node.id] = shapes[shape](elem, node);\n};\nexport const getClusterTitleWidth = (elem, node) => {\n const label = createLabel(node.labelText, node.labelStyle, undefined, true);\n elem.node().appendChild(label);\n const width = label.getBBox().width;\n elem.node().removeChild(label);\n return width;\n};\n\nexport const clear = () => {\n clusterElems = {};\n};\n\nexport const positionCluster = node => {\n log.info('Position cluster');\n const el = clusterElems[node.id];\n\n el.attr('transform', 'translate(' + node.x + ', ' + node.y + ')');\n};\n","import { logger } from '../logger'; // eslint-disable-line\nimport createLabel from './createLabel';\nimport { line, curveBasis, select } from 'd3';\nimport { getConfig } from '../config';\nimport utils from '../utils';\n// import { calcLabelPosition } from '../utils';\n\nlet edgeLabels = {};\n\nexport const clear = () => {\n edgeLabels = {};\n};\n\nexport const insertEdgeLabel = (elem, edge) => {\n // Create the actual text element\n const labelElement = createLabel(edge.label, edge.labelStyle);\n\n // Create outer g, edgeLabel, this will be positioned after graph layout\n const edgeLabel = elem.insert('g').attr('class', 'edgeLabel');\n\n // Create inner g, label, this will be positioned now for centering the text\n const label = edgeLabel.insert('g').attr('class', 'label');\n label.node().appendChild(labelElement);\n\n // Center the label\n let bbox = labelElement.getBBox();\n if (getConfig().flowchart.htmlLabels) {\n const div = labelElement.children[0];\n const dv = select(labelElement);\n bbox = div.getBoundingClientRect();\n dv.attr('width', bbox.width);\n dv.attr('height', bbox.height);\n }\n label.attr('transform', 'translate(' + -bbox.width / 2 + ', ' + -bbox.height / 2 + ')');\n\n // Make element accessible by id for positioning\n edgeLabels[edge.id] = edgeLabel;\n\n // Update the abstract data of the edge with the new information about its width and height\n edge.width = bbox.width;\n edge.height = bbox.height;\n};\n\nexport const positionEdgeLabel = (edge, points) => {\n logger.info('Moving label', edge.id, edge.label, edgeLabels[edge.id]);\n if (edge.label) {\n const el = edgeLabels[edge.id];\n let x = edge.x;\n let y = edge.y;\n if (points) {\n // debugger;\n const pos = utils.calcLabelPosition(points);\n x = pos.x;\n y = pos.y;\n }\n el.attr('transform', 'translate(' + x + ', ' + y + ')');\n }\n};\n\n// const getRelationType = function(type) {\n// switch (type) {\n// case stateDb.relationType.AGGREGATION:\n// return 'aggregation';\n// case stateDb.relationType.EXTENSION:\n// return 'extension';\n// case stateDb.relationType.COMPOSITION:\n// return 'composition';\n// case stateDb.relationType.DEPENDENCY:\n// return 'dependency';\n// }\n// };\n\nconst outsideNode = (node, point) => {\n // logger.warn('Checking bounds ', node, point);\n const x = node.x;\n const y = node.y;\n const dx = Math.abs(point.x - x);\n const dy = Math.abs(point.y - y);\n const w = node.width / 2;\n const h = node.height / 2;\n if (dx >= w || dy >= h) {\n return true;\n }\n return false;\n};\n\nexport const intersection = (node, outsidePoint, insidePoint) => {\n logger.warn('intersection calc o:', outsidePoint, ' i:', insidePoint, node);\n const x = node.x;\n const y = node.y;\n\n const dx = Math.abs(x - insidePoint.x);\n const w = node.width / 2;\n let r = insidePoint.x < outsidePoint.x ? w - dx : w + dx;\n const h = node.height / 2;\n\n const edges = {\n x1: x - w,\n x2: x + w,\n y1: y - h,\n y2: y + h\n };\n\n if (\n outsidePoint.x === edges.x1 ||\n outsidePoint.x === edges.x2 ||\n outsidePoint.y === edges.y1 ||\n outsidePoint.y === edges.y2\n ) {\n logger.warn('calc equals on edge');\n return outsidePoint;\n }\n\n const Q = Math.abs(outsidePoint.y - insidePoint.y);\n const R = Math.abs(outsidePoint.x - insidePoint.x);\n // log.warn();\n if (Math.abs(y - outsidePoint.y) * w > Math.abs(x - outsidePoint.x) * h) { // eslint-disable-line\n // Intersection is top or bottom of rect.\n // let q = insidePoint.y < outsidePoint.y ? outsidePoint.y - h - y : y - h - outsidePoint.y;\n let q = insidePoint.y < outsidePoint.y ? outsidePoint.y - h - y : y - h - outsidePoint.y;\n r = (R * q) / Q;\n const res = {\n x: insidePoint.x < outsidePoint.x ? insidePoint.x + R - r : insidePoint.x - r,\n y: outsidePoint.y + q\n };\n logger.warn(`topp/bott calc, Q ${Q}, q ${q}, R ${R}, r ${r}`, res);\n\n return res;\n } else {\n // Intersection onn sides of rect\n // q = (Q * r) / R;\n // q = 2;\n // r = (R * q) / Q;\n if (insidePoint.x < outsidePoint.x) {\n r = outsidePoint.x - w - x;\n } else {\n // r = outsidePoint.x - w - x;\n r = x - w - outsidePoint.x;\n }\n let q = (q = (Q * r) / R);\n logger.warn(`sides calc, Q ${Q}, q ${q}, R ${R}, r ${r}`, {\n x: insidePoint.x < outsidePoint.x ? insidePoint.x + R - r : insidePoint.x + dx - w,\n y: insidePoint.y < outsidePoint.y ? insidePoint.y + q : insidePoint.y - q\n });\n\n return {\n x: insidePoint.x < outsidePoint.x ? insidePoint.x + R - r : insidePoint.x + dx - w,\n y: insidePoint.y < outsidePoint.y ? insidePoint.y + q : insidePoint.y - q\n };\n }\n};\n\n//(edgePaths, e, edge, clusterDb, diagramtype, graph)\nexport const insertEdge = function(elem, e, edge, clusterDb, diagramType, graph) {\n let points = edge.points;\n let pointsHasChanged = false;\n const tail = graph.node(e.v);\n var head = graph.node(e.w);\n\n if (head.intersect && tail.intersect) {\n points = points.slice(1, edge.points.length - 1);\n points.unshift(tail.intersect(points[0]));\n logger.info(\n 'Last point',\n points[points.length - 1],\n head,\n head.intersect(points[points.length - 1])\n );\n points.push(head.intersect(points[points.length - 1]));\n }\n if (edge.toCluster) {\n logger.trace('edge', edge);\n logger.trace('to cluster', clusterDb[edge.toCluster]);\n points = [];\n let lastPointOutside;\n let isInside = false;\n edge.points.forEach(point => {\n const node = clusterDb[edge.toCluster].node;\n\n if (!outsideNode(node, point) && !isInside) {\n logger.trace('inside', edge.toCluster, point, lastPointOutside);\n\n // First point inside the rect\n const inter = intersection(node, lastPointOutside, point);\n\n let pointPresent = false;\n points.forEach(p => {\n pointPresent = pointPresent || (p.x === inter.x && p.y === inter.y);\n });\n // if (!pointPresent) {\n if (!points.find(e => e.x === inter.x && e.y === inter.y)) {\n points.push(inter);\n } else {\n logger.warn('no intersect', inter, points);\n }\n isInside = true;\n } else {\n if (!isInside) points.push(point);\n }\n lastPointOutside = point;\n });\n pointsHasChanged = true;\n }\n\n if (edge.fromCluster) {\n logger.trace('edge', edge);\n logger.warn('from cluster', clusterDb[edge.fromCluster]);\n const updatedPoints = [];\n let lastPointOutside;\n let isInside = false;\n for (let i = points.length - 1; i >= 0; i--) {\n const point = points[i];\n const node = clusterDb[edge.fromCluster].node;\n\n if (!outsideNode(node, point) && !isInside) {\n logger.warn('inside', edge.fromCluster, point, node);\n\n // First point inside the rect\n const insterection = intersection(node, lastPointOutside, point);\n // logger.trace('intersect', intersection(node, lastPointOutside, point));\n updatedPoints.unshift(insterection);\n // points.push(insterection);\n isInside = true;\n } else {\n // at the outside\n logger.trace('Outside point', point);\n if (!isInside) updatedPoints.unshift(point);\n }\n lastPointOutside = point;\n }\n points = updatedPoints;\n pointsHasChanged = true;\n }\n\n // The data for our line\n const lineData = points.filter(p => !Number.isNaN(p.y));\n\n // This is the accessor function we talked about above\n const lineFunction = line()\n .x(function(d) {\n return d.x;\n })\n .y(function(d) {\n return d.y;\n })\n .curve(curveBasis);\n\n // Contruct stroke classes based on properties\n let strokeClasses;\n switch (edge.thickness) {\n case 'normal':\n strokeClasses = 'edge-thickness-normal';\n break;\n case 'thick':\n strokeClasses = 'edge-thickness-thick';\n break;\n default:\n strokeClasses = '';\n }\n switch (edge.pattern) {\n case 'solid':\n strokeClasses += ' edge-pattern-solid';\n break;\n case 'dotted':\n strokeClasses += ' edge-pattern-dotted';\n break;\n case 'dashed':\n strokeClasses += ' edge-pattern-dashed';\n break;\n }\n\n const svgPath = elem\n .append('path')\n .attr('d', lineFunction(lineData))\n .attr('id', edge.id)\n .attr('class', ' ' + strokeClasses + (edge.classes ? ' ' + edge.classes : ''));\n\n // DEBUG code, adds a red circle at each edge coordinate\n // edge.points.forEach(point => {\n // elem\n // .append('circle')\n // .style('stroke', 'red')\n // .style('fill', 'red')\n // .attr('r', 1)\n // .attr('cx', point.x)\n // .attr('cy', point.y);\n // });\n\n let url = '';\n if (getConfig().state.arrowMarkerAbsolute) {\n url =\n window.location.protocol +\n '//' +\n window.location.host +\n window.location.pathname +\n window.location.search;\n url = url.replace(/\\(/g, '\\\\(');\n url = url.replace(/\\)/g, '\\\\)');\n }\n logger.info('arrowTypeStart', edge.arrowTypeStart);\n logger.info('arrowTypeEnd', edge.arrowTypeEnd);\n\n switch (edge.arrowTypeStart) {\n case 'arrow_cross':\n svgPath.attr('marker-start', 'url(' + url + '#' + diagramType + '-crossStart' + ')');\n break;\n case 'arrow_point':\n svgPath.attr('marker-start', 'url(' + url + '#' + diagramType + '-pointStart' + ')');\n break;\n case 'arrow_barb':\n svgPath.attr('marker-start', 'url(' + url + '#' + diagramType + '-barbStart' + ')');\n break;\n case 'arrow_circle':\n svgPath.attr('marker-start', 'url(' + url + '#' + diagramType + '-circleStart' + ')');\n break;\n case 'aggregation':\n svgPath.attr('marker-start', 'url(' + url + '#' + diagramType + '-aggregationStart' + ')');\n break;\n case 'extension':\n svgPath.attr('marker-start', 'url(' + url + '#' + diagramType + '-extensionStart' + ')');\n break;\n case 'composition':\n svgPath.attr('marker-start', 'url(' + url + '#' + diagramType + '-compositionStart' + ')');\n break;\n case 'dependency':\n svgPath.attr('marker-start', 'url(' + url + '#' + diagramType + '-dependencyStart' + ')');\n break;\n default:\n }\n switch (edge.arrowTypeEnd) {\n case 'arrow_cross':\n svgPath.attr('marker-end', 'url(' + url + '#' + diagramType + '-crossEnd' + ')');\n break;\n case 'arrow_point':\n svgPath.attr('marker-end', 'url(' + url + '#' + diagramType + '-pointEnd' + ')');\n break;\n case 'arrow_barb':\n svgPath.attr('marker-end', 'url(' + url + '#' + diagramType + '-barbEnd' + ')');\n break;\n case 'arrow_circle':\n svgPath.attr('marker-end', 'url(' + url + '#' + diagramType + '-circleEnd' + ')');\n break;\n case 'aggregation':\n svgPath.attr('marker-end', 'url(' + url + '#' + diagramType + '-aggregationEnd' + ')');\n break;\n case 'extension':\n svgPath.attr('marker-end', 'url(' + url + '#' + diagramType + '-extensionEnd' + ')');\n break;\n case 'composition':\n svgPath.attr('marker-end', 'url(' + url + '#' + diagramType + '-compositionEnd' + ')');\n break;\n case 'dependency':\n svgPath.attr('marker-end', 'url(' + url + '#' + diagramType + '-dependencyEnd' + ')');\n break;\n default:\n }\n\n if (pointsHasChanged) {\n return points;\n }\n};\n","import dagre from 'dagre';\nimport graphlib from 'graphlib';\nimport insertMarkers from './markers';\nimport { updateNodeBounds } from './shapes/util';\nimport {\n clear as clearGraphlib,\n clusterDb,\n adjustClustersAndEdges,\n findNonClusterChild\n} from './mermaid-graphlib';\nimport { insertNode, positionNode, clear as clearNodes, setNodeElem } from './nodes';\nimport { insertCluster, clear as clearClusters } from './clusters';\nimport { insertEdgeLabel, positionEdgeLabel, insertEdge, clear as clearEdges } from './edges';\nimport { logger as log } from '../logger';\n\nconst recursiveRender = (_elem, graph, diagramtype, parentCluster) => {\n log.info('Graph in recursive render:', graphlib.json.write(graph), parentCluster);\n const dir = graph.graph().rankdir;\n log.warn('Dir in recursive render - dir:', dir);\n\n const elem = _elem.insert('g').attr('class', 'root'); // eslint-disable-line\n if (!graph.nodes()) {\n log.info('No nodes found for', graph);\n } else {\n log.info('Recursive render', graph.nodes());\n }\n if (graph.edges().length > 0) {\n log.info('Recursive edges', graph.edge(graph.edges()[0]));\n }\n const clusters = elem.insert('g').attr('class', 'clusters'); // eslint-disable-line\n const edgePaths = elem.insert('g').attr('class', 'edgePaths');\n const edgeLabels = elem.insert('g').attr('class', 'edgeLabels');\n const nodes = elem.insert('g').attr('class', 'nodes');\n\n // Insert nodes, this will insert them into the dom and each node will get a size. The size is updated\n // to the abstract node and is later used by dagre for the layout\n graph.nodes().forEach(function(v) {\n const node = graph.node(v);\n if (typeof parentCluster !== 'undefined') {\n const data = JSON.parse(JSON.stringify(parentCluster.clusterData));\n // data.clusterPositioning = true;\n log.info('Setting data for cluster', data);\n graph.setNode(parentCluster.id, data);\n graph.setParent(v, parentCluster.id, data);\n }\n log.info('(Insert) Node ' + v + ': ' + JSON.stringify(graph.node(v)));\n if (node && node.clusterNode) {\n // const children = graph.children(v);\n log.info('Cluster identified', v, node, graph.node(v));\n const newEl = recursiveRender(nodes, node.graph, diagramtype, graph.node(v));\n updateNodeBounds(node, newEl);\n setNodeElem(newEl, node);\n\n log.warn('Recursive render complete', newEl, node);\n } else {\n if (graph.children(v).length > 0) {\n // This is a cluster but not to be rendered recusively\n // Render as before\n log.info('Cluster - the non recursive path', v, node.id, node, graph);\n log.info(findNonClusterChild(node.id, graph));\n clusterDb[node.id] = { id: findNonClusterChild(node.id, graph), node };\n // insertCluster(clusters, graph.node(v));\n } else {\n log.info('Node - the non recursive path', v, node.id, node);\n insertNode(nodes, graph.node(v), dir);\n }\n }\n });\n\n // Insert labels, this will insert them into the dom so that the width can be calculated\n // Also figure out which edges point to/from clusters and adjust them accordingly\n // Edges from/to clusters really points to the first child in the cluster.\n // TODO: pick optimal child in the cluster to us as link anchor\n graph.edges().forEach(function(e) {\n const edge = graph.edge(e.v, e.w, e.name);\n log.info('Edge ' + e.v + ' -> ' + e.w + ': ' + JSON.stringify(e));\n log.info('Edge ' + e.v + ' -> ' + e.w + ': ', e, ' ', JSON.stringify(graph.edge(e)));\n\n // Check if link is either from or to a cluster\n log.info('Fix', clusterDb, 'ids:', e.v, e.w, 'Translateing: ', clusterDb[e.v], clusterDb[e.w]);\n insertEdgeLabel(edgeLabels, edge);\n });\n\n graph.edges().forEach(function(e) {\n log.info('Edge ' + e.v + ' -> ' + e.w + ': ' + JSON.stringify(e));\n });\n log.info('#############################################');\n log.info('### Layout ###');\n log.info('#############################################');\n log.info(graph);\n dagre.layout(graph);\n log.info('Graph after layout:', graphlib.json.write(graph));\n // Move the nodes to the correct place\n graph.nodes().forEach(function(v) {\n const node = graph.node(v);\n log.info('Position ' + v + ': ' + JSON.stringify(graph.node(v)));\n log.info(\n 'Position ' + v + ': (' + node.x,\n ',' + node.y,\n ') width: ',\n node.width,\n ' height: ',\n node.height\n );\n if (node && node.clusterNode) {\n // clusterDb[node.id].node = node;\n\n positionNode(node);\n } else {\n // Non cluster node\n if (graph.children(v).length > 0) {\n // A cluster in the non-recurive way\n // positionCluster(node);\n insertCluster(clusters, node);\n clusterDb[node.id].node = node;\n } else {\n positionNode(node);\n }\n }\n });\n\n // Move the edge labels to the correct place after layout\n graph.edges().forEach(function(e) {\n const edge = graph.edge(e);\n log.info('Edge ' + e.v + ' -> ' + e.w + ': ' + JSON.stringify(edge), edge);\n\n const updatedPath = insertEdge(edgePaths, e, edge, clusterDb, diagramtype, graph);\n positionEdgeLabel(edge, updatedPath);\n });\n\n return elem;\n};\n\nexport const render = (elem, graph, markers, diagramtype, id) => {\n insertMarkers(elem, markers, diagramtype, id);\n clearNodes();\n clearEdges();\n clearClusters();\n clearGraphlib();\n\n log.warn('Graph before:', graphlib.json.write(graph));\n adjustClustersAndEdges(graph);\n log.warn('Graph after:', graphlib.json.write(graph));\n log.warn('Graph ever after:', graph.graph());\n recursiveRender(elem, graph, diagramtype);\n};\n\n// const shapeDefinitions = {};\n// export const addShape = ({ shapeType: fun }) => {\n// shapeDefinitions[shapeType] = fun;\n// };\n\n// const arrowDefinitions = {};\n// export const addArrow = ({ arrowType: fun }) => {\n// arrowDefinitions[arrowType] = fun;\n// };\n","import graphlib from 'graphlib';\nimport { select, curveLinear, selectAll } from 'd3';\n\nimport flowDb from './flowDb';\nimport flow from './parser/flow';\nimport { getConfig } from '../../config';\n\nimport { render } from '../../dagre-wrapper/index.js';\nimport addHtmlLabel from 'dagre-d3/lib/label/add-html-label.js';\nimport { logger } from '../../logger';\nimport common from '../common/common';\nimport { interpolateToCurve, getStylesFromArray } from '../../utils';\n\nconst conf = {};\nexport const setConf = function(cnf) {\n const keys = Object.keys(cnf);\n for (let i = 0; i < keys.length; i++) {\n conf[keys[i]] = cnf[keys[i]];\n }\n};\n\n/**\n * Function that adds the vertices found during parsing to the graph to be rendered.\n * @param vert Object containing the vertices.\n * @param g The graph that is to be drawn.\n */\nexport const addVertices = function(vert, g, svgId) {\n const svg = select(`[id=\"${svgId}\"]`);\n const keys = Object.keys(vert);\n\n // Iterate through each item in the vertex object (containing all the vertices found) in the graph definition\n keys.forEach(function(id) {\n const vertex = vert[id];\n\n /**\n * Variable for storing the classes for the vertex\n * @type {string}\n */\n let classStr = 'default';\n if (vertex.classes.length > 0) {\n classStr = vertex.classes.join(' ');\n }\n\n const styles = getStylesFromArray(vertex.styles);\n\n // Use vertex id as text in the box if no text is provided by the graph definition\n let vertexText = vertex.text !== undefined ? vertex.text : vertex.id;\n\n // We create a SVG label, either by delegating to addHtmlLabel or manually\n let vertexNode;\n if (getConfig().flowchart.htmlLabels) {\n // TODO: addHtmlLabel accepts a labelStyle. Do we possibly have that?\n const node = {\n label: vertexText.replace(\n /fa[lrsb]?:fa-[\\w-]+/g,\n s => ``\n )\n };\n vertexNode = addHtmlLabel(svg, node).node();\n vertexNode.parentNode.removeChild(vertexNode);\n } else {\n const svgLabel = document.createElementNS('http://www.w3.org/2000/svg', 'text');\n svgLabel.setAttribute('style', styles.labelStyle.replace('color:', 'fill:'));\n\n const rows = vertexText.split(common.lineBreakRegex);\n\n for (let j = 0; j < rows.length; j++) {\n const tspan = document.createElementNS('http://www.w3.org/2000/svg', 'tspan');\n tspan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\n tspan.setAttribute('dy', '1em');\n tspan.setAttribute('x', '1');\n tspan.textContent = rows[j];\n svgLabel.appendChild(tspan);\n }\n vertexNode = svgLabel;\n }\n\n let radious = 0;\n let _shape = '';\n // Set the shape based parameters\n switch (vertex.type) {\n case 'round':\n radious = 5;\n _shape = 'rect';\n break;\n case 'square':\n _shape = 'rect';\n break;\n case 'diamond':\n _shape = 'question';\n break;\n case 'hexagon':\n _shape = 'hexagon';\n break;\n case 'odd':\n _shape = 'rect_left_inv_arrow';\n break;\n case 'lean_right':\n _shape = 'lean_right';\n break;\n case 'lean_left':\n _shape = 'lean_left';\n break;\n case 'trapezoid':\n _shape = 'trapezoid';\n break;\n case 'inv_trapezoid':\n _shape = 'inv_trapezoid';\n break;\n case 'odd_right':\n _shape = 'rect_left_inv_arrow';\n break;\n case 'circle':\n _shape = 'circle';\n break;\n case 'ellipse':\n _shape = 'ellipse';\n break;\n case 'stadium':\n _shape = 'stadium';\n break;\n case 'subroutine':\n _shape = 'subroutine';\n break;\n case 'cylinder':\n _shape = 'cylinder';\n break;\n case 'group':\n _shape = 'rect';\n break;\n default:\n _shape = 'rect';\n }\n // Add the node\n g.setNode(vertex.id, {\n labelStyle: styles.labelStyle,\n shape: _shape,\n labelText: vertexText,\n rx: radious,\n ry: radious,\n class: classStr,\n style: styles.style,\n id: vertex.id,\n width: vertex.type === 'group' ? 500 : undefined,\n type: vertex.type,\n padding: getConfig().flowchart.padding\n });\n\n logger.info('setNode', {\n labelStyle: styles.labelStyle,\n shape: _shape,\n labelText: vertexText,\n rx: radious,\n ry: radious,\n class: classStr,\n style: styles.style,\n id: vertex.id,\n width: vertex.type === 'group' ? 500 : undefined,\n type: vertex.type,\n padding: getConfig().flowchart.padding\n });\n });\n};\n\n/**\n * Add edges to graph based on parsed graph defninition\n * @param {Object} edges The edges to add to the graph\n * @param {Object} g The graph object\n */\nexport const addEdges = function(edges, g) {\n let cnt = 0;\n\n let defaultStyle;\n let defaultLabelStyle;\n\n if (typeof edges.defaultStyle !== 'undefined') {\n const defaultStyles = getStylesFromArray(edges.defaultStyle);\n defaultStyle = defaultStyles.style;\n defaultLabelStyle = defaultStyles.labelStyle;\n }\n\n edges.forEach(function(edge) {\n cnt++;\n\n // Identify Link\n var linkId = 'L-' + edge.start + '-' + edge.end;\n var linkNameStart = 'LS-' + edge.start;\n var linkNameEnd = 'LE-' + edge.end;\n\n const edgeData = {};\n //edgeData.id = 'id' + cnt;\n\n // Set link type for rendering\n if (edge.type === 'arrow_open') {\n edgeData.arrowhead = 'none';\n } else {\n edgeData.arrowhead = 'normal';\n }\n\n // Check of arrow types, placed here in order not to break old rendering\n edgeData.arrowTypeStart = 'arrow_open';\n edgeData.arrowTypeEnd = 'arrow_open';\n\n /* eslint-disable no-fallthrough */\n switch (edge.type) {\n case 'double_arrow_cross':\n edgeData.arrowTypeStart = 'arrow_cross';\n case 'arrow_cross':\n edgeData.arrowTypeEnd = 'arrow_cross';\n break;\n case 'double_arrow_point':\n edgeData.arrowTypeStart = 'arrow_point';\n case 'arrow_point':\n edgeData.arrowTypeEnd = 'arrow_point';\n break;\n case 'double_arrow_circle':\n edgeData.arrowTypeStart = 'arrow_circle';\n case 'arrow_circle':\n edgeData.arrowTypeEnd = 'arrow_circle';\n break;\n }\n\n // logger.info('apa', edgeData, edge);\n // edgeData.arrowTypeStart = edge.arrowTypeStart;\n // edgeData.arrowTypeStart = edge.arrowTypeStart;\n // edgeData.arrowType = edgeData.arrowTypeEnd;\n // logger.info('apa', edgeData, edge);\n\n let style = '';\n let labelStyle = '';\n\n if (typeof edge.style !== 'undefined') {\n const styles = getStylesFromArray(edge.style);\n style = styles.style;\n labelStyle = styles.labelStyle;\n } else {\n switch (edge.stroke) {\n case 'normal':\n style = 'fill:none';\n if (typeof defaultStyle !== 'undefined') {\n style = defaultStyle;\n }\n if (typeof defaultLabelStyle !== 'undefined') {\n labelStyle = defaultLabelStyle;\n }\n edgeData.thickness = 'normal';\n edgeData.pattern = 'solid';\n break;\n case 'dotted':\n edgeData.thickness = 'normal';\n edgeData.pattern = 'dotted';\n break;\n case 'thick':\n edgeData.thickness = 'thick';\n edgeData.pattern = 'solid';\n break;\n }\n }\n\n edgeData.style = style;\n edgeData.labelStyle = labelStyle;\n\n if (typeof edge.interpolate !== 'undefined') {\n edgeData.curve = interpolateToCurve(edge.interpolate, curveLinear);\n } else if (typeof edges.defaultInterpolate !== 'undefined') {\n edgeData.curve = interpolateToCurve(edges.defaultInterpolate, curveLinear);\n } else {\n edgeData.curve = interpolateToCurve(conf.curve, curveLinear);\n }\n\n if (typeof edge.text === 'undefined') {\n if (typeof edge.style !== 'undefined') {\n edgeData.arrowheadStyle = 'fill: #333';\n }\n } else {\n edgeData.arrowheadStyle = 'fill: #333';\n edgeData.labelpos = 'c';\n\n if (getConfig().flowchart.htmlLabels && false) { // eslint-disable-line\n edgeData.labelType = 'html';\n edgeData.label = `${edge.text}`;\n } else {\n edgeData.labelType = 'text';\n edgeData.label = edge.text.replace(common.lineBreakRegex, '\\n');\n\n if (typeof edge.style === 'undefined') {\n edgeData.style = edgeData.style || 'stroke: #333; stroke-width: 1.5px;fill:none';\n }\n\n edgeData.labelStyle = edgeData.labelStyle.replace('color:', 'fill:');\n }\n }\n\n edgeData.id = linkId;\n edgeData.classes = 'flowchart-link ' + linkNameStart + ' ' + linkNameEnd;\n\n // Add the edge to the graph\n g.setEdge(edge.start, edge.end, edgeData, cnt);\n });\n};\n\n/**\n * Returns the all the styles from classDef statements in the graph definition.\n * @returns {object} classDef styles\n */\nexport const getClasses = function(text) {\n logger.info('Extracting classes');\n flowDb.clear();\n const parser = flow.parser;\n parser.yy = flowDb;\n\n try {\n // Parse the graph definition\n parser.parse(text);\n } catch (e) {\n return;\n }\n\n return flowDb.getClasses();\n};\n\n/**\n * Draws a flowchart in the tag with id: id based on the graph definition in text.\n * @param text\n * @param id\n */\n\nexport const draw = function(text, id) {\n logger.info('Drawing flowchart');\n flowDb.clear();\n const parser = flow.parser;\n parser.yy = flowDb;\n\n // Parse the graph definition\n // try {\n parser.parse(text);\n // } catch (err) {\n // logger.debug('Parsing failed');\n // }\n\n // Fetch the default direction, use TD if none was found\n let dir = flowDb.getDirection();\n if (typeof dir === 'undefined') {\n dir = 'TD';\n }\n\n const conf = getConfig().flowchart;\n const nodeSpacing = conf.nodeSpacing || 50;\n const rankSpacing = conf.rankSpacing || 50;\n\n // Create the input mermaid.graph\n const g = new graphlib.Graph({\n multigraph: true,\n compound: true\n })\n .setGraph({\n rankdir: dir,\n nodesep: nodeSpacing,\n ranksep: rankSpacing,\n marginx: 8,\n marginy: 8\n })\n .setDefaultEdgeLabel(function() {\n return {};\n });\n\n let subG;\n const subGraphs = flowDb.getSubGraphs();\n logger.info('Subgraphs - ', subGraphs);\n for (let i = subGraphs.length - 1; i >= 0; i--) {\n subG = subGraphs[i];\n logger.info('Subgraph - ', subG);\n flowDb.addVertex(subG.id, subG.title, 'group', undefined, subG.classes);\n }\n\n // Fetch the verices/nodes and edges/links from the parsed graph definition\n const vert = flowDb.getVertices();\n\n const edges = flowDb.getEdges();\n\n logger.info(edges);\n let i = 0;\n for (i = subGraphs.length - 1; i >= 0; i--) {\n subG = subGraphs[i];\n\n selectAll('cluster').append('text');\n\n for (let j = 0; j < subG.nodes.length; j++) {\n g.setParent(subG.nodes[j], subG.id);\n }\n }\n addVertices(vert, g, id);\n addEdges(edges, g);\n\n // Add custom shapes\n // flowChartShapes.addToRenderV2(addShape);\n\n // Set up an SVG group so that we can translate the final graph.\n const svg = select(`[id=\"${id}\"]`);\n\n // Run the renderer. This is what draws the final graph.\n const element = select('#' + id + ' g');\n render(element, g, ['point', 'circle', 'cross'], 'flowchart', id);\n // dagre.layout(g);\n\n element.selectAll('g.node').attr('title', function() {\n return flowDb.getTooltip(this.id);\n });\n\n const padding = conf.diagramPadding;\n const svgBounds = svg.node().getBBox();\n const width = svgBounds.width + padding * 2;\n const height = svgBounds.height + padding * 2;\n logger.debug(\n `new ViewBox 0 0 ${width} ${height}`,\n `translate(${padding - g._label.marginx}, ${padding - g._label.marginy})`\n );\n\n if (conf.useMaxWidth) {\n svg.attr('width', '100%');\n svg.attr('style', `max-width: ${width}px;`);\n } else {\n svg.attr('height', height);\n svg.attr('width', width);\n }\n\n svg.attr('viewBox', `0 0 ${width} ${height}`);\n svg\n .select('g')\n .attr('transform', `translate(${padding - g._label.marginx}, ${padding - svgBounds.y})`);\n\n // Index nodes\n flowDb.indexNodes('subGraph' + i);\n\n // // reposition labels\n // for (i = 0; i < subGraphs.length; i++) {\n // subG = subGraphs[i];\n\n // if (subG.title !== 'undefined') {\n // const clusterRects = document.querySelectorAll('#' + id + ' [id=\"' + subG.id + '\"] rect');\n // const clusterEl = document.querySelectorAll('#' + id + ' [id=\"' + subG.id + '\"]');\n\n // const xPos = clusterRects[0].x.baseVal.value;\n // const yPos = clusterRects[0].y.baseVal.value;\n // const width = clusterRects[0].width.baseVal.value;\n // const cluster = d3.select(clusterEl[0]);\n // const te = cluster.select('.label');\n // te.attr('transform', `translate(${xPos + width / 2}, ${yPos + 14})`);\n // te.attr('id', id + 'Text');\n\n // for (let j = 0; j < subG.classes.length; j++) {\n // clusterEl[0].classList.add(subG.classes[j]);\n // }\n // }\n // }\n\n // Add label rects for non html labels\n if (!conf.htmlLabels) {\n const labels = document.querySelectorAll('[id=\"' + id + '\"] .edgeLabel .label');\n for (let k = 0; k < labels.length; k++) {\n const label = labels[k];\n\n // Get dimensions of label\n const dim = label.getBBox();\n\n const rect = document.createElementNS('http://www.w3.org/2000/svg', 'rect');\n rect.setAttribute('rx', 0);\n rect.setAttribute('ry', 0);\n rect.setAttribute('width', dim.width);\n rect.setAttribute('height', dim.height);\n rect.setAttribute('style', 'fill:#e8e8e8;');\n\n label.insertBefore(rect, label.firstChild);\n }\n }\n\n // If node has a link, wrap it in an anchor SVG object.\n const keys = Object.keys(vert);\n keys.forEach(function(key) {\n const vertex = vert[key];\n\n if (vertex.link) {\n const node = select('#' + id + ' [id=\"' + key + '\"]');\n if (node) {\n const link = document.createElementNS('http://www.w3.org/2000/svg', 'a');\n link.setAttributeNS('http://www.w3.org/2000/svg', 'class', vertex.classes.join(' '));\n link.setAttributeNS('http://www.w3.org/2000/svg', 'href', vertex.link);\n link.setAttributeNS('http://www.w3.org/2000/svg', 'rel', 'noopener');\n\n const linkNode = node.insert(function() {\n return link;\n }, ':first-child');\n\n const shape = node.select('.label-container');\n if (shape) {\n linkNode.append(function() {\n return shape.node();\n });\n }\n\n const label = node.select('.label');\n if (label) {\n linkNode.append(function() {\n return label.node();\n });\n }\n }\n }\n });\n};\n\nexport default {\n setConf,\n addVertices,\n addEdges,\n getClasses,\n draw\n};\n","import common from '../common/common';\n\nexport const drawRect = function(elem, rectData) {\n const rectElem = elem.append('rect');\n rectElem.attr('x', rectData.x);\n rectElem.attr('y', rectData.y);\n rectElem.attr('fill', rectData.fill);\n rectElem.attr('stroke', rectData.stroke);\n rectElem.attr('width', rectData.width);\n rectElem.attr('height', rectData.height);\n rectElem.attr('rx', rectData.rx);\n rectElem.attr('ry', rectData.ry);\n\n if (typeof rectData.class !== 'undefined') {\n rectElem.attr('class', rectData.class);\n }\n\n return rectElem;\n};\n\nexport const drawText = function(elem, textData) {\n let prevTextHeight = 0,\n textHeight = 0;\n const lines = textData.wrap\n ? textData.text.split(common.lineBreakRegex)\n : [textData.text.replace(common.lineBreakRegex, ' ')];\n\n let textElems = [];\n let dy = 0;\n let yfunc = () => textData.y;\n if (\n typeof textData.valign !== 'undefined' &&\n typeof textData.textMargin !== 'undefined' &&\n textData.textMargin > 0\n ) {\n switch (textData.valign) {\n case 'top':\n case 'start':\n yfunc = () => Math.round(textData.y + textData.textMargin);\n break;\n case 'middle':\n case 'center':\n yfunc = () =>\n Math.round(textData.y + (prevTextHeight + textHeight + textData.textMargin) / 2);\n break;\n case 'bottom':\n case 'end':\n yfunc = () =>\n Math.round(\n textData.y +\n (prevTextHeight + textHeight + 2 * textData.textMargin) -\n textData.textMargin\n );\n break;\n }\n }\n if (\n typeof textData.anchor !== 'undefined' &&\n typeof textData.textMargin !== 'undefined' &&\n typeof textData.width !== 'undefined'\n ) {\n switch (textData.anchor) {\n case 'left':\n case 'start':\n textData.x = Math.round(textData.x + textData.textMargin);\n textData.anchor = 'start';\n textData.dominantBaseline = 'text-after-edge';\n textData.alignmentBaseline = 'middle';\n break;\n case 'middle':\n case 'center':\n textData.x = Math.round(textData.x + textData.width / 2);\n textData.anchor = 'middle';\n textData.dominantBaseline = 'middle';\n textData.alignmentBaseline = 'middle';\n break;\n case 'right':\n case 'end':\n textData.x = Math.round(textData.x + textData.width - textData.textMargin);\n textData.anchor = 'end';\n textData.dominantBaseline = 'text-before-edge';\n textData.alignmentBaseline = 'middle';\n break;\n }\n }\n for (let i = 0; i < lines.length; i++) {\n let line = lines[i];\n if (\n typeof textData.textMargin !== 'undefined' &&\n textData.textMargin === 0 &&\n typeof textData.fontSize !== 'undefined'\n ) {\n dy = i * textData.fontSize;\n }\n\n const textElem = elem.append('text');\n textElem.attr('x', textData.x);\n textElem.attr('y', yfunc());\n if (typeof textData.anchor !== 'undefined') {\n textElem\n .attr('text-anchor', textData.anchor)\n .attr('dominant-baseline', textData.dominantBaseline)\n .attr('alignment-baseline', textData.alignmentBaseline);\n }\n if (typeof textData.fontFamily !== 'undefined') {\n textElem.style('font-family', textData.fontFamily);\n }\n if (typeof textData.fontSize !== 'undefined') {\n textElem.style('font-size', textData.fontSize);\n }\n if (typeof textData.fontWeight !== 'undefined') {\n textElem.style('font-weight', textData.fontWeight);\n }\n if (typeof textData.fill !== 'undefined') {\n textElem.attr('fill', textData.fill);\n }\n if (typeof textData.class !== 'undefined') {\n textElem.attr('class', textData.class);\n }\n if (typeof textData.dy !== 'undefined') {\n textElem.attr('dy', textData.dy);\n } else if (dy !== 0) {\n textElem.attr('dy', dy);\n }\n\n if (textData.tspan) {\n const span = textElem.append('tspan');\n span.attr('x', textData.x);\n if (typeof textData.fill !== 'undefined') {\n span.attr('fill', textData.fill);\n }\n span.text(line);\n } else {\n textElem.text(line);\n }\n if (\n typeof textData.valign !== 'undefined' &&\n typeof textData.textMargin !== 'undefined' &&\n textData.textMargin > 0\n ) {\n textHeight += (textElem._groups || textElem)[0][0].getBBox().height;\n prevTextHeight = textHeight;\n }\n\n textElems.push(textElem);\n }\n\n return textElems;\n};\n\nexport const drawLabel = function(elem, txtObject) {\n function genPoints(x, y, width, height, cut) {\n return (\n x +\n ',' +\n y +\n ' ' +\n (x + width) +\n ',' +\n y +\n ' ' +\n (x + width) +\n ',' +\n (y + height - cut) +\n ' ' +\n (x + width - cut * 1.2) +\n ',' +\n (y + height) +\n ' ' +\n x +\n ',' +\n (y + height)\n );\n }\n const polygon = elem.append('polygon');\n polygon.attr('points', genPoints(txtObject.x, txtObject.y, txtObject.width, txtObject.height, 7));\n polygon.attr('class', 'labelBox');\n\n txtObject.y = txtObject.y + txtObject.height / 2;\n\n drawText(elem, txtObject);\n return polygon;\n};\n\nlet actorCnt = -1;\n/**\n * Draws an actor in the diagram with the attached line\n * @param elem - The diagram we'll draw to.\n * @param actor - The actor to draw.\n * @param conf - drawText implementation discriminator object\n */\nexport const drawActor = function(elem, actor, conf) {\n const center = actor.x + actor.width / 2;\n\n const g = elem.append('g');\n if (actor.y === 0) {\n actorCnt++;\n g.append('line')\n .attr('id', 'actor' + actorCnt)\n .attr('x1', center)\n .attr('y1', 5)\n .attr('x2', center)\n .attr('y2', 2000)\n .attr('class', 'actor-line')\n .attr('stroke-width', '0.5px')\n .attr('stroke', '#999');\n }\n\n const rect = getNoteRect();\n rect.x = actor.x;\n rect.y = actor.y;\n rect.fill = '#eaeaea';\n rect.width = actor.width;\n rect.height = actor.height;\n rect.class = 'actor';\n rect.rx = 3;\n rect.ry = 3;\n drawRect(g, rect);\n\n _drawTextCandidateFunc(conf)(\n actor.description,\n g,\n rect.x,\n rect.y,\n rect.width,\n rect.height,\n { class: 'actor' },\n conf\n );\n};\n\nexport const anchorElement = function(elem) {\n return elem.append('g');\n};\n/**\n * Draws an activation in the diagram\n * @param elem - element to append activation rect.\n * @param bounds - activation box bounds.\n * @param verticalPos - precise y cooridnate of bottom activation box edge.\n * @param conf - sequence diagram config object.\n * @param actorActivations - number of activations on the actor.\n */\nexport const drawActivation = function(elem, bounds, verticalPos, conf, actorActivations) {\n const rect = getNoteRect();\n const g = bounds.anchored;\n rect.x = bounds.startx;\n rect.y = bounds.starty;\n rect.class = 'activation' + (actorActivations % 3); // Will evaluate to 0, 1 or 2\n rect.width = bounds.stopx - bounds.startx;\n rect.height = verticalPos - bounds.starty;\n drawRect(g, rect);\n};\n\n/**\n * Draws a loop in the diagram\n * @param elem - elemenet to append the loop to.\n * @param loopModel - loopModel of the given loop.\n * @param labelText - Text within the loop.\n * @param conf - diagrom configuration\n */\nexport const drawLoop = function(elem, loopModel, labelText, conf) {\n const {\n boxMargin,\n boxTextMargin,\n labelBoxHeight,\n labelBoxWidth,\n messageFontFamily: fontFamily,\n messageFontSize: fontSize,\n messageFontWeight: fontWeight\n } = conf;\n const g = elem.append('g');\n const drawLoopLine = function(startx, starty, stopx, stopy) {\n return g\n .append('line')\n .attr('x1', startx)\n .attr('y1', starty)\n .attr('x2', stopx)\n .attr('y2', stopy)\n .attr('class', 'loopLine');\n };\n drawLoopLine(loopModel.startx, loopModel.starty, loopModel.stopx, loopModel.starty);\n drawLoopLine(loopModel.stopx, loopModel.starty, loopModel.stopx, loopModel.stopy);\n drawLoopLine(loopModel.startx, loopModel.stopy, loopModel.stopx, loopModel.stopy);\n drawLoopLine(loopModel.startx, loopModel.starty, loopModel.startx, loopModel.stopy);\n if (typeof loopModel.sections !== 'undefined') {\n loopModel.sections.forEach(function(item) {\n drawLoopLine(loopModel.startx, item.y, loopModel.stopx, item.y).style(\n 'stroke-dasharray',\n '3, 3'\n );\n });\n }\n\n let txt = getTextObj();\n txt.text = labelText;\n txt.x = loopModel.startx;\n txt.y = loopModel.starty;\n txt.fontFamily = fontFamily;\n txt.fontSize = fontSize;\n txt.fontWeight = fontWeight;\n txt.anchor = 'middle';\n txt.valign = 'middle';\n txt.tspan = false;\n txt.width = labelBoxWidth || 50;\n txt.height = labelBoxHeight || 20;\n txt.textMargin = boxTextMargin;\n txt.class = 'labelText';\n\n drawLabel(g, txt);\n txt = getTextObj();\n txt.text = loopModel.title;\n txt.x = loopModel.startx + labelBoxWidth / 2 + (loopModel.stopx - loopModel.startx) / 2;\n txt.y = loopModel.starty + boxMargin + boxTextMargin;\n txt.anchor = 'middle';\n txt.valign = 'middle';\n txt.textMargin = boxTextMargin;\n txt.class = 'loopText';\n txt.fontFamily = fontFamily;\n txt.fontSize = fontSize;\n txt.fontWeight = fontWeight;\n txt.wrap = true;\n\n let textElem = drawText(g, txt);\n\n if (typeof loopModel.sectionTitles !== 'undefined') {\n loopModel.sectionTitles.forEach(function(item, idx) {\n if (item.message) {\n txt.text = item.message;\n txt.x = loopModel.startx + (loopModel.stopx - loopModel.startx) / 2;\n txt.y = loopModel.sections[idx].y + boxMargin + boxTextMargin;\n txt.class = 'loopText';\n txt.anchor = 'middle';\n txt.valign = 'middle';\n txt.tspan = false;\n txt.fontFamily = fontFamily;\n txt.fontSize = fontSize;\n txt.fontWeight = fontWeight;\n txt.wrap = loopModel.wrap;\n textElem = drawText(g, txt);\n let sectionHeight = Math.round(\n textElem\n .map(te => (te._groups || te)[0][0].getBBox().height)\n .reduce((acc, curr) => acc + curr)\n );\n loopModel.sections[idx].height += sectionHeight - (boxMargin + boxTextMargin);\n }\n });\n }\n\n loopModel.height = Math.round(loopModel.stopy - loopModel.starty);\n return g;\n};\n\n/**\n * Draws a background rectangle\n * @param elem diagram (reference for bounds)\n * @param bounds shape of the rectangle\n */\nexport const drawBackgroundRect = function(elem, bounds) {\n const rectElem = drawRect(elem, {\n x: bounds.startx,\n y: bounds.starty,\n width: bounds.stopx - bounds.startx,\n height: bounds.stopy - bounds.starty,\n fill: bounds.fill,\n class: 'rect'\n });\n rectElem.lower();\n};\n/**\n * Setup arrow head and define the marker. The result is appended to the svg.\n */\nexport const insertArrowHead = function(elem) {\n elem\n .append('defs')\n .append('marker')\n .attr('id', 'arrowhead')\n .attr('refX', 5)\n .attr('refY', 2)\n .attr('markerWidth', 6)\n .attr('markerHeight', 4)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 0,0 V 4 L6,2 Z'); // this is actual shape for arrowhead\n};\n/**\n * Setup node number. The result is appended to the svg.\n */\nexport const insertSequenceNumber = function(elem) {\n elem\n .append('defs')\n .append('marker')\n .attr('id', 'sequencenumber')\n .attr('refX', 15)\n .attr('refY', 15)\n .attr('markerWidth', 60)\n .attr('markerHeight', 40)\n .attr('orient', 'auto')\n .append('circle')\n .attr('cx', 15)\n .attr('cy', 15)\n .attr('r', 6);\n // .style(\"fill\", '#f00');\n};\n/**\n * Setup arrow head and define the marker. The result is appended to the svg.\n */\nexport const insertArrowCrossHead = function(elem) {\n const defs = elem.append('defs');\n const marker = defs\n .append('marker')\n .attr('id', 'crosshead')\n .attr('markerWidth', 15)\n .attr('markerHeight', 8)\n .attr('orient', 'auto')\n .attr('refX', 16)\n .attr('refY', 4);\n\n // The arrow\n marker\n .append('path')\n .attr('fill', 'black')\n .attr('stroke', '#000000')\n .style('stroke-dasharray', '0, 0')\n .attr('stroke-width', '1px')\n .attr('d', 'M 9,2 V 6 L16,4 Z');\n\n // The cross\n marker\n .append('path')\n .attr('fill', 'none')\n .attr('stroke', '#000000')\n .style('stroke-dasharray', '0, 0')\n .attr('stroke-width', '1px')\n .attr('d', 'M 0,1 L 6,7 M 6,1 L 0,7');\n // this is actual shape for arrowhead\n};\n\nexport const getTextObj = function() {\n return {\n x: 0,\n y: 0,\n fill: undefined,\n anchor: undefined,\n style: '#666',\n width: undefined,\n height: undefined,\n textMargin: 0,\n rx: 0,\n ry: 0,\n tspan: true,\n valign: undefined\n };\n};\n\nexport const getNoteRect = function() {\n return {\n x: 0,\n y: 0,\n fill: '#EDF2AE',\n stroke: '#666',\n width: 100,\n anchor: 'start',\n height: 100,\n rx: 0,\n ry: 0\n };\n};\n\nconst _drawTextCandidateFunc = (function() {\n function byText(content, g, x, y, width, height, textAttrs) {\n const text = g\n .append('text')\n .attr('x', x + width / 2)\n .attr('y', y + height / 2 + 5)\n .style('text-anchor', 'middle')\n .text(content);\n _setTextAttrs(text, textAttrs);\n }\n\n function byTspan(content, g, x, y, width, height, textAttrs, conf) {\n const { actorFontSize, actorFontFamily, actorFontWeight } = conf;\n\n const lines = content.split(common.lineBreakRegex);\n for (let i = 0; i < lines.length; i++) {\n const dy = i * actorFontSize - (actorFontSize * (lines.length - 1)) / 2;\n const text = g\n .append('text')\n .attr('x', x + width / 2)\n .attr('y', y)\n .style('text-anchor', 'middle')\n .style('font-size', actorFontSize)\n .style('font-weight', actorFontWeight)\n .style('font-family', actorFontFamily);\n text\n .append('tspan')\n .attr('x', x + width / 2)\n .attr('dy', dy)\n .text(lines[i]);\n\n text\n .attr('y', y + height / 2.0)\n .attr('dominant-baseline', 'central')\n .attr('alignment-baseline', 'central');\n\n _setTextAttrs(text, textAttrs);\n }\n }\n\n function byFo(content, g, x, y, width, height, textAttrs, conf) {\n const s = g.append('switch');\n const f = s\n .append('foreignObject')\n .attr('x', x)\n .attr('y', y)\n .attr('width', width)\n .attr('height', height);\n\n const text = f\n .append('div')\n .style('display', 'table')\n .style('height', '100%')\n .style('width', '100%');\n\n text\n .append('div')\n .style('display', 'table-cell')\n .style('text-align', 'center')\n .style('vertical-align', 'middle')\n .text(content);\n\n byTspan(content, s, x, y, width, height, textAttrs, conf);\n _setTextAttrs(text, textAttrs);\n }\n\n function _setTextAttrs(toText, fromTextAttrsDict) {\n for (const key in fromTextAttrsDict) {\n if (fromTextAttrsDict.hasOwnProperty(key)) { // eslint-disable-line\n toText.attr(key, fromTextAttrsDict[key]);\n }\n }\n }\n\n return function(conf) {\n return conf.textPlacement === 'fo' ? byFo : conf.textPlacement === 'old' ? byText : byTspan;\n };\n})();\n\nexport default {\n drawRect,\n drawText,\n drawLabel,\n drawActor,\n anchorElement,\n drawActivation,\n drawLoop,\n drawBackgroundRect,\n insertArrowHead,\n insertSequenceNumber,\n insertArrowCrossHead,\n getTextObj,\n getNoteRect\n};\n","import mermaidAPI from '../../mermaidAPI';\nimport configApi from '../../config';\nimport common from '../common/common';\nimport { logger } from '../../logger';\n\nlet prevActor = undefined;\nlet actors = {};\nlet messages = [];\nconst notes = [];\nlet title = '';\nlet titleWrapped = false;\nlet sequenceNumbersEnabled = false;\nlet wrapEnabled = false;\n\nexport const parseDirective = function(statement, context, type) {\n mermaidAPI.parseDirective(statement, context, type);\n};\n\nexport const addActor = function(id, name, description) {\n // Don't allow description nulling\n const old = actors[id];\n if (old && name === old.name && description == null) return;\n\n // Don't allow null descriptions, either\n if (description == null || description.text == null) {\n description = { text: name, wrap: null };\n }\n\n actors[id] = {\n name: name,\n description: description.text,\n wrap: (description.wrap === undefined && autoWrap()) || !!description.wrap,\n prevActor: prevActor\n };\n if (prevActor && actors[prevActor]) {\n actors[prevActor].nextActor = id;\n }\n\n prevActor = id;\n};\n\nconst activationCount = part => {\n let i;\n let count = 0;\n for (i = 0; i < messages.length; i++) {\n // console.warn(i, messages[i]);\n if (messages[i].type === LINETYPE.ACTIVE_START) {\n if (messages[i].from.actor === part) {\n count++;\n }\n }\n if (messages[i].type === LINETYPE.ACTIVE_END) {\n if (messages[i].from.actor === part) {\n count--;\n }\n }\n }\n return count;\n};\n\nexport const addMessage = function(idFrom, idTo, message, answer) {\n messages.push({\n from: idFrom,\n to: idTo,\n message: message.text,\n wrap: (message.wrap === undefined && autoWrap()) || !!message.wrap,\n answer: answer\n });\n};\n\nexport const addSignal = function(\n idFrom,\n idTo,\n message = { text: undefined, wrap: undefined },\n messageType\n) {\n if (messageType === LINETYPE.ACTIVE_END) {\n const cnt = activationCount(idFrom.actor);\n if (cnt < 1) {\n // Bail out as there is an activation signal from an inactive participant\n let error = new Error('Trying to inactivate an inactive participant (' + idFrom.actor + ')');\n error.hash = {\n text: '->>-',\n token: '->>-',\n line: '1',\n loc: { first_line: 1, last_line: 1, first_column: 1, last_column: 1 },\n expected: [\"'ACTIVE_PARTICIPANT'\"]\n };\n throw error;\n }\n }\n messages.push({\n from: idFrom,\n to: idTo,\n message: message.text,\n wrap: (message.wrap === undefined && autoWrap()) || !!message.wrap,\n type: messageType\n });\n return true;\n};\n\nexport const getMessages = function() {\n return messages;\n};\n\nexport const getActors = function() {\n return actors;\n};\nexport const getActor = function(id) {\n return actors[id];\n};\nexport const getActorKeys = function() {\n return Object.keys(actors);\n};\nexport const getTitle = function() {\n return title;\n};\nexport const getTitleWrapped = function() {\n return titleWrapped;\n};\nexport const enableSequenceNumbers = function() {\n sequenceNumbersEnabled = true;\n};\nexport const showSequenceNumbers = () => sequenceNumbersEnabled;\n\nexport const setWrap = function(wrapSetting) {\n wrapEnabled = wrapSetting;\n};\n\nexport const autoWrap = () => wrapEnabled;\n\nexport const clear = function() {\n actors = {};\n messages = [];\n};\n\nexport const parseMessage = function(str) {\n const _str = str.trim();\n const message = {\n text: _str.replace(/^[:]?(?:no)?wrap:/, '').trim(),\n wrap:\n _str.match(/^[:]?(?:no)?wrap:/) === null\n ? common.hasBreaks(_str) || autoWrap()\n : _str.match(/^[:]?wrap:/) !== null\n ? true\n : _str.match(/^[:]?nowrap:/) !== null\n ? false\n : autoWrap()\n };\n logger.debug('parseMessage:', message);\n return message;\n};\n\nexport const LINETYPE = {\n SOLID: 0,\n DOTTED: 1,\n NOTE: 2,\n SOLID_CROSS: 3,\n DOTTED_CROSS: 4,\n SOLID_OPEN: 5,\n DOTTED_OPEN: 6,\n LOOP_START: 10,\n LOOP_END: 11,\n ALT_START: 12,\n ALT_ELSE: 13,\n ALT_END: 14,\n OPT_START: 15,\n OPT_END: 16,\n ACTIVE_START: 17,\n ACTIVE_END: 18,\n PAR_START: 19,\n PAR_AND: 20,\n PAR_END: 21,\n RECT_START: 22,\n RECT_END: 23\n};\n\nexport const ARROWTYPE = {\n FILLED: 0,\n OPEN: 1\n};\n\nexport const PLACEMENT = {\n LEFTOF: 0,\n RIGHTOF: 1,\n OVER: 2\n};\n\nexport const addNote = function(actor, placement, message) {\n const note = {\n actor: actor,\n placement: placement,\n message: message.text,\n wrap: (message.wrap === undefined && autoWrap()) || !!message.wrap\n };\n\n // Coerce actor into a [to, from, ...] array\n const actors = [].concat(actor, actor);\n\n notes.push(note);\n messages.push({\n from: actors[0],\n to: actors[1],\n message: message.text,\n wrap: (message.wrap === undefined && autoWrap()) || !!message.wrap,\n type: LINETYPE.NOTE,\n placement: placement\n });\n};\n\nexport const setTitle = function(titleWrap) {\n title = titleWrap.text;\n titleWrapped = (titleWrap.wrap === undefined && autoWrap()) || !!titleWrap.wrap;\n};\n\nexport const apply = function(param) {\n if (param instanceof Array) {\n param.forEach(function(item) {\n apply(item);\n });\n } else {\n switch (param.type) {\n case 'addActor':\n addActor(param.actor, param.actor, param.description);\n break;\n case 'activeStart':\n addSignal(param.actor, undefined, undefined, param.signalType);\n break;\n case 'activeEnd':\n addSignal(param.actor, undefined, undefined, param.signalType);\n break;\n case 'addNote':\n addNote(param.actor, param.placement, param.text);\n break;\n case 'addMessage':\n addSignal(param.from, param.to, param.msg, param.signalType);\n break;\n case 'loopStart':\n addSignal(undefined, undefined, param.loopText, param.signalType);\n break;\n case 'loopEnd':\n addSignal(undefined, undefined, undefined, param.signalType);\n break;\n case 'rectStart':\n addSignal(undefined, undefined, param.color, param.signalType);\n break;\n case 'rectEnd':\n addSignal(undefined, undefined, undefined, param.signalType);\n break;\n case 'optStart':\n addSignal(undefined, undefined, param.optText, param.signalType);\n break;\n case 'optEnd':\n addSignal(undefined, undefined, undefined, param.signalType);\n break;\n case 'altStart':\n addSignal(undefined, undefined, param.altText, param.signalType);\n break;\n case 'else':\n addSignal(undefined, undefined, param.altText, param.signalType);\n break;\n case 'altEnd':\n addSignal(undefined, undefined, undefined, param.signalType);\n break;\n case 'setTitle':\n setTitle(param.text);\n break;\n case 'parStart':\n addSignal(undefined, undefined, param.parText, param.signalType);\n break;\n case 'and':\n addSignal(undefined, undefined, param.parText, param.signalType);\n break;\n case 'parEnd':\n addSignal(undefined, undefined, undefined, param.signalType);\n break;\n }\n }\n};\n\nexport default {\n addActor,\n addMessage,\n addSignal,\n autoWrap,\n setWrap,\n enableSequenceNumbers,\n showSequenceNumbers,\n getMessages,\n getActors,\n getActor,\n getActorKeys,\n getTitle,\n parseDirective,\n getConfig: () => configApi.getConfig().sequence,\n getTitleWrapped,\n clear,\n parseMessage,\n LINETYPE,\n ARROWTYPE,\n PLACEMENT,\n addNote,\n setTitle,\n apply\n};\n","import { select, selectAll } from 'd3';\nimport svgDraw, { drawText } from './svgDraw';\nimport { logger } from '../../logger';\nimport { parser } from './parser/sequenceDiagram';\nimport common from '../common/common';\nimport sequenceDb from './sequenceDb';\nimport utils, { assignWithDepth } from '../../utils';\n\nparser.yy = sequenceDb;\n\nconst conf = {};\n\nexport const bounds = {\n data: {\n startx: undefined,\n stopx: undefined,\n starty: undefined,\n stopy: undefined\n },\n verticalPos: 0,\n sequenceItems: [],\n activations: [],\n models: {\n getHeight: function() {\n return (\n Math.max.apply(\n null,\n this.actors.length === 0 ? [0] : this.actors.map(actor => actor.height || 0)\n ) +\n (this.loops.length === 0\n ? 0\n : this.loops.map(it => it.height || 0).reduce((acc, h) => acc + h)) +\n (this.messages.length === 0\n ? 0\n : this.messages.map(it => it.height || 0).reduce((acc, h) => acc + h)) +\n (this.notes.length === 0\n ? 0\n : this.notes.map(it => it.height || 0).reduce((acc, h) => acc + h))\n );\n },\n clear: function() {\n this.actors = [];\n this.loops = [];\n this.messages = [];\n this.notes = [];\n },\n addActor: function(actorModel) {\n this.actors.push(actorModel);\n },\n addLoop: function(loopModel) {\n this.loops.push(loopModel);\n },\n addMessage: function(msgModel) {\n this.messages.push(msgModel);\n },\n addNote: function(noteModel) {\n this.notes.push(noteModel);\n },\n lastActor: function() {\n return this.actors[this.actors.length - 1];\n },\n lastLoop: function() {\n return this.loops[this.loops.length - 1];\n },\n lastMessage: function() {\n return this.messages[this.messages.length - 1];\n },\n lastNote: function() {\n return this.notes[this.notes.length - 1];\n },\n actors: [],\n loops: [],\n messages: [],\n notes: []\n },\n init: function() {\n this.sequenceItems = [];\n this.activations = [];\n this.models.clear();\n this.data = {\n startx: undefined,\n stopx: undefined,\n starty: undefined,\n stopy: undefined\n };\n this.verticalPos = 0;\n setConf(parser.yy.getConfig());\n },\n updateVal: function(obj, key, val, fun) {\n if (typeof obj[key] === 'undefined') {\n obj[key] = val;\n } else {\n obj[key] = fun(val, obj[key]);\n }\n },\n updateBounds: function(startx, starty, stopx, stopy) {\n const _self = this;\n let cnt = 0;\n function updateFn(type) {\n return function updateItemBounds(item) {\n cnt++;\n // The loop sequenceItems is a stack so the biggest margins in the beginning of the sequenceItems\n const n = _self.sequenceItems.length - cnt + 1;\n\n _self.updateVal(item, 'starty', starty - n * conf.boxMargin, Math.min);\n _self.updateVal(item, 'stopy', stopy + n * conf.boxMargin, Math.max);\n\n _self.updateVal(bounds.data, 'startx', startx - n * conf.boxMargin, Math.min);\n _self.updateVal(bounds.data, 'stopx', stopx + n * conf.boxMargin, Math.max);\n\n if (!(type === 'activation')) {\n _self.updateVal(item, 'startx', startx - n * conf.boxMargin, Math.min);\n _self.updateVal(item, 'stopx', stopx + n * conf.boxMargin, Math.max);\n\n _self.updateVal(bounds.data, 'starty', starty - n * conf.boxMargin, Math.min);\n _self.updateVal(bounds.data, 'stopy', stopy + n * conf.boxMargin, Math.max);\n }\n };\n }\n\n this.sequenceItems.forEach(updateFn());\n this.activations.forEach(updateFn('activation'));\n },\n insert: function(startx, starty, stopx, stopy) {\n const _startx = Math.min(startx, stopx);\n const _stopx = Math.max(startx, stopx);\n const _starty = Math.min(starty, stopy);\n const _stopy = Math.max(starty, stopy);\n\n this.updateVal(bounds.data, 'startx', _startx, Math.min);\n this.updateVal(bounds.data, 'starty', _starty, Math.min);\n this.updateVal(bounds.data, 'stopx', _stopx, Math.max);\n this.updateVal(bounds.data, 'stopy', _stopy, Math.max);\n\n this.updateBounds(_startx, _starty, _stopx, _stopy);\n },\n newActivation: function(message, diagram, actors) {\n const actorRect = actors[message.from.actor];\n const stackedSize = actorActivations(message.from.actor).length || 0;\n const x = actorRect.x + actorRect.width / 2 + ((stackedSize - 1) * conf.activationWidth) / 2;\n this.activations.push({\n startx: x,\n starty: this.verticalPos + 2,\n stopx: x + conf.activationWidth,\n stopy: undefined,\n actor: message.from.actor,\n anchored: svgDraw.anchorElement(diagram)\n });\n },\n endActivation: function(message) {\n // find most recent activation for given actor\n const lastActorActivationIdx = this.activations\n .map(function(activation) {\n return activation.actor;\n })\n .lastIndexOf(message.from.actor);\n return this.activations.splice(lastActorActivationIdx, 1)[0];\n },\n createLoop: function(title = { message: undefined, wrap: false, width: undefined }, fill) {\n return {\n startx: undefined,\n starty: this.verticalPos,\n stopx: undefined,\n stopy: undefined,\n title: title.message,\n wrap: title.wrap,\n width: title.width,\n height: 0,\n fill: fill\n };\n },\n newLoop: function(title = { message: undefined, wrap: false, width: undefined }, fill) {\n this.sequenceItems.push(this.createLoop(title, fill));\n },\n endLoop: function() {\n return this.sequenceItems.pop();\n },\n addSectionToLoop: function(message) {\n const loop = this.sequenceItems.pop();\n loop.sections = loop.sections || [];\n loop.sectionTitles = loop.sectionTitles || [];\n loop.sections.push({ y: bounds.getVerticalPos(), height: 0 });\n loop.sectionTitles.push(message);\n this.sequenceItems.push(loop);\n },\n bumpVerticalPos: function(bump) {\n this.verticalPos = this.verticalPos + bump;\n this.data.stopy = this.verticalPos;\n },\n getVerticalPos: function() {\n return this.verticalPos;\n },\n getBounds: function() {\n return { bounds: this.data, models: this.models };\n }\n};\n\n/**\n * Draws an note in the diagram with the attached line\n * @param elem - The diagram to draw to.\n * @param noteModel:{x: number, y: number, message: string, width: number} - startx: x axis start position, verticalPos: y axis position, messsage: the message to be shown, width: Set this with a custom width to override the default configured width.\n */\nconst drawNote = function(elem, noteModel) {\n bounds.bumpVerticalPos(conf.boxMargin);\n noteModel.height = conf.boxMargin;\n noteModel.starty = bounds.getVerticalPos();\n const rect = svgDraw.getNoteRect();\n rect.x = noteModel.startx;\n rect.y = noteModel.starty;\n rect.width = noteModel.width || conf.width;\n rect.class = 'note';\n\n let g = elem.append('g');\n const rectElem = svgDraw.drawRect(g, rect);\n const textObj = svgDraw.getTextObj();\n textObj.x = noteModel.startx;\n textObj.y = noteModel.starty;\n textObj.width = rect.width;\n textObj.dy = '1em';\n textObj.text = noteModel.message;\n textObj.class = 'noteText';\n textObj.fontFamily = conf.noteFontFamily;\n textObj.fontSize = conf.noteFontSize;\n textObj.fontWeight = conf.noteFontWeight;\n textObj.anchor = conf.noteAlign;\n textObj.textMargin = conf.noteMargin;\n textObj.valign = conf.noteAlign;\n textObj.wrap = true;\n\n let textElem = drawText(g, textObj);\n\n let textHeight = Math.round(\n textElem.map(te => (te._groups || te)[0][0].getBBox().height).reduce((acc, curr) => acc + curr)\n );\n\n rectElem.attr('height', textHeight + 2 * conf.noteMargin);\n noteModel.height += textHeight + 2 * conf.noteMargin;\n bounds.bumpVerticalPos(textHeight + 2 * conf.noteMargin);\n noteModel.stopy = noteModel.starty + textHeight + 2 * conf.noteMargin;\n noteModel.stopx = noteModel.startx + rect.width;\n bounds.insert(noteModel.startx, noteModel.starty, noteModel.stopx, noteModel.stopy);\n bounds.models.addNote(noteModel);\n};\n\n/**\n * Draws a message\n * @param g - the parent of the message element\n * @param msgModel - the model containing fields describing a message\n */\nconst drawMessage = function(g, msgModel) {\n bounds.bumpVerticalPos(10);\n const { startx, stopx, starty, message, type, sequenceIndex, wrap } = msgModel;\n const lines = common.splitBreaks(message).length;\n let textDims = utils.calculateTextDimensions(message, conf.messageFont());\n const lineHeight = textDims.height / lines;\n msgModel.height += lineHeight;\n\n bounds.bumpVerticalPos(lineHeight);\n const textObj = svgDraw.getTextObj();\n textObj.x = startx;\n textObj.y = starty + 10;\n textObj.width = stopx - startx;\n textObj.class = 'messageText';\n textObj.dy = '1em';\n textObj.text = message;\n textObj.fontFamily = conf.messageFontFamily;\n textObj.fontSize = conf.messageFontSize;\n textObj.fontWeight = conf.messageFontWeight;\n textObj.anchor = conf.messageAlign;\n textObj.valign = conf.messageAlign;\n textObj.textMargin = conf.wrapPadding;\n textObj.tspan = false;\n textObj.wrap = wrap;\n\n drawText(g, textObj);\n\n let totalOffset = textDims.height - 10;\n\n let textWidth = textDims.width;\n\n let line, lineStarty;\n if (startx === stopx) {\n lineStarty = bounds.getVerticalPos() + totalOffset;\n if (conf.rightAngles) {\n line = g\n .append('path')\n .attr(\n 'd',\n `M ${startx},${lineStarty} H ${startx +\n Math.max(conf.width / 2, textWidth / 2)} V ${lineStarty + 25} H ${startx}`\n );\n } else {\n totalOffset += conf.boxMargin;\n\n lineStarty = bounds.getVerticalPos() + totalOffset;\n line = g\n .append('path')\n .attr(\n 'd',\n 'M ' +\n startx +\n ',' +\n lineStarty +\n ' C ' +\n (startx + 60) +\n ',' +\n (lineStarty - 10) +\n ' ' +\n (startx + 60) +\n ',' +\n (lineStarty + 30) +\n ' ' +\n startx +\n ',' +\n (lineStarty + 20)\n );\n }\n\n totalOffset += 30;\n const dx = Math.max(textWidth / 2, conf.width / 2);\n bounds.insert(\n startx - dx,\n bounds.getVerticalPos() - 10 + totalOffset,\n stopx + dx,\n bounds.getVerticalPos() + 30 + totalOffset\n );\n } else {\n totalOffset += conf.boxMargin;\n lineStarty = bounds.getVerticalPos() + totalOffset;\n line = g.append('line');\n line.attr('x1', startx);\n line.attr('y1', lineStarty);\n line.attr('x2', stopx);\n line.attr('y2', lineStarty);\n bounds.insert(startx, lineStarty - 10, stopx, lineStarty);\n }\n // Make an SVG Container\n // Draw the line\n if (\n type === parser.yy.LINETYPE.DOTTED ||\n type === parser.yy.LINETYPE.DOTTED_CROSS ||\n type === parser.yy.LINETYPE.DOTTED_OPEN\n ) {\n line.style('stroke-dasharray', '3, 3');\n line.attr('class', 'messageLine1');\n } else {\n line.attr('class', 'messageLine0');\n }\n\n let url = '';\n if (conf.arrowMarkerAbsolute) {\n url =\n window.location.protocol +\n '//' +\n window.location.host +\n window.location.pathname +\n window.location.search;\n url = url.replace(/\\(/g, '\\\\(');\n url = url.replace(/\\)/g, '\\\\)');\n }\n\n line.attr('stroke-width', 2);\n line.attr('stroke', 'none'); // handled by theme/css anyway\n line.style('fill', 'none'); // remove any fill colour\n if (type === parser.yy.LINETYPE.SOLID || type === parser.yy.LINETYPE.DOTTED) {\n line.attr('marker-end', 'url(' + url + '#arrowhead)');\n }\n\n if (type === parser.yy.LINETYPE.SOLID_CROSS || type === parser.yy.LINETYPE.DOTTED_CROSS) {\n line.attr('marker-end', 'url(' + url + '#crosshead)');\n }\n\n // add node number\n if (sequenceDb.showSequenceNumbers() || conf.showSequenceNumbers) {\n line.attr('marker-start', 'url(' + url + '#sequencenumber)');\n g.append('text')\n .attr('x', startx)\n .attr('y', lineStarty + 4)\n .attr('font-family', 'sans-serif')\n .attr('font-size', '12px')\n .attr('text-anchor', 'middle')\n .attr('textLength', '16px')\n .attr('class', 'sequenceNumber')\n .text(sequenceIndex);\n }\n bounds.bumpVerticalPos(totalOffset);\n msgModel.height += totalOffset;\n msgModel.stopy = msgModel.starty + msgModel.height;\n bounds.insert(msgModel.fromBounds, msgModel.starty, msgModel.toBounds, msgModel.stopy);\n};\n\nexport const drawActors = function(diagram, actors, actorKeys, verticalPos) {\n // Draw the actors\n let prevWidth = 0;\n let prevMargin = 0;\n\n for (let i = 0; i < actorKeys.length; i++) {\n const actor = actors[actorKeys[i]];\n\n // Add some rendering data to the object\n actor.width = actor.width || conf.width;\n actor.height = Math.max(actor.height || conf.height, conf.height);\n actor.margin = actor.margin || conf.actorMargin;\n\n actor.x = prevWidth + prevMargin;\n actor.y = verticalPos;\n\n // Draw the box with the attached line\n svgDraw.drawActor(diagram, actor, conf);\n bounds.insert(actor.x, verticalPos, actor.x + actor.width, actor.height);\n\n prevWidth += actor.width;\n prevMargin += actor.margin;\n bounds.models.addActor(actor);\n }\n\n // Add a margin between the actor boxes and the first arrow\n bounds.bumpVerticalPos(conf.height);\n};\n\nexport const setConf = function(cnf) {\n assignWithDepth(conf, cnf);\n\n if (cnf.fontFamily) {\n conf.actorFontFamily = conf.noteFontFamily = conf.messageFontFamily = cnf.fontFamily;\n }\n if (cnf.fontSize) {\n conf.actorFontSize = conf.noteFontSize = conf.messageFontSize = cnf.fontSize;\n }\n if (cnf.fontWeight) {\n conf.actorFontWeight = conf.noteFontWeight = conf.messageFontWeight = cnf.fontWeight;\n }\n};\n\nconst actorActivations = function(actor) {\n return bounds.activations.filter(function(activation) {\n return activation.actor === actor;\n });\n};\n\nconst activationBounds = function(actor, actors) {\n // handle multiple stacked activations for same actor\n const actorObj = actors[actor];\n const activations = actorActivations(actor);\n\n const left = activations.reduce(function(acc, activation) {\n return Math.min(acc, activation.startx);\n }, actorObj.x + actorObj.width / 2);\n const right = activations.reduce(function(acc, activation) {\n return Math.max(acc, activation.stopx);\n }, actorObj.x + actorObj.width / 2);\n return [left, right];\n};\n\nfunction adjustLoopHeightForWrap(loopWidths, msg, preMargin, postMargin, addLoopFn) {\n bounds.bumpVerticalPos(preMargin);\n let heightAdjust = postMargin;\n if (msg.id && msg.message && loopWidths[msg.id]) {\n let loopWidth = loopWidths[msg.id].width;\n let textConf = conf.messageFont();\n msg.message = utils.wrapLabel(`[${msg.message}]`, loopWidth - 2 * conf.wrapPadding, textConf);\n msg.width = loopWidth;\n msg.wrap = true;\n\n // const lines = common.splitBreaks(msg.message).length;\n const textDims = utils.calculateTextDimensions(msg.message, textConf);\n const totalOffset = Math.max(textDims.height, conf.labelBoxHeight);\n heightAdjust = postMargin + totalOffset;\n logger.debug(`${totalOffset} - ${msg.message}`);\n }\n addLoopFn(msg);\n bounds.bumpVerticalPos(heightAdjust);\n}\n\n/**\n * Draws a sequenceDiagram in the tag with id: id based on the graph definition in text.\n * @param text\n * @param id\n */\nexport const draw = function(text, id) {\n parser.yy.clear();\n parser.yy.setWrap(conf.wrap);\n parser.parse(text + '\\n');\n bounds.init();\n logger.debug(`C:${JSON.stringify(conf, null, 2)}`);\n\n const diagram = select(`[id=\"${id}\"]`);\n\n // Fetch data from the parsing\n const actors = parser.yy.getActors();\n const actorKeys = parser.yy.getActorKeys();\n const messages = parser.yy.getMessages();\n const title = parser.yy.getTitle();\n\n const maxMessageWidthPerActor = getMaxMessageWidthPerActor(actors, messages);\n conf.height = calculateActorMargins(actors, maxMessageWidthPerActor);\n\n drawActors(diagram, actors, actorKeys, 0);\n const loopWidths = calculateLoopBounds(messages, actors, maxMessageWidthPerActor);\n\n // The arrow head definition is attached to the svg once\n svgDraw.insertArrowHead(diagram);\n svgDraw.insertArrowCrossHead(diagram);\n svgDraw.insertSequenceNumber(diagram);\n\n function activeEnd(msg, verticalPos) {\n const activationData = bounds.endActivation(msg);\n if (activationData.starty + 18 > verticalPos) {\n activationData.starty = verticalPos - 6;\n verticalPos += 12;\n }\n svgDraw.drawActivation(\n diagram,\n activationData,\n verticalPos,\n conf,\n actorActivations(msg.from.actor).length\n );\n\n bounds.insert(activationData.startx, verticalPos - 10, activationData.stopx, verticalPos);\n }\n\n // Draw the messages/signals\n let sequenceIndex = 1;\n messages.forEach(function(msg) {\n let loopModel, noteModel, msgModel;\n\n switch (msg.type) {\n case parser.yy.LINETYPE.NOTE:\n noteModel = msg.noteModel;\n drawNote(diagram, noteModel);\n break;\n case parser.yy.LINETYPE.ACTIVE_START:\n bounds.newActivation(msg, diagram, actors);\n break;\n case parser.yy.LINETYPE.ACTIVE_END:\n activeEnd(msg, bounds.getVerticalPos());\n break;\n case parser.yy.LINETYPE.LOOP_START:\n adjustLoopHeightForWrap(\n loopWidths,\n msg,\n conf.boxMargin,\n conf.boxMargin + conf.boxTextMargin,\n message => bounds.newLoop(message)\n );\n break;\n case parser.yy.LINETYPE.LOOP_END:\n loopModel = bounds.endLoop();\n svgDraw.drawLoop(diagram, loopModel, 'loop', conf);\n bounds.bumpVerticalPos(loopModel.stopy - bounds.getVerticalPos());\n bounds.models.addLoop(loopModel);\n break;\n case parser.yy.LINETYPE.RECT_START:\n adjustLoopHeightForWrap(loopWidths, msg, conf.boxMargin, conf.boxMargin, message =>\n bounds.newLoop(undefined, message.message)\n );\n break;\n case parser.yy.LINETYPE.RECT_END:\n loopModel = bounds.endLoop();\n svgDraw.drawBackgroundRect(diagram, loopModel);\n bounds.models.addLoop(loopModel);\n bounds.bumpVerticalPos(loopModel.stopy - bounds.getVerticalPos());\n break;\n case parser.yy.LINETYPE.OPT_START:\n adjustLoopHeightForWrap(\n loopWidths,\n msg,\n conf.boxMargin,\n conf.boxMargin + conf.boxTextMargin,\n message => bounds.newLoop(message)\n );\n break;\n case parser.yy.LINETYPE.OPT_END:\n loopModel = bounds.endLoop();\n svgDraw.drawLoop(diagram, loopModel, 'opt', conf);\n bounds.bumpVerticalPos(loopModel.stopy - bounds.getVerticalPos());\n bounds.models.addLoop(loopModel);\n break;\n case parser.yy.LINETYPE.ALT_START:\n adjustLoopHeightForWrap(\n loopWidths,\n msg,\n conf.boxMargin,\n conf.boxMargin + conf.boxTextMargin,\n message => bounds.newLoop(message)\n );\n break;\n case parser.yy.LINETYPE.ALT_ELSE:\n adjustLoopHeightForWrap(\n loopWidths,\n msg,\n conf.boxMargin + conf.boxTextMargin,\n conf.boxMargin,\n message => bounds.addSectionToLoop(message)\n );\n break;\n case parser.yy.LINETYPE.ALT_END:\n loopModel = bounds.endLoop();\n svgDraw.drawLoop(diagram, loopModel, 'alt', conf);\n bounds.bumpVerticalPos(loopModel.stopy - bounds.getVerticalPos());\n bounds.models.addLoop(loopModel);\n break;\n case parser.yy.LINETYPE.PAR_START:\n adjustLoopHeightForWrap(\n loopWidths,\n msg,\n conf.boxMargin,\n conf.boxMargin + conf.boxTextMargin,\n message => bounds.newLoop(message)\n );\n break;\n case parser.yy.LINETYPE.PAR_AND:\n adjustLoopHeightForWrap(\n loopWidths,\n msg,\n conf.boxMargin + conf.boxTextMargin,\n conf.boxMargin,\n message => bounds.addSectionToLoop(message)\n );\n break;\n case parser.yy.LINETYPE.PAR_END:\n loopModel = bounds.endLoop();\n svgDraw.drawLoop(diagram, loopModel, 'par', conf);\n bounds.bumpVerticalPos(loopModel.stopy - bounds.getVerticalPos());\n bounds.models.addLoop(loopModel);\n break;\n default:\n try {\n // lastMsg = msg\n msgModel = msg.msgModel;\n msgModel.starty = bounds.getVerticalPos();\n msgModel.sequenceIndex = sequenceIndex;\n drawMessage(diagram, msgModel);\n bounds.models.addMessage(msgModel);\n } catch (e) {\n logger.error('error while drawing message', e);\n }\n }\n // Increment sequence counter if msg.type is a line (and not another event like activation or note, etc)\n if (\n [\n parser.yy.LINETYPE.SOLID_OPEN,\n parser.yy.LINETYPE.DOTTED_OPEN,\n parser.yy.LINETYPE.SOLID,\n parser.yy.LINETYPE.DOTTED,\n parser.yy.LINETYPE.SOLID_CROSS,\n parser.yy.LINETYPE.DOTTED_CROSS\n ].includes(msg.type)\n ) {\n sequenceIndex++;\n }\n });\n\n if (conf.mirrorActors) {\n // Draw actors below diagram\n bounds.bumpVerticalPos(conf.boxMargin * 2);\n drawActors(diagram, actors, actorKeys, bounds.getVerticalPos());\n }\n\n const { bounds: box } = bounds.getBounds();\n\n // Adjust line height of actor lines now that the height of the diagram is known\n logger.debug('For line height fix Querying: #' + id + ' .actor-line');\n const actorLines = selectAll('#' + id + ' .actor-line');\n actorLines.attr('y2', box.stopy);\n\n let height = box.stopy - box.starty + 2 * conf.diagramMarginY;\n if (conf.mirrorActors) {\n height = height - conf.boxMargin + conf.bottomMarginAdj;\n }\n\n const width = box.stopx - box.startx + 2 * conf.diagramMarginX;\n\n if (title) {\n diagram\n .append('text')\n .text(title)\n .attr('x', (box.stopx - box.startx) / 2 - 2 * conf.diagramMarginX)\n .attr('y', -25);\n }\n\n if (conf.useMaxWidth) {\n diagram.attr('height', '100%');\n diagram.attr('width', '100%');\n diagram.attr('style', 'max-width:' + width + 'px;');\n // diagram.attr('style', 'max-width:100%;');\n } else {\n diagram.attr('height', height);\n diagram.attr('width', width);\n }\n const extraVertForTitle = title ? 40 : 0;\n diagram.attr(\n 'viewBox',\n box.startx -\n conf.diagramMarginX +\n ' -' +\n (conf.diagramMarginY + extraVertForTitle) +\n ' ' +\n width +\n ' ' +\n (height + extraVertForTitle)\n );\n logger.debug(`models:`, bounds.models);\n};\n\n/**\n * Retrieves the max message width of each actor, supports signals (messages, loops)\n * and notes.\n *\n * It will enumerate each given message, and will determine its text width, in relation\n * to the actor it originates from, and destined to.\n *\n * @param actors - The actors map\n * @param messages - A list of message objects to iterate\n */\nconst getMaxMessageWidthPerActor = function(actors, messages) {\n const maxMessageWidthPerActor = {};\n\n messages.forEach(function(msg) {\n if (actors[msg.to] && actors[msg.from]) {\n const actor = actors[msg.to];\n\n // If this is the first actor, and the message is left of it, no need to calculate the margin\n if (msg.placement === parser.yy.PLACEMENT.LEFTOF && !actor.prevActor) {\n return;\n }\n\n // If this is the last actor, and the message is right of it, no need to calculate the margin\n if (msg.placement === parser.yy.PLACEMENT.RIGHTOF && !actor.nextActor) {\n return;\n }\n\n const isNote = msg.placement !== undefined;\n const isMessage = !isNote;\n\n const textFont = isNote ? conf.noteFont() : conf.messageFont();\n let wrappedMessage = msg.wrap\n ? utils.wrapLabel(msg.message, conf.width - 2 * conf.wrapPadding, textFont)\n : msg.message;\n const messageDimensions = utils.calculateTextDimensions(wrappedMessage, textFont);\n const messageWidth = messageDimensions.width + 2 * conf.wrapPadding;\n\n /*\n * The following scenarios should be supported:\n *\n * - There's a message (non-note) between fromActor and toActor\n * - If fromActor is on the right and toActor is on the left, we should\n * define the toActor's margin\n * - If fromActor is on the left and toActor is on the right, we should\n * define the fromActor's margin\n * - There's a note, in which case fromActor == toActor\n * - If the note is to the left of the actor, we should define the previous actor\n * margin\n * - If the note is on the actor, we should define both the previous and next actor\n * margins, each being the half of the note size\n * - If the note is on the right of the actor, we should define the current actor\n * margin\n */\n if (isMessage && msg.from === actor.nextActor) {\n maxMessageWidthPerActor[msg.to] = Math.max(\n maxMessageWidthPerActor[msg.to] || 0,\n messageWidth\n );\n } else if (isMessage && msg.from === actor.prevActor) {\n maxMessageWidthPerActor[msg.from] = Math.max(\n maxMessageWidthPerActor[msg.from] || 0,\n messageWidth\n );\n } else if (isMessage && msg.from === msg.to) {\n maxMessageWidthPerActor[msg.from] = Math.max(\n maxMessageWidthPerActor[msg.from] || 0,\n messageWidth / 2\n );\n\n maxMessageWidthPerActor[msg.to] = Math.max(\n maxMessageWidthPerActor[msg.to] || 0,\n messageWidth / 2\n );\n } else if (msg.placement === parser.yy.PLACEMENT.RIGHTOF) {\n maxMessageWidthPerActor[msg.from] = Math.max(\n maxMessageWidthPerActor[msg.from] || 0,\n messageWidth\n );\n } else if (msg.placement === parser.yy.PLACEMENT.LEFTOF) {\n maxMessageWidthPerActor[actor.prevActor] = Math.max(\n maxMessageWidthPerActor[actor.prevActor] || 0,\n messageWidth\n );\n } else if (msg.placement === parser.yy.PLACEMENT.OVER) {\n if (actor.prevActor) {\n maxMessageWidthPerActor[actor.prevActor] = Math.max(\n maxMessageWidthPerActor[actor.prevActor] || 0,\n messageWidth / 2\n );\n }\n\n if (actor.nextActor) {\n maxMessageWidthPerActor[msg.from] = Math.max(\n maxMessageWidthPerActor[msg.from] || 0,\n messageWidth / 2\n );\n }\n }\n }\n });\n\n logger.debug('maxMessageWidthPerActor:', maxMessageWidthPerActor);\n return maxMessageWidthPerActor;\n};\n\n/**\n * This will calculate the optimal margin for each given actor, for a given\n * actor->messageWidth map.\n *\n * An actor's margin is determined by the width of the actor, the width of the\n * largest message that originates from it, and the configured conf.actorMargin.\n *\n * @param actors - The actors map to calculate margins for\n * @param actorToMessageWidth - A map of actor key -> max message width it holds\n */\nconst calculateActorMargins = function(actors, actorToMessageWidth) {\n let maxHeight = 0;\n Object.keys(actors).forEach(prop => {\n const actor = actors[prop];\n if (actor.wrap) {\n actor.description = utils.wrapLabel(\n actor.description,\n conf.width - 2 * conf.wrapPadding,\n conf.actorFont()\n );\n }\n const actDims = utils.calculateTextDimensions(actor.description, conf.actorFont());\n actor.width = actor.wrap\n ? conf.width\n : Math.max(conf.width, actDims.width + 2 * conf.wrapPadding);\n\n actor.height = actor.wrap ? Math.max(actDims.height, conf.height) : conf.height;\n maxHeight = Math.max(maxHeight, actor.height);\n });\n\n for (let actorKey in actorToMessageWidth) {\n const actor = actors[actorKey];\n\n if (!actor) {\n continue;\n }\n\n const nextActor = actors[actor.nextActor];\n\n // No need to space out an actor that doesn't have a next link\n if (!nextActor) {\n continue;\n }\n\n const messageWidth = actorToMessageWidth[actorKey];\n const actorWidth = messageWidth + conf.actorMargin - actor.width / 2 - nextActor.width / 2;\n\n actor.margin = Math.max(actorWidth, conf.actorMargin);\n }\n\n return Math.max(maxHeight, conf.height);\n};\n\nconst buildNoteModel = function(msg, actors) {\n let startx = actors[msg.from].x;\n let stopx = actors[msg.to].x;\n let shouldWrap = msg.wrap && msg.message;\n\n let textDimensions = utils.calculateTextDimensions(\n shouldWrap ? utils.wrapLabel(msg.message, conf.width, conf.noteFont()) : msg.message,\n conf.noteFont()\n );\n let noteModel = {\n width: shouldWrap\n ? conf.width\n : Math.max(conf.width, textDimensions.width + 2 * conf.noteMargin),\n height: 0,\n startx: actors[msg.from].x,\n stopx: 0,\n starty: 0,\n stopy: 0,\n message: msg.message\n };\n if (msg.placement === parser.yy.PLACEMENT.RIGHTOF) {\n noteModel.width = shouldWrap\n ? Math.max(conf.width, textDimensions.width)\n : Math.max(\n actors[msg.from].width / 2 + actors[msg.to].width / 2,\n textDimensions.width + 2 * conf.noteMargin\n );\n noteModel.startx = startx + (actors[msg.from].width + conf.actorMargin) / 2;\n } else if (msg.placement === parser.yy.PLACEMENT.LEFTOF) {\n noteModel.width = shouldWrap\n ? Math.max(conf.width, textDimensions.width + 2 * conf.noteMargin)\n : Math.max(\n actors[msg.from].width / 2 + actors[msg.to].width / 2,\n textDimensions.width + 2 * conf.noteMargin\n );\n noteModel.startx = startx - noteModel.width + (actors[msg.from].width - conf.actorMargin) / 2;\n } else if (msg.to === msg.from) {\n textDimensions = utils.calculateTextDimensions(\n shouldWrap\n ? utils.wrapLabel(\n msg.message,\n Math.max(conf.width, actors[msg.from].width),\n conf.noteFont()\n )\n : msg.message,\n conf.noteFont()\n );\n noteModel.width = shouldWrap\n ? Math.max(conf.width, actors[msg.from].width)\n : Math.max(actors[msg.from].width, conf.width, textDimensions.width + 2 * conf.noteMargin);\n noteModel.startx = startx + (actors[msg.from].width - noteModel.width) / 2;\n } else {\n noteModel.width =\n Math.abs(startx + actors[msg.from].width / 2 - (stopx + actors[msg.to].width / 2)) +\n conf.actorMargin;\n noteModel.startx =\n startx < stopx\n ? startx + actors[msg.from].width / 2 - conf.actorMargin / 2\n : stopx + actors[msg.to].width / 2 - conf.actorMargin / 2;\n }\n if (shouldWrap) {\n noteModel.message = utils.wrapLabel(\n msg.message,\n noteModel.width - 2 * conf.wrapPadding,\n conf.noteFont()\n );\n }\n logger.debug(\n `NM:[${noteModel.startx},${noteModel.stopx},${noteModel.starty},${noteModel.stopy}:${noteModel.width},${noteModel.height}=${msg.message}]`\n );\n return noteModel;\n};\n\nconst buildMessageModel = function(msg, actors) {\n let process = false;\n if (\n [\n parser.yy.LINETYPE.SOLID_OPEN,\n parser.yy.LINETYPE.DOTTED_OPEN,\n parser.yy.LINETYPE.SOLID,\n parser.yy.LINETYPE.DOTTED,\n parser.yy.LINETYPE.SOLID_CROSS,\n parser.yy.LINETYPE.DOTTED_CROSS\n ].includes(msg.type)\n ) {\n process = true;\n }\n if (!process) {\n return {};\n }\n const fromBounds = activationBounds(msg.from, actors);\n const toBounds = activationBounds(msg.to, actors);\n const fromIdx = fromBounds[0] <= toBounds[0] ? 1 : 0;\n const toIdx = fromBounds[0] < toBounds[0] ? 0 : 1;\n const allBounds = fromBounds.concat(toBounds);\n const boundedWidth = Math.abs(toBounds[toIdx] - fromBounds[fromIdx]);\n const msgDims = utils.calculateTextDimensions(msg.message, conf.messageFont());\n if (msg.wrap && msg.message) {\n msg.message = utils.wrapLabel(\n msg.message,\n Math.max(boundedWidth + 2 * conf.wrapPadding, conf.width),\n conf.messageFont()\n );\n }\n return {\n width: Math.max(\n msg.wrap ? 0 : msgDims.width + 2 * conf.wrapPadding,\n boundedWidth + 2 * conf.wrapPadding,\n conf.width\n ),\n height: 0,\n startx: fromBounds[fromIdx],\n stopx: toBounds[toIdx],\n starty: 0,\n stopy: 0,\n message: msg.message,\n type: msg.type,\n wrap: msg.wrap,\n fromBounds: Math.min.apply(null, allBounds),\n toBounds: Math.max.apply(null, allBounds)\n };\n};\n\nconst calculateLoopBounds = function(messages, actors) {\n const loops = {};\n const stack = [];\n let current, noteModel, msgModel;\n\n messages.forEach(function(msg) {\n msg.id = utils.random({ length: 10 });\n switch (msg.type) {\n case parser.yy.LINETYPE.LOOP_START:\n case parser.yy.LINETYPE.ALT_START:\n case parser.yy.LINETYPE.OPT_START:\n case parser.yy.LINETYPE.PAR_START:\n stack.push({\n id: msg.id,\n msg: msg.message,\n from: Number.MAX_SAFE_INTEGER,\n to: Number.MIN_SAFE_INTEGER,\n width: 0\n });\n break;\n case parser.yy.LINETYPE.ALT_ELSE:\n case parser.yy.LINETYPE.PAR_AND:\n if (msg.message) {\n current = stack.pop();\n loops[current.id] = current;\n loops[msg.id] = current;\n stack.push(current);\n }\n break;\n case parser.yy.LINETYPE.LOOP_END:\n case parser.yy.LINETYPE.ALT_END:\n case parser.yy.LINETYPE.OPT_END:\n case parser.yy.LINETYPE.PAR_END:\n current = stack.pop();\n loops[current.id] = current;\n break;\n case parser.yy.LINETYPE.ACTIVE_START:\n {\n const actorRect = actors[msg.from ? msg.from.actor : msg.to.actor];\n const stackedSize = actorActivations(msg.from ? msg.from.actor : msg.to.actor).length;\n const x =\n actorRect.x + actorRect.width / 2 + ((stackedSize - 1) * conf.activationWidth) / 2;\n const toAdd = {\n startx: x,\n stopx: x + conf.activationWidth,\n actor: msg.from.actor,\n enabled: true\n };\n bounds.activations.push(toAdd);\n }\n break;\n case parser.yy.LINETYPE.ACTIVE_END:\n {\n const lastActorActivationIdx = bounds.activations\n .map(a => a.actor)\n .lastIndexOf(msg.from.actor);\n delete bounds.activations.splice(lastActorActivationIdx, 1)[0];\n }\n break;\n }\n const isNote = msg.placement !== undefined;\n if (isNote) {\n noteModel = buildNoteModel(msg, actors);\n msg.noteModel = noteModel;\n stack.forEach(stk => {\n current = stk;\n current.from = Math.min(current.from, noteModel.startx);\n current.to = Math.max(current.to, noteModel.startx + noteModel.width);\n current.width =\n Math.max(current.width, Math.abs(current.from - current.to)) - conf.labelBoxWidth;\n });\n } else {\n msgModel = buildMessageModel(msg, actors);\n msg.msgModel = msgModel;\n if (msgModel.startx && msgModel.stopx && stack.length > 0) {\n stack.forEach(stk => {\n current = stk;\n if (msgModel.startx === msgModel.stopx) {\n let from = actors[msg.from];\n let to = actors[msg.to];\n current.from = Math.min(\n from.x - msgModel.width / 2,\n from.x - from.width / 2,\n current.from\n );\n current.to = Math.max(to.x + msgModel.width / 2, to.x + from.width / 2, current.to);\n current.width =\n Math.max(current.width, Math.abs(current.to - current.from)) - conf.labelBoxWidth;\n } else {\n current.from = Math.min(msgModel.startx, current.from);\n current.to = Math.max(msgModel.stopx, current.to);\n current.width = Math.max(current.width, msgModel.width) - conf.labelBoxWidth;\n }\n });\n }\n }\n });\n bounds.activations = [];\n logger.debug('Loop type widths:', loops);\n return loops;\n};\n\nexport default {\n bounds,\n drawActors,\n setConf,\n draw\n};\n","import moment from 'moment-mini';\nimport { sanitizeUrl } from '@braintree/sanitize-url';\nimport { logger } from '../../logger';\nimport { getConfig } from '../../config';\nimport utils from '../../utils';\n\nlet dateFormat = '';\nlet axisFormat = '';\nlet todayMarker = '';\nlet excludes = [];\nlet title = '';\nlet sections = [];\nlet tasks = [];\nlet currentSection = '';\nconst tags = ['active', 'done', 'crit', 'milestone'];\nlet funs = [];\nlet inclusiveEndDates = false;\n\n// The serial order of the task in the script\nlet lastOrder = 0;\n\nexport const clear = function() {\n sections = [];\n tasks = [];\n currentSection = '';\n funs = [];\n title = '';\n taskCnt = 0;\n lastTask = undefined;\n lastTaskID = undefined;\n rawTasks = [];\n dateFormat = '';\n axisFormat = '';\n todayMarker = '';\n excludes = [];\n inclusiveEndDates = false;\n lastOrder = 0;\n};\n\nexport const setAxisFormat = function(txt) {\n axisFormat = txt;\n};\n\nexport const getAxisFormat = function() {\n return axisFormat;\n};\n\nexport const setTodayMarker = function(txt) {\n todayMarker = txt;\n};\n\nexport const getTodayMarker = function() {\n return todayMarker;\n};\n\nexport const setDateFormat = function(txt) {\n dateFormat = txt;\n};\n\nexport const enableInclusiveEndDates = function() {\n inclusiveEndDates = true;\n};\n\nexport const endDatesAreInclusive = function() {\n return inclusiveEndDates;\n};\n\nexport const getDateFormat = function() {\n return dateFormat;\n};\n\nexport const setExcludes = function(txt) {\n excludes = txt.toLowerCase().split(/[\\s,]+/);\n};\n\nexport const getExcludes = function() {\n return excludes;\n};\n\nexport const setTitle = function(txt) {\n title = txt;\n};\n\nexport const getTitle = function() {\n return title;\n};\n\nexport const addSection = function(txt) {\n currentSection = txt;\n sections.push(txt);\n};\n\nexport const getSections = function() {\n return sections;\n};\n\nexport const getTasks = function() {\n let allItemsPricessed = compileTasks();\n const maxDepth = 10;\n let iterationCount = 0;\n while (!allItemsPricessed && iterationCount < maxDepth) {\n allItemsPricessed = compileTasks();\n iterationCount++;\n }\n\n tasks = rawTasks;\n\n return tasks;\n};\n\nconst isInvalidDate = function(date, dateFormat, excludes) {\n if (date.isoWeekday() >= 6 && excludes.indexOf('weekends') >= 0) {\n return true;\n }\n if (excludes.indexOf(date.format('dddd').toLowerCase()) >= 0) {\n return true;\n }\n return excludes.indexOf(date.format(dateFormat.trim())) >= 0;\n};\n\nconst checkTaskDates = function(task, dateFormat, excludes) {\n if (!excludes.length || task.manualEndTime) return;\n let startTime = moment(task.startTime, dateFormat, true);\n startTime.add(1, 'd');\n let endTime = moment(task.endTime, dateFormat, true);\n let renderEndTime = fixTaskDates(startTime, endTime, dateFormat, excludes);\n task.endTime = endTime.toDate();\n task.renderEndTime = renderEndTime;\n};\n\nconst fixTaskDates = function(startTime, endTime, dateFormat, excludes) {\n let invalid = false;\n let renderEndTime = null;\n while (startTime <= endTime) {\n if (!invalid) {\n renderEndTime = endTime.toDate();\n }\n invalid = isInvalidDate(startTime, dateFormat, excludes);\n if (invalid) {\n endTime.add(1, 'd');\n }\n startTime.add(1, 'd');\n }\n return renderEndTime;\n};\n\nconst getStartDate = function(prevTime, dateFormat, str) {\n str = str.trim();\n\n // Test for after\n const re = /^after\\s+([\\d\\w- ]+)/;\n const afterStatement = re.exec(str.trim());\n\n if (afterStatement !== null) {\n // check all after ids and take the latest\n let latestEndingTask = null;\n afterStatement[1].split(' ').forEach(function(id) {\n let task = findTaskById(id);\n if (typeof task !== 'undefined') {\n if (!latestEndingTask) {\n latestEndingTask = task;\n } else {\n if (task.endTime > latestEndingTask.endTime) {\n latestEndingTask = task;\n }\n }\n }\n });\n\n if (!latestEndingTask) {\n const dt = new Date();\n dt.setHours(0, 0, 0, 0);\n return dt;\n } else {\n return latestEndingTask.endTime;\n }\n }\n\n // Check for actual date set\n let mDate = moment(str, dateFormat.trim(), true);\n if (mDate.isValid()) {\n return mDate.toDate();\n } else {\n logger.debug('Invalid date:' + str);\n logger.debug('With date format:' + dateFormat.trim());\n }\n\n // Default date - now\n return new Date();\n};\n\nconst durationToDate = function(durationStatement, relativeTime) {\n if (durationStatement !== null) {\n switch (durationStatement[2]) {\n case 's':\n relativeTime.add(durationStatement[1], 'seconds');\n break;\n case 'm':\n relativeTime.add(durationStatement[1], 'minutes');\n break;\n case 'h':\n relativeTime.add(durationStatement[1], 'hours');\n break;\n case 'd':\n relativeTime.add(durationStatement[1], 'days');\n break;\n case 'w':\n relativeTime.add(durationStatement[1], 'weeks');\n break;\n }\n }\n // Default date - now\n return relativeTime.toDate();\n};\n\nconst getEndDate = function(prevTime, dateFormat, str, inclusive) {\n inclusive = inclusive || false;\n str = str.trim();\n\n // Check for actual date\n let mDate = moment(str, dateFormat.trim(), true);\n if (mDate.isValid()) {\n if (inclusive) {\n mDate.add(1, 'd');\n }\n return mDate.toDate();\n }\n\n return durationToDate(/^([\\d]+)([wdhms])/.exec(str.trim()), moment(prevTime));\n};\n\nlet taskCnt = 0;\nconst parseId = function(idStr) {\n if (typeof idStr === 'undefined') {\n taskCnt = taskCnt + 1;\n return 'task' + taskCnt;\n }\n return idStr;\n};\n// id, startDate, endDate\n// id, startDate, length\n// id, after x, endDate\n// id, after x, length\n// startDate, endDate\n// startDate, length\n// after x, endDate\n// after x, length\n// endDate\n// length\n\nconst compileData = function(prevTask, dataStr) {\n let ds;\n\n if (dataStr.substr(0, 1) === ':') {\n ds = dataStr.substr(1, dataStr.length);\n } else {\n ds = dataStr;\n }\n\n const data = ds.split(',');\n\n const task = {};\n\n // Get tags like active, done, crit and milestone\n getTaskTags(data, task, tags);\n\n for (let i = 0; i < data.length; i++) {\n data[i] = data[i].trim();\n }\n\n let endTimeData = '';\n switch (data.length) {\n case 1:\n task.id = parseId();\n task.startTime = prevTask.endTime;\n endTimeData = data[0];\n break;\n case 2:\n task.id = parseId();\n task.startTime = getStartDate(undefined, dateFormat, data[0]);\n endTimeData = data[1];\n break;\n case 3:\n task.id = parseId(data[0]);\n task.startTime = getStartDate(undefined, dateFormat, data[1]);\n endTimeData = data[2];\n break;\n default:\n }\n\n if (endTimeData) {\n task.endTime = getEndDate(task.startTime, dateFormat, endTimeData, inclusiveEndDates);\n task.manualEndTime = moment(endTimeData, 'YYYY-MM-DD', true).isValid();\n checkTaskDates(task, dateFormat, excludes);\n }\n\n return task;\n};\n\nconst parseData = function(prevTaskId, dataStr) {\n let ds;\n if (dataStr.substr(0, 1) === ':') {\n ds = dataStr.substr(1, dataStr.length);\n } else {\n ds = dataStr;\n }\n\n const data = ds.split(',');\n\n const task = {};\n\n // Get tags like active, done, crit and milestone\n getTaskTags(data, task, tags);\n\n for (let i = 0; i < data.length; i++) {\n data[i] = data[i].trim();\n }\n\n switch (data.length) {\n case 1:\n task.id = parseId();\n task.startTime = {\n type: 'prevTaskEnd',\n id: prevTaskId\n };\n task.endTime = {\n data: data[0]\n };\n break;\n case 2:\n task.id = parseId();\n task.startTime = {\n type: 'getStartDate',\n startData: data[0]\n };\n task.endTime = {\n data: data[1]\n };\n break;\n case 3:\n task.id = parseId(data[0]);\n task.startTime = {\n type: 'getStartDate',\n startData: data[1]\n };\n task.endTime = {\n data: data[2]\n };\n break;\n default:\n }\n\n return task;\n};\n\nlet lastTask;\nlet lastTaskID;\nlet rawTasks = [];\nconst taskDb = {};\nexport const addTask = function(descr, data) {\n const rawTask = {\n section: currentSection,\n type: currentSection,\n processed: false,\n manualEndTime: false,\n renderEndTime: null,\n raw: { data: data },\n task: descr,\n classes: []\n };\n const taskInfo = parseData(lastTaskID, data);\n rawTask.raw.startTime = taskInfo.startTime;\n rawTask.raw.endTime = taskInfo.endTime;\n rawTask.id = taskInfo.id;\n rawTask.prevTaskId = lastTaskID;\n rawTask.active = taskInfo.active;\n rawTask.done = taskInfo.done;\n rawTask.crit = taskInfo.crit;\n rawTask.milestone = taskInfo.milestone;\n rawTask.order = lastOrder;\n\n lastOrder++;\n\n const pos = rawTasks.push(rawTask);\n\n lastTaskID = rawTask.id;\n // Store cross ref\n taskDb[rawTask.id] = pos - 1;\n};\n\nexport const findTaskById = function(id) {\n const pos = taskDb[id];\n return rawTasks[pos];\n};\n\nexport const addTaskOrg = function(descr, data) {\n const newTask = {\n section: currentSection,\n type: currentSection,\n description: descr,\n task: descr,\n classes: []\n };\n const taskInfo = compileData(lastTask, data);\n newTask.startTime = taskInfo.startTime;\n newTask.endTime = taskInfo.endTime;\n newTask.id = taskInfo.id;\n newTask.active = taskInfo.active;\n newTask.done = taskInfo.done;\n newTask.crit = taskInfo.crit;\n newTask.milestone = taskInfo.milestone;\n lastTask = newTask;\n tasks.push(newTask);\n};\n\nconst compileTasks = function() {\n const compileTask = function(pos) {\n const task = rawTasks[pos];\n let startTime = '';\n switch (rawTasks[pos].raw.startTime.type) {\n case 'prevTaskEnd': {\n const prevTask = findTaskById(task.prevTaskId);\n task.startTime = prevTask.endTime;\n break;\n }\n case 'getStartDate':\n startTime = getStartDate(undefined, dateFormat, rawTasks[pos].raw.startTime.startData);\n if (startTime) {\n rawTasks[pos].startTime = startTime;\n }\n break;\n }\n\n if (rawTasks[pos].startTime) {\n rawTasks[pos].endTime = getEndDate(\n rawTasks[pos].startTime,\n dateFormat,\n rawTasks[pos].raw.endTime.data,\n inclusiveEndDates\n );\n if (rawTasks[pos].endTime) {\n rawTasks[pos].processed = true;\n rawTasks[pos].manualEndTime = moment(\n rawTasks[pos].raw.endTime.data,\n 'YYYY-MM-DD',\n true\n ).isValid();\n checkTaskDates(rawTasks[pos], dateFormat, excludes);\n }\n }\n\n return rawTasks[pos].processed;\n };\n\n let allProcessed = true;\n for (let i = 0; i < rawTasks.length; i++) {\n compileTask(i);\n\n allProcessed = allProcessed && rawTasks[i].processed;\n }\n return allProcessed;\n};\n\n/**\n * Called by parser when a link is found. Adds the URL to the vertex data.\n * @param ids Comma separated list of ids\n * @param linkStr URL to create a link for\n */\nexport const setLink = function(ids, _linkStr) {\n let linkStr = _linkStr;\n if (getConfig().securityLevel !== 'loose') {\n linkStr = sanitizeUrl(_linkStr);\n }\n ids.split(',').forEach(function(id) {\n let rawTask = findTaskById(id);\n if (typeof rawTask !== 'undefined') {\n pushFun(id, () => {\n window.open(linkStr, '_self');\n });\n }\n });\n setClass(ids, 'clickable');\n};\n\n/**\n * Called by parser when a special node is found, e.g. a clickable element.\n * @param ids Comma separated list of ids\n * @param className Class to add\n */\nexport const setClass = function(ids, className) {\n ids.split(',').forEach(function(id) {\n let rawTask = findTaskById(id);\n if (typeof rawTask !== 'undefined') {\n rawTask.classes.push(className);\n }\n });\n};\n\nconst setClickFun = function(id, functionName, functionArgs) {\n if (getConfig().securityLevel !== 'loose') {\n return;\n }\n if (typeof functionName === 'undefined') {\n return;\n }\n\n let argList = [];\n if (typeof functionArgs === 'string') {\n /* Splits functionArgs by ',', ignoring all ',' in double quoted strings */\n argList = functionArgs.split(/,(?=(?:(?:[^\"]*\"){2})*[^\"]*$)/);\n for (let i = 0; i < argList.length; i++) {\n let item = argList[i].trim();\n /* Removes all double quotes at the start and end of an argument */\n /* This preserves all starting and ending whitespace inside */\n if (item.charAt(0) === '\"' && item.charAt(item.length - 1) === '\"') {\n item = item.substr(1, item.length - 2);\n }\n argList[i] = item;\n }\n }\n\n /* if no arguments passed into callback, default to passing in id */\n if (argList.length === 0) {\n argList.push(id);\n }\n\n let rawTask = findTaskById(id);\n if (typeof rawTask !== 'undefined') {\n pushFun(id, () => {\n utils.runFunc(functionName, ...argList);\n });\n }\n};\n\n/**\n * The callbackFunction is executed in a click event bound to the task with the specified id or the task's assigned text\n * @param id The task's id\n * @param callbackFunction A function to be executed when clicked on the task or the task's text\n */\nconst pushFun = function(id, callbackFunction) {\n funs.push(function() {\n // const elem = d3.select(element).select(`[id=\"${id}\"]`)\n const elem = document.querySelector(`[id=\"${id}\"]`);\n if (elem !== null) {\n elem.addEventListener('click', function() {\n callbackFunction();\n });\n }\n });\n funs.push(function() {\n // const elem = d3.select(element).select(`[id=\"${id}-text\"]`)\n const elem = document.querySelector(`[id=\"${id}-text\"]`);\n if (elem !== null) {\n elem.addEventListener('click', function() {\n callbackFunction();\n });\n }\n });\n};\n\n/**\n * Called by parser when a click definition is found. Registers an event handler.\n * @param ids Comma separated list of ids\n * @param functionName Function to be called on click\n * @param functionArgs Function args the function should be called with\n */\nexport const setClickEvent = function(ids, functionName, functionArgs) {\n ids.split(',').forEach(function(id) {\n setClickFun(id, functionName, functionArgs);\n });\n setClass(ids, 'clickable');\n};\n\n/**\n * Binds all functions previously added to fun (specified through click) to the element\n * @param element\n */\nexport const bindFunctions = function(element) {\n funs.forEach(function(fun) {\n fun(element);\n });\n};\n\nexport default {\n clear,\n setDateFormat,\n getDateFormat,\n enableInclusiveEndDates,\n endDatesAreInclusive,\n setAxisFormat,\n getAxisFormat,\n setTodayMarker,\n getTodayMarker,\n setTitle,\n getTitle,\n addSection,\n getSections,\n getTasks,\n addTask,\n findTaskById,\n addTaskOrg,\n setExcludes,\n getExcludes,\n setClickEvent,\n setLink,\n bindFunctions,\n durationToDate\n};\n\nfunction getTaskTags(data, task, tags) {\n let matchFound = true;\n while (matchFound) {\n matchFound = false;\n tags.forEach(function(t) {\n const pattern = '^\\\\s*' + t + '\\\\s*$';\n const regex = new RegExp(pattern);\n if (data[0].match(regex)) {\n task[t] = true;\n data.shift(1);\n matchFound = true;\n }\n });\n }\n}\n","import {\n select,\n scaleTime,\n min,\n max,\n scaleLinear,\n interpolateHcl,\n axisBottom,\n timeFormat\n} from 'd3';\nimport { parser } from './parser/gantt';\nimport common from '../common/common';\nimport ganttDb from './ganttDb';\n\nparser.yy = ganttDb;\n\nconst conf = {\n titleTopMargin: 25,\n barHeight: 20,\n barGap: 4,\n topPadding: 50,\n rightPadding: 75,\n leftPadding: 75,\n gridLineStartPadding: 35,\n fontSize: 11,\n fontFamily: '\"Open-Sans\", \"sans-serif\"'\n};\nexport const setConf = function(cnf) {\n const keys = Object.keys(cnf);\n\n keys.forEach(function(key) {\n conf[key] = cnf[key];\n });\n};\nlet w;\nexport const draw = function(text, id) {\n parser.yy.clear();\n parser.parse(text);\n\n const elem = document.getElementById(id);\n w = elem.parentElement.offsetWidth;\n\n if (typeof w === 'undefined') {\n w = 1200;\n }\n\n if (typeof conf.useWidth !== 'undefined') {\n w = conf.useWidth;\n }\n\n const taskArray = parser.yy.getTasks();\n\n // Set height based on number of tasks\n const h = taskArray.length * (conf.barHeight + conf.barGap) + 2 * conf.topPadding;\n\n elem.setAttribute('height', '100%');\n // Set viewBox\n elem.setAttribute('viewBox', '0 0 ' + w + ' ' + h);\n const svg = select(`[id=\"${id}\"]`);\n\n // Set timescale\n const timeScale = scaleTime()\n .domain([\n min(taskArray, function(d) {\n return d.startTime;\n }),\n max(taskArray, function(d) {\n return d.endTime;\n })\n ])\n .rangeRound([0, w - conf.leftPadding - conf.rightPadding]);\n\n let categories = [];\n\n for (let i = 0; i < taskArray.length; i++) {\n categories.push(taskArray[i].type);\n }\n\n const catsUnfiltered = categories; // for vert labels\n\n categories = checkUnique(categories);\n\n function taskCompare(a, b) {\n const taskA = a.startTime;\n const taskB = b.startTime;\n let result = 0;\n if (taskA > taskB) {\n result = 1;\n } else if (taskA < taskB) {\n result = -1;\n }\n return result;\n }\n\n // Sort the task array using the above taskCompare() so that\n // tasks are created based on their order of startTime\n taskArray.sort(taskCompare);\n\n makeGant(taskArray, w, h);\n if (typeof conf.useWidth !== 'undefined') {\n elem.setAttribute('width', w);\n }\n\n svg\n .append('text')\n .text(parser.yy.getTitle())\n .attr('x', w / 2)\n .attr('y', conf.titleTopMargin)\n .attr('class', 'titleText');\n\n function makeGant(tasks, pageWidth, pageHeight) {\n const barHeight = conf.barHeight;\n const gap = barHeight + conf.barGap;\n const topPadding = conf.topPadding;\n const leftPadding = conf.leftPadding;\n\n const colorScale = scaleLinear()\n .domain([0, categories.length])\n .range(['#00B9FA', '#F95002'])\n .interpolate(interpolateHcl);\n\n makeGrid(leftPadding, topPadding, pageWidth, pageHeight);\n drawRects(tasks, gap, topPadding, leftPadding, barHeight, colorScale, pageWidth, pageHeight);\n vertLabels(gap, topPadding, leftPadding, barHeight, colorScale);\n drawToday(leftPadding, topPadding, pageWidth, pageHeight);\n }\n\n function drawRects(theArray, theGap, theTopPad, theSidePad, theBarHeight, theColorScale, w) {\n // Draw background rects covering the entire width of the graph, these form the section rows.\n svg\n .append('g')\n .selectAll('rect')\n .data(theArray)\n .enter()\n .append('rect')\n .attr('x', 0)\n .attr('y', function(d, i) {\n // Ignore the incoming i value and use our order instead\n i = d.order;\n return i * theGap + theTopPad - 2;\n })\n .attr('width', function() {\n return w - conf.rightPadding / 2;\n })\n .attr('height', theGap)\n .attr('class', function(d) {\n for (let i = 0; i < categories.length; i++) {\n if (d.type === categories[i]) {\n return 'section section' + (i % conf.numberSectionStyles);\n }\n }\n return 'section section0';\n });\n\n // Draw the rects representing the tasks\n const rectangles = svg\n .append('g')\n .selectAll('rect')\n .data(theArray)\n .enter();\n\n rectangles\n .append('rect')\n .attr('id', function(d) {\n return d.id;\n })\n .attr('rx', 3)\n .attr('ry', 3)\n .attr('x', function(d) {\n if (d.milestone) {\n return (\n timeScale(d.startTime) +\n theSidePad +\n 0.5 * (timeScale(d.endTime) - timeScale(d.startTime)) -\n 0.5 * theBarHeight\n );\n }\n return timeScale(d.startTime) + theSidePad;\n })\n .attr('y', function(d, i) {\n // Ignore the incoming i value and use our order instead\n i = d.order;\n return i * theGap + theTopPad;\n })\n .attr('width', function(d) {\n if (d.milestone) {\n return theBarHeight;\n }\n return timeScale(d.renderEndTime || d.endTime) - timeScale(d.startTime);\n })\n .attr('height', theBarHeight)\n .attr('transform-origin', function(d, i) {\n return (\n (\n timeScale(d.startTime) +\n theSidePad +\n 0.5 * (timeScale(d.endTime) - timeScale(d.startTime))\n ).toString() +\n 'px ' +\n (i * theGap + theTopPad + 0.5 * theBarHeight).toString() +\n 'px'\n );\n })\n .attr('class', function(d) {\n const res = 'task';\n\n let classStr = '';\n if (d.classes.length > 0) {\n classStr = d.classes.join(' ');\n }\n\n let secNum = 0;\n for (let i = 0; i < categories.length; i++) {\n if (d.type === categories[i]) {\n secNum = i % conf.numberSectionStyles;\n }\n }\n\n let taskClass = '';\n if (d.active) {\n if (d.crit) {\n taskClass += ' activeCrit';\n } else {\n taskClass = ' active';\n }\n } else if (d.done) {\n if (d.crit) {\n taskClass = ' doneCrit';\n } else {\n taskClass = ' done';\n }\n } else {\n if (d.crit) {\n taskClass += ' crit';\n }\n }\n\n if (taskClass.length === 0) {\n taskClass = ' task';\n }\n\n if (d.milestone) {\n taskClass = ' milestone ' + taskClass;\n }\n\n taskClass += secNum;\n\n taskClass += ' ' + classStr;\n\n return res + taskClass;\n });\n\n // Append task labels\n rectangles\n .append('text')\n .attr('id', function(d) {\n return d.id + '-text';\n })\n .text(function(d) {\n return d.task;\n })\n .attr('font-size', conf.fontSize)\n .attr('x', function(d) {\n let startX = timeScale(d.startTime);\n let endX = timeScale(d.renderEndTime || d.endTime);\n if (d.milestone) {\n startX += 0.5 * (timeScale(d.endTime) - timeScale(d.startTime)) - 0.5 * theBarHeight;\n }\n if (d.milestone) {\n endX = startX + theBarHeight;\n }\n const textWidth = this.getBBox().width;\n\n // Check id text width > width of rectangle\n if (textWidth > endX - startX) {\n if (endX + textWidth + 1.5 * conf.leftPadding > w) {\n return startX + theSidePad - 5;\n } else {\n return endX + theSidePad + 5;\n }\n } else {\n return (endX - startX) / 2 + startX + theSidePad;\n }\n })\n .attr('y', function(d, i) {\n // Ignore the incoming i value and use our order instead\n i = d.order;\n return i * theGap + conf.barHeight / 2 + (conf.fontSize / 2 - 2) + theTopPad;\n })\n .attr('text-height', theBarHeight)\n .attr('class', function(d) {\n const startX = timeScale(d.startTime);\n let endX = timeScale(d.endTime);\n if (d.milestone) {\n endX = startX + theBarHeight;\n }\n const textWidth = this.getBBox().width;\n\n let classStr = '';\n if (d.classes.length > 0) {\n classStr = d.classes.join(' ');\n }\n\n let secNum = 0;\n console.log(conf);\n for (let i = 0; i < categories.length; i++) {\n if (d.type === categories[i]) {\n secNum = i % conf.numberSectionStyles;\n }\n }\n\n let taskType = '';\n if (d.active) {\n if (d.crit) {\n taskType = 'activeCritText' + secNum;\n } else {\n taskType = 'activeText' + secNum;\n }\n }\n\n if (d.done) {\n if (d.crit) {\n taskType = taskType + ' doneCritText' + secNum;\n } else {\n taskType = taskType + ' doneText' + secNum;\n }\n } else {\n if (d.crit) {\n taskType = taskType + ' critText' + secNum;\n }\n }\n\n if (d.milestone) {\n taskType += ' milestoneText';\n }\n\n // Check id text width > width of rectangle\n if (textWidth > endX - startX) {\n if (endX + textWidth + 1.5 * conf.leftPadding > w) {\n return classStr + ' taskTextOutsideLeft taskTextOutside' + secNum + ' ' + taskType;\n } else {\n return (\n classStr +\n ' taskTextOutsideRight taskTextOutside' +\n secNum +\n ' ' +\n taskType +\n ' width-' +\n textWidth\n );\n }\n } else {\n return classStr + ' taskText taskText' + secNum + ' ' + taskType + ' width-' + textWidth;\n }\n });\n }\n\n function makeGrid(theSidePad, theTopPad, w, h) {\n let xAxis = axisBottom(timeScale)\n .tickSize(-h + theTopPad + conf.gridLineStartPadding)\n .tickFormat(timeFormat(parser.yy.getAxisFormat() || conf.axisFormat || '%Y-%m-%d'));\n\n svg\n .append('g')\n .attr('class', 'grid')\n .attr('transform', 'translate(' + theSidePad + ', ' + (h - 50) + ')')\n .call(xAxis)\n .selectAll('text')\n .style('text-anchor', 'middle')\n .attr('fill', '#000')\n .attr('stroke', 'none')\n .attr('font-size', 10)\n .attr('dy', '1em');\n }\n\n function vertLabels(theGap, theTopPad) {\n const numOccurances = [];\n let prevGap = 0;\n\n for (let i = 0; i < categories.length; i++) {\n numOccurances[i] = [categories[i], getCount(categories[i], catsUnfiltered)];\n }\n\n svg\n .append('g') // without doing this, impossible to put grid lines behind text\n .selectAll('text')\n .data(numOccurances)\n .enter()\n .append(function(d) {\n const rows = d[0].split(common.lineBreakRegex);\n const dy = -(rows.length - 1) / 2;\n\n const svgLabel = document.createElementNS('http://www.w3.org/2000/svg', 'text');\n svgLabel.setAttribute('dy', dy + 'em');\n\n for (let j = 0; j < rows.length; j++) {\n const tspan = document.createElementNS('http://www.w3.org/2000/svg', 'tspan');\n tspan.setAttribute('alignment-baseline', 'central');\n tspan.setAttribute('x', '10');\n if (j > 0) tspan.setAttribute('dy', '1em');\n tspan.textContent = rows[j];\n svgLabel.appendChild(tspan);\n }\n return svgLabel;\n })\n .attr('x', 10)\n .attr('y', function(d, i) {\n if (i > 0) {\n for (let j = 0; j < i; j++) {\n prevGap += numOccurances[i - 1][1];\n return (d[1] * theGap) / 2 + prevGap * theGap + theTopPad;\n }\n } else {\n return (d[1] * theGap) / 2 + theTopPad;\n }\n })\n .attr('class', function(d) {\n for (let i = 0; i < categories.length; i++) {\n if (d[0] === categories[i]) {\n return 'sectionTitle sectionTitle' + (i % conf.numberSectionStyles);\n }\n }\n return 'sectionTitle';\n });\n }\n\n function drawToday(theSidePad, theTopPad, w, h) {\n const todayMarker = ganttDb.getTodayMarker();\n if (todayMarker === 'off') {\n return;\n }\n\n const todayG = svg.append('g').attr('class', 'today');\n const today = new Date();\n const todayLine = todayG.append('line');\n\n todayLine\n .attr('x1', timeScale(today) + theSidePad)\n .attr('x2', timeScale(today) + theSidePad)\n .attr('y1', conf.titleTopMargin)\n .attr('y2', h - conf.titleTopMargin)\n .attr('class', 'today');\n\n if (todayMarker !== '') {\n todayLine.attr('style', todayMarker.replace(/,/g, ';'));\n }\n }\n\n // from this stackexchange question: http://stackoverflow.com/questions/1890203/unique-for-arrays-in-javascript\n function checkUnique(arr) {\n const hash = {};\n const result = [];\n for (let i = 0, l = arr.length; i < l; ++i) {\n if (!hash.hasOwnProperty(arr[i])) { // eslint-disable-line\n // it works with objects! in FF, at least\n hash[arr[i]] = true;\n result.push(arr[i]);\n }\n }\n return result;\n }\n\n // from this stackexchange question: http://stackoverflow.com/questions/14227981/count-how-many-strings-in-an-array-have-duplicates-in-the-same-array\n function getCounts(arr) {\n let i = arr.length; // const to loop over\n const obj = {}; // obj to store results\n while (i) {\n obj[arr[--i]] = (obj[arr[i]] || 0) + 1; // count occurrences\n }\n return obj;\n }\n\n // get specific from everything\n function getCount(word, arr) {\n return getCounts(arr)[word] || 0;\n }\n};\n\nexport default {\n setConf,\n draw\n};\n","import { select } from 'd3';\nimport { logger } from '../../logger';\nimport { getConfig } from '../../config';\nimport common from '../common/common';\nimport utils from '../../utils';\n\nconst MERMAID_DOM_ID_PREFIX = 'classid-';\n\nconst config = getConfig();\n\nlet relations = [];\nlet classes = {};\nlet classCounter = 0;\n\nlet funs = [];\n\nconst splitClassNameAndType = function(id) {\n let genericType = '';\n let className = id;\n\n if (id.indexOf('~') > 0) {\n let split = id.split('~');\n className = split[0];\n genericType = split[1];\n }\n\n return { className: className, type: genericType };\n};\n\n/**\n * Function called by parser when a node definition has been found.\n * @param id\n * @public\n */\nexport const addClass = function(id) {\n let classId = splitClassNameAndType(id);\n // Only add class if not exists\n if (typeof classes[classId.className] !== 'undefined') return;\n\n classes[classId.className] = {\n id: classId.className,\n type: classId.type,\n cssClasses: [],\n methods: [],\n members: [],\n annotations: [],\n domId: MERMAID_DOM_ID_PREFIX + classId.className + '-' + classCounter\n };\n classCounter++;\n};\n\n/**\n * Function to lookup domId from id in the graph definition.\n * @param id\n * @public\n */\nexport const lookUpDomId = function(id) {\n const classKeys = Object.keys(classes);\n for (let i = 0; i < classKeys.length; i++) {\n if (classes[classKeys[i]].id === id) {\n return classes[classKeys[i]].domId;\n }\n }\n};\n\nexport const clear = function() {\n relations = [];\n classes = {};\n funs = [];\n funs.push(setupToolTips);\n};\n\nexport const getClass = function(id) {\n return classes[id];\n};\nexport const getClasses = function() {\n return classes;\n};\n\nexport const getRelations = function() {\n return relations;\n};\n\nexport const addRelation = function(relation) {\n logger.debug('Adding relation: ' + JSON.stringify(relation));\n addClass(relation.id1);\n addClass(relation.id2);\n\n relation.id1 = splitClassNameAndType(relation.id1).className;\n relation.id2 = splitClassNameAndType(relation.id2).className;\n\n relations.push(relation);\n};\n\n/**\n * Adds an annotation to the specified class\n * Annotations mark special properties of the given type (like 'interface' or 'service')\n * @param className The class name\n * @param annotation The name of the annotation without any brackets\n * @public\n */\nexport const addAnnotation = function(className, annotation) {\n const validatedClassName = splitClassNameAndType(className).className;\n classes[validatedClassName].annotations.push(annotation);\n};\n\n/**\n * Adds a member to the specified class\n * @param className The class name\n * @param member The full name of the member.\n * If the member is enclosed in <
');\n text = text.replace(/\\n/g, '
');\n const lines = text.split(common.lineBreakRegex);\n\n let tHeight = 1.25 * getConfig().state.noteMargin;\n for (const line of lines) {\n const txt = line.trim();\n\n if (txt.length > 0) {\n const span = textElem.append('tspan');\n span.text(txt);\n if (tHeight === 0) {\n const textBounds = span.node().getBBox();\n tHeight += textBounds.height;\n }\n // console.warn('textBounds', textBounds);\n textHeight += tHeight;\n span.attr('x', x + getConfig().state.noteMargin);\n span.attr('y', y + textHeight + 1.25 * getConfig().state.noteMargin);\n }\n }\n return { textWidth: textElem.node().getBBox().width, textHeight };\n};\n\n/**\n * Draws a note to the diagram\n * @param text - The text of the given note.\n * @param g - The element the note is attached to.\n */\n\nexport const drawNote = (text, g) => {\n g.attr('class', 'state-note');\n const note = g\n .append('rect')\n .attr('x', 0)\n .attr('y', getConfig().state.padding);\n const rectElem = g.append('g');\n\n const { textWidth, textHeight } = _drawLongText(text, 0, 0, rectElem);\n note.attr('height', textHeight + 2 * getConfig().state.noteMargin);\n note.attr('width', textWidth + getConfig().state.noteMargin * 2);\n\n return note;\n};\n\n/**\n * Starting point for drawing a state. The function finds out the specifics\n * about the state and renders with approprtiate function.\n * @param {*} elem\n * @param {*} stateDef\n */\n\nexport const drawState = function(elem, stateDef) {\n const id = stateDef.id;\n const stateInfo = {\n id: id,\n label: stateDef.id,\n width: 0,\n height: 0\n };\n\n const g = elem\n .append('g')\n .attr('id', id)\n .attr('class', 'stateGroup');\n\n if (stateDef.type === 'start') drawStartState(g);\n if (stateDef.type === 'end') drawEndState(g);\n if (stateDef.type === 'fork' || stateDef.type === 'join') drawForkJoinState(g, stateDef);\n if (stateDef.type === 'note') drawNote(stateDef.note.text, g);\n if (stateDef.type === 'divider') drawDivider(g);\n if (stateDef.type === 'default' && stateDef.descriptions.length === 0)\n drawSimpleState(g, stateDef);\n if (stateDef.type === 'default' && stateDef.descriptions.length > 0) drawDescrState(g, stateDef);\n\n const stateBox = g.node().getBBox();\n stateInfo.width = stateBox.width + 2 * getConfig().state.padding;\n stateInfo.height = stateBox.height + 2 * getConfig().state.padding;\n\n idCache.set(id, stateInfo);\n // stateCnt++;\n return stateInfo;\n};\n\nlet edgeCount = 0;\nexport const drawEdge = function(elem, path, relation) {\n const getRelationType = function(type) {\n switch (type) {\n case stateDb.relationType.AGGREGATION:\n return 'aggregation';\n case stateDb.relationType.EXTENSION:\n return 'extension';\n case stateDb.relationType.COMPOSITION:\n return 'composition';\n case stateDb.relationType.DEPENDENCY:\n return 'dependency';\n }\n };\n\n path.points = path.points.filter(p => !Number.isNaN(p.y));\n\n // The data for our line\n const lineData = path.points;\n\n // This is the accessor function we talked about above\n const lineFunction = line()\n .x(function(d) {\n return d.x;\n })\n .y(function(d) {\n return d.y;\n })\n .curve(curveBasis);\n\n const svgPath = elem\n .append('path')\n .attr('d', lineFunction(lineData))\n .attr('id', 'edge' + edgeCount)\n .attr('class', 'transition');\n let url = '';\n if (getConfig().state.arrowMarkerAbsolute) {\n url =\n window.location.protocol +\n '//' +\n window.location.host +\n window.location.pathname +\n window.location.search;\n url = url.replace(/\\(/g, '\\\\(');\n url = url.replace(/\\)/g, '\\\\)');\n }\n\n svgPath.attr(\n 'marker-end',\n 'url(' + url + '#' + getRelationType(stateDb.relationType.DEPENDENCY) + 'End' + ')'\n );\n\n if (typeof relation.title !== 'undefined') {\n const label = elem.append('g').attr('class', 'stateLabel');\n\n const { x, y } = utils.calcLabelPosition(path.points);\n\n const rows = common.getRows(relation.title);\n\n // console.warn(rows);\n\n let titleHeight = 0;\n const titleRows = [];\n let maxWidth = 0;\n let minX = 0;\n\n for (let i = 0; i <= rows.length; i++) {\n const title = label\n .append('text')\n .attr('text-anchor', 'middle')\n .text(rows[i])\n .attr('x', x)\n .attr('y', y + titleHeight);\n\n const boundstmp = title.node().getBBox();\n maxWidth = Math.max(maxWidth, boundstmp.width);\n minX = Math.min(minX, boundstmp.x);\n\n logger.info(boundstmp.x, x, y + titleHeight);\n\n if (titleHeight === 0) {\n const titleBox = title.node().getBBox();\n titleHeight = titleBox.height;\n logger.info('Title height', titleHeight, y);\n }\n titleRows.push(title);\n }\n\n let boxHeight = titleHeight * rows.length;\n if (rows.length > 1) {\n const heightAdj = (rows.length - 1) * titleHeight * 0.5;\n\n titleRows.forEach((title, i) => title.attr('y', y + i * titleHeight - heightAdj));\n boxHeight = titleHeight * rows.length;\n }\n\n const bounds = label.node().getBBox();\n\n label\n .insert('rect', ':first-child')\n .attr('class', 'box')\n .attr('x', x - maxWidth / 2 - getConfig().state.padding / 2)\n .attr('y', y - boxHeight / 2 - getConfig().state.padding / 2 - 3.5)\n .attr('width', maxWidth + getConfig().state.padding)\n .attr('height', boxHeight + getConfig().state.padding);\n\n logger.info(bounds);\n\n //label.attr('transform', '0 -' + (bounds.y / 2));\n\n // Debug points\n // path.points.forEach(point => {\n // g.append('circle')\n // .style('stroke', 'red')\n // .style('fill', 'red')\n // .attr('r', 1)\n // .attr('cx', point.x)\n // .attr('cy', point.y);\n // });\n // g.append('circle')\n // .style('stroke', 'blue')\n // .style('fill', 'blue')\n // .attr('r', 1)\n // .attr('cx', x)\n // .attr('cy', y);\n }\n\n edgeCount++;\n};\n","import graphlib from 'graphlib';\nimport { select } from 'd3';\nimport stateDb from './stateDb';\nimport state from './parser/stateDiagram';\nimport { getConfig } from '../../config';\n\nimport { render } from '../../dagre-wrapper/index.js';\nimport { logger } from '../../logger';\n\nconst conf = {};\nexport const setConf = function(cnf) {\n const keys = Object.keys(cnf);\n for (let i = 0; i < keys.length; i++) {\n conf[keys[i]] = cnf[keys[i]];\n }\n};\n\nlet nodeDb = {};\n\n/**\n * Returns the all the styles from classDef statements in the graph definition.\n * @returns {object} classDef styles\n */\nexport const getClasses = function(text) {\n logger.trace('Extracting classes');\n stateDb.clear();\n const parser = state.parser;\n parser.yy = stateDb;\n\n // Parse the graph definition\n parser.parse(text);\n return stateDb.getClasses();\n};\n\nconst setupNode = (g, parent, node, altFlag) => {\n // Add the node\n if (node.id !== 'root') {\n let shape = 'rect';\n if (node.start === true) {\n shape = 'start';\n }\n if (node.start === false) {\n shape = 'end';\n }\n if (node.type !== 'default') {\n shape = node.type;\n }\n\n if (!nodeDb[node.id]) {\n nodeDb[node.id] = {\n id: node.id,\n shape,\n description: node.id,\n classes: 'statediagram-state'\n };\n }\n\n // Build of the array of description strings accordinging\n if (node.description) {\n if (Array.isArray(nodeDb[node.id].description)) {\n // There already is an array of strings,add to it\n nodeDb[node.id].shape = 'rectWithTitle';\n nodeDb[node.id].description.push(node.description);\n } else {\n if (nodeDb[node.id].description.length > 0) {\n // if there is a description already transformit to an array\n nodeDb[node.id].shape = 'rectWithTitle';\n if (nodeDb[node.id].description === node.id) {\n // If the previous description was the is, remove it\n nodeDb[node.id].description = [node.description];\n } else {\n nodeDb[node.id].description = [nodeDb[node.id].description, node.description];\n }\n } else {\n nodeDb[node.id].shape = 'rect';\n nodeDb[node.id].description = node.description;\n }\n }\n }\n\n // Save data for description and group so that for instance a statement without description overwrites\n // one with description\n\n // group\n if (!nodeDb[node.id].type && node.doc) {\n logger.info('Setting cluser for ', node.id);\n nodeDb[node.id].type = 'group';\n nodeDb[node.id].shape = node.type === 'divider' ? 'divider' : 'roundedWithTitle';\n nodeDb[node.id].classes =\n nodeDb[node.id].classes +\n ' ' +\n (altFlag ? 'statediagram-cluster statediagram-cluster-alt' : 'statediagram-cluster');\n }\n\n const nodeData = {\n labelStyle: '',\n shape: nodeDb[node.id].shape,\n labelText: nodeDb[node.id].description,\n classes: nodeDb[node.id].classes, //classStr,\n style: '', //styles.style,\n id: node.id,\n type: nodeDb[node.id].type,\n padding: 15 //getConfig().flowchart.padding\n };\n\n if (node.note) {\n // Todo: set random id\n const noteData = {\n labelStyle: '',\n shape: 'note',\n labelText: node.note.text,\n classes: 'statediagram-note', //classStr,\n style: '', //styles.style,\n id: node.id + '----note',\n type: nodeDb[node.id].type,\n padding: 15 //getConfig().flowchart.padding\n };\n const groupData = {\n labelStyle: '',\n shape: 'noteGroup',\n labelText: node.note.text,\n classes: nodeDb[node.id].classes, //classStr,\n style: '', //styles.style,\n id: node.id + '----parent',\n type: 'group',\n padding: 0 //getConfig().flowchart.padding\n };\n g.setNode(node.id + '----parent', groupData);\n\n g.setNode(noteData.id, noteData);\n g.setNode(node.id, nodeData);\n\n g.setParent(node.id, node.id + '----parent');\n g.setParent(noteData.id, node.id + '----parent');\n\n let from = node.id;\n let to = noteData.id;\n\n if (node.note.position === 'left of') {\n from = noteData.id;\n to = node.id;\n }\n g.setEdge(from, to, {\n arrowhead: 'none',\n arrowType: '',\n style: 'fill:none',\n labelStyle: '',\n classes: 'transition note-edge',\n arrowheadStyle: 'fill: #333',\n labelpos: 'c',\n labelType: 'text',\n thickness: 'normal'\n });\n } else {\n g.setNode(node.id, nodeData);\n }\n }\n\n if (parent) {\n if (parent.id !== 'root') {\n logger.info('Setting node ', node.id, ' to be child of its parent ', parent.id);\n g.setParent(node.id, parent.id);\n }\n }\n if (node.doc) {\n logger.info('Adding nodes children ');\n setupDoc(g, node, node.doc, !altFlag);\n }\n};\nlet cnt = 0;\nconst setupDoc = (g, parent, doc, altFlag) => {\n logger.trace('items', doc);\n doc.forEach(item => {\n if (item.stmt === 'state' || item.stmt === 'default') {\n setupNode(g, parent, item, altFlag);\n } else if (item.stmt === 'relation') {\n setupNode(g, parent, item.state1, altFlag);\n setupNode(g, parent, item.state2, altFlag);\n const edgeData = {\n id: 'edge' + cnt,\n arrowhead: 'normal',\n arrowTypeEnd: 'arrow_barb',\n style: 'fill:none',\n labelStyle: '',\n label: item.description,\n arrowheadStyle: 'fill: #333',\n labelpos: 'c',\n labelType: 'text',\n thickness: 'normal',\n classes: 'transition'\n };\n let startId = item.state1.id;\n let endId = item.state2.id;\n\n g.setEdge(startId, endId, edgeData, cnt);\n cnt++;\n }\n });\n};\n\n/**\n * Draws a flowchart in the tag with id: id based on the graph definition in text.\n * @param text\n * @param id\n */\nexport const draw = function(text, id) {\n logger.info('Drawing state diagram (v2)', id);\n stateDb.clear();\n nodeDb = {};\n const parser = state.parser;\n parser.yy = stateDb;\n\n // Parse the graph definition\n try {\n parser.parse(text);\n } catch (err) {\n logger.debug('Parsing failed');\n }\n\n // Fetch the default direction, use TD if none was found\n let dir = stateDb.getDirection();\n if (typeof dir === 'undefined') {\n dir = 'LR';\n }\n\n const conf = getConfig().state;\n const nodeSpacing = conf.nodeSpacing || 50;\n const rankSpacing = conf.rankSpacing || 50;\n\n // Create the input mermaid.graph\n const g = new graphlib.Graph({\n multigraph: true,\n compound: true\n })\n .setGraph({\n rankdir: 'TB',\n nodesep: nodeSpacing,\n ranksep: rankSpacing,\n marginx: 8,\n marginy: 8\n })\n .setDefaultEdgeLabel(function() {\n return {};\n });\n\n logger.info(stateDb.getRootDocV2());\n stateDb.extract(stateDb.getRootDocV2());\n logger.info(stateDb.getRootDocV2());\n setupNode(g, undefined, stateDb.getRootDocV2(), true);\n\n // Set up an SVG group so that we can translate the final graph.\n const svg = select(`[id=\"${id}\"]`);\n\n // Run the renderer. This is what draws the final graph.\n const element = select('#' + id + ' g');\n render(element, g, ['barb'], 'statediagram', id);\n\n const padding = 8;\n // const svgBounds = svg.node().getBBox();\n // const width = svgBounds.width + padding * 2;\n // const height = svgBounds.height + padding * 2;\n // logger.debug(\n // `new ViewBox 0 0 ${width} ${height}`,\n // `translate(${padding + g._label.marginx}, ${padding + g._label.marginy})`\n // );\n\n // if (conf.useMaxWidth) {\n // svg.attr('width', '100%');\n // svg.attr('style', `max-width: ${width}px;`);\n // } else {\n // svg.attr('height', height);\n // svg.attr('width', width);\n // }\n\n // svg.attr('viewBox', `0 0 ${width} ${height}`);\n // svg\n // .select('g')\n // .attr('transform', `translate(${padding - g._label.marginx}, ${padding - svgBounds.y})`);\n\n const bounds = svg.node().getBBox();\n\n const width = bounds.width + padding * 2;\n const height = bounds.height + padding * 2;\n\n // diagram.attr('height', '100%');\n // diagram.attr('style', `width: ${bounds.width * 3 + conf.padding * 2};`);\n // diagram.attr('height', height);\n\n // Zoom in a bit\n svg.attr('width', width * 1.75);\n svg.attr('class', 'statediagram');\n // diagram.attr('height', bounds.height * 3 + conf.padding * 2);\n // svg.attr(\n // 'viewBox',\n // `${bounds.x - conf.padding} ${bounds.y - conf.padding} ` + width + ' ' + height\n // );\n\n const svgBounds = svg.node().getBBox();\n\n if (conf.useMaxWidth) {\n svg.attr('width', '100%');\n svg.attr('style', `max-width: ${width}px;`);\n } else {\n svg.attr('height', height);\n svg.attr('width', width);\n }\n\n // Ensure the viewBox includes the whole svgBounds area with extra space for padding\n const vBox = `${svgBounds.x - padding} ${svgBounds.y - padding} ${width} ${height}`;\n logger.debug(`viewBox ${vBox}`);\n svg.attr('viewBox', vBox);\n\n // Add label rects for non html labels\n if (!conf.htmlLabels) {\n const labels = document.querySelectorAll('[id=\"' + id + '\"] .edgeLabel .label');\n for (let k = 0; k < labels.length; k++) {\n const label = labels[k];\n\n // Get dimensions of label\n const dim = label.getBBox();\n\n const rect = document.createElementNS('http://www.w3.org/2000/svg', 'rect');\n rect.setAttribute('rx', 0);\n rect.setAttribute('ry', 0);\n rect.setAttribute('width', dim.width);\n rect.setAttribute('height', dim.height);\n rect.setAttribute('style', 'fill:#e8e8e8;');\n\n label.insertBefore(rect, label.firstChild);\n }\n }\n};\n\nexport default {\n setConf,\n getClasses,\n draw\n};\n","import { logger } from '../../logger';\nimport { random } from '../../utils';\nlet commits = {};\nlet head = null;\nlet branches = { master: head };\nlet curBranch = 'master';\nlet direction = 'LR';\nlet seq = 0;\n\nfunction getId() {\n return random({ length: 7 });\n}\n\nfunction isfastforwardable(currentCommit, otherCommit) {\n logger.debug('Entering isfastforwardable:', currentCommit.id, otherCommit.id);\n while (currentCommit.seq <= otherCommit.seq && currentCommit !== otherCommit) {\n // only if other branch has more commits\n if (otherCommit.parent == null) break;\n if (Array.isArray(otherCommit.parent)) {\n logger.debug('In merge commit:', otherCommit.parent);\n return (\n isfastforwardable(currentCommit, commits[otherCommit.parent[0]]) ||\n isfastforwardable(currentCommit, commits[otherCommit.parent[1]])\n );\n } else {\n otherCommit = commits[otherCommit.parent];\n }\n }\n logger.debug(currentCommit.id, otherCommit.id);\n return currentCommit.id === otherCommit.id;\n}\n\nfunction isReachableFrom(currentCommit, otherCommit) {\n const currentSeq = currentCommit.seq;\n const otherSeq = otherCommit.seq;\n if (currentSeq > otherSeq) return isfastforwardable(otherCommit, currentCommit);\n return false;\n}\n\nfunction uniqBy(list, fn) {\n const recordMap = Object.create(null);\n return list.reduce((out, item) => {\n const key = fn(item);\n if (!recordMap[key]) {\n recordMap[key] = true;\n out.push(item);\n }\n return out;\n }, []);\n}\n\nexport const setDirection = function(dir) {\n direction = dir;\n};\nlet options = {};\nexport const setOptions = function(rawOptString) {\n logger.debug('options str', rawOptString);\n rawOptString = rawOptString && rawOptString.trim();\n rawOptString = rawOptString || '{}';\n try {\n options = JSON.parse(rawOptString);\n } catch (e) {\n logger.error('error while parsing gitGraph options', e.message);\n }\n};\n\nexport const getOptions = function() {\n return options;\n};\n\nexport const commit = function(msg) {\n const commit = {\n id: getId(),\n message: msg,\n seq: seq++,\n parent: head == null ? null : head.id\n };\n head = commit;\n commits[commit.id] = commit;\n branches[curBranch] = commit.id;\n logger.debug('in pushCommit ' + commit.id);\n};\n\nexport const branch = function(name) {\n branches[name] = head != null ? head.id : null;\n logger.debug('in createBranch');\n};\n\nexport const merge = function(otherBranch) {\n const currentCommit = commits[branches[curBranch]];\n const otherCommit = commits[branches[otherBranch]];\n if (isReachableFrom(currentCommit, otherCommit)) {\n logger.debug('Already merged');\n return;\n }\n if (isfastforwardable(currentCommit, otherCommit)) {\n branches[curBranch] = branches[otherBranch];\n head = commits[branches[curBranch]];\n } else {\n // create merge commit\n const commit = {\n id: getId(),\n message: 'merged branch ' + otherBranch + ' into ' + curBranch,\n seq: seq++,\n parent: [head == null ? null : head.id, branches[otherBranch]]\n };\n head = commit;\n commits[commit.id] = commit;\n branches[curBranch] = commit.id;\n }\n logger.debug(branches);\n logger.debug('in mergeBranch');\n};\n\nexport const checkout = function(branch) {\n logger.debug('in checkout');\n curBranch = branch;\n const id = branches[curBranch];\n head = commits[id];\n};\n\nexport const reset = function(commitRef) {\n logger.debug('in reset', commitRef);\n const ref = commitRef.split(':')[0];\n let parentCount = parseInt(commitRef.split(':')[1]);\n let commit = ref === 'HEAD' ? head : commits[branches[ref]];\n logger.debug(commit, parentCount);\n while (parentCount > 0) {\n commit = commits[commit.parent];\n parentCount--;\n if (!commit) {\n const err = 'Critical error - unique parent commit not found during reset';\n logger.error(err);\n throw err;\n }\n }\n head = commit;\n branches[curBranch] = commit.id;\n};\n\nfunction upsert(arr, key, newval) {\n const index = arr.indexOf(key);\n if (index === -1) {\n arr.push(newval);\n } else {\n arr.splice(index, 1, newval);\n }\n}\n\nfunction prettyPrintCommitHistory(commitArr) {\n const commit = commitArr.reduce((out, commit) => {\n if (out.seq > commit.seq) return out;\n return commit;\n }, commitArr[0]);\n let line = '';\n commitArr.forEach(function(c) {\n if (c === commit) {\n line += '\\t*';\n } else {\n line += '\\t|';\n }\n });\n const label = [line, commit.id, commit.seq];\n for (let branch in branches) {\n if (branches[branch] === commit.id) label.push(branch);\n }\n logger.debug(label.join(' '));\n if (Array.isArray(commit.parent)) {\n const newCommit = commits[commit.parent[0]];\n upsert(commitArr, commit, newCommit);\n commitArr.push(commits[commit.parent[1]]);\n } else if (commit.parent == null) {\n return;\n } else {\n const nextCommit = commits[commit.parent];\n upsert(commitArr, commit, nextCommit);\n }\n commitArr = uniqBy(commitArr, c => c.id);\n prettyPrintCommitHistory(commitArr);\n}\n\nexport const prettyPrint = function() {\n logger.debug(commits);\n const node = getCommitsArray()[0];\n prettyPrintCommitHistory([node]);\n};\n\nexport const clear = function() {\n commits = {};\n head = null;\n branches = { master: head };\n curBranch = 'master';\n seq = 0;\n};\n\nexport const getBranchesAsObjArray = function() {\n const branchArr = [];\n for (let branch in branches) {\n branchArr.push({ name: branch, commit: commits[branches[branch]] });\n }\n return branchArr;\n};\n\nexport const getBranches = function() {\n return branches;\n};\nexport const getCommits = function() {\n return commits;\n};\nexport const getCommitsArray = function() {\n const commitArr = Object.keys(commits).map(function(key) {\n return commits[key];\n });\n commitArr.forEach(function(o) {\n logger.debug(o.id);\n });\n commitArr.sort((a, b) => b.seq - a.seq);\n return commitArr;\n};\nexport const getCurrentBranch = function() {\n return curBranch;\n};\nexport const getDirection = function() {\n return direction;\n};\nexport const getHead = function() {\n return head;\n};\n\nexport default {\n setDirection,\n setOptions,\n getOptions,\n commit,\n branch,\n merge,\n checkout,\n reset,\n prettyPrint,\n clear,\n getBranchesAsObjArray,\n getBranches,\n getCommits,\n getCommitsArray,\n getCurrentBranch,\n getDirection,\n getHead\n};\n","import { curveBasis, line, select } from 'd3';\n\nimport db from './gitGraphAst';\nimport gitGraphParser from './parser/gitGraph';\nimport { logger } from '../../logger';\nimport { interpolateToCurve } from '../../utils';\n\nlet allCommitsDict = {};\nlet branchNum;\nlet config = {\n nodeSpacing: 150,\n nodeFillColor: 'yellow',\n nodeStrokeWidth: 2,\n nodeStrokeColor: 'grey',\n lineStrokeWidth: 4,\n branchOffset: 50,\n lineColor: 'grey',\n leftMargin: 50,\n branchColors: ['#442f74', '#983351', '#609732', '#AA9A39'],\n nodeRadius: 10,\n nodeLabel: {\n width: 75,\n height: 100,\n x: -25,\n y: 0\n }\n};\nlet apiConfig = {};\nexport const setConf = function(c) {\n apiConfig = c;\n};\n\nfunction svgCreateDefs(svg) {\n svg\n .append('defs')\n .append('g')\n .attr('id', 'def-commit')\n .append('circle')\n .attr('r', config.nodeRadius)\n .attr('cx', 0)\n .attr('cy', 0);\n svg\n .select('#def-commit')\n .append('foreignObject')\n .attr('width', config.nodeLabel.width)\n .attr('height', config.nodeLabel.height)\n .attr('x', config.nodeLabel.x)\n .attr('y', config.nodeLabel.y)\n .attr('class', 'node-label')\n .attr('requiredFeatures', 'http://www.w3.org/TR/SVG11/feature#Extensibility')\n .append('p')\n .html('');\n}\n\nfunction svgDrawLine(svg, points, colorIdx, interpolate) {\n const curve = interpolateToCurve(interpolate, curveBasis);\n const color = config.branchColors[colorIdx % config.branchColors.length];\n const lineGen = line()\n .x(function(d) {\n return Math.round(d.x);\n })\n .y(function(d) {\n return Math.round(d.y);\n })\n .curve(curve);\n\n svg\n .append('svg:path')\n .attr('d', lineGen(points))\n .style('stroke', color)\n .style('stroke-width', config.lineStrokeWidth)\n .style('fill', 'none');\n}\n\n// Pass in the element and its pre-transform coords\nfunction getElementCoords(element, coords) {\n coords = coords || element.node().getBBox();\n const ctm = element.node().getCTM();\n const xn = ctm.e + coords.x * ctm.a;\n const yn = ctm.f + coords.y * ctm.d;\n return {\n left: xn,\n top: yn,\n width: coords.width,\n height: coords.height\n };\n}\n\nfunction svgDrawLineForCommits(svg, fromId, toId, direction, color) {\n logger.debug('svgDrawLineForCommits: ', fromId, toId);\n const fromBbox = getElementCoords(svg.select('#node-' + fromId + ' circle'));\n const toBbox = getElementCoords(svg.select('#node-' + toId + ' circle'));\n switch (direction) {\n case 'LR':\n // (toBbox)\n // +--------\n // + (fromBbox)\n if (fromBbox.left - toBbox.left > config.nodeSpacing) {\n const lineStart = {\n x: fromBbox.left - config.nodeSpacing,\n y: toBbox.top + toBbox.height / 2\n };\n const lineEnd = { x: toBbox.left + toBbox.width, y: toBbox.top + toBbox.height / 2 };\n svgDrawLine(svg, [lineStart, lineEnd], color, 'linear');\n svgDrawLine(\n svg,\n [\n { x: fromBbox.left, y: fromBbox.top + fromBbox.height / 2 },\n { x: fromBbox.left - config.nodeSpacing / 2, y: fromBbox.top + fromBbox.height / 2 },\n { x: fromBbox.left - config.nodeSpacing / 2, y: lineStart.y },\n lineStart\n ],\n color\n );\n } else {\n svgDrawLine(\n svg,\n [\n {\n x: fromBbox.left,\n y: fromBbox.top + fromBbox.height / 2\n },\n {\n x: fromBbox.left - config.nodeSpacing / 2,\n y: fromBbox.top + fromBbox.height / 2\n },\n {\n x: fromBbox.left - config.nodeSpacing / 2,\n y: toBbox.top + toBbox.height / 2\n },\n {\n x: toBbox.left + toBbox.width,\n y: toBbox.top + toBbox.height / 2\n }\n ],\n color\n );\n }\n break;\n case 'BT':\n // + (fromBbox)\n // |\n // |\n // + (toBbox)\n if (toBbox.top - fromBbox.top > config.nodeSpacing) {\n const lineStart = {\n x: toBbox.left + toBbox.width / 2,\n y: fromBbox.top + fromBbox.height + config.nodeSpacing\n };\n const lineEnd = { x: toBbox.left + toBbox.width / 2, y: toBbox.top };\n svgDrawLine(svg, [lineStart, lineEnd], color, 'linear');\n svgDrawLine(\n svg,\n [\n { x: fromBbox.left + fromBbox.width / 2, y: fromBbox.top + fromBbox.height },\n {\n x: fromBbox.left + fromBbox.width / 2,\n y: fromBbox.top + fromBbox.height + config.nodeSpacing / 2\n },\n { x: toBbox.left + toBbox.width / 2, y: lineStart.y - config.nodeSpacing / 2 },\n lineStart\n ],\n color\n );\n } else {\n svgDrawLine(\n svg,\n [\n {\n x: fromBbox.left + fromBbox.width / 2,\n y: fromBbox.top + fromBbox.height\n },\n {\n x: fromBbox.left + fromBbox.width / 2,\n y: fromBbox.top + config.nodeSpacing / 2\n },\n {\n x: toBbox.left + toBbox.width / 2,\n y: toBbox.top - config.nodeSpacing / 2\n },\n {\n x: toBbox.left + toBbox.width / 2,\n y: toBbox.top\n }\n ],\n color\n );\n }\n break;\n }\n}\n\nfunction cloneNode(svg, selector) {\n return svg\n .select(selector)\n .node()\n .cloneNode(true);\n}\n\nfunction renderCommitHistory(svg, commitid, branches, direction) {\n let commit;\n const numCommits = Object.keys(allCommitsDict).length;\n if (typeof commitid === 'string') {\n do {\n commit = allCommitsDict[commitid];\n logger.debug('in renderCommitHistory', commit.id, commit.seq);\n if (svg.select('#node-' + commitid).size() > 0) {\n return;\n }\n svg\n .append(function() {\n return cloneNode(svg, '#def-commit');\n })\n .attr('class', 'commit')\n .attr('id', function() {\n return 'node-' + commit.id;\n })\n .attr('transform', function() {\n switch (direction) {\n case 'LR':\n return (\n 'translate(' +\n (commit.seq * config.nodeSpacing + config.leftMargin) +\n ', ' +\n branchNum * config.branchOffset +\n ')'\n );\n case 'BT':\n return (\n 'translate(' +\n (branchNum * config.branchOffset + config.leftMargin) +\n ', ' +\n (numCommits - commit.seq) * config.nodeSpacing +\n ')'\n );\n }\n })\n .attr('fill', config.nodeFillColor)\n .attr('stroke', config.nodeStrokeColor)\n .attr('stroke-width', config.nodeStrokeWidth);\n\n let branch;\n for (let branchName in branches) {\n if (branches[branchName].commit === commit) {\n branch = branches[branchName];\n break;\n }\n }\n if (branch) {\n logger.debug('found branch ', branch.name);\n svg\n .select('#node-' + commit.id + ' p')\n .append('xhtml:span')\n .attr('class', 'branch-label')\n .text(branch.name + ', ');\n }\n svg\n .select('#node-' + commit.id + ' p')\n .append('xhtml:span')\n .attr('class', 'commit-id')\n .text(commit.id);\n if (commit.message !== '' && direction === 'BT') {\n svg\n .select('#node-' + commit.id + ' p')\n .append('xhtml:span')\n .attr('class', 'commit-msg')\n .text(', ' + commit.message);\n }\n commitid = commit.parent;\n } while (commitid && allCommitsDict[commitid]);\n }\n\n if (Array.isArray(commitid)) {\n logger.debug('found merge commmit', commitid);\n renderCommitHistory(svg, commitid[0], branches, direction);\n branchNum++;\n renderCommitHistory(svg, commitid[1], branches, direction);\n branchNum--;\n }\n}\n\nfunction renderLines(svg, commit, direction, branchColor) {\n branchColor = branchColor || 0;\n while (commit.seq > 0 && !commit.lineDrawn) {\n if (typeof commit.parent === 'string') {\n svgDrawLineForCommits(svg, commit.id, commit.parent, direction, branchColor);\n commit.lineDrawn = true;\n commit = allCommitsDict[commit.parent];\n } else if (Array.isArray(commit.parent)) {\n svgDrawLineForCommits(svg, commit.id, commit.parent[0], direction, branchColor);\n svgDrawLineForCommits(svg, commit.id, commit.parent[1], direction, branchColor + 1);\n renderLines(svg, allCommitsDict[commit.parent[1]], direction, branchColor + 1);\n commit.lineDrawn = true;\n commit = allCommitsDict[commit.parent[0]];\n }\n }\n}\n\nexport const draw = function(txt, id, ver) {\n try {\n const parser = gitGraphParser.parser;\n parser.yy = db;\n parser.yy.clear();\n\n logger.debug('in gitgraph renderer', txt + '\\n', 'id:', id, ver);\n // Parse the graph definition\n parser.parse(txt + '\\n');\n\n config = Object.assign(config, apiConfig, db.getOptions());\n logger.debug('effective options', config);\n const direction = db.getDirection();\n allCommitsDict = db.getCommits();\n const branches = db.getBranchesAsObjArray();\n if (direction === 'BT') {\n config.nodeLabel.x = branches.length * config.branchOffset;\n config.nodeLabel.width = '100%';\n config.nodeLabel.y = -1 * 2 * config.nodeRadius;\n }\n const svg = select(`[id=\"${id}\"]`);\n svgCreateDefs(svg);\n branchNum = 1;\n for (let branch in branches) {\n const v = branches[branch];\n renderCommitHistory(svg, v.commit.id, branches, direction);\n renderLines(svg, v.commit, direction);\n branchNum++;\n }\n svg.attr('height', function() {\n if (direction === 'BT') return Object.keys(allCommitsDict).length * config.nodeSpacing;\n return (branches.length + 1) * config.branchOffset;\n });\n } catch (e) {\n logger.error('Error while rendering gitgraph');\n logger.error(e.message);\n }\n};\n\nexport default {\n setConf,\n draw\n};\n","/**\n * Created by AshishJ on 11-09-2019.\n */\nimport { select, scaleOrdinal, schemeSet2, pie as d3pie, entries, arc } from 'd3';\nimport pieData from './pieDb';\nimport pieParser from './parser/pie';\nimport { logger } from '../../logger';\n\nconst conf = {};\nexport const setConf = function(cnf) {\n const keys = Object.keys(cnf);\n\n keys.forEach(function(key) {\n conf[key] = cnf[key];\n });\n};\n\n/**\n * Draws a Pie Chart with the data given in text.\n * @param text\n * @param id\n */\nlet w;\nexport const draw = (txt, id) => {\n try {\n const parser = pieParser.parser;\n parser.yy = pieData;\n logger.debug('Rendering info diagram\\n' + txt);\n // Parse the Pie Chart definition\n parser.yy.clear();\n parser.parse(txt);\n logger.debug('Parsed info diagram');\n const elem = document.getElementById(id);\n w = elem.parentElement.offsetWidth;\n\n if (typeof w === 'undefined') {\n w = 1200;\n }\n\n if (typeof conf.useWidth !== 'undefined') {\n w = conf.useWidth;\n }\n const h = 450;\n elem.setAttribute('height', '100%');\n // Set viewBox\n elem.setAttribute('viewBox', '0 0 ' + w + ' ' + h);\n\n // Fetch the default direction, use TD if none was found\n\n var width = w; // 450\n var height = 450;\n var margin = 40;\n var legendRectSize = 18;\n var legendSpacing = 4;\n\n var radius = Math.min(width, height) / 2 - margin;\n\n var svg = select('#' + id)\n .append('svg')\n .attr('width', width)\n .attr('height', height)\n .append('g')\n .attr('transform', 'translate(' + width / 2 + ',' + height / 2 + ')');\n\n var data = pieData.getSections();\n var sum = 0;\n Object.keys(data).forEach(function(key) {\n sum += data[key];\n });\n logger.info(data);\n\n // set the color scale\n var color = scaleOrdinal()\n .domain(data)\n .range(schemeSet2);\n\n // Compute the position of each group on the pie:\n var pie = d3pie().value(function(d) {\n return d.value;\n });\n var dataReady = pie(entries(data));\n\n // shape helper to build arcs:\n var arcGenerator = arc()\n .innerRadius(0)\n .outerRadius(radius);\n\n // Build the pie chart: Basically, each part of the pie is a path that we build using the arc function.\n svg\n .selectAll('mySlices')\n .data(dataReady)\n .enter()\n .append('path')\n .attr('d', arcGenerator)\n .attr('fill', function(d) {\n return color(d.data.key);\n })\n .attr('stroke', 'black')\n .style('stroke-width', '2px')\n .style('opacity', 0.7);\n\n // Now add the Percentage. Use the centroid method to get the best coordinates\n svg\n .selectAll('mySlices')\n .data(dataReady)\n .enter()\n .append('text')\n .text(function(d) {\n return ((d.data.value / sum) * 100).toFixed(0) + '%';\n })\n .attr('transform', function(d) {\n return 'translate(' + arcGenerator.centroid(d) + ')';\n })\n .style('text-anchor', 'middle')\n .attr('class', 'slice')\n .style('font-size', 17);\n\n svg\n .append('text')\n .text(parser.yy.getTitle())\n .attr('x', 0)\n .attr('y', -(h - 50) / 2)\n .attr('class', 'pieTitleText');\n\n //Add the slegend/annotations for each section\n var legend = svg\n .selectAll('.legend')\n .data(color.domain())\n .enter()\n .append('g')\n .attr('class', 'legend')\n .attr('transform', function(d, i) {\n var height = legendRectSize + legendSpacing;\n var offset = (height * color.domain().length) / 2;\n var horz = 12 * legendRectSize;\n var vert = i * height - offset;\n return 'translate(' + horz + ',' + vert + ')';\n });\n\n legend\n .append('rect')\n .attr('width', legendRectSize)\n .attr('height', legendRectSize)\n .style('fill', color)\n .style('stroke', color);\n\n legend\n .append('text')\n .attr('x', legendRectSize + legendSpacing)\n .attr('y', legendRectSize - legendSpacing)\n .text(function(d) {\n return d;\n });\n } catch (e) {\n logger.error('Error while rendering info diagram');\n logger.error(e.message);\n }\n};\n\nexport default {\n setConf,\n draw\n};\n","/**\n * Created by knut on 15-01-14.\n */\nimport { logger } from '../../logger';\n\nvar message = '';\nvar info = false;\n\nexport const setMessage = txt => {\n logger.debug('Setting message to: ' + txt);\n message = txt;\n};\n\nexport const getMessage = () => {\n return message;\n};\n\nexport const setInfo = inf => {\n info = inf;\n};\n\nexport const getInfo = () => {\n return info;\n};\n\n// export const parseError = (err, hash) => {\n// global.mermaidAPI.parseError(err, hash)\n// }\n\nexport default {\n setMessage,\n getMessage,\n setInfo,\n getInfo\n // parseError\n};\n","/**\n * Created by knut on 14-12-11.\n */\nimport { select } from 'd3';\nimport db from './infoDb';\nimport infoParser from './parser/info';\nimport { logger } from '../../logger';\n\nconst conf = {};\nexport const setConf = function(cnf) {\n const keys = Object.keys(cnf);\n\n keys.forEach(function(key) {\n conf[key] = cnf[key];\n });\n};\n\n/**\n * Draws a an info picture in the tag with id: id based on the graph definition in text.\n * @param text\n * @param id\n */\nexport const draw = (txt, id, ver) => {\n try {\n const parser = infoParser.parser;\n parser.yy = db;\n logger.debug('Renering info diagram\\n' + txt);\n // Parse the graph definition\n parser.parse(txt);\n logger.debug('Parsed info diagram');\n // Fetch the default direction, use TD if none was found\n const svg = select('#' + id);\n\n const g = svg.append('g');\n\n g.append('text') // text label for the x axis\n .attr('x', 100)\n .attr('y', 40)\n .attr('class', 'version')\n .attr('font-size', '32px')\n .style('text-anchor', 'middle')\n .text('v ' + ver);\n\n svg.attr('height', 100);\n svg.attr('width', 400);\n // svg.attr('viewBox', '0 0 300 150');\n } catch (e) {\n logger.error('Error while rendering info diagram');\n logger.error(e.message);\n }\n};\n\nexport default {\n setConf,\n draw\n};\n","/**\n * Created by knut on 14-12-11.\n */\nimport { select } from 'd3';\nimport { logger } from './logger';\n\nconst conf = {};\nexport const setConf = function(cnf) {\n const keys = Object.keys(cnf);\n\n keys.forEach(function(key) {\n conf[key] = cnf[key];\n });\n};\n\n/**\n * Draws a an info picture in the tag with id: id based on the graph definition in text.\n * @param text\n * @param id\n */\nexport const draw = (id, ver) => {\n try {\n logger.debug('Renering svg for syntax error\\n');\n\n const svg = select('#' + id);\n\n const g = svg.append('g');\n\n g.append('path')\n .attr('class', 'error-icon')\n .attr(\n 'd',\n 'm411.313,123.313c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32-9.375,9.375-20.688-20.688c-12.484-12.5-32.766-12.5-45.25,0l-16,16c-1.261,1.261-2.304,2.648-3.31,4.051-21.739-8.561-45.324-13.426-70.065-13.426-105.867,0-192,86.133-192,192s86.133,192 192,192 192-86.133 192-192c0-24.741-4.864-48.327-13.426-70.065 1.402-1.007 2.79-2.049 4.051-3.31l16-16c12.5-12.492 12.5-32.758 0-45.25l-20.688-20.688 9.375-9.375 32.001-31.999zm-219.313,100.687c-52.938,0-96,43.063-96,96 0,8.836-7.164,16-16,16s-16-7.164-16-16c0-70.578 57.422-128 128-128 8.836,0 16,7.164 16,16s-7.164,16-16,16z'\n );\n\n g.append('path')\n .attr('class', 'error-icon')\n .attr(\n 'd',\n 'm459.02,148.98c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l16,16c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16.001-16z'\n );\n\n g.append('path')\n .attr('class', 'error-icon')\n .attr(\n 'd',\n 'm340.395,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16-16c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l15.999,16z'\n );\n\n g.append('path')\n .attr('class', 'error-icon')\n .attr(\n 'd',\n 'm400,64c8.844,0 16-7.164 16-16v-32c0-8.836-7.156-16-16-16-8.844,0-16,7.164-16,16v32c0,8.836 7.156,16 16,16z'\n );\n\n g.append('path')\n .attr('class', 'error-icon')\n .attr(\n 'd',\n 'm496,96.586h-32c-8.844,0-16,7.164-16,16 0,8.836 7.156,16 16,16h32c8.844,0 16-7.164 16-16 0-8.836-7.156-16-16-16z'\n );\n\n g.append('path')\n .attr('class', 'error-icon')\n .attr(\n 'd',\n 'm436.98,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688l32-32c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32c-6.251,6.25-6.251,16.375-0.001,22.625z'\n );\n\n g.append('text') // text label for the x axis\n .attr('class', 'error-text')\n .attr('x', 1240)\n .attr('y', 250)\n .attr('font-size', '150px')\n .style('text-anchor', 'middle')\n .text('Syntax error in graph');\n g.append('text') // text label for the x axis\n .attr('class', 'error-text')\n .attr('x', 1050)\n .attr('y', 400)\n .attr('font-size', '100px')\n .style('text-anchor', 'middle')\n .text('mermaid version ' + ver);\n\n svg.attr('height', 100);\n svg.attr('width', 400);\n svg.attr('viewBox', '768 0 512 512');\n } catch (e) {\n logger.error('Error while rendering info diagram');\n logger.error(e.message);\n }\n};\n\nexport default {\n setConf,\n draw\n};\n","/**\n *\n */\nimport { logger } from '../../logger';\n\nlet sections = {};\nlet title = '';\n\nconst addSection = function(id, value) {\n if (typeof sections[id] === 'undefined') {\n sections[id] = value;\n logger.debug('Added new section :', id);\n }\n};\nconst getSections = () => sections;\n\nconst setTitle = function(txt) {\n title = txt;\n};\n\nconst getTitle = function() {\n return title;\n};\nconst cleanupValue = function(value) {\n if (value.substring(0, 1) === ':') {\n value = value.substring(1).trim();\n return Number(value.trim());\n } else {\n return Number(value.trim());\n }\n};\n\nconst clear = function() {\n sections = {};\n title = '';\n};\n// export const parseError = (err, hash) => {\n// global.mermaidAPI.parseError(err, hash)\n// }\n\nexport default {\n addSection,\n getSections,\n cleanupValue,\n clear,\n setTitle,\n getTitle\n // parseError\n};\n","/**\n *\n */\nimport { logger } from '../../logger';\n\nlet entities = {};\nlet relationships = [];\nlet title = '';\n\nconst Cardinality = {\n ZERO_OR_ONE: 'ZERO_OR_ONE',\n ZERO_OR_MORE: 'ZERO_OR_MORE',\n ONE_OR_MORE: 'ONE_OR_MORE',\n ONLY_ONE: 'ONLY_ONE'\n};\n\nconst Identification = {\n NON_IDENTIFYING: 'NON_IDENTIFYING',\n IDENTIFYING: 'IDENTIFYING'\n};\n\nconst addEntity = function(name) {\n if (typeof entities[name] === 'undefined') {\n entities[name] = name;\n logger.debug('Added new entity :', name);\n }\n};\n\nconst getEntities = () => entities;\n\n/**\n * Add a relationship\n * @param entA The first entity in the relationship\n * @param rolA The role played by the first entity in relation to the second\n * @param entB The second entity in the relationship\n * @param rSpec The details of the relationship between the two entities\n */\nconst addRelationship = function(entA, rolA, entB, rSpec) {\n let rel = {\n entityA: entA,\n roleA: rolA,\n entityB: entB,\n relSpec: rSpec\n };\n\n relationships.push(rel);\n logger.debug('Added new relationship :', rel);\n};\n\nconst getRelationships = () => relationships;\n\n// Keep this - TODO: revisit...allow the diagram to have a title\nconst setTitle = function(txt) {\n title = txt;\n};\n\nconst getTitle = function() {\n return title;\n};\n\nconst clear = function() {\n entities = {};\n relationships = [];\n title = '';\n};\n\nexport default {\n Cardinality,\n Identification,\n addEntity,\n getEntities,\n addRelationship,\n getRelationships,\n clear,\n setTitle,\n getTitle\n};\n","const ERMarkers = {\n ONLY_ONE_START: 'ONLY_ONE_START',\n ONLY_ONE_END: 'ONLY_ONE_END',\n ZERO_OR_ONE_START: 'ZERO_OR_ONE_START',\n ZERO_OR_ONE_END: 'ZERO_OR_ONE_END',\n ONE_OR_MORE_START: 'ONE_OR_MORE_START',\n ONE_OR_MORE_END: 'ONE_OR_MORE_END',\n ZERO_OR_MORE_START: 'ZERO_OR_MORE_START',\n ZERO_OR_MORE_END: 'ZERO_OR_MORE_END'\n};\n\n/**\n * Put the markers into the svg DOM for later use with edge paths\n */\nconst insertMarkers = function(elem, conf) {\n let marker;\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', ERMarkers.ONLY_ONE_START)\n .attr('refX', 0)\n .attr('refY', 9)\n .attr('markerWidth', 18)\n .attr('markerHeight', 18)\n .attr('orient', 'auto')\n .append('path')\n .attr('stroke', conf.stroke)\n .attr('fill', 'none')\n .attr('d', 'M9,0 L9,18 M15,0 L15,18');\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', ERMarkers.ONLY_ONE_END)\n .attr('refX', 18)\n .attr('refY', 9)\n .attr('markerWidth', 18)\n .attr('markerHeight', 18)\n .attr('orient', 'auto')\n .append('path')\n .attr('stroke', conf.stroke)\n .attr('fill', 'none')\n .attr('d', 'M3,0 L3,18 M9,0 L9,18');\n\n marker = elem\n .append('defs')\n .append('marker')\n .attr('id', ERMarkers.ZERO_OR_ONE_START)\n .attr('refX', 0)\n .attr('refY', 9)\n .attr('markerWidth', 30)\n .attr('markerHeight', 18)\n .attr('orient', 'auto');\n marker\n .append('circle')\n .attr('stroke', conf.stroke)\n .attr('fill', 'white')\n .attr('cx', 21)\n .attr('cy', 9)\n .attr('r', 6);\n marker\n .append('path')\n .attr('stroke', conf.stroke)\n .attr('fill', 'none')\n .attr('d', 'M9,0 L9,18');\n\n marker = elem\n .append('defs')\n .append('marker')\n .attr('id', ERMarkers.ZERO_OR_ONE_END)\n .attr('refX', 30)\n .attr('refY', 9)\n .attr('markerWidth', 30)\n .attr('markerHeight', 18)\n .attr('orient', 'auto');\n marker\n .append('circle')\n .attr('stroke', conf.stroke)\n .attr('fill', 'white')\n .attr('cx', 9)\n .attr('cy', 9)\n .attr('r', 6);\n marker\n .append('path')\n .attr('stroke', conf.stroke)\n .attr('fill', 'none')\n .attr('d', 'M21,0 L21,18');\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', ERMarkers.ONE_OR_MORE_START)\n .attr('refX', 18)\n .attr('refY', 18)\n .attr('markerWidth', 45)\n .attr('markerHeight', 36)\n .attr('orient', 'auto')\n .append('path')\n .attr('stroke', conf.stroke)\n .attr('fill', 'none')\n .attr('d', 'M0,18 Q 18,0 36,18 Q 18,36 0,18 M42,9 L42,27');\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', ERMarkers.ONE_OR_MORE_END)\n .attr('refX', 27)\n .attr('refY', 18)\n .attr('markerWidth', 45)\n .attr('markerHeight', 36)\n .attr('orient', 'auto')\n .append('path')\n .attr('stroke', conf.stroke)\n .attr('fill', 'none')\n .attr('d', 'M3,9 L3,27 M9,18 Q27,0 45,18 Q27,36 9,18');\n\n marker = elem\n .append('defs')\n .append('marker')\n .attr('id', ERMarkers.ZERO_OR_MORE_START)\n .attr('refX', 18)\n .attr('refY', 18)\n .attr('markerWidth', 57)\n .attr('markerHeight', 36)\n .attr('orient', 'auto');\n marker\n .append('circle')\n .attr('stroke', conf.stroke)\n .attr('fill', 'white')\n .attr('cx', 48)\n .attr('cy', 18)\n .attr('r', 6);\n marker\n .append('path')\n .attr('stroke', conf.stroke)\n .attr('fill', 'none')\n .attr('d', 'M0,18 Q18,0 36,18 Q18,36 0,18');\n\n marker = elem\n .append('defs')\n .append('marker')\n .attr('id', ERMarkers.ZERO_OR_MORE_END)\n .attr('refX', 39)\n .attr('refY', 18)\n .attr('markerWidth', 57)\n .attr('markerHeight', 36)\n .attr('orient', 'auto');\n marker\n .append('circle')\n .attr('stroke', conf.stroke)\n .attr('fill', 'white')\n .attr('cx', 9)\n .attr('cy', 18)\n .attr('r', 6);\n marker\n .append('path')\n .attr('stroke', conf.stroke)\n .attr('fill', 'none')\n .attr('d', 'M21,18 Q39,0 57,18 Q39,36 21,18');\n\n return;\n};\n\nexport default {\n ERMarkers,\n insertMarkers\n};\n","import graphlib from 'graphlib';\nimport { line, curveBasis, select } from 'd3';\nimport erDb from './erDb';\nimport erParser from './parser/erDiagram';\nimport dagre from 'dagre';\nimport { getConfig } from '../../config';\nimport { logger } from '../../logger';\nimport erMarkers from './erMarkers';\n\nconst conf = {};\n\n/**\n * Allows the top-level API module to inject config specific to this renderer,\n * storing it in the local conf object. Note that generic config still needs to be\n * retrieved using getConfig() imported from the config module\n */\nexport const setConf = function(cnf) {\n const keys = Object.keys(cnf);\n for (let i = 0; i < keys.length; i++) {\n conf[keys[i]] = cnf[keys[i]];\n }\n};\n\n/**\n * Use D3 to construct the svg elements for the entities\n * @param svgNode the svg node that contains the diagram\n * @param entities The entities to be drawn\n * @param graph The graph that contains the vertex and edge definitions post-layout\n * @return The first entity that was inserted\n */\nconst drawEntities = function(svgNode, entities, graph) {\n const keys = Object.keys(entities);\n let firstOne;\n\n keys.forEach(function(id) {\n // Create a group for each entity\n const groupNode = svgNode.append('g').attr('id', id);\n\n firstOne = firstOne === undefined ? id : firstOne;\n\n // Label the entity - this is done first so that we can get the bounding box\n // which then determines the size of the rectangle\n const textId = 'entity-' + id;\n const textNode = groupNode\n .append('text')\n .attr('class', 'er entityLabel')\n .attr('id', textId)\n .attr('x', 0)\n .attr('y', 0)\n .attr('dominant-baseline', 'middle')\n .attr('text-anchor', 'middle')\n .attr(\n 'style',\n 'font-family: ' + getConfig().fontFamily + '; font-size: ' + conf.fontSize + 'px'\n )\n .text(id);\n\n // Calculate the width and height of the entity\n const textBBox = textNode.node().getBBox();\n const entityWidth = Math.max(conf.minEntityWidth, textBBox.width + conf.entityPadding * 2);\n const entityHeight = Math.max(conf.minEntityHeight, textBBox.height + conf.entityPadding * 2);\n\n // Make sure the text gets centred relative to the entity box\n textNode.attr('transform', 'translate(' + entityWidth / 2 + ',' + entityHeight / 2 + ')');\n\n // Draw the rectangle - insert it before the text so that the text is not obscured\n const rectNode = groupNode\n .insert('rect', '#' + textId)\n .attr('class', 'er entityBox')\n .attr('fill', conf.fill)\n .attr('fill-opacity', '100%')\n .attr('stroke', conf.stroke)\n .attr('x', 0)\n .attr('y', 0)\n .attr('width', entityWidth)\n .attr('height', entityHeight);\n\n const rectBBox = rectNode.node().getBBox();\n\n // Add the entity to the graph\n graph.setNode(id, {\n width: rectBBox.width,\n height: rectBBox.height,\n shape: 'rect',\n id: id\n });\n });\n return firstOne;\n}; // drawEntities\n\nconst adjustEntities = function(svgNode, graph) {\n graph.nodes().forEach(function(v) {\n if (typeof v !== 'undefined' && typeof graph.node(v) !== 'undefined') {\n svgNode\n .select('#' + v)\n .attr(\n 'transform',\n 'translate(' +\n (graph.node(v).x - graph.node(v).width / 2) +\n ',' +\n (graph.node(v).y - graph.node(v).height / 2) +\n ' )'\n );\n }\n });\n return;\n};\n\nconst getEdgeName = function(rel) {\n return (rel.entityA + rel.roleA + rel.entityB).replace(/\\s/g, '');\n};\n\n/**\n * Add each relationship to the graph\n * @param relationships the relationships to be added\n * @param g the graph\n * @return {Array} The array of relationships\n */\nconst addRelationships = function(relationships, g) {\n relationships.forEach(function(r) {\n g.setEdge(r.entityA, r.entityB, { relationship: r }, getEdgeName(r));\n });\n return relationships;\n}; // addRelationships\n\nlet relCnt = 0;\n/**\n * Draw a relationship using edge information from the graph\n * @param svg the svg node\n * @param rel the relationship to draw in the svg\n * @param g the graph containing the edge information\n * @param insert the insertion point in the svg DOM (because relationships have markers that need to sit 'behind' opaque entity boxes)\n */\nconst drawRelationshipFromLayout = function(svg, rel, g, insert) {\n relCnt++;\n\n // Find the edge relating to this relationship\n const edge = g.edge(rel.entityA, rel.entityB, getEdgeName(rel));\n\n // Get a function that will generate the line path\n const lineFunction = line()\n .x(function(d) {\n return d.x;\n })\n .y(function(d) {\n return d.y;\n })\n .curve(curveBasis);\n\n // Insert the line at the right place\n const svgPath = svg\n .insert('path', '#' + insert)\n .attr('class', 'er relationshipLine')\n .attr('d', lineFunction(edge.points))\n .attr('stroke', conf.stroke)\n .attr('fill', 'none');\n\n // ...and with dashes if necessary\n if (rel.relSpec.relType === erDb.Identification.NON_IDENTIFYING) {\n svgPath.attr('stroke-dasharray', '8,8');\n }\n\n // TODO: Understand this better\n let url = '';\n if (conf.arrowMarkerAbsolute) {\n url =\n window.location.protocol +\n '//' +\n window.location.host +\n window.location.pathname +\n window.location.search;\n url = url.replace(/\\(/g, '\\\\(');\n url = url.replace(/\\)/g, '\\\\)');\n }\n\n // Decide which start and end markers it needs. It may be possible to be more concise here\n // by reversing a start marker to make an end marker...but this will do for now\n\n // Note that the 'A' entity's marker is at the end of the relationship and the 'B' entity's marker is at the start\n switch (rel.relSpec.cardA) {\n case erDb.Cardinality.ZERO_OR_ONE:\n svgPath.attr('marker-end', 'url(' + url + '#' + erMarkers.ERMarkers.ZERO_OR_ONE_END + ')');\n break;\n case erDb.Cardinality.ZERO_OR_MORE:\n svgPath.attr('marker-end', 'url(' + url + '#' + erMarkers.ERMarkers.ZERO_OR_MORE_END + ')');\n break;\n case erDb.Cardinality.ONE_OR_MORE:\n svgPath.attr('marker-end', 'url(' + url + '#' + erMarkers.ERMarkers.ONE_OR_MORE_END + ')');\n break;\n case erDb.Cardinality.ONLY_ONE:\n svgPath.attr('marker-end', 'url(' + url + '#' + erMarkers.ERMarkers.ONLY_ONE_END + ')');\n break;\n }\n\n switch (rel.relSpec.cardB) {\n case erDb.Cardinality.ZERO_OR_ONE:\n svgPath.attr(\n 'marker-start',\n 'url(' + url + '#' + erMarkers.ERMarkers.ZERO_OR_ONE_START + ')'\n );\n break;\n case erDb.Cardinality.ZERO_OR_MORE:\n svgPath.attr(\n 'marker-start',\n 'url(' + url + '#' + erMarkers.ERMarkers.ZERO_OR_MORE_START + ')'\n );\n break;\n case erDb.Cardinality.ONE_OR_MORE:\n svgPath.attr(\n 'marker-start',\n 'url(' + url + '#' + erMarkers.ERMarkers.ONE_OR_MORE_START + ')'\n );\n break;\n case erDb.Cardinality.ONLY_ONE:\n svgPath.attr('marker-start', 'url(' + url + '#' + erMarkers.ERMarkers.ONLY_ONE_START + ')');\n break;\n }\n\n // Now label the relationship\n\n // Find the half-way point\n const len = svgPath.node().getTotalLength();\n const labelPoint = svgPath.node().getPointAtLength(len * 0.5);\n\n // Append a text node containing the label\n const labelId = 'rel' + relCnt;\n\n const labelNode = svg\n .append('text')\n .attr('class', 'er relationshipLabel')\n .attr('id', labelId)\n .attr('x', labelPoint.x)\n .attr('y', labelPoint.y)\n .attr('text-anchor', 'middle')\n .attr('dominant-baseline', 'middle')\n .attr(\n 'style',\n 'font-family: ' + getConfig().fontFamily + '; font-size: ' + conf.fontSize + 'px'\n )\n .text(rel.roleA);\n\n // Figure out how big the opaque 'container' rectangle needs to be\n const labelBBox = labelNode.node().getBBox();\n\n // Insert the opaque rectangle before the text label\n svg\n .insert('rect', '#' + labelId)\n .attr('class', 'er relationshipLabelBox')\n .attr('x', labelPoint.x - labelBBox.width / 2)\n .attr('y', labelPoint.y - labelBBox.height / 2)\n .attr('width', labelBBox.width)\n .attr('height', labelBBox.height)\n .attr('fill', 'white')\n .attr('fill-opacity', '85%');\n\n return;\n};\n\n/**\n * Draw en E-R diagram in the tag with id: id based on the text definition of the diagram\n * @param text the text of the diagram\n * @param id the unique id of the DOM node that contains the diagram\n */\nexport const draw = function(text, id) {\n logger.info('Drawing ER diagram');\n erDb.clear();\n const parser = erParser.parser;\n parser.yy = erDb;\n\n // Parse the text to populate erDb\n try {\n parser.parse(text);\n } catch (err) {\n logger.debug('Parsing failed');\n }\n\n // Get a reference to the svg node that contains the text\n const svg = select(`[id='${id}']`);\n\n // Add cardinality marker definitions to the svg\n erMarkers.insertMarkers(svg, conf);\n\n // Now we have to construct the diagram in a specific way:\n // ---\n // 1. Create all the entities in the svg node at 0,0, but with the correct dimensions (allowing for text content)\n // 2. Make sure they are all added to the graph\n // 3. Add all the edges (relationships) to the graph aswell\n // 4. Let dagre do its magic to layout the graph. This assigns:\n // - the centre co-ordinates for each node, bearing in mind the dimensions and edge relationships\n // - the path co-ordinates for each edge\n // But it has no impact on the svg child nodes - the diagram remains with every entity rooted at 0,0\n // 5. Now assign a transform to each entity in the svg node so that it gets drawn in the correct place, as determined by\n // its centre point, which is obtained from the graph, and it's width and height\n // 6. And finally, create all the edges in the svg node using information from the graph\n // ---\n\n // Create the graph\n let g;\n\n // TODO: Explore directed vs undirected graphs, and how the layout is affected\n // An E-R diagram could be said to be undirected, but there is merit in setting\n // the direction from parent to child in a one-to-many as this influences graphlib to\n // put the parent above the child (does it?), which is intuitive. Most relationships\n // in ER diagrams are one-to-many.\n g = new graphlib.Graph({\n multigraph: true,\n directed: true,\n compound: false\n })\n .setGraph({\n rankdir: conf.layoutDirection,\n marginx: 20,\n marginy: 20,\n nodesep: 100,\n edgesep: 100,\n ranksep: 100\n })\n .setDefaultEdgeLabel(function() {\n return {};\n });\n\n // Draw the entities (at 0,0), returning the first svg node that got\n // inserted - this represents the insertion point for relationship paths\n const firstEntity = drawEntities(svg, erDb.getEntities(), g);\n\n // TODO: externalise the addition of entities to the graph - it's a bit 'buried' in the above\n\n // Add all the relationships to the graph\n const relationships = addRelationships(erDb.getRelationships(), g);\n\n dagre.layout(g); // Node and edge positions will be updated\n\n // Adjust the positions of the entities so that they adhere to the layout\n adjustEntities(svg, g);\n\n // Draw the relationships\n relationships.forEach(function(rel) {\n drawRelationshipFromLayout(svg, rel, g, firstEntity);\n });\n\n const padding = conf.diagramPadding;\n\n const svgBounds = svg.node().getBBox();\n const width = svgBounds.width + padding * 2;\n const height = svgBounds.height + padding * 2;\n\n if (conf.useMaxWidth) {\n svg.attr('width', '100%');\n svg.attr('style', `max-width: ${width}px;`);\n } else {\n svg.attr('height', height);\n svg.attr('width', width);\n }\n\n svg.attr('viewBox', `${svgBounds.x - padding} ${svgBounds.y - padding} ${width} ${height}`);\n}; // draw\n\nexport default {\n setConf,\n draw\n};\n","let title = '';\nlet currentSection = '';\n\nconst sections = [];\nconst tasks = [];\nconst rawTasks = [];\n\nexport const clear = function() {\n sections.length = 0;\n tasks.length = 0;\n currentSection = '';\n title = '';\n rawTasks.length = 0;\n};\n\nexport const setTitle = function(txt) {\n title = txt;\n};\n\nexport const getTitle = function() {\n return title;\n};\n\nexport const addSection = function(txt) {\n currentSection = txt;\n sections.push(txt);\n};\n\nexport const getSections = function() {\n return sections;\n};\n\nexport const getTasks = function() {\n let allItemsProcessed = compileTasks();\n const maxDepth = 100;\n let iterationCount = 0;\n while (!allItemsProcessed && iterationCount < maxDepth) {\n allItemsProcessed = compileTasks();\n iterationCount++;\n }\n\n tasks.push(...rawTasks);\n\n return tasks;\n};\n\nconst updateActors = function() {\n const tempActors = [];\n tasks.forEach(task => {\n if (task.people) {\n tempActors.push(...task.people);\n }\n });\n\n const unique = new Set(tempActors);\n return [...unique].sort();\n};\n\nexport const addTask = function(descr, taskData) {\n const pieces = taskData.substr(1).split(':');\n\n let score = 0;\n let peeps = [];\n if (pieces.length === 1) {\n score = Number(pieces[0]);\n peeps = [];\n } else {\n score = Number(pieces[0]);\n peeps = pieces[1].split(',');\n }\n const peopleList = peeps.map(s => s.trim());\n\n const rawTask = {\n section: currentSection,\n type: currentSection,\n people: peopleList,\n task: descr,\n score\n };\n\n rawTasks.push(rawTask);\n};\n\nexport const addTaskOrg = function(descr) {\n const newTask = {\n section: currentSection,\n type: currentSection,\n description: descr,\n task: descr,\n classes: []\n };\n tasks.push(newTask);\n};\n\nconst compileTasks = function() {\n const compileTask = function(pos) {\n return rawTasks[pos].processed;\n };\n\n let allProcessed = true;\n for (let i = 0; i < rawTasks.length; i++) {\n compileTask(i);\n\n allProcessed = allProcessed && rawTasks[i].processed;\n }\n return allProcessed;\n};\n\nconst getActors = function() {\n return updateActors();\n};\n\nexport default {\n clear,\n setTitle,\n getTitle,\n addSection,\n getSections,\n getTasks,\n addTask,\n addTaskOrg,\n getActors\n};\n","import { arc as d3arc } from 'd3';\n\nexport const drawRect = function(elem, rectData) {\n const rectElem = elem.append('rect');\n rectElem.attr('x', rectData.x);\n rectElem.attr('y', rectData.y);\n rectElem.attr('fill', rectData.fill);\n rectElem.attr('stroke', rectData.stroke);\n rectElem.attr('width', rectData.width);\n rectElem.attr('height', rectData.height);\n rectElem.attr('rx', rectData.rx);\n rectElem.attr('ry', rectData.ry);\n\n if (typeof rectData.class !== 'undefined') {\n rectElem.attr('class', rectData.class);\n }\n\n return rectElem;\n};\n\nexport const drawFace = function(element, faceData) {\n const radius = 15;\n const circleElement = element\n .append('circle')\n .attr('cx', faceData.cx)\n .attr('cy', faceData.cy)\n .attr('class', 'face')\n .attr('r', radius)\n .attr('stroke-width', 2)\n .attr('overflow', 'visible');\n\n const face = element.append('g');\n\n //left eye\n face\n .append('circle')\n .attr('cx', faceData.cx - radius / 3)\n .attr('cy', faceData.cy - radius / 3)\n .attr('r', 1.5)\n .attr('stroke-width', 2)\n .attr('fill', '#666')\n .attr('stroke', '#666');\n\n //right eye\n face\n .append('circle')\n .attr('cx', faceData.cx + radius / 3)\n .attr('cy', faceData.cy - radius / 3)\n .attr('r', 1.5)\n .attr('stroke-width', 2)\n .attr('fill', '#666')\n .attr('stroke', '#666');\n\n function smile(face) {\n const arc = d3arc()\n .startAngle(Math.PI / 2)\n .endAngle(3 * (Math.PI / 2))\n .innerRadius(radius / 2)\n .outerRadius(radius / 2.2);\n //mouth\n face\n .append('path')\n .attr('class', 'mouth')\n .attr('d', arc)\n .attr('transform', 'translate(' + faceData.cx + ',' + (faceData.cy + 2) + ')');\n }\n\n function sad(face) {\n const arc = d3arc()\n .startAngle((3 * Math.PI) / 2)\n .endAngle(5 * (Math.PI / 2))\n .innerRadius(radius / 2)\n .outerRadius(radius / 2.2);\n //mouth\n face\n .append('path')\n .attr('class', 'mouth')\n .attr('d', arc)\n .attr('transform', 'translate(' + faceData.cx + ',' + (faceData.cy + 7) + ')');\n }\n\n function ambivalent(face) {\n face\n .append('line')\n .attr('class', 'mouth')\n .attr('stroke', 2)\n .attr('x1', faceData.cx - 5)\n .attr('y1', faceData.cy + 7)\n .attr('x2', faceData.cx + 5)\n .attr('y2', faceData.cy + 7)\n .attr('class', 'mouth')\n .attr('stroke-width', '1px')\n .attr('stroke', '#666');\n }\n\n if (faceData.score > 3) {\n smile(face);\n } else if (faceData.score < 3) {\n sad(face);\n } else {\n ambivalent(face);\n }\n\n return circleElement;\n};\n\nexport const drawCircle = function(element, circleData) {\n const circleElement = element.append('circle');\n circleElement.attr('cx', circleData.cx);\n circleElement.attr('cy', circleData.cy);\n circleElement.attr('fill', circleData.fill);\n circleElement.attr('stroke', circleData.stroke);\n circleElement.attr('r', circleData.r);\n\n if (typeof circleElement.class !== 'undefined') {\n circleElement.attr('class', circleElement.class);\n }\n\n if (typeof circleData.title !== 'undefined') {\n circleElement.append('title').text(circleData.title);\n }\n\n return circleElement;\n};\n\nexport const drawText = function(elem, textData) {\n // Remove and ignore br:s\n const nText = textData.text.replace(/
/gi, ' ');\n\n const textElem = elem.append('text');\n textElem.attr('x', textData.x);\n textElem.attr('y', textData.y);\n textElem.attr('class', 'legend');\n\n textElem.style('text-anchor', textData.anchor);\n\n if (typeof textData.class !== 'undefined') {\n textElem.attr('class', textData.class);\n }\n\n const span = textElem.append('tspan');\n span.attr('x', textData.x + textData.textMargin * 2);\n span.text(nText);\n\n return textElem;\n};\n\nexport const drawLabel = function(elem, txtObject) {\n function genPoints(x, y, width, height, cut) {\n return (\n x +\n ',' +\n y +\n ' ' +\n (x + width) +\n ',' +\n y +\n ' ' +\n (x + width) +\n ',' +\n (y + height - cut) +\n ' ' +\n (x + width - cut * 1.2) +\n ',' +\n (y + height) +\n ' ' +\n x +\n ',' +\n (y + height)\n );\n }\n const polygon = elem.append('polygon');\n polygon.attr('points', genPoints(txtObject.x, txtObject.y, 50, 20, 7));\n polygon.attr('class', 'labelBox');\n\n txtObject.y = txtObject.y + txtObject.labelMargin;\n txtObject.x = txtObject.x + 0.5 * txtObject.labelMargin;\n drawText(elem, txtObject);\n};\n\nexport const drawSection = function(elem, section, conf) {\n const g = elem.append('g');\n\n const rect = getNoteRect();\n rect.x = section.x;\n rect.y = section.y;\n rect.fill = section.fill;\n rect.width = conf.width;\n rect.height = conf.height;\n rect.class = 'journey-section section-type-' + section.num;\n rect.rx = 3;\n rect.ry = 3;\n drawRect(g, rect);\n\n _drawTextCandidateFunc(conf)(\n section.text,\n g,\n rect.x,\n rect.y,\n rect.width,\n rect.height,\n { class: 'journey-section section-type-' + section.num },\n conf,\n section.colour\n );\n};\n\nlet taskCount = -1;\n/**\n * Draws an actor in the diagram with the attaced line\n * @param elem The HTML element\n * @param task The task to render\n * @param conf The global configuration\n */\nexport const drawTask = function(elem, task, conf) {\n const center = task.x + conf.width / 2;\n const g = elem.append('g');\n taskCount++;\n const maxHeight = 300 + 5 * 30;\n g.append('line')\n .attr('id', 'task' + taskCount)\n .attr('x1', center)\n .attr('y1', task.y)\n .attr('x2', center)\n .attr('y2', maxHeight)\n .attr('class', 'task-line')\n .attr('stroke-width', '1px')\n .attr('stroke-dasharray', '4 2')\n .attr('stroke', '#666');\n\n drawFace(g, {\n cx: center,\n cy: 300 + (5 - task.score) * 30,\n score: task.score\n });\n\n const rect = getNoteRect();\n rect.x = task.x;\n rect.y = task.y;\n rect.fill = task.fill;\n rect.width = conf.width;\n rect.height = conf.height;\n rect.class = 'task task-type-' + task.num;\n rect.rx = 3;\n rect.ry = 3;\n drawRect(g, rect);\n\n let xPos = task.x + 14;\n task.people.forEach(person => {\n const colour = task.actors[person];\n\n const circle = {\n cx: xPos,\n cy: task.y,\n r: 7,\n fill: colour,\n stroke: '#000',\n title: person\n };\n\n drawCircle(g, circle);\n xPos += 10;\n });\n\n _drawTextCandidateFunc(conf)(\n task.task,\n g,\n rect.x,\n rect.y,\n rect.width,\n rect.height,\n { class: 'task' },\n conf,\n task.colour\n );\n};\n\n/**\n * Draws a background rectangle\n * @param elem The html element\n * @param bounds The bounds of the drawing\n */\nexport const drawBackgroundRect = function(elem, bounds) {\n const rectElem = drawRect(elem, {\n x: bounds.startx,\n y: bounds.starty,\n width: bounds.stopx - bounds.startx,\n height: bounds.stopy - bounds.starty,\n fill: bounds.fill,\n class: 'rect'\n });\n rectElem.lower();\n};\n\nexport const getTextObj = function() {\n return {\n x: 0,\n y: 0,\n fill: undefined,\n 'text-anchor': 'start',\n width: 100,\n height: 100,\n textMargin: 0,\n rx: 0,\n ry: 0\n };\n};\n\nexport const getNoteRect = function() {\n return {\n x: 0,\n y: 0,\n width: 100,\n anchor: 'start',\n height: 100,\n rx: 0,\n ry: 0\n };\n};\n\nconst _drawTextCandidateFunc = (function() {\n function byText(content, g, x, y, width, height, textAttrs, colour) {\n const text = g\n .append('text')\n .attr('x', x + width / 2)\n .attr('y', y + height / 2 + 5)\n .style('font-color', colour)\n .style('text-anchor', 'middle')\n .text(content);\n _setTextAttrs(text, textAttrs);\n }\n\n function byTspan(content, g, x, y, width, height, textAttrs, conf, colour) {\n const { taskFontSize, taskFontFamily } = conf;\n\n const lines = content.split(/
/gi);\n for (let i = 0; i < lines.length; i++) {\n const dy = i * taskFontSize - (taskFontSize * (lines.length - 1)) / 2;\n const text = g\n .append('text')\n .attr('x', x + width / 2)\n .attr('y', y)\n .attr('fill', colour)\n .style('text-anchor', 'middle')\n .style('font-size', taskFontSize)\n .style('font-family', taskFontFamily);\n text\n .append('tspan')\n .attr('x', x + width / 2)\n .attr('dy', dy)\n .text(lines[i]);\n\n text\n .attr('y', y + height / 2.0)\n .attr('dominant-baseline', 'central')\n .attr('alignment-baseline', 'central');\n\n _setTextAttrs(text, textAttrs);\n }\n }\n\n function byFo(content, g, x, y, width, height, textAttrs, conf) {\n const body = g.append('switch');\n const f = body\n .append('foreignObject')\n .attr('x', x)\n .attr('y', y)\n .attr('width', width)\n .attr('height', height)\n .attr('position', 'fixed');\n\n const text = f\n .append('div')\n .style('display', 'table')\n .style('height', '100%')\n .style('width', '100%');\n\n text\n .append('div')\n .attr('class', 'label')\n .style('display', 'table-cell')\n .style('text-align', 'center')\n .style('vertical-align', 'middle')\n // .style('color', colour)\n .text(content);\n\n byTspan(content, body, x, y, width, height, textAttrs, conf);\n _setTextAttrs(text, textAttrs);\n }\n\n function _setTextAttrs(toText, fromTextAttrsDict) {\n for (const key in fromTextAttrsDict) {\n if (key in fromTextAttrsDict) {\n // eslint-disable-line\n // noinspection JSUnfilteredForInLoop\n toText.attr(key, fromTextAttrsDict[key]);\n }\n }\n }\n\n return function(conf) {\n return conf.textPlacement === 'fo' ? byFo : conf.textPlacement === 'old' ? byText : byTspan;\n };\n})();\n\nconst initGraphics = function(graphics) {\n graphics\n .append('defs')\n .append('marker')\n .attr('id', 'arrowhead')\n .attr('refX', 5)\n .attr('refY', 2)\n .attr('markerWidth', 6)\n .attr('markerHeight', 4)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 0,0 V 4 L6,2 Z'); // this is actual shape for arrowhead\n};\n\nexport default {\n drawRect,\n drawCircle,\n drawSection,\n drawText,\n drawLabel,\n drawTask,\n drawBackgroundRect,\n getTextObj,\n getNoteRect,\n initGraphics\n};\n","import { select } from 'd3';\nimport { parser } from './parser/journey';\nimport journeyDb from './journeyDb';\nimport svgDraw from './svgDraw';\n\nparser.yy = journeyDb;\n\nconst conf = {\n leftMargin: 150,\n diagramMarginX: 50,\n diagramMarginY: 20,\n // Margin between tasks\n taskMargin: 50,\n // Width of task boxes\n width: 150,\n // Height of task boxes\n height: 50,\n taskFontSize: 14,\n taskFontFamily: '\"Open-Sans\", \"sans-serif\"',\n // Margin around loop boxes\n boxMargin: 10,\n boxTextMargin: 5,\n noteMargin: 10,\n // Space between messages\n messageMargin: 35,\n // Multiline message alignment\n messageAlign: 'center',\n // Depending on css styling this might need adjustment\n // Projects the edge of the diagram downwards\n bottomMarginAdj: 1,\n\n // width of activation box\n activationWidth: 10,\n\n // text placement as: tspan | fo | old only text as before\n textPlacement: 'fo',\n\n actorColours: ['#8FBC8F', '#7CFC00', '#00FFFF', '#20B2AA', '#B0E0E6', '#FFFFE0'],\n\n sectionFills: ['#191970', '#8B008B', '#4B0082', '#2F4F4F', '#800000', '#8B4513', '#00008B'],\n sectionColours: ['#fff']\n};\n\nexport const setConf = function(cnf) {\n const keys = Object.keys(cnf);\n\n keys.forEach(function(key) {\n conf[key] = cnf[key];\n });\n};\n\nconst actors = {};\n\nfunction drawActorLegend(diagram) {\n // Draw the actors\n let yPos = 60;\n Object.keys(actors).forEach(person => {\n const colour = actors[person];\n\n const circleData = {\n cx: 20,\n cy: yPos,\n r: 7,\n fill: colour,\n stroke: '#000'\n };\n svgDraw.drawCircle(diagram, circleData);\n\n const labelData = {\n x: 40,\n y: yPos + 7,\n fill: '#666',\n text: person\n };\n svgDraw.drawText(diagram, labelData);\n\n yPos += 20;\n });\n}\n\nconst LEFT_MARGIN = conf.leftMargin;\nexport const draw = function(text, id) {\n parser.yy.clear();\n parser.parse(text + '\\n');\n\n bounds.init();\n const diagram = select('#' + id);\n diagram.attr('xmlns:xlink', 'http://www.w3.org/1999/xlink');\n\n svgDraw.initGraphics(diagram);\n\n const tasks = parser.yy.getTasks();\n const title = parser.yy.getTitle();\n\n const actorNames = parser.yy.getActors();\n for (let member in actors) delete actors[member];\n let actorPos = 0;\n actorNames.forEach(actorName => {\n actors[actorName] = conf.actorColours[actorPos % conf.actorColours.length];\n actorPos++;\n });\n\n drawActorLegend(diagram);\n bounds.insert(0, 0, LEFT_MARGIN, Object.keys(actors).length * 50);\n\n drawTasks(diagram, tasks, 0);\n\n const box = bounds.getBounds();\n if (title) {\n diagram\n .append('text')\n .text(title)\n .attr('x', LEFT_MARGIN)\n .attr('font-size', '4ex')\n .attr('font-weight', 'bold')\n .attr('y', 25);\n }\n const height = box.stopy - box.starty + 2 * conf.diagramMarginY;\n const width = LEFT_MARGIN + box.stopx + 2 * conf.diagramMarginX;\n if (conf.useMaxWidth) {\n diagram.attr('height', '100%');\n diagram.attr('width', '100%');\n diagram.attr('style', 'max-width:' + width + 'px;');\n } else {\n diagram.attr('height', height);\n diagram.attr('width', width);\n }\n\n // Draw activity line\n diagram\n .append('line')\n .attr('x1', LEFT_MARGIN)\n .attr('y1', conf.height * 4) // One section head + one task + margins\n .attr('x2', width - LEFT_MARGIN - 4) // Subtract stroke width so arrow point is retained\n .attr('y2', conf.height * 4)\n .attr('stroke-width', 4)\n .attr('stroke', 'black')\n .attr('marker-end', 'url(#arrowhead)');\n\n const extraVertForTitle = title ? 70 : 0;\n diagram.attr('viewBox', `${box.startx} -25 ${width} ${height + extraVertForTitle}`);\n diagram.attr('preserveAspectRatio', 'xMinYMin meet');\n};\n\nexport const bounds = {\n data: {\n startx: undefined,\n stopx: undefined,\n starty: undefined,\n stopy: undefined\n },\n verticalPos: 0,\n\n sequenceItems: [],\n init: function() {\n this.sequenceItems = [];\n this.data = {\n startx: undefined,\n stopx: undefined,\n starty: undefined,\n stopy: undefined\n };\n this.verticalPos = 0;\n },\n updateVal: function(obj, key, val, fun) {\n if (typeof obj[key] === 'undefined') {\n obj[key] = val;\n } else {\n obj[key] = fun(val, obj[key]);\n }\n },\n updateBounds: function(startx, starty, stopx, stopy) {\n const _self = this;\n let cnt = 0;\n function updateFn(type) {\n return function updateItemBounds(item) {\n cnt++;\n // The loop sequenceItems is a stack so the biggest margins in the beginning of the sequenceItems\n const n = _self.sequenceItems.length - cnt + 1;\n\n _self.updateVal(item, 'starty', starty - n * conf.boxMargin, Math.min);\n _self.updateVal(item, 'stopy', stopy + n * conf.boxMargin, Math.max);\n\n _self.updateVal(bounds.data, 'startx', startx - n * conf.boxMargin, Math.min);\n _self.updateVal(bounds.data, 'stopx', stopx + n * conf.boxMargin, Math.max);\n\n if (!(type === 'activation')) {\n _self.updateVal(item, 'startx', startx - n * conf.boxMargin, Math.min);\n _self.updateVal(item, 'stopx', stopx + n * conf.boxMargin, Math.max);\n\n _self.updateVal(bounds.data, 'starty', starty - n * conf.boxMargin, Math.min);\n _self.updateVal(bounds.data, 'stopy', stopy + n * conf.boxMargin, Math.max);\n }\n };\n }\n\n this.sequenceItems.forEach(updateFn());\n },\n insert: function(startx, starty, stopx, stopy) {\n const _startx = Math.min(startx, stopx);\n const _stopx = Math.max(startx, stopx);\n const _starty = Math.min(starty, stopy);\n const _stopy = Math.max(starty, stopy);\n\n this.updateVal(bounds.data, 'startx', _startx, Math.min);\n this.updateVal(bounds.data, 'starty', _starty, Math.min);\n this.updateVal(bounds.data, 'stopx', _stopx, Math.max);\n this.updateVal(bounds.data, 'stopy', _stopy, Math.max);\n\n this.updateBounds(_startx, _starty, _stopx, _stopy);\n },\n bumpVerticalPos: function(bump) {\n this.verticalPos = this.verticalPos + bump;\n this.data.stopy = this.verticalPos;\n },\n getVerticalPos: function() {\n return this.verticalPos;\n },\n getBounds: function() {\n return this.data;\n }\n};\n\nconst fills = conf.sectionFills;\nconst textColours = conf.sectionColours;\n\nexport const drawTasks = function(diagram, tasks, verticalPos) {\n let lastSection = '';\n const sectionVHeight = conf.height * 2 + conf.diagramMarginY;\n const taskPos = verticalPos + sectionVHeight;\n\n let sectionNumber = 0;\n let fill = '#CCC';\n let colour = 'black';\n let num = 0;\n\n // Draw the tasks\n for (let i = 0; i < tasks.length; i++) {\n let task = tasks[i];\n if (lastSection !== task.section) {\n fill = fills[sectionNumber % fills.length];\n num = sectionNumber % fills.length;\n colour = textColours[sectionNumber % textColours.length];\n\n const section = {\n x: i * conf.taskMargin + i * conf.width + LEFT_MARGIN,\n y: 50,\n text: task.section,\n fill,\n num,\n colour\n };\n\n svgDraw.drawSection(diagram, section, conf);\n lastSection = task.section;\n sectionNumber++;\n }\n\n // Collect the actors involved in the task\n const taskActors = task.people.reduce((acc, actorName) => {\n if (actors[actorName]) {\n acc[actorName] = actors[actorName];\n }\n\n return acc;\n }, {});\n\n // Add some rendering data to the object\n task.x = i * conf.taskMargin + i * conf.width + LEFT_MARGIN;\n task.y = taskPos;\n task.width = conf.diagramMarginX;\n task.height = conf.diagramMarginY;\n task.colour = colour;\n task.fill = fill;\n task.num = num;\n task.actors = taskActors;\n\n // Draw the box with the attached line\n svgDraw.drawTask(diagram, task, conf);\n bounds.insert(task.x, task.y, task.x + task.width + conf.taskMargin, 300 + 5 * 30); // stopy is the length of the descenders.\n }\n};\n\nexport default {\n setConf,\n draw\n};\n","const getStyles = options =>\n `g.classGroup text {\n fill: ${options.nodeBorder};\n fill: ${options.classText};\n stroke: none;\n font-family: ${options.fontFamily};\n font-size: 10px;\n\n .title {\n font-weight: bolder;\n }\n}\n.node rect,\n .node circle,\n .node ellipse,\n .node polygon,\n .node path {\n fill: ${options.mainBkg};\n stroke: ${options.nodeBorder};\n stroke-width: 1px;\n }\n\n\n.divider {\n stroke: ${options.nodeBorder};\n stroke: 1;\n}\n\ng.clickable {\n cursor: pointer;\n}\n\ng.classGroup rect {\n fill: ${options.nodeBkg};\n stroke: ${options.nodeBorder};\n}\n\ng.classGroup line {\n stroke: ${options.nodeBorder};\n stroke-width: 1;\n}\n\n.classLabel .box {\n stroke: none;\n stroke-width: 0;\n fill: ${options.nodeBkg};\n opacity: 0.5;\n}\n\n.classLabel .label {\n fill: ${options.nodeBorder};\n font-size: 10px;\n}\n\n.relation {\n stroke: ${options.lineColor};\n stroke-width: 1;\n fill: none;\n}\n\n.dashed-line{\n stroke-dasharray: 3;\n}\n\n#compositionStart, .composition {\n fill: ${options.lineColor} !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n#compositionEnd, .composition {\n fill: ${options.lineColor} !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n#dependencyStart, .dependency {\n fill: ${options.lineColor} !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n#dependencyStart, .dependency {\n fill: ${options.lineColor} !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n#extensionStart, .extension {\n fill: ${options.lineColor} !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n#extensionEnd, .extension {\n fill: ${options.lineColor} !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n#aggregationStart, .aggregation {\n fill: ${options.nodeBkg} !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n#aggregationEnd, .aggregation {\n fill: ${options.nodeBkg} !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n`;\n\nexport default getStyles;\n","const getStyles = options =>\n `.label {\n font-family: ${options.fontFamily};\n color: ${options.textColor};\n }\n\n .label text {\n fill: ${options.textColor};\n }\n\n .node rect,\n .node circle,\n .node ellipse,\n .node polygon,\n .node path {\n fill: ${options.mainBkg};\n stroke: ${options.nodeBorder};\n stroke-width: 1px;\n }\n\n .node .label {\n text-align: center;\n }\n .node.clickable {\n cursor: pointer;\n }\n\n .arrowheadPath {\n fill: ${options.arrowheadColor};\n }\n\n .edgePath .path {\n stroke: ${options.lineColor};\n stroke-width: 1.5px;\n }\n\n .flowchart-link {\n stroke: ${options.lineColor};\n fill: none;\n }\n\n .edgeLabel {\n background-color: ${options.edgeLabelBackground};\n rect {\n opacity: 0.5;\n }\n text-align: center;\n }\n\n .cluster rect {\n fill: ${options.secondBkg};\n stroke: ${options.clusterBorder};\n stroke-width: 1px;\n }\n\n .cluster text {\n fill: ${options.titleColor};\n }\n\n div.mermaidTooltip {\n position: absolute;\n text-align: center;\n max-width: 200px;\n padding: 2px;\n font-family: ${options.fontFamily};\n font-size: 12px;\n background: ${options.secondBkg};\n border: 1px solid ${options.border2};\n border-radius: 2px;\n pointer-events: none;\n z-index: 100;\n }\n`;\n\nexport default getStyles;\n","const getStyles = options =>\n `g.stateGroup text {\n fill: ${options.nodeBorder};\n stroke: none;\n font-size: 10px;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family);\n}\ng.stateGroup text {\n fill: ${options.textColor};\n stroke: none;\n font-size: 10px;\n\n}\ng.stateGroup .state-title {\n font-weight: bolder;\n fill: ${options.labelColor};\n}\n\ng.stateGroup rect {\n fill: ${options.nodeBkg};\n stroke: ${options.nodeBorder};\n}\n\ng.stateGroup line {\n stroke: ${options.lineColor};\n stroke-width: 1;\n}\n\n.transition {\n stroke: ${options.lineColor};\n stroke-width: 1;\n fill: none;\n}\n\n.stateGroup .composit {\n fill: ${options.background};\n border-bottom: 1px\n}\n\n.stateGroup .alt-composit {\n fill: #e0e0e0;\n border-bottom: 1px\n}\n\n.state-note {\n stroke: ${options.noteBorderColor};\n fill: ${options.noteBkgColor};\n\n text {\n fill: black;\n stroke: none;\n font-size: 10px;\n }\n}\n\n.stateLabel .box {\n stroke: none;\n stroke-width: 0;\n fill: ${options.nodeBkg};\n opacity: 0.5;\n}\n\n.stateLabel text {\n fill: ${options.labelColor};\n font-size: 10px;\n font-weight: bold;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family);\n}\n\n.node circle.state-start {\n fill: black;\n stroke: black;\n}\n.node circle.state-end {\n fill: black;\n stroke: white;\n stroke-width: 1.5\n}\n\n.node rect {\n fill: ${options.mainBkg};\n stroke: ${options.nodeBorder};\n stroke-width: 1px;\n}\n#statediagram-barbEnd {\n fill: ${options.lineColor};\n}\n\n.statediagram-cluster rect {\n fill: ${options.nodeBkg};\n stroke: ${options.nodeBorder};\n stroke-width: 1px;\n}\n\n.cluster-label, .nodeLabel {\n color: ${options.textColor};\n}\n\n.statediagram-cluster rect.outer {\n rx: 5px;\n ry: 5px;\n}\n.statediagram-state .divider {\n stroke: ${options.nodeBorder};\n}\n\n.statediagram-state .title-state {\n rx: 5px;\n ry: 5px;\n}\n.statediagram-cluster.statediagram-cluster .inner {\n fill: ${options.background};\n}\n.statediagram-cluster.statediagram-cluster-alt .inner {\n fill: #e0e0e0;\n}\n\n.statediagram-cluster .inner {\n rx:0;\n ry:0;\n}\n\n.statediagram-state rect.basic {\n rx: 5px;\n ry: 5px;\n}\n.statediagram-state rect.divider {\n stroke-dasharray: 10,10;\n fill: ${options.altBackground ? options.altBackground : '#efefef'};\n}\n\n.note-edge {\n stroke-dasharray: 5;\n}\n\n.statediagram-note rect {\n fill: ${options.noteBkgColor};\n stroke: ${options.noteBorderColor};\n stroke-width: 1px;\n rx: 0;\n ry: 0;\n}\n.statediagram-note rect {\n fill: ${options.noteBkgColor};\n stroke: ${options.noteBorderColor};\n stroke-width: 1px;\n rx: 0;\n ry: 0;\n}\n\n.statediagram-note .nodeLabel {\n color: ${options.noteTextColor};\n}\n\n#dependencyStart, #dependencyEnd {\n fill: ${options.lineColor};\n stroke: ${options.lineColor};\n stroke-width: 1;\n}\n`;\n\nexport default getStyles;\n","import classDiagram from './diagrams/class/styles';\nimport er from './diagrams/er/styles';\nimport flowchart from './diagrams/flowchart/styles';\nimport gantt from './diagrams/gantt/styles';\nimport git from './diagrams/git/styles';\nimport info from './diagrams/info/styles';\nimport pie from './diagrams/pie/styles';\nimport sequence from './diagrams/sequence/styles';\nimport stateDiagram from './diagrams/state/styles';\nimport journey from './diagrams/user-journey/styles';\n\nconst themes = {\n flowchart,\n 'flowchart-v2': flowchart,\n sequence,\n gantt,\n class: classDiagram,\n 'classDiagram-v2': classDiagram,\n stateDiagram,\n state: stateDiagram,\n git,\n info,\n pie,\n er,\n journey\n};\n\nexport const calcThemeVariables = (theme, userOverRides) => theme.calcColors(userOverRides);\n\nconst getStyles = (type, userStyles, options) => {\n return ` {\n font-family: ${options.fontFamily};\n font-size: ${options.fontSize};\n fill: ${options.textColor}\n }\n\n /* Classes common for multiple diagrams */\n\n .error-icon {\n fill: ${options.errorBkgColor};\n }\n .error-text {\n fill: ${options.errorTextColor};\n stroke: ${options.errorTextColor};\n }\n\n .edge-thickness-normal {\n stroke-width: 2px;\n }\n .edge-thickness-thick {\n stroke-width: 3.5px\n }\n .edge-pattern-solid {\n stroke-dasharray: 0;\n }\n\n .edge-pattern-dashed{\n stroke-dasharray: 3;\n }\n .edge-pattern-dotted {\n stroke-dasharray: 2;\n }\n\n .marker {\n fill: ${options.lineColor};\n }\n .marker.cross {\n stroke: ${options.lineColor};\n }\n\n svg {\n font-family: ${options.fontFamily};\n font-size: ${options.fontSize};\n }\n\n ${themes[type](options)}\n\n ${userStyles}\n\n ${type} { fill: apa;}\n`;\n};\n\nexport default getStyles;\n","const getStyles = options =>\n `.actor {\n stroke: ${options.actorBorder};\n fill: ${options.actorBkg};\n }\n\n text.actor > tspan {\n fill: ${options.actorTextColor};\n stroke: none;\n }\n\n .actor-line {\n stroke: ${options.actorLineColor};\n }\n\n .messageLine0 {\n stroke-width: 1.5;\n stroke-dasharray: none;\n stroke: ${options.signalColor};\n }\n\n .messageLine1 {\n stroke-width: 1.5;\n stroke-dasharray: 2, 2;\n stroke: ${options.signalColor};\n }\n\n #arrowhead path {\n fill: ${options.signalColor};\n stroke: ${options.signalColor};\n }\n\n .sequenceNumber {\n fill: ${options.sequenceNumberColor};\n }\n\n #sequencenumber {\n fill: ${options.signalColor};\n }\n\n #crosshead path {\n fill: ${options.signalColor};\n stroke: ${options.signalColor};\n }\n\n .messageText {\n fill: ${options.signalTextColor};\n stroke: ${options.signalTextColor};\n }\n\n .labelBox {\n stroke: ${options.labelBoxBorderColor};\n fill: ${options.labelBoxBkgColor};\n }\n\n .labelText, .labelText > tspan {\n fill: ${options.labelTextColor};\n stroke: none;\n }\n\n .loopText, .loopText > tspan {\n fill: ${options.loopTextColor};\n stroke: none;\n }\n\n .loopLine {\n stroke-width: 2px;\n stroke-dasharray: 2, 2;\n stroke: ${options.labelBoxBorderColor};\n fill: ${options.labelBoxBorderColor};\n }\n\n .note {\n //stroke: #decc93;\n stroke: ${options.noteBorderColor};\n fill: ${options.noteBkgColor};\n }\n\n .noteText, .noteText > tspan {\n fill: ${options.noteTextColor};\n stroke: none;\n }\n\n .activation0 {\n fill: ${options.activationBkgColor};\n stroke: ${options.activationBorderColor};\n }\n\n .activation1 {\n fill: ${options.activationBkgColor};\n stroke: ${options.activationBorderColor};\n }\n\n .activation2 {\n fill: ${options.activationBkgColor};\n stroke: ${options.activationBorderColor};\n }\n`;\n\nexport default getStyles;\n","const getStyles = options =>\n `\n .mermaid-main-font {\n font-family: \"trebuchet ms\", verdana, arial;\n font-family: var(--mermaid-font-family);\n }\n\n .section {\n stroke: none;\n opacity: 0.2;\n }\n\n .section0 {\n fill: ${options.sectionBkgColor};\n }\n\n .section2 {\n fill: ${options.sectionBkgColor2};\n }\n\n .section1,\n .section3 {\n fill: ${options.altSectionBkgColor};\n opacity: 0.2;\n }\n\n .sectionTitle0 {\n fill: ${options.titleColor};\n }\n\n .sectionTitle1 {\n fill: ${options.titleColor};\n }\n\n .sectionTitle2 {\n fill: ${options.titleColor};\n }\n\n .sectionTitle3 {\n fill: ${options.titleColor};\n }\n\n .sectionTitle {\n text-anchor: start;\n font-size: 11px;\n text-height: 14px;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family);\n\n }\n\n\n /* Grid and axis */\n\n .grid .tick {\n stroke: ${options.gridColor};\n opacity: 0.8;\n shape-rendering: crispEdges;\n text {\n font-family: ${options.fontFamily};\n fill: ${options.textColor};\n }\n }\n\n .grid path {\n stroke-width: 0;\n }\n\n\n /* Today line */\n\n .today {\n fill: none;\n stroke: ${options.todayLineColor};\n stroke-width: 2px;\n }\n\n\n /* Task styling */\n\n /* Default task */\n\n .task {\n stroke-width: 2;\n }\n\n .taskText {\n text-anchor: middle;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family);\n }\n\n .taskText:not([font-size]) {\n font-size: 11px;\n }\n\n .taskTextOutsideRight {\n fill: ${options.taskTextDarkColor};\n text-anchor: start;\n font-size: 11px;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family);\n\n }\n\n .taskTextOutsideLeft {\n fill: ${options.taskTextDarkColor};\n text-anchor: end;\n font-size: 11px;\n }\n\n /* Special case clickable */\n .task.clickable {\n cursor: pointer;\n }\n .taskText.clickable {\n cursor: pointer;\n fill: ${options.taskTextClickableColor} !important;\n font-weight: bold;\n }\n\n .taskTextOutsideLeft.clickable {\n cursor: pointer;\n fill: ${options.taskTextClickableColor} !important;\n font-weight: bold;\n }\n\n .taskTextOutsideRight.clickable {\n cursor: pointer;\n fill: ${options.taskTextClickableColor} !important;\n font-weight: bold;\n }\n\n /* Specific task settings for the sections*/\n\n .taskText0,\n .taskText1,\n .taskText2,\n .taskText3 {\n fill: ${options.taskTextColor};\n }\n\n .task0,\n .task1,\n .task2,\n .task3 {\n fill: ${options.taskBkgColor};\n stroke: ${options.taskBorderColor};\n }\n\n .taskTextOutside0,\n .taskTextOutside2\n {\n fill: ${options.taskTextOutsideColor};\n }\n\n .taskTextOutside1,\n .taskTextOutside3 {\n fill: ${options.taskTextOutsideColor};\n }\n\n\n /* Active task */\n\n .active0,\n .active1,\n .active2,\n .active3 {\n fill: ${options.activeTaskBkgColor};\n stroke: ${options.activeTaskBorderColor};\n }\n\n .activeText0,\n .activeText1,\n .activeText2,\n .activeText3 {\n fill: ${options.taskTextDarkColor} !important;\n }\n\n\n /* Completed task */\n\n .done0,\n .done1,\n .done2,\n .done3 {\n stroke: ${options.doneTaskBorderColor};\n fill: ${options.doneTaskBkgColor};\n stroke-width: 2;\n }\n\n .doneText0,\n .doneText1,\n .doneText2,\n .doneText3 {\n fill: ${options.taskTextDarkColor} !important;\n }\n\n\n /* Tasks on the critical line */\n\n .crit0,\n .crit1,\n .crit2,\n .crit3 {\n stroke: ${options.critBorderColor};\n fill: ${options.critBkgColor};\n stroke-width: 2;\n }\n\n .activeCrit0,\n .activeCrit1,\n .activeCrit2,\n .activeCrit3 {\n stroke: ${options.critBorderColor};\n fill: ${options.activeTaskBkgColor};\n stroke-width: 2;\n }\n\n .doneCrit0,\n .doneCrit1,\n .doneCrit2,\n .doneCrit3 {\n stroke: ${options.critBorderColor};\n fill: ${options.doneTaskBkgColor};\n stroke-width: 2;\n cursor: pointer;\n shape-rendering: crispEdges;\n }\n\n .milestone {\n transform: rotate(45deg) scale(0.8,0.8);\n }\n\n .milestoneText {\n font-style: italic;\n }\n .doneCritText0,\n .doneCritText1,\n .doneCritText2,\n .doneCritText3 {\n fill: ${options.taskTextDarkColor} !important;\n }\n\n .activeCritText0,\n .activeCritText1,\n .activeCritText2,\n .activeCritText3 {\n fill: ${options.taskTextDarkColor} !important;\n }\n\n .titleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${options.taskTextDarkColor} ;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family);\n }\n`;\n\nexport default getStyles;\n","const getStyles = () =>\n `\n .commit-id,\n .commit-msg,\n .branch-label {\n fill: lightgrey;\n color: lightgrey;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family);\n }\n`;\n\nexport default getStyles;\n","const getStyles = () => ``;\n\nexport default getStyles;\n","const getStyles = options =>\n `.pieTitleText {\n text-anchor: middle;\n font-size: 25px;\n fill: ${options.taskTextDarkColor};\n font-family: ${options.fontFamily};\n }\n .slice {\n font-family: ${options.fontFamily};\n fill: ${options.textColor};\n // fill: white;\n }\n .legend text {\n fill: ${options.taskTextDarkColor};\n font-family: ${options.fontFamily};\n font-size: 17px;\n }\n`;\n\nexport default getStyles;\n","const getStyles = options =>\n `\n .entityBox {\n fill: ${options.mainBkg};\n stroke: ${options.nodeBorder};\n }\n\n .relationshipLabelBox {\n fill: ${options.edgeLabelBackground};\n fillopactity: 0;\n background-color: ${options.edgeLabelBackground};\n rect {\n opacity: 0.5;\n }\n }\n\n .relationshipLine {\n stroke: ${options.lineColor};\n }\n`;\n\nexport default getStyles;\n","const getStyles = options =>\n `.label {\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family);\n color: ${options.textColor};\n }\n .mouth {\n stroke: #666;\n }\n\n line {\n stroke: ${options.textColor}\n }\n\n .legend {\n fill: ${options.textColor};\n }\n\n .label text {\n fill: #333;\n }\n .label {\n color: ${options.textColor}\n }\n\n .face {\n fill: #FFF8DC;\n stroke: #999;\n }\n\n .node rect,\n .node circle,\n .node ellipse,\n .node polygon,\n .node path {\n fill: ${options.mainBkg};\n stroke: ${options.nodeBorder};\n stroke-width: 1px;\n }\n\n .node .label {\n text-align: center;\n }\n .node.clickable {\n cursor: pointer;\n }\n\n .arrowheadPath {\n fill: ${options.arrowheadColor};\n }\n\n .edgePath .path {\n stroke: ${options.lineColor};\n stroke-width: 1.5px;\n }\n\n .flowchart-link {\n stroke: ${options.lineColor};\n fill: none;\n }\n\n .edgeLabel {\n background-color: ${options.edgeLabelBackground};\n rect {\n opacity: 0.5;\n }\n text-align: center;\n }\n\n .cluster rect {\n fill: ${options.secondBkg};\n stroke: ${options.clusterBorder};\n stroke-width: 1px;\n }\n\n .cluster text {\n fill: ${options.titleColor};\n }\n\n div.mermaidTooltip {\n position: absolute;\n text-align: center;\n max-width: 200px;\n padding: 2px;\n font-family: 'trebuchet ms', verdana, arial;\n font-family: var(--mermaid-font-family);\n font-size: 12px;\n background: ${options.secondBkg};\n border: 1px solid ${options.border2};\n border-radius: 2px;\n pointer-events: none;\n z-index: 100;\n }\n\n .task-type-0, .section-type-0 {\n ${options.fillType0 ? `fill: ${options.fillType0}` : ''};\n }\n .task-type-1, .section-type-1 {\n ${options.fillType0 ? `fill: ${options.fillType1}` : ''};\n }\n .task-type-2, .section-type-2 {\n ${options.fillType0 ? `fill: ${options.fillType2}` : ''};\n }\n .task-type-3, .section-type-3 {\n ${options.fillType0 ? `fill: ${options.fillType3}` : ''};\n }\n .task-type-4, .section-type-4 {\n ${options.fillType0 ? `fill: ${options.fillType4}` : ''};\n }\n .task-type-5, .section-type-5 {\n ${options.fillType0 ? `fill: ${options.fillType5}` : ''};\n }\n .task-type-6, .section-type-6 {\n ${options.fillType0 ? `fill: ${options.fillType6}` : ''};\n }\n .task-type-7, .section-type-7 {\n ${options.fillType0 ? `fill: ${options.fillType7}` : ''};\n }\n`;\n\nexport default getStyles;\n","/**\n * This is the api to be used when optionally handling the integration with the web page, instead of using the default integration provided by mermaid.js.\n *\n * The core of this api is the [**render**](Setup.md?id=render) function which, given a graph\n * definition as text, renders the graph/diagram and returns an svg element for the graph.\n *\n * It is is then up to the user of the API to make use of the svg, either insert it somewhere in the page or do something completely different.\n *\n * In addition to the render function, a number of behavioral configuration options are available.\n *\n * @name mermaidAPI\n */\nimport Stylis from 'stylis';\nimport { select } from 'd3';\nimport pkg from '../package.json';\nimport { setConfig, getConfig, setSiteConfig, getSiteConfig } from './config';\nimport { logger, setLogLevel } from './logger';\nimport utils, { assignWithDepth } from './utils';\nimport flowRenderer from './diagrams/flowchart/flowRenderer';\nimport flowRendererV2 from './diagrams/flowchart/flowRenderer-v2';\nimport flowParser from './diagrams/flowchart/parser/flow';\nimport flowDb from './diagrams/flowchart/flowDb';\nimport sequenceRenderer from './diagrams/sequence/sequenceRenderer';\nimport sequenceParser from './diagrams/sequence/parser/sequenceDiagram';\nimport sequenceDb from './diagrams/sequence/sequenceDb';\nimport ganttRenderer from './diagrams/gantt/ganttRenderer';\nimport ganttParser from './diagrams/gantt/parser/gantt';\nimport ganttDb from './diagrams/gantt/ganttDb';\nimport classRenderer from './diagrams/class/classRenderer';\nimport classRendererV2 from './diagrams/class/classRenderer-v2';\nimport classParser from './diagrams/class/parser/classDiagram';\nimport classDb from './diagrams/class/classDb';\nimport stateRenderer from './diagrams/state/stateRenderer';\nimport stateRendererV2 from './diagrams/state/stateRenderer-v2';\nimport stateParser from './diagrams/state/parser/stateDiagram';\nimport stateDb from './diagrams/state/stateDb';\nimport gitGraphRenderer from './diagrams/git/gitGraphRenderer';\nimport gitGraphParser from './diagrams/git/parser/gitGraph';\nimport gitGraphAst from './diagrams/git/gitGraphAst';\nimport infoRenderer from './diagrams/info/infoRenderer';\nimport errorRenderer from './errorRenderer';\nimport infoParser from './diagrams/info/parser/info';\nimport infoDb from './diagrams/info/infoDb';\nimport pieRenderer from './diagrams/pie/pieRenderer';\nimport pieParser from './diagrams/pie/parser/pie';\nimport pieDb from './diagrams/pie/pieDb';\nimport erDb from './diagrams/er/erDb';\nimport erParser from './diagrams/er/parser/erDiagram';\nimport erRenderer from './diagrams/er/erRenderer';\nimport journeyParser from './diagrams/user-journey/parser/journey';\nimport journeyDb from './diagrams/user-journey/journeyDb';\nimport journeyRenderer from './diagrams/user-journey/journeyRenderer';\nimport configApi from './config';\nimport getStyles from './styles';\nimport theme from './themes';\n\nfunction parse(text) {\n const graphInit = utils.detectInit(text);\n if (graphInit) {\n reinitialize(graphInit);\n logger.debug('reinit ', graphInit);\n }\n const graphType = utils.detectType(text);\n let parser;\n\n logger.debug('Type ' + graphType);\n switch (graphType) {\n case 'git':\n parser = gitGraphParser;\n parser.parser.yy = gitGraphAst;\n break;\n case 'flowchart':\n flowDb.clear();\n parser = flowParser;\n parser.parser.yy = flowDb;\n break;\n case 'flowchart-v2':\n flowDb.clear();\n parser = flowParser;\n parser.parser.yy = flowDb;\n break;\n case 'sequence':\n parser = sequenceParser;\n parser.parser.yy = sequenceDb;\n break;\n case 'gantt':\n parser = ganttParser;\n parser.parser.yy = ganttDb;\n break;\n case 'class':\n parser = classParser;\n parser.parser.yy = classDb;\n break;\n case 'classDiagram':\n parser = classParser;\n parser.parser.yy = classDb;\n break;\n case 'state':\n parser = stateParser;\n parser.parser.yy = stateDb;\n break;\n case 'stateDiagram':\n parser = stateParser;\n parser.parser.yy = stateDb;\n break;\n case 'info':\n logger.debug('info info info');\n parser = infoParser;\n parser.parser.yy = infoDb;\n break;\n case 'pie':\n logger.debug('pie');\n parser = pieParser;\n parser.parser.yy = pieDb;\n break;\n case 'er':\n logger.debug('er');\n parser = erParser;\n parser.parser.yy = erDb;\n break;\n case 'journey':\n logger.debug('Journey');\n parser = journeyParser;\n parser.parser.yy = journeyDb;\n break;\n }\n parser.parser.yy.graphType = graphType;\n parser.parser.yy.parseError = (str, hash) => {\n const error = { str, hash };\n throw error;\n };\n\n parser.parse(text);\n return parser;\n}\n\nexport const encodeEntities = function(text) {\n let txt = text;\n\n txt = txt.replace(/style.*:\\S*#.*;/g, function(s) {\n const innerTxt = s.substring(0, s.length - 1);\n return innerTxt;\n });\n txt = txt.replace(/classDef.*:\\S*#.*;/g, function(s) {\n const innerTxt = s.substring(0, s.length - 1);\n return innerTxt;\n });\n\n txt = txt.replace(/#\\w+;/g, function(s) {\n const innerTxt = s.substring(1, s.length - 1);\n\n const isInt = /^\\+?\\d+$/.test(innerTxt);\n if (isInt) {\n return 'fl°°' + innerTxt + '¶ß';\n } else {\n return 'fl°' + innerTxt + '¶ß';\n }\n });\n\n return txt;\n};\n\nexport const decodeEntities = function(text) {\n let txt = text;\n\n txt = txt.replace(/fl°°/g, function() {\n return '';\n });\n txt = txt.replace(/fl°/g, function() {\n return '&';\n });\n txt = txt.replace(/¶ß/g, function() {\n return ';';\n });\n\n return txt;\n};\n/**\n * Function that renders an svg with a graph from a chart definition. Usage example below.\n *\n * ```js\n * mermaidAPI.initialize({\n * startOnLoad:true\n * });\n * $(function(){\n * const graphDefinition = 'graph TB\\na-->b';\n * const cb = function(svgGraph){\n * console.log(svgGraph);\n * };\n * mermaidAPI.render('id1',graphDefinition,cb);\n * });\n *```\n * @param id the id of the element to be rendered\n * @param _txt the graph definition\n * @param cb callback which is called after rendering is finished with the svg code as inparam.\n * @param container selector to element in which a div with the graph temporarily will be inserted. In one is\n * provided a hidden div will be inserted in the body of the page instead. The element will be removed when rendering is\n * completed.\n */\nconst render = function(id, _txt, cb, container) {\n let txt = _txt;\n const graphInit = utils.detectInit(txt);\n if (graphInit) {\n reinitialize(graphInit);\n } else {\n configApi.reset();\n const siteConfig = getSiteConfig();\n updateRendererConfigs(siteConfig);\n }\n\n const cnf = getConfig();\n // Check the maximum allowed text size\n if (_txt.length > cnf.maxTextSize) {\n txt = 'graph TB;a[Maximum text size in diagram exceeded];style a fill:#faa';\n }\n\n if (typeof container !== 'undefined') {\n container.innerHTML = '';\n\n select(container)\n .append('div')\n .attr('id', 'd' + id)\n .attr('style', 'font-family: ' + cnf.fontFamily)\n .append('svg')\n .attr('id', id)\n .attr('width', '100%')\n .attr('xmlns', 'http://www.w3.org/2000/svg')\n .append('g');\n } else {\n const existingSvg = document.getElementById(id);\n if (existingSvg) {\n existingSvg.remove();\n }\n const element = document.querySelector('#' + 'd' + id);\n if (element) {\n element.remove();\n }\n\n select('body')\n .append('div')\n .attr('id', 'd' + id)\n .append('svg')\n .attr('id', id)\n .attr('width', '100%')\n .attr('xmlns', 'http://www.w3.org/2000/svg')\n .append('g');\n }\n\n window.txt = txt;\n txt = encodeEntities(txt);\n\n const element = select('#d' + id).node();\n const graphType = utils.detectType(txt);\n\n // insert inline style into svg\n const svg = element.firstChild;\n const firstChild = svg.firstChild;\n\n let userStyles = '';\n // user provided theme CSS\n if (cnf.themeCSS !== undefined) {\n userStyles += `\\n${cnf.themeCSS}`;\n }\n // user provided theme CSS\n if (cnf.fontFamily !== undefined) {\n userStyles += `\\n:root { --mermaid-font-family: ${cnf.fontFamily}}`;\n }\n // user provided theme CSS\n if (cnf.altFontFamily !== undefined) {\n userStyles += `\\n:root { --mermaid-alt-font-family: ${cnf.altFontFamily}}`;\n }\n\n // classDef\n if (graphType === 'flowchart' || graphType === 'flowchart-v2' || graphType === 'graph') {\n const classes = flowRenderer.getClasses(txt);\n for (const className in classes) {\n userStyles += `\\n.${className} > * { ${classes[className].styles.join(\n ' !important; '\n )} !important; }`;\n if (classes[className].textStyles) {\n userStyles += `\\n.${className} tspan { ${classes[className].textStyles.join(\n ' !important; '\n )} !important; }`;\n }\n }\n }\n const stylis = new Stylis();\n const rules = stylis(`#${id}`, getStyles(graphType, userStyles, cnf.themeVariables));\n\n const style1 = document.createElement('style');\n style1.innerHTML = rules;\n svg.insertBefore(style1, firstChild);\n\n // Verify that the generated svgs are ok before removing this\n\n // const style2 = document.createElement('style');\n // const cs = window.getComputedStyle(svg);\n // style2.innerHTML = `#d${id} * {\n // color: ${cs.color};\n // // font: ${cs.font};\n // // font-family: Arial;\n // // font-size: 24px;\n // }`;\n // svg.insertBefore(style2, firstChild);\n\n try {\n switch (graphType) {\n case 'git':\n cnf.flowchart.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;\n gitGraphRenderer.setConf(cnf.git);\n gitGraphRenderer.draw(txt, id, false);\n break;\n case 'flowchart':\n cnf.flowchart.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;\n flowRenderer.setConf(cnf.flowchart);\n flowRenderer.draw(txt, id, false);\n break;\n case 'flowchart-v2':\n cnf.flowchart.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;\n flowRendererV2.setConf(cnf.flowchart);\n flowRendererV2.draw(txt, id, false);\n break;\n case 'sequence':\n cnf.sequence.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;\n if (cnf.sequenceDiagram) {\n // backwards compatibility\n sequenceRenderer.setConf(Object.assign(cnf.sequence, cnf.sequenceDiagram));\n console.error(\n '`mermaid config.sequenceDiagram` has been renamed to `config.sequence`. Please update your mermaid config.'\n );\n } else {\n sequenceRenderer.setConf(cnf.sequence);\n }\n sequenceRenderer.draw(txt, id);\n break;\n case 'gantt':\n cnf.gantt.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;\n ganttRenderer.setConf(cnf.gantt);\n ganttRenderer.draw(txt, id);\n break;\n case 'class':\n cnf.class.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;\n classRenderer.setConf(cnf.class);\n classRenderer.draw(txt, id);\n break;\n case 'classDiagram':\n cnf.class.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;\n classRendererV2.setConf(cnf.class);\n classRendererV2.draw(txt, id);\n break;\n case 'state':\n cnf.class.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;\n stateRenderer.setConf(cnf.state);\n stateRenderer.draw(txt, id);\n break;\n case 'stateDiagram':\n cnf.class.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;\n stateRendererV2.setConf(cnf.state);\n stateRendererV2.draw(txt, id);\n break;\n case 'info':\n cnf.class.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;\n infoRenderer.setConf(cnf.class);\n infoRenderer.draw(txt, id, pkg.version);\n break;\n case 'pie':\n cnf.class.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;\n pieRenderer.setConf(cnf.class);\n pieRenderer.draw(txt, id, pkg.version);\n break;\n case 'er':\n erRenderer.setConf(cnf.er);\n erRenderer.draw(txt, id, pkg.version);\n break;\n case 'journey':\n journeyRenderer.setConf(cnf.journey);\n journeyRenderer.draw(txt, id, pkg.version);\n break;\n }\n } catch (e) {\n // errorRenderer.setConf(cnf.class);\n errorRenderer.draw(id, pkg.version);\n throw e;\n }\n\n select(`[id=\"${id}\"]`)\n .selectAll('foreignobject > *')\n .attr('xmlns', 'http://www.w3.org/1999/xhtml');\n\n // if (cnf.arrowMarkerAbsolute) {\n // url =\n // window.location.protocol +\n // '//' +\n // window.location.host +\n // window.location.pathname +\n // window.location.search;\n // url = url.replace(/\\(/g, '\\\\(');\n // url = url.replace(/\\)/g, '\\\\)');\n // }\n\n // Fix for when the base tag is used\n let svgCode = select('#d' + id).node().innerHTML;\n logger.debug('cnf.arrowMarkerAbsolute', cnf.arrowMarkerAbsolute);\n if (!cnf.arrowMarkerAbsolute || cnf.arrowMarkerAbsolute === 'false') {\n svgCode = svgCode.replace(/marker-end=\"url\\(.*?#/g, 'marker-end=\"url(#', 'g');\n }\n\n svgCode = decodeEntities(svgCode);\n\n if (typeof cb !== 'undefined') {\n switch (graphType) {\n case 'flowchart':\n case 'flowchart-v2':\n cb(svgCode, flowDb.bindFunctions);\n break;\n case 'gantt':\n cb(svgCode, ganttDb.bindFunctions);\n break;\n case 'class':\n cb(svgCode, classDb.bindFunctions);\n break;\n default:\n cb(svgCode);\n }\n } else {\n logger.debug('CB = undefined!');\n }\n\n const node = select('#d' + id).node();\n if (node !== null && typeof node.remove === 'function') {\n select('#d' + id)\n .node()\n .remove();\n }\n\n return svgCode;\n};\n\nlet currentDirective = {};\n\nconst parseDirective = function(statement, context, type) {\n try {\n if (statement !== undefined) {\n statement = statement.trim();\n switch (context) {\n case 'open_directive':\n currentDirective = {};\n break;\n case 'type_directive':\n currentDirective.type = statement.toLowerCase();\n break;\n case 'arg_directive':\n currentDirective.args = JSON.parse(statement);\n break;\n case 'close_directive':\n handleDirective(currentDirective, type);\n currentDirective = null;\n break;\n }\n }\n } catch (error) {\n logger.error(\n `Error while rendering sequenceDiagram directive: ${statement} jison context: ${context}`\n );\n logger.error(error.message);\n }\n};\n\nconst handleDirective = function(directive, type) {\n logger.debug(`Directive type=${directive.type} with args:`, directive.args);\n switch (directive.type) {\n case 'init':\n case 'initialize': {\n ['config'].forEach(prop => {\n if (typeof directive.args[prop] !== 'undefined') {\n if (type === 'flowchart-v2') {\n type = 'flowchart';\n }\n directive.args[type] = directive.args[prop];\n delete directive.args[prop];\n }\n });\n\n reinitialize(directive.args);\n break;\n }\n case 'wrap':\n case 'nowrap':\n directive.args = { config: { wrap: directive.type === 'wrap' } };\n ['config'].forEach(prop => {\n if (typeof directive.args[prop] !== 'undefined') {\n if (type === 'flowchart-v2') {\n type = 'flowchart';\n }\n directive.args[type] = directive.args[prop];\n delete directive.args[prop];\n }\n });\n reinitialize(directive.args);\n break;\n default:\n logger.warn(\n `Unhandled directive: source: '%%{${directive.type}: ${JSON.stringify(\n directive.args ? directive.args : {}\n )}}%%`,\n directive\n );\n break;\n }\n};\n\nfunction updateRendererConfigs(conf) {\n gitGraphRenderer.setConf(conf.git);\n flowRenderer.setConf(conf.flowchart);\n flowRendererV2.setConf(conf.flowchart);\n if (typeof conf['sequenceDiagram'] !== 'undefined') {\n sequenceRenderer.setConf(assignWithDepth(conf.sequence, conf['sequenceDiagram']));\n }\n sequenceRenderer.setConf(conf.sequence);\n ganttRenderer.setConf(conf.gantt);\n classRenderer.setConf(conf.class);\n stateRenderer.setConf(conf.state);\n stateRendererV2.setConf(conf.state);\n infoRenderer.setConf(conf.class);\n pieRenderer.setConf(conf.class);\n erRenderer.setConf(conf.er);\n journeyRenderer.setConf(conf.journey);\n errorRenderer.setConf(conf.class);\n}\n\nfunction reinitialize(options) {\n // console.warn(`mermaidAPI.reinitialize: v${pkg.version}`, options);\n if (options.theme && theme[options.theme]) {\n // Todo merge with user options\n options.themeVariables = options.theme;\n }\n\n // Set default options\n const config = typeof options === 'object' ? setConfig(options) : getSiteConfig();\n updateRendererConfigs(config);\n setLogLevel(config.logLevel);\n logger.debug('mermaidAPI.reinitialize: ', config);\n}\n\nfunction initialize(options) {\n // console.log(`mermaidAPI.initialize: v${pkg.version} ${options}`);\n // Set default options\n\n if (options && options.theme && theme[options.theme]) {\n // Todo merge with user options\n options.themeVariables = theme[options.theme].getThemeVariables(options.themeVariables);\n } else {\n if (options) options.themeVariables = theme.default.getThemeVariables();\n }\n\n const config = typeof options === 'object' ? setSiteConfig(options) : getSiteConfig();\n\n updateRendererConfigs(config);\n setLogLevel(config.logLevel);\n logger.debug('mermaidAPI.initialize: ', config);\n}\n\n// function getConfig () {\n// console.warn('get config')\n// return config\n// }\nconst mermaidAPI = Object.freeze({\n render,\n parse,\n parseDirective,\n initialize,\n reinitialize,\n getConfig,\n getSiteConfig,\n reset: () => {\n // console.warn('reset');\n configApi.reset();\n const siteConfig = getSiteConfig();\n updateRendererConfigs(siteConfig);\n },\n globalReset: () => {\n configApi.reset(configApi.defaultConfig);\n updateRendererConfigs(getConfig());\n },\n defaultConfig: configApi.defaultConfig\n});\n\nsetLogLevel(getConfig().logLevel);\nconfigApi.reset(getConfig());\n\nexport default mermaidAPI;\n/**\n * ## mermaidAPI configuration defaults\n * \n *\n * <script>\n * var config = {\n * theme:'default',\n * logLevel:'fatal',\n * securityLevel:'strict',\n * startOnLoad:true,\n * arrowMarkerAbsolute:false,\n *\n * er:{\n * diagramPadding:20,\n * layoutDirection:'TB',\n * minEntityWidth:100,\n * minEntityHeight:75,\n * entityPadding:15,\n * stroke:'gray',\n * fill:'honeydew',\n * fontSize:12,\n * useMaxWidth:true,\n * },\n * flowchart:{\n * diagramPadding:8,\n * htmlLabels:true,\n * curve:'linear',\n * },\n * sequence:{\n * diagramMarginX:50,\n * diagramMarginY:10,\n * actorMargin:50,\n * width:150,\n * height:65,\n * boxMargin:10,\n * boxTextMargin:5,\n * noteMargin:10,\n * messageMargin:35,\n * messageAlign:'center',\n * mirrorActors:true,\n * bottomMarginAdj:1,\n * useMaxWidth:true,\n * rightAngles:false,\n * showSequenceNumbers:false,\n * },\n * gantt:{\n * titleTopMargin:25,\n * barHeight:20,\n * barGap:4,\n * topPadding:50,\n * leftPadding:75,\n * gridLineStartPadding:35,\n * fontSize:11,\n * fontFamily:'\"Open-Sans\", \"sans-serif\"',\n * numberSectionStyles:4,\n * axisFormat:'%Y-%m-%d',\n * }\n * };\n * mermaid.initialize(config);\n * </script>\n *
\n */\n","/**\n * Web page integration module for the mermaid framework. It uses the mermaidAPI for mermaid functionality and to render\n * the diagrams to svg code.\n */\n// import { decode } from 'he';\nimport decode from 'entity-decode/browser';\nimport mermaidAPI from './mermaidAPI';\nimport { logger } from './logger';\nimport utils from './utils';\n\n/**\n * ## init\n * Function that goes through the document to find the chart definitions in there and render them.\n *\n * The function tags the processed attributes with the attribute data-processed and ignores found elements with the\n * attribute already set. This way the init function can be triggered several times.\n *\n * Optionally, `init` can accept in the second argument one of the following:\n * - a DOM Node\n * - an array of DOM nodes (as would come from a jQuery selector)\n * - a W3C selector, a la `.mermaid`\n *\n * ```mermaid\n * graph LR;\n * a(Find elements)-->b{Processed}\n * b-->|Yes|c(Leave element)\n * b-->|No |d(Transform)\n * ```\n * Renders the mermaid diagrams\n * @param nodes a css selector or an array of nodes\n */\nconst init = function() {\n const conf = mermaidAPI.getConfig();\n // console.log('Starting rendering diagrams (init) - mermaid.init');\n let nodes;\n if (arguments.length >= 2) {\n /*! sequence config was passed as #1 */\n if (typeof arguments[0] !== 'undefined') {\n mermaid.sequenceConfig = arguments[0];\n }\n\n nodes = arguments[1];\n } else {\n nodes = arguments[0];\n }\n\n // if last argument is a function this is the callback function\n let callback;\n if (typeof arguments[arguments.length - 1] === 'function') {\n callback = arguments[arguments.length - 1];\n logger.debug('Callback function found');\n } else {\n if (typeof conf.mermaid !== 'undefined') {\n if (typeof conf.mermaid.callback === 'function') {\n callback = conf.mermaid.callback;\n logger.debug('Callback function found');\n } else {\n logger.debug('No Callback function found');\n }\n }\n }\n nodes =\n nodes === undefined\n ? document.querySelectorAll('.mermaid')\n : typeof nodes === 'string'\n ? document.querySelectorAll(nodes)\n : nodes instanceof window.Node\n ? [nodes]\n : nodes; // Last case - sequence config was passed pick next\n\n logger.debug('Start On Load before: ' + mermaid.startOnLoad);\n if (typeof mermaid.startOnLoad !== 'undefined') {\n logger.debug('Start On Load inner: ' + mermaid.startOnLoad);\n mermaidAPI.initialize({ startOnLoad: mermaid.startOnLoad });\n }\n\n if (typeof mermaid.ganttConfig !== 'undefined') {\n mermaidAPI.initialize({ gantt: mermaid.ganttConfig });\n }\n\n let txt;\n\n for (let i = 0; i < nodes.length; i++) {\n const element = nodes[i];\n\n /*! Check if previously processed */\n if (!element.getAttribute('data-processed')) {\n element.setAttribute('data-processed', true);\n } else {\n continue;\n }\n\n const id = `mermaid-${Date.now()}`;\n\n // Fetch the graph definition including tags\n txt = element.innerHTML;\n\n // transforms the html to pure text\n txt = decode(txt)\n .trim()\n .replace(/
/gi, '
');\n\n const init = utils.detectInit(txt);\n if (init) {\n logger.debug('Detected early reinit: ', init);\n }\n\n try {\n mermaidAPI.render(\n id,\n txt,\n (svgCode, bindFunctions) => {\n element.innerHTML = svgCode;\n if (typeof callback !== 'undefined') {\n callback(id);\n }\n if (bindFunctions) bindFunctions(element);\n },\n element\n );\n } catch (e) {\n logger.warn('Syntax Error rendering');\n logger.warn(e);\n if (this.parseError) {\n this.parseError(e);\n }\n }\n }\n};\n\nconst initialize = function(config) {\n mermaidAPI.reset();\n if (typeof config.mermaid !== 'undefined') {\n if (typeof config.mermaid.startOnLoad !== 'undefined') {\n mermaid.startOnLoad = config.mermaid.startOnLoad;\n }\n if (typeof config.mermaid.htmlLabels !== 'undefined') {\n mermaid.htmlLabels = config.mermaid.htmlLabels;\n }\n }\n mermaidAPI.initialize(config);\n // mermaidAPI.reset();\n};\n\n/**\n * ##contentLoaded\n * Callback function that is called when page is loaded. This functions fetches configuration for mermaid rendering and\n * calls init for rendering the mermaid diagrams on the page.\n */\nconst contentLoaded = function() {\n let config;\n\n if (mermaid.startOnLoad) {\n // No config found, do check API config\n config = mermaidAPI.getConfig();\n if (config.startOnLoad) {\n mermaid.init();\n }\n } else {\n if (typeof mermaid.startOnLoad === 'undefined') {\n logger.debug('In start, no config');\n config = mermaidAPI.getConfig();\n if (config.startOnLoad) {\n mermaid.init();\n }\n }\n }\n};\n\nif (typeof document !== 'undefined') {\n /*!\n * Wait for document loaded before starting the execution\n */\n window.addEventListener(\n 'load',\n function() {\n contentLoaded();\n },\n false\n );\n}\n\nconst mermaid = {\n startOnLoad: true,\n htmlLabels: true,\n\n mermaidAPI,\n parse: mermaidAPI.parse,\n render: mermaidAPI.render,\n\n init,\n initialize,\n\n contentLoaded\n};\n\nexport default mermaid;\n"],"sourceRoot":""}
\ No newline at end of file
diff --git a/docs/Setup.md b/docs/Setup.md
index c6a188e14..962bc4ec3 100644
--- a/docs/Setup.md
+++ b/docs/Setup.md
@@ -13,7 +13,7 @@ In addition to the render function, a number of behavioral configuration options
## Configuration
-**Configuration methods in Mermaid version 8.6.0 have been updated to include `directives`, to learn more\[[click here][2]].**
+**Configuration methods in Mermaid version 8.6.0 have been updated, to learn more\[[click here][2]].**
## **What follows are config instructions for older versions**
@@ -48,31 +48,6 @@ mermaid.initialize({
A summary of all options and their defaults is found [here][3]. A description of each option follows below.
-
-| Parameter | Description | Type | Required | Values |
-| ---------- | ------------------------------------------------------ | ------ | -------- | ----------------------------- |
-| config | current mermaid configurations | Object | Required | All parameters and values, except where prohibited by `secure`. |
-
-**Notes:**
-**config here is an object that can be created either through `const` or `var` and is loaded by `mermaidAPI.initialize`.
-config, can be overriden using the `%%init%%` directive, after [Version 8.6.0](./8.6.0_docs.md) was introduced.
-
-## secure
-
-This option controls which currentConfig keys are considered _secure_ and can only be changed via
-call to mermaidAPI.initialize. Calls to `mermaidAPI.reinitialize` cannot make changes to
-the `secure` keys in the current currentConfig. This prevents malicious graph directives from
-overriding a site's default security.
-
-| Parameter | Description |Type | Required | Values|
-| --- | --- | --- | --- | --- |
-| secure | Array of parameters that cannot be changed the `init` directive| Array | Required | Any parameters|
-
-The modifiable parts of the Configuration are limited by the secure array, which is an array of immutable parameters, this array can be expanded by site owners.
-
-**Notes**: `secure` arrays work like nesting dolls, with the Global Configurations’ secure array being the default and immutable list of immutable parameters, or the smallest doll, to which site owners may add to, but implementors may not modify it.
-
-
## theme
theme , the CSS style sheet
@@ -143,6 +118,13 @@ theme , the CSS style sheet
**Default value: false**.
+## secure
+
+This option controls which currentConfig keys are considered _secure_ and can only be changed via
+call to mermaidAPI.initialize. Calls to mermaidAPI.reinitialize cannot make changes to
+the `secure` keys in the current currentConfig. This prevents malicious graph directives from
+overriding a site's default security.
+
## flowchart
The object containing configurations specific for flowcharts