зеркало из https://github.com/nextcloud/text.git
1 строка
2.5 MiB
1 строка
2.5 MiB
{"version":3,"file":"mermaid.js?v=a8055a67e342722f3307","mappings":"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,CAAC,EAAG,IAAKC,EAAM,CAAC,EAAG,IAAKC,EAAM,CAAC,EAAG,IAAKC,EAAM,CAAC,EAAG,IAAKC,EAAM,CAAC,EAAG,IAAKC,EAAM,CAAC,EAAG,IAAKC,EAAM,CAAC,EAAG,IAAKC,EAAM,CAAC,EAAG,IAAKC,EAAM,CAAC,EAAG,IAAKC,EAAM,CAAC,EAAG,IAAKC,EAAM,CAAC,EAAG,IAAKC,EAAM,CAAC,EAAG,IAAKqW,EAAM,CAAC,EAAG,IAAKC,EAAM,CAAC,EAAG,IAAKC,EAAM,CAAC,EAAG,IAAKC,EAAM,CAAC,EAAG,IAAKC,EAAM,CAAC,EAAG,IAAKC,EAAM,CAAC,EAAG,IAAKC,EAAM,CAAC,EAAG,IAAKC,EAAM,CAAC,EAAG,IAAKC,EAAM,CAAC,EAAG,IAAKC,EAAM,CAAC,EAAG,IAAKC,EAAM,CAAC,EAAG,IAAKC,EAAM,CAAC,EAAG,IAAKC,EAAM,CAAC,EAAG,IAAKC,EAAM,CAAC,EAAG,IAAKC,EAAM,CAAC,EAAG,IAAKC,EAAM,CAAC,EAAG,IAAKC,EAAM,CAAC,EAAG,IAAKC,EAAM,CAAC,EAAG,IAAKC,EAAM,CAAC,EAAG,IAAKC,EAAM,CAAC,EAAG,IAAKC,EAAM,CAAC,EAAG,IAAKC,EAAM,CAAC,EAAG,IAAKC,EAAM,CAAC,EAAG,IAAKC,EAAM,CAAC,EAAG,IAAKC,EAAM,CAAC,EAAG,IAAKC,EAAM,CAAC,EAAG,IAAKC,EAAM,CAAC,EAAG,IAAKC,EAAM,CAAC,EAAG,IAAKC,EAAM,CAAC,GAAI,IAAKC,EAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAKC,EAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,G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K,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAI,GAAI,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIqW,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,GAAO,CAAE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI9Y,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAI,GAAI,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIqW,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,GAAO,CAAE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI9Y,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAI,GAAI,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GA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AC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CA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KC,EAAM,CAAC,EAAG,IAAKC,EAAM,CAAC,EAAG,IAAKC,EAAM,CAAC,EAAG,IAAKC,EAAM,CAAC,EAAG,IAAKC,EAAM,CAAC,EAAG,IAAKC,EAAM,CAAC,EAAG,IAAKC,EAAM,CAAC,EAAG,IAAKC,EAAM,CAAC,EAAG,IAAKC,EAAM,CAAC,EAAG,IAAKC,EAAM,CAAC,EAAG,IAAKC,EAAM,CAAC,EAAG,IAAKC,EAAM,CAAC,EAAG,IAAKC,EAAM,CAAC,EAAG,IAAKC,EAAM,CAAC,EAAG,IAAKC,EAAM,CAAC,EAAG,IAAKC,EAAM,CAAC,EAAG,IAAKC,EAAM,CAAC,EAAG,IAAKC,EAAM,CAAC,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAKC,EAAM,CAAC,EAAG,EAAG,GAAI,GAAI,GAAI,IAAKC,EAAM,CAAC,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAKC,EAAM,CAAC,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAKC,EAAM,CAAC,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAKC,EAAM,CAAC,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,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","sources":["webpack:///text/node_modules/mermaid/dist/blockDiagram-91b80b7a.js","webpack:///text/node_modules/mermaid/dist/c4Diagram-b2a90758.js","webpack:///text/node_modules/mermaid/dist/classDiagram-30eddba6.js","webpack:///text/node_modules/mermaid/dist/classDiagram-v2-f2df5561.js","webpack:///text/node_modules/mermaid/dist/createText-6b48ae7d.js","webpack:///text/node_modules/mermaid/dist/edges-d32062c0.js","webpack:///text/node_modules/mermaid/dist/erDiagram-47591fe2.js","webpack:///text/node_modules/mermaid/dist/flowDb-4b19a42f.js","webpack:///text/node_modules/mermaid/dist/flowDiagram-5540d9b9.js","webpack:///text/node_modules/mermaid/dist/flowDiagram-v2-3b53844e.js","webpack:///text/node_modules/mermaid/dist/flowchart-elk-definition-5fe447d6.js","webpack:///text/node_modules/mermaid/dist/ganttDiagram-9a3bba1f.js","webpack:///text/node_modules/mermaid/dist/gitGraphDiagram-96e6b4ee.js","webpack:///text/node_modules/mermaid/dist/index-fc10efb0.js","webpack:///text/node_modules/mermaid/dist/infoDiagram-bcd20f53.js","webpack:///text/node_modules/mermaid/dist/journeyDiagram-4fe6b3dc.js","webpack:///text/node_modules/mermaid/dist/mermaid-f47111a7.js","webpack:///text/node_modules/mermaid/dist/mindmap-definition-f354de21.js","webpack:///text/node_modules/mermaid/dist/pieDiagram-79897490.js","webpack:///text/node_modules/mermaid/dist/quadrantDiagram-62f64e94.js","webpack:///text/node_modules/mermaid/dist/requirementDiagram-05bf5f74.js","webpack:///text/node_modules/mermaid/dist/sankeyDiagram-97764748.js","webpack:///text/node_modules/mermaid/dist/sequenceDiagram-acc0e65c.js","webpack:///text/node_modules/mermaid/dist/stateDiagram-0ff1cf1a.js","webpack:///text/node_modules/mermaid/dist/stateDiagram-v2-9a9d610d.js","webpack:///text/node_modules/mermaid/dist/styles-3ed67cfa.js","webpack:///text/node_modules/mermaid/dist/styles-991ebdfc.js","webpack:///text/node_modules/mermaid/dist/styles-d20c7d72.js","webpack:///text/node_modules/mermaid/dist/svgDrawCommon-5ccd53ef.js","webpack:///text/node_modules/mermaid/dist/timeline-definition-fea2a41d.js","webpack:///text/node_modules/mermaid/dist/xychartDiagram-ab372869.js"],"sourcesContent":["var _a, _b;\nimport { F as getConfig, l as log, v as clear$1, k as getStylesFromArray, c as getConfig$1, i as configureSvgSize } from \"./mermaid-f47111a7.js\";\nimport clone from \"lodash-es/clone.js\";\nimport * as khroma from \"khroma\";\nimport { h as insertEdge, f as insertEdgeLabel, j as positionEdgeLabel, e as insertNode, p as positionNode, a as insertMarkers } from \"./edges-d32062c0.js\";\nimport * as graphlib from \"dagre-d3-es/src/graphlib/index.js\";\nimport { select, scaleOrdinal, schemeTableau10 } from \"d3\";\nimport \"ts-dedent\";\nimport \"dayjs\";\nimport \"@braintree/sanitize-url\";\nimport \"dompurify\";\nimport \"lodash-es/memoize.js\";\nimport \"lodash-es/merge.js\";\nimport \"stylis\";\nimport \"lodash-es/isEmpty.js\";\nimport \"./createText-6b48ae7d.js\";\nimport \"mdast-util-from-markdown\";\nvar parser = function() {\n var o = function(k, v, o2, l) {\n for (o2 = o2 || {}, l = k.length; l--; o2[k[l]] = v)\n ;\n return o2;\n }, $V0 = [1, 7], $V1 = [1, 13], $V2 = [1, 14], $V3 = [1, 15], $V4 = [1, 19], $V5 = [1, 16], $V6 = [1, 17], $V7 = [1, 18], $V8 = [8, 30], $V9 = [8, 21, 28, 29, 30, 31, 32, 40, 44, 47], $Va = [1, 23], $Vb = [1, 24], $Vc = [8, 15, 16, 21, 28, 29, 30, 31, 32, 40, 44, 47], $Vd = [8, 15, 16, 21, 27, 28, 29, 30, 31, 32, 40, 44, 47], $Ve = [1, 49];\n var parser2 = {\n trace: function trace() {\n },\n yy: {},\n symbols_: { \"error\": 2, \"spaceLines\": 3, \"SPACELINE\": 4, \"NL\": 5, \"separator\": 6, \"SPACE\": 7, \"EOF\": 8, \"start\": 9, \"BLOCK_DIAGRAM_KEY\": 10, \"document\": 11, \"stop\": 12, \"statement\": 13, \"link\": 14, \"LINK\": 15, \"START_LINK\": 16, \"LINK_LABEL\": 17, \"STR\": 18, \"nodeStatement\": 19, \"columnsStatement\": 20, \"SPACE_BLOCK\": 21, \"blockStatement\": 22, \"classDefStatement\": 23, \"cssClassStatement\": 24, \"styleStatement\": 25, \"node\": 26, \"SIZE\": 27, \"COLUMNS\": 28, \"id-block\": 29, \"end\": 30, \"block\": 31, \"NODE_ID\": 32, \"nodeShapeNLabel\": 33, \"dirList\": 34, \"DIR\": 35, \"NODE_DSTART\": 36, \"NODE_DEND\": 37, \"BLOCK_ARROW_START\": 38, \"BLOCK_ARROW_END\": 39, \"classDef\": 40, \"CLASSDEF_ID\": 41, \"CLASSDEF_STYLEOPTS\": 42, \"DEFAULT\": 43, \"class\": 44, \"CLASSENTITY_IDS\": 45, \"STYLECLASS\": 46, \"style\": 47, \"STYLE_ENTITY_IDS\": 48, \"STYLE_DEFINITION_DATA\": 49, \"$accept\": 0, \"$end\": 1 },\n terminals_: { 2: \"error\", 4: \"SPACELINE\", 5: \"NL\", 7: \"SPACE\", 8: \"EOF\", 10: \"BLOCK_DIAGRAM_KEY\", 15: \"LINK\", 16: \"START_LINK\", 17: \"LINK_LABEL\", 18: \"STR\", 21: \"SPACE_BLOCK\", 27: \"SIZE\", 28: \"COLUMNS\", 29: \"id-block\", 30: \"end\", 31: \"block\", 32: \"NODE_ID\", 35: \"DIR\", 36: \"NODE_DSTART\", 37: \"NODE_DEND\", 38: \"BLOCK_ARROW_START\", 39: \"BLOCK_ARROW_END\", 40: \"classDef\", 41: \"CLASSDEF_ID\", 42: \"CLASSDEF_STYLEOPTS\", 43: \"DEFAULT\", 44: \"class\", 45: \"CLASSENTITY_IDS\", 46: \"STYLECLASS\", 47: \"style\", 48: \"STYLE_ENTITY_IDS\", 49: \"STYLE_DEFINITION_DATA\" },\n productions_: [0, [3, 1], [3, 2], [3, 2], [6, 1], [6, 1], [6, 1], [9, 3], [12, 1], [12, 1], [12, 2], [12, 2], [11, 1], [11, 2], [14, 1], [14, 4], [13, 1], [13, 1], [13, 1], [13, 1], [13, 1], [13, 1], [13, 1], [19, 3], [19, 2], [19, 1], [20, 1], [22, 4], [22, 3], [26, 1], [26, 2], [34, 1], [34, 2], [33, 3], [33, 4], [23, 3], [23, 3], [24, 3], [25, 3]],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) {\n var $0 = $$.length - 1;\n switch (yystate) {\n case 4:\n yy.getLogger().debug(\"Rule: separator (NL) \");\n break;\n case 5:\n yy.getLogger().debug(\"Rule: separator (Space) \");\n break;\n case 6:\n yy.getLogger().debug(\"Rule: separator (EOF) \");\n break;\n case 7:\n yy.getLogger().debug(\"Rule: hierarchy: \", $$[$0 - 1]);\n yy.setHierarchy($$[$0 - 1]);\n break;\n case 8:\n yy.getLogger().debug(\"Stop NL \");\n break;\n case 9:\n yy.getLogger().debug(\"Stop EOF \");\n break;\n case 10:\n yy.getLogger().debug(\"Stop NL2 \");\n break;\n case 11:\n yy.getLogger().debug(\"Stop EOF2 \");\n break;\n case 12:\n yy.getLogger().debug(\"Rule: statement: \", $$[$0]);\n typeof $$[$0].length === \"number\" ? this.$ = $$[$0] : this.$ = [$$[$0]];\n break;\n case 13:\n yy.getLogger().debug(\"Rule: statement #2: \", $$[$0 - 1]);\n this.$ = [$$[$0 - 1]].concat($$[$0]);\n break;\n case 14:\n yy.getLogger().debug(\"Rule: link: \", $$[$0], yytext);\n this.$ = { edgeTypeStr: $$[$0], label: \"\" };\n break;\n case 15:\n yy.getLogger().debug(\"Rule: LABEL link: \", $$[$0 - 3], $$[$0 - 1], $$[$0]);\n this.$ = { edgeTypeStr: $$[$0], label: $$[$0 - 1] };\n break;\n case 18:\n const num = parseInt($$[$0]);\n const spaceId = yy.generateId();\n this.$ = { id: spaceId, type: \"space\", label: \"\", width: num, children: [] };\n break;\n case 23:\n yy.getLogger().debug(\"Rule: (nodeStatement link node) \", $$[$0 - 2], $$[$0 - 1], $$[$0], \" typestr: \", $$[$0 - 1].edgeTypeStr);\n const edgeData = yy.edgeStrToEdgeData($$[$0 - 1].edgeTypeStr);\n this.$ = [\n { id: $$[$0 - 2].id, label: $$[$0 - 2].label, type: $$[$0 - 2].type, directions: $$[$0 - 2].directions },\n { id: $$[$0 - 2].id + \"-\" + $$[$0].id, start: $$[$0 - 2].id, end: $$[$0].id, label: $$[$0 - 1].label, type: \"edge\", directions: $$[$0].directions, arrowTypeEnd: edgeData, arrowTypeStart: \"arrow_open\" },\n { id: $$[$0].id, label: $$[$0].label, type: yy.typeStr2Type($$[$0].typeStr), directions: $$[$0].directions }\n ];\n break;\n case 24:\n yy.getLogger().debug(\"Rule: nodeStatement (abc88 node size) \", $$[$0 - 1], $$[$0]);\n this.$ = { id: $$[$0 - 1].id, label: $$[$0 - 1].label, type: yy.typeStr2Type($$[$0 - 1].typeStr), directions: $$[$0 - 1].directions, widthInColumns: parseInt($$[$0], 10) };\n break;\n case 25:\n yy.getLogger().debug(\"Rule: nodeStatement (node) \", $$[$0]);\n this.$ = { id: $$[$0].id, label: $$[$0].label, type: yy.typeStr2Type($$[$0].typeStr), directions: $$[$0].directions, widthInColumns: 1 };\n break;\n case 26:\n yy.getLogger().debug(\"APA123\", this ? this : \"na\");\n yy.getLogger().debug(\"COLUMNS: \", $$[$0]);\n this.$ = { type: \"column-setting\", columns: $$[$0] === \"auto\" ? -1 : parseInt($$[$0]) };\n break;\n case 27:\n yy.getLogger().debug(\"Rule: id-block statement : \", $$[$0 - 2], $$[$0 - 1]);\n yy.generateId();\n this.$ = { ...$$[$0 - 2], type: \"composite\", children: $$[$0 - 1] };\n break;\n case 28:\n yy.getLogger().debug(\"Rule: blockStatement : \", $$[$0 - 2], $$[$0 - 1], $$[$0]);\n const id = yy.generateId();\n this.$ = { id, type: \"composite\", label: \"\", children: $$[$0 - 1] };\n break;\n case 29:\n yy.getLogger().debug(\"Rule: node (NODE_ID separator): \", $$[$0]);\n this.$ = { id: $$[$0] };\n break;\n case 30:\n yy.getLogger().debug(\"Rule: node (NODE_ID nodeShapeNLabel separator): \", $$[$0 - 1], $$[$0]);\n this.$ = { id: $$[$0 - 1], label: $$[$0].label, typeStr: $$[$0].typeStr, directions: $$[$0].directions };\n break;\n case 31:\n yy.getLogger().debug(\"Rule: dirList: \", $$[$0]);\n this.$ = [$$[$0]];\n break;\n case 32:\n yy.getLogger().debug(\"Rule: dirList: \", $$[$0 - 1], $$[$0]);\n this.$ = [$$[$0 - 1]].concat($$[$0]);\n break;\n case 33:\n yy.getLogger().debug(\"Rule: nodeShapeNLabel: \", $$[$0 - 2], $$[$0 - 1], $$[$0]);\n this.$ = { typeStr: $$[$0 - 2] + $$[$0], label: $$[$0 - 1] };\n break;\n case 34:\n yy.getLogger().debug(\"Rule: BLOCK_ARROW nodeShapeNLabel: \", $$[$0 - 3], $$[$0 - 2], \" #3:\", $$[$0 - 1], $$[$0]);\n this.$ = { typeStr: $$[$0 - 3] + $$[$0], label: $$[$0 - 2], directions: $$[$0 - 1] };\n break;\n case 35:\n case 36:\n this.$ = { type: \"classDef\", id: $$[$0 - 1].trim(), css: $$[$0].trim() };\n break;\n case 37:\n this.$ = { type: \"applyClass\", id: $$[$0 - 1].trim(), styleClass: $$[$0].trim() };\n break;\n case 38:\n this.$ = { type: \"applyStyles\", id: $$[$0 - 1].trim(), stylesStr: $$[$0].trim() };\n break;\n }\n },\n table: [{ 9: 1, 10: [1, 2] }, { 1: [3] }, { 11: 3, 13: 4, 19: 5, 20: 6, 21: $V0, 22: 8, 23: 9, 24: 10, 25: 11, 26: 12, 28: $V1, 29: $V2, 31: $V3, 32: $V4, 40: $V5, 44: $V6, 47: $V7 }, { 8: [1, 20] }, o($V8, [2, 12], { 13: 4, 19: 5, 20: 6, 22: 8, 23: 9, 24: 10, 25: 11, 26: 12, 11: 21, 21: $V0, 28: $V1, 29: $V2, 31: $V3, 32: $V4, 40: $V5, 44: $V6, 47: $V7 }), o($V9, [2, 16], { 14: 22, 15: $Va, 16: $Vb }), o($V9, [2, 17]), o($V9, [2, 18]), o($V9, [2, 19]), o($V9, [2, 20]), o($V9, [2, 21]), o($V9, [2, 22]), o($Vc, [2, 25], { 27: [1, 25] }), o($V9, [2, 26]), { 19: 26, 26: 12, 32: $V4 }, { 11: 27, 13: 4, 19: 5, 20: 6, 21: $V0, 22: 8, 23: 9, 24: 10, 25: 11, 26: 12, 28: $V1, 29: $V2, 31: $V3, 32: $V4, 40: $V5, 44: $V6, 47: $V7 }, { 41: [1, 28], 43: [1, 29] }, { 45: [1, 30] }, { 48: [1, 31] }, o($Vd, [2, 29], { 33: 32, 36: [1, 33], 38: [1, 34] }), { 1: [2, 7] }, o($V8, [2, 13]), { 26: 35, 32: $V4 }, { 32: [2, 14] }, { 17: [1, 36] }, o($Vc, [2, 24]), { 11: 37, 13: 4, 14: 22, 15: $Va, 16: $Vb, 19: 5, 20: 6, 21: $V0, 22: 8, 23: 9, 24: 10, 25: 11, 26: 12, 28: $V1, 29: $V2, 31: $V3, 32: $V4, 40: $V5, 44: $V6, 47: $V7 }, { 30: [1, 38] }, { 42: [1, 39] }, { 42: [1, 40] }, { 46: [1, 41] }, { 49: [1, 42] }, o($Vd, [2, 30]), { 18: [1, 43] }, { 18: [1, 44] }, o($Vc, [2, 23]), { 18: [1, 45] }, { 30: [1, 46] }, o($V9, [2, 28]), o($V9, [2, 35]), o($V9, [2, 36]), o($V9, [2, 37]), o($V9, [2, 38]), { 37: [1, 47] }, { 34: 48, 35: $Ve }, { 15: [1, 50] }, o($V9, [2, 27]), o($Vd, [2, 33]), { 39: [1, 51] }, { 34: 52, 35: $Ve, 39: [2, 31] }, { 32: [2, 15] }, o($Vd, [2, 34]), { 39: [2, 32] }],\n defaultActions: { 20: [2, 7], 23: [2, 14], 50: [2, 15], 52: [2, 32] },\n parseError: 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 },\n parse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = \"\", yylineno = 0, yyleng = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer2 = 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 lexer2.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer2;\n sharedState.yy.parser = this;\n if (typeof lexer2.yylloc == \"undefined\") {\n lexer2.yylloc = {};\n }\n var yyloc = lexer2.yylloc;\n lstack.push(yyloc);\n var ranges = lexer2.options && lexer2.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 lex() {\n var token;\n token = tstack.pop() || lexer2.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, state, action, 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 (lexer2.showPosition) {\n errStr = \"Parse error on line \" + (yylineno + 1) + \":\\n\" + lexer2.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: lexer2.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer2.yylineno,\n loc: yyloc,\n 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(lexer2.yytext);\n lstack.push(lexer2.yylloc);\n stack.push(action[1]);\n symbol = null;\n {\n yyleng = lexer2.yyleng;\n yytext = lexer2.yytext;\n yylineno = lexer2.yylineno;\n yyloc = lexer2.yylloc;\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 var lexer = function() {\n var lexer2 = {\n EOF: 1,\n parseError: 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 // resets the lexer, sets new input\n setInput: 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 // consumes and returns one char from the input\n input: 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 this._input = this._input.slice(1);\n return ch;\n },\n // unshifts one char (or a string) into the input\n unput: function(ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - 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 if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\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 ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len\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 // When called from action, caches matched text and appends it on next action\n more: function() {\n this._more = true;\n return this;\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.\n reject: 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 return this;\n },\n // retain first n characters of the match\n less: function(n) {\n this.unput(this.match.slice(n));\n },\n // displays already matched input, i.e. for error messages\n pastInput: 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 // displays upcoming input, i.e. for error messages\n upcomingInput: 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 // displays the character position where the lexing error occurred, i.e. for error messages\n showPosition: function() {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n // test the lexed token: return FALSE when not a match, otherwise return token\n test_match: function(match, indexed_rule) {\n var token, lines, backup;\n if (this.options.backtrack_lexer) {\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 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 ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length : 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 for (var k in backup) {\n this[k] = backup[k];\n }\n return false;\n }\n return false;\n },\n // return next match in input\n next: function() {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n var token, match, tempMatch, 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;\n } else {\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 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 // return next match that has a token\n lex: function lex() {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\n begin: function begin(condition) {\n this.conditionStack.push(condition);\n },\n // pop the previously active lexer condition state off the condition stack\n popState: 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 // 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 // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\n topState: 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 // alias for begin(condition)\n pushState: function pushState(condition) {\n this.begin(condition);\n },\n // return the number of states currently on the stack\n stateStackSize: function stateStackSize() {\n return this.conditionStack.length;\n },\n options: {},\n performAction: function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) {\n switch ($avoiding_name_collisions) {\n case 0:\n return 10;\n case 1:\n yy.getLogger().debug(\"Found space-block\");\n return 31;\n case 2:\n yy.getLogger().debug(\"Found nl-block\");\n return 31;\n case 3:\n yy.getLogger().debug(\"Found space-block\");\n return 29;\n case 4:\n yy.getLogger().debug(\".\", yy_.yytext);\n break;\n case 5:\n yy.getLogger().debug(\"_\", yy_.yytext);\n break;\n case 6:\n return 5;\n case 7:\n yy_.yytext = -1;\n return 28;\n case 8:\n yy_.yytext = yy_.yytext.replace(/columns\\s+/, \"\");\n yy.getLogger().debug(\"COLUMNS (LEX)\", yy_.yytext);\n return 28;\n case 9:\n this.pushState(\"md_string\");\n break;\n case 10:\n return \"MD_STR\";\n case 11:\n this.popState();\n break;\n case 12:\n this.pushState(\"string\");\n break;\n case 13:\n yy.getLogger().debug(\"LEX: POPPING STR:\", yy_.yytext);\n this.popState();\n break;\n case 14:\n yy.getLogger().debug(\"LEX: STR end:\", yy_.yytext);\n return \"STR\";\n case 15:\n yy_.yytext = yy_.yytext.replace(/space\\:/, \"\");\n yy.getLogger().debug(\"SPACE NUM (LEX)\", yy_.yytext);\n return 21;\n case 16:\n yy_.yytext = \"1\";\n yy.getLogger().debug(\"COLUMNS (LEX)\", yy_.yytext);\n return 21;\n case 17:\n return 43;\n case 18:\n return \"LINKSTYLE\";\n case 19:\n return \"INTERPOLATE\";\n case 20:\n this.pushState(\"CLASSDEF\");\n return 40;\n case 21:\n this.popState();\n this.pushState(\"CLASSDEFID\");\n return \"DEFAULT_CLASSDEF_ID\";\n case 22:\n this.popState();\n this.pushState(\"CLASSDEFID\");\n return 41;\n case 23:\n this.popState();\n return 42;\n case 24:\n this.pushState(\"CLASS\");\n return 44;\n case 25:\n this.popState();\n this.pushState(\"CLASS_STYLE\");\n return 45;\n case 26:\n this.popState();\n return 46;\n case 27:\n this.pushState(\"STYLE_STMNT\");\n return 47;\n case 28:\n this.popState();\n this.pushState(\"STYLE_DEFINITION\");\n return 48;\n case 29:\n this.popState();\n return 49;\n case 30:\n this.pushState(\"acc_title\");\n return \"acc_title\";\n case 31:\n this.popState();\n return \"acc_title_value\";\n case 32:\n this.pushState(\"acc_descr\");\n return \"acc_descr\";\n case 33:\n this.popState();\n return \"acc_descr_value\";\n case 34:\n this.pushState(\"acc_descr_multiline\");\n break;\n case 35:\n this.popState();\n break;\n case 36:\n return \"acc_descr_multiline_value\";\n case 37:\n return 30;\n case 38:\n this.popState();\n yy.getLogger().debug(\"Lex: ((\");\n return \"NODE_DEND\";\n case 39:\n this.popState();\n yy.getLogger().debug(\"Lex: ((\");\n return \"NODE_DEND\";\n case 40:\n this.popState();\n yy.getLogger().debug(\"Lex: ))\");\n return \"NODE_DEND\";\n case 41:\n this.popState();\n yy.getLogger().debug(\"Lex: ((\");\n return \"NODE_DEND\";\n case 42:\n this.popState();\n yy.getLogger().debug(\"Lex: ((\");\n return \"NODE_DEND\";\n case 43:\n this.popState();\n yy.getLogger().debug(\"Lex: (-\");\n return \"NODE_DEND\";\n case 44:\n this.popState();\n yy.getLogger().debug(\"Lex: -)\");\n return \"NODE_DEND\";\n case 45:\n this.popState();\n yy.getLogger().debug(\"Lex: ((\");\n return \"NODE_DEND\";\n case 46:\n this.popState();\n yy.getLogger().debug(\"Lex: ]]\");\n return \"NODE_DEND\";\n case 47:\n this.popState();\n yy.getLogger().debug(\"Lex: (\");\n return \"NODE_DEND\";\n case 48:\n this.popState();\n yy.getLogger().debug(\"Lex: ])\");\n return \"NODE_DEND\";\n case 49:\n this.popState();\n yy.getLogger().debug(\"Lex: /]\");\n return \"NODE_DEND\";\n case 50:\n this.popState();\n yy.getLogger().debug(\"Lex: /]\");\n return \"NODE_DEND\";\n case 51:\n this.popState();\n yy.getLogger().debug(\"Lex: )]\");\n return \"NODE_DEND\";\n case 52:\n this.popState();\n yy.getLogger().debug(\"Lex: )\");\n return \"NODE_DEND\";\n case 53:\n this.popState();\n yy.getLogger().debug(\"Lex: ]>\");\n return \"NODE_DEND\";\n case 54:\n this.popState();\n yy.getLogger().debug(\"Lex: ]\");\n return \"NODE_DEND\";\n case 55:\n yy.getLogger().debug(\"Lexa: -)\");\n this.pushState(\"NODE\");\n return 36;\n case 56:\n yy.getLogger().debug(\"Lexa: (-\");\n this.pushState(\"NODE\");\n return 36;\n case 57:\n yy.getLogger().debug(\"Lexa: ))\");\n this.pushState(\"NODE\");\n return 36;\n case 58:\n yy.getLogger().debug(\"Lexa: )\");\n this.pushState(\"NODE\");\n return 36;\n case 59:\n yy.getLogger().debug(\"Lex: (((\");\n this.pushState(\"NODE\");\n return 36;\n case 60:\n yy.getLogger().debug(\"Lexa: )\");\n this.pushState(\"NODE\");\n return 36;\n case 61:\n yy.getLogger().debug(\"Lexa: )\");\n this.pushState(\"NODE\");\n return 36;\n case 62:\n yy.getLogger().debug(\"Lexa: )\");\n this.pushState(\"NODE\");\n return 36;\n case 63:\n yy.getLogger().debug(\"Lexc: >\");\n this.pushState(\"NODE\");\n return 36;\n case 64:\n yy.getLogger().debug(\"Lexa: ([\");\n this.pushState(\"NODE\");\n return 36;\n case 65:\n yy.getLogger().debug(\"Lexa: )\");\n this.pushState(\"NODE\");\n return 36;\n case 66:\n this.pushState(\"NODE\");\n return 36;\n case 67:\n this.pushState(\"NODE\");\n return 36;\n case 68:\n this.pushState(\"NODE\");\n return 36;\n case 69:\n this.pushState(\"NODE\");\n return 36;\n case 70:\n this.pushState(\"NODE\");\n return 36;\n case 71:\n this.pushState(\"NODE\");\n return 36;\n case 72:\n this.pushState(\"NODE\");\n return 36;\n case 73:\n yy.getLogger().debug(\"Lexa: [\");\n this.pushState(\"NODE\");\n return 36;\n case 74:\n this.pushState(\"BLOCK_ARROW\");\n yy.getLogger().debug(\"LEX ARR START\");\n return 38;\n case 75:\n yy.getLogger().debug(\"Lex: NODE_ID\", yy_.yytext);\n return 32;\n case 76:\n yy.getLogger().debug(\"Lex: EOF\", yy_.yytext);\n return 8;\n case 77:\n this.pushState(\"md_string\");\n break;\n case 78:\n this.pushState(\"md_string\");\n break;\n case 79:\n return \"NODE_DESCR\";\n case 80:\n this.popState();\n break;\n case 81:\n yy.getLogger().debug(\"Lex: Starting string\");\n this.pushState(\"string\");\n break;\n case 82:\n yy.getLogger().debug(\"LEX ARR: Starting string\");\n this.pushState(\"string\");\n break;\n case 83:\n yy.getLogger().debug(\"LEX: NODE_DESCR:\", yy_.yytext);\n return \"NODE_DESCR\";\n case 84:\n yy.getLogger().debug(\"LEX POPPING\");\n this.popState();\n break;\n case 85:\n yy.getLogger().debug(\"Lex: =>BAE\");\n this.pushState(\"ARROW_DIR\");\n break;\n case 86:\n yy_.yytext = yy_.yytext.replace(/^,\\s*/, \"\");\n yy.getLogger().debug(\"Lex (right): dir:\", yy_.yytext);\n return \"DIR\";\n case 87:\n yy_.yytext = yy_.yytext.replace(/^,\\s*/, \"\");\n yy.getLogger().debug(\"Lex (left):\", yy_.yytext);\n return \"DIR\";\n case 88:\n yy_.yytext = yy_.yytext.replace(/^,\\s*/, \"\");\n yy.getLogger().debug(\"Lex (x):\", yy_.yytext);\n return \"DIR\";\n case 89:\n yy_.yytext = yy_.yytext.replace(/^,\\s*/, \"\");\n yy.getLogger().debug(\"Lex (y):\", yy_.yytext);\n return \"DIR\";\n case 90:\n yy_.yytext = yy_.yytext.replace(/^,\\s*/, \"\");\n yy.getLogger().debug(\"Lex (up):\", yy_.yytext);\n return \"DIR\";\n case 91:\n yy_.yytext = yy_.yytext.replace(/^,\\s*/, \"\");\n yy.getLogger().debug(\"Lex (down):\", yy_.yytext);\n return \"DIR\";\n case 92:\n yy_.yytext = \"]>\";\n yy.getLogger().debug(\"Lex (ARROW_DIR end):\", yy_.yytext);\n this.popState();\n this.popState();\n return \"BLOCK_ARROW_END\";\n case 93:\n yy.getLogger().debug(\"Lex: LINK\", \"#\" + yy_.yytext + \"#\");\n return 15;\n case 94:\n yy.getLogger().debug(\"Lex: LINK\", yy_.yytext);\n return 15;\n case 95:\n yy.getLogger().debug(\"Lex: LINK\", yy_.yytext);\n return 15;\n case 96:\n yy.getLogger().debug(\"Lex: LINK\", yy_.yytext);\n return 15;\n case 97:\n yy.getLogger().debug(\"Lex: START_LINK\", yy_.yytext);\n this.pushState(\"LLABEL\");\n return 16;\n case 98:\n yy.getLogger().debug(\"Lex: START_LINK\", yy_.yytext);\n this.pushState(\"LLABEL\");\n return 16;\n case 99:\n yy.getLogger().debug(\"Lex: START_LINK\", yy_.yytext);\n this.pushState(\"LLABEL\");\n return 16;\n case 100:\n this.pushState(\"md_string\");\n break;\n case 101:\n yy.getLogger().debug(\"Lex: Starting string\");\n this.pushState(\"string\");\n return \"LINK_LABEL\";\n case 102:\n this.popState();\n yy.getLogger().debug(\"Lex: LINK\", \"#\" + yy_.yytext + \"#\");\n return 15;\n case 103:\n this.popState();\n yy.getLogger().debug(\"Lex: LINK\", yy_.yytext);\n return 15;\n case 104:\n this.popState();\n yy.getLogger().debug(\"Lex: LINK\", yy_.yytext);\n return 15;\n case 105:\n yy.getLogger().debug(\"Lex: COLON\", yy_.yytext);\n yy_.yytext = yy_.yytext.slice(1);\n return 27;\n }\n },\n rules: [/^(?:block-beta\\b)/, /^(?:block\\s+)/, /^(?:block\\n+)/, /^(?:block:)/, /^(?:[\\s]+)/, /^(?:[\\n]+)/, /^(?:((\\u000D\\u000A)|(\\u000A)))/, /^(?:columns\\s+auto\\b)/, /^(?:columns\\s+[\\d]+)/, /^(?:[\"][`])/, /^(?:[^`\"]+)/, /^(?:[`][\"])/, /^(?:[\"])/, /^(?:[\"])/, /^(?:[^\"]*)/, /^(?:space[:]\\d+)/, /^(?:space\\b)/, /^(?:default\\b)/, /^(?:linkStyle\\b)/, /^(?:interpolate\\b)/, /^(?:classDef\\s+)/, /^(?:DEFAULT\\s+)/, /^(?:\\w+\\s+)/, /^(?:[^\\n]*)/, /^(?:class\\s+)/, /^(?:(\\w+)+((,\\s*\\w+)*))/, /^(?:[^\\n]*)/, /^(?:style\\s+)/, /^(?:(\\w+)+((,\\s*\\w+)*))/, /^(?:[^\\n]*)/, /^(?:accTitle\\s*:\\s*)/, /^(?:(?!\\n||)*[^\\n]*)/, /^(?:accDescr\\s*:\\s*)/, /^(?:(?!\\n||)*[^\\n]*)/, /^(?:accDescr\\s*\\{\\s*)/, /^(?:[\\}])/, /^(?:[^\\}]*)/, /^(?:end\\b\\s*)/, /^(?:\\(\\(\\()/, /^(?:\\)\\)\\))/, /^(?:[\\)]\\))/, /^(?:\\}\\})/, /^(?:\\})/, /^(?:\\(-)/, /^(?:-\\))/, /^(?:\\(\\()/, /^(?:\\]\\])/, /^(?:\\()/, /^(?:\\]\\))/, /^(?:\\\\\\])/, /^(?:\\/\\])/, /^(?:\\)\\])/, /^(?:[\\)])/, /^(?:\\]>)/, /^(?:[\\]])/, /^(?:-\\))/, /^(?:\\(-)/, /^(?:\\)\\))/, /^(?:\\))/, /^(?:\\(\\(\\()/, /^(?:\\(\\()/, /^(?:\\{\\{)/, /^(?:\\{)/, /^(?:>)/, /^(?:\\(\\[)/, /^(?:\\()/, /^(?:\\[\\[)/, /^(?:\\[\\|)/, /^(?:\\[\\()/, /^(?:\\)\\)\\))/, /^(?:\\[\\\\)/, /^(?:\\[\\/)/, /^(?:\\[\\\\)/, /^(?:\\[)/, /^(?:<\\[)/, /^(?:[^\\(\\[\\n\\-\\)\\{\\}\\s\\<\\>:]+)/, /^(?:$)/, /^(?:[\"][`])/, /^(?:[\"][`])/, /^(?:[^`\"]+)/, /^(?:[`][\"])/, /^(?:[\"])/, /^(?:[\"])/, /^(?:[^\"]+)/, /^(?:[\"])/, /^(?:\\]>\\s*\\()/, /^(?:,?\\s*right\\s*)/, /^(?:,?\\s*left\\s*)/, /^(?:,?\\s*x\\s*)/, /^(?:,?\\s*y\\s*)/, /^(?:,?\\s*up\\s*)/, /^(?:,?\\s*down\\s*)/, /^(?:\\)\\s*)/, /^(?:\\s*[xo<]?--+[-xo>]\\s*)/, /^(?:\\s*[xo<]?==+[=xo>]\\s*)/, /^(?:\\s*[xo<]?-?\\.+-[xo>]?\\s*)/, /^(?:\\s*~~[\\~]+\\s*)/, /^(?:\\s*[xo<]?--\\s*)/, /^(?:\\s*[xo<]?==\\s*)/, /^(?:\\s*[xo<]?-\\.\\s*)/, /^(?:[\"][`])/, /^(?:[\"])/, /^(?:\\s*[xo<]?--+[-xo>]\\s*)/, /^(?:\\s*[xo<]?==+[=xo>]\\s*)/, /^(?:\\s*[xo<]?-?\\.+-[xo>]?\\s*)/, /^(?::\\d+)/],\n conditions: { \"STYLE_DEFINITION\": { \"rules\": [29], \"inclusive\": false }, \"STYLE_STMNT\": { \"rules\": [28], \"inclusive\": false }, \"CLASSDEFID\": { \"rules\": [23], \"inclusive\": false }, \"CLASSDEF\": { \"rules\": [21, 22], \"inclusive\": false }, \"CLASS_STYLE\": { \"rules\": [26], \"inclusive\": false }, \"CLASS\": { \"rules\": [25], \"inclusive\": false }, \"LLABEL\": { \"rules\": [100, 101, 102, 103, 104], \"inclusive\": false }, \"ARROW_DIR\": { \"rules\": [86, 87, 88, 89, 90, 91, 92], \"inclusive\": false }, \"BLOCK_ARROW\": { \"rules\": [77, 82, 85], \"inclusive\": false }, \"NODE\": { \"rules\": [38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 78, 81], \"inclusive\": false }, \"md_string\": { \"rules\": [10, 11, 79, 80], \"inclusive\": false }, \"space\": { \"rules\": [], \"inclusive\": false }, \"string\": { \"rules\": [13, 14, 83, 84], \"inclusive\": false }, \"acc_descr_multiline\": { \"rules\": [35, 36], \"inclusive\": false }, \"acc_descr\": { \"rules\": [33], \"inclusive\": false }, \"acc_title\": { \"rules\": [31], \"inclusive\": false }, \"INITIAL\": { \"rules\": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 12, 15, 16, 17, 18, 19, 20, 24, 27, 30, 32, 34, 37, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 93, 94, 95, 96, 97, 98, 99, 105], \"inclusive\": true } }\n };\n return lexer2;\n }();\n parser2.lexer = lexer;\n function Parser() {\n this.yy = {};\n }\n Parser.prototype = parser2;\n parser2.Parser = Parser;\n return new Parser();\n}();\nparser.parser = parser;\nconst parser$1 = parser;\nlet blockDatabase = {};\nlet edgeList = [];\nlet edgeCount = {};\nconst COLOR_KEYWORD = \"color\";\nconst FILL_KEYWORD = \"fill\";\nconst BG_FILL = \"bgFill\";\nconst STYLECLASS_SEP = \",\";\nlet classes = {};\nconst addStyleClass = function(id, styleAttributes = \"\") {\n if (classes[id] === void 0) {\n classes[id] = { id, styles: [], textStyles: [] };\n }\n const foundClass = classes[id];\n if (styleAttributes !== void 0 && styleAttributes !== null) {\n styleAttributes.split(STYLECLASS_SEP).forEach((attrib) => {\n const fixedAttrib = attrib.replace(/([^;]*);/, \"$1\").trim();\n if (attrib.match(COLOR_KEYWORD)) {\n const newStyle1 = fixedAttrib.replace(FILL_KEYWORD, BG_FILL);\n const newStyle2 = newStyle1.replace(COLOR_KEYWORD, FILL_KEYWORD);\n foundClass.textStyles.push(newStyle2);\n }\n foundClass.styles.push(fixedAttrib);\n });\n }\n};\nconst addStyle2Node = function(id, styles = \"\") {\n const foundBlock = blockDatabase[id];\n if (styles !== void 0 && styles !== null) {\n foundBlock.styles = styles.split(STYLECLASS_SEP);\n }\n};\nconst setCssClass = function(itemIds, cssClassName) {\n itemIds.split(\",\").forEach(function(id) {\n let foundBlock = blockDatabase[id];\n if (foundBlock === void 0) {\n const trimmedId = id.trim();\n blockDatabase[trimmedId] = { id: trimmedId, type: \"na\", children: [] };\n foundBlock = blockDatabase[trimmedId];\n }\n if (!foundBlock.classes) {\n foundBlock.classes = [];\n }\n foundBlock.classes.push(cssClassName);\n });\n};\nconst populateBlockDatabase = (_blockList, parent) => {\n const blockList = _blockList.flat();\n const children = [];\n for (const block of blockList) {\n if (block.type === \"classDef\") {\n addStyleClass(block.id, block.css);\n continue;\n }\n if (block.type === \"applyClass\") {\n setCssClass(block.id, (block == null ? void 0 : block.styleClass) || \"\");\n continue;\n }\n if (block.type === \"applyStyles\") {\n if (block == null ? void 0 : block.stylesStr) {\n addStyle2Node(block.id, block == null ? void 0 : block.stylesStr);\n }\n continue;\n }\n if (block.type === \"column-setting\") {\n parent.columns = block.columns || -1;\n } else if (block.type === \"edge\") {\n if (edgeCount[block.id]) {\n edgeCount[block.id]++;\n } else {\n edgeCount[block.id] = 1;\n }\n block.id = edgeCount[block.id] + \"-\" + block.id;\n edgeList.push(block);\n } else {\n if (!block.label) {\n if (block.type === \"composite\") {\n block.label = \"\";\n } else {\n block.label = block.id;\n }\n }\n const newBlock = !blockDatabase[block.id];\n if (newBlock) {\n blockDatabase[block.id] = block;\n } else {\n if (block.type !== \"na\") {\n blockDatabase[block.id].type = block.type;\n }\n if (block.label !== block.id) {\n blockDatabase[block.id].label = block.label;\n }\n }\n if (block.children) {\n populateBlockDatabase(block.children, block);\n }\n if (block.type === \"space\") {\n const w = block.width || 1;\n for (let j = 0; j < w; j++) {\n const newBlock2 = clone(block);\n newBlock2.id = newBlock2.id + \"-\" + j;\n blockDatabase[newBlock2.id] = newBlock2;\n children.push(newBlock2);\n }\n } else if (newBlock) {\n children.push(block);\n }\n }\n }\n parent.children = children;\n};\nlet blocks = [];\nlet rootBlock = { id: \"root\", type: \"composite\", children: [], columns: -1 };\nconst clear = () => {\n log.debug(\"Clear called\");\n clear$1();\n rootBlock = { id: \"root\", type: \"composite\", children: [], columns: -1 };\n blockDatabase = { root: rootBlock };\n blocks = [];\n classes = {};\n edgeList = [];\n edgeCount = {};\n};\nfunction typeStr2Type(typeStr) {\n log.debug(\"typeStr2Type\", typeStr);\n switch (typeStr) {\n case \"[]\":\n return \"square\";\n case \"()\":\n log.debug(\"we have a round\");\n return \"round\";\n case \"(())\":\n return \"circle\";\n case \">]\":\n return \"rect_left_inv_arrow\";\n case \"{}\":\n return \"diamond\";\n case \"{{}}\":\n return \"hexagon\";\n case \"([])\":\n return \"stadium\";\n case \"[[]]\":\n return \"subroutine\";\n case \"[()]\":\n return \"cylinder\";\n case \"((()))\":\n return \"doublecircle\";\n case \"[//]\":\n return \"lean_right\";\n case \"[\\\\\\\\]\":\n return \"lean_left\";\n case \"[/\\\\]\":\n return \"trapezoid\";\n case \"[\\\\/]\":\n return \"inv_trapezoid\";\n case \"<[]>\":\n return \"block_arrow\";\n default:\n return \"na\";\n }\n}\nfunction edgeTypeStr2Type(typeStr) {\n log.debug(\"typeStr2Type\", typeStr);\n switch (typeStr) {\n case \"==\":\n return \"thick\";\n default:\n return \"normal\";\n }\n}\nfunction edgeStrToEdgeData(typeStr) {\n switch (typeStr.trim()) {\n case \"--x\":\n return \"arrow_cross\";\n case \"--o\":\n return \"arrow_circle\";\n default:\n return \"arrow_point\";\n }\n}\nlet cnt = 0;\nconst generateId = () => {\n cnt++;\n return \"id-\" + Math.random().toString(36).substr(2, 12) + \"-\" + cnt;\n};\nconst setHierarchy = (block) => {\n rootBlock.children = block;\n populateBlockDatabase(block, rootBlock);\n blocks = rootBlock.children;\n};\nconst getColumns = (blockId) => {\n const block = blockDatabase[blockId];\n if (!block) {\n return -1;\n }\n if (block.columns) {\n return block.columns;\n }\n if (!block.children) {\n return -1;\n }\n return block.children.length;\n};\nconst getBlocksFlat = () => {\n return [...Object.values(blockDatabase)];\n};\nconst getBlocks = () => {\n return blocks || [];\n};\nconst getEdges = () => {\n return edgeList;\n};\nconst getBlock = (id) => {\n return blockDatabase[id];\n};\nconst setBlock = (block) => {\n blockDatabase[block.id] = block;\n};\nconst getLogger = () => console;\nconst getClasses$1 = function() {\n return classes;\n};\nconst db = {\n getConfig: () => getConfig().block,\n typeStr2Type,\n edgeTypeStr2Type,\n edgeStrToEdgeData,\n getLogger,\n getBlocksFlat,\n getBlocks,\n getEdges,\n setHierarchy,\n getBlock,\n setBlock,\n getColumns,\n getClasses: getClasses$1,\n clear,\n generateId\n};\nconst db$1 = db;\nconst fade = (color, opacity) => {\n const channel = khroma.channel;\n const r = channel(color, \"r\");\n const g = channel(color, \"g\");\n const b = channel(color, \"b\");\n return khroma.rgba(r, g, b, opacity);\n};\nconst getStyles = (options) => `.label {\n font-family: ${options.fontFamily};\n color: ${options.nodeTextColor || options.textColor};\n }\n .cluster-label text {\n fill: ${options.titleColor};\n }\n .cluster-label span,p {\n color: ${options.titleColor};\n }\n\n\n\n .label text,span,p {\n fill: ${options.nodeTextColor || options.textColor};\n color: ${options.nodeTextColor || 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 .flowchart-label text {\n text-anchor: middle;\n }\n // .flowchart-label .text-outer-tspan {\n // text-anchor: middle;\n // }\n // .flowchart-label .text-inner-tspan {\n // text-anchor: start;\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: 2.0px;\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 background-color: ${options.edgeLabelBackground};\n fill: ${options.edgeLabelBackground};\n }\n text-align: center;\n }\n\n /* For html labels only */\n .labelBkg {\n background-color: ${fade(options.edgeLabelBackground, 0.5)};\n // background-color:\n }\n\n .node .cluster {\n // fill: ${fade(options.mainBkg, 0.5)};\n fill: ${fade(options.clusterBkg, 0.5)};\n stroke: ${fade(options.clusterBorder, 0.2)};\n box-shadow: rgba(50, 50, 93, 0.25) 0px 13px 27px -5px, rgba(0, 0, 0, 0.3) 0px 8px 16px -8px;\n stroke-width: 1px;\n }\n\n .cluster text {\n fill: ${options.titleColor};\n }\n\n .cluster span,p {\n color: ${options.titleColor};\n }\n /* .cluster div {\n color: ${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.tertiaryColor};\n border: 1px solid ${options.border2};\n border-radius: 2px;\n pointer-events: none;\n z-index: 100;\n }\n\n .flowchartTitleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${options.textColor};\n }\n`;\nconst flowStyles = getStyles;\nfunction getNodeFromBlock(block, db2, positioned = false) {\n var _a2, _b2, _c;\n const vertex = block;\n let classStr = \"default\";\n if ((((_a2 = vertex == null ? void 0 : vertex.classes) == null ? void 0 : _a2.length) || 0) > 0) {\n classStr = ((vertex == null ? void 0 : vertex.classes) || []).join(\" \");\n }\n classStr = classStr + \" flowchart-label\";\n let radius = 0;\n let shape = \"\";\n let padding2;\n switch (vertex.type) {\n case \"round\":\n radius = 5;\n shape = \"rect\";\n break;\n case \"composite\":\n radius = 0;\n shape = \"composite\";\n padding2 = 0;\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 \"block_arrow\":\n shape = \"block_arrow\";\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 \"rect_left_inv_arrow\":\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 case \"doublecircle\":\n shape = \"doublecircle\";\n break;\n default:\n shape = \"rect\";\n }\n const styles = getStylesFromArray((vertex == null ? void 0 : vertex.styles) || []);\n const vertexText = vertex.label;\n const bounds = vertex.size || { width: 0, height: 0, x: 0, y: 0 };\n const node = {\n labelStyle: styles.labelStyle,\n shape,\n labelText: vertexText,\n rx: radius,\n ry: radius,\n class: classStr,\n style: styles.style,\n id: vertex.id,\n directions: vertex.directions,\n width: bounds.width,\n height: bounds.height,\n x: bounds.x,\n y: bounds.y,\n positioned,\n intersect: void 0,\n type: vertex.type,\n padding: padding2 ?? (((_c = (_b2 = getConfig()) == null ? void 0 : _b2.block) == null ? void 0 : _c.padding) || 0)\n };\n return node;\n}\nasync function calculateBlockSize(elem, block, db2) {\n const node = getNodeFromBlock(block, db2, false);\n if (node.type === \"group\") {\n return;\n }\n const nodeEl = await insertNode(elem, node);\n const boundingBox = nodeEl.node().getBBox();\n const obj = db2.getBlock(node.id);\n obj.size = { width: boundingBox.width, height: boundingBox.height, x: 0, y: 0, node: nodeEl };\n db2.setBlock(obj);\n nodeEl.remove();\n}\nasync function insertBlockPositioned(elem, block, db2) {\n const node = getNodeFromBlock(block, db2, true);\n const obj = db2.getBlock(node.id);\n if (obj.type !== \"space\") {\n await insertNode(elem, node);\n block.intersect = node == null ? void 0 : node.intersect;\n positionNode(node);\n }\n}\nasync function performOperations(elem, blocks2, db2, operation) {\n for (const block of blocks2) {\n await operation(elem, block, db2);\n if (block.children) {\n await performOperations(elem, block.children, db2, operation);\n }\n }\n}\nasync function calculateBlockSizes(elem, blocks2, db2) {\n await performOperations(elem, blocks2, db2, calculateBlockSize);\n}\nasync function insertBlocks(elem, blocks2, db2) {\n await performOperations(elem, blocks2, db2, insertBlockPositioned);\n}\nasync function insertEdges(elem, edges, blocks2, db2, id) {\n const g = new graphlib.Graph({\n multigraph: true,\n compound: true\n });\n g.setGraph({\n rankdir: \"TB\",\n nodesep: 10,\n ranksep: 10,\n marginx: 8,\n marginy: 8\n });\n for (const block of blocks2) {\n if (block.size) {\n g.setNode(block.id, {\n width: block.size.width,\n height: block.size.height,\n intersect: block.intersect\n });\n }\n }\n for (const edge of edges) {\n if (edge.start && edge.end) {\n const startBlock = db2.getBlock(edge.start);\n const endBlock = db2.getBlock(edge.end);\n if ((startBlock == null ? void 0 : startBlock.size) && (endBlock == null ? void 0 : endBlock.size)) {\n const start = startBlock.size;\n const end = endBlock.size;\n const points = [\n { x: start.x, y: start.y },\n { x: start.x + (end.x - start.x) / 2, y: start.y + (end.y - start.y) / 2 },\n { x: end.x, y: end.y }\n ];\n await insertEdge(\n elem,\n { v: edge.start, w: edge.end, name: edge.id },\n {\n ...edge,\n arrowTypeEnd: edge.arrowTypeEnd,\n arrowTypeStart: edge.arrowTypeStart,\n points,\n classes: \"edge-thickness-normal edge-pattern-solid flowchart-link LS-a1 LE-b1\"\n },\n void 0,\n \"block\",\n g,\n id\n );\n if (edge.label) {\n await insertEdgeLabel(elem, {\n ...edge,\n label: edge.label,\n labelStyle: \"stroke: #333; stroke-width: 1.5px;fill:none;\",\n arrowTypeEnd: edge.arrowTypeEnd,\n arrowTypeStart: edge.arrowTypeStart,\n points,\n classes: \"edge-thickness-normal edge-pattern-solid flowchart-link LS-a1 LE-b1\"\n });\n await positionEdgeLabel(\n { ...edge, x: points[1].x, y: points[1].y },\n {\n originalPath: points\n }\n );\n }\n }\n }\n }\n}\nconst padding = ((_b = (_a = getConfig$1()) == null ? void 0 : _a.block) == null ? void 0 : _b.padding) || 8;\nfunction calculateBlockPosition(columns, position) {\n if (columns === 0 || !Number.isInteger(columns)) {\n throw new Error(\"Columns must be an integer !== 0.\");\n }\n if (position < 0 || !Number.isInteger(position)) {\n throw new Error(\"Position must be a non-negative integer.\" + position);\n }\n if (columns < 0) {\n return { px: position, py: 0 };\n }\n if (columns === 1) {\n return { px: 0, py: position };\n }\n const px = position % columns;\n const py = Math.floor(position / columns);\n return { px, py };\n}\nconst getMaxChildSize = (block) => {\n let maxWidth = 0;\n let maxHeight = 0;\n for (const child of block.children) {\n const { width, height, x, y } = child.size || { width: 0, height: 0, x: 0, y: 0 };\n log.debug(\n \"getMaxChildSize abc95 child:\",\n child.id,\n \"width:\",\n width,\n \"height:\",\n height,\n \"x:\",\n x,\n \"y:\",\n y,\n child.type\n );\n if (child.type === \"space\") {\n continue;\n }\n if (width > maxWidth) {\n maxWidth = width / (block.widthInColumns || 1);\n }\n if (height > maxHeight) {\n maxHeight = height;\n }\n }\n return { width: maxWidth, height: maxHeight };\n};\nfunction setBlockSizes(block, db2, siblingWidth = 0, siblingHeight = 0) {\n var _a2, _b2, _c, _d, _e, _f, _g, _h, _i, _j, _k;\n log.debug(\n \"setBlockSizes abc95 (start)\",\n block.id,\n (_a2 = block == null ? void 0 : block.size) == null ? void 0 : _a2.x,\n \"block width =\",\n block == null ? void 0 : block.size,\n \"sieblingWidth\",\n siblingWidth\n );\n if (!((_b2 = block == null ? void 0 : block.size) == null ? void 0 : _b2.width)) {\n block.size = {\n width: siblingWidth,\n height: siblingHeight,\n x: 0,\n y: 0\n };\n }\n let maxWidth = 0;\n let maxHeight = 0;\n if (((_c = block.children) == null ? void 0 : _c.length) > 0) {\n for (const child of block.children) {\n setBlockSizes(child, db2);\n }\n const childSize = getMaxChildSize(block);\n maxWidth = childSize.width;\n maxHeight = childSize.height;\n log.debug(\"setBlockSizes abc95 maxWidth of\", block.id, \":s children is \", maxWidth, maxHeight);\n for (const child of block.children) {\n if (child.size) {\n log.debug(\n `abc95 Setting size of children of ${block.id} id=${child.id} ${maxWidth} ${maxHeight} ${child.size}`\n );\n child.size.width = maxWidth * (child.widthInColumns || 1) + padding * ((child.widthInColumns || 1) - 1);\n child.size.height = maxHeight;\n child.size.x = 0;\n child.size.y = 0;\n log.debug(\n `abc95 updating size of ${block.id} children child:${child.id} maxWidth:${maxWidth} maxHeight:${maxHeight}`\n );\n }\n }\n for (const child of block.children) {\n setBlockSizes(child, db2, maxWidth, maxHeight);\n }\n const columns = block.columns || -1;\n let numItems = 0;\n for (const child of block.children) {\n numItems += child.widthInColumns || 1;\n }\n let xSize = block.children.length;\n if (columns > 0 && columns < numItems) {\n xSize = columns;\n }\n block.widthInColumns || 1;\n const ySize = Math.ceil(numItems / xSize);\n let width = xSize * (maxWidth + padding) + padding;\n let height = ySize * (maxHeight + padding) + padding;\n if (width < siblingWidth) {\n log.debug(\n `Detected to small siebling: abc95 ${block.id} sieblingWidth ${siblingWidth} sieblingHeight ${siblingHeight} width ${width}`\n );\n width = siblingWidth;\n height = siblingHeight;\n const childWidth = (siblingWidth - xSize * padding - padding) / xSize;\n const childHeight = (siblingHeight - ySize * padding - padding) / ySize;\n log.debug(\"Size indata abc88\", block.id, \"childWidth\", childWidth, \"maxWidth\", maxWidth);\n log.debug(\"Size indata abc88\", block.id, \"childHeight\", childHeight, \"maxHeight\", maxHeight);\n log.debug(\"Size indata abc88 xSize\", xSize, \"padding\", padding);\n for (const child of block.children) {\n if (child.size) {\n child.size.width = childWidth;\n child.size.height = childHeight;\n child.size.x = 0;\n child.size.y = 0;\n }\n }\n }\n log.debug(\n `abc95 (finale calc) ${block.id} xSize ${xSize} ySize ${ySize} columns ${columns}${block.children.length} width=${Math.max(width, ((_d = block.size) == null ? void 0 : _d.width) || 0)}`\n );\n if (width < (((_e = block == null ? void 0 : block.size) == null ? void 0 : _e.width) || 0)) {\n width = ((_f = block == null ? void 0 : block.size) == null ? void 0 : _f.width) || 0;\n const num = columns > 0 ? Math.min(block.children.length, columns) : block.children.length;\n if (num > 0) {\n const childWidth = (width - num * padding - padding) / num;\n log.debug(\"abc95 (growing to fit) width\", block.id, width, (_g = block.size) == null ? void 0 : _g.width, childWidth);\n for (const child of block.children) {\n if (child.size) {\n child.size.width = childWidth;\n }\n }\n }\n }\n block.size = {\n width,\n height,\n x: 0,\n y: 0\n };\n }\n log.debug(\n \"setBlockSizes abc94 (done)\",\n block.id,\n (_h = block == null ? void 0 : block.size) == null ? void 0 : _h.x,\n (_i = block == null ? void 0 : block.size) == null ? void 0 : _i.width,\n (_j = block == null ? void 0 : block.size) == null ? void 0 : _j.y,\n (_k = block == null ? void 0 : block.size) == null ? void 0 : _k.height\n );\n}\nfunction layoutBlocks(block, db2) {\n var _a2, _b2, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q;\n log.debug(\n `abc85 layout blocks (=>layoutBlocks) ${block.id} x: ${(_a2 = block == null ? void 0 : block.size) == null ? void 0 : _a2.x} y: ${(_b2 = block == null ? void 0 : block.size) == null ? void 0 : _b2.y} width: ${(_c = block == null ? void 0 : block.size) == null ? void 0 : _c.width}`\n );\n const columns = block.columns || -1;\n log.debug(\"layoutBlocks columns abc95\", block.id, \"=>\", columns, block);\n if (block.children && // find max width of children\n block.children.length > 0) {\n const width = ((_e = (_d = block == null ? void 0 : block.children[0]) == null ? void 0 : _d.size) == null ? void 0 : _e.width) || 0;\n const widthOfChildren = block.children.length * width + (block.children.length - 1) * padding;\n log.debug(\"widthOfChildren 88\", widthOfChildren, \"posX\");\n let columnPos = 0;\n log.debug(\"abc91 block?.size?.x\", block.id, (_f = block == null ? void 0 : block.size) == null ? void 0 : _f.x);\n let startingPosX = ((_g = block == null ? void 0 : block.size) == null ? void 0 : _g.x) ? ((_h = block == null ? void 0 : block.size) == null ? void 0 : _h.x) + (-((_i = block == null ? void 0 : block.size) == null ? void 0 : _i.width) / 2 || 0) : -padding;\n let rowPos = 0;\n for (const child of block.children) {\n const parent = block;\n if (!child.size) {\n continue;\n }\n const { width: width2, height } = child.size;\n const { px, py } = calculateBlockPosition(columns, columnPos);\n if (py != rowPos) {\n rowPos = py;\n startingPosX = ((_j = block == null ? void 0 : block.size) == null ? void 0 : _j.x) ? ((_k = block == null ? void 0 : block.size) == null ? void 0 : _k.x) + (-((_l = block == null ? void 0 : block.size) == null ? void 0 : _l.width) / 2 || 0) : -padding;\n log.debug(\"New row in layout for block\", block.id, \" and child \", child.id, rowPos);\n }\n log.debug(\n `abc89 layout blocks (child) id: ${child.id} Pos: ${columnPos} (px, py) ${px},${py} (${(_m = parent == null ? void 0 : parent.size) == null ? void 0 : _m.x},${(_n = parent == null ? void 0 : parent.size) == null ? void 0 : _n.y}) parent: ${parent.id} width: ${width2}${padding}`\n );\n if (parent.size) {\n const halfWidth = width2 / 2;\n child.size.x = startingPosX + padding + halfWidth;\n log.debug(\n `abc91 layout blocks (calc) px, pyid:${child.id} startingPos=X${startingPosX} new startingPosX${child.size.x} ${halfWidth} padding=${padding} width=${width2} halfWidth=${halfWidth} => x:${child.size.x} y:${child.size.y} ${child.widthInColumns} (width * (child?.w || 1)) / 2 ${width2 * ((child == null ? void 0 : child.widthInColumns) || 1) / 2}`\n );\n startingPosX = child.size.x + halfWidth;\n child.size.y = parent.size.y - parent.size.height / 2 + py * (height + padding) + height / 2 + padding;\n log.debug(\n `abc88 layout blocks (calc) px, pyid:${child.id}startingPosX${startingPosX}${padding}${halfWidth}=>x:${child.size.x}y:${child.size.y}${child.widthInColumns}(width * (child?.w || 1)) / 2${width2 * ((child == null ? void 0 : child.widthInColumns) || 1) / 2}`\n );\n }\n if (child.children) {\n layoutBlocks(child);\n }\n columnPos += (child == null ? void 0 : child.widthInColumns) || 1;\n log.debug(\"abc88 columnsPos\", child, columnPos);\n }\n }\n log.debug(\n `layout blocks (<==layoutBlocks) ${block.id} x: ${(_o = block == null ? void 0 : block.size) == null ? void 0 : _o.x} y: ${(_p = block == null ? void 0 : block.size) == null ? void 0 : _p.y} width: ${(_q = block == null ? void 0 : block.size) == null ? void 0 : _q.width}`\n );\n}\nfunction findBounds(block, { minX, minY, maxX, maxY } = { minX: 0, minY: 0, maxX: 0, maxY: 0 }) {\n if (block.size && block.id !== \"root\") {\n const { x, y, width, height } = block.size;\n if (x - width / 2 < minX) {\n minX = x - width / 2;\n }\n if (y - height / 2 < minY) {\n minY = y - height / 2;\n }\n if (x + width / 2 > maxX) {\n maxX = x + width / 2;\n }\n if (y + height / 2 > maxY) {\n maxY = y + height / 2;\n }\n }\n if (block.children) {\n for (const child of block.children) {\n ({ minX, minY, maxX, maxY } = findBounds(child, { minX, minY, maxX, maxY }));\n }\n }\n return { minX, minY, maxX, maxY };\n}\nfunction layout(db2) {\n const root = db2.getBlock(\"root\");\n if (!root) {\n return;\n }\n setBlockSizes(root, db2, 0, 0);\n layoutBlocks(root);\n log.debug(\"getBlocks\", JSON.stringify(root, null, 2));\n const { minX, minY, maxX, maxY } = findBounds(root);\n const height = maxY - minY;\n const width = maxX - minX;\n return { x: minX, y: minY, width, height };\n}\nconst getClasses = function(text, diagObj) {\n return diagObj.db.getClasses();\n};\nconst draw = async function(text, id, _version, diagObj) {\n const { securityLevel, block: conf } = getConfig();\n const db2 = diagObj.db;\n let sandboxElement;\n if (securityLevel === \"sandbox\") {\n sandboxElement = select(\"#i\" + id);\n }\n const root = securityLevel === \"sandbox\" ? select(sandboxElement.nodes()[0].contentDocument.body) : select(\"body\");\n const svg = securityLevel === \"sandbox\" ? root.select(`[id=\"${id}\"]`) : select(`[id=\"${id}\"]`);\n const markers = [\"point\", \"circle\", \"cross\"];\n insertMarkers(svg, markers, diagObj.type, id);\n const bl = db2.getBlocks();\n const blArr = db2.getBlocksFlat();\n const edges = db2.getEdges();\n const nodes = svg.insert(\"g\").attr(\"class\", \"block\");\n await calculateBlockSizes(nodes, bl, db2);\n const bounds = layout(db2);\n await insertBlocks(nodes, bl, db2);\n await insertEdges(nodes, edges, blArr, db2, id);\n if (bounds) {\n const bounds2 = bounds;\n const magicFactor = Math.max(1, Math.round(0.125 * (bounds2.width / bounds2.height)));\n const height = bounds2.height + magicFactor + 10;\n const width = bounds2.width + 10;\n const { useMaxWidth } = conf;\n configureSvgSize(svg, height, width, !!useMaxWidth);\n log.debug(\"Here Bounds\", bounds, bounds2);\n svg.attr(\n \"viewBox\",\n `${bounds2.x - 5} ${bounds2.y - 5} ${bounds2.width + 10} ${bounds2.height + 10}`\n );\n }\n scaleOrdinal(schemeTableau10);\n};\nconst renderer = {\n draw,\n getClasses\n};\nconst diagram = {\n parser: parser$1,\n db: db$1,\n renderer,\n styles: flowStyles\n};\nexport {\n diagram\n};\n","import { s as setAccTitle, g as getAccTitle, a as getAccDescription, b as setAccDescription, c as getConfig, d as sanitizeText, e as common, f as assignWithDepth, h as calculateTextWidth, l as log, i as configureSvgSize, w as wrapLabel, j as calculateTextHeight } from \"./mermaid-f47111a7.js\";\nimport { select } from \"d3\";\nimport { d as drawRect$1, g as getNoteRect } from \"./svgDrawCommon-5ccd53ef.js\";\nimport { sanitizeUrl } from \"@braintree/sanitize-url\";\nimport \"ts-dedent\";\nimport \"dayjs\";\nimport \"dompurify\";\nimport \"khroma\";\nimport \"lodash-es/memoize.js\";\nimport \"lodash-es/merge.js\";\nimport \"stylis\";\nimport \"lodash-es/isEmpty.js\";\nvar parser = function() {\n var o = function(k, v, o2, l) {\n for (o2 = o2 || {}, l = k.length; l--; o2[k[l]] = v)\n ;\n return o2;\n }, $V0 = [1, 24], $V1 = [1, 25], $V2 = [1, 26], $V3 = [1, 27], $V4 = [1, 28], $V5 = [1, 63], $V6 = [1, 64], $V7 = [1, 65], $V8 = [1, 66], $V9 = [1, 67], $Va = [1, 68], $Vb = [1, 69], $Vc = [1, 29], $Vd = [1, 30], $Ve = [1, 31], $Vf = [1, 32], $Vg = [1, 33], $Vh = [1, 34], $Vi = [1, 35], $Vj = [1, 36], $Vk = [1, 37], $Vl = [1, 38], $Vm = [1, 39], $Vn = [1, 40], $Vo = [1, 41], $Vp = [1, 42], $Vq = [1, 43], $Vr = [1, 44], $Vs = [1, 45], $Vt = [1, 46], $Vu = [1, 47], $Vv = [1, 48], $Vw = [1, 50], $Vx = [1, 51], $Vy = [1, 52], $Vz = [1, 53], $VA = [1, 54], $VB = [1, 55], $VC = [1, 56], $VD = [1, 57], $VE = [1, 58], $VF = [1, 59], $VG = [1, 60], $VH = [14, 42], $VI = [14, 34, 36, 37, 38, 39, 40, 41, 42, 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], $VJ = [12, 14, 34, 36, 37, 38, 39, 40, 41, 42, 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], $VK = [1, 82], $VL = [1, 83], $VM = [1, 84], $VN = [1, 85], $VO = [12, 14, 42], $VP = [12, 14, 33, 42], $VQ = [12, 14, 33, 42, 76, 77, 79, 80], $VR = [12, 33], $VS = [34, 36, 37, 38, 39, 40, 41, 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];\n var parser2 = {\n trace: function trace() {\n },\n yy: {},\n symbols_: { \"error\": 2, \"start\": 3, \"mermaidDoc\": 4, \"direction\": 5, \"direction_tb\": 6, \"direction_bt\": 7, \"direction_rl\": 8, \"direction_lr\": 9, \"graphConfig\": 10, \"C4_CONTEXT\": 11, \"NEWLINE\": 12, \"statements\": 13, \"EOF\": 14, \"C4_CONTAINER\": 15, \"C4_COMPONENT\": 16, \"C4_DYNAMIC\": 17, \"C4_DEPLOYMENT\": 18, \"otherStatements\": 19, \"diagramStatements\": 20, \"otherStatement\": 21, \"title\": 22, \"accDescription\": 23, \"acc_title\": 24, \"acc_title_value\": 25, \"acc_descr\": 26, \"acc_descr_value\": 27, \"acc_descr_multiline_value\": 28, \"boundaryStatement\": 29, \"boundaryStartStatement\": 30, \"boundaryStopStatement\": 31, \"boundaryStart\": 32, \"LBRACE\": 33, \"ENTERPRISE_BOUNDARY\": 34, \"attributes\": 35, \"SYSTEM_BOUNDARY\": 36, \"BOUNDARY\": 37, \"CONTAINER_BOUNDARY\": 38, \"NODE\": 39, \"NODE_L\": 40, \"NODE_R\": 41, \"RBRACE\": 42, \"diagramStatement\": 43, \"PERSON\": 44, \"PERSON_EXT\": 45, \"SYSTEM\": 46, \"SYSTEM_DB\": 47, \"SYSTEM_QUEUE\": 48, \"SYSTEM_EXT\": 49, \"SYSTEM_EXT_DB\": 50, \"SYSTEM_EXT_QUEUE\": 51, \"CONTAINER\": 52, \"CONTAINER_DB\": 53, \"CONTAINER_QUEUE\": 54, \"CONTAINER_EXT\": 55, \"CONTAINER_EXT_DB\": 56, \"CONTAINER_EXT_QUEUE\": 57, \"COMPONENT\": 58, \"COMPONENT_DB\": 59, \"COMPONENT_QUEUE\": 60, \"COMPONENT_EXT\": 61, \"COMPONENT_EXT_DB\": 62, \"COMPONENT_EXT_QUEUE\": 63, \"REL\": 64, \"BIREL\": 65, \"REL_U\": 66, \"REL_D\": 67, \"REL_L\": 68, \"REL_R\": 69, \"REL_B\": 70, \"REL_INDEX\": 71, \"UPDATE_EL_STYLE\": 72, \"UPDATE_REL_STYLE\": 73, \"UPDATE_LAYOUT_CONFIG\": 74, \"attribute\": 75, \"STR\": 76, \"STR_KEY\": 77, \"STR_VALUE\": 78, \"ATTRIBUTE\": 79, \"ATTRIBUTE_EMPTY\": 80, \"$accept\": 0, \"$end\": 1 },\n terminals_: { 2: \"error\", 6: \"direction_tb\", 7: \"direction_bt\", 8: \"direction_rl\", 9: \"direction_lr\", 11: \"C4_CONTEXT\", 12: \"NEWLINE\", 14: \"EOF\", 15: \"C4_CONTAINER\", 16: \"C4_COMPONENT\", 17: \"C4_DYNAMIC\", 18: \"C4_DEPLOYMENT\", 22: \"title\", 23: \"accDescription\", 24: \"acc_title\", 25: \"acc_title_value\", 26: \"acc_descr\", 27: \"acc_descr_value\", 28: \"acc_descr_multiline_value\", 33: \"LBRACE\", 34: \"ENTERPRISE_BOUNDARY\", 36: \"SYSTEM_BOUNDARY\", 37: \"BOUNDARY\", 38: \"CONTAINER_BOUNDARY\", 39: \"NODE\", 40: \"NODE_L\", 41: \"NODE_R\", 42: \"RBRACE\", 44: \"PERSON\", 45: \"PERSON_EXT\", 46: \"SYSTEM\", 47: \"SYSTEM_DB\", 48: \"SYSTEM_QUEUE\", 49: \"SYSTEM_EXT\", 50: \"SYSTEM_EXT_DB\", 51: \"SYSTEM_EXT_QUEUE\", 52: \"CONTAINER\", 53: \"CONTAINER_DB\", 54: \"CONTAINER_QUEUE\", 55: \"CONTAINER_EXT\", 56: \"CONTAINER_EXT_DB\", 57: \"CONTAINER_EXT_QUEUE\", 58: \"COMPONENT\", 59: \"COMPONENT_DB\", 60: \"COMPONENT_QUEUE\", 61: \"COMPONENT_EXT\", 62: \"COMPONENT_EXT_DB\", 63: \"COMPONENT_EXT_QUEUE\", 64: \"REL\", 65: \"BIREL\", 66: \"REL_U\", 67: \"REL_D\", 68: \"REL_L\", 69: \"REL_R\", 70: \"REL_B\", 71: \"REL_INDEX\", 72: \"UPDATE_EL_STYLE\", 73: \"UPDATE_REL_STYLE\", 74: \"UPDATE_LAYOUT_CONFIG\", 76: \"STR\", 77: \"STR_KEY\", 78: \"STR_VALUE\", 79: \"ATTRIBUTE\", 80: \"ATTRIBUTE_EMPTY\" },\n productions_: [0, [3, 1], [3, 1], [5, 1], [5, 1], [5, 1], [5, 1], [4, 1], [10, 4], [10, 4], [10, 4], [10, 4], [10, 4], [13, 1], [13, 1], [13, 2], [19, 1], [19, 2], [19, 3], [21, 1], [21, 1], [21, 2], [21, 2], [21, 1], [29, 3], [30, 3], [30, 3], [30, 4], [32, 2], [32, 2], [32, 2], [32, 2], [32, 2], [32, 2], [32, 2], [31, 1], [20, 1], [20, 2], [20, 3], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 1], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [35, 1], [35, 2], [75, 1], [75, 2], [75, 1], [75, 1]],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) {\n var $0 = $$.length - 1;\n switch (yystate) {\n case 3:\n yy.setDirection(\"TB\");\n break;\n case 4:\n yy.setDirection(\"BT\");\n break;\n case 5:\n yy.setDirection(\"RL\");\n break;\n case 6:\n yy.setDirection(\"LR\");\n break;\n case 8:\n case 9:\n case 10:\n case 11:\n case 12:\n yy.setC4Type($$[$0 - 3]);\n break;\n case 19:\n yy.setTitle($$[$0].substring(6));\n this.$ = $$[$0].substring(6);\n break;\n case 20:\n yy.setAccDescription($$[$0].substring(15));\n this.$ = $$[$0].substring(15);\n break;\n case 21:\n this.$ = $$[$0].trim();\n yy.setTitle(this.$);\n break;\n case 22:\n case 23:\n this.$ = $$[$0].trim();\n yy.setAccDescription(this.$);\n break;\n case 28:\n case 29:\n $$[$0].splice(2, 0, \"ENTERPRISE\");\n yy.addPersonOrSystemBoundary(...$$[$0]);\n this.$ = $$[$0];\n break;\n case 30:\n yy.addPersonOrSystemBoundary(...$$[$0]);\n this.$ = $$[$0];\n break;\n case 31:\n $$[$0].splice(2, 0, \"CONTAINER\");\n yy.addContainerBoundary(...$$[$0]);\n this.$ = $$[$0];\n break;\n case 32:\n yy.addDeploymentNode(\"node\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 33:\n yy.addDeploymentNode(\"nodeL\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 34:\n yy.addDeploymentNode(\"nodeR\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 35:\n yy.popBoundaryParseStack();\n break;\n case 39:\n yy.addPersonOrSystem(\"person\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 40:\n yy.addPersonOrSystem(\"external_person\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 41:\n yy.addPersonOrSystem(\"system\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 42:\n yy.addPersonOrSystem(\"system_db\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 43:\n yy.addPersonOrSystem(\"system_queue\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 44:\n yy.addPersonOrSystem(\"external_system\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 45:\n yy.addPersonOrSystem(\"external_system_db\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 46:\n yy.addPersonOrSystem(\"external_system_queue\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 47:\n yy.addContainer(\"container\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 48:\n yy.addContainer(\"container_db\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 49:\n yy.addContainer(\"container_queue\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 50:\n yy.addContainer(\"external_container\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 51:\n yy.addContainer(\"external_container_db\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 52:\n yy.addContainer(\"external_container_queue\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 53:\n yy.addComponent(\"component\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 54:\n yy.addComponent(\"component_db\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 55:\n yy.addComponent(\"component_queue\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 56:\n yy.addComponent(\"external_component\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 57:\n yy.addComponent(\"external_component_db\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 58:\n yy.addComponent(\"external_component_queue\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 60:\n yy.addRel(\"rel\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 61:\n yy.addRel(\"birel\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 62:\n yy.addRel(\"rel_u\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 63:\n yy.addRel(\"rel_d\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 64:\n yy.addRel(\"rel_l\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 65:\n yy.addRel(\"rel_r\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 66:\n yy.addRel(\"rel_b\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 67:\n $$[$0].splice(0, 1);\n yy.addRel(\"rel\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 68:\n yy.updateElStyle(\"update_el_style\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 69:\n yy.updateRelStyle(\"update_rel_style\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 70:\n yy.updateLayoutConfig(\"update_layout_config\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 71:\n this.$ = [$$[$0]];\n break;\n case 72:\n $$[$0].unshift($$[$0 - 1]);\n this.$ = $$[$0];\n break;\n case 73:\n case 75:\n this.$ = $$[$0].trim();\n break;\n case 74:\n let kv = {};\n kv[$$[$0 - 1].trim()] = $$[$0].trim();\n this.$ = kv;\n break;\n case 76:\n this.$ = \"\";\n break;\n }\n },\n table: [{ 3: 1, 4: 2, 5: 3, 6: [1, 5], 7: [1, 6], 8: [1, 7], 9: [1, 8], 10: 4, 11: [1, 9], 15: [1, 10], 16: [1, 11], 17: [1, 12], 18: [1, 13] }, { 1: [3] }, { 1: [2, 1] }, { 1: [2, 2] }, { 1: [2, 7] }, { 1: [2, 3] }, { 1: [2, 4] }, { 1: [2, 5] }, { 1: [2, 6] }, { 12: [1, 14] }, { 12: [1, 15] }, { 12: [1, 16] }, { 12: [1, 17] }, { 12: [1, 18] }, { 13: 19, 19: 20, 20: 21, 21: 22, 22: $V0, 23: $V1, 24: $V2, 26: $V3, 28: $V4, 29: 49, 30: 61, 32: 62, 34: $V5, 36: $V6, 37: $V7, 38: $V8, 39: $V9, 40: $Va, 41: $Vb, 43: 23, 44: $Vc, 45: $Vd, 46: $Ve, 47: $Vf, 48: $Vg, 49: $Vh, 50: $Vi, 51: $Vj, 52: $Vk, 53: $Vl, 54: $Vm, 55: $Vn, 56: $Vo, 57: $Vp, 58: $Vq, 59: $Vr, 60: $Vs, 61: $Vt, 62: $Vu, 63: $Vv, 64: $Vw, 65: $Vx, 66: $Vy, 67: $Vz, 68: $VA, 69: $VB, 70: $VC, 71: $VD, 72: $VE, 73: $VF, 74: $VG }, { 13: 70, 19: 20, 20: 21, 21: 22, 22: $V0, 23: $V1, 24: $V2, 26: $V3, 28: $V4, 29: 49, 30: 61, 32: 62, 34: $V5, 36: $V6, 37: $V7, 38: $V8, 39: $V9, 40: $Va, 41: $Vb, 43: 23, 44: $Vc, 45: $Vd, 46: $Ve, 47: $Vf, 48: $Vg, 49: $Vh, 50: $Vi, 51: $Vj, 52: $Vk, 53: $Vl, 54: $Vm, 55: $Vn, 56: $Vo, 57: $Vp, 58: $Vq, 59: $Vr, 60: $Vs, 61: $Vt, 62: $Vu, 63: $Vv, 64: $Vw, 65: $Vx, 66: $Vy, 67: $Vz, 68: $VA, 69: $VB, 70: $VC, 71: $VD, 72: $VE, 73: $VF, 74: $VG }, { 13: 71, 19: 20, 20: 21, 21: 22, 22: $V0, 23: $V1, 24: $V2, 26: $V3, 28: $V4, 29: 49, 30: 61, 32: 62, 34: $V5, 36: $V6, 37: $V7, 38: $V8, 39: $V9, 40: $Va, 41: $Vb, 43: 23, 44: $Vc, 45: $Vd, 46: $Ve, 47: $Vf, 48: $Vg, 49: $Vh, 50: $Vi, 51: $Vj, 52: $Vk, 53: $Vl, 54: $Vm, 55: $Vn, 56: $Vo, 57: $Vp, 58: $Vq, 59: $Vr, 60: $Vs, 61: $Vt, 62: $Vu, 63: $Vv, 64: $Vw, 65: $Vx, 66: $Vy, 67: $Vz, 68: $VA, 69: $VB, 70: $VC, 71: $VD, 72: $VE, 73: $VF, 74: $VG }, { 13: 72, 19: 20, 20: 21, 21: 22, 22: $V0, 23: $V1, 24: $V2, 26: $V3, 28: $V4, 29: 49, 30: 61, 32: 62, 34: $V5, 36: $V6, 37: $V7, 38: $V8, 39: $V9, 40: $Va, 41: $Vb, 43: 23, 44: $Vc, 45: $Vd, 46: $Ve, 47: $Vf, 48: $Vg, 49: $Vh, 50: $Vi, 51: $Vj, 52: $Vk, 53: $Vl, 54: $Vm, 55: $Vn, 56: $Vo, 57: $Vp, 58: $Vq, 59: $Vr, 60: $Vs, 61: $Vt, 62: $Vu, 63: $Vv, 64: $Vw, 65: $Vx, 66: $Vy, 67: $Vz, 68: $VA, 69: $VB, 70: $VC, 71: $VD, 72: $VE, 73: $VF, 74: $VG }, { 13: 73, 19: 20, 20: 21, 21: 22, 22: $V0, 23: $V1, 24: $V2, 26: $V3, 28: $V4, 29: 49, 30: 61, 32: 62, 34: $V5, 36: $V6, 37: $V7, 38: $V8, 39: $V9, 40: $Va, 41: $Vb, 43: 23, 44: $Vc, 45: $Vd, 46: $Ve, 47: $Vf, 48: $Vg, 49: $Vh, 50: $Vi, 51: $Vj, 52: $Vk, 53: $Vl, 54: $Vm, 55: $Vn, 56: $Vo, 57: $Vp, 58: $Vq, 59: $Vr, 60: $Vs, 61: $Vt, 62: $Vu, 63: $Vv, 64: $Vw, 65: $Vx, 66: $Vy, 67: $Vz, 68: $VA, 69: $VB, 70: $VC, 71: $VD, 72: $VE, 73: $VF, 74: $VG }, { 14: [1, 74] }, o($VH, [2, 13], { 43: 23, 29: 49, 30: 61, 32: 62, 20: 75, 34: $V5, 36: $V6, 37: $V7, 38: $V8, 39: $V9, 40: $Va, 41: $Vb, 44: $Vc, 45: $Vd, 46: $Ve, 47: $Vf, 48: $Vg, 49: $Vh, 50: $Vi, 51: $Vj, 52: $Vk, 53: $Vl, 54: $Vm, 55: $Vn, 56: $Vo, 57: $Vp, 58: $Vq, 59: $Vr, 60: $Vs, 61: $Vt, 62: $Vu, 63: $Vv, 64: $Vw, 65: $Vx, 66: $Vy, 67: $Vz, 68: $VA, 69: $VB, 70: $VC, 71: $VD, 72: $VE, 73: $VF, 74: $VG }), o($VH, [2, 14]), o($VI, [2, 16], { 12: [1, 76] }), o($VH, [2, 36], { 12: [1, 77] }), o($VJ, [2, 19]), o($VJ, [2, 20]), { 25: [1, 78] }, { 27: [1, 79] }, o($VJ, [2, 23]), { 35: 80, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 86, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 87, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 88, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 89, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 90, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 91, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 92, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 93, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 94, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 95, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 96, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 97, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 98, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 99, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 100, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 101, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 102, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 103, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 104, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, o($VO, [2, 59]), { 35: 105, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 106, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 107, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 108, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 109, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 110, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 111, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 112, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 113, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 114, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 115, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 20: 116, 29: 49, 30: 61, 32: 62, 34: $V5, 36: $V6, 37: $V7, 38: $V8, 39: $V9, 40: $Va, 41: $Vb, 43: 23, 44: $Vc, 45: $Vd, 46: $Ve, 47: $Vf, 48: $Vg, 49: $Vh, 50: $Vi, 51: $Vj, 52: $Vk, 53: $Vl, 54: $Vm, 55: $Vn, 56: $Vo, 57: $Vp, 58: $Vq, 59: $Vr, 60: $Vs, 61: $Vt, 62: $Vu, 63: $Vv, 64: $Vw, 65: $Vx, 66: $Vy, 67: $Vz, 68: $VA, 69: $VB, 70: $VC, 71: $VD, 72: $VE, 73: $VF, 74: $VG }, { 12: [1, 118], 33: [1, 117] }, { 35: 119, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 120, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 121, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 122, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 123, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 124, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 125, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 14: [1, 126] }, { 14: [1, 127] }, { 14: [1, 128] }, { 14: [1, 129] }, { 1: [2, 8] }, o($VH, [2, 15]), o($VI, [2, 17], { 21: 22, 19: 130, 22: $V0, 23: $V1, 24: $V2, 26: $V3, 28: $V4 }), o($VH, [2, 37], { 19: 20, 20: 21, 21: 22, 43: 23, 29: 49, 30: 61, 32: 62, 13: 131, 22: $V0, 23: $V1, 24: $V2, 26: $V3, 28: $V4, 34: $V5, 36: $V6, 37: $V7, 38: $V8, 39: $V9, 40: $Va, 41: $Vb, 44: $Vc, 45: $Vd, 46: $Ve, 47: $Vf, 48: $Vg, 49: $Vh, 50: $Vi, 51: $Vj, 52: $Vk, 53: $Vl, 54: $Vm, 55: $Vn, 56: $Vo, 57: $Vp, 58: $Vq, 59: $Vr, 60: $Vs, 61: $Vt, 62: $Vu, 63: $Vv, 64: $Vw, 65: $Vx, 66: $Vy, 67: $Vz, 68: $VA, 69: $VB, 70: $VC, 71: $VD, 72: $VE, 73: $VF, 74: $VG }), o($VJ, [2, 21]), o($VJ, [2, 22]), o($VO, [2, 39]), o($VP, [2, 71], { 75: 81, 35: 132, 76: $VK, 77: $VL, 79: $VM, 80: $VN }), o($VQ, [2, 73]), { 78: [1, 133] }, o($VQ, [2, 75]), o($VQ, [2, 76]), o($VO, [2, 40]), o($VO, [2, 41]), o($VO, [2, 42]), o($VO, [2, 43]), o($VO, [2, 44]), o($VO, [2, 45]), o($VO, [2, 46]), o($VO, [2, 47]), o($VO, [2, 48]), o($VO, [2, 49]), o($VO, [2, 50]), o($VO, [2, 51]), o($VO, [2, 52]), o($VO, [2, 53]), o($VO, [2, 54]), o($VO, [2, 55]), o($VO, [2, 56]), o($VO, [2, 57]), o($VO, [2, 58]), o($VO, [2, 60]), o($VO, [2, 61]), o($VO, [2, 62]), o($VO, [2, 63]), o($VO, [2, 64]), o($VO, [2, 65]), o($VO, [2, 66]), o($VO, [2, 67]), o($VO, [2, 68]), o($VO, [2, 69]), o($VO, [2, 70]), { 31: 134, 42: [1, 135] }, { 12: [1, 136] }, { 33: [1, 137] }, o($VR, [2, 28]), o($VR, [2, 29]), o($VR, [2, 30]), o($VR, [2, 31]), o($VR, [2, 32]), o($VR, [2, 33]), o($VR, [2, 34]), { 1: [2, 9] }, { 1: [2, 10] }, { 1: [2, 11] }, { 1: [2, 12] }, o($VI, [2, 18]), o($VH, [2, 38]), o($VP, [2, 72]), o($VQ, [2, 74]), o($VO, [2, 24]), o($VO, [2, 35]), o($VS, [2, 25]), o($VS, [2, 26], { 12: [1, 138] }), o($VS, [2, 27])],\n defaultActions: { 2: [2, 1], 3: [2, 2], 4: [2, 7], 5: [2, 3], 6: [2, 4], 7: [2, 5], 8: [2, 6], 74: [2, 8], 126: [2, 9], 127: [2, 10], 128: [2, 11], 129: [2, 12] },\n parseError: 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 },\n parse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = \"\", yylineno = 0, yyleng = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer2 = 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 lexer2.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer2;\n sharedState.yy.parser = this;\n if (typeof lexer2.yylloc == \"undefined\") {\n lexer2.yylloc = {};\n }\n var yyloc = lexer2.yylloc;\n lstack.push(yyloc);\n var ranges = lexer2.options && lexer2.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 lex() {\n var token;\n token = tstack.pop() || lexer2.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, state, action, 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 (lexer2.showPosition) {\n errStr = \"Parse error on line \" + (yylineno + 1) + \":\\n\" + lexer2.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: lexer2.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer2.yylineno,\n loc: yyloc,\n 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(lexer2.yytext);\n lstack.push(lexer2.yylloc);\n stack.push(action[1]);\n symbol = null;\n {\n yyleng = lexer2.yyleng;\n yytext = lexer2.yytext;\n yylineno = lexer2.yylineno;\n yyloc = lexer2.yylloc;\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 var lexer = function() {\n var lexer2 = {\n EOF: 1,\n parseError: 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 // resets the lexer, sets new input\n setInput: 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 // consumes and returns one char from the input\n input: 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 this._input = this._input.slice(1);\n return ch;\n },\n // unshifts one char (or a string) into the input\n unput: function(ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - 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 if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\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 ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len\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 // When called from action, caches matched text and appends it on next action\n more: function() {\n this._more = true;\n return this;\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.\n reject: 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 return this;\n },\n // retain first n characters of the match\n less: function(n) {\n this.unput(this.match.slice(n));\n },\n // displays already matched input, i.e. for error messages\n pastInput: 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 // displays upcoming input, i.e. for error messages\n upcomingInput: 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 // displays the character position where the lexing error occurred, i.e. for error messages\n showPosition: function() {\n var pre = this.pastInput();\n var c2 = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c2 + \"^\";\n },\n // test the lexed token: return FALSE when not a match, otherwise return token\n test_match: function(match, indexed_rule) {\n var token, lines, backup;\n if (this.options.backtrack_lexer) {\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 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 ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length : 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 for (var k in backup) {\n this[k] = backup[k];\n }\n return false;\n }\n return false;\n },\n // return next match in input\n next: function() {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n var token, match, tempMatch, 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;\n } else {\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 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 // return next match that has a token\n lex: function lex() {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\n begin: function begin(condition) {\n this.conditionStack.push(condition);\n },\n // pop the previously active lexer condition state off the condition stack\n popState: 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 // 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 // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\n topState: 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 // alias for begin(condition)\n pushState: function pushState(condition) {\n this.begin(condition);\n },\n // return the number of states currently on the stack\n stateStackSize: function stateStackSize() {\n return this.conditionStack.length;\n },\n options: {},\n performAction: function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) {\n switch ($avoiding_name_collisions) {\n case 0:\n return 6;\n case 1:\n return 7;\n case 2:\n return 8;\n case 3:\n return 9;\n case 4:\n return 22;\n case 5:\n return 23;\n case 6:\n this.begin(\"acc_title\");\n return 24;\n case 7:\n this.popState();\n return \"acc_title_value\";\n case 8:\n this.begin(\"acc_descr\");\n return 26;\n case 9:\n this.popState();\n return \"acc_descr_value\";\n case 10:\n this.begin(\"acc_descr_multiline\");\n break;\n case 11:\n this.popState();\n break;\n case 12:\n return \"acc_descr_multiline_value\";\n case 13:\n break;\n case 14:\n c;\n break;\n case 15:\n return 12;\n case 16:\n break;\n case 17:\n return 11;\n case 18:\n return 15;\n case 19:\n return 16;\n case 20:\n return 17;\n case 21:\n return 18;\n case 22:\n this.begin(\"person_ext\");\n return 45;\n case 23:\n this.begin(\"person\");\n return 44;\n case 24:\n this.begin(\"system_ext_queue\");\n return 51;\n case 25:\n this.begin(\"system_ext_db\");\n return 50;\n case 26:\n this.begin(\"system_ext\");\n return 49;\n case 27:\n this.begin(\"system_queue\");\n return 48;\n case 28:\n this.begin(\"system_db\");\n return 47;\n case 29:\n this.begin(\"system\");\n return 46;\n case 30:\n this.begin(\"boundary\");\n return 37;\n case 31:\n this.begin(\"enterprise_boundary\");\n return 34;\n case 32:\n this.begin(\"system_boundary\");\n return 36;\n case 33:\n this.begin(\"container_ext_queue\");\n return 57;\n case 34:\n this.begin(\"container_ext_db\");\n return 56;\n case 35:\n this.begin(\"container_ext\");\n return 55;\n case 36:\n this.begin(\"container_queue\");\n return 54;\n case 37:\n this.begin(\"container_db\");\n return 53;\n case 38:\n this.begin(\"container\");\n return 52;\n case 39:\n this.begin(\"container_boundary\");\n return 38;\n case 40:\n this.begin(\"component_ext_queue\");\n return 63;\n case 41:\n this.begin(\"component_ext_db\");\n return 62;\n case 42:\n this.begin(\"component_ext\");\n return 61;\n case 43:\n this.begin(\"component_queue\");\n return 60;\n case 44:\n this.begin(\"component_db\");\n return 59;\n case 45:\n this.begin(\"component\");\n return 58;\n case 46:\n this.begin(\"node\");\n return 39;\n case 47:\n this.begin(\"node\");\n return 39;\n case 48:\n this.begin(\"node_l\");\n return 40;\n case 49:\n this.begin(\"node_r\");\n return 41;\n case 50:\n this.begin(\"rel\");\n return 64;\n case 51:\n this.begin(\"birel\");\n return 65;\n case 52:\n this.begin(\"rel_u\");\n return 66;\n case 53:\n this.begin(\"rel_u\");\n return 66;\n case 54:\n this.begin(\"rel_d\");\n return 67;\n case 55:\n this.begin(\"rel_d\");\n return 67;\n case 56:\n this.begin(\"rel_l\");\n return 68;\n case 57:\n this.begin(\"rel_l\");\n return 68;\n case 58:\n this.begin(\"rel_r\");\n return 69;\n case 59:\n this.begin(\"rel_r\");\n return 69;\n case 60:\n this.begin(\"rel_b\");\n return 70;\n case 61:\n this.begin(\"rel_index\");\n return 71;\n case 62:\n this.begin(\"update_el_style\");\n return 72;\n case 63:\n this.begin(\"update_rel_style\");\n return 73;\n case 64:\n this.begin(\"update_layout_config\");\n return 74;\n case 65:\n return \"EOF_IN_STRUCT\";\n case 66:\n this.begin(\"attribute\");\n return \"ATTRIBUTE_EMPTY\";\n case 67:\n this.begin(\"attribute\");\n break;\n case 68:\n this.popState();\n this.popState();\n break;\n case 69:\n return 80;\n case 70:\n break;\n case 71:\n return 80;\n case 72:\n this.begin(\"string\");\n break;\n case 73:\n this.popState();\n break;\n case 74:\n return \"STR\";\n case 75:\n this.begin(\"string_kv\");\n break;\n case 76:\n this.begin(\"string_kv_key\");\n return \"STR_KEY\";\n case 77:\n this.popState();\n this.begin(\"string_kv_value\");\n break;\n case 78:\n return \"STR_VALUE\";\n case 79:\n this.popState();\n this.popState();\n break;\n case 80:\n return \"STR\";\n case 81:\n return \"LBRACE\";\n case 82:\n return \"RBRACE\";\n case 83:\n return \"SPACE\";\n case 84:\n return \"EOL\";\n case 85:\n return 14;\n }\n },\n rules: [/^(?:.*direction\\s+TB[^\\n]*)/, /^(?:.*direction\\s+BT[^\\n]*)/, /^(?:.*direction\\s+RL[^\\n]*)/, /^(?:.*direction\\s+LR[^\\n]*)/, /^(?:title\\s[^#\\n;]+)/, /^(?:accDescription\\s[^#\\n;]+)/, /^(?:accTitle\\s*:\\s*)/, /^(?:(?!\\n||)*[^\\n]*)/, /^(?:accDescr\\s*:\\s*)/, /^(?:(?!\\n||)*[^\\n]*)/, /^(?:accDescr\\s*\\{\\s*)/, /^(?:[\\}])/, /^(?:[^\\}]*)/, /^(?:%%(?!\\{)*[^\\n]*(\\r?\\n?)+)/, /^(?:%%[^\\n]*(\\r?\\n)*)/, /^(?:\\s*(\\r?\\n)+)/, /^(?:\\s+)/, /^(?:C4Context\\b)/, /^(?:C4Container\\b)/, /^(?:C4Component\\b)/, /^(?:C4Dynamic\\b)/, /^(?:C4Deployment\\b)/, /^(?:Person_Ext\\b)/, /^(?:Person\\b)/, /^(?:SystemQueue_Ext\\b)/, /^(?:SystemDb_Ext\\b)/, /^(?:System_Ext\\b)/, /^(?:SystemQueue\\b)/, /^(?:SystemDb\\b)/, /^(?:System\\b)/, /^(?:Boundary\\b)/, /^(?:Enterprise_Boundary\\b)/, /^(?:System_Boundary\\b)/, /^(?:ContainerQueue_Ext\\b)/, /^(?:ContainerDb_Ext\\b)/, /^(?:Container_Ext\\b)/, /^(?:ContainerQueue\\b)/, /^(?:ContainerDb\\b)/, /^(?:Container\\b)/, /^(?:Container_Boundary\\b)/, /^(?:ComponentQueue_Ext\\b)/, /^(?:ComponentDb_Ext\\b)/, /^(?:Component_Ext\\b)/, /^(?:ComponentQueue\\b)/, /^(?:ComponentDb\\b)/, /^(?:Component\\b)/, /^(?:Deployment_Node\\b)/, /^(?:Node\\b)/, /^(?:Node_L\\b)/, /^(?:Node_R\\b)/, /^(?:Rel\\b)/, /^(?:BiRel\\b)/, /^(?:Rel_Up\\b)/, /^(?:Rel_U\\b)/, /^(?:Rel_Down\\b)/, /^(?:Rel_D\\b)/, /^(?:Rel_Left\\b)/, /^(?:Rel_L\\b)/, /^(?:Rel_Right\\b)/, /^(?:Rel_R\\b)/, /^(?:Rel_Back\\b)/, /^(?:RelIndex\\b)/, /^(?:UpdateElementStyle\\b)/, /^(?:UpdateRelStyle\\b)/, /^(?:UpdateLayoutConfig\\b)/, /^(?:$)/, /^(?:[(][ ]*[,])/, /^(?:[(])/, /^(?:[)])/, /^(?:,,)/, /^(?:,)/, /^(?:[ ]*[\"][\"])/, /^(?:[ ]*[\"])/, /^(?:[\"])/, /^(?:[^\"]*)/, /^(?:[ ]*[\\$])/, /^(?:[^=]*)/, /^(?:[=][ ]*[\"])/, /^(?:[^\"]+)/, /^(?:[\"])/, /^(?:[^,]+)/, /^(?:\\{)/, /^(?:\\})/, /^(?:[\\s]+)/, /^(?:[\\n\\r]+)/, /^(?:$)/],\n conditions: { \"acc_descr_multiline\": { \"rules\": [11, 12], \"inclusive\": false }, \"acc_descr\": { \"rules\": [9], \"inclusive\": false }, \"acc_title\": { \"rules\": [7], \"inclusive\": false }, \"string_kv_value\": { \"rules\": [78, 79], \"inclusive\": false }, \"string_kv_key\": { \"rules\": [77], \"inclusive\": false }, \"string_kv\": { \"rules\": [76], \"inclusive\": false }, \"string\": { \"rules\": [73, 74], \"inclusive\": false }, \"attribute\": { \"rules\": [68, 69, 70, 71, 72, 75, 80], \"inclusive\": false }, \"update_layout_config\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"update_rel_style\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"update_el_style\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"rel_b\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"rel_r\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"rel_l\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"rel_d\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"rel_u\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"rel_bi\": { \"rules\": [], \"inclusive\": false }, \"rel\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"node_r\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"node_l\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"node\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"index\": { \"rules\": [], \"inclusive\": false }, \"rel_index\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"component_ext_queue\": { \"rules\": [], \"inclusive\": false }, \"component_ext_db\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"component_ext\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"component_queue\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"component_db\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"component\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"container_boundary\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"container_ext_queue\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"container_ext_db\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"container_ext\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"container_queue\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"container_db\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"container\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"birel\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"system_boundary\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"enterprise_boundary\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"boundary\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"system_ext_queue\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"system_ext_db\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"system_ext\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"system_queue\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"system_db\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"system\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"person_ext\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"person\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"INITIAL\": { \"rules\": [0, 1, 2, 3, 4, 5, 6, 8, 10, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 81, 82, 83, 84, 85], \"inclusive\": true } }\n };\n return lexer2;\n }();\n parser2.lexer = lexer;\n function Parser() {\n this.yy = {};\n }\n Parser.prototype = parser2;\n parser2.Parser = Parser;\n return new Parser();\n}();\nparser.parser = parser;\nconst parser$1 = parser;\nlet c4ShapeArray = [];\nlet boundaryParseStack = [\"\"];\nlet currentBoundaryParse = \"global\";\nlet parentBoundaryParse = \"\";\nlet boundaries = [\n {\n alias: \"global\",\n label: { text: \"global\" },\n type: { text: \"global\" },\n tags: null,\n link: null,\n parentBoundary: \"\"\n }\n];\nlet rels = [];\nlet title = \"\";\nlet wrapEnabled = false;\nlet c4ShapeInRow$1 = 4;\nlet c4BoundaryInRow$1 = 2;\nvar c4Type;\nconst getC4Type = function() {\n return c4Type;\n};\nconst setC4Type = function(c4TypeParam) {\n let sanitizedText = sanitizeText(c4TypeParam, getConfig());\n c4Type = sanitizedText;\n};\nconst addRel = function(type, from, to, label, techn, descr, sprite, tags, link) {\n if (type === void 0 || type === null || from === void 0 || from === null || to === void 0 || to === null || label === void 0 || label === null) {\n return;\n }\n let rel = {};\n const old = rels.find((rel2) => rel2.from === from && rel2.to === to);\n if (old) {\n rel = old;\n } else {\n rels.push(rel);\n }\n rel.type = type;\n rel.from = from;\n rel.to = to;\n rel.label = { text: label };\n if (techn === void 0 || techn === null) {\n rel.techn = { text: \"\" };\n } else {\n if (typeof techn === \"object\") {\n let [key, value] = Object.entries(techn)[0];\n rel[key] = { text: value };\n } else {\n rel.techn = { text: techn };\n }\n }\n if (descr === void 0 || descr === null) {\n rel.descr = { text: \"\" };\n } else {\n if (typeof descr === \"object\") {\n let [key, value] = Object.entries(descr)[0];\n rel[key] = { text: value };\n } else {\n rel.descr = { text: descr };\n }\n }\n if (typeof sprite === \"object\") {\n let [key, value] = Object.entries(sprite)[0];\n rel[key] = value;\n } else {\n rel.sprite = sprite;\n }\n if (typeof tags === \"object\") {\n let [key, value] = Object.entries(tags)[0];\n rel[key] = value;\n } else {\n rel.tags = tags;\n }\n if (typeof link === \"object\") {\n let [key, value] = Object.entries(link)[0];\n rel[key] = value;\n } else {\n rel.link = link;\n }\n rel.wrap = autoWrap();\n};\nconst addPersonOrSystem = function(typeC4Shape, alias, label, descr, sprite, tags, link) {\n if (alias === null || label === null) {\n return;\n }\n let personOrSystem = {};\n const old = c4ShapeArray.find((personOrSystem2) => personOrSystem2.alias === alias);\n if (old && alias === old.alias) {\n personOrSystem = old;\n } else {\n personOrSystem.alias = alias;\n c4ShapeArray.push(personOrSystem);\n }\n if (label === void 0 || label === null) {\n personOrSystem.label = { text: \"\" };\n } else {\n personOrSystem.label = { text: label };\n }\n if (descr === void 0 || descr === null) {\n personOrSystem.descr = { text: \"\" };\n } else {\n if (typeof descr === \"object\") {\n let [key, value] = Object.entries(descr)[0];\n personOrSystem[key] = { text: value };\n } else {\n personOrSystem.descr = { text: descr };\n }\n }\n if (typeof sprite === \"object\") {\n let [key, value] = Object.entries(sprite)[0];\n personOrSystem[key] = value;\n } else {\n personOrSystem.sprite = sprite;\n }\n if (typeof tags === \"object\") {\n let [key, value] = Object.entries(tags)[0];\n personOrSystem[key] = value;\n } else {\n personOrSystem.tags = tags;\n }\n if (typeof link === \"object\") {\n let [key, value] = Object.entries(link)[0];\n personOrSystem[key] = value;\n } else {\n personOrSystem.link = link;\n }\n personOrSystem.typeC4Shape = { text: typeC4Shape };\n personOrSystem.parentBoundary = currentBoundaryParse;\n personOrSystem.wrap = autoWrap();\n};\nconst addContainer = function(typeC4Shape, alias, label, techn, descr, sprite, tags, link) {\n if (alias === null || label === null) {\n return;\n }\n let container = {};\n const old = c4ShapeArray.find((container2) => container2.alias === alias);\n if (old && alias === old.alias) {\n container = old;\n } else {\n container.alias = alias;\n c4ShapeArray.push(container);\n }\n if (label === void 0 || label === null) {\n container.label = { text: \"\" };\n } else {\n container.label = { text: label };\n }\n if (techn === void 0 || techn === null) {\n container.techn = { text: \"\" };\n } else {\n if (typeof techn === \"object\") {\n let [key, value] = Object.entries(techn)[0];\n container[key] = { text: value };\n } else {\n container.techn = { text: techn };\n }\n }\n if (descr === void 0 || descr === null) {\n container.descr = { text: \"\" };\n } else {\n if (typeof descr === \"object\") {\n let [key, value] = Object.entries(descr)[0];\n container[key] = { text: value };\n } else {\n container.descr = { text: descr };\n }\n }\n if (typeof sprite === \"object\") {\n let [key, value] = Object.entries(sprite)[0];\n container[key] = value;\n } else {\n container.sprite = sprite;\n }\n if (typeof tags === \"object\") {\n let [key, value] = Object.entries(tags)[0];\n container[key] = value;\n } else {\n container.tags = tags;\n }\n if (typeof link === \"object\") {\n let [key, value] = Object.entries(link)[0];\n container[key] = value;\n } else {\n container.link = link;\n }\n container.wrap = autoWrap();\n container.typeC4Shape = { text: typeC4Shape };\n container.parentBoundary = currentBoundaryParse;\n};\nconst addComponent = function(typeC4Shape, alias, label, techn, descr, sprite, tags, link) {\n if (alias === null || label === null) {\n return;\n }\n let component = {};\n const old = c4ShapeArray.find((component2) => component2.alias === alias);\n if (old && alias === old.alias) {\n component = old;\n } else {\n component.alias = alias;\n c4ShapeArray.push(component);\n }\n if (label === void 0 || label === null) {\n component.label = { text: \"\" };\n } else {\n component.label = { text: label };\n }\n if (techn === void 0 || techn === null) {\n component.techn = { text: \"\" };\n } else {\n if (typeof techn === \"object\") {\n let [key, value] = Object.entries(techn)[0];\n component[key] = { text: value };\n } else {\n component.techn = { text: techn };\n }\n }\n if (descr === void 0 || descr === null) {\n component.descr = { text: \"\" };\n } else {\n if (typeof descr === \"object\") {\n let [key, value] = Object.entries(descr)[0];\n component[key] = { text: value };\n } else {\n component.descr = { text: descr };\n }\n }\n if (typeof sprite === \"object\") {\n let [key, value] = Object.entries(sprite)[0];\n component[key] = value;\n } else {\n component.sprite = sprite;\n }\n if (typeof tags === \"object\") {\n let [key, value] = Object.entries(tags)[0];\n component[key] = value;\n } else {\n component.tags = tags;\n }\n if (typeof link === \"object\") {\n let [key, value] = Object.entries(link)[0];\n component[key] = value;\n } else {\n component.link = link;\n }\n component.wrap = autoWrap();\n component.typeC4Shape = { text: typeC4Shape };\n component.parentBoundary = currentBoundaryParse;\n};\nconst addPersonOrSystemBoundary = function(alias, label, type, tags, link) {\n if (alias === null || label === null) {\n return;\n }\n let boundary = {};\n const old = boundaries.find((boundary2) => boundary2.alias === alias);\n if (old && alias === old.alias) {\n boundary = old;\n } else {\n boundary.alias = alias;\n boundaries.push(boundary);\n }\n if (label === void 0 || label === null) {\n boundary.label = { text: \"\" };\n } else {\n boundary.label = { text: label };\n }\n if (type === void 0 || type === null) {\n boundary.type = { text: \"system\" };\n } else {\n if (typeof type === \"object\") {\n let [key, value] = Object.entries(type)[0];\n boundary[key] = { text: value };\n } else {\n boundary.type = { text: type };\n }\n }\n if (typeof tags === \"object\") {\n let [key, value] = Object.entries(tags)[0];\n boundary[key] = value;\n } else {\n boundary.tags = tags;\n }\n if (typeof link === \"object\") {\n let [key, value] = Object.entries(link)[0];\n boundary[key] = value;\n } else {\n boundary.link = link;\n }\n boundary.parentBoundary = currentBoundaryParse;\n boundary.wrap = autoWrap();\n parentBoundaryParse = currentBoundaryParse;\n currentBoundaryParse = alias;\n boundaryParseStack.push(parentBoundaryParse);\n};\nconst addContainerBoundary = function(alias, label, type, tags, link) {\n if (alias === null || label === null) {\n return;\n }\n let boundary = {};\n const old = boundaries.find((boundary2) => boundary2.alias === alias);\n if (old && alias === old.alias) {\n boundary = old;\n } else {\n boundary.alias = alias;\n boundaries.push(boundary);\n }\n if (label === void 0 || label === null) {\n boundary.label = { text: \"\" };\n } else {\n boundary.label = { text: label };\n }\n if (type === void 0 || type === null) {\n boundary.type = { text: \"container\" };\n } else {\n if (typeof type === \"object\") {\n let [key, value] = Object.entries(type)[0];\n boundary[key] = { text: value };\n } else {\n boundary.type = { text: type };\n }\n }\n if (typeof tags === \"object\") {\n let [key, value] = Object.entries(tags)[0];\n boundary[key] = value;\n } else {\n boundary.tags = tags;\n }\n if (typeof link === \"object\") {\n let [key, value] = Object.entries(link)[0];\n boundary[key] = value;\n } else {\n boundary.link = link;\n }\n boundary.parentBoundary = currentBoundaryParse;\n boundary.wrap = autoWrap();\n parentBoundaryParse = currentBoundaryParse;\n currentBoundaryParse = alias;\n boundaryParseStack.push(parentBoundaryParse);\n};\nconst addDeploymentNode = function(nodeType, alias, label, type, descr, sprite, tags, link) {\n if (alias === null || label === null) {\n return;\n }\n let boundary = {};\n const old = boundaries.find((boundary2) => boundary2.alias === alias);\n if (old && alias === old.alias) {\n boundary = old;\n } else {\n boundary.alias = alias;\n boundaries.push(boundary);\n }\n if (label === void 0 || label === null) {\n boundary.label = { text: \"\" };\n } else {\n boundary.label = { text: label };\n }\n if (type === void 0 || type === null) {\n boundary.type = { text: \"node\" };\n } else {\n if (typeof type === \"object\") {\n let [key, value] = Object.entries(type)[0];\n boundary[key] = { text: value };\n } else {\n boundary.type = { text: type };\n }\n }\n if (descr === void 0 || descr === null) {\n boundary.descr = { text: \"\" };\n } else {\n if (typeof descr === \"object\") {\n let [key, value] = Object.entries(descr)[0];\n boundary[key] = { text: value };\n } else {\n boundary.descr = { text: descr };\n }\n }\n if (typeof tags === \"object\") {\n let [key, value] = Object.entries(tags)[0];\n boundary[key] = value;\n } else {\n boundary.tags = tags;\n }\n if (typeof link === \"object\") {\n let [key, value] = Object.entries(link)[0];\n boundary[key] = value;\n } else {\n boundary.link = link;\n }\n boundary.nodeType = nodeType;\n boundary.parentBoundary = currentBoundaryParse;\n boundary.wrap = autoWrap();\n parentBoundaryParse = currentBoundaryParse;\n currentBoundaryParse = alias;\n boundaryParseStack.push(parentBoundaryParse);\n};\nconst popBoundaryParseStack = function() {\n currentBoundaryParse = parentBoundaryParse;\n boundaryParseStack.pop();\n parentBoundaryParse = boundaryParseStack.pop();\n boundaryParseStack.push(parentBoundaryParse);\n};\nconst updateElStyle = function(typeC4Shape, elementName, bgColor, fontColor, borderColor, shadowing, shape, sprite, techn, legendText, legendSprite) {\n let old = c4ShapeArray.find((element) => element.alias === elementName);\n if (old === void 0) {\n old = boundaries.find((element) => element.alias === elementName);\n if (old === void 0) {\n return;\n }\n }\n if (bgColor !== void 0 && bgColor !== null) {\n if (typeof bgColor === \"object\") {\n let [key, value] = Object.entries(bgColor)[0];\n old[key] = value;\n } else {\n old.bgColor = bgColor;\n }\n }\n if (fontColor !== void 0 && fontColor !== null) {\n if (typeof fontColor === \"object\") {\n let [key, value] = Object.entries(fontColor)[0];\n old[key] = value;\n } else {\n old.fontColor = fontColor;\n }\n }\n if (borderColor !== void 0 && borderColor !== null) {\n if (typeof borderColor === \"object\") {\n let [key, value] = Object.entries(borderColor)[0];\n old[key] = value;\n } else {\n old.borderColor = borderColor;\n }\n }\n if (shadowing !== void 0 && shadowing !== null) {\n if (typeof shadowing === \"object\") {\n let [key, value] = Object.entries(shadowing)[0];\n old[key] = value;\n } else {\n old.shadowing = shadowing;\n }\n }\n if (shape !== void 0 && shape !== null) {\n if (typeof shape === \"object\") {\n let [key, value] = Object.entries(shape)[0];\n old[key] = value;\n } else {\n old.shape = shape;\n }\n }\n if (sprite !== void 0 && sprite !== null) {\n if (typeof sprite === \"object\") {\n let [key, value] = Object.entries(sprite)[0];\n old[key] = value;\n } else {\n old.sprite = sprite;\n }\n }\n if (techn !== void 0 && techn !== null) {\n if (typeof techn === \"object\") {\n let [key, value] = Object.entries(techn)[0];\n old[key] = value;\n } else {\n old.techn = techn;\n }\n }\n if (legendText !== void 0 && legendText !== null) {\n if (typeof legendText === \"object\") {\n let [key, value] = Object.entries(legendText)[0];\n old[key] = value;\n } else {\n old.legendText = legendText;\n }\n }\n if (legendSprite !== void 0 && legendSprite !== null) {\n if (typeof legendSprite === \"object\") {\n let [key, value] = Object.entries(legendSprite)[0];\n old[key] = value;\n } else {\n old.legendSprite = legendSprite;\n }\n }\n};\nconst updateRelStyle = function(typeC4Shape, from, to, textColor, lineColor, offsetX, offsetY) {\n const old = rels.find((rel) => rel.from === from && rel.to === to);\n if (old === void 0) {\n return;\n }\n if (textColor !== void 0 && textColor !== null) {\n if (typeof textColor === \"object\") {\n let [key, value] = Object.entries(textColor)[0];\n old[key] = value;\n } else {\n old.textColor = textColor;\n }\n }\n if (lineColor !== void 0 && lineColor !== null) {\n if (typeof lineColor === \"object\") {\n let [key, value] = Object.entries(lineColor)[0];\n old[key] = value;\n } else {\n old.lineColor = lineColor;\n }\n }\n if (offsetX !== void 0 && offsetX !== null) {\n if (typeof offsetX === \"object\") {\n let [key, value] = Object.entries(offsetX)[0];\n old[key] = parseInt(value);\n } else {\n old.offsetX = parseInt(offsetX);\n }\n }\n if (offsetY !== void 0 && offsetY !== null) {\n if (typeof offsetY === \"object\") {\n let [key, value] = Object.entries(offsetY)[0];\n old[key] = parseInt(value);\n } else {\n old.offsetY = parseInt(offsetY);\n }\n }\n};\nconst updateLayoutConfig = function(typeC4Shape, c4ShapeInRowParam, c4BoundaryInRowParam) {\n let c4ShapeInRowValue = c4ShapeInRow$1;\n let c4BoundaryInRowValue = c4BoundaryInRow$1;\n if (typeof c4ShapeInRowParam === \"object\") {\n const value = Object.values(c4ShapeInRowParam)[0];\n c4ShapeInRowValue = parseInt(value);\n } else {\n c4ShapeInRowValue = parseInt(c4ShapeInRowParam);\n }\n if (typeof c4BoundaryInRowParam === \"object\") {\n const value = Object.values(c4BoundaryInRowParam)[0];\n c4BoundaryInRowValue = parseInt(value);\n } else {\n c4BoundaryInRowValue = parseInt(c4BoundaryInRowParam);\n }\n if (c4ShapeInRowValue >= 1) {\n c4ShapeInRow$1 = c4ShapeInRowValue;\n }\n if (c4BoundaryInRowValue >= 1) {\n c4BoundaryInRow$1 = c4BoundaryInRowValue;\n }\n};\nconst getC4ShapeInRow = function() {\n return c4ShapeInRow$1;\n};\nconst getC4BoundaryInRow = function() {\n return c4BoundaryInRow$1;\n};\nconst getCurrentBoundaryParse = function() {\n return currentBoundaryParse;\n};\nconst getParentBoundaryParse = function() {\n return parentBoundaryParse;\n};\nconst getC4ShapeArray = function(parentBoundary) {\n if (parentBoundary === void 0 || parentBoundary === null) {\n return c4ShapeArray;\n } else {\n return c4ShapeArray.filter((personOrSystem) => {\n return personOrSystem.parentBoundary === parentBoundary;\n });\n }\n};\nconst getC4Shape = function(alias) {\n return c4ShapeArray.find((personOrSystem) => personOrSystem.alias === alias);\n};\nconst getC4ShapeKeys = function(parentBoundary) {\n return Object.keys(getC4ShapeArray(parentBoundary));\n};\nconst getBoundaries = function(parentBoundary) {\n if (parentBoundary === void 0 || parentBoundary === null) {\n return boundaries;\n } else {\n return boundaries.filter((boundary) => boundary.parentBoundary === parentBoundary);\n }\n};\nconst getBoundarys = getBoundaries;\nconst getRels = function() {\n return rels;\n};\nconst getTitle = function() {\n return title;\n};\nconst setWrap = function(wrapSetting) {\n wrapEnabled = wrapSetting;\n};\nconst autoWrap = function() {\n return wrapEnabled;\n};\nconst clear = function() {\n c4ShapeArray = [];\n boundaries = [\n {\n alias: \"global\",\n label: { text: \"global\" },\n type: { text: \"global\" },\n tags: null,\n link: null,\n parentBoundary: \"\"\n }\n ];\n parentBoundaryParse = \"\";\n currentBoundaryParse = \"global\";\n boundaryParseStack = [\"\"];\n rels = [];\n boundaryParseStack = [\"\"];\n title = \"\";\n wrapEnabled = false;\n c4ShapeInRow$1 = 4;\n c4BoundaryInRow$1 = 2;\n};\nconst 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 SOLID_POINT: 24,\n DOTTED_POINT: 25\n};\nconst ARROWTYPE = {\n FILLED: 0,\n OPEN: 1\n};\nconst PLACEMENT = {\n LEFTOF: 0,\n RIGHTOF: 1,\n OVER: 2\n};\nconst setTitle = function(txt) {\n let sanitizedText = sanitizeText(txt, getConfig());\n title = sanitizedText;\n};\nconst db = {\n addPersonOrSystem,\n addPersonOrSystemBoundary,\n addContainer,\n addContainerBoundary,\n addComponent,\n addDeploymentNode,\n popBoundaryParseStack,\n addRel,\n updateElStyle,\n updateRelStyle,\n updateLayoutConfig,\n autoWrap,\n setWrap,\n getC4ShapeArray,\n getC4Shape,\n getC4ShapeKeys,\n getBoundaries,\n getBoundarys,\n getCurrentBoundaryParse,\n getParentBoundaryParse,\n getRels,\n getTitle,\n getC4Type,\n getC4ShapeInRow,\n getC4BoundaryInRow,\n setAccTitle,\n getAccTitle,\n getAccDescription,\n setAccDescription,\n getConfig: () => getConfig().c4,\n clear,\n LINETYPE,\n ARROWTYPE,\n PLACEMENT,\n setTitle,\n setC4Type\n // apply,\n};\nconst drawRect = function(elem, rectData) {\n return drawRect$1(elem, rectData);\n};\nconst drawImage = function(elem, width, height, x, y, link) {\n const imageElem = elem.append(\"image\");\n imageElem.attr(\"width\", width);\n imageElem.attr(\"height\", height);\n imageElem.attr(\"x\", x);\n imageElem.attr(\"y\", y);\n let sanitizedLink = link.startsWith(\"data:image/png;base64\") ? link : sanitizeUrl(link);\n imageElem.attr(\"xlink:href\", sanitizedLink);\n};\nconst drawRels$1 = (elem, rels2, conf2) => {\n const relsElem = elem.append(\"g\");\n let i = 0;\n for (let rel of rels2) {\n let textColor = rel.textColor ? rel.textColor : \"#444444\";\n let strokeColor = rel.lineColor ? rel.lineColor : \"#444444\";\n let offsetX = rel.offsetX ? parseInt(rel.offsetX) : 0;\n let offsetY = rel.offsetY ? parseInt(rel.offsetY) : 0;\n let url = \"\";\n if (i === 0) {\n let line = relsElem.append(\"line\");\n line.attr(\"x1\", rel.startPoint.x);\n line.attr(\"y1\", rel.startPoint.y);\n line.attr(\"x2\", rel.endPoint.x);\n line.attr(\"y2\", rel.endPoint.y);\n line.attr(\"stroke-width\", \"1\");\n line.attr(\"stroke\", strokeColor);\n line.style(\"fill\", \"none\");\n if (rel.type !== \"rel_b\") {\n line.attr(\"marker-end\", \"url(\" + url + \"#arrowhead)\");\n }\n if (rel.type === \"birel\" || rel.type === \"rel_b\") {\n line.attr(\"marker-start\", \"url(\" + url + \"#arrowend)\");\n }\n i = -1;\n } else {\n let line = relsElem.append(\"path\");\n line.attr(\"fill\", \"none\").attr(\"stroke-width\", \"1\").attr(\"stroke\", strokeColor).attr(\n \"d\",\n \"Mstartx,starty Qcontrolx,controly stopx,stopy \".replaceAll(\"startx\", rel.startPoint.x).replaceAll(\"starty\", rel.startPoint.y).replaceAll(\n \"controlx\",\n rel.startPoint.x + (rel.endPoint.x - rel.startPoint.x) / 2 - (rel.endPoint.x - rel.startPoint.x) / 4\n ).replaceAll(\"controly\", rel.startPoint.y + (rel.endPoint.y - rel.startPoint.y) / 2).replaceAll(\"stopx\", rel.endPoint.x).replaceAll(\"stopy\", rel.endPoint.y)\n );\n if (rel.type !== \"rel_b\") {\n line.attr(\"marker-end\", \"url(\" + url + \"#arrowhead)\");\n }\n if (rel.type === \"birel\" || rel.type === \"rel_b\") {\n line.attr(\"marker-start\", \"url(\" + url + \"#arrowend)\");\n }\n }\n let messageConf = conf2.messageFont();\n _drawTextCandidateFunc(conf2)(\n rel.label.text,\n relsElem,\n Math.min(rel.startPoint.x, rel.endPoint.x) + Math.abs(rel.endPoint.x - rel.startPoint.x) / 2 + offsetX,\n Math.min(rel.startPoint.y, rel.endPoint.y) + Math.abs(rel.endPoint.y - rel.startPoint.y) / 2 + offsetY,\n rel.label.width,\n rel.label.height,\n { fill: textColor },\n messageConf\n );\n if (rel.techn && rel.techn.text !== \"\") {\n messageConf = conf2.messageFont();\n _drawTextCandidateFunc(conf2)(\n \"[\" + rel.techn.text + \"]\",\n relsElem,\n Math.min(rel.startPoint.x, rel.endPoint.x) + Math.abs(rel.endPoint.x - rel.startPoint.x) / 2 + offsetX,\n Math.min(rel.startPoint.y, rel.endPoint.y) + Math.abs(rel.endPoint.y - rel.startPoint.y) / 2 + conf2.messageFontSize + 5 + offsetY,\n Math.max(rel.label.width, rel.techn.width),\n rel.techn.height,\n { fill: textColor, \"font-style\": \"italic\" },\n messageConf\n );\n }\n }\n};\nconst drawBoundary$1 = function(elem, boundary, conf2) {\n const boundaryElem = elem.append(\"g\");\n let fillColor = boundary.bgColor ? boundary.bgColor : \"none\";\n let strokeColor = boundary.borderColor ? boundary.borderColor : \"#444444\";\n let fontColor = boundary.fontColor ? boundary.fontColor : \"black\";\n let attrsValue = { \"stroke-width\": 1, \"stroke-dasharray\": \"7.0,7.0\" };\n if (boundary.nodeType) {\n attrsValue = { \"stroke-width\": 1 };\n }\n let rectData = {\n x: boundary.x,\n y: boundary.y,\n fill: fillColor,\n stroke: strokeColor,\n width: boundary.width,\n height: boundary.height,\n rx: 2.5,\n ry: 2.5,\n attrs: attrsValue\n };\n drawRect(boundaryElem, rectData);\n let boundaryConf = conf2.boundaryFont();\n boundaryConf.fontWeight = \"bold\";\n boundaryConf.fontSize = boundaryConf.fontSize + 2;\n boundaryConf.fontColor = fontColor;\n _drawTextCandidateFunc(conf2)(\n boundary.label.text,\n boundaryElem,\n boundary.x,\n boundary.y + boundary.label.Y,\n boundary.width,\n boundary.height,\n { fill: \"#444444\" },\n boundaryConf\n );\n if (boundary.type && boundary.type.text !== \"\") {\n boundaryConf = conf2.boundaryFont();\n boundaryConf.fontColor = fontColor;\n _drawTextCandidateFunc(conf2)(\n boundary.type.text,\n boundaryElem,\n boundary.x,\n boundary.y + boundary.type.Y,\n boundary.width,\n boundary.height,\n { fill: \"#444444\" },\n boundaryConf\n );\n }\n if (boundary.descr && boundary.descr.text !== \"\") {\n boundaryConf = conf2.boundaryFont();\n boundaryConf.fontSize = boundaryConf.fontSize - 2;\n boundaryConf.fontColor = fontColor;\n _drawTextCandidateFunc(conf2)(\n boundary.descr.text,\n boundaryElem,\n boundary.x,\n boundary.y + boundary.descr.Y,\n boundary.width,\n boundary.height,\n { fill: \"#444444\" },\n boundaryConf\n );\n }\n};\nconst drawC4Shape = function(elem, c4Shape, conf2) {\n var _a;\n let fillColor = c4Shape.bgColor ? c4Shape.bgColor : conf2[c4Shape.typeC4Shape.text + \"_bg_color\"];\n let strokeColor = c4Shape.borderColor ? c4Shape.borderColor : conf2[c4Shape.typeC4Shape.text + \"_border_color\"];\n let fontColor = c4Shape.fontColor ? c4Shape.fontColor : \"#FFFFFF\";\n let personImg = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAACD0lEQVR4Xu2YoU4EMRCGT+4j8Ai8AhaH4QHgAUjQuFMECUgMIUgwJAgMhgQsAYUiJCiQIBBY+EITsjfTdme6V24v4c8vyGbb+ZjOtN0bNcvjQXmkH83WvYBWto6PLm6v7p7uH1/w2fXD+PBycX1Pv2l3IdDm/vn7x+dXQiAubRzoURa7gRZWd0iGRIiJbOnhnfYBQZNJjNbuyY2eJG8fkDE3bbG4ep6MHUAsgYxmE3nVs6VsBWJSGccsOlFPmLIViMzLOB7pCVO2AtHJMohH7Fh6zqitQK7m0rJvAVYgGcEpe//PLdDz65sM4pF9N7ICcXDKIB5Nv6j7tD0NoSdM2QrU9Gg0ewE1LqBhHR3BBdvj2vapnidjHxD/q6vd7Pvhr31AwcY8eXMTXAKECZZJFXuEq27aLgQK5uLMohCenGGuGewOxSjBvYBqeG6B+Nqiblggdjnc+ZXDy+FNFpFzw76O3UBAROuXh6FoiAcf5g9eTvUgzy0nWg6I8cXHRUpg5bOVBCo+KDpFajOf23GgPme7RSQ+lacIENUgJ6gg1k6HjgOlqnLqip4tEuhv0hNEMXUD0clyXE3p6pZA0S2nnvTlXwLJEZWlb7cTQH1+USgTN4VhAenm/wea1OCAOmqo6fE1WCb9WSKBah+rbUWPWAmE2Rvk0ApiB45eOyNAzU8xcTvj8KvkKEoOaIYeHNA3ZuygAvFMUO0AAAAASUVORK5CYII=\";\n switch (c4Shape.typeC4Shape.text) {\n case \"person\":\n personImg = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAACD0lEQVR4Xu2YoU4EMRCGT+4j8Ai8AhaH4QHgAUjQuFMECUgMIUgwJAgMhgQsAYUiJCiQIBBY+EITsjfTdme6V24v4c8vyGbb+ZjOtN0bNcvjQXmkH83WvYBWto6PLm6v7p7uH1/w2fXD+PBycX1Pv2l3IdDm/vn7x+dXQiAubRzoURa7gRZWd0iGRIiJbOnhnfYBQZNJjNbuyY2eJG8fkDE3bbG4ep6MHUAsgYxmE3nVs6VsBWJSGccsOlFPmLIViMzLOB7pCVO2AtHJMohH7Fh6zqitQK7m0rJvAVYgGcEpe//PLdDz65sM4pF9N7ICcXDKIB5Nv6j7tD0NoSdM2QrU9Gg0ewE1LqBhHR3BBdvj2vapnidjHxD/q6vd7Pvhr31AwcY8eXMTXAKECZZJFXuEq27aLgQK5uLMohCenGGuGewOxSjBvYBqeG6B+Nqiblggdjnc+ZXDy+FNFpFzw76O3UBAROuXh6FoiAcf5g9eTvUgzy0nWg6I8cXHRUpg5bOVBCo+KDpFajOf23GgPme7RSQ+lacIENUgJ6gg1k6HjgOlqnLqip4tEuhv0hNEMXUD0clyXE3p6pZA0S2nnvTlXwLJEZWlb7cTQH1+USgTN4VhAenm/wea1OCAOmqo6fE1WCb9WSKBah+rbUWPWAmE2Rvk0ApiB45eOyNAzU8xcTvj8KvkKEoOaIYeHNA3ZuygAvFMUO0AAAAASUVORK5CYII=\";\n break;\n case \"external_person\":\n personImg = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAAB6ElEQVR4Xu2YLY+EMBCG9+dWr0aj0Wg0Go1Go0+j8Xdv2uTCvv1gpt0ebHKPuhDaeW4605Z9mJvx4AdXUyTUdd08z+u6flmWZRnHsWkafk9DptAwDPu+f0eAYtu2PEaGWuj5fCIZrBAC2eLBAnRCsEkkxmeaJp7iDJ2QMDdHsLg8SxKFEJaAo8lAXnmuOFIhTMpxxKATebo4UiFknuNo4OniSIXQyRxEA3YsnjGCVEjVXD7yLUAqxBGUyPv/Y4W2beMgGuS7kVQIBycH0fD+oi5pezQETxdHKmQKGk1eQEYldK+jw5GxPfZ9z7Mk0Qnhf1W1m3w//EUn5BDmSZsbR44QQLBEqrBHqOrmSKaQAxdnLArCrxZcM7A7ZKs4ioRq8LFC+NpC3WCBJsvpVw5edm9iEXFuyNfxXAgSwfrFQ1c0iNda8AdejvUgnktOtJQQxmcfFzGglc5WVCj7oDgFqU18boeFSs52CUh8LE8BIVQDT1ABrB0HtgSEYlX5doJnCwv9TXocKCaKbnwhdDKPq4lf3SwU3HLq4V/+WYhHVMa/3b4IlfyikAduCkcBc7mQ3/z/Qq/cTuikhkzB12Ae/mcJC9U+Vo8Ej1gWAtgbeGgFsAMHr50BIWOLCbezvhpBFUdY6EJuJ/QDW0XoMX60zZ0AAAAASUVORK5CYII=\";\n break;\n }\n const c4ShapeElem = elem.append(\"g\");\n c4ShapeElem.attr(\"class\", \"person-man\");\n const rect = getNoteRect();\n switch (c4Shape.typeC4Shape.text) {\n case \"person\":\n case \"external_person\":\n case \"system\":\n case \"external_system\":\n case \"container\":\n case \"external_container\":\n case \"component\":\n case \"external_component\":\n rect.x = c4Shape.x;\n rect.y = c4Shape.y;\n rect.fill = fillColor;\n rect.width = c4Shape.width;\n rect.height = c4Shape.height;\n rect.stroke = strokeColor;\n rect.rx = 2.5;\n rect.ry = 2.5;\n rect.attrs = { \"stroke-width\": 0.5 };\n drawRect(c4ShapeElem, rect);\n break;\n case \"system_db\":\n case \"external_system_db\":\n case \"container_db\":\n case \"external_container_db\":\n case \"component_db\":\n case \"external_component_db\":\n c4ShapeElem.append(\"path\").attr(\"fill\", fillColor).attr(\"stroke-width\", \"0.5\").attr(\"stroke\", strokeColor).attr(\n \"d\",\n \"Mstartx,startyc0,-10 half,-10 half,-10c0,0 half,0 half,10l0,heightc0,10 -half,10 -half,10c0,0 -half,0 -half,-10l0,-height\".replaceAll(\"startx\", c4Shape.x).replaceAll(\"starty\", c4Shape.y).replaceAll(\"half\", c4Shape.width / 2).replaceAll(\"height\", c4Shape.height)\n );\n c4ShapeElem.append(\"path\").attr(\"fill\", \"none\").attr(\"stroke-width\", \"0.5\").attr(\"stroke\", strokeColor).attr(\n \"d\",\n \"Mstartx,startyc0,10 half,10 half,10c0,0 half,0 half,-10\".replaceAll(\"startx\", c4Shape.x).replaceAll(\"starty\", c4Shape.y).replaceAll(\"half\", c4Shape.width / 2)\n );\n break;\n case \"system_queue\":\n case \"external_system_queue\":\n case \"container_queue\":\n case \"external_container_queue\":\n case \"component_queue\":\n case \"external_component_queue\":\n c4ShapeElem.append(\"path\").attr(\"fill\", fillColor).attr(\"stroke-width\", \"0.5\").attr(\"stroke\", strokeColor).attr(\n \"d\",\n \"Mstartx,startylwidth,0c5,0 5,half 5,halfc0,0 0,half -5,halfl-width,0c-5,0 -5,-half -5,-halfc0,0 0,-half 5,-half\".replaceAll(\"startx\", c4Shape.x).replaceAll(\"starty\", c4Shape.y).replaceAll(\"width\", c4Shape.width).replaceAll(\"half\", c4Shape.height / 2)\n );\n c4ShapeElem.append(\"path\").attr(\"fill\", \"none\").attr(\"stroke-width\", \"0.5\").attr(\"stroke\", strokeColor).attr(\n \"d\",\n \"Mstartx,startyc-5,0 -5,half -5,halfc0,half 5,half 5,half\".replaceAll(\"startx\", c4Shape.x + c4Shape.width).replaceAll(\"starty\", c4Shape.y).replaceAll(\"half\", c4Shape.height / 2)\n );\n break;\n }\n let c4ShapeFontConf = getC4ShapeFont(conf2, c4Shape.typeC4Shape.text);\n c4ShapeElem.append(\"text\").attr(\"fill\", fontColor).attr(\"font-family\", c4ShapeFontConf.fontFamily).attr(\"font-size\", c4ShapeFontConf.fontSize - 2).attr(\"font-style\", \"italic\").attr(\"lengthAdjust\", \"spacing\").attr(\"textLength\", c4Shape.typeC4Shape.width).attr(\"x\", c4Shape.x + c4Shape.width / 2 - c4Shape.typeC4Shape.width / 2).attr(\"y\", c4Shape.y + c4Shape.typeC4Shape.Y).text(\"<<\" + c4Shape.typeC4Shape.text + \">>\");\n switch (c4Shape.typeC4Shape.text) {\n case \"person\":\n case \"external_person\":\n drawImage(\n c4ShapeElem,\n 48,\n 48,\n c4Shape.x + c4Shape.width / 2 - 24,\n c4Shape.y + c4Shape.image.Y,\n personImg\n );\n break;\n }\n let textFontConf = conf2[c4Shape.typeC4Shape.text + \"Font\"]();\n textFontConf.fontWeight = \"bold\";\n textFontConf.fontSize = textFontConf.fontSize + 2;\n textFontConf.fontColor = fontColor;\n _drawTextCandidateFunc(conf2)(\n c4Shape.label.text,\n c4ShapeElem,\n c4Shape.x,\n c4Shape.y + c4Shape.label.Y,\n c4Shape.width,\n c4Shape.height,\n { fill: fontColor },\n textFontConf\n );\n textFontConf = conf2[c4Shape.typeC4Shape.text + \"Font\"]();\n textFontConf.fontColor = fontColor;\n if (c4Shape.techn && ((_a = c4Shape.techn) == null ? void 0 : _a.text) !== \"\") {\n _drawTextCandidateFunc(conf2)(\n c4Shape.techn.text,\n c4ShapeElem,\n c4Shape.x,\n c4Shape.y + c4Shape.techn.Y,\n c4Shape.width,\n c4Shape.height,\n { fill: fontColor, \"font-style\": \"italic\" },\n textFontConf\n );\n } else if (c4Shape.type && c4Shape.type.text !== \"\") {\n _drawTextCandidateFunc(conf2)(\n c4Shape.type.text,\n c4ShapeElem,\n c4Shape.x,\n c4Shape.y + c4Shape.type.Y,\n c4Shape.width,\n c4Shape.height,\n { fill: fontColor, \"font-style\": \"italic\" },\n textFontConf\n );\n }\n if (c4Shape.descr && c4Shape.descr.text !== \"\") {\n textFontConf = conf2.personFont();\n textFontConf.fontColor = fontColor;\n _drawTextCandidateFunc(conf2)(\n c4Shape.descr.text,\n c4ShapeElem,\n c4Shape.x,\n c4Shape.y + c4Shape.descr.Y,\n c4Shape.width,\n c4Shape.height,\n { fill: fontColor },\n textFontConf\n );\n }\n return c4Shape.height;\n};\nconst insertDatabaseIcon = function(elem) {\n elem.append(\"defs\").append(\"symbol\").attr(\"id\", \"database\").attr(\"fill-rule\", \"evenodd\").attr(\"clip-rule\", \"evenodd\").append(\"path\").attr(\"transform\", \"scale(.5)\").attr(\n \"d\",\n \"M12.258.001l.256.004.255.005.253.008.251.01.249.012.247.015.246.016.242.019.241.02.239.023.236.024.233.027.231.028.229.031.225.032.223.034.22.036.217.038.214.04.211.041.208.043.205.045.201.046.198.048.194.05.191.051.187.053.183.054.18.056.175.057.172.059.168.06.163.061.16.063.155.064.15.066.074.033.073.033.071.034.07.034.069.035.068.035.067.035.066.035.064.036.064.036.062.036.06.036.06.037.058.037.058.037.055.038.055.038.053.038.052.038.051.039.05.039.048.039.047.039.045.04.044.04.043.04.041.04.04.041.039.041.037.041.036.041.034.041.033.042.032.042.03.042.029.042.027.042.026.043.024.043.023.043.021.043.02.043.018.044.017.043.015.044.013.044.012.044.011.045.009.044.007.045.006.045.004.045.002.045.001.045v17l-.001.045-.002.045-.004.045-.006.045-.007.045-.009.044-.011.045-.012.044-.013.044-.015.044-.017.043-.018.044-.02.043-.021.043-.023.043-.024.043-.026.043-.027.042-.029.042-.03.042-.032.042-.033.042-.034.041-.036.041-.037.041-.039.041-.04.041-.041.04-.043.04-.044.04-.045.04-.047.039-.048.039-.05.039-.051.039-.052.038-.053.038-.055.038-.055.038-.058.037-.058.037-.06.037-.06.036-.062.036-.064.036-.064.036-.066.035-.067.035-.068.035-.069.035-.07.034-.071.034-.073.033-.074.033-.15.066-.155.064-.16.063-.163.061-.168.06-.172.059-.175.057-.18.056-.183.054-.187.053-.191.051-.194.05-.198.048-.201.046-.205.045-.208.043-.211.041-.214.04-.217.038-.22.036-.223.034-.225.032-.229.031-.231.028-.233.027-.236.024-.239.023-.241.02-.242.019-.246.016-.247.015-.249.012-.251.01-.253.008-.255.005-.256.004-.258.001-.258-.001-.256-.004-.255-.005-.253-.008-.251-.01-.249-.012-.247-.015-.245-.016-.243-.019-.241-.02-.238-.023-.236-.024-.234-.027-.231-.028-.228-.031-.226-.032-.223-.034-.22-.036-.217-.038-.214-.04-.211-.041-.208-.043-.204-.045-.201-.046-.198-.048-.195-.05-.19-.051-.187-.053-.184-.054-.179-.056-.176-.057-.172-.059-.167-.06-.164-.061-.159-.063-.155-.064-.151-.066-.074-.033-.072-.033-.072-.034-.07-.034-.069-.035-.068-.035-.067-.035-.066-.035-.064-.036-.063-.036-.062-.036-.061-.036-.06-.037-.058-.037-.057-.037-.056-.038-.055-.038-.053-.038-.052-.038-.051-.039-.049-.039-.049-.039-.046-.039-.046-.04-.044-.04-.043-.04-.041-.04-.04-.041-.039-.041-.037-.041-.036-.041-.034-.041-.033-.042-.032-.042-.03-.042-.029-.042-.027-.042-.026-.043-.024-.043-.023-.043-.021-.043-.02-.043-.018-.044-.017-.043-.015-.044-.013-.044-.012-.044-.011-.045-.009-.044-.007-.045-.006-.045-.004-.045-.002-.045-.001-.045v-17l.001-.045.002-.045.004-.045.006-.045.007-.045.009-.044.011-.045.012-.044.013-.044.015-.044.017-.043.018-.044.02-.043.021-.043.023-.043.024-.043.026-.043.027-.042.029-.042.03-.042.032-.042.033-.042.034-.041.036-.041.037-.041.039-.041.04-.041.041-.04.043-.04.044-.04.046-.04.046-.039.049-.039.049-.039.051-.039.052-.038.053-.038.055-.038.056-.038.057-.037.058-.037.06-.037.061-.036.062-.036.063-.036.064-.036.066-.035.067-.035.068-.035.069-.035.07-.034.072-.034.072-.033.074-.033.151-.066.155-.064.159-.063.164-.061.167-.06.172-.059.176-.057.179-.056.184-.054.187-.053.19-.051.195-.05.198-.048.201-.046.204-.045.208-.043.211-.041.214-.04.217-.038.22-.036.223-.034.226-.032.228-.031.231-.028.234-.027.236-.024.238-.023.241-.02.243-.019.245-.016.247-.015.249-.012.251-.01.253-.008.255-.005.256-.004.258-.001.258.001zm-9.258 20.499v.01l.001.021.003.021.004.022.005.021.006.022.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.023.018.024.019.024.021.024.022.025.023.024.024.025.052.049.056.05.061.051.066.051.07.051.075.051.079.052.084.052.088.052.092.052.097.052.102.051.105.052.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.048.144.049.147.047.152.047.155.047.16.045.163.045.167.043.171.043.176.041.178.041.183.039.187.039.19.037.194.035.197.035.202.033.204.031.209.03.212.029.216.027.219.025.222.024.226.021.23.02.233.018.236.016.24.015.243.012.246.01.249.008.253.005.256.004.259.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.021.224-.024.22-.026.216-.027.212-.028.21-.031.205-.031.202-.034.198-.034.194-.036.191-.037.187-.039.183-.04.179-.04.175-.042.172-.043.168-.044.163-.045.16-.046.155-.046.152-.047.148-.048.143-.049.139-.049.136-.05.131-.05.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.053.083-.051.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.05.023-.024.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.023.01-.022.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.127l-.077.055-.08.053-.083.054-.085.053-.087.052-.09.052-.093.051-.095.05-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.045-.118.044-.12.043-.122.042-.124.042-.126.041-.128.04-.13.04-.132.038-.134.038-.135.037-.138.037-.139.035-.142.035-.143.034-.144.033-.147.032-.148.031-.15.03-.151.03-.153.029-.154.027-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.01-.179.008-.179.008-.181.006-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.006-.179-.008-.179-.008-.178-.01-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.027-.153-.029-.151-.03-.15-.03-.148-.031-.146-.032-.145-.033-.143-.034-.141-.035-.14-.035-.137-.037-.136-.037-.134-.038-.132-.038-.13-.04-.128-.04-.126-.041-.124-.042-.122-.042-.12-.044-.117-.043-.116-.045-.113-.045-.112-.046-.109-.047-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.05-.093-.052-.09-.051-.087-.052-.085-.053-.083-.054-.08-.054-.077-.054v4.127zm0-5.654v.011l.001.021.003.021.004.021.005.022.006.022.007.022.009.022.01.022.011.023.012.023.013.023.015.024.016.023.017.024.018.024.019.024.021.024.022.024.023.025.024.024.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.052.11.051.114.051.119.052.123.05.127.051.131.05.135.049.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.044.171.042.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.022.23.02.233.018.236.016.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.012.241-.015.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.048.139-.05.136-.049.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.051.051-.049.023-.025.023-.024.021-.025.02-.024.019-.024.018-.024.017-.024.015-.023.014-.023.013-.024.012-.022.01-.023.01-.023.008-.022.006-.022.006-.022.004-.021.004-.022.001-.021.001-.021v-4.139l-.077.054-.08.054-.083.054-.085.052-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.044-.118.044-.12.044-.122.042-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.035-.143.033-.144.033-.147.033-.148.031-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.009-.179.009-.179.007-.181.007-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.007-.179-.007-.179-.009-.178-.009-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.031-.146-.033-.145-.033-.143-.033-.141-.035-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.04-.126-.041-.124-.042-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.051-.093-.051-.09-.051-.087-.053-.085-.052-.083-.054-.08-.054-.077-.054v4.139zm0-5.666v.011l.001.02.003.022.004.021.005.022.006.021.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.024.018.023.019.024.021.025.022.024.023.024.024.025.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.051.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.043.171.043.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.021.23.02.233.018.236.017.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.013.241-.014.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.049.139-.049.136-.049.131-.051.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.049.023-.025.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.022.01-.023.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.153l-.077.054-.08.054-.083.053-.085.053-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.048-.105.048-.106.048-.109.046-.111.046-.114.046-.115.044-.118.044-.12.043-.122.043-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.034-.143.034-.144.033-.147.032-.148.032-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.024-.161.024-.162.023-.163.023-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.01-.178.01-.179.009-.179.007-.181.006-.182.006-.182.004-.184.003-.184.001-.185.001-.185-.001-.184-.001-.184-.003-.182-.004-.182-.006-.181-.006-.179-.007-.179-.009-.178-.01-.176-.01-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.023-.162-.023-.161-.024-.159-.024-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.032-.146-.032-.145-.033-.143-.034-.141-.034-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.041-.126-.041-.124-.041-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.048-.105-.048-.102-.048-.1-.05-.097-.049-.095-.051-.093-.051-.09-.052-.087-.052-.085-.053-.083-.053-.08-.054-.077-.054v4.153zm8.74-8.179l-.257.004-.254.005-.25.008-.247.011-.244.012-.241.014-.237.016-.233.018-.231.021-.226.022-.224.023-.22.026-.216.027-.212.028-.21.031-.205.032-.202.033-.198.034-.194.036-.191.038-.187.038-.183.04-.179.041-.175.042-.172.043-.168.043-.163.045-.16.046-.155.046-.152.048-.148.048-.143.048-.139.049-.136.05-.131.05-.126.051-.123.051-.118.051-.114.052-.11.052-.106.052-.101.052-.096.052-.092.052-.088.052-.083.052-.079.052-.074.051-.07.052-.065.051-.06.05-.056.05-.051.05-.023.025-.023.024-.021.024-.02.025-.019.024-.018.024-.017.023-.015.024-.014.023-.013.023-.012.023-.01.023-.01.022-.008.022-.006.023-.006.021-.004.022-.004.021-.001.021-.001.021.001.021.001.021.004.021.004.022.006.021.006.023.008.022.01.022.01.023.012.023.013.023.014.023.015.024.017.023.018.024.019.024.02.025.021.024.023.024.023.025.051.05.056.05.06.05.065.051.07.052.074.051.079.052.083.052.088.052.092.052.096.052.101.052.106.052.11.052.114.052.118.051.123.051.126.051.131.05.136.05.139.049.143.048.148.048.152.048.155.046.16.046.163.045.168.043.172.043.175.042.179.041.183.04.187.038.191.038.194.036.198.034.202.033.205.032.21.031.212.028.216.027.22.026.224.023.226.022.231.021.233.018.237.016.241.014.244.012.247.011.25.008.254.005.257.004.26.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.022.224-.023.22-.026.216-.027.212-.028.21-.031.205-.032.202-.033.198-.034.194-.036.191-.038.187-.038.183-.04.179-.041.175-.042.172-.043.168-.043.163-.045.16-.046.155-.046.152-.048.148-.048.143-.048.139-.049.136-.05.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.05.051-.05.023-.025.023-.024.021-.024.02-.025.019-.024.018-.024.017-.023.015-.024.014-.023.013-.023.012-.023.01-.023.01-.022.008-.022.006-.023.006-.021.004-.022.004-.021.001-.021.001-.021-.001-.021-.001-.021-.004-.021-.004-.022-.006-.021-.006-.023-.008-.022-.01-.022-.01-.023-.012-.023-.013-.023-.014-.023-.015-.024-.017-.023-.018-.024-.019-.024-.02-.025-.021-.024-.023-.024-.023-.025-.051-.05-.056-.05-.06-.05-.065-.051-.07-.052-.074-.051-.079-.052-.083-.052-.088-.052-.092-.052-.096-.052-.101-.052-.106-.052-.11-.052-.114-.052-.118-.051-.123-.051-.126-.051-.131-.05-.136-.05-.139-.049-.143-.048-.148-.048-.152-.048-.155-.046-.16-.046-.163-.045-.168-.043-.172-.043-.175-.042-.179-.041-.183-.04-.187-.038-.191-.038-.194-.036-.198-.034-.202-.033-.205-.032-.21-.031-.212-.028-.216-.027-.22-.026-.224-.023-.226-.022-.231-.021-.233-.018-.237-.016-.241-.014-.244-.012-.247-.011-.25-.008-.254-.005-.257-.004-.26-.001-.26.001z\"\n );\n};\nconst insertComputerIcon = function(elem) {\n elem.append(\"defs\").append(\"symbol\").attr(\"id\", \"computer\").attr(\"width\", \"24\").attr(\"height\", \"24\").append(\"path\").attr(\"transform\", \"scale(.5)\").attr(\n \"d\",\n \"M2 2v13h20v-13h-20zm18 11h-16v-9h16v9zm-10.228 6l.466-1h3.524l.467 1h-4.457zm14.228 3h-24l2-6h2.104l-1.33 4h18.45l-1.297-4h2.073l2 6zm-5-10h-14v-7h14v7z\"\n );\n};\nconst insertClockIcon = function(elem) {\n elem.append(\"defs\").append(\"symbol\").attr(\"id\", \"clock\").attr(\"width\", \"24\").attr(\"height\", \"24\").append(\"path\").attr(\"transform\", \"scale(.5)\").attr(\n \"d\",\n \"M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm5.848 12.459c.202.038.202.333.001.372-1.907.361-6.045 1.111-6.547 1.111-.719 0-1.301-.582-1.301-1.301 0-.512.77-5.447 1.125-7.445.034-.192.312-.181.343.014l.985 6.238 5.394 1.011z\"\n );\n};\nconst insertArrowHead = function(elem) {\n elem.append(\"defs\").append(\"marker\").attr(\"id\", \"arrowhead\").attr(\"refX\", 9).attr(\"refY\", 5).attr(\"markerUnits\", \"userSpaceOnUse\").attr(\"markerWidth\", 12).attr(\"markerHeight\", 12).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 0 0 L 10 5 L 0 10 z\");\n};\nconst insertArrowEnd = function(elem) {\n elem.append(\"defs\").append(\"marker\").attr(\"id\", \"arrowend\").attr(\"refX\", 1).attr(\"refY\", 5).attr(\"markerUnits\", \"userSpaceOnUse\").attr(\"markerWidth\", 12).attr(\"markerHeight\", 12).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 10 0 L 0 5 L 10 10 z\");\n};\nconst insertArrowFilledHead = function(elem) {\n elem.append(\"defs\").append(\"marker\").attr(\"id\", \"filled-head\").attr(\"refX\", 18).attr(\"refY\", 7).attr(\"markerWidth\", 20).attr(\"markerHeight\", 28).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 18,7 L9,13 L14,7 L9,1 Z\");\n};\nconst insertDynamicNumber = function(elem) {\n elem.append(\"defs\").append(\"marker\").attr(\"id\", \"sequencenumber\").attr(\"refX\", 15).attr(\"refY\", 15).attr(\"markerWidth\", 60).attr(\"markerHeight\", 40).attr(\"orient\", \"auto\").append(\"circle\").attr(\"cx\", 15).attr(\"cy\", 15).attr(\"r\", 6);\n};\nconst insertArrowCrossHead = function(elem) {\n const defs = elem.append(\"defs\");\n const marker = defs.append(\"marker\").attr(\"id\", \"crosshead\").attr(\"markerWidth\", 15).attr(\"markerHeight\", 8).attr(\"orient\", \"auto\").attr(\"refX\", 16).attr(\"refY\", 4);\n marker.append(\"path\").attr(\"fill\", \"black\").attr(\"stroke\", \"#000000\").style(\"stroke-dasharray\", \"0, 0\").attr(\"stroke-width\", \"1px\").attr(\"d\", \"M 9,2 V 6 L16,4 Z\");\n marker.append(\"path\").attr(\"fill\", \"none\").attr(\"stroke\", \"#000000\").style(\"stroke-dasharray\", \"0, 0\").attr(\"stroke-width\", \"1px\").attr(\"d\", \"M 0,1 L 6,7 M 6,1 L 0,7\");\n};\nconst getC4ShapeFont = (cnf, typeC4Shape) => {\n return {\n fontFamily: cnf[typeC4Shape + \"FontFamily\"],\n fontSize: cnf[typeC4Shape + \"FontSize\"],\n fontWeight: cnf[typeC4Shape + \"FontWeight\"]\n };\n};\nconst _drawTextCandidateFunc = function() {\n function byText(content, g, x, y, width, height, textAttrs) {\n const text = g.append(\"text\").attr(\"x\", x + width / 2).attr(\"y\", y + height / 2 + 5).style(\"text-anchor\", \"middle\").text(content);\n _setTextAttrs(text, textAttrs);\n }\n function byTspan(content, g, x, y, width, height, textAttrs, conf2) {\n const { fontSize, fontFamily, fontWeight } = conf2;\n const lines = content.split(common.lineBreakRegex);\n for (let i = 0; i < lines.length; i++) {\n const dy = i * fontSize - fontSize * (lines.length - 1) / 2;\n const text = g.append(\"text\").attr(\"x\", x + width / 2).attr(\"y\", y).style(\"text-anchor\", \"middle\").attr(\"dominant-baseline\", \"middle\").style(\"font-size\", fontSize).style(\"font-weight\", fontWeight).style(\"font-family\", fontFamily);\n text.append(\"tspan\").attr(\"dy\", dy).text(lines[i]).attr(\"alignment-baseline\", \"mathematical\");\n _setTextAttrs(text, textAttrs);\n }\n }\n function byFo(content, g, x, y, width, height, textAttrs, conf2) {\n const s = g.append(\"switch\");\n const f = s.append(\"foreignObject\").attr(\"x\", x).attr(\"y\", y).attr(\"width\", width).attr(\"height\", height);\n const text = f.append(\"xhtml:div\").style(\"display\", \"table\").style(\"height\", \"100%\").style(\"width\", \"100%\");\n text.append(\"div\").style(\"display\", \"table-cell\").style(\"text-align\", \"center\").style(\"vertical-align\", \"middle\").text(content);\n byTspan(content, s, x, y, width, height, textAttrs, conf2);\n _setTextAttrs(text, textAttrs);\n }\n function _setTextAttrs(toText, fromTextAttrsDict) {\n for (const key in fromTextAttrsDict) {\n if (fromTextAttrsDict.hasOwnProperty(key)) {\n toText.attr(key, fromTextAttrsDict[key]);\n }\n }\n }\n return function(conf2) {\n return conf2.textPlacement === \"fo\" ? byFo : conf2.textPlacement === \"old\" ? byText : byTspan;\n };\n}();\nconst svgDraw = {\n drawRect,\n drawBoundary: drawBoundary$1,\n drawC4Shape,\n drawRels: drawRels$1,\n drawImage,\n insertArrowHead,\n insertArrowEnd,\n insertArrowFilledHead,\n insertDynamicNumber,\n insertArrowCrossHead,\n insertDatabaseIcon,\n insertComputerIcon,\n insertClockIcon\n};\nlet globalBoundaryMaxX = 0, globalBoundaryMaxY = 0;\nlet c4ShapeInRow = 4;\nlet c4BoundaryInRow = 2;\nparser.yy = db;\nlet conf = {};\nclass Bounds {\n constructor(diagObj) {\n this.name = \"\";\n this.data = {};\n this.data.startx = void 0;\n this.data.stopx = void 0;\n this.data.starty = void 0;\n this.data.stopy = void 0;\n this.data.widthLimit = void 0;\n this.nextData = {};\n this.nextData.startx = void 0;\n this.nextData.stopx = void 0;\n this.nextData.starty = void 0;\n this.nextData.stopy = void 0;\n this.nextData.cnt = 0;\n setConf(diagObj.db.getConfig());\n }\n setData(startx, stopx, starty, stopy) {\n this.nextData.startx = this.data.startx = startx;\n this.nextData.stopx = this.data.stopx = stopx;\n this.nextData.starty = this.data.starty = starty;\n this.nextData.stopy = this.data.stopy = stopy;\n }\n updateVal(obj, key, val, fun) {\n if (obj[key] === void 0) {\n obj[key] = val;\n } else {\n obj[key] = fun(val, obj[key]);\n }\n }\n insert(c4Shape) {\n this.nextData.cnt = this.nextData.cnt + 1;\n let _startx = this.nextData.startx === this.nextData.stopx ? this.nextData.stopx + c4Shape.margin : this.nextData.stopx + c4Shape.margin * 2;\n let _stopx = _startx + c4Shape.width;\n let _starty = this.nextData.starty + c4Shape.margin * 2;\n let _stopy = _starty + c4Shape.height;\n if (_startx >= this.data.widthLimit || _stopx >= this.data.widthLimit || this.nextData.cnt > c4ShapeInRow) {\n _startx = this.nextData.startx + c4Shape.margin + conf.nextLinePaddingX;\n _starty = this.nextData.stopy + c4Shape.margin * 2;\n this.nextData.stopx = _stopx = _startx + c4Shape.width;\n this.nextData.starty = this.nextData.stopy;\n this.nextData.stopy = _stopy = _starty + c4Shape.height;\n this.nextData.cnt = 1;\n }\n c4Shape.x = _startx;\n c4Shape.y = _starty;\n this.updateVal(this.data, \"startx\", _startx, Math.min);\n this.updateVal(this.data, \"starty\", _starty, Math.min);\n this.updateVal(this.data, \"stopx\", _stopx, Math.max);\n this.updateVal(this.data, \"stopy\", _stopy, Math.max);\n this.updateVal(this.nextData, \"startx\", _startx, Math.min);\n this.updateVal(this.nextData, \"starty\", _starty, Math.min);\n this.updateVal(this.nextData, \"stopx\", _stopx, Math.max);\n this.updateVal(this.nextData, \"stopy\", _stopy, Math.max);\n }\n init(diagObj) {\n this.name = \"\";\n this.data = {\n startx: void 0,\n stopx: void 0,\n starty: void 0,\n stopy: void 0,\n widthLimit: void 0\n };\n this.nextData = {\n startx: void 0,\n stopx: void 0,\n starty: void 0,\n stopy: void 0,\n cnt: 0\n };\n setConf(diagObj.db.getConfig());\n }\n bumpLastMargin(margin) {\n this.data.stopx += margin;\n this.data.stopy += margin;\n }\n}\nconst setConf = function(cnf) {\n assignWithDepth(conf, cnf);\n if (cnf.fontFamily) {\n conf.personFontFamily = conf.systemFontFamily = conf.messageFontFamily = cnf.fontFamily;\n }\n if (cnf.fontSize) {\n conf.personFontSize = conf.systemFontSize = conf.messageFontSize = cnf.fontSize;\n }\n if (cnf.fontWeight) {\n conf.personFontWeight = conf.systemFontWeight = conf.messageFontWeight = cnf.fontWeight;\n }\n};\nconst c4ShapeFont = (cnf, typeC4Shape) => {\n return {\n fontFamily: cnf[typeC4Shape + \"FontFamily\"],\n fontSize: cnf[typeC4Shape + \"FontSize\"],\n fontWeight: cnf[typeC4Shape + \"FontWeight\"]\n };\n};\nconst boundaryFont = (cnf) => {\n return {\n fontFamily: cnf.boundaryFontFamily,\n fontSize: cnf.boundaryFontSize,\n fontWeight: cnf.boundaryFontWeight\n };\n};\nconst messageFont = (cnf) => {\n return {\n fontFamily: cnf.messageFontFamily,\n fontSize: cnf.messageFontSize,\n fontWeight: cnf.messageFontWeight\n };\n};\nfunction calcC4ShapeTextWH(textType, c4Shape, c4ShapeTextWrap, textConf, textLimitWidth) {\n if (!c4Shape[textType].width) {\n if (c4ShapeTextWrap) {\n c4Shape[textType].text = wrapLabel(c4Shape[textType].text, textLimitWidth, textConf);\n c4Shape[textType].textLines = c4Shape[textType].text.split(common.lineBreakRegex).length;\n c4Shape[textType].width = textLimitWidth;\n c4Shape[textType].height = calculateTextHeight(c4Shape[textType].text, textConf);\n } else {\n let lines = c4Shape[textType].text.split(common.lineBreakRegex);\n c4Shape[textType].textLines = lines.length;\n let lineHeight = 0;\n c4Shape[textType].height = 0;\n c4Shape[textType].width = 0;\n for (const line of lines) {\n c4Shape[textType].width = Math.max(\n calculateTextWidth(line, textConf),\n c4Shape[textType].width\n );\n lineHeight = calculateTextHeight(line, textConf);\n c4Shape[textType].height = c4Shape[textType].height + lineHeight;\n }\n }\n }\n}\nconst drawBoundary = function(diagram2, boundary, bounds) {\n boundary.x = bounds.data.startx;\n boundary.y = bounds.data.starty;\n boundary.width = bounds.data.stopx - bounds.data.startx;\n boundary.height = bounds.data.stopy - bounds.data.starty;\n boundary.label.y = conf.c4ShapeMargin - 35;\n let boundaryTextWrap = boundary.wrap && conf.wrap;\n let boundaryLabelConf = boundaryFont(conf);\n boundaryLabelConf.fontSize = boundaryLabelConf.fontSize + 2;\n boundaryLabelConf.fontWeight = \"bold\";\n let textLimitWidth = calculateTextWidth(boundary.label.text, boundaryLabelConf);\n calcC4ShapeTextWH(\"label\", boundary, boundaryTextWrap, boundaryLabelConf, textLimitWidth);\n svgDraw.drawBoundary(diagram2, boundary, conf);\n};\nconst drawC4ShapeArray = function(currentBounds, diagram2, c4ShapeArray2, c4ShapeKeys) {\n let Y = 0;\n for (const c4ShapeKey of c4ShapeKeys) {\n Y = 0;\n const c4Shape = c4ShapeArray2[c4ShapeKey];\n let c4ShapeTypeConf = c4ShapeFont(conf, c4Shape.typeC4Shape.text);\n c4ShapeTypeConf.fontSize = c4ShapeTypeConf.fontSize - 2;\n c4Shape.typeC4Shape.width = calculateTextWidth(\n \"«\" + c4Shape.typeC4Shape.text + \"»\",\n c4ShapeTypeConf\n );\n c4Shape.typeC4Shape.height = c4ShapeTypeConf.fontSize + 2;\n c4Shape.typeC4Shape.Y = conf.c4ShapePadding;\n Y = c4Shape.typeC4Shape.Y + c4Shape.typeC4Shape.height - 4;\n c4Shape.image = { width: 0, height: 0, Y: 0 };\n switch (c4Shape.typeC4Shape.text) {\n case \"person\":\n case \"external_person\":\n c4Shape.image.width = 48;\n c4Shape.image.height = 48;\n c4Shape.image.Y = Y;\n Y = c4Shape.image.Y + c4Shape.image.height;\n break;\n }\n if (c4Shape.sprite) {\n c4Shape.image.width = 48;\n c4Shape.image.height = 48;\n c4Shape.image.Y = Y;\n Y = c4Shape.image.Y + c4Shape.image.height;\n }\n let c4ShapeTextWrap = c4Shape.wrap && conf.wrap;\n let textLimitWidth = conf.width - conf.c4ShapePadding * 2;\n let c4ShapeLabelConf = c4ShapeFont(conf, c4Shape.typeC4Shape.text);\n c4ShapeLabelConf.fontSize = c4ShapeLabelConf.fontSize + 2;\n c4ShapeLabelConf.fontWeight = \"bold\";\n calcC4ShapeTextWH(\"label\", c4Shape, c4ShapeTextWrap, c4ShapeLabelConf, textLimitWidth);\n c4Shape[\"label\"].Y = Y + 8;\n Y = c4Shape[\"label\"].Y + c4Shape[\"label\"].height;\n if (c4Shape.type && c4Shape.type.text !== \"\") {\n c4Shape.type.text = \"[\" + c4Shape.type.text + \"]\";\n let c4ShapeTypeConf2 = c4ShapeFont(conf, c4Shape.typeC4Shape.text);\n calcC4ShapeTextWH(\"type\", c4Shape, c4ShapeTextWrap, c4ShapeTypeConf2, textLimitWidth);\n c4Shape[\"type\"].Y = Y + 5;\n Y = c4Shape[\"type\"].Y + c4Shape[\"type\"].height;\n } else if (c4Shape.techn && c4Shape.techn.text !== \"\") {\n c4Shape.techn.text = \"[\" + c4Shape.techn.text + \"]\";\n let c4ShapeTechnConf = c4ShapeFont(conf, c4Shape.techn.text);\n calcC4ShapeTextWH(\"techn\", c4Shape, c4ShapeTextWrap, c4ShapeTechnConf, textLimitWidth);\n c4Shape[\"techn\"].Y = Y + 5;\n Y = c4Shape[\"techn\"].Y + c4Shape[\"techn\"].height;\n }\n let rectHeight = Y;\n let rectWidth = c4Shape.label.width;\n if (c4Shape.descr && c4Shape.descr.text !== \"\") {\n let c4ShapeDescrConf = c4ShapeFont(conf, c4Shape.typeC4Shape.text);\n calcC4ShapeTextWH(\"descr\", c4Shape, c4ShapeTextWrap, c4ShapeDescrConf, textLimitWidth);\n c4Shape[\"descr\"].Y = Y + 20;\n Y = c4Shape[\"descr\"].Y + c4Shape[\"descr\"].height;\n rectWidth = Math.max(c4Shape.label.width, c4Shape.descr.width);\n rectHeight = Y - c4Shape[\"descr\"].textLines * 5;\n }\n rectWidth = rectWidth + conf.c4ShapePadding;\n c4Shape.width = Math.max(c4Shape.width || conf.width, rectWidth, conf.width);\n c4Shape.height = Math.max(c4Shape.height || conf.height, rectHeight, conf.height);\n c4Shape.margin = c4Shape.margin || conf.c4ShapeMargin;\n currentBounds.insert(c4Shape);\n svgDraw.drawC4Shape(diagram2, c4Shape, conf);\n }\n currentBounds.bumpLastMargin(conf.c4ShapeMargin);\n};\nclass Point {\n constructor(x, y) {\n this.x = x;\n this.y = y;\n }\n}\nlet getIntersectPoint = function(fromNode, endPoint) {\n let x1 = fromNode.x;\n let y1 = fromNode.y;\n let x2 = endPoint.x;\n let y2 = endPoint.y;\n let fromCenterX = x1 + fromNode.width / 2;\n let fromCenterY = y1 + fromNode.height / 2;\n let dx = Math.abs(x1 - x2);\n let dy = Math.abs(y1 - y2);\n let tanDYX = dy / dx;\n let fromDYX = fromNode.height / fromNode.width;\n let returnPoint = null;\n if (y1 == y2 && x1 < x2) {\n returnPoint = new Point(x1 + fromNode.width, fromCenterY);\n } else if (y1 == y2 && x1 > x2) {\n returnPoint = new Point(x1, fromCenterY);\n } else if (x1 == x2 && y1 < y2) {\n returnPoint = new Point(fromCenterX, y1 + fromNode.height);\n } else if (x1 == x2 && y1 > y2) {\n returnPoint = new Point(fromCenterX, y1);\n }\n if (x1 > x2 && y1 < y2) {\n if (fromDYX >= tanDYX) {\n returnPoint = new Point(x1, fromCenterY + tanDYX * fromNode.width / 2);\n } else {\n returnPoint = new Point(\n fromCenterX - dx / dy * fromNode.height / 2,\n y1 + fromNode.height\n );\n }\n } else if (x1 < x2 && y1 < y2) {\n if (fromDYX >= tanDYX) {\n returnPoint = new Point(x1 + fromNode.width, fromCenterY + tanDYX * fromNode.width / 2);\n } else {\n returnPoint = new Point(\n fromCenterX + dx / dy * fromNode.height / 2,\n y1 + fromNode.height\n );\n }\n } else if (x1 < x2 && y1 > y2) {\n if (fromDYX >= tanDYX) {\n returnPoint = new Point(x1 + fromNode.width, fromCenterY - tanDYX * fromNode.width / 2);\n } else {\n returnPoint = new Point(fromCenterX + fromNode.height / 2 * dx / dy, y1);\n }\n } else if (x1 > x2 && y1 > y2) {\n if (fromDYX >= tanDYX) {\n returnPoint = new Point(x1, fromCenterY - fromNode.width / 2 * tanDYX);\n } else {\n returnPoint = new Point(fromCenterX - fromNode.height / 2 * dx / dy, y1);\n }\n }\n return returnPoint;\n};\nlet getIntersectPoints = function(fromNode, endNode) {\n let endIntersectPoint = { x: 0, y: 0 };\n endIntersectPoint.x = endNode.x + endNode.width / 2;\n endIntersectPoint.y = endNode.y + endNode.height / 2;\n let startPoint = getIntersectPoint(fromNode, endIntersectPoint);\n endIntersectPoint.x = fromNode.x + fromNode.width / 2;\n endIntersectPoint.y = fromNode.y + fromNode.height / 2;\n let endPoint = getIntersectPoint(endNode, endIntersectPoint);\n return { startPoint, endPoint };\n};\nconst drawRels = function(diagram2, rels2, getC4ShapeObj, diagObj) {\n let i = 0;\n for (let rel of rels2) {\n i = i + 1;\n let relTextWrap = rel.wrap && conf.wrap;\n let relConf = messageFont(conf);\n let diagramType = diagObj.db.getC4Type();\n if (diagramType === \"C4Dynamic\") {\n rel.label.text = i + \": \" + rel.label.text;\n }\n let textLimitWidth = calculateTextWidth(rel.label.text, relConf);\n calcC4ShapeTextWH(\"label\", rel, relTextWrap, relConf, textLimitWidth);\n if (rel.techn && rel.techn.text !== \"\") {\n textLimitWidth = calculateTextWidth(rel.techn.text, relConf);\n calcC4ShapeTextWH(\"techn\", rel, relTextWrap, relConf, textLimitWidth);\n }\n if (rel.descr && rel.descr.text !== \"\") {\n textLimitWidth = calculateTextWidth(rel.descr.text, relConf);\n calcC4ShapeTextWH(\"descr\", rel, relTextWrap, relConf, textLimitWidth);\n }\n let fromNode = getC4ShapeObj(rel.from);\n let endNode = getC4ShapeObj(rel.to);\n let points = getIntersectPoints(fromNode, endNode);\n rel.startPoint = points.startPoint;\n rel.endPoint = points.endPoint;\n }\n svgDraw.drawRels(diagram2, rels2, conf);\n};\nfunction drawInsideBoundary(diagram2, parentBoundaryAlias, parentBounds, currentBoundaries, diagObj) {\n let currentBounds = new Bounds(diagObj);\n currentBounds.data.widthLimit = parentBounds.data.widthLimit / Math.min(c4BoundaryInRow, currentBoundaries.length);\n for (let [i, currentBoundary] of currentBoundaries.entries()) {\n let Y = 0;\n currentBoundary.image = { width: 0, height: 0, Y: 0 };\n if (currentBoundary.sprite) {\n currentBoundary.image.width = 48;\n currentBoundary.image.height = 48;\n currentBoundary.image.Y = Y;\n Y = currentBoundary.image.Y + currentBoundary.image.height;\n }\n let currentBoundaryTextWrap = currentBoundary.wrap && conf.wrap;\n let currentBoundaryLabelConf = boundaryFont(conf);\n currentBoundaryLabelConf.fontSize = currentBoundaryLabelConf.fontSize + 2;\n currentBoundaryLabelConf.fontWeight = \"bold\";\n calcC4ShapeTextWH(\n \"label\",\n currentBoundary,\n currentBoundaryTextWrap,\n currentBoundaryLabelConf,\n currentBounds.data.widthLimit\n );\n currentBoundary[\"label\"].Y = Y + 8;\n Y = currentBoundary[\"label\"].Y + currentBoundary[\"label\"].height;\n if (currentBoundary.type && currentBoundary.type.text !== \"\") {\n currentBoundary.type.text = \"[\" + currentBoundary.type.text + \"]\";\n let currentBoundaryTypeConf = boundaryFont(conf);\n calcC4ShapeTextWH(\n \"type\",\n currentBoundary,\n currentBoundaryTextWrap,\n currentBoundaryTypeConf,\n currentBounds.data.widthLimit\n );\n currentBoundary[\"type\"].Y = Y + 5;\n Y = currentBoundary[\"type\"].Y + currentBoundary[\"type\"].height;\n }\n if (currentBoundary.descr && currentBoundary.descr.text !== \"\") {\n let currentBoundaryDescrConf = boundaryFont(conf);\n currentBoundaryDescrConf.fontSize = currentBoundaryDescrConf.fontSize - 2;\n calcC4ShapeTextWH(\n \"descr\",\n currentBoundary,\n currentBoundaryTextWrap,\n currentBoundaryDescrConf,\n currentBounds.data.widthLimit\n );\n currentBoundary[\"descr\"].Y = Y + 20;\n Y = currentBoundary[\"descr\"].Y + currentBoundary[\"descr\"].height;\n }\n if (i == 0 || i % c4BoundaryInRow === 0) {\n let _x = parentBounds.data.startx + conf.diagramMarginX;\n let _y = parentBounds.data.stopy + conf.diagramMarginY + Y;\n currentBounds.setData(_x, _x, _y, _y);\n } else {\n let _x = currentBounds.data.stopx !== currentBounds.data.startx ? currentBounds.data.stopx + conf.diagramMarginX : currentBounds.data.startx;\n let _y = currentBounds.data.starty;\n currentBounds.setData(_x, _x, _y, _y);\n }\n currentBounds.name = currentBoundary.alias;\n let currentPersonOrSystemArray = diagObj.db.getC4ShapeArray(currentBoundary.alias);\n let currentPersonOrSystemKeys = diagObj.db.getC4ShapeKeys(currentBoundary.alias);\n if (currentPersonOrSystemKeys.length > 0) {\n drawC4ShapeArray(\n currentBounds,\n diagram2,\n currentPersonOrSystemArray,\n currentPersonOrSystemKeys\n );\n }\n parentBoundaryAlias = currentBoundary.alias;\n let nextCurrentBoundaries = diagObj.db.getBoundarys(parentBoundaryAlias);\n if (nextCurrentBoundaries.length > 0) {\n drawInsideBoundary(\n diagram2,\n parentBoundaryAlias,\n currentBounds,\n nextCurrentBoundaries,\n diagObj\n );\n }\n if (currentBoundary.alias !== \"global\") {\n drawBoundary(diagram2, currentBoundary, currentBounds);\n }\n parentBounds.data.stopy = Math.max(\n currentBounds.data.stopy + conf.c4ShapeMargin,\n parentBounds.data.stopy\n );\n parentBounds.data.stopx = Math.max(\n currentBounds.data.stopx + conf.c4ShapeMargin,\n parentBounds.data.stopx\n );\n globalBoundaryMaxX = Math.max(globalBoundaryMaxX, parentBounds.data.stopx);\n globalBoundaryMaxY = Math.max(globalBoundaryMaxY, parentBounds.data.stopy);\n }\n}\nconst draw = function(_text, id, _version, diagObj) {\n conf = getConfig().c4;\n const securityLevel = getConfig().securityLevel;\n let sandboxElement;\n if (securityLevel === \"sandbox\") {\n sandboxElement = select(\"#i\" + id);\n }\n const root = securityLevel === \"sandbox\" ? select(sandboxElement.nodes()[0].contentDocument.body) : select(\"body\");\n let db2 = diagObj.db;\n diagObj.db.setWrap(conf.wrap);\n c4ShapeInRow = db2.getC4ShapeInRow();\n c4BoundaryInRow = db2.getC4BoundaryInRow();\n log.debug(`C:${JSON.stringify(conf, null, 2)}`);\n const diagram2 = securityLevel === \"sandbox\" ? root.select(`[id=\"${id}\"]`) : select(`[id=\"${id}\"]`);\n svgDraw.insertComputerIcon(diagram2);\n svgDraw.insertDatabaseIcon(diagram2);\n svgDraw.insertClockIcon(diagram2);\n let screenBounds = new Bounds(diagObj);\n screenBounds.setData(\n conf.diagramMarginX,\n conf.diagramMarginX,\n conf.diagramMarginY,\n conf.diagramMarginY\n );\n screenBounds.data.widthLimit = screen.availWidth;\n globalBoundaryMaxX = conf.diagramMarginX;\n globalBoundaryMaxY = conf.diagramMarginY;\n const title2 = diagObj.db.getTitle();\n let currentBoundaries = diagObj.db.getBoundarys(\"\");\n drawInsideBoundary(diagram2, \"\", screenBounds, currentBoundaries, diagObj);\n svgDraw.insertArrowHead(diagram2);\n svgDraw.insertArrowEnd(diagram2);\n svgDraw.insertArrowCrossHead(diagram2);\n svgDraw.insertArrowFilledHead(diagram2);\n drawRels(diagram2, diagObj.db.getRels(), diagObj.db.getC4Shape, diagObj);\n screenBounds.data.stopx = globalBoundaryMaxX;\n screenBounds.data.stopy = globalBoundaryMaxY;\n const box = screenBounds.data;\n let boxHeight = box.stopy - box.starty;\n let height = boxHeight + 2 * conf.diagramMarginY;\n let boxWidth = box.stopx - box.startx;\n const width = boxWidth + 2 * conf.diagramMarginX;\n if (title2) {\n diagram2.append(\"text\").text(title2).attr(\"x\", (box.stopx - box.startx) / 2 - 4 * conf.diagramMarginX).attr(\"y\", box.starty + conf.diagramMarginY);\n }\n configureSvgSize(diagram2, height, width, conf.useMaxWidth);\n const extraVertForTitle = title2 ? 60 : 0;\n diagram2.attr(\n \"viewBox\",\n box.startx - conf.diagramMarginX + \" -\" + (conf.diagramMarginY + extraVertForTitle) + \" \" + width + \" \" + (height + extraVertForTitle)\n );\n log.debug(`models:`, box);\n};\nconst renderer = {\n drawPersonOrSystemArray: drawC4ShapeArray,\n drawBoundary,\n setConf,\n draw\n};\nconst getStyles = (options) => `.person {\n stroke: ${options.personBorder};\n fill: ${options.personBkg};\n }\n`;\nconst styles = getStyles;\nconst diagram = {\n parser: parser$1,\n db,\n renderer,\n styles,\n init: ({ c4, wrap }) => {\n renderer.setConf(c4);\n db.setWrap(wrap);\n }\n};\nexport {\n diagram\n};\n","import { p as parser, d as db, s as styles } from \"./styles-991ebdfc.js\";\nimport { line, curveBasis, select } from \"d3\";\nimport { layout } from \"dagre-d3-es/src/dagre/index.js\";\nimport * as graphlib from \"dagre-d3-es/src/graphlib/index.js\";\nimport { u as utils, l as log, x as parseGenericTypes, c as getConfig, i as configureSvgSize } from \"./mermaid-f47111a7.js\";\nimport \"ts-dedent\";\nimport \"dayjs\";\nimport \"@braintree/sanitize-url\";\nimport \"dompurify\";\nimport \"khroma\";\nimport \"lodash-es/memoize.js\";\nimport \"lodash-es/merge.js\";\nimport \"stylis\";\nimport \"lodash-es/isEmpty.js\";\nlet edgeCount = 0;\nconst drawEdge = function(elem, path, relation, conf, diagObj) {\n const getRelationType = function(type) {\n switch (type) {\n case diagObj.db.relationType.AGGREGATION:\n return \"aggregation\";\n case diagObj.db.relationType.EXTENSION:\n return \"extension\";\n case diagObj.db.relationType.COMPOSITION:\n return \"composition\";\n case diagObj.db.relationType.DEPENDENCY:\n return \"dependency\";\n case diagObj.db.relationType.LOLLIPOP:\n return \"lollipop\";\n }\n };\n path.points = path.points.filter((p) => !Number.isNaN(p.y));\n const lineData = path.points;\n const lineFunction = line().x(function(d) {\n return d.x;\n }).y(function(d) {\n return d.y;\n }).curve(curveBasis);\n const svgPath = elem.append(\"path\").attr(\"d\", lineFunction(lineData)).attr(\"id\", \"edge\" + edgeCount).attr(\"class\", \"relation\");\n let url = \"\";\n if (conf.arrowMarkerAbsolute) {\n url = window.location.protocol + \"//\" + window.location.host + window.location.pathname + window.location.search;\n url = url.replace(/\\(/g, \"\\\\(\");\n url = url.replace(/\\)/g, \"\\\\)\");\n }\n if (relation.relation.lineType == 1) {\n svgPath.attr(\"class\", \"relation dashed-line\");\n }\n if (relation.relation.lineType == 10) {\n svgPath.attr(\"class\", \"relation dotted-line\");\n }\n if (relation.relation.type1 !== \"none\") {\n svgPath.attr(\n \"marker-start\",\n \"url(\" + url + \"#\" + getRelationType(relation.relation.type1) + \"Start)\"\n );\n }\n if (relation.relation.type2 !== \"none\") {\n svgPath.attr(\n \"marker-end\",\n \"url(\" + url + \"#\" + getRelationType(relation.relation.type2) + \"End)\"\n );\n }\n let x, y;\n const l = path.points.length;\n let labelPosition = utils.calcLabelPosition(path.points);\n x = labelPosition.x;\n y = labelPosition.y;\n let p1_card_x, p1_card_y;\n let p2_card_x, p2_card_y;\n if (l % 2 !== 0 && l > 1) {\n let cardinality_1_point = utils.calcCardinalityPosition(\n relation.relation.type1 !== \"none\",\n path.points,\n path.points[0]\n );\n let cardinality_2_point = utils.calcCardinalityPosition(\n relation.relation.type2 !== \"none\",\n path.points,\n path.points[l - 1]\n );\n log.debug(\"cardinality_1_point \" + JSON.stringify(cardinality_1_point));\n log.debug(\"cardinality_2_point \" + JSON.stringify(cardinality_2_point));\n p1_card_x = cardinality_1_point.x;\n p1_card_y = cardinality_1_point.y;\n p2_card_x = cardinality_2_point.x;\n p2_card_y = cardinality_2_point.y;\n }\n if (relation.title !== void 0) {\n const g = elem.append(\"g\").attr(\"class\", \"classLabel\");\n const label = g.append(\"text\").attr(\"class\", \"label\").attr(\"x\", x).attr(\"y\", y).attr(\"fill\", \"red\").attr(\"text-anchor\", \"middle\").text(relation.title);\n window.label = label;\n const bounds = label.node().getBBox();\n g.insert(\"rect\", \":first-child\").attr(\"class\", \"box\").attr(\"x\", bounds.x - conf.padding / 2).attr(\"y\", bounds.y - conf.padding / 2).attr(\"width\", bounds.width + conf.padding).attr(\"height\", bounds.height + conf.padding);\n }\n log.info(\"Rendering relation \" + JSON.stringify(relation));\n if (relation.relationTitle1 !== void 0 && relation.relationTitle1 !== \"none\") {\n const g = elem.append(\"g\").attr(\"class\", \"cardinality\");\n g.append(\"text\").attr(\"class\", \"type1\").attr(\"x\", p1_card_x).attr(\"y\", p1_card_y).attr(\"fill\", \"black\").attr(\"font-size\", \"6\").text(relation.relationTitle1);\n }\n if (relation.relationTitle2 !== void 0 && relation.relationTitle2 !== \"none\") {\n const g = elem.append(\"g\").attr(\"class\", \"cardinality\");\n g.append(\"text\").attr(\"class\", \"type2\").attr(\"x\", p2_card_x).attr(\"y\", p2_card_y).attr(\"fill\", \"black\").attr(\"font-size\", \"6\").text(relation.relationTitle2);\n }\n edgeCount++;\n};\nconst drawClass = function(elem, classDef, conf, diagObj) {\n log.debug(\"Rendering class \", classDef, conf);\n const id = classDef.id;\n const classInfo = {\n id,\n label: classDef.id,\n width: 0,\n height: 0\n };\n const g = elem.append(\"g\").attr(\"id\", diagObj.db.lookUpDomId(id)).attr(\"class\", \"classGroup\");\n let title;\n if (classDef.link) {\n title = g.append(\"svg:a\").attr(\"xlink:href\", classDef.link).attr(\"target\", classDef.linkTarget).append(\"text\").attr(\"y\", conf.textHeight + conf.padding).attr(\"x\", 0);\n } else {\n title = g.append(\"text\").attr(\"y\", conf.textHeight + conf.padding).attr(\"x\", 0);\n }\n let isFirst = true;\n classDef.annotations.forEach(function(member) {\n const titleText2 = title.append(\"tspan\").text(\"«\" + member + \"»\");\n if (!isFirst) {\n titleText2.attr(\"dy\", conf.textHeight);\n }\n isFirst = false;\n });\n let classTitleString = getClassTitleString(classDef);\n const classTitle = title.append(\"tspan\").text(classTitleString).attr(\"class\", \"title\");\n if (!isFirst) {\n classTitle.attr(\"dy\", conf.textHeight);\n }\n const titleHeight = title.node().getBBox().height;\n let membersLine;\n let membersBox;\n let methodsLine;\n if (classDef.members.length > 0) {\n membersLine = g.append(\"line\").attr(\"x1\", 0).attr(\"y1\", conf.padding + titleHeight + conf.dividerMargin / 2).attr(\"y2\", conf.padding + titleHeight + conf.dividerMargin / 2);\n const members = g.append(\"text\").attr(\"x\", conf.padding).attr(\"y\", titleHeight + conf.dividerMargin + conf.textHeight).attr(\"fill\", \"white\").attr(\"class\", \"classText\");\n isFirst = true;\n classDef.members.forEach(function(member) {\n addTspan(members, member, isFirst, conf);\n isFirst = false;\n });\n membersBox = members.node().getBBox();\n }\n if (classDef.methods.length > 0) {\n methodsLine = g.append(\"line\").attr(\"x1\", 0).attr(\"y1\", conf.padding + titleHeight + conf.dividerMargin + membersBox.height).attr(\"y2\", conf.padding + titleHeight + conf.dividerMargin + membersBox.height);\n const methods = g.append(\"text\").attr(\"x\", conf.padding).attr(\"y\", titleHeight + 2 * conf.dividerMargin + membersBox.height + conf.textHeight).attr(\"fill\", \"white\").attr(\"class\", \"classText\");\n isFirst = true;\n classDef.methods.forEach(function(method) {\n addTspan(methods, method, isFirst, conf);\n isFirst = false;\n });\n }\n const classBox = g.node().getBBox();\n var cssClassStr = \" \";\n if (classDef.cssClasses.length > 0) {\n cssClassStr = cssClassStr + classDef.cssClasses.join(\" \");\n }\n const rect = g.insert(\"rect\", \":first-child\").attr(\"x\", 0).attr(\"y\", 0).attr(\"width\", classBox.width + 2 * conf.padding).attr(\"height\", classBox.height + conf.padding + 0.5 * conf.dividerMargin).attr(\"class\", cssClassStr);\n const rectWidth = rect.node().getBBox().width;\n title.node().childNodes.forEach(function(x) {\n x.setAttribute(\"x\", (rectWidth - x.getBBox().width) / 2);\n });\n if (classDef.tooltip) {\n title.insert(\"title\").text(classDef.tooltip);\n }\n if (membersLine) {\n membersLine.attr(\"x2\", rectWidth);\n }\n if (methodsLine) {\n methodsLine.attr(\"x2\", rectWidth);\n }\n classInfo.width = rectWidth;\n classInfo.height = classBox.height + conf.padding + 0.5 * conf.dividerMargin;\n return classInfo;\n};\nconst getClassTitleString = function(classDef) {\n let classTitleString = classDef.id;\n if (classDef.type) {\n classTitleString += \"<\" + parseGenericTypes(classDef.type) + \">\";\n }\n return classTitleString;\n};\nconst drawNote = function(elem, note, conf, diagObj) {\n log.debug(\"Rendering note \", note, conf);\n const id = note.id;\n const noteInfo = {\n id,\n text: note.text,\n width: 0,\n height: 0\n };\n const g = elem.append(\"g\").attr(\"id\", id).attr(\"class\", \"classGroup\");\n let text = g.append(\"text\").attr(\"y\", conf.textHeight + conf.padding).attr(\"x\", 0);\n const lines = JSON.parse(`\"${note.text}\"`).split(\"\\n\");\n lines.forEach(function(line2) {\n log.debug(`Adding line: ${line2}`);\n text.append(\"tspan\").text(line2).attr(\"class\", \"title\").attr(\"dy\", conf.textHeight);\n });\n const noteBox = g.node().getBBox();\n const rect = g.insert(\"rect\", \":first-child\").attr(\"x\", 0).attr(\"y\", 0).attr(\"width\", noteBox.width + 2 * conf.padding).attr(\n \"height\",\n noteBox.height + lines.length * conf.textHeight + conf.padding + 0.5 * conf.dividerMargin\n );\n const rectWidth = rect.node().getBBox().width;\n text.node().childNodes.forEach(function(x) {\n x.setAttribute(\"x\", (rectWidth - x.getBBox().width) / 2);\n });\n noteInfo.width = rectWidth;\n noteInfo.height = noteBox.height + lines.length * conf.textHeight + conf.padding + 0.5 * conf.dividerMargin;\n return noteInfo;\n};\nconst addTspan = function(textEl, member, isFirst, conf) {\n const { displayText, cssStyle } = member.getDisplayDetails();\n const tSpan = textEl.append(\"tspan\").attr(\"x\", conf.padding).text(displayText);\n if (cssStyle !== \"\") {\n tSpan.attr(\"style\", member.cssStyle);\n }\n if (!isFirst) {\n tSpan.attr(\"dy\", conf.textHeight);\n }\n};\nconst svgDraw = {\n getClassTitleString,\n drawClass,\n drawEdge,\n drawNote\n};\nlet idCache = {};\nconst padding = 20;\nconst getGraphId = function(label) {\n const foundEntry = Object.entries(idCache).find((entry) => entry[1].label === label);\n if (foundEntry) {\n return foundEntry[0];\n }\n};\nconst insertMarkers = function(elem) {\n elem.append(\"defs\").append(\"marker\").attr(\"id\", \"extensionStart\").attr(\"class\", \"extension\").attr(\"refX\", 0).attr(\"refY\", 7).attr(\"markerWidth\", 190).attr(\"markerHeight\", 240).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 1,7 L18,13 V 1 Z\");\n elem.append(\"defs\").append(\"marker\").attr(\"id\", \"extensionEnd\").attr(\"refX\", 19).attr(\"refY\", 7).attr(\"markerWidth\", 20).attr(\"markerHeight\", 28).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 1,1 V 13 L18,7 Z\");\n elem.append(\"defs\").append(\"marker\").attr(\"id\", \"compositionStart\").attr(\"class\", \"extension\").attr(\"refX\", 0).attr(\"refY\", 7).attr(\"markerWidth\", 190).attr(\"markerHeight\", 240).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 18,7 L9,13 L1,7 L9,1 Z\");\n elem.append(\"defs\").append(\"marker\").attr(\"id\", \"compositionEnd\").attr(\"refX\", 19).attr(\"refY\", 7).attr(\"markerWidth\", 20).attr(\"markerHeight\", 28).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 18,7 L9,13 L1,7 L9,1 Z\");\n elem.append(\"defs\").append(\"marker\").attr(\"id\", \"aggregationStart\").attr(\"class\", \"extension\").attr(\"refX\", 0).attr(\"refY\", 7).attr(\"markerWidth\", 190).attr(\"markerHeight\", 240).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 18,7 L9,13 L1,7 L9,1 Z\");\n elem.append(\"defs\").append(\"marker\").attr(\"id\", \"aggregationEnd\").attr(\"refX\", 19).attr(\"refY\", 7).attr(\"markerWidth\", 20).attr(\"markerHeight\", 28).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 18,7 L9,13 L1,7 L9,1 Z\");\n elem.append(\"defs\").append(\"marker\").attr(\"id\", \"dependencyStart\").attr(\"class\", \"extension\").attr(\"refX\", 0).attr(\"refY\", 7).attr(\"markerWidth\", 190).attr(\"markerHeight\", 240).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 5,7 L9,13 L1,7 L9,1 Z\");\n elem.append(\"defs\").append(\"marker\").attr(\"id\", \"dependencyEnd\").attr(\"refX\", 19).attr(\"refY\", 7).attr(\"markerWidth\", 20).attr(\"markerHeight\", 28).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 18,7 L9,13 L14,7 L9,1 Z\");\n};\nconst draw = function(text, id, _version, diagObj) {\n const conf = getConfig().class;\n idCache = {};\n log.info(\"Rendering diagram \" + text);\n const securityLevel = getConfig().securityLevel;\n let sandboxElement;\n if (securityLevel === \"sandbox\") {\n sandboxElement = select(\"#i\" + id);\n }\n const root = securityLevel === \"sandbox\" ? select(sandboxElement.nodes()[0].contentDocument.body) : select(\"body\");\n const diagram2 = root.select(`[id='${id}']`);\n insertMarkers(diagram2);\n const g = new graphlib.Graph({\n multigraph: true\n });\n g.setGraph({\n isMultiGraph: true\n });\n g.setDefaultEdgeLabel(function() {\n return {};\n });\n const classes = diagObj.db.getClasses();\n const keys = Object.keys(classes);\n for (const key of keys) {\n const classDef = classes[key];\n const node = svgDraw.drawClass(diagram2, classDef, conf, diagObj);\n idCache[node.id] = node;\n g.setNode(node.id, node);\n log.info(\"Org height: \" + node.height);\n }\n const relations = diagObj.db.getRelations();\n relations.forEach(function(relation) {\n log.info(\n // cspell:ignore tjoho\n \"tjoho\" + getGraphId(relation.id1) + getGraphId(relation.id2) + JSON.stringify(relation)\n );\n g.setEdge(\n getGraphId(relation.id1),\n getGraphId(relation.id2),\n {\n relation\n },\n relation.title || \"DEFAULT\"\n );\n });\n const notes = diagObj.db.getNotes();\n notes.forEach(function(note) {\n log.debug(`Adding note: ${JSON.stringify(note)}`);\n const node = svgDraw.drawNote(diagram2, note, conf, diagObj);\n idCache[node.id] = node;\n g.setNode(node.id, node);\n if (note.class && note.class in classes) {\n g.setEdge(\n note.id,\n getGraphId(note.class),\n {\n relation: {\n id1: note.id,\n id2: note.class,\n relation: {\n type1: \"none\",\n type2: \"none\",\n lineType: 10\n }\n }\n },\n \"DEFAULT\"\n );\n }\n });\n layout(g);\n g.nodes().forEach(function(v) {\n if (v !== void 0 && g.node(v) !== void 0) {\n log.debug(\"Node \" + v + \": \" + JSON.stringify(g.node(v)));\n root.select(\"#\" + (diagObj.db.lookUpDomId(v) || v)).attr(\n \"transform\",\n \"translate(\" + (g.node(v).x - g.node(v).width / 2) + \",\" + (g.node(v).y - g.node(v).height / 2) + \" )\"\n );\n }\n });\n g.edges().forEach(function(e) {\n if (e !== void 0 && g.edge(e) !== void 0) {\n log.debug(\"Edge \" + e.v + \" -> \" + e.w + \": \" + JSON.stringify(g.edge(e)));\n svgDraw.drawEdge(diagram2, g.edge(e), g.edge(e).relation, conf, diagObj);\n }\n });\n const svgBounds = diagram2.node().getBBox();\n const width = svgBounds.width + padding * 2;\n const height = svgBounds.height + padding * 2;\n configureSvgSize(diagram2, height, width, conf.useMaxWidth);\n const vBox = `${svgBounds.x - padding} ${svgBounds.y - padding} ${width} ${height}`;\n log.debug(`viewBox ${vBox}`);\n diagram2.attr(\"viewBox\", vBox);\n};\nconst renderer = {\n draw\n};\nconst diagram = {\n parser,\n db,\n renderer,\n styles,\n init: (cnf) => {\n if (!cnf.class) {\n cnf.class = {};\n }\n cnf.class.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;\n db.clear();\n }\n};\nexport {\n diagram\n};\n","import { p as parser, d as db, s as styles } from \"./styles-991ebdfc.js\";\nimport { select, curveLinear } from \"d3\";\nimport * as graphlib from \"dagre-d3-es/src/graphlib/index.js\";\nimport { l as log, c as getConfig, u as utils, o as setupGraphViewbox, k as getStylesFromArray, n as interpolateToCurve, e as common } from \"./mermaid-f47111a7.js\";\nimport { r as render } from \"./index-fc10efb0.js\";\nimport \"ts-dedent\";\nimport \"dayjs\";\nimport \"@braintree/sanitize-url\";\nimport \"dompurify\";\nimport \"khroma\";\nimport \"lodash-es/memoize.js\";\nimport \"lodash-es/merge.js\";\nimport \"stylis\";\nimport \"lodash-es/isEmpty.js\";\nimport \"dagre-d3-es/src/dagre/index.js\";\nimport \"dagre-d3-es/src/graphlib/json.js\";\nimport \"./edges-d32062c0.js\";\nimport \"./createText-6b48ae7d.js\";\nimport \"mdast-util-from-markdown\";\nconst sanitizeText = (txt) => common.sanitizeText(txt, getConfig());\nlet conf = {\n dividerMargin: 10,\n padding: 5,\n textHeight: 10,\n curve: void 0\n};\nconst addNamespaces = function(namespaces, g, _id, diagObj) {\n const keys = Object.keys(namespaces);\n log.info(\"keys:\", keys);\n log.info(namespaces);\n keys.forEach(function(id) {\n var _a, _b;\n const vertex = namespaces[id];\n const shape = \"rect\";\n const node = {\n shape,\n id: vertex.id,\n domId: vertex.domId,\n labelText: sanitizeText(vertex.id),\n labelStyle: \"\",\n style: \"fill: none; stroke: black\",\n // TODO V10: Flowchart ? Keeping flowchart for backwards compatibility. Remove in next major release\n padding: ((_a = getConfig().flowchart) == null ? void 0 : _a.padding) ?? ((_b = getConfig().class) == null ? void 0 : _b.padding)\n };\n g.setNode(vertex.id, node);\n addClasses(vertex.classes, g, _id, diagObj, vertex.id);\n log.info(\"setNode\", node);\n });\n};\nconst addClasses = function(classes, g, _id, diagObj, parent) {\n const keys = Object.keys(classes);\n log.info(\"keys:\", keys);\n log.info(classes);\n keys.filter((id) => classes[id].parent == parent).forEach(function(id) {\n var _a, _b;\n const vertex = classes[id];\n const cssClassStr = vertex.cssClasses.join(\" \");\n const styles2 = getStylesFromArray(vertex.styles);\n const vertexText = vertex.label ?? vertex.id;\n const radius = 0;\n const shape = \"class_box\";\n const node = {\n labelStyle: styles2.labelStyle,\n shape,\n labelText: sanitizeText(vertexText),\n classData: vertex,\n rx: radius,\n ry: radius,\n class: cssClassStr,\n style: styles2.style,\n id: vertex.id,\n domId: vertex.domId,\n tooltip: diagObj.db.getTooltip(vertex.id, parent) || \"\",\n haveCallback: vertex.haveCallback,\n link: vertex.link,\n width: vertex.type === \"group\" ? 500 : void 0,\n type: vertex.type,\n // TODO V10: Flowchart ? Keeping flowchart for backwards compatibility. Remove in next major release\n padding: ((_a = getConfig().flowchart) == null ? void 0 : _a.padding) ?? ((_b = getConfig().class) == null ? void 0 : _b.padding)\n };\n g.setNode(vertex.id, node);\n if (parent) {\n g.setParent(vertex.id, parent);\n }\n log.info(\"setNode\", node);\n });\n};\nconst addNotes = function(notes, g, startEdgeId, classes) {\n log.info(notes);\n notes.forEach(function(note, i) {\n var _a, _b;\n const vertex = note;\n const cssNoteStr = \"\";\n const styles2 = { labelStyle: \"\", style: \"\" };\n const vertexText = vertex.text;\n const radius = 0;\n const shape = \"note\";\n const node = {\n labelStyle: styles2.labelStyle,\n shape,\n labelText: sanitizeText(vertexText),\n noteData: vertex,\n rx: radius,\n ry: radius,\n class: cssNoteStr,\n style: styles2.style,\n id: vertex.id,\n domId: vertex.id,\n tooltip: \"\",\n type: \"note\",\n // TODO V10: Flowchart ? Keeping flowchart for backwards compatibility. Remove in next major release\n padding: ((_a = getConfig().flowchart) == null ? void 0 : _a.padding) ?? ((_b = getConfig().class) == null ? void 0 : _b.padding)\n };\n g.setNode(vertex.id, node);\n log.info(\"setNode\", node);\n if (!vertex.class || !(vertex.class in classes)) {\n return;\n }\n const edgeId = startEdgeId + i;\n const edgeData = {\n id: `edgeNote${edgeId}`,\n //Set relationship style and line type\n classes: \"relation\",\n pattern: \"dotted\",\n // Set link type for rendering\n arrowhead: \"none\",\n //Set edge extra labels\n startLabelRight: \"\",\n endLabelLeft: \"\",\n //Set relation arrow types\n arrowTypeStart: \"none\",\n arrowTypeEnd: \"none\",\n style: \"fill:none\",\n labelStyle: \"\",\n curve: interpolateToCurve(conf.curve, curveLinear)\n };\n g.setEdge(vertex.id, vertex.class, edgeData, edgeId);\n });\n};\nconst addRelations = function(relations, g) {\n const conf2 = getConfig().flowchart;\n let cnt = 0;\n relations.forEach(function(edge) {\n var _a;\n cnt++;\n const edgeData = {\n //Set relationship style and line type\n classes: \"relation\",\n pattern: edge.relation.lineType == 1 ? \"dashed\" : \"solid\",\n id: `id_${edge.id1}_${edge.id2}_${cnt}`,\n // Set link type for rendering\n arrowhead: edge.type === \"arrow_open\" ? \"none\" : \"normal\",\n //Set edge extra labels\n startLabelRight: edge.relationTitle1 === \"none\" ? \"\" : edge.relationTitle1,\n endLabelLeft: edge.relationTitle2 === \"none\" ? \"\" : edge.relationTitle2,\n //Set relation arrow types\n arrowTypeStart: getArrowMarker(edge.relation.type1),\n arrowTypeEnd: getArrowMarker(edge.relation.type2),\n style: \"fill:none\",\n labelStyle: \"\",\n curve: interpolateToCurve(conf2 == null ? void 0 : conf2.curve, curveLinear)\n };\n log.info(edgeData, edge);\n if (edge.style !== void 0) {\n const styles2 = getStylesFromArray(edge.style);\n edgeData.style = styles2.style;\n edgeData.labelStyle = styles2.labelStyle;\n }\n edge.text = edge.title;\n if (edge.text === void 0) {\n if (edge.style !== void 0) {\n edgeData.arrowheadStyle = \"fill: #333\";\n }\n } else {\n edgeData.arrowheadStyle = \"fill: #333\";\n edgeData.labelpos = \"c\";\n if (((_a = getConfig().flowchart) == null ? void 0 : _a.htmlLabels) ?? getConfig().htmlLabels) {\n edgeData.labelType = \"html\";\n edgeData.label = '<span class=\"edgeLabel\">' + edge.text + \"</span>\";\n } else {\n edgeData.labelType = \"text\";\n edgeData.label = edge.text.replace(common.lineBreakRegex, \"\\n\");\n if (edge.style === void 0) {\n edgeData.style = edgeData.style || \"stroke: #333; stroke-width: 1.5px;fill:none\";\n }\n edgeData.labelStyle = edgeData.labelStyle.replace(\"color:\", \"fill:\");\n }\n }\n g.setEdge(edge.id1, edge.id2, edgeData, cnt);\n });\n};\nconst setConf = function(cnf) {\n conf = {\n ...conf,\n ...cnf\n };\n};\nconst draw = async function(text, id, _version, diagObj) {\n log.info(\"Drawing class - \", id);\n const conf2 = getConfig().flowchart ?? getConfig().class;\n const securityLevel = getConfig().securityLevel;\n log.info(\"config:\", conf2);\n const nodeSpacing = (conf2 == null ? void 0 : conf2.nodeSpacing) ?? 50;\n const rankSpacing = (conf2 == null ? void 0 : conf2.rankSpacing) ?? 50;\n const g = new graphlib.Graph({\n multigraph: true,\n compound: true\n }).setGraph({\n rankdir: diagObj.db.getDirection(),\n nodesep: nodeSpacing,\n ranksep: rankSpacing,\n marginx: 8,\n marginy: 8\n }).setDefaultEdgeLabel(function() {\n return {};\n });\n const namespaces = diagObj.db.getNamespaces();\n const classes = diagObj.db.getClasses();\n const relations = diagObj.db.getRelations();\n const notes = diagObj.db.getNotes();\n log.info(relations);\n addNamespaces(namespaces, g, id, diagObj);\n addClasses(classes, g, id, diagObj);\n addRelations(relations, g);\n addNotes(notes, g, relations.length + 1, classes);\n let sandboxElement;\n if (securityLevel === \"sandbox\") {\n sandboxElement = select(\"#i\" + id);\n }\n const root = securityLevel === \"sandbox\" ? select(sandboxElement.nodes()[0].contentDocument.body) : select(\"body\");\n const svg = root.select(`[id=\"${id}\"]`);\n const element = root.select(\"#\" + id + \" g\");\n await render(\n element,\n g,\n [\"aggregation\", \"extension\", \"composition\", \"dependency\", \"lollipop\"],\n \"classDiagram\",\n id\n );\n utils.insertTitle(svg, \"classTitleText\", (conf2 == null ? void 0 : conf2.titleTopMargin) ?? 5, diagObj.db.getDiagramTitle());\n setupGraphViewbox(g, svg, conf2 == null ? void 0 : conf2.diagramPadding, conf2 == null ? void 0 : conf2.useMaxWidth);\n if (!(conf2 == null ? void 0 : conf2.htmlLabels)) {\n const doc = securityLevel === \"sandbox\" ? sandboxElement.nodes()[0].contentDocument : document;\n const labels = doc.querySelectorAll('[id=\"' + id + '\"] .edgeLabel .label');\n for (const label of labels) {\n const dim = label.getBBox();\n const rect = doc.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 label.insertBefore(rect, label.firstChild);\n }\n }\n};\nfunction getArrowMarker(type) {\n let marker;\n switch (type) {\n case 0:\n marker = \"aggregation\";\n break;\n case 1:\n marker = \"extension\";\n break;\n case 2:\n marker = \"composition\";\n break;\n case 3:\n marker = \"dependency\";\n break;\n case 4:\n marker = \"lollipop\";\n break;\n default:\n marker = \"none\";\n }\n return marker;\n}\nconst renderer = {\n setConf,\n draw\n};\nconst diagram = {\n parser,\n db,\n renderer,\n styles,\n init: (cnf) => {\n if (!cnf.class) {\n cnf.class = {};\n }\n cnf.class.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;\n db.clear();\n }\n};\nexport {\n diagram\n};\n","import { l as log, M as decodeEntities } from \"./mermaid-f47111a7.js\";\nimport { fromMarkdown } from \"mdast-util-from-markdown\";\nimport { dedent } from \"ts-dedent\";\nfunction preprocessMarkdown(markdown) {\n const withoutMultipleNewlines = markdown.replace(/\\n{2,}/g, \"\\n\");\n const withoutExtraSpaces = dedent(withoutMultipleNewlines);\n return withoutExtraSpaces;\n}\nfunction markdownToLines(markdown) {\n const preprocessedMarkdown = preprocessMarkdown(markdown);\n const { children } = fromMarkdown(preprocessedMarkdown);\n const lines = [[]];\n let currentLine = 0;\n function processNode(node, parentType = \"normal\") {\n if (node.type === \"text\") {\n const textLines = node.value.split(\"\\n\");\n textLines.forEach((textLine, index) => {\n if (index !== 0) {\n currentLine++;\n lines.push([]);\n }\n textLine.split(\" \").forEach((word) => {\n if (word) {\n lines[currentLine].push({ content: word, type: parentType });\n }\n });\n });\n } else if (node.type === \"strong\" || node.type === \"emphasis\") {\n node.children.forEach((contentNode) => {\n processNode(contentNode, node.type);\n });\n }\n }\n children.forEach((treeNode) => {\n if (treeNode.type === \"paragraph\") {\n treeNode.children.forEach((contentNode) => {\n processNode(contentNode);\n });\n }\n });\n return lines;\n}\nfunction markdownToHTML(markdown) {\n const { children } = fromMarkdown(markdown);\n function output(node) {\n if (node.type === \"text\") {\n return node.value.replace(/\\n/g, \"<br/>\");\n } else if (node.type === \"strong\") {\n return `<strong>${node.children.map(output).join(\"\")}</strong>`;\n } else if (node.type === \"emphasis\") {\n return `<em>${node.children.map(output).join(\"\")}</em>`;\n } else if (node.type === \"paragraph\") {\n return `<p>${node.children.map(output).join(\"\")}</p>`;\n }\n return `Unsupported markdown: ${node.type}`;\n }\n return children.map(output).join(\"\");\n}\nfunction splitTextToChars(text) {\n if (Intl.Segmenter) {\n return [...new Intl.Segmenter().segment(text)].map((s) => s.segment);\n }\n return [...text];\n}\nfunction splitWordToFitWidth(checkFit, word) {\n const characters = splitTextToChars(word.content);\n return splitWordToFitWidthRecursion(checkFit, [], characters, word.type);\n}\nfunction splitWordToFitWidthRecursion(checkFit, usedChars, remainingChars, type) {\n if (remainingChars.length === 0) {\n return [\n { content: usedChars.join(\"\"), type },\n { content: \"\", type }\n ];\n }\n const [nextChar, ...rest] = remainingChars;\n const newWord = [...usedChars, nextChar];\n if (checkFit([{ content: newWord.join(\"\"), type }])) {\n return splitWordToFitWidthRecursion(checkFit, newWord, rest, type);\n }\n if (usedChars.length === 0 && nextChar) {\n usedChars.push(nextChar);\n remainingChars.shift();\n }\n return [\n { content: usedChars.join(\"\"), type },\n { content: remainingChars.join(\"\"), type }\n ];\n}\nfunction splitLineToFitWidth(line, checkFit) {\n if (line.some(({ content }) => content.includes(\"\\n\"))) {\n throw new Error(\"splitLineToFitWidth does not support newlines in the line\");\n }\n return splitLineToFitWidthRecursion(line, checkFit);\n}\nfunction splitLineToFitWidthRecursion(words, checkFit, lines = [], newLine = []) {\n if (words.length === 0) {\n if (newLine.length > 0) {\n lines.push(newLine);\n }\n return lines.length > 0 ? lines : [];\n }\n let joiner = \"\";\n if (words[0].content === \" \") {\n joiner = \" \";\n words.shift();\n }\n const nextWord = words.shift() ?? { content: \" \", type: \"normal\" };\n const lineWithNextWord = [...newLine];\n if (joiner !== \"\") {\n lineWithNextWord.push({ content: joiner, type: \"normal\" });\n }\n lineWithNextWord.push(nextWord);\n if (checkFit(lineWithNextWord)) {\n return splitLineToFitWidthRecursion(words, checkFit, lines, lineWithNextWord);\n }\n if (newLine.length > 0) {\n lines.push(newLine);\n words.unshift(nextWord);\n } else if (nextWord.content) {\n const [line, rest] = splitWordToFitWidth(checkFit, nextWord);\n lines.push([line]);\n if (rest.content) {\n words.unshift(rest);\n }\n }\n return splitLineToFitWidthRecursion(words, checkFit, lines);\n}\nfunction applyStyle(dom, styleFn) {\n if (styleFn) {\n dom.attr(\"style\", styleFn);\n }\n}\nfunction addHtmlSpan(element, node, width, classes, addBackground = false) {\n const fo = element.append(\"foreignObject\");\n const div = fo.append(\"xhtml:div\");\n const label = node.label;\n const labelClass = node.isNode ? \"nodeLabel\" : \"edgeLabel\";\n div.html(\n `\n <span class=\"${labelClass} ${classes}\" ` + (node.labelStyle ? 'style=\"' + node.labelStyle + '\"' : \"\") + \">\" + label + \"</span>\"\n );\n applyStyle(div, node.labelStyle);\n div.style(\"display\", \"table-cell\");\n div.style(\"white-space\", \"nowrap\");\n div.style(\"max-width\", width + \"px\");\n div.attr(\"xmlns\", \"http://www.w3.org/1999/xhtml\");\n if (addBackground) {\n div.attr(\"class\", \"labelBkg\");\n }\n let bbox = div.node().getBoundingClientRect();\n if (bbox.width === width) {\n div.style(\"display\", \"table\");\n div.style(\"white-space\", \"break-spaces\");\n div.style(\"width\", width + \"px\");\n bbox = div.node().getBoundingClientRect();\n }\n fo.style(\"width\", bbox.width);\n fo.style(\"height\", bbox.height);\n return fo.node();\n}\nfunction createTspan(textElement, lineIndex, lineHeight) {\n return textElement.append(\"tspan\").attr(\"class\", \"text-outer-tspan\").attr(\"x\", 0).attr(\"y\", lineIndex * lineHeight - 0.1 + \"em\").attr(\"dy\", lineHeight + \"em\");\n}\nfunction computeWidthOfText(parentNode, lineHeight, line) {\n const testElement = parentNode.append(\"text\");\n const testSpan = createTspan(testElement, 1, lineHeight);\n updateTextContentAndStyles(testSpan, line);\n const textLength = testSpan.node().getComputedTextLength();\n testElement.remove();\n return textLength;\n}\nfunction computeDimensionOfText(parentNode, lineHeight, text) {\n var _a;\n const testElement = parentNode.append(\"text\");\n const testSpan = createTspan(testElement, 1, lineHeight);\n updateTextContentAndStyles(testSpan, [{ content: text, type: \"normal\" }]);\n const textDimension = (_a = testSpan.node()) == null ? void 0 : _a.getBoundingClientRect();\n if (textDimension) {\n testElement.remove();\n }\n return textDimension;\n}\nfunction createFormattedText(width, g, structuredText, addBackground = false) {\n const lineHeight = 1.1;\n const labelGroup = g.append(\"g\");\n const bkg = labelGroup.insert(\"rect\").attr(\"class\", \"background\");\n const textElement = labelGroup.append(\"text\").attr(\"y\", \"-10.1\");\n let lineIndex = 0;\n for (const line of structuredText) {\n const checkWidth = (line2) => computeWidthOfText(labelGroup, lineHeight, line2) <= width;\n const linesUnderWidth = checkWidth(line) ? [line] : splitLineToFitWidth(line, checkWidth);\n for (const preparedLine of linesUnderWidth) {\n const tspan = createTspan(textElement, lineIndex, lineHeight);\n updateTextContentAndStyles(tspan, preparedLine);\n lineIndex++;\n }\n }\n if (addBackground) {\n const bbox = textElement.node().getBBox();\n const padding = 2;\n bkg.attr(\"x\", -padding).attr(\"y\", -padding).attr(\"width\", bbox.width + 2 * padding).attr(\"height\", bbox.height + 2 * padding);\n return labelGroup.node();\n } else {\n return textElement.node();\n }\n}\nfunction updateTextContentAndStyles(tspan, wrappedLine) {\n tspan.text(\"\");\n wrappedLine.forEach((word, index) => {\n const innerTspan = tspan.append(\"tspan\").attr(\"font-style\", word.type === \"emphasis\" ? \"italic\" : \"normal\").attr(\"class\", \"text-inner-tspan\").attr(\"font-weight\", word.type === \"strong\" ? \"bold\" : \"normal\");\n if (index === 0) {\n innerTspan.text(word.content);\n } else {\n innerTspan.text(\" \" + word.content);\n }\n });\n}\nconst createText = (el, text = \"\", {\n style = \"\",\n isTitle = false,\n classes = \"\",\n useHtmlLabels = true,\n isNode = true,\n width = 200,\n addSvgBackground = false\n} = {}) => {\n log.info(\"createText\", text, style, isTitle, classes, useHtmlLabels, isNode, addSvgBackground);\n if (useHtmlLabels) {\n const htmlText = markdownToHTML(text);\n const node = {\n isNode,\n label: decodeEntities(htmlText).replace(\n /fa[blrs]?:fa-[\\w-]+/g,\n // cspell: disable-line\n (s) => `<i class='${s.replace(\":\", \" \")}'></i>`\n ),\n labelStyle: style.replace(\"fill:\", \"color:\")\n };\n const vertexNode = addHtmlSpan(el, node, width, classes, addSvgBackground);\n return vertexNode;\n } else {\n const structuredText = markdownToLines(text);\n const svgLabel = createFormattedText(width, el, structuredText, addSvgBackground);\n return svgLabel;\n }\n};\nexport {\n createText as a,\n computeDimensionOfText as c\n};\n","import { l as log, m as evaluate, c as getConfig, M as decodeEntities, d as sanitizeText, u as utils } from \"./mermaid-f47111a7.js\";\nimport { select, line, curveBasis } from \"d3\";\nimport { a as createText } from \"./createText-6b48ae7d.js\";\nconst insertMarkers = (elem, markerArray, type, id) => {\n markerArray.forEach((markerName) => {\n markers[markerName](elem, type, id);\n });\n};\nconst extension = (elem, type, id) => {\n log.trace(\"Making markers for \", id);\n elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-extensionStart\").attr(\"class\", \"marker extension \" + type).attr(\"refX\", 18).attr(\"refY\", 7).attr(\"markerWidth\", 190).attr(\"markerHeight\", 240).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 1,7 L18,13 V 1 Z\");\n elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-extensionEnd\").attr(\"class\", \"marker extension \" + type).attr(\"refX\", 1).attr(\"refY\", 7).attr(\"markerWidth\", 20).attr(\"markerHeight\", 28).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 1,1 V 13 L18,7 Z\");\n};\nconst composition = (elem, type, id) => {\n elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-compositionStart\").attr(\"class\", \"marker composition \" + type).attr(\"refX\", 18).attr(\"refY\", 7).attr(\"markerWidth\", 190).attr(\"markerHeight\", 240).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 18,7 L9,13 L1,7 L9,1 Z\");\n elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-compositionEnd\").attr(\"class\", \"marker composition \" + type).attr(\"refX\", 1).attr(\"refY\", 7).attr(\"markerWidth\", 20).attr(\"markerHeight\", 28).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 18,7 L9,13 L1,7 L9,1 Z\");\n};\nconst aggregation = (elem, type, id) => {\n elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-aggregationStart\").attr(\"class\", \"marker aggregation \" + type).attr(\"refX\", 18).attr(\"refY\", 7).attr(\"markerWidth\", 190).attr(\"markerHeight\", 240).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 18,7 L9,13 L1,7 L9,1 Z\");\n elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-aggregationEnd\").attr(\"class\", \"marker aggregation \" + type).attr(\"refX\", 1).attr(\"refY\", 7).attr(\"markerWidth\", 20).attr(\"markerHeight\", 28).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 18,7 L9,13 L1,7 L9,1 Z\");\n};\nconst dependency = (elem, type, id) => {\n elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-dependencyStart\").attr(\"class\", \"marker dependency \" + type).attr(\"refX\", 6).attr(\"refY\", 7).attr(\"markerWidth\", 190).attr(\"markerHeight\", 240).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 5,7 L9,13 L1,7 L9,1 Z\");\n elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-dependencyEnd\").attr(\"class\", \"marker dependency \" + type).attr(\"refX\", 13).attr(\"refY\", 7).attr(\"markerWidth\", 20).attr(\"markerHeight\", 28).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 18,7 L9,13 L14,7 L9,1 Z\");\n};\nconst lollipop = (elem, type, id) => {\n elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-lollipopStart\").attr(\"class\", \"marker lollipop \" + type).attr(\"refX\", 13).attr(\"refY\", 7).attr(\"markerWidth\", 190).attr(\"markerHeight\", 240).attr(\"orient\", \"auto\").append(\"circle\").attr(\"stroke\", \"black\").attr(\"fill\", \"transparent\").attr(\"cx\", 7).attr(\"cy\", 7).attr(\"r\", 6);\n elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-lollipopEnd\").attr(\"class\", \"marker lollipop \" + type).attr(\"refX\", 1).attr(\"refY\", 7).attr(\"markerWidth\", 190).attr(\"markerHeight\", 240).attr(\"orient\", \"auto\").append(\"circle\").attr(\"stroke\", \"black\").attr(\"fill\", \"transparent\").attr(\"cx\", 7).attr(\"cy\", 7).attr(\"r\", 6);\n};\nconst point = (elem, type, id) => {\n elem.append(\"marker\").attr(\"id\", id + \"_\" + type + \"-pointEnd\").attr(\"class\", \"marker \" + type).attr(\"viewBox\", \"0 0 10 10\").attr(\"refX\", 6).attr(\"refY\", 5).attr(\"markerUnits\", \"userSpaceOnUse\").attr(\"markerWidth\", 12).attr(\"markerHeight\", 12).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 0 0 L 10 5 L 0 10 z\").attr(\"class\", \"arrowMarkerPath\").style(\"stroke-width\", 1).style(\"stroke-dasharray\", \"1,0\");\n elem.append(\"marker\").attr(\"id\", id + \"_\" + type + \"-pointStart\").attr(\"class\", \"marker \" + type).attr(\"viewBox\", \"0 0 10 10\").attr(\"refX\", 4.5).attr(\"refY\", 5).attr(\"markerUnits\", \"userSpaceOnUse\").attr(\"markerWidth\", 12).attr(\"markerHeight\", 12).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 0 5 L 10 10 L 10 0 z\").attr(\"class\", \"arrowMarkerPath\").style(\"stroke-width\", 1).style(\"stroke-dasharray\", \"1,0\");\n};\nconst circle$1 = (elem, type, id) => {\n elem.append(\"marker\").attr(\"id\", id + \"_\" + type + \"-circleEnd\").attr(\"class\", \"marker \" + type).attr(\"viewBox\", \"0 0 10 10\").attr(\"refX\", 11).attr(\"refY\", 5).attr(\"markerUnits\", \"userSpaceOnUse\").attr(\"markerWidth\", 11).attr(\"markerHeight\", 11).attr(\"orient\", \"auto\").append(\"circle\").attr(\"cx\", \"5\").attr(\"cy\", \"5\").attr(\"r\", \"5\").attr(\"class\", \"arrowMarkerPath\").style(\"stroke-width\", 1).style(\"stroke-dasharray\", \"1,0\");\n elem.append(\"marker\").attr(\"id\", id + \"_\" + type + \"-circleStart\").attr(\"class\", \"marker \" + type).attr(\"viewBox\", \"0 0 10 10\").attr(\"refX\", -1).attr(\"refY\", 5).attr(\"markerUnits\", \"userSpaceOnUse\").attr(\"markerWidth\", 11).attr(\"markerHeight\", 11).attr(\"orient\", \"auto\").append(\"circle\").attr(\"cx\", \"5\").attr(\"cy\", \"5\").attr(\"r\", \"5\").attr(\"class\", \"arrowMarkerPath\").style(\"stroke-width\", 1).style(\"stroke-dasharray\", \"1,0\");\n};\nconst cross = (elem, type, id) => {\n elem.append(\"marker\").attr(\"id\", id + \"_\" + type + \"-crossEnd\").attr(\"class\", \"marker cross \" + type).attr(\"viewBox\", \"0 0 11 11\").attr(\"refX\", 12).attr(\"refY\", 5.2).attr(\"markerUnits\", \"userSpaceOnUse\").attr(\"markerWidth\", 11).attr(\"markerHeight\", 11).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 1,1 l 9,9 M 10,1 l -9,9\").attr(\"class\", \"arrowMarkerPath\").style(\"stroke-width\", 2).style(\"stroke-dasharray\", \"1,0\");\n elem.append(\"marker\").attr(\"id\", id + \"_\" + type + \"-crossStart\").attr(\"class\", \"marker cross \" + type).attr(\"viewBox\", \"0 0 11 11\").attr(\"refX\", -1).attr(\"refY\", 5.2).attr(\"markerUnits\", \"userSpaceOnUse\").attr(\"markerWidth\", 11).attr(\"markerHeight\", 11).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 1,1 l 9,9 M 10,1 l -9,9\").attr(\"class\", \"arrowMarkerPath\").style(\"stroke-width\", 2).style(\"stroke-dasharray\", \"1,0\");\n};\nconst barb = (elem, type, id) => {\n elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-barbEnd\").attr(\"refX\", 19).attr(\"refY\", 7).attr(\"markerWidth\", 20).attr(\"markerHeight\", 14).attr(\"markerUnits\", \"strokeWidth\").attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 19,7 L9,13 L14,7 L9,1 Z\");\n};\nconst markers = {\n extension,\n composition,\n aggregation,\n dependency,\n lollipop,\n point,\n circle: circle$1,\n cross,\n barb\n};\nconst insertMarkers$1 = insertMarkers;\nfunction applyStyle(dom, styleFn) {\n if (styleFn) {\n dom.attr(\"style\", styleFn);\n }\n}\nfunction addHtmlLabel(node) {\n const fo = select(document.createElementNS(\"http://www.w3.org/2000/svg\", \"foreignObject\"));\n const div = fo.append(\"xhtml:div\");\n const label = node.label;\n const labelClass = node.isNode ? \"nodeLabel\" : \"edgeLabel\";\n div.html(\n '<span class=\"' + labelClass + '\" ' + (node.labelStyle ? 'style=\"' + node.labelStyle + '\"' : \"\") + \">\" + label + \"</span>\"\n );\n applyStyle(div, node.labelStyle);\n div.style(\"display\", \"inline-block\");\n div.style(\"white-space\", \"nowrap\");\n div.attr(\"xmlns\", \"http://www.w3.org/1999/xhtml\");\n return fo.node();\n}\nconst createLabel = (_vertexText, style, isTitle, isNode) => {\n let vertexText = _vertexText || \"\";\n if (typeof vertexText === \"object\") {\n vertexText = vertexText[0];\n }\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n vertexText = vertexText.replace(/\\\\n|\\n/g, \"<br />\");\n log.debug(\"vertexText\" + vertexText);\n const node = {\n isNode,\n label: decodeEntities(vertexText).replace(\n /fa[blrs]?:fa-[\\w-]+/g,\n // cspell: disable-line\n (s) => `<i class='${s.replace(\":\", \" \")}'></i>`\n ),\n labelStyle: style.replace(\"fill:\", \"color:\")\n };\n let vertexNode = addHtmlLabel(node);\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|<br\\s*\\/?>/gi);\n } else if (Array.isArray(vertexText)) {\n rows = vertexText;\n } else {\n rows = [];\n }\n for (const row of rows) {\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 = row.trim();\n svgLabel.appendChild(tspan);\n }\n return svgLabel;\n }\n};\nconst createLabel$1 = createLabel;\nconst labelHelper = async (parent, node, _classes, isNode) => {\n let classes;\n const useHtmlLabels = node.useHtmlLabels || evaluate(getConfig().flowchart.htmlLabels);\n if (!_classes) {\n classes = \"node default\";\n } else {\n classes = _classes;\n }\n const shapeSvg = parent.insert(\"g\").attr(\"class\", classes).attr(\"id\", node.domId || node.id);\n const label = shapeSvg.insert(\"g\").attr(\"class\", \"label\").attr(\"style\", node.labelStyle);\n let labelText;\n if (node.labelText === void 0) {\n labelText = \"\";\n } else {\n labelText = typeof node.labelText === \"string\" ? node.labelText : node.labelText[0];\n }\n const textNode = label.node();\n let text;\n if (node.labelType === \"markdown\") {\n text = createText(label, sanitizeText(decodeEntities(labelText), getConfig()), {\n useHtmlLabels,\n width: node.width || getConfig().flowchart.wrappingWidth,\n classes: \"markdown-node-label\"\n });\n } else {\n text = textNode.appendChild(\n createLabel$1(\n sanitizeText(decodeEntities(labelText), getConfig()),\n node.labelStyle,\n false,\n isNode\n )\n );\n }\n let bbox = text.getBBox();\n const halfPadding = node.padding / 2;\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n const div = text.children[0];\n const dv = select(text);\n const images = div.getElementsByTagName(\"img\");\n if (images) {\n const noImgText = labelText.replace(/<img[^>]*>/g, \"\").trim() === \"\";\n await Promise.all(\n [...images].map(\n (img) => new Promise((res) => {\n function setupImage() {\n img.style.display = \"flex\";\n img.style.flexDirection = \"column\";\n if (noImgText) {\n const bodyFontSize = getConfig().fontSize ? getConfig().fontSize : window.getComputedStyle(document.body).fontSize;\n const enlargingFactor = 5;\n const width = parseInt(bodyFontSize, 10) * enlargingFactor + \"px\";\n img.style.minWidth = width;\n img.style.maxWidth = width;\n } else {\n img.style.width = \"100%\";\n }\n res(img);\n }\n setTimeout(() => {\n if (img.complete) {\n setupImage();\n }\n });\n img.addEventListener(\"error\", setupImage);\n img.addEventListener(\"load\", setupImage);\n })\n )\n );\n }\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n if (useHtmlLabels) {\n label.attr(\"transform\", \"translate(\" + -bbox.width / 2 + \", \" + -bbox.height / 2 + \")\");\n } else {\n label.attr(\"transform\", \"translate(0, \" + -bbox.height / 2 + \")\");\n }\n if (node.centerLabel) {\n label.attr(\"transform\", \"translate(\" + -bbox.width / 2 + \", \" + -bbox.height / 2 + \")\");\n }\n label.insert(\"rect\", \":first-child\");\n return { shapeSvg, bbox, halfPadding, label };\n};\nconst updateNodeBounds = (node, element) => {\n const bbox = element.node().getBBox();\n node.width = bbox.width;\n node.height = bbox.height;\n};\nfunction insertPolygonShape(parent, w, h, points) {\n return parent.insert(\"polygon\", \":first-child\").attr(\n \"points\",\n points.map(function(d) {\n return d.x + \",\" + d.y;\n }).join(\" \")\n ).attr(\"class\", \"label-container\").attr(\"transform\", \"translate(\" + -w / 2 + \",\" + h / 2 + \")\");\n}\nfunction intersectNode(node, point2) {\n return node.intersect(point2);\n}\nfunction intersectEllipse(node, rx, ry, point2) {\n var cx = node.x;\n var cy = node.y;\n var px = cx - point2.x;\n var py = cy - point2.y;\n var det = Math.sqrt(rx * rx * py * py + ry * ry * px * px);\n var dx = Math.abs(rx * ry * px / det);\n if (point2.x < cx) {\n dx = -dx;\n }\n var dy = Math.abs(rx * ry * py / det);\n if (point2.y < cy) {\n dy = -dy;\n }\n return { x: cx + dx, y: cy + dy };\n}\nfunction intersectCircle(node, rx, point2) {\n return intersectEllipse(node, rx, rx, point2);\n}\nfunction intersectLine(p1, p2, q1, q2) {\n var a1, a2, b1, b2, c1, c2;\n var r1, r2, r3, r4;\n var denom, offset, num;\n var x, y;\n a1 = p2.y - p1.y;\n b1 = p1.x - p2.x;\n c1 = p2.x * p1.y - p1.x * p2.y;\n r3 = a1 * q1.x + b1 * q1.y + c1;\n r4 = a1 * q2.x + b1 * q2.y + c1;\n if (r3 !== 0 && r4 !== 0 && sameSign(r3, r4)) {\n return;\n }\n a2 = q2.y - q1.y;\n b2 = q1.x - q2.x;\n c2 = q2.x * q1.y - q1.x * q2.y;\n r1 = a2 * p1.x + b2 * p1.y + c2;\n r2 = a2 * p2.x + b2 * p2.y + c2;\n if (r1 !== 0 && r2 !== 0 && sameSign(r1, r2)) {\n return;\n }\n denom = a1 * b2 - a2 * b1;\n if (denom === 0) {\n return;\n }\n offset = Math.abs(denom / 2);\n num = b1 * c2 - b2 * c1;\n x = num < 0 ? (num - offset) / denom : (num + offset) / denom;\n num = a2 * c1 - a1 * c2;\n y = num < 0 ? (num - offset) / denom : (num + offset) / denom;\n return { x, y };\n}\nfunction sameSign(r1, r2) {\n return r1 * r2 > 0;\n}\nfunction intersectPolygon(node, polyPoints, point2) {\n var x1 = node.x;\n var y1 = node.y;\n var intersections = [];\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 var left = x1 - node.width / 2 - minX;\n var top = y1 - node.height / 2 - minY;\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 intersect2 = intersectLine(\n node,\n point2,\n { x: left + p1.x, y: top + p1.y },\n { x: left + p2.x, y: top + p2.y }\n );\n if (intersect2) {\n intersections.push(intersect2);\n }\n }\n if (!intersections.length) {\n return node;\n }\n if (intersections.length > 1) {\n intersections.sort(function(p, q) {\n var pdx = p.x - point2.x;\n var pdy = p.y - point2.y;\n var distp = Math.sqrt(pdx * pdx + pdy * pdy);\n var qdx = q.x - point2.x;\n var qdy = q.y - point2.y;\n var distq = Math.sqrt(qdx * qdx + qdy * qdy);\n return distp < distq ? -1 : distp === distq ? 0 : 1;\n });\n }\n return intersections[0];\n}\nconst intersectRect = (node, point2) => {\n var x = node.x;\n var y = node.y;\n var dx = point2.x - x;\n var dy = point2.y - y;\n var w = node.width / 2;\n var h = node.height / 2;\n var sx, sy;\n if (Math.abs(dy) * w > Math.abs(dx) * h) {\n if (dy < 0) {\n h = -h;\n }\n sx = dy === 0 ? 0 : h * dx / dy;\n sy = h;\n } else {\n if (dx < 0) {\n w = -w;\n }\n sx = w;\n sy = dx === 0 ? 0 : w * dy / dx;\n }\n return { x: x + sx, y: y + sy };\n};\nconst intersectRect$1 = intersectRect;\nconst intersect = {\n node: intersectNode,\n circle: intersectCircle,\n ellipse: intersectEllipse,\n polygon: intersectPolygon,\n rect: intersectRect$1\n};\nconst note = async (parent, node) => {\n const useHtmlLabels = node.useHtmlLabels || getConfig().flowchart.htmlLabels;\n if (!useHtmlLabels) {\n node.centerLabel = true;\n }\n const { shapeSvg, bbox, halfPadding } = await labelHelper(\n parent,\n node,\n \"node \" + node.classes,\n true\n );\n log.info(\"Classes = \", node.classes);\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n rect2.attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"x\", -bbox.width / 2 - halfPadding).attr(\"y\", -bbox.height / 2 - halfPadding).attr(\"width\", bbox.width + node.padding).attr(\"height\", bbox.height + node.padding);\n updateNodeBounds(node, rect2);\n node.intersect = function(point2) {\n return intersect.rect(node, point2);\n };\n return shapeSvg;\n};\nconst note$1 = note;\nconst expandAndDeduplicateDirections = (directions) => {\n const uniqueDirections = /* @__PURE__ */ new Set();\n for (const direction of directions) {\n switch (direction) {\n case \"x\":\n uniqueDirections.add(\"right\");\n uniqueDirections.add(\"left\");\n break;\n case \"y\":\n uniqueDirections.add(\"up\");\n uniqueDirections.add(\"down\");\n break;\n default:\n uniqueDirections.add(direction);\n break;\n }\n }\n return uniqueDirections;\n};\nconst getArrowPoints = (duplicatedDirections, bbox, node) => {\n const directions = expandAndDeduplicateDirections(duplicatedDirections);\n const f = 2;\n const height = bbox.height + 2 * node.padding;\n const midpoint = height / f;\n const width = bbox.width + 2 * midpoint + node.padding;\n const padding = node.padding / 2;\n if (directions.has(\"right\") && directions.has(\"left\") && directions.has(\"up\") && directions.has(\"down\")) {\n return [\n // Bottom\n { x: 0, y: 0 },\n { x: midpoint, y: 0 },\n { x: width / 2, y: 2 * padding },\n { x: width - midpoint, y: 0 },\n { x: width, y: 0 },\n // Right\n { x: width, y: -height / 3 },\n { x: width + 2 * padding, y: -height / 2 },\n { x: width, y: -2 * height / 3 },\n { x: width, y: -height },\n // Top\n { x: width - midpoint, y: -height },\n { x: width / 2, y: -height - 2 * padding },\n { x: midpoint, y: -height },\n // Left\n { x: 0, y: -height },\n { x: 0, y: -2 * height / 3 },\n { x: -2 * padding, y: -height / 2 },\n { x: 0, y: -height / 3 }\n ];\n }\n if (directions.has(\"right\") && directions.has(\"left\") && directions.has(\"up\")) {\n return [\n { x: midpoint, y: 0 },\n { x: width - midpoint, y: 0 },\n { x: width, y: -height / 2 },\n { x: width - midpoint, y: -height },\n { x: midpoint, y: -height },\n { x: 0, y: -height / 2 }\n ];\n }\n if (directions.has(\"right\") && directions.has(\"left\") && directions.has(\"down\")) {\n return [\n { x: 0, y: 0 },\n { x: midpoint, y: -height },\n { x: width - midpoint, y: -height },\n { x: width, y: 0 }\n ];\n }\n if (directions.has(\"right\") && directions.has(\"up\") && directions.has(\"down\")) {\n return [\n { x: 0, y: 0 },\n { x: width, y: -midpoint },\n { x: width, y: -height + midpoint },\n { x: 0, y: -height }\n ];\n }\n if (directions.has(\"left\") && directions.has(\"up\") && directions.has(\"down\")) {\n return [\n { x: width, y: 0 },\n { x: 0, y: -midpoint },\n { x: 0, y: -height + midpoint },\n { x: width, y: -height }\n ];\n }\n if (directions.has(\"right\") && directions.has(\"left\")) {\n return [\n { x: midpoint, y: 0 },\n { x: midpoint, y: -padding },\n { x: width - midpoint, y: -padding },\n { x: width - midpoint, y: 0 },\n { x: width, y: -height / 2 },\n { x: width - midpoint, y: -height },\n { x: width - midpoint, y: -height + padding },\n { x: midpoint, y: -height + padding },\n { x: midpoint, y: -height },\n { x: 0, y: -height / 2 }\n ];\n }\n if (directions.has(\"up\") && directions.has(\"down\")) {\n return [\n // Bottom center\n { x: width / 2, y: 0 },\n // Left pont of bottom arrow\n { x: 0, y: -padding },\n { x: midpoint, y: -padding },\n // Left top over vertical section\n { x: midpoint, y: -height + padding },\n { x: 0, y: -height + padding },\n // Top of arrow\n { x: width / 2, y: -height },\n { x: width, y: -height + padding },\n // Top of right vertical bar\n { x: width - midpoint, y: -height + padding },\n { x: width - midpoint, y: -padding },\n { x: width, y: -padding }\n ];\n }\n if (directions.has(\"right\") && directions.has(\"up\")) {\n return [\n { x: 0, y: 0 },\n { x: width, y: -midpoint },\n { x: 0, y: -height }\n ];\n }\n if (directions.has(\"right\") && directions.has(\"down\")) {\n return [\n { x: 0, y: 0 },\n { x: width, y: 0 },\n { x: 0, y: -height }\n ];\n }\n if (directions.has(\"left\") && directions.has(\"up\")) {\n return [\n { x: width, y: 0 },\n { x: 0, y: -midpoint },\n { x: width, y: -height }\n ];\n }\n if (directions.has(\"left\") && directions.has(\"down\")) {\n return [\n { x: width, y: 0 },\n { x: 0, y: 0 },\n { x: width, y: -height }\n ];\n }\n if (directions.has(\"right\")) {\n return [\n { x: midpoint, y: -padding },\n { x: midpoint, y: -padding },\n { x: width - midpoint, y: -padding },\n { x: width - midpoint, y: 0 },\n { x: width, y: -height / 2 },\n { x: width - midpoint, y: -height },\n { x: width - midpoint, y: -height + padding },\n // top left corner of arrow\n { x: midpoint, y: -height + padding },\n { x: midpoint, y: -height + padding }\n ];\n }\n if (directions.has(\"left\")) {\n return [\n { x: midpoint, y: 0 },\n { x: midpoint, y: -padding },\n // Two points, the right corners\n { x: width - midpoint, y: -padding },\n { x: width - midpoint, y: -height + padding },\n { x: midpoint, y: -height + padding },\n { x: midpoint, y: -height },\n { x: 0, y: -height / 2 }\n ];\n }\n if (directions.has(\"up\")) {\n return [\n // Bottom center\n { x: midpoint, y: -padding },\n // Left top over vertical section\n { x: midpoint, y: -height + padding },\n { x: 0, y: -height + padding },\n // Top of arrow\n { x: width / 2, y: -height },\n { x: width, y: -height + padding },\n // Top of right vertical bar\n { x: width - midpoint, y: -height + padding },\n { x: width - midpoint, y: -padding }\n ];\n }\n if (directions.has(\"down\")) {\n return [\n // Bottom center\n { x: width / 2, y: 0 },\n // Left pont of bottom arrow\n { x: 0, y: -padding },\n { x: midpoint, y: -padding },\n // Left top over vertical section\n { x: midpoint, y: -height + padding },\n { x: width - midpoint, y: -height + padding },\n { x: width - midpoint, y: -padding },\n { x: width, y: -padding }\n ];\n }\n return [{ x: 0, y: 0 }];\n};\nconst formatClass = (str) => {\n if (str) {\n return \" \" + str;\n }\n return \"\";\n};\nconst getClassesFromNode = (node, otherClasses) => {\n return `${otherClasses ? otherClasses : \"node default\"}${formatClass(node.classes)} ${formatClass(\n node.class\n )}`;\n};\nconst question = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n 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 log.info(\"Question main (Circle)\");\n const questionElem = insertPolygonShape(shapeSvg, s, s, points);\n questionElem.attr(\"style\", node.style);\n updateNodeBounds(node, questionElem);\n node.intersect = function(point2) {\n log.warn(\"Intersect called\");\n return intersect.polygon(node, points, point2);\n };\n return shapeSvg;\n};\nconst choice = (parent, node) => {\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"node default\").attr(\"id\", node.domId || node.id);\n const s = 28;\n const points = [\n { x: 0, y: s / 2 },\n { x: s / 2, y: 0 },\n { x: 0, y: -s / 2 },\n { x: -s / 2, y: 0 }\n ];\n const choice2 = shapeSvg.insert(\"polygon\", \":first-child\").attr(\n \"points\",\n points.map(function(d) {\n return d.x + \",\" + d.y;\n }).join(\" \")\n );\n choice2.attr(\"class\", \"state-start\").attr(\"r\", 7).attr(\"width\", 28).attr(\"height\", 28);\n node.width = 28;\n node.height = 28;\n node.intersect = function(point2) {\n return intersect.circle(node, 14, point2);\n };\n return shapeSvg;\n};\nconst hexagon = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n 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 hex.attr(\"style\", node.style);\n updateNodeBounds(node, hex);\n node.intersect = function(point2) {\n return intersect.polygon(node, points, point2);\n };\n return shapeSvg;\n};\nconst block_arrow = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(parent, node, void 0, true);\n const f = 2;\n const h = bbox.height + 2 * node.padding;\n const m = h / f;\n const w = bbox.width + 2 * m + node.padding;\n const points = getArrowPoints(node.directions, bbox, node);\n const blockArrow = insertPolygonShape(shapeSvg, w, h, points);\n blockArrow.attr(\"style\", node.style);\n updateNodeBounds(node, blockArrow);\n node.intersect = function(point2) {\n return intersect.polygon(node, points, point2);\n };\n return shapeSvg;\n};\nconst rect_left_inv_arrow = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n 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 const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n node.width = w + h;\n node.height = h;\n node.intersect = function(point2) {\n return intersect.polygon(node, points, point2);\n };\n return shapeSvg;\n};\nconst lean_right = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(parent, node, getClassesFromNode(node), true);\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 const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n return intersect.polygon(node, points, point2);\n };\n return shapeSvg;\n};\nconst lean_left = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n 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 const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n return intersect.polygon(node, points, point2);\n };\n return shapeSvg;\n};\nconst trapezoid = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n 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 el.attr(\"style\", node.style);\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n return intersect.polygon(node, points, point2);\n };\n return shapeSvg;\n};\nconst inv_trapezoid = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n 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 el.attr(\"style\", node.style);\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n return intersect.polygon(node, points, point2);\n };\n return shapeSvg;\n};\nconst rect_right_inv_arrow = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n 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 el.attr(\"style\", node.style);\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n return intersect.polygon(node, points, point2);\n };\n return shapeSvg;\n};\nconst cylinder = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n 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 const shape = \"M 0,\" + ry + \" a \" + rx + \",\" + ry + \" 0,0,0 \" + w + \" 0 a \" + rx + \",\" + ry + \" 0,0,0 \" + -w + \" 0 l 0,\" + h + \" a \" + rx + \",\" + ry + \" 0,0,0 \" + w + \" 0 l 0,\" + -h;\n const el = shapeSvg.attr(\"label-offset-y\", ry).insert(\"path\", \":first-child\").attr(\"style\", node.style).attr(\"d\", shape).attr(\"transform\", \"translate(\" + -w / 2 + \",\" + -(h / 2 + ry) + \")\");\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n const pos = intersect.rect(node, point2);\n const x = pos.x - node.x;\n if (rx != 0 && (Math.abs(x) < node.width / 2 || Math.abs(x) == node.width / 2 && Math.abs(pos.y - node.y) > node.height / 2 - ry)) {\n let y = ry * ry * (1 - x * x / (rx * rx));\n if (y != 0) {\n y = Math.sqrt(y);\n }\n y = ry - y;\n if (point2.y - node.y > 0) {\n y = -y;\n }\n pos.y += y;\n }\n return pos;\n };\n return shapeSvg;\n};\nconst rect = async (parent, node) => {\n const { shapeSvg, bbox, halfPadding } = await labelHelper(\n parent,\n node,\n \"node \" + node.classes + \" \" + node.class,\n true\n );\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const totalWidth = node.positioned ? node.width : bbox.width + node.padding;\n const totalHeight = node.positioned ? node.height : bbox.height + node.padding;\n const x = node.positioned ? -totalWidth / 2 : -bbox.width / 2 - halfPadding;\n const y = node.positioned ? -totalHeight / 2 : -bbox.height / 2 - halfPadding;\n rect2.attr(\"class\", \"basic label-container\").attr(\"style\", node.style).attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"x\", x).attr(\"y\", y).attr(\"width\", totalWidth).attr(\"height\", totalHeight);\n if (node.props) {\n const propKeys = new Set(Object.keys(node.props));\n if (node.props.borders) {\n applyNodePropertyBorders(rect2, node.props.borders, totalWidth, totalHeight);\n propKeys.delete(\"borders\");\n }\n propKeys.forEach((propKey) => {\n log.warn(`Unknown node property ${propKey}`);\n });\n }\n updateNodeBounds(node, rect2);\n node.intersect = function(point2) {\n return intersect.rect(node, point2);\n };\n return shapeSvg;\n};\nconst composite = async (parent, node) => {\n const { shapeSvg, bbox, halfPadding } = await labelHelper(\n parent,\n node,\n \"node \" + node.classes,\n true\n );\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const totalWidth = node.positioned ? node.width : bbox.width + node.padding;\n const totalHeight = node.positioned ? node.height : bbox.height + node.padding;\n const x = node.positioned ? -totalWidth / 2 : -bbox.width / 2 - halfPadding;\n const y = node.positioned ? -totalHeight / 2 : -bbox.height / 2 - halfPadding;\n rect2.attr(\"class\", \"basic cluster composite label-container\").attr(\"style\", node.style).attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"x\", x).attr(\"y\", y).attr(\"width\", totalWidth).attr(\"height\", totalHeight);\n if (node.props) {\n const propKeys = new Set(Object.keys(node.props));\n if (node.props.borders) {\n applyNodePropertyBorders(rect2, node.props.borders, totalWidth, totalHeight);\n propKeys.delete(\"borders\");\n }\n propKeys.forEach((propKey) => {\n log.warn(`Unknown node property ${propKey}`);\n });\n }\n updateNodeBounds(node, rect2);\n node.intersect = function(point2) {\n return intersect.rect(node, point2);\n };\n return shapeSvg;\n};\nconst labelRect = async (parent, node) => {\n const { shapeSvg } = await labelHelper(parent, node, \"label\", true);\n log.trace(\"Classes = \", node.class);\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const totalWidth = 0;\n const totalHeight = 0;\n rect2.attr(\"width\", totalWidth).attr(\"height\", totalHeight);\n shapeSvg.attr(\"class\", \"label edgeLabel\");\n if (node.props) {\n const propKeys = new Set(Object.keys(node.props));\n if (node.props.borders) {\n applyNodePropertyBorders(rect2, node.props.borders, totalWidth, totalHeight);\n propKeys.delete(\"borders\");\n }\n propKeys.forEach((propKey) => {\n log.warn(`Unknown node property ${propKey}`);\n });\n }\n updateNodeBounds(node, rect2);\n node.intersect = function(point2) {\n return intersect.rect(node, point2);\n };\n return shapeSvg;\n};\nfunction applyNodePropertyBorders(rect2, borders, totalWidth, totalHeight) {\n const strokeDashArray = [];\n const addBorder = (length) => {\n strokeDashArray.push(length, 0);\n };\n const skipBorder = (length) => {\n strokeDashArray.push(0, length);\n };\n if (borders.includes(\"t\")) {\n log.debug(\"add top border\");\n addBorder(totalWidth);\n } else {\n skipBorder(totalWidth);\n }\n if (borders.includes(\"r\")) {\n log.debug(\"add right border\");\n addBorder(totalHeight);\n } else {\n skipBorder(totalHeight);\n }\n if (borders.includes(\"b\")) {\n log.debug(\"add bottom border\");\n addBorder(totalWidth);\n } else {\n skipBorder(totalWidth);\n }\n if (borders.includes(\"l\")) {\n log.debug(\"add left border\");\n addBorder(totalHeight);\n } else {\n skipBorder(totalHeight);\n }\n rect2.attr(\"stroke-dasharray\", strokeDashArray.join(\" \"));\n}\nconst rectWithTitle = (parent, node) => {\n let classes;\n if (!node.classes) {\n classes = \"node default\";\n } else {\n classes = \"node \" + node.classes;\n }\n const shapeSvg = parent.insert(\"g\").attr(\"class\", classes).attr(\"id\", node.domId || node.id);\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const innerLine = shapeSvg.insert(\"line\");\n const label = shapeSvg.insert(\"g\").attr(\"class\", \"label\");\n const text2 = node.labelText.flat ? node.labelText.flat() : node.labelText;\n let title = \"\";\n if (typeof text2 === \"object\") {\n title = text2[0];\n } else {\n title = text2;\n }\n log.info(\"Label text abc79\", title, text2, typeof text2 === \"object\");\n const text = label.node().appendChild(createLabel$1(title, node.labelStyle, true, true));\n let bbox = { width: 0, height: 0 };\n if (evaluate(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 log.info(\"Text 2\", text2);\n const textRows = text2.slice(1, text2.length);\n let titleBox = text.getBBox();\n const descr = label.node().appendChild(\n createLabel$1(textRows.join ? textRows.join(\"<br/>\") : textRows, node.labelStyle, true, true)\n );\n if (evaluate(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 const halfPadding = node.padding / 2;\n select(descr).attr(\n \"transform\",\n \"translate( \" + // (titleBox.width - bbox.width) / 2 +\n (bbox.width > titleBox.width ? 0 : (titleBox.width - bbox.width) / 2) + \", \" + (titleBox.height + halfPadding + 5) + \")\"\n );\n select(text).attr(\n \"transform\",\n \"translate( \" + // (titleBox.width - bbox.width) / 2 +\n (bbox.width < titleBox.width ? 0 : -(titleBox.width - bbox.width) / 2) + \", 0)\"\n );\n bbox = label.node().getBBox();\n label.attr(\n \"transform\",\n \"translate(\" + -bbox.width / 2 + \", \" + (-bbox.height / 2 - halfPadding + 3) + \")\"\n );\n rect2.attr(\"class\", \"outer title-state\").attr(\"x\", -bbox.width / 2 - halfPadding).attr(\"y\", -bbox.height / 2 - halfPadding).attr(\"width\", bbox.width + node.padding).attr(\"height\", bbox.height + node.padding);\n innerLine.attr(\"class\", \"divider\").attr(\"x1\", -bbox.width / 2 - halfPadding).attr(\"x2\", bbox.width / 2 + halfPadding).attr(\"y1\", -bbox.height / 2 - halfPadding + titleBox.height + halfPadding).attr(\"y2\", -bbox.height / 2 - halfPadding + titleBox.height + halfPadding);\n updateNodeBounds(node, rect2);\n node.intersect = function(point2) {\n return intersect.rect(node, point2);\n };\n return shapeSvg;\n};\nconst stadium = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const h = bbox.height + node.padding;\n const w = bbox.width + h / 4 + node.padding;\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\").attr(\"style\", node.style).attr(\"rx\", h / 2).attr(\"ry\", h / 2).attr(\"x\", -w / 2).attr(\"y\", -h / 2).attr(\"width\", w).attr(\"height\", h);\n updateNodeBounds(node, rect2);\n node.intersect = function(point2) {\n return intersect.rect(node, point2);\n };\n return shapeSvg;\n};\nconst circle = async (parent, node) => {\n const { shapeSvg, bbox, halfPadding } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const circle2 = shapeSvg.insert(\"circle\", \":first-child\");\n circle2.attr(\"style\", node.style).attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"r\", bbox.width / 2 + halfPadding).attr(\"width\", bbox.width + node.padding).attr(\"height\", bbox.height + node.padding);\n log.info(\"Circle main\");\n updateNodeBounds(node, circle2);\n node.intersect = function(point2) {\n log.info(\"Circle intersect\", node, bbox.width / 2 + halfPadding, point2);\n return intersect.circle(node, bbox.width / 2 + halfPadding, point2);\n };\n return shapeSvg;\n};\nconst doublecircle = async (parent, node) => {\n const { shapeSvg, bbox, halfPadding } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const gap = 5;\n const circleGroup = shapeSvg.insert(\"g\", \":first-child\");\n const outerCircle = circleGroup.insert(\"circle\");\n const innerCircle = circleGroup.insert(\"circle\");\n circleGroup.attr(\"class\", node.class);\n outerCircle.attr(\"style\", node.style).attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"r\", bbox.width / 2 + halfPadding + gap).attr(\"width\", bbox.width + node.padding + gap * 2).attr(\"height\", bbox.height + node.padding + gap * 2);\n innerCircle.attr(\"style\", node.style).attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"r\", bbox.width / 2 + halfPadding).attr(\"width\", bbox.width + node.padding).attr(\"height\", bbox.height + node.padding);\n log.info(\"DoubleCircle main\");\n updateNodeBounds(node, outerCircle);\n node.intersect = function(point2) {\n log.info(\"DoubleCircle intersect\", node, bbox.width / 2 + halfPadding + gap, point2);\n return intersect.circle(node, bbox.width / 2 + halfPadding + gap, point2);\n };\n return shapeSvg;\n};\nconst subroutine = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n 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 el.attr(\"style\", node.style);\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n return intersect.polygon(node, points, point2);\n };\n return shapeSvg;\n};\nconst start = (parent, node) => {\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"node default\").attr(\"id\", node.domId || node.id);\n const circle2 = shapeSvg.insert(\"circle\", \":first-child\");\n circle2.attr(\"class\", \"state-start\").attr(\"r\", 7).attr(\"width\", 14).attr(\"height\", 14);\n updateNodeBounds(node, circle2);\n node.intersect = function(point2) {\n return intersect.circle(node, 7, point2);\n };\n return shapeSvg;\n};\nconst forkJoin = (parent, node, dir) => {\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"node default\").attr(\"id\", node.domId || node.id);\n let width = 70;\n let height = 10;\n if (dir === \"LR\") {\n width = 10;\n height = 70;\n }\n const shape = shapeSvg.append(\"rect\").attr(\"x\", -1 * width / 2).attr(\"y\", -1 * height / 2).attr(\"width\", width).attr(\"height\", height).attr(\"class\", \"fork-join\");\n updateNodeBounds(node, shape);\n node.height = node.height + node.padding / 2;\n node.width = node.width + node.padding / 2;\n node.intersect = function(point2) {\n return intersect.rect(node, point2);\n };\n return shapeSvg;\n};\nconst end = (parent, node) => {\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"node default\").attr(\"id\", node.domId || node.id);\n const innerCircle = shapeSvg.insert(\"circle\", \":first-child\");\n const circle2 = shapeSvg.insert(\"circle\", \":first-child\");\n circle2.attr(\"class\", \"state-start\").attr(\"r\", 7).attr(\"width\", 14).attr(\"height\", 14);\n innerCircle.attr(\"class\", \"state-end\").attr(\"r\", 5).attr(\"width\", 10).attr(\"height\", 10);\n updateNodeBounds(node, circle2);\n node.intersect = function(point2) {\n return intersect.circle(node, 7, point2);\n };\n return shapeSvg;\n};\nconst class_box = (parent, node) => {\n const halfPadding = node.padding / 2;\n const rowPadding = 4;\n const lineHeight = 8;\n let classes;\n if (!node.classes) {\n classes = \"node default\";\n } else {\n classes = \"node \" + node.classes;\n }\n const shapeSvg = parent.insert(\"g\").attr(\"class\", classes).attr(\"id\", node.domId || node.id);\n const rect2 = 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 const labelContainer = shapeSvg.insert(\"g\").attr(\"class\", \"label\");\n let verticalPos = 0;\n const hasInterface = node.classData.annotations && node.classData.annotations[0];\n const interfaceLabelText = node.classData.annotations[0] ? \"«\" + node.classData.annotations[0] + \"»\" : \"\";\n const interfaceLabel = labelContainer.node().appendChild(createLabel$1(interfaceLabelText, node.labelStyle, true, true));\n let interfaceBBox = interfaceLabel.getBBox();\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n const div = interfaceLabel.children[0];\n const dv = select(interfaceLabel);\n interfaceBBox = div.getBoundingClientRect();\n dv.attr(\"width\", interfaceBBox.width);\n dv.attr(\"height\", interfaceBBox.height);\n }\n if (node.classData.annotations[0]) {\n maxHeight += interfaceBBox.height + rowPadding;\n maxWidth += interfaceBBox.width;\n }\n let classTitleString = node.classData.label;\n if (node.classData.type !== void 0 && node.classData.type !== \"\") {\n if (getConfig().flowchart.htmlLabels) {\n classTitleString += \"<\" + node.classData.type + \">\";\n } else {\n classTitleString += \"<\" + node.classData.type + \">\";\n }\n }\n const classTitleLabel = labelContainer.node().appendChild(createLabel$1(classTitleString, node.labelStyle, true, true));\n select(classTitleLabel).attr(\"class\", \"classTitle\");\n let classTitleBBox = classTitleLabel.getBBox();\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n const div = classTitleLabel.children[0];\n const dv = select(classTitleLabel);\n classTitleBBox = div.getBoundingClientRect();\n dv.attr(\"width\", classTitleBBox.width);\n dv.attr(\"height\", classTitleBBox.height);\n }\n maxHeight += classTitleBBox.height + rowPadding;\n if (classTitleBBox.width > maxWidth) {\n maxWidth = classTitleBBox.width;\n }\n const classAttributes = [];\n node.classData.members.forEach((member) => {\n const parsedInfo = member.getDisplayDetails();\n let parsedText = parsedInfo.displayText;\n if (getConfig().flowchart.htmlLabels) {\n parsedText = parsedText.replace(/</g, \"<\").replace(/>/g, \">\");\n }\n const lbl = labelContainer.node().appendChild(\n createLabel$1(\n parsedText,\n parsedInfo.cssStyle ? parsedInfo.cssStyle : node.labelStyle,\n true,\n true\n )\n );\n let bbox = lbl.getBBox();\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n const div = lbl.children[0];\n const dv = select(lbl);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n if (bbox.width > maxWidth) {\n maxWidth = bbox.width;\n }\n maxHeight += bbox.height + rowPadding;\n classAttributes.push(lbl);\n });\n maxHeight += lineHeight;\n const classMethods = [];\n node.classData.methods.forEach((member) => {\n const parsedInfo = member.getDisplayDetails();\n let displayText = parsedInfo.displayText;\n if (getConfig().flowchart.htmlLabels) {\n displayText = displayText.replace(/</g, \"<\").replace(/>/g, \">\");\n }\n const lbl = labelContainer.node().appendChild(\n createLabel$1(\n displayText,\n parsedInfo.cssStyle ? parsedInfo.cssStyle : node.labelStyle,\n true,\n true\n )\n );\n let bbox = lbl.getBBox();\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n const div = lbl.children[0];\n const dv = select(lbl);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n if (bbox.width > maxWidth) {\n maxWidth = bbox.width;\n }\n maxHeight += bbox.height + rowPadding;\n classMethods.push(lbl);\n });\n maxHeight += lineHeight;\n if (hasInterface) {\n let diffX2 = (maxWidth - interfaceBBox.width) / 2;\n select(interfaceLabel).attr(\n \"transform\",\n \"translate( \" + (-1 * maxWidth / 2 + diffX2) + \", \" + -1 * maxHeight / 2 + \")\"\n );\n verticalPos = interfaceBBox.height + rowPadding;\n }\n let diffX = (maxWidth - classTitleBBox.width) / 2;\n select(classTitleLabel).attr(\n \"transform\",\n \"translate( \" + (-1 * maxWidth / 2 + diffX) + \", \" + (-1 * maxHeight / 2 + verticalPos) + \")\"\n );\n verticalPos += classTitleBBox.height + rowPadding;\n topLine.attr(\"class\", \"divider\").attr(\"x1\", -maxWidth / 2 - halfPadding).attr(\"x2\", maxWidth / 2 + halfPadding).attr(\"y1\", -maxHeight / 2 - halfPadding + lineHeight + verticalPos).attr(\"y2\", -maxHeight / 2 - halfPadding + lineHeight + verticalPos);\n verticalPos += lineHeight;\n classAttributes.forEach((lbl) => {\n select(lbl).attr(\n \"transform\",\n \"translate( \" + -maxWidth / 2 + \", \" + (-1 * maxHeight / 2 + verticalPos + lineHeight / 2) + \")\"\n );\n const memberBBox = lbl == null ? void 0 : lbl.getBBox();\n verticalPos += ((memberBBox == null ? void 0 : memberBBox.height) ?? 0) + rowPadding;\n });\n verticalPos += lineHeight;\n bottomLine.attr(\"class\", \"divider\").attr(\"x1\", -maxWidth / 2 - halfPadding).attr(\"x2\", maxWidth / 2 + halfPadding).attr(\"y1\", -maxHeight / 2 - halfPadding + lineHeight + verticalPos).attr(\"y2\", -maxHeight / 2 - halfPadding + lineHeight + verticalPos);\n verticalPos += lineHeight;\n classMethods.forEach((lbl) => {\n select(lbl).attr(\n \"transform\",\n \"translate( \" + -maxWidth / 2 + \", \" + (-1 * maxHeight / 2 + verticalPos) + \")\"\n );\n const memberBBox = lbl == null ? void 0 : lbl.getBBox();\n verticalPos += ((memberBBox == null ? void 0 : memberBBox.height) ?? 0) + rowPadding;\n });\n rect2.attr(\"style\", node.style).attr(\"class\", \"outer title-state\").attr(\"x\", -maxWidth / 2 - halfPadding).attr(\"y\", -(maxHeight / 2) - halfPadding).attr(\"width\", maxWidth + node.padding).attr(\"height\", maxHeight + node.padding);\n updateNodeBounds(node, rect2);\n node.intersect = function(point2) {\n return intersect.rect(node, point2);\n };\n return shapeSvg;\n};\nconst shapes = {\n rhombus: question,\n composite,\n question,\n rect,\n labelRect,\n rectWithTitle,\n choice,\n circle,\n doublecircle,\n stadium,\n hexagon,\n block_arrow,\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: note$1,\n subroutine,\n fork: forkJoin,\n join: forkJoin,\n class_box\n};\nlet nodeElems = {};\nconst insertNode = async (elem, node, dir) => {\n let newEl;\n let el;\n if (node.link) {\n let target;\n if (getConfig().securityLevel === \"sandbox\") {\n target = \"_top\";\n } else if (node.linkTarget) {\n target = node.linkTarget || \"_blank\";\n }\n newEl = elem.insert(\"svg:a\").attr(\"xlink:href\", node.link).attr(\"target\", target);\n el = await shapes[node.shape](newEl, node, dir);\n } else {\n el = await shapes[node.shape](elem, node, dir);\n newEl = el;\n }\n if (node.tooltip) {\n el.attr(\"title\", node.tooltip);\n }\n if (node.class) {\n el.attr(\"class\", \"node default \" + node.class);\n }\n newEl.attr(\"data-node\", \"true\");\n newEl.attr(\"data-id\", node.id);\n nodeElems[node.id] = newEl;\n if (node.haveCallback) {\n nodeElems[node.id].attr(\"class\", nodeElems[node.id].attr(\"class\") + \" clickable\");\n }\n return newEl;\n};\nconst setNodeElem = (elem, node) => {\n nodeElems[node.id] = elem;\n};\nconst clear$1 = () => {\n nodeElems = {};\n};\nconst positionNode = (node) => {\n const el = nodeElems[node.id];\n log.trace(\n \"Transforming node\",\n node.diff,\n node,\n \"translate(\" + (node.x - node.width / 2 - 5) + \", \" + node.width / 2 + \")\"\n );\n const padding = 8;\n const diff = node.diff || 0;\n if (node.clusterNode) {\n el.attr(\n \"transform\",\n \"translate(\" + (node.x + diff - node.width / 2) + \", \" + (node.y - node.height / 2 - padding) + \")\"\n );\n } else {\n el.attr(\"transform\", \"translate(\" + node.x + \", \" + node.y + \")\");\n }\n return diff;\n};\nconst getSubGraphTitleMargins = ({\n flowchart\n}) => {\n var _a, _b;\n const subGraphTitleTopMargin = ((_a = flowchart == null ? void 0 : flowchart.subGraphTitleMargin) == null ? void 0 : _a.top) ?? 0;\n const subGraphTitleBottomMargin = ((_b = flowchart == null ? void 0 : flowchart.subGraphTitleMargin) == null ? void 0 : _b.bottom) ?? 0;\n const subGraphTitleTotalMargin = subGraphTitleTopMargin + subGraphTitleBottomMargin;\n return {\n subGraphTitleTopMargin,\n subGraphTitleBottomMargin,\n subGraphTitleTotalMargin\n };\n};\nconst markerOffsets = {\n aggregation: 18,\n extension: 18,\n composition: 18,\n dependency: 6,\n lollipop: 13.5,\n arrow_point: 5.3\n};\nfunction calculateDeltaAndAngle(point1, point2) {\n if (point1 === void 0 || point2 === void 0) {\n return { angle: 0, deltaX: 0, deltaY: 0 };\n }\n point1 = pointTransformer(point1);\n point2 = pointTransformer(point2);\n const [x1, y1] = [point1.x, point1.y];\n const [x2, y2] = [point2.x, point2.y];\n const deltaX = x2 - x1;\n const deltaY = y2 - y1;\n return { angle: Math.atan(deltaY / deltaX), deltaX, deltaY };\n}\nconst pointTransformer = (data) => {\n if (Array.isArray(data)) {\n return { x: data[0], y: data[1] };\n }\n return data;\n};\nconst getLineFunctionsWithOffset = (edge) => {\n return {\n x: function(d, i, data) {\n let offset = 0;\n if (i === 0 && Object.hasOwn(markerOffsets, edge.arrowTypeStart)) {\n const { angle, deltaX } = calculateDeltaAndAngle(data[0], data[1]);\n offset = markerOffsets[edge.arrowTypeStart] * Math.cos(angle) * (deltaX >= 0 ? 1 : -1);\n } else if (i === data.length - 1 && Object.hasOwn(markerOffsets, edge.arrowTypeEnd)) {\n const { angle, deltaX } = calculateDeltaAndAngle(\n data[data.length - 1],\n data[data.length - 2]\n );\n offset = markerOffsets[edge.arrowTypeEnd] * Math.cos(angle) * (deltaX >= 0 ? 1 : -1);\n }\n return pointTransformer(d).x + offset;\n },\n y: function(d, i, data) {\n let offset = 0;\n if (i === 0 && Object.hasOwn(markerOffsets, edge.arrowTypeStart)) {\n const { angle, deltaY } = calculateDeltaAndAngle(data[0], data[1]);\n offset = markerOffsets[edge.arrowTypeStart] * Math.abs(Math.sin(angle)) * (deltaY >= 0 ? 1 : -1);\n } else if (i === data.length - 1 && Object.hasOwn(markerOffsets, edge.arrowTypeEnd)) {\n const { angle, deltaY } = calculateDeltaAndAngle(\n data[data.length - 1],\n data[data.length - 2]\n );\n offset = markerOffsets[edge.arrowTypeEnd] * Math.abs(Math.sin(angle)) * (deltaY >= 0 ? 1 : -1);\n }\n return pointTransformer(d).y + offset;\n }\n };\n};\nconst addEdgeMarkers = (svgPath, edge, url, id, diagramType) => {\n if (edge.arrowTypeStart) {\n addEdgeMarker(svgPath, \"start\", edge.arrowTypeStart, url, id, diagramType);\n }\n if (edge.arrowTypeEnd) {\n addEdgeMarker(svgPath, \"end\", edge.arrowTypeEnd, url, id, diagramType);\n }\n};\nconst arrowTypesMap = {\n arrow_cross: \"cross\",\n arrow_point: \"point\",\n arrow_barb: \"barb\",\n arrow_circle: \"circle\",\n aggregation: \"aggregation\",\n extension: \"extension\",\n composition: \"composition\",\n dependency: \"dependency\",\n lollipop: \"lollipop\"\n};\nconst addEdgeMarker = (svgPath, position, arrowType, url, id, diagramType) => {\n const endMarkerType = arrowTypesMap[arrowType];\n if (!endMarkerType) {\n log.warn(`Unknown arrow type: ${arrowType}`);\n return;\n }\n const suffix = position === \"start\" ? \"Start\" : \"End\";\n svgPath.attr(`marker-${position}`, `url(${url}#${id}_${diagramType}-${endMarkerType}${suffix})`);\n};\nlet edgeLabels = {};\nlet terminalLabels = {};\nconst clear = () => {\n edgeLabels = {};\n terminalLabels = {};\n};\nconst insertEdgeLabel = (elem, edge) => {\n const useHtmlLabels = evaluate(getConfig().flowchart.htmlLabels);\n const labelElement = edge.labelType === \"markdown\" ? createText(elem, edge.label, {\n style: edge.labelStyle,\n useHtmlLabels,\n addSvgBackground: true\n }) : createLabel$1(edge.label, edge.labelStyle);\n const edgeLabel = elem.insert(\"g\").attr(\"class\", \"edgeLabel\");\n const label = edgeLabel.insert(\"g\").attr(\"class\", \"label\");\n label.node().appendChild(labelElement);\n let bbox = labelElement.getBBox();\n if (useHtmlLabels) {\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 edgeLabels[edge.id] = edgeLabel;\n edge.width = bbox.width;\n edge.height = bbox.height;\n let fo;\n if (edge.startLabelLeft) {\n const startLabelElement = createLabel$1(edge.startLabelLeft, edge.labelStyle);\n const startEdgeLabelLeft = elem.insert(\"g\").attr(\"class\", \"edgeTerminals\");\n const inner = startEdgeLabelLeft.insert(\"g\").attr(\"class\", \"inner\");\n fo = inner.node().appendChild(startLabelElement);\n const slBox = startLabelElement.getBBox();\n inner.attr(\"transform\", \"translate(\" + -slBox.width / 2 + \", \" + -slBox.height / 2 + \")\");\n if (!terminalLabels[edge.id]) {\n terminalLabels[edge.id] = {};\n }\n terminalLabels[edge.id].startLeft = startEdgeLabelLeft;\n setTerminalWidth(fo, edge.startLabelLeft);\n }\n if (edge.startLabelRight) {\n const startLabelElement = createLabel$1(edge.startLabelRight, edge.labelStyle);\n const startEdgeLabelRight = elem.insert(\"g\").attr(\"class\", \"edgeTerminals\");\n const inner = startEdgeLabelRight.insert(\"g\").attr(\"class\", \"inner\");\n fo = startEdgeLabelRight.node().appendChild(startLabelElement);\n inner.node().appendChild(startLabelElement);\n const slBox = startLabelElement.getBBox();\n inner.attr(\"transform\", \"translate(\" + -slBox.width / 2 + \", \" + -slBox.height / 2 + \")\");\n if (!terminalLabels[edge.id]) {\n terminalLabels[edge.id] = {};\n }\n terminalLabels[edge.id].startRight = startEdgeLabelRight;\n setTerminalWidth(fo, edge.startLabelRight);\n }\n if (edge.endLabelLeft) {\n const endLabelElement = createLabel$1(edge.endLabelLeft, edge.labelStyle);\n const endEdgeLabelLeft = elem.insert(\"g\").attr(\"class\", \"edgeTerminals\");\n const inner = endEdgeLabelLeft.insert(\"g\").attr(\"class\", \"inner\");\n fo = inner.node().appendChild(endLabelElement);\n const slBox = endLabelElement.getBBox();\n inner.attr(\"transform\", \"translate(\" + -slBox.width / 2 + \", \" + -slBox.height / 2 + \")\");\n endEdgeLabelLeft.node().appendChild(endLabelElement);\n if (!terminalLabels[edge.id]) {\n terminalLabels[edge.id] = {};\n }\n terminalLabels[edge.id].endLeft = endEdgeLabelLeft;\n setTerminalWidth(fo, edge.endLabelLeft);\n }\n if (edge.endLabelRight) {\n const endLabelElement = createLabel$1(edge.endLabelRight, edge.labelStyle);\n const endEdgeLabelRight = elem.insert(\"g\").attr(\"class\", \"edgeTerminals\");\n const inner = endEdgeLabelRight.insert(\"g\").attr(\"class\", \"inner\");\n fo = inner.node().appendChild(endLabelElement);\n const slBox = endLabelElement.getBBox();\n inner.attr(\"transform\", \"translate(\" + -slBox.width / 2 + \", \" + -slBox.height / 2 + \")\");\n endEdgeLabelRight.node().appendChild(endLabelElement);\n if (!terminalLabels[edge.id]) {\n terminalLabels[edge.id] = {};\n }\n terminalLabels[edge.id].endRight = endEdgeLabelRight;\n setTerminalWidth(fo, edge.endLabelRight);\n }\n return labelElement;\n};\nfunction setTerminalWidth(fo, value) {\n if (getConfig().flowchart.htmlLabels && fo) {\n fo.style.width = value.length * 9 + \"px\";\n fo.style.height = \"12px\";\n }\n}\nconst positionEdgeLabel = (edge, paths) => {\n log.debug(\"Moving label abc88 \", edge.id, edge.label, edgeLabels[edge.id], paths);\n let path = paths.updatedPath ? paths.updatedPath : paths.originalPath;\n const siteConfig = getConfig();\n const { subGraphTitleTotalMargin } = getSubGraphTitleMargins(siteConfig);\n if (edge.label) {\n const el = edgeLabels[edge.id];\n let x = edge.x;\n let y = edge.y;\n if (path) {\n const pos = utils.calcLabelPosition(path);\n log.debug(\n \"Moving label \" + edge.label + \" from (\",\n x,\n \",\",\n y,\n \") to (\",\n pos.x,\n \",\",\n pos.y,\n \") abc88\"\n );\n if (paths.updatedPath) {\n x = pos.x;\n y = pos.y;\n }\n }\n el.attr(\"transform\", `translate(${x}, ${y + subGraphTitleTotalMargin / 2})`);\n }\n if (edge.startLabelLeft) {\n const el = terminalLabels[edge.id].startLeft;\n let x = edge.x;\n let y = edge.y;\n if (path) {\n const pos = utils.calcTerminalLabelPosition(edge.arrowTypeStart ? 10 : 0, \"start_left\", path);\n x = pos.x;\n y = pos.y;\n }\n el.attr(\"transform\", `translate(${x}, ${y})`);\n }\n if (edge.startLabelRight) {\n const el = terminalLabels[edge.id].startRight;\n let x = edge.x;\n let y = edge.y;\n if (path) {\n const pos = utils.calcTerminalLabelPosition(\n edge.arrowTypeStart ? 10 : 0,\n \"start_right\",\n path\n );\n x = pos.x;\n y = pos.y;\n }\n el.attr(\"transform\", `translate(${x}, ${y})`);\n }\n if (edge.endLabelLeft) {\n const el = terminalLabels[edge.id].endLeft;\n let x = edge.x;\n let y = edge.y;\n if (path) {\n const pos = utils.calcTerminalLabelPosition(edge.arrowTypeEnd ? 10 : 0, \"end_left\", path);\n x = pos.x;\n y = pos.y;\n }\n el.attr(\"transform\", `translate(${x}, ${y})`);\n }\n if (edge.endLabelRight) {\n const el = terminalLabels[edge.id].endRight;\n let x = edge.x;\n let y = edge.y;\n if (path) {\n const pos = utils.calcTerminalLabelPosition(edge.arrowTypeEnd ? 10 : 0, \"end_right\", path);\n x = pos.x;\n y = pos.y;\n }\n el.attr(\"transform\", `translate(${x}, ${y})`);\n }\n};\nconst outsideNode = (node, point2) => {\n const x = node.x;\n const y = node.y;\n const dx = Math.abs(point2.x - x);\n const dy = Math.abs(point2.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};\nconst intersection = (node, outsidePoint, insidePoint) => {\n log.debug(`intersection calc abc89:\n outsidePoint: ${JSON.stringify(outsidePoint)}\n insidePoint : ${JSON.stringify(insidePoint)}\n node : x:${node.x} y:${node.y} w:${node.width} h:${node.height}`);\n const x = node.x;\n const y = node.y;\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 const Q = Math.abs(outsidePoint.y - insidePoint.y);\n const R = Math.abs(outsidePoint.x - insidePoint.x);\n if (Math.abs(y - outsidePoint.y) * w > Math.abs(x - outsidePoint.x) * h) {\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 : insidePoint.x - R + r,\n y: insidePoint.y < outsidePoint.y ? insidePoint.y + Q - q : insidePoint.y - Q + q\n };\n if (r === 0) {\n res.x = outsidePoint.x;\n res.y = outsidePoint.y;\n }\n if (R === 0) {\n res.x = outsidePoint.x;\n }\n if (Q === 0) {\n res.y = outsidePoint.y;\n }\n log.debug(`abc89 topp/bott calc, Q ${Q}, q ${q}, R ${R}, r ${r}`, res);\n return res;\n } else {\n if (insidePoint.x < outsidePoint.x) {\n r = outsidePoint.x - w - x;\n } else {\n r = x - w - outsidePoint.x;\n }\n let q = Q * r / R;\n let _x = insidePoint.x < outsidePoint.x ? insidePoint.x + R - r : insidePoint.x - R + r;\n let _y = insidePoint.y < outsidePoint.y ? insidePoint.y + q : insidePoint.y - q;\n log.debug(`sides calc abc89, Q ${Q}, q ${q}, R ${R}, r ${r}`, { _x, _y });\n if (r === 0) {\n _x = outsidePoint.x;\n _y = outsidePoint.y;\n }\n if (R === 0) {\n _x = outsidePoint.x;\n }\n if (Q === 0) {\n _y = outsidePoint.y;\n }\n return { x: _x, y: _y };\n }\n};\nconst cutPathAtIntersect = (_points, boundaryNode) => {\n log.debug(\"abc88 cutPathAtIntersect\", _points, boundaryNode);\n let points = [];\n let lastPointOutside = _points[0];\n let isInside = false;\n _points.forEach((point2) => {\n if (!outsideNode(boundaryNode, point2) && !isInside) {\n const inter = intersection(boundaryNode, lastPointOutside, point2);\n let pointPresent = false;\n points.forEach((p) => {\n pointPresent = pointPresent || p.x === inter.x && p.y === inter.y;\n });\n if (!points.some((e) => e.x === inter.x && e.y === inter.y)) {\n points.push(inter);\n }\n isInside = true;\n } else {\n lastPointOutside = point2;\n if (!isInside) {\n points.push(point2);\n }\n }\n });\n return points;\n};\nconst insertEdge = function(elem, e, edge, clusterDb, diagramType, graph, id) {\n let points = edge.points;\n log.debug(\"abc88 InsertEdge: edge=\", edge, \"e=\", e);\n let pointsHasChanged = false;\n const tail = graph.node(e.v);\n var head = graph.node(e.w);\n if ((head == null ? void 0 : head.intersect) && (tail == null ? void 0 : tail.intersect)) {\n points = points.slice(1, edge.points.length - 1);\n points.unshift(tail.intersect(points[0]));\n points.push(head.intersect(points[points.length - 1]));\n }\n if (edge.toCluster) {\n log.debug(\"to cluster abc88\", clusterDb[edge.toCluster]);\n points = cutPathAtIntersect(edge.points, clusterDb[edge.toCluster].node);\n pointsHasChanged = true;\n }\n if (edge.fromCluster) {\n log.debug(\"from cluster abc88\", clusterDb[edge.fromCluster]);\n points = cutPathAtIntersect(points.reverse(), clusterDb[edge.fromCluster].node).reverse();\n pointsHasChanged = true;\n }\n const lineData = points.filter((p) => !Number.isNaN(p.y));\n let curve = curveBasis;\n if (edge.curve && (diagramType === \"graph\" || diagramType === \"flowchart\")) {\n curve = edge.curve;\n }\n const { x, y } = getLineFunctionsWithOffset(edge);\n const lineFunction = line().x(x).y(y).curve(curve);\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 case \"invisible\":\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 const svgPath = elem.append(\"path\").attr(\"d\", lineFunction(lineData)).attr(\"id\", edge.id).attr(\"class\", \" \" + strokeClasses + (edge.classes ? \" \" + edge.classes : \"\")).attr(\"style\", edge.style);\n let url = \"\";\n if (getConfig().flowchart.arrowMarkerAbsolute || getConfig().state.arrowMarkerAbsolute) {\n url = window.location.protocol + \"//\" + window.location.host + window.location.pathname + window.location.search;\n url = url.replace(/\\(/g, \"\\\\(\");\n url = url.replace(/\\)/g, \"\\\\)\");\n }\n addEdgeMarkers(svgPath, edge, url, id, diagramType);\n let paths = {};\n if (pointsHasChanged) {\n paths.updatedPath = points;\n }\n paths.originalPath = edge.points;\n return paths;\n};\nexport {\n insertMarkers$1 as a,\n clear$1 as b,\n createLabel$1 as c,\n clear as d,\n insertNode as e,\n insertEdgeLabel as f,\n getSubGraphTitleMargins as g,\n insertEdge as h,\n intersectRect$1 as i,\n positionEdgeLabel as j,\n getLineFunctionsWithOffset as k,\n labelHelper as l,\n addEdgeMarkers as m,\n positionNode as p,\n setNodeElem as s,\n updateNodeBounds as u\n};\n","import { c as getConfig, s as setAccTitle, g as getAccTitle, b as setAccDescription, a as getAccDescription, q as setDiagramTitle, t as getDiagramTitle, l as log, v as clear$1, u as utils, i as configureSvgSize, x as parseGenericTypes } from \"./mermaid-f47111a7.js\";\nimport * as graphlib from \"dagre-d3-es/src/graphlib/index.js\";\nimport { select, line, curveBasis } from \"d3\";\nimport { layout } from \"dagre-d3-es/src/dagre/index.js\";\nimport { v5 } from \"uuid\";\nimport \"ts-dedent\";\nimport \"dayjs\";\nimport \"@braintree/sanitize-url\";\nimport \"dompurify\";\nimport \"khroma\";\nimport \"lodash-es/memoize.js\";\nimport \"lodash-es/merge.js\";\nimport \"stylis\";\nimport \"lodash-es/isEmpty.js\";\nvar parser = function() {\n var o = function(k, v, o2, l) {\n for (o2 = o2 || {}, l = k.length; l--; o2[k[l]] = v)\n ;\n return o2;\n }, $V0 = [6, 8, 10, 20, 22, 24, 26, 27, 28], $V1 = [1, 10], $V2 = [1, 11], $V3 = [1, 12], $V4 = [1, 13], $V5 = [1, 14], $V6 = [1, 15], $V7 = [1, 21], $V8 = [1, 22], $V9 = [1, 23], $Va = [1, 24], $Vb = [1, 25], $Vc = [6, 8, 10, 13, 15, 18, 19, 20, 22, 24, 26, 27, 28, 41, 42, 43, 44, 45], $Vd = [1, 34], $Ve = [27, 28, 46, 47], $Vf = [41, 42, 43, 44, 45], $Vg = [17, 34], $Vh = [1, 54], $Vi = [1, 53], $Vj = [17, 34, 36, 38];\n var parser2 = {\n trace: function trace() {\n },\n yy: {},\n symbols_: { \"error\": 2, \"start\": 3, \"ER_DIAGRAM\": 4, \"document\": 5, \"EOF\": 6, \"line\": 7, \"SPACE\": 8, \"statement\": 9, \"NEWLINE\": 10, \"entityName\": 11, \"relSpec\": 12, \":\": 13, \"role\": 14, \"BLOCK_START\": 15, \"attributes\": 16, \"BLOCK_STOP\": 17, \"SQS\": 18, \"SQE\": 19, \"title\": 20, \"title_value\": 21, \"acc_title\": 22, \"acc_title_value\": 23, \"acc_descr\": 24, \"acc_descr_value\": 25, \"acc_descr_multiline_value\": 26, \"ALPHANUM\": 27, \"ENTITY_NAME\": 28, \"attribute\": 29, \"attributeType\": 30, \"attributeName\": 31, \"attributeKeyTypeList\": 32, \"attributeComment\": 33, \"ATTRIBUTE_WORD\": 34, \"attributeKeyType\": 35, \"COMMA\": 36, \"ATTRIBUTE_KEY\": 37, \"COMMENT\": 38, \"cardinality\": 39, \"relType\": 40, \"ZERO_OR_ONE\": 41, \"ZERO_OR_MORE\": 42, \"ONE_OR_MORE\": 43, \"ONLY_ONE\": 44, \"MD_PARENT\": 45, \"NON_IDENTIFYING\": 46, \"IDENTIFYING\": 47, \"WORD\": 48, \"$accept\": 0, \"$end\": 1 },\n terminals_: { 2: \"error\", 4: \"ER_DIAGRAM\", 6: \"EOF\", 8: \"SPACE\", 10: \"NEWLINE\", 13: \":\", 15: \"BLOCK_START\", 17: \"BLOCK_STOP\", 18: \"SQS\", 19: \"SQE\", 20: \"title\", 21: \"title_value\", 22: \"acc_title\", 23: \"acc_title_value\", 24: \"acc_descr\", 25: \"acc_descr_value\", 26: \"acc_descr_multiline_value\", 27: \"ALPHANUM\", 28: \"ENTITY_NAME\", 34: \"ATTRIBUTE_WORD\", 36: \"COMMA\", 37: \"ATTRIBUTE_KEY\", 38: \"COMMENT\", 41: \"ZERO_OR_ONE\", 42: \"ZERO_OR_MORE\", 43: \"ONE_OR_MORE\", 44: \"ONLY_ONE\", 45: \"MD_PARENT\", 46: \"NON_IDENTIFYING\", 47: \"IDENTIFYING\", 48: \"WORD\" },\n productions_: [0, [3, 3], [5, 0], [5, 2], [7, 2], [7, 1], [7, 1], [7, 1], [9, 5], [9, 4], [9, 3], [9, 1], [9, 7], [9, 6], [9, 4], [9, 2], [9, 2], [9, 2], [9, 1], [11, 1], [11, 1], [16, 1], [16, 2], [29, 2], [29, 3], [29, 3], [29, 4], [30, 1], [31, 1], [32, 1], [32, 3], [35, 1], [33, 1], [12, 3], [39, 1], [39, 1], [39, 1], [39, 1], [39, 1], [40, 1], [40, 1], [14, 1], [14, 1], [14, 1]],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) {\n var $0 = $$.length - 1;\n switch (yystate) {\n case 1:\n break;\n case 2:\n this.$ = [];\n break;\n case 3:\n $$[$0 - 1].push($$[$0]);\n this.$ = $$[$0 - 1];\n break;\n case 4:\n case 5:\n this.$ = $$[$0];\n break;\n case 6:\n case 7:\n this.$ = [];\n break;\n case 8:\n yy.addEntity($$[$0 - 4]);\n yy.addEntity($$[$0 - 2]);\n yy.addRelationship($$[$0 - 4], $$[$0], $$[$0 - 2], $$[$0 - 3]);\n break;\n case 9:\n yy.addEntity($$[$0 - 3]);\n yy.addAttributes($$[$0 - 3], $$[$0 - 1]);\n break;\n case 10:\n yy.addEntity($$[$0 - 2]);\n break;\n case 11:\n yy.addEntity($$[$0]);\n break;\n case 12:\n yy.addEntity($$[$0 - 6], $$[$0 - 4]);\n yy.addAttributes($$[$0 - 6], $$[$0 - 1]);\n break;\n case 13:\n yy.addEntity($$[$0 - 5], $$[$0 - 3]);\n break;\n case 14:\n yy.addEntity($$[$0 - 3], $$[$0 - 1]);\n break;\n case 15:\n case 16:\n this.$ = $$[$0].trim();\n yy.setAccTitle(this.$);\n break;\n case 17:\n case 18:\n this.$ = $$[$0].trim();\n yy.setAccDescription(this.$);\n break;\n case 19:\n case 43:\n this.$ = $$[$0];\n break;\n case 20:\n case 41:\n case 42:\n this.$ = $$[$0].replace(/\"/g, \"\");\n break;\n case 21:\n case 29:\n this.$ = [$$[$0]];\n break;\n case 22:\n $$[$0].push($$[$0 - 1]);\n this.$ = $$[$0];\n break;\n case 23:\n this.$ = { attributeType: $$[$0 - 1], attributeName: $$[$0] };\n break;\n case 24:\n this.$ = { attributeType: $$[$0 - 2], attributeName: $$[$0 - 1], attributeKeyTypeList: $$[$0] };\n break;\n case 25:\n this.$ = { attributeType: $$[$0 - 2], attributeName: $$[$0 - 1], attributeComment: $$[$0] };\n break;\n case 26:\n this.$ = { attributeType: $$[$0 - 3], attributeName: $$[$0 - 2], attributeKeyTypeList: $$[$0 - 1], attributeComment: $$[$0] };\n break;\n case 27:\n case 28:\n case 31:\n this.$ = $$[$0];\n break;\n case 30:\n $$[$0 - 2].push($$[$0]);\n this.$ = $$[$0 - 2];\n break;\n case 32:\n this.$ = $$[$0].replace(/\"/g, \"\");\n break;\n case 33:\n this.$ = { cardA: $$[$0], relType: $$[$0 - 1], cardB: $$[$0 - 2] };\n break;\n case 34:\n this.$ = yy.Cardinality.ZERO_OR_ONE;\n break;\n case 35:\n this.$ = yy.Cardinality.ZERO_OR_MORE;\n break;\n case 36:\n this.$ = yy.Cardinality.ONE_OR_MORE;\n break;\n case 37:\n this.$ = yy.Cardinality.ONLY_ONE;\n break;\n case 38:\n this.$ = yy.Cardinality.MD_PARENT;\n break;\n case 39:\n this.$ = yy.Identification.NON_IDENTIFYING;\n break;\n case 40:\n this.$ = yy.Identification.IDENTIFYING;\n break;\n }\n },\n table: [{ 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: 9, 20: $V1, 22: $V2, 24: $V3, 26: $V4, 27: $V5, 28: $V6 }, o($V0, [2, 7], { 1: [2, 1] }), o($V0, [2, 3]), { 9: 16, 11: 9, 20: $V1, 22: $V2, 24: $V3, 26: $V4, 27: $V5, 28: $V6 }, o($V0, [2, 5]), o($V0, [2, 6]), o($V0, [2, 11], { 12: 17, 39: 20, 15: [1, 18], 18: [1, 19], 41: $V7, 42: $V8, 43: $V9, 44: $Va, 45: $Vb }), { 21: [1, 26] }, { 23: [1, 27] }, { 25: [1, 28] }, o($V0, [2, 18]), o($Vc, [2, 19]), o($Vc, [2, 20]), o($V0, [2, 4]), { 11: 29, 27: $V5, 28: $V6 }, { 16: 30, 17: [1, 31], 29: 32, 30: 33, 34: $Vd }, { 11: 35, 27: $V5, 28: $V6 }, { 40: 36, 46: [1, 37], 47: [1, 38] }, o($Ve, [2, 34]), o($Ve, [2, 35]), o($Ve, [2, 36]), o($Ve, [2, 37]), o($Ve, [2, 38]), o($V0, [2, 15]), o($V0, [2, 16]), o($V0, [2, 17]), { 13: [1, 39] }, { 17: [1, 40] }, o($V0, [2, 10]), { 16: 41, 17: [2, 21], 29: 32, 30: 33, 34: $Vd }, { 31: 42, 34: [1, 43] }, { 34: [2, 27] }, { 19: [1, 44] }, { 39: 45, 41: $V7, 42: $V8, 43: $V9, 44: $Va, 45: $Vb }, o($Vf, [2, 39]), o($Vf, [2, 40]), { 14: 46, 27: [1, 49], 28: [1, 48], 48: [1, 47] }, o($V0, [2, 9]), { 17: [2, 22] }, o($Vg, [2, 23], { 32: 50, 33: 51, 35: 52, 37: $Vh, 38: $Vi }), o([17, 34, 37, 38], [2, 28]), o($V0, [2, 14], { 15: [1, 55] }), o([27, 28], [2, 33]), o($V0, [2, 8]), o($V0, [2, 41]), o($V0, [2, 42]), o($V0, [2, 43]), o($Vg, [2, 24], { 33: 56, 36: [1, 57], 38: $Vi }), o($Vg, [2, 25]), o($Vj, [2, 29]), o($Vg, [2, 32]), o($Vj, [2, 31]), { 16: 58, 17: [1, 59], 29: 32, 30: 33, 34: $Vd }, o($Vg, [2, 26]), { 35: 60, 37: $Vh }, { 17: [1, 61] }, o($V0, [2, 13]), o($Vj, [2, 30]), o($V0, [2, 12])],\n defaultActions: { 34: [2, 27], 41: [2, 22] },\n parseError: 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 },\n parse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = \"\", yylineno = 0, yyleng = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer2 = 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 lexer2.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer2;\n sharedState.yy.parser = this;\n if (typeof lexer2.yylloc == \"undefined\") {\n lexer2.yylloc = {};\n }\n var yyloc = lexer2.yylloc;\n lstack.push(yyloc);\n var ranges = lexer2.options && lexer2.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 lex() {\n var token;\n token = tstack.pop() || lexer2.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, state, action, 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 (lexer2.showPosition) {\n errStr = \"Parse error on line \" + (yylineno + 1) + \":\\n\" + lexer2.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: lexer2.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer2.yylineno,\n loc: yyloc,\n 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(lexer2.yytext);\n lstack.push(lexer2.yylloc);\n stack.push(action[1]);\n symbol = null;\n {\n yyleng = lexer2.yyleng;\n yytext = lexer2.yytext;\n yylineno = lexer2.yylineno;\n yyloc = lexer2.yylloc;\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 var lexer = function() {\n var lexer2 = {\n EOF: 1,\n parseError: 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 // resets the lexer, sets new input\n setInput: 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 // consumes and returns one char from the input\n input: 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 this._input = this._input.slice(1);\n return ch;\n },\n // unshifts one char (or a string) into the input\n unput: function(ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - 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 if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\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 ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len\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 // When called from action, caches matched text and appends it on next action\n more: function() {\n this._more = true;\n return this;\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.\n reject: 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 return this;\n },\n // retain first n characters of the match\n less: function(n) {\n this.unput(this.match.slice(n));\n },\n // displays already matched input, i.e. for error messages\n pastInput: 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 // displays upcoming input, i.e. for error messages\n upcomingInput: 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 // displays the character position where the lexing error occurred, i.e. for error messages\n showPosition: function() {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n // test the lexed token: return FALSE when not a match, otherwise return token\n test_match: function(match, indexed_rule) {\n var token, lines, backup;\n if (this.options.backtrack_lexer) {\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 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 ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length : 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 for (var k in backup) {\n this[k] = backup[k];\n }\n return false;\n }\n return false;\n },\n // return next match in input\n next: function() {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n var token, match, tempMatch, 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;\n } else {\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 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 // return next match that has a token\n lex: function lex() {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\n begin: function begin(condition) {\n this.conditionStack.push(condition);\n },\n // pop the previously active lexer condition state off the condition stack\n popState: 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 // 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 // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\n topState: 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 // alias for begin(condition)\n pushState: function pushState(condition) {\n this.begin(condition);\n },\n // return the number of states currently on the stack\n stateStackSize: function stateStackSize() {\n return this.conditionStack.length;\n },\n options: { \"case-insensitive\": true },\n performAction: function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) {\n switch ($avoiding_name_collisions) {\n case 0:\n this.begin(\"acc_title\");\n return 22;\n case 1:\n this.popState();\n return \"acc_title_value\";\n case 2:\n this.begin(\"acc_descr\");\n return 24;\n case 3:\n this.popState();\n return \"acc_descr_value\";\n case 4:\n this.begin(\"acc_descr_multiline\");\n break;\n case 5:\n this.popState();\n break;\n case 6:\n return \"acc_descr_multiline_value\";\n case 7:\n return 10;\n case 8:\n break;\n case 9:\n return 8;\n case 10:\n return 28;\n case 11:\n return 48;\n case 12:\n return 4;\n case 13:\n this.begin(\"block\");\n return 15;\n case 14:\n return 36;\n case 15:\n break;\n case 16:\n return 37;\n case 17:\n return 34;\n case 18:\n return 34;\n case 19:\n return 38;\n case 20:\n break;\n case 21:\n this.popState();\n return 17;\n case 22:\n return yy_.yytext[0];\n case 23:\n return 18;\n case 24:\n return 19;\n case 25:\n return 41;\n case 26:\n return 43;\n case 27:\n return 43;\n case 28:\n return 43;\n case 29:\n return 41;\n case 30:\n return 41;\n case 31:\n return 42;\n case 32:\n return 42;\n case 33:\n return 42;\n case 34:\n return 42;\n case 35:\n return 42;\n case 36:\n return 43;\n case 37:\n return 42;\n case 38:\n return 43;\n case 39:\n return 44;\n case 40:\n return 44;\n case 41:\n return 44;\n case 42:\n return 44;\n case 43:\n return 41;\n case 44:\n return 42;\n case 45:\n return 43;\n case 46:\n return 45;\n case 47:\n return 46;\n case 48:\n return 47;\n case 49:\n return 47;\n case 50:\n return 46;\n case 51:\n return 46;\n case 52:\n return 46;\n case 53:\n return 27;\n case 54:\n return yy_.yytext[0];\n case 55:\n return 6;\n }\n },\n rules: [/^(?:accTitle\\s*:\\s*)/i, /^(?:(?!\\n||)*[^\\n]*)/i, /^(?:accDescr\\s*:\\s*)/i, /^(?:(?!\\n||)*[^\\n]*)/i, /^(?:accDescr\\s*\\{\\s*)/i, /^(?:[\\}])/i, /^(?:[^\\}]*)/i, /^(?:[\\n]+)/i, /^(?:\\s+)/i, /^(?:[\\s]+)/i, /^(?:\"[^\"%\\r\\n\\v\\b\\\\]+\")/i, /^(?:\"[^\"]*\")/i, /^(?:erDiagram\\b)/i, /^(?:\\{)/i, /^(?:,)/i, /^(?:\\s+)/i, /^(?:\\b((?:PK)|(?:FK)|(?:UK))\\b)/i, /^(?:(.*?)[~](.*?)*[~])/i, /^(?:[\\*A-Za-z_][A-Za-z0-9\\-_\\[\\]\\(\\)]*)/i, /^(?:\"[^\"]*\")/i, /^(?:[\\n]+)/i, /^(?:\\})/i, /^(?:.)/i, /^(?:\\[)/i, /^(?:\\])/i, /^(?:one or zero\\b)/i, /^(?:one or more\\b)/i, /^(?:one or many\\b)/i, /^(?:1\\+)/i, /^(?:\\|o\\b)/i, /^(?:zero or one\\b)/i, /^(?:zero or more\\b)/i, /^(?:zero or many\\b)/i, /^(?:0\\+)/i, /^(?:\\}o\\b)/i, /^(?:many\\(0\\))/i, /^(?:many\\(1\\))/i, /^(?:many\\b)/i, /^(?:\\}\\|)/i, /^(?:one\\b)/i, /^(?:only one\\b)/i, /^(?:1\\b)/i, /^(?:\\|\\|)/i, /^(?:o\\|)/i, /^(?:o\\{)/i, /^(?:\\|\\{)/i, /^(?:\\s*u\\b)/i, /^(?:\\.\\.)/i, /^(?:--)/i, /^(?:to\\b)/i, /^(?:optionally to\\b)/i, /^(?:\\.-)/i, /^(?:-\\.)/i, /^(?:[A-Za-z_][A-Za-z0-9\\-_]*)/i, /^(?:.)/i, /^(?:$)/i],\n conditions: { \"acc_descr_multiline\": { \"rules\": [5, 6], \"inclusive\": false }, \"acc_descr\": { \"rules\": [3], \"inclusive\": false }, \"acc_title\": { \"rules\": [1], \"inclusive\": false }, \"block\": { \"rules\": [14, 15, 16, 17, 18, 19, 20, 21, 22], \"inclusive\": false }, \"INITIAL\": { \"rules\": [0, 2, 4, 7, 8, 9, 10, 11, 12, 13, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], \"inclusive\": true } }\n };\n return lexer2;\n }();\n parser2.lexer = lexer;\n function Parser() {\n this.yy = {};\n }\n Parser.prototype = parser2;\n parser2.Parser = Parser;\n return new Parser();\n}();\nparser.parser = parser;\nconst erParser = parser;\nlet entities = {};\nlet relationships = [];\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 MD_PARENT: \"MD_PARENT\"\n};\nconst Identification = {\n NON_IDENTIFYING: \"NON_IDENTIFYING\",\n IDENTIFYING: \"IDENTIFYING\"\n};\nconst addEntity = function(name, alias = void 0) {\n if (entities[name] === void 0) {\n entities[name] = { attributes: [], alias };\n log.info(\"Added new entity :\", name);\n } else if (entities[name] && !entities[name].alias && alias) {\n entities[name].alias = alias;\n log.info(`Add alias '${alias}' to entity '${name}'`);\n }\n return entities[name];\n};\nconst getEntities = () => entities;\nconst addAttributes = function(entityName, attribs) {\n let entity = addEntity(entityName);\n let i;\n for (i = attribs.length - 1; i >= 0; i--) {\n entity.attributes.push(attribs[i]);\n log.debug(\"Added attribute \", attribs[i].attributeName);\n }\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 relationships.push(rel);\n log.debug(\"Added new relationship :\", rel);\n};\nconst getRelationships = () => relationships;\nconst clear = function() {\n entities = {};\n relationships = [];\n clear$1();\n};\nconst erDb = {\n Cardinality,\n Identification,\n getConfig: () => getConfig().er,\n addEntity,\n addAttributes,\n getEntities,\n addRelationship,\n getRelationships,\n clear,\n setAccTitle,\n getAccTitle,\n setAccDescription,\n getAccDescription,\n setDiagramTitle,\n getDiagramTitle\n};\nconst 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 MD_PARENT_END: \"MD_PARENT_END\",\n MD_PARENT_START: \"MD_PARENT_START\"\n};\nconst insertMarkers = function(elem, conf2) {\n let marker;\n elem.append(\"defs\").append(\"marker\").attr(\"id\", ERMarkers.MD_PARENT_START).attr(\"refX\", 0).attr(\"refY\", 7).attr(\"markerWidth\", 190).attr(\"markerHeight\", 240).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 18,7 L9,13 L1,7 L9,1 Z\");\n elem.append(\"defs\").append(\"marker\").attr(\"id\", ERMarkers.MD_PARENT_END).attr(\"refX\", 19).attr(\"refY\", 7).attr(\"markerWidth\", 20).attr(\"markerHeight\", 28).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 18,7 L9,13 L1,7 L9,1 Z\");\n elem.append(\"defs\").append(\"marker\").attr(\"id\", ERMarkers.ONLY_ONE_START).attr(\"refX\", 0).attr(\"refY\", 9).attr(\"markerWidth\", 18).attr(\"markerHeight\", 18).attr(\"orient\", \"auto\").append(\"path\").attr(\"stroke\", conf2.stroke).attr(\"fill\", \"none\").attr(\"d\", \"M9,0 L9,18 M15,0 L15,18\");\n elem.append(\"defs\").append(\"marker\").attr(\"id\", ERMarkers.ONLY_ONE_END).attr(\"refX\", 18).attr(\"refY\", 9).attr(\"markerWidth\", 18).attr(\"markerHeight\", 18).attr(\"orient\", \"auto\").append(\"path\").attr(\"stroke\", conf2.stroke).attr(\"fill\", \"none\").attr(\"d\", \"M3,0 L3,18 M9,0 L9,18\");\n marker = elem.append(\"defs\").append(\"marker\").attr(\"id\", ERMarkers.ZERO_OR_ONE_START).attr(\"refX\", 0).attr(\"refY\", 9).attr(\"markerWidth\", 30).attr(\"markerHeight\", 18).attr(\"orient\", \"auto\");\n marker.append(\"circle\").attr(\"stroke\", conf2.stroke).attr(\"fill\", \"white\").attr(\"cx\", 21).attr(\"cy\", 9).attr(\"r\", 6);\n marker.append(\"path\").attr(\"stroke\", conf2.stroke).attr(\"fill\", \"none\").attr(\"d\", \"M9,0 L9,18\");\n marker = elem.append(\"defs\").append(\"marker\").attr(\"id\", ERMarkers.ZERO_OR_ONE_END).attr(\"refX\", 30).attr(\"refY\", 9).attr(\"markerWidth\", 30).attr(\"markerHeight\", 18).attr(\"orient\", \"auto\");\n marker.append(\"circle\").attr(\"stroke\", conf2.stroke).attr(\"fill\", \"white\").attr(\"cx\", 9).attr(\"cy\", 9).attr(\"r\", 6);\n marker.append(\"path\").attr(\"stroke\", conf2.stroke).attr(\"fill\", \"none\").attr(\"d\", \"M21,0 L21,18\");\n elem.append(\"defs\").append(\"marker\").attr(\"id\", ERMarkers.ONE_OR_MORE_START).attr(\"refX\", 18).attr(\"refY\", 18).attr(\"markerWidth\", 45).attr(\"markerHeight\", 36).attr(\"orient\", \"auto\").append(\"path\").attr(\"stroke\", conf2.stroke).attr(\"fill\", \"none\").attr(\"d\", \"M0,18 Q 18,0 36,18 Q 18,36 0,18 M42,9 L42,27\");\n elem.append(\"defs\").append(\"marker\").attr(\"id\", ERMarkers.ONE_OR_MORE_END).attr(\"refX\", 27).attr(\"refY\", 18).attr(\"markerWidth\", 45).attr(\"markerHeight\", 36).attr(\"orient\", \"auto\").append(\"path\").attr(\"stroke\", conf2.stroke).attr(\"fill\", \"none\").attr(\"d\", \"M3,9 L3,27 M9,18 Q27,0 45,18 Q27,36 9,18\");\n marker = elem.append(\"defs\").append(\"marker\").attr(\"id\", ERMarkers.ZERO_OR_MORE_START).attr(\"refX\", 18).attr(\"refY\", 18).attr(\"markerWidth\", 57).attr(\"markerHeight\", 36).attr(\"orient\", \"auto\");\n marker.append(\"circle\").attr(\"stroke\", conf2.stroke).attr(\"fill\", \"white\").attr(\"cx\", 48).attr(\"cy\", 18).attr(\"r\", 6);\n marker.append(\"path\").attr(\"stroke\", conf2.stroke).attr(\"fill\", \"none\").attr(\"d\", \"M0,18 Q18,0 36,18 Q18,36 0,18\");\n marker = elem.append(\"defs\").append(\"marker\").attr(\"id\", ERMarkers.ZERO_OR_MORE_END).attr(\"refX\", 39).attr(\"refY\", 18).attr(\"markerWidth\", 57).attr(\"markerHeight\", 36).attr(\"orient\", \"auto\");\n marker.append(\"circle\").attr(\"stroke\", conf2.stroke).attr(\"fill\", \"white\").attr(\"cx\", 9).attr(\"cy\", 18).attr(\"r\", 6);\n marker.append(\"path\").attr(\"stroke\", conf2.stroke).attr(\"fill\", \"none\").attr(\"d\", \"M21,18 Q39,0 57,18 Q39,36 21,18\");\n return;\n};\nconst erMarkers = {\n ERMarkers,\n insertMarkers\n};\nconst BAD_ID_CHARS_REGEXP = /[^\\dA-Za-z](\\W)*/g;\nlet conf = {};\nlet entityNameIds = /* @__PURE__ */ new Map();\nconst setConf = function(cnf) {\n const keys = Object.keys(cnf);\n for (const key of keys) {\n conf[key] = cnf[key];\n }\n};\nconst drawAttributes = (groupNode, entityTextNode, attributes) => {\n const heightPadding = conf.entityPadding / 3;\n const widthPadding = conf.entityPadding / 3;\n const attrFontSize = conf.fontSize * 0.85;\n const labelBBox = entityTextNode.node().getBBox();\n const attributeNodes = [];\n let hasKeyType = false;\n let hasComment = false;\n let maxTypeWidth = 0;\n let maxNameWidth = 0;\n let maxKeyWidth = 0;\n let maxCommentWidth = 0;\n let cumulativeHeight = labelBBox.height + heightPadding * 2;\n let attrNum = 1;\n attributes.forEach((item) => {\n if (item.attributeKeyTypeList !== void 0 && item.attributeKeyTypeList.length > 0) {\n hasKeyType = true;\n }\n if (item.attributeComment !== void 0) {\n hasComment = true;\n }\n });\n attributes.forEach((item) => {\n const attrPrefix = `${entityTextNode.node().id}-attr-${attrNum}`;\n let nodeHeight = 0;\n const attributeType = parseGenericTypes(item.attributeType);\n const typeNode = groupNode.append(\"text\").classed(\"er entityLabel\", true).attr(\"id\", `${attrPrefix}-type`).attr(\"x\", 0).attr(\"y\", 0).style(\"dominant-baseline\", \"middle\").style(\"text-anchor\", \"left\").style(\"font-family\", getConfig().fontFamily).style(\"font-size\", attrFontSize + \"px\").text(attributeType);\n const nameNode = groupNode.append(\"text\").classed(\"er entityLabel\", true).attr(\"id\", `${attrPrefix}-name`).attr(\"x\", 0).attr(\"y\", 0).style(\"dominant-baseline\", \"middle\").style(\"text-anchor\", \"left\").style(\"font-family\", getConfig().fontFamily).style(\"font-size\", attrFontSize + \"px\").text(item.attributeName);\n const attributeNode = {};\n attributeNode.tn = typeNode;\n attributeNode.nn = nameNode;\n const typeBBox = typeNode.node().getBBox();\n const nameBBox = nameNode.node().getBBox();\n maxTypeWidth = Math.max(maxTypeWidth, typeBBox.width);\n maxNameWidth = Math.max(maxNameWidth, nameBBox.width);\n nodeHeight = Math.max(typeBBox.height, nameBBox.height);\n if (hasKeyType) {\n const keyTypeNodeText = item.attributeKeyTypeList !== void 0 ? item.attributeKeyTypeList.join(\",\") : \"\";\n const keyTypeNode = groupNode.append(\"text\").classed(\"er entityLabel\", true).attr(\"id\", `${attrPrefix}-key`).attr(\"x\", 0).attr(\"y\", 0).style(\"dominant-baseline\", \"middle\").style(\"text-anchor\", \"left\").style(\"font-family\", getConfig().fontFamily).style(\"font-size\", attrFontSize + \"px\").text(keyTypeNodeText);\n attributeNode.kn = keyTypeNode;\n const keyTypeBBox = keyTypeNode.node().getBBox();\n maxKeyWidth = Math.max(maxKeyWidth, keyTypeBBox.width);\n nodeHeight = Math.max(nodeHeight, keyTypeBBox.height);\n }\n if (hasComment) {\n const commentNode = groupNode.append(\"text\").classed(\"er entityLabel\", true).attr(\"id\", `${attrPrefix}-comment`).attr(\"x\", 0).attr(\"y\", 0).style(\"dominant-baseline\", \"middle\").style(\"text-anchor\", \"left\").style(\"font-family\", getConfig().fontFamily).style(\"font-size\", attrFontSize + \"px\").text(item.attributeComment || \"\");\n attributeNode.cn = commentNode;\n const commentNodeBBox = commentNode.node().getBBox();\n maxCommentWidth = Math.max(maxCommentWidth, commentNodeBBox.width);\n nodeHeight = Math.max(nodeHeight, commentNodeBBox.height);\n }\n attributeNode.height = nodeHeight;\n attributeNodes.push(attributeNode);\n cumulativeHeight += nodeHeight + heightPadding * 2;\n attrNum += 1;\n });\n let widthPaddingFactor = 4;\n if (hasKeyType) {\n widthPaddingFactor += 2;\n }\n if (hasComment) {\n widthPaddingFactor += 2;\n }\n const maxWidth = maxTypeWidth + maxNameWidth + maxKeyWidth + maxCommentWidth;\n const bBox = {\n width: Math.max(\n conf.minEntityWidth,\n Math.max(\n labelBBox.width + conf.entityPadding * 2,\n maxWidth + widthPadding * widthPaddingFactor\n )\n ),\n height: attributes.length > 0 ? cumulativeHeight : Math.max(conf.minEntityHeight, labelBBox.height + conf.entityPadding * 2)\n };\n if (attributes.length > 0) {\n const spareColumnWidth = Math.max(\n 0,\n (bBox.width - maxWidth - widthPadding * widthPaddingFactor) / (widthPaddingFactor / 2)\n );\n entityTextNode.attr(\n \"transform\",\n \"translate(\" + bBox.width / 2 + \",\" + (heightPadding + labelBBox.height / 2) + \")\"\n );\n let heightOffset = labelBBox.height + heightPadding * 2;\n let attribStyle = \"attributeBoxOdd\";\n attributeNodes.forEach((attributeNode) => {\n const alignY = heightOffset + heightPadding + attributeNode.height / 2;\n attributeNode.tn.attr(\"transform\", \"translate(\" + widthPadding + \",\" + alignY + \")\");\n const typeRect = groupNode.insert(\"rect\", \"#\" + attributeNode.tn.node().id).classed(`er ${attribStyle}`, true).attr(\"x\", 0).attr(\"y\", heightOffset).attr(\"width\", maxTypeWidth + widthPadding * 2 + spareColumnWidth).attr(\"height\", attributeNode.height + heightPadding * 2);\n const nameXOffset = parseFloat(typeRect.attr(\"x\")) + parseFloat(typeRect.attr(\"width\"));\n attributeNode.nn.attr(\n \"transform\",\n \"translate(\" + (nameXOffset + widthPadding) + \",\" + alignY + \")\"\n );\n const nameRect = groupNode.insert(\"rect\", \"#\" + attributeNode.nn.node().id).classed(`er ${attribStyle}`, true).attr(\"x\", nameXOffset).attr(\"y\", heightOffset).attr(\"width\", maxNameWidth + widthPadding * 2 + spareColumnWidth).attr(\"height\", attributeNode.height + heightPadding * 2);\n let keyTypeAndCommentXOffset = parseFloat(nameRect.attr(\"x\")) + parseFloat(nameRect.attr(\"width\"));\n if (hasKeyType) {\n attributeNode.kn.attr(\n \"transform\",\n \"translate(\" + (keyTypeAndCommentXOffset + widthPadding) + \",\" + alignY + \")\"\n );\n const keyTypeRect = groupNode.insert(\"rect\", \"#\" + attributeNode.kn.node().id).classed(`er ${attribStyle}`, true).attr(\"x\", keyTypeAndCommentXOffset).attr(\"y\", heightOffset).attr(\"width\", maxKeyWidth + widthPadding * 2 + spareColumnWidth).attr(\"height\", attributeNode.height + heightPadding * 2);\n keyTypeAndCommentXOffset = parseFloat(keyTypeRect.attr(\"x\")) + parseFloat(keyTypeRect.attr(\"width\"));\n }\n if (hasComment) {\n attributeNode.cn.attr(\n \"transform\",\n \"translate(\" + (keyTypeAndCommentXOffset + widthPadding) + \",\" + alignY + \")\"\n );\n groupNode.insert(\"rect\", \"#\" + attributeNode.cn.node().id).classed(`er ${attribStyle}`, \"true\").attr(\"x\", keyTypeAndCommentXOffset).attr(\"y\", heightOffset).attr(\"width\", maxCommentWidth + widthPadding * 2 + spareColumnWidth).attr(\"height\", attributeNode.height + heightPadding * 2);\n }\n heightOffset += attributeNode.height + heightPadding * 2;\n attribStyle = attribStyle === \"attributeBoxOdd\" ? \"attributeBoxEven\" : \"attributeBoxOdd\";\n });\n } else {\n bBox.height = Math.max(conf.minEntityHeight, cumulativeHeight);\n entityTextNode.attr(\"transform\", \"translate(\" + bBox.width / 2 + \",\" + bBox.height / 2 + \")\");\n }\n return bBox;\n};\nconst drawEntities = function(svgNode, entities2, graph) {\n const keys = Object.keys(entities2);\n let firstOne;\n keys.forEach(function(entityName) {\n const entityId = generateId(entityName, \"entity\");\n entityNameIds.set(entityName, entityId);\n const groupNode = svgNode.append(\"g\").attr(\"id\", entityId);\n firstOne = firstOne === void 0 ? entityId : firstOne;\n const textId = \"text-\" + entityId;\n const textNode = groupNode.append(\"text\").classed(\"er entityLabel\", true).attr(\"id\", textId).attr(\"x\", 0).attr(\"y\", 0).style(\"dominant-baseline\", \"middle\").style(\"text-anchor\", \"middle\").style(\"font-family\", getConfig().fontFamily).style(\"font-size\", conf.fontSize + \"px\").text(entities2[entityName].alias ?? entityName);\n const { width: entityWidth, height: entityHeight } = drawAttributes(\n groupNode,\n textNode,\n entities2[entityName].attributes\n );\n const rectNode = groupNode.insert(\"rect\", \"#\" + textId).classed(\"er entityBox\", true).attr(\"x\", 0).attr(\"y\", 0).attr(\"width\", entityWidth).attr(\"height\", entityHeight);\n const rectBBox = rectNode.node().getBBox();\n graph.setNode(entityId, {\n width: rectBBox.width,\n height: rectBBox.height,\n shape: \"rect\",\n id: entityId\n });\n });\n return firstOne;\n};\nconst adjustEntities = function(svgNode, graph) {\n graph.nodes().forEach(function(v) {\n if (v !== void 0 && graph.node(v) !== void 0) {\n svgNode.select(\"#\" + v).attr(\n \"transform\",\n \"translate(\" + (graph.node(v).x - graph.node(v).width / 2) + \",\" + (graph.node(v).y - graph.node(v).height / 2) + \" )\"\n );\n }\n });\n};\nconst getEdgeName = function(rel) {\n return (rel.entityA + rel.roleA + rel.entityB).replace(/\\s/g, \"\");\n};\nconst addRelationships = function(relationships2, g) {\n relationships2.forEach(function(r) {\n g.setEdge(\n entityNameIds.get(r.entityA),\n entityNameIds.get(r.entityB),\n { relationship: r },\n getEdgeName(r)\n );\n });\n return relationships2;\n};\nlet relCnt = 0;\nconst drawRelationshipFromLayout = function(svg, rel, g, insert, diagObj) {\n relCnt++;\n const edge = g.edge(\n entityNameIds.get(rel.entityA),\n entityNameIds.get(rel.entityB),\n getEdgeName(rel)\n );\n const lineFunction = line().x(function(d) {\n return d.x;\n }).y(function(d) {\n return d.y;\n }).curve(curveBasis);\n const svgPath = svg.insert(\"path\", \"#\" + insert).classed(\"er relationshipLine\", true).attr(\"d\", lineFunction(edge.points)).style(\"stroke\", conf.stroke).style(\"fill\", \"none\");\n if (rel.relSpec.relType === diagObj.db.Identification.NON_IDENTIFYING) {\n svgPath.attr(\"stroke-dasharray\", \"8,8\");\n }\n let url = \"\";\n if (conf.arrowMarkerAbsolute) {\n url = window.location.protocol + \"//\" + window.location.host + window.location.pathname + window.location.search;\n url = url.replace(/\\(/g, \"\\\\(\");\n url = url.replace(/\\)/g, \"\\\\)\");\n }\n switch (rel.relSpec.cardA) {\n case diagObj.db.Cardinality.ZERO_OR_ONE:\n svgPath.attr(\"marker-end\", \"url(\" + url + \"#\" + erMarkers.ERMarkers.ZERO_OR_ONE_END + \")\");\n break;\n case diagObj.db.Cardinality.ZERO_OR_MORE:\n svgPath.attr(\"marker-end\", \"url(\" + url + \"#\" + erMarkers.ERMarkers.ZERO_OR_MORE_END + \")\");\n break;\n case diagObj.db.Cardinality.ONE_OR_MORE:\n svgPath.attr(\"marker-end\", \"url(\" + url + \"#\" + erMarkers.ERMarkers.ONE_OR_MORE_END + \")\");\n break;\n case diagObj.db.Cardinality.ONLY_ONE:\n svgPath.attr(\"marker-end\", \"url(\" + url + \"#\" + erMarkers.ERMarkers.ONLY_ONE_END + \")\");\n break;\n case diagObj.db.Cardinality.MD_PARENT:\n svgPath.attr(\"marker-end\", \"url(\" + url + \"#\" + erMarkers.ERMarkers.MD_PARENT_END + \")\");\n break;\n }\n switch (rel.relSpec.cardB) {\n case diagObj.db.Cardinality.ZERO_OR_ONE:\n svgPath.attr(\n \"marker-start\",\n \"url(\" + url + \"#\" + erMarkers.ERMarkers.ZERO_OR_ONE_START + \")\"\n );\n break;\n case diagObj.db.Cardinality.ZERO_OR_MORE:\n svgPath.attr(\n \"marker-start\",\n \"url(\" + url + \"#\" + erMarkers.ERMarkers.ZERO_OR_MORE_START + \")\"\n );\n break;\n case diagObj.db.Cardinality.ONE_OR_MORE:\n svgPath.attr(\n \"marker-start\",\n \"url(\" + url + \"#\" + erMarkers.ERMarkers.ONE_OR_MORE_START + \")\"\n );\n break;\n case diagObj.db.Cardinality.ONLY_ONE:\n svgPath.attr(\"marker-start\", \"url(\" + url + \"#\" + erMarkers.ERMarkers.ONLY_ONE_START + \")\");\n break;\n case diagObj.db.Cardinality.MD_PARENT:\n svgPath.attr(\"marker-start\", \"url(\" + url + \"#\" + erMarkers.ERMarkers.MD_PARENT_START + \")\");\n break;\n }\n const len = svgPath.node().getTotalLength();\n const labelPoint = svgPath.node().getPointAtLength(len * 0.5);\n const labelId = \"rel\" + relCnt;\n const labelNode = svg.append(\"text\").classed(\"er relationshipLabel\", true).attr(\"id\", labelId).attr(\"x\", labelPoint.x).attr(\"y\", labelPoint.y).style(\"text-anchor\", \"middle\").style(\"dominant-baseline\", \"middle\").style(\"font-family\", getConfig().fontFamily).style(\"font-size\", conf.fontSize + \"px\").text(rel.roleA);\n const labelBBox = labelNode.node().getBBox();\n svg.insert(\"rect\", \"#\" + labelId).classed(\"er relationshipLabelBox\", true).attr(\"x\", labelPoint.x - labelBBox.width / 2).attr(\"y\", labelPoint.y - labelBBox.height / 2).attr(\"width\", labelBBox.width).attr(\"height\", labelBBox.height);\n};\nconst draw = function(text, id, _version, diagObj) {\n conf = getConfig().er;\n log.info(\"Drawing ER diagram\");\n const securityLevel = getConfig().securityLevel;\n let sandboxElement;\n if (securityLevel === \"sandbox\") {\n sandboxElement = select(\"#i\" + id);\n }\n const root = securityLevel === \"sandbox\" ? select(sandboxElement.nodes()[0].contentDocument.body) : select(\"body\");\n const svg = root.select(`[id='${id}']`);\n erMarkers.insertMarkers(svg, conf);\n let g;\n g = new graphlib.Graph({\n multigraph: true,\n directed: true,\n compound: false\n }).setGraph({\n rankdir: conf.layoutDirection,\n marginx: 20,\n marginy: 20,\n nodesep: 100,\n edgesep: 100,\n ranksep: 100\n }).setDefaultEdgeLabel(function() {\n return {};\n });\n const firstEntity = drawEntities(svg, diagObj.db.getEntities(), g);\n const relationships2 = addRelationships(diagObj.db.getRelationships(), g);\n layout(g);\n adjustEntities(svg, g);\n relationships2.forEach(function(rel) {\n drawRelationshipFromLayout(svg, rel, g, firstEntity, diagObj);\n });\n const padding = conf.diagramPadding;\n utils.insertTitle(svg, \"entityTitleText\", conf.titleTopMargin, diagObj.db.getDiagramTitle());\n const svgBounds = svg.node().getBBox();\n const width = svgBounds.width + padding * 2;\n const height = svgBounds.height + padding * 2;\n configureSvgSize(svg, height, width, conf.useMaxWidth);\n svg.attr(\"viewBox\", `${svgBounds.x - padding} ${svgBounds.y - padding} ${width} ${height}`);\n};\nconst MERMAID_ERDIAGRAM_UUID = \"28e9f9db-3c8d-5aa5-9faf-44286ae5937c\";\nfunction generateId(str = \"\", prefix = \"\") {\n const simplifiedStr = str.replace(BAD_ID_CHARS_REGEXP, \"\");\n return `${strWithHyphen(prefix)}${strWithHyphen(simplifiedStr)}${v5(\n str,\n MERMAID_ERDIAGRAM_UUID\n )}`;\n}\nfunction strWithHyphen(str = \"\") {\n return str.length > 0 ? `${str}-` : \"\";\n}\nconst erRenderer = {\n setConf,\n draw\n};\nconst getStyles = (options) => `\n .entityBox {\n fill: ${options.mainBkg};\n stroke: ${options.nodeBorder};\n }\n\n .attributeBoxOdd {\n fill: ${options.attributeBackgroundColorOdd};\n stroke: ${options.nodeBorder};\n }\n\n .attributeBoxEven {\n fill: ${options.attributeBackgroundColorEven};\n stroke: ${options.nodeBorder};\n }\n\n .relationshipLabelBox {\n fill: ${options.tertiaryColor};\n opacity: 0.7;\n background-color: ${options.tertiaryColor};\n rect {\n opacity: 0.5;\n }\n }\n\n .relationshipLine {\n stroke: ${options.lineColor};\n }\n\n .entityTitleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${options.textColor};\n } \n #MD_PARENT_START {\n fill: #f5f5f5 !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n }\n #MD_PARENT_END {\n fill: #f5f5f5 !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n }\n \n`;\nconst erStyles = getStyles;\nconst diagram = {\n parser: erParser,\n db: erDb,\n renderer: erRenderer,\n styles: erStyles\n};\nexport {\n diagram\n};\n","import { select } from \"d3\";\nimport { K as defaultConfig, s as setAccTitle, g as getAccTitle, a as getAccDescription, b as setAccDescription, q as setDiagramTitle, t as getDiagramTitle, c as getConfig, l as log, u as utils, v as clear$1, e as common } from \"./mermaid-f47111a7.js\";\nvar parser = function() {\n var o = function(k, v, o2, l) {\n for (o2 = o2 || {}, l = k.length; l--; o2[k[l]] = v)\n ;\n return o2;\n }, $V0 = [1, 4], $V1 = [1, 3], $V2 = [1, 5], $V3 = [1, 8, 9, 10, 11, 27, 34, 36, 38, 42, 58, 81, 82, 83, 84, 85, 86, 99, 102, 103, 106, 108, 111, 112, 113, 118, 119, 120, 121], $V4 = [2, 2], $V5 = [1, 13], $V6 = [1, 14], $V7 = [1, 15], $V8 = [1, 16], $V9 = [1, 23], $Va = [1, 25], $Vb = [1, 26], $Vc = [1, 27], $Vd = [1, 49], $Ve = [1, 48], $Vf = [1, 29], $Vg = [1, 30], $Vh = [1, 31], $Vi = [1, 32], $Vj = [1, 33], $Vk = [1, 44], $Vl = [1, 46], $Vm = [1, 42], $Vn = [1, 47], $Vo = [1, 43], $Vp = [1, 50], $Vq = [1, 45], $Vr = [1, 51], $Vs = [1, 52], $Vt = [1, 34], $Vu = [1, 35], $Vv = [1, 36], $Vw = [1, 37], $Vx = [1, 57], $Vy = [1, 8, 9, 10, 11, 27, 32, 34, 36, 38, 42, 58, 81, 82, 83, 84, 85, 86, 99, 102, 103, 106, 108, 111, 112, 113, 118, 119, 120, 121], $Vz = [1, 61], $VA = [1, 60], $VB = [1, 62], $VC = [8, 9, 11, 73, 75], $VD = [1, 88], $VE = [1, 93], $VF = [1, 92], $VG = [1, 89], $VH = [1, 85], $VI = [1, 91], $VJ = [1, 87], $VK = [1, 94], $VL = [1, 90], $VM = [1, 95], $VN = [1, 86], $VO = [8, 9, 10, 11, 73, 75], $VP = [8, 9, 10, 11, 44, 73, 75], $VQ = [8, 9, 10, 11, 29, 42, 44, 46, 48, 50, 52, 54, 56, 58, 61, 63, 65, 66, 68, 73, 75, 86, 99, 102, 103, 106, 108, 111, 112, 113], $VR = [8, 9, 11, 42, 58, 73, 75, 86, 99, 102, 103, 106, 108, 111, 112, 113], $VS = [42, 58, 86, 99, 102, 103, 106, 108, 111, 112, 113], $VT = [1, 121], $VU = [1, 120], $VV = [1, 128], $VW = [1, 142], $VX = [1, 143], $VY = [1, 144], $VZ = [1, 145], $V_ = [1, 130], $V$ = [1, 132], $V01 = [1, 136], $V11 = [1, 137], $V21 = [1, 138], $V31 = [1, 139], $V41 = [1, 140], $V51 = [1, 141], $V61 = [1, 146], $V71 = [1, 147], $V81 = [1, 126], $V91 = [1, 127], $Va1 = [1, 134], $Vb1 = [1, 129], $Vc1 = [1, 133], $Vd1 = [1, 131], $Ve1 = [8, 9, 10, 11, 27, 32, 34, 36, 38, 42, 58, 81, 82, 83, 84, 85, 86, 99, 102, 103, 106, 108, 111, 112, 113, 118, 119, 120, 121], $Vf1 = [1, 149], $Vg1 = [8, 9, 11], $Vh1 = [8, 9, 10, 11, 14, 42, 58, 86, 102, 103, 106, 108, 111, 112, 113], $Vi1 = [1, 169], $Vj1 = [1, 165], $Vk1 = [1, 166], $Vl1 = [1, 170], $Vm1 = [1, 167], $Vn1 = [1, 168], $Vo1 = [75, 113, 116], $Vp1 = [8, 9, 10, 11, 12, 14, 27, 29, 32, 42, 58, 73, 81, 82, 83, 84, 85, 86, 87, 102, 106, 108, 111, 112, 113], $Vq1 = [10, 103], $Vr1 = [31, 47, 49, 51, 53, 55, 60, 62, 64, 65, 67, 69, 113, 114, 115], $Vs1 = [1, 235], $Vt1 = [1, 233], $Vu1 = [1, 237], $Vv1 = [1, 231], $Vw1 = [1, 232], $Vx1 = [1, 234], $Vy1 = [1, 236], $Vz1 = [1, 238], $VA1 = [1, 255], $VB1 = [8, 9, 11, 103], $VC1 = [8, 9, 10, 11, 58, 81, 102, 103, 106, 107, 108, 109];\n var parser2 = {\n trace: function trace() {\n },\n yy: {},\n symbols_: { \"error\": 2, \"start\": 3, \"graphConfig\": 4, \"document\": 5, \"line\": 6, \"statement\": 7, \"SEMI\": 8, \"NEWLINE\": 9, \"SPACE\": 10, \"EOF\": 11, \"GRAPH\": 12, \"NODIR\": 13, \"DIR\": 14, \"FirstStmtSeparator\": 15, \"ending\": 16, \"endToken\": 17, \"spaceList\": 18, \"spaceListNewline\": 19, \"vertexStatement\": 20, \"separator\": 21, \"styleStatement\": 22, \"linkStyleStatement\": 23, \"classDefStatement\": 24, \"classStatement\": 25, \"clickStatement\": 26, \"subgraph\": 27, \"textNoTags\": 28, \"SQS\": 29, \"text\": 30, \"SQE\": 31, \"end\": 32, \"direction\": 33, \"acc_title\": 34, \"acc_title_value\": 35, \"acc_descr\": 36, \"acc_descr_value\": 37, \"acc_descr_multiline_value\": 38, \"link\": 39, \"node\": 40, \"styledVertex\": 41, \"AMP\": 42, \"vertex\": 43, \"STYLE_SEPARATOR\": 44, \"idString\": 45, \"DOUBLECIRCLESTART\": 46, \"DOUBLECIRCLEEND\": 47, \"PS\": 48, \"PE\": 49, \"(-\": 50, \"-)\": 51, \"STADIUMSTART\": 52, \"STADIUMEND\": 53, \"SUBROUTINESTART\": 54, \"SUBROUTINEEND\": 55, \"VERTEX_WITH_PROPS_START\": 56, \"NODE_STRING[field]\": 57, \"COLON\": 58, \"NODE_STRING[value]\": 59, \"PIPE\": 60, \"CYLINDERSTART\": 61, \"CYLINDEREND\": 62, \"DIAMOND_START\": 63, \"DIAMOND_STOP\": 64, \"TAGEND\": 65, \"TRAPSTART\": 66, \"TRAPEND\": 67, \"INVTRAPSTART\": 68, \"INVTRAPEND\": 69, \"linkStatement\": 70, \"arrowText\": 71, \"TESTSTR\": 72, \"START_LINK\": 73, \"edgeText\": 74, \"LINK\": 75, \"edgeTextToken\": 76, \"STR\": 77, \"MD_STR\": 78, \"textToken\": 79, \"keywords\": 80, \"STYLE\": 81, \"LINKSTYLE\": 82, \"CLASSDEF\": 83, \"CLASS\": 84, \"CLICK\": 85, \"DOWN\": 86, \"UP\": 87, \"textNoTagsToken\": 88, \"stylesOpt\": 89, \"idString[vertex]\": 90, \"idString[class]\": 91, \"CALLBACKNAME\": 92, \"CALLBACKARGS\": 93, \"HREF\": 94, \"LINK_TARGET\": 95, \"STR[link]\": 96, \"STR[tooltip]\": 97, \"alphaNum\": 98, \"DEFAULT\": 99, \"numList\": 100, \"INTERPOLATE\": 101, \"NUM\": 102, \"COMMA\": 103, \"style\": 104, \"styleComponent\": 105, \"NODE_STRING\": 106, \"UNIT\": 107, \"BRKT\": 108, \"PCT\": 109, \"idStringToken\": 110, \"MINUS\": 111, \"MULT\": 112, \"UNICODE_TEXT\": 113, \"TEXT\": 114, \"TAGSTART\": 115, \"EDGE_TEXT\": 116, \"alphaNumToken\": 117, \"direction_tb\": 118, \"direction_bt\": 119, \"direction_rl\": 120, \"direction_lr\": 121, \"$accept\": 0, \"$end\": 1 },\n terminals_: { 2: \"error\", 8: \"SEMI\", 9: \"NEWLINE\", 10: \"SPACE\", 11: \"EOF\", 12: \"GRAPH\", 13: \"NODIR\", 14: \"DIR\", 27: \"subgraph\", 29: \"SQS\", 31: \"SQE\", 32: \"end\", 34: \"acc_title\", 35: \"acc_title_value\", 36: \"acc_descr\", 37: \"acc_descr_value\", 38: \"acc_descr_multiline_value\", 42: \"AMP\", 44: \"STYLE_SEPARATOR\", 46: \"DOUBLECIRCLESTART\", 47: \"DOUBLECIRCLEEND\", 48: \"PS\", 49: \"PE\", 50: \"(-\", 51: \"-)\", 52: \"STADIUMSTART\", 53: \"STADIUMEND\", 54: \"SUBROUTINESTART\", 55: \"SUBROUTINEEND\", 56: \"VERTEX_WITH_PROPS_START\", 57: \"NODE_STRING[field]\", 58: \"COLON\", 59: \"NODE_STRING[value]\", 60: \"PIPE\", 61: \"CYLINDERSTART\", 62: \"CYLINDEREND\", 63: \"DIAMOND_START\", 64: \"DIAMOND_STOP\", 65: \"TAGEND\", 66: \"TRAPSTART\", 67: \"TRAPEND\", 68: \"INVTRAPSTART\", 69: \"INVTRAPEND\", 72: \"TESTSTR\", 73: \"START_LINK\", 75: \"LINK\", 77: \"STR\", 78: \"MD_STR\", 81: \"STYLE\", 82: \"LINKSTYLE\", 83: \"CLASSDEF\", 84: \"CLASS\", 85: \"CLICK\", 86: \"DOWN\", 87: \"UP\", 90: \"idString[vertex]\", 91: \"idString[class]\", 92: \"CALLBACKNAME\", 93: \"CALLBACKARGS\", 94: \"HREF\", 95: \"LINK_TARGET\", 96: \"STR[link]\", 97: \"STR[tooltip]\", 99: \"DEFAULT\", 101: \"INTERPOLATE\", 102: \"NUM\", 103: \"COMMA\", 106: \"NODE_STRING\", 107: \"UNIT\", 108: \"BRKT\", 109: \"PCT\", 111: \"MINUS\", 112: \"MULT\", 113: \"UNICODE_TEXT\", 114: \"TEXT\", 115: \"TAGSTART\", 116: \"EDGE_TEXT\", 118: \"direction_tb\", 119: \"direction_bt\", 120: \"direction_rl\", 121: \"direction_lr\" },\n productions_: [0, [3, 2], [5, 0], [5, 2], [6, 1], [6, 1], [6, 1], [6, 1], [6, 1], [4, 2], [4, 2], [4, 2], [4, 3], [16, 2], [16, 1], [17, 1], [17, 1], [17, 1], [15, 1], [15, 1], [15, 2], [19, 2], [19, 2], [19, 1], [19, 1], [18, 2], [18, 1], [7, 2], [7, 2], [7, 2], [7, 2], [7, 2], [7, 2], [7, 9], [7, 6], [7, 4], [7, 1], [7, 2], [7, 2], [7, 1], [21, 1], [21, 1], [21, 1], [20, 3], [20, 4], [20, 2], [20, 1], [40, 1], [40, 5], [41, 1], [41, 3], [43, 4], [43, 4], [43, 6], [43, 4], [43, 4], [43, 4], [43, 8], [43, 4], [43, 4], [43, 4], [43, 6], [43, 4], [43, 4], [43, 4], [43, 4], [43, 4], [43, 1], [39, 2], [39, 3], [39, 3], [39, 1], [39, 3], [74, 1], [74, 2], [74, 1], [74, 1], [70, 1], [71, 3], [30, 1], [30, 2], [30, 1], [30, 1], [80, 1], [80, 1], [80, 1], [80, 1], [80, 1], [80, 1], [80, 1], [80, 1], [80, 1], [80, 1], [80, 1], [28, 1], [28, 2], [28, 1], [28, 1], [24, 5], [25, 5], [26, 2], [26, 4], [26, 3], [26, 5], [26, 3], [26, 5], [26, 5], [26, 7], [26, 2], [26, 4], [26, 2], [26, 4], [26, 4], [26, 6], [22, 5], [23, 5], [23, 5], [23, 9], [23, 9], [23, 7], [23, 7], [100, 1], [100, 3], [89, 1], [89, 3], [104, 1], [104, 2], [105, 1], [105, 1], [105, 1], [105, 1], [105, 1], [105, 1], [105, 1], [105, 1], [110, 1], [110, 1], [110, 1], [110, 1], [110, 1], [110, 1], [110, 1], [110, 1], [110, 1], [110, 1], [110, 1], [79, 1], [79, 1], [79, 1], [79, 1], [88, 1], [88, 1], [88, 1], [88, 1], [88, 1], [88, 1], [88, 1], [88, 1], [88, 1], [88, 1], [88, 1], [76, 1], [76, 1], [117, 1], [117, 1], [117, 1], [117, 1], [117, 1], [117, 1], [117, 1], [117, 1], [117, 1], [117, 1], [117, 1], [45, 1], [45, 2], [98, 1], [98, 2], [33, 1], [33, 1], [33, 1], [33, 1]],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) {\n var $0 = $$.length - 1;\n switch (yystate) {\n case 2:\n this.$ = [];\n break;\n case 3:\n if (!Array.isArray($$[$0]) || $$[$0].length > 0) {\n $$[$0 - 1].push($$[$0]);\n }\n this.$ = $$[$0 - 1];\n break;\n case 4:\n case 176:\n this.$ = $$[$0];\n break;\n case 11:\n yy.setDirection(\"TB\");\n this.$ = \"TB\";\n break;\n case 12:\n yy.setDirection($$[$0 - 1]);\n this.$ = $$[$0 - 1];\n break;\n case 27:\n this.$ = $$[$0 - 1].nodes;\n break;\n case 28:\n case 29:\n case 30:\n case 31:\n case 32:\n this.$ = [];\n break;\n case 33:\n this.$ = yy.addSubGraph($$[$0 - 6], $$[$0 - 1], $$[$0 - 4]);\n break;\n case 34:\n this.$ = yy.addSubGraph($$[$0 - 3], $$[$0 - 1], $$[$0 - 3]);\n break;\n case 35:\n this.$ = yy.addSubGraph(void 0, $$[$0 - 1], void 0);\n break;\n case 37:\n this.$ = $$[$0].trim();\n yy.setAccTitle(this.$);\n break;\n case 38:\n case 39:\n this.$ = $$[$0].trim();\n yy.setAccDescription(this.$);\n break;\n case 43:\n yy.addLink($$[$0 - 2].stmt, $$[$0], $$[$0 - 1]);\n this.$ = { stmt: $$[$0], nodes: $$[$0].concat($$[$0 - 2].nodes) };\n break;\n case 44:\n yy.addLink($$[$0 - 3].stmt, $$[$0 - 1], $$[$0 - 2]);\n this.$ = { stmt: $$[$0 - 1], nodes: $$[$0 - 1].concat($$[$0 - 3].nodes) };\n break;\n case 45:\n this.$ = { stmt: $$[$0 - 1], nodes: $$[$0 - 1] };\n break;\n case 46:\n this.$ = { stmt: $$[$0], nodes: $$[$0] };\n break;\n case 47:\n this.$ = [$$[$0]];\n break;\n case 48:\n this.$ = $$[$0 - 4].concat($$[$0]);\n break;\n case 49:\n this.$ = $$[$0];\n break;\n case 50:\n this.$ = $$[$0 - 2];\n yy.setClass($$[$0 - 2], $$[$0]);\n break;\n case 51:\n this.$ = $$[$0 - 3];\n yy.addVertex($$[$0 - 3], $$[$0 - 1], \"square\");\n break;\n case 52:\n this.$ = $$[$0 - 3];\n yy.addVertex($$[$0 - 3], $$[$0 - 1], \"doublecircle\");\n break;\n case 53:\n this.$ = $$[$0 - 5];\n yy.addVertex($$[$0 - 5], $$[$0 - 2], \"circle\");\n break;\n case 54:\n this.$ = $$[$0 - 3];\n yy.addVertex($$[$0 - 3], $$[$0 - 1], \"ellipse\");\n break;\n case 55:\n this.$ = $$[$0 - 3];\n yy.addVertex($$[$0 - 3], $$[$0 - 1], \"stadium\");\n break;\n case 56:\n this.$ = $$[$0 - 3];\n yy.addVertex($$[$0 - 3], $$[$0 - 1], \"subroutine\");\n break;\n case 57:\n this.$ = $$[$0 - 7];\n yy.addVertex($$[$0 - 7], $$[$0 - 1], \"rect\", void 0, void 0, void 0, Object.fromEntries([[$$[$0 - 5], $$[$0 - 3]]]));\n break;\n case 58:\n this.$ = $$[$0 - 3];\n yy.addVertex($$[$0 - 3], $$[$0 - 1], \"cylinder\");\n break;\n case 59:\n this.$ = $$[$0 - 3];\n yy.addVertex($$[$0 - 3], $$[$0 - 1], \"round\");\n break;\n case 60:\n this.$ = $$[$0 - 3];\n yy.addVertex($$[$0 - 3], $$[$0 - 1], \"diamond\");\n break;\n case 61:\n this.$ = $$[$0 - 5];\n yy.addVertex($$[$0 - 5], $$[$0 - 2], \"hexagon\");\n break;\n case 62:\n this.$ = $$[$0 - 3];\n yy.addVertex($$[$0 - 3], $$[$0 - 1], \"odd\");\n break;\n case 63:\n this.$ = $$[$0 - 3];\n yy.addVertex($$[$0 - 3], $$[$0 - 1], \"trapezoid\");\n break;\n case 64:\n this.$ = $$[$0 - 3];\n yy.addVertex($$[$0 - 3], $$[$0 - 1], \"inv_trapezoid\");\n break;\n case 65:\n this.$ = $$[$0 - 3];\n yy.addVertex($$[$0 - 3], $$[$0 - 1], \"lean_right\");\n break;\n case 66:\n this.$ = $$[$0 - 3];\n yy.addVertex($$[$0 - 3], $$[$0 - 1], \"lean_left\");\n break;\n case 67:\n this.$ = $$[$0];\n yy.addVertex($$[$0]);\n break;\n case 68:\n $$[$0 - 1].text = $$[$0];\n this.$ = $$[$0 - 1];\n break;\n case 69:\n case 70:\n $$[$0 - 2].text = $$[$0 - 1];\n this.$ = $$[$0 - 2];\n break;\n case 71:\n this.$ = $$[$0];\n break;\n case 72:\n var inf = yy.destructLink($$[$0], $$[$0 - 2]);\n this.$ = { \"type\": inf.type, \"stroke\": inf.stroke, \"length\": inf.length, \"text\": $$[$0 - 1] };\n break;\n case 73:\n this.$ = { text: $$[$0], type: \"text\" };\n break;\n case 74:\n this.$ = { text: $$[$0 - 1].text + \"\" + $$[$0], type: $$[$0 - 1].type };\n break;\n case 75:\n this.$ = { text: $$[$0], type: \"string\" };\n break;\n case 76:\n this.$ = { text: $$[$0], type: \"markdown\" };\n break;\n case 77:\n var inf = yy.destructLink($$[$0]);\n this.$ = { \"type\": inf.type, \"stroke\": inf.stroke, \"length\": inf.length };\n break;\n case 78:\n this.$ = $$[$0 - 1];\n break;\n case 79:\n this.$ = { text: $$[$0], type: \"text\" };\n break;\n case 80:\n this.$ = { text: $$[$0 - 1].text + \"\" + $$[$0], type: $$[$0 - 1].type };\n break;\n case 81:\n this.$ = { text: $$[$0], type: \"string\" };\n break;\n case 82:\n case 97:\n this.$ = { text: $$[$0], type: \"markdown\" };\n break;\n case 94:\n this.$ = { text: $$[$0], type: \"text\" };\n break;\n case 95:\n this.$ = { text: $$[$0 - 1].text + \"\" + $$[$0], type: $$[$0 - 1].type };\n break;\n case 96:\n this.$ = { text: $$[$0], type: \"text\" };\n break;\n case 98:\n this.$ = $$[$0 - 4];\n yy.addClass($$[$0 - 2], $$[$0]);\n break;\n case 99:\n this.$ = $$[$0 - 4];\n yy.setClass($$[$0 - 2], $$[$0]);\n break;\n case 100:\n case 108:\n this.$ = $$[$0 - 1];\n yy.setClickEvent($$[$0 - 1], $$[$0]);\n break;\n case 101:\n case 109:\n this.$ = $$[$0 - 3];\n yy.setClickEvent($$[$0 - 3], $$[$0 - 2]);\n yy.setTooltip($$[$0 - 3], $$[$0]);\n break;\n case 102:\n this.$ = $$[$0 - 2];\n yy.setClickEvent($$[$0 - 2], $$[$0 - 1], $$[$0]);\n break;\n case 103:\n this.$ = $$[$0 - 4];\n yy.setClickEvent($$[$0 - 4], $$[$0 - 3], $$[$0 - 2]);\n yy.setTooltip($$[$0 - 4], $$[$0]);\n break;\n case 104:\n this.$ = $$[$0 - 2];\n yy.setLink($$[$0 - 2], $$[$0]);\n break;\n case 105:\n this.$ = $$[$0 - 4];\n yy.setLink($$[$0 - 4], $$[$0 - 2]);\n yy.setTooltip($$[$0 - 4], $$[$0]);\n break;\n case 106:\n this.$ = $$[$0 - 4];\n yy.setLink($$[$0 - 4], $$[$0 - 2], $$[$0]);\n break;\n case 107:\n this.$ = $$[$0 - 6];\n yy.setLink($$[$0 - 6], $$[$0 - 4], $$[$0]);\n yy.setTooltip($$[$0 - 6], $$[$0 - 2]);\n break;\n case 110:\n this.$ = $$[$0 - 1];\n yy.setLink($$[$0 - 1], $$[$0]);\n break;\n case 111:\n this.$ = $$[$0 - 3];\n yy.setLink($$[$0 - 3], $$[$0 - 2]);\n yy.setTooltip($$[$0 - 3], $$[$0]);\n break;\n case 112:\n this.$ = $$[$0 - 3];\n yy.setLink($$[$0 - 3], $$[$0 - 2], $$[$0]);\n break;\n case 113:\n this.$ = $$[$0 - 5];\n yy.setLink($$[$0 - 5], $$[$0 - 4], $$[$0]);\n yy.setTooltip($$[$0 - 5], $$[$0 - 2]);\n break;\n case 114:\n this.$ = $$[$0 - 4];\n yy.addVertex($$[$0 - 2], void 0, void 0, $$[$0]);\n break;\n case 115:\n this.$ = $$[$0 - 4];\n yy.updateLink([$$[$0 - 2]], $$[$0]);\n break;\n case 116:\n this.$ = $$[$0 - 4];\n yy.updateLink($$[$0 - 2], $$[$0]);\n break;\n case 117:\n this.$ = $$[$0 - 8];\n yy.updateLinkInterpolate([$$[$0 - 6]], $$[$0 - 2]);\n yy.updateLink([$$[$0 - 6]], $$[$0]);\n break;\n case 118:\n this.$ = $$[$0 - 8];\n yy.updateLinkInterpolate($$[$0 - 6], $$[$0 - 2]);\n yy.updateLink($$[$0 - 6], $$[$0]);\n break;\n case 119:\n this.$ = $$[$0 - 6];\n yy.updateLinkInterpolate([$$[$0 - 4]], $$[$0]);\n break;\n case 120:\n this.$ = $$[$0 - 6];\n yy.updateLinkInterpolate($$[$0 - 4], $$[$0]);\n break;\n case 121:\n case 123:\n this.$ = [$$[$0]];\n break;\n case 122:\n case 124:\n $$[$0 - 2].push($$[$0]);\n this.$ = $$[$0 - 2];\n break;\n case 126:\n this.$ = $$[$0 - 1] + $$[$0];\n break;\n case 174:\n this.$ = $$[$0];\n break;\n case 175:\n this.$ = $$[$0 - 1] + \"\" + $$[$0];\n break;\n case 177:\n this.$ = $$[$0 - 1] + \"\" + $$[$0];\n break;\n case 178:\n this.$ = { stmt: \"dir\", value: \"TB\" };\n break;\n case 179:\n this.$ = { stmt: \"dir\", value: \"BT\" };\n break;\n case 180:\n this.$ = { stmt: \"dir\", value: \"RL\" };\n break;\n case 181:\n this.$ = { stmt: \"dir\", value: \"LR\" };\n break;\n }\n },\n table: [{ 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], 14: [1, 10] }, { 1: [2, 1], 6: 11, 7: 12, 8: $V5, 9: $V6, 10: $V7, 11: $V8, 20: 17, 22: 18, 23: 19, 24: 20, 25: 21, 26: 22, 27: $V9, 33: 24, 34: $Va, 36: $Vb, 38: $Vc, 40: 28, 41: 38, 42: $Vd, 43: 39, 45: 40, 58: $Ve, 81: $Vf, 82: $Vg, 83: $Vh, 84: $Vi, 85: $Vj, 86: $Vk, 99: $Vl, 102: $Vm, 103: $Vn, 106: $Vo, 108: $Vp, 110: 41, 111: $Vq, 112: $Vr, 113: $Vs, 118: $Vt, 119: $Vu, 120: $Vv, 121: $Vw }, o($V3, [2, 9]), o($V3, [2, 10]), o($V3, [2, 11]), { 8: [1, 54], 9: [1, 55], 10: $Vx, 15: 53, 18: 56 }, o($Vy, [2, 3]), o($Vy, [2, 4]), o($Vy, [2, 5]), o($Vy, [2, 6]), o($Vy, [2, 7]), o($Vy, [2, 8]), { 8: $Vz, 9: $VA, 11: $VB, 21: 58, 39: 59, 70: 63, 73: [1, 64], 75: [1, 65] }, { 8: $Vz, 9: $VA, 11: $VB, 21: 66 }, { 8: $Vz, 9: $VA, 11: $VB, 21: 67 }, { 8: $Vz, 9: $VA, 11: $VB, 21: 68 }, { 8: $Vz, 9: $VA, 11: $VB, 21: 69 }, { 8: $Vz, 9: $VA, 11: $VB, 21: 70 }, { 8: $Vz, 9: $VA, 10: [1, 71], 11: $VB, 21: 72 }, o($Vy, [2, 36]), { 35: [1, 73] }, { 37: [1, 74] }, o($Vy, [2, 39]), o($VC, [2, 46], { 18: 75, 10: $Vx }), { 10: [1, 76] }, { 10: [1, 77] }, { 10: [1, 78] }, { 10: [1, 79] }, { 14: $VD, 42: $VE, 58: $VF, 77: [1, 83], 86: $VG, 92: [1, 80], 94: [1, 81], 98: 82, 102: $VH, 103: $VI, 106: $VJ, 108: $VK, 111: $VL, 112: $VM, 113: $VN, 117: 84 }, o($Vy, [2, 178]), o($Vy, [2, 179]), o($Vy, [2, 180]), o($Vy, [2, 181]), o($VO, [2, 47]), o($VO, [2, 49], { 44: [1, 96] }), o($VP, [2, 67], { 110: 109, 29: [1, 97], 42: $Vd, 46: [1, 98], 48: [1, 99], 50: [1, 100], 52: [1, 101], 54: [1, 102], 56: [1, 103], 58: $Ve, 61: [1, 104], 63: [1, 105], 65: [1, 106], 66: [1, 107], 68: [1, 108], 86: $Vk, 99: $Vl, 102: $Vm, 103: $Vn, 106: $Vo, 108: $Vp, 111: $Vq, 112: $Vr, 113: $Vs }), o($VQ, [2, 174]), o($VQ, [2, 135]), o($VQ, [2, 136]), o($VQ, [2, 137]), o($VQ, [2, 138]), o($VQ, [2, 139]), o($VQ, [2, 140]), o($VQ, [2, 141]), o($VQ, [2, 142]), o($VQ, [2, 143]), o($VQ, [2, 144]), o($VQ, [2, 145]), o($V3, [2, 12]), o($V3, [2, 18]), o($V3, [2, 19]), { 9: [1, 110] }, o($VR, [2, 26], { 18: 111, 10: $Vx }), o($Vy, [2, 27]), { 40: 112, 41: 38, 42: $Vd, 43: 39, 45: 40, 58: $Ve, 86: $Vk, 99: $Vl, 102: $Vm, 103: $Vn, 106: $Vo, 108: $Vp, 110: 41, 111: $Vq, 112: $Vr, 113: $Vs }, o($Vy, [2, 40]), o($Vy, [2, 41]), o($Vy, [2, 42]), o($VS, [2, 71], { 71: 113, 60: [1, 115], 72: [1, 114] }), { 74: 116, 76: 117, 77: [1, 118], 78: [1, 119], 113: $VT, 116: $VU }, o([42, 58, 60, 72, 86, 99, 102, 103, 106, 108, 111, 112, 113], [2, 77]), o($Vy, [2, 28]), o($Vy, [2, 29]), o($Vy, [2, 30]), o($Vy, [2, 31]), o($Vy, [2, 32]), { 10: $VV, 12: $VW, 14: $VX, 27: $VY, 28: 122, 32: $VZ, 42: $V_, 58: $V$, 73: $V01, 77: [1, 124], 78: [1, 125], 80: 135, 81: $V11, 82: $V21, 83: $V31, 84: $V41, 85: $V51, 86: $V61, 87: $V71, 88: 123, 102: $V81, 106: $V91, 108: $Va1, 111: $Vb1, 112: $Vc1, 113: $Vd1 }, o($Ve1, $V4, { 5: 148 }), o($Vy, [2, 37]), o($Vy, [2, 38]), o($VC, [2, 45], { 42: $Vf1 }), { 42: $Vd, 45: 150, 58: $Ve, 86: $Vk, 99: $Vl, 102: $Vm, 103: $Vn, 106: $Vo, 108: $Vp, 110: 41, 111: $Vq, 112: $Vr, 113: $Vs }, { 99: [1, 151], 100: 152, 102: [1, 153] }, { 42: $Vd, 45: 154, 58: $Ve, 86: $Vk, 99: $Vl, 102: $Vm, 103: $Vn, 106: $Vo, 108: $Vp, 110: 41, 111: $Vq, 112: $Vr, 113: $Vs }, { 42: $Vd, 45: 155, 58: $Ve, 86: $Vk, 99: $Vl, 102: $Vm, 103: $Vn, 106: $Vo, 108: $Vp, 110: 41, 111: $Vq, 112: $Vr, 113: $Vs }, o($Vg1, [2, 100], { 10: [1, 156], 93: [1, 157] }), { 77: [1, 158] }, o($Vg1, [2, 108], { 117: 160, 10: [1, 159], 14: $VD, 42: $VE, 58: $VF, 86: $VG, 102: $VH, 103: $VI, 106: $VJ, 108: $VK, 111: $VL, 112: $VM, 113: $VN }), o($Vg1, [2, 110], { 10: [1, 161] }), o($Vh1, [2, 176]), o($Vh1, [2, 163]), o($Vh1, [2, 164]), o($Vh1, [2, 165]), o($Vh1, [2, 166]), o($Vh1, [2, 167]), o($Vh1, [2, 168]), o($Vh1, [2, 169]), o($Vh1, [2, 170]), o($Vh1, [2, 171]), o($Vh1, [2, 172]), o($Vh1, [2, 173]), { 42: $Vd, 45: 162, 58: $Ve, 86: $Vk, 99: $Vl, 102: $Vm, 103: $Vn, 106: $Vo, 108: $Vp, 110: 41, 111: $Vq, 112: $Vr, 113: $Vs }, { 30: 163, 65: $Vi1, 77: $Vj1, 78: $Vk1, 79: 164, 113: $Vl1, 114: $Vm1, 115: $Vn1 }, { 30: 171, 65: $Vi1, 77: $Vj1, 78: $Vk1, 79: 164, 113: $Vl1, 114: $Vm1, 115: $Vn1 }, { 30: 173, 48: [1, 172], 65: $Vi1, 77: $Vj1, 78: $Vk1, 79: 164, 113: $Vl1, 114: $Vm1, 115: $Vn1 }, { 30: 174, 65: $Vi1, 77: $Vj1, 78: $Vk1, 79: 164, 113: $Vl1, 114: $Vm1, 115: $Vn1 }, { 30: 175, 65: $Vi1, 77: $Vj1, 78: $Vk1, 79: 164, 113: $Vl1, 114: $Vm1, 115: $Vn1 }, { 30: 176, 65: $Vi1, 77: $Vj1, 78: $Vk1, 79: 164, 113: $Vl1, 114: $Vm1, 115: $Vn1 }, { 106: [1, 177] }, { 30: 178, 65: $Vi1, 77: $Vj1, 78: $Vk1, 79: 164, 113: $Vl1, 114: $Vm1, 115: $Vn1 }, { 30: 179, 63: [1, 180], 65: $Vi1, 77: $Vj1, 78: $Vk1, 79: 164, 113: $Vl1, 114: $Vm1, 115: $Vn1 }, { 30: 181, 65: $Vi1, 77: $Vj1, 78: $Vk1, 79: 164, 113: $Vl1, 114: $Vm1, 115: $Vn1 }, { 30: 182, 65: $Vi1, 77: $Vj1, 78: $Vk1, 79: 164, 113: $Vl1, 114: $Vm1, 115: $Vn1 }, { 30: 183, 65: $Vi1, 77: $Vj1, 78: $Vk1, 79: 164, 113: $Vl1, 114: $Vm1, 115: $Vn1 }, o($VQ, [2, 175]), o($V3, [2, 20]), o($VR, [2, 25]), o($VC, [2, 43], { 18: 184, 10: $Vx }), o($VS, [2, 68], { 10: [1, 185] }), { 10: [1, 186] }, { 30: 187, 65: $Vi1, 77: $Vj1, 78: $Vk1, 79: 164, 113: $Vl1, 114: $Vm1, 115: $Vn1 }, { 75: [1, 188], 76: 189, 113: $VT, 116: $VU }, o($Vo1, [2, 73]), o($Vo1, [2, 75]), o($Vo1, [2, 76]), o($Vo1, [2, 161]), o($Vo1, [2, 162]), { 8: $Vz, 9: $VA, 10: $VV, 11: $VB, 12: $VW, 14: $VX, 21: 191, 27: $VY, 29: [1, 190], 32: $VZ, 42: $V_, 58: $V$, 73: $V01, 80: 135, 81: $V11, 82: $V21, 83: $V31, 84: $V41, 85: $V51, 86: $V61, 87: $V71, 88: 192, 102: $V81, 106: $V91, 108: $Va1, 111: $Vb1, 112: $Vc1, 113: $Vd1 }, o($Vp1, [2, 94]), o($Vp1, [2, 96]), o($Vp1, [2, 97]), o($Vp1, [2, 150]), o($Vp1, [2, 151]), o($Vp1, [2, 152]), o($Vp1, [2, 153]), o($Vp1, [2, 154]), o($Vp1, [2, 155]), o($Vp1, [2, 156]), o($Vp1, [2, 157]), o($Vp1, [2, 158]), o($Vp1, [2, 159]), o($Vp1, [2, 160]), o($Vp1, [2, 83]), o($Vp1, [2, 84]), o($Vp1, [2, 85]), o($Vp1, [2, 86]), o($Vp1, [2, 87]), o($Vp1, [2, 88]), o($Vp1, [2, 89]), o($Vp1, [2, 90]), o($Vp1, [2, 91]), o($Vp1, [2, 92]), o($Vp1, [2, 93]), { 6: 11, 7: 12, 8: $V5, 9: $V6, 10: $V7, 11: $V8, 20: 17, 22: 18, 23: 19, 24: 20, 25: 21, 26: 22, 27: $V9, 32: [1, 193], 33: 24, 34: $Va, 36: $Vb, 38: $Vc, 40: 28, 41: 38, 42: $Vd, 43: 39, 45: 40, 58: $Ve, 81: $Vf, 82: $Vg, 83: $Vh, 84: $Vi, 85: $Vj, 86: $Vk, 99: $Vl, 102: $Vm, 103: $Vn, 106: $Vo, 108: $Vp, 110: 41, 111: $Vq, 112: $Vr, 113: $Vs, 118: $Vt, 119: $Vu, 120: $Vv, 121: $Vw }, { 10: $Vx, 18: 194 }, { 10: [1, 195], 42: $Vd, 58: $Ve, 86: $Vk, 99: $Vl, 102: $Vm, 103: $Vn, 106: $Vo, 108: $Vp, 110: 109, 111: $Vq, 112: $Vr, 113: $Vs }, { 10: [1, 196] }, { 10: [1, 197], 103: [1, 198] }, o($Vq1, [2, 121]), { 10: [1, 199], 42: $Vd, 58: $Ve, 86: $Vk, 99: $Vl, 102: $Vm, 103: $Vn, 106: $Vo, 108: $Vp, 110: 109, 111: $Vq, 112: $Vr, 113: $Vs }, { 10: [1, 200], 42: $Vd, 58: $Ve, 86: $Vk, 99: $Vl, 102: $Vm, 103: $Vn, 106: $Vo, 108: $Vp, 110: 109, 111: $Vq, 112: $Vr, 113: $Vs }, { 77: [1, 201] }, o($Vg1, [2, 102], { 10: [1, 202] }), o($Vg1, [2, 104], { 10: [1, 203] }), { 77: [1, 204] }, o($Vh1, [2, 177]), { 77: [1, 205], 95: [1, 206] }, o($VO, [2, 50], { 110: 109, 42: $Vd, 58: $Ve, 86: $Vk, 99: $Vl, 102: $Vm, 103: $Vn, 106: $Vo, 108: $Vp, 111: $Vq, 112: $Vr, 113: $Vs }), { 31: [1, 207], 65: $Vi1, 79: 208, 113: $Vl1, 114: $Vm1, 115: $Vn1 }, o($Vr1, [2, 79]), o($Vr1, [2, 81]), o($Vr1, [2, 82]), o($Vr1, [2, 146]), o($Vr1, [2, 147]), o($Vr1, [2, 148]), o($Vr1, [2, 149]), { 47: [1, 209], 65: $Vi1, 79: 208, 113: $Vl1, 114: $Vm1, 115: $Vn1 }, { 30: 210, 65: $Vi1, 77: $Vj1, 78: $Vk1, 79: 164, 113: $Vl1, 114: $Vm1, 115: $Vn1 }, { 49: [1, 211], 65: $Vi1, 79: 208, 113: $Vl1, 114: $Vm1, 115: $Vn1 }, { 51: [1, 212], 65: $Vi1, 79: 208, 113: $Vl1, 114: $Vm1, 115: $Vn1 }, { 53: [1, 213], 65: $Vi1, 79: 208, 113: $Vl1, 114: $Vm1, 115: $Vn1 }, { 55: [1, 214], 65: $Vi1, 79: 208, 113: $Vl1, 114: $Vm1, 115: $Vn1 }, { 58: [1, 215] }, { 62: [1, 216], 65: $Vi1, 79: 208, 113: $Vl1, 114: $Vm1, 115: $Vn1 }, { 64: [1, 217], 65: $Vi1, 79: 208, 113: $Vl1, 114: $Vm1, 115: $Vn1 }, { 30: 218, 65: $Vi1, 77: $Vj1, 78: $Vk1, 79: 164, 113: $Vl1, 114: $Vm1, 115: $Vn1 }, { 31: [1, 219], 65: $Vi1, 79: 208, 113: $Vl1, 114: $Vm1, 115: $Vn1 }, { 65: $Vi1, 67: [1, 220], 69: [1, 221], 79: 208, 113: $Vl1, 114: $Vm1, 115: $Vn1 }, { 65: $Vi1, 67: [1, 223], 69: [1, 222], 79: 208, 113: $Vl1, 114: $Vm1, 115: $Vn1 }, o($VC, [2, 44], { 42: $Vf1 }), o($VS, [2, 70]), o($VS, [2, 69]), { 60: [1, 224], 65: $Vi1, 79: 208, 113: $Vl1, 114: $Vm1, 115: $Vn1 }, o($VS, [2, 72]), o($Vo1, [2, 74]), { 30: 225, 65: $Vi1, 77: $Vj1, 78: $Vk1, 79: 164, 113: $Vl1, 114: $Vm1, 115: $Vn1 }, o($Ve1, $V4, { 5: 226 }), o($Vp1, [2, 95]), o($Vy, [2, 35]), { 41: 227, 42: $Vd, 43: 39, 45: 40, 58: $Ve, 86: $Vk, 99: $Vl, 102: $Vm, 103: $Vn, 106: $Vo, 108: $Vp, 110: 41, 111: $Vq, 112: $Vr, 113: $Vs }, { 10: $Vs1, 58: $Vt1, 81: $Vu1, 89: 228, 102: $Vv1, 104: 229, 105: 230, 106: $Vw1, 107: $Vx1, 108: $Vy1, 109: $Vz1 }, { 10: $Vs1, 58: $Vt1, 81: $Vu1, 89: 239, 101: [1, 240], 102: $Vv1, 104: 229, 105: 230, 106: $Vw1, 107: $Vx1, 108: $Vy1, 109: $Vz1 }, { 10: $Vs1, 58: $Vt1, 81: $Vu1, 89: 241, 101: [1, 242], 102: $Vv1, 104: 229, 105: 230, 106: $Vw1, 107: $Vx1, 108: $Vy1, 109: $Vz1 }, { 102: [1, 243] }, { 10: $Vs1, 58: $Vt1, 81: $Vu1, 89: 244, 102: $Vv1, 104: 229, 105: 230, 106: $Vw1, 107: $Vx1, 108: $Vy1, 109: $Vz1 }, { 42: $Vd, 45: 245, 58: $Ve, 86: $Vk, 99: $Vl, 102: $Vm, 103: $Vn, 106: $Vo, 108: $Vp, 110: 41, 111: $Vq, 112: $Vr, 113: $Vs }, o($Vg1, [2, 101]), { 77: [1, 246] }, { 77: [1, 247], 95: [1, 248] }, o($Vg1, [2, 109]), o($Vg1, [2, 111], { 10: [1, 249] }), o($Vg1, [2, 112]), o($VP, [2, 51]), o($Vr1, [2, 80]), o($VP, [2, 52]), { 49: [1, 250], 65: $Vi1, 79: 208, 113: $Vl1, 114: $Vm1, 115: $Vn1 }, o($VP, [2, 59]), o($VP, [2, 54]), o($VP, [2, 55]), o($VP, [2, 56]), { 106: [1, 251] }, o($VP, [2, 58]), o($VP, [2, 60]), { 64: [1, 252], 65: $Vi1, 79: 208, 113: $Vl1, 114: $Vm1, 115: $Vn1 }, o($VP, [2, 62]), o($VP, [2, 63]), o($VP, [2, 65]), o($VP, [2, 64]), o($VP, [2, 66]), o([10, 42, 58, 86, 99, 102, 103, 106, 108, 111, 112, 113], [2, 78]), { 31: [1, 253], 65: $Vi1, 79: 208, 113: $Vl1, 114: $Vm1, 115: $Vn1 }, { 6: 11, 7: 12, 8: $V5, 9: $V6, 10: $V7, 11: $V8, 20: 17, 22: 18, 23: 19, 24: 20, 25: 21, 26: 22, 27: $V9, 32: [1, 254], 33: 24, 34: $Va, 36: $Vb, 38: $Vc, 40: 28, 41: 38, 42: $Vd, 43: 39, 45: 40, 58: $Ve, 81: $Vf, 82: $Vg, 83: $Vh, 84: $Vi, 85: $Vj, 86: $Vk, 99: $Vl, 102: $Vm, 103: $Vn, 106: $Vo, 108: $Vp, 110: 41, 111: $Vq, 112: $Vr, 113: $Vs, 118: $Vt, 119: $Vu, 120: $Vv, 121: $Vw }, o($VO, [2, 48]), o($Vg1, [2, 114], { 103: $VA1 }), o($VB1, [2, 123], { 105: 256, 10: $Vs1, 58: $Vt1, 81: $Vu1, 102: $Vv1, 106: $Vw1, 107: $Vx1, 108: $Vy1, 109: $Vz1 }), o($VC1, [2, 125]), o($VC1, [2, 127]), o($VC1, [2, 128]), o($VC1, [2, 129]), o($VC1, [2, 130]), o($VC1, [2, 131]), o($VC1, [2, 132]), o($VC1, [2, 133]), o($VC1, [2, 134]), o($Vg1, [2, 115], { 103: $VA1 }), { 10: [1, 257] }, o($Vg1, [2, 116], { 103: $VA1 }), { 10: [1, 258] }, o($Vq1, [2, 122]), o($Vg1, [2, 98], { 103: $VA1 }), o($Vg1, [2, 99], { 110: 109, 42: $Vd, 58: $Ve, 86: $Vk, 99: $Vl, 102: $Vm, 103: $Vn, 106: $Vo, 108: $Vp, 111: $Vq, 112: $Vr, 113: $Vs }), o($Vg1, [2, 103]), o($Vg1, [2, 105], { 10: [1, 259] }), o($Vg1, [2, 106]), { 95: [1, 260] }, { 49: [1, 261] }, { 60: [1, 262] }, { 64: [1, 263] }, { 8: $Vz, 9: $VA, 11: $VB, 21: 264 }, o($Vy, [2, 34]), { 10: $Vs1, 58: $Vt1, 81: $Vu1, 102: $Vv1, 104: 265, 105: 230, 106: $Vw1, 107: $Vx1, 108: $Vy1, 109: $Vz1 }, o($VC1, [2, 126]), { 14: $VD, 42: $VE, 58: $VF, 86: $VG, 98: 266, 102: $VH, 103: $VI, 106: $VJ, 108: $VK, 111: $VL, 112: $VM, 113: $VN, 117: 84 }, { 14: $VD, 42: $VE, 58: $VF, 86: $VG, 98: 267, 102: $VH, 103: $VI, 106: $VJ, 108: $VK, 111: $VL, 112: $VM, 113: $VN, 117: 84 }, { 95: [1, 268] }, o($Vg1, [2, 113]), o($VP, [2, 53]), { 30: 269, 65: $Vi1, 77: $Vj1, 78: $Vk1, 79: 164, 113: $Vl1, 114: $Vm1, 115: $Vn1 }, o($VP, [2, 61]), o($Ve1, $V4, { 5: 270 }), o($VB1, [2, 124], { 105: 256, 10: $Vs1, 58: $Vt1, 81: $Vu1, 102: $Vv1, 106: $Vw1, 107: $Vx1, 108: $Vy1, 109: $Vz1 }), o($Vg1, [2, 119], { 117: 160, 10: [1, 271], 14: $VD, 42: $VE, 58: $VF, 86: $VG, 102: $VH, 103: $VI, 106: $VJ, 108: $VK, 111: $VL, 112: $VM, 113: $VN }), o($Vg1, [2, 120], { 117: 160, 10: [1, 272], 14: $VD, 42: $VE, 58: $VF, 86: $VG, 102: $VH, 103: $VI, 106: $VJ, 108: $VK, 111: $VL, 112: $VM, 113: $VN }), o($Vg1, [2, 107]), { 31: [1, 273], 65: $Vi1, 79: 208, 113: $Vl1, 114: $Vm1, 115: $Vn1 }, { 6: 11, 7: 12, 8: $V5, 9: $V6, 10: $V7, 11: $V8, 20: 17, 22: 18, 23: 19, 24: 20, 25: 21, 26: 22, 27: $V9, 32: [1, 274], 33: 24, 34: $Va, 36: $Vb, 38: $Vc, 40: 28, 41: 38, 42: $Vd, 43: 39, 45: 40, 58: $Ve, 81: $Vf, 82: $Vg, 83: $Vh, 84: $Vi, 85: $Vj, 86: $Vk, 99: $Vl, 102: $Vm, 103: $Vn, 106: $Vo, 108: $Vp, 110: 41, 111: $Vq, 112: $Vr, 113: $Vs, 118: $Vt, 119: $Vu, 120: $Vv, 121: $Vw }, { 10: $Vs1, 58: $Vt1, 81: $Vu1, 89: 275, 102: $Vv1, 104: 229, 105: 230, 106: $Vw1, 107: $Vx1, 108: $Vy1, 109: $Vz1 }, { 10: $Vs1, 58: $Vt1, 81: $Vu1, 89: 276, 102: $Vv1, 104: 229, 105: 230, 106: $Vw1, 107: $Vx1, 108: $Vy1, 109: $Vz1 }, o($VP, [2, 57]), o($Vy, [2, 33]), o($Vg1, [2, 117], { 103: $VA1 }), o($Vg1, [2, 118], { 103: $VA1 })],\n defaultActions: {},\n parseError: 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 },\n parse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = \"\", yylineno = 0, yyleng = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer2 = 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 lexer2.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer2;\n sharedState.yy.parser = this;\n if (typeof lexer2.yylloc == \"undefined\") {\n lexer2.yylloc = {};\n }\n var yyloc = lexer2.yylloc;\n lstack.push(yyloc);\n var ranges = lexer2.options && lexer2.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 lex2() {\n var token;\n token = tstack.pop() || lexer2.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, state, action, 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 = lex2();\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 (lexer2.showPosition) {\n errStr = \"Parse error on line \" + (yylineno + 1) + \":\\n\" + lexer2.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: lexer2.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer2.yylineno,\n loc: yyloc,\n 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(lexer2.yytext);\n lstack.push(lexer2.yylloc);\n stack.push(action[1]);\n symbol = null;\n {\n yyleng = lexer2.yyleng;\n yytext = lexer2.yytext;\n yylineno = lexer2.yylineno;\n yyloc = lexer2.yylloc;\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 var lexer = function() {\n var lexer2 = {\n EOF: 1,\n parseError: 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 // resets the lexer, sets new input\n setInput: 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 // consumes and returns one char from the input\n input: 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 this._input = this._input.slice(1);\n return ch;\n },\n // unshifts one char (or a string) into the input\n unput: function(ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - 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 if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\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 ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len\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 // When called from action, caches matched text and appends it on next action\n more: function() {\n this._more = true;\n return this;\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.\n reject: 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 return this;\n },\n // retain first n characters of the match\n less: function(n) {\n this.unput(this.match.slice(n));\n },\n // displays already matched input, i.e. for error messages\n pastInput: 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 // displays upcoming input, i.e. for error messages\n upcomingInput: 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 // displays the character position where the lexing error occurred, i.e. for error messages\n showPosition: function() {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n // test the lexed token: return FALSE when not a match, otherwise return token\n test_match: function(match, indexed_rule) {\n var token, lines, backup;\n if (this.options.backtrack_lexer) {\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 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 ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length : 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 for (var k in backup) {\n this[k] = backup[k];\n }\n return false;\n }\n return false;\n },\n // return next match in input\n next: function() {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n var token, match, tempMatch, 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;\n } else {\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 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 // return next match that has a token\n lex: function lex2() {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\n begin: function begin(condition) {\n this.conditionStack.push(condition);\n },\n // pop the previously active lexer condition state off the condition stack\n popState: 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 // 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 // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\n topState: 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 // alias for begin(condition)\n pushState: function pushState(condition) {\n this.begin(condition);\n },\n // return the number of states currently on the stack\n stateStackSize: function stateStackSize() {\n return this.conditionStack.length;\n },\n options: {},\n performAction: function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) {\n switch ($avoiding_name_collisions) {\n case 0:\n this.begin(\"acc_title\");\n return 34;\n case 1:\n this.popState();\n return \"acc_title_value\";\n case 2:\n this.begin(\"acc_descr\");\n return 36;\n case 3:\n this.popState();\n return \"acc_descr_value\";\n case 4:\n this.begin(\"acc_descr_multiline\");\n break;\n case 5:\n this.popState();\n break;\n case 6:\n return \"acc_descr_multiline_value\";\n case 7:\n this.begin(\"callbackname\");\n break;\n case 8:\n this.popState();\n break;\n case 9:\n this.popState();\n this.begin(\"callbackargs\");\n break;\n case 10:\n return 92;\n case 11:\n this.popState();\n break;\n case 12:\n return 93;\n case 13:\n return \"MD_STR\";\n case 14:\n this.popState();\n break;\n case 15:\n this.begin(\"md_string\");\n break;\n case 16:\n return \"STR\";\n case 17:\n this.popState();\n break;\n case 18:\n this.pushState(\"string\");\n break;\n case 19:\n return 81;\n case 20:\n return 99;\n case 21:\n return 82;\n case 22:\n return 101;\n case 23:\n return 83;\n case 24:\n return 84;\n case 25:\n return 94;\n case 26:\n this.begin(\"click\");\n break;\n case 27:\n this.popState();\n break;\n case 28:\n return 85;\n case 29:\n if (yy.lex.firstGraph()) {\n this.begin(\"dir\");\n }\n return 12;\n case 30:\n if (yy.lex.firstGraph()) {\n this.begin(\"dir\");\n }\n return 12;\n case 31:\n if (yy.lex.firstGraph()) {\n this.begin(\"dir\");\n }\n return 12;\n case 32:\n return 27;\n case 33:\n return 32;\n case 34:\n return 95;\n case 35:\n return 95;\n case 36:\n return 95;\n case 37:\n return 95;\n case 38:\n this.popState();\n return 13;\n case 39:\n this.popState();\n return 14;\n case 40:\n this.popState();\n return 14;\n case 41:\n this.popState();\n return 14;\n case 42:\n this.popState();\n return 14;\n case 43:\n this.popState();\n return 14;\n case 44:\n this.popState();\n return 14;\n case 45:\n this.popState();\n return 14;\n case 46:\n this.popState();\n return 14;\n case 47:\n this.popState();\n return 14;\n case 48:\n this.popState();\n return 14;\n case 49:\n return 118;\n case 50:\n return 119;\n case 51:\n return 120;\n case 52:\n return 121;\n case 53:\n return 102;\n case 54:\n return 108;\n case 55:\n return 44;\n case 56:\n return 58;\n case 57:\n return 42;\n case 58:\n return 8;\n case 59:\n return 103;\n case 60:\n return 112;\n case 61:\n this.popState();\n return 75;\n case 62:\n this.pushState(\"edgeText\");\n return 73;\n case 63:\n return 116;\n case 64:\n this.popState();\n return 75;\n case 65:\n this.pushState(\"thickEdgeText\");\n return 73;\n case 66:\n return 116;\n case 67:\n this.popState();\n return 75;\n case 68:\n this.pushState(\"dottedEdgeText\");\n return 73;\n case 69:\n return 116;\n case 70:\n return 75;\n case 71:\n this.popState();\n return 51;\n case 72:\n return \"TEXT\";\n case 73:\n this.pushState(\"ellipseText\");\n return 50;\n case 74:\n this.popState();\n return 53;\n case 75:\n this.pushState(\"text\");\n return 52;\n case 76:\n this.popState();\n return 55;\n case 77:\n this.pushState(\"text\");\n return 54;\n case 78:\n return 56;\n case 79:\n this.pushState(\"text\");\n return 65;\n case 80:\n this.popState();\n return 62;\n case 81:\n this.pushState(\"text\");\n return 61;\n case 82:\n this.popState();\n return 47;\n case 83:\n this.pushState(\"text\");\n return 46;\n case 84:\n this.popState();\n return 67;\n case 85:\n this.popState();\n return 69;\n case 86:\n return 114;\n case 87:\n this.pushState(\"trapText\");\n return 66;\n case 88:\n this.pushState(\"trapText\");\n return 68;\n case 89:\n return 115;\n case 90:\n return 65;\n case 91:\n return 87;\n case 92:\n return \"SEP\";\n case 93:\n return 86;\n case 94:\n return 112;\n case 95:\n return 108;\n case 96:\n return 42;\n case 97:\n return 106;\n case 98:\n return 111;\n case 99:\n return 113;\n case 100:\n this.popState();\n return 60;\n case 101:\n this.pushState(\"text\");\n return 60;\n case 102:\n this.popState();\n return 49;\n case 103:\n this.pushState(\"text\");\n return 48;\n case 104:\n this.popState();\n return 31;\n case 105:\n this.pushState(\"text\");\n return 29;\n case 106:\n this.popState();\n return 64;\n case 107:\n this.pushState(\"text\");\n return 63;\n case 108:\n return \"TEXT\";\n case 109:\n return \"QUOTE\";\n case 110:\n return 9;\n case 111:\n return 10;\n case 112:\n return 11;\n }\n },\n rules: [/^(?:accTitle\\s*:\\s*)/, /^(?:(?!\\n||)*[^\\n]*)/, /^(?:accDescr\\s*:\\s*)/, /^(?:(?!\\n||)*[^\\n]*)/, /^(?:accDescr\\s*\\{\\s*)/, /^(?:[\\}])/, /^(?:[^\\}]*)/, /^(?:call[\\s]+)/, /^(?:\\([\\s]*\\))/, /^(?:\\()/, /^(?:[^(]*)/, /^(?:\\))/, /^(?:[^)]*)/, /^(?:[^`\"]+)/, /^(?:[`][\"])/, /^(?:[\"][`])/, /^(?:[^\"]+)/, /^(?:[\"])/, /^(?:[\"])/, /^(?:style\\b)/, /^(?:default\\b)/, /^(?:linkStyle\\b)/, /^(?:interpolate\\b)/, /^(?:classDef\\b)/, /^(?:class\\b)/, /^(?:href[\\s])/, /^(?:click[\\s]+)/, /^(?:[\\s\\n])/, /^(?:[^\\s\\n]*)/, /^(?:flowchart-elk\\b)/, /^(?:graph\\b)/, /^(?:flowchart\\b)/, /^(?:subgraph\\b)/, /^(?:end\\b\\s*)/, /^(?:_self\\b)/, /^(?:_blank\\b)/, /^(?:_parent\\b)/, /^(?:_top\\b)/, /^(?:(\\r?\\n)*\\s*\\n)/, /^(?:\\s*LR\\b)/, /^(?:\\s*RL\\b)/, /^(?:\\s*TB\\b)/, /^(?:\\s*BT\\b)/, /^(?:\\s*TD\\b)/, /^(?:\\s*BR\\b)/, /^(?:\\s*<)/, /^(?:\\s*>)/, /^(?:\\s*\\^)/, /^(?:\\s*v\\b)/, /^(?:.*direction\\s+TB[^\\n]*)/, /^(?:.*direction\\s+BT[^\\n]*)/, /^(?:.*direction\\s+RL[^\\n]*)/, /^(?:.*direction\\s+LR[^\\n]*)/, /^(?:[0-9]+)/, /^(?:#)/, /^(?::::)/, /^(?::)/, /^(?:&)/, /^(?:;)/, /^(?:,)/, /^(?:\\*)/, /^(?:\\s*[xo<]?--+[-xo>]\\s*)/, /^(?:\\s*[xo<]?--\\s*)/, /^(?:[^-]|-(?!-)+)/, /^(?:\\s*[xo<]?==+[=xo>]\\s*)/, /^(?:\\s*[xo<]?==\\s*)/, /^(?:[^=]|=(?!))/, /^(?:\\s*[xo<]?-?\\.+-[xo>]?\\s*)/, /^(?:\\s*[xo<]?-\\.\\s*)/, /^(?:[^\\.]|\\.(?!))/, /^(?:\\s*~~[\\~]+\\s*)/, /^(?:[-/\\)][\\)])/, /^(?:[^\\(\\)\\[\\]\\{\\}]|!\\)+)/, /^(?:\\(-)/, /^(?:\\]\\))/, /^(?:\\(\\[)/, /^(?:\\]\\])/, /^(?:\\[\\[)/, /^(?:\\[\\|)/, /^(?:>)/, /^(?:\\)\\])/, /^(?:\\[\\()/, /^(?:\\)\\)\\))/, /^(?:\\(\\(\\()/, /^(?:[\\\\(?=\\])][\\]])/, /^(?:\\/(?=\\])\\])/, /^(?:\\/(?!\\])|\\\\(?!\\])|[^\\\\\\[\\]\\(\\)\\{\\}\\/]+)/, /^(?:\\[\\/)/, /^(?:\\[\\\\)/, /^(?:<)/, /^(?:>)/, /^(?:\\^)/, /^(?:\\\\\\|)/, /^(?:v\\b)/, /^(?:\\*)/, /^(?:#)/, /^(?:&)/, /^(?:([A-Za-z0-9!\"\\#$%&'*+\\.`?\\\\_\\/]|-(?=[^\\>\\-\\.])|(?!))+)/, /^(?:-)/, /^(?:[\\u00AA\\u00B5\\u00BA\\u00C0-\\u00D6\\u00D8-\\u00F6]|[\\u00F8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377]|[\\u037A-\\u037D\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5]|[\\u03F7-\\u0481\\u048A-\\u0527\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA]|[\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE]|[\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA]|[\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0]|[\\u08A2-\\u08AC\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0977]|[\\u0979-\\u097F\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2]|[\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A]|[\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39]|[\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8]|[\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C]|[\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C]|[\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99]|[\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0]|[\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C33\\u0C35-\\u0C39\\u0C3D]|[\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3]|[\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10]|[\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1]|[\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81]|[\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3]|[\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6]|[\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A]|[\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081]|[\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D]|[\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0]|[\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310]|[\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C]|[\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u1700-\\u170C\\u170E-\\u1711]|[\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7]|[\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191C]|[\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16]|[\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF]|[\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC]|[\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D]|[\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D]|[\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3]|[\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F]|[\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128]|[\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184]|[\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3]|[\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6]|[\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE]|[\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C]|[\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D]|[\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC]|[\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B]|[\\uA640-\\uA66E\\uA67F-\\uA697\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788]|[\\uA78B-\\uA78E\\uA790-\\uA793\\uA7A0-\\uA7AA\\uA7F8-\\uA801\\uA803-\\uA805]|[\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB]|[\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uAA00-\\uAA28]|[\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA80-\\uAAAF\\uAAB1\\uAAB5]|[\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4]|[\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E]|[\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D]|[\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36]|[\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D]|[\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC]|[\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF]|[\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC])/, /^(?:\\|)/, /^(?:\\|)/, /^(?:\\))/, /^(?:\\()/, /^(?:\\])/, /^(?:\\[)/, /^(?:(\\}))/, /^(?:\\{)/, /^(?:[^\\[\\]\\(\\)\\{\\}\\|\\\"]+)/, /^(?:\")/, /^(?:(\\r?\\n)+)/, /^(?:\\s)/, /^(?:$)/],\n conditions: { \"callbackargs\": { \"rules\": [11, 12, 15, 18, 70, 73, 75, 77, 81, 83, 87, 88, 101, 103, 105, 107], \"inclusive\": false }, \"callbackname\": { \"rules\": [8, 9, 10, 15, 18, 70, 73, 75, 77, 81, 83, 87, 88, 101, 103, 105, 107], \"inclusive\": false }, \"href\": { \"rules\": [15, 18, 70, 73, 75, 77, 81, 83, 87, 88, 101, 103, 105, 107], \"inclusive\": false }, \"click\": { \"rules\": [15, 18, 27, 28, 70, 73, 75, 77, 81, 83, 87, 88, 101, 103, 105, 107], \"inclusive\": false }, \"dottedEdgeText\": { \"rules\": [15, 18, 67, 69, 70, 73, 75, 77, 81, 83, 87, 88, 101, 103, 105, 107], \"inclusive\": false }, \"thickEdgeText\": { \"rules\": [15, 18, 64, 66, 70, 73, 75, 77, 81, 83, 87, 88, 101, 103, 105, 107], \"inclusive\": false }, \"edgeText\": { \"rules\": [15, 18, 61, 63, 70, 73, 75, 77, 81, 83, 87, 88, 101, 103, 105, 107], \"inclusive\": false }, \"trapText\": { \"rules\": [15, 18, 70, 73, 75, 77, 81, 83, 84, 85, 86, 87, 88, 101, 103, 105, 107], \"inclusive\": false }, \"ellipseText\": { \"rules\": [15, 18, 70, 71, 72, 73, 75, 77, 81, 83, 87, 88, 101, 103, 105, 107], \"inclusive\": false }, \"text\": { \"rules\": [15, 18, 70, 73, 74, 75, 76, 77, 80, 81, 82, 83, 87, 88, 100, 101, 102, 103, 104, 105, 106, 107, 108], \"inclusive\": false }, \"vertex\": { \"rules\": [15, 18, 70, 73, 75, 77, 81, 83, 87, 88, 101, 103, 105, 107], \"inclusive\": false }, \"dir\": { \"rules\": [15, 18, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 70, 73, 75, 77, 81, 83, 87, 88, 101, 103, 105, 107], \"inclusive\": false }, \"acc_descr_multiline\": { \"rules\": [5, 6, 15, 18, 70, 73, 75, 77, 81, 83, 87, 88, 101, 103, 105, 107], \"inclusive\": false }, \"acc_descr\": { \"rules\": [3, 15, 18, 70, 73, 75, 77, 81, 83, 87, 88, 101, 103, 105, 107], \"inclusive\": false }, \"acc_title\": { \"rules\": [1, 15, 18, 70, 73, 75, 77, 81, 83, 87, 88, 101, 103, 105, 107], \"inclusive\": false }, \"md_string\": { \"rules\": [13, 14, 15, 18, 70, 73, 75, 77, 81, 83, 87, 88, 101, 103, 105, 107], \"inclusive\": false }, \"string\": { \"rules\": [15, 16, 17, 18, 70, 73, 75, 77, 81, 83, 87, 88, 101, 103, 105, 107], \"inclusive\": false }, \"INITIAL\": { \"rules\": [0, 2, 4, 7, 15, 18, 19, 20, 21, 22, 23, 24, 25, 26, 29, 30, 31, 32, 33, 34, 35, 36, 37, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 64, 65, 67, 68, 70, 73, 75, 77, 78, 79, 81, 83, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 101, 103, 105, 107, 109, 110, 111, 112], \"inclusive\": true } }\n };\n return lexer2;\n }();\n parser2.lexer = lexer;\n function Parser() {\n this.yy = {};\n }\n Parser.prototype = parser2;\n parser2.Parser = Parser;\n return new Parser();\n}();\nparser.parser = parser;\nconst parser$1 = parser;\nconst MERMAID_DOM_ID_PREFIX = \"flowchart-\";\nlet vertexCounter = 0;\nlet config = getConfig();\nlet vertices = {};\nlet edges = [];\nlet classes = {};\nlet subGraphs = [];\nlet subGraphLookup = {};\nlet tooltips = {};\nlet subCount = 0;\nlet firstGraphFlag = true;\nlet direction;\nlet version;\nlet funs = [];\nconst sanitizeText = (txt) => common.sanitizeText(txt, config);\nconst lookUpDomId = function(id) {\n const vertexKeys = Object.keys(vertices);\n for (const vertexKey of vertexKeys) {\n if (vertices[vertexKey].id === id) {\n return vertices[vertexKey].domId;\n }\n }\n return id;\n};\nconst addVertex = function(_id, textObj, type, style, classes2, dir, props = {}) {\n let txt;\n let id = _id;\n if (id === void 0) {\n return;\n }\n if (id.trim().length === 0) {\n return;\n }\n if (vertices[id] === void 0) {\n vertices[id] = {\n id,\n labelType: \"text\",\n domId: MERMAID_DOM_ID_PREFIX + id + \"-\" + vertexCounter,\n styles: [],\n classes: []\n };\n }\n vertexCounter++;\n if (textObj !== void 0) {\n config = getConfig();\n txt = sanitizeText(textObj.text.trim());\n vertices[id].labelType = textObj.type;\n if (txt[0] === '\"' && txt[txt.length - 1] === '\"') {\n txt = txt.substring(1, txt.length - 1);\n }\n vertices[id].text = txt;\n } else {\n if (vertices[id].text === void 0) {\n vertices[id].text = _id;\n }\n }\n if (type !== void 0) {\n vertices[id].type = type;\n }\n if (style !== void 0 && style !== null) {\n style.forEach(function(s) {\n vertices[id].styles.push(s);\n });\n }\n if (classes2 !== void 0 && classes2 !== null) {\n classes2.forEach(function(s) {\n vertices[id].classes.push(s);\n });\n }\n if (dir !== void 0) {\n vertices[id].dir = dir;\n }\n if (vertices[id].props === void 0) {\n vertices[id].props = props;\n } else if (props !== void 0) {\n Object.assign(vertices[id].props, props);\n }\n};\nconst addSingleLink = function(_start, _end, type) {\n let start = _start;\n let end = _end;\n const edge = { start, end, type: void 0, text: \"\", labelType: \"text\" };\n log.info(\"abc78 Got edge...\", edge);\n const linkTextObj = type.text;\n if (linkTextObj !== void 0) {\n edge.text = sanitizeText(linkTextObj.text.trim());\n if (edge.text[0] === '\"' && edge.text[edge.text.length - 1] === '\"') {\n edge.text = edge.text.substring(1, edge.text.length - 1);\n }\n edge.labelType = linkTextObj.type;\n }\n if (type !== void 0) {\n edge.type = type.type;\n edge.stroke = type.stroke;\n edge.length = type.length;\n }\n if ((edge == null ? void 0 : edge.length) > 10) {\n edge.length = 10;\n }\n if (edges.length < (config.maxEdges ?? 500)) {\n log.info(\"abc78 pushing edge...\");\n edges.push(edge);\n } else {\n throw new Error(\n `Edge limit exceeded. ${edges.length} edges found, but the limit is ${config.maxEdges}.\n\nInitialize mermaid with maxEdges set to a higher number to allow more edges.\nYou cannot set this config via configuration inside the diagram as it is a secure config.\nYou have to call mermaid.initialize.`\n );\n }\n};\nconst addLink = function(_start, _end, type) {\n log.info(\"addLink (abc78)\", _start, _end, type);\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);\n }\n }\n};\nconst 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};\nconst updateLink = function(positions, style) {\n positions.forEach(function(pos) {\n if (pos >= edges.length) {\n throw new Error(\n `The index ${pos} for linkStyle is out of bounds. Valid indices for linkStyle are between 0 and ${edges.length - 1}. (Help: Ensure that the index is within the range of existing edges.)`\n );\n }\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};\nconst addClass = function(ids, style) {\n ids.split(\",\").forEach(function(id) {\n if (classes[id] === void 0) {\n classes[id] = { id, styles: [], textStyles: [] };\n }\n if (style !== void 0 && style !== null) {\n style.forEach(function(s) {\n if (s.match(\"color\")) {\n const newStyle = s.replace(\"fill\", \"bgFill\").replace(\"color\", \"fill\");\n classes[id].textStyles.push(newStyle);\n }\n classes[id].styles.push(s);\n });\n }\n });\n};\nconst 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 if (direction === \"TD\") {\n direction = \"TB\";\n }\n};\nconst setClass = function(ids, className) {\n ids.split(\",\").forEach(function(_id) {\n let id = _id;\n if (vertices[id] !== void 0) {\n vertices[id].classes.push(className);\n }\n if (subGraphLookup[id] !== void 0) {\n subGraphLookup[id].classes.push(className);\n }\n });\n};\nconst setTooltip = function(ids, tooltip) {\n ids.split(\",\").forEach(function(id) {\n if (tooltip !== void 0) {\n tooltips[version === \"gen-1\" ? lookUpDomId(id) : id] = sanitizeText(tooltip);\n }\n });\n};\nconst setClickFun = function(id, functionName, functionArgs) {\n let domId = lookUpDomId(id);\n if (getConfig().securityLevel !== \"loose\") {\n return;\n }\n if (functionName === void 0) {\n return;\n }\n let argList = [];\n if (typeof functionArgs === \"string\") {\n argList = functionArgs.split(/,(?=(?:(?:[^\"]*\"){2})*[^\"]*$)/);\n for (let i = 0; i < argList.length; i++) {\n let item = argList[i].trim();\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 if (argList.length === 0) {\n argList.push(id);\n }\n if (vertices[id] !== void 0) {\n vertices[id].haveCallback = true;\n funs.push(function() {\n const elem = document.querySelector(`[id=\"${domId}\"]`);\n if (elem !== null) {\n elem.addEventListener(\n \"click\",\n function() {\n utils.runFunc(functionName, ...argList);\n },\n false\n );\n }\n });\n }\n};\nconst setLink = function(ids, linkStr, target) {\n ids.split(\",\").forEach(function(id) {\n if (vertices[id] !== void 0) {\n vertices[id].link = utils.formatUrl(linkStr, config);\n vertices[id].linkTarget = target;\n }\n });\n setClass(ids, \"clickable\");\n};\nconst getTooltip = function(id) {\n if (tooltips.hasOwnProperty(id)) {\n return tooltips[id];\n }\n return void 0;\n};\nconst setClickEvent = function(ids, functionName, functionArgs) {\n ids.split(\",\").forEach(function(id) {\n setClickFun(id, functionName, functionArgs);\n });\n setClass(ids, \"clickable\");\n};\nconst bindFunctions = function(element) {\n funs.forEach(function(fun) {\n fun(element);\n });\n};\nconst getDirection = function() {\n return direction.trim();\n};\nconst getVertices = function() {\n return vertices;\n};\nconst getEdges = function() {\n return edges;\n};\nconst getClasses = function() {\n return classes;\n};\nconst setupToolTips = function(element) {\n let tooltipElem = select(\".mermaidTooltip\");\n if ((tooltipElem._groups || tooltipElem)[0][0] === null) {\n tooltipElem = select(\"body\").append(\"div\").attr(\"class\", \"mermaidTooltip\").style(\"opacity\", 0);\n }\n const svg = select(element).select(\"svg\");\n const nodes = svg.selectAll(\"g.node\");\n nodes.on(\"mouseover\", function() {\n const el = select(this);\n const title = el.attr(\"title\");\n if (title === null) {\n return;\n }\n const rect = this.getBoundingClientRect();\n tooltipElem.transition().duration(200).style(\"opacity\", \".9\");\n tooltipElem.text(el.attr(\"title\")).style(\"left\", window.scrollX + rect.left + (rect.right - rect.left) / 2 + \"px\").style(\"top\", window.scrollY + rect.bottom + \"px\");\n tooltipElem.html(tooltipElem.html().replace(/<br\\/>/g, \"<br/>\"));\n el.classed(\"hover\", true);\n }).on(\"mouseout\", function() {\n tooltipElem.transition().duration(500).style(\"opacity\", 0);\n const el = select(this);\n el.classed(\"hover\", false);\n });\n};\nfuns.push(setupToolTips);\nconst clear = function(ver = \"gen-1\") {\n vertices = {};\n classes = {};\n edges = [];\n funs = [setupToolTips];\n subGraphs = [];\n subGraphLookup = {};\n subCount = 0;\n tooltips = {};\n firstGraphFlag = true;\n version = ver;\n config = getConfig();\n clear$1();\n};\nconst setGen = (ver) => {\n version = ver || \"gen-2\";\n};\nconst defaultStyle = function() {\n return \"fill:#ffa;stroke: #f66; stroke-width: 3px; stroke-dasharray: 5, 5;fill:#ffa;stroke: #666;\";\n};\nconst addSubGraph = function(_id, list, _title) {\n let id = _id.text.trim();\n let title = _title.text;\n if (_id === _title && _title.text.match(/\\s/)) {\n id = void 0;\n }\n function uniq(a) {\n const prims = { boolean: {}, number: {}, string: {} };\n const objs = [];\n let dir2;\n const nodeList2 = a.filter(function(item) {\n const type = typeof item;\n if (item.stmt && item.stmt === \"dir\") {\n dir2 = item.value;\n return false;\n }\n if (item.trim() === \"\") {\n return false;\n }\n if (type in prims) {\n return prims[type].hasOwnProperty(item) ? false : prims[type][item] = true;\n } else {\n return objs.includes(item) ? false : objs.push(item);\n }\n });\n return { nodeList: nodeList2, dir: dir2 };\n }\n let nodeList = [];\n const { nodeList: nl, dir } = uniq(nodeList.concat.apply(nodeList, list));\n nodeList = nl;\n if (version === \"gen-1\") {\n for (let i = 0; i < nodeList.length; i++) {\n nodeList[i] = lookUpDomId(nodeList[i]);\n }\n }\n id = id || \"subGraph\" + subCount;\n title = title || \"\";\n title = sanitizeText(title);\n subCount = subCount + 1;\n const subGraph = {\n id,\n nodes: nodeList,\n title: title.trim(),\n classes: [],\n dir,\n labelType: _title.type\n };\n log.info(\"Adding\", subGraph.id, subGraph.nodes, subGraph.dir);\n subGraph.nodes = makeUniq(subGraph, subGraphs).nodes;\n subGraphs.push(subGraph);\n subGraphLookup[id] = subGraph;\n return id;\n};\nconst getPosForId = function(id) {\n for (const [i, subGraph] of subGraphs.entries()) {\n if (subGraph.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 > 2e3) {\n return;\n }\n posCrossRef[secCount] = pos;\n if (subGraphs[pos].id === id) {\n return {\n result: true,\n count: 0\n };\n }\n let count = 0;\n let posCount = 1;\n while (count < nodes.length) {\n const childPos = getPosForId(nodes[count]);\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 return {\n result: false,\n count: posCount\n };\n};\nconst getDepthFirstPos = function(pos) {\n return posCrossRef[pos];\n};\nconst indexNodes = function() {\n secCount = -1;\n if (subGraphs.length > 0) {\n indexNodes2(\"none\", subGraphs.length - 1);\n }\n};\nconst getSubGraphs = function() {\n return subGraphs;\n};\nconst firstGraph = () => {\n if (firstGraphFlag) {\n firstGraphFlag = false;\n return true;\n }\n return false;\n};\nconst destructStartLink = (_str) => {\n let str = _str.trim();\n let type = \"arrow_open\";\n switch (str[0]) {\n case \"<\":\n type = \"arrow_point\";\n str = str.slice(1);\n break;\n case \"x\":\n type = \"arrow_cross\";\n str = str.slice(1);\n break;\n case \"o\":\n type = \"arrow_circle\";\n str = str.slice(1);\n break;\n }\n let stroke = \"normal\";\n if (str.includes(\"=\")) {\n stroke = \"thick\";\n }\n if (str.includes(\".\")) {\n stroke = \"dotted\";\n }\n return { type, stroke };\n};\nconst countChar = (char, str) => {\n const length = str.length;\n let count = 0;\n for (let i = 0; i < length; ++i) {\n if (str[i] === char) {\n ++count;\n }\n }\n return count;\n};\nconst destructEndLink = (_str) => {\n const str = _str.trim();\n let line = str.slice(0, -1);\n let type = \"arrow_open\";\n switch (str.slice(-1)) {\n case \"x\":\n type = \"arrow_cross\";\n if (str[0] === \"x\") {\n type = \"double_\" + type;\n line = line.slice(1);\n }\n break;\n case \">\":\n type = \"arrow_point\";\n if (str[0] === \"<\") {\n type = \"double_\" + type;\n line = line.slice(1);\n }\n break;\n case \"o\":\n type = \"arrow_circle\";\n if (str[0] === \"o\") {\n type = \"double_\" + type;\n line = line.slice(1);\n }\n break;\n }\n let stroke = \"normal\";\n let length = line.length - 1;\n if (line[0] === \"=\") {\n stroke = \"thick\";\n }\n if (line[0] === \"~\") {\n stroke = \"invisible\";\n }\n let dots = countChar(\".\", line);\n if (dots) {\n stroke = \"dotted\";\n length = dots;\n }\n return { type, stroke, length };\n};\nconst destructLink = (_str, _startStr) => {\n const info = destructEndLink(_str);\n let startInfo;\n if (_startStr) {\n startInfo = destructStartLink(_startStr);\n if (startInfo.stroke !== info.stroke) {\n return { type: \"INVALID\", stroke: \"INVALID\" };\n }\n if (startInfo.type === \"arrow_open\") {\n startInfo.type = info.type;\n } else {\n if (startInfo.type !== info.type) {\n return { type: \"INVALID\", stroke: \"INVALID\" };\n }\n startInfo.type = \"double_\" + startInfo.type;\n }\n if (startInfo.type === \"double_arrow\") {\n startInfo.type = \"double_arrow_point\";\n }\n startInfo.length = info.length;\n return startInfo;\n }\n return info;\n};\nconst exists = (allSgs, _id) => {\n let res = false;\n allSgs.forEach((sg) => {\n const pos = sg.nodes.indexOf(_id);\n if (pos >= 0) {\n res = true;\n }\n });\n return res;\n};\nconst makeUniq = (sg, allSubgraphs) => {\n const res = [];\n sg.nodes.forEach((_id, pos) => {\n if (!exists(allSubgraphs, _id)) {\n res.push(sg.nodes[pos]);\n }\n });\n return { nodes: res };\n};\nconst lex = {\n firstGraph\n};\nconst flowDb = {\n defaultConfig: () => defaultConfig.flowchart,\n setAccTitle,\n getAccTitle,\n getAccDescription,\n setAccDescription,\n addVertex,\n lookUpDomId,\n addLink,\n updateLinkInterpolate,\n updateLink,\n addClass,\n setDirection,\n setClass,\n setTooltip,\n getTooltip,\n setClickEvent,\n setLink,\n bindFunctions,\n getDirection,\n getVertices,\n getEdges,\n getClasses,\n clear,\n setGen,\n defaultStyle,\n addSubGraph,\n getDepthFirstPos,\n indexNodes,\n getSubGraphs,\n destructLink,\n lex,\n exists,\n makeUniq,\n setDiagramTitle,\n getDiagramTitle\n};\nconst db = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n addClass,\n addLink,\n addSingleLink,\n addSubGraph,\n addVertex,\n bindFunctions,\n clear,\n default: flowDb,\n defaultStyle,\n destructLink,\n firstGraph,\n getClasses,\n getDepthFirstPos,\n getDirection,\n getEdges,\n getSubGraphs,\n getTooltip,\n getVertices,\n indexNodes,\n lex,\n lookUpDomId,\n setClass,\n setClickEvent,\n setDirection,\n setGen,\n setLink,\n updateLink,\n updateLinkInterpolate\n}, Symbol.toStringTag, { value: \"Module\" }));\nexport {\n db as d,\n flowDb as f,\n parser$1 as p\n};\n","import { p as parser, f as flowDb } from \"./flowDb-4b19a42f.js\";\nimport * as graphlib from \"dagre-d3-es/src/graphlib/index.js\";\nimport { select, curveLinear, selectAll } from \"d3\";\nimport { k as getStylesFromArray, m as evaluate, c as getConfig, r as renderKatex, e as common, l as log, n as interpolateToCurve, o as setupGraphViewbox } from \"./mermaid-f47111a7.js\";\nimport { render } from \"dagre-d3-es\";\nimport { applyStyle } from \"dagre-d3-es/src/dagre-js/util.js\";\nimport { addHtmlLabel } from \"dagre-d3-es/src/dagre-js/label/add-html-label.js\";\nimport { intersectPolygon } from \"dagre-d3-es/src/dagre-js/intersect/intersect-polygon.js\";\nimport { intersectRect } from \"dagre-d3-es/src/dagre-js/intersect/intersect-rect.js\";\nimport { f as flowRendererV2, a as flowStyles } from \"./styles-3ed67cfa.js\";\nimport \"ts-dedent\";\nimport \"dayjs\";\nimport \"@braintree/sanitize-url\";\nimport \"dompurify\";\nimport \"khroma\";\nimport \"lodash-es/memoize.js\";\nimport \"lodash-es/merge.js\";\nimport \"stylis\";\nimport \"lodash-es/isEmpty.js\";\nimport \"./index-fc10efb0.js\";\nimport \"dagre-d3-es/src/dagre/index.js\";\nimport \"dagre-d3-es/src/graphlib/json.js\";\nimport \"./edges-d32062c0.js\";\nimport \"./createText-6b48ae7d.js\";\nimport \"mdast-util-from-markdown\";\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 intersectPolygon(node, points, point);\n };\n return shapeSvg;\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 intersectPolygon(node, points, point);\n };\n return shapeSvg;\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 intersectPolygon(node, points, point);\n };\n return shapeSvg;\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 intersectPolygon(node, points, point);\n };\n return shapeSvg;\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 intersectPolygon(node, points, point);\n };\n return shapeSvg;\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 intersectPolygon(node, points, point);\n };\n return shapeSvg;\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 intersectPolygon(node, points, point);\n };\n return shapeSvg;\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 intersectPolygon(node, points, point);\n };\n return shapeSvg;\n}\nfunction stadium(parent, bbox, node) {\n const h = bbox.height;\n const w = bbox.width + h / 4;\n const shapeSvg = parent.insert(\"rect\", \":first-child\").attr(\"rx\", h / 2).attr(\"ry\", h / 2).attr(\"x\", -w / 2).attr(\"y\", -h / 2).attr(\"width\", w).attr(\"height\", h);\n node.intersect = function(point) {\n return intersectRect(node, point);\n };\n return shapeSvg;\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 intersectPolygon(node, points, point);\n };\n return shapeSvg;\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 const shape = \"M 0,\" + ry + \" a \" + rx + \",\" + ry + \" 0,0,0 \" + w + \" 0 a \" + rx + \",\" + ry + \" 0,0,0 \" + -w + \" 0 l 0,\" + h + \" a \" + rx + \",\" + ry + \" 0,0,0 \" + w + \" 0 l 0,\" + -h;\n const shapeSvg = parent.attr(\"label-offset-y\", ry).insert(\"path\", \":first-child\").attr(\"d\", shape).attr(\"transform\", \"translate(\" + -w / 2 + \",\" + -(h / 2 + ry) + \")\");\n node.intersect = function(point) {\n const pos = intersectRect(node, point);\n const x = pos.x - node.x;\n if (rx != 0 && (Math.abs(x) < node.width / 2 || Math.abs(x) == node.width / 2 && Math.abs(pos.y - node.y) > node.height / 2 - ry)) {\n let y = ry * ry * (1 - x * x / (rx * rx));\n if (y != 0) {\n y = Math.sqrt(y);\n }\n y = ry - y;\n if (point.y - node.y > 0) {\n y = -y;\n }\n pos.y += y;\n }\n return pos;\n };\n return shapeSvg;\n}\nfunction addToRender(render2) {\n render2.shapes().question = question;\n render2.shapes().hexagon = hexagon;\n render2.shapes().stadium = stadium;\n render2.shapes().subroutine = subroutine;\n render2.shapes().cylinder = cylinder;\n render2.shapes().rect_left_inv_arrow = rect_left_inv_arrow;\n render2.shapes().lean_right = lean_right;\n render2.shapes().lean_left = lean_left;\n render2.shapes().trapezoid = trapezoid;\n render2.shapes().inv_trapezoid = inv_trapezoid;\n render2.shapes().rect_right_inv_arrow = rect_right_inv_arrow;\n}\nfunction addToRenderV2(addShape) {\n addShape({ question });\n addShape({ hexagon });\n addShape({ stadium });\n addShape({ subroutine });\n addShape({ cylinder });\n addShape({ rect_left_inv_arrow });\n addShape({ lean_right });\n addShape({ lean_left });\n addShape({ trapezoid });\n addShape({ inv_trapezoid });\n addShape({ rect_right_inv_arrow });\n}\nfunction insertPolygonShape(parent, w, h, points) {\n return parent.insert(\"polygon\", \":first-child\").attr(\n \"points\",\n points.map(function(d) {\n return d.x + \",\" + d.y;\n }).join(\" \")\n ).attr(\"transform\", \"translate(\" + -w / 2 + \",\" + h / 2 + \")\");\n}\nconst flowChartShapes = {\n addToRender,\n addToRenderV2\n};\nconst conf = {};\nconst setConf = function(cnf) {\n const keys = Object.keys(cnf);\n for (const key of keys) {\n conf[key] = cnf[key];\n }\n};\nconst addVertices = async function(vert, g, svgId, root, _doc, diagObj) {\n const svg = !root ? select(`[id=\"${svgId}\"]`) : root.select(`[id=\"${svgId}\"]`);\n const doc = !_doc ? document : _doc;\n const keys = Object.keys(vert);\n for (const id of keys) {\n const vertex = vert[id];\n let classStr = \"default\";\n if (vertex.classes.length > 0) {\n classStr = vertex.classes.join(\" \");\n }\n const styles = getStylesFromArray(vertex.styles);\n let vertexText = vertex.text !== void 0 ? vertex.text : vertex.id;\n let vertexNode;\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n const node = {\n label: await renderKatex(\n vertexText.replace(\n /fa[blrs]?:fa-[\\w-]+/g,\n // cspell:disable-line\n (s) => `<i class='${s.replace(\":\", \" \")}'></i>`\n ),\n getConfig()\n )\n };\n vertexNode = addHtmlLabel(svg, node).node();\n vertexNode.parentNode.removeChild(vertexNode);\n } else {\n const svgLabel = doc.createElementNS(\"http://www.w3.org/2000/svg\", \"text\");\n svgLabel.setAttribute(\"style\", styles.labelStyle.replace(\"color:\", \"fill:\"));\n const rows = vertexText.split(common.lineBreakRegex);\n for (const row of rows) {\n const tspan = doc.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 = row;\n svgLabel.appendChild(tspan);\n }\n vertexNode = svgLabel;\n }\n let radius = 0;\n let _shape = \"\";\n switch (vertex.type) {\n case \"round\":\n radius = 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 log.warn(\"Adding node\", vertex.id, vertex.domId);\n g.setNode(diagObj.db.lookUpDomId(vertex.id), {\n labelType: \"svg\",\n labelStyle: styles.labelStyle,\n shape: _shape,\n label: vertexNode,\n rx: radius,\n ry: radius,\n class: classStr,\n style: styles.style,\n id: diagObj.db.lookUpDomId(vertex.id)\n });\n }\n};\nconst addEdges = async function(edges, g, diagObj) {\n let cnt = 0;\n let defaultStyle;\n let defaultLabelStyle;\n if (edges.defaultStyle !== void 0) {\n const defaultStyles = getStylesFromArray(edges.defaultStyle);\n defaultStyle = defaultStyles.style;\n defaultLabelStyle = defaultStyles.labelStyle;\n }\n for (const edge of edges) {\n cnt++;\n const linkId = \"L-\" + edge.start + \"-\" + edge.end;\n const linkNameStart = \"LS-\" + edge.start;\n const linkNameEnd = \"LE-\" + edge.end;\n const edgeData = {};\n if (edge.type === \"arrow_open\") {\n edgeData.arrowhead = \"none\";\n } else {\n edgeData.arrowhead = \"normal\";\n }\n let style = \"\";\n let labelStyle = \"\";\n if (edge.style !== void 0) {\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 (defaultStyle !== void 0) {\n style = defaultStyle;\n }\n if (defaultLabelStyle !== void 0) {\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 edgeData.style = style;\n edgeData.labelStyle = labelStyle;\n if (edge.interpolate !== void 0) {\n edgeData.curve = interpolateToCurve(edge.interpolate, curveLinear);\n } else if (edges.defaultInterpolate !== void 0) {\n edgeData.curve = interpolateToCurve(edges.defaultInterpolate, curveLinear);\n } else {\n edgeData.curve = interpolateToCurve(conf.curve, curveLinear);\n }\n if (edge.text === void 0) {\n if (edge.style !== void 0) {\n edgeData.arrowheadStyle = \"fill: #333\";\n }\n } else {\n edgeData.arrowheadStyle = \"fill: #333\";\n edgeData.labelpos = \"c\";\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n edgeData.labelType = \"html\";\n edgeData.label = `<span id=\"L-${linkId}\" class=\"edgeLabel L-${linkNameStart}' L-${linkNameEnd}\" style=\"${edgeData.labelStyle}\">${await renderKatex(\n edge.text.replace(\n /fa[blrs]?:fa-[\\w-]+/g,\n // cspell:disable-line\n (s) => `<i class='${s.replace(\":\", \" \")}'></i>`\n ),\n getConfig()\n )}</span>`;\n } else {\n edgeData.labelType = \"text\";\n edgeData.label = edge.text.replace(common.lineBreakRegex, \"\\n\");\n if (edge.style === void 0) {\n edgeData.style = edgeData.style || \"stroke: #333; stroke-width: 1.5px;fill:none\";\n }\n edgeData.labelStyle = edgeData.labelStyle.replace(\"color:\", \"fill:\");\n }\n }\n edgeData.id = linkId;\n edgeData.class = linkNameStart + \" \" + linkNameEnd;\n edgeData.minlen = edge.length || 1;\n g.setEdge(diagObj.db.lookUpDomId(edge.start), diagObj.db.lookUpDomId(edge.end), edgeData, cnt);\n }\n};\nconst getClasses = function(text, diagObj) {\n log.info(\"Extracting classes\");\n return diagObj.db.getClasses();\n};\nconst draw = async function(text, id, _version, diagObj) {\n log.info(\"Drawing flowchart\");\n const { securityLevel, flowchart: conf2 } = getConfig();\n let sandboxElement;\n if (securityLevel === \"sandbox\") {\n sandboxElement = select(\"#i\" + id);\n }\n const root = securityLevel === \"sandbox\" ? select(sandboxElement.nodes()[0].contentDocument.body) : select(\"body\");\n const doc = securityLevel === \"sandbox\" ? sandboxElement.nodes()[0].contentDocument : document;\n let dir = diagObj.db.getDirection();\n if (dir === void 0) {\n dir = \"TD\";\n }\n const nodeSpacing = conf2.nodeSpacing || 50;\n const rankSpacing = conf2.rankSpacing || 50;\n const g = new graphlib.Graph({\n multigraph: true,\n compound: true\n }).setGraph({\n rankdir: dir,\n nodesep: nodeSpacing,\n ranksep: rankSpacing,\n marginx: 8,\n marginy: 8\n }).setDefaultEdgeLabel(function() {\n return {};\n });\n let subG;\n const subGraphs = diagObj.db.getSubGraphs();\n for (let i2 = subGraphs.length - 1; i2 >= 0; i2--) {\n subG = subGraphs[i2];\n diagObj.db.addVertex(subG.id, subG.title, \"group\", void 0, subG.classes);\n }\n const vert = diagObj.db.getVertices();\n log.warn(\"Get vertices\", vert);\n const edges = diagObj.db.getEdges();\n let i = 0;\n for (i = subGraphs.length - 1; i >= 0; i--) {\n subG = subGraphs[i];\n selectAll(\"cluster\").append(\"text\");\n for (let j = 0; j < subG.nodes.length; j++) {\n log.warn(\n \"Setting subgraph\",\n subG.nodes[j],\n diagObj.db.lookUpDomId(subG.nodes[j]),\n diagObj.db.lookUpDomId(subG.id)\n );\n g.setParent(diagObj.db.lookUpDomId(subG.nodes[j]), diagObj.db.lookUpDomId(subG.id));\n }\n }\n await addVertices(vert, g, id, root, doc, diagObj);\n await addEdges(edges, g, diagObj);\n const render$1 = new render();\n flowChartShapes.addToRender(render$1);\n render$1.arrows().none = function normal(parent, id2, edge, type) {\n const marker = parent.append(\"marker\").attr(\"id\", id2).attr(\"viewBox\", \"0 0 10 10\").attr(\"refX\", 9).attr(\"refY\", 5).attr(\"markerUnits\", \"strokeWidth\").attr(\"markerWidth\", 8).attr(\"markerHeight\", 6).attr(\"orient\", \"auto\");\n const path = marker.append(\"path\").attr(\"d\", \"M 0 0 L 0 0 L 0 0 z\");\n applyStyle(path, edge[type + \"Style\"]);\n };\n render$1.arrows().normal = function normal(parent, id2) {\n const marker = parent.append(\"marker\").attr(\"id\", id2).attr(\"viewBox\", \"0 0 10 10\").attr(\"refX\", 9).attr(\"refY\", 5).attr(\"markerUnits\", \"strokeWidth\").attr(\"markerWidth\", 8).attr(\"markerHeight\", 6).attr(\"orient\", \"auto\");\n marker.append(\"path\").attr(\"d\", \"M 0 0 L 10 5 L 0 10 z\").attr(\"class\", \"arrowheadPath\").style(\"stroke-width\", 1).style(\"stroke-dasharray\", \"1,0\");\n };\n const svg = root.select(`[id=\"${id}\"]`);\n const element = root.select(\"#\" + id + \" g\");\n render$1(element, g);\n element.selectAll(\"g.node\").attr(\"title\", function() {\n return diagObj.db.getTooltip(this.id);\n });\n diagObj.db.indexNodes(\"subGraph\" + i);\n for (i = 0; i < subGraphs.length; i++) {\n subG = subGraphs[i];\n if (subG.title !== \"undefined\") {\n const clusterRects = doc.querySelectorAll(\n \"#\" + id + ' [id=\"' + diagObj.db.lookUpDomId(subG.id) + '\"] rect'\n );\n const clusterEl = doc.querySelectorAll(\n \"#\" + id + ' [id=\"' + diagObj.db.lookUpDomId(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 for (let j = 0; j < subG.classes.length; j++) {\n clusterEl[0].classList.add(subG.classes[j]);\n }\n }\n }\n if (!conf2.htmlLabels) {\n const labels = doc.querySelectorAll('[id=\"' + id + '\"] .edgeLabel .label');\n for (const label of labels) {\n const dim = label.getBBox();\n const rect = doc.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 label.insertBefore(rect, label.firstChild);\n }\n }\n setupGraphViewbox(g, svg, conf2.diagramPadding, conf2.useMaxWidth);\n const keys = Object.keys(vert);\n keys.forEach(function(key) {\n const vertex = vert[key];\n if (vertex.link) {\n const node = root.select(\"#\" + id + ' [id=\"' + diagObj.db.lookUpDomId(key) + '\"]');\n if (node) {\n const link = doc.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 if (securityLevel === \"sandbox\") {\n link.setAttributeNS(\"http://www.w3.org/2000/svg\", \"target\", \"_top\");\n } else if (vertex.linkTarget) {\n link.setAttributeNS(\"http://www.w3.org/2000/svg\", \"target\", vertex.linkTarget);\n }\n const linkNode = node.insert(function() {\n return link;\n }, \":first-child\");\n const shape = node.select(\".label-container\");\n if (shape) {\n linkNode.append(function() {\n return shape.node();\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};\nconst flowRenderer = {\n setConf,\n addVertices,\n addEdges,\n getClasses,\n draw\n};\nconst diagram = {\n parser,\n db: flowDb,\n renderer: flowRendererV2,\n styles: flowStyles,\n init: (cnf) => {\n if (!cnf.flowchart) {\n cnf.flowchart = {};\n }\n cnf.flowchart.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;\n flowRenderer.setConf(cnf.flowchart);\n flowDb.clear();\n flowDb.setGen(\"gen-1\");\n }\n};\nexport {\n diagram\n};\n","import { p as parser, f as flowDb } from \"./flowDb-4b19a42f.js\";\nimport { f as flowRendererV2, a as flowStyles } from \"./styles-3ed67cfa.js\";\nimport { p as setConfig } from \"./mermaid-f47111a7.js\";\nimport \"d3\";\nimport \"dagre-d3-es/src/graphlib/index.js\";\nimport \"./index-fc10efb0.js\";\nimport \"dagre-d3-es/src/dagre/index.js\";\nimport \"dagre-d3-es/src/graphlib/json.js\";\nimport \"./edges-d32062c0.js\";\nimport \"./createText-6b48ae7d.js\";\nimport \"mdast-util-from-markdown\";\nimport \"ts-dedent\";\nimport \"dagre-d3-es/src/dagre-js/label/add-html-label.js\";\nimport \"khroma\";\nimport \"dayjs\";\nimport \"@braintree/sanitize-url\";\nimport \"dompurify\";\nimport \"lodash-es/memoize.js\";\nimport \"lodash-es/merge.js\";\nimport \"stylis\";\nimport \"lodash-es/isEmpty.js\";\nconst diagram = {\n parser,\n db: flowDb,\n renderer: flowRendererV2,\n styles: flowStyles,\n init: (cnf) => {\n if (!cnf.flowchart) {\n cnf.flowchart = {};\n }\n cnf.flowchart.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;\n setConfig({ flowchart: { arrowMarkerAbsolute: cnf.arrowMarkerAbsolute } });\n flowRendererV2.setConf(cnf.flowchart);\n flowDb.clear();\n flowDb.setGen(\"gen-2\");\n }\n};\nexport {\n diagram\n};\n","import { d as db, p as parser } from \"./flowDb-4b19a42f.js\";\nimport { select, curveLinear, line } from \"d3\";\nimport { a as insertMarkers, e as insertNode, l as labelHelper, f as insertEdgeLabel, k as getLineFunctionsWithOffset, m as addEdgeMarkers } from \"./edges-d32062c0.js\";\nimport { l as log, F as getConfig, o as setupGraphViewbox, k as getStylesFromArray, n as interpolateToCurve, e as common } from \"./mermaid-f47111a7.js\";\nimport ELK from \"elkjs/lib/elk.bundled.js\";\nimport \"./createText-6b48ae7d.js\";\nimport \"mdast-util-from-markdown\";\nimport \"ts-dedent\";\nimport \"dayjs\";\nimport \"@braintree/sanitize-url\";\nimport \"dompurify\";\nimport \"khroma\";\nimport \"lodash-es/memoize.js\";\nimport \"lodash-es/merge.js\";\nimport \"stylis\";\nimport \"lodash-es/isEmpty.js\";\nconst findCommonAncestor = (id1, id2, treeData) => {\n const { parentById } = treeData;\n const visited = /* @__PURE__ */ new Set();\n let currentId = id1;\n while (currentId) {\n visited.add(currentId);\n if (currentId === id2) {\n return currentId;\n }\n currentId = parentById[currentId];\n }\n currentId = id2;\n while (currentId) {\n if (visited.has(currentId)) {\n return currentId;\n }\n currentId = parentById[currentId];\n }\n return \"root\";\n};\nconst elk = new ELK();\nlet portPos = {};\nconst conf = {};\nlet nodeDb = {};\nconst addVertices = async function(vert, svgId, root, doc, diagObj, parentLookupDb, graph) {\n const svg = root.select(`[id=\"${svgId}\"]`);\n const nodes = svg.insert(\"g\").attr(\"class\", \"nodes\");\n const keys = Object.keys(vert);\n await Promise.all(\n keys.map(async function(id) {\n const vertex = vert[id];\n let classStr = \"default\";\n if (vertex.classes.length > 0) {\n classStr = vertex.classes.join(\" \");\n }\n classStr = classStr + \" flowchart-label\";\n const styles2 = getStylesFromArray(vertex.styles);\n let vertexText = vertex.text !== void 0 ? vertex.text : vertex.id;\n const labelData = { width: 0, height: 0 };\n const ports = [\n {\n id: vertex.id + \"-west\",\n layoutOptions: {\n \"port.side\": \"WEST\"\n }\n },\n {\n id: vertex.id + \"-east\",\n layoutOptions: {\n \"port.side\": \"EAST\"\n }\n },\n {\n id: vertex.id + \"-south\",\n layoutOptions: {\n \"port.side\": \"SOUTH\"\n }\n },\n {\n id: vertex.id + \"-north\",\n layoutOptions: {\n \"port.side\": \"NORTH\"\n }\n }\n ];\n let radius = 0;\n let _shape = \"\";\n let layoutOptions = {};\n switch (vertex.type) {\n case \"round\":\n radius = 5;\n _shape = \"rect\";\n break;\n case \"square\":\n _shape = \"rect\";\n break;\n case \"diamond\":\n _shape = \"question\";\n layoutOptions = {\n portConstraints: \"FIXED_SIDE\"\n };\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 case \"doublecircle\":\n _shape = \"doublecircle\";\n break;\n default:\n _shape = \"rect\";\n }\n const node = {\n labelStyle: styles2.labelStyle,\n shape: _shape,\n labelText: vertexText,\n labelType: vertex.labelType,\n rx: radius,\n ry: radius,\n class: classStr,\n style: styles2.style,\n id: vertex.id,\n link: vertex.link,\n linkTarget: vertex.linkTarget,\n tooltip: diagObj.db.getTooltip(vertex.id) || \"\",\n domId: diagObj.db.lookUpDomId(vertex.id),\n haveCallback: vertex.haveCallback,\n width: vertex.type === \"group\" ? 500 : void 0,\n dir: vertex.dir,\n type: vertex.type,\n props: vertex.props,\n padding: getConfig().flowchart.padding\n };\n let boundingBox;\n let nodeEl;\n if (node.type !== \"group\") {\n nodeEl = await insertNode(nodes, node, vertex.dir);\n boundingBox = nodeEl.node().getBBox();\n } else {\n doc.createElementNS(\"http://www.w3.org/2000/svg\", \"text\");\n const { shapeSvg, bbox } = await labelHelper(nodes, node, void 0, true);\n labelData.width = bbox.width;\n labelData.wrappingWidth = getConfig().flowchart.wrappingWidth;\n labelData.height = bbox.height;\n labelData.labelNode = shapeSvg.node();\n node.labelData = labelData;\n }\n const data = {\n id: vertex.id,\n ports: vertex.type === \"diamond\" ? ports : [],\n // labelStyle: styles.labelStyle,\n // shape: _shape,\n layoutOptions,\n labelText: vertexText,\n labelData,\n // labels: [{ text: vertexText }],\n // rx: radius,\n // ry: radius,\n // class: classStr,\n // style: styles.style,\n // link: vertex.link,\n // linkTarget: vertex.linkTarget,\n // tooltip: diagObj.db.getTooltip(vertex.id) || '',\n domId: diagObj.db.lookUpDomId(vertex.id),\n // haveCallback: vertex.haveCallback,\n width: boundingBox == null ? void 0 : boundingBox.width,\n height: boundingBox == null ? void 0 : boundingBox.height,\n // dir: vertex.dir,\n type: vertex.type,\n // props: vertex.props,\n // padding: getConfig().flowchart.padding,\n // boundingBox,\n el: nodeEl,\n parent: parentLookupDb.parentById[vertex.id]\n };\n nodeDb[node.id] = data;\n })\n );\n return graph;\n};\nconst getNextPosition = (position, edgeDirection, graphDirection) => {\n const portPos2 = {\n TB: {\n in: {\n north: \"north\"\n },\n out: {\n south: \"west\",\n west: \"east\",\n east: \"south\"\n }\n },\n LR: {\n in: {\n west: \"west\"\n },\n out: {\n east: \"south\",\n south: \"north\",\n north: \"east\"\n }\n },\n RL: {\n in: {\n east: \"east\"\n },\n out: {\n west: \"north\",\n north: \"south\",\n south: \"west\"\n }\n },\n BT: {\n in: {\n south: \"south\"\n },\n out: {\n north: \"east\",\n east: \"west\",\n west: \"north\"\n }\n }\n };\n portPos2.TD = portPos2.TB;\n return portPos2[graphDirection][edgeDirection][position];\n};\nconst getNextPort = (node, edgeDirection, graphDirection) => {\n log.info(\"getNextPort\", { node, edgeDirection, graphDirection });\n if (!portPos[node]) {\n switch (graphDirection) {\n case \"TB\":\n case \"TD\":\n portPos[node] = {\n inPosition: \"north\",\n outPosition: \"south\"\n };\n break;\n case \"BT\":\n portPos[node] = {\n inPosition: \"south\",\n outPosition: \"north\"\n };\n break;\n case \"RL\":\n portPos[node] = {\n inPosition: \"east\",\n outPosition: \"west\"\n };\n break;\n case \"LR\":\n portPos[node] = {\n inPosition: \"west\",\n outPosition: \"east\"\n };\n break;\n }\n }\n const result = edgeDirection === \"in\" ? portPos[node].inPosition : portPos[node].outPosition;\n if (edgeDirection === \"in\") {\n portPos[node].inPosition = getNextPosition(\n portPos[node].inPosition,\n edgeDirection,\n graphDirection\n );\n } else {\n portPos[node].outPosition = getNextPosition(\n portPos[node].outPosition,\n edgeDirection,\n graphDirection\n );\n }\n return result;\n};\nconst getEdgeStartEndPoint = (edge, dir) => {\n let source = edge.start;\n let target = edge.end;\n const sourceId = source;\n const targetId = target;\n const startNode = nodeDb[source];\n const endNode = nodeDb[target];\n if (!startNode || !endNode) {\n return { source, target };\n }\n if (startNode.type === \"diamond\") {\n source = `${source}-${getNextPort(source, \"out\", dir)}`;\n }\n if (endNode.type === \"diamond\") {\n target = `${target}-${getNextPort(target, \"in\", dir)}`;\n }\n return { source, target, sourceId, targetId };\n};\nconst addEdges = function(edges, diagObj, graph, svg) {\n log.info(\"abc78 edges = \", edges);\n const labelsEl = svg.insert(\"g\").attr(\"class\", \"edgeLabels\");\n let linkIdCnt = {};\n let dir = diagObj.db.getDirection();\n let defaultStyle;\n let defaultLabelStyle;\n if (edges.defaultStyle !== void 0) {\n const defaultStyles = getStylesFromArray(edges.defaultStyle);\n defaultStyle = defaultStyles.style;\n defaultLabelStyle = defaultStyles.labelStyle;\n }\n edges.forEach(function(edge) {\n const linkIdBase = \"L-\" + edge.start + \"-\" + edge.end;\n if (linkIdCnt[linkIdBase] === void 0) {\n linkIdCnt[linkIdBase] = 0;\n log.info(\"abc78 new entry\", linkIdBase, linkIdCnt[linkIdBase]);\n } else {\n linkIdCnt[linkIdBase]++;\n log.info(\"abc78 new entry\", linkIdBase, linkIdCnt[linkIdBase]);\n }\n let linkId = linkIdBase + \"-\" + linkIdCnt[linkIdBase];\n log.info(\"abc78 new link id to be used is\", linkIdBase, linkId, linkIdCnt[linkIdBase]);\n const linkNameStart = \"LS-\" + edge.start;\n const linkNameEnd = \"LE-\" + edge.end;\n const edgeData = { style: \"\", labelStyle: \"\" };\n edgeData.minlen = edge.length || 1;\n if (edge.type === \"arrow_open\") {\n edgeData.arrowhead = \"none\";\n } else {\n edgeData.arrowhead = \"normal\";\n }\n edgeData.arrowTypeStart = \"arrow_open\";\n edgeData.arrowTypeEnd = \"arrow_open\";\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 let style = \"\";\n let labelStyle = \"\";\n switch (edge.stroke) {\n case \"normal\":\n style = \"fill:none;\";\n if (defaultStyle !== void 0) {\n style = defaultStyle;\n }\n if (defaultLabelStyle !== void 0) {\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 edgeData.style = \"fill:none;stroke-width:2px;stroke-dasharray:3;\";\n break;\n case \"thick\":\n edgeData.thickness = \"thick\";\n edgeData.pattern = \"solid\";\n edgeData.style = \"stroke-width: 3.5px;fill:none;\";\n break;\n }\n if (edge.style !== void 0) {\n const styles2 = getStylesFromArray(edge.style);\n style = styles2.style;\n labelStyle = styles2.labelStyle;\n }\n edgeData.style = edgeData.style += style;\n edgeData.labelStyle = edgeData.labelStyle += labelStyle;\n if (edge.interpolate !== void 0) {\n edgeData.curve = interpolateToCurve(edge.interpolate, curveLinear);\n } else if (edges.defaultInterpolate !== void 0) {\n edgeData.curve = interpolateToCurve(edges.defaultInterpolate, curveLinear);\n } else {\n edgeData.curve = interpolateToCurve(conf.curve, curveLinear);\n }\n if (edge.text === void 0) {\n if (edge.style !== void 0) {\n edgeData.arrowheadStyle = \"fill: #333\";\n }\n } else {\n edgeData.arrowheadStyle = \"fill: #333\";\n edgeData.labelpos = \"c\";\n }\n edgeData.labelType = edge.labelType;\n edgeData.label = edge.text.replace(common.lineBreakRegex, \"\\n\");\n if (edge.style === void 0) {\n edgeData.style = edgeData.style || \"stroke: #333; stroke-width: 1.5px;fill:none;\";\n }\n edgeData.labelStyle = edgeData.labelStyle.replace(\"color:\", \"fill:\");\n edgeData.id = linkId;\n edgeData.classes = \"flowchart-link \" + linkNameStart + \" \" + linkNameEnd;\n const labelEl = insertEdgeLabel(labelsEl, edgeData);\n const { source, target, sourceId, targetId } = getEdgeStartEndPoint(edge, dir);\n log.debug(\"abc78 source and target\", source, target);\n graph.edges.push({\n id: \"e\" + edge.start + edge.end,\n sources: [source],\n targets: [target],\n sourceId,\n targetId,\n labelEl,\n labels: [\n {\n width: edgeData.width,\n height: edgeData.height,\n orgWidth: edgeData.width,\n orgHeight: edgeData.height,\n text: edgeData.label,\n layoutOptions: {\n \"edgeLabels.inline\": \"true\",\n \"edgeLabels.placement\": \"CENTER\"\n }\n }\n ],\n edgeData\n });\n });\n return graph;\n};\nconst addMarkersToEdge = function(svgPath, edgeData, diagramType, arrowMarkerAbsolute, id) {\n let url = \"\";\n if (arrowMarkerAbsolute) {\n url = window.location.protocol + \"//\" + window.location.host + window.location.pathname + window.location.search;\n url = url.replace(/\\(/g, \"\\\\(\");\n url = url.replace(/\\)/g, \"\\\\)\");\n }\n addEdgeMarkers(svgPath, edgeData, url, id, diagramType);\n};\nconst getClasses = function(text, diagObj) {\n log.info(\"Extracting classes\");\n return diagObj.db.getClasses();\n};\nconst addSubGraphs = function(db2) {\n const parentLookupDb = { parentById: {}, childrenById: {} };\n const subgraphs = db2.getSubGraphs();\n log.info(\"Subgraphs - \", subgraphs);\n subgraphs.forEach(function(subgraph) {\n subgraph.nodes.forEach(function(node) {\n parentLookupDb.parentById[node] = subgraph.id;\n if (parentLookupDb.childrenById[subgraph.id] === void 0) {\n parentLookupDb.childrenById[subgraph.id] = [];\n }\n parentLookupDb.childrenById[subgraph.id].push(node);\n });\n });\n subgraphs.forEach(function(subgraph) {\n ({ id: subgraph.id });\n if (parentLookupDb.parentById[subgraph.id] !== void 0) {\n parentLookupDb.parentById[subgraph.id];\n }\n });\n return parentLookupDb;\n};\nconst calcOffset = function(src, dest, parentLookupDb) {\n const ancestor = findCommonAncestor(src, dest, parentLookupDb);\n if (ancestor === void 0 || ancestor === \"root\") {\n return { x: 0, y: 0 };\n }\n const ancestorOffset = nodeDb[ancestor].offset;\n return { x: ancestorOffset.posX, y: ancestorOffset.posY };\n};\nconst insertEdge = function(edgesEl, edge, edgeData, diagObj, parentLookupDb, id) {\n const offset = calcOffset(edge.sourceId, edge.targetId, parentLookupDb);\n const src = edge.sections[0].startPoint;\n const dest = edge.sections[0].endPoint;\n const segments = edge.sections[0].bendPoints ? edge.sections[0].bendPoints : [];\n const segPoints = segments.map((segment) => [segment.x + offset.x, segment.y + offset.y]);\n const points = [\n [src.x + offset.x, src.y + offset.y],\n ...segPoints,\n [dest.x + offset.x, dest.y + offset.y]\n ];\n const { x, y } = getLineFunctionsWithOffset(edge.edgeData);\n const curve = line().x(x).y(y).curve(curveLinear);\n const edgePath = edgesEl.insert(\"path\").attr(\"d\", curve(points)).attr(\"class\", \"path \" + edgeData.classes).attr(\"fill\", \"none\");\n const edgeG = edgesEl.insert(\"g\").attr(\"class\", \"edgeLabel\");\n const edgeWithLabel = select(edgeG.node().appendChild(edge.labelEl));\n const box = edgeWithLabel.node().firstChild.getBoundingClientRect();\n edgeWithLabel.attr(\"width\", box.width);\n edgeWithLabel.attr(\"height\", box.height);\n edgeG.attr(\n \"transform\",\n `translate(${edge.labels[0].x + offset.x}, ${edge.labels[0].y + offset.y})`\n );\n addMarkersToEdge(edgePath, edgeData, diagObj.type, diagObj.arrowMarkerAbsolute, id);\n};\nconst insertChildren = (nodeArray, parentLookupDb) => {\n nodeArray.forEach((node) => {\n if (!node.children) {\n node.children = [];\n }\n const childIds = parentLookupDb.childrenById[node.id];\n if (childIds) {\n childIds.forEach((childId) => {\n node.children.push(nodeDb[childId]);\n });\n }\n insertChildren(node.children, parentLookupDb);\n });\n};\nconst draw = async function(text, id, _version, diagObj) {\n var _a;\n diagObj.db.clear();\n nodeDb = {};\n portPos = {};\n diagObj.db.setGen(\"gen-2\");\n diagObj.parser.parse(text);\n const renderEl = select(\"body\").append(\"div\").attr(\"style\", \"height:400px\").attr(\"id\", \"cy\");\n let graph = {\n id: \"root\",\n layoutOptions: {\n \"elk.hierarchyHandling\": \"INCLUDE_CHILDREN\",\n \"org.eclipse.elk.padding\": \"[top=100, left=100, bottom=110, right=110]\",\n \"elk.layered.spacing.edgeNodeBetweenLayers\": \"30\",\n // 'elk.layered.mergeEdges': 'true',\n \"elk.direction\": \"DOWN\"\n // 'elk.ports.sameLayerEdges': true,\n // 'nodePlacement.strategy': 'SIMPLE',\n },\n children: [],\n edges: []\n };\n log.info(\"Drawing flowchart using v3 renderer\", elk);\n let dir = diagObj.db.getDirection();\n switch (dir) {\n case \"BT\":\n graph.layoutOptions[\"elk.direction\"] = \"UP\";\n break;\n case \"TB\":\n graph.layoutOptions[\"elk.direction\"] = \"DOWN\";\n break;\n case \"LR\":\n graph.layoutOptions[\"elk.direction\"] = \"RIGHT\";\n break;\n case \"RL\":\n graph.layoutOptions[\"elk.direction\"] = \"LEFT\";\n break;\n }\n const { securityLevel, flowchart: conf2 } = getConfig();\n let sandboxElement;\n if (securityLevel === \"sandbox\") {\n sandboxElement = select(\"#i\" + id);\n }\n const root = securityLevel === \"sandbox\" ? select(sandboxElement.nodes()[0].contentDocument.body) : select(\"body\");\n const doc = securityLevel === \"sandbox\" ? sandboxElement.nodes()[0].contentDocument : document;\n const svg = root.select(`[id=\"${id}\"]`);\n const markers = [\"point\", \"circle\", \"cross\"];\n insertMarkers(svg, markers, diagObj.type, id);\n const vert = diagObj.db.getVertices();\n let subG;\n const subGraphs = diagObj.db.getSubGraphs();\n log.info(\"Subgraphs - \", subGraphs);\n for (let i = subGraphs.length - 1; i >= 0; i--) {\n subG = subGraphs[i];\n diagObj.db.addVertex(\n subG.id,\n { text: subG.title, type: subG.labelType },\n \"group\",\n void 0,\n subG.classes,\n subG.dir\n );\n }\n const subGraphsEl = svg.insert(\"g\").attr(\"class\", \"subgraphs\");\n const parentLookupDb = addSubGraphs(diagObj.db);\n graph = await addVertices(vert, id, root, doc, diagObj, parentLookupDb, graph);\n const edgesEl = svg.insert(\"g\").attr(\"class\", \"edges edgePath\");\n const edges = diagObj.db.getEdges();\n graph = addEdges(edges, diagObj, graph, svg);\n const nodes = Object.keys(nodeDb);\n nodes.forEach((nodeId) => {\n const node = nodeDb[nodeId];\n if (!node.parent) {\n graph.children.push(node);\n }\n if (parentLookupDb.childrenById[nodeId] !== void 0) {\n node.labels = [\n {\n text: node.labelText,\n layoutOptions: {\n \"nodeLabels.placement\": \"[H_CENTER, V_TOP, INSIDE]\"\n },\n width: node.labelData.width,\n height: node.labelData.height\n // width: 100,\n // height: 100,\n }\n ];\n delete node.x;\n delete node.y;\n delete node.width;\n delete node.height;\n }\n });\n insertChildren(graph.children, parentLookupDb);\n log.info(\"after layout\", JSON.stringify(graph, null, 2));\n const g = await elk.layout(graph);\n drawNodes(0, 0, g.children, svg, subGraphsEl, diagObj, 0);\n log.info(\"after layout\", g);\n (_a = g.edges) == null ? void 0 : _a.map((edge) => {\n insertEdge(edgesEl, edge, edge.edgeData, diagObj, parentLookupDb, id);\n });\n setupGraphViewbox({}, svg, conf2.diagramPadding, conf2.useMaxWidth);\n renderEl.remove();\n};\nconst drawNodes = (relX, relY, nodeArray, svg, subgraphsEl, diagObj, depth) => {\n nodeArray.forEach(function(node) {\n if (node) {\n nodeDb[node.id].offset = {\n posX: node.x + relX,\n posY: node.y + relY,\n x: relX,\n y: relY,\n depth,\n width: node.width,\n height: node.height\n };\n if (node.type === \"group\") {\n const subgraphEl = subgraphsEl.insert(\"g\").attr(\"class\", \"subgraph\");\n subgraphEl.insert(\"rect\").attr(\"class\", \"subgraph subgraph-lvl-\" + depth % 5 + \" node\").attr(\"x\", node.x + relX).attr(\"y\", node.y + relY).attr(\"width\", node.width).attr(\"height\", node.height);\n const label = subgraphEl.insert(\"g\").attr(\"class\", \"label\");\n const labelCentering = getConfig().flowchart.htmlLabels ? node.labelData.width / 2 : 0;\n label.attr(\n \"transform\",\n `translate(${node.labels[0].x + relX + node.x + labelCentering}, ${node.labels[0].y + relY + node.y + 3})`\n );\n label.node().appendChild(node.labelData.labelNode);\n log.info(\"Id (UGH)= \", node.type, node.labels);\n } else {\n log.info(\"Id (UGH)= \", node.id);\n node.el.attr(\n \"transform\",\n `translate(${node.x + relX + node.width / 2}, ${node.y + relY + node.height / 2})`\n );\n }\n }\n });\n nodeArray.forEach(function(node) {\n if (node && node.type === \"group\") {\n drawNodes(relX + node.x, relY + node.y, node.children, svg, subgraphsEl, diagObj, depth + 1);\n }\n });\n};\nconst renderer = {\n getClasses,\n draw\n};\nconst genSections = (options) => {\n let sections = \"\";\n for (let i = 0; i < 5; i++) {\n sections += `\n .subgraph-lvl-${i} {\n fill: ${options[`surface${i}`]};\n stroke: ${options[`surfacePeer${i}`]};\n }\n `;\n }\n return sections;\n};\nconst getStyles = (options) => `.label {\n font-family: ${options.fontFamily};\n color: ${options.nodeTextColor || options.textColor};\n }\n .cluster-label text {\n fill: ${options.titleColor};\n }\n .cluster-label span {\n color: ${options.titleColor};\n }\n\n .label text,span {\n fill: ${options.nodeTextColor || options.textColor};\n color: ${options.nodeTextColor || 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: 2.0px;\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.85;\n background-color: ${options.edgeLabelBackground};\n fill: ${options.edgeLabelBackground};\n }\n text-align: center;\n }\n\n .cluster rect {\n fill: ${options.clusterBkg};\n stroke: ${options.clusterBorder};\n stroke-width: 1px;\n }\n\n .cluster text {\n fill: ${options.titleColor};\n }\n\n .cluster span {\n color: ${options.titleColor};\n }\n /* .cluster div {\n color: ${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.tertiaryColor};\n border: 1px solid ${options.border2};\n border-radius: 2px;\n pointer-events: none;\n z-index: 100;\n }\n\n .flowchartTitleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${options.textColor};\n }\n .subgraph {\n stroke-width:2;\n rx:3;\n }\n // .subgraph-lvl-1 {\n // fill:#ccc;\n // // stroke:black;\n // }\n\n .flowchart-label text {\n text-anchor: middle;\n }\n\n ${genSections(options)}\n`;\nconst styles = getStyles;\nconst diagram = {\n db,\n renderer,\n parser,\n styles\n};\nexport {\n diagram\n};\n","import { sanitizeUrl } from \"@braintree/sanitize-url\";\nimport dayjs from \"dayjs\";\nimport dayjsIsoWeek from \"dayjs/plugin/isoWeek.js\";\nimport dayjsCustomParseFormat from \"dayjs/plugin/customParseFormat.js\";\nimport dayjsAdvancedFormat from \"dayjs/plugin/advancedFormat.js\";\nimport { c as getConfig, s as setAccTitle, g as getAccTitle, q as setDiagramTitle, t as getDiagramTitle, b as setAccDescription, a as getAccDescription, v as clear$1, u as utils, l as log, i as configureSvgSize, e as common } from \"./mermaid-f47111a7.js\";\nimport { select, scaleTime, min, max, scaleLinear, interpolateHcl, axisBottom, timeFormat, timeMonth, timeDay, timeHour, timeMinute, timeSecond, timeMillisecond, axisTop, timeMonday, timeTuesday, timeWednesday, timeThursday, timeFriday, timeSaturday, timeSunday } from \"d3\";\nimport \"ts-dedent\";\nimport \"dompurify\";\nimport \"khroma\";\nimport \"lodash-es/memoize.js\";\nimport \"lodash-es/merge.js\";\nimport \"stylis\";\nimport \"lodash-es/isEmpty.js\";\nvar parser = function() {\n var o = function(k, v, o2, l) {\n for (o2 = o2 || {}, l = k.length; l--; o2[k[l]] = v)\n ;\n return o2;\n }, $V0 = [6, 8, 10, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 30, 32, 33, 35, 37], $V1 = [1, 25], $V2 = [1, 26], $V3 = [1, 27], $V4 = [1, 28], $V5 = [1, 29], $V6 = [1, 30], $V7 = [1, 31], $V8 = [1, 9], $V9 = [1, 10], $Va = [1, 11], $Vb = [1, 12], $Vc = [1, 13], $Vd = [1, 14], $Ve = [1, 15], $Vf = [1, 16], $Vg = [1, 18], $Vh = [1, 19], $Vi = [1, 20], $Vj = [1, 21], $Vk = [1, 22], $Vl = [1, 24], $Vm = [1, 32];\n var parser2 = {\n trace: function trace() {\n },\n yy: {},\n symbols_: { \"error\": 2, \"start\": 3, \"gantt\": 4, \"document\": 5, \"EOF\": 6, \"line\": 7, \"SPACE\": 8, \"statement\": 9, \"NL\": 10, \"weekday\": 11, \"weekday_monday\": 12, \"weekday_tuesday\": 13, \"weekday_wednesday\": 14, \"weekday_thursday\": 15, \"weekday_friday\": 16, \"weekday_saturday\": 17, \"weekday_sunday\": 18, \"dateFormat\": 19, \"inclusiveEndDates\": 20, \"topAxis\": 21, \"axisFormat\": 22, \"tickInterval\": 23, \"excludes\": 24, \"includes\": 25, \"todayMarker\": 26, \"title\": 27, \"acc_title\": 28, \"acc_title_value\": 29, \"acc_descr\": 30, \"acc_descr_value\": 31, \"acc_descr_multiline_value\": 32, \"section\": 33, \"clickStatement\": 34, \"taskTxt\": 35, \"taskData\": 36, \"click\": 37, \"callbackname\": 38, \"callbackargs\": 39, \"href\": 40, \"clickStatementDebug\": 41, \"$accept\": 0, \"$end\": 1 },\n terminals_: { 2: \"error\", 4: \"gantt\", 6: \"EOF\", 8: \"SPACE\", 10: \"NL\", 12: \"weekday_monday\", 13: \"weekday_tuesday\", 14: \"weekday_wednesday\", 15: \"weekday_thursday\", 16: \"weekday_friday\", 17: \"weekday_saturday\", 18: \"weekday_sunday\", 19: \"dateFormat\", 20: \"inclusiveEndDates\", 21: \"topAxis\", 22: \"axisFormat\", 23: \"tickInterval\", 24: \"excludes\", 25: \"includes\", 26: \"todayMarker\", 27: \"title\", 28: \"acc_title\", 29: \"acc_title_value\", 30: \"acc_descr\", 31: \"acc_descr_value\", 32: \"acc_descr_multiline_value\", 33: \"section\", 35: \"taskTxt\", 36: \"taskData\", 37: \"click\", 38: \"callbackname\", 39: \"callbackargs\", 40: \"href\" },\n productions_: [0, [3, 3], [5, 0], [5, 2], [7, 2], [7, 1], [7, 1], [7, 1], [11, 1], [11, 1], [11, 1], [11, 1], [11, 1], [11, 1], [11, 1], [9, 1], [9, 1], [9, 1], [9, 1], [9, 1], [9, 1], [9, 1], [9, 1], [9, 1], [9, 1], [9, 2], [9, 2], [9, 1], [9, 1], [9, 1], [9, 2], [34, 2], [34, 3], [34, 3], [34, 4], [34, 3], [34, 4], [34, 2], [41, 2], [41, 3], [41, 3], [41, 4], [41, 3], [41, 4], [41, 2]],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) {\n var $0 = $$.length - 1;\n switch (yystate) {\n case 1:\n return $$[$0 - 1];\n case 2:\n this.$ = [];\n break;\n case 3:\n $$[$0 - 1].push($$[$0]);\n this.$ = $$[$0 - 1];\n break;\n case 4:\n case 5:\n this.$ = $$[$0];\n break;\n case 6:\n case 7:\n this.$ = [];\n break;\n case 8:\n yy.setWeekday(\"monday\");\n break;\n case 9:\n yy.setWeekday(\"tuesday\");\n break;\n case 10:\n yy.setWeekday(\"wednesday\");\n break;\n case 11:\n yy.setWeekday(\"thursday\");\n break;\n case 12:\n yy.setWeekday(\"friday\");\n break;\n case 13:\n yy.setWeekday(\"saturday\");\n break;\n case 14:\n yy.setWeekday(\"sunday\");\n break;\n case 15:\n yy.setDateFormat($$[$0].substr(11));\n this.$ = $$[$0].substr(11);\n break;\n case 16:\n yy.enableInclusiveEndDates();\n this.$ = $$[$0].substr(18);\n break;\n case 17:\n yy.TopAxis();\n this.$ = $$[$0].substr(8);\n break;\n case 18:\n yy.setAxisFormat($$[$0].substr(11));\n this.$ = $$[$0].substr(11);\n break;\n case 19:\n yy.setTickInterval($$[$0].substr(13));\n this.$ = $$[$0].substr(13);\n break;\n case 20:\n yy.setExcludes($$[$0].substr(9));\n this.$ = $$[$0].substr(9);\n break;\n case 21:\n yy.setIncludes($$[$0].substr(9));\n this.$ = $$[$0].substr(9);\n break;\n case 22:\n yy.setTodayMarker($$[$0].substr(12));\n this.$ = $$[$0].substr(12);\n break;\n case 24:\n yy.setDiagramTitle($$[$0].substr(6));\n this.$ = $$[$0].substr(6);\n break;\n case 25:\n this.$ = $$[$0].trim();\n yy.setAccTitle(this.$);\n break;\n case 26:\n case 27:\n this.$ = $$[$0].trim();\n yy.setAccDescription(this.$);\n break;\n case 28:\n yy.addSection($$[$0].substr(8));\n this.$ = $$[$0].substr(8);\n break;\n case 30:\n yy.addTask($$[$0 - 1], $$[$0]);\n this.$ = \"task\";\n break;\n case 31:\n this.$ = $$[$0 - 1];\n yy.setClickEvent($$[$0 - 1], $$[$0], null);\n break;\n case 32:\n this.$ = $$[$0 - 2];\n yy.setClickEvent($$[$0 - 2], $$[$0 - 1], $$[$0]);\n break;\n case 33:\n this.$ = $$[$0 - 2];\n yy.setClickEvent($$[$0 - 2], $$[$0 - 1], null);\n yy.setLink($$[$0 - 2], $$[$0]);\n break;\n case 34:\n this.$ = $$[$0 - 3];\n yy.setClickEvent($$[$0 - 3], $$[$0 - 2], $$[$0 - 1]);\n yy.setLink($$[$0 - 3], $$[$0]);\n break;\n case 35:\n this.$ = $$[$0 - 2];\n yy.setClickEvent($$[$0 - 2], $$[$0], null);\n yy.setLink($$[$0 - 2], $$[$0 - 1]);\n break;\n case 36:\n this.$ = $$[$0 - 3];\n yy.setClickEvent($$[$0 - 3], $$[$0 - 1], $$[$0]);\n yy.setLink($$[$0 - 3], $$[$0 - 2]);\n break;\n case 37:\n this.$ = $$[$0 - 1];\n yy.setLink($$[$0 - 1], $$[$0]);\n break;\n case 38:\n case 44:\n this.$ = $$[$0 - 1] + \" \" + $$[$0];\n break;\n case 39:\n case 40:\n case 42:\n this.$ = $$[$0 - 2] + \" \" + $$[$0 - 1] + \" \" + $$[$0];\n break;\n case 41:\n case 43:\n this.$ = $$[$0 - 3] + \" \" + $$[$0 - 2] + \" \" + $$[$0 - 1] + \" \" + $$[$0];\n break;\n }\n },\n table: [{ 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: 17, 12: $V1, 13: $V2, 14: $V3, 15: $V4, 16: $V5, 17: $V6, 18: $V7, 19: $V8, 20: $V9, 21: $Va, 22: $Vb, 23: $Vc, 24: $Vd, 25: $Ve, 26: $Vf, 27: $Vg, 28: $Vh, 30: $Vi, 32: $Vj, 33: $Vk, 34: 23, 35: $Vl, 37: $Vm }, o($V0, [2, 7], { 1: [2, 1] }), o($V0, [2, 3]), { 9: 33, 11: 17, 12: $V1, 13: $V2, 14: $V3, 15: $V4, 16: $V5, 17: $V6, 18: $V7, 19: $V8, 20: $V9, 21: $Va, 22: $Vb, 23: $Vc, 24: $Vd, 25: $Ve, 26: $Vf, 27: $Vg, 28: $Vh, 30: $Vi, 32: $Vj, 33: $Vk, 34: 23, 35: $Vl, 37: $Vm }, o($V0, [2, 5]), o($V0, [2, 6]), o($V0, [2, 15]), o($V0, [2, 16]), o($V0, [2, 17]), o($V0, [2, 18]), o($V0, [2, 19]), o($V0, [2, 20]), o($V0, [2, 21]), o($V0, [2, 22]), o($V0, [2, 23]), o($V0, [2, 24]), { 29: [1, 34] }, { 31: [1, 35] }, o($V0, [2, 27]), o($V0, [2, 28]), o($V0, [2, 29]), { 36: [1, 36] }, 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]), { 38: [1, 37], 40: [1, 38] }, o($V0, [2, 4]), o($V0, [2, 25]), o($V0, [2, 26]), o($V0, [2, 30]), o($V0, [2, 31], { 39: [1, 39], 40: [1, 40] }), o($V0, [2, 37], { 38: [1, 41] }), o($V0, [2, 32], { 40: [1, 42] }), o($V0, [2, 33]), o($V0, [2, 35], { 39: [1, 43] }), o($V0, [2, 34]), o($V0, [2, 36])],\n defaultActions: {},\n parseError: 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 },\n parse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = \"\", yylineno = 0, yyleng = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer2 = 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 lexer2.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer2;\n sharedState.yy.parser = this;\n if (typeof lexer2.yylloc == \"undefined\") {\n lexer2.yylloc = {};\n }\n var yyloc = lexer2.yylloc;\n lstack.push(yyloc);\n var ranges = lexer2.options && lexer2.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 lex() {\n var token;\n token = tstack.pop() || lexer2.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, state, action, 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 (lexer2.showPosition) {\n errStr = \"Parse error on line \" + (yylineno + 1) + \":\\n\" + lexer2.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: lexer2.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer2.yylineno,\n loc: yyloc,\n 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(lexer2.yytext);\n lstack.push(lexer2.yylloc);\n stack.push(action[1]);\n symbol = null;\n {\n yyleng = lexer2.yyleng;\n yytext = lexer2.yytext;\n yylineno = lexer2.yylineno;\n yyloc = lexer2.yylloc;\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 var lexer = function() {\n var lexer2 = {\n EOF: 1,\n parseError: 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 // resets the lexer, sets new input\n setInput: 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 // consumes and returns one char from the input\n input: 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 this._input = this._input.slice(1);\n return ch;\n },\n // unshifts one char (or a string) into the input\n unput: function(ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - 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 if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\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 ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len\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 // When called from action, caches matched text and appends it on next action\n more: function() {\n this._more = true;\n return this;\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.\n reject: 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 return this;\n },\n // retain first n characters of the match\n less: function(n) {\n this.unput(this.match.slice(n));\n },\n // displays already matched input, i.e. for error messages\n pastInput: 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 // displays upcoming input, i.e. for error messages\n upcomingInput: 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 // displays the character position where the lexing error occurred, i.e. for error messages\n showPosition: function() {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n // test the lexed token: return FALSE when not a match, otherwise return token\n test_match: function(match, indexed_rule) {\n var token, lines, backup;\n if (this.options.backtrack_lexer) {\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 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 ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length : 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 for (var k in backup) {\n this[k] = backup[k];\n }\n return false;\n }\n return false;\n },\n // return next match in input\n next: function() {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n var token, match, tempMatch, 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;\n } else {\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 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 // return next match that has a token\n lex: function lex() {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\n begin: function begin(condition) {\n this.conditionStack.push(condition);\n },\n // pop the previously active lexer condition state off the condition stack\n popState: 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 // 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 // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\n topState: 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 // alias for begin(condition)\n pushState: function pushState(condition) {\n this.begin(condition);\n },\n // return the number of states currently on the stack\n stateStackSize: function stateStackSize() {\n return this.conditionStack.length;\n },\n options: { \"case-insensitive\": true },\n performAction: function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) {\n switch ($avoiding_name_collisions) {\n case 0:\n this.begin(\"open_directive\");\n return \"open_directive\";\n case 1:\n this.begin(\"acc_title\");\n return 28;\n case 2:\n this.popState();\n return \"acc_title_value\";\n case 3:\n this.begin(\"acc_descr\");\n return 30;\n case 4:\n this.popState();\n return \"acc_descr_value\";\n case 5:\n this.begin(\"acc_descr_multiline\");\n break;\n case 6:\n this.popState();\n break;\n case 7:\n return \"acc_descr_multiline_value\";\n case 8:\n break;\n case 9:\n break;\n case 10:\n break;\n case 11:\n return 10;\n case 12:\n break;\n case 13:\n break;\n case 14:\n this.begin(\"href\");\n break;\n case 15:\n this.popState();\n break;\n case 16:\n return 40;\n case 17:\n this.begin(\"callbackname\");\n break;\n case 18:\n this.popState();\n break;\n case 19:\n this.popState();\n this.begin(\"callbackargs\");\n break;\n case 20:\n return 38;\n case 21:\n this.popState();\n break;\n case 22:\n return 39;\n case 23:\n this.begin(\"click\");\n break;\n case 24:\n this.popState();\n break;\n case 25:\n return 37;\n case 26:\n return 4;\n case 27:\n return 19;\n case 28:\n return 20;\n case 29:\n return 21;\n case 30:\n return 22;\n case 31:\n return 23;\n case 32:\n return 25;\n case 33:\n return 24;\n case 34:\n return 26;\n case 35:\n return 12;\n case 36:\n return 13;\n case 37:\n return 14;\n case 38:\n return 15;\n case 39:\n return 16;\n case 40:\n return 17;\n case 41:\n return 18;\n case 42:\n return \"date\";\n case 43:\n return 27;\n case 44:\n return \"accDescription\";\n case 45:\n return 33;\n case 46:\n return 35;\n case 47:\n return 36;\n case 48:\n return \":\";\n case 49:\n return 6;\n case 50:\n return \"INVALID\";\n }\n },\n rules: [/^(?:%%\\{)/i, /^(?:accTitle\\s*:\\s*)/i, /^(?:(?!\\n||)*[^\\n]*)/i, /^(?:accDescr\\s*:\\s*)/i, /^(?:(?!\\n||)*[^\\n]*)/i, /^(?:accDescr\\s*\\{\\s*)/i, /^(?:[\\}])/i, /^(?:[^\\}]*)/i, /^(?:%%(?!\\{)*[^\\n]*)/i, /^(?:[^\\}]%%*[^\\n]*)/i, /^(?:%%*[^\\n]*[\\n]*)/i, /^(?:[\\n]+)/i, /^(?:\\s+)/i, /^(?:%[^\\n]*)/i, /^(?:href[\\s]+[\"])/i, /^(?:[\"])/i, /^(?:[^\"]*)/i, /^(?:call[\\s]+)/i, /^(?:\\([\\s]*\\))/i, /^(?:\\()/i, /^(?:[^(]*)/i, /^(?:\\))/i, /^(?:[^)]*)/i, /^(?:click[\\s]+)/i, /^(?:[\\s\\n])/i, /^(?:[^\\s\\n]*)/i, /^(?:gantt\\b)/i, /^(?:dateFormat\\s[^#\\n;]+)/i, /^(?:inclusiveEndDates\\b)/i, /^(?:topAxis\\b)/i, /^(?:axisFormat\\s[^#\\n;]+)/i, /^(?:tickInterval\\s[^#\\n;]+)/i, /^(?:includes\\s[^#\\n;]+)/i, /^(?:excludes\\s[^#\\n;]+)/i, /^(?:todayMarker\\s[^\\n;]+)/i, /^(?:weekday\\s+monday\\b)/i, /^(?:weekday\\s+tuesday\\b)/i, /^(?:weekday\\s+wednesday\\b)/i, /^(?:weekday\\s+thursday\\b)/i, /^(?:weekday\\s+friday\\b)/i, /^(?:weekday\\s+saturday\\b)/i, /^(?:weekday\\s+sunday\\b)/i, /^(?:\\d\\d\\d\\d-\\d\\d-\\d\\d\\b)/i, /^(?:title\\s[^\\n]+)/i, /^(?:accDescription\\s[^#\\n;]+)/i, /^(?:section\\s[^\\n]+)/i, /^(?:[^:\\n]+)/i, /^(?::[^#\\n;]+)/i, /^(?::)/i, /^(?:$)/i, /^(?:.)/i],\n conditions: { \"acc_descr_multiline\": { \"rules\": [6, 7], \"inclusive\": false }, \"acc_descr\": { \"rules\": [4], \"inclusive\": false }, \"acc_title\": { \"rules\": [2], \"inclusive\": false }, \"callbackargs\": { \"rules\": [21, 22], \"inclusive\": false }, \"callbackname\": { \"rules\": [18, 19, 20], \"inclusive\": false }, \"href\": { \"rules\": [15, 16], \"inclusive\": false }, \"click\": { \"rules\": [24, 25], \"inclusive\": false }, \"INITIAL\": { \"rules\": [0, 1, 3, 5, 8, 9, 10, 11, 12, 13, 14, 17, 23, 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], \"inclusive\": true } }\n };\n return lexer2;\n }();\n parser2.lexer = lexer;\n function Parser() {\n this.yy = {};\n }\n Parser.prototype = parser2;\n parser2.Parser = Parser;\n return new Parser();\n}();\nparser.parser = parser;\nconst ganttParser = parser;\ndayjs.extend(dayjsIsoWeek);\ndayjs.extend(dayjsCustomParseFormat);\ndayjs.extend(dayjsAdvancedFormat);\nlet dateFormat = \"\";\nlet axisFormat = \"\";\nlet tickInterval = void 0;\nlet todayMarker = \"\";\nlet includes = [];\nlet excludes = [];\nlet links = {};\nlet sections = [];\nlet tasks = [];\nlet currentSection = \"\";\nlet displayMode = \"\";\nconst tags = [\"active\", \"done\", \"crit\", \"milestone\"];\nlet funs = [];\nlet inclusiveEndDates = false;\nlet topAxis = false;\nlet weekday = \"sunday\";\nlet lastOrder = 0;\nconst clear = function() {\n sections = [];\n tasks = [];\n currentSection = \"\";\n funs = [];\n taskCnt = 0;\n lastTask = void 0;\n lastTaskID = void 0;\n rawTasks = [];\n dateFormat = \"\";\n axisFormat = \"\";\n displayMode = \"\";\n tickInterval = void 0;\n todayMarker = \"\";\n includes = [];\n excludes = [];\n inclusiveEndDates = false;\n topAxis = false;\n lastOrder = 0;\n links = {};\n clear$1();\n weekday = \"sunday\";\n};\nconst setAxisFormat = function(txt) {\n axisFormat = txt;\n};\nconst getAxisFormat = function() {\n return axisFormat;\n};\nconst setTickInterval = function(txt) {\n tickInterval = txt;\n};\nconst getTickInterval = function() {\n return tickInterval;\n};\nconst setTodayMarker = function(txt) {\n todayMarker = txt;\n};\nconst getTodayMarker = function() {\n return todayMarker;\n};\nconst setDateFormat = function(txt) {\n dateFormat = txt;\n};\nconst enableInclusiveEndDates = function() {\n inclusiveEndDates = true;\n};\nconst endDatesAreInclusive = function() {\n return inclusiveEndDates;\n};\nconst enableTopAxis = function() {\n topAxis = true;\n};\nconst topAxisEnabled = function() {\n return topAxis;\n};\nconst setDisplayMode = function(txt) {\n displayMode = txt;\n};\nconst getDisplayMode = function() {\n return displayMode;\n};\nconst getDateFormat = function() {\n return dateFormat;\n};\nconst setIncludes = function(txt) {\n includes = txt.toLowerCase().split(/[\\s,]+/);\n};\nconst getIncludes = function() {\n return includes;\n};\nconst setExcludes = function(txt) {\n excludes = txt.toLowerCase().split(/[\\s,]+/);\n};\nconst getExcludes = function() {\n return excludes;\n};\nconst getLinks = function() {\n return links;\n};\nconst addSection = function(txt) {\n currentSection = txt;\n sections.push(txt);\n};\nconst getSections = function() {\n return sections;\n};\nconst getTasks = function() {\n let allItemsProcessed = compileTasks();\n const maxDepth = 10;\n let iterationCount = 0;\n while (!allItemsProcessed && iterationCount < maxDepth) {\n allItemsProcessed = compileTasks();\n iterationCount++;\n }\n tasks = rawTasks;\n return tasks;\n};\nconst isInvalidDate = function(date, dateFormat2, excludes2, includes2) {\n if (includes2.includes(date.format(dateFormat2.trim()))) {\n return false;\n }\n if (date.isoWeekday() >= 6 && excludes2.includes(\"weekends\")) {\n return true;\n }\n if (excludes2.includes(date.format(\"dddd\").toLowerCase())) {\n return true;\n }\n return excludes2.includes(date.format(dateFormat2.trim()));\n};\nconst setWeekday = function(txt) {\n weekday = txt;\n};\nconst getWeekday = function() {\n return weekday;\n};\nconst checkTaskDates = function(task, dateFormat2, excludes2, includes2) {\n if (!excludes2.length || task.manualEndTime) {\n return;\n }\n let startTime;\n if (task.startTime instanceof Date) {\n startTime = dayjs(task.startTime);\n } else {\n startTime = dayjs(task.startTime, dateFormat2, true);\n }\n startTime = startTime.add(1, \"d\");\n let originalEndTime;\n if (task.endTime instanceof Date) {\n originalEndTime = dayjs(task.endTime);\n } else {\n originalEndTime = dayjs(task.endTime, dateFormat2, true);\n }\n const [fixedEndTime, renderEndTime] = fixTaskDates(\n startTime,\n originalEndTime,\n dateFormat2,\n excludes2,\n includes2\n );\n task.endTime = fixedEndTime.toDate();\n task.renderEndTime = renderEndTime;\n};\nconst fixTaskDates = function(startTime, endTime, dateFormat2, excludes2, includes2) {\n let invalid = false;\n let renderEndTime = null;\n while (startTime <= endTime) {\n if (!invalid) {\n renderEndTime = endTime.toDate();\n }\n invalid = isInvalidDate(startTime, dateFormat2, excludes2, includes2);\n if (invalid) {\n endTime = endTime.add(1, \"d\");\n }\n startTime = startTime.add(1, \"d\");\n }\n return [endTime, renderEndTime];\n};\nconst getStartDate = function(prevTime, dateFormat2, str) {\n str = str.trim();\n const afterRePattern = /^after\\s+(?<ids>[\\d\\w- ]+)/;\n const afterStatement = afterRePattern.exec(str);\n if (afterStatement !== null) {\n let latestTask = null;\n for (const id of afterStatement.groups.ids.split(\" \")) {\n let task = findTaskById(id);\n if (task !== void 0 && (!latestTask || task.endTime > latestTask.endTime)) {\n latestTask = task;\n }\n }\n if (latestTask) {\n return latestTask.endTime;\n }\n const today = /* @__PURE__ */ new Date();\n today.setHours(0, 0, 0, 0);\n return today;\n }\n let mDate = dayjs(str, dateFormat2.trim(), true);\n if (mDate.isValid()) {\n return mDate.toDate();\n } else {\n log.debug(\"Invalid date:\" + str);\n log.debug(\"With date format:\" + dateFormat2.trim());\n const d = new Date(str);\n if (d === void 0 || isNaN(d.getTime()) || // WebKit browsers can mis-parse invalid dates to be ridiculously\n // huge numbers, e.g. new Date('202304') gets parsed as January 1, 202304.\n // This can cause virtually infinite loops while rendering, so for the\n // purposes of Gantt charts we'll just treat any date beyond 10,000 AD/BC as\n // invalid.\n d.getFullYear() < -1e4 || d.getFullYear() > 1e4) {\n throw new Error(\"Invalid date:\" + str);\n }\n return d;\n }\n};\nconst parseDuration = function(str) {\n const statement = /^(\\d+(?:\\.\\d+)?)([Mdhmswy]|ms)$/.exec(str.trim());\n if (statement !== null) {\n return [Number.parseFloat(statement[1]), statement[2]];\n }\n return [NaN, \"ms\"];\n};\nconst getEndDate = function(prevTime, dateFormat2, str, inclusive = false) {\n str = str.trim();\n const untilRePattern = /^until\\s+(?<ids>[\\d\\w- ]+)/;\n const untilStatement = untilRePattern.exec(str);\n if (untilStatement !== null) {\n let earliestTask = null;\n for (const id of untilStatement.groups.ids.split(\" \")) {\n let task = findTaskById(id);\n if (task !== void 0 && (!earliestTask || task.startTime < earliestTask.startTime)) {\n earliestTask = task;\n }\n }\n if (earliestTask) {\n return earliestTask.startTime;\n }\n const today = /* @__PURE__ */ new Date();\n today.setHours(0, 0, 0, 0);\n return today;\n }\n let parsedDate = dayjs(str, dateFormat2.trim(), true);\n if (parsedDate.isValid()) {\n if (inclusive) {\n parsedDate = parsedDate.add(1, \"d\");\n }\n return parsedDate.toDate();\n }\n let endTime = dayjs(prevTime);\n const [durationValue, durationUnit] = parseDuration(str);\n if (!Number.isNaN(durationValue)) {\n const newEndTime = endTime.add(durationValue, durationUnit);\n if (newEndTime.isValid()) {\n endTime = newEndTime;\n }\n }\n return endTime.toDate();\n};\nlet taskCnt = 0;\nconst parseId = function(idStr) {\n if (idStr === void 0) {\n taskCnt = taskCnt + 1;\n return \"task\" + taskCnt;\n }\n return idStr;\n};\nconst compileData = function(prevTask, dataStr) {\n let ds;\n if (dataStr.substr(0, 1) === \":\") {\n ds = dataStr.substr(1, dataStr.length);\n } else {\n ds = dataStr;\n }\n const data = ds.split(\",\");\n const task = {};\n getTaskTags(data, task, tags);\n for (let i = 0; i < data.length; i++) {\n data[i] = data[i].trim();\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(void 0, dateFormat, data[0]);\n endTimeData = data[1];\n break;\n case 3:\n task.id = parseId(data[0]);\n task.startTime = getStartDate(void 0, dateFormat, data[1]);\n endTimeData = data[2];\n break;\n }\n if (endTimeData) {\n task.endTime = getEndDate(task.startTime, dateFormat, endTimeData, inclusiveEndDates);\n task.manualEndTime = dayjs(endTimeData, \"YYYY-MM-DD\", true).isValid();\n checkTaskDates(task, dateFormat, excludes, includes);\n }\n return task;\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 const data = ds.split(\",\");\n const task = {};\n getTaskTags(data, task, tags);\n for (let i = 0; i < data.length; i++) {\n data[i] = data[i].trim();\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 }\n return task;\n};\nlet lastTask;\nlet lastTaskID;\nlet rawTasks = [];\nconst taskDb = {};\nconst 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 },\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 lastOrder++;\n const pos = rawTasks.push(rawTask);\n lastTaskID = rawTask.id;\n taskDb[rawTask.id] = pos - 1;\n};\nconst findTaskById = function(id) {\n const pos = taskDb[id];\n return rawTasks[pos];\n};\nconst 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};\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(void 0, dateFormat, rawTasks[pos].raw.startTime.startData);\n if (startTime) {\n rawTasks[pos].startTime = startTime;\n }\n break;\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 = dayjs(\n rawTasks[pos].raw.endTime.data,\n \"YYYY-MM-DD\",\n true\n ).isValid();\n checkTaskDates(rawTasks[pos], dateFormat, excludes, includes);\n }\n }\n return rawTasks[pos].processed;\n };\n let allProcessed = true;\n for (const [i, rawTask] of rawTasks.entries()) {\n compileTask(i);\n allProcessed = allProcessed && rawTask.processed;\n }\n return allProcessed;\n};\nconst 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 (rawTask !== void 0) {\n pushFun(id, () => {\n window.open(linkStr, \"_self\");\n });\n links[id] = linkStr;\n }\n });\n setClass(ids, \"clickable\");\n};\nconst setClass = function(ids, className) {\n ids.split(\",\").forEach(function(id) {\n let rawTask = findTaskById(id);\n if (rawTask !== void 0) {\n rawTask.classes.push(className);\n }\n });\n};\nconst setClickFun = function(id, functionName, functionArgs) {\n if (getConfig().securityLevel !== \"loose\") {\n return;\n }\n if (functionName === void 0) {\n return;\n }\n let argList = [];\n if (typeof functionArgs === \"string\") {\n argList = functionArgs.split(/,(?=(?:(?:[^\"]*\"){2})*[^\"]*$)/);\n for (let i = 0; i < argList.length; i++) {\n let item = argList[i].trim();\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 if (argList.length === 0) {\n argList.push(id);\n }\n let rawTask = findTaskById(id);\n if (rawTask !== void 0) {\n pushFun(id, () => {\n utils.runFunc(functionName, ...argList);\n });\n }\n};\nconst pushFun = function(id, callbackFunction) {\n funs.push(\n function() {\n const elem = document.querySelector(`[id=\"${id}\"]`);\n if (elem !== null) {\n elem.addEventListener(\"click\", function() {\n callbackFunction();\n });\n }\n },\n function() {\n const elem = document.querySelector(`[id=\"${id}-text\"]`);\n if (elem !== null) {\n elem.addEventListener(\"click\", function() {\n callbackFunction();\n });\n }\n }\n );\n};\nconst setClickEvent = function(ids, functionName, functionArgs) {\n ids.split(\",\").forEach(function(id) {\n setClickFun(id, functionName, functionArgs);\n });\n setClass(ids, \"clickable\");\n};\nconst bindFunctions = function(element) {\n funs.forEach(function(fun) {\n fun(element);\n });\n};\nconst ganttDb = {\n getConfig: () => getConfig().gantt,\n clear,\n setDateFormat,\n getDateFormat,\n enableInclusiveEndDates,\n endDatesAreInclusive,\n enableTopAxis,\n topAxisEnabled,\n setAxisFormat,\n getAxisFormat,\n setTickInterval,\n getTickInterval,\n setTodayMarker,\n getTodayMarker,\n setAccTitle,\n getAccTitle,\n setDiagramTitle,\n getDiagramTitle,\n setDisplayMode,\n getDisplayMode,\n setAccDescription,\n getAccDescription,\n addSection,\n getSections,\n getTasks,\n addTask,\n findTaskById,\n addTaskOrg,\n setIncludes,\n getIncludes,\n setExcludes,\n getExcludes,\n setClickEvent,\n setLink,\n getLinks,\n bindFunctions,\n parseDuration,\n isInvalidDate,\n setWeekday,\n getWeekday\n};\nfunction getTaskTags(data, task, tags2) {\n let matchFound = true;\n while (matchFound) {\n matchFound = false;\n tags2.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}\nconst setConf = function() {\n log.debug(\"Something is calling, setConf, remove the call\");\n};\nconst mapWeekdayToTimeFunction = {\n monday: timeMonday,\n tuesday: timeTuesday,\n wednesday: timeWednesday,\n thursday: timeThursday,\n friday: timeFriday,\n saturday: timeSaturday,\n sunday: timeSunday\n};\nconst getMaxIntersections = (tasks2, orderOffset) => {\n let timeline = [...tasks2].map(() => -Infinity);\n let sorted = [...tasks2].sort((a, b) => a.startTime - b.startTime || a.order - b.order);\n let maxIntersections = 0;\n for (const element of sorted) {\n for (let j = 0; j < timeline.length; j++) {\n if (element.startTime >= timeline[j]) {\n timeline[j] = element.endTime;\n element.order = j + orderOffset;\n if (j > maxIntersections) {\n maxIntersections = j;\n }\n break;\n }\n }\n }\n return maxIntersections;\n};\nlet w;\nconst draw = function(text, id, version, diagObj) {\n const conf = getConfig().gantt;\n const securityLevel = getConfig().securityLevel;\n let sandboxElement;\n if (securityLevel === \"sandbox\") {\n sandboxElement = select(\"#i\" + id);\n }\n const root = securityLevel === \"sandbox\" ? select(sandboxElement.nodes()[0].contentDocument.body) : select(\"body\");\n const doc = securityLevel === \"sandbox\" ? sandboxElement.nodes()[0].contentDocument : document;\n const elem = doc.getElementById(id);\n w = elem.parentElement.offsetWidth;\n if (w === void 0) {\n w = 1200;\n }\n if (conf.useWidth !== void 0) {\n w = conf.useWidth;\n }\n const taskArray = diagObj.db.getTasks();\n let categories = [];\n for (const element of taskArray) {\n categories.push(element.type);\n }\n categories = checkUnique(categories);\n const categoryHeights = {};\n let h = 2 * conf.topPadding;\n if (diagObj.db.getDisplayMode() === \"compact\" || conf.displayMode === \"compact\") {\n const categoryElements = {};\n for (const element of taskArray) {\n if (categoryElements[element.section] === void 0) {\n categoryElements[element.section] = [element];\n } else {\n categoryElements[element.section].push(element);\n }\n }\n let intersections = 0;\n for (const category of Object.keys(categoryElements)) {\n const categoryHeight = getMaxIntersections(categoryElements[category], intersections) + 1;\n intersections += categoryHeight;\n h += categoryHeight * (conf.barHeight + conf.barGap);\n categoryHeights[category] = categoryHeight;\n }\n } else {\n h += taskArray.length * (conf.barHeight + conf.barGap);\n for (const category of categories) {\n categoryHeights[category] = taskArray.filter((task) => task.type === category).length;\n }\n }\n elem.setAttribute(\"viewBox\", \"0 0 \" + w + \" \" + h);\n const svg = root.select(`[id=\"${id}\"]`);\n const timeScale = scaleTime().domain([\n min(taskArray, function(d) {\n return d.startTime;\n }),\n max(taskArray, function(d) {\n return d.endTime;\n })\n ]).rangeRound([0, w - conf.leftPadding - conf.rightPadding]);\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 taskArray.sort(taskCompare);\n makeGantt(taskArray, w, h);\n configureSvgSize(svg, h, w, conf.useMaxWidth);\n svg.append(\"text\").text(diagObj.db.getDiagramTitle()).attr(\"x\", w / 2).attr(\"y\", conf.titleTopMargin).attr(\"class\", \"titleText\");\n function makeGantt(tasks2, pageWidth, pageHeight) {\n const barHeight = conf.barHeight;\n const gap = barHeight + conf.barGap;\n const topPadding = conf.topPadding;\n const leftPadding = conf.leftPadding;\n const colorScale = scaleLinear().domain([0, categories.length]).range([\"#00B9FA\", \"#F95002\"]).interpolate(interpolateHcl);\n drawExcludeDays(\n gap,\n topPadding,\n leftPadding,\n pageWidth,\n pageHeight,\n tasks2,\n diagObj.db.getExcludes(),\n diagObj.db.getIncludes()\n );\n makeGrid(leftPadding, topPadding, pageWidth, pageHeight);\n drawRects(tasks2, gap, topPadding, leftPadding, barHeight, colorScale, pageWidth);\n vertLabels(gap, topPadding);\n drawToday(leftPadding, topPadding, pageWidth, pageHeight);\n }\n function drawRects(theArray, theGap, theTopPad, theSidePad, theBarHeight, theColorScale, w2) {\n const uniqueTaskOrderIds = [...new Set(theArray.map((item) => item.order))];\n const uniqueTasks = uniqueTaskOrderIds.map((id2) => theArray.find((item) => item.order === id2));\n svg.append(\"g\").selectAll(\"rect\").data(uniqueTasks).enter().append(\"rect\").attr(\"x\", 0).attr(\"y\", function(d, i) {\n i = d.order;\n return i * theGap + theTopPad - 2;\n }).attr(\"width\", function() {\n return w2 - conf.rightPadding / 2;\n }).attr(\"height\", theGap).attr(\"class\", function(d) {\n for (const [i, category] of categories.entries()) {\n if (d.type === category) {\n return \"section section\" + i % conf.numberSectionStyles;\n }\n }\n return \"section section0\";\n });\n const rectangles = svg.append(\"g\").selectAll(\"rect\").data(theArray).enter();\n const links2 = diagObj.db.getLinks();\n rectangles.append(\"rect\").attr(\"id\", function(d) {\n return d.id;\n }).attr(\"rx\", 3).attr(\"ry\", 3).attr(\"x\", function(d) {\n if (d.milestone) {\n return timeScale(d.startTime) + theSidePad + 0.5 * (timeScale(d.endTime) - timeScale(d.startTime)) - 0.5 * theBarHeight;\n }\n return timeScale(d.startTime) + theSidePad;\n }).attr(\"y\", function(d, i) {\n i = d.order;\n return i * theGap + theTopPad;\n }).attr(\"width\", function(d) {\n if (d.milestone) {\n return theBarHeight;\n }\n return timeScale(d.renderEndTime || d.endTime) - timeScale(d.startTime);\n }).attr(\"height\", theBarHeight).attr(\"transform-origin\", function(d, i) {\n i = d.order;\n return (timeScale(d.startTime) + theSidePad + 0.5 * (timeScale(d.endTime) - timeScale(d.startTime))).toString() + \"px \" + (i * theGap + theTopPad + 0.5 * theBarHeight).toString() + \"px\";\n }).attr(\"class\", function(d) {\n const res = \"task\";\n let classStr = \"\";\n if (d.classes.length > 0) {\n classStr = d.classes.join(\" \");\n }\n let secNum = 0;\n for (const [i, category] of categories.entries()) {\n if (d.type === category) {\n secNum = i % conf.numberSectionStyles;\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 if (taskClass.length === 0) {\n taskClass = \" task\";\n }\n if (d.milestone) {\n taskClass = \" milestone \" + taskClass;\n }\n taskClass += secNum;\n taskClass += \" \" + classStr;\n return res + taskClass;\n });\n rectangles.append(\"text\").attr(\"id\", function(d) {\n return d.id + \"-text\";\n }).text(function(d) {\n return d.task;\n }).attr(\"font-size\", conf.fontSize).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 if (textWidth > endX - startX) {\n if (endX + textWidth + 1.5 * conf.leftPadding > w2) {\n return startX + theSidePad - 5;\n } else {\n return endX + theSidePad + 5;\n }\n } else {\n return (endX - startX) / 2 + startX + theSidePad;\n }\n }).attr(\"y\", function(d, i) {\n i = d.order;\n return i * theGap + conf.barHeight / 2 + (conf.fontSize / 2 - 2) + theTopPad;\n }).attr(\"text-height\", theBarHeight).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 let classStr = \"\";\n if (d.classes.length > 0) {\n classStr = d.classes.join(\" \");\n }\n let secNum = 0;\n for (const [i, category] of categories.entries()) {\n if (d.type === category) {\n secNum = i % conf.numberSectionStyles;\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 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 if (d.milestone) {\n taskType += \" milestoneText\";\n }\n if (textWidth > endX - startX) {\n if (endX + textWidth + 1.5 * conf.leftPadding > w2) {\n return classStr + \" taskTextOutsideLeft taskTextOutside\" + secNum + \" \" + taskType;\n } else {\n return classStr + \" taskTextOutsideRight taskTextOutside\" + secNum + \" \" + taskType + \" width-\" + textWidth;\n }\n } else {\n return classStr + \" taskText taskText\" + secNum + \" \" + taskType + \" width-\" + textWidth;\n }\n });\n const securityLevel2 = getConfig().securityLevel;\n if (securityLevel2 === \"sandbox\") {\n let sandboxElement2;\n sandboxElement2 = select(\"#i\" + id);\n const doc2 = sandboxElement2.nodes()[0].contentDocument;\n rectangles.filter(function(d) {\n return links2[d.id] !== void 0;\n }).each(function(o) {\n var taskRect = doc2.querySelector(\"#\" + o.id);\n var taskText = doc2.querySelector(\"#\" + o.id + \"-text\");\n const oldParent = taskRect.parentNode;\n var Link = doc2.createElement(\"a\");\n Link.setAttribute(\"xlink:href\", links2[o.id]);\n Link.setAttribute(\"target\", \"_top\");\n oldParent.appendChild(Link);\n Link.appendChild(taskRect);\n Link.appendChild(taskText);\n });\n }\n }\n function drawExcludeDays(theGap, theTopPad, theSidePad, w2, h2, tasks2, excludes2, includes2) {\n if (excludes2.length === 0 && includes2.length === 0) {\n return;\n }\n let minTime;\n let maxTime;\n for (const { startTime, endTime } of tasks2) {\n if (minTime === void 0 || startTime < minTime) {\n minTime = startTime;\n }\n if (maxTime === void 0 || endTime > maxTime) {\n maxTime = endTime;\n }\n }\n if (!minTime || !maxTime) {\n return;\n }\n if (dayjs(maxTime).diff(dayjs(minTime), \"year\") > 5) {\n log.warn(\n \"The difference between the min and max time is more than 5 years. This will cause performance issues. Skipping drawing exclude days.\"\n );\n return;\n }\n const dateFormat2 = diagObj.db.getDateFormat();\n const excludeRanges = [];\n let range = null;\n let d = dayjs(minTime);\n while (d.valueOf() <= maxTime) {\n if (diagObj.db.isInvalidDate(d, dateFormat2, excludes2, includes2)) {\n if (!range) {\n range = {\n start: d,\n end: d\n };\n } else {\n range.end = d;\n }\n } else {\n if (range) {\n excludeRanges.push(range);\n range = null;\n }\n }\n d = d.add(1, \"d\");\n }\n const rectangles = svg.append(\"g\").selectAll(\"rect\").data(excludeRanges).enter();\n rectangles.append(\"rect\").attr(\"id\", function(d2) {\n return \"exclude-\" + d2.start.format(\"YYYY-MM-DD\");\n }).attr(\"x\", function(d2) {\n return timeScale(d2.start) + theSidePad;\n }).attr(\"y\", conf.gridLineStartPadding).attr(\"width\", function(d2) {\n const renderEnd = d2.end.add(1, \"day\");\n return timeScale(renderEnd) - timeScale(d2.start);\n }).attr(\"height\", h2 - theTopPad - conf.gridLineStartPadding).attr(\"transform-origin\", function(d2, i) {\n return (timeScale(d2.start) + theSidePad + 0.5 * (timeScale(d2.end) - timeScale(d2.start))).toString() + \"px \" + (i * theGap + 0.5 * h2).toString() + \"px\";\n }).attr(\"class\", \"exclude-range\");\n }\n function makeGrid(theSidePad, theTopPad, w2, h2) {\n let bottomXAxis = axisBottom(timeScale).tickSize(-h2 + theTopPad + conf.gridLineStartPadding).tickFormat(timeFormat(diagObj.db.getAxisFormat() || conf.axisFormat || \"%Y-%m-%d\"));\n const reTickInterval = /^([1-9]\\d*)(millisecond|second|minute|hour|day|week|month)$/;\n const resultTickInterval = reTickInterval.exec(\n diagObj.db.getTickInterval() || conf.tickInterval\n );\n if (resultTickInterval !== null) {\n const every = resultTickInterval[1];\n const interval = resultTickInterval[2];\n const weekday2 = diagObj.db.getWeekday() || conf.weekday;\n switch (interval) {\n case \"millisecond\":\n bottomXAxis.ticks(timeMillisecond.every(every));\n break;\n case \"second\":\n bottomXAxis.ticks(timeSecond.every(every));\n break;\n case \"minute\":\n bottomXAxis.ticks(timeMinute.every(every));\n break;\n case \"hour\":\n bottomXAxis.ticks(timeHour.every(every));\n break;\n case \"day\":\n bottomXAxis.ticks(timeDay.every(every));\n break;\n case \"week\":\n bottomXAxis.ticks(mapWeekdayToTimeFunction[weekday2].every(every));\n break;\n case \"month\":\n bottomXAxis.ticks(timeMonth.every(every));\n break;\n }\n }\n svg.append(\"g\").attr(\"class\", \"grid\").attr(\"transform\", \"translate(\" + theSidePad + \", \" + (h2 - 50) + \")\").call(bottomXAxis).selectAll(\"text\").style(\"text-anchor\", \"middle\").attr(\"fill\", \"#000\").attr(\"stroke\", \"none\").attr(\"font-size\", 10).attr(\"dy\", \"1em\");\n if (diagObj.db.topAxisEnabled() || conf.topAxis) {\n let topXAxis = axisTop(timeScale).tickSize(-h2 + theTopPad + conf.gridLineStartPadding).tickFormat(timeFormat(diagObj.db.getAxisFormat() || conf.axisFormat || \"%Y-%m-%d\"));\n if (resultTickInterval !== null) {\n const every = resultTickInterval[1];\n const interval = resultTickInterval[2];\n const weekday2 = diagObj.db.getWeekday() || conf.weekday;\n switch (interval) {\n case \"millisecond\":\n topXAxis.ticks(timeMillisecond.every(every));\n break;\n case \"second\":\n topXAxis.ticks(timeSecond.every(every));\n break;\n case \"minute\":\n topXAxis.ticks(timeMinute.every(every));\n break;\n case \"hour\":\n topXAxis.ticks(timeHour.every(every));\n break;\n case \"day\":\n topXAxis.ticks(timeDay.every(every));\n break;\n case \"week\":\n topXAxis.ticks(mapWeekdayToTimeFunction[weekday2].every(every));\n break;\n case \"month\":\n topXAxis.ticks(timeMonth.every(every));\n break;\n }\n }\n svg.append(\"g\").attr(\"class\", \"grid\").attr(\"transform\", \"translate(\" + theSidePad + \", \" + theTopPad + \")\").call(topXAxis).selectAll(\"text\").style(\"text-anchor\", \"middle\").attr(\"fill\", \"#000\").attr(\"stroke\", \"none\").attr(\"font-size\", 10);\n }\n }\n function vertLabels(theGap, theTopPad) {\n let prevGap = 0;\n const numOccurrences = Object.keys(categoryHeights).map((d) => [d, categoryHeights[d]]);\n svg.append(\"g\").selectAll(\"text\").data(numOccurrences).enter().append(function(d) {\n const rows = d[0].split(common.lineBreakRegex);\n const dy = -(rows.length - 1) / 2;\n const svgLabel = doc.createElementNS(\"http://www.w3.org/2000/svg\", \"text\");\n svgLabel.setAttribute(\"dy\", dy + \"em\");\n for (const [j, row] of rows.entries()) {\n const tspan = doc.createElementNS(\"http://www.w3.org/2000/svg\", \"tspan\");\n tspan.setAttribute(\"alignment-baseline\", \"central\");\n tspan.setAttribute(\"x\", \"10\");\n if (j > 0) {\n tspan.setAttribute(\"dy\", \"1em\");\n }\n tspan.textContent = row;\n svgLabel.appendChild(tspan);\n }\n return svgLabel;\n }).attr(\"x\", 10).attr(\"y\", function(d, i) {\n if (i > 0) {\n for (let j = 0; j < i; j++) {\n prevGap += numOccurrences[i - 1][1];\n return d[1] * theGap / 2 + prevGap * theGap + theTopPad;\n }\n } else {\n return d[1] * theGap / 2 + theTopPad;\n }\n }).attr(\"font-size\", conf.sectionFontSize).attr(\"class\", function(d) {\n for (const [i, category] of categories.entries()) {\n if (d[0] === category) {\n return \"sectionTitle sectionTitle\" + i % conf.numberSectionStyles;\n }\n }\n return \"sectionTitle\";\n });\n }\n function drawToday(theSidePad, theTopPad, w2, h2) {\n const todayMarker2 = diagObj.db.getTodayMarker();\n if (todayMarker2 === \"off\") {\n return;\n }\n const todayG = svg.append(\"g\").attr(\"class\", \"today\");\n const today = /* @__PURE__ */ new Date();\n const todayLine = todayG.append(\"line\");\n todayLine.attr(\"x1\", timeScale(today) + theSidePad).attr(\"x2\", timeScale(today) + theSidePad).attr(\"y1\", conf.titleTopMargin).attr(\"y2\", h2 - conf.titleTopMargin).attr(\"class\", \"today\");\n if (todayMarker2 !== \"\") {\n todayLine.attr(\"style\", todayMarker2.replace(/,/g, \";\"));\n }\n }\n function checkUnique(arr) {\n const hash = {};\n const result = [];\n for (let i = 0, l = arr.length; i < l; ++i) {\n if (!Object.prototype.hasOwnProperty.call(hash, arr[i])) {\n hash[arr[i]] = true;\n result.push(arr[i]);\n }\n }\n return result;\n }\n};\nconst ganttRenderer = {\n setConf,\n draw\n};\nconst getStyles = (options) => `\n .mermaid-main-font {\n font-family: var(--mermaid-font-family, \"trebuchet ms\", verdana, arial, sans-serif);\n }\n\n .exclude-range {\n fill: ${options.excludeBkgColor};\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-family: var(--mermaid-font-family, \"trebuchet ms\", verdana, arial, sans-serif);\n }\n\n\n /* Grid and axis */\n\n .grid .tick {\n stroke: ${options.gridColor};\n opacity: 0.8;\n shape-rendering: crispEdges;\n }\n\n .grid .tick text {\n font-family: ${options.fontFamily};\n fill: ${options.textColor};\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: var(--mermaid-font-family, \"trebuchet ms\", verdana, arial, sans-serif);\n }\n\n .taskTextOutsideRight {\n fill: ${options.taskTextDarkColor};\n text-anchor: start;\n font-family: var(--mermaid-font-family, \"trebuchet ms\", verdana, arial, sans-serif);\n }\n\n .taskTextOutsideLeft {\n fill: ${options.taskTextDarkColor};\n text-anchor: end;\n }\n\n\n /* Special case clickable */\n\n .task.clickable {\n cursor: pointer;\n }\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\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.titleColor || options.textColor};\n font-family: var(--mermaid-font-family, \"trebuchet ms\", verdana, arial, sans-serif);\n }\n`;\nconst ganttStyles = getStyles;\nconst diagram = {\n parser: ganttParser,\n db: ganttDb,\n renderer: ganttRenderer,\n styles: ganttStyles\n};\nexport {\n diagram\n};\n","import { c as getConfig, s as setAccTitle, g as getAccTitle, a as getAccDescription, b as setAccDescription, q as setDiagramTitle, t as getDiagramTitle, l as log, e as common, v as clear$2, y as random, u as utils, z as setupGraphViewbox } from \"./mermaid-f47111a7.js\";\nimport { select } from \"d3\";\nimport \"ts-dedent\";\nimport \"dayjs\";\nimport \"@braintree/sanitize-url\";\nimport \"dompurify\";\nimport \"khroma\";\nimport \"lodash-es/memoize.js\";\nimport \"lodash-es/merge.js\";\nimport \"stylis\";\nimport \"lodash-es/isEmpty.js\";\nvar parser = function() {\n var o = function(k, v, o2, l) {\n for (o2 = o2 || {}, l = k.length; l--; o2[k[l]] = v)\n ;\n return o2;\n }, $V0 = [1, 3], $V1 = [1, 6], $V2 = [1, 4], $V3 = [1, 5], $V4 = [2, 5], $V5 = [1, 12], $V6 = [5, 7, 13, 19, 21, 23, 24, 26, 28, 31, 37, 40, 47], $V7 = [7, 13, 19, 21, 23, 24, 26, 28, 31, 37, 40], $V8 = [7, 12, 13, 19, 21, 23, 24, 26, 28, 31, 37, 40], $V9 = [7, 13, 47], $Va = [1, 42], $Vb = [1, 41], $Vc = [7, 13, 29, 32, 35, 38, 47], $Vd = [1, 55], $Ve = [1, 56], $Vf = [1, 57], $Vg = [7, 13, 32, 35, 42, 47];\n var parser2 = {\n trace: function trace() {\n },\n yy: {},\n symbols_: { \"error\": 2, \"start\": 3, \"eol\": 4, \"GG\": 5, \"document\": 6, \"EOF\": 7, \":\": 8, \"DIR\": 9, \"options\": 10, \"body\": 11, \"OPT\": 12, \"NL\": 13, \"line\": 14, \"statement\": 15, \"commitStatement\": 16, \"mergeStatement\": 17, \"cherryPickStatement\": 18, \"acc_title\": 19, \"acc_title_value\": 20, \"acc_descr\": 21, \"acc_descr_value\": 22, \"acc_descr_multiline_value\": 23, \"section\": 24, \"branchStatement\": 25, \"CHECKOUT\": 26, \"ref\": 27, \"BRANCH\": 28, \"ORDER\": 29, \"NUM\": 30, \"CHERRY_PICK\": 31, \"COMMIT_ID\": 32, \"STR\": 33, \"PARENT_COMMIT\": 34, \"COMMIT_TAG\": 35, \"EMPTYSTR\": 36, \"MERGE\": 37, \"COMMIT_TYPE\": 38, \"commitType\": 39, \"COMMIT\": 40, \"commit_arg\": 41, \"COMMIT_MSG\": 42, \"NORMAL\": 43, \"REVERSE\": 44, \"HIGHLIGHT\": 45, \"ID\": 46, \";\": 47, \"$accept\": 0, \"$end\": 1 },\n terminals_: { 2: \"error\", 5: \"GG\", 7: \"EOF\", 8: \":\", 9: \"DIR\", 12: \"OPT\", 13: \"NL\", 19: \"acc_title\", 20: \"acc_title_value\", 21: \"acc_descr\", 22: \"acc_descr_value\", 23: \"acc_descr_multiline_value\", 24: \"section\", 26: \"CHECKOUT\", 28: \"BRANCH\", 29: \"ORDER\", 30: \"NUM\", 31: \"CHERRY_PICK\", 32: \"COMMIT_ID\", 33: \"STR\", 34: \"PARENT_COMMIT\", 35: \"COMMIT_TAG\", 36: \"EMPTYSTR\", 37: \"MERGE\", 38: \"COMMIT_TYPE\", 40: \"COMMIT\", 42: \"COMMIT_MSG\", 43: \"NORMAL\", 44: \"REVERSE\", 45: \"HIGHLIGHT\", 46: \"ID\", 47: \";\" },\n productions_: [0, [3, 2], [3, 3], [3, 4], [3, 5], [6, 0], [6, 2], [10, 2], [10, 1], [11, 0], [11, 2], [14, 2], [14, 1], [15, 1], [15, 1], [15, 1], [15, 2], [15, 2], [15, 1], [15, 1], [15, 1], [15, 2], [25, 2], [25, 4], [18, 3], [18, 5], [18, 5], [18, 7], [18, 7], [18, 5], [18, 5], [18, 5], [18, 7], [18, 7], [18, 7], [18, 7], [17, 2], [17, 4], [17, 4], [17, 4], [17, 6], [17, 6], [17, 6], [17, 6], [17, 6], [17, 6], [17, 8], [17, 8], [17, 8], [17, 8], [17, 8], [17, 8], [16, 2], [16, 3], [16, 3], [16, 5], [16, 5], [16, 3], [16, 5], [16, 5], [16, 5], [16, 5], [16, 7], [16, 7], [16, 7], [16, 7], [16, 7], [16, 7], [16, 3], [16, 5], [16, 5], [16, 5], [16, 5], [16, 5], [16, 5], [16, 7], [16, 7], [16, 7], [16, 7], [16, 7], [16, 7], [16, 7], [16, 7], [16, 7], [16, 7], [16, 7], [16, 7], [16, 7], [16, 7], [16, 7], [16, 7], [16, 7], [16, 7], [16, 9], [16, 9], [16, 9], [16, 9], [16, 9], [16, 9], [16, 9], [16, 9], [16, 9], [16, 9], [16, 9], [16, 9], [16, 9], [16, 9], [16, 9], [16, 9], [16, 9], [16, 9], [16, 9], [16, 9], [16, 9], [16, 9], [16, 9], [16, 9], [41, 0], [41, 1], [39, 1], [39, 1], [39, 1], [27, 1], [27, 1], [4, 1], [4, 1], [4, 1]],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) {\n var $0 = $$.length - 1;\n switch (yystate) {\n case 2:\n return $$[$0];\n case 3:\n return $$[$0 - 1];\n case 4:\n yy.setDirection($$[$0 - 3]);\n return $$[$0 - 1];\n case 6:\n yy.setOptions($$[$0 - 1]);\n this.$ = $$[$0];\n break;\n case 7:\n $$[$0 - 1] += $$[$0];\n this.$ = $$[$0 - 1];\n break;\n case 9:\n this.$ = [];\n break;\n case 10:\n $$[$0 - 1].push($$[$0]);\n this.$ = $$[$0 - 1];\n break;\n case 11:\n this.$ = $$[$0 - 1];\n break;\n case 16:\n this.$ = $$[$0].trim();\n yy.setAccTitle(this.$);\n break;\n case 17:\n case 18:\n this.$ = $$[$0].trim();\n yy.setAccDescription(this.$);\n break;\n case 19:\n yy.addSection($$[$0].substr(8));\n this.$ = $$[$0].substr(8);\n break;\n case 21:\n yy.checkout($$[$0]);\n break;\n case 22:\n yy.branch($$[$0]);\n break;\n case 23:\n yy.branch($$[$0 - 2], $$[$0]);\n break;\n case 24:\n yy.cherryPick($$[$0], \"\", void 0);\n break;\n case 25:\n yy.cherryPick($$[$0 - 2], \"\", void 0, $$[$0]);\n break;\n case 26:\n yy.cherryPick($$[$0 - 2], \"\", $$[$0]);\n break;\n case 27:\n yy.cherryPick($$[$0 - 4], \"\", $$[$0], $$[$0 - 2]);\n break;\n case 28:\n yy.cherryPick($$[$0 - 4], \"\", $$[$0 - 2], $$[$0]);\n break;\n case 29:\n yy.cherryPick($$[$0], \"\", $$[$0 - 2]);\n break;\n case 30:\n yy.cherryPick($$[$0], \"\", \"\");\n break;\n case 31:\n yy.cherryPick($$[$0 - 2], \"\", \"\");\n break;\n case 32:\n yy.cherryPick($$[$0 - 4], \"\", \"\", $$[$0 - 2]);\n break;\n case 33:\n yy.cherryPick($$[$0 - 4], \"\", \"\", $$[$0]);\n break;\n case 34:\n yy.cherryPick($$[$0 - 2], \"\", $$[$0 - 4], $$[$0]);\n break;\n case 35:\n yy.cherryPick($$[$0 - 2], \"\", \"\", $$[$0]);\n break;\n case 36:\n yy.merge($$[$0], \"\", \"\", \"\");\n break;\n case 37:\n yy.merge($$[$0 - 2], $$[$0], \"\", \"\");\n break;\n case 38:\n yy.merge($$[$0 - 2], \"\", $$[$0], \"\");\n break;\n case 39:\n yy.merge($$[$0 - 2], \"\", \"\", $$[$0]);\n break;\n case 40:\n yy.merge($$[$0 - 4], $$[$0], \"\", $$[$0 - 2]);\n break;\n case 41:\n yy.merge($$[$0 - 4], \"\", $$[$0], $$[$0 - 2]);\n break;\n case 42:\n yy.merge($$[$0 - 4], \"\", $$[$0 - 2], $$[$0]);\n break;\n case 43:\n yy.merge($$[$0 - 4], $$[$0 - 2], $$[$0], \"\");\n break;\n case 44:\n yy.merge($$[$0 - 4], $$[$0 - 2], \"\", $$[$0]);\n break;\n case 45:\n yy.merge($$[$0 - 4], $$[$0], $$[$0 - 2], \"\");\n break;\n case 46:\n yy.merge($$[$0 - 6], $$[$0 - 4], $$[$0 - 2], $$[$0]);\n break;\n case 47:\n yy.merge($$[$0 - 6], $$[$0], $$[$0 - 4], $$[$0 - 2]);\n break;\n case 48:\n yy.merge($$[$0 - 6], $$[$0 - 4], $$[$0], $$[$0 - 2]);\n break;\n case 49:\n yy.merge($$[$0 - 6], $$[$0 - 2], $$[$0 - 4], $$[$0]);\n break;\n case 50:\n yy.merge($$[$0 - 6], $$[$0], $$[$0 - 2], $$[$0 - 4]);\n break;\n case 51:\n yy.merge($$[$0 - 6], $$[$0 - 2], $$[$0], $$[$0 - 4]);\n break;\n case 52:\n yy.commit($$[$0]);\n break;\n case 53:\n yy.commit(\"\", \"\", yy.commitType.NORMAL, $$[$0]);\n break;\n case 54:\n yy.commit(\"\", \"\", $$[$0], \"\");\n break;\n case 55:\n yy.commit(\"\", \"\", $$[$0], $$[$0 - 2]);\n break;\n case 56:\n yy.commit(\"\", \"\", $$[$0 - 2], $$[$0]);\n break;\n case 57:\n yy.commit(\"\", $$[$0], yy.commitType.NORMAL, \"\");\n break;\n case 58:\n yy.commit(\"\", $$[$0 - 2], yy.commitType.NORMAL, $$[$0]);\n break;\n case 59:\n yy.commit(\"\", $$[$0], yy.commitType.NORMAL, $$[$0 - 2]);\n break;\n case 60:\n yy.commit(\"\", $$[$0 - 2], $$[$0], \"\");\n break;\n case 61:\n yy.commit(\"\", $$[$0], $$[$0 - 2], \"\");\n break;\n case 62:\n yy.commit(\"\", $$[$0 - 4], $$[$0 - 2], $$[$0]);\n break;\n case 63:\n yy.commit(\"\", $$[$0 - 4], $$[$0], $$[$0 - 2]);\n break;\n case 64:\n yy.commit(\"\", $$[$0 - 2], $$[$0 - 4], $$[$0]);\n break;\n case 65:\n yy.commit(\"\", $$[$0], $$[$0 - 4], $$[$0 - 2]);\n break;\n case 66:\n yy.commit(\"\", $$[$0], $$[$0 - 2], $$[$0 - 4]);\n break;\n case 67:\n yy.commit(\"\", $$[$0 - 2], $$[$0], $$[$0 - 4]);\n break;\n case 68:\n yy.commit($$[$0], \"\", yy.commitType.NORMAL, \"\");\n break;\n case 69:\n yy.commit($$[$0], \"\", yy.commitType.NORMAL, $$[$0 - 2]);\n break;\n case 70:\n yy.commit($$[$0 - 2], \"\", yy.commitType.NORMAL, $$[$0]);\n break;\n case 71:\n yy.commit($$[$0 - 2], \"\", $$[$0], \"\");\n break;\n case 72:\n yy.commit($$[$0], \"\", $$[$0 - 2], \"\");\n break;\n case 73:\n yy.commit($$[$0], $$[$0 - 2], yy.commitType.NORMAL, \"\");\n break;\n case 74:\n yy.commit($$[$0 - 2], $$[$0], yy.commitType.NORMAL, \"\");\n break;\n case 75:\n yy.commit($$[$0 - 4], \"\", $$[$0 - 2], $$[$0]);\n break;\n case 76:\n yy.commit($$[$0 - 4], \"\", $$[$0], $$[$0 - 2]);\n break;\n case 77:\n yy.commit($$[$0 - 2], \"\", $$[$0 - 4], $$[$0]);\n break;\n case 78:\n yy.commit($$[$0], \"\", $$[$0 - 4], $$[$0 - 2]);\n break;\n case 79:\n yy.commit($$[$0], \"\", $$[$0 - 2], $$[$0 - 4]);\n break;\n case 80:\n yy.commit($$[$0 - 2], \"\", $$[$0], $$[$0 - 4]);\n break;\n case 81:\n yy.commit($$[$0 - 4], $$[$0], $$[$0 - 2], \"\");\n break;\n case 82:\n yy.commit($$[$0 - 4], $$[$0 - 2], $$[$0], \"\");\n break;\n case 83:\n yy.commit($$[$0 - 2], $$[$0], $$[$0 - 4], \"\");\n break;\n case 84:\n yy.commit($$[$0], $$[$0 - 2], $$[$0 - 4], \"\");\n break;\n case 85:\n yy.commit($$[$0], $$[$0 - 4], $$[$0 - 2], \"\");\n break;\n case 86:\n yy.commit($$[$0 - 2], $$[$0 - 4], $$[$0], \"\");\n break;\n case 87:\n yy.commit($$[$0 - 4], $$[$0], yy.commitType.NORMAL, $$[$0 - 2]);\n break;\n case 88:\n yy.commit($$[$0 - 4], $$[$0 - 2], yy.commitType.NORMAL, $$[$0]);\n break;\n case 89:\n yy.commit($$[$0 - 2], $$[$0], yy.commitType.NORMAL, $$[$0 - 4]);\n break;\n case 90:\n yy.commit($$[$0], $$[$0 - 2], yy.commitType.NORMAL, $$[$0 - 4]);\n break;\n case 91:\n yy.commit($$[$0], $$[$0 - 4], yy.commitType.NORMAL, $$[$0 - 2]);\n break;\n case 92:\n yy.commit($$[$0 - 2], $$[$0 - 4], yy.commitType.NORMAL, $$[$0]);\n break;\n case 93:\n yy.commit($$[$0 - 6], $$[$0 - 4], $$[$0 - 2], $$[$0]);\n break;\n case 94:\n yy.commit($$[$0 - 6], $$[$0 - 4], $$[$0], $$[$0 - 2]);\n break;\n case 95:\n yy.commit($$[$0 - 6], $$[$0 - 2], $$[$0 - 4], $$[$0]);\n break;\n case 96:\n yy.commit($$[$0 - 6], $$[$0], $$[$0 - 4], $$[$0 - 2]);\n break;\n case 97:\n yy.commit($$[$0 - 6], $$[$0 - 2], $$[$0], $$[$0 - 4]);\n break;\n case 98:\n yy.commit($$[$0 - 6], $$[$0], $$[$0 - 2], $$[$0 - 4]);\n break;\n case 99:\n yy.commit($$[$0 - 4], $$[$0 - 6], $$[$0 - 2], $$[$0]);\n break;\n case 100:\n yy.commit($$[$0 - 4], $$[$0 - 6], $$[$0], $$[$0 - 2]);\n break;\n case 101:\n yy.commit($$[$0 - 2], $$[$0 - 6], $$[$0 - 4], $$[$0]);\n break;\n case 102:\n yy.commit($$[$0], $$[$0 - 6], $$[$0 - 4], $$[$0 - 2]);\n break;\n case 103:\n yy.commit($$[$0 - 2], $$[$0 - 6], $$[$0], $$[$0 - 4]);\n break;\n case 104:\n yy.commit($$[$0], $$[$0 - 6], $$[$0 - 2], $$[$0 - 4]);\n break;\n case 105:\n yy.commit($$[$0], $$[$0 - 4], $$[$0 - 2], $$[$0 - 6]);\n break;\n case 106:\n yy.commit($$[$0 - 2], $$[$0 - 4], $$[$0], $$[$0 - 6]);\n break;\n case 107:\n yy.commit($$[$0], $$[$0 - 2], $$[$0 - 4], $$[$0 - 6]);\n break;\n case 108:\n yy.commit($$[$0 - 2], $$[$0], $$[$0 - 4], $$[$0 - 6]);\n break;\n case 109:\n yy.commit($$[$0 - 4], $$[$0 - 2], $$[$0], $$[$0 - 6]);\n break;\n case 110:\n yy.commit($$[$0 - 4], $$[$0], $$[$0 - 2], $$[$0 - 6]);\n break;\n case 111:\n yy.commit($$[$0 - 2], $$[$0 - 4], $$[$0 - 6], $$[$0]);\n break;\n case 112:\n yy.commit($$[$0], $$[$0 - 4], $$[$0 - 6], $$[$0 - 2]);\n break;\n case 113:\n yy.commit($$[$0 - 2], $$[$0], $$[$0 - 6], $$[$0 - 4]);\n break;\n case 114:\n yy.commit($$[$0], $$[$0 - 2], $$[$0 - 6], $$[$0 - 4]);\n break;\n case 115:\n yy.commit($$[$0 - 4], $$[$0 - 2], $$[$0 - 6], $$[$0]);\n break;\n case 116:\n yy.commit($$[$0 - 4], $$[$0], $$[$0 - 6], $$[$0 - 2]);\n break;\n case 117:\n this.$ = \"\";\n break;\n case 118:\n this.$ = $$[$0];\n break;\n case 119:\n this.$ = yy.commitType.NORMAL;\n break;\n case 120:\n this.$ = yy.commitType.REVERSE;\n break;\n case 121:\n this.$ = yy.commitType.HIGHLIGHT;\n break;\n }\n },\n table: [{ 3: 1, 4: 2, 5: $V0, 7: $V1, 13: $V2, 47: $V3 }, { 1: [3] }, { 3: 7, 4: 2, 5: $V0, 7: $V1, 13: $V2, 47: $V3 }, { 6: 8, 7: $V4, 8: [1, 9], 9: [1, 10], 10: 11, 13: $V5 }, o($V6, [2, 124]), o($V6, [2, 125]), o($V6, [2, 126]), { 1: [2, 1] }, { 7: [1, 13] }, { 6: 14, 7: $V4, 10: 11, 13: $V5 }, { 8: [1, 15] }, o($V7, [2, 9], { 11: 16, 12: [1, 17] }), o($V8, [2, 8]), { 1: [2, 2] }, { 7: [1, 18] }, { 6: 19, 7: $V4, 10: 11, 13: $V5 }, { 7: [2, 6], 13: [1, 22], 14: 20, 15: 21, 16: 23, 17: 24, 18: 25, 19: [1, 26], 21: [1, 27], 23: [1, 28], 24: [1, 29], 25: 30, 26: [1, 31], 28: [1, 35], 31: [1, 34], 37: [1, 33], 40: [1, 32] }, o($V8, [2, 7]), { 1: [2, 3] }, { 7: [1, 36] }, o($V7, [2, 10]), { 4: 37, 7: $V1, 13: $V2, 47: $V3 }, o($V7, [2, 12]), o($V9, [2, 13]), o($V9, [2, 14]), o($V9, [2, 15]), { 20: [1, 38] }, { 22: [1, 39] }, o($V9, [2, 18]), o($V9, [2, 19]), o($V9, [2, 20]), { 27: 40, 33: $Va, 46: $Vb }, o($V9, [2, 117], { 41: 43, 32: [1, 46], 33: [1, 48], 35: [1, 44], 38: [1, 45], 42: [1, 47] }), { 27: 49, 33: $Va, 46: $Vb }, { 32: [1, 50], 35: [1, 51] }, { 27: 52, 33: $Va, 46: $Vb }, { 1: [2, 4] }, o($V7, [2, 11]), o($V9, [2, 16]), o($V9, [2, 17]), o($V9, [2, 21]), o($Vc, [2, 122]), o($Vc, [2, 123]), o($V9, [2, 52]), { 33: [1, 53] }, { 39: 54, 43: $Vd, 44: $Ve, 45: $Vf }, { 33: [1, 58] }, { 33: [1, 59] }, o($V9, [2, 118]), o($V9, [2, 36], { 32: [1, 60], 35: [1, 62], 38: [1, 61] }), { 33: [1, 63] }, { 33: [1, 64], 36: [1, 65] }, o($V9, [2, 22], { 29: [1, 66] }), o($V9, [2, 53], { 32: [1, 68], 38: [1, 67], 42: [1, 69] }), o($V9, [2, 54], { 32: [1, 71], 35: [1, 70], 42: [1, 72] }), o($Vg, [2, 119]), o($Vg, [2, 120]), o($Vg, [2, 121]), o($V9, [2, 57], { 35: [1, 73], 38: [1, 74], 42: [1, 75] }), o($V9, [2, 68], { 32: [1, 78], 35: [1, 76], 38: [1, 77] }), { 33: [1, 79] }, { 39: 80, 43: $Vd, 44: $Ve, 45: $Vf }, { 33: [1, 81] }, o($V9, [2, 24], { 34: [1, 82], 35: [1, 83] }), { 32: [1, 84] }, { 32: [1, 85] }, { 30: [1, 86] }, { 39: 87, 43: $Vd, 44: $Ve, 45: $Vf }, { 33: [1, 88] }, { 33: [1, 89] }, { 33: [1, 90] }, { 33: [1, 91] }, { 33: [1, 92] }, { 33: [1, 93] }, { 39: 94, 43: $Vd, 44: $Ve, 45: $Vf }, { 33: [1, 95] }, { 33: [1, 96] }, { 39: 97, 43: $Vd, 44: $Ve, 45: $Vf }, { 33: [1, 98] }, o($V9, [2, 37], { 35: [1, 100], 38: [1, 99] }), o($V9, [2, 38], { 32: [1, 102], 35: [1, 101] }), o($V9, [2, 39], { 32: [1, 103], 38: [1, 104] }), { 33: [1, 105] }, { 33: [1, 106], 36: [1, 107] }, { 33: [1, 108] }, { 33: [1, 109] }, o($V9, [2, 23]), o($V9, [2, 55], { 32: [1, 110], 42: [1, 111] }), o($V9, [2, 59], { 38: [1, 112], 42: [1, 113] }), o($V9, [2, 69], { 32: [1, 115], 38: [1, 114] }), o($V9, [2, 56], { 32: [1, 116], 42: [1, 117] }), o($V9, [2, 61], { 35: [1, 118], 42: [1, 119] }), o($V9, [2, 72], { 32: [1, 121], 35: [1, 120] }), o($V9, [2, 58], { 38: [1, 122], 42: [1, 123] }), o($V9, [2, 60], { 35: [1, 124], 42: [1, 125] }), o($V9, [2, 73], { 35: [1, 127], 38: [1, 126] }), o($V9, [2, 70], { 32: [1, 129], 38: [1, 128] }), o($V9, [2, 71], { 32: [1, 131], 35: [1, 130] }), o($V9, [2, 74], { 35: [1, 133], 38: [1, 132] }), { 39: 134, 43: $Vd, 44: $Ve, 45: $Vf }, { 33: [1, 135] }, { 33: [1, 136] }, { 33: [1, 137] }, { 33: [1, 138] }, { 39: 139, 43: $Vd, 44: $Ve, 45: $Vf }, o($V9, [2, 25], { 35: [1, 140] }), o($V9, [2, 26], { 34: [1, 141] }), o($V9, [2, 31], { 34: [1, 142] }), o($V9, [2, 29], { 34: [1, 143] }), o($V9, [2, 30], { 34: [1, 144] }), { 33: [1, 145] }, { 33: [1, 146] }, { 39: 147, 43: $Vd, 44: $Ve, 45: $Vf }, { 33: [1, 148] }, { 39: 149, 43: $Vd, 44: $Ve, 45: $Vf }, { 33: [1, 150] }, { 33: [1, 151] }, { 33: [1, 152] }, { 33: [1, 153] }, { 33: [1, 154] }, { 33: [1, 155] }, { 33: [1, 156] }, { 39: 157, 43: $Vd, 44: $Ve, 45: $Vf }, { 33: [1, 158] }, { 33: [1, 159] }, { 33: [1, 160] }, { 39: 161, 43: $Vd, 44: $Ve, 45: $Vf }, { 33: [1, 162] }, { 39: 163, 43: $Vd, 44: $Ve, 45: $Vf }, { 33: [1, 164] }, { 33: [1, 165] }, { 33: [1, 166] }, { 39: 167, 43: $Vd, 44: $Ve, 45: $Vf }, { 33: [1, 168] }, o($V9, [2, 43], { 35: [1, 169] }), o($V9, [2, 44], { 38: [1, 170] }), o($V9, [2, 42], { 32: [1, 171] }), o($V9, [2, 45], { 35: [1, 172] }), o($V9, [2, 40], { 38: [1, 173] }), o($V9, [2, 41], { 32: [1, 174] }), { 33: [1, 175], 36: [1, 176] }, { 33: [1, 177] }, { 33: [1, 178] }, { 33: [1, 179] }, { 33: [1, 180] }, o($V9, [2, 66], { 42: [1, 181] }), o($V9, [2, 79], { 32: [1, 182] }), o($V9, [2, 67], { 42: [1, 183] }), o($V9, [2, 90], { 38: [1, 184] }), o($V9, [2, 80], { 32: [1, 185] }), o($V9, [2, 89], { 38: [1, 186] }), o($V9, [2, 65], { 42: [1, 187] }), o($V9, [2, 78], { 32: [1, 188] }), o($V9, [2, 64], { 42: [1, 189] }), o($V9, [2, 84], { 35: [1, 190] }), o($V9, [2, 77], { 32: [1, 191] }), o($V9, [2, 83], { 35: [1, 192] }), o($V9, [2, 63], { 42: [1, 193] }), o($V9, [2, 91], { 38: [1, 194] }), o($V9, [2, 62], { 42: [1, 195] }), o($V9, [2, 85], { 35: [1, 196] }), o($V9, [2, 86], { 35: [1, 197] }), o($V9, [2, 92], { 38: [1, 198] }), o($V9, [2, 76], { 32: [1, 199] }), o($V9, [2, 87], { 38: [1, 200] }), o($V9, [2, 75], { 32: [1, 201] }), o($V9, [2, 81], { 35: [1, 202] }), o($V9, [2, 82], { 35: [1, 203] }), o($V9, [2, 88], { 38: [1, 204] }), { 33: [1, 205] }, { 39: 206, 43: $Vd, 44: $Ve, 45: $Vf }, { 33: [1, 207] }, { 33: [1, 208] }, { 39: 209, 43: $Vd, 44: $Ve, 45: $Vf }, { 33: [1, 210] }, o($V9, [2, 27]), o($V9, [2, 32]), o($V9, [2, 28]), o($V9, [2, 33]), o($V9, [2, 34]), o($V9, [2, 35]), { 33: [1, 211] }, { 33: [1, 212] }, { 33: [1, 213] }, { 39: 214, 43: $Vd, 44: $Ve, 45: $Vf }, { 33: [1, 215] }, { 39: 216, 43: $Vd, 44: $Ve, 45: $Vf }, { 33: [1, 217] }, { 33: [1, 218] }, { 33: [1, 219] }, { 33: [1, 220] }, { 33: [1, 221] }, { 33: [1, 222] }, { 33: [1, 223] }, { 39: 224, 43: $Vd, 44: $Ve, 45: $Vf }, { 33: [1, 225] }, { 33: [1, 226] }, { 33: [1, 227] }, { 39: 228, 43: $Vd, 44: $Ve, 45: $Vf }, { 33: [1, 229] }, { 39: 230, 43: $Vd, 44: $Ve, 45: $Vf }, { 33: [1, 231] }, { 33: [1, 232] }, { 33: [1, 233] }, { 39: 234, 43: $Vd, 44: $Ve, 45: $Vf }, o($V9, [2, 46]), o($V9, [2, 48]), o($V9, [2, 47]), o($V9, [2, 49]), o($V9, [2, 51]), o($V9, [2, 50]), o($V9, [2, 107]), o($V9, [2, 108]), o($V9, [2, 105]), o($V9, [2, 106]), o($V9, [2, 110]), o($V9, [2, 109]), o($V9, [2, 114]), o($V9, [2, 113]), o($V9, [2, 112]), o($V9, [2, 111]), o($V9, [2, 116]), o($V9, [2, 115]), o($V9, [2, 104]), o($V9, [2, 103]), o($V9, [2, 102]), o($V9, [2, 101]), o($V9, [2, 99]), o($V9, [2, 100]), o($V9, [2, 98]), o($V9, [2, 97]), o($V9, [2, 96]), o($V9, [2, 95]), o($V9, [2, 93]), o($V9, [2, 94])],\n defaultActions: { 7: [2, 1], 13: [2, 2], 18: [2, 3], 36: [2, 4] },\n parseError: 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 },\n parse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = \"\", yylineno = 0, yyleng = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer2 = 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 lexer2.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer2;\n sharedState.yy.parser = this;\n if (typeof lexer2.yylloc == \"undefined\") {\n lexer2.yylloc = {};\n }\n var yyloc = lexer2.yylloc;\n lstack.push(yyloc);\n var ranges = lexer2.options && lexer2.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 lex() {\n var token;\n token = tstack.pop() || lexer2.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, state, action, 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 (lexer2.showPosition) {\n errStr = \"Parse error on line \" + (yylineno + 1) + \":\\n\" + lexer2.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: lexer2.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer2.yylineno,\n loc: yyloc,\n 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(lexer2.yytext);\n lstack.push(lexer2.yylloc);\n stack.push(action[1]);\n symbol = null;\n {\n yyleng = lexer2.yyleng;\n yytext = lexer2.yytext;\n yylineno = lexer2.yylineno;\n yyloc = lexer2.yylloc;\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 var lexer = function() {\n var lexer2 = {\n EOF: 1,\n parseError: 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 // resets the lexer, sets new input\n setInput: 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 // consumes and returns one char from the input\n input: 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 this._input = this._input.slice(1);\n return ch;\n },\n // unshifts one char (or a string) into the input\n unput: function(ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - 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 if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\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 ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len\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 // When called from action, caches matched text and appends it on next action\n more: function() {\n this._more = true;\n return this;\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.\n reject: 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 return this;\n },\n // retain first n characters of the match\n less: function(n) {\n this.unput(this.match.slice(n));\n },\n // displays already matched input, i.e. for error messages\n pastInput: 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 // displays upcoming input, i.e. for error messages\n upcomingInput: 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 // displays the character position where the lexing error occurred, i.e. for error messages\n showPosition: function() {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n // test the lexed token: return FALSE when not a match, otherwise return token\n test_match: function(match, indexed_rule) {\n var token, lines, backup;\n if (this.options.backtrack_lexer) {\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 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 ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length : 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 for (var k in backup) {\n this[k] = backup[k];\n }\n return false;\n }\n return false;\n },\n // return next match in input\n next: function() {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n var token, match, tempMatch, 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;\n } else {\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 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 // return next match that has a token\n lex: function lex() {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\n begin: function begin(condition) {\n this.conditionStack.push(condition);\n },\n // pop the previously active lexer condition state off the condition stack\n popState: 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 // 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 // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\n topState: 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 // alias for begin(condition)\n pushState: function pushState(condition) {\n this.begin(condition);\n },\n // return the number of states currently on the stack\n stateStackSize: function stateStackSize() {\n return this.conditionStack.length;\n },\n options: { \"case-insensitive\": true },\n performAction: function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) {\n switch ($avoiding_name_collisions) {\n case 0:\n this.begin(\"acc_title\");\n return 19;\n case 1:\n this.popState();\n return \"acc_title_value\";\n case 2:\n this.begin(\"acc_descr\");\n return 21;\n case 3:\n this.popState();\n return \"acc_descr_value\";\n case 4:\n this.begin(\"acc_descr_multiline\");\n break;\n case 5:\n this.popState();\n break;\n case 6:\n return \"acc_descr_multiline_value\";\n case 7:\n return 13;\n case 8:\n break;\n case 9:\n break;\n case 10:\n return 5;\n case 11:\n return 40;\n case 12:\n return 32;\n case 13:\n return 38;\n case 14:\n return 42;\n case 15:\n return 43;\n case 16:\n return 44;\n case 17:\n return 45;\n case 18:\n return 35;\n case 19:\n return 28;\n case 20:\n return 29;\n case 21:\n return 37;\n case 22:\n return 31;\n case 23:\n return 34;\n case 24:\n return 26;\n case 25:\n return 9;\n case 26:\n return 9;\n case 27:\n return 8;\n case 28:\n return \"CARET\";\n case 29:\n this.begin(\"options\");\n break;\n case 30:\n this.popState();\n break;\n case 31:\n return 12;\n case 32:\n return 36;\n case 33:\n this.begin(\"string\");\n break;\n case 34:\n this.popState();\n break;\n case 35:\n return 33;\n case 36:\n return 30;\n case 37:\n return 46;\n case 38:\n return 7;\n }\n },\n rules: [/^(?:accTitle\\s*:\\s*)/i, /^(?:(?!\\n||)*[^\\n]*)/i, /^(?:accDescr\\s*:\\s*)/i, /^(?:(?!\\n||)*[^\\n]*)/i, /^(?:accDescr\\s*\\{\\s*)/i, /^(?:[\\}])/i, /^(?:[^\\}]*)/i, /^(?:(\\r?\\n)+)/i, /^(?:#[^\\n]*)/i, /^(?:%[^\\n]*)/i, /^(?:gitGraph\\b)/i, /^(?:commit(?=\\s|$))/i, /^(?:id:)/i, /^(?:type:)/i, /^(?:msg:)/i, /^(?:NORMAL\\b)/i, /^(?:REVERSE\\b)/i, /^(?:HIGHLIGHT\\b)/i, /^(?:tag:)/i, /^(?:branch(?=\\s|$))/i, /^(?:order:)/i, /^(?:merge(?=\\s|$))/i, /^(?:cherry-pick(?=\\s|$))/i, /^(?:parent:)/i, /^(?:checkout(?=\\s|$))/i, /^(?:LR\\b)/i, /^(?:TB\\b)/i, /^(?::)/i, /^(?:\\^)/i, /^(?:options\\r?\\n)/i, /^(?:[ \\r\\n\\t]+end\\b)/i, /^(?:[\\s\\S]+(?=[ \\r\\n\\t]+end))/i, /^(?:[\"][\"])/i, /^(?:[\"])/i, /^(?:[\"])/i, /^(?:[^\"]*)/i, /^(?:[0-9]+(?=\\s|$))/i, /^(?:\\w([-\\./\\w]*[-\\w])?)/i, /^(?:$)/i, /^(?:\\s+)/i],\n conditions: { \"acc_descr_multiline\": { \"rules\": [5, 6], \"inclusive\": false }, \"acc_descr\": { \"rules\": [3], \"inclusive\": false }, \"acc_title\": { \"rules\": [1], \"inclusive\": false }, \"options\": { \"rules\": [30, 31], \"inclusive\": false }, \"string\": { \"rules\": [34, 35], \"inclusive\": false }, \"INITIAL\": { \"rules\": [0, 2, 4, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 32, 33, 36, 37, 38, 39], \"inclusive\": true } }\n };\n return lexer2;\n }();\n parser2.lexer = lexer;\n function Parser() {\n this.yy = {};\n }\n Parser.prototype = parser2;\n parser2.Parser = Parser;\n return new Parser();\n}();\nparser.parser = parser;\nconst gitGraphParser = parser;\nlet mainBranchName = getConfig().gitGraph.mainBranchName;\nlet mainBranchOrder = getConfig().gitGraph.mainBranchOrder;\nlet commits = {};\nlet head = null;\nlet branchesConfig = {};\nbranchesConfig[mainBranchName] = { name: mainBranchName, order: mainBranchOrder };\nlet branches = {};\nbranches[mainBranchName] = head;\nlet curBranch = mainBranchName;\nlet direction = \"LR\";\nlet seq = 0;\nfunction getId() {\n return random({ length: 7 });\n}\nfunction uniqBy(list, fn) {\n const recordMap = /* @__PURE__ */ 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}\nconst setDirection = function(dir2) {\n direction = dir2;\n};\nlet options = {};\nconst setOptions = function(rawOptString) {\n log.debug(\"options str\", rawOptString);\n rawOptString = rawOptString && rawOptString.trim();\n rawOptString = rawOptString || \"{}\";\n try {\n options = JSON.parse(rawOptString);\n } catch (e) {\n log.error(\"error while parsing gitGraph options\", e.message);\n }\n};\nconst getOptions = function() {\n return options;\n};\nconst commit = function(msg, id, type, tag) {\n log.debug(\"Entering commit:\", msg, id, type, tag);\n id = common.sanitizeText(id, getConfig());\n msg = common.sanitizeText(msg, getConfig());\n tag = common.sanitizeText(tag, getConfig());\n const commit2 = {\n id: id ? id : seq + \"-\" + getId(),\n message: msg,\n seq: seq++,\n type: type ? type : commitType$1.NORMAL,\n tag: tag ? tag : \"\",\n parents: head == null ? [] : [head.id],\n branch: curBranch\n };\n head = commit2;\n commits[commit2.id] = commit2;\n branches[curBranch] = commit2.id;\n log.debug(\"in pushCommit \" + commit2.id);\n};\nconst branch = function(name, order) {\n name = common.sanitizeText(name, getConfig());\n if (branches[name] === void 0) {\n branches[name] = head != null ? head.id : null;\n branchesConfig[name] = { name, order: order ? parseInt(order, 10) : null };\n checkout(name);\n log.debug(\"in createBranch\");\n } else {\n let error = new Error(\n 'Trying to create an existing branch. (Help: Either use a new name if you want create a new branch or try using \"checkout ' + name + '\")'\n );\n error.hash = {\n text: \"branch \" + name,\n token: \"branch \" + name,\n line: \"1\",\n loc: { first_line: 1, last_line: 1, first_column: 1, last_column: 1 },\n expected: ['\"checkout ' + name + '\"']\n };\n throw error;\n }\n};\nconst merge = function(otherBranch, custom_id, override_type, custom_tag) {\n otherBranch = common.sanitizeText(otherBranch, getConfig());\n custom_id = common.sanitizeText(custom_id, getConfig());\n const currentCommit = commits[branches[curBranch]];\n const otherCommit = commits[branches[otherBranch]];\n if (curBranch === otherBranch) {\n let error = new Error('Incorrect usage of \"merge\". Cannot merge a branch to itself');\n error.hash = {\n text: \"merge \" + otherBranch,\n token: \"merge \" + otherBranch,\n line: \"1\",\n loc: { first_line: 1, last_line: 1, first_column: 1, last_column: 1 },\n expected: [\"branch abc\"]\n };\n throw error;\n } else if (currentCommit === void 0 || !currentCommit) {\n let error = new Error(\n 'Incorrect usage of \"merge\". Current branch (' + curBranch + \")has no commits\"\n );\n error.hash = {\n text: \"merge \" + otherBranch,\n token: \"merge \" + otherBranch,\n line: \"1\",\n loc: { first_line: 1, last_line: 1, first_column: 1, last_column: 1 },\n expected: [\"commit\"]\n };\n throw error;\n } else if (branches[otherBranch] === void 0) {\n let error = new Error(\n 'Incorrect usage of \"merge\". Branch to be merged (' + otherBranch + \") does not exist\"\n );\n error.hash = {\n text: \"merge \" + otherBranch,\n token: \"merge \" + otherBranch,\n line: \"1\",\n loc: { first_line: 1, last_line: 1, first_column: 1, last_column: 1 },\n expected: [\"branch \" + otherBranch]\n };\n throw error;\n } else if (otherCommit === void 0 || !otherCommit) {\n let error = new Error(\n 'Incorrect usage of \"merge\". Branch to be merged (' + otherBranch + \") has no commits\"\n );\n error.hash = {\n text: \"merge \" + otherBranch,\n token: \"merge \" + otherBranch,\n line: \"1\",\n loc: { first_line: 1, last_line: 1, first_column: 1, last_column: 1 },\n expected: ['\"commit\"']\n };\n throw error;\n } else if (currentCommit === otherCommit) {\n let error = new Error('Incorrect usage of \"merge\". Both branches have same head');\n error.hash = {\n text: \"merge \" + otherBranch,\n token: \"merge \" + otherBranch,\n line: \"1\",\n loc: { first_line: 1, last_line: 1, first_column: 1, last_column: 1 },\n expected: [\"branch abc\"]\n };\n throw error;\n } else if (custom_id && commits[custom_id] !== void 0) {\n let error = new Error(\n 'Incorrect usage of \"merge\". Commit with id:' + custom_id + \" already exists, use different custom Id\"\n );\n error.hash = {\n text: \"merge \" + otherBranch + custom_id + override_type + custom_tag,\n token: \"merge \" + otherBranch + custom_id + override_type + custom_tag,\n line: \"1\",\n loc: { first_line: 1, last_line: 1, first_column: 1, last_column: 1 },\n expected: [\n \"merge \" + otherBranch + \" \" + custom_id + \"_UNIQUE \" + override_type + \" \" + custom_tag\n ]\n };\n throw error;\n }\n const commit2 = {\n id: custom_id ? custom_id : seq + \"-\" + getId(),\n message: \"merged branch \" + otherBranch + \" into \" + curBranch,\n seq: seq++,\n parents: [head == null ? null : head.id, branches[otherBranch]],\n branch: curBranch,\n type: commitType$1.MERGE,\n customType: override_type,\n customId: custom_id ? true : false,\n tag: custom_tag ? custom_tag : \"\"\n };\n head = commit2;\n commits[commit2.id] = commit2;\n branches[curBranch] = commit2.id;\n log.debug(branches);\n log.debug(\"in mergeBranch\");\n};\nconst cherryPick = function(sourceId, targetId, tag, parentCommitId) {\n log.debug(\"Entering cherryPick:\", sourceId, targetId, tag);\n sourceId = common.sanitizeText(sourceId, getConfig());\n targetId = common.sanitizeText(targetId, getConfig());\n tag = common.sanitizeText(tag, getConfig());\n parentCommitId = common.sanitizeText(parentCommitId, getConfig());\n if (!sourceId || commits[sourceId] === void 0) {\n let error = new Error(\n 'Incorrect usage of \"cherryPick\". Source commit id should exist and provided'\n );\n error.hash = {\n text: \"cherryPick \" + sourceId + \" \" + targetId,\n token: \"cherryPick \" + sourceId + \" \" + targetId,\n line: \"1\",\n loc: { first_line: 1, last_line: 1, first_column: 1, last_column: 1 },\n expected: [\"cherry-pick abc\"]\n };\n throw error;\n }\n let sourceCommit = commits[sourceId];\n let sourceCommitBranch = sourceCommit.branch;\n if (parentCommitId && !(Array.isArray(sourceCommit.parents) && sourceCommit.parents.includes(parentCommitId))) {\n let error = new Error(\n \"Invalid operation: The specified parent commit is not an immediate parent of the cherry-picked commit.\"\n );\n throw error;\n }\n if (sourceCommit.type === commitType$1.MERGE && !parentCommitId) {\n let error = new Error(\n \"Incorrect usage of cherry-pick: If the source commit is a merge commit, an immediate parent commit must be specified.\"\n );\n throw error;\n }\n if (!targetId || commits[targetId] === void 0) {\n if (sourceCommitBranch === curBranch) {\n let error = new Error(\n 'Incorrect usage of \"cherryPick\". Source commit is already on current branch'\n );\n error.hash = {\n text: \"cherryPick \" + sourceId + \" \" + targetId,\n token: \"cherryPick \" + sourceId + \" \" + targetId,\n line: \"1\",\n loc: { first_line: 1, last_line: 1, first_column: 1, last_column: 1 },\n expected: [\"cherry-pick abc\"]\n };\n throw error;\n }\n const currentCommit = commits[branches[curBranch]];\n if (currentCommit === void 0 || !currentCommit) {\n let error = new Error(\n 'Incorrect usage of \"cherry-pick\". Current branch (' + curBranch + \")has no commits\"\n );\n error.hash = {\n text: \"cherryPick \" + sourceId + \" \" + targetId,\n token: \"cherryPick \" + sourceId + \" \" + targetId,\n line: \"1\",\n loc: { first_line: 1, last_line: 1, first_column: 1, last_column: 1 },\n expected: [\"cherry-pick abc\"]\n };\n throw error;\n }\n const commit2 = {\n id: seq + \"-\" + getId(),\n message: \"cherry-picked \" + sourceCommit + \" into \" + curBranch,\n seq: seq++,\n parents: [head == null ? null : head.id, sourceCommit.id],\n branch: curBranch,\n type: commitType$1.CHERRY_PICK,\n tag: tag ?? `cherry-pick:${sourceCommit.id}${sourceCommit.type === commitType$1.MERGE ? `|parent:${parentCommitId}` : \"\"}`\n };\n head = commit2;\n commits[commit2.id] = commit2;\n branches[curBranch] = commit2.id;\n log.debug(branches);\n log.debug(\"in cherryPick\");\n }\n};\nconst checkout = function(branch2) {\n branch2 = common.sanitizeText(branch2, getConfig());\n if (branches[branch2] === void 0) {\n let error = new Error(\n 'Trying to checkout branch which is not yet created. (Help try using \"branch ' + branch2 + '\")'\n );\n error.hash = {\n text: \"checkout \" + branch2,\n token: \"checkout \" + branch2,\n line: \"1\",\n loc: { first_line: 1, last_line: 1, first_column: 1, last_column: 1 },\n expected: ['\"branch ' + branch2 + '\"']\n };\n throw error;\n } else {\n curBranch = branch2;\n const id = branches[curBranch];\n head = commits[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}\nfunction prettyPrintCommitHistory(commitArr) {\n const commit2 = commitArr.reduce((out, commit3) => {\n if (out.seq > commit3.seq) {\n return out;\n }\n return commit3;\n }, commitArr[0]);\n let line = \"\";\n commitArr.forEach(function(c) {\n if (c === commit2) {\n line += \"\t*\";\n } else {\n line += \"\t|\";\n }\n });\n const label = [line, commit2.id, commit2.seq];\n for (let branch2 in branches) {\n if (branches[branch2] === commit2.id) {\n label.push(branch2);\n }\n }\n log.debug(label.join(\" \"));\n if (commit2.parents && commit2.parents.length == 2) {\n const newCommit = commits[commit2.parents[0]];\n upsert(commitArr, commit2, newCommit);\n commitArr.push(commits[commit2.parents[1]]);\n } else if (commit2.parents.length == 0) {\n return;\n } else {\n const nextCommit = commits[commit2.parents];\n upsert(commitArr, commit2, nextCommit);\n }\n commitArr = uniqBy(commitArr, (c) => c.id);\n prettyPrintCommitHistory(commitArr);\n}\nconst prettyPrint = function() {\n log.debug(commits);\n const node = getCommitsArray()[0];\n prettyPrintCommitHistory([node]);\n};\nconst clear$1 = function() {\n commits = {};\n head = null;\n let mainBranch = getConfig().gitGraph.mainBranchName;\n let mainBranchOrder2 = getConfig().gitGraph.mainBranchOrder;\n branches = {};\n branches[mainBranch] = null;\n branchesConfig = {};\n branchesConfig[mainBranch] = { name: mainBranch, order: mainBranchOrder2 };\n curBranch = mainBranch;\n seq = 0;\n clear$2();\n};\nconst getBranchesAsObjArray = function() {\n const branchesArray = Object.values(branchesConfig).map((branchConfig, i) => {\n if (branchConfig.order !== null) {\n return branchConfig;\n }\n return {\n ...branchConfig,\n order: parseFloat(`0.${i}`, 10)\n };\n }).sort((a, b) => a.order - b.order).map(({ name }) => ({ name }));\n return branchesArray;\n};\nconst getBranches = function() {\n return branches;\n};\nconst getCommits = function() {\n return commits;\n};\nconst getCommitsArray = function() {\n const commitArr = Object.keys(commits).map(function(key) {\n return commits[key];\n });\n commitArr.forEach(function(o) {\n log.debug(o.id);\n });\n commitArr.sort((a, b) => a.seq - b.seq);\n return commitArr;\n};\nconst getCurrentBranch = function() {\n return curBranch;\n};\nconst getDirection = function() {\n return direction;\n};\nconst getHead = function() {\n return head;\n};\nconst commitType$1 = {\n NORMAL: 0,\n REVERSE: 1,\n HIGHLIGHT: 2,\n MERGE: 3,\n CHERRY_PICK: 4\n};\nconst gitGraphDb = {\n getConfig: () => getConfig().gitGraph,\n setDirection,\n setOptions,\n getOptions,\n commit,\n branch,\n merge,\n cherryPick,\n checkout,\n //reset,\n prettyPrint,\n clear: clear$1,\n getBranchesAsObjArray,\n getBranches,\n getCommits,\n getCommitsArray,\n getCurrentBranch,\n getDirection,\n getHead,\n setAccTitle,\n getAccTitle,\n getAccDescription,\n setAccDescription,\n setDiagramTitle,\n getDiagramTitle,\n commitType: commitType$1\n};\nlet allCommitsDict = {};\nconst commitType = {\n NORMAL: 0,\n REVERSE: 1,\n HIGHLIGHT: 2,\n MERGE: 3,\n CHERRY_PICK: 4\n};\nconst THEME_COLOR_LIMIT = 8;\nlet branchPos = {};\nlet commitPos = {};\nlet lanes = [];\nlet maxPos = 0;\nlet dir = \"LR\";\nconst clear = () => {\n branchPos = {};\n commitPos = {};\n allCommitsDict = {};\n maxPos = 0;\n lanes = [];\n dir = \"LR\";\n};\nconst drawText = (txt) => {\n const svgLabel = document.createElementNS(\"http://www.w3.org/2000/svg\", \"text\");\n let rows = [];\n if (typeof txt === \"string\") {\n rows = txt.split(/\\\\n|\\n|<br\\s*\\/?>/gi);\n } else if (Array.isArray(txt)) {\n rows = txt;\n } else {\n rows = [];\n }\n for (const row of rows) {\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 tspan.setAttribute(\"class\", \"row\");\n tspan.textContent = row.trim();\n svgLabel.appendChild(tspan);\n }\n return svgLabel;\n};\nconst findClosestParent = (parents) => {\n let closestParent = \"\";\n let maxPosition = 0;\n parents.forEach((parent) => {\n const parentPosition = dir === \"TB\" ? commitPos[parent].y : commitPos[parent].x;\n if (parentPosition >= maxPosition) {\n closestParent = parent;\n maxPosition = parentPosition;\n }\n });\n return closestParent || void 0;\n};\nconst drawCommits = (svg, commits2, modifyGraph) => {\n const gitGraphConfig = getConfig().gitGraph;\n const gBullets = svg.append(\"g\").attr(\"class\", \"commit-bullets\");\n const gLabels = svg.append(\"g\").attr(\"class\", \"commit-labels\");\n let pos = 0;\n if (dir === \"TB\") {\n pos = 30;\n }\n const keys = Object.keys(commits2);\n const sortedKeys = keys.sort((a, b) => {\n return commits2[a].seq - commits2[b].seq;\n });\n const isParallelCommits = gitGraphConfig.parallelCommits;\n const layoutOffset = 10;\n const commitStep = 40;\n sortedKeys.forEach((key) => {\n const commit2 = commits2[key];\n if (isParallelCommits) {\n if (commit2.parents.length) {\n const closestParent = findClosestParent(commit2.parents);\n pos = dir === \"TB\" ? commitPos[closestParent].y + commitStep : commitPos[closestParent].x + commitStep;\n } else {\n pos = 0;\n if (dir === \"TB\") {\n pos = 30;\n }\n }\n }\n const posWithOffset = pos + layoutOffset;\n const y = dir === \"TB\" ? posWithOffset : branchPos[commit2.branch].pos;\n const x = dir === \"TB\" ? branchPos[commit2.branch].pos : posWithOffset;\n if (modifyGraph) {\n let typeClass;\n let commitSymbolType = commit2.customType !== void 0 && commit2.customType !== \"\" ? commit2.customType : commit2.type;\n switch (commitSymbolType) {\n case commitType.NORMAL:\n typeClass = \"commit-normal\";\n break;\n case commitType.REVERSE:\n typeClass = \"commit-reverse\";\n break;\n case commitType.HIGHLIGHT:\n typeClass = \"commit-highlight\";\n break;\n case commitType.MERGE:\n typeClass = \"commit-merge\";\n break;\n case commitType.CHERRY_PICK:\n typeClass = \"commit-cherry-pick\";\n break;\n default:\n typeClass = \"commit-normal\";\n }\n if (commitSymbolType === commitType.HIGHLIGHT) {\n const circle = gBullets.append(\"rect\");\n circle.attr(\"x\", x - 10);\n circle.attr(\"y\", y - 10);\n circle.attr(\"height\", 20);\n circle.attr(\"width\", 20);\n circle.attr(\n \"class\",\n `commit ${commit2.id} commit-highlight${branchPos[commit2.branch].index % THEME_COLOR_LIMIT} ${typeClass}-outer`\n );\n gBullets.append(\"rect\").attr(\"x\", x - 6).attr(\"y\", y - 6).attr(\"height\", 12).attr(\"width\", 12).attr(\n \"class\",\n `commit ${commit2.id} commit${branchPos[commit2.branch].index % THEME_COLOR_LIMIT} ${typeClass}-inner`\n );\n } else if (commitSymbolType === commitType.CHERRY_PICK) {\n gBullets.append(\"circle\").attr(\"cx\", x).attr(\"cy\", y).attr(\"r\", 10).attr(\"class\", `commit ${commit2.id} ${typeClass}`);\n gBullets.append(\"circle\").attr(\"cx\", x - 3).attr(\"cy\", y + 2).attr(\"r\", 2.75).attr(\"fill\", \"#fff\").attr(\"class\", `commit ${commit2.id} ${typeClass}`);\n gBullets.append(\"circle\").attr(\"cx\", x + 3).attr(\"cy\", y + 2).attr(\"r\", 2.75).attr(\"fill\", \"#fff\").attr(\"class\", `commit ${commit2.id} ${typeClass}`);\n gBullets.append(\"line\").attr(\"x1\", x + 3).attr(\"y1\", y + 1).attr(\"x2\", x).attr(\"y2\", y - 5).attr(\"stroke\", \"#fff\").attr(\"class\", `commit ${commit2.id} ${typeClass}`);\n gBullets.append(\"line\").attr(\"x1\", x - 3).attr(\"y1\", y + 1).attr(\"x2\", x).attr(\"y2\", y - 5).attr(\"stroke\", \"#fff\").attr(\"class\", `commit ${commit2.id} ${typeClass}`);\n } else {\n const circle = gBullets.append(\"circle\");\n circle.attr(\"cx\", x);\n circle.attr(\"cy\", y);\n circle.attr(\"r\", commit2.type === commitType.MERGE ? 9 : 10);\n circle.attr(\n \"class\",\n `commit ${commit2.id} commit${branchPos[commit2.branch].index % THEME_COLOR_LIMIT}`\n );\n if (commitSymbolType === commitType.MERGE) {\n const circle2 = gBullets.append(\"circle\");\n circle2.attr(\"cx\", x);\n circle2.attr(\"cy\", y);\n circle2.attr(\"r\", 6);\n circle2.attr(\n \"class\",\n `commit ${typeClass} ${commit2.id} commit${branchPos[commit2.branch].index % THEME_COLOR_LIMIT}`\n );\n }\n if (commitSymbolType === commitType.REVERSE) {\n const cross = gBullets.append(\"path\");\n cross.attr(\"d\", `M ${x - 5},${y - 5}L${x + 5},${y + 5}M${x - 5},${y + 5}L${x + 5},${y - 5}`).attr(\n \"class\",\n `commit ${typeClass} ${commit2.id} commit${branchPos[commit2.branch].index % THEME_COLOR_LIMIT}`\n );\n }\n }\n }\n if (dir === \"TB\") {\n commitPos[commit2.id] = { x, y: posWithOffset };\n } else {\n commitPos[commit2.id] = { x: posWithOffset, y };\n }\n if (modifyGraph) {\n const px = 4;\n const py = 2;\n if (commit2.type !== commitType.CHERRY_PICK && (commit2.customId && commit2.type === commitType.MERGE || commit2.type !== commitType.MERGE) && gitGraphConfig.showCommitLabel) {\n const wrapper = gLabels.append(\"g\");\n const labelBkg = wrapper.insert(\"rect\").attr(\"class\", \"commit-label-bkg\");\n const text = wrapper.append(\"text\").attr(\"x\", pos).attr(\"y\", y + 25).attr(\"class\", \"commit-label\").text(commit2.id);\n let bbox = text.node().getBBox();\n labelBkg.attr(\"x\", posWithOffset - bbox.width / 2 - py).attr(\"y\", y + 13.5).attr(\"width\", bbox.width + 2 * py).attr(\"height\", bbox.height + 2 * py);\n if (dir === \"TB\") {\n labelBkg.attr(\"x\", x - (bbox.width + 4 * px + 5)).attr(\"y\", y - 12);\n text.attr(\"x\", x - (bbox.width + 4 * px)).attr(\"y\", y + bbox.height - 12);\n }\n if (dir !== \"TB\") {\n text.attr(\"x\", posWithOffset - bbox.width / 2);\n }\n if (gitGraphConfig.rotateCommitLabel) {\n if (dir === \"TB\") {\n text.attr(\"transform\", \"rotate(-45, \" + x + \", \" + y + \")\");\n labelBkg.attr(\"transform\", \"rotate(-45, \" + x + \", \" + y + \")\");\n } else {\n let r_x = -7.5 - (bbox.width + 10) / 25 * 9.5;\n let r_y = 10 + bbox.width / 25 * 8.5;\n wrapper.attr(\n \"transform\",\n \"translate(\" + r_x + \", \" + r_y + \") rotate(-45, \" + pos + \", \" + y + \")\"\n );\n }\n }\n }\n if (commit2.tag) {\n const rect = gLabels.insert(\"polygon\");\n const hole = gLabels.append(\"circle\");\n const tag = gLabels.append(\"text\").attr(\"y\", y - 16).attr(\"class\", \"tag-label\").text(commit2.tag);\n let tagBbox = tag.node().getBBox();\n tag.attr(\"x\", posWithOffset - tagBbox.width / 2);\n const h2 = tagBbox.height / 2;\n const ly = y - 19.2;\n rect.attr(\"class\", \"tag-label-bkg\").attr(\n \"points\",\n `\n ${pos - tagBbox.width / 2 - px / 2},${ly + py}\n ${pos - tagBbox.width / 2 - px / 2},${ly - py}\n ${posWithOffset - tagBbox.width / 2 - px},${ly - h2 - py}\n ${posWithOffset + tagBbox.width / 2 + px},${ly - h2 - py}\n ${posWithOffset + tagBbox.width / 2 + px},${ly + h2 + py}\n ${posWithOffset - tagBbox.width / 2 - px},${ly + h2 + py}`\n );\n hole.attr(\"cx\", pos - tagBbox.width / 2 + px / 2).attr(\"cy\", ly).attr(\"r\", 1.5).attr(\"class\", \"tag-hole\");\n if (dir === \"TB\") {\n rect.attr(\"class\", \"tag-label-bkg\").attr(\n \"points\",\n `\n ${x},${pos + py}\n ${x},${pos - py}\n ${x + layoutOffset},${pos - h2 - py}\n ${x + layoutOffset + tagBbox.width + px},${pos - h2 - py}\n ${x + layoutOffset + tagBbox.width + px},${pos + h2 + py}\n ${x + layoutOffset},${pos + h2 + py}`\n ).attr(\"transform\", \"translate(12,12) rotate(45, \" + x + \",\" + pos + \")\");\n hole.attr(\"cx\", x + px / 2).attr(\"cy\", pos).attr(\"transform\", \"translate(12,12) rotate(45, \" + x + \",\" + pos + \")\");\n tag.attr(\"x\", x + 5).attr(\"y\", pos + 3).attr(\"transform\", \"translate(14,14) rotate(45, \" + x + \",\" + pos + \")\");\n }\n }\n }\n pos += commitStep + layoutOffset;\n if (pos > maxPos) {\n maxPos = pos;\n }\n });\n};\nconst shouldRerouteArrow = (commitA, commitB, p1, p2, allCommits) => {\n const commitBIsFurthest = dir === \"TB\" ? p1.x < p2.x : p1.y < p2.y;\n const branchToGetCurve = commitBIsFurthest ? commitB.branch : commitA.branch;\n const isOnBranchToGetCurve = (x) => x.branch === branchToGetCurve;\n const isBetweenCommits = (x) => x.seq > commitA.seq && x.seq < commitB.seq;\n return Object.values(allCommits).some((commitX) => {\n return isBetweenCommits(commitX) && isOnBranchToGetCurve(commitX);\n });\n};\nconst findLane = (y1, y2, depth = 0) => {\n const candidate = y1 + Math.abs(y1 - y2) / 2;\n if (depth > 5) {\n return candidate;\n }\n let ok = lanes.every((lane) => Math.abs(lane - candidate) >= 10);\n if (ok) {\n lanes.push(candidate);\n return candidate;\n }\n const diff = Math.abs(y1 - y2);\n return findLane(y1, y2 - diff / 5, depth + 1);\n};\nconst drawArrow = (svg, commitA, commitB, allCommits) => {\n const p1 = commitPos[commitA.id];\n const p2 = commitPos[commitB.id];\n const arrowNeedsRerouting = shouldRerouteArrow(commitA, commitB, p1, p2, allCommits);\n let arc = \"\";\n let arc2 = \"\";\n let radius = 0;\n let offset = 0;\n let colorClassNum = branchPos[commitB.branch].index;\n if (commitB.type === commitType.MERGE && commitA.id !== commitB.parents[0]) {\n colorClassNum = branchPos[commitA.branch].index;\n }\n let lineDef;\n if (arrowNeedsRerouting) {\n arc = \"A 10 10, 0, 0, 0,\";\n arc2 = \"A 10 10, 0, 0, 1,\";\n radius = 10;\n offset = 10;\n const lineY = p1.y < p2.y ? findLane(p1.y, p2.y) : findLane(p2.y, p1.y);\n const lineX = p1.x < p2.x ? findLane(p1.x, p2.x) : findLane(p2.x, p1.x);\n if (dir === \"TB\") {\n if (p1.x < p2.x) {\n lineDef = `M ${p1.x} ${p1.y} L ${lineX - radius} ${p1.y} ${arc2} ${lineX} ${p1.y + offset} L ${lineX} ${p2.y - radius} ${arc} ${lineX + offset} ${p2.y} L ${p2.x} ${p2.y}`;\n } else {\n colorClassNum = branchPos[commitA.branch].index;\n lineDef = `M ${p1.x} ${p1.y} L ${lineX + radius} ${p1.y} ${arc} ${lineX} ${p1.y + offset} L ${lineX} ${p2.y - radius} ${arc2} ${lineX - offset} ${p2.y} L ${p2.x} ${p2.y}`;\n }\n } else {\n if (p1.y < p2.y) {\n lineDef = `M ${p1.x} ${p1.y} L ${p1.x} ${lineY - radius} ${arc} ${p1.x + offset} ${lineY} L ${p2.x - radius} ${lineY} ${arc2} ${p2.x} ${lineY + offset} L ${p2.x} ${p2.y}`;\n } else {\n colorClassNum = branchPos[commitA.branch].index;\n lineDef = `M ${p1.x} ${p1.y} L ${p1.x} ${lineY + radius} ${arc2} ${p1.x + offset} ${lineY} L ${p2.x - radius} ${lineY} ${arc} ${p2.x} ${lineY - offset} L ${p2.x} ${p2.y}`;\n }\n }\n } else {\n arc = \"A 20 20, 0, 0, 0,\";\n arc2 = \"A 20 20, 0, 0, 1,\";\n radius = 20;\n offset = 20;\n if (dir === \"TB\") {\n if (p1.x < p2.x) {\n if (commitB.type === commitType.MERGE && commitA.id !== commitB.parents[0]) {\n lineDef = `M ${p1.x} ${p1.y} L ${p1.x} ${p2.y - radius} ${arc} ${p1.x + offset} ${p2.y} L ${p2.x} ${p2.y}`;\n } else {\n lineDef = `M ${p1.x} ${p1.y} L ${p2.x - radius} ${p1.y} ${arc2} ${p2.x} ${p1.y + offset} L ${p2.x} ${p2.y}`;\n }\n }\n if (p1.x > p2.x) {\n arc = \"A 20 20, 0, 0, 0,\";\n arc2 = \"A 20 20, 0, 0, 1,\";\n radius = 20;\n offset = 20;\n if (commitB.type === commitType.MERGE && commitA.id !== commitB.parents[0]) {\n lineDef = `M ${p1.x} ${p1.y} L ${p1.x} ${p2.y - radius} ${arc2} ${p1.x - offset} ${p2.y} L ${p2.x} ${p2.y}`;\n } else {\n lineDef = `M ${p1.x} ${p1.y} L ${p2.x + radius} ${p1.y} ${arc} ${p2.x} ${p1.y + offset} L ${p2.x} ${p2.y}`;\n }\n }\n if (p1.x === p2.x) {\n lineDef = `M ${p1.x} ${p1.y} L ${p2.x} ${p2.y}`;\n }\n } else {\n if (p1.y < p2.y) {\n if (commitB.type === commitType.MERGE && commitA.id !== commitB.parents[0]) {\n lineDef = `M ${p1.x} ${p1.y} L ${p2.x - radius} ${p1.y} ${arc2} ${p2.x} ${p1.y + offset} L ${p2.x} ${p2.y}`;\n } else {\n lineDef = `M ${p1.x} ${p1.y} L ${p1.x} ${p2.y - radius} ${arc} ${p1.x + offset} ${p2.y} L ${p2.x} ${p2.y}`;\n }\n }\n if (p1.y > p2.y) {\n if (commitB.type === commitType.MERGE && commitA.id !== commitB.parents[0]) {\n lineDef = `M ${p1.x} ${p1.y} L ${p2.x - radius} ${p1.y} ${arc} ${p2.x} ${p1.y - offset} L ${p2.x} ${p2.y}`;\n } else {\n lineDef = `M ${p1.x} ${p1.y} L ${p1.x} ${p2.y + radius} ${arc2} ${p1.x + offset} ${p2.y} L ${p2.x} ${p2.y}`;\n }\n }\n if (p1.y === p2.y) {\n lineDef = `M ${p1.x} ${p1.y} L ${p2.x} ${p2.y}`;\n }\n }\n }\n svg.append(\"path\").attr(\"d\", lineDef).attr(\"class\", \"arrow arrow\" + colorClassNum % THEME_COLOR_LIMIT);\n};\nconst drawArrows = (svg, commits2) => {\n const gArrows = svg.append(\"g\").attr(\"class\", \"commit-arrows\");\n Object.keys(commits2).forEach((key) => {\n const commit2 = commits2[key];\n if (commit2.parents && commit2.parents.length > 0) {\n commit2.parents.forEach((parent) => {\n drawArrow(gArrows, commits2[parent], commit2, commits2);\n });\n }\n });\n};\nconst drawBranches = (svg, branches2) => {\n const gitGraphConfig = getConfig().gitGraph;\n const g = svg.append(\"g\");\n branches2.forEach((branch2, index) => {\n const adjustIndexForTheme = index % THEME_COLOR_LIMIT;\n const pos = branchPos[branch2.name].pos;\n const line = g.append(\"line\");\n line.attr(\"x1\", 0);\n line.attr(\"y1\", pos);\n line.attr(\"x2\", maxPos);\n line.attr(\"y2\", pos);\n line.attr(\"class\", \"branch branch\" + adjustIndexForTheme);\n if (dir === \"TB\") {\n line.attr(\"y1\", 30);\n line.attr(\"x1\", pos);\n line.attr(\"y2\", maxPos);\n line.attr(\"x2\", pos);\n }\n lanes.push(pos);\n let name = branch2.name;\n const labelElement = drawText(name);\n const bkg = g.insert(\"rect\");\n const branchLabel = g.insert(\"g\").attr(\"class\", \"branchLabel\");\n const label = branchLabel.insert(\"g\").attr(\"class\", \"label branch-label\" + adjustIndexForTheme);\n label.node().appendChild(labelElement);\n let bbox = labelElement.getBBox();\n bkg.attr(\"class\", \"branchLabelBkg label\" + adjustIndexForTheme).attr(\"rx\", 4).attr(\"ry\", 4).attr(\"x\", -bbox.width - 4 - (gitGraphConfig.rotateCommitLabel === true ? 30 : 0)).attr(\"y\", -bbox.height / 2 + 8).attr(\"width\", bbox.width + 18).attr(\"height\", bbox.height + 4);\n label.attr(\n \"transform\",\n \"translate(\" + (-bbox.width - 14 - (gitGraphConfig.rotateCommitLabel === true ? 30 : 0)) + \", \" + (pos - bbox.height / 2 - 1) + \")\"\n );\n if (dir === \"TB\") {\n bkg.attr(\"x\", pos - bbox.width / 2 - 10).attr(\"y\", 0);\n label.attr(\"transform\", \"translate(\" + (pos - bbox.width / 2 - 5) + \", 0)\");\n }\n if (dir !== \"TB\") {\n bkg.attr(\"transform\", \"translate(-19, \" + (pos - bbox.height / 2) + \")\");\n }\n });\n};\nconst draw = function(txt, id, ver, diagObj) {\n clear();\n const conf = getConfig();\n const gitGraphConfig = conf.gitGraph;\n log.debug(\"in gitgraph renderer\", txt + \"\\n\", \"id:\", id, ver);\n allCommitsDict = diagObj.db.getCommits();\n const branches2 = diagObj.db.getBranchesAsObjArray();\n dir = diagObj.db.getDirection();\n const diagram2 = select(`[id=\"${id}\"]`);\n let pos = 0;\n branches2.forEach((branch2, index) => {\n const labelElement = drawText(branch2.name);\n const g = diagram2.append(\"g\");\n const branchLabel = g.insert(\"g\").attr(\"class\", \"branchLabel\");\n const label = branchLabel.insert(\"g\").attr(\"class\", \"label branch-label\");\n label.node().appendChild(labelElement);\n let bbox = labelElement.getBBox();\n branchPos[branch2.name] = { pos, index };\n pos += 50 + (gitGraphConfig.rotateCommitLabel ? 40 : 0) + (dir === \"TB\" ? bbox.width / 2 : 0);\n label.remove();\n branchLabel.remove();\n g.remove();\n });\n drawCommits(diagram2, allCommitsDict, false);\n if (gitGraphConfig.showBranches) {\n drawBranches(diagram2, branches2);\n }\n drawArrows(diagram2, allCommitsDict);\n drawCommits(diagram2, allCommitsDict, true);\n utils.insertTitle(\n diagram2,\n \"gitTitleText\",\n gitGraphConfig.titleTopMargin,\n diagObj.db.getDiagramTitle()\n );\n setupGraphViewbox(\n void 0,\n diagram2,\n gitGraphConfig.diagramPadding,\n gitGraphConfig.useMaxWidth ?? conf.useMaxWidth\n );\n};\nconst gitGraphRenderer = {\n draw\n};\nconst getStyles = (options2) => `\n .commit-id,\n .commit-msg,\n .branch-label {\n fill: lightgrey;\n color: lightgrey;\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n }\n ${[0, 1, 2, 3, 4, 5, 6, 7].map(\n (i) => `\n .branch-label${i} { fill: ${options2[\"gitBranchLabel\" + i]}; }\n .commit${i} { stroke: ${options2[\"git\" + i]}; fill: ${options2[\"git\" + i]}; }\n .commit-highlight${i} { stroke: ${options2[\"gitInv\" + i]}; fill: ${options2[\"gitInv\" + i]}; }\n .label${i} { fill: ${options2[\"git\" + i]}; }\n .arrow${i} { stroke: ${options2[\"git\" + i]}; }\n `\n).join(\"\\n\")}\n\n .branch {\n stroke-width: 1;\n stroke: ${options2.lineColor};\n stroke-dasharray: 2;\n }\n .commit-label { font-size: ${options2.commitLabelFontSize}; fill: ${options2.commitLabelColor};}\n .commit-label-bkg { font-size: ${options2.commitLabelFontSize}; fill: ${options2.commitLabelBackground}; opacity: 0.5; }\n .tag-label { font-size: ${options2.tagLabelFontSize}; fill: ${options2.tagLabelColor};}\n .tag-label-bkg { fill: ${options2.tagLabelBackground}; stroke: ${options2.tagLabelBorder}; }\n .tag-hole { fill: ${options2.textColor}; }\n\n .commit-merge {\n stroke: ${options2.primaryColor};\n fill: ${options2.primaryColor};\n }\n .commit-reverse {\n stroke: ${options2.primaryColor};\n fill: ${options2.primaryColor};\n stroke-width: 3;\n }\n .commit-highlight-outer {\n }\n .commit-highlight-inner {\n stroke: ${options2.primaryColor};\n fill: ${options2.primaryColor};\n }\n\n .arrow { stroke-width: 8; stroke-linecap: round; fill: none}\n .gitTitleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${options2.textColor};\n }\n`;\nconst gitGraphStyles = getStyles;\nconst diagram = {\n parser: gitGraphParser,\n db: gitGraphDb,\n renderer: gitGraphRenderer,\n styles: gitGraphStyles\n};\nexport {\n diagram\n};\n","import { layout } from \"dagre-d3-es/src/dagre/index.js\";\nimport * as graphlibJson from \"dagre-d3-es/src/graphlib/json.js\";\nimport { c as createLabel, g as getSubGraphTitleMargins, i as intersectRect, a as insertMarkers, b as clear$2, d as clear$3, u as updateNodeBounds, s as setNodeElem, e as insertNode, f as insertEdgeLabel, p as positionNode, h as insertEdge, j as positionEdgeLabel } from \"./edges-d32062c0.js\";\nimport { l as log, c as getConfig, m as evaluate } from \"./mermaid-f47111a7.js\";\nimport * as graphlib from \"dagre-d3-es/src/graphlib/index.js\";\nimport { a as createText } from \"./createText-6b48ae7d.js\";\nimport { select } from \"d3\";\nlet clusterDb = {};\nlet descendants = {};\nlet parents = {};\nconst clear$1 = () => {\n descendants = {};\n parents = {};\n clusterDb = {};\n};\nconst isDescendant = (id, ancestorId) => {\n log.trace(\"In isDescendant\", ancestorId, \" \", id, \" = \", descendants[ancestorId].includes(id));\n if (descendants[ancestorId].includes(id)) {\n return true;\n }\n return false;\n};\nconst edgeInCluster = (edge, clusterId) => {\n log.info(\"Descendants of \", clusterId, \" is \", descendants[clusterId]);\n log.info(\"Edge is \", edge);\n if (edge.v === clusterId) {\n return false;\n }\n if (edge.w === clusterId) {\n return false;\n }\n if (!descendants[clusterId]) {\n log.debug(\"Tilt, \", clusterId, \",not in descendants\");\n return false;\n }\n return descendants[clusterId].includes(edge.v) || isDescendant(edge.v, clusterId) || isDescendant(edge.w, clusterId) || descendants[clusterId].includes(edge.w);\n};\nconst copy = (clusterId, graph, newGraph, rootId) => {\n log.warn(\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 if (clusterId !== rootId) {\n nodes.push(clusterId);\n }\n log.warn(\"Copying (nodes) clusterId\", clusterId, \"nodes\", nodes);\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);\n newGraph.setNode(node, data);\n if (rootId !== graph.parent(node)) {\n log.warn(\"Setting parent\", node, graph.parent(node));\n newGraph.setParent(node, graph.parent(node));\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 data2 = graph.edge(edge.v, edge.w, edge.name);\n log.info(\"Edge data\", data2, rootId);\n try {\n if (edgeInCluster(edge, rootId)) {\n log.info(\"Copying as \", edge.v, edge.w, data2, edge.name);\n newGraph.setEdge(edge.v, edge.w, data2, 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};\nconst extractDescendants = (id, graph) => {\n const children = graph.children(id);\n let res = [...children];\n for (const child of children) {\n parents[child] = id;\n res = [...res, ...extractDescendants(child, graph)];\n }\n return res;\n};\nconst findNonClusterChild = (id, graph) => {\n log.trace(\"Searching\", id);\n const children = graph.children(id);\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 (const child of children) {\n const _id = findNonClusterChild(child, graph);\n if (_id) {\n log.trace(\"Found replacement for\", id, \" => \", _id);\n return _id;\n }\n }\n};\nconst getAnchorId = (id) => {\n if (!clusterDb[id]) {\n return id;\n }\n if (!clusterDb[id].externalConnections) {\n return id;\n }\n if (clusterDb[id]) {\n return clusterDb[id].id;\n }\n return id;\n};\nconst 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 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 descendants[id] = extractDescendants(id, graph);\n clusterDb[id] = { id: findNonClusterChild(id, graph), clusterData: graph.node(id) };\n }\n });\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, descendants);\n edges.forEach((edge) => {\n if (edge.v !== id && edge.w !== id) {\n const d1 = isDescendant(edge.v, id);\n const d2 = isDescendant(edge.w, id);\n if (d1 ^ d2) {\n log.warn(\"Edge: \", edge, \" leaves cluster \", id);\n log.warn(\"Descendants of XXX \", id, \": \", descendants[id]);\n clusterDb[id].externalConnections = true;\n }\n }\n });\n } else {\n log.debug(\"Not a cluster \", id, descendants);\n }\n });\n for (let id of Object.keys(clusterDb)) {\n const nonClusterChild = clusterDb[id].id;\n const parent = graph.parent(nonClusterChild);\n if (parent !== id && clusterDb[parent] && !clusterDb[parent].externalConnections) {\n clusterDb[id].id = parent;\n }\n }\n graph.edges().forEach(function(e) {\n const edge = graph.edge(e);\n log.warn(\"Edge \" + e.v + \" -> \" + e.w + \": \" + JSON.stringify(e));\n log.warn(\"Edge \" + e.v + \" -> \" + e.w + \": \" + JSON.stringify(graph.edge(e)));\n let v = e.v;\n let w = e.w;\n log.warn(\n \"Fix XXX\",\n clusterDb,\n \"ids:\",\n e.v,\n e.w,\n \"Translating: \",\n clusterDb[e.v],\n \" --- \",\n clusterDb[e.w]\n );\n if (clusterDb[e.v] && clusterDb[e.w] && clusterDb[e.v] === clusterDb[e.w]) {\n log.warn(\"Fixing and trixing link to self - removing XXX\", e.v, e.w, e.name);\n log.warn(\"Fixing and trixing - removing XXX\", 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 const specialId = e.w + \"---\" + e.v;\n graph.setNode(specialId, {\n domId: specialId,\n id: specialId,\n labelStyle: \"\",\n labelText: edge.label,\n padding: 0,\n shape: \"labelRect\",\n style: \"\"\n });\n const edge1 = structuredClone(edge);\n const edge2 = structuredClone(edge);\n edge1.label = \"\";\n edge1.arrowTypeEnd = \"none\";\n edge2.label = \"\";\n edge1.fromCluster = e.v;\n edge2.toCluster = e.v;\n graph.setEdge(v, specialId, edge1, e.name + \"-cyclic-special\");\n graph.setEdge(specialId, w, edge2, e.name + \"-cyclic-special\");\n } else if (clusterDb[e.v] || clusterDb[e.w]) {\n log.warn(\"Fixing and trixing - removing XXX\", 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) {\n const parent = graph.parent(v);\n clusterDb[parent].externalConnections = true;\n edge.fromCluster = e.v;\n }\n if (w !== e.w) {\n const parent = graph.parent(w);\n clusterDb[parent].externalConnections = true;\n edge.toCluster = e.w;\n }\n log.warn(\"Fix Replacing with XXX\", v, w, e.name);\n graph.setEdge(v, w, edge, e.name);\n }\n });\n log.warn(\"Adjusted Graph\", graphlibJson.write(graph));\n extractor(graph, 0);\n log.trace(clusterDb);\n};\nconst extractor = (graph, depth) => {\n log.warn(\"extractor - \", depth, graphlibJson.write(graph), graph.children(\"D\"));\n if (depth > 10) {\n log.error(\"Bailing out\");\n return;\n }\n let nodes = graph.nodes();\n let hasChildren = false;\n for (const node of nodes) {\n const children = graph.children(node);\n hasChildren = hasChildren || children.length > 0;\n }\n if (!hasChildren) {\n log.debug(\"Done, no node has children\", graph.nodes());\n return;\n }\n log.debug(\"Nodes = \", nodes, depth);\n for (const node of nodes) {\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 if (!clusterDb[node]) {\n log.debug(\"Not a cluster\", node, depth);\n } else if (!clusterDb[node].externalConnections && // !graph.parent(node) &&\n graph.children(node) && graph.children(node).length > 0) {\n log.warn(\n \"Cluster without external connections, without a parent and with children\",\n node,\n depth\n );\n const graphSettings = graph.graph();\n let dir = graphSettings.rankdir === \"TB\" ? \"LR\" : \"TB\";\n if (clusterDb[node] && clusterDb[node].clusterData && clusterDb[node].clusterData.dir) {\n dir = clusterDb[node].clusterData.dir;\n log.warn(\"Fixing dir\", clusterDb[node].clusterData.dir, dir);\n }\n const clusterGraph = new graphlib.Graph({\n multigraph: true,\n compound: true\n }).setGraph({\n rankdir: dir,\n // Todo: set proper spacing\n nodesep: 50,\n ranksep: 50,\n marginx: 8,\n marginy: 8\n }).setDefaultEdgeLabel(function() {\n return {};\n });\n log.warn(\"Old graph before copy\", graphlibJson.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.warn(\"New graph after copy node: (\", node, \")\", graphlibJson.write(clusterGraph));\n log.debug(\"Old graph after copy\", graphlibJson.write(graph));\n } else {\n log.warn(\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 nodes = graph.nodes();\n log.warn(\"New list of nodes\", nodes);\n for (const node of nodes) {\n const data = graph.node(node);\n log.warn(\" Now next level\", node, data);\n if (data.clusterNode) {\n extractor(data.graph, depth + 1);\n }\n }\n};\nconst sorter = (graph, nodes) => {\n if (nodes.length === 0) {\n return [];\n }\n let result = Object.assign(nodes);\n nodes.forEach((node) => {\n const children = graph.children(node);\n const sorted = sorter(graph, children);\n result = [...result, ...sorted];\n });\n return result;\n};\nconst sortNodesByHierarchy = (graph) => sorter(graph, graph.children());\nconst rect = (parent, node) => {\n log.info(\"Creating subgraph rect for \", node.id, node);\n const siteConfig = getConfig();\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"cluster\" + (node.class ? \" \" + node.class : \"\")).attr(\"id\", node.id);\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const useHtmlLabels = evaluate(siteConfig.flowchart.htmlLabels);\n const label = shapeSvg.insert(\"g\").attr(\"class\", \"cluster-label\");\n const text = node.labelType === \"markdown\" ? createText(label, node.labelText, { style: node.labelStyle, useHtmlLabels }) : label.node().appendChild(createLabel(node.labelText, node.labelStyle, void 0, true));\n let bbox = text.getBBox();\n if (evaluate(siteConfig.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 const padding = 0 * node.padding;\n const halfPadding = padding / 2;\n const width = node.width <= bbox.width + padding ? bbox.width + padding : node.width;\n if (node.width <= bbox.width + padding) {\n node.diff = (bbox.width - node.width) / 2 - node.padding / 2;\n } else {\n node.diff = -node.padding / 2;\n }\n log.trace(\"Data \", node, JSON.stringify(node));\n rect2.attr(\"style\", node.style).attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"x\", node.x - width / 2).attr(\"y\", node.y - node.height / 2 - halfPadding).attr(\"width\", width).attr(\"height\", node.height + padding);\n const { subGraphTitleTopMargin } = getSubGraphTitleMargins(siteConfig);\n if (useHtmlLabels) {\n label.attr(\n \"transform\",\n // This puts the label on top of the box instead of inside it\n `translate(${node.x - bbox.width / 2}, ${node.y - node.height / 2 + subGraphTitleTopMargin})`\n );\n } else {\n label.attr(\n \"transform\",\n // This puts the label on top of the box instead of inside it\n `translate(${node.x}, ${node.y - node.height / 2 + subGraphTitleTopMargin})`\n );\n }\n const rectBox = rect2.node().getBBox();\n node.width = rectBox.width;\n node.height = rectBox.height;\n node.intersect = function(point) {\n return intersectRect(node, point);\n };\n return shapeSvg;\n};\nconst noteGroup = (parent, node) => {\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"note-cluster\").attr(\"id\", node.id);\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const padding = 0 * node.padding;\n const halfPadding = padding / 2;\n rect2.attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"x\", node.x - node.width / 2 - halfPadding).attr(\"y\", node.y - node.height / 2 - halfPadding).attr(\"width\", node.width + padding).attr(\"height\", node.height + padding).attr(\"fill\", \"none\");\n const rectBox = rect2.node().getBBox();\n node.width = rectBox.width;\n node.height = rectBox.height;\n node.intersect = function(point) {\n return intersectRect(node, point);\n };\n return shapeSvg;\n};\nconst roundedWithTitle = (parent, node) => {\n const siteConfig = getConfig();\n const shapeSvg = parent.insert(\"g\").attr(\"class\", node.classes).attr(\"id\", node.id);\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const label = shapeSvg.insert(\"g\").attr(\"class\", \"cluster-label\");\n const innerRect = shapeSvg.append(\"rect\");\n const text = label.node().appendChild(createLabel(node.labelText, node.labelStyle, void 0, true));\n let bbox = text.getBBox();\n if (evaluate(siteConfig.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 const width = node.width <= bbox.width + node.padding ? bbox.width + node.padding : node.width;\n if (node.width <= bbox.width + node.padding) {\n node.diff = (bbox.width + node.padding * 0 - node.width) / 2;\n } else {\n node.diff = -node.padding / 2;\n }\n rect2.attr(\"class\", \"outer\").attr(\"x\", node.x - width / 2 - halfPadding).attr(\"y\", node.y - node.height / 2 - halfPadding).attr(\"width\", width + padding).attr(\"height\", node.height + padding);\n innerRect.attr(\"class\", \"inner\").attr(\"x\", node.x - width / 2 - halfPadding).attr(\"y\", node.y - node.height / 2 - halfPadding + bbox.height - 1).attr(\"width\", width + padding).attr(\"height\", node.height + padding - bbox.height - 3);\n const { subGraphTitleTopMargin } = getSubGraphTitleMargins(siteConfig);\n label.attr(\n \"transform\",\n `translate(${node.x - bbox.width / 2}, ${node.y - node.height / 2 - node.padding / 3 + (evaluate(siteConfig.flowchart.htmlLabels) ? 5 : 3) + subGraphTitleTopMargin})`\n );\n const rectBox = rect2.node().getBBox();\n node.height = rectBox.height;\n node.intersect = function(point) {\n return intersectRect(node, point);\n };\n return shapeSvg;\n};\nconst divider = (parent, node) => {\n const shapeSvg = parent.insert(\"g\").attr(\"class\", node.classes).attr(\"id\", node.id);\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const padding = 0 * node.padding;\n const halfPadding = padding / 2;\n rect2.attr(\"class\", \"divider\").attr(\"x\", node.x - node.width / 2 - halfPadding).attr(\"y\", node.y - node.height / 2).attr(\"width\", node.width + padding).attr(\"height\", node.height + padding);\n const rectBox = rect2.node().getBBox();\n node.width = rectBox.width;\n node.height = rectBox.height;\n node.diff = -node.padding / 2;\n node.intersect = function(point) {\n return intersectRect(node, point);\n };\n return shapeSvg;\n};\nconst shapes = { rect, roundedWithTitle, noteGroup, divider };\nlet clusterElems = {};\nconst insertCluster = (elem, node) => {\n log.trace(\"Inserting cluster\");\n const shape = node.shape || \"rect\";\n clusterElems[node.id] = shapes[shape](elem, node);\n};\nconst clear = () => {\n clusterElems = {};\n};\nconst recursiveRender = async (_elem, graph, diagramType, id, parentCluster, siteConfig) => {\n log.info(\"Graph in recursive render: XXX\", graphlibJson.write(graph), parentCluster);\n const dir = graph.graph().rankdir;\n log.trace(\"Dir in recursive render - dir:\", dir);\n const elem = _elem.insert(\"g\").attr(\"class\", \"root\");\n if (!graph.nodes()) {\n log.info(\"No nodes found for\", graph);\n } else {\n log.info(\"Recursive render XXX\", graph.nodes());\n }\n if (graph.edges().length > 0) {\n log.trace(\"Recursive edges\", graph.edge(graph.edges()[0]));\n }\n const clusters = elem.insert(\"g\").attr(\"class\", \"clusters\");\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 await Promise.all(\n graph.nodes().map(async function(v) {\n const node = graph.node(v);\n if (parentCluster !== void 0) {\n const data = JSON.parse(JSON.stringify(parentCluster.clusterData));\n log.info(\"Setting data for cluster XXX (\", v, \") \", data, parentCluster);\n graph.setNode(parentCluster.id, data);\n if (!graph.parent(v)) {\n log.trace(\"Setting parent\", v, parentCluster.id);\n graph.setParent(v, parentCluster.id, data);\n }\n }\n log.info(\"(Insert) Node XXX\" + v + \": \" + JSON.stringify(graph.node(v)));\n if (node && node.clusterNode) {\n log.info(\"Cluster identified\", v, node.width, graph.node(v));\n const o = await recursiveRender(\n nodes,\n node.graph,\n diagramType,\n id,\n graph.node(v),\n siteConfig\n );\n const newEl = o.elem;\n updateNodeBounds(node, newEl);\n node.diff = o.diff || 0;\n log.info(\"Node bounds (abc123)\", v, node, node.width, node.x, node.y);\n setNodeElem(newEl, node);\n log.warn(\"Recursive render complete \", newEl, node);\n } else {\n if (graph.children(v).length > 0) {\n log.info(\"Cluster - the non recursive path XXX\", v, node.id, node, graph);\n log.info(findNonClusterChild(node.id, graph));\n clusterDb[node.id] = { id: findNonClusterChild(node.id, graph), node };\n } else {\n log.info(\"Node - the non recursive path\", v, node.id, node);\n await insertNode(nodes, graph.node(v), dir);\n }\n }\n })\n );\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 log.info(\"Fix\", clusterDb, \"ids:\", e.v, e.w, \"Translating: \", clusterDb[e.v], clusterDb[e.w]);\n insertEdgeLabel(edgeLabels, edge);\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 layout(graph);\n log.info(\"Graph after layout:\", graphlibJson.write(graph));\n let diff = 0;\n const { subGraphTitleTotalMargin } = getSubGraphTitleMargins(siteConfig);\n sortNodesByHierarchy(graph).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 node.y += subGraphTitleTotalMargin;\n positionNode(node);\n } else {\n if (graph.children(v).length > 0) {\n node.height += subGraphTitleTotalMargin;\n insertCluster(clusters, node);\n clusterDb[node.id].node = node;\n } else {\n node.y += subGraphTitleTotalMargin / 2;\n positionNode(node);\n }\n }\n });\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 edge.points.forEach((point) => point.y += subGraphTitleTotalMargin / 2);\n const paths = insertEdge(edgePaths, e, edge, clusterDb, diagramType, graph, id);\n positionEdgeLabel(edge, paths);\n });\n graph.nodes().forEach(function(v) {\n const n = graph.node(v);\n log.info(v, n.type, n.diff);\n if (n.type === \"group\") {\n diff = n.diff;\n }\n });\n return { elem, diff };\n};\nconst render = async (elem, graph, markers, diagramType, id) => {\n insertMarkers(elem, markers, diagramType, id);\n clear$2();\n clear$3();\n clear();\n clear$1();\n log.warn(\"Graph at first:\", JSON.stringify(graphlibJson.write(graph)));\n adjustClustersAndEdges(graph);\n log.warn(\"Graph after:\", JSON.stringify(graphlibJson.write(graph)));\n const siteConfig = getConfig();\n await recursiveRender(elem, graph, diagramType, id, void 0, siteConfig);\n};\nexport {\n render as r\n};\n","import { l as log, A as selectSvgElement, i as configureSvgSize } from \"./mermaid-f47111a7.js\";\nimport \"ts-dedent\";\nimport \"dayjs\";\nimport \"@braintree/sanitize-url\";\nimport \"d3\";\nimport \"dompurify\";\nimport \"khroma\";\nimport \"lodash-es/memoize.js\";\nimport \"lodash-es/merge.js\";\nimport \"stylis\";\nimport \"lodash-es/isEmpty.js\";\nvar parser = function() {\n var o = function(k, v, o2, l) {\n for (o2 = o2 || {}, l = k.length; l--; o2[k[l]] = v)\n ;\n return o2;\n }, $V0 = [6, 9, 10];\n var parser2 = {\n trace: function trace() {\n },\n yy: {},\n symbols_: { \"error\": 2, \"start\": 3, \"info\": 4, \"document\": 5, \"EOF\": 6, \"line\": 7, \"statement\": 8, \"NL\": 9, \"showInfo\": 10, \"$accept\": 0, \"$end\": 1 },\n terminals_: { 2: \"error\", 4: \"info\", 6: \"EOF\", 9: \"NL\", 10: \"showInfo\" },\n productions_: [0, [3, 3], [5, 0], [5, 2], [7, 1], [7, 1], [8, 1]],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) {\n $$.length - 1;\n switch (yystate) {\n case 1:\n return yy;\n case 4:\n break;\n case 6:\n yy.setInfo(true);\n break;\n }\n },\n table: [{ 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])],\n defaultActions: { 4: [2, 1] },\n parseError: 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 },\n parse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = \"\", yylineno = 0, yyleng = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer2 = 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 lexer2.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer2;\n sharedState.yy.parser = this;\n if (typeof lexer2.yylloc == \"undefined\") {\n lexer2.yylloc = {};\n }\n var yyloc = lexer2.yylloc;\n lstack.push(yyloc);\n var ranges = lexer2.options && lexer2.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 lex() {\n var token;\n token = tstack.pop() || lexer2.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, state, action, 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 (lexer2.showPosition) {\n errStr = \"Parse error on line \" + (yylineno + 1) + \":\\n\" + lexer2.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: lexer2.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer2.yylineno,\n loc: yyloc,\n 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(lexer2.yytext);\n lstack.push(lexer2.yylloc);\n stack.push(action[1]);\n symbol = null;\n {\n yyleng = lexer2.yyleng;\n yytext = lexer2.yytext;\n yylineno = lexer2.yylineno;\n yyloc = lexer2.yylloc;\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 var lexer = function() {\n var lexer2 = {\n EOF: 1,\n parseError: 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 // resets the lexer, sets new input\n setInput: 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 // consumes and returns one char from the input\n input: 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 this._input = this._input.slice(1);\n return ch;\n },\n // unshifts one char (or a string) into the input\n unput: function(ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - 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 if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\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 ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len\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 // When called from action, caches matched text and appends it on next action\n more: function() {\n this._more = true;\n return this;\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.\n reject: 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 return this;\n },\n // retain first n characters of the match\n less: function(n) {\n this.unput(this.match.slice(n));\n },\n // displays already matched input, i.e. for error messages\n pastInput: 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 // displays upcoming input, i.e. for error messages\n upcomingInput: 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 // displays the character position where the lexing error occurred, i.e. for error messages\n showPosition: function() {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n // test the lexed token: return FALSE when not a match, otherwise return token\n test_match: function(match, indexed_rule) {\n var token, lines, backup;\n if (this.options.backtrack_lexer) {\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 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 ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length : 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 for (var k in backup) {\n this[k] = backup[k];\n }\n return false;\n }\n return false;\n },\n // return next match in input\n next: function() {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n var token, match, tempMatch, 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;\n } else {\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 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 // return next match that has a token\n lex: function lex() {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\n begin: function begin(condition) {\n this.conditionStack.push(condition);\n },\n // pop the previously active lexer condition state off the condition stack\n popState: 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 // 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 // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\n topState: 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 // alias for begin(condition)\n pushState: function pushState(condition) {\n this.begin(condition);\n },\n // return the number of states currently on the stack\n stateStackSize: function stateStackSize() {\n return this.conditionStack.length;\n },\n options: { \"case-insensitive\": true },\n performAction: function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) {\n switch ($avoiding_name_collisions) {\n case 0:\n return 4;\n case 1:\n return 9;\n case 2:\n return \"space\";\n case 3:\n return 10;\n case 4:\n return 6;\n case 5:\n return \"TXT\";\n }\n },\n rules: [/^(?:info\\b)/i, /^(?:[\\s\\n\\r]+)/i, /^(?:[\\s]+)/i, /^(?:showInfo\\b)/i, /^(?:$)/i, /^(?:.)/i],\n conditions: { \"INITIAL\": { \"rules\": [0, 1, 2, 3, 4, 5], \"inclusive\": true } }\n };\n return lexer2;\n }();\n parser2.lexer = lexer;\n function Parser() {\n this.yy = {};\n }\n Parser.prototype = parser2;\n parser2.Parser = Parser;\n return new Parser();\n}();\nparser.parser = parser;\nconst parser$1 = parser;\nconst DEFAULT_INFO_DB = {\n info: false\n};\nlet info = DEFAULT_INFO_DB.info;\nconst setInfo = (toggle) => {\n info = toggle;\n};\nconst getInfo = () => info;\nconst clear = () => {\n info = DEFAULT_INFO_DB.info;\n};\nconst db = {\n clear,\n setInfo,\n getInfo\n};\nconst draw = (text, id, version) => {\n log.debug(\"rendering info diagram\\n\" + text);\n const svg = selectSvgElement(id);\n configureSvgSize(svg, 100, 400, true);\n const group = svg.append(\"g\");\n group.append(\"text\").attr(\"x\", 100).attr(\"y\", 40).attr(\"class\", \"version\").attr(\"font-size\", 32).style(\"text-anchor\", \"middle\").text(`v${version}`);\n};\nconst renderer = { draw };\nconst diagram = {\n parser: parser$1,\n db,\n renderer\n};\nexport {\n diagram\n};\n","import { c as getConfig, q as setDiagramTitle, t as getDiagramTitle, s as setAccTitle, g as getAccTitle, b as setAccDescription, a as getAccDescription, v as clear$1, i as configureSvgSize } from \"./mermaid-f47111a7.js\";\nimport { arc, select } from \"d3\";\nimport { d as drawRect$1, f as drawText$1, a as drawBackgroundRect$1, g as getNoteRect } from \"./svgDrawCommon-5ccd53ef.js\";\nimport \"ts-dedent\";\nimport \"dayjs\";\nimport \"@braintree/sanitize-url\";\nimport \"dompurify\";\nimport \"khroma\";\nimport \"lodash-es/memoize.js\";\nimport \"lodash-es/merge.js\";\nimport \"stylis\";\nimport \"lodash-es/isEmpty.js\";\nvar parser = function() {\n var o = function(k, v, o2, l) {\n for (o2 = o2 || {}, l = k.length; l--; o2[k[l]] = v)\n ;\n return o2;\n }, $V0 = [6, 8, 10, 11, 12, 14, 16, 17, 18], $V1 = [1, 9], $V2 = [1, 10], $V3 = [1, 11], $V4 = [1, 12], $V5 = [1, 13], $V6 = [1, 14];\n var parser2 = {\n trace: function trace() {\n },\n yy: {},\n symbols_: { \"error\": 2, \"start\": 3, \"journey\": 4, \"document\": 5, \"EOF\": 6, \"line\": 7, \"SPACE\": 8, \"statement\": 9, \"NEWLINE\": 10, \"title\": 11, \"acc_title\": 12, \"acc_title_value\": 13, \"acc_descr\": 14, \"acc_descr_value\": 15, \"acc_descr_multiline_value\": 16, \"section\": 17, \"taskName\": 18, \"taskData\": 19, \"$accept\": 0, \"$end\": 1 },\n terminals_: { 2: \"error\", 4: \"journey\", 6: \"EOF\", 8: \"SPACE\", 10: \"NEWLINE\", 11: \"title\", 12: \"acc_title\", 13: \"acc_title_value\", 14: \"acc_descr\", 15: \"acc_descr_value\", 16: \"acc_descr_multiline_value\", 17: \"section\", 18: \"taskName\", 19: \"taskData\" },\n productions_: [0, [3, 3], [5, 0], [5, 2], [7, 2], [7, 1], [7, 1], [7, 1], [9, 1], [9, 2], [9, 2], [9, 1], [9, 1], [9, 2]],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) {\n var $0 = $$.length - 1;\n switch (yystate) {\n case 1:\n return $$[$0 - 1];\n case 2:\n this.$ = [];\n break;\n case 3:\n $$[$0 - 1].push($$[$0]);\n this.$ = $$[$0 - 1];\n break;\n case 4:\n case 5:\n this.$ = $$[$0];\n break;\n case 6:\n case 7:\n this.$ = [];\n break;\n case 8:\n yy.setDiagramTitle($$[$0].substr(6));\n this.$ = $$[$0].substr(6);\n break;\n case 9:\n this.$ = $$[$0].trim();\n yy.setAccTitle(this.$);\n break;\n case 10:\n case 11:\n this.$ = $$[$0].trim();\n yy.setAccDescription(this.$);\n break;\n case 12:\n yy.addSection($$[$0].substr(8));\n this.$ = $$[$0].substr(8);\n break;\n case 13:\n yy.addTask($$[$0 - 1], $$[$0]);\n this.$ = \"task\";\n break;\n }\n },\n table: [{ 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, 14: $V3, 16: $V4, 17: $V5, 18: $V6 }, o($V0, [2, 7], { 1: [2, 1] }), o($V0, [2, 3]), { 9: 15, 11: $V1, 12: $V2, 14: $V3, 16: $V4, 17: $V5, 18: $V6 }, o($V0, [2, 5]), o($V0, [2, 6]), o($V0, [2, 8]), { 13: [1, 16] }, { 15: [1, 17] }, o($V0, [2, 11]), o($V0, [2, 12]), { 19: [1, 18] }, o($V0, [2, 4]), o($V0, [2, 9]), o($V0, [2, 10]), o($V0, [2, 13])],\n defaultActions: {},\n parseError: 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 },\n parse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = \"\", yylineno = 0, yyleng = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer2 = 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 lexer2.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer2;\n sharedState.yy.parser = this;\n if (typeof lexer2.yylloc == \"undefined\") {\n lexer2.yylloc = {};\n }\n var yyloc = lexer2.yylloc;\n lstack.push(yyloc);\n var ranges = lexer2.options && lexer2.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 lex() {\n var token;\n token = tstack.pop() || lexer2.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, state, action, 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 (lexer2.showPosition) {\n errStr = \"Parse error on line \" + (yylineno + 1) + \":\\n\" + lexer2.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: lexer2.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer2.yylineno,\n loc: yyloc,\n 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(lexer2.yytext);\n lstack.push(lexer2.yylloc);\n stack.push(action[1]);\n symbol = null;\n {\n yyleng = lexer2.yyleng;\n yytext = lexer2.yytext;\n yylineno = lexer2.yylineno;\n yyloc = lexer2.yylloc;\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 var lexer = function() {\n var lexer2 = {\n EOF: 1,\n parseError: 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 // resets the lexer, sets new input\n setInput: 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 // consumes and returns one char from the input\n input: 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 this._input = this._input.slice(1);\n return ch;\n },\n // unshifts one char (or a string) into the input\n unput: function(ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - 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 if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\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 ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len\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 // When called from action, caches matched text and appends it on next action\n more: function() {\n this._more = true;\n return this;\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.\n reject: 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 return this;\n },\n // retain first n characters of the match\n less: function(n) {\n this.unput(this.match.slice(n));\n },\n // displays already matched input, i.e. for error messages\n pastInput: 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 // displays upcoming input, i.e. for error messages\n upcomingInput: 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 // displays the character position where the lexing error occurred, i.e. for error messages\n showPosition: function() {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n // test the lexed token: return FALSE when not a match, otherwise return token\n test_match: function(match, indexed_rule) {\n var token, lines, backup;\n if (this.options.backtrack_lexer) {\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 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 ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length : 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 for (var k in backup) {\n this[k] = backup[k];\n }\n return false;\n }\n return false;\n },\n // return next match in input\n next: function() {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n var token, match, tempMatch, 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;\n } else {\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 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 // return next match that has a token\n lex: function lex() {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\n begin: function begin(condition) {\n this.conditionStack.push(condition);\n },\n // pop the previously active lexer condition state off the condition stack\n popState: 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 // 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 // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\n topState: 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 // alias for begin(condition)\n pushState: function pushState(condition) {\n this.begin(condition);\n },\n // return the number of states currently on the stack\n stateStackSize: function stateStackSize() {\n return this.conditionStack.length;\n },\n options: { \"case-insensitive\": true },\n performAction: function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) {\n switch ($avoiding_name_collisions) {\n case 0:\n break;\n case 1:\n break;\n case 2:\n return 10;\n case 3:\n break;\n case 4:\n break;\n case 5:\n return 4;\n case 6:\n return 11;\n case 7:\n this.begin(\"acc_title\");\n return 12;\n case 8:\n this.popState();\n return \"acc_title_value\";\n case 9:\n this.begin(\"acc_descr\");\n return 14;\n case 10:\n this.popState();\n return \"acc_descr_value\";\n case 11:\n this.begin(\"acc_descr_multiline\");\n break;\n case 12:\n this.popState();\n break;\n case 13:\n return \"acc_descr_multiline_value\";\n case 14:\n return 17;\n case 15:\n return 18;\n case 16:\n return 19;\n case 17:\n return \":\";\n case 18:\n return 6;\n case 19:\n return \"INVALID\";\n }\n },\n rules: [/^(?:%(?!\\{)[^\\n]*)/i, /^(?:[^\\}]%%[^\\n]*)/i, /^(?:[\\n]+)/i, /^(?:\\s+)/i, /^(?:#[^\\n]*)/i, /^(?:journey\\b)/i, /^(?:title\\s[^#\\n;]+)/i, /^(?:accTitle\\s*:\\s*)/i, /^(?:(?!\\n||)*[^\\n]*)/i, /^(?:accDescr\\s*:\\s*)/i, /^(?:(?!\\n||)*[^\\n]*)/i, /^(?:accDescr\\s*\\{\\s*)/i, /^(?:[\\}])/i, /^(?:[^\\}]*)/i, /^(?:section\\s[^#:\\n;]+)/i, /^(?:[^#:\\n;]+)/i, /^(?::[^#\\n;]+)/i, /^(?::)/i, /^(?:$)/i, /^(?:.)/i],\n conditions: { \"acc_descr_multiline\": { \"rules\": [12, 13], \"inclusive\": false }, \"acc_descr\": { \"rules\": [10], \"inclusive\": false }, \"acc_title\": { \"rules\": [8], \"inclusive\": false }, \"INITIAL\": { \"rules\": [0, 1, 2, 3, 4, 5, 6, 7, 9, 11, 14, 15, 16, 17, 18, 19], \"inclusive\": true } }\n };\n return lexer2;\n }();\n parser2.lexer = lexer;\n function Parser() {\n this.yy = {};\n }\n Parser.prototype = parser2;\n parser2.Parser = Parser;\n return new Parser();\n}();\nparser.parser = parser;\nconst parser$1 = parser;\nlet currentSection = \"\";\nconst sections = [];\nconst tasks = [];\nconst rawTasks = [];\nconst clear = function() {\n sections.length = 0;\n tasks.length = 0;\n currentSection = \"\";\n rawTasks.length = 0;\n clear$1();\n};\nconst addSection = function(txt) {\n currentSection = txt;\n sections.push(txt);\n};\nconst getSections = function() {\n return sections;\n};\nconst 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 tasks.push(...rawTasks);\n return tasks;\n};\nconst updateActors = function() {\n const tempActors = [];\n tasks.forEach((task) => {\n if (task.people) {\n tempActors.push(...task.people);\n }\n });\n const unique = new Set(tempActors);\n return [...unique].sort();\n};\nconst addTask = function(descr, taskData) {\n const pieces = taskData.substr(1).split(\":\");\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 const rawTask = {\n section: currentSection,\n type: currentSection,\n people: peopleList,\n task: descr,\n score\n };\n rawTasks.push(rawTask);\n};\nconst 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};\nconst compileTasks = function() {\n const compileTask = function(pos) {\n return rawTasks[pos].processed;\n };\n let allProcessed = true;\n for (const [i, rawTask] of rawTasks.entries()) {\n compileTask(i);\n allProcessed = allProcessed && rawTask.processed;\n }\n return allProcessed;\n};\nconst getActors = function() {\n return updateActors();\n};\nconst db = {\n getConfig: () => getConfig().journey,\n clear,\n setDiagramTitle,\n getDiagramTitle,\n setAccTitle,\n getAccTitle,\n setAccDescription,\n getAccDescription,\n addSection,\n getSections,\n getTasks,\n addTask,\n addTaskOrg,\n getActors\n};\nconst getStyles = (options) => `.label {\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\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 ${options.faceColor ? `fill: ${options.faceColor}` : \"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 }\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, sans-serif;\n font-family: var(--mermaid-font-family);\n font-size: 12px;\n background: ${options.tertiaryColor};\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 .actor-0 {\n ${options.actor0 ? `fill: ${options.actor0}` : \"\"};\n }\n .actor-1 {\n ${options.actor1 ? `fill: ${options.actor1}` : \"\"};\n }\n .actor-2 {\n ${options.actor2 ? `fill: ${options.actor2}` : \"\"};\n }\n .actor-3 {\n ${options.actor3 ? `fill: ${options.actor3}` : \"\"};\n }\n .actor-4 {\n ${options.actor4 ? `fill: ${options.actor4}` : \"\"};\n }\n .actor-5 {\n ${options.actor5 ? `fill: ${options.actor5}` : \"\"};\n }\n`;\nconst styles = getStyles;\nconst drawRect = function(elem, rectData) {\n return drawRect$1(elem, rectData);\n};\nconst drawFace = function(element, faceData) {\n const radius = 15;\n const circleElement = element.append(\"circle\").attr(\"cx\", faceData.cx).attr(\"cy\", faceData.cy).attr(\"class\", \"face\").attr(\"r\", radius).attr(\"stroke-width\", 2).attr(\"overflow\", \"visible\");\n const face = element.append(\"g\");\n face.append(\"circle\").attr(\"cx\", faceData.cx - radius / 3).attr(\"cy\", faceData.cy - radius / 3).attr(\"r\", 1.5).attr(\"stroke-width\", 2).attr(\"fill\", \"#666\").attr(\"stroke\", \"#666\");\n face.append(\"circle\").attr(\"cx\", faceData.cx + radius / 3).attr(\"cy\", faceData.cy - radius / 3).attr(\"r\", 1.5).attr(\"stroke-width\", 2).attr(\"fill\", \"#666\").attr(\"stroke\", \"#666\");\n function smile(face2) {\n const arc$1 = arc().startAngle(Math.PI / 2).endAngle(3 * (Math.PI / 2)).innerRadius(radius / 2).outerRadius(radius / 2.2);\n face2.append(\"path\").attr(\"class\", \"mouth\").attr(\"d\", arc$1).attr(\"transform\", \"translate(\" + faceData.cx + \",\" + (faceData.cy + 2) + \")\");\n }\n function sad(face2) {\n const arc$1 = arc().startAngle(3 * Math.PI / 2).endAngle(5 * (Math.PI / 2)).innerRadius(radius / 2).outerRadius(radius / 2.2);\n face2.append(\"path\").attr(\"class\", \"mouth\").attr(\"d\", arc$1).attr(\"transform\", \"translate(\" + faceData.cx + \",\" + (faceData.cy + 7) + \")\");\n }\n function ambivalent(face2) {\n face2.append(\"line\").attr(\"class\", \"mouth\").attr(\"stroke\", 2).attr(\"x1\", faceData.cx - 5).attr(\"y1\", faceData.cy + 7).attr(\"x2\", faceData.cx + 5).attr(\"y2\", faceData.cy + 7).attr(\"class\", \"mouth\").attr(\"stroke-width\", \"1px\").attr(\"stroke\", \"#666\");\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 return circleElement;\n};\nconst 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(\"class\", \"actor-\" + circleData.pos);\n circleElement.attr(\"fill\", circleData.fill);\n circleElement.attr(\"stroke\", circleData.stroke);\n circleElement.attr(\"r\", circleData.r);\n if (circleElement.class !== void 0) {\n circleElement.attr(\"class\", circleElement.class);\n }\n if (circleData.title !== void 0) {\n circleElement.append(\"title\").text(circleData.title);\n }\n return circleElement;\n};\nconst drawText = function(elem, textData) {\n return drawText$1(elem, textData);\n};\nconst drawLabel = function(elem, txtObject) {\n function genPoints(x, y, width, height, cut) {\n return x + \",\" + y + \" \" + (x + width) + \",\" + y + \" \" + (x + width) + \",\" + (y + height - cut) + \" \" + (x + width - cut * 1.2) + \",\" + (y + height) + \" \" + x + \",\" + (y + height);\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 txtObject.y = txtObject.y + txtObject.labelMargin;\n txtObject.x = txtObject.x + 0.5 * txtObject.labelMargin;\n drawText(elem, txtObject);\n};\nconst drawSection = function(elem, section, conf2) {\n const g = elem.append(\"g\");\n const rect = getNoteRect();\n rect.x = section.x;\n rect.y = section.y;\n rect.fill = section.fill;\n rect.width = conf2.width * section.taskCount + // width of the tasks\n conf2.diagramMarginX * (section.taskCount - 1);\n rect.height = conf2.height;\n rect.class = \"journey-section section-type-\" + section.num;\n rect.rx = 3;\n rect.ry = 3;\n drawRect(g, rect);\n _drawTextCandidateFunc(conf2)(\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 conf2,\n section.colour\n );\n};\nlet taskCount = -1;\nconst drawTask = function(elem, task, conf2) {\n const center = task.x + conf2.width / 2;\n const g = elem.append(\"g\");\n taskCount++;\n const maxHeight = 300 + 5 * 30;\n g.append(\"line\").attr(\"id\", \"task\" + taskCount).attr(\"x1\", center).attr(\"y1\", task.y).attr(\"x2\", center).attr(\"y2\", maxHeight).attr(\"class\", \"task-line\").attr(\"stroke-width\", \"1px\").attr(\"stroke-dasharray\", \"4 2\").attr(\"stroke\", \"#666\");\n drawFace(g, {\n cx: center,\n cy: 300 + (5 - task.score) * 30,\n score: task.score\n });\n const rect = getNoteRect();\n rect.x = task.x;\n rect.y = task.y;\n rect.fill = task.fill;\n rect.width = conf2.width;\n rect.height = conf2.height;\n rect.class = \"task task-type-\" + task.num;\n rect.rx = 3;\n rect.ry = 3;\n drawRect(g, rect);\n let xPos = task.x + 14;\n task.people.forEach((person) => {\n const colour = task.actors[person].color;\n const circle = {\n cx: xPos,\n cy: task.y,\n r: 7,\n fill: colour,\n stroke: \"#000\",\n title: person,\n pos: task.actors[person].position\n };\n drawCircle(g, circle);\n xPos += 10;\n });\n _drawTextCandidateFunc(conf2)(\n task.task,\n g,\n rect.x,\n rect.y,\n rect.width,\n rect.height,\n { class: \"task\" },\n conf2,\n task.colour\n );\n};\nconst drawBackgroundRect = function(elem, bounds2) {\n drawBackgroundRect$1(elem, bounds2);\n};\nconst _drawTextCandidateFunc = function() {\n function byText(content, g, x, y, width, height, textAttrs, colour) {\n const text = g.append(\"text\").attr(\"x\", x + width / 2).attr(\"y\", y + height / 2 + 5).style(\"font-color\", colour).style(\"text-anchor\", \"middle\").text(content);\n _setTextAttrs(text, textAttrs);\n }\n function byTspan(content, g, x, y, width, height, textAttrs, conf2, colour) {\n const { taskFontSize, taskFontFamily } = conf2;\n const lines = content.split(/<br\\s*\\/?>/gi);\n for (let i = 0; i < lines.length; i++) {\n const dy = i * taskFontSize - taskFontSize * (lines.length - 1) / 2;\n const text = g.append(\"text\").attr(\"x\", x + width / 2).attr(\"y\", y).attr(\"fill\", colour).style(\"text-anchor\", \"middle\").style(\"font-size\", taskFontSize).style(\"font-family\", taskFontFamily);\n text.append(\"tspan\").attr(\"x\", x + width / 2).attr(\"dy\", dy).text(lines[i]);\n text.attr(\"y\", y + height / 2).attr(\"dominant-baseline\", \"central\").attr(\"alignment-baseline\", \"central\");\n _setTextAttrs(text, textAttrs);\n }\n }\n function byFo(content, g, x, y, width, height, textAttrs, conf2) {\n const body = g.append(\"switch\");\n const f = body.append(\"foreignObject\").attr(\"x\", x).attr(\"y\", y).attr(\"width\", width).attr(\"height\", height).attr(\"position\", \"fixed\");\n const text = f.append(\"xhtml:div\").style(\"display\", \"table\").style(\"height\", \"100%\").style(\"width\", \"100%\");\n text.append(\"div\").attr(\"class\", \"label\").style(\"display\", \"table-cell\").style(\"text-align\", \"center\").style(\"vertical-align\", \"middle\").text(content);\n byTspan(content, body, x, y, width, height, textAttrs, conf2);\n _setTextAttrs(text, textAttrs);\n }\n function _setTextAttrs(toText, fromTextAttrsDict) {\n for (const key in fromTextAttrsDict) {\n if (key in fromTextAttrsDict) {\n toText.attr(key, fromTextAttrsDict[key]);\n }\n }\n }\n return function(conf2) {\n return conf2.textPlacement === \"fo\" ? byFo : conf2.textPlacement === \"old\" ? byText : byTspan;\n };\n}();\nconst initGraphics = function(graphics) {\n graphics.append(\"defs\").append(\"marker\").attr(\"id\", \"arrowhead\").attr(\"refX\", 5).attr(\"refY\", 2).attr(\"markerWidth\", 6).attr(\"markerHeight\", 4).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 0,0 V 4 L6,2 Z\");\n};\nconst svgDraw = {\n drawRect,\n drawCircle,\n drawSection,\n drawText,\n drawLabel,\n drawTask,\n drawBackgroundRect,\n initGraphics\n};\nconst setConf = function(cnf) {\n const keys = Object.keys(cnf);\n keys.forEach(function(key) {\n conf[key] = cnf[key];\n });\n};\nconst actors = {};\nfunction drawActorLegend(diagram2) {\n const conf2 = getConfig().journey;\n let yPos = 60;\n Object.keys(actors).forEach((person) => {\n const colour = actors[person].color;\n const circleData = {\n cx: 20,\n cy: yPos,\n r: 7,\n fill: colour,\n stroke: \"#000\",\n pos: actors[person].position\n };\n svgDraw.drawCircle(diagram2, circleData);\n const labelData = {\n x: 40,\n y: yPos + 7,\n fill: \"#666\",\n text: person,\n textMargin: conf2.boxTextMargin | 5\n };\n svgDraw.drawText(diagram2, labelData);\n yPos += 20;\n });\n}\nconst conf = getConfig().journey;\nconst LEFT_MARGIN = conf.leftMargin;\nconst draw = function(text, id, version, diagObj) {\n const conf2 = getConfig().journey;\n const securityLevel = getConfig().securityLevel;\n let sandboxElement;\n if (securityLevel === \"sandbox\") {\n sandboxElement = select(\"#i\" + id);\n }\n const root = securityLevel === \"sandbox\" ? select(sandboxElement.nodes()[0].contentDocument.body) : select(\"body\");\n bounds.init();\n const diagram2 = root.select(\"#\" + id);\n svgDraw.initGraphics(diagram2);\n const tasks2 = diagObj.db.getTasks();\n const title = diagObj.db.getDiagramTitle();\n const actorNames = diagObj.db.getActors();\n for (const member in actors) {\n delete actors[member];\n }\n let actorPos = 0;\n actorNames.forEach((actorName) => {\n actors[actorName] = {\n color: conf2.actorColours[actorPos % conf2.actorColours.length],\n position: actorPos\n };\n actorPos++;\n });\n drawActorLegend(diagram2);\n bounds.insert(0, 0, LEFT_MARGIN, Object.keys(actors).length * 50);\n drawTasks(diagram2, tasks2, 0);\n const box = bounds.getBounds();\n if (title) {\n diagram2.append(\"text\").text(title).attr(\"x\", LEFT_MARGIN).attr(\"font-size\", \"4ex\").attr(\"font-weight\", \"bold\").attr(\"y\", 25);\n }\n const height = box.stopy - box.starty + 2 * conf2.diagramMarginY;\n const width = LEFT_MARGIN + box.stopx + 2 * conf2.diagramMarginX;\n configureSvgSize(diagram2, height, width, conf2.useMaxWidth);\n diagram2.append(\"line\").attr(\"x1\", LEFT_MARGIN).attr(\"y1\", conf2.height * 4).attr(\"x2\", width - LEFT_MARGIN - 4).attr(\"y2\", conf2.height * 4).attr(\"stroke-width\", 4).attr(\"stroke\", \"black\").attr(\"marker-end\", \"url(#arrowhead)\");\n const extraVertForTitle = title ? 70 : 0;\n diagram2.attr(\"viewBox\", `${box.startx} -25 ${width} ${height + extraVertForTitle}`);\n diagram2.attr(\"preserveAspectRatio\", \"xMinYMin meet\");\n diagram2.attr(\"height\", height + extraVertForTitle + 25);\n};\nconst bounds = {\n data: {\n startx: void 0,\n stopx: void 0,\n starty: void 0,\n stopy: void 0\n },\n verticalPos: 0,\n sequenceItems: [],\n init: function() {\n this.sequenceItems = [];\n this.data = {\n startx: void 0,\n stopx: void 0,\n starty: void 0,\n stopy: void 0\n };\n this.verticalPos = 0;\n },\n updateVal: function(obj, key, val, fun) {\n if (obj[key] === void 0) {\n obj[key] = val;\n } else {\n obj[key] = fun(val, obj[key]);\n }\n },\n updateBounds: function(startx, starty, stopx, stopy) {\n const conf2 = getConfig().journey;\n const _self = this;\n let cnt = 0;\n function updateFn(type) {\n return function updateItemBounds(item) {\n cnt++;\n const n = _self.sequenceItems.length - cnt + 1;\n _self.updateVal(item, \"starty\", starty - n * conf2.boxMargin, Math.min);\n _self.updateVal(item, \"stopy\", stopy + n * conf2.boxMargin, Math.max);\n _self.updateVal(bounds.data, \"startx\", startx - n * conf2.boxMargin, Math.min);\n _self.updateVal(bounds.data, \"stopx\", stopx + n * conf2.boxMargin, Math.max);\n if (!(type === \"activation\")) {\n _self.updateVal(item, \"startx\", startx - n * conf2.boxMargin, Math.min);\n _self.updateVal(item, \"stopx\", stopx + n * conf2.boxMargin, Math.max);\n _self.updateVal(bounds.data, \"starty\", starty - n * conf2.boxMargin, Math.min);\n _self.updateVal(bounds.data, \"stopy\", stopy + n * conf2.boxMargin, Math.max);\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 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 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};\nconst fills = conf.sectionFills;\nconst textColours = conf.sectionColours;\nconst drawTasks = function(diagram2, tasks2, verticalPos) {\n const conf2 = getConfig().journey;\n let lastSection = \"\";\n const sectionVHeight = conf2.height * 2 + conf2.diagramMarginY;\n const taskPos = verticalPos + sectionVHeight;\n let sectionNumber = 0;\n let fill = \"#CCC\";\n let colour = \"black\";\n let num = 0;\n for (const [i, task] of tasks2.entries()) {\n if (lastSection !== task.section) {\n fill = fills[sectionNumber % fills.length];\n num = sectionNumber % fills.length;\n colour = textColours[sectionNumber % textColours.length];\n let taskInSectionCount = 0;\n const currentSection2 = task.section;\n for (let taskIndex = i; taskIndex < tasks2.length; taskIndex++) {\n if (tasks2[taskIndex].section == currentSection2) {\n taskInSectionCount = taskInSectionCount + 1;\n } else {\n break;\n }\n }\n const section = {\n x: i * conf2.taskMargin + i * conf2.width + LEFT_MARGIN,\n y: 50,\n text: task.section,\n fill,\n num,\n colour,\n taskCount: taskInSectionCount\n };\n svgDraw.drawSection(diagram2, section, conf2);\n lastSection = task.section;\n sectionNumber++;\n }\n const taskActors = task.people.reduce((acc, actorName) => {\n if (actors[actorName]) {\n acc[actorName] = actors[actorName];\n }\n return acc;\n }, {});\n task.x = i * conf2.taskMargin + i * conf2.width + LEFT_MARGIN;\n task.y = taskPos;\n task.width = conf2.diagramMarginX;\n task.height = conf2.diagramMarginY;\n task.colour = colour;\n task.fill = fill;\n task.num = num;\n task.actors = taskActors;\n svgDraw.drawTask(diagram2, task, conf2);\n bounds.insert(task.x, task.y, task.x + task.width + conf2.taskMargin, 300 + 5 * 30);\n }\n};\nconst renderer = {\n setConf,\n draw\n};\nconst diagram = {\n parser: parser$1,\n db,\n renderer,\n styles,\n init: (cnf) => {\n renderer.setConf(cnf.journey);\n db.clear();\n }\n};\nexport {\n diagram\n};\n","import { dedent } from \"ts-dedent\";\nimport dayjs from \"dayjs\";\nimport { sanitizeUrl } from \"@braintree/sanitize-url\";\nimport { select, curveBasis, curveBasisClosed, curveBasisOpen, curveBumpX, curveBumpY, curveBundle, curveCardinalClosed, curveCardinalOpen, curveCardinal, curveCatmullRomClosed, curveCatmullRomOpen, curveCatmullRom, curveLinear, curveLinearClosed, curveMonotoneX, curveMonotoneY, curveNatural, curveStep, curveStepAfter, curveStepBefore } from \"d3\";\nimport DOMPurify from \"dompurify\";\nimport { adjust, invert, darken, lighten, isDark, rgba } from \"khroma\";\nimport memoize from \"lodash-es/memoize.js\";\nimport merge$1 from \"lodash-es/merge.js\";\nimport { serialize, compile, stringify } from \"stylis\";\nimport isEmpty from \"lodash-es/isEmpty.js\";\nconst LEVELS = {\n trace: 0,\n debug: 1,\n info: 2,\n warn: 3,\n error: 4,\n fatal: 5\n};\nconst log$1 = {\n trace: (..._args) => {\n },\n debug: (..._args) => {\n },\n info: (..._args) => {\n },\n warn: (..._args) => {\n },\n error: (..._args) => {\n },\n fatal: (..._args) => {\n }\n};\nconst setLogLevel$1 = function(level = \"fatal\") {\n let numericLevel = LEVELS.fatal;\n if (typeof level === \"string\") {\n level = level.toLowerCase();\n if (level in LEVELS) {\n numericLevel = LEVELS[level];\n }\n } else if (typeof level === \"number\") {\n numericLevel = level;\n }\n log$1.trace = () => {\n };\n log$1.debug = () => {\n };\n log$1.info = () => {\n };\n log$1.warn = () => {\n };\n log$1.error = () => {\n };\n log$1.fatal = () => {\n };\n if (numericLevel <= LEVELS.fatal) {\n log$1.fatal = console.error ? console.error.bind(console, format(\"FATAL\"), \"color: orange\") : console.log.bind(console, \"\\x1B[35m\", format(\"FATAL\"));\n }\n if (numericLevel <= LEVELS.error) {\n log$1.error = console.error ? console.error.bind(console, format(\"ERROR\"), \"color: orange\") : console.log.bind(console, \"\\x1B[31m\", format(\"ERROR\"));\n }\n if (numericLevel <= LEVELS.warn) {\n log$1.warn = console.warn ? console.warn.bind(console, format(\"WARN\"), \"color: orange\") : console.log.bind(console, `\\x1B[33m`, format(\"WARN\"));\n }\n if (numericLevel <= LEVELS.info) {\n log$1.info = console.info ? console.info.bind(console, format(\"INFO\"), \"color: lightblue\") : console.log.bind(console, \"\\x1B[34m\", format(\"INFO\"));\n }\n if (numericLevel <= LEVELS.debug) {\n log$1.debug = console.debug ? console.debug.bind(console, format(\"DEBUG\"), \"color: lightgreen\") : console.log.bind(console, \"\\x1B[32m\", format(\"DEBUG\"));\n }\n if (numericLevel <= LEVELS.trace) {\n log$1.trace = console.debug ? console.debug.bind(console, format(\"TRACE\"), \"color: lightgreen\") : console.log.bind(console, \"\\x1B[32m\", format(\"TRACE\"));\n }\n};\nconst format = (level) => {\n const time = dayjs().format(\"ss.SSS\");\n return `%c${time} : ${level} : `;\n};\nconst lineBreakRegex = /<br\\s*\\/?>/gi;\nconst getRows = (s) => {\n if (!s) {\n return [\"\"];\n }\n const str2 = breakToPlaceholder(s).replace(/\\\\n/g, \"#br#\");\n return str2.split(\"#br#\");\n};\nconst setupDompurifyHooksIfNotSetup = (() => {\n let setup = false;\n return () => {\n if (!setup) {\n setupDompurifyHooks();\n setup = true;\n }\n };\n})();\nfunction setupDompurifyHooks() {\n const TEMPORARY_ATTRIBUTE = \"data-temp-href-target\";\n DOMPurify.addHook(\"beforeSanitizeAttributes\", (node) => {\n if (node.tagName === \"A\" && node.hasAttribute(\"target\")) {\n node.setAttribute(TEMPORARY_ATTRIBUTE, node.getAttribute(\"target\") || \"\");\n }\n });\n DOMPurify.addHook(\"afterSanitizeAttributes\", (node) => {\n if (node.tagName === \"A\" && node.hasAttribute(TEMPORARY_ATTRIBUTE)) {\n node.setAttribute(\"target\", node.getAttribute(TEMPORARY_ATTRIBUTE) || \"\");\n node.removeAttribute(TEMPORARY_ATTRIBUTE);\n if (node.getAttribute(\"target\") === \"_blank\") {\n node.setAttribute(\"rel\", \"noopener\");\n }\n }\n });\n}\nconst removeScript = (txt) => {\n setupDompurifyHooksIfNotSetup();\n const sanitizedText = DOMPurify.sanitize(txt);\n return sanitizedText;\n};\nconst sanitizeMore = (text, config2) => {\n var _a;\n if (((_a = config2.flowchart) == null ? void 0 : _a.htmlLabels) !== false) {\n const level = config2.securityLevel;\n if (level === \"antiscript\" || level === \"strict\") {\n text = removeScript(text);\n } else if (level !== \"loose\") {\n text = breakToPlaceholder(text);\n text = text.replace(/</g, \"<\").replace(/>/g, \">\");\n text = text.replace(/=/g, \"=\");\n text = placeholderToBreak(text);\n }\n }\n return text;\n};\nconst sanitizeText$2 = (text, config2) => {\n if (!text) {\n return text;\n }\n if (config2.dompurifyConfig) {\n text = DOMPurify.sanitize(sanitizeMore(text, config2), config2.dompurifyConfig).toString();\n } else {\n text = DOMPurify.sanitize(sanitizeMore(text, config2), {\n FORBID_TAGS: [\"style\"]\n }).toString();\n }\n return text;\n};\nconst sanitizeTextOrArray = (a, config2) => {\n if (typeof a === \"string\") {\n return sanitizeText$2(a, config2);\n }\n return a.flat().map((x) => sanitizeText$2(x, config2));\n};\nconst hasBreaks = (text) => {\n return lineBreakRegex.test(text);\n};\nconst splitBreaks = (text) => {\n return text.split(lineBreakRegex);\n};\nconst placeholderToBreak = (s) => {\n return s.replace(/#br#/g, \"<br/>\");\n};\nconst breakToPlaceholder = (s) => {\n return s.replace(lineBreakRegex, \"#br#\");\n};\nconst getUrl = (useAbsolute) => {\n let url = \"\";\n if (useAbsolute) {\n url = window.location.protocol + \"//\" + window.location.host + window.location.pathname + window.location.search;\n url = url.replaceAll(/\\(/g, \"\\\\(\");\n url = url.replaceAll(/\\)/g, \"\\\\)\");\n }\n return url;\n};\nconst evaluate = (val) => val === false || [\"false\", \"null\", \"0\"].includes(String(val).trim().toLowerCase()) ? false : true;\nconst getMax = function(...values) {\n const newValues = values.filter((value) => {\n return !isNaN(value);\n });\n return Math.max(...newValues);\n};\nconst getMin = function(...values) {\n const newValues = values.filter((value) => {\n return !isNaN(value);\n });\n return Math.min(...newValues);\n};\nconst parseGenericTypes = function(input) {\n const inputSets = input.split(/(,)/);\n const output = [];\n for (let i = 0; i < inputSets.length; i++) {\n let thisSet = inputSets[i];\n if (thisSet === \",\" && i > 0 && i + 1 < inputSets.length) {\n const previousSet = inputSets[i - 1];\n const nextSet = inputSets[i + 1];\n if (shouldCombineSets(previousSet, nextSet)) {\n thisSet = previousSet + \",\" + nextSet;\n i++;\n output.pop();\n }\n }\n output.push(processSet(thisSet));\n }\n return output.join(\"\");\n};\nconst countOccurrence = (string, substring) => {\n return Math.max(0, string.split(substring).length - 1);\n};\nconst shouldCombineSets = (previousSet, nextSet) => {\n const prevCount = countOccurrence(previousSet, \"~\");\n const nextCount = countOccurrence(nextSet, \"~\");\n return prevCount === 1 && nextCount === 1;\n};\nconst processSet = (input) => {\n const tildeCount = countOccurrence(input, \"~\");\n let hasStartingTilde = false;\n if (tildeCount <= 1) {\n return input;\n }\n if (tildeCount % 2 !== 0 && input.startsWith(\"~\")) {\n input = input.substring(1);\n hasStartingTilde = true;\n }\n const chars = [...input];\n let first = chars.indexOf(\"~\");\n let last = chars.lastIndexOf(\"~\");\n while (first !== -1 && last !== -1 && first !== last) {\n chars[first] = \"<\";\n chars[last] = \">\";\n first = chars.indexOf(\"~\");\n last = chars.lastIndexOf(\"~\");\n }\n if (hasStartingTilde) {\n chars.unshift(\"~\");\n }\n return chars.join(\"\");\n};\nconst isMathMLSupported = () => window.MathMLElement !== void 0;\nconst katexRegex = /\\$\\$(.*)\\$\\$/g;\nconst hasKatex = (text) => {\n var _a;\n return (((_a = text.match(katexRegex)) == null ? void 0 : _a.length) ?? 0) > 0;\n};\nconst calculateMathMLDimensions = async (text, config2) => {\n text = await renderKatex(text, config2);\n const divElem = document.createElement(\"div\");\n divElem.innerHTML = text;\n divElem.id = \"katex-temp\";\n divElem.style.visibility = \"hidden\";\n divElem.style.position = \"absolute\";\n divElem.style.top = \"0\";\n const body = document.querySelector(\"body\");\n body == null ? void 0 : body.insertAdjacentElement(\"beforeend\", divElem);\n const dim = { width: divElem.clientWidth, height: divElem.clientHeight };\n divElem.remove();\n return dim;\n};\nconst renderKatex = async (text, config2) => {\n if (!hasKatex(text)) {\n return text;\n }\n if (!isMathMLSupported() && !config2.legacyMathML) {\n return text.replace(katexRegex, \"MathML is unsupported in this environment.\");\n }\n const { default: katex } = await import(\"katex\");\n return text.split(lineBreakRegex).map(\n (line) => hasKatex(line) ? `\n <div style=\"display: flex; align-items: center; justify-content: center; white-space: nowrap;\">\n ${line}\n </div>\n ` : `<div>${line}</div>`\n ).join(\"\").replace(\n katexRegex,\n (_, c) => katex.renderToString(c, {\n throwOnError: true,\n displayMode: true,\n output: isMathMLSupported() ? \"mathml\" : \"htmlAndMathml\"\n }).replace(/\\n/g, \" \").replace(/<annotation.*<\\/annotation>/g, \"\")\n );\n};\nconst common$1 = {\n getRows,\n sanitizeText: sanitizeText$2,\n sanitizeTextOrArray,\n hasBreaks,\n splitBreaks,\n lineBreakRegex,\n removeScript,\n getUrl,\n evaluate,\n getMax,\n getMin\n};\nconst mkBorder = (col, darkMode) => darkMode ? adjust(col, { s: -40, l: 10 }) : adjust(col, { s: -40, l: -10 });\nconst oldAttributeBackgroundColorOdd = \"#ffffff\";\nconst oldAttributeBackgroundColorEven = \"#f2f2f2\";\nlet Theme$4 = class Theme {\n constructor() {\n this.background = \"#f4f4f4\";\n this.primaryColor = \"#fff4dd\";\n this.noteBkgColor = \"#fff5ad\";\n this.noteTextColor = \"#333\";\n this.THEME_COLOR_LIMIT = 12;\n this.fontFamily = '\"trebuchet ms\", verdana, arial, sans-serif';\n this.fontSize = \"16px\";\n }\n updateColors() {\n var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k;\n this.primaryTextColor = this.primaryTextColor || (this.darkMode ? \"#eee\" : \"#333\");\n this.secondaryColor = this.secondaryColor || adjust(this.primaryColor, { h: -120 });\n this.tertiaryColor = this.tertiaryColor || adjust(this.primaryColor, { h: 180, l: 5 });\n this.primaryBorderColor = this.primaryBorderColor || mkBorder(this.primaryColor, this.darkMode);\n this.secondaryBorderColor = this.secondaryBorderColor || mkBorder(this.secondaryColor, this.darkMode);\n this.tertiaryBorderColor = this.tertiaryBorderColor || mkBorder(this.tertiaryColor, this.darkMode);\n this.noteBorderColor = this.noteBorderColor || mkBorder(this.noteBkgColor, this.darkMode);\n this.noteBkgColor = this.noteBkgColor || \"#fff5ad\";\n this.noteTextColor = this.noteTextColor || \"#333\";\n this.secondaryTextColor = this.secondaryTextColor || invert(this.secondaryColor);\n this.tertiaryTextColor = this.tertiaryTextColor || invert(this.tertiaryColor);\n this.lineColor = this.lineColor || invert(this.background);\n this.arrowheadColor = this.arrowheadColor || invert(this.background);\n this.textColor = this.textColor || this.primaryTextColor;\n this.border2 = this.border2 || this.tertiaryBorderColor;\n this.nodeBkg = this.nodeBkg || this.primaryColor;\n this.mainBkg = this.mainBkg || this.primaryColor;\n this.nodeBorder = this.nodeBorder || this.primaryBorderColor;\n this.clusterBkg = this.clusterBkg || this.tertiaryColor;\n this.clusterBorder = this.clusterBorder || this.tertiaryBorderColor;\n this.defaultLinkColor = this.defaultLinkColor || this.lineColor;\n this.titleColor = this.titleColor || this.tertiaryTextColor;\n this.edgeLabelBackground = this.edgeLabelBackground || (this.darkMode ? darken(this.secondaryColor, 30) : this.secondaryColor);\n this.nodeTextColor = this.nodeTextColor || this.primaryTextColor;\n this.actorBorder = this.actorBorder || this.primaryBorderColor;\n this.actorBkg = this.actorBkg || this.mainBkg;\n this.actorTextColor = this.actorTextColor || this.primaryTextColor;\n this.actorLineColor = this.actorLineColor || \"grey\";\n this.labelBoxBkgColor = this.labelBoxBkgColor || this.actorBkg;\n this.signalColor = this.signalColor || this.textColor;\n this.signalTextColor = this.signalTextColor || this.textColor;\n this.labelBoxBorderColor = this.labelBoxBorderColor || this.actorBorder;\n this.labelTextColor = this.labelTextColor || this.actorTextColor;\n this.loopTextColor = this.loopTextColor || this.actorTextColor;\n this.activationBorderColor = this.activationBorderColor || darken(this.secondaryColor, 10);\n this.activationBkgColor = this.activationBkgColor || this.secondaryColor;\n this.sequenceNumberColor = this.sequenceNumberColor || invert(this.lineColor);\n this.sectionBkgColor = this.sectionBkgColor || this.tertiaryColor;\n this.altSectionBkgColor = this.altSectionBkgColor || \"white\";\n this.sectionBkgColor = this.sectionBkgColor || this.secondaryColor;\n this.sectionBkgColor2 = this.sectionBkgColor2 || this.primaryColor;\n this.excludeBkgColor = this.excludeBkgColor || \"#eeeeee\";\n this.taskBorderColor = this.taskBorderColor || this.primaryBorderColor;\n this.taskBkgColor = this.taskBkgColor || this.primaryColor;\n this.activeTaskBorderColor = this.activeTaskBorderColor || this.primaryColor;\n this.activeTaskBkgColor = this.activeTaskBkgColor || lighten(this.primaryColor, 23);\n this.gridColor = this.gridColor || \"lightgrey\";\n this.doneTaskBkgColor = this.doneTaskBkgColor || \"lightgrey\";\n this.doneTaskBorderColor = this.doneTaskBorderColor || \"grey\";\n this.critBorderColor = this.critBorderColor || \"#ff8888\";\n this.critBkgColor = this.critBkgColor || \"red\";\n this.todayLineColor = this.todayLineColor || \"red\";\n this.taskTextColor = this.taskTextColor || this.textColor;\n this.taskTextOutsideColor = this.taskTextOutsideColor || this.textColor;\n this.taskTextLightColor = this.taskTextLightColor || this.textColor;\n this.taskTextColor = this.taskTextColor || this.primaryTextColor;\n this.taskTextDarkColor = this.taskTextDarkColor || this.textColor;\n this.taskTextClickableColor = this.taskTextClickableColor || \"#003163\";\n this.personBorder = this.personBorder || this.primaryBorderColor;\n this.personBkg = this.personBkg || this.mainBkg;\n this.transitionColor = this.transitionColor || this.lineColor;\n this.transitionLabelColor = this.transitionLabelColor || this.textColor;\n this.stateLabelColor = this.stateLabelColor || this.stateBkg || this.primaryTextColor;\n this.stateBkg = this.stateBkg || this.mainBkg;\n this.labelBackgroundColor = this.labelBackgroundColor || this.stateBkg;\n this.compositeBackground = this.compositeBackground || this.background || this.tertiaryColor;\n this.altBackground = this.altBackground || this.tertiaryColor;\n this.compositeTitleBackground = this.compositeTitleBackground || this.mainBkg;\n this.compositeBorder = this.compositeBorder || this.nodeBorder;\n this.innerEndBackground = this.nodeBorder;\n this.errorBkgColor = this.errorBkgColor || this.tertiaryColor;\n this.errorTextColor = this.errorTextColor || this.tertiaryTextColor;\n this.transitionColor = this.transitionColor || this.lineColor;\n this.specialStateColor = this.lineColor;\n this.cScale0 = this.cScale0 || this.primaryColor;\n this.cScale1 = this.cScale1 || this.secondaryColor;\n this.cScale2 = this.cScale2 || this.tertiaryColor;\n this.cScale3 = this.cScale3 || adjust(this.primaryColor, { h: 30 });\n this.cScale4 = this.cScale4 || adjust(this.primaryColor, { h: 60 });\n this.cScale5 = this.cScale5 || adjust(this.primaryColor, { h: 90 });\n this.cScale6 = this.cScale6 || adjust(this.primaryColor, { h: 120 });\n this.cScale7 = this.cScale7 || adjust(this.primaryColor, { h: 150 });\n this.cScale8 = this.cScale8 || adjust(this.primaryColor, { h: 210, l: 150 });\n this.cScale9 = this.cScale9 || adjust(this.primaryColor, { h: 270 });\n this.cScale10 = this.cScale10 || adjust(this.primaryColor, { h: 300 });\n this.cScale11 = this.cScale11 || adjust(this.primaryColor, { h: 330 });\n if (this.darkMode) {\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this[\"cScale\" + i] = darken(this[\"cScale\" + i], 75);\n }\n } else {\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this[\"cScale\" + i] = darken(this[\"cScale\" + i], 25);\n }\n }\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this[\"cScaleInv\" + i] = this[\"cScaleInv\" + i] || invert(this[\"cScale\" + i]);\n }\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n if (this.darkMode) {\n this[\"cScalePeer\" + i] = this[\"cScalePeer\" + i] || lighten(this[\"cScale\" + i], 10);\n } else {\n this[\"cScalePeer\" + i] = this[\"cScalePeer\" + i] || darken(this[\"cScale\" + i], 10);\n }\n }\n this.scaleLabelColor = this.scaleLabelColor || this.labelTextColor;\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this[\"cScaleLabel\" + i] = this[\"cScaleLabel\" + i] || this.scaleLabelColor;\n }\n const multiplier = this.darkMode ? -4 : -1;\n for (let i = 0; i < 5; i++) {\n this[\"surface\" + i] = this[\"surface\" + i] || adjust(this.mainBkg, { h: 180, s: -15, l: multiplier * (5 + i * 3) });\n this[\"surfacePeer\" + i] = this[\"surfacePeer\" + i] || adjust(this.mainBkg, { h: 180, s: -15, l: multiplier * (8 + i * 3) });\n }\n this.classText = this.classText || this.textColor;\n this.fillType0 = this.fillType0 || this.primaryColor;\n this.fillType1 = this.fillType1 || this.secondaryColor;\n this.fillType2 = this.fillType2 || adjust(this.primaryColor, { h: 64 });\n this.fillType3 = this.fillType3 || adjust(this.secondaryColor, { h: 64 });\n this.fillType4 = this.fillType4 || adjust(this.primaryColor, { h: -64 });\n this.fillType5 = this.fillType5 || adjust(this.secondaryColor, { h: -64 });\n this.fillType6 = this.fillType6 || adjust(this.primaryColor, { h: 128 });\n this.fillType7 = this.fillType7 || adjust(this.secondaryColor, { h: 128 });\n this.pie1 = this.pie1 || this.primaryColor;\n this.pie2 = this.pie2 || this.secondaryColor;\n this.pie3 = this.pie3 || this.tertiaryColor;\n this.pie4 = this.pie4 || adjust(this.primaryColor, { l: -10 });\n this.pie5 = this.pie5 || adjust(this.secondaryColor, { l: -10 });\n this.pie6 = this.pie6 || adjust(this.tertiaryColor, { l: -10 });\n this.pie7 = this.pie7 || adjust(this.primaryColor, { h: 60, l: -10 });\n this.pie8 = this.pie8 || adjust(this.primaryColor, { h: -60, l: -10 });\n this.pie9 = this.pie9 || adjust(this.primaryColor, { h: 120, l: 0 });\n this.pie10 = this.pie10 || adjust(this.primaryColor, { h: 60, l: -20 });\n this.pie11 = this.pie11 || adjust(this.primaryColor, { h: -60, l: -20 });\n this.pie12 = this.pie12 || adjust(this.primaryColor, { h: 120, l: -10 });\n this.pieTitleTextSize = this.pieTitleTextSize || \"25px\";\n this.pieTitleTextColor = this.pieTitleTextColor || this.taskTextDarkColor;\n this.pieSectionTextSize = this.pieSectionTextSize || \"17px\";\n this.pieSectionTextColor = this.pieSectionTextColor || this.textColor;\n this.pieLegendTextSize = this.pieLegendTextSize || \"17px\";\n this.pieLegendTextColor = this.pieLegendTextColor || this.taskTextDarkColor;\n this.pieStrokeColor = this.pieStrokeColor || \"black\";\n this.pieStrokeWidth = this.pieStrokeWidth || \"2px\";\n this.pieOuterStrokeWidth = this.pieOuterStrokeWidth || \"2px\";\n this.pieOuterStrokeColor = this.pieOuterStrokeColor || \"black\";\n this.pieOpacity = this.pieOpacity || \"0.7\";\n this.quadrant1Fill = this.quadrant1Fill || this.primaryColor;\n this.quadrant2Fill = this.quadrant2Fill || adjust(this.primaryColor, { r: 5, g: 5, b: 5 });\n this.quadrant3Fill = this.quadrant3Fill || adjust(this.primaryColor, { r: 10, g: 10, b: 10 });\n this.quadrant4Fill = this.quadrant4Fill || adjust(this.primaryColor, { r: 15, g: 15, b: 15 });\n this.quadrant1TextFill = this.quadrant1TextFill || this.primaryTextColor;\n this.quadrant2TextFill = this.quadrant2TextFill || adjust(this.primaryTextColor, { r: -5, g: -5, b: -5 });\n this.quadrant3TextFill = this.quadrant3TextFill || adjust(this.primaryTextColor, { r: -10, g: -10, b: -10 });\n this.quadrant4TextFill = this.quadrant4TextFill || adjust(this.primaryTextColor, { r: -15, g: -15, b: -15 });\n this.quadrantPointFill = this.quadrantPointFill || isDark(this.quadrant1Fill) ? lighten(this.quadrant1Fill) : darken(this.quadrant1Fill);\n this.quadrantPointTextFill = this.quadrantPointTextFill || this.primaryTextColor;\n this.quadrantXAxisTextFill = this.quadrantXAxisTextFill || this.primaryTextColor;\n this.quadrantYAxisTextFill = this.quadrantYAxisTextFill || this.primaryTextColor;\n this.quadrantInternalBorderStrokeFill = this.quadrantInternalBorderStrokeFill || this.primaryBorderColor;\n this.quadrantExternalBorderStrokeFill = this.quadrantExternalBorderStrokeFill || this.primaryBorderColor;\n this.quadrantTitleFill = this.quadrantTitleFill || this.primaryTextColor;\n this.xyChart = {\n backgroundColor: ((_a = this.xyChart) == null ? void 0 : _a.backgroundColor) || this.background,\n titleColor: ((_b = this.xyChart) == null ? void 0 : _b.titleColor) || this.primaryTextColor,\n xAxisTitleColor: ((_c = this.xyChart) == null ? void 0 : _c.xAxisTitleColor) || this.primaryTextColor,\n xAxisLabelColor: ((_d = this.xyChart) == null ? void 0 : _d.xAxisLabelColor) || this.primaryTextColor,\n xAxisTickColor: ((_e = this.xyChart) == null ? void 0 : _e.xAxisTickColor) || this.primaryTextColor,\n xAxisLineColor: ((_f = this.xyChart) == null ? void 0 : _f.xAxisLineColor) || this.primaryTextColor,\n yAxisTitleColor: ((_g = this.xyChart) == null ? void 0 : _g.yAxisTitleColor) || this.primaryTextColor,\n yAxisLabelColor: ((_h = this.xyChart) == null ? void 0 : _h.yAxisLabelColor) || this.primaryTextColor,\n yAxisTickColor: ((_i = this.xyChart) == null ? void 0 : _i.yAxisTickColor) || this.primaryTextColor,\n yAxisLineColor: ((_j = this.xyChart) == null ? void 0 : _j.yAxisLineColor) || this.primaryTextColor,\n plotColorPalette: ((_k = this.xyChart) == null ? void 0 : _k.plotColorPalette) || \"#FFF4DD,#FFD8B1,#FFA07A,#ECEFF1,#D6DBDF,#C3E0A8,#FFB6A4,#FFD74D,#738FA7,#FFFFF0\"\n };\n this.requirementBackground = this.requirementBackground || this.primaryColor;\n this.requirementBorderColor = this.requirementBorderColor || this.primaryBorderColor;\n this.requirementBorderSize = this.requirementBorderSize || \"1\";\n this.requirementTextColor = this.requirementTextColor || this.primaryTextColor;\n this.relationColor = this.relationColor || this.lineColor;\n this.relationLabelBackground = this.relationLabelBackground || (this.darkMode ? darken(this.secondaryColor, 30) : this.secondaryColor);\n this.relationLabelColor = this.relationLabelColor || this.actorTextColor;\n this.git0 = this.git0 || this.primaryColor;\n this.git1 = this.git1 || this.secondaryColor;\n this.git2 = this.git2 || this.tertiaryColor;\n this.git3 = this.git3 || adjust(this.primaryColor, { h: -30 });\n this.git4 = this.git4 || adjust(this.primaryColor, { h: -60 });\n this.git5 = this.git5 || adjust(this.primaryColor, { h: -90 });\n this.git6 = this.git6 || adjust(this.primaryColor, { h: 60 });\n this.git7 = this.git7 || adjust(this.primaryColor, { h: 120 });\n if (this.darkMode) {\n this.git0 = lighten(this.git0, 25);\n this.git1 = lighten(this.git1, 25);\n this.git2 = lighten(this.git2, 25);\n this.git3 = lighten(this.git3, 25);\n this.git4 = lighten(this.git4, 25);\n this.git5 = lighten(this.git5, 25);\n this.git6 = lighten(this.git6, 25);\n this.git7 = lighten(this.git7, 25);\n } else {\n this.git0 = darken(this.git0, 25);\n this.git1 = darken(this.git1, 25);\n this.git2 = darken(this.git2, 25);\n this.git3 = darken(this.git3, 25);\n this.git4 = darken(this.git4, 25);\n this.git5 = darken(this.git5, 25);\n this.git6 = darken(this.git6, 25);\n this.git7 = darken(this.git7, 25);\n }\n this.gitInv0 = this.gitInv0 || invert(this.git0);\n this.gitInv1 = this.gitInv1 || invert(this.git1);\n this.gitInv2 = this.gitInv2 || invert(this.git2);\n this.gitInv3 = this.gitInv3 || invert(this.git3);\n this.gitInv4 = this.gitInv4 || invert(this.git4);\n this.gitInv5 = this.gitInv5 || invert(this.git5);\n this.gitInv6 = this.gitInv6 || invert(this.git6);\n this.gitInv7 = this.gitInv7 || invert(this.git7);\n this.branchLabelColor = this.branchLabelColor || (this.darkMode ? \"black\" : this.labelTextColor);\n this.gitBranchLabel0 = this.gitBranchLabel0 || this.branchLabelColor;\n this.gitBranchLabel1 = this.gitBranchLabel1 || this.branchLabelColor;\n this.gitBranchLabel2 = this.gitBranchLabel2 || this.branchLabelColor;\n this.gitBranchLabel3 = this.gitBranchLabel3 || this.branchLabelColor;\n this.gitBranchLabel4 = this.gitBranchLabel4 || this.branchLabelColor;\n this.gitBranchLabel5 = this.gitBranchLabel5 || this.branchLabelColor;\n this.gitBranchLabel6 = this.gitBranchLabel6 || this.branchLabelColor;\n this.gitBranchLabel7 = this.gitBranchLabel7 || this.branchLabelColor;\n this.tagLabelColor = this.tagLabelColor || this.primaryTextColor;\n this.tagLabelBackground = this.tagLabelBackground || this.primaryColor;\n this.tagLabelBorder = this.tagBorder || this.primaryBorderColor;\n this.tagLabelFontSize = this.tagLabelFontSize || \"10px\";\n this.commitLabelColor = this.commitLabelColor || this.secondaryTextColor;\n this.commitLabelBackground = this.commitLabelBackground || this.secondaryColor;\n this.commitLabelFontSize = this.commitLabelFontSize || \"10px\";\n this.attributeBackgroundColorOdd = this.attributeBackgroundColorOdd || oldAttributeBackgroundColorOdd;\n this.attributeBackgroundColorEven = this.attributeBackgroundColorEven || oldAttributeBackgroundColorEven;\n }\n calculate(overrides) {\n if (typeof overrides !== \"object\") {\n this.updateColors();\n return;\n }\n const keys = Object.keys(overrides);\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n this.updateColors();\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n }\n};\nconst getThemeVariables$4 = (userOverrides) => {\n const theme2 = new Theme$4();\n theme2.calculate(userOverrides);\n return theme2;\n};\nlet Theme$3 = class Theme2 {\n constructor() {\n this.background = \"#333\";\n this.primaryColor = \"#1f2020\";\n this.secondaryColor = lighten(this.primaryColor, 16);\n this.tertiaryColor = adjust(this.primaryColor, { h: -160 });\n this.primaryBorderColor = invert(this.background);\n this.secondaryBorderColor = mkBorder(this.secondaryColor, this.darkMode);\n this.tertiaryBorderColor = mkBorder(this.tertiaryColor, this.darkMode);\n this.primaryTextColor = invert(this.primaryColor);\n this.secondaryTextColor = invert(this.secondaryColor);\n this.tertiaryTextColor = invert(this.tertiaryColor);\n this.lineColor = invert(this.background);\n this.textColor = invert(this.background);\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, sans-serif';\n this.fontSize = \"16px\";\n this.labelBackground = \"#181818\";\n this.textColor = \"#ccc\";\n this.THEME_COLOR_LIMIT = 12;\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 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 this.sectionBkgColor = darken(\"#EAE8D9\", 30);\n this.altSectionBkgColor = \"calculated\";\n this.sectionBkgColor2 = \"#EAE8D9\";\n this.excludeBkgColor = darken(this.sectionBkgColor, 10);\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 this.personBorder = this.primaryBorderColor;\n this.personBkg = this.mainBkg;\n this.labelColor = \"calculated\";\n this.errorBkgColor = \"#a44141\";\n this.errorTextColor = \"#ddd\";\n }\n updateColors() {\n var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k;\n this.secondBkg = lighten(this.mainBkg, 16);\n this.lineColor = this.mainContrastColor;\n this.arrowheadColor = this.mainContrastColor;\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 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.secondaryBorderColor;\n this.noteBkgColor = this.secondBkg;\n this.noteTextColor = this.secondaryTextColor;\n this.activationBorderColor = this.border1;\n this.activationBkgColor = this.secondBkg;\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 this.transitionColor = this.transitionColor || this.lineColor;\n this.transitionLabelColor = this.transitionLabelColor || this.textColor;\n this.stateLabelColor = this.stateLabelColor || this.stateBkg || this.primaryTextColor;\n this.stateBkg = this.stateBkg || this.mainBkg;\n this.labelBackgroundColor = this.labelBackgroundColor || this.stateBkg;\n this.compositeBackground = this.compositeBackground || this.background || this.tertiaryColor;\n this.altBackground = this.altBackground || \"#555\";\n this.compositeTitleBackground = this.compositeTitleBackground || this.mainBkg;\n this.compositeBorder = this.compositeBorder || this.nodeBorder;\n this.innerEndBackground = this.primaryBorderColor;\n this.specialStateColor = \"#f4f4f4\";\n this.errorBkgColor = this.errorBkgColor || this.tertiaryColor;\n this.errorTextColor = this.errorTextColor || this.tertiaryTextColor;\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 this.cScale1 = this.cScale1 || \"#0b0000\";\n this.cScale2 = this.cScale2 || \"#4d1037\";\n this.cScale3 = this.cScale3 || \"#3f5258\";\n this.cScale4 = this.cScale4 || \"#4f2f1b\";\n this.cScale5 = this.cScale5 || \"#6e0a0a\";\n this.cScale6 = this.cScale6 || \"#3b0048\";\n this.cScale7 = this.cScale7 || \"#995a01\";\n this.cScale8 = this.cScale8 || \"#154706\";\n this.cScale9 = this.cScale9 || \"#161722\";\n this.cScale10 = this.cScale10 || \"#00296f\";\n this.cScale11 = this.cScale11 || \"#01629c\";\n this.cScale12 = this.cScale12 || \"#010029\";\n this.cScale0 = this.cScale0 || this.primaryColor;\n this.cScale1 = this.cScale1 || this.secondaryColor;\n this.cScale2 = this.cScale2 || this.tertiaryColor;\n this.cScale3 = this.cScale3 || adjust(this.primaryColor, { h: 30 });\n this.cScale4 = this.cScale4 || adjust(this.primaryColor, { h: 60 });\n this.cScale5 = this.cScale5 || adjust(this.primaryColor, { h: 90 });\n this.cScale6 = this.cScale6 || adjust(this.primaryColor, { h: 120 });\n this.cScale7 = this.cScale7 || adjust(this.primaryColor, { h: 150 });\n this.cScale8 = this.cScale8 || adjust(this.primaryColor, { h: 210 });\n this.cScale9 = this.cScale9 || adjust(this.primaryColor, { h: 270 });\n this.cScale10 = this.cScale10 || adjust(this.primaryColor, { h: 300 });\n this.cScale11 = this.cScale11 || adjust(this.primaryColor, { h: 330 });\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this[\"cScaleInv\" + i] = this[\"cScaleInv\" + i] || invert(this[\"cScale\" + i]);\n }\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this[\"cScalePeer\" + i] = this[\"cScalePeer\" + i] || lighten(this[\"cScale\" + i], 10);\n }\n for (let i = 0; i < 5; i++) {\n this[\"surface\" + i] = this[\"surface\" + i] || adjust(this.mainBkg, { h: 30, s: -30, l: -(-10 + i * 4) });\n this[\"surfacePeer\" + i] = this[\"surfacePeer\" + i] || adjust(this.mainBkg, { h: 30, s: -30, l: -(-7 + i * 4) });\n }\n this.scaleLabelColor = this.scaleLabelColor || (this.darkMode ? \"black\" : this.labelTextColor);\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this[\"cScaleLabel\" + i] = this[\"cScaleLabel\" + i] || this.scaleLabelColor;\n }\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this[\"pie\" + i] = this[\"cScale\" + i];\n }\n this.pieTitleTextSize = this.pieTitleTextSize || \"25px\";\n this.pieTitleTextColor = this.pieTitleTextColor || this.taskTextDarkColor;\n this.pieSectionTextSize = this.pieSectionTextSize || \"17px\";\n this.pieSectionTextColor = this.pieSectionTextColor || this.textColor;\n this.pieLegendTextSize = this.pieLegendTextSize || \"17px\";\n this.pieLegendTextColor = this.pieLegendTextColor || this.taskTextDarkColor;\n this.pieStrokeColor = this.pieStrokeColor || \"black\";\n this.pieStrokeWidth = this.pieStrokeWidth || \"2px\";\n this.pieOuterStrokeWidth = this.pieOuterStrokeWidth || \"2px\";\n this.pieOuterStrokeColor = this.pieOuterStrokeColor || \"black\";\n this.pieOpacity = this.pieOpacity || \"0.7\";\n this.quadrant1Fill = this.quadrant1Fill || this.primaryColor;\n this.quadrant2Fill = this.quadrant2Fill || adjust(this.primaryColor, { r: 5, g: 5, b: 5 });\n this.quadrant3Fill = this.quadrant3Fill || adjust(this.primaryColor, { r: 10, g: 10, b: 10 });\n this.quadrant4Fill = this.quadrant4Fill || adjust(this.primaryColor, { r: 15, g: 15, b: 15 });\n this.quadrant1TextFill = this.quadrant1TextFill || this.primaryTextColor;\n this.quadrant2TextFill = this.quadrant2TextFill || adjust(this.primaryTextColor, { r: -5, g: -5, b: -5 });\n this.quadrant3TextFill = this.quadrant3TextFill || adjust(this.primaryTextColor, { r: -10, g: -10, b: -10 });\n this.quadrant4TextFill = this.quadrant4TextFill || adjust(this.primaryTextColor, { r: -15, g: -15, b: -15 });\n this.quadrantPointFill = this.quadrantPointFill || isDark(this.quadrant1Fill) ? lighten(this.quadrant1Fill) : darken(this.quadrant1Fill);\n this.quadrantPointTextFill = this.quadrantPointTextFill || this.primaryTextColor;\n this.quadrantXAxisTextFill = this.quadrantXAxisTextFill || this.primaryTextColor;\n this.quadrantYAxisTextFill = this.quadrantYAxisTextFill || this.primaryTextColor;\n this.quadrantInternalBorderStrokeFill = this.quadrantInternalBorderStrokeFill || this.primaryBorderColor;\n this.quadrantExternalBorderStrokeFill = this.quadrantExternalBorderStrokeFill || this.primaryBorderColor;\n this.quadrantTitleFill = this.quadrantTitleFill || this.primaryTextColor;\n this.xyChart = {\n backgroundColor: ((_a = this.xyChart) == null ? void 0 : _a.backgroundColor) || this.background,\n titleColor: ((_b = this.xyChart) == null ? void 0 : _b.titleColor) || this.primaryTextColor,\n xAxisTitleColor: ((_c = this.xyChart) == null ? void 0 : _c.xAxisTitleColor) || this.primaryTextColor,\n xAxisLabelColor: ((_d = this.xyChart) == null ? void 0 : _d.xAxisLabelColor) || this.primaryTextColor,\n xAxisTickColor: ((_e = this.xyChart) == null ? void 0 : _e.xAxisTickColor) || this.primaryTextColor,\n xAxisLineColor: ((_f = this.xyChart) == null ? void 0 : _f.xAxisLineColor) || this.primaryTextColor,\n yAxisTitleColor: ((_g = this.xyChart) == null ? void 0 : _g.yAxisTitleColor) || this.primaryTextColor,\n yAxisLabelColor: ((_h = this.xyChart) == null ? void 0 : _h.yAxisLabelColor) || this.primaryTextColor,\n yAxisTickColor: ((_i = this.xyChart) == null ? void 0 : _i.yAxisTickColor) || this.primaryTextColor,\n yAxisLineColor: ((_j = this.xyChart) == null ? void 0 : _j.yAxisLineColor) || this.primaryTextColor,\n plotColorPalette: ((_k = this.xyChart) == null ? void 0 : _k.plotColorPalette) || \"#3498db,#2ecc71,#e74c3c,#f1c40f,#bdc3c7,#ffffff,#34495e,#9b59b6,#1abc9c,#e67e22\"\n };\n this.classText = this.primaryTextColor;\n this.requirementBackground = this.requirementBackground || this.primaryColor;\n this.requirementBorderColor = this.requirementBorderColor || this.primaryBorderColor;\n this.requirementBorderSize = this.requirementBorderSize || \"1\";\n this.requirementTextColor = this.requirementTextColor || this.primaryTextColor;\n this.relationColor = this.relationColor || this.lineColor;\n this.relationLabelBackground = this.relationLabelBackground || (this.darkMode ? darken(this.secondaryColor, 30) : this.secondaryColor);\n this.relationLabelColor = this.relationLabelColor || this.actorTextColor;\n this.git0 = lighten(this.secondaryColor, 20);\n this.git1 = lighten(this.pie2 || this.secondaryColor, 20);\n this.git2 = lighten(this.pie3 || this.tertiaryColor, 20);\n this.git3 = lighten(this.pie4 || adjust(this.primaryColor, { h: -30 }), 20);\n this.git4 = lighten(this.pie5 || adjust(this.primaryColor, { h: -60 }), 20);\n this.git5 = lighten(this.pie6 || adjust(this.primaryColor, { h: -90 }), 10);\n this.git6 = lighten(this.pie7 || adjust(this.primaryColor, { h: 60 }), 10);\n this.git7 = lighten(this.pie8 || adjust(this.primaryColor, { h: 120 }), 20);\n this.gitInv0 = this.gitInv0 || invert(this.git0);\n this.gitInv1 = this.gitInv1 || invert(this.git1);\n this.gitInv2 = this.gitInv2 || invert(this.git2);\n this.gitInv3 = this.gitInv3 || invert(this.git3);\n this.gitInv4 = this.gitInv4 || invert(this.git4);\n this.gitInv5 = this.gitInv5 || invert(this.git5);\n this.gitInv6 = this.gitInv6 || invert(this.git6);\n this.gitInv7 = this.gitInv7 || invert(this.git7);\n this.gitBranchLabel0 = this.gitBranchLabel0 || invert(this.labelTextColor);\n this.gitBranchLabel1 = this.gitBranchLabel1 || this.labelTextColor;\n this.gitBranchLabel2 = this.gitBranchLabel2 || this.labelTextColor;\n this.gitBranchLabel3 = this.gitBranchLabel3 || invert(this.labelTextColor);\n this.gitBranchLabel4 = this.gitBranchLabel4 || this.labelTextColor;\n this.gitBranchLabel5 = this.gitBranchLabel5 || this.labelTextColor;\n this.gitBranchLabel6 = this.gitBranchLabel6 || this.labelTextColor;\n this.gitBranchLabel7 = this.gitBranchLabel7 || this.labelTextColor;\n this.tagLabelColor = this.tagLabelColor || this.primaryTextColor;\n this.tagLabelBackground = this.tagLabelBackground || this.primaryColor;\n this.tagLabelBorder = this.tagBorder || this.primaryBorderColor;\n this.tagLabelFontSize = this.tagLabelFontSize || \"10px\";\n this.commitLabelColor = this.commitLabelColor || this.secondaryTextColor;\n this.commitLabelBackground = this.commitLabelBackground || this.secondaryColor;\n this.commitLabelFontSize = this.commitLabelFontSize || \"10px\";\n this.attributeBackgroundColorOdd = this.attributeBackgroundColorOdd || lighten(this.background, 12);\n this.attributeBackgroundColorEven = this.attributeBackgroundColorEven || lighten(this.background, 2);\n }\n calculate(overrides) {\n if (typeof overrides !== \"object\") {\n this.updateColors();\n return;\n }\n const keys = Object.keys(overrides);\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n this.updateColors();\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n }\n};\nconst getThemeVariables$3 = (userOverrides) => {\n const theme2 = new Theme$3();\n theme2.calculate(userOverrides);\n return theme2;\n};\nlet Theme$2 = class Theme3 {\n constructor() {\n this.background = \"#f4f4f4\";\n this.primaryColor = \"#ECECFF\";\n this.secondaryColor = adjust(this.primaryColor, { h: 120 });\n this.secondaryColor = \"#ffffde\";\n this.tertiaryColor = adjust(this.primaryColor, { h: -160 });\n this.primaryBorderColor = mkBorder(this.primaryColor, this.darkMode);\n this.secondaryBorderColor = mkBorder(this.secondaryColor, this.darkMode);\n this.tertiaryBorderColor = mkBorder(this.tertiaryColor, this.darkMode);\n this.primaryTextColor = invert(this.primaryColor);\n this.secondaryTextColor = invert(this.secondaryColor);\n this.tertiaryTextColor = invert(this.tertiaryColor);\n this.lineColor = invert(this.background);\n this.textColor = invert(this.background);\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, sans-serif';\n this.fontSize = \"16px\";\n this.labelBackground = \"#e8e8e8\";\n this.textColor = \"#333\";\n this.THEME_COLOR_LIMIT = 12;\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 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 this.sectionBkgColor = \"calculated\";\n this.altSectionBkgColor = \"calculated\";\n this.sectionBkgColor2 = \"calculated\";\n this.excludeBkgColor = \"#eeeeee\";\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 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 this.personBorder = this.primaryBorderColor;\n this.personBkg = this.mainBkg;\n this.labelColor = \"black\";\n this.errorBkgColor = \"#552222\";\n this.errorTextColor = \"#552222\";\n this.updateColors();\n }\n updateColors() {\n var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k;\n this.cScale0 = this.cScale0 || this.primaryColor;\n this.cScale1 = this.cScale1 || this.secondaryColor;\n this.cScale2 = this.cScale2 || this.tertiaryColor;\n this.cScale3 = this.cScale3 || adjust(this.primaryColor, { h: 30 });\n this.cScale4 = this.cScale4 || adjust(this.primaryColor, { h: 60 });\n this.cScale5 = this.cScale5 || adjust(this.primaryColor, { h: 90 });\n this.cScale6 = this.cScale6 || adjust(this.primaryColor, { h: 120 });\n this.cScale7 = this.cScale7 || adjust(this.primaryColor, { h: 150 });\n this.cScale8 = this.cScale8 || adjust(this.primaryColor, { h: 210 });\n this.cScale9 = this.cScale9 || adjust(this.primaryColor, { h: 270 });\n this.cScale10 = this.cScale10 || adjust(this.primaryColor, { h: 300 });\n this.cScale11 = this.cScale11 || adjust(this.primaryColor, { h: 330 });\n this[\"cScalePeer1\"] = this[\"cScalePeer1\"] || darken(this.secondaryColor, 45);\n this[\"cScalePeer2\"] = this[\"cScalePeer2\"] || darken(this.tertiaryColor, 40);\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this[\"cScale\" + i] = darken(this[\"cScale\" + i], 10);\n this[\"cScalePeer\" + i] = this[\"cScalePeer\" + i] || darken(this[\"cScale\" + i], 25);\n }\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this[\"cScaleInv\" + i] = this[\"cScaleInv\" + i] || adjust(this[\"cScale\" + i], { h: 180 });\n }\n for (let i = 0; i < 5; i++) {\n this[\"surface\" + i] = this[\"surface\" + i] || adjust(this.mainBkg, { h: 30, l: -(5 + i * 5) });\n this[\"surfacePeer\" + i] = this[\"surfacePeer\" + i] || adjust(this.mainBkg, { h: 30, l: -(7 + i * 5) });\n }\n this.scaleLabelColor = this.scaleLabelColor !== \"calculated\" && this.scaleLabelColor ? this.scaleLabelColor : this.labelTextColor;\n if (this.labelTextColor !== \"calculated\") {\n this.cScaleLabel0 = this.cScaleLabel0 || invert(this.labelTextColor);\n this.cScaleLabel3 = this.cScaleLabel3 || invert(this.labelTextColor);\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this[\"cScaleLabel\" + i] = this[\"cScaleLabel\" + i] || this.labelTextColor;\n }\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.textColor;\n this.edgeLabelBackground = this.labelBackground;\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 this.taskTextColor = this.taskTextLightColor;\n this.taskTextOutsideColor = this.taskTextDarkColor;\n this.transitionColor = this.transitionColor || this.lineColor;\n this.transitionLabelColor = this.transitionLabelColor || this.textColor;\n this.stateLabelColor = this.stateLabelColor || this.stateBkg || this.primaryTextColor;\n this.stateBkg = this.stateBkg || this.mainBkg;\n this.labelBackgroundColor = this.labelBackgroundColor || this.stateBkg;\n this.compositeBackground = this.compositeBackground || this.background || this.tertiaryColor;\n this.altBackground = this.altBackground || \"#f0f0f0\";\n this.compositeTitleBackground = this.compositeTitleBackground || this.mainBkg;\n this.compositeBorder = this.compositeBorder || this.nodeBorder;\n this.innerEndBackground = this.nodeBorder;\n this.specialStateColor = this.lineColor;\n this.errorBkgColor = this.errorBkgColor || this.tertiaryColor;\n this.errorTextColor = this.errorTextColor || this.tertiaryTextColor;\n this.transitionColor = this.transitionColor || this.lineColor;\n this.classText = this.primaryTextColor;\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 this.pie1 = this.pie1 || this.primaryColor;\n this.pie2 = this.pie2 || this.secondaryColor;\n this.pie3 = this.pie3 || adjust(this.tertiaryColor, { l: -40 });\n this.pie4 = this.pie4 || adjust(this.primaryColor, { l: -10 });\n this.pie5 = this.pie5 || adjust(this.secondaryColor, { l: -30 });\n this.pie6 = this.pie6 || adjust(this.tertiaryColor, { l: -20 });\n this.pie7 = this.pie7 || adjust(this.primaryColor, { h: 60, l: -20 });\n this.pie8 = this.pie8 || adjust(this.primaryColor, { h: -60, l: -40 });\n this.pie9 = this.pie9 || adjust(this.primaryColor, { h: 120, l: -40 });\n this.pie10 = this.pie10 || adjust(this.primaryColor, { h: 60, l: -40 });\n this.pie11 = this.pie11 || adjust(this.primaryColor, { h: -90, l: -40 });\n this.pie12 = this.pie12 || adjust(this.primaryColor, { h: 120, l: -30 });\n this.pieTitleTextSize = this.pieTitleTextSize || \"25px\";\n this.pieTitleTextColor = this.pieTitleTextColor || this.taskTextDarkColor;\n this.pieSectionTextSize = this.pieSectionTextSize || \"17px\";\n this.pieSectionTextColor = this.pieSectionTextColor || this.textColor;\n this.pieLegendTextSize = this.pieLegendTextSize || \"17px\";\n this.pieLegendTextColor = this.pieLegendTextColor || this.taskTextDarkColor;\n this.pieStrokeColor = this.pieStrokeColor || \"black\";\n this.pieStrokeWidth = this.pieStrokeWidth || \"2px\";\n this.pieOuterStrokeWidth = this.pieOuterStrokeWidth || \"2px\";\n this.pieOuterStrokeColor = this.pieOuterStrokeColor || \"black\";\n this.pieOpacity = this.pieOpacity || \"0.7\";\n this.quadrant1Fill = this.quadrant1Fill || this.primaryColor;\n this.quadrant2Fill = this.quadrant2Fill || adjust(this.primaryColor, { r: 5, g: 5, b: 5 });\n this.quadrant3Fill = this.quadrant3Fill || adjust(this.primaryColor, { r: 10, g: 10, b: 10 });\n this.quadrant4Fill = this.quadrant4Fill || adjust(this.primaryColor, { r: 15, g: 15, b: 15 });\n this.quadrant1TextFill = this.quadrant1TextFill || this.primaryTextColor;\n this.quadrant2TextFill = this.quadrant2TextFill || adjust(this.primaryTextColor, { r: -5, g: -5, b: -5 });\n this.quadrant3TextFill = this.quadrant3TextFill || adjust(this.primaryTextColor, { r: -10, g: -10, b: -10 });\n this.quadrant4TextFill = this.quadrant4TextFill || adjust(this.primaryTextColor, { r: -15, g: -15, b: -15 });\n this.quadrantPointFill = this.quadrantPointFill || isDark(this.quadrant1Fill) ? lighten(this.quadrant1Fill) : darken(this.quadrant1Fill);\n this.quadrantPointTextFill = this.quadrantPointTextFill || this.primaryTextColor;\n this.quadrantXAxisTextFill = this.quadrantXAxisTextFill || this.primaryTextColor;\n this.quadrantYAxisTextFill = this.quadrantYAxisTextFill || this.primaryTextColor;\n this.quadrantInternalBorderStrokeFill = this.quadrantInternalBorderStrokeFill || this.primaryBorderColor;\n this.quadrantExternalBorderStrokeFill = this.quadrantExternalBorderStrokeFill || this.primaryBorderColor;\n this.quadrantTitleFill = this.quadrantTitleFill || this.primaryTextColor;\n this.xyChart = {\n backgroundColor: ((_a = this.xyChart) == null ? void 0 : _a.backgroundColor) || this.background,\n titleColor: ((_b = this.xyChart) == null ? void 0 : _b.titleColor) || this.primaryTextColor,\n xAxisTitleColor: ((_c = this.xyChart) == null ? void 0 : _c.xAxisTitleColor) || this.primaryTextColor,\n xAxisLabelColor: ((_d = this.xyChart) == null ? void 0 : _d.xAxisLabelColor) || this.primaryTextColor,\n xAxisTickColor: ((_e = this.xyChart) == null ? void 0 : _e.xAxisTickColor) || this.primaryTextColor,\n xAxisLineColor: ((_f = this.xyChart) == null ? void 0 : _f.xAxisLineColor) || this.primaryTextColor,\n yAxisTitleColor: ((_g = this.xyChart) == null ? void 0 : _g.yAxisTitleColor) || this.primaryTextColor,\n yAxisLabelColor: ((_h = this.xyChart) == null ? void 0 : _h.yAxisLabelColor) || this.primaryTextColor,\n yAxisTickColor: ((_i = this.xyChart) == null ? void 0 : _i.yAxisTickColor) || this.primaryTextColor,\n yAxisLineColor: ((_j = this.xyChart) == null ? void 0 : _j.yAxisLineColor) || this.primaryTextColor,\n plotColorPalette: ((_k = this.xyChart) == null ? void 0 : _k.plotColorPalette) || \"#ECECFF,#8493A6,#FFC3A0,#DCDDE1,#B8E994,#D1A36F,#C3CDE6,#FFB6C1,#496078,#F8F3E3\"\n };\n this.requirementBackground = this.requirementBackground || this.primaryColor;\n this.requirementBorderColor = this.requirementBorderColor || this.primaryBorderColor;\n this.requirementBorderSize = this.requirementBorderSize || \"1\";\n this.requirementTextColor = this.requirementTextColor || this.primaryTextColor;\n this.relationColor = this.relationColor || this.lineColor;\n this.relationLabelBackground = this.relationLabelBackground || this.labelBackground;\n this.relationLabelColor = this.relationLabelColor || this.actorTextColor;\n this.git0 = this.git0 || this.primaryColor;\n this.git1 = this.git1 || this.secondaryColor;\n this.git2 = this.git2 || this.tertiaryColor;\n this.git3 = this.git3 || adjust(this.primaryColor, { h: -30 });\n this.git4 = this.git4 || adjust(this.primaryColor, { h: -60 });\n this.git5 = this.git5 || adjust(this.primaryColor, { h: -90 });\n this.git6 = this.git6 || adjust(this.primaryColor, { h: 60 });\n this.git7 = this.git7 || adjust(this.primaryColor, { h: 120 });\n if (this.darkMode) {\n this.git0 = lighten(this.git0, 25);\n this.git1 = lighten(this.git1, 25);\n this.git2 = lighten(this.git2, 25);\n this.git3 = lighten(this.git3, 25);\n this.git4 = lighten(this.git4, 25);\n this.git5 = lighten(this.git5, 25);\n this.git6 = lighten(this.git6, 25);\n this.git7 = lighten(this.git7, 25);\n } else {\n this.git0 = darken(this.git0, 25);\n this.git1 = darken(this.git1, 25);\n this.git2 = darken(this.git2, 25);\n this.git3 = darken(this.git3, 25);\n this.git4 = darken(this.git4, 25);\n this.git5 = darken(this.git5, 25);\n this.git6 = darken(this.git6, 25);\n this.git7 = darken(this.git7, 25);\n }\n this.gitInv0 = this.gitInv0 || darken(invert(this.git0), 25);\n this.gitInv1 = this.gitInv1 || invert(this.git1);\n this.gitInv2 = this.gitInv2 || invert(this.git2);\n this.gitInv3 = this.gitInv3 || invert(this.git3);\n this.gitInv4 = this.gitInv4 || invert(this.git4);\n this.gitInv5 = this.gitInv5 || invert(this.git5);\n this.gitInv6 = this.gitInv6 || invert(this.git6);\n this.gitInv7 = this.gitInv7 || invert(this.git7);\n this.gitBranchLabel0 = this.gitBranchLabel0 || invert(this.labelTextColor);\n this.gitBranchLabel1 = this.gitBranchLabel1 || this.labelTextColor;\n this.gitBranchLabel2 = this.gitBranchLabel2 || this.labelTextColor;\n this.gitBranchLabel3 = this.gitBranchLabel3 || invert(this.labelTextColor);\n this.gitBranchLabel4 = this.gitBranchLabel4 || this.labelTextColor;\n this.gitBranchLabel5 = this.gitBranchLabel5 || this.labelTextColor;\n this.gitBranchLabel6 = this.gitBranchLabel6 || this.labelTextColor;\n this.gitBranchLabel7 = this.gitBranchLabel7 || this.labelTextColor;\n this.tagLabelColor = this.tagLabelColor || this.primaryTextColor;\n this.tagLabelBackground = this.tagLabelBackground || this.primaryColor;\n this.tagLabelBorder = this.tagBorder || this.primaryBorderColor;\n this.tagLabelFontSize = this.tagLabelFontSize || \"10px\";\n this.commitLabelColor = this.commitLabelColor || this.secondaryTextColor;\n this.commitLabelBackground = this.commitLabelBackground || this.secondaryColor;\n this.commitLabelFontSize = this.commitLabelFontSize || \"10px\";\n this.attributeBackgroundColorOdd = this.attributeBackgroundColorOdd || oldAttributeBackgroundColorOdd;\n this.attributeBackgroundColorEven = this.attributeBackgroundColorEven || oldAttributeBackgroundColorEven;\n }\n calculate(overrides) {\n if (typeof overrides !== \"object\") {\n this.updateColors();\n return;\n }\n const keys = Object.keys(overrides);\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n this.updateColors();\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n }\n};\nconst getThemeVariables$2 = (userOverrides) => {\n const theme2 = new Theme$2();\n theme2.calculate(userOverrides);\n return theme2;\n};\nlet Theme$1 = class Theme4 {\n constructor() {\n this.background = \"#f4f4f4\";\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, sans-serif';\n this.fontSize = \"16px\";\n this.tertiaryColor = lighten(\"#cde498\", 10);\n this.primaryBorderColor = mkBorder(this.primaryColor, this.darkMode);\n this.secondaryBorderColor = mkBorder(this.secondaryColor, this.darkMode);\n this.tertiaryBorderColor = mkBorder(this.tertiaryColor, this.darkMode);\n this.primaryTextColor = invert(this.primaryColor);\n this.secondaryTextColor = invert(this.secondaryColor);\n this.tertiaryTextColor = invert(this.primaryColor);\n this.lineColor = invert(this.background);\n this.textColor = invert(this.background);\n this.THEME_COLOR_LIMIT = 12;\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 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 this.sectionBkgColor = \"#6eaa49\";\n this.altSectionBkgColor = \"white\";\n this.sectionBkgColor2 = \"#6eaa49\";\n this.excludeBkgColor = \"#eeeeee\";\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 this.personBorder = this.primaryBorderColor;\n this.personBkg = this.mainBkg;\n this.labelColor = \"black\";\n this.errorBkgColor = \"#552222\";\n this.errorTextColor = \"#552222\";\n }\n updateColors() {\n var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k;\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 this.cScale0 = this.cScale0 || this.primaryColor;\n this.cScale1 = this.cScale1 || this.secondaryColor;\n this.cScale2 = this.cScale2 || this.tertiaryColor;\n this.cScale3 = this.cScale3 || adjust(this.primaryColor, { h: 30 });\n this.cScale4 = this.cScale4 || adjust(this.primaryColor, { h: 60 });\n this.cScale5 = this.cScale5 || adjust(this.primaryColor, { h: 90 });\n this.cScale6 = this.cScale6 || adjust(this.primaryColor, { h: 120 });\n this.cScale7 = this.cScale7 || adjust(this.primaryColor, { h: 150 });\n this.cScale8 = this.cScale8 || adjust(this.primaryColor, { h: 210 });\n this.cScale9 = this.cScale9 || adjust(this.primaryColor, { h: 270 });\n this.cScale10 = this.cScale10 || adjust(this.primaryColor, { h: 300 });\n this.cScale11 = this.cScale11 || adjust(this.primaryColor, { h: 330 });\n this[\"cScalePeer1\"] = this[\"cScalePeer1\"] || darken(this.secondaryColor, 45);\n this[\"cScalePeer2\"] = this[\"cScalePeer2\"] || darken(this.tertiaryColor, 40);\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this[\"cScale\" + i] = darken(this[\"cScale\" + i], 10);\n this[\"cScalePeer\" + i] = this[\"cScalePeer\" + i] || darken(this[\"cScale\" + i], 25);\n }\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this[\"cScaleInv\" + i] = this[\"cScaleInv\" + i] || adjust(this[\"cScale\" + i], { h: 180 });\n }\n this.scaleLabelColor = this.scaleLabelColor !== \"calculated\" && this.scaleLabelColor ? this.scaleLabelColor : this.labelTextColor;\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this[\"cScaleLabel\" + i] = this[\"cScaleLabel\" + i] || this.scaleLabelColor;\n }\n for (let i = 0; i < 5; i++) {\n this[\"surface\" + i] = this[\"surface\" + i] || adjust(this.mainBkg, { h: 30, s: -30, l: -(5 + i * 5) });\n this[\"surfacePeer\" + i] = this[\"surfacePeer\" + i] || adjust(this.mainBkg, { h: 30, s: -30, l: -(8 + i * 5) });\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.taskBorderColor = this.border1;\n this.taskTextColor = this.taskTextLightColor;\n this.taskTextOutsideColor = this.taskTextDarkColor;\n this.activeTaskBorderColor = this.taskBorderColor;\n this.activeTaskBkgColor = this.mainBkg;\n this.transitionColor = this.transitionColor || this.lineColor;\n this.transitionLabelColor = this.transitionLabelColor || this.textColor;\n this.stateLabelColor = this.stateLabelColor || this.stateBkg || this.primaryTextColor;\n this.stateBkg = this.stateBkg || this.mainBkg;\n this.labelBackgroundColor = this.labelBackgroundColor || this.stateBkg;\n this.compositeBackground = this.compositeBackground || this.background || this.tertiaryColor;\n this.altBackground = this.altBackground || \"#f0f0f0\";\n this.compositeTitleBackground = this.compositeTitleBackground || this.mainBkg;\n this.compositeBorder = this.compositeBorder || this.nodeBorder;\n this.innerEndBackground = this.primaryBorderColor;\n this.specialStateColor = this.lineColor;\n this.errorBkgColor = this.errorBkgColor || this.tertiaryColor;\n this.errorTextColor = this.errorTextColor || this.tertiaryTextColor;\n this.transitionColor = this.transitionColor || this.lineColor;\n this.classText = this.primaryTextColor;\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 this.pie1 = this.pie1 || this.primaryColor;\n this.pie2 = this.pie2 || this.secondaryColor;\n this.pie3 = this.pie3 || this.tertiaryColor;\n this.pie4 = this.pie4 || adjust(this.primaryColor, { l: -30 });\n this.pie5 = this.pie5 || adjust(this.secondaryColor, { l: -30 });\n this.pie6 = this.pie6 || adjust(this.tertiaryColor, { h: 40, l: -40 });\n this.pie7 = this.pie7 || adjust(this.primaryColor, { h: 60, l: -10 });\n this.pie8 = this.pie8 || adjust(this.primaryColor, { h: -60, l: -10 });\n this.pie9 = this.pie9 || adjust(this.primaryColor, { h: 120, l: 0 });\n this.pie10 = this.pie10 || adjust(this.primaryColor, { h: 60, l: -50 });\n this.pie11 = this.pie11 || adjust(this.primaryColor, { h: -60, l: -50 });\n this.pie12 = this.pie12 || adjust(this.primaryColor, { h: 120, l: -50 });\n this.pieTitleTextSize = this.pieTitleTextSize || \"25px\";\n this.pieTitleTextColor = this.pieTitleTextColor || this.taskTextDarkColor;\n this.pieSectionTextSize = this.pieSectionTextSize || \"17px\";\n this.pieSectionTextColor = this.pieSectionTextColor || this.textColor;\n this.pieLegendTextSize = this.pieLegendTextSize || \"17px\";\n this.pieLegendTextColor = this.pieLegendTextColor || this.taskTextDarkColor;\n this.pieStrokeColor = this.pieStrokeColor || \"black\";\n this.pieStrokeWidth = this.pieStrokeWidth || \"2px\";\n this.pieOuterStrokeWidth = this.pieOuterStrokeWidth || \"2px\";\n this.pieOuterStrokeColor = this.pieOuterStrokeColor || \"black\";\n this.pieOpacity = this.pieOpacity || \"0.7\";\n this.quadrant1Fill = this.quadrant1Fill || this.primaryColor;\n this.quadrant2Fill = this.quadrant2Fill || adjust(this.primaryColor, { r: 5, g: 5, b: 5 });\n this.quadrant3Fill = this.quadrant3Fill || adjust(this.primaryColor, { r: 10, g: 10, b: 10 });\n this.quadrant4Fill = this.quadrant4Fill || adjust(this.primaryColor, { r: 15, g: 15, b: 15 });\n this.quadrant1TextFill = this.quadrant1TextFill || this.primaryTextColor;\n this.quadrant2TextFill = this.quadrant2TextFill || adjust(this.primaryTextColor, { r: -5, g: -5, b: -5 });\n this.quadrant3TextFill = this.quadrant3TextFill || adjust(this.primaryTextColor, { r: -10, g: -10, b: -10 });\n this.quadrant4TextFill = this.quadrant4TextFill || adjust(this.primaryTextColor, { r: -15, g: -15, b: -15 });\n this.quadrantPointFill = this.quadrantPointFill || isDark(this.quadrant1Fill) ? lighten(this.quadrant1Fill) : darken(this.quadrant1Fill);\n this.quadrantPointTextFill = this.quadrantPointTextFill || this.primaryTextColor;\n this.quadrantXAxisTextFill = this.quadrantXAxisTextFill || this.primaryTextColor;\n this.quadrantYAxisTextFill = this.quadrantYAxisTextFill || this.primaryTextColor;\n this.quadrantInternalBorderStrokeFill = this.quadrantInternalBorderStrokeFill || this.primaryBorderColor;\n this.quadrantExternalBorderStrokeFill = this.quadrantExternalBorderStrokeFill || this.primaryBorderColor;\n this.quadrantTitleFill = this.quadrantTitleFill || this.primaryTextColor;\n this.xyChart = {\n backgroundColor: ((_a = this.xyChart) == null ? void 0 : _a.backgroundColor) || this.background,\n titleColor: ((_b = this.xyChart) == null ? void 0 : _b.titleColor) || this.primaryTextColor,\n xAxisTitleColor: ((_c = this.xyChart) == null ? void 0 : _c.xAxisTitleColor) || this.primaryTextColor,\n xAxisLabelColor: ((_d = this.xyChart) == null ? void 0 : _d.xAxisLabelColor) || this.primaryTextColor,\n xAxisTickColor: ((_e = this.xyChart) == null ? void 0 : _e.xAxisTickColor) || this.primaryTextColor,\n xAxisLineColor: ((_f = this.xyChart) == null ? void 0 : _f.xAxisLineColor) || this.primaryTextColor,\n yAxisTitleColor: ((_g = this.xyChart) == null ? void 0 : _g.yAxisTitleColor) || this.primaryTextColor,\n yAxisLabelColor: ((_h = this.xyChart) == null ? void 0 : _h.yAxisLabelColor) || this.primaryTextColor,\n yAxisTickColor: ((_i = this.xyChart) == null ? void 0 : _i.yAxisTickColor) || this.primaryTextColor,\n yAxisLineColor: ((_j = this.xyChart) == null ? void 0 : _j.yAxisLineColor) || this.primaryTextColor,\n plotColorPalette: ((_k = this.xyChart) == null ? void 0 : _k.plotColorPalette) || \"#CDE498,#FF6B6B,#A0D2DB,#D7BDE2,#F0F0F0,#FFC3A0,#7FD8BE,#FF9A8B,#FAF3E0,#FFF176\"\n };\n this.requirementBackground = this.requirementBackground || this.primaryColor;\n this.requirementBorderColor = this.requirementBorderColor || this.primaryBorderColor;\n this.requirementBorderSize = this.requirementBorderSize || \"1\";\n this.requirementTextColor = this.requirementTextColor || this.primaryTextColor;\n this.relationColor = this.relationColor || this.lineColor;\n this.relationLabelBackground = this.relationLabelBackground || this.edgeLabelBackground;\n this.relationLabelColor = this.relationLabelColor || this.actorTextColor;\n this.git0 = this.git0 || this.primaryColor;\n this.git1 = this.git1 || this.secondaryColor;\n this.git2 = this.git2 || this.tertiaryColor;\n this.git3 = this.git3 || adjust(this.primaryColor, { h: -30 });\n this.git4 = this.git4 || adjust(this.primaryColor, { h: -60 });\n this.git5 = this.git5 || adjust(this.primaryColor, { h: -90 });\n this.git6 = this.git6 || adjust(this.primaryColor, { h: 60 });\n this.git7 = this.git7 || adjust(this.primaryColor, { h: 120 });\n if (this.darkMode) {\n this.git0 = lighten(this.git0, 25);\n this.git1 = lighten(this.git1, 25);\n this.git2 = lighten(this.git2, 25);\n this.git3 = lighten(this.git3, 25);\n this.git4 = lighten(this.git4, 25);\n this.git5 = lighten(this.git5, 25);\n this.git6 = lighten(this.git6, 25);\n this.git7 = lighten(this.git7, 25);\n } else {\n this.git0 = darken(this.git0, 25);\n this.git1 = darken(this.git1, 25);\n this.git2 = darken(this.git2, 25);\n this.git3 = darken(this.git3, 25);\n this.git4 = darken(this.git4, 25);\n this.git5 = darken(this.git5, 25);\n this.git6 = darken(this.git6, 25);\n this.git7 = darken(this.git7, 25);\n }\n this.gitInv0 = this.gitInv0 || invert(this.git0);\n this.gitInv1 = this.gitInv1 || invert(this.git1);\n this.gitInv2 = this.gitInv2 || invert(this.git2);\n this.gitInv3 = this.gitInv3 || invert(this.git3);\n this.gitInv4 = this.gitInv4 || invert(this.git4);\n this.gitInv5 = this.gitInv5 || invert(this.git5);\n this.gitInv6 = this.gitInv6 || invert(this.git6);\n this.gitInv7 = this.gitInv7 || invert(this.git7);\n this.gitBranchLabel0 = this.gitBranchLabel0 || invert(this.labelTextColor);\n this.gitBranchLabel1 = this.gitBranchLabel1 || this.labelTextColor;\n this.gitBranchLabel2 = this.gitBranchLabel2 || this.labelTextColor;\n this.gitBranchLabel3 = this.gitBranchLabel3 || invert(this.labelTextColor);\n this.gitBranchLabel4 = this.gitBranchLabel4 || this.labelTextColor;\n this.gitBranchLabel5 = this.gitBranchLabel5 || this.labelTextColor;\n this.gitBranchLabel6 = this.gitBranchLabel6 || this.labelTextColor;\n this.gitBranchLabel7 = this.gitBranchLabel7 || this.labelTextColor;\n this.tagLabelColor = this.tagLabelColor || this.primaryTextColor;\n this.tagLabelBackground = this.tagLabelBackground || this.primaryColor;\n this.tagLabelBorder = this.tagBorder || this.primaryBorderColor;\n this.tagLabelFontSize = this.tagLabelFontSize || \"10px\";\n this.commitLabelColor = this.commitLabelColor || this.secondaryTextColor;\n this.commitLabelBackground = this.commitLabelBackground || this.secondaryColor;\n this.commitLabelFontSize = this.commitLabelFontSize || \"10px\";\n this.attributeBackgroundColorOdd = this.attributeBackgroundColorOdd || oldAttributeBackgroundColorOdd;\n this.attributeBackgroundColorEven = this.attributeBackgroundColorEven || oldAttributeBackgroundColorEven;\n }\n calculate(overrides) {\n if (typeof overrides !== \"object\") {\n this.updateColors();\n return;\n }\n const keys = Object.keys(overrides);\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n this.updateColors();\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n }\n};\nconst getThemeVariables$1 = (userOverrides) => {\n const theme2 = new Theme$1();\n theme2.calculate(userOverrides);\n return theme2;\n};\nclass Theme5 {\n constructor() {\n this.primaryColor = \"#eee\";\n this.contrast = \"#707070\";\n this.secondaryColor = lighten(this.contrast, 55);\n this.background = \"#ffffff\";\n this.tertiaryColor = adjust(this.primaryColor, { h: -160 });\n this.primaryBorderColor = mkBorder(this.primaryColor, this.darkMode);\n this.secondaryBorderColor = mkBorder(this.secondaryColor, this.darkMode);\n this.tertiaryBorderColor = mkBorder(this.tertiaryColor, this.darkMode);\n this.primaryTextColor = invert(this.primaryColor);\n this.secondaryTextColor = invert(this.secondaryColor);\n this.tertiaryTextColor = invert(this.tertiaryColor);\n this.lineColor = invert(this.background);\n this.textColor = invert(this.background);\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, sans-serif';\n this.fontSize = \"16px\";\n this.THEME_COLOR_LIMIT = 12;\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 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 this.sectionBkgColor = \"calculated\";\n this.altSectionBkgColor = \"white\";\n this.sectionBkgColor2 = \"calculated\";\n this.excludeBkgColor = \"#eeeeee\";\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 this.personBorder = this.primaryBorderColor;\n this.personBkg = this.mainBkg;\n this.labelColor = \"black\";\n this.errorBkgColor = \"#552222\";\n this.errorTextColor = \"#552222\";\n }\n updateColors() {\n var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k;\n this.secondBkg = lighten(this.contrast, 55);\n this.border2 = this.contrast;\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 = \"#999\";\n this.noteBkgColor = \"#666\";\n this.noteTextColor = \"#fff\";\n this.cScale0 = this.cScale0 || \"#555\";\n this.cScale1 = this.cScale1 || \"#F4F4F4\";\n this.cScale2 = this.cScale2 || \"#555\";\n this.cScale3 = this.cScale3 || \"#BBB\";\n this.cScale4 = this.cScale4 || \"#777\";\n this.cScale5 = this.cScale5 || \"#999\";\n this.cScale6 = this.cScale6 || \"#DDD\";\n this.cScale7 = this.cScale7 || \"#FFF\";\n this.cScale8 = this.cScale8 || \"#DDD\";\n this.cScale9 = this.cScale9 || \"#BBB\";\n this.cScale10 = this.cScale10 || \"#999\";\n this.cScale11 = this.cScale11 || \"#777\";\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this[\"cScaleInv\" + i] = this[\"cScaleInv\" + i] || invert(this[\"cScale\" + i]);\n }\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n if (this.darkMode) {\n this[\"cScalePeer\" + i] = this[\"cScalePeer\" + i] || lighten(this[\"cScale\" + i], 10);\n } else {\n this[\"cScalePeer\" + i] = this[\"cScalePeer\" + i] || darken(this[\"cScale\" + i], 10);\n }\n }\n this.scaleLabelColor = this.scaleLabelColor || (this.darkMode ? \"black\" : this.labelTextColor);\n this[\"cScaleLabel0\"] = this[\"cScaleLabel0\"] || this.cScale1;\n this[\"cScaleLabel2\"] = this[\"cScaleLabel2\"] || this.cScale1;\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this[\"cScaleLabel\" + i] = this[\"cScaleLabel\" + i] || this.scaleLabelColor;\n }\n for (let i = 0; i < 5; i++) {\n this[\"surface\" + i] = this[\"surface\" + i] || adjust(this.mainBkg, { l: -(5 + i * 5) });\n this[\"surfacePeer\" + i] = this[\"surfacePeer\" + i] || adjust(this.mainBkg, { l: -(8 + i * 5) });\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 this.sectionBkgColor = lighten(this.contrast, 30);\n this.sectionBkgColor2 = lighten(this.contrast, 30);\n this.taskBorderColor = darken(this.contrast, 10);\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 this.doneTaskBkgColor = this.done;\n this.doneTaskBorderColor = this.lineColor;\n this.critBkgColor = this.critical;\n this.critBorderColor = darken(this.critBkgColor, 10);\n this.todayLineColor = this.critBkgColor;\n this.transitionColor = this.transitionColor || \"#000\";\n this.transitionLabelColor = this.transitionLabelColor || this.textColor;\n this.stateLabelColor = this.stateLabelColor || this.stateBkg || this.primaryTextColor;\n this.stateBkg = this.stateBkg || this.mainBkg;\n this.labelBackgroundColor = this.labelBackgroundColor || this.stateBkg;\n this.compositeBackground = this.compositeBackground || this.background || this.tertiaryColor;\n this.altBackground = this.altBackground || \"#f4f4f4\";\n this.compositeTitleBackground = this.compositeTitleBackground || this.mainBkg;\n this.stateBorder = this.stateBorder || \"#000\";\n this.innerEndBackground = this.primaryBorderColor;\n this.specialStateColor = \"#222\";\n this.errorBkgColor = this.errorBkgColor || this.tertiaryColor;\n this.errorTextColor = this.errorTextColor || this.tertiaryTextColor;\n this.classText = this.primaryTextColor;\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 for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this[\"pie\" + i] = this[\"cScale\" + i];\n }\n this.pie12 = this.pie0;\n this.pieTitleTextSize = this.pieTitleTextSize || \"25px\";\n this.pieTitleTextColor = this.pieTitleTextColor || this.taskTextDarkColor;\n this.pieSectionTextSize = this.pieSectionTextSize || \"17px\";\n this.pieSectionTextColor = this.pieSectionTextColor || this.textColor;\n this.pieLegendTextSize = this.pieLegendTextSize || \"17px\";\n this.pieLegendTextColor = this.pieLegendTextColor || this.taskTextDarkColor;\n this.pieStrokeColor = this.pieStrokeColor || \"black\";\n this.pieStrokeWidth = this.pieStrokeWidth || \"2px\";\n this.pieOuterStrokeWidth = this.pieOuterStrokeWidth || \"2px\";\n this.pieOuterStrokeColor = this.pieOuterStrokeColor || \"black\";\n this.pieOpacity = this.pieOpacity || \"0.7\";\n this.quadrant1Fill = this.quadrant1Fill || this.primaryColor;\n this.quadrant2Fill = this.quadrant2Fill || adjust(this.primaryColor, { r: 5, g: 5, b: 5 });\n this.quadrant3Fill = this.quadrant3Fill || adjust(this.primaryColor, { r: 10, g: 10, b: 10 });\n this.quadrant4Fill = this.quadrant4Fill || adjust(this.primaryColor, { r: 15, g: 15, b: 15 });\n this.quadrant1TextFill = this.quadrant1TextFill || this.primaryTextColor;\n this.quadrant2TextFill = this.quadrant2TextFill || adjust(this.primaryTextColor, { r: -5, g: -5, b: -5 });\n this.quadrant3TextFill = this.quadrant3TextFill || adjust(this.primaryTextColor, { r: -10, g: -10, b: -10 });\n this.quadrant4TextFill = this.quadrant4TextFill || adjust(this.primaryTextColor, { r: -15, g: -15, b: -15 });\n this.quadrantPointFill = this.quadrantPointFill || isDark(this.quadrant1Fill) ? lighten(this.quadrant1Fill) : darken(this.quadrant1Fill);\n this.quadrantPointTextFill = this.quadrantPointTextFill || this.primaryTextColor;\n this.quadrantXAxisTextFill = this.quadrantXAxisTextFill || this.primaryTextColor;\n this.quadrantYAxisTextFill = this.quadrantYAxisTextFill || this.primaryTextColor;\n this.quadrantInternalBorderStrokeFill = this.quadrantInternalBorderStrokeFill || this.primaryBorderColor;\n this.quadrantExternalBorderStrokeFill = this.quadrantExternalBorderStrokeFill || this.primaryBorderColor;\n this.quadrantTitleFill = this.quadrantTitleFill || this.primaryTextColor;\n this.xyChart = {\n backgroundColor: ((_a = this.xyChart) == null ? void 0 : _a.backgroundColor) || this.background,\n titleColor: ((_b = this.xyChart) == null ? void 0 : _b.titleColor) || this.primaryTextColor,\n xAxisTitleColor: ((_c = this.xyChart) == null ? void 0 : _c.xAxisTitleColor) || this.primaryTextColor,\n xAxisLabelColor: ((_d = this.xyChart) == null ? void 0 : _d.xAxisLabelColor) || this.primaryTextColor,\n xAxisTickColor: ((_e = this.xyChart) == null ? void 0 : _e.xAxisTickColor) || this.primaryTextColor,\n xAxisLineColor: ((_f = this.xyChart) == null ? void 0 : _f.xAxisLineColor) || this.primaryTextColor,\n yAxisTitleColor: ((_g = this.xyChart) == null ? void 0 : _g.yAxisTitleColor) || this.primaryTextColor,\n yAxisLabelColor: ((_h = this.xyChart) == null ? void 0 : _h.yAxisLabelColor) || this.primaryTextColor,\n yAxisTickColor: ((_i = this.xyChart) == null ? void 0 : _i.yAxisTickColor) || this.primaryTextColor,\n yAxisLineColor: ((_j = this.xyChart) == null ? void 0 : _j.yAxisLineColor) || this.primaryTextColor,\n plotColorPalette: ((_k = this.xyChart) == null ? void 0 : _k.plotColorPalette) || \"#EEE,#6BB8E4,#8ACB88,#C7ACD6,#E8DCC2,#FFB2A8,#FFF380,#7E8D91,#FFD8B1,#FAF3E0\"\n };\n this.requirementBackground = this.requirementBackground || this.primaryColor;\n this.requirementBorderColor = this.requirementBorderColor || this.primaryBorderColor;\n this.requirementBorderSize = this.requirementBorderSize || \"1\";\n this.requirementTextColor = this.requirementTextColor || this.primaryTextColor;\n this.relationColor = this.relationColor || this.lineColor;\n this.relationLabelBackground = this.relationLabelBackground || this.edgeLabelBackground;\n this.relationLabelColor = this.relationLabelColor || this.actorTextColor;\n this.git0 = darken(this.pie1, 25) || this.primaryColor;\n this.git1 = this.pie2 || this.secondaryColor;\n this.git2 = this.pie3 || this.tertiaryColor;\n this.git3 = this.pie4 || adjust(this.primaryColor, { h: -30 });\n this.git4 = this.pie5 || adjust(this.primaryColor, { h: -60 });\n this.git5 = this.pie6 || adjust(this.primaryColor, { h: -90 });\n this.git6 = this.pie7 || adjust(this.primaryColor, { h: 60 });\n this.git7 = this.pie8 || adjust(this.primaryColor, { h: 120 });\n this.gitInv0 = this.gitInv0 || invert(this.git0);\n this.gitInv1 = this.gitInv1 || invert(this.git1);\n this.gitInv2 = this.gitInv2 || invert(this.git2);\n this.gitInv3 = this.gitInv3 || invert(this.git3);\n this.gitInv4 = this.gitInv4 || invert(this.git4);\n this.gitInv5 = this.gitInv5 || invert(this.git5);\n this.gitInv6 = this.gitInv6 || invert(this.git6);\n this.gitInv7 = this.gitInv7 || invert(this.git7);\n this.branchLabelColor = this.branchLabelColor || this.labelTextColor;\n this.gitBranchLabel0 = this.branchLabelColor;\n this.gitBranchLabel1 = \"white\";\n this.gitBranchLabel2 = this.branchLabelColor;\n this.gitBranchLabel3 = \"white\";\n this.gitBranchLabel4 = this.branchLabelColor;\n this.gitBranchLabel5 = this.branchLabelColor;\n this.gitBranchLabel6 = this.branchLabelColor;\n this.gitBranchLabel7 = this.branchLabelColor;\n this.tagLabelColor = this.tagLabelColor || this.primaryTextColor;\n this.tagLabelBackground = this.tagLabelBackground || this.primaryColor;\n this.tagLabelBorder = this.tagBorder || this.primaryBorderColor;\n this.tagLabelFontSize = this.tagLabelFontSize || \"10px\";\n this.commitLabelColor = this.commitLabelColor || this.secondaryTextColor;\n this.commitLabelBackground = this.commitLabelBackground || this.secondaryColor;\n this.commitLabelFontSize = this.commitLabelFontSize || \"10px\";\n this.attributeBackgroundColorOdd = this.attributeBackgroundColorOdd || oldAttributeBackgroundColorOdd;\n this.attributeBackgroundColorEven = this.attributeBackgroundColorEven || oldAttributeBackgroundColorEven;\n }\n calculate(overrides) {\n if (typeof overrides !== \"object\") {\n this.updateColors();\n return;\n }\n const keys = Object.keys(overrides);\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n this.updateColors();\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n }\n}\nconst getThemeVariables = (userOverrides) => {\n const theme2 = new Theme5();\n theme2.calculate(userOverrides);\n return theme2;\n};\nconst theme = {\n base: {\n getThemeVariables: getThemeVariables$4\n },\n dark: {\n getThemeVariables: getThemeVariables$3\n },\n default: {\n getThemeVariables: getThemeVariables$2\n },\n forest: {\n getThemeVariables: getThemeVariables$1\n },\n neutral: {\n getThemeVariables\n }\n};\nconst defaultConfigJson = {\n \"flowchart\": {\n \"useMaxWidth\": true,\n \"titleTopMargin\": 25,\n \"subGraphTitleMargin\": {\n \"top\": 0,\n \"bottom\": 0\n },\n \"diagramPadding\": 8,\n \"htmlLabels\": true,\n \"nodeSpacing\": 50,\n \"rankSpacing\": 50,\n \"curve\": \"basis\",\n \"padding\": 15,\n \"defaultRenderer\": \"dagre-wrapper\",\n \"wrappingWidth\": 200\n },\n \"sequence\": {\n \"useMaxWidth\": true,\n \"hideUnusedParticipants\": false,\n \"activationWidth\": 10,\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 \"forceMenus\": false,\n \"bottomMarginAdj\": 1,\n \"rightAngles\": false,\n \"showSequenceNumbers\": false,\n \"actorFontSize\": 14,\n \"actorFontFamily\": '\"Open Sans\", sans-serif',\n \"actorFontWeight\": 400,\n \"noteFontSize\": 14,\n \"noteFontFamily\": '\"trebuchet ms\", verdana, arial, sans-serif',\n \"noteFontWeight\": 400,\n \"noteAlign\": \"center\",\n \"messageFontSize\": 16,\n \"messageFontFamily\": '\"trebuchet ms\", verdana, arial, sans-serif',\n \"messageFontWeight\": 400,\n \"wrap\": false,\n \"wrapPadding\": 10,\n \"labelBoxWidth\": 50,\n \"labelBoxHeight\": 20\n },\n \"gantt\": {\n \"useMaxWidth\": true,\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 \"sectionFontSize\": 11,\n \"numberSectionStyles\": 4,\n \"axisFormat\": \"%Y-%m-%d\",\n \"topAxis\": false,\n \"displayMode\": \"\",\n \"weekday\": \"sunday\"\n },\n \"journey\": {\n \"useMaxWidth\": true,\n \"diagramMarginX\": 50,\n \"diagramMarginY\": 10,\n \"leftMargin\": 150,\n \"width\": 150,\n \"height\": 50,\n \"boxMargin\": 10,\n \"boxTextMargin\": 5,\n \"noteMargin\": 10,\n \"messageMargin\": 35,\n \"messageAlign\": \"center\",\n \"bottomMarginAdj\": 1,\n \"rightAngles\": false,\n \"taskFontSize\": 14,\n \"taskFontFamily\": '\"Open Sans\", sans-serif',\n \"taskMargin\": 50,\n \"activationWidth\": 10,\n \"textPlacement\": \"fo\",\n \"actorColours\": [\n \"#8FBC8F\",\n \"#7CFC00\",\n \"#00FFFF\",\n \"#20B2AA\",\n \"#B0E0E6\",\n \"#FFFFE0\"\n ],\n \"sectionFills\": [\n \"#191970\",\n \"#8B008B\",\n \"#4B0082\",\n \"#2F4F4F\",\n \"#800000\",\n \"#8B4513\",\n \"#00008B\"\n ],\n \"sectionColours\": [\n \"#fff\"\n ]\n },\n \"class\": {\n \"useMaxWidth\": true,\n \"titleTopMargin\": 25,\n \"arrowMarkerAbsolute\": false,\n \"dividerMargin\": 10,\n \"padding\": 5,\n \"textHeight\": 10,\n \"defaultRenderer\": \"dagre-wrapper\",\n \"htmlLabels\": false\n },\n \"state\": {\n \"useMaxWidth\": true,\n \"titleTopMargin\": 25,\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 \"miniPadding\": 2,\n \"fontSizeFactor\": 5.02,\n \"fontSize\": 24,\n \"labelHeight\": 16,\n \"edgeLengthFactor\": \"20\",\n \"compositTitleSize\": 35,\n \"radius\": 5,\n \"defaultRenderer\": \"dagre-wrapper\"\n },\n \"er\": {\n \"useMaxWidth\": true,\n \"titleTopMargin\": 25,\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 },\n \"pie\": {\n \"useMaxWidth\": true,\n \"textPosition\": 0.75\n },\n \"quadrantChart\": {\n \"useMaxWidth\": true,\n \"chartWidth\": 500,\n \"chartHeight\": 500,\n \"titleFontSize\": 20,\n \"titlePadding\": 10,\n \"quadrantPadding\": 5,\n \"xAxisLabelPadding\": 5,\n \"yAxisLabelPadding\": 5,\n \"xAxisLabelFontSize\": 16,\n \"yAxisLabelFontSize\": 16,\n \"quadrantLabelFontSize\": 16,\n \"quadrantTextTopPadding\": 5,\n \"pointTextPadding\": 5,\n \"pointLabelFontSize\": 12,\n \"pointRadius\": 5,\n \"xAxisPosition\": \"top\",\n \"yAxisPosition\": \"left\",\n \"quadrantInternalBorderStrokeWidth\": 1,\n \"quadrantExternalBorderStrokeWidth\": 2\n },\n \"xyChart\": {\n \"useMaxWidth\": true,\n \"width\": 700,\n \"height\": 500,\n \"titleFontSize\": 20,\n \"titlePadding\": 10,\n \"showTitle\": true,\n \"xAxis\": {\n \"$ref\": \"#/$defs/XYChartAxisConfig\",\n \"showLabel\": true,\n \"labelFontSize\": 14,\n \"labelPadding\": 5,\n \"showTitle\": true,\n \"titleFontSize\": 16,\n \"titlePadding\": 5,\n \"showTick\": true,\n \"tickLength\": 5,\n \"tickWidth\": 2,\n \"showAxisLine\": true,\n \"axisLineWidth\": 2\n },\n \"yAxis\": {\n \"$ref\": \"#/$defs/XYChartAxisConfig\",\n \"showLabel\": true,\n \"labelFontSize\": 14,\n \"labelPadding\": 5,\n \"showTitle\": true,\n \"titleFontSize\": 16,\n \"titlePadding\": 5,\n \"showTick\": true,\n \"tickLength\": 5,\n \"tickWidth\": 2,\n \"showAxisLine\": true,\n \"axisLineWidth\": 2\n },\n \"chartOrientation\": \"vertical\",\n \"plotReservedSpacePercent\": 50\n },\n \"requirement\": {\n \"useMaxWidth\": true,\n \"rect_fill\": \"#f9f9f9\",\n \"text_color\": \"#333\",\n \"rect_border_size\": \"0.5px\",\n \"rect_border_color\": \"#bbb\",\n \"rect_min_width\": 200,\n \"rect_min_height\": 200,\n \"fontSize\": 14,\n \"rect_padding\": 10,\n \"line_height\": 20\n },\n \"mindmap\": {\n \"useMaxWidth\": true,\n \"padding\": 10,\n \"maxNodeWidth\": 200\n },\n \"timeline\": {\n \"useMaxWidth\": true,\n \"diagramMarginX\": 50,\n \"diagramMarginY\": 10,\n \"leftMargin\": 150,\n \"width\": 150,\n \"height\": 50,\n \"boxMargin\": 10,\n \"boxTextMargin\": 5,\n \"noteMargin\": 10,\n \"messageMargin\": 35,\n \"messageAlign\": \"center\",\n \"bottomMarginAdj\": 1,\n \"rightAngles\": false,\n \"taskFontSize\": 14,\n \"taskFontFamily\": '\"Open Sans\", sans-serif',\n \"taskMargin\": 50,\n \"activationWidth\": 10,\n \"textPlacement\": \"fo\",\n \"actorColours\": [\n \"#8FBC8F\",\n \"#7CFC00\",\n \"#00FFFF\",\n \"#20B2AA\",\n \"#B0E0E6\",\n \"#FFFFE0\"\n ],\n \"sectionFills\": [\n \"#191970\",\n \"#8B008B\",\n \"#4B0082\",\n \"#2F4F4F\",\n \"#800000\",\n \"#8B4513\",\n \"#00008B\"\n ],\n \"sectionColours\": [\n \"#fff\"\n ],\n \"disableMulticolor\": false\n },\n \"gitGraph\": {\n \"useMaxWidth\": true,\n \"titleTopMargin\": 25,\n \"diagramPadding\": 8,\n \"nodeLabel\": {\n \"width\": 75,\n \"height\": 100,\n \"x\": -25,\n \"y\": 0\n },\n \"mainBranchName\": \"main\",\n \"mainBranchOrder\": 0,\n \"showCommitLabel\": true,\n \"showBranches\": true,\n \"rotateCommitLabel\": true,\n \"parallelCommits\": false,\n \"arrowMarkerAbsolute\": false\n },\n \"c4\": {\n \"useMaxWidth\": true,\n \"diagramMarginX\": 50,\n \"diagramMarginY\": 10,\n \"c4ShapeMargin\": 50,\n \"c4ShapePadding\": 20,\n \"width\": 216,\n \"height\": 60,\n \"boxMargin\": 10,\n \"c4ShapeInRow\": 4,\n \"nextLinePaddingX\": 0,\n \"c4BoundaryInRow\": 2,\n \"personFontSize\": 14,\n \"personFontFamily\": '\"Open Sans\", sans-serif',\n \"personFontWeight\": \"normal\",\n \"external_personFontSize\": 14,\n \"external_personFontFamily\": '\"Open Sans\", sans-serif',\n \"external_personFontWeight\": \"normal\",\n \"systemFontSize\": 14,\n \"systemFontFamily\": '\"Open Sans\", sans-serif',\n \"systemFontWeight\": \"normal\",\n \"external_systemFontSize\": 14,\n \"external_systemFontFamily\": '\"Open Sans\", sans-serif',\n \"external_systemFontWeight\": \"normal\",\n \"system_dbFontSize\": 14,\n \"system_dbFontFamily\": '\"Open Sans\", sans-serif',\n \"system_dbFontWeight\": \"normal\",\n \"external_system_dbFontSize\": 14,\n \"external_system_dbFontFamily\": '\"Open Sans\", sans-serif',\n \"external_system_dbFontWeight\": \"normal\",\n \"system_queueFontSize\": 14,\n \"system_queueFontFamily\": '\"Open Sans\", sans-serif',\n \"system_queueFontWeight\": \"normal\",\n \"external_system_queueFontSize\": 14,\n \"external_system_queueFontFamily\": '\"Open Sans\", sans-serif',\n \"external_system_queueFontWeight\": \"normal\",\n \"boundaryFontSize\": 14,\n \"boundaryFontFamily\": '\"Open Sans\", sans-serif',\n \"boundaryFontWeight\": \"normal\",\n \"messageFontSize\": 12,\n \"messageFontFamily\": '\"Open Sans\", sans-serif',\n \"messageFontWeight\": \"normal\",\n \"containerFontSize\": 14,\n \"containerFontFamily\": '\"Open Sans\", sans-serif',\n \"containerFontWeight\": \"normal\",\n \"external_containerFontSize\": 14,\n \"external_containerFontFamily\": '\"Open Sans\", sans-serif',\n \"external_containerFontWeight\": \"normal\",\n \"container_dbFontSize\": 14,\n \"container_dbFontFamily\": '\"Open Sans\", sans-serif',\n \"container_dbFontWeight\": \"normal\",\n \"external_container_dbFontSize\": 14,\n \"external_container_dbFontFamily\": '\"Open Sans\", sans-serif',\n \"external_container_dbFontWeight\": \"normal\",\n \"container_queueFontSize\": 14,\n \"container_queueFontFamily\": '\"Open Sans\", sans-serif',\n \"container_queueFontWeight\": \"normal\",\n \"external_container_queueFontSize\": 14,\n \"external_container_queueFontFamily\": '\"Open Sans\", sans-serif',\n \"external_container_queueFontWeight\": \"normal\",\n \"componentFontSize\": 14,\n \"componentFontFamily\": '\"Open Sans\", sans-serif',\n \"componentFontWeight\": \"normal\",\n \"external_componentFontSize\": 14,\n \"external_componentFontFamily\": '\"Open Sans\", sans-serif',\n \"external_componentFontWeight\": \"normal\",\n \"component_dbFontSize\": 14,\n \"component_dbFontFamily\": '\"Open Sans\", sans-serif',\n \"component_dbFontWeight\": \"normal\",\n \"external_component_dbFontSize\": 14,\n \"external_component_dbFontFamily\": '\"Open Sans\", sans-serif',\n \"external_component_dbFontWeight\": \"normal\",\n \"component_queueFontSize\": 14,\n \"component_queueFontFamily\": '\"Open Sans\", sans-serif',\n \"component_queueFontWeight\": \"normal\",\n \"external_component_queueFontSize\": 14,\n \"external_component_queueFontFamily\": '\"Open Sans\", sans-serif',\n \"external_component_queueFontWeight\": \"normal\",\n \"wrap\": true,\n \"wrapPadding\": 10,\n \"person_bg_color\": \"#08427B\",\n \"person_border_color\": \"#073B6F\",\n \"external_person_bg_color\": \"#686868\",\n \"external_person_border_color\": \"#8A8A8A\",\n \"system_bg_color\": \"#1168BD\",\n \"system_border_color\": \"#3C7FC0\",\n \"system_db_bg_color\": \"#1168BD\",\n \"system_db_border_color\": \"#3C7FC0\",\n \"system_queue_bg_color\": \"#1168BD\",\n \"system_queue_border_color\": \"#3C7FC0\",\n \"external_system_bg_color\": \"#999999\",\n \"external_system_border_color\": \"#8A8A8A\",\n \"external_system_db_bg_color\": \"#999999\",\n \"external_system_db_border_color\": \"#8A8A8A\",\n \"external_system_queue_bg_color\": \"#999999\",\n \"external_system_queue_border_color\": \"#8A8A8A\",\n \"container_bg_color\": \"#438DD5\",\n \"container_border_color\": \"#3C7FC0\",\n \"container_db_bg_color\": \"#438DD5\",\n \"container_db_border_color\": \"#3C7FC0\",\n \"container_queue_bg_color\": \"#438DD5\",\n \"container_queue_border_color\": \"#3C7FC0\",\n \"external_container_bg_color\": \"#B3B3B3\",\n \"external_container_border_color\": \"#A6A6A6\",\n \"external_container_db_bg_color\": \"#B3B3B3\",\n \"external_container_db_border_color\": \"#A6A6A6\",\n \"external_container_queue_bg_color\": \"#B3B3B3\",\n \"external_container_queue_border_color\": \"#A6A6A6\",\n \"component_bg_color\": \"#85BBF0\",\n \"component_border_color\": \"#78A8D8\",\n \"component_db_bg_color\": \"#85BBF0\",\n \"component_db_border_color\": \"#78A8D8\",\n \"component_queue_bg_color\": \"#85BBF0\",\n \"component_queue_border_color\": \"#78A8D8\",\n \"external_component_bg_color\": \"#CCCCCC\",\n \"external_component_border_color\": \"#BFBFBF\",\n \"external_component_db_bg_color\": \"#CCCCCC\",\n \"external_component_db_border_color\": \"#BFBFBF\",\n \"external_component_queue_bg_color\": \"#CCCCCC\",\n \"external_component_queue_border_color\": \"#BFBFBF\"\n },\n \"sankey\": {\n \"useMaxWidth\": true,\n \"width\": 600,\n \"height\": 400,\n \"linkColor\": \"gradient\",\n \"nodeAlignment\": \"justify\",\n \"showValues\": true,\n \"prefix\": \"\",\n \"suffix\": \"\"\n },\n \"block\": {\n \"useMaxWidth\": true,\n \"padding\": 8\n },\n \"theme\": \"default\",\n \"maxTextSize\": 5e4,\n \"maxEdges\": 500,\n \"darkMode\": false,\n \"fontFamily\": '\"trebuchet ms\", verdana, arial, sans-serif;',\n \"logLevel\": 5,\n \"securityLevel\": \"strict\",\n \"startOnLoad\": true,\n \"arrowMarkerAbsolute\": false,\n \"secure\": [\n \"secure\",\n \"securityLevel\",\n \"startOnLoad\",\n \"maxTextSize\",\n \"maxEdges\"\n ],\n \"legacyMathML\": false,\n \"deterministicIds\": false,\n \"fontSize\": 16\n};\nconst config = {\n ...defaultConfigJson,\n // Set, even though they're `undefined` so that `configKeys` finds these keys\n // TODO: Should we replace these with `null` so that they can go in the JSON Schema?\n deterministicIDSeed: void 0,\n themeCSS: void 0,\n // add non-JSON default config values\n themeVariables: theme[\"default\"].getThemeVariables(),\n sequence: {\n ...defaultConfigJson.sequence,\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 gantt: {\n ...defaultConfigJson.gantt,\n tickInterval: void 0,\n useWidth: void 0\n // can probably be removed since `configKeys` already includes this\n },\n c4: {\n ...defaultConfigJson.c4,\n useWidth: void 0,\n personFont: function() {\n return {\n fontFamily: this.personFontFamily,\n fontSize: this.personFontSize,\n fontWeight: this.personFontWeight\n };\n },\n external_personFont: function() {\n return {\n fontFamily: this.external_personFontFamily,\n fontSize: this.external_personFontSize,\n fontWeight: this.external_personFontWeight\n };\n },\n systemFont: function() {\n return {\n fontFamily: this.systemFontFamily,\n fontSize: this.systemFontSize,\n fontWeight: this.systemFontWeight\n };\n },\n external_systemFont: function() {\n return {\n fontFamily: this.external_systemFontFamily,\n fontSize: this.external_systemFontSize,\n fontWeight: this.external_systemFontWeight\n };\n },\n system_dbFont: function() {\n return {\n fontFamily: this.system_dbFontFamily,\n fontSize: this.system_dbFontSize,\n fontWeight: this.system_dbFontWeight\n };\n },\n external_system_dbFont: function() {\n return {\n fontFamily: this.external_system_dbFontFamily,\n fontSize: this.external_system_dbFontSize,\n fontWeight: this.external_system_dbFontWeight\n };\n },\n system_queueFont: function() {\n return {\n fontFamily: this.system_queueFontFamily,\n fontSize: this.system_queueFontSize,\n fontWeight: this.system_queueFontWeight\n };\n },\n external_system_queueFont: function() {\n return {\n fontFamily: this.external_system_queueFontFamily,\n fontSize: this.external_system_queueFontSize,\n fontWeight: this.external_system_queueFontWeight\n };\n },\n containerFont: function() {\n return {\n fontFamily: this.containerFontFamily,\n fontSize: this.containerFontSize,\n fontWeight: this.containerFontWeight\n };\n },\n external_containerFont: function() {\n return {\n fontFamily: this.external_containerFontFamily,\n fontSize: this.external_containerFontSize,\n fontWeight: this.external_containerFontWeight\n };\n },\n container_dbFont: function() {\n return {\n fontFamily: this.container_dbFontFamily,\n fontSize: this.container_dbFontSize,\n fontWeight: this.container_dbFontWeight\n };\n },\n external_container_dbFont: function() {\n return {\n fontFamily: this.external_container_dbFontFamily,\n fontSize: this.external_container_dbFontSize,\n fontWeight: this.external_container_dbFontWeight\n };\n },\n container_queueFont: function() {\n return {\n fontFamily: this.container_queueFontFamily,\n fontSize: this.container_queueFontSize,\n fontWeight: this.container_queueFontWeight\n };\n },\n external_container_queueFont: function() {\n return {\n fontFamily: this.external_container_queueFontFamily,\n fontSize: this.external_container_queueFontSize,\n fontWeight: this.external_container_queueFontWeight\n };\n },\n componentFont: function() {\n return {\n fontFamily: this.componentFontFamily,\n fontSize: this.componentFontSize,\n fontWeight: this.componentFontWeight\n };\n },\n external_componentFont: function() {\n return {\n fontFamily: this.external_componentFontFamily,\n fontSize: this.external_componentFontSize,\n fontWeight: this.external_componentFontWeight\n };\n },\n component_dbFont: function() {\n return {\n fontFamily: this.component_dbFontFamily,\n fontSize: this.component_dbFontSize,\n fontWeight: this.component_dbFontWeight\n };\n },\n external_component_dbFont: function() {\n return {\n fontFamily: this.external_component_dbFontFamily,\n fontSize: this.external_component_dbFontSize,\n fontWeight: this.external_component_dbFontWeight\n };\n },\n component_queueFont: function() {\n return {\n fontFamily: this.component_queueFontFamily,\n fontSize: this.component_queueFontSize,\n fontWeight: this.component_queueFontWeight\n };\n },\n external_component_queueFont: function() {\n return {\n fontFamily: this.external_component_queueFontFamily,\n fontSize: this.external_component_queueFontSize,\n fontWeight: this.external_component_queueFontWeight\n };\n },\n boundaryFont: function() {\n return {\n fontFamily: this.boundaryFontFamily,\n fontSize: this.boundaryFontSize,\n fontWeight: this.boundaryFontWeight\n };\n },\n messageFont: function() {\n return {\n fontFamily: this.messageFontFamily,\n fontSize: this.messageFontSize,\n fontWeight: this.messageFontWeight\n };\n }\n },\n pie: {\n ...defaultConfigJson.pie,\n useWidth: 984\n },\n xyChart: {\n ...defaultConfigJson.xyChart,\n useWidth: void 0\n },\n requirement: {\n ...defaultConfigJson.requirement,\n useWidth: void 0\n },\n gitGraph: {\n ...defaultConfigJson.gitGraph,\n // TODO: This is a temporary override for `gitGraph`, since every other\n // diagram does have `useMaxWidth`, but instead sets it to `true`.\n // Should we set this to `true` instead?\n useMaxWidth: false\n },\n sankey: {\n ...defaultConfigJson.sankey,\n // this is false, unlike every other diagram (other than gitGraph)\n // TODO: can we make this default to `true` instead?\n useMaxWidth: false\n }\n};\nconst keyify = (obj, prefix = \"\") => Object.keys(obj).reduce((res, el) => {\n if (Array.isArray(obj[el])) {\n return res;\n } else if (typeof obj[el] === \"object\" && obj[el] !== null) {\n return [...res, prefix + el, ...keyify(obj[el], \"\")];\n }\n return [...res, prefix + el];\n}, []);\nconst configKeys = new Set(keyify(config, \"\"));\nconst defaultConfig$2 = config;\nconst sanitizeDirective = (args) => {\n log$1.debug(\"sanitizeDirective called with\", args);\n if (typeof args !== \"object\" || args == null) {\n return;\n }\n if (Array.isArray(args)) {\n args.forEach((arg) => sanitizeDirective(arg));\n return;\n }\n for (const key of Object.keys(args)) {\n log$1.debug(\"Checking key\", key);\n if (key.startsWith(\"__\") || key.includes(\"proto\") || key.includes(\"constr\") || !configKeys.has(key) || args[key] == null) {\n log$1.debug(\"sanitize deleting key: \", key);\n delete args[key];\n continue;\n }\n if (typeof args[key] === \"object\") {\n log$1.debug(\"sanitizing object\", key);\n sanitizeDirective(args[key]);\n continue;\n }\n const cssMatchers = [\"themeCSS\", \"fontFamily\", \"altFontFamily\"];\n for (const cssKey of cssMatchers) {\n if (key.includes(cssKey)) {\n log$1.debug(\"sanitizing css option\", key);\n args[key] = sanitizeCss(args[key]);\n }\n }\n }\n if (args.themeVariables) {\n for (const k of Object.keys(args.themeVariables)) {\n const val = args.themeVariables[k];\n if ((val == null ? void 0 : val.match) && !val.match(/^[\\d \"#%(),.;A-Za-z]+$/)) {\n args.themeVariables[k] = \"\";\n }\n }\n }\n log$1.debug(\"After sanitization\", args);\n};\nconst sanitizeCss = (str2) => {\n let startCnt = 0;\n let endCnt = 0;\n for (const element of str2) {\n if (startCnt < endCnt) {\n return \"{ /* ERROR: Unbalanced CSS */ }\";\n }\n if (element === \"{\") {\n startCnt++;\n } else if (element === \"}\") {\n endCnt++;\n }\n }\n if (startCnt !== endCnt) {\n return \"{ /* ERROR: Unbalanced CSS */ }\";\n }\n return str2;\n};\nconst frontMatterRegex = /^-{3}\\s*[\\n\\r](.*?)[\\n\\r]-{3}\\s*[\\n\\r]+/s;\nconst directiveRegex = /%{2}{\\s*(?:(\\w+)\\s*:|(\\w+))\\s*(?:(\\w+)|((?:(?!}%{2}).|\\r?\\n)*))?\\s*(?:}%{2})?/gi;\nconst anyCommentRegex = /\\s*%%.*\\n/gm;\nclass UnknownDiagramError extends Error {\n constructor(message) {\n super(message);\n this.name = \"UnknownDiagramError\";\n }\n}\nconst detectors = {};\nconst detectType = function(text, config2) {\n text = text.replace(frontMatterRegex, \"\").replace(directiveRegex, \"\").replace(anyCommentRegex, \"\\n\");\n for (const [key, { detector: detector2 }] of Object.entries(detectors)) {\n const diagram2 = detector2(text, config2);\n if (diagram2) {\n return key;\n }\n }\n throw new UnknownDiagramError(\n `No diagram type detected matching given configuration for text: ${text}`\n );\n};\nconst registerLazyLoadedDiagrams = (...diagrams2) => {\n for (const { id: id2, detector: detector2, loader: loader2 } of diagrams2) {\n addDetector(id2, detector2, loader2);\n }\n};\nconst addDetector = (key, detector2, loader2) => {\n if (detectors[key]) {\n log$1.error(`Detector with key ${key} already exists`);\n } else {\n detectors[key] = { detector: detector2, loader: loader2 };\n }\n log$1.debug(`Detector with key ${key} added${loader2 ? \" with loader\" : \"\"}`);\n};\nconst getDiagramLoader = (key) => {\n return detectors[key].loader;\n};\nconst assignWithDepth = (dst, src, { depth = 2, clobber = false } = {}) => {\n const config2 = { depth, clobber };\n if (Array.isArray(src) && !Array.isArray(dst)) {\n src.forEach((s) => assignWithDepth(dst, s, config2));\n return dst;\n } else if (Array.isArray(src) && Array.isArray(dst)) {\n src.forEach((s) => {\n if (!dst.includes(s)) {\n dst.push(s);\n }\n });\n return dst;\n }\n if (dst === void 0 || depth <= 0) {\n if (dst !== void 0 && dst !== null && typeof dst === \"object\" && typeof src === \"object\") {\n return Object.assign(dst, src);\n } else {\n return src;\n }\n }\n if (src !== void 0 && typeof dst === \"object\" && typeof src === \"object\") {\n Object.keys(src).forEach((key) => {\n if (typeof src[key] === \"object\" && (dst[key] === void 0 || typeof dst[key] === \"object\")) {\n if (dst[key] === void 0) {\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};\nconst assignWithDepth$1 = assignWithDepth;\nconst ZERO_WIDTH_SPACE = \"\";\nconst d3CurveTypes = {\n curveBasis,\n curveBasisClosed,\n curveBasisOpen,\n curveBumpX,\n curveBumpY,\n curveBundle,\n curveCardinalClosed,\n curveCardinalOpen,\n curveCardinal,\n curveCatmullRomClosed,\n curveCatmullRomOpen,\n curveCatmullRom,\n curveLinear,\n curveLinearClosed,\n curveMonotoneX,\n curveMonotoneY,\n curveNatural,\n curveStep,\n curveStepAfter,\n curveStepBefore\n};\nconst directiveWithoutOpen = /\\s*(?:(\\w+)(?=:):|(\\w+))\\s*(?:(\\w+)|((?:(?!}%{2}).|\\r?\\n)*))?\\s*(?:}%{2})?/gi;\nconst detectInit = function(text, config2) {\n const inits = detectDirective(text, /(?:init\\b)|(?:initialize\\b)/);\n let results = {};\n if (Array.isArray(inits)) {\n const args = inits.map((init2) => init2.args);\n sanitizeDirective(args);\n results = assignWithDepth$1(results, [...args]);\n } else {\n results = inits.args;\n }\n if (!results) {\n return;\n }\n let type2 = detectType(text, config2);\n const prop = \"config\";\n if (results[prop] !== void 0) {\n if (type2 === \"flowchart-v2\") {\n type2 = \"flowchart\";\n }\n results[type2] = results[prop];\n delete results[prop];\n }\n return results;\n};\nconst detectDirective = function(text, type2 = null) {\n try {\n const commentWithoutDirectives = new RegExp(\n `[%]{2}(?![{]${directiveWithoutOpen.source})(?=[}][%]{2}).*\n`,\n \"ig\"\n );\n text = text.trim().replace(commentWithoutDirectives, \"\").replace(/'/gm, '\"');\n log$1.debug(\n `Detecting diagram directive${type2 !== null ? \" type:\" + type2 : \"\"} based on the text:${text}`\n );\n let match;\n const result = [];\n while ((match = directiveRegex.exec(text)) !== null) {\n if (match.index === directiveRegex.lastIndex) {\n directiveRegex.lastIndex++;\n }\n if (match && !type2 || type2 && match[1] && match[1].match(type2) || type2 && match[2] && match[2].match(type2)) {\n const type22 = match[1] ? match[1] : match[2];\n const args = match[3] ? match[3].trim() : match[4] ? JSON.parse(match[4].trim()) : null;\n result.push({ type: type22, args });\n }\n }\n if (result.length === 0) {\n return { type: text, args: null };\n }\n return result.length === 1 ? result[0] : result;\n } catch (error) {\n log$1.error(\n `ERROR: ${error.message} - Unable to parse directive type: '${type2}' based on the text: '${text}'`\n );\n return { type: void 0, args: null };\n }\n};\nconst removeDirectives = function(text) {\n return text.replace(directiveRegex, \"\");\n};\nconst isSubstringInArray = function(str2, arr) {\n for (const [i, element] of arr.entries()) {\n if (element.match(str2)) {\n return i;\n }\n }\n return -1;\n};\nfunction 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}\nfunction formatUrl(linkStr, config2) {\n const url = linkStr.trim();\n if (!url) {\n return void 0;\n }\n if (config2.securityLevel !== \"loose\") {\n return sanitizeUrl(url);\n }\n return url;\n}\nconst runFunc = (functionName, ...params) => {\n const arrPaths = functionName.split(\".\");\n const len = arrPaths.length - 1;\n const fnName = arrPaths[len];\n let obj = window;\n for (let i = 0; i < len; i++) {\n obj = obj[arrPaths[i]];\n if (!obj) {\n log$1.error(`Function name: ${functionName} not found in window`);\n return;\n }\n }\n obj[fnName](...params);\n};\nfunction distance(p1, p2) {\n if (!p1 || !p2) {\n return 0;\n }\n return Math.sqrt(Math.pow(p2.x - p1.x, 2) + Math.pow(p2.y - p1.y, 2));\n}\nfunction traverseEdge(points) {\n let prevPoint;\n let totalDistance = 0;\n points.forEach((point) => {\n totalDistance += distance(point, prevPoint);\n prevPoint = point;\n });\n const remainingDistance = totalDistance / 2;\n return calculatePoint(points, remainingDistance);\n}\nfunction calcLabelPosition(points) {\n if (points.length === 1) {\n return points[0];\n }\n return traverseEdge(points);\n}\nconst roundNumber = (num, precision = 2) => {\n const factor = Math.pow(10, precision);\n return Math.round(num * factor) / factor;\n};\nconst calculatePoint = (points, distanceToTraverse) => {\n let prevPoint = void 0;\n let remainingDistance = distanceToTraverse;\n for (const point of points) {\n if (prevPoint) {\n const vectorDistance = distance(point, prevPoint);\n if (vectorDistance < remainingDistance) {\n remainingDistance -= vectorDistance;\n } else {\n const distanceRatio = remainingDistance / vectorDistance;\n if (distanceRatio <= 0) {\n return prevPoint;\n }\n if (distanceRatio >= 1) {\n return { x: point.x, y: point.y };\n }\n if (distanceRatio > 0 && distanceRatio < 1) {\n return {\n x: roundNumber((1 - distanceRatio) * prevPoint.x + distanceRatio * point.x, 5),\n y: roundNumber((1 - distanceRatio) * prevPoint.y + distanceRatio * point.y, 5)\n };\n }\n }\n }\n prevPoint = point;\n }\n throw new Error(\"Could not find a suitable point for the given distance\");\n};\nconst calcCardinalityPosition = (isRelationTypePresent, points, initialPosition) => {\n log$1.info(`our points ${JSON.stringify(points)}`);\n if (points[0] !== initialPosition) {\n points = points.reverse();\n }\n const distanceToCardinalityPoint = 25;\n const center = calculatePoint(points, distanceToCardinalityPoint);\n const d = isRelationTypePresent ? 10 : 5;\n const angle = Math.atan2(points[0].y - center.y, points[0].x - center.x);\n const cardinalityPosition = { x: 0, y: 0 };\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};\nfunction calcTerminalLabelPosition(terminalMarkerSize, position, _points) {\n const points = structuredClone(_points);\n log$1.info(\"our points\", points);\n if (position !== \"start_left\" && position !== \"start_right\") {\n points.reverse();\n }\n const distanceToCardinalityPoint = 25 + terminalMarkerSize;\n const center = calculatePoint(points, distanceToCardinalityPoint);\n const d = 10 + terminalMarkerSize * 0.5;\n const angle = Math.atan2(points[0].y - center.y, points[0].x - center.x);\n const cardinalityPosition = { x: 0, y: 0 };\n if (position === \"start_left\") {\n cardinalityPosition.x = Math.sin(angle + Math.PI) * d + (points[0].x + center.x) / 2;\n cardinalityPosition.y = -Math.cos(angle + Math.PI) * d + (points[0].y + center.y) / 2;\n } else if (position === \"end_right\") {\n cardinalityPosition.x = Math.sin(angle - Math.PI) * d + (points[0].x + center.x) / 2 - 5;\n cardinalityPosition.y = -Math.cos(angle - Math.PI) * d + (points[0].y + center.y) / 2 - 5;\n } else if (position === \"end_left\") {\n cardinalityPosition.x = Math.sin(angle) * d + (points[0].x + center.x) / 2 - 5;\n cardinalityPosition.y = -Math.cos(angle) * d + (points[0].y + center.y) / 2 - 5;\n } else {\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 }\n return cardinalityPosition;\n}\nfunction getStylesFromArray(arr) {\n let style = \"\";\n let labelStyle = \"\";\n for (const element of arr) {\n if (element !== void 0) {\n if (element.startsWith(\"color:\") || element.startsWith(\"text-align:\")) {\n labelStyle = labelStyle + element + \";\";\n } else {\n style = style + element + \";\";\n }\n }\n }\n return { style, labelStyle };\n}\nlet cnt = 0;\nconst generateId = () => {\n cnt++;\n return \"id-\" + Math.random().toString(36).substr(2, 12) + \"-\" + cnt;\n};\nfunction makeRandomHex(length) {\n let result = \"\";\n const characters = \"0123456789abcdef\";\n const charactersLength = characters.length;\n for (let i = 0; i < length; i++) {\n result += characters.charAt(Math.floor(Math.random() * charactersLength));\n }\n return result;\n}\nconst random = (options) => {\n return makeRandomHex(options.length);\n};\nconst getTextObj = function() {\n return {\n x: 0,\n y: 0,\n fill: void 0,\n anchor: \"start\",\n style: \"#666\",\n width: 100,\n height: 100,\n textMargin: 0,\n rx: 0,\n ry: 0,\n valign: void 0,\n text: \"\"\n };\n};\nconst drawSimpleText = function(elem, textData) {\n const nText = textData.text.replace(common$1.lineBreakRegex, \" \");\n const [, _fontSizePx] = parseFontSize(textData.fontSize);\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\", _fontSizePx);\n textElem.style(\"font-weight\", textData.fontWeight);\n textElem.attr(\"fill\", textData.fill);\n if (textData.class !== void 0) {\n textElem.attr(\"class\", textData.class);\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 return textElem;\n};\nconst wrapLabel = memoize(\n (label, maxWidth, config2) => {\n if (!label) {\n return label;\n }\n config2 = Object.assign(\n { fontSize: 12, fontWeight: 400, fontFamily: \"Arial\", joinWith: \"<br/>\" },\n config2\n );\n if (common$1.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} `, config2);\n const nextLineLength = calculateTextWidth(nextLine, config2);\n if (wordLength > maxWidth) {\n const { hyphenatedStrings, remainingWord } = breakString(word, maxWidth, \"-\", config2);\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(config2.joinWith);\n },\n (label, maxWidth, config2) => `${label}${maxWidth}${config2.fontSize}${config2.fontWeight}${config2.fontFamily}${config2.joinWith}`\n);\nconst breakString = memoize(\n (word, maxWidth, hyphenCharacter = \"-\", config2) => {\n config2 = Object.assign(\n { fontSize: 12, fontWeight: 400, fontFamily: \"Arial\", margin: 0 },\n config2\n );\n const characters = [...word];\n const lines = [];\n let currentLine = \"\";\n characters.forEach((character, index) => {\n const nextLine = `${currentLine}${character}`;\n const lineWidth = calculateTextWidth(nextLine, config2);\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 = \"-\", config2) => `${word}${maxWidth}${hyphenCharacter}${config2.fontSize}${config2.fontWeight}${config2.fontFamily}`\n);\nfunction calculateTextHeight(text, config2) {\n return calculateTextDimensions(text, config2).height;\n}\nfunction calculateTextWidth(text, config2) {\n return calculateTextDimensions(text, config2).width;\n}\nconst calculateTextDimensions = memoize(\n (text, config2) => {\n const { fontSize = 12, fontFamily = \"Arial\", fontWeight = 400 } = config2;\n if (!text) {\n return { width: 0, height: 0 };\n }\n const [, _fontSizePx] = parseFontSize(fontSize);\n const fontFamilies = [\"sans-serif\", fontFamily];\n const lines = text.split(common$1.lineBreakRegex);\n const dims = [];\n const body = select(\"body\");\n if (!body.remove) {\n return { width: 0, height: 0, lineHeight: 0 };\n }\n const g = body.append(\"svg\");\n for (const fontFamily2 of fontFamilies) {\n let cHeight = 0;\n const dim = { width: 0, height: 0, lineHeight: 0 };\n for (const line of lines) {\n const textObj = getTextObj();\n textObj.text = line || ZERO_WIDTH_SPACE;\n const textElem = drawSimpleText(g, textObj).style(\"font-size\", _fontSizePx).style(\"font-weight\", fontWeight).style(\"font-family\", fontFamily2);\n const bBox = (textElem._groups || textElem)[0][0].getBBox();\n if (bBox.width === 0 && bBox.height === 0) {\n throw new Error(\"svg element not in render tree\");\n }\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 g.remove();\n const index = isNaN(dims[1].height) || isNaN(dims[1].width) || isNaN(dims[1].lineHeight) || dims[0].height > dims[1].height && dims[0].width > dims[1].width && dims[0].lineHeight > dims[1].lineHeight ? 0 : 1;\n return dims[index];\n },\n (text, config2) => `${text}${config2.fontSize}${config2.fontWeight}${config2.fontFamily}`\n);\nclass InitIDGenerator {\n constructor(deterministic = false, seed) {\n this.count = 0;\n this.count = seed ? seed.length : 0;\n this.next = deterministic ? () => this.count++ : () => Date.now();\n }\n}\nlet decoder;\nconst entityDecode = function(html) {\n decoder = decoder || document.createElement(\"div\");\n html = escape(html).replace(/%26/g, \"&\").replace(/%23/g, \"#\").replace(/%3B/g, \";\");\n decoder.innerHTML = html;\n return unescape(decoder.textContent);\n};\nfunction isDetailedError(error) {\n return \"str\" in error;\n}\nconst insertTitle = (parent, cssClass, titleTopMargin, title) => {\n var _a;\n if (!title) {\n return;\n }\n const bounds = (_a = parent.node()) == null ? void 0 : _a.getBBox();\n if (!bounds) {\n return;\n }\n parent.append(\"text\").text(title).attr(\"x\", bounds.x + bounds.width / 2).attr(\"y\", -titleTopMargin).attr(\"class\", cssClass);\n};\nconst parseFontSize = (fontSize) => {\n if (typeof fontSize === \"number\") {\n return [fontSize, fontSize + \"px\"];\n }\n const fontSizeNumber = parseInt(fontSize ?? \"\", 10);\n if (Number.isNaN(fontSizeNumber)) {\n return [void 0, void 0];\n } else if (fontSize === String(fontSizeNumber)) {\n return [fontSizeNumber, fontSize + \"px\"];\n } else {\n return [fontSizeNumber, fontSize];\n }\n};\nfunction cleanAndMerge(defaultData, data) {\n return merge$1({}, defaultData, data);\n}\nconst utils = {\n assignWithDepth: assignWithDepth$1,\n wrapLabel,\n calculateTextHeight,\n calculateTextWidth,\n calculateTextDimensions,\n cleanAndMerge,\n detectInit,\n detectDirective,\n isSubstringInArray,\n interpolateToCurve,\n calcLabelPosition,\n calcCardinalityPosition,\n calcTerminalLabelPosition,\n formatUrl,\n getStylesFromArray,\n generateId,\n random,\n runFunc,\n entityDecode,\n insertTitle,\n parseFontSize,\n InitIDGenerator\n};\nconst encodeEntities = function(text) {\n let txt = text;\n txt = txt.replace(/style.*:\\S*#.*;/g, function(s) {\n return s.substring(0, s.length - 1);\n });\n txt = txt.replace(/classDef.*:\\S*#.*;/g, function(s) {\n return s.substring(0, s.length - 1);\n });\n txt = txt.replace(/#\\w+;/g, function(s) {\n const innerTxt = s.substring(1, s.length - 1);\n const isInt = /^\\+?\\d+$/.test(innerTxt);\n if (isInt) {\n return \"fl°°\" + innerTxt + \"¶ß\";\n } else {\n return \"fl°\" + innerTxt + \"¶ß\";\n }\n });\n return txt;\n};\nconst decodeEntities = function(text) {\n return text.replace(/fl°°/g, \"&#\").replace(/fl°/g, \"&\").replace(/¶ß/g, \";\");\n};\nconst version = \"10.9.0\";\nconst defaultConfig$1 = Object.freeze(defaultConfig$2);\nlet siteConfig = assignWithDepth$1({}, defaultConfig$1);\nlet configFromInitialize;\nlet directives = [];\nlet currentConfig = assignWithDepth$1({}, defaultConfig$1);\nconst updateCurrentConfig = (siteCfg, _directives) => {\n let cfg = assignWithDepth$1({}, siteCfg);\n let sumOfDirectives = {};\n for (const d of _directives) {\n sanitize(d);\n sumOfDirectives = assignWithDepth$1(sumOfDirectives, d);\n }\n cfg = assignWithDepth$1(cfg, sumOfDirectives);\n if (sumOfDirectives.theme && sumOfDirectives.theme in theme) {\n const tmpConfigFromInitialize = assignWithDepth$1({}, configFromInitialize);\n const themeVariables = assignWithDepth$1(\n tmpConfigFromInitialize.themeVariables || {},\n sumOfDirectives.themeVariables\n );\n if (cfg.theme && cfg.theme in theme) {\n cfg.themeVariables = theme[cfg.theme].getThemeVariables(themeVariables);\n }\n }\n currentConfig = cfg;\n checkConfig(currentConfig);\n return currentConfig;\n};\nconst setSiteConfig = (conf) => {\n siteConfig = assignWithDepth$1({}, defaultConfig$1);\n siteConfig = assignWithDepth$1(siteConfig, conf);\n if (conf.theme && theme[conf.theme]) {\n siteConfig.themeVariables = theme[conf.theme].getThemeVariables(conf.themeVariables);\n }\n updateCurrentConfig(siteConfig, directives);\n return siteConfig;\n};\nconst saveConfigFromInitialize = (conf) => {\n configFromInitialize = assignWithDepth$1({}, conf);\n};\nconst updateSiteConfig = (conf) => {\n siteConfig = assignWithDepth$1(siteConfig, conf);\n updateCurrentConfig(siteConfig, directives);\n return siteConfig;\n};\nconst getSiteConfig = () => {\n return assignWithDepth$1({}, siteConfig);\n};\nconst setConfig$1 = (conf) => {\n checkConfig(conf);\n assignWithDepth$1(currentConfig, conf);\n return getConfig$1();\n};\nconst getConfig$1 = () => {\n return assignWithDepth$1({}, currentConfig);\n};\nconst sanitize = (options) => {\n if (!options) {\n return;\n }\n [\"secure\", ...siteConfig.secure ?? []].forEach((key) => {\n if (Object.hasOwn(options, key)) {\n log$1.debug(`Denied attempt to modify a secure key ${key}`, options[key]);\n delete options[key];\n }\n });\n Object.keys(options).forEach((key) => {\n if (key.startsWith(\"__\")) {\n delete options[key];\n }\n });\n Object.keys(options).forEach((key) => {\n if (typeof options[key] === \"string\" && (options[key].includes(\"<\") || options[key].includes(\">\") || options[key].includes(\"url(data:\"))) {\n delete options[key];\n }\n if (typeof options[key] === \"object\") {\n sanitize(options[key]);\n }\n });\n};\nconst addDirective = (directive) => {\n sanitizeDirective(directive);\n if (directive.fontFamily && (!directive.themeVariables || !directive.themeVariables.fontFamily)) {\n directive.themeVariables = { fontFamily: directive.fontFamily };\n }\n directives.push(directive);\n updateCurrentConfig(siteConfig, directives);\n};\nconst reset = (config2 = siteConfig) => {\n directives = [];\n updateCurrentConfig(config2, directives);\n};\nconst ConfigWarning = {\n LAZY_LOAD_DEPRECATED: \"The configuration options lazyLoadedDiagrams and loadExternalDiagramsAtStartup are deprecated. Please use registerExternalDiagrams instead.\"\n};\nconst issuedWarnings = {};\nconst issueWarning = (warning) => {\n if (issuedWarnings[warning]) {\n return;\n }\n log$1.warn(ConfigWarning[warning]);\n issuedWarnings[warning] = true;\n};\nconst checkConfig = (config2) => {\n if (!config2) {\n return;\n }\n if (config2.lazyLoadedDiagrams || config2.loadExternalDiagramsAtStartup) {\n issueWarning(\"LAZY_LOAD_DEPRECATED\");\n }\n};\nconst id$l = \"c4\";\nconst detector$l = (txt) => {\n return /^\\s*C4Context|C4Container|C4Component|C4Dynamic|C4Deployment/.test(txt);\n};\nconst loader$m = async () => {\n const { diagram: diagram2 } = await import(\"./c4Diagram-b2a90758.js\");\n return { id: id$l, diagram: diagram2 };\n};\nconst plugin$j = {\n id: id$l,\n detector: detector$l,\n loader: loader$m\n};\nconst c4 = plugin$j;\nconst id$k = \"flowchart\";\nconst detector$k = (txt, config2) => {\n var _a, _b;\n if (((_a = config2 == null ? void 0 : config2.flowchart) == null ? void 0 : _a.defaultRenderer) === \"dagre-wrapper\" || ((_b = config2 == null ? void 0 : config2.flowchart) == null ? void 0 : _b.defaultRenderer) === \"elk\") {\n return false;\n }\n return /^\\s*graph/.test(txt);\n};\nconst loader$l = async () => {\n const { diagram: diagram2 } = await import(\"./flowDiagram-5540d9b9.js\");\n return { id: id$k, diagram: diagram2 };\n};\nconst plugin$i = {\n id: id$k,\n detector: detector$k,\n loader: loader$l\n};\nconst flowchart = plugin$i;\nconst id$j = \"flowchart-v2\";\nconst detector$j = (txt, config2) => {\n var _a, _b, _c;\n if (((_a = config2 == null ? void 0 : config2.flowchart) == null ? void 0 : _a.defaultRenderer) === \"dagre-d3\" || ((_b = config2 == null ? void 0 : config2.flowchart) == null ? void 0 : _b.defaultRenderer) === \"elk\") {\n return false;\n }\n if (/^\\s*graph/.test(txt) && ((_c = config2 == null ? void 0 : config2.flowchart) == null ? void 0 : _c.defaultRenderer) === \"dagre-wrapper\") {\n return true;\n }\n return /^\\s*flowchart/.test(txt);\n};\nconst loader$k = async () => {\n const { diagram: diagram2 } = await import(\"./flowDiagram-v2-3b53844e.js\");\n return { id: id$j, diagram: diagram2 };\n};\nconst plugin$h = {\n id: id$j,\n detector: detector$j,\n loader: loader$k\n};\nconst flowchartV2 = plugin$h;\nconst id$i = \"er\";\nconst detector$i = (txt) => {\n return /^\\s*erDiagram/.test(txt);\n};\nconst loader$j = async () => {\n const { diagram: diagram2 } = await import(\"./erDiagram-47591fe2.js\");\n return { id: id$i, diagram: diagram2 };\n};\nconst plugin$g = {\n id: id$i,\n detector: detector$i,\n loader: loader$j\n};\nconst er = plugin$g;\nconst id$h = \"gitGraph\";\nconst detector$h = (txt) => {\n return /^\\s*gitGraph/.test(txt);\n};\nconst loader$i = async () => {\n const { diagram: diagram2 } = await import(\"./gitGraphDiagram-96e6b4ee.js\");\n return { id: id$h, diagram: diagram2 };\n};\nconst plugin$f = {\n id: id$h,\n detector: detector$h,\n loader: loader$i\n};\nconst git = plugin$f;\nconst id$g = \"gantt\";\nconst detector$g = (txt) => {\n return /^\\s*gantt/.test(txt);\n};\nconst loader$h = async () => {\n const { diagram: diagram2 } = await import(\"./ganttDiagram-9a3bba1f.js\");\n return { id: id$g, diagram: diagram2 };\n};\nconst plugin$e = {\n id: id$g,\n detector: detector$g,\n loader: loader$h\n};\nconst gantt = plugin$e;\nconst id$f = \"info\";\nconst detector$f = (txt) => {\n return /^\\s*info/.test(txt);\n};\nconst loader$g = async () => {\n const { diagram: diagram2 } = await import(\"./infoDiagram-bcd20f53.js\");\n return { id: id$f, diagram: diagram2 };\n};\nconst info = {\n id: id$f,\n detector: detector$f,\n loader: loader$g\n};\nconst id$e = \"pie\";\nconst detector$e = (txt) => {\n return /^\\s*pie/.test(txt);\n};\nconst loader$f = async () => {\n const { diagram: diagram2 } = await import(\"./pieDiagram-79897490.js\");\n return { id: id$e, diagram: diagram2 };\n};\nconst pie = {\n id: id$e,\n detector: detector$e,\n loader: loader$f\n};\nconst id$d = \"quadrantChart\";\nconst detector$d = (txt) => {\n return /^\\s*quadrantChart/.test(txt);\n};\nconst loader$e = async () => {\n const { diagram: diagram2 } = await import(\"./quadrantDiagram-62f64e94.js\");\n return { id: id$d, diagram: diagram2 };\n};\nconst plugin$d = {\n id: id$d,\n detector: detector$d,\n loader: loader$e\n};\nconst quadrantChart = plugin$d;\nconst id$c = \"xychart\";\nconst detector$c = (txt) => {\n return /^\\s*xychart-beta/.test(txt);\n};\nconst loader$d = async () => {\n const { diagram: diagram2 } = await import(\"./xychartDiagram-ab372869.js\");\n return { id: id$c, diagram: diagram2 };\n};\nconst plugin$c = {\n id: id$c,\n detector: detector$c,\n loader: loader$d\n};\nconst xychart = plugin$c;\nconst id$b = \"requirement\";\nconst detector$b = (txt) => {\n return /^\\s*requirement(Diagram)?/.test(txt);\n};\nconst loader$c = async () => {\n const { diagram: diagram2 } = await import(\"./requirementDiagram-05bf5f74.js\");\n return { id: id$b, diagram: diagram2 };\n};\nconst plugin$b = {\n id: id$b,\n detector: detector$b,\n loader: loader$c\n};\nconst requirement = plugin$b;\nconst id$a = \"sequence\";\nconst detector$a = (txt) => {\n return /^\\s*sequenceDiagram/.test(txt);\n};\nconst loader$b = async () => {\n const { diagram: diagram2 } = await import(\"./sequenceDiagram-acc0e65c.js\");\n return { id: id$a, diagram: diagram2 };\n};\nconst plugin$a = {\n id: id$a,\n detector: detector$a,\n loader: loader$b\n};\nconst sequence = plugin$a;\nconst id$9 = \"class\";\nconst detector$9 = (txt, config2) => {\n var _a;\n if (((_a = config2 == null ? void 0 : config2.class) == null ? void 0 : _a.defaultRenderer) === \"dagre-wrapper\") {\n return false;\n }\n return /^\\s*classDiagram/.test(txt);\n};\nconst loader$a = async () => {\n const { diagram: diagram2 } = await import(\"./classDiagram-30eddba6.js\");\n return { id: id$9, diagram: diagram2 };\n};\nconst plugin$9 = {\n id: id$9,\n detector: detector$9,\n loader: loader$a\n};\nconst classDiagram = plugin$9;\nconst id$8 = \"classDiagram\";\nconst detector$8 = (txt, config2) => {\n var _a;\n if (/^\\s*classDiagram/.test(txt) && ((_a = config2 == null ? void 0 : config2.class) == null ? void 0 : _a.defaultRenderer) === \"dagre-wrapper\") {\n return true;\n }\n return /^\\s*classDiagram-v2/.test(txt);\n};\nconst loader$9 = async () => {\n const { diagram: diagram2 } = await import(\"./classDiagram-v2-f2df5561.js\");\n return { id: id$8, diagram: diagram2 };\n};\nconst plugin$8 = {\n id: id$8,\n detector: detector$8,\n loader: loader$9\n};\nconst classDiagramV2 = plugin$8;\nconst id$7 = \"state\";\nconst detector$7 = (txt, config2) => {\n var _a;\n if (((_a = config2 == null ? void 0 : config2.state) == null ? void 0 : _a.defaultRenderer) === \"dagre-wrapper\") {\n return false;\n }\n return /^\\s*stateDiagram/.test(txt);\n};\nconst loader$8 = async () => {\n const { diagram: diagram2 } = await import(\"./stateDiagram-0ff1cf1a.js\");\n return { id: id$7, diagram: diagram2 };\n};\nconst plugin$7 = {\n id: id$7,\n detector: detector$7,\n loader: loader$8\n};\nconst state = plugin$7;\nconst id$6 = \"stateDiagram\";\nconst detector$6 = (txt, config2) => {\n var _a;\n if (/^\\s*stateDiagram-v2/.test(txt)) {\n return true;\n }\n if (/^\\s*stateDiagram/.test(txt) && ((_a = config2 == null ? void 0 : config2.state) == null ? void 0 : _a.defaultRenderer) === \"dagre-wrapper\") {\n return true;\n }\n return false;\n};\nconst loader$7 = async () => {\n const { diagram: diagram2 } = await import(\"./stateDiagram-v2-9a9d610d.js\");\n return { id: id$6, diagram: diagram2 };\n};\nconst plugin$6 = {\n id: id$6,\n detector: detector$6,\n loader: loader$7\n};\nconst stateV2 = plugin$6;\nconst id$5 = \"journey\";\nconst detector$5 = (txt) => {\n return /^\\s*journey/.test(txt);\n};\nconst loader$6 = async () => {\n const { diagram: diagram2 } = await import(\"./journeyDiagram-4fe6b3dc.js\");\n return { id: id$5, diagram: diagram2 };\n};\nconst plugin$5 = {\n id: id$5,\n detector: detector$5,\n loader: loader$6\n};\nconst journey = plugin$5;\nconst d3Attrs = function(d3Elem, attrs) {\n for (let attr of attrs) {\n d3Elem.attr(attr[0], attr[1]);\n }\n};\nconst calculateSvgSizeAttrs = function(height, width, useMaxWidth) {\n let attrs = /* @__PURE__ */ new Map();\n if (useMaxWidth) {\n attrs.set(\"width\", \"100%\");\n attrs.set(\"style\", `max-width: ${width}px;`);\n } else {\n attrs.set(\"height\", height);\n attrs.set(\"width\", width);\n }\n return attrs;\n};\nconst configureSvgSize = function(svgElem, height, width, useMaxWidth) {\n const attrs = calculateSvgSizeAttrs(height, width, useMaxWidth);\n d3Attrs(svgElem, attrs);\n};\nconst setupGraphViewbox$1 = function(graph, svgElem, padding, useMaxWidth) {\n const svgBounds = svgElem.node().getBBox();\n const sWidth = svgBounds.width;\n const sHeight = svgBounds.height;\n log$1.info(`SVG bounds: ${sWidth}x${sHeight}`, svgBounds);\n let width = 0;\n let height = 0;\n log$1.info(`Graph bounds: ${width}x${height}`, graph);\n width = sWidth + padding * 2;\n height = sHeight + padding * 2;\n log$1.info(`Calculated bounds: ${width}x${height}`);\n configureSvgSize(svgElem, height, width, useMaxWidth);\n const vBox = `${svgBounds.x - padding} ${svgBounds.y - padding} ${svgBounds.width + 2 * padding} ${svgBounds.height + 2 * padding}`;\n svgElem.attr(\"viewBox\", vBox);\n};\nconst themes = {};\nconst getStyles = (type2, userStyles, options) => {\n let diagramStyles = \"\";\n if (type2 in themes && themes[type2]) {\n diagramStyles = themes[type2](options);\n } else {\n log$1.warn(`No theme found for ${type2}`);\n }\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 stroke: ${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 ${diagramStyles}\n\n ${userStyles}\n`;\n};\nconst addStylesForDiagram = (type2, diagramTheme) => {\n if (diagramTheme !== void 0) {\n themes[type2] = diagramTheme;\n }\n};\nconst getStyles$1 = getStyles;\nlet accTitle = \"\";\nlet diagramTitle = \"\";\nlet accDescription = \"\";\nconst sanitizeText$1 = (txt) => sanitizeText$2(txt, getConfig$1());\nconst clear = () => {\n accTitle = \"\";\n accDescription = \"\";\n diagramTitle = \"\";\n};\nconst setAccTitle = (txt) => {\n accTitle = sanitizeText$1(txt).replace(/^\\s+/g, \"\");\n};\nconst getAccTitle = () => accTitle;\nconst setAccDescription = (txt) => {\n accDescription = sanitizeText$1(txt).replace(/\\n\\s+/g, \"\\n\");\n};\nconst getAccDescription = () => accDescription;\nconst setDiagramTitle = (txt) => {\n diagramTitle = sanitizeText$1(txt);\n};\nconst getDiagramTitle = () => diagramTitle;\nconst commonDb = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n clear,\n getAccDescription,\n getAccTitle,\n getDiagramTitle,\n setAccDescription,\n setAccTitle,\n setDiagramTitle\n}, Symbol.toStringTag, { value: \"Module\" }));\nconst log = log$1;\nconst setLogLevel = setLogLevel$1;\nconst getConfig = getConfig$1;\nconst setConfig = setConfig$1;\nconst defaultConfig = defaultConfig$1;\nconst sanitizeText = (text) => sanitizeText$2(text, getConfig());\nconst setupGraphViewbox = setupGraphViewbox$1;\nconst getCommonDb = () => {\n return commonDb;\n};\nconst diagrams = {};\nconst registerDiagram = (id2, diagram2, detector2) => {\n var _a;\n if (diagrams[id2]) {\n throw new Error(`Diagram ${id2} already registered.`);\n }\n diagrams[id2] = diagram2;\n if (detector2) {\n addDetector(id2, detector2);\n }\n addStylesForDiagram(id2, diagram2.styles);\n (_a = diagram2.injectUtils) == null ? void 0 : _a.call(\n diagram2,\n log,\n setLogLevel,\n getConfig,\n sanitizeText,\n setupGraphViewbox,\n getCommonDb(),\n () => {\n }\n );\n};\nconst getDiagram = (name) => {\n if (name in diagrams) {\n return diagrams[name];\n }\n throw new DiagramNotFoundError(name);\n};\nclass DiagramNotFoundError extends Error {\n constructor(name) {\n super(`Diagram ${name} not found.`);\n }\n}\nconst selectSvgElement = (id2) => {\n var _a;\n const { securityLevel } = getConfig();\n let root = select(\"body\");\n if (securityLevel === \"sandbox\") {\n const sandboxElement = select(`#i${id2}`);\n const doc = ((_a = sandboxElement.node()) == null ? void 0 : _a.contentDocument) ?? document;\n root = select(doc.body);\n }\n const svg = root.select(`#${id2}`);\n return svg;\n};\nconst draw = (_text, id2, version2) => {\n log$1.debug(\"rendering svg for syntax error\\n\");\n const svg = selectSvgElement(id2);\n const g = svg.append(\"g\");\n svg.attr(\"viewBox\", \"0 0 2412 512\");\n configureSvgSize(svg, 100, 512, true);\n g.append(\"path\").attr(\"class\", \"error-icon\").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 g.append(\"path\").attr(\"class\", \"error-icon\").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 g.append(\"path\").attr(\"class\", \"error-icon\").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 g.append(\"path\").attr(\"class\", \"error-icon\").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 g.append(\"path\").attr(\"class\", \"error-icon\").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 g.append(\"path\").attr(\"class\", \"error-icon\").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 g.append(\"text\").attr(\"class\", \"error-text\").attr(\"x\", 1440).attr(\"y\", 250).attr(\"font-size\", \"150px\").style(\"text-anchor\", \"middle\").text(\"Syntax error in text\");\n g.append(\"text\").attr(\"class\", \"error-text\").attr(\"x\", 1250).attr(\"y\", 400).attr(\"font-size\", \"100px\").style(\"text-anchor\", \"middle\").text(`mermaid version ${version2}`);\n};\nconst renderer = { draw };\nconst errorRenderer = renderer;\nconst diagram = {\n db: {},\n renderer,\n parser: {\n parser: { yy: {} },\n parse: () => {\n return;\n }\n }\n};\nconst errorDiagram = diagram;\nconst id$4 = \"flowchart-elk\";\nconst detector$4 = (txt, config2) => {\n var _a;\n if (\n // If diagram explicitly states flowchart-elk\n /^\\s*flowchart-elk/.test(txt) || // If a flowchart/graph diagram has their default renderer set to elk\n /^\\s*flowchart|graph/.test(txt) && ((_a = config2 == null ? void 0 : config2.flowchart) == null ? void 0 : _a.defaultRenderer) === \"elk\"\n ) {\n return true;\n }\n return false;\n};\nconst loader$5 = async () => {\n const { diagram: diagram2 } = await import(\"./flowchart-elk-definition-5fe447d6.js\");\n return { id: id$4, diagram: diagram2 };\n};\nconst plugin$4 = {\n id: id$4,\n detector: detector$4,\n loader: loader$5\n};\nconst flowchartElk = plugin$4;\nconst id$3 = \"timeline\";\nconst detector$3 = (txt) => {\n return /^\\s*timeline/.test(txt);\n};\nconst loader$4 = async () => {\n const { diagram: diagram2 } = await import(\"./timeline-definition-fea2a41d.js\");\n return { id: id$3, diagram: diagram2 };\n};\nconst plugin$3 = {\n id: id$3,\n detector: detector$3,\n loader: loader$4\n};\nconst timeline = plugin$3;\nconst id$2 = \"mindmap\";\nconst detector$2 = (txt) => {\n return /^\\s*mindmap/.test(txt);\n};\nconst loader$3 = async () => {\n const { diagram: diagram2 } = await import(\"./mindmap-definition-f354de21.js\");\n return { id: id$2, diagram: diagram2 };\n};\nconst plugin$2 = {\n id: id$2,\n detector: detector$2,\n loader: loader$3\n};\nconst mindmap = plugin$2;\nconst id$1 = \"sankey\";\nconst detector$1 = (txt) => {\n return /^\\s*sankey-beta/.test(txt);\n};\nconst loader$2 = async () => {\n const { diagram: diagram2 } = await import(\"./sankeyDiagram-97764748.js\");\n return { id: id$1, diagram: diagram2 };\n};\nconst plugin$1 = {\n id: id$1,\n detector: detector$1,\n loader: loader$2\n};\nconst sankey = plugin$1;\nconst id = \"block\";\nconst detector = (txt) => {\n return /^\\s*block-beta/.test(txt);\n};\nconst loader$1 = async () => {\n const { diagram: diagram2 } = await import(\"./blockDiagram-91b80b7a.js\");\n return { id, diagram: diagram2 };\n};\nconst plugin = {\n id,\n detector,\n loader: loader$1\n};\nconst block = plugin;\nlet hasLoadedDiagrams = false;\nconst addDiagrams = () => {\n if (hasLoadedDiagrams) {\n return;\n }\n hasLoadedDiagrams = true;\n registerDiagram(\"error\", errorDiagram, (text) => {\n return text.toLowerCase().trim() === \"error\";\n });\n registerDiagram(\n \"---\",\n // --- diagram type may appear if YAML front-matter is not parsed correctly\n {\n db: {\n clear: () => {\n }\n },\n styles: {},\n // should never be used\n renderer: {\n draw: () => {\n }\n },\n parser: {\n parser: { yy: {} },\n parse: () => {\n throw new Error(\n \"Diagrams beginning with --- are not valid. If you were trying to use a YAML front-matter, please ensure that you've correctly opened and closed the YAML front-matter with un-indented `---` blocks\"\n );\n }\n },\n init: () => null\n // no op\n },\n (text) => {\n return text.toLowerCase().trimStart().startsWith(\"---\");\n }\n );\n registerLazyLoadedDiagrams(\n c4,\n classDiagramV2,\n classDiagram,\n er,\n gantt,\n info,\n pie,\n requirement,\n sequence,\n flowchartElk,\n flowchartV2,\n flowchart,\n mindmap,\n timeline,\n git,\n stateV2,\n state,\n journey,\n quadrantChart,\n sankey,\n xychart,\n block\n );\n};\nclass Diagram {\n constructor(text, metadata = {}) {\n this.text = text;\n this.metadata = metadata;\n this.type = \"graph\";\n this.text = encodeEntities(text);\n this.text += \"\\n\";\n const cnf = getConfig$1();\n try {\n this.type = detectType(text, cnf);\n } catch (e) {\n this.type = \"error\";\n this.detectError = e;\n }\n const diagram2 = getDiagram(this.type);\n log$1.debug(\"Type \" + this.type);\n this.db = diagram2.db;\n this.renderer = diagram2.renderer;\n this.parser = diagram2.parser;\n this.parser.parser.yy = this.db;\n this.init = diagram2.init;\n this.parse();\n }\n parse() {\n var _a, _b, _c, _d, _e;\n if (this.detectError) {\n throw this.detectError;\n }\n (_b = (_a = this.db).clear) == null ? void 0 : _b.call(_a);\n const config2 = getConfig$1();\n (_c = this.init) == null ? void 0 : _c.call(this, config2);\n if (this.metadata.title) {\n (_e = (_d = this.db).setDiagramTitle) == null ? void 0 : _e.call(_d, this.metadata.title);\n }\n this.parser.parse(this.text);\n }\n async render(id2, version2) {\n await this.renderer.draw(this.text, id2, version2, this);\n }\n getParser() {\n return this.parser;\n }\n getType() {\n return this.type;\n }\n}\nconst getDiagramFromText$1 = async (text, metadata = {}) => {\n const type2 = detectType(text, getConfig$1());\n try {\n getDiagram(type2);\n } catch (error) {\n const loader2 = getDiagramLoader(type2);\n if (!loader2) {\n throw new UnknownDiagramError(`Diagram ${type2} not found.`);\n }\n const { id: id2, diagram: diagram2 } = await loader2();\n registerDiagram(id2, diagram2);\n }\n return new Diagram(text, metadata);\n};\nlet interactionFunctions = [];\nconst attachFunctions = () => {\n interactionFunctions.forEach((f) => {\n f();\n });\n interactionFunctions = [];\n};\nconst SVG_ROLE = \"graphics-document document\";\nfunction setA11yDiagramInfo(svg, diagramType) {\n svg.attr(\"role\", SVG_ROLE);\n if (diagramType !== \"\") {\n svg.attr(\"aria-roledescription\", diagramType);\n }\n}\nfunction addSVGa11yTitleDescription(svg, a11yTitle, a11yDesc, baseId) {\n if (svg.insert === void 0) {\n return;\n }\n if (a11yDesc) {\n const descId = `chart-desc-${baseId}`;\n svg.attr(\"aria-describedby\", descId);\n svg.insert(\"desc\", \":first-child\").attr(\"id\", descId).text(a11yDesc);\n }\n if (a11yTitle) {\n const titleId = `chart-title-${baseId}`;\n svg.attr(\"aria-labelledby\", titleId);\n svg.insert(\"title\", \":first-child\").attr(\"id\", titleId).text(a11yTitle);\n }\n}\nconst cleanupComments = (text) => {\n return text.replace(/^\\s*%%(?!{)[^\\n]+\\n?/gm, \"\").trimStart();\n};\n/*! js-yaml 4.1.0 https://github.com/nodeca/js-yaml @license MIT */\nfunction isNothing(subject) {\n return typeof subject === \"undefined\" || subject === null;\n}\nfunction isObject(subject) {\n return typeof subject === \"object\" && subject !== null;\n}\nfunction toArray(sequence2) {\n if (Array.isArray(sequence2))\n return sequence2;\n else if (isNothing(sequence2))\n return [];\n return [sequence2];\n}\nfunction extend(target, source) {\n var index, length, key, sourceKeys;\n if (source) {\n sourceKeys = Object.keys(source);\n for (index = 0, length = sourceKeys.length; index < length; index += 1) {\n key = sourceKeys[index];\n target[key] = source[key];\n }\n }\n return target;\n}\nfunction repeat(string, count) {\n var result = \"\", cycle;\n for (cycle = 0; cycle < count; cycle += 1) {\n result += string;\n }\n return result;\n}\nfunction isNegativeZero(number) {\n return number === 0 && Number.NEGATIVE_INFINITY === 1 / number;\n}\nvar isNothing_1 = isNothing;\nvar isObject_1 = isObject;\nvar toArray_1 = toArray;\nvar repeat_1 = repeat;\nvar isNegativeZero_1 = isNegativeZero;\nvar extend_1 = extend;\nvar common = {\n isNothing: isNothing_1,\n isObject: isObject_1,\n toArray: toArray_1,\n repeat: repeat_1,\n isNegativeZero: isNegativeZero_1,\n extend: extend_1\n};\nfunction formatError(exception2, compact) {\n var where = \"\", message = exception2.reason || \"(unknown reason)\";\n if (!exception2.mark)\n return message;\n if (exception2.mark.name) {\n where += 'in \"' + exception2.mark.name + '\" ';\n }\n where += \"(\" + (exception2.mark.line + 1) + \":\" + (exception2.mark.column + 1) + \")\";\n if (!compact && exception2.mark.snippet) {\n where += \"\\n\\n\" + exception2.mark.snippet;\n }\n return message + \" \" + where;\n}\nfunction YAMLException$1(reason, mark) {\n Error.call(this);\n this.name = \"YAMLException\";\n this.reason = reason;\n this.mark = mark;\n this.message = formatError(this, false);\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n this.stack = new Error().stack || \"\";\n }\n}\nYAMLException$1.prototype = Object.create(Error.prototype);\nYAMLException$1.prototype.constructor = YAMLException$1;\nYAMLException$1.prototype.toString = function toString(compact) {\n return this.name + \": \" + formatError(this, compact);\n};\nvar exception = YAMLException$1;\nfunction getLine(buffer, lineStart, lineEnd, position, maxLineLength) {\n var head = \"\";\n var tail = \"\";\n var maxHalfLength = Math.floor(maxLineLength / 2) - 1;\n if (position - lineStart > maxHalfLength) {\n head = \" ... \";\n lineStart = position - maxHalfLength + head.length;\n }\n if (lineEnd - position > maxHalfLength) {\n tail = \" ...\";\n lineEnd = position + maxHalfLength - tail.length;\n }\n return {\n str: head + buffer.slice(lineStart, lineEnd).replace(/\\t/g, \"→\") + tail,\n pos: position - lineStart + head.length\n // relative position\n };\n}\nfunction padStart(string, max) {\n return common.repeat(\" \", max - string.length) + string;\n}\nfunction makeSnippet(mark, options) {\n options = Object.create(options || null);\n if (!mark.buffer)\n return null;\n if (!options.maxLength)\n options.maxLength = 79;\n if (typeof options.indent !== \"number\")\n options.indent = 1;\n if (typeof options.linesBefore !== \"number\")\n options.linesBefore = 3;\n if (typeof options.linesAfter !== \"number\")\n options.linesAfter = 2;\n var re = /\\r?\\n|\\r|\\0/g;\n var lineStarts = [0];\n var lineEnds = [];\n var match;\n var foundLineNo = -1;\n while (match = re.exec(mark.buffer)) {\n lineEnds.push(match.index);\n lineStarts.push(match.index + match[0].length);\n if (mark.position <= match.index && foundLineNo < 0) {\n foundLineNo = lineStarts.length - 2;\n }\n }\n if (foundLineNo < 0)\n foundLineNo = lineStarts.length - 1;\n var result = \"\", i, line;\n var lineNoLength = Math.min(mark.line + options.linesAfter, lineEnds.length).toString().length;\n var maxLineLength = options.maxLength - (options.indent + lineNoLength + 3);\n for (i = 1; i <= options.linesBefore; i++) {\n if (foundLineNo - i < 0)\n break;\n line = getLine(\n mark.buffer,\n lineStarts[foundLineNo - i],\n lineEnds[foundLineNo - i],\n mark.position - (lineStarts[foundLineNo] - lineStarts[foundLineNo - i]),\n maxLineLength\n );\n result = common.repeat(\" \", options.indent) + padStart((mark.line - i + 1).toString(), lineNoLength) + \" | \" + line.str + \"\\n\" + result;\n }\n line = getLine(mark.buffer, lineStarts[foundLineNo], lineEnds[foundLineNo], mark.position, maxLineLength);\n result += common.repeat(\" \", options.indent) + padStart((mark.line + 1).toString(), lineNoLength) + \" | \" + line.str + \"\\n\";\n result += common.repeat(\"-\", options.indent + lineNoLength + 3 + line.pos) + \"^\\n\";\n for (i = 1; i <= options.linesAfter; i++) {\n if (foundLineNo + i >= lineEnds.length)\n break;\n line = getLine(\n mark.buffer,\n lineStarts[foundLineNo + i],\n lineEnds[foundLineNo + i],\n mark.position - (lineStarts[foundLineNo] - lineStarts[foundLineNo + i]),\n maxLineLength\n );\n result += common.repeat(\" \", options.indent) + padStart((mark.line + i + 1).toString(), lineNoLength) + \" | \" + line.str + \"\\n\";\n }\n return result.replace(/\\n$/, \"\");\n}\nvar snippet = makeSnippet;\nvar TYPE_CONSTRUCTOR_OPTIONS = [\n \"kind\",\n \"multi\",\n \"resolve\",\n \"construct\",\n \"instanceOf\",\n \"predicate\",\n \"represent\",\n \"representName\",\n \"defaultStyle\",\n \"styleAliases\"\n];\nvar YAML_NODE_KINDS = [\n \"scalar\",\n \"sequence\",\n \"mapping\"\n];\nfunction compileStyleAliases(map2) {\n var result = {};\n if (map2 !== null) {\n Object.keys(map2).forEach(function(style) {\n map2[style].forEach(function(alias) {\n result[String(alias)] = style;\n });\n });\n }\n return result;\n}\nfunction Type$1(tag, options) {\n options = options || {};\n Object.keys(options).forEach(function(name) {\n if (TYPE_CONSTRUCTOR_OPTIONS.indexOf(name) === -1) {\n throw new exception('Unknown option \"' + name + '\" is met in definition of \"' + tag + '\" YAML type.');\n }\n });\n this.options = options;\n this.tag = tag;\n this.kind = options[\"kind\"] || null;\n this.resolve = options[\"resolve\"] || function() {\n return true;\n };\n this.construct = options[\"construct\"] || function(data) {\n return data;\n };\n this.instanceOf = options[\"instanceOf\"] || null;\n this.predicate = options[\"predicate\"] || null;\n this.represent = options[\"represent\"] || null;\n this.representName = options[\"representName\"] || null;\n this.defaultStyle = options[\"defaultStyle\"] || null;\n this.multi = options[\"multi\"] || false;\n this.styleAliases = compileStyleAliases(options[\"styleAliases\"] || null);\n if (YAML_NODE_KINDS.indexOf(this.kind) === -1) {\n throw new exception('Unknown kind \"' + this.kind + '\" is specified for \"' + tag + '\" YAML type.');\n }\n}\nvar type = Type$1;\nfunction compileList(schema2, name) {\n var result = [];\n schema2[name].forEach(function(currentType) {\n var newIndex = result.length;\n result.forEach(function(previousType, previousIndex) {\n if (previousType.tag === currentType.tag && previousType.kind === currentType.kind && previousType.multi === currentType.multi) {\n newIndex = previousIndex;\n }\n });\n result[newIndex] = currentType;\n });\n return result;\n}\nfunction compileMap() {\n var result = {\n scalar: {},\n sequence: {},\n mapping: {},\n fallback: {},\n multi: {\n scalar: [],\n sequence: [],\n mapping: [],\n fallback: []\n }\n }, index, length;\n function collectType(type2) {\n if (type2.multi) {\n result.multi[type2.kind].push(type2);\n result.multi[\"fallback\"].push(type2);\n } else {\n result[type2.kind][type2.tag] = result[\"fallback\"][type2.tag] = type2;\n }\n }\n for (index = 0, length = arguments.length; index < length; index += 1) {\n arguments[index].forEach(collectType);\n }\n return result;\n}\nfunction Schema$1(definition) {\n return this.extend(definition);\n}\nSchema$1.prototype.extend = function extend2(definition) {\n var implicit = [];\n var explicit = [];\n if (definition instanceof type) {\n explicit.push(definition);\n } else if (Array.isArray(definition)) {\n explicit = explicit.concat(definition);\n } else if (definition && (Array.isArray(definition.implicit) || Array.isArray(definition.explicit))) {\n if (definition.implicit)\n implicit = implicit.concat(definition.implicit);\n if (definition.explicit)\n explicit = explicit.concat(definition.explicit);\n } else {\n throw new exception(\"Schema.extend argument should be a Type, [ Type ], or a schema definition ({ implicit: [...], explicit: [...] })\");\n }\n implicit.forEach(function(type$1) {\n if (!(type$1 instanceof type)) {\n throw new exception(\"Specified list of YAML types (or a single Type object) contains a non-Type object.\");\n }\n if (type$1.loadKind && type$1.loadKind !== \"scalar\") {\n throw new exception(\"There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.\");\n }\n if (type$1.multi) {\n throw new exception(\"There is a multi type in the implicit list of a schema. Multi tags can only be listed as explicit.\");\n }\n });\n explicit.forEach(function(type$1) {\n if (!(type$1 instanceof type)) {\n throw new exception(\"Specified list of YAML types (or a single Type object) contains a non-Type object.\");\n }\n });\n var result = Object.create(Schema$1.prototype);\n result.implicit = (this.implicit || []).concat(implicit);\n result.explicit = (this.explicit || []).concat(explicit);\n result.compiledImplicit = compileList(result, \"implicit\");\n result.compiledExplicit = compileList(result, \"explicit\");\n result.compiledTypeMap = compileMap(result.compiledImplicit, result.compiledExplicit);\n return result;\n};\nvar schema = Schema$1;\nvar str = new type(\"tag:yaml.org,2002:str\", {\n kind: \"scalar\",\n construct: function(data) {\n return data !== null ? data : \"\";\n }\n});\nvar seq = new type(\"tag:yaml.org,2002:seq\", {\n kind: \"sequence\",\n construct: function(data) {\n return data !== null ? data : [];\n }\n});\nvar map = new type(\"tag:yaml.org,2002:map\", {\n kind: \"mapping\",\n construct: function(data) {\n return data !== null ? data : {};\n }\n});\nvar failsafe = new schema({\n explicit: [\n str,\n seq,\n map\n ]\n});\nfunction resolveYamlNull(data) {\n if (data === null)\n return true;\n var max = data.length;\n return max === 1 && data === \"~\" || max === 4 && (data === \"null\" || data === \"Null\" || data === \"NULL\");\n}\nfunction constructYamlNull() {\n return null;\n}\nfunction isNull(object) {\n return object === null;\n}\nvar _null = new type(\"tag:yaml.org,2002:null\", {\n kind: \"scalar\",\n resolve: resolveYamlNull,\n construct: constructYamlNull,\n predicate: isNull,\n represent: {\n canonical: function() {\n return \"~\";\n },\n lowercase: function() {\n return \"null\";\n },\n uppercase: function() {\n return \"NULL\";\n },\n camelcase: function() {\n return \"Null\";\n },\n empty: function() {\n return \"\";\n }\n },\n defaultStyle: \"lowercase\"\n});\nfunction resolveYamlBoolean(data) {\n if (data === null)\n return false;\n var max = data.length;\n return max === 4 && (data === \"true\" || data === \"True\" || data === \"TRUE\") || max === 5 && (data === \"false\" || data === \"False\" || data === \"FALSE\");\n}\nfunction constructYamlBoolean(data) {\n return data === \"true\" || data === \"True\" || data === \"TRUE\";\n}\nfunction isBoolean(object) {\n return Object.prototype.toString.call(object) === \"[object Boolean]\";\n}\nvar bool = new type(\"tag:yaml.org,2002:bool\", {\n kind: \"scalar\",\n resolve: resolveYamlBoolean,\n construct: constructYamlBoolean,\n predicate: isBoolean,\n represent: {\n lowercase: function(object) {\n return object ? \"true\" : \"false\";\n },\n uppercase: function(object) {\n return object ? \"TRUE\" : \"FALSE\";\n },\n camelcase: function(object) {\n return object ? \"True\" : \"False\";\n }\n },\n defaultStyle: \"lowercase\"\n});\nfunction isHexCode(c) {\n return 48 <= c && c <= 57 || 65 <= c && c <= 70 || 97 <= c && c <= 102;\n}\nfunction isOctCode(c) {\n return 48 <= c && c <= 55;\n}\nfunction isDecCode(c) {\n return 48 <= c && c <= 57;\n}\nfunction resolveYamlInteger(data) {\n if (data === null)\n return false;\n var max = data.length, index = 0, hasDigits = false, ch;\n if (!max)\n return false;\n ch = data[index];\n if (ch === \"-\" || ch === \"+\") {\n ch = data[++index];\n }\n if (ch === \"0\") {\n if (index + 1 === max)\n return true;\n ch = data[++index];\n if (ch === \"b\") {\n index++;\n for (; index < max; index++) {\n ch = data[index];\n if (ch === \"_\")\n continue;\n if (ch !== \"0\" && ch !== \"1\")\n return false;\n hasDigits = true;\n }\n return hasDigits && ch !== \"_\";\n }\n if (ch === \"x\") {\n index++;\n for (; index < max; index++) {\n ch = data[index];\n if (ch === \"_\")\n continue;\n if (!isHexCode(data.charCodeAt(index)))\n return false;\n hasDigits = true;\n }\n return hasDigits && ch !== \"_\";\n }\n if (ch === \"o\") {\n index++;\n for (; index < max; index++) {\n ch = data[index];\n if (ch === \"_\")\n continue;\n if (!isOctCode(data.charCodeAt(index)))\n return false;\n hasDigits = true;\n }\n return hasDigits && ch !== \"_\";\n }\n }\n if (ch === \"_\")\n return false;\n for (; index < max; index++) {\n ch = data[index];\n if (ch === \"_\")\n continue;\n if (!isDecCode(data.charCodeAt(index))) {\n return false;\n }\n hasDigits = true;\n }\n if (!hasDigits || ch === \"_\")\n return false;\n return true;\n}\nfunction constructYamlInteger(data) {\n var value = data, sign = 1, ch;\n if (value.indexOf(\"_\") !== -1) {\n value = value.replace(/_/g, \"\");\n }\n ch = value[0];\n if (ch === \"-\" || ch === \"+\") {\n if (ch === \"-\")\n sign = -1;\n value = value.slice(1);\n ch = value[0];\n }\n if (value === \"0\")\n return 0;\n if (ch === \"0\") {\n if (value[1] === \"b\")\n return sign * parseInt(value.slice(2), 2);\n if (value[1] === \"x\")\n return sign * parseInt(value.slice(2), 16);\n if (value[1] === \"o\")\n return sign * parseInt(value.slice(2), 8);\n }\n return sign * parseInt(value, 10);\n}\nfunction isInteger(object) {\n return Object.prototype.toString.call(object) === \"[object Number]\" && (object % 1 === 0 && !common.isNegativeZero(object));\n}\nvar int = new type(\"tag:yaml.org,2002:int\", {\n kind: \"scalar\",\n resolve: resolveYamlInteger,\n construct: constructYamlInteger,\n predicate: isInteger,\n represent: {\n binary: function(obj) {\n return obj >= 0 ? \"0b\" + obj.toString(2) : \"-0b\" + obj.toString(2).slice(1);\n },\n octal: function(obj) {\n return obj >= 0 ? \"0o\" + obj.toString(8) : \"-0o\" + obj.toString(8).slice(1);\n },\n decimal: function(obj) {\n return obj.toString(10);\n },\n /* eslint-disable max-len */\n hexadecimal: function(obj) {\n return obj >= 0 ? \"0x\" + obj.toString(16).toUpperCase() : \"-0x\" + obj.toString(16).toUpperCase().slice(1);\n }\n },\n defaultStyle: \"decimal\",\n styleAliases: {\n binary: [2, \"bin\"],\n octal: [8, \"oct\"],\n decimal: [10, \"dec\"],\n hexadecimal: [16, \"hex\"]\n }\n});\nvar YAML_FLOAT_PATTERN = new RegExp(\n // 2.5e4, 2.5 and integers\n \"^(?:[-+]?(?:[0-9][0-9_]*)(?:\\\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?\\\\.(?:inf|Inf|INF)|\\\\.(?:nan|NaN|NAN))$\"\n);\nfunction resolveYamlFloat(data) {\n if (data === null)\n return false;\n if (!YAML_FLOAT_PATTERN.test(data) || // Quick hack to not allow integers end with `_`\n // Probably should update regexp & check speed\n data[data.length - 1] === \"_\") {\n return false;\n }\n return true;\n}\nfunction constructYamlFloat(data) {\n var value, sign;\n value = data.replace(/_/g, \"\").toLowerCase();\n sign = value[0] === \"-\" ? -1 : 1;\n if (\"+-\".indexOf(value[0]) >= 0) {\n value = value.slice(1);\n }\n if (value === \".inf\") {\n return sign === 1 ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY;\n } else if (value === \".nan\") {\n return NaN;\n }\n return sign * parseFloat(value, 10);\n}\nvar SCIENTIFIC_WITHOUT_DOT = /^[-+]?[0-9]+e/;\nfunction representYamlFloat(object, style) {\n var res;\n if (isNaN(object)) {\n switch (style) {\n case \"lowercase\":\n return \".nan\";\n case \"uppercase\":\n return \".NAN\";\n case \"camelcase\":\n return \".NaN\";\n }\n } else if (Number.POSITIVE_INFINITY === object) {\n switch (style) {\n case \"lowercase\":\n return \".inf\";\n case \"uppercase\":\n return \".INF\";\n case \"camelcase\":\n return \".Inf\";\n }\n } else if (Number.NEGATIVE_INFINITY === object) {\n switch (style) {\n case \"lowercase\":\n return \"-.inf\";\n case \"uppercase\":\n return \"-.INF\";\n case \"camelcase\":\n return \"-.Inf\";\n }\n } else if (common.isNegativeZero(object)) {\n return \"-0.0\";\n }\n res = object.toString(10);\n return SCIENTIFIC_WITHOUT_DOT.test(res) ? res.replace(\"e\", \".e\") : res;\n}\nfunction isFloat(object) {\n return Object.prototype.toString.call(object) === \"[object Number]\" && (object % 1 !== 0 || common.isNegativeZero(object));\n}\nvar float = new type(\"tag:yaml.org,2002:float\", {\n kind: \"scalar\",\n resolve: resolveYamlFloat,\n construct: constructYamlFloat,\n predicate: isFloat,\n represent: representYamlFloat,\n defaultStyle: \"lowercase\"\n});\nvar json = failsafe.extend({\n implicit: [\n _null,\n bool,\n int,\n float\n ]\n});\nvar core = json;\nvar YAML_DATE_REGEXP = new RegExp(\n \"^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$\"\n);\nvar YAML_TIMESTAMP_REGEXP = new RegExp(\n \"^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\\\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\\\.([0-9]*))?(?:[ \\\\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$\"\n);\nfunction resolveYamlTimestamp(data) {\n if (data === null)\n return false;\n if (YAML_DATE_REGEXP.exec(data) !== null)\n return true;\n if (YAML_TIMESTAMP_REGEXP.exec(data) !== null)\n return true;\n return false;\n}\nfunction constructYamlTimestamp(data) {\n var match, year, month, day, hour, minute, second, fraction = 0, delta = null, tz_hour, tz_minute, date;\n match = YAML_DATE_REGEXP.exec(data);\n if (match === null)\n match = YAML_TIMESTAMP_REGEXP.exec(data);\n if (match === null)\n throw new Error(\"Date resolve error\");\n year = +match[1];\n month = +match[2] - 1;\n day = +match[3];\n if (!match[4]) {\n return new Date(Date.UTC(year, month, day));\n }\n hour = +match[4];\n minute = +match[5];\n second = +match[6];\n if (match[7]) {\n fraction = match[7].slice(0, 3);\n while (fraction.length < 3) {\n fraction += \"0\";\n }\n fraction = +fraction;\n }\n if (match[9]) {\n tz_hour = +match[10];\n tz_minute = +(match[11] || 0);\n delta = (tz_hour * 60 + tz_minute) * 6e4;\n if (match[9] === \"-\")\n delta = -delta;\n }\n date = new Date(Date.UTC(year, month, day, hour, minute, second, fraction));\n if (delta)\n date.setTime(date.getTime() - delta);\n return date;\n}\nfunction representYamlTimestamp(object) {\n return object.toISOString();\n}\nvar timestamp = new type(\"tag:yaml.org,2002:timestamp\", {\n kind: \"scalar\",\n resolve: resolveYamlTimestamp,\n construct: constructYamlTimestamp,\n instanceOf: Date,\n represent: representYamlTimestamp\n});\nfunction resolveYamlMerge(data) {\n return data === \"<<\" || data === null;\n}\nvar merge = new type(\"tag:yaml.org,2002:merge\", {\n kind: \"scalar\",\n resolve: resolveYamlMerge\n});\nvar BASE64_MAP = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\\n\\r\";\nfunction resolveYamlBinary(data) {\n if (data === null)\n return false;\n var code, idx, bitlen = 0, max = data.length, map2 = BASE64_MAP;\n for (idx = 0; idx < max; idx++) {\n code = map2.indexOf(data.charAt(idx));\n if (code > 64)\n continue;\n if (code < 0)\n return false;\n bitlen += 6;\n }\n return bitlen % 8 === 0;\n}\nfunction constructYamlBinary(data) {\n var idx, tailbits, input = data.replace(/[\\r\\n=]/g, \"\"), max = input.length, map2 = BASE64_MAP, bits = 0, result = [];\n for (idx = 0; idx < max; idx++) {\n if (idx % 4 === 0 && idx) {\n result.push(bits >> 16 & 255);\n result.push(bits >> 8 & 255);\n result.push(bits & 255);\n }\n bits = bits << 6 | map2.indexOf(input.charAt(idx));\n }\n tailbits = max % 4 * 6;\n if (tailbits === 0) {\n result.push(bits >> 16 & 255);\n result.push(bits >> 8 & 255);\n result.push(bits & 255);\n } else if (tailbits === 18) {\n result.push(bits >> 10 & 255);\n result.push(bits >> 2 & 255);\n } else if (tailbits === 12) {\n result.push(bits >> 4 & 255);\n }\n return new Uint8Array(result);\n}\nfunction representYamlBinary(object) {\n var result = \"\", bits = 0, idx, tail, max = object.length, map2 = BASE64_MAP;\n for (idx = 0; idx < max; idx++) {\n if (idx % 3 === 0 && idx) {\n result += map2[bits >> 18 & 63];\n result += map2[bits >> 12 & 63];\n result += map2[bits >> 6 & 63];\n result += map2[bits & 63];\n }\n bits = (bits << 8) + object[idx];\n }\n tail = max % 3;\n if (tail === 0) {\n result += map2[bits >> 18 & 63];\n result += map2[bits >> 12 & 63];\n result += map2[bits >> 6 & 63];\n result += map2[bits & 63];\n } else if (tail === 2) {\n result += map2[bits >> 10 & 63];\n result += map2[bits >> 4 & 63];\n result += map2[bits << 2 & 63];\n result += map2[64];\n } else if (tail === 1) {\n result += map2[bits >> 2 & 63];\n result += map2[bits << 4 & 63];\n result += map2[64];\n result += map2[64];\n }\n return result;\n}\nfunction isBinary(obj) {\n return Object.prototype.toString.call(obj) === \"[object Uint8Array]\";\n}\nvar binary = new type(\"tag:yaml.org,2002:binary\", {\n kind: \"scalar\",\n resolve: resolveYamlBinary,\n construct: constructYamlBinary,\n predicate: isBinary,\n represent: representYamlBinary\n});\nvar _hasOwnProperty$3 = Object.prototype.hasOwnProperty;\nvar _toString$2 = Object.prototype.toString;\nfunction resolveYamlOmap(data) {\n if (data === null)\n return true;\n var objectKeys = [], index, length, pair, pairKey, pairHasKey, object = data;\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n pairHasKey = false;\n if (_toString$2.call(pair) !== \"[object Object]\")\n return false;\n for (pairKey in pair) {\n if (_hasOwnProperty$3.call(pair, pairKey)) {\n if (!pairHasKey)\n pairHasKey = true;\n else\n return false;\n }\n }\n if (!pairHasKey)\n return false;\n if (objectKeys.indexOf(pairKey) === -1)\n objectKeys.push(pairKey);\n else\n return false;\n }\n return true;\n}\nfunction constructYamlOmap(data) {\n return data !== null ? data : [];\n}\nvar omap = new type(\"tag:yaml.org,2002:omap\", {\n kind: \"sequence\",\n resolve: resolveYamlOmap,\n construct: constructYamlOmap\n});\nvar _toString$1 = Object.prototype.toString;\nfunction resolveYamlPairs(data) {\n if (data === null)\n return true;\n var index, length, pair, keys, result, object = data;\n result = new Array(object.length);\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n if (_toString$1.call(pair) !== \"[object Object]\")\n return false;\n keys = Object.keys(pair);\n if (keys.length !== 1)\n return false;\n result[index] = [keys[0], pair[keys[0]]];\n }\n return true;\n}\nfunction constructYamlPairs(data) {\n if (data === null)\n return [];\n var index, length, pair, keys, result, object = data;\n result = new Array(object.length);\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n keys = Object.keys(pair);\n result[index] = [keys[0], pair[keys[0]]];\n }\n return result;\n}\nvar pairs = new type(\"tag:yaml.org,2002:pairs\", {\n kind: \"sequence\",\n resolve: resolveYamlPairs,\n construct: constructYamlPairs\n});\nvar _hasOwnProperty$2 = Object.prototype.hasOwnProperty;\nfunction resolveYamlSet(data) {\n if (data === null)\n return true;\n var key, object = data;\n for (key in object) {\n if (_hasOwnProperty$2.call(object, key)) {\n if (object[key] !== null)\n return false;\n }\n }\n return true;\n}\nfunction constructYamlSet(data) {\n return data !== null ? data : {};\n}\nvar set = new type(\"tag:yaml.org,2002:set\", {\n kind: \"mapping\",\n resolve: resolveYamlSet,\n construct: constructYamlSet\n});\nvar _default = core.extend({\n implicit: [\n timestamp,\n merge\n ],\n explicit: [\n binary,\n omap,\n pairs,\n set\n ]\n});\nvar _hasOwnProperty$1 = Object.prototype.hasOwnProperty;\nvar CONTEXT_FLOW_IN = 1;\nvar CONTEXT_FLOW_OUT = 2;\nvar CONTEXT_BLOCK_IN = 3;\nvar CONTEXT_BLOCK_OUT = 4;\nvar CHOMPING_CLIP = 1;\nvar CHOMPING_STRIP = 2;\nvar CHOMPING_KEEP = 3;\nvar PATTERN_NON_PRINTABLE = /[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F-\\x84\\x86-\\x9F\\uFFFE\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/;\nvar PATTERN_NON_ASCII_LINE_BREAKS = /[\\x85\\u2028\\u2029]/;\nvar PATTERN_FLOW_INDICATORS = /[,\\[\\]\\{\\}]/;\nvar PATTERN_TAG_HANDLE = /^(?:!|!!|![a-z\\-]+!)$/i;\nvar PATTERN_TAG_URI = /^(?:!|[^,\\[\\]\\{\\}])(?:%[0-9a-f]{2}|[0-9a-z\\-#;\\/\\?:@&=\\+\\$,_\\.!~\\*'\\(\\)\\[\\]])*$/i;\nfunction _class(obj) {\n return Object.prototype.toString.call(obj);\n}\nfunction is_EOL(c) {\n return c === 10 || c === 13;\n}\nfunction is_WHITE_SPACE(c) {\n return c === 9 || c === 32;\n}\nfunction is_WS_OR_EOL(c) {\n return c === 9 || c === 32 || c === 10 || c === 13;\n}\nfunction is_FLOW_INDICATOR(c) {\n return c === 44 || c === 91 || c === 93 || c === 123 || c === 125;\n}\nfunction fromHexCode(c) {\n var lc;\n if (48 <= c && c <= 57) {\n return c - 48;\n }\n lc = c | 32;\n if (97 <= lc && lc <= 102) {\n return lc - 97 + 10;\n }\n return -1;\n}\nfunction escapedHexLen(c) {\n if (c === 120) {\n return 2;\n }\n if (c === 117) {\n return 4;\n }\n if (c === 85) {\n return 8;\n }\n return 0;\n}\nfunction fromDecimalCode(c) {\n if (48 <= c && c <= 57) {\n return c - 48;\n }\n return -1;\n}\nfunction simpleEscapeSequence(c) {\n return c === 48 ? \"\\0\" : c === 97 ? \"\\x07\" : c === 98 ? \"\\b\" : c === 116 ? \"\t\" : c === 9 ? \"\t\" : c === 110 ? \"\\n\" : c === 118 ? \"\\v\" : c === 102 ? \"\\f\" : c === 114 ? \"\\r\" : c === 101 ? \"\\x1B\" : c === 32 ? \" \" : c === 34 ? '\"' : c === 47 ? \"/\" : c === 92 ? \"\\\\\" : c === 78 ? \"
\" : c === 95 ? \" \" : c === 76 ? \"\\u2028\" : c === 80 ? \"\\u2029\" : \"\";\n}\nfunction charFromCodepoint(c) {\n if (c <= 65535) {\n return String.fromCharCode(c);\n }\n return String.fromCharCode(\n (c - 65536 >> 10) + 55296,\n (c - 65536 & 1023) + 56320\n );\n}\nvar simpleEscapeCheck = new Array(256);\nvar simpleEscapeMap = new Array(256);\nfor (var i = 0; i < 256; i++) {\n simpleEscapeCheck[i] = simpleEscapeSequence(i) ? 1 : 0;\n simpleEscapeMap[i] = simpleEscapeSequence(i);\n}\nfunction State$1(input, options) {\n this.input = input;\n this.filename = options[\"filename\"] || null;\n this.schema = options[\"schema\"] || _default;\n this.onWarning = options[\"onWarning\"] || null;\n this.legacy = options[\"legacy\"] || false;\n this.json = options[\"json\"] || false;\n this.listener = options[\"listener\"] || null;\n this.implicitTypes = this.schema.compiledImplicit;\n this.typeMap = this.schema.compiledTypeMap;\n this.length = input.length;\n this.position = 0;\n this.line = 0;\n this.lineStart = 0;\n this.lineIndent = 0;\n this.firstTabInLine = -1;\n this.documents = [];\n}\nfunction generateError(state2, message) {\n var mark = {\n name: state2.filename,\n buffer: state2.input.slice(0, -1),\n // omit trailing \\0\n position: state2.position,\n line: state2.line,\n column: state2.position - state2.lineStart\n };\n mark.snippet = snippet(mark);\n return new exception(message, mark);\n}\nfunction throwError(state2, message) {\n throw generateError(state2, message);\n}\nfunction throwWarning(state2, message) {\n if (state2.onWarning) {\n state2.onWarning.call(null, generateError(state2, message));\n }\n}\nvar directiveHandlers = {\n YAML: function handleYamlDirective(state2, name, args) {\n var match, major, minor;\n if (state2.version !== null) {\n throwError(state2, \"duplication of %YAML directive\");\n }\n if (args.length !== 1) {\n throwError(state2, \"YAML directive accepts exactly one argument\");\n }\n match = /^([0-9]+)\\.([0-9]+)$/.exec(args[0]);\n if (match === null) {\n throwError(state2, \"ill-formed argument of the YAML directive\");\n }\n major = parseInt(match[1], 10);\n minor = parseInt(match[2], 10);\n if (major !== 1) {\n throwError(state2, \"unacceptable YAML version of the document\");\n }\n state2.version = args[0];\n state2.checkLineBreaks = minor < 2;\n if (minor !== 1 && minor !== 2) {\n throwWarning(state2, \"unsupported YAML version of the document\");\n }\n },\n TAG: function handleTagDirective(state2, name, args) {\n var handle, prefix;\n if (args.length !== 2) {\n throwError(state2, \"TAG directive accepts exactly two arguments\");\n }\n handle = args[0];\n prefix = args[1];\n if (!PATTERN_TAG_HANDLE.test(handle)) {\n throwError(state2, \"ill-formed tag handle (first argument) of the TAG directive\");\n }\n if (_hasOwnProperty$1.call(state2.tagMap, handle)) {\n throwError(state2, 'there is a previously declared suffix for \"' + handle + '\" tag handle');\n }\n if (!PATTERN_TAG_URI.test(prefix)) {\n throwError(state2, \"ill-formed tag prefix (second argument) of the TAG directive\");\n }\n try {\n prefix = decodeURIComponent(prefix);\n } catch (err) {\n throwError(state2, \"tag prefix is malformed: \" + prefix);\n }\n state2.tagMap[handle] = prefix;\n }\n};\nfunction captureSegment(state2, start, end, checkJson) {\n var _position, _length, _character, _result;\n if (start < end) {\n _result = state2.input.slice(start, end);\n if (checkJson) {\n for (_position = 0, _length = _result.length; _position < _length; _position += 1) {\n _character = _result.charCodeAt(_position);\n if (!(_character === 9 || 32 <= _character && _character <= 1114111)) {\n throwError(state2, \"expected valid JSON character\");\n }\n }\n } else if (PATTERN_NON_PRINTABLE.test(_result)) {\n throwError(state2, \"the stream contains non-printable characters\");\n }\n state2.result += _result;\n }\n}\nfunction mergeMappings(state2, destination, source, overridableKeys) {\n var sourceKeys, key, index, quantity;\n if (!common.isObject(source)) {\n throwError(state2, \"cannot merge mappings; the provided source object is unacceptable\");\n }\n sourceKeys = Object.keys(source);\n for (index = 0, quantity = sourceKeys.length; index < quantity; index += 1) {\n key = sourceKeys[index];\n if (!_hasOwnProperty$1.call(destination, key)) {\n destination[key] = source[key];\n overridableKeys[key] = true;\n }\n }\n}\nfunction storeMappingPair(state2, _result, overridableKeys, keyTag, keyNode, valueNode, startLine, startLineStart, startPos) {\n var index, quantity;\n if (Array.isArray(keyNode)) {\n keyNode = Array.prototype.slice.call(keyNode);\n for (index = 0, quantity = keyNode.length; index < quantity; index += 1) {\n if (Array.isArray(keyNode[index])) {\n throwError(state2, \"nested arrays are not supported inside keys\");\n }\n if (typeof keyNode === \"object\" && _class(keyNode[index]) === \"[object Object]\") {\n keyNode[index] = \"[object Object]\";\n }\n }\n }\n if (typeof keyNode === \"object\" && _class(keyNode) === \"[object Object]\") {\n keyNode = \"[object Object]\";\n }\n keyNode = String(keyNode);\n if (_result === null) {\n _result = {};\n }\n if (keyTag === \"tag:yaml.org,2002:merge\") {\n if (Array.isArray(valueNode)) {\n for (index = 0, quantity = valueNode.length; index < quantity; index += 1) {\n mergeMappings(state2, _result, valueNode[index], overridableKeys);\n }\n } else {\n mergeMappings(state2, _result, valueNode, overridableKeys);\n }\n } else {\n if (!state2.json && !_hasOwnProperty$1.call(overridableKeys, keyNode) && _hasOwnProperty$1.call(_result, keyNode)) {\n state2.line = startLine || state2.line;\n state2.lineStart = startLineStart || state2.lineStart;\n state2.position = startPos || state2.position;\n throwError(state2, \"duplicated mapping key\");\n }\n if (keyNode === \"__proto__\") {\n Object.defineProperty(_result, keyNode, {\n configurable: true,\n enumerable: true,\n writable: true,\n value: valueNode\n });\n } else {\n _result[keyNode] = valueNode;\n }\n delete overridableKeys[keyNode];\n }\n return _result;\n}\nfunction readLineBreak(state2) {\n var ch;\n ch = state2.input.charCodeAt(state2.position);\n if (ch === 10) {\n state2.position++;\n } else if (ch === 13) {\n state2.position++;\n if (state2.input.charCodeAt(state2.position) === 10) {\n state2.position++;\n }\n } else {\n throwError(state2, \"a line break is expected\");\n }\n state2.line += 1;\n state2.lineStart = state2.position;\n state2.firstTabInLine = -1;\n}\nfunction skipSeparationSpace(state2, allowComments, checkIndent) {\n var lineBreaks = 0, ch = state2.input.charCodeAt(state2.position);\n while (ch !== 0) {\n while (is_WHITE_SPACE(ch)) {\n if (ch === 9 && state2.firstTabInLine === -1) {\n state2.firstTabInLine = state2.position;\n }\n ch = state2.input.charCodeAt(++state2.position);\n }\n if (allowComments && ch === 35) {\n do {\n ch = state2.input.charCodeAt(++state2.position);\n } while (ch !== 10 && ch !== 13 && ch !== 0);\n }\n if (is_EOL(ch)) {\n readLineBreak(state2);\n ch = state2.input.charCodeAt(state2.position);\n lineBreaks++;\n state2.lineIndent = 0;\n while (ch === 32) {\n state2.lineIndent++;\n ch = state2.input.charCodeAt(++state2.position);\n }\n } else {\n break;\n }\n }\n if (checkIndent !== -1 && lineBreaks !== 0 && state2.lineIndent < checkIndent) {\n throwWarning(state2, \"deficient indentation\");\n }\n return lineBreaks;\n}\nfunction testDocumentSeparator(state2) {\n var _position = state2.position, ch;\n ch = state2.input.charCodeAt(_position);\n if ((ch === 45 || ch === 46) && ch === state2.input.charCodeAt(_position + 1) && ch === state2.input.charCodeAt(_position + 2)) {\n _position += 3;\n ch = state2.input.charCodeAt(_position);\n if (ch === 0 || is_WS_OR_EOL(ch)) {\n return true;\n }\n }\n return false;\n}\nfunction writeFoldedLines(state2, count) {\n if (count === 1) {\n state2.result += \" \";\n } else if (count > 1) {\n state2.result += common.repeat(\"\\n\", count - 1);\n }\n}\nfunction readPlainScalar(state2, nodeIndent, withinFlowCollection) {\n var preceding, following, captureStart, captureEnd, hasPendingContent, _line, _lineStart, _lineIndent, _kind = state2.kind, _result = state2.result, ch;\n ch = state2.input.charCodeAt(state2.position);\n if (is_WS_OR_EOL(ch) || is_FLOW_INDICATOR(ch) || ch === 35 || ch === 38 || ch === 42 || ch === 33 || ch === 124 || ch === 62 || ch === 39 || ch === 34 || ch === 37 || ch === 64 || ch === 96) {\n return false;\n }\n if (ch === 63 || ch === 45) {\n following = state2.input.charCodeAt(state2.position + 1);\n if (is_WS_OR_EOL(following) || withinFlowCollection && is_FLOW_INDICATOR(following)) {\n return false;\n }\n }\n state2.kind = \"scalar\";\n state2.result = \"\";\n captureStart = captureEnd = state2.position;\n hasPendingContent = false;\n while (ch !== 0) {\n if (ch === 58) {\n following = state2.input.charCodeAt(state2.position + 1);\n if (is_WS_OR_EOL(following) || withinFlowCollection && is_FLOW_INDICATOR(following)) {\n break;\n }\n } else if (ch === 35) {\n preceding = state2.input.charCodeAt(state2.position - 1);\n if (is_WS_OR_EOL(preceding)) {\n break;\n }\n } else if (state2.position === state2.lineStart && testDocumentSeparator(state2) || withinFlowCollection && is_FLOW_INDICATOR(ch)) {\n break;\n } else if (is_EOL(ch)) {\n _line = state2.line;\n _lineStart = state2.lineStart;\n _lineIndent = state2.lineIndent;\n skipSeparationSpace(state2, false, -1);\n if (state2.lineIndent >= nodeIndent) {\n hasPendingContent = true;\n ch = state2.input.charCodeAt(state2.position);\n continue;\n } else {\n state2.position = captureEnd;\n state2.line = _line;\n state2.lineStart = _lineStart;\n state2.lineIndent = _lineIndent;\n break;\n }\n }\n if (hasPendingContent) {\n captureSegment(state2, captureStart, captureEnd, false);\n writeFoldedLines(state2, state2.line - _line);\n captureStart = captureEnd = state2.position;\n hasPendingContent = false;\n }\n if (!is_WHITE_SPACE(ch)) {\n captureEnd = state2.position + 1;\n }\n ch = state2.input.charCodeAt(++state2.position);\n }\n captureSegment(state2, captureStart, captureEnd, false);\n if (state2.result) {\n return true;\n }\n state2.kind = _kind;\n state2.result = _result;\n return false;\n}\nfunction readSingleQuotedScalar(state2, nodeIndent) {\n var ch, captureStart, captureEnd;\n ch = state2.input.charCodeAt(state2.position);\n if (ch !== 39) {\n return false;\n }\n state2.kind = \"scalar\";\n state2.result = \"\";\n state2.position++;\n captureStart = captureEnd = state2.position;\n while ((ch = state2.input.charCodeAt(state2.position)) !== 0) {\n if (ch === 39) {\n captureSegment(state2, captureStart, state2.position, true);\n ch = state2.input.charCodeAt(++state2.position);\n if (ch === 39) {\n captureStart = state2.position;\n state2.position++;\n captureEnd = state2.position;\n } else {\n return true;\n }\n } else if (is_EOL(ch)) {\n captureSegment(state2, captureStart, captureEnd, true);\n writeFoldedLines(state2, skipSeparationSpace(state2, false, nodeIndent));\n captureStart = captureEnd = state2.position;\n } else if (state2.position === state2.lineStart && testDocumentSeparator(state2)) {\n throwError(state2, \"unexpected end of the document within a single quoted scalar\");\n } else {\n state2.position++;\n captureEnd = state2.position;\n }\n }\n throwError(state2, \"unexpected end of the stream within a single quoted scalar\");\n}\nfunction readDoubleQuotedScalar(state2, nodeIndent) {\n var captureStart, captureEnd, hexLength, hexResult, tmp, ch;\n ch = state2.input.charCodeAt(state2.position);\n if (ch !== 34) {\n return false;\n }\n state2.kind = \"scalar\";\n state2.result = \"\";\n state2.position++;\n captureStart = captureEnd = state2.position;\n while ((ch = state2.input.charCodeAt(state2.position)) !== 0) {\n if (ch === 34) {\n captureSegment(state2, captureStart, state2.position, true);\n state2.position++;\n return true;\n } else if (ch === 92) {\n captureSegment(state2, captureStart, state2.position, true);\n ch = state2.input.charCodeAt(++state2.position);\n if (is_EOL(ch)) {\n skipSeparationSpace(state2, false, nodeIndent);\n } else if (ch < 256 && simpleEscapeCheck[ch]) {\n state2.result += simpleEscapeMap[ch];\n state2.position++;\n } else if ((tmp = escapedHexLen(ch)) > 0) {\n hexLength = tmp;\n hexResult = 0;\n for (; hexLength > 0; hexLength--) {\n ch = state2.input.charCodeAt(++state2.position);\n if ((tmp = fromHexCode(ch)) >= 0) {\n hexResult = (hexResult << 4) + tmp;\n } else {\n throwError(state2, \"expected hexadecimal character\");\n }\n }\n state2.result += charFromCodepoint(hexResult);\n state2.position++;\n } else {\n throwError(state2, \"unknown escape sequence\");\n }\n captureStart = captureEnd = state2.position;\n } else if (is_EOL(ch)) {\n captureSegment(state2, captureStart, captureEnd, true);\n writeFoldedLines(state2, skipSeparationSpace(state2, false, nodeIndent));\n captureStart = captureEnd = state2.position;\n } else if (state2.position === state2.lineStart && testDocumentSeparator(state2)) {\n throwError(state2, \"unexpected end of the document within a double quoted scalar\");\n } else {\n state2.position++;\n captureEnd = state2.position;\n }\n }\n throwError(state2, \"unexpected end of the stream within a double quoted scalar\");\n}\nfunction readFlowCollection(state2, nodeIndent) {\n var readNext = true, _line, _lineStart, _pos, _tag = state2.tag, _result, _anchor = state2.anchor, following, terminator, isPair, isExplicitPair, isMapping, overridableKeys = /* @__PURE__ */ Object.create(null), keyNode, keyTag, valueNode, ch;\n ch = state2.input.charCodeAt(state2.position);\n if (ch === 91) {\n terminator = 93;\n isMapping = false;\n _result = [];\n } else if (ch === 123) {\n terminator = 125;\n isMapping = true;\n _result = {};\n } else {\n return false;\n }\n if (state2.anchor !== null) {\n state2.anchorMap[state2.anchor] = _result;\n }\n ch = state2.input.charCodeAt(++state2.position);\n while (ch !== 0) {\n skipSeparationSpace(state2, true, nodeIndent);\n ch = state2.input.charCodeAt(state2.position);\n if (ch === terminator) {\n state2.position++;\n state2.tag = _tag;\n state2.anchor = _anchor;\n state2.kind = isMapping ? \"mapping\" : \"sequence\";\n state2.result = _result;\n return true;\n } else if (!readNext) {\n throwError(state2, \"missed comma between flow collection entries\");\n } else if (ch === 44) {\n throwError(state2, \"expected the node content, but found ','\");\n }\n keyTag = keyNode = valueNode = null;\n isPair = isExplicitPair = false;\n if (ch === 63) {\n following = state2.input.charCodeAt(state2.position + 1);\n if (is_WS_OR_EOL(following)) {\n isPair = isExplicitPair = true;\n state2.position++;\n skipSeparationSpace(state2, true, nodeIndent);\n }\n }\n _line = state2.line;\n _lineStart = state2.lineStart;\n _pos = state2.position;\n composeNode(state2, nodeIndent, CONTEXT_FLOW_IN, false, true);\n keyTag = state2.tag;\n keyNode = state2.result;\n skipSeparationSpace(state2, true, nodeIndent);\n ch = state2.input.charCodeAt(state2.position);\n if ((isExplicitPair || state2.line === _line) && ch === 58) {\n isPair = true;\n ch = state2.input.charCodeAt(++state2.position);\n skipSeparationSpace(state2, true, nodeIndent);\n composeNode(state2, nodeIndent, CONTEXT_FLOW_IN, false, true);\n valueNode = state2.result;\n }\n if (isMapping) {\n storeMappingPair(state2, _result, overridableKeys, keyTag, keyNode, valueNode, _line, _lineStart, _pos);\n } else if (isPair) {\n _result.push(storeMappingPair(state2, null, overridableKeys, keyTag, keyNode, valueNode, _line, _lineStart, _pos));\n } else {\n _result.push(keyNode);\n }\n skipSeparationSpace(state2, true, nodeIndent);\n ch = state2.input.charCodeAt(state2.position);\n if (ch === 44) {\n readNext = true;\n ch = state2.input.charCodeAt(++state2.position);\n } else {\n readNext = false;\n }\n }\n throwError(state2, \"unexpected end of the stream within a flow collection\");\n}\nfunction readBlockScalar(state2, nodeIndent) {\n var captureStart, folding, chomping = CHOMPING_CLIP, didReadContent = false, detectedIndent = false, textIndent = nodeIndent, emptyLines = 0, atMoreIndented = false, tmp, ch;\n ch = state2.input.charCodeAt(state2.position);\n if (ch === 124) {\n folding = false;\n } else if (ch === 62) {\n folding = true;\n } else {\n return false;\n }\n state2.kind = \"scalar\";\n state2.result = \"\";\n while (ch !== 0) {\n ch = state2.input.charCodeAt(++state2.position);\n if (ch === 43 || ch === 45) {\n if (CHOMPING_CLIP === chomping) {\n chomping = ch === 43 ? CHOMPING_KEEP : CHOMPING_STRIP;\n } else {\n throwError(state2, \"repeat of a chomping mode identifier\");\n }\n } else if ((tmp = fromDecimalCode(ch)) >= 0) {\n if (tmp === 0) {\n throwError(state2, \"bad explicit indentation width of a block scalar; it cannot be less than one\");\n } else if (!detectedIndent) {\n textIndent = nodeIndent + tmp - 1;\n detectedIndent = true;\n } else {\n throwError(state2, \"repeat of an indentation width identifier\");\n }\n } else {\n break;\n }\n }\n if (is_WHITE_SPACE(ch)) {\n do {\n ch = state2.input.charCodeAt(++state2.position);\n } while (is_WHITE_SPACE(ch));\n if (ch === 35) {\n do {\n ch = state2.input.charCodeAt(++state2.position);\n } while (!is_EOL(ch) && ch !== 0);\n }\n }\n while (ch !== 0) {\n readLineBreak(state2);\n state2.lineIndent = 0;\n ch = state2.input.charCodeAt(state2.position);\n while ((!detectedIndent || state2.lineIndent < textIndent) && ch === 32) {\n state2.lineIndent++;\n ch = state2.input.charCodeAt(++state2.position);\n }\n if (!detectedIndent && state2.lineIndent > textIndent) {\n textIndent = state2.lineIndent;\n }\n if (is_EOL(ch)) {\n emptyLines++;\n continue;\n }\n if (state2.lineIndent < textIndent) {\n if (chomping === CHOMPING_KEEP) {\n state2.result += common.repeat(\"\\n\", didReadContent ? 1 + emptyLines : emptyLines);\n } else if (chomping === CHOMPING_CLIP) {\n if (didReadContent) {\n state2.result += \"\\n\";\n }\n }\n break;\n }\n if (folding) {\n if (is_WHITE_SPACE(ch)) {\n atMoreIndented = true;\n state2.result += common.repeat(\"\\n\", didReadContent ? 1 + emptyLines : emptyLines);\n } else if (atMoreIndented) {\n atMoreIndented = false;\n state2.result += common.repeat(\"\\n\", emptyLines + 1);\n } else if (emptyLines === 0) {\n if (didReadContent) {\n state2.result += \" \";\n }\n } else {\n state2.result += common.repeat(\"\\n\", emptyLines);\n }\n } else {\n state2.result += common.repeat(\"\\n\", didReadContent ? 1 + emptyLines : emptyLines);\n }\n didReadContent = true;\n detectedIndent = true;\n emptyLines = 0;\n captureStart = state2.position;\n while (!is_EOL(ch) && ch !== 0) {\n ch = state2.input.charCodeAt(++state2.position);\n }\n captureSegment(state2, captureStart, state2.position, false);\n }\n return true;\n}\nfunction readBlockSequence(state2, nodeIndent) {\n var _line, _tag = state2.tag, _anchor = state2.anchor, _result = [], following, detected = false, ch;\n if (state2.firstTabInLine !== -1)\n return false;\n if (state2.anchor !== null) {\n state2.anchorMap[state2.anchor] = _result;\n }\n ch = state2.input.charCodeAt(state2.position);\n while (ch !== 0) {\n if (state2.firstTabInLine !== -1) {\n state2.position = state2.firstTabInLine;\n throwError(state2, \"tab characters must not be used in indentation\");\n }\n if (ch !== 45) {\n break;\n }\n following = state2.input.charCodeAt(state2.position + 1);\n if (!is_WS_OR_EOL(following)) {\n break;\n }\n detected = true;\n state2.position++;\n if (skipSeparationSpace(state2, true, -1)) {\n if (state2.lineIndent <= nodeIndent) {\n _result.push(null);\n ch = state2.input.charCodeAt(state2.position);\n continue;\n }\n }\n _line = state2.line;\n composeNode(state2, nodeIndent, CONTEXT_BLOCK_IN, false, true);\n _result.push(state2.result);\n skipSeparationSpace(state2, true, -1);\n ch = state2.input.charCodeAt(state2.position);\n if ((state2.line === _line || state2.lineIndent > nodeIndent) && ch !== 0) {\n throwError(state2, \"bad indentation of a sequence entry\");\n } else if (state2.lineIndent < nodeIndent) {\n break;\n }\n }\n if (detected) {\n state2.tag = _tag;\n state2.anchor = _anchor;\n state2.kind = \"sequence\";\n state2.result = _result;\n return true;\n }\n return false;\n}\nfunction readBlockMapping(state2, nodeIndent, flowIndent) {\n var following, allowCompact, _line, _keyLine, _keyLineStart, _keyPos, _tag = state2.tag, _anchor = state2.anchor, _result = {}, overridableKeys = /* @__PURE__ */ Object.create(null), keyTag = null, keyNode = null, valueNode = null, atExplicitKey = false, detected = false, ch;\n if (state2.firstTabInLine !== -1)\n return false;\n if (state2.anchor !== null) {\n state2.anchorMap[state2.anchor] = _result;\n }\n ch = state2.input.charCodeAt(state2.position);\n while (ch !== 0) {\n if (!atExplicitKey && state2.firstTabInLine !== -1) {\n state2.position = state2.firstTabInLine;\n throwError(state2, \"tab characters must not be used in indentation\");\n }\n following = state2.input.charCodeAt(state2.position + 1);\n _line = state2.line;\n if ((ch === 63 || ch === 58) && is_WS_OR_EOL(following)) {\n if (ch === 63) {\n if (atExplicitKey) {\n storeMappingPair(state2, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos);\n keyTag = keyNode = valueNode = null;\n }\n detected = true;\n atExplicitKey = true;\n allowCompact = true;\n } else if (atExplicitKey) {\n atExplicitKey = false;\n allowCompact = true;\n } else {\n throwError(state2, \"incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line\");\n }\n state2.position += 1;\n ch = following;\n } else {\n _keyLine = state2.line;\n _keyLineStart = state2.lineStart;\n _keyPos = state2.position;\n if (!composeNode(state2, flowIndent, CONTEXT_FLOW_OUT, false, true)) {\n break;\n }\n if (state2.line === _line) {\n ch = state2.input.charCodeAt(state2.position);\n while (is_WHITE_SPACE(ch)) {\n ch = state2.input.charCodeAt(++state2.position);\n }\n if (ch === 58) {\n ch = state2.input.charCodeAt(++state2.position);\n if (!is_WS_OR_EOL(ch)) {\n throwError(state2, \"a whitespace character is expected after the key-value separator within a block mapping\");\n }\n if (atExplicitKey) {\n storeMappingPair(state2, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos);\n keyTag = keyNode = valueNode = null;\n }\n detected = true;\n atExplicitKey = false;\n allowCompact = false;\n keyTag = state2.tag;\n keyNode = state2.result;\n } else if (detected) {\n throwError(state2, \"can not read an implicit mapping pair; a colon is missed\");\n } else {\n state2.tag = _tag;\n state2.anchor = _anchor;\n return true;\n }\n } else if (detected) {\n throwError(state2, \"can not read a block mapping entry; a multiline key may not be an implicit key\");\n } else {\n state2.tag = _tag;\n state2.anchor = _anchor;\n return true;\n }\n }\n if (state2.line === _line || state2.lineIndent > nodeIndent) {\n if (atExplicitKey) {\n _keyLine = state2.line;\n _keyLineStart = state2.lineStart;\n _keyPos = state2.position;\n }\n if (composeNode(state2, nodeIndent, CONTEXT_BLOCK_OUT, true, allowCompact)) {\n if (atExplicitKey) {\n keyNode = state2.result;\n } else {\n valueNode = state2.result;\n }\n }\n if (!atExplicitKey) {\n storeMappingPair(state2, _result, overridableKeys, keyTag, keyNode, valueNode, _keyLine, _keyLineStart, _keyPos);\n keyTag = keyNode = valueNode = null;\n }\n skipSeparationSpace(state2, true, -1);\n ch = state2.input.charCodeAt(state2.position);\n }\n if ((state2.line === _line || state2.lineIndent > nodeIndent) && ch !== 0) {\n throwError(state2, \"bad indentation of a mapping entry\");\n } else if (state2.lineIndent < nodeIndent) {\n break;\n }\n }\n if (atExplicitKey) {\n storeMappingPair(state2, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos);\n }\n if (detected) {\n state2.tag = _tag;\n state2.anchor = _anchor;\n state2.kind = \"mapping\";\n state2.result = _result;\n }\n return detected;\n}\nfunction readTagProperty(state2) {\n var _position, isVerbatim = false, isNamed = false, tagHandle, tagName, ch;\n ch = state2.input.charCodeAt(state2.position);\n if (ch !== 33)\n return false;\n if (state2.tag !== null) {\n throwError(state2, \"duplication of a tag property\");\n }\n ch = state2.input.charCodeAt(++state2.position);\n if (ch === 60) {\n isVerbatim = true;\n ch = state2.input.charCodeAt(++state2.position);\n } else if (ch === 33) {\n isNamed = true;\n tagHandle = \"!!\";\n ch = state2.input.charCodeAt(++state2.position);\n } else {\n tagHandle = \"!\";\n }\n _position = state2.position;\n if (isVerbatim) {\n do {\n ch = state2.input.charCodeAt(++state2.position);\n } while (ch !== 0 && ch !== 62);\n if (state2.position < state2.length) {\n tagName = state2.input.slice(_position, state2.position);\n ch = state2.input.charCodeAt(++state2.position);\n } else {\n throwError(state2, \"unexpected end of the stream within a verbatim tag\");\n }\n } else {\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n if (ch === 33) {\n if (!isNamed) {\n tagHandle = state2.input.slice(_position - 1, state2.position + 1);\n if (!PATTERN_TAG_HANDLE.test(tagHandle)) {\n throwError(state2, \"named tag handle cannot contain such characters\");\n }\n isNamed = true;\n _position = state2.position + 1;\n } else {\n throwError(state2, \"tag suffix cannot contain exclamation marks\");\n }\n }\n ch = state2.input.charCodeAt(++state2.position);\n }\n tagName = state2.input.slice(_position, state2.position);\n if (PATTERN_FLOW_INDICATORS.test(tagName)) {\n throwError(state2, \"tag suffix cannot contain flow indicator characters\");\n }\n }\n if (tagName && !PATTERN_TAG_URI.test(tagName)) {\n throwError(state2, \"tag name cannot contain such characters: \" + tagName);\n }\n try {\n tagName = decodeURIComponent(tagName);\n } catch (err) {\n throwError(state2, \"tag name is malformed: \" + tagName);\n }\n if (isVerbatim) {\n state2.tag = tagName;\n } else if (_hasOwnProperty$1.call(state2.tagMap, tagHandle)) {\n state2.tag = state2.tagMap[tagHandle] + tagName;\n } else if (tagHandle === \"!\") {\n state2.tag = \"!\" + tagName;\n } else if (tagHandle === \"!!\") {\n state2.tag = \"tag:yaml.org,2002:\" + tagName;\n } else {\n throwError(state2, 'undeclared tag handle \"' + tagHandle + '\"');\n }\n return true;\n}\nfunction readAnchorProperty(state2) {\n var _position, ch;\n ch = state2.input.charCodeAt(state2.position);\n if (ch !== 38)\n return false;\n if (state2.anchor !== null) {\n throwError(state2, \"duplication of an anchor property\");\n }\n ch = state2.input.charCodeAt(++state2.position);\n _position = state2.position;\n while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n ch = state2.input.charCodeAt(++state2.position);\n }\n if (state2.position === _position) {\n throwError(state2, \"name of an anchor node must contain at least one character\");\n }\n state2.anchor = state2.input.slice(_position, state2.position);\n return true;\n}\nfunction readAlias(state2) {\n var _position, alias, ch;\n ch = state2.input.charCodeAt(state2.position);\n if (ch !== 42)\n return false;\n ch = state2.input.charCodeAt(++state2.position);\n _position = state2.position;\n while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n ch = state2.input.charCodeAt(++state2.position);\n }\n if (state2.position === _position) {\n throwError(state2, \"name of an alias node must contain at least one character\");\n }\n alias = state2.input.slice(_position, state2.position);\n if (!_hasOwnProperty$1.call(state2.anchorMap, alias)) {\n throwError(state2, 'unidentified alias \"' + alias + '\"');\n }\n state2.result = state2.anchorMap[alias];\n skipSeparationSpace(state2, true, -1);\n return true;\n}\nfunction composeNode(state2, parentIndent, nodeContext, allowToSeek, allowCompact) {\n var allowBlockStyles, allowBlockScalars, allowBlockCollections, indentStatus = 1, atNewLine = false, hasContent = false, typeIndex, typeQuantity, typeList, type2, flowIndent, blockIndent;\n if (state2.listener !== null) {\n state2.listener(\"open\", state2);\n }\n state2.tag = null;\n state2.anchor = null;\n state2.kind = null;\n state2.result = null;\n allowBlockStyles = allowBlockScalars = allowBlockCollections = CONTEXT_BLOCK_OUT === nodeContext || CONTEXT_BLOCK_IN === nodeContext;\n if (allowToSeek) {\n if (skipSeparationSpace(state2, true, -1)) {\n atNewLine = true;\n if (state2.lineIndent > parentIndent) {\n indentStatus = 1;\n } else if (state2.lineIndent === parentIndent) {\n indentStatus = 0;\n } else if (state2.lineIndent < parentIndent) {\n indentStatus = -1;\n }\n }\n }\n if (indentStatus === 1) {\n while (readTagProperty(state2) || readAnchorProperty(state2)) {\n if (skipSeparationSpace(state2, true, -1)) {\n atNewLine = true;\n allowBlockCollections = allowBlockStyles;\n if (state2.lineIndent > parentIndent) {\n indentStatus = 1;\n } else if (state2.lineIndent === parentIndent) {\n indentStatus = 0;\n } else if (state2.lineIndent < parentIndent) {\n indentStatus = -1;\n }\n } else {\n allowBlockCollections = false;\n }\n }\n }\n if (allowBlockCollections) {\n allowBlockCollections = atNewLine || allowCompact;\n }\n if (indentStatus === 1 || CONTEXT_BLOCK_OUT === nodeContext) {\n if (CONTEXT_FLOW_IN === nodeContext || CONTEXT_FLOW_OUT === nodeContext) {\n flowIndent = parentIndent;\n } else {\n flowIndent = parentIndent + 1;\n }\n blockIndent = state2.position - state2.lineStart;\n if (indentStatus === 1) {\n if (allowBlockCollections && (readBlockSequence(state2, blockIndent) || readBlockMapping(state2, blockIndent, flowIndent)) || readFlowCollection(state2, flowIndent)) {\n hasContent = true;\n } else {\n if (allowBlockScalars && readBlockScalar(state2, flowIndent) || readSingleQuotedScalar(state2, flowIndent) || readDoubleQuotedScalar(state2, flowIndent)) {\n hasContent = true;\n } else if (readAlias(state2)) {\n hasContent = true;\n if (state2.tag !== null || state2.anchor !== null) {\n throwError(state2, \"alias node should not have any properties\");\n }\n } else if (readPlainScalar(state2, flowIndent, CONTEXT_FLOW_IN === nodeContext)) {\n hasContent = true;\n if (state2.tag === null) {\n state2.tag = \"?\";\n }\n }\n if (state2.anchor !== null) {\n state2.anchorMap[state2.anchor] = state2.result;\n }\n }\n } else if (indentStatus === 0) {\n hasContent = allowBlockCollections && readBlockSequence(state2, blockIndent);\n }\n }\n if (state2.tag === null) {\n if (state2.anchor !== null) {\n state2.anchorMap[state2.anchor] = state2.result;\n }\n } else if (state2.tag === \"?\") {\n if (state2.result !== null && state2.kind !== \"scalar\") {\n throwError(state2, 'unacceptable node kind for !<?> tag; it should be \"scalar\", not \"' + state2.kind + '\"');\n }\n for (typeIndex = 0, typeQuantity = state2.implicitTypes.length; typeIndex < typeQuantity; typeIndex += 1) {\n type2 = state2.implicitTypes[typeIndex];\n if (type2.resolve(state2.result)) {\n state2.result = type2.construct(state2.result);\n state2.tag = type2.tag;\n if (state2.anchor !== null) {\n state2.anchorMap[state2.anchor] = state2.result;\n }\n break;\n }\n }\n } else if (state2.tag !== \"!\") {\n if (_hasOwnProperty$1.call(state2.typeMap[state2.kind || \"fallback\"], state2.tag)) {\n type2 = state2.typeMap[state2.kind || \"fallback\"][state2.tag];\n } else {\n type2 = null;\n typeList = state2.typeMap.multi[state2.kind || \"fallback\"];\n for (typeIndex = 0, typeQuantity = typeList.length; typeIndex < typeQuantity; typeIndex += 1) {\n if (state2.tag.slice(0, typeList[typeIndex].tag.length) === typeList[typeIndex].tag) {\n type2 = typeList[typeIndex];\n break;\n }\n }\n }\n if (!type2) {\n throwError(state2, \"unknown tag !<\" + state2.tag + \">\");\n }\n if (state2.result !== null && type2.kind !== state2.kind) {\n throwError(state2, \"unacceptable node kind for !<\" + state2.tag + '> tag; it should be \"' + type2.kind + '\", not \"' + state2.kind + '\"');\n }\n if (!type2.resolve(state2.result, state2.tag)) {\n throwError(state2, \"cannot resolve a node with !<\" + state2.tag + \"> explicit tag\");\n } else {\n state2.result = type2.construct(state2.result, state2.tag);\n if (state2.anchor !== null) {\n state2.anchorMap[state2.anchor] = state2.result;\n }\n }\n }\n if (state2.listener !== null) {\n state2.listener(\"close\", state2);\n }\n return state2.tag !== null || state2.anchor !== null || hasContent;\n}\nfunction readDocument(state2) {\n var documentStart = state2.position, _position, directiveName, directiveArgs, hasDirectives = false, ch;\n state2.version = null;\n state2.checkLineBreaks = state2.legacy;\n state2.tagMap = /* @__PURE__ */ Object.create(null);\n state2.anchorMap = /* @__PURE__ */ Object.create(null);\n while ((ch = state2.input.charCodeAt(state2.position)) !== 0) {\n skipSeparationSpace(state2, true, -1);\n ch = state2.input.charCodeAt(state2.position);\n if (state2.lineIndent > 0 || ch !== 37) {\n break;\n }\n hasDirectives = true;\n ch = state2.input.charCodeAt(++state2.position);\n _position = state2.position;\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n ch = state2.input.charCodeAt(++state2.position);\n }\n directiveName = state2.input.slice(_position, state2.position);\n directiveArgs = [];\n if (directiveName.length < 1) {\n throwError(state2, \"directive name must not be less than one character in length\");\n }\n while (ch !== 0) {\n while (is_WHITE_SPACE(ch)) {\n ch = state2.input.charCodeAt(++state2.position);\n }\n if (ch === 35) {\n do {\n ch = state2.input.charCodeAt(++state2.position);\n } while (ch !== 0 && !is_EOL(ch));\n break;\n }\n if (is_EOL(ch))\n break;\n _position = state2.position;\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n ch = state2.input.charCodeAt(++state2.position);\n }\n directiveArgs.push(state2.input.slice(_position, state2.position));\n }\n if (ch !== 0)\n readLineBreak(state2);\n if (_hasOwnProperty$1.call(directiveHandlers, directiveName)) {\n directiveHandlers[directiveName](state2, directiveName, directiveArgs);\n } else {\n throwWarning(state2, 'unknown document directive \"' + directiveName + '\"');\n }\n }\n skipSeparationSpace(state2, true, -1);\n if (state2.lineIndent === 0 && state2.input.charCodeAt(state2.position) === 45 && state2.input.charCodeAt(state2.position + 1) === 45 && state2.input.charCodeAt(state2.position + 2) === 45) {\n state2.position += 3;\n skipSeparationSpace(state2, true, -1);\n } else if (hasDirectives) {\n throwError(state2, \"directives end mark is expected\");\n }\n composeNode(state2, state2.lineIndent - 1, CONTEXT_BLOCK_OUT, false, true);\n skipSeparationSpace(state2, true, -1);\n if (state2.checkLineBreaks && PATTERN_NON_ASCII_LINE_BREAKS.test(state2.input.slice(documentStart, state2.position))) {\n throwWarning(state2, \"non-ASCII line breaks are interpreted as content\");\n }\n state2.documents.push(state2.result);\n if (state2.position === state2.lineStart && testDocumentSeparator(state2)) {\n if (state2.input.charCodeAt(state2.position) === 46) {\n state2.position += 3;\n skipSeparationSpace(state2, true, -1);\n }\n return;\n }\n if (state2.position < state2.length - 1) {\n throwError(state2, \"end of the stream or a document separator is expected\");\n } else {\n return;\n }\n}\nfunction loadDocuments(input, options) {\n input = String(input);\n options = options || {};\n if (input.length !== 0) {\n if (input.charCodeAt(input.length - 1) !== 10 && input.charCodeAt(input.length - 1) !== 13) {\n input += \"\\n\";\n }\n if (input.charCodeAt(0) === 65279) {\n input = input.slice(1);\n }\n }\n var state2 = new State$1(input, options);\n var nullpos = input.indexOf(\"\\0\");\n if (nullpos !== -1) {\n state2.position = nullpos;\n throwError(state2, \"null byte is not allowed in input\");\n }\n state2.input += \"\\0\";\n while (state2.input.charCodeAt(state2.position) === 32) {\n state2.lineIndent += 1;\n state2.position += 1;\n }\n while (state2.position < state2.length - 1) {\n readDocument(state2);\n }\n return state2.documents;\n}\nfunction loadAll$1(input, iterator, options) {\n if (iterator !== null && typeof iterator === \"object\" && typeof options === \"undefined\") {\n options = iterator;\n iterator = null;\n }\n var documents = loadDocuments(input, options);\n if (typeof iterator !== \"function\") {\n return documents;\n }\n for (var index = 0, length = documents.length; index < length; index += 1) {\n iterator(documents[index]);\n }\n}\nfunction load$1(input, options) {\n var documents = loadDocuments(input, options);\n if (documents.length === 0) {\n return void 0;\n } else if (documents.length === 1) {\n return documents[0];\n }\n throw new exception(\"expected a single document in the stream, but found more\");\n}\nvar loadAll_1 = loadAll$1;\nvar load_1 = load$1;\nvar loader = {\n loadAll: loadAll_1,\n load: load_1\n};\nvar JSON_SCHEMA = json;\nvar load = loader.load;\nfunction extractFrontMatter(text) {\n const matches = text.match(frontMatterRegex);\n if (!matches) {\n return {\n text,\n metadata: {}\n };\n }\n let parsed = load(matches[1], {\n // To support config, we need JSON schema.\n // https://www.yaml.org/spec/1.2/spec.html#id2803231\n schema: JSON_SCHEMA\n }) ?? {};\n parsed = typeof parsed === \"object\" && !Array.isArray(parsed) ? parsed : {};\n const metadata = {};\n if (parsed.displayMode) {\n metadata.displayMode = parsed.displayMode.toString();\n }\n if (parsed.title) {\n metadata.title = parsed.title.toString();\n }\n if (parsed.config) {\n metadata.config = parsed.config;\n }\n return {\n text: text.slice(matches[0].length),\n metadata\n };\n}\nconst cleanupText = (code) => {\n return code.replace(/\\r\\n?/g, \"\\n\").replace(\n /<(\\w+)([^>]*)>/g,\n (match, tag, attributes) => \"<\" + tag + attributes.replace(/=\"([^\"]*)\"/g, \"='$1'\") + \">\"\n );\n};\nconst processFrontmatter = (code) => {\n const { text, metadata } = extractFrontMatter(code);\n const { displayMode, title, config: config2 = {} } = metadata;\n if (displayMode) {\n if (!config2.gantt) {\n config2.gantt = {};\n }\n config2.gantt.displayMode = displayMode;\n }\n return { title, config: config2, text };\n};\nconst processDirectives = (code) => {\n const initDirective = utils.detectInit(code) ?? {};\n const wrapDirectives = utils.detectDirective(code, \"wrap\");\n if (Array.isArray(wrapDirectives)) {\n initDirective.wrap = wrapDirectives.some(({ type: type2 }) => {\n });\n } else if ((wrapDirectives == null ? void 0 : wrapDirectives.type) === \"wrap\") {\n initDirective.wrap = true;\n }\n return {\n text: removeDirectives(code),\n directive: initDirective\n };\n};\nfunction preprocessDiagram(code) {\n const cleanedCode = cleanupText(code);\n const frontMatterResult = processFrontmatter(cleanedCode);\n const directiveResult = processDirectives(frontMatterResult.text);\n const config2 = cleanAndMerge(frontMatterResult.config, directiveResult.directive);\n code = cleanupComments(directiveResult.text);\n return {\n code,\n title: frontMatterResult.title,\n config: config2\n };\n}\nconst MAX_TEXTLENGTH = 5e4;\nconst MAX_TEXTLENGTH_EXCEEDED_MSG = \"graph TB;a[Maximum text size in diagram exceeded];style a fill:#faa\";\nconst SECURITY_LVL_SANDBOX = \"sandbox\";\nconst SECURITY_LVL_LOOSE = \"loose\";\nconst XMLNS_SVG_STD = \"http://www.w3.org/2000/svg\";\nconst XMLNS_XLINK_STD = \"http://www.w3.org/1999/xlink\";\nconst XMLNS_XHTML_STD = \"http://www.w3.org/1999/xhtml\";\nconst IFRAME_WIDTH = \"100%\";\nconst IFRAME_HEIGHT = \"100%\";\nconst IFRAME_STYLES = \"border:0;margin:0;\";\nconst IFRAME_BODY_STYLE = \"margin:0\";\nconst IFRAME_SANDBOX_OPTS = \"allow-top-navigation-by-user-activation allow-popups\";\nconst IFRAME_NOT_SUPPORTED_MSG = 'The \"iframe\" tag is not supported by your browser.';\nconst DOMPURIFY_TAGS = [\"foreignobject\"];\nconst DOMPURIFY_ATTR = [\"dominant-baseline\"];\nfunction processAndSetConfigs(text) {\n const processed = preprocessDiagram(text);\n reset();\n addDirective(processed.config ?? {});\n return processed;\n}\nasync function parse$1(text, parseOptions) {\n addDiagrams();\n text = processAndSetConfigs(text).code;\n try {\n await getDiagramFromText(text);\n } catch (error) {\n if (parseOptions == null ? void 0 : parseOptions.suppressErrors) {\n return false;\n }\n throw error;\n }\n return true;\n}\nconst cssImportantStyles = (cssClass, element, cssClasses = []) => {\n return `\n.${cssClass} ${element} { ${cssClasses.join(\" !important; \")} !important; }`;\n};\nconst createCssStyles = (config2, classDefs = {}) => {\n var _a;\n let cssStyles = \"\";\n if (config2.themeCSS !== void 0) {\n cssStyles += `\n${config2.themeCSS}`;\n }\n if (config2.fontFamily !== void 0) {\n cssStyles += `\n:root { --mermaid-font-family: ${config2.fontFamily}}`;\n }\n if (config2.altFontFamily !== void 0) {\n cssStyles += `\n:root { --mermaid-alt-font-family: ${config2.altFontFamily}}`;\n }\n if (!isEmpty(classDefs)) {\n const htmlLabels = config2.htmlLabels || ((_a = config2.flowchart) == null ? void 0 : _a.htmlLabels);\n const cssHtmlElements = [\"> *\", \"span\"];\n const cssShapeElements = [\"rect\", \"polygon\", \"ellipse\", \"circle\", \"path\"];\n const cssElements = htmlLabels ? cssHtmlElements : cssShapeElements;\n for (const classId in classDefs) {\n const styleClassDef = classDefs[classId];\n if (!isEmpty(styleClassDef.styles)) {\n cssElements.forEach((cssElement) => {\n cssStyles += cssImportantStyles(styleClassDef.id, cssElement, styleClassDef.styles);\n });\n }\n if (!isEmpty(styleClassDef.textStyles)) {\n cssStyles += cssImportantStyles(styleClassDef.id, \"tspan\", styleClassDef.textStyles);\n }\n }\n }\n return cssStyles;\n};\nconst createUserStyles = (config2, graphType, classDefs, svgId) => {\n const userCSSstyles = createCssStyles(config2, classDefs);\n const allStyles = getStyles$1(graphType, userCSSstyles, config2.themeVariables);\n return serialize(compile(`${svgId}{${allStyles}}`), stringify);\n};\nconst cleanUpSvgCode = (svgCode = \"\", inSandboxMode, useArrowMarkerUrls) => {\n let cleanedUpSvg = svgCode;\n if (!useArrowMarkerUrls && !inSandboxMode) {\n cleanedUpSvg = cleanedUpSvg.replace(\n /marker-end=\"url\\([\\d+./:=?A-Za-z-]*?#/g,\n 'marker-end=\"url(#'\n );\n }\n cleanedUpSvg = decodeEntities(cleanedUpSvg);\n cleanedUpSvg = cleanedUpSvg.replace(/<br>/g, \"<br/>\");\n return cleanedUpSvg;\n};\nconst putIntoIFrame = (svgCode = \"\", svgElement) => {\n var _a, _b;\n const height = ((_b = (_a = svgElement == null ? void 0 : svgElement.viewBox) == null ? void 0 : _a.baseVal) == null ? void 0 : _b.height) ? svgElement.viewBox.baseVal.height + \"px\" : IFRAME_HEIGHT;\n const base64encodedSrc = btoa('<body style=\"' + IFRAME_BODY_STYLE + '\">' + svgCode + \"</body>\");\n return `<iframe style=\"width:${IFRAME_WIDTH};height:${height};${IFRAME_STYLES}\" src=\"data:text/html;base64,${base64encodedSrc}\" sandbox=\"${IFRAME_SANDBOX_OPTS}\">\n ${IFRAME_NOT_SUPPORTED_MSG}\n</iframe>`;\n};\nconst appendDivSvgG = (parentRoot, id2, enclosingDivId, divStyle, svgXlink) => {\n const enclosingDiv = parentRoot.append(\"div\");\n enclosingDiv.attr(\"id\", enclosingDivId);\n if (divStyle) {\n enclosingDiv.attr(\"style\", divStyle);\n }\n const svgNode = enclosingDiv.append(\"svg\").attr(\"id\", id2).attr(\"width\", \"100%\").attr(\"xmlns\", XMLNS_SVG_STD);\n if (svgXlink) {\n svgNode.attr(\"xmlns:xlink\", svgXlink);\n }\n svgNode.append(\"g\");\n return parentRoot;\n};\nfunction sandboxedIframe(parentNode, iFrameId) {\n return parentNode.append(\"iframe\").attr(\"id\", iFrameId).attr(\"style\", \"width: 100%; height: 100%;\").attr(\"sandbox\", \"\");\n}\nconst removeExistingElements = (doc, id2, divId, iFrameId) => {\n var _a, _b, _c;\n (_a = doc.getElementById(id2)) == null ? void 0 : _a.remove();\n (_b = doc.getElementById(divId)) == null ? void 0 : _b.remove();\n (_c = doc.getElementById(iFrameId)) == null ? void 0 : _c.remove();\n};\nconst render$1 = async function(id2, text, svgContainingElement) {\n var _a, _b, _c, _d, _e, _f;\n addDiagrams();\n const processed = processAndSetConfigs(text);\n text = processed.code;\n const config2 = getConfig$1();\n log$1.debug(config2);\n if (text.length > ((config2 == null ? void 0 : config2.maxTextSize) ?? MAX_TEXTLENGTH)) {\n text = MAX_TEXTLENGTH_EXCEEDED_MSG;\n }\n const idSelector = \"#\" + id2;\n const iFrameID = \"i\" + id2;\n const iFrameID_selector = \"#\" + iFrameID;\n const enclosingDivID = \"d\" + id2;\n const enclosingDivID_selector = \"#\" + enclosingDivID;\n let root = select(\"body\");\n const isSandboxed = config2.securityLevel === SECURITY_LVL_SANDBOX;\n const isLooseSecurityLevel = config2.securityLevel === SECURITY_LVL_LOOSE;\n const fontFamily = config2.fontFamily;\n if (svgContainingElement !== void 0) {\n if (svgContainingElement) {\n svgContainingElement.innerHTML = \"\";\n }\n if (isSandboxed) {\n const iframe = sandboxedIframe(select(svgContainingElement), iFrameID);\n root = select(iframe.nodes()[0].contentDocument.body);\n root.node().style.margin = 0;\n } else {\n root = select(svgContainingElement);\n }\n appendDivSvgG(root, id2, enclosingDivID, `font-family: ${fontFamily}`, XMLNS_XLINK_STD);\n } else {\n removeExistingElements(document, id2, enclosingDivID, iFrameID);\n if (isSandboxed) {\n const iframe = sandboxedIframe(select(\"body\"), iFrameID);\n root = select(iframe.nodes()[0].contentDocument.body);\n root.node().style.margin = 0;\n } else {\n root = select(\"body\");\n }\n appendDivSvgG(root, id2, enclosingDivID);\n }\n let diag;\n let parseEncounteredException;\n try {\n diag = await getDiagramFromText(text, { title: processed.title });\n } catch (error) {\n diag = new Diagram(\"error\");\n parseEncounteredException = error;\n }\n const element = root.select(enclosingDivID_selector).node();\n const diagramType = diag.type;\n const svg = element.firstChild;\n const firstChild = svg.firstChild;\n const diagramClassDefs = (_b = (_a = diag.renderer).getClasses) == null ? void 0 : _b.call(_a, text, diag);\n const rules = createUserStyles(config2, diagramType, diagramClassDefs, idSelector);\n const style1 = document.createElement(\"style\");\n style1.innerHTML = rules;\n svg.insertBefore(style1, firstChild);\n try {\n await diag.renderer.draw(text, id2, version, diag);\n } catch (e) {\n errorRenderer.draw(text, id2, version);\n throw e;\n }\n const svgNode = root.select(`${enclosingDivID_selector} svg`);\n const a11yTitle = (_d = (_c = diag.db).getAccTitle) == null ? void 0 : _d.call(_c);\n const a11yDescr = (_f = (_e = diag.db).getAccDescription) == null ? void 0 : _f.call(_e);\n addA11yInfo(diagramType, svgNode, a11yTitle, a11yDescr);\n root.select(`[id=\"${id2}\"]`).selectAll(\"foreignobject > *\").attr(\"xmlns\", XMLNS_XHTML_STD);\n let svgCode = root.select(enclosingDivID_selector).node().innerHTML;\n log$1.debug(\"config.arrowMarkerAbsolute\", config2.arrowMarkerAbsolute);\n svgCode = cleanUpSvgCode(svgCode, isSandboxed, evaluate(config2.arrowMarkerAbsolute));\n if (isSandboxed) {\n const svgEl = root.select(enclosingDivID_selector + \" svg\").node();\n svgCode = putIntoIFrame(svgCode, svgEl);\n } else if (!isLooseSecurityLevel) {\n svgCode = DOMPurify.sanitize(svgCode, {\n ADD_TAGS: DOMPURIFY_TAGS,\n ADD_ATTR: DOMPURIFY_ATTR\n });\n }\n attachFunctions();\n if (parseEncounteredException) {\n throw parseEncounteredException;\n }\n const tmpElementSelector = isSandboxed ? iFrameID_selector : enclosingDivID_selector;\n const node = select(tmpElementSelector).node();\n if (node && \"remove\" in node) {\n node.remove();\n }\n return {\n svg: svgCode,\n bindFunctions: diag.db.bindFunctions\n };\n};\nfunction initialize$1(options = {}) {\n var _a;\n if ((options == null ? void 0 : options.fontFamily) && !((_a = options.themeVariables) == null ? void 0 : _a.fontFamily)) {\n if (!options.themeVariables) {\n options.themeVariables = {};\n }\n options.themeVariables.fontFamily = options.fontFamily;\n }\n saveConfigFromInitialize(options);\n if ((options == null ? void 0 : options.theme) && options.theme in theme) {\n options.themeVariables = theme[options.theme].getThemeVariables(\n options.themeVariables\n );\n } else if (options) {\n options.themeVariables = theme.default.getThemeVariables(options.themeVariables);\n }\n const config2 = typeof options === \"object\" ? setSiteConfig(options) : getSiteConfig();\n setLogLevel$1(config2.logLevel);\n addDiagrams();\n}\nconst getDiagramFromText = (text, metadata = {}) => {\n const { code } = preprocessDiagram(text);\n return getDiagramFromText$1(code, metadata);\n};\nfunction addA11yInfo(diagramType, svgNode, a11yTitle, a11yDescr) {\n setA11yDiagramInfo(svgNode, diagramType);\n addSVGa11yTitleDescription(svgNode, a11yTitle, a11yDescr, svgNode.attr(\"id\"));\n}\nconst mermaidAPI = Object.freeze({\n render: render$1,\n parse: parse$1,\n getDiagramFromText,\n initialize: initialize$1,\n getConfig: getConfig$1,\n setConfig: setConfig$1,\n getSiteConfig,\n updateSiteConfig,\n reset: () => {\n reset();\n },\n globalReset: () => {\n reset(defaultConfig$1);\n },\n defaultConfig: defaultConfig$1\n});\nsetLogLevel$1(getConfig$1().logLevel);\nreset(getConfig$1());\nconst loadRegisteredDiagrams = async () => {\n log$1.debug(`Loading registered diagrams`);\n const results = await Promise.allSettled(\n Object.entries(detectors).map(async ([key, { detector: detector2, loader: loader2 }]) => {\n if (loader2) {\n try {\n getDiagram(key);\n } catch (error) {\n try {\n const { diagram: diagram2, id: id2 } = await loader2();\n registerDiagram(id2, diagram2, detector2);\n } catch (err) {\n log$1.error(`Failed to load external diagram with key ${key}. Removing from detectors.`);\n delete detectors[key];\n throw err;\n }\n }\n }\n })\n );\n const failed = results.filter((result) => result.status === \"rejected\");\n if (failed.length > 0) {\n log$1.error(`Failed to load ${failed.length} external diagrams`);\n for (const res of failed) {\n log$1.error(res);\n }\n throw new Error(`Failed to load ${failed.length} external diagrams`);\n }\n};\nconst handleError = (error, errors, parseError) => {\n log$1.warn(error);\n if (isDetailedError(error)) {\n if (parseError) {\n parseError(error.str, error.hash);\n }\n errors.push({ ...error, message: error.str, error });\n } else {\n if (parseError) {\n parseError(error);\n }\n if (error instanceof Error) {\n errors.push({\n str: error.message,\n message: error.message,\n hash: error.name,\n error\n });\n }\n }\n};\nconst run = async function(options = {\n querySelector: \".mermaid\"\n}) {\n try {\n await runThrowsErrors(options);\n } catch (e) {\n if (isDetailedError(e)) {\n log$1.error(e.str);\n }\n if (mermaid.parseError) {\n mermaid.parseError(e);\n }\n if (!options.suppressErrors) {\n log$1.error(\"Use the suppressErrors option to suppress these errors\");\n throw e;\n }\n }\n};\nconst runThrowsErrors = async function({ postRenderCallback, querySelector, nodes } = {\n querySelector: \".mermaid\"\n}) {\n const conf = mermaidAPI.getConfig();\n log$1.debug(`${!postRenderCallback ? \"No \" : \"\"}Callback function found`);\n let nodesToProcess;\n if (nodes) {\n nodesToProcess = nodes;\n } else if (querySelector) {\n nodesToProcess = document.querySelectorAll(querySelector);\n } else {\n throw new Error(\"Nodes and querySelector are both undefined\");\n }\n log$1.debug(`Found ${nodesToProcess.length} diagrams`);\n if ((conf == null ? void 0 : conf.startOnLoad) !== void 0) {\n log$1.debug(\"Start On Load: \" + (conf == null ? void 0 : conf.startOnLoad));\n mermaidAPI.updateSiteConfig({ startOnLoad: conf == null ? void 0 : conf.startOnLoad });\n }\n const idGenerator = new utils.InitIDGenerator(conf.deterministicIds, conf.deterministicIDSeed);\n let txt;\n const errors = [];\n for (const element of Array.from(nodesToProcess)) {\n log$1.info(\"Rendering diagram: \" + element.id);\n /*! Check if previously processed */\n if (element.getAttribute(\"data-processed\")) {\n continue;\n }\n element.setAttribute(\"data-processed\", \"true\");\n const id2 = `mermaid-${idGenerator.next()}`;\n txt = element.innerHTML;\n txt = dedent(utils.entityDecode(txt)).trim().replace(/<br\\s*\\/?>/gi, \"<br/>\");\n const init2 = utils.detectInit(txt);\n if (init2) {\n log$1.debug(\"Detected early reinit: \", init2);\n }\n try {\n const { svg, bindFunctions } = await render(id2, txt, element);\n element.innerHTML = svg;\n if (postRenderCallback) {\n await postRenderCallback(id2);\n }\n if (bindFunctions) {\n bindFunctions(element);\n }\n } catch (error) {\n handleError(error, errors, mermaid.parseError);\n }\n }\n if (errors.length > 0) {\n throw errors[0];\n }\n};\nconst initialize = function(config2) {\n mermaidAPI.initialize(config2);\n};\nconst init = async function(config2, nodes, callback) {\n log$1.warn(\"mermaid.init is deprecated. Please use run instead.\");\n if (config2) {\n initialize(config2);\n }\n const runOptions = { postRenderCallback: callback, querySelector: \".mermaid\" };\n if (typeof nodes === \"string\") {\n runOptions.querySelector = nodes;\n } else if (nodes) {\n if (nodes instanceof HTMLElement) {\n runOptions.nodes = [nodes];\n } else {\n runOptions.nodes = nodes;\n }\n }\n await run(runOptions);\n};\nconst registerExternalDiagrams = async (diagrams2, {\n lazyLoad = true\n} = {}) => {\n registerLazyLoadedDiagrams(...diagrams2);\n if (lazyLoad === false) {\n await loadRegisteredDiagrams();\n }\n};\nconst contentLoaded = function() {\n if (mermaid.startOnLoad) {\n const { startOnLoad } = mermaidAPI.getConfig();\n if (startOnLoad) {\n mermaid.run().catch((err) => log$1.error(\"Mermaid failed to initialize\", err));\n }\n }\n};\nif (typeof document !== \"undefined\") {\n /*!\n * Wait for document loaded before starting the execution\n */\n window.addEventListener(\"load\", contentLoaded, false);\n}\nconst setParseErrorHandler = function(parseErrorHandler) {\n mermaid.parseError = parseErrorHandler;\n};\nconst executionQueue = [];\nlet executionQueueRunning = false;\nconst executeQueue = async () => {\n if (executionQueueRunning) {\n return;\n }\n executionQueueRunning = true;\n while (executionQueue.length > 0) {\n const f = executionQueue.shift();\n if (f) {\n try {\n await f();\n } catch (e) {\n log$1.error(\"Error executing queue\", e);\n }\n }\n }\n executionQueueRunning = false;\n};\nconst parse = async (text, parseOptions) => {\n return new Promise((resolve, reject) => {\n const performCall = () => new Promise((res, rej) => {\n mermaidAPI.parse(text, parseOptions).then(\n (r) => {\n res(r);\n resolve(r);\n },\n (e) => {\n var _a;\n log$1.error(\"Error parsing\", e);\n (_a = mermaid.parseError) == null ? void 0 : _a.call(mermaid, e);\n rej(e);\n reject(e);\n }\n );\n });\n executionQueue.push(performCall);\n executeQueue().catch(reject);\n });\n};\nconst render = (id2, text, container) => {\n return new Promise((resolve, reject) => {\n const performCall = () => new Promise((res, rej) => {\n mermaidAPI.render(id2, text, container).then(\n (r) => {\n res(r);\n resolve(r);\n },\n (e) => {\n var _a;\n log$1.error(\"Error parsing\", e);\n (_a = mermaid.parseError) == null ? void 0 : _a.call(mermaid, e);\n rej(e);\n reject(e);\n }\n );\n });\n executionQueue.push(performCall);\n executeQueue().catch(reject);\n });\n};\nconst mermaid = {\n startOnLoad: true,\n mermaidAPI,\n parse,\n render,\n init,\n run,\n registerExternalDiagrams,\n initialize,\n parseError: void 0,\n contentLoaded,\n setParseErrorHandler,\n detectType\n};\nexport {\n selectSvgElement as A,\n defaultConfig$2 as B,\n cleanAndMerge as C,\n parseFontSize as D,\n getThemeVariables$2 as E,\n getConfig$1 as F,\n hasKatex as G,\n calculateMathMLDimensions as H,\n generateId as I,\n lineBreakRegex as J,\n defaultConfig as K,\n commonDb as L,\n decodeEntities as M,\n mermaid as N,\n ZERO_WIDTH_SPACE as Z,\n getAccDescription as a,\n setAccDescription as b,\n getConfig as c,\n sanitizeText$2 as d,\n common$1 as e,\n assignWithDepth$1 as f,\n getAccTitle as g,\n calculateTextWidth as h,\n configureSvgSize as i,\n calculateTextHeight as j,\n getStylesFromArray as k,\n log$1 as l,\n evaluate as m,\n interpolateToCurve as n,\n setupGraphViewbox$1 as o,\n setConfig as p,\n setDiagramTitle as q,\n renderKatex as r,\n setAccTitle as s,\n getDiagramTitle as t,\n utils as u,\n clear as v,\n wrapLabel as w,\n parseGenericTypes as x,\n random as y,\n setupGraphViewbox as z\n};\n","import { l as log, c as getConfig, B as defaultConfig, d as sanitizeText, D as parseFontSize, A as selectSvgElement, o as setupGraphViewbox } from \"./mermaid-f47111a7.js\";\nimport cytoscape from \"cytoscape\";\nimport coseBilkent from \"cytoscape-cose-bilkent\";\nimport { select } from \"d3\";\nimport { a as createText } from \"./createText-6b48ae7d.js\";\nimport { isDark, lighten, darken } from \"khroma\";\nimport \"ts-dedent\";\nimport \"dayjs\";\nimport \"@braintree/sanitize-url\";\nimport \"dompurify\";\nimport \"lodash-es/memoize.js\";\nimport \"lodash-es/merge.js\";\nimport \"stylis\";\nimport \"lodash-es/isEmpty.js\";\nimport \"mdast-util-from-markdown\";\nvar parser = function() {\n var o = function(k, v, o2, l) {\n for (o2 = o2 || {}, l = k.length; l--; o2[k[l]] = v)\n ;\n return o2;\n }, $V0 = [1, 4], $V1 = [1, 13], $V2 = [1, 12], $V3 = [1, 15], $V4 = [1, 16], $V5 = [1, 20], $V6 = [1, 19], $V7 = [6, 7, 8], $V8 = [1, 26], $V9 = [1, 24], $Va = [1, 25], $Vb = [6, 7, 11], $Vc = [1, 6, 13, 15, 16, 19, 22], $Vd = [1, 33], $Ve = [1, 34], $Vf = [1, 6, 7, 11, 13, 15, 16, 19, 22];\n var parser2 = {\n trace: function trace() {\n },\n yy: {},\n symbols_: { \"error\": 2, \"start\": 3, \"mindMap\": 4, \"spaceLines\": 5, \"SPACELINE\": 6, \"NL\": 7, \"MINDMAP\": 8, \"document\": 9, \"stop\": 10, \"EOF\": 11, \"statement\": 12, \"SPACELIST\": 13, \"node\": 14, \"ICON\": 15, \"CLASS\": 16, \"nodeWithId\": 17, \"nodeWithoutId\": 18, \"NODE_DSTART\": 19, \"NODE_DESCR\": 20, \"NODE_DEND\": 21, \"NODE_ID\": 22, \"$accept\": 0, \"$end\": 1 },\n terminals_: { 2: \"error\", 6: \"SPACELINE\", 7: \"NL\", 8: \"MINDMAP\", 11: \"EOF\", 13: \"SPACELIST\", 15: \"ICON\", 16: \"CLASS\", 19: \"NODE_DSTART\", 20: \"NODE_DESCR\", 21: \"NODE_DEND\", 22: \"NODE_ID\" },\n productions_: [0, [3, 1], [3, 2], [5, 1], [5, 2], [5, 2], [4, 2], [4, 3], [10, 1], [10, 1], [10, 1], [10, 2], [10, 2], [9, 3], [9, 2], [12, 2], [12, 2], [12, 2], [12, 1], [12, 1], [12, 1], [12, 1], [12, 1], [14, 1], [14, 1], [18, 3], [17, 1], [17, 4]],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) {\n var $0 = $$.length - 1;\n switch (yystate) {\n case 6:\n case 7:\n return yy;\n case 8:\n yy.getLogger().trace(\"Stop NL \");\n break;\n case 9:\n yy.getLogger().trace(\"Stop EOF \");\n break;\n case 11:\n yy.getLogger().trace(\"Stop NL2 \");\n break;\n case 12:\n yy.getLogger().trace(\"Stop EOF2 \");\n break;\n case 15:\n yy.getLogger().info(\"Node: \", $$[$0].id);\n yy.addNode($$[$0 - 1].length, $$[$0].id, $$[$0].descr, $$[$0].type);\n break;\n case 16:\n yy.getLogger().trace(\"Icon: \", $$[$0]);\n yy.decorateNode({ icon: $$[$0] });\n break;\n case 17:\n case 21:\n yy.decorateNode({ class: $$[$0] });\n break;\n case 18:\n yy.getLogger().trace(\"SPACELIST\");\n break;\n case 19:\n yy.getLogger().trace(\"Node: \", $$[$0].id);\n yy.addNode(0, $$[$0].id, $$[$0].descr, $$[$0].type);\n break;\n case 20:\n yy.decorateNode({ icon: $$[$0] });\n break;\n case 25:\n yy.getLogger().trace(\"node found ..\", $$[$0 - 2]);\n this.$ = { id: $$[$0 - 1], descr: $$[$0 - 1], type: yy.getType($$[$0 - 2], $$[$0]) };\n break;\n case 26:\n this.$ = { id: $$[$0], descr: $$[$0], type: yy.nodeType.DEFAULT };\n break;\n case 27:\n yy.getLogger().trace(\"node found ..\", $$[$0 - 3]);\n this.$ = { id: $$[$0 - 3], descr: $$[$0 - 1], type: yy.getType($$[$0 - 2], $$[$0]) };\n break;\n }\n },\n table: [{ 3: 1, 4: 2, 5: 3, 6: [1, 5], 8: $V0 }, { 1: [3] }, { 1: [2, 1] }, { 4: 6, 6: [1, 7], 7: [1, 8], 8: $V0 }, { 6: $V1, 7: [1, 10], 9: 9, 12: 11, 13: $V2, 14: 14, 15: $V3, 16: $V4, 17: 17, 18: 18, 19: $V5, 22: $V6 }, o($V7, [2, 3]), { 1: [2, 2] }, o($V7, [2, 4]), o($V7, [2, 5]), { 1: [2, 6], 6: $V1, 12: 21, 13: $V2, 14: 14, 15: $V3, 16: $V4, 17: 17, 18: 18, 19: $V5, 22: $V6 }, { 6: $V1, 9: 22, 12: 11, 13: $V2, 14: 14, 15: $V3, 16: $V4, 17: 17, 18: 18, 19: $V5, 22: $V6 }, { 6: $V8, 7: $V9, 10: 23, 11: $Va }, o($Vb, [2, 22], { 17: 17, 18: 18, 14: 27, 15: [1, 28], 16: [1, 29], 19: $V5, 22: $V6 }), o($Vb, [2, 18]), o($Vb, [2, 19]), o($Vb, [2, 20]), o($Vb, [2, 21]), o($Vb, [2, 23]), o($Vb, [2, 24]), o($Vb, [2, 26], { 19: [1, 30] }), { 20: [1, 31] }, { 6: $V8, 7: $V9, 10: 32, 11: $Va }, { 1: [2, 7], 6: $V1, 12: 21, 13: $V2, 14: 14, 15: $V3, 16: $V4, 17: 17, 18: 18, 19: $V5, 22: $V6 }, o($Vc, [2, 14], { 7: $Vd, 11: $Ve }), o($Vf, [2, 8]), o($Vf, [2, 9]), o($Vf, [2, 10]), o($Vb, [2, 15]), o($Vb, [2, 16]), o($Vb, [2, 17]), { 20: [1, 35] }, { 21: [1, 36] }, o($Vc, [2, 13], { 7: $Vd, 11: $Ve }), o($Vf, [2, 11]), o($Vf, [2, 12]), { 21: [1, 37] }, o($Vb, [2, 25]), o($Vb, [2, 27])],\n defaultActions: { 2: [2, 1], 6: [2, 2] },\n parseError: 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 },\n parse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = \"\", yylineno = 0, yyleng = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer2 = 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 lexer2.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer2;\n sharedState.yy.parser = this;\n if (typeof lexer2.yylloc == \"undefined\") {\n lexer2.yylloc = {};\n }\n var yyloc = lexer2.yylloc;\n lstack.push(yyloc);\n var ranges = lexer2.options && lexer2.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 lex() {\n var token;\n token = tstack.pop() || lexer2.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, state, action, 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 (lexer2.showPosition) {\n errStr = \"Parse error on line \" + (yylineno + 1) + \":\\n\" + lexer2.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: lexer2.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer2.yylineno,\n loc: yyloc,\n 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(lexer2.yytext);\n lstack.push(lexer2.yylloc);\n stack.push(action[1]);\n symbol = null;\n {\n yyleng = lexer2.yyleng;\n yytext = lexer2.yytext;\n yylineno = lexer2.yylineno;\n yyloc = lexer2.yylloc;\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 var lexer = function() {\n var lexer2 = {\n EOF: 1,\n parseError: 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 // resets the lexer, sets new input\n setInput: 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 // consumes and returns one char from the input\n input: 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 this._input = this._input.slice(1);\n return ch;\n },\n // unshifts one char (or a string) into the input\n unput: function(ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - 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 if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\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 ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len\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 // When called from action, caches matched text and appends it on next action\n more: function() {\n this._more = true;\n return this;\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.\n reject: 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 return this;\n },\n // retain first n characters of the match\n less: function(n) {\n this.unput(this.match.slice(n));\n },\n // displays already matched input, i.e. for error messages\n pastInput: 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 // displays upcoming input, i.e. for error messages\n upcomingInput: 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 // displays the character position where the lexing error occurred, i.e. for error messages\n showPosition: function() {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n // test the lexed token: return FALSE when not a match, otherwise return token\n test_match: function(match, indexed_rule) {\n var token, lines, backup;\n if (this.options.backtrack_lexer) {\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 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 ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length : 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 for (var k in backup) {\n this[k] = backup[k];\n }\n return false;\n }\n return false;\n },\n // return next match in input\n next: function() {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n var token, match, tempMatch, 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;\n } else {\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 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 // return next match that has a token\n lex: function lex() {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\n begin: function begin(condition) {\n this.conditionStack.push(condition);\n },\n // pop the previously active lexer condition state off the condition stack\n popState: 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 // 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 // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\n topState: 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 // alias for begin(condition)\n pushState: function pushState(condition) {\n this.begin(condition);\n },\n // return the number of states currently on the stack\n stateStackSize: function stateStackSize() {\n return this.conditionStack.length;\n },\n options: { \"case-insensitive\": true },\n performAction: function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) {\n switch ($avoiding_name_collisions) {\n case 0:\n yy.getLogger().trace(\"Found comment\", yy_.yytext);\n return 6;\n case 1:\n return 8;\n case 2:\n this.begin(\"CLASS\");\n break;\n case 3:\n this.popState();\n return 16;\n case 4:\n this.popState();\n break;\n case 5:\n yy.getLogger().trace(\"Begin icon\");\n this.begin(\"ICON\");\n break;\n case 6:\n yy.getLogger().trace(\"SPACELINE\");\n return 6;\n case 7:\n return 7;\n case 8:\n return 15;\n case 9:\n yy.getLogger().trace(\"end icon\");\n this.popState();\n break;\n case 10:\n yy.getLogger().trace(\"Exploding node\");\n this.begin(\"NODE\");\n return 19;\n case 11:\n yy.getLogger().trace(\"Cloud\");\n this.begin(\"NODE\");\n return 19;\n case 12:\n yy.getLogger().trace(\"Explosion Bang\");\n this.begin(\"NODE\");\n return 19;\n case 13:\n yy.getLogger().trace(\"Cloud Bang\");\n this.begin(\"NODE\");\n return 19;\n case 14:\n this.begin(\"NODE\");\n return 19;\n case 15:\n this.begin(\"NODE\");\n return 19;\n case 16:\n this.begin(\"NODE\");\n return 19;\n case 17:\n this.begin(\"NODE\");\n return 19;\n case 18:\n return 13;\n case 19:\n return 22;\n case 20:\n return 11;\n case 21:\n this.begin(\"NSTR2\");\n break;\n case 22:\n return \"NODE_DESCR\";\n case 23:\n this.popState();\n break;\n case 24:\n yy.getLogger().trace(\"Starting NSTR\");\n this.begin(\"NSTR\");\n break;\n case 25:\n yy.getLogger().trace(\"description:\", yy_.yytext);\n return \"NODE_DESCR\";\n case 26:\n this.popState();\n break;\n case 27:\n this.popState();\n yy.getLogger().trace(\"node end ))\");\n return \"NODE_DEND\";\n case 28:\n this.popState();\n yy.getLogger().trace(\"node end )\");\n return \"NODE_DEND\";\n case 29:\n this.popState();\n yy.getLogger().trace(\"node end ...\", yy_.yytext);\n return \"NODE_DEND\";\n case 30:\n this.popState();\n yy.getLogger().trace(\"node end ((\");\n return \"NODE_DEND\";\n case 31:\n this.popState();\n yy.getLogger().trace(\"node end (-\");\n return \"NODE_DEND\";\n case 32:\n this.popState();\n yy.getLogger().trace(\"node end (-\");\n return \"NODE_DEND\";\n case 33:\n this.popState();\n yy.getLogger().trace(\"node end ((\");\n return \"NODE_DEND\";\n case 34:\n this.popState();\n yy.getLogger().trace(\"node end ((\");\n return \"NODE_DEND\";\n case 35:\n yy.getLogger().trace(\"Long description:\", yy_.yytext);\n return 20;\n case 36:\n yy.getLogger().trace(\"Long description:\", yy_.yytext);\n return 20;\n }\n },\n rules: [/^(?:\\s*%%.*)/i, /^(?:mindmap\\b)/i, /^(?::::)/i, /^(?:.+)/i, /^(?:\\n)/i, /^(?:::icon\\()/i, /^(?:[\\s]+[\\n])/i, /^(?:[\\n]+)/i, /^(?:[^\\)]+)/i, /^(?:\\))/i, /^(?:-\\))/i, /^(?:\\(-)/i, /^(?:\\)\\))/i, /^(?:\\))/i, /^(?:\\(\\()/i, /^(?:\\{\\{)/i, /^(?:\\()/i, /^(?:\\[)/i, /^(?:[\\s]+)/i, /^(?:[^\\(\\[\\n\\)\\{\\}]+)/i, /^(?:$)/i, /^(?:[\"][`])/i, /^(?:[^`\"]+)/i, /^(?:[`][\"])/i, /^(?:[\"])/i, /^(?:[^\"]+)/i, /^(?:[\"])/i, /^(?:[\\)]\\))/i, /^(?:[\\)])/i, /^(?:[\\]])/i, /^(?:\\}\\})/i, /^(?:\\(-)/i, /^(?:-\\))/i, /^(?:\\(\\()/i, /^(?:\\()/i, /^(?:[^\\)\\]\\(\\}]+)/i, /^(?:.+(?!\\(\\())/i],\n conditions: { \"CLASS\": { \"rules\": [3, 4], \"inclusive\": false }, \"ICON\": { \"rules\": [8, 9], \"inclusive\": false }, \"NSTR2\": { \"rules\": [22, 23], \"inclusive\": false }, \"NSTR\": { \"rules\": [25, 26], \"inclusive\": false }, \"NODE\": { \"rules\": [21, 24, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36], \"inclusive\": false }, \"INITIAL\": { \"rules\": [0, 1, 2, 5, 6, 7, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], \"inclusive\": true } }\n };\n return lexer2;\n }();\n parser2.lexer = lexer;\n function Parser() {\n this.yy = {};\n }\n Parser.prototype = parser2;\n parser2.Parser = Parser;\n return new Parser();\n}();\nparser.parser = parser;\nconst parser$1 = parser;\nlet nodes = [];\nlet cnt = 0;\nlet elements = {};\nconst clear = () => {\n nodes = [];\n cnt = 0;\n elements = {};\n};\nconst getParent = function(level) {\n for (let i = nodes.length - 1; i >= 0; i--) {\n if (nodes[i].level < level) {\n return nodes[i];\n }\n }\n return null;\n};\nconst getMindmap = () => {\n return nodes.length > 0 ? nodes[0] : null;\n};\nconst addNode = (level, id, descr, type) => {\n var _a, _b;\n log.info(\"addNode\", level, id, descr, type);\n const conf = getConfig();\n let padding = ((_a = conf.mindmap) == null ? void 0 : _a.padding) ?? defaultConfig.mindmap.padding;\n switch (type) {\n case nodeType.ROUNDED_RECT:\n case nodeType.RECT:\n case nodeType.HEXAGON:\n padding *= 2;\n }\n const node = {\n id: cnt++,\n nodeId: sanitizeText(id, conf),\n level,\n descr: sanitizeText(descr, conf),\n type,\n children: [],\n width: ((_b = conf.mindmap) == null ? void 0 : _b.maxNodeWidth) ?? defaultConfig.mindmap.maxNodeWidth,\n padding\n };\n const parent = getParent(level);\n if (parent) {\n parent.children.push(node);\n nodes.push(node);\n } else {\n if (nodes.length === 0) {\n nodes.push(node);\n } else {\n throw new Error(\n 'There can be only one root. No parent could be found for (\"' + node.descr + '\")'\n );\n }\n }\n};\nconst nodeType = {\n DEFAULT: 0,\n NO_BORDER: 0,\n ROUNDED_RECT: 1,\n RECT: 2,\n CIRCLE: 3,\n CLOUD: 4,\n BANG: 5,\n HEXAGON: 6\n};\nconst getType = (startStr, endStr) => {\n log.debug(\"In get type\", startStr, endStr);\n switch (startStr) {\n case \"[\":\n return nodeType.RECT;\n case \"(\":\n return endStr === \")\" ? nodeType.ROUNDED_RECT : nodeType.CLOUD;\n case \"((\":\n return nodeType.CIRCLE;\n case \")\":\n return nodeType.CLOUD;\n case \"))\":\n return nodeType.BANG;\n case \"{{\":\n return nodeType.HEXAGON;\n default:\n return nodeType.DEFAULT;\n }\n};\nconst setElementForId = (id, element) => {\n elements[id] = element;\n};\nconst decorateNode = (decoration) => {\n if (!decoration) {\n return;\n }\n const config = getConfig();\n const node = nodes[nodes.length - 1];\n if (decoration.icon) {\n node.icon = sanitizeText(decoration.icon, config);\n }\n if (decoration.class) {\n node.class = sanitizeText(decoration.class, config);\n }\n};\nconst type2Str = (type) => {\n switch (type) {\n case nodeType.DEFAULT:\n return \"no-border\";\n case nodeType.RECT:\n return \"rect\";\n case nodeType.ROUNDED_RECT:\n return \"rounded-rect\";\n case nodeType.CIRCLE:\n return \"circle\";\n case nodeType.CLOUD:\n return \"cloud\";\n case nodeType.BANG:\n return \"bang\";\n case nodeType.HEXAGON:\n return \"hexgon\";\n default:\n return \"no-border\";\n }\n};\nconst getLogger = () => log;\nconst getElementById = (id) => elements[id];\nconst db = {\n clear,\n addNode,\n getMindmap,\n nodeType,\n getType,\n setElementForId,\n decorateNode,\n type2Str,\n getLogger,\n getElementById\n};\nconst db$1 = db;\nconst MAX_SECTIONS = 12;\nconst defaultBkg = function(db2, elem, node, section) {\n const rd = 5;\n elem.append(\"path\").attr(\"id\", \"node-\" + node.id).attr(\"class\", \"node-bkg node-\" + db2.type2Str(node.type)).attr(\n \"d\",\n `M0 ${node.height - rd} v${-node.height + 2 * rd} q0,-5 5,-5 h${node.width - 2 * rd} q5,0 5,5 v${node.height - rd} H0 Z`\n );\n elem.append(\"line\").attr(\"class\", \"node-line-\" + section).attr(\"x1\", 0).attr(\"y1\", node.height).attr(\"x2\", node.width).attr(\"y2\", node.height);\n};\nconst rectBkg = function(db2, elem, node) {\n elem.append(\"rect\").attr(\"id\", \"node-\" + node.id).attr(\"class\", \"node-bkg node-\" + db2.type2Str(node.type)).attr(\"height\", node.height).attr(\"width\", node.width);\n};\nconst cloudBkg = function(db2, elem, node) {\n const w = node.width;\n const h = node.height;\n const r1 = 0.15 * w;\n const r2 = 0.25 * w;\n const r3 = 0.35 * w;\n const r4 = 0.2 * w;\n elem.append(\"path\").attr(\"id\", \"node-\" + node.id).attr(\"class\", \"node-bkg node-\" + db2.type2Str(node.type)).attr(\n \"d\",\n `M0 0 a${r1},${r1} 0 0,1 ${w * 0.25},${-1 * w * 0.1}\n a${r3},${r3} 1 0,1 ${w * 0.4},${-1 * w * 0.1}\n a${r2},${r2} 1 0,1 ${w * 0.35},${1 * w * 0.2}\n\n a${r1},${r1} 1 0,1 ${w * 0.15},${1 * h * 0.35}\n a${r4},${r4} 1 0,1 ${-1 * w * 0.15},${1 * h * 0.65}\n\n a${r2},${r1} 1 0,1 ${-1 * w * 0.25},${w * 0.15}\n a${r3},${r3} 1 0,1 ${-1 * w * 0.5},${0}\n a${r1},${r1} 1 0,1 ${-1 * w * 0.25},${-1 * w * 0.15}\n\n a${r1},${r1} 1 0,1 ${-1 * w * 0.1},${-1 * h * 0.35}\n a${r4},${r4} 1 0,1 ${w * 0.1},${-1 * h * 0.65}\n\n H0 V0 Z`\n );\n};\nconst bangBkg = function(db2, elem, node) {\n const w = node.width;\n const h = node.height;\n const r = 0.15 * w;\n elem.append(\"path\").attr(\"id\", \"node-\" + node.id).attr(\"class\", \"node-bkg node-\" + db2.type2Str(node.type)).attr(\n \"d\",\n `M0 0 a${r},${r} 1 0,0 ${w * 0.25},${-1 * h * 0.1}\n a${r},${r} 1 0,0 ${w * 0.25},${0}\n a${r},${r} 1 0,0 ${w * 0.25},${0}\n a${r},${r} 1 0,0 ${w * 0.25},${1 * h * 0.1}\n\n a${r},${r} 1 0,0 ${w * 0.15},${1 * h * 0.33}\n a${r * 0.8},${r * 0.8} 1 0,0 ${0},${1 * h * 0.34}\n a${r},${r} 1 0,0 ${-1 * w * 0.15},${1 * h * 0.33}\n\n a${r},${r} 1 0,0 ${-1 * w * 0.25},${h * 0.15}\n a${r},${r} 1 0,0 ${-1 * w * 0.25},${0}\n a${r},${r} 1 0,0 ${-1 * w * 0.25},${0}\n a${r},${r} 1 0,0 ${-1 * w * 0.25},${-1 * h * 0.15}\n\n a${r},${r} 1 0,0 ${-1 * w * 0.1},${-1 * h * 0.33}\n a${r * 0.8},${r * 0.8} 1 0,0 ${0},${-1 * h * 0.34}\n a${r},${r} 1 0,0 ${w * 0.1},${-1 * h * 0.33}\n\n H0 V0 Z`\n );\n};\nconst circleBkg = function(db2, elem, node) {\n elem.append(\"circle\").attr(\"id\", \"node-\" + node.id).attr(\"class\", \"node-bkg node-\" + db2.type2Str(node.type)).attr(\"r\", node.width / 2);\n};\nfunction insertPolygonShape(parent, w, h, points, node) {\n return parent.insert(\"polygon\", \":first-child\").attr(\n \"points\",\n points.map(function(d) {\n return d.x + \",\" + d.y;\n }).join(\" \")\n ).attr(\"transform\", \"translate(\" + (node.width - w) / 2 + \", \" + h + \")\");\n}\nconst hexagonBkg = function(_db, elem, node) {\n const h = node.height;\n const f = 4;\n const m = h / f;\n const w = node.width - node.padding + 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 insertPolygonShape(elem, w, h, points, node);\n};\nconst roundedRectBkg = function(db2, elem, node) {\n elem.append(\"rect\").attr(\"id\", \"node-\" + node.id).attr(\"class\", \"node-bkg node-\" + db2.type2Str(node.type)).attr(\"height\", node.height).attr(\"rx\", node.padding).attr(\"ry\", node.padding).attr(\"width\", node.width);\n};\nconst drawNode = function(db2, elem, node, fullSection, conf) {\n const htmlLabels = conf.htmlLabels;\n const section = fullSection % (MAX_SECTIONS - 1);\n const nodeElem = elem.append(\"g\");\n node.section = section;\n let sectionClass = \"section-\" + section;\n if (section < 0) {\n sectionClass += \" section-root\";\n }\n nodeElem.attr(\"class\", (node.class ? node.class + \" \" : \"\") + \"mindmap-node \" + sectionClass);\n const bkgElem = nodeElem.append(\"g\");\n const textElem = nodeElem.append(\"g\");\n const description = node.descr.replace(/(<br\\/*>)/g, \"\\n\");\n createText(textElem, description, {\n useHtmlLabels: htmlLabels,\n width: node.width,\n classes: \"mindmap-node-label\"\n });\n if (!htmlLabels) {\n textElem.attr(\"dy\", \"1em\").attr(\"alignment-baseline\", \"middle\").attr(\"dominant-baseline\", \"middle\").attr(\"text-anchor\", \"middle\");\n }\n const bbox = textElem.node().getBBox();\n const [fontSize] = parseFontSize(conf.fontSize);\n node.height = bbox.height + fontSize * 1.1 * 0.5 + node.padding;\n node.width = bbox.width + 2 * node.padding;\n if (node.icon) {\n if (node.type === db2.nodeType.CIRCLE) {\n node.height += 50;\n node.width += 50;\n const icon = nodeElem.append(\"foreignObject\").attr(\"height\", \"50px\").attr(\"width\", node.width).attr(\"style\", \"text-align: center;\");\n icon.append(\"div\").attr(\"class\", \"icon-container\").append(\"i\").attr(\"class\", \"node-icon-\" + section + \" \" + node.icon);\n textElem.attr(\n \"transform\",\n \"translate(\" + node.width / 2 + \", \" + (node.height / 2 - 1.5 * node.padding) + \")\"\n );\n } else {\n node.width += 50;\n const orgHeight = node.height;\n node.height = Math.max(orgHeight, 60);\n const heightDiff = Math.abs(node.height - orgHeight);\n const icon = nodeElem.append(\"foreignObject\").attr(\"width\", \"60px\").attr(\"height\", node.height).attr(\"style\", \"text-align: center;margin-top:\" + heightDiff / 2 + \"px;\");\n icon.append(\"div\").attr(\"class\", \"icon-container\").append(\"i\").attr(\"class\", \"node-icon-\" + section + \" \" + node.icon);\n textElem.attr(\n \"transform\",\n \"translate(\" + (25 + node.width / 2) + \", \" + (heightDiff / 2 + node.padding / 2) + \")\"\n );\n }\n } else {\n if (!htmlLabels) {\n const dx = node.width / 2;\n const dy = node.padding / 2;\n textElem.attr(\"transform\", \"translate(\" + dx + \", \" + dy + \")\");\n } else {\n const dx = (node.width - bbox.width) / 2;\n const dy = (node.height - bbox.height) / 2;\n textElem.attr(\"transform\", \"translate(\" + dx + \", \" + dy + \")\");\n }\n }\n switch (node.type) {\n case db2.nodeType.DEFAULT:\n defaultBkg(db2, bkgElem, node, section);\n break;\n case db2.nodeType.ROUNDED_RECT:\n roundedRectBkg(db2, bkgElem, node);\n break;\n case db2.nodeType.RECT:\n rectBkg(db2, bkgElem, node);\n break;\n case db2.nodeType.CIRCLE:\n bkgElem.attr(\"transform\", \"translate(\" + node.width / 2 + \", \" + +node.height / 2 + \")\");\n circleBkg(db2, bkgElem, node);\n break;\n case db2.nodeType.CLOUD:\n cloudBkg(db2, bkgElem, node);\n break;\n case db2.nodeType.BANG:\n bangBkg(db2, bkgElem, node);\n break;\n case db2.nodeType.HEXAGON:\n hexagonBkg(db2, bkgElem, node);\n break;\n }\n db2.setElementForId(node.id, nodeElem);\n return node.height;\n};\nconst positionNode = function(db2, node) {\n const nodeElem = db2.getElementById(node.id);\n const x = node.x || 0;\n const y = node.y || 0;\n nodeElem.attr(\"transform\", \"translate(\" + x + \",\" + y + \")\");\n};\ncytoscape.use(coseBilkent);\nfunction drawNodes(db2, svg, mindmap, section, conf) {\n drawNode(db2, svg, mindmap, section, conf);\n if (mindmap.children) {\n mindmap.children.forEach((child, index) => {\n drawNodes(db2, svg, child, section < 0 ? index : section, conf);\n });\n }\n}\nfunction drawEdges(edgesEl, cy) {\n cy.edges().map((edge, id) => {\n const data = edge.data();\n if (edge[0]._private.bodyBounds) {\n const bounds = edge[0]._private.rscratch;\n log.trace(\"Edge: \", id, data);\n edgesEl.insert(\"path\").attr(\n \"d\",\n `M ${bounds.startX},${bounds.startY} L ${bounds.midX},${bounds.midY} L${bounds.endX},${bounds.endY} `\n ).attr(\"class\", \"edge section-edge-\" + data.section + \" edge-depth-\" + data.depth);\n }\n });\n}\nfunction addNodes(mindmap, cy, conf, level) {\n cy.add({\n group: \"nodes\",\n data: {\n id: mindmap.id.toString(),\n labelText: mindmap.descr,\n height: mindmap.height,\n width: mindmap.width,\n level,\n nodeId: mindmap.id,\n padding: mindmap.padding,\n type: mindmap.type\n },\n position: {\n x: mindmap.x,\n y: mindmap.y\n }\n });\n if (mindmap.children) {\n mindmap.children.forEach((child) => {\n addNodes(child, cy, conf, level + 1);\n cy.add({\n group: \"edges\",\n data: {\n id: `${mindmap.id}_${child.id}`,\n source: mindmap.id,\n target: child.id,\n depth: level,\n section: child.section\n }\n });\n });\n }\n}\nfunction layoutMindmap(node, conf) {\n return new Promise((resolve) => {\n const renderEl = select(\"body\").append(\"div\").attr(\"id\", \"cy\").attr(\"style\", \"display:none\");\n const cy = cytoscape({\n container: document.getElementById(\"cy\"),\n // container to render in\n style: [\n {\n selector: \"edge\",\n style: {\n \"curve-style\": \"bezier\"\n }\n }\n ]\n });\n renderEl.remove();\n addNodes(node, cy, conf, 0);\n cy.nodes().forEach(function(n) {\n n.layoutDimensions = () => {\n const data = n.data();\n return { w: data.width, h: data.height };\n };\n });\n cy.layout({\n name: \"cose-bilkent\",\n // @ts-ignore Types for cose-bilkent are not correct?\n quality: \"proof\",\n styleEnabled: false,\n animate: false\n }).run();\n cy.ready((e) => {\n log.info(\"Ready\", e);\n resolve(cy);\n });\n });\n}\nfunction positionNodes(db2, cy) {\n cy.nodes().map((node, id) => {\n const data = node.data();\n data.x = node.position().x;\n data.y = node.position().y;\n positionNode(db2, data);\n const el = db2.getElementById(data.nodeId);\n log.info(\"Id:\", id, \"Position: (\", node.position().x, \", \", node.position().y, \")\", data);\n el.attr(\n \"transform\",\n `translate(${node.position().x - data.width / 2}, ${node.position().y - data.height / 2})`\n );\n el.attr(\"attr\", `apa-${id})`);\n });\n}\nconst draw = async (text, id, _version, diagObj) => {\n var _a, _b;\n log.debug(\"Rendering mindmap diagram\\n\" + text);\n const db2 = diagObj.db;\n const mm = db2.getMindmap();\n if (!mm) {\n return;\n }\n const conf = getConfig();\n conf.htmlLabels = false;\n const svg = selectSvgElement(id);\n const edgesElem = svg.append(\"g\");\n edgesElem.attr(\"class\", \"mindmap-edges\");\n const nodesElem = svg.append(\"g\");\n nodesElem.attr(\"class\", \"mindmap-nodes\");\n drawNodes(db2, nodesElem, mm, -1, conf);\n const cy = await layoutMindmap(mm, conf);\n drawEdges(edgesElem, cy);\n positionNodes(db2, cy);\n setupGraphViewbox(\n void 0,\n svg,\n ((_a = conf.mindmap) == null ? void 0 : _a.padding) ?? defaultConfig.mindmap.padding,\n ((_b = conf.mindmap) == null ? void 0 : _b.useMaxWidth) ?? defaultConfig.mindmap.useMaxWidth\n );\n};\nconst renderer = {\n draw\n};\nconst genSections = (options) => {\n let sections = \"\";\n for (let i = 0; i < options.THEME_COLOR_LIMIT; i++) {\n options[\"lineColor\" + i] = options[\"lineColor\" + i] || options[\"cScaleInv\" + i];\n if (isDark(options[\"lineColor\" + i])) {\n options[\"lineColor\" + i] = lighten(options[\"lineColor\" + i], 20);\n } else {\n options[\"lineColor\" + i] = darken(options[\"lineColor\" + i], 20);\n }\n }\n for (let i = 0; i < options.THEME_COLOR_LIMIT; i++) {\n const sw = \"\" + (17 - 3 * i);\n sections += `\n .section-${i - 1} rect, .section-${i - 1} path, .section-${i - 1} circle, .section-${i - 1} polygon, .section-${i - 1} path {\n fill: ${options[\"cScale\" + i]};\n }\n .section-${i - 1} text {\n fill: ${options[\"cScaleLabel\" + i]};\n }\n .node-icon-${i - 1} {\n font-size: 40px;\n color: ${options[\"cScaleLabel\" + i]};\n }\n .section-edge-${i - 1}{\n stroke: ${options[\"cScale\" + i]};\n }\n .edge-depth-${i - 1}{\n stroke-width: ${sw};\n }\n .section-${i - 1} line {\n stroke: ${options[\"cScaleInv\" + i]} ;\n stroke-width: 3;\n }\n\n .disabled, .disabled circle, .disabled text {\n fill: lightgray;\n }\n .disabled text {\n fill: #efefef;\n }\n `;\n }\n return sections;\n};\nconst getStyles = (options) => `\n .edge {\n stroke-width: 3;\n }\n ${genSections(options)}\n .section-root rect, .section-root path, .section-root circle, .section-root polygon {\n fill: ${options.git0};\n }\n .section-root text {\n fill: ${options.gitBranchLabel0};\n }\n .icon-container {\n height:100%;\n display: flex;\n justify-content: center;\n align-items: center;\n }\n .edge {\n fill: none;\n }\n .mindmap-node-label {\n dy: 1em;\n alignment-baseline: middle;\n text-anchor: middle;\n dominant-baseline: middle;\n text-align: center;\n }\n`;\nconst styles = getStyles;\nconst diagram = {\n db: db$1,\n renderer,\n parser: parser$1,\n styles\n};\nexport {\n diagram\n};\n","import { B as defaultConfig, q as setDiagramTitle, t as getDiagramTitle, s as setAccTitle, g as getAccTitle, b as setAccDescription, a as getAccDescription, v as clear$1, d as sanitizeText, c as getConfig$1, l as log, C as cleanAndMerge, A as selectSvgElement, D as parseFontSize, i as configureSvgSize } from \"./mermaid-f47111a7.js\";\nimport { arc, scaleOrdinal, pie } from \"d3\";\nimport \"ts-dedent\";\nimport \"dayjs\";\nimport \"@braintree/sanitize-url\";\nimport \"dompurify\";\nimport \"khroma\";\nimport \"lodash-es/memoize.js\";\nimport \"lodash-es/merge.js\";\nimport \"stylis\";\nimport \"lodash-es/isEmpty.js\";\nvar parser = function() {\n var o = function(k, v, o2, l) {\n for (o2 = o2 || {}, l = k.length; l--; o2[k[l]] = v)\n ;\n return o2;\n }, $V0 = [1, 3], $V1 = [1, 4], $V2 = [1, 5], $V3 = [1, 6], $V4 = [1, 10, 12, 14, 16, 18, 19, 20, 21, 22], $V5 = [2, 4], $V6 = [1, 5, 10, 12, 14, 16, 18, 19, 20, 21, 22], $V7 = [20, 21, 22], $V8 = [2, 7], $V9 = [1, 12], $Va = [1, 13], $Vb = [1, 14], $Vc = [1, 15], $Vd = [1, 16], $Ve = [1, 17];\n var parser2 = {\n trace: function trace() {\n },\n yy: {},\n symbols_: { \"error\": 2, \"start\": 3, \"eol\": 4, \"PIE\": 5, \"document\": 6, \"showData\": 7, \"line\": 8, \"statement\": 9, \"txt\": 10, \"value\": 11, \"title\": 12, \"title_value\": 13, \"acc_title\": 14, \"acc_title_value\": 15, \"acc_descr\": 16, \"acc_descr_value\": 17, \"acc_descr_multiline_value\": 18, \"section\": 19, \"NEWLINE\": 20, \";\": 21, \"EOF\": 22, \"$accept\": 0, \"$end\": 1 },\n terminals_: { 2: \"error\", 5: \"PIE\", 7: \"showData\", 10: \"txt\", 11: \"value\", 12: \"title\", 13: \"title_value\", 14: \"acc_title\", 15: \"acc_title_value\", 16: \"acc_descr\", 17: \"acc_descr_value\", 18: \"acc_descr_multiline_value\", 19: \"section\", 20: \"NEWLINE\", 21: \";\", 22: \"EOF\" },\n productions_: [0, [3, 2], [3, 2], [3, 3], [6, 0], [6, 2], [8, 2], [9, 0], [9, 2], [9, 2], [9, 2], [9, 2], [9, 1], [9, 1], [4, 1], [4, 1], [4, 1]],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) {\n var $0 = $$.length - 1;\n switch (yystate) {\n case 3:\n yy.setShowData(true);\n break;\n case 6:\n this.$ = $$[$0 - 1];\n break;\n case 8:\n yy.addSection($$[$0 - 1], yy.cleanupValue($$[$0]));\n break;\n case 9:\n this.$ = $$[$0].trim();\n yy.setDiagramTitle(this.$);\n break;\n case 10:\n this.$ = $$[$0].trim();\n yy.setAccTitle(this.$);\n break;\n case 11:\n case 12:\n this.$ = $$[$0].trim();\n yy.setAccDescription(this.$);\n break;\n case 13:\n yy.addSection($$[$0].substr(8));\n this.$ = $$[$0].substr(8);\n break;\n }\n },\n table: [{ 3: 1, 4: 2, 5: $V0, 20: $V1, 21: $V2, 22: $V3 }, { 1: [3] }, { 3: 7, 4: 2, 5: $V0, 20: $V1, 21: $V2, 22: $V3 }, o($V4, $V5, { 6: 8, 7: [1, 9] }), o($V6, [2, 14]), o($V6, [2, 15]), o($V6, [2, 16]), { 1: [2, 1] }, o($V7, $V8, { 8: 10, 9: 11, 1: [2, 2], 10: $V9, 12: $Va, 14: $Vb, 16: $Vc, 18: $Vd, 19: $Ve }), o($V4, $V5, { 6: 18 }), o($V4, [2, 5]), { 4: 19, 20: $V1, 21: $V2, 22: $V3 }, { 11: [1, 20] }, { 13: [1, 21] }, { 15: [1, 22] }, { 17: [1, 23] }, o($V7, [2, 12]), o($V7, [2, 13]), o($V7, $V8, { 8: 10, 9: 11, 1: [2, 3], 10: $V9, 12: $Va, 14: $Vb, 16: $Vc, 18: $Vd, 19: $Ve }), o($V4, [2, 6]), o($V7, [2, 8]), o($V7, [2, 9]), o($V7, [2, 10]), o($V7, [2, 11])],\n defaultActions: { 7: [2, 1] },\n parseError: 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 },\n parse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = \"\", yylineno = 0, yyleng = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer2 = 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 lexer2.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer2;\n sharedState.yy.parser = this;\n if (typeof lexer2.yylloc == \"undefined\") {\n lexer2.yylloc = {};\n }\n var yyloc = lexer2.yylloc;\n lstack.push(yyloc);\n var ranges = lexer2.options && lexer2.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 lex() {\n var token;\n token = tstack.pop() || lexer2.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, state, action, 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 (lexer2.showPosition) {\n errStr = \"Parse error on line \" + (yylineno + 1) + \":\\n\" + lexer2.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: lexer2.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer2.yylineno,\n loc: yyloc,\n 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(lexer2.yytext);\n lstack.push(lexer2.yylloc);\n stack.push(action[1]);\n symbol = null;\n {\n yyleng = lexer2.yyleng;\n yytext = lexer2.yytext;\n yylineno = lexer2.yylineno;\n yyloc = lexer2.yylloc;\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 var lexer = function() {\n var lexer2 = {\n EOF: 1,\n parseError: 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 // resets the lexer, sets new input\n setInput: 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 // consumes and returns one char from the input\n input: 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 this._input = this._input.slice(1);\n return ch;\n },\n // unshifts one char (or a string) into the input\n unput: function(ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - 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 if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\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 ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len\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 // When called from action, caches matched text and appends it on next action\n more: function() {\n this._more = true;\n return this;\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.\n reject: 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 return this;\n },\n // retain first n characters of the match\n less: function(n) {\n this.unput(this.match.slice(n));\n },\n // displays already matched input, i.e. for error messages\n pastInput: 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 // displays upcoming input, i.e. for error messages\n upcomingInput: 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 // displays the character position where the lexing error occurred, i.e. for error messages\n showPosition: function() {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n // test the lexed token: return FALSE when not a match, otherwise return token\n test_match: function(match, indexed_rule) {\n var token, lines, backup;\n if (this.options.backtrack_lexer) {\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 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 ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length : 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 for (var k in backup) {\n this[k] = backup[k];\n }\n return false;\n }\n return false;\n },\n // return next match in input\n next: function() {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n var token, match, tempMatch, 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;\n } else {\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 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 // return next match that has a token\n lex: function lex() {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\n begin: function begin(condition) {\n this.conditionStack.push(condition);\n },\n // pop the previously active lexer condition state off the condition stack\n popState: 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 // 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 // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\n topState: 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 // alias for begin(condition)\n pushState: function pushState(condition) {\n this.begin(condition);\n },\n // return the number of states currently on the stack\n stateStackSize: function stateStackSize() {\n return this.conditionStack.length;\n },\n options: { \"case-insensitive\": true },\n performAction: function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) {\n switch ($avoiding_name_collisions) {\n case 0:\n break;\n case 1:\n break;\n case 2:\n return 20;\n case 3:\n break;\n case 4:\n break;\n case 5:\n this.begin(\"title\");\n return 12;\n case 6:\n this.popState();\n return \"title_value\";\n case 7:\n this.begin(\"acc_title\");\n return 14;\n case 8:\n this.popState();\n return \"acc_title_value\";\n case 9:\n this.begin(\"acc_descr\");\n return 16;\n case 10:\n this.popState();\n return \"acc_descr_value\";\n case 11:\n this.begin(\"acc_descr_multiline\");\n break;\n case 12:\n this.popState();\n break;\n case 13:\n return \"acc_descr_multiline_value\";\n case 14:\n this.begin(\"string\");\n break;\n case 15:\n this.popState();\n break;\n case 16:\n return \"txt\";\n case 17:\n return 5;\n case 18:\n return 7;\n case 19:\n return \"value\";\n case 20:\n return 22;\n }\n },\n rules: [/^(?:%%(?!\\{)[^\\n]*)/i, /^(?:[^\\}]%%[^\\n]*)/i, /^(?:[\\n\\r]+)/i, /^(?:%%[^\\n]*)/i, /^(?:[\\s]+)/i, /^(?:title\\b)/i, /^(?:(?!\\n||)*[^\\n]*)/i, /^(?:accTitle\\s*:\\s*)/i, /^(?:(?!\\n||)*[^\\n]*)/i, /^(?:accDescr\\s*:\\s*)/i, /^(?:(?!\\n||)*[^\\n]*)/i, /^(?:accDescr\\s*\\{\\s*)/i, /^(?:[\\}])/i, /^(?:[^\\}]*)/i, /^(?:[\"])/i, /^(?:[\"])/i, /^(?:[^\"]*)/i, /^(?:pie\\b)/i, /^(?:showData\\b)/i, /^(?::[\\s]*[\\d]+(?:\\.[\\d]+)?)/i, /^(?:$)/i],\n conditions: { \"acc_descr_multiline\": { \"rules\": [12, 13], \"inclusive\": false }, \"acc_descr\": { \"rules\": [10], \"inclusive\": false }, \"acc_title\": { \"rules\": [8], \"inclusive\": false }, \"title\": { \"rules\": [6], \"inclusive\": false }, \"string\": { \"rules\": [15, 16], \"inclusive\": false }, \"INITIAL\": { \"rules\": [0, 1, 2, 3, 4, 5, 7, 9, 11, 14, 17, 18, 19, 20], \"inclusive\": true } }\n };\n return lexer2;\n }();\n parser2.lexer = lexer;\n function Parser() {\n this.yy = {};\n }\n Parser.prototype = parser2;\n parser2.Parser = Parser;\n return new Parser();\n}();\nparser.parser = parser;\nconst parser$1 = parser;\nconst DEFAULT_PIE_CONFIG = defaultConfig.pie;\nconst DEFAULT_PIE_DB = {\n sections: {},\n showData: false,\n config: DEFAULT_PIE_CONFIG\n};\nlet sections = DEFAULT_PIE_DB.sections;\nlet showData = DEFAULT_PIE_DB.showData;\nconst config = structuredClone(DEFAULT_PIE_CONFIG);\nconst getConfig = () => structuredClone(config);\nconst clear = () => {\n sections = structuredClone(DEFAULT_PIE_DB.sections);\n showData = DEFAULT_PIE_DB.showData;\n clear$1();\n};\nconst addSection = (label, value) => {\n label = sanitizeText(label, getConfig$1());\n if (sections[label] === void 0) {\n sections[label] = value;\n log.debug(`added new section: ${label}, with value: ${value}`);\n }\n};\nconst getSections = () => sections;\nconst cleanupValue = (value) => {\n if (value.substring(0, 1) === \":\") {\n value = value.substring(1).trim();\n }\n return Number(value.trim());\n};\nconst setShowData = (toggle) => {\n showData = toggle;\n};\nconst getShowData = () => showData;\nconst db = {\n getConfig,\n clear,\n setDiagramTitle,\n getDiagramTitle,\n setAccTitle,\n getAccTitle,\n setAccDescription,\n getAccDescription,\n addSection,\n getSections,\n cleanupValue,\n setShowData,\n getShowData\n};\nconst getStyles = (options) => `\n .pieCircle{\n stroke: ${options.pieStrokeColor};\n stroke-width : ${options.pieStrokeWidth};\n opacity : ${options.pieOpacity};\n }\n .pieOuterCircle{\n stroke: ${options.pieOuterStrokeColor};\n stroke-width: ${options.pieOuterStrokeWidth};\n fill: none;\n }\n .pieTitleText {\n text-anchor: middle;\n font-size: ${options.pieTitleTextSize};\n fill: ${options.pieTitleTextColor};\n font-family: ${options.fontFamily};\n }\n .slice {\n font-family: ${options.fontFamily};\n fill: ${options.pieSectionTextColor};\n font-size:${options.pieSectionTextSize};\n // fill: white;\n }\n .legend text {\n fill: ${options.pieLegendTextColor};\n font-family: ${options.fontFamily};\n font-size: ${options.pieLegendTextSize};\n }\n`;\nconst styles = getStyles;\nconst createPieArcs = (sections2) => {\n const pieData = Object.entries(sections2).map((element) => {\n return {\n label: element[0],\n value: element[1]\n };\n }).sort((a, b) => {\n return b.value - a.value;\n });\n const pie$1 = pie().value(\n (d3Section) => d3Section.value\n );\n return pie$1(pieData);\n};\nconst draw = (text, id, _version, diagObj) => {\n log.debug(\"rendering pie chart\\n\" + text);\n const db2 = diagObj.db;\n const globalConfig = getConfig$1();\n const pieConfig = cleanAndMerge(db2.getConfig(), globalConfig.pie);\n const MARGIN = 40;\n const LEGEND_RECT_SIZE = 18;\n const LEGEND_SPACING = 4;\n const height = 450;\n const pieWidth = height;\n const svg = selectSvgElement(id);\n const group = svg.append(\"g\");\n const sections2 = db2.getSections();\n group.attr(\"transform\", \"translate(\" + pieWidth / 2 + \",\" + height / 2 + \")\");\n const { themeVariables } = globalConfig;\n let [outerStrokeWidth] = parseFontSize(themeVariables.pieOuterStrokeWidth);\n outerStrokeWidth ?? (outerStrokeWidth = 2);\n const textPosition = pieConfig.textPosition;\n const radius = Math.min(pieWidth, height) / 2 - MARGIN;\n const arcGenerator = arc().innerRadius(0).outerRadius(radius);\n const labelArcGenerator = arc().innerRadius(radius * textPosition).outerRadius(radius * textPosition);\n group.append(\"circle\").attr(\"cx\", 0).attr(\"cy\", 0).attr(\"r\", radius + outerStrokeWidth / 2).attr(\"class\", \"pieOuterCircle\");\n const arcs = createPieArcs(sections2);\n const myGeneratedColors = [\n themeVariables.pie1,\n themeVariables.pie2,\n themeVariables.pie3,\n themeVariables.pie4,\n themeVariables.pie5,\n themeVariables.pie6,\n themeVariables.pie7,\n themeVariables.pie8,\n themeVariables.pie9,\n themeVariables.pie10,\n themeVariables.pie11,\n themeVariables.pie12\n ];\n const color = scaleOrdinal(myGeneratedColors);\n group.selectAll(\"mySlices\").data(arcs).enter().append(\"path\").attr(\"d\", arcGenerator).attr(\"fill\", (datum) => {\n return color(datum.data.label);\n }).attr(\"class\", \"pieCircle\");\n let sum = 0;\n Object.keys(sections2).forEach((key) => {\n sum += sections2[key];\n });\n group.selectAll(\"mySlices\").data(arcs).enter().append(\"text\").text((datum) => {\n return (datum.data.value / sum * 100).toFixed(0) + \"%\";\n }).attr(\"transform\", (datum) => {\n return \"translate(\" + labelArcGenerator.centroid(datum) + \")\";\n }).style(\"text-anchor\", \"middle\").attr(\"class\", \"slice\");\n group.append(\"text\").text(db2.getDiagramTitle()).attr(\"x\", 0).attr(\"y\", -(height - 50) / 2).attr(\"class\", \"pieTitleText\");\n const legend = group.selectAll(\".legend\").data(color.domain()).enter().append(\"g\").attr(\"class\", \"legend\").attr(\"transform\", (_datum, index) => {\n const height2 = LEGEND_RECT_SIZE + LEGEND_SPACING;\n const offset = height2 * color.domain().length / 2;\n const horizontal = 12 * LEGEND_RECT_SIZE;\n const vertical = index * height2 - offset;\n return \"translate(\" + horizontal + \",\" + vertical + \")\";\n });\n legend.append(\"rect\").attr(\"width\", LEGEND_RECT_SIZE).attr(\"height\", LEGEND_RECT_SIZE).style(\"fill\", color).style(\"stroke\", color);\n legend.data(arcs).append(\"text\").attr(\"x\", LEGEND_RECT_SIZE + LEGEND_SPACING).attr(\"y\", LEGEND_RECT_SIZE - LEGEND_SPACING).text((datum) => {\n const { label, value } = datum.data;\n if (db2.getShowData()) {\n return `${label} [${value}]`;\n }\n return label;\n });\n const longestTextWidth = Math.max(\n ...legend.selectAll(\"text\").nodes().map((node) => (node == null ? void 0 : node.getBoundingClientRect().width) ?? 0)\n );\n const totalWidth = pieWidth + MARGIN + LEGEND_RECT_SIZE + LEGEND_SPACING + longestTextWidth;\n svg.attr(\"viewBox\", `0 0 ${totalWidth} ${height}`);\n configureSvgSize(svg, height, totalWidth, pieConfig.useMaxWidth);\n};\nconst renderer = { draw };\nconst diagram = {\n parser: parser$1,\n db,\n renderer,\n styles\n};\nexport {\n diagram\n};\n","import { E as getThemeVariables, B as defaultConfig, l as log, s as setAccTitle, g as getAccTitle, q as setDiagramTitle, t as getDiagramTitle, a as getAccDescription, b as setAccDescription, c as getConfig, v as clear$1, d as sanitizeText, i as configureSvgSize } from \"./mermaid-f47111a7.js\";\nimport { scaleLinear, select } from \"d3\";\nimport \"ts-dedent\";\nimport \"dayjs\";\nimport \"@braintree/sanitize-url\";\nimport \"dompurify\";\nimport \"khroma\";\nimport \"lodash-es/memoize.js\";\nimport \"lodash-es/merge.js\";\nimport \"stylis\";\nimport \"lodash-es/isEmpty.js\";\nvar parser = function() {\n var o = function(k, v, o2, l) {\n for (o2 = o2 || {}, l = k.length; l--; o2[k[l]] = v)\n ;\n return o2;\n }, $V0 = [1, 3], $V1 = [1, 4], $V2 = [1, 5], $V3 = [1, 6], $V4 = [1, 7], $V5 = [1, 5, 13, 15, 17, 19, 20, 25, 27, 28, 29, 30, 31, 32, 33, 34, 37, 38, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50], $V6 = [1, 5, 6, 13, 15, 17, 19, 20, 25, 27, 28, 29, 30, 31, 32, 33, 34, 37, 38, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50], $V7 = [32, 33, 34], $V8 = [2, 7], $V9 = [1, 13], $Va = [1, 17], $Vb = [1, 18], $Vc = [1, 19], $Vd = [1, 20], $Ve = [1, 21], $Vf = [1, 22], $Vg = [1, 23], $Vh = [1, 24], $Vi = [1, 25], $Vj = [1, 26], $Vk = [1, 27], $Vl = [1, 30], $Vm = [1, 31], $Vn = [1, 32], $Vo = [1, 33], $Vp = [1, 34], $Vq = [1, 35], $Vr = [1, 36], $Vs = [1, 37], $Vt = [1, 38], $Vu = [1, 39], $Vv = [1, 40], $Vw = [1, 41], $Vx = [1, 42], $Vy = [1, 57], $Vz = [1, 58], $VA = [5, 22, 26, 32, 33, 34, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51];\n var parser2 = {\n trace: function trace() {\n },\n yy: {},\n symbols_: { \"error\": 2, \"start\": 3, \"eol\": 4, \"SPACE\": 5, \"QUADRANT\": 6, \"document\": 7, \"line\": 8, \"statement\": 9, \"axisDetails\": 10, \"quadrantDetails\": 11, \"points\": 12, \"title\": 13, \"title_value\": 14, \"acc_title\": 15, \"acc_title_value\": 16, \"acc_descr\": 17, \"acc_descr_value\": 18, \"acc_descr_multiline_value\": 19, \"section\": 20, \"text\": 21, \"point_start\": 22, \"point_x\": 23, \"point_y\": 24, \"X-AXIS\": 25, \"AXIS-TEXT-DELIMITER\": 26, \"Y-AXIS\": 27, \"QUADRANT_1\": 28, \"QUADRANT_2\": 29, \"QUADRANT_3\": 30, \"QUADRANT_4\": 31, \"NEWLINE\": 32, \"SEMI\": 33, \"EOF\": 34, \"alphaNumToken\": 35, \"textNoTagsToken\": 36, \"STR\": 37, \"MD_STR\": 38, \"alphaNum\": 39, \"PUNCTUATION\": 40, \"AMP\": 41, \"NUM\": 42, \"ALPHA\": 43, \"COMMA\": 44, \"PLUS\": 45, \"EQUALS\": 46, \"MULT\": 47, \"DOT\": 48, \"BRKT\": 49, \"UNDERSCORE\": 50, \"MINUS\": 51, \"$accept\": 0, \"$end\": 1 },\n terminals_: { 2: \"error\", 5: \"SPACE\", 6: \"QUADRANT\", 13: \"title\", 14: \"title_value\", 15: \"acc_title\", 16: \"acc_title_value\", 17: \"acc_descr\", 18: \"acc_descr_value\", 19: \"acc_descr_multiline_value\", 20: \"section\", 22: \"point_start\", 23: \"point_x\", 24: \"point_y\", 25: \"X-AXIS\", 26: \"AXIS-TEXT-DELIMITER\", 27: \"Y-AXIS\", 28: \"QUADRANT_1\", 29: \"QUADRANT_2\", 30: \"QUADRANT_3\", 31: \"QUADRANT_4\", 32: \"NEWLINE\", 33: \"SEMI\", 34: \"EOF\", 37: \"STR\", 38: \"MD_STR\", 40: \"PUNCTUATION\", 41: \"AMP\", 42: \"NUM\", 43: \"ALPHA\", 44: \"COMMA\", 45: \"PLUS\", 46: \"EQUALS\", 47: \"MULT\", 48: \"DOT\", 49: \"BRKT\", 50: \"UNDERSCORE\", 51: \"MINUS\" },\n productions_: [0, [3, 2], [3, 2], [3, 2], [7, 0], [7, 2], [8, 2], [9, 0], [9, 2], [9, 1], [9, 1], [9, 1], [9, 2], [9, 2], [9, 2], [9, 1], [9, 1], [12, 4], [10, 4], [10, 3], [10, 2], [10, 4], [10, 3], [10, 2], [11, 2], [11, 2], [11, 2], [11, 2], [4, 1], [4, 1], [4, 1], [21, 1], [21, 2], [21, 1], [21, 1], [39, 1], [39, 2], [35, 1], [35, 1], [35, 1], [35, 1], [35, 1], [35, 1], [35, 1], [35, 1], [35, 1], [35, 1], [35, 1], [36, 1], [36, 1], [36, 1]],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) {\n var $0 = $$.length - 1;\n switch (yystate) {\n case 12:\n this.$ = $$[$0].trim();\n yy.setDiagramTitle(this.$);\n break;\n case 13:\n this.$ = $$[$0].trim();\n yy.setAccTitle(this.$);\n break;\n case 14:\n case 15:\n this.$ = $$[$0].trim();\n yy.setAccDescription(this.$);\n break;\n case 16:\n yy.addSection($$[$0].substr(8));\n this.$ = $$[$0].substr(8);\n break;\n case 17:\n yy.addPoint($$[$0 - 3], $$[$0 - 1], $$[$0]);\n break;\n case 18:\n yy.setXAxisLeftText($$[$0 - 2]);\n yy.setXAxisRightText($$[$0]);\n break;\n case 19:\n $$[$0 - 1].text += \" ⟶ \";\n yy.setXAxisLeftText($$[$0 - 1]);\n break;\n case 20:\n yy.setXAxisLeftText($$[$0]);\n break;\n case 21:\n yy.setYAxisBottomText($$[$0 - 2]);\n yy.setYAxisTopText($$[$0]);\n break;\n case 22:\n $$[$0 - 1].text += \" ⟶ \";\n yy.setYAxisBottomText($$[$0 - 1]);\n break;\n case 23:\n yy.setYAxisBottomText($$[$0]);\n break;\n case 24:\n yy.setQuadrant1Text($$[$0]);\n break;\n case 25:\n yy.setQuadrant2Text($$[$0]);\n break;\n case 26:\n yy.setQuadrant3Text($$[$0]);\n break;\n case 27:\n yy.setQuadrant4Text($$[$0]);\n break;\n case 31:\n this.$ = { text: $$[$0], type: \"text\" };\n break;\n case 32:\n this.$ = { text: $$[$0 - 1].text + \"\" + $$[$0], type: $$[$0 - 1].type };\n break;\n case 33:\n this.$ = { text: $$[$0], type: \"text\" };\n break;\n case 34:\n this.$ = { text: $$[$0], type: \"markdown\" };\n break;\n case 35:\n this.$ = $$[$0];\n break;\n case 36:\n this.$ = $$[$0 - 1] + \"\" + $$[$0];\n break;\n }\n },\n table: [{ 3: 1, 4: 2, 5: $V0, 6: $V1, 32: $V2, 33: $V3, 34: $V4 }, { 1: [3] }, { 3: 8, 4: 2, 5: $V0, 6: $V1, 32: $V2, 33: $V3, 34: $V4 }, { 3: 9, 4: 2, 5: $V0, 6: $V1, 32: $V2, 33: $V3, 34: $V4 }, o($V5, [2, 4], { 7: 10 }), o($V6, [2, 28]), o($V6, [2, 29]), o($V6, [2, 30]), { 1: [2, 1] }, { 1: [2, 2] }, o($V7, $V8, { 8: 11, 9: 12, 10: 14, 11: 15, 12: 16, 21: 28, 35: 29, 1: [2, 3], 5: $V9, 13: $Va, 15: $Vb, 17: $Vc, 19: $Vd, 20: $Ve, 25: $Vf, 27: $Vg, 28: $Vh, 29: $Vi, 30: $Vj, 31: $Vk, 37: $Vl, 38: $Vm, 40: $Vn, 41: $Vo, 42: $Vp, 43: $Vq, 44: $Vr, 45: $Vs, 46: $Vt, 47: $Vu, 48: $Vv, 49: $Vw, 50: $Vx }), o($V5, [2, 5]), { 4: 43, 32: $V2, 33: $V3, 34: $V4 }, o($V7, $V8, { 10: 14, 11: 15, 12: 16, 21: 28, 35: 29, 9: 44, 5: $V9, 13: $Va, 15: $Vb, 17: $Vc, 19: $Vd, 20: $Ve, 25: $Vf, 27: $Vg, 28: $Vh, 29: $Vi, 30: $Vj, 31: $Vk, 37: $Vl, 38: $Vm, 40: $Vn, 41: $Vo, 42: $Vp, 43: $Vq, 44: $Vr, 45: $Vs, 46: $Vt, 47: $Vu, 48: $Vv, 49: $Vw, 50: $Vx }), o($V7, [2, 9]), o($V7, [2, 10]), o($V7, [2, 11]), { 14: [1, 45] }, { 16: [1, 46] }, { 18: [1, 47] }, o($V7, [2, 15]), o($V7, [2, 16]), { 21: 48, 35: 29, 37: $Vl, 38: $Vm, 40: $Vn, 41: $Vo, 42: $Vp, 43: $Vq, 44: $Vr, 45: $Vs, 46: $Vt, 47: $Vu, 48: $Vv, 49: $Vw, 50: $Vx }, { 21: 49, 35: 29, 37: $Vl, 38: $Vm, 40: $Vn, 41: $Vo, 42: $Vp, 43: $Vq, 44: $Vr, 45: $Vs, 46: $Vt, 47: $Vu, 48: $Vv, 49: $Vw, 50: $Vx }, { 21: 50, 35: 29, 37: $Vl, 38: $Vm, 40: $Vn, 41: $Vo, 42: $Vp, 43: $Vq, 44: $Vr, 45: $Vs, 46: $Vt, 47: $Vu, 48: $Vv, 49: $Vw, 50: $Vx }, { 21: 51, 35: 29, 37: $Vl, 38: $Vm, 40: $Vn, 41: $Vo, 42: $Vp, 43: $Vq, 44: $Vr, 45: $Vs, 46: $Vt, 47: $Vu, 48: $Vv, 49: $Vw, 50: $Vx }, { 21: 52, 35: 29, 37: $Vl, 38: $Vm, 40: $Vn, 41: $Vo, 42: $Vp, 43: $Vq, 44: $Vr, 45: $Vs, 46: $Vt, 47: $Vu, 48: $Vv, 49: $Vw, 50: $Vx }, { 21: 53, 35: 29, 37: $Vl, 38: $Vm, 40: $Vn, 41: $Vo, 42: $Vp, 43: $Vq, 44: $Vr, 45: $Vs, 46: $Vt, 47: $Vu, 48: $Vv, 49: $Vw, 50: $Vx }, { 5: $Vy, 22: [1, 54], 35: 56, 36: 55, 40: $Vn, 41: $Vo, 42: $Vp, 43: $Vq, 44: $Vr, 45: $Vs, 46: $Vt, 47: $Vu, 48: $Vv, 49: $Vw, 50: $Vx, 51: $Vz }, o($VA, [2, 31]), o($VA, [2, 33]), o($VA, [2, 34]), o($VA, [2, 37]), o($VA, [2, 38]), o($VA, [2, 39]), o($VA, [2, 40]), o($VA, [2, 41]), o($VA, [2, 42]), o($VA, [2, 43]), o($VA, [2, 44]), o($VA, [2, 45]), o($VA, [2, 46]), o($VA, [2, 47]), o($V5, [2, 6]), o($V7, [2, 8]), o($V7, [2, 12]), o($V7, [2, 13]), o($V7, [2, 14]), o($V7, [2, 20], { 36: 55, 35: 56, 5: $Vy, 26: [1, 59], 40: $Vn, 41: $Vo, 42: $Vp, 43: $Vq, 44: $Vr, 45: $Vs, 46: $Vt, 47: $Vu, 48: $Vv, 49: $Vw, 50: $Vx, 51: $Vz }), o($V7, [2, 23], { 36: 55, 35: 56, 5: $Vy, 26: [1, 60], 40: $Vn, 41: $Vo, 42: $Vp, 43: $Vq, 44: $Vr, 45: $Vs, 46: $Vt, 47: $Vu, 48: $Vv, 49: $Vw, 50: $Vx, 51: $Vz }), o($V7, [2, 24], { 36: 55, 35: 56, 5: $Vy, 40: $Vn, 41: $Vo, 42: $Vp, 43: $Vq, 44: $Vr, 45: $Vs, 46: $Vt, 47: $Vu, 48: $Vv, 49: $Vw, 50: $Vx, 51: $Vz }), o($V7, [2, 25], { 36: 55, 35: 56, 5: $Vy, 40: $Vn, 41: $Vo, 42: $Vp, 43: $Vq, 44: $Vr, 45: $Vs, 46: $Vt, 47: $Vu, 48: $Vv, 49: $Vw, 50: $Vx, 51: $Vz }), o($V7, [2, 26], { 36: 55, 35: 56, 5: $Vy, 40: $Vn, 41: $Vo, 42: $Vp, 43: $Vq, 44: $Vr, 45: $Vs, 46: $Vt, 47: $Vu, 48: $Vv, 49: $Vw, 50: $Vx, 51: $Vz }), o($V7, [2, 27], { 36: 55, 35: 56, 5: $Vy, 40: $Vn, 41: $Vo, 42: $Vp, 43: $Vq, 44: $Vr, 45: $Vs, 46: $Vt, 47: $Vu, 48: $Vv, 49: $Vw, 50: $Vx, 51: $Vz }), { 23: [1, 61] }, o($VA, [2, 32]), o($VA, [2, 48]), o($VA, [2, 49]), o($VA, [2, 50]), o($V7, [2, 19], { 35: 29, 21: 62, 37: $Vl, 38: $Vm, 40: $Vn, 41: $Vo, 42: $Vp, 43: $Vq, 44: $Vr, 45: $Vs, 46: $Vt, 47: $Vu, 48: $Vv, 49: $Vw, 50: $Vx }), o($V7, [2, 22], { 35: 29, 21: 63, 37: $Vl, 38: $Vm, 40: $Vn, 41: $Vo, 42: $Vp, 43: $Vq, 44: $Vr, 45: $Vs, 46: $Vt, 47: $Vu, 48: $Vv, 49: $Vw, 50: $Vx }), { 24: [1, 64] }, o($V7, [2, 18], { 36: 55, 35: 56, 5: $Vy, 40: $Vn, 41: $Vo, 42: $Vp, 43: $Vq, 44: $Vr, 45: $Vs, 46: $Vt, 47: $Vu, 48: $Vv, 49: $Vw, 50: $Vx, 51: $Vz }), o($V7, [2, 21], { 36: 55, 35: 56, 5: $Vy, 40: $Vn, 41: $Vo, 42: $Vp, 43: $Vq, 44: $Vr, 45: $Vs, 46: $Vt, 47: $Vu, 48: $Vv, 49: $Vw, 50: $Vx, 51: $Vz }), o($V7, [2, 17])],\n defaultActions: { 8: [2, 1], 9: [2, 2] },\n parseError: 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 },\n parse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = \"\", yylineno = 0, yyleng = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer2 = 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 lexer2.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer2;\n sharedState.yy.parser = this;\n if (typeof lexer2.yylloc == \"undefined\") {\n lexer2.yylloc = {};\n }\n var yyloc = lexer2.yylloc;\n lstack.push(yyloc);\n var ranges = lexer2.options && lexer2.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 lex() {\n var token;\n token = tstack.pop() || lexer2.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, state, action, 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 (lexer2.showPosition) {\n errStr = \"Parse error on line \" + (yylineno + 1) + \":\\n\" + lexer2.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: lexer2.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer2.yylineno,\n loc: yyloc,\n 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(lexer2.yytext);\n lstack.push(lexer2.yylloc);\n stack.push(action[1]);\n symbol = null;\n {\n yyleng = lexer2.yyleng;\n yytext = lexer2.yytext;\n yylineno = lexer2.yylineno;\n yyloc = lexer2.yylloc;\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 var lexer = function() {\n var lexer2 = {\n EOF: 1,\n parseError: 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 // resets the lexer, sets new input\n setInput: 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 // consumes and returns one char from the input\n input: 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 this._input = this._input.slice(1);\n return ch;\n },\n // unshifts one char (or a string) into the input\n unput: function(ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - 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 if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\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 ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len\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 // When called from action, caches matched text and appends it on next action\n more: function() {\n this._more = true;\n return this;\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.\n reject: 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 return this;\n },\n // retain first n characters of the match\n less: function(n) {\n this.unput(this.match.slice(n));\n },\n // displays already matched input, i.e. for error messages\n pastInput: 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 // displays upcoming input, i.e. for error messages\n upcomingInput: 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 // displays the character position where the lexing error occurred, i.e. for error messages\n showPosition: function() {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n // test the lexed token: return FALSE when not a match, otherwise return token\n test_match: function(match, indexed_rule) {\n var token, lines, backup;\n if (this.options.backtrack_lexer) {\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 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 ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length : 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 for (var k in backup) {\n this[k] = backup[k];\n }\n return false;\n }\n return false;\n },\n // return next match in input\n next: function() {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n var token, match, tempMatch, 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;\n } else {\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 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 // return next match that has a token\n lex: function lex() {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\n begin: function begin(condition) {\n this.conditionStack.push(condition);\n },\n // pop the previously active lexer condition state off the condition stack\n popState: 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 // 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 // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\n topState: 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 // alias for begin(condition)\n pushState: function pushState(condition) {\n this.begin(condition);\n },\n // return the number of states currently on the stack\n stateStackSize: function stateStackSize() {\n return this.conditionStack.length;\n },\n options: { \"case-insensitive\": true },\n performAction: function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) {\n switch ($avoiding_name_collisions) {\n case 0:\n break;\n case 1:\n break;\n case 2:\n return 32;\n case 3:\n break;\n case 4:\n this.begin(\"title\");\n return 13;\n case 5:\n this.popState();\n return \"title_value\";\n case 6:\n this.begin(\"acc_title\");\n return 15;\n case 7:\n this.popState();\n return \"acc_title_value\";\n case 8:\n this.begin(\"acc_descr\");\n return 17;\n case 9:\n this.popState();\n return \"acc_descr_value\";\n case 10:\n this.begin(\"acc_descr_multiline\");\n break;\n case 11:\n this.popState();\n break;\n case 12:\n return \"acc_descr_multiline_value\";\n case 13:\n return 25;\n case 14:\n return 27;\n case 15:\n return 26;\n case 16:\n return 28;\n case 17:\n return 29;\n case 18:\n return 30;\n case 19:\n return 31;\n case 20:\n this.begin(\"md_string\");\n break;\n case 21:\n return \"MD_STR\";\n case 22:\n this.popState();\n break;\n case 23:\n this.begin(\"string\");\n break;\n case 24:\n this.popState();\n break;\n case 25:\n return \"STR\";\n case 26:\n this.begin(\"point_start\");\n return 22;\n case 27:\n this.begin(\"point_x\");\n return 23;\n case 28:\n this.popState();\n break;\n case 29:\n this.popState();\n this.begin(\"point_y\");\n break;\n case 30:\n this.popState();\n return 24;\n case 31:\n return 6;\n case 32:\n return 43;\n case 33:\n return \"COLON\";\n case 34:\n return 45;\n case 35:\n return 44;\n case 36:\n return 46;\n case 37:\n return 46;\n case 38:\n return 47;\n case 39:\n return 49;\n case 40:\n return 50;\n case 41:\n return 48;\n case 42:\n return 41;\n case 43:\n return 51;\n case 44:\n return 42;\n case 45:\n return 5;\n case 46:\n return 33;\n case 47:\n return 40;\n case 48:\n return 34;\n }\n },\n rules: [/^(?:%%(?!\\{)[^\\n]*)/i, /^(?:[^\\}]%%[^\\n]*)/i, /^(?:[\\n\\r]+)/i, /^(?:%%[^\\n]*)/i, /^(?:title\\b)/i, /^(?:(?!\\n||)*[^\\n]*)/i, /^(?:accTitle\\s*:\\s*)/i, /^(?:(?!\\n||)*[^\\n]*)/i, /^(?:accDescr\\s*:\\s*)/i, /^(?:(?!\\n||)*[^\\n]*)/i, /^(?:accDescr\\s*\\{\\s*)/i, /^(?:[\\}])/i, /^(?:[^\\}]*)/i, /^(?: *x-axis *)/i, /^(?: *y-axis *)/i, /^(?: *--+> *)/i, /^(?: *quadrant-1 *)/i, /^(?: *quadrant-2 *)/i, /^(?: *quadrant-3 *)/i, /^(?: *quadrant-4 *)/i, /^(?:[\"][`])/i, /^(?:[^`\"]+)/i, /^(?:[`][\"])/i, /^(?:[\"])/i, /^(?:[\"])/i, /^(?:[^\"]*)/i, /^(?:\\s*:\\s*\\[\\s*)/i, /^(?:(1)|(0(.\\d+)?))/i, /^(?:\\s*\\] *)/i, /^(?:\\s*,\\s*)/i, /^(?:(1)|(0(.\\d+)?))/i, /^(?: *quadrantChart *)/i, /^(?:[A-Za-z]+)/i, /^(?::)/i, /^(?:\\+)/i, /^(?:,)/i, /^(?:=)/i, /^(?:=)/i, /^(?:\\*)/i, /^(?:#)/i, /^(?:[\\_])/i, /^(?:\\.)/i, /^(?:&)/i, /^(?:-)/i, /^(?:[0-9]+)/i, /^(?:\\s)/i, /^(?:;)/i, /^(?:[!\"#$%&'*+,-.`?\\\\_/])/i, /^(?:$)/i],\n conditions: { \"point_y\": { \"rules\": [30], \"inclusive\": false }, \"point_x\": { \"rules\": [29], \"inclusive\": false }, \"point_start\": { \"rules\": [27, 28], \"inclusive\": false }, \"acc_descr_multiline\": { \"rules\": [11, 12], \"inclusive\": false }, \"acc_descr\": { \"rules\": [9], \"inclusive\": false }, \"acc_title\": { \"rules\": [7], \"inclusive\": false }, \"title\": { \"rules\": [5], \"inclusive\": false }, \"md_string\": { \"rules\": [21, 22], \"inclusive\": false }, \"string\": { \"rules\": [24, 25], \"inclusive\": false }, \"INITIAL\": { \"rules\": [0, 1, 2, 3, 4, 6, 8, 10, 13, 14, 15, 16, 17, 18, 19, 20, 23, 26, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48], \"inclusive\": true } }\n };\n return lexer2;\n }();\n parser2.lexer = lexer;\n function Parser() {\n this.yy = {};\n }\n Parser.prototype = parser2;\n parser2.Parser = Parser;\n return new Parser();\n}();\nparser.parser = parser;\nconst parser$1 = parser;\nconst defaultThemeVariables = getThemeVariables();\nclass QuadrantBuilder {\n constructor() {\n this.config = this.getDefaultConfig();\n this.themeConfig = this.getDefaultThemeConfig();\n this.data = this.getDefaultData();\n }\n getDefaultData() {\n return {\n titleText: \"\",\n quadrant1Text: \"\",\n quadrant2Text: \"\",\n quadrant3Text: \"\",\n quadrant4Text: \"\",\n xAxisLeftText: \"\",\n xAxisRightText: \"\",\n yAxisBottomText: \"\",\n yAxisTopText: \"\",\n points: []\n };\n }\n getDefaultConfig() {\n var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r;\n return {\n showXAxis: true,\n showYAxis: true,\n showTitle: true,\n chartHeight: ((_a = defaultConfig.quadrantChart) == null ? void 0 : _a.chartWidth) || 500,\n chartWidth: ((_b = defaultConfig.quadrantChart) == null ? void 0 : _b.chartHeight) || 500,\n titlePadding: ((_c = defaultConfig.quadrantChart) == null ? void 0 : _c.titlePadding) || 10,\n titleFontSize: ((_d = defaultConfig.quadrantChart) == null ? void 0 : _d.titleFontSize) || 20,\n quadrantPadding: ((_e = defaultConfig.quadrantChart) == null ? void 0 : _e.quadrantPadding) || 5,\n xAxisLabelPadding: ((_f = defaultConfig.quadrantChart) == null ? void 0 : _f.xAxisLabelPadding) || 5,\n yAxisLabelPadding: ((_g = defaultConfig.quadrantChart) == null ? void 0 : _g.yAxisLabelPadding) || 5,\n xAxisLabelFontSize: ((_h = defaultConfig.quadrantChart) == null ? void 0 : _h.xAxisLabelFontSize) || 16,\n yAxisLabelFontSize: ((_i = defaultConfig.quadrantChart) == null ? void 0 : _i.yAxisLabelFontSize) || 16,\n quadrantLabelFontSize: ((_j = defaultConfig.quadrantChart) == null ? void 0 : _j.quadrantLabelFontSize) || 16,\n quadrantTextTopPadding: ((_k = defaultConfig.quadrantChart) == null ? void 0 : _k.quadrantTextTopPadding) || 5,\n pointTextPadding: ((_l = defaultConfig.quadrantChart) == null ? void 0 : _l.pointTextPadding) || 5,\n pointLabelFontSize: ((_m = defaultConfig.quadrantChart) == null ? void 0 : _m.pointLabelFontSize) || 12,\n pointRadius: ((_n = defaultConfig.quadrantChart) == null ? void 0 : _n.pointRadius) || 5,\n xAxisPosition: ((_o = defaultConfig.quadrantChart) == null ? void 0 : _o.xAxisPosition) || \"top\",\n yAxisPosition: ((_p = defaultConfig.quadrantChart) == null ? void 0 : _p.yAxisPosition) || \"left\",\n quadrantInternalBorderStrokeWidth: ((_q = defaultConfig.quadrantChart) == null ? void 0 : _q.quadrantInternalBorderStrokeWidth) || 1,\n quadrantExternalBorderStrokeWidth: ((_r = defaultConfig.quadrantChart) == null ? void 0 : _r.quadrantExternalBorderStrokeWidth) || 2\n };\n }\n getDefaultThemeConfig() {\n return {\n quadrant1Fill: defaultThemeVariables.quadrant1Fill,\n quadrant2Fill: defaultThemeVariables.quadrant2Fill,\n quadrant3Fill: defaultThemeVariables.quadrant3Fill,\n quadrant4Fill: defaultThemeVariables.quadrant4Fill,\n quadrant1TextFill: defaultThemeVariables.quadrant1TextFill,\n quadrant2TextFill: defaultThemeVariables.quadrant2TextFill,\n quadrant3TextFill: defaultThemeVariables.quadrant3TextFill,\n quadrant4TextFill: defaultThemeVariables.quadrant4TextFill,\n quadrantPointFill: defaultThemeVariables.quadrantPointFill,\n quadrantPointTextFill: defaultThemeVariables.quadrantPointTextFill,\n quadrantXAxisTextFill: defaultThemeVariables.quadrantXAxisTextFill,\n quadrantYAxisTextFill: defaultThemeVariables.quadrantYAxisTextFill,\n quadrantTitleFill: defaultThemeVariables.quadrantTitleFill,\n quadrantInternalBorderStrokeFill: defaultThemeVariables.quadrantInternalBorderStrokeFill,\n quadrantExternalBorderStrokeFill: defaultThemeVariables.quadrantExternalBorderStrokeFill\n };\n }\n clear() {\n this.config = this.getDefaultConfig();\n this.themeConfig = this.getDefaultThemeConfig();\n this.data = this.getDefaultData();\n log.info(\"clear called\");\n }\n setData(data) {\n this.data = { ...this.data, ...data };\n }\n addPoints(points) {\n this.data.points = [...points, ...this.data.points];\n }\n setConfig(config2) {\n log.trace(\"setConfig called with: \", config2);\n this.config = { ...this.config, ...config2 };\n }\n setThemeConfig(themeConfig) {\n log.trace(\"setThemeConfig called with: \", themeConfig);\n this.themeConfig = { ...this.themeConfig, ...themeConfig };\n }\n calculateSpace(xAxisPosition, showXAxis, showYAxis, showTitle) {\n const xAxisSpaceCalculation = this.config.xAxisLabelPadding * 2 + this.config.xAxisLabelFontSize;\n const xAxisSpace = {\n top: xAxisPosition === \"top\" && showXAxis ? xAxisSpaceCalculation : 0,\n bottom: xAxisPosition === \"bottom\" && showXAxis ? xAxisSpaceCalculation : 0\n };\n const yAxisSpaceCalculation = this.config.yAxisLabelPadding * 2 + this.config.yAxisLabelFontSize;\n const yAxisSpace = {\n left: this.config.yAxisPosition === \"left\" && showYAxis ? yAxisSpaceCalculation : 0,\n right: this.config.yAxisPosition === \"right\" && showYAxis ? yAxisSpaceCalculation : 0\n };\n const titleSpaceCalculation = this.config.titleFontSize + this.config.titlePadding * 2;\n const titleSpace = {\n top: showTitle ? titleSpaceCalculation : 0\n };\n const quadrantLeft = this.config.quadrantPadding + yAxisSpace.left;\n const quadrantTop = this.config.quadrantPadding + xAxisSpace.top + titleSpace.top;\n const quadrantWidth = this.config.chartWidth - this.config.quadrantPadding * 2 - yAxisSpace.left - yAxisSpace.right;\n const quadrantHeight = this.config.chartHeight - this.config.quadrantPadding * 2 - xAxisSpace.top - xAxisSpace.bottom - titleSpace.top;\n const quadrantHalfWidth = quadrantWidth / 2;\n const quadrantHalfHeight = quadrantHeight / 2;\n const quadrantSpace = {\n quadrantLeft,\n quadrantTop,\n quadrantWidth,\n quadrantHalfWidth,\n quadrantHeight,\n quadrantHalfHeight\n };\n return {\n xAxisSpace,\n yAxisSpace,\n titleSpace,\n quadrantSpace\n };\n }\n getAxisLabels(xAxisPosition, showXAxis, showYAxis, spaceData) {\n const { quadrantSpace, titleSpace } = spaceData;\n const {\n quadrantHalfHeight,\n quadrantHeight,\n quadrantLeft,\n quadrantHalfWidth,\n quadrantTop,\n quadrantWidth\n } = quadrantSpace;\n const drawXAxisLabelsInMiddle = Boolean(this.data.xAxisRightText);\n const drawYAxisLabelsInMiddle = Boolean(this.data.yAxisTopText);\n const axisLabels = [];\n if (this.data.xAxisLeftText && showXAxis) {\n axisLabels.push({\n text: this.data.xAxisLeftText,\n fill: this.themeConfig.quadrantXAxisTextFill,\n x: quadrantLeft + (drawXAxisLabelsInMiddle ? quadrantHalfWidth / 2 : 0),\n y: xAxisPosition === \"top\" ? this.config.xAxisLabelPadding + titleSpace.top : this.config.xAxisLabelPadding + quadrantTop + quadrantHeight + this.config.quadrantPadding,\n fontSize: this.config.xAxisLabelFontSize,\n verticalPos: drawXAxisLabelsInMiddle ? \"center\" : \"left\",\n horizontalPos: \"top\",\n rotation: 0\n });\n }\n if (this.data.xAxisRightText && showXAxis) {\n axisLabels.push({\n text: this.data.xAxisRightText,\n fill: this.themeConfig.quadrantXAxisTextFill,\n x: quadrantLeft + quadrantHalfWidth + (drawXAxisLabelsInMiddle ? quadrantHalfWidth / 2 : 0),\n y: xAxisPosition === \"top\" ? this.config.xAxisLabelPadding + titleSpace.top : this.config.xAxisLabelPadding + quadrantTop + quadrantHeight + this.config.quadrantPadding,\n fontSize: this.config.xAxisLabelFontSize,\n verticalPos: drawXAxisLabelsInMiddle ? \"center\" : \"left\",\n horizontalPos: \"top\",\n rotation: 0\n });\n }\n if (this.data.yAxisBottomText && showYAxis) {\n axisLabels.push({\n text: this.data.yAxisBottomText,\n fill: this.themeConfig.quadrantYAxisTextFill,\n x: this.config.yAxisPosition === \"left\" ? this.config.yAxisLabelPadding : this.config.yAxisLabelPadding + quadrantLeft + quadrantWidth + this.config.quadrantPadding,\n y: quadrantTop + quadrantHeight - (drawYAxisLabelsInMiddle ? quadrantHalfHeight / 2 : 0),\n fontSize: this.config.yAxisLabelFontSize,\n verticalPos: drawYAxisLabelsInMiddle ? \"center\" : \"left\",\n horizontalPos: \"top\",\n rotation: -90\n });\n }\n if (this.data.yAxisTopText && showYAxis) {\n axisLabels.push({\n text: this.data.yAxisTopText,\n fill: this.themeConfig.quadrantYAxisTextFill,\n x: this.config.yAxisPosition === \"left\" ? this.config.yAxisLabelPadding : this.config.yAxisLabelPadding + quadrantLeft + quadrantWidth + this.config.quadrantPadding,\n y: quadrantTop + quadrantHalfHeight - (drawYAxisLabelsInMiddle ? quadrantHalfHeight / 2 : 0),\n fontSize: this.config.yAxisLabelFontSize,\n verticalPos: drawYAxisLabelsInMiddle ? \"center\" : \"left\",\n horizontalPos: \"top\",\n rotation: -90\n });\n }\n return axisLabels;\n }\n getQuadrants(spaceData) {\n const { quadrantSpace } = spaceData;\n const { quadrantHalfHeight, quadrantLeft, quadrantHalfWidth, quadrantTop } = quadrantSpace;\n const quadrants = [\n {\n text: {\n text: this.data.quadrant1Text,\n fill: this.themeConfig.quadrant1TextFill,\n x: 0,\n y: 0,\n fontSize: this.config.quadrantLabelFontSize,\n verticalPos: \"center\",\n horizontalPos: \"middle\",\n rotation: 0\n },\n x: quadrantLeft + quadrantHalfWidth,\n y: quadrantTop,\n width: quadrantHalfWidth,\n height: quadrantHalfHeight,\n fill: this.themeConfig.quadrant1Fill\n },\n {\n text: {\n text: this.data.quadrant2Text,\n fill: this.themeConfig.quadrant2TextFill,\n x: 0,\n y: 0,\n fontSize: this.config.quadrantLabelFontSize,\n verticalPos: \"center\",\n horizontalPos: \"middle\",\n rotation: 0\n },\n x: quadrantLeft,\n y: quadrantTop,\n width: quadrantHalfWidth,\n height: quadrantHalfHeight,\n fill: this.themeConfig.quadrant2Fill\n },\n {\n text: {\n text: this.data.quadrant3Text,\n fill: this.themeConfig.quadrant3TextFill,\n x: 0,\n y: 0,\n fontSize: this.config.quadrantLabelFontSize,\n verticalPos: \"center\",\n horizontalPos: \"middle\",\n rotation: 0\n },\n x: quadrantLeft,\n y: quadrantTop + quadrantHalfHeight,\n width: quadrantHalfWidth,\n height: quadrantHalfHeight,\n fill: this.themeConfig.quadrant3Fill\n },\n {\n text: {\n text: this.data.quadrant4Text,\n fill: this.themeConfig.quadrant4TextFill,\n x: 0,\n y: 0,\n fontSize: this.config.quadrantLabelFontSize,\n verticalPos: \"center\",\n horizontalPos: \"middle\",\n rotation: 0\n },\n x: quadrantLeft + quadrantHalfWidth,\n y: quadrantTop + quadrantHalfHeight,\n width: quadrantHalfWidth,\n height: quadrantHalfHeight,\n fill: this.themeConfig.quadrant4Fill\n }\n ];\n for (const quadrant of quadrants) {\n quadrant.text.x = quadrant.x + quadrant.width / 2;\n if (this.data.points.length === 0) {\n quadrant.text.y = quadrant.y + quadrant.height / 2;\n quadrant.text.horizontalPos = \"middle\";\n } else {\n quadrant.text.y = quadrant.y + this.config.quadrantTextTopPadding;\n quadrant.text.horizontalPos = \"top\";\n }\n }\n return quadrants;\n }\n getQuadrantPoints(spaceData) {\n const { quadrantSpace } = spaceData;\n const { quadrantHeight, quadrantLeft, quadrantTop, quadrantWidth } = quadrantSpace;\n const xAxis = scaleLinear().domain([0, 1]).range([quadrantLeft, quadrantWidth + quadrantLeft]);\n const yAxis = scaleLinear().domain([0, 1]).range([quadrantHeight + quadrantTop, quadrantTop]);\n const points = this.data.points.map((point) => {\n const props = {\n x: xAxis(point.x),\n y: yAxis(point.y),\n fill: this.themeConfig.quadrantPointFill,\n radius: this.config.pointRadius,\n text: {\n text: point.text,\n fill: this.themeConfig.quadrantPointTextFill,\n x: xAxis(point.x),\n y: yAxis(point.y) + this.config.pointTextPadding,\n verticalPos: \"center\",\n horizontalPos: \"top\",\n fontSize: this.config.pointLabelFontSize,\n rotation: 0\n }\n };\n return props;\n });\n return points;\n }\n getBorders(spaceData) {\n const halfExternalBorderWidth = this.config.quadrantExternalBorderStrokeWidth / 2;\n const { quadrantSpace } = spaceData;\n const {\n quadrantHalfHeight,\n quadrantHeight,\n quadrantLeft,\n quadrantHalfWidth,\n quadrantTop,\n quadrantWidth\n } = quadrantSpace;\n const borderLines = [\n // top border\n {\n strokeFill: this.themeConfig.quadrantExternalBorderStrokeFill,\n strokeWidth: this.config.quadrantExternalBorderStrokeWidth,\n x1: quadrantLeft - halfExternalBorderWidth,\n y1: quadrantTop,\n x2: quadrantLeft + quadrantWidth + halfExternalBorderWidth,\n y2: quadrantTop\n },\n // right border\n {\n strokeFill: this.themeConfig.quadrantExternalBorderStrokeFill,\n strokeWidth: this.config.quadrantExternalBorderStrokeWidth,\n x1: quadrantLeft + quadrantWidth,\n y1: quadrantTop + halfExternalBorderWidth,\n x2: quadrantLeft + quadrantWidth,\n y2: quadrantTop + quadrantHeight - halfExternalBorderWidth\n },\n // bottom border\n {\n strokeFill: this.themeConfig.quadrantExternalBorderStrokeFill,\n strokeWidth: this.config.quadrantExternalBorderStrokeWidth,\n x1: quadrantLeft - halfExternalBorderWidth,\n y1: quadrantTop + quadrantHeight,\n x2: quadrantLeft + quadrantWidth + halfExternalBorderWidth,\n y2: quadrantTop + quadrantHeight\n },\n // left border\n {\n strokeFill: this.themeConfig.quadrantExternalBorderStrokeFill,\n strokeWidth: this.config.quadrantExternalBorderStrokeWidth,\n x1: quadrantLeft,\n y1: quadrantTop + halfExternalBorderWidth,\n x2: quadrantLeft,\n y2: quadrantTop + quadrantHeight - halfExternalBorderWidth\n },\n // vertical inner border\n {\n strokeFill: this.themeConfig.quadrantInternalBorderStrokeFill,\n strokeWidth: this.config.quadrantInternalBorderStrokeWidth,\n x1: quadrantLeft + quadrantHalfWidth,\n y1: quadrantTop + halfExternalBorderWidth,\n x2: quadrantLeft + quadrantHalfWidth,\n y2: quadrantTop + quadrantHeight - halfExternalBorderWidth\n },\n // horizontal inner border\n {\n strokeFill: this.themeConfig.quadrantInternalBorderStrokeFill,\n strokeWidth: this.config.quadrantInternalBorderStrokeWidth,\n x1: quadrantLeft + halfExternalBorderWidth,\n y1: quadrantTop + quadrantHalfHeight,\n x2: quadrantLeft + quadrantWidth - halfExternalBorderWidth,\n y2: quadrantTop + quadrantHalfHeight\n }\n ];\n return borderLines;\n }\n getTitle(showTitle) {\n if (showTitle) {\n return {\n text: this.data.titleText,\n fill: this.themeConfig.quadrantTitleFill,\n fontSize: this.config.titleFontSize,\n horizontalPos: \"top\",\n verticalPos: \"center\",\n rotation: 0,\n y: this.config.titlePadding,\n x: this.config.chartWidth / 2\n };\n }\n return;\n }\n build() {\n const showXAxis = this.config.showXAxis && !!(this.data.xAxisLeftText || this.data.xAxisRightText);\n const showYAxis = this.config.showYAxis && !!(this.data.yAxisTopText || this.data.yAxisBottomText);\n const showTitle = this.config.showTitle && !!this.data.titleText;\n const xAxisPosition = this.data.points.length > 0 ? \"bottom\" : this.config.xAxisPosition;\n const calculatedSpace = this.calculateSpace(xAxisPosition, showXAxis, showYAxis, showTitle);\n return {\n points: this.getQuadrantPoints(calculatedSpace),\n quadrants: this.getQuadrants(calculatedSpace),\n axisLabels: this.getAxisLabels(xAxisPosition, showXAxis, showYAxis, calculatedSpace),\n borderLines: this.getBorders(calculatedSpace),\n title: this.getTitle(showTitle)\n };\n }\n}\nconst config = getConfig();\nfunction textSanitizer(text) {\n return sanitizeText(text.trim(), config);\n}\nconst quadrantBuilder = new QuadrantBuilder();\nfunction setQuadrant1Text(textObj) {\n quadrantBuilder.setData({ quadrant1Text: textSanitizer(textObj.text) });\n}\nfunction setQuadrant2Text(textObj) {\n quadrantBuilder.setData({ quadrant2Text: textSanitizer(textObj.text) });\n}\nfunction setQuadrant3Text(textObj) {\n quadrantBuilder.setData({ quadrant3Text: textSanitizer(textObj.text) });\n}\nfunction setQuadrant4Text(textObj) {\n quadrantBuilder.setData({ quadrant4Text: textSanitizer(textObj.text) });\n}\nfunction setXAxisLeftText(textObj) {\n quadrantBuilder.setData({ xAxisLeftText: textSanitizer(textObj.text) });\n}\nfunction setXAxisRightText(textObj) {\n quadrantBuilder.setData({ xAxisRightText: textSanitizer(textObj.text) });\n}\nfunction setYAxisTopText(textObj) {\n quadrantBuilder.setData({ yAxisTopText: textSanitizer(textObj.text) });\n}\nfunction setYAxisBottomText(textObj) {\n quadrantBuilder.setData({ yAxisBottomText: textSanitizer(textObj.text) });\n}\nfunction addPoint(textObj, x, y) {\n quadrantBuilder.addPoints([{ x, y, text: textSanitizer(textObj.text) }]);\n}\nfunction setWidth(width) {\n quadrantBuilder.setConfig({ chartWidth: width });\n}\nfunction setHeight(height) {\n quadrantBuilder.setConfig({ chartHeight: height });\n}\nfunction getQuadrantData() {\n const config2 = getConfig();\n const { themeVariables, quadrantChart: quadrantChartConfig } = config2;\n if (quadrantChartConfig) {\n quadrantBuilder.setConfig(quadrantChartConfig);\n }\n quadrantBuilder.setThemeConfig({\n quadrant1Fill: themeVariables.quadrant1Fill,\n quadrant2Fill: themeVariables.quadrant2Fill,\n quadrant3Fill: themeVariables.quadrant3Fill,\n quadrant4Fill: themeVariables.quadrant4Fill,\n quadrant1TextFill: themeVariables.quadrant1TextFill,\n quadrant2TextFill: themeVariables.quadrant2TextFill,\n quadrant3TextFill: themeVariables.quadrant3TextFill,\n quadrant4TextFill: themeVariables.quadrant4TextFill,\n quadrantPointFill: themeVariables.quadrantPointFill,\n quadrantPointTextFill: themeVariables.quadrantPointTextFill,\n quadrantXAxisTextFill: themeVariables.quadrantXAxisTextFill,\n quadrantYAxisTextFill: themeVariables.quadrantYAxisTextFill,\n quadrantExternalBorderStrokeFill: themeVariables.quadrantExternalBorderStrokeFill,\n quadrantInternalBorderStrokeFill: themeVariables.quadrantInternalBorderStrokeFill,\n quadrantTitleFill: themeVariables.quadrantTitleFill\n });\n quadrantBuilder.setData({ titleText: getDiagramTitle() });\n return quadrantBuilder.build();\n}\nconst clear = function() {\n quadrantBuilder.clear();\n clear$1();\n};\nconst db = {\n setWidth,\n setHeight,\n setQuadrant1Text,\n setQuadrant2Text,\n setQuadrant3Text,\n setQuadrant4Text,\n setXAxisLeftText,\n setXAxisRightText,\n setYAxisTopText,\n setYAxisBottomText,\n addPoint,\n getQuadrantData,\n clear,\n setAccTitle,\n getAccTitle,\n setDiagramTitle,\n getDiagramTitle,\n getAccDescription,\n setAccDescription\n};\nconst draw = (txt, id, _version, diagObj) => {\n var _a, _b, _c;\n function getDominantBaseLine(horizontalPos) {\n return horizontalPos === \"top\" ? \"hanging\" : \"middle\";\n }\n function getTextAnchor(verticalPos) {\n return verticalPos === \"left\" ? \"start\" : \"middle\";\n }\n function getTransformation(data) {\n return `translate(${data.x}, ${data.y}) rotate(${data.rotation || 0})`;\n }\n const conf = getConfig();\n log.debug(\"Rendering quadrant chart\\n\" + txt);\n const securityLevel = conf.securityLevel;\n let sandboxElement;\n if (securityLevel === \"sandbox\") {\n sandboxElement = select(\"#i\" + id);\n }\n const root = securityLevel === \"sandbox\" ? select(sandboxElement.nodes()[0].contentDocument.body) : select(\"body\");\n const svg = root.select(`[id=\"${id}\"]`);\n const group = svg.append(\"g\").attr(\"class\", \"main\");\n const width = ((_a = conf.quadrantChart) == null ? void 0 : _a.chartWidth) || 500;\n const height = ((_b = conf.quadrantChart) == null ? void 0 : _b.chartHeight) || 500;\n configureSvgSize(svg, height, width, ((_c = conf.quadrantChart) == null ? void 0 : _c.useMaxWidth) || true);\n svg.attr(\"viewBox\", \"0 0 \" + width + \" \" + height);\n diagObj.db.setHeight(height);\n diagObj.db.setWidth(width);\n const quadrantData = diagObj.db.getQuadrantData();\n const quadrantsGroup = group.append(\"g\").attr(\"class\", \"quadrants\");\n const borderGroup = group.append(\"g\").attr(\"class\", \"border\");\n const dataPointGroup = group.append(\"g\").attr(\"class\", \"data-points\");\n const labelGroup = group.append(\"g\").attr(\"class\", \"labels\");\n const titleGroup = group.append(\"g\").attr(\"class\", \"title\");\n if (quadrantData.title) {\n titleGroup.append(\"text\").attr(\"x\", 0).attr(\"y\", 0).attr(\"fill\", quadrantData.title.fill).attr(\"font-size\", quadrantData.title.fontSize).attr(\"dominant-baseline\", getDominantBaseLine(quadrantData.title.horizontalPos)).attr(\"text-anchor\", getTextAnchor(quadrantData.title.verticalPos)).attr(\"transform\", getTransformation(quadrantData.title)).text(quadrantData.title.text);\n }\n if (quadrantData.borderLines) {\n borderGroup.selectAll(\"line\").data(quadrantData.borderLines).enter().append(\"line\").attr(\"x1\", (data) => data.x1).attr(\"y1\", (data) => data.y1).attr(\"x2\", (data) => data.x2).attr(\"y2\", (data) => data.y2).style(\"stroke\", (data) => data.strokeFill).style(\"stroke-width\", (data) => data.strokeWidth);\n }\n const quadrants = quadrantsGroup.selectAll(\"g.quadrant\").data(quadrantData.quadrants).enter().append(\"g\").attr(\"class\", \"quadrant\");\n quadrants.append(\"rect\").attr(\"x\", (data) => data.x).attr(\"y\", (data) => data.y).attr(\"width\", (data) => data.width).attr(\"height\", (data) => data.height).attr(\"fill\", (data) => data.fill);\n quadrants.append(\"text\").attr(\"x\", 0).attr(\"y\", 0).attr(\"fill\", (data) => data.text.fill).attr(\"font-size\", (data) => data.text.fontSize).attr(\n \"dominant-baseline\",\n (data) => getDominantBaseLine(data.text.horizontalPos)\n ).attr(\"text-anchor\", (data) => getTextAnchor(data.text.verticalPos)).attr(\"transform\", (data) => getTransformation(data.text)).text((data) => data.text.text);\n const labels = labelGroup.selectAll(\"g.label\").data(quadrantData.axisLabels).enter().append(\"g\").attr(\"class\", \"label\");\n labels.append(\"text\").attr(\"x\", 0).attr(\"y\", 0).text((data) => data.text).attr(\"fill\", (data) => data.fill).attr(\"font-size\", (data) => data.fontSize).attr(\"dominant-baseline\", (data) => getDominantBaseLine(data.horizontalPos)).attr(\"text-anchor\", (data) => getTextAnchor(data.verticalPos)).attr(\"transform\", (data) => getTransformation(data));\n const dataPoints = dataPointGroup.selectAll(\"g.data-point\").data(quadrantData.points).enter().append(\"g\").attr(\"class\", \"data-point\");\n dataPoints.append(\"circle\").attr(\"cx\", (data) => data.x).attr(\"cy\", (data) => data.y).attr(\"r\", (data) => data.radius).attr(\"fill\", (data) => data.fill);\n dataPoints.append(\"text\").attr(\"x\", 0).attr(\"y\", 0).text((data) => data.text.text).attr(\"fill\", (data) => data.text.fill).attr(\"font-size\", (data) => data.text.fontSize).attr(\n \"dominant-baseline\",\n (data) => getDominantBaseLine(data.text.horizontalPos)\n ).attr(\"text-anchor\", (data) => getTextAnchor(data.text.verticalPos)).attr(\"transform\", (data) => getTransformation(data.text));\n};\nconst renderer = {\n draw\n};\nconst diagram = {\n parser: parser$1,\n db,\n renderer,\n styles: () => \"\"\n};\nexport {\n diagram\n};\n","import { c as getConfig, s as setAccTitle, g as getAccTitle, b as setAccDescription, a as getAccDescription, l as log, v as clear$1, i as configureSvgSize, e as common } from \"./mermaid-f47111a7.js\";\nimport { select, line } from \"d3\";\nimport { layout } from \"dagre-d3-es/src/dagre/index.js\";\nimport * as graphlib from \"dagre-d3-es/src/graphlib/index.js\";\nimport \"ts-dedent\";\nimport \"dayjs\";\nimport \"@braintree/sanitize-url\";\nimport \"dompurify\";\nimport \"khroma\";\nimport \"lodash-es/memoize.js\";\nimport \"lodash-es/merge.js\";\nimport \"stylis\";\nimport \"lodash-es/isEmpty.js\";\nvar parser = function() {\n var o = function(k, v, o2, l) {\n for (o2 = o2 || {}, l = k.length; l--; o2[k[l]] = v)\n ;\n return o2;\n }, $V0 = [1, 3], $V1 = [1, 4], $V2 = [1, 5], $V3 = [1, 6], $V4 = [5, 6, 8, 9, 11, 13, 31, 32, 33, 34, 35, 36, 44, 62, 63], $V5 = [1, 18], $V6 = [2, 7], $V7 = [1, 22], $V8 = [1, 23], $V9 = [1, 24], $Va = [1, 25], $Vb = [1, 26], $Vc = [1, 27], $Vd = [1, 20], $Ve = [1, 28], $Vf = [1, 29], $Vg = [62, 63], $Vh = [5, 8, 9, 11, 13, 31, 32, 33, 34, 35, 36, 44, 51, 53, 62, 63], $Vi = [1, 47], $Vj = [1, 48], $Vk = [1, 49], $Vl = [1, 50], $Vm = [1, 51], $Vn = [1, 52], $Vo = [1, 53], $Vp = [53, 54], $Vq = [1, 64], $Vr = [1, 60], $Vs = [1, 61], $Vt = [1, 62], $Vu = [1, 63], $Vv = [1, 65], $Vw = [1, 69], $Vx = [1, 70], $Vy = [1, 67], $Vz = [1, 68], $VA = [5, 8, 9, 11, 13, 31, 32, 33, 34, 35, 36, 44, 62, 63];\n var parser2 = {\n trace: function trace() {\n },\n yy: {},\n symbols_: { \"error\": 2, \"start\": 3, \"directive\": 4, \"NEWLINE\": 5, \"RD\": 6, \"diagram\": 7, \"EOF\": 8, \"acc_title\": 9, \"acc_title_value\": 10, \"acc_descr\": 11, \"acc_descr_value\": 12, \"acc_descr_multiline_value\": 13, \"requirementDef\": 14, \"elementDef\": 15, \"relationshipDef\": 16, \"requirementType\": 17, \"requirementName\": 18, \"STRUCT_START\": 19, \"requirementBody\": 20, \"ID\": 21, \"COLONSEP\": 22, \"id\": 23, \"TEXT\": 24, \"text\": 25, \"RISK\": 26, \"riskLevel\": 27, \"VERIFYMTHD\": 28, \"verifyType\": 29, \"STRUCT_STOP\": 30, \"REQUIREMENT\": 31, \"FUNCTIONAL_REQUIREMENT\": 32, \"INTERFACE_REQUIREMENT\": 33, \"PERFORMANCE_REQUIREMENT\": 34, \"PHYSICAL_REQUIREMENT\": 35, \"DESIGN_CONSTRAINT\": 36, \"LOW_RISK\": 37, \"MED_RISK\": 38, \"HIGH_RISK\": 39, \"VERIFY_ANALYSIS\": 40, \"VERIFY_DEMONSTRATION\": 41, \"VERIFY_INSPECTION\": 42, \"VERIFY_TEST\": 43, \"ELEMENT\": 44, \"elementName\": 45, \"elementBody\": 46, \"TYPE\": 47, \"type\": 48, \"DOCREF\": 49, \"ref\": 50, \"END_ARROW_L\": 51, \"relationship\": 52, \"LINE\": 53, \"END_ARROW_R\": 54, \"CONTAINS\": 55, \"COPIES\": 56, \"DERIVES\": 57, \"SATISFIES\": 58, \"VERIFIES\": 59, \"REFINES\": 60, \"TRACES\": 61, \"unqString\": 62, \"qString\": 63, \"$accept\": 0, \"$end\": 1 },\n terminals_: { 2: \"error\", 5: \"NEWLINE\", 6: \"RD\", 8: \"EOF\", 9: \"acc_title\", 10: \"acc_title_value\", 11: \"acc_descr\", 12: \"acc_descr_value\", 13: \"acc_descr_multiline_value\", 19: \"STRUCT_START\", 21: \"ID\", 22: \"COLONSEP\", 24: \"TEXT\", 26: \"RISK\", 28: \"VERIFYMTHD\", 30: \"STRUCT_STOP\", 31: \"REQUIREMENT\", 32: \"FUNCTIONAL_REQUIREMENT\", 33: \"INTERFACE_REQUIREMENT\", 34: \"PERFORMANCE_REQUIREMENT\", 35: \"PHYSICAL_REQUIREMENT\", 36: \"DESIGN_CONSTRAINT\", 37: \"LOW_RISK\", 38: \"MED_RISK\", 39: \"HIGH_RISK\", 40: \"VERIFY_ANALYSIS\", 41: \"VERIFY_DEMONSTRATION\", 42: \"VERIFY_INSPECTION\", 43: \"VERIFY_TEST\", 44: \"ELEMENT\", 47: \"TYPE\", 49: \"DOCREF\", 51: \"END_ARROW_L\", 53: \"LINE\", 54: \"END_ARROW_R\", 55: \"CONTAINS\", 56: \"COPIES\", 57: \"DERIVES\", 58: \"SATISFIES\", 59: \"VERIFIES\", 60: \"REFINES\", 61: \"TRACES\", 62: \"unqString\", 63: \"qString\" },\n productions_: [0, [3, 3], [3, 2], [3, 4], [4, 2], [4, 2], [4, 1], [7, 0], [7, 2], [7, 2], [7, 2], [7, 2], [7, 2], [14, 5], [20, 5], [20, 5], [20, 5], [20, 5], [20, 2], [20, 1], [17, 1], [17, 1], [17, 1], [17, 1], [17, 1], [17, 1], [27, 1], [27, 1], [27, 1], [29, 1], [29, 1], [29, 1], [29, 1], [15, 5], [46, 5], [46, 5], [46, 2], [46, 1], [16, 5], [16, 5], [52, 1], [52, 1], [52, 1], [52, 1], [52, 1], [52, 1], [52, 1], [18, 1], [18, 1], [23, 1], [23, 1], [25, 1], [25, 1], [45, 1], [45, 1], [48, 1], [48, 1], [50, 1], [50, 1]],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) {\n var $0 = $$.length - 1;\n switch (yystate) {\n case 4:\n this.$ = $$[$0].trim();\n yy.setAccTitle(this.$);\n break;\n case 5:\n case 6:\n this.$ = $$[$0].trim();\n yy.setAccDescription(this.$);\n break;\n case 7:\n this.$ = [];\n break;\n case 13:\n yy.addRequirement($$[$0 - 3], $$[$0 - 4]);\n break;\n case 14:\n yy.setNewReqId($$[$0 - 2]);\n break;\n case 15:\n yy.setNewReqText($$[$0 - 2]);\n break;\n case 16:\n yy.setNewReqRisk($$[$0 - 2]);\n break;\n case 17:\n yy.setNewReqVerifyMethod($$[$0 - 2]);\n break;\n case 20:\n this.$ = yy.RequirementType.REQUIREMENT;\n break;\n case 21:\n this.$ = yy.RequirementType.FUNCTIONAL_REQUIREMENT;\n break;\n case 22:\n this.$ = yy.RequirementType.INTERFACE_REQUIREMENT;\n break;\n case 23:\n this.$ = yy.RequirementType.PERFORMANCE_REQUIREMENT;\n break;\n case 24:\n this.$ = yy.RequirementType.PHYSICAL_REQUIREMENT;\n break;\n case 25:\n this.$ = yy.RequirementType.DESIGN_CONSTRAINT;\n break;\n case 26:\n this.$ = yy.RiskLevel.LOW_RISK;\n break;\n case 27:\n this.$ = yy.RiskLevel.MED_RISK;\n break;\n case 28:\n this.$ = yy.RiskLevel.HIGH_RISK;\n break;\n case 29:\n this.$ = yy.VerifyType.VERIFY_ANALYSIS;\n break;\n case 30:\n this.$ = yy.VerifyType.VERIFY_DEMONSTRATION;\n break;\n case 31:\n this.$ = yy.VerifyType.VERIFY_INSPECTION;\n break;\n case 32:\n this.$ = yy.VerifyType.VERIFY_TEST;\n break;\n case 33:\n yy.addElement($$[$0 - 3]);\n break;\n case 34:\n yy.setNewElementType($$[$0 - 2]);\n break;\n case 35:\n yy.setNewElementDocRef($$[$0 - 2]);\n break;\n case 38:\n yy.addRelationship($$[$0 - 2], $$[$0], $$[$0 - 4]);\n break;\n case 39:\n yy.addRelationship($$[$0 - 2], $$[$0 - 4], $$[$0]);\n break;\n case 40:\n this.$ = yy.Relationships.CONTAINS;\n break;\n case 41:\n this.$ = yy.Relationships.COPIES;\n break;\n case 42:\n this.$ = yy.Relationships.DERIVES;\n break;\n case 43:\n this.$ = yy.Relationships.SATISFIES;\n break;\n case 44:\n this.$ = yy.Relationships.VERIFIES;\n break;\n case 45:\n this.$ = yy.Relationships.REFINES;\n break;\n case 46:\n this.$ = yy.Relationships.TRACES;\n break;\n }\n },\n table: [{ 3: 1, 4: 2, 6: $V0, 9: $V1, 11: $V2, 13: $V3 }, { 1: [3] }, { 3: 8, 4: 2, 5: [1, 7], 6: $V0, 9: $V1, 11: $V2, 13: $V3 }, { 5: [1, 9] }, { 10: [1, 10] }, { 12: [1, 11] }, o($V4, [2, 6]), { 3: 12, 4: 2, 6: $V0, 9: $V1, 11: $V2, 13: $V3 }, { 1: [2, 2] }, { 4: 17, 5: $V5, 7: 13, 8: $V6, 9: $V1, 11: $V2, 13: $V3, 14: 14, 15: 15, 16: 16, 17: 19, 23: 21, 31: $V7, 32: $V8, 33: $V9, 34: $Va, 35: $Vb, 36: $Vc, 44: $Vd, 62: $Ve, 63: $Vf }, o($V4, [2, 4]), o($V4, [2, 5]), { 1: [2, 1] }, { 8: [1, 30] }, { 4: 17, 5: $V5, 7: 31, 8: $V6, 9: $V1, 11: $V2, 13: $V3, 14: 14, 15: 15, 16: 16, 17: 19, 23: 21, 31: $V7, 32: $V8, 33: $V9, 34: $Va, 35: $Vb, 36: $Vc, 44: $Vd, 62: $Ve, 63: $Vf }, { 4: 17, 5: $V5, 7: 32, 8: $V6, 9: $V1, 11: $V2, 13: $V3, 14: 14, 15: 15, 16: 16, 17: 19, 23: 21, 31: $V7, 32: $V8, 33: $V9, 34: $Va, 35: $Vb, 36: $Vc, 44: $Vd, 62: $Ve, 63: $Vf }, { 4: 17, 5: $V5, 7: 33, 8: $V6, 9: $V1, 11: $V2, 13: $V3, 14: 14, 15: 15, 16: 16, 17: 19, 23: 21, 31: $V7, 32: $V8, 33: $V9, 34: $Va, 35: $Vb, 36: $Vc, 44: $Vd, 62: $Ve, 63: $Vf }, { 4: 17, 5: $V5, 7: 34, 8: $V6, 9: $V1, 11: $V2, 13: $V3, 14: 14, 15: 15, 16: 16, 17: 19, 23: 21, 31: $V7, 32: $V8, 33: $V9, 34: $Va, 35: $Vb, 36: $Vc, 44: $Vd, 62: $Ve, 63: $Vf }, { 4: 17, 5: $V5, 7: 35, 8: $V6, 9: $V1, 11: $V2, 13: $V3, 14: 14, 15: 15, 16: 16, 17: 19, 23: 21, 31: $V7, 32: $V8, 33: $V9, 34: $Va, 35: $Vb, 36: $Vc, 44: $Vd, 62: $Ve, 63: $Vf }, { 18: 36, 62: [1, 37], 63: [1, 38] }, { 45: 39, 62: [1, 40], 63: [1, 41] }, { 51: [1, 42], 53: [1, 43] }, o($Vg, [2, 20]), o($Vg, [2, 21]), o($Vg, [2, 22]), o($Vg, [2, 23]), o($Vg, [2, 24]), o($Vg, [2, 25]), o($Vh, [2, 49]), o($Vh, [2, 50]), { 1: [2, 3] }, { 8: [2, 8] }, { 8: [2, 9] }, { 8: [2, 10] }, { 8: [2, 11] }, { 8: [2, 12] }, { 19: [1, 44] }, { 19: [2, 47] }, { 19: [2, 48] }, { 19: [1, 45] }, { 19: [2, 53] }, { 19: [2, 54] }, { 52: 46, 55: $Vi, 56: $Vj, 57: $Vk, 58: $Vl, 59: $Vm, 60: $Vn, 61: $Vo }, { 52: 54, 55: $Vi, 56: $Vj, 57: $Vk, 58: $Vl, 59: $Vm, 60: $Vn, 61: $Vo }, { 5: [1, 55] }, { 5: [1, 56] }, { 53: [1, 57] }, o($Vp, [2, 40]), o($Vp, [2, 41]), o($Vp, [2, 42]), o($Vp, [2, 43]), o($Vp, [2, 44]), o($Vp, [2, 45]), o($Vp, [2, 46]), { 54: [1, 58] }, { 5: $Vq, 20: 59, 21: $Vr, 24: $Vs, 26: $Vt, 28: $Vu, 30: $Vv }, { 5: $Vw, 30: $Vx, 46: 66, 47: $Vy, 49: $Vz }, { 23: 71, 62: $Ve, 63: $Vf }, { 23: 72, 62: $Ve, 63: $Vf }, o($VA, [2, 13]), { 22: [1, 73] }, { 22: [1, 74] }, { 22: [1, 75] }, { 22: [1, 76] }, { 5: $Vq, 20: 77, 21: $Vr, 24: $Vs, 26: $Vt, 28: $Vu, 30: $Vv }, o($VA, [2, 19]), o($VA, [2, 33]), { 22: [1, 78] }, { 22: [1, 79] }, { 5: $Vw, 30: $Vx, 46: 80, 47: $Vy, 49: $Vz }, o($VA, [2, 37]), o($VA, [2, 38]), o($VA, [2, 39]), { 23: 81, 62: $Ve, 63: $Vf }, { 25: 82, 62: [1, 83], 63: [1, 84] }, { 27: 85, 37: [1, 86], 38: [1, 87], 39: [1, 88] }, { 29: 89, 40: [1, 90], 41: [1, 91], 42: [1, 92], 43: [1, 93] }, o($VA, [2, 18]), { 48: 94, 62: [1, 95], 63: [1, 96] }, { 50: 97, 62: [1, 98], 63: [1, 99] }, o($VA, [2, 36]), { 5: [1, 100] }, { 5: [1, 101] }, { 5: [2, 51] }, { 5: [2, 52] }, { 5: [1, 102] }, { 5: [2, 26] }, { 5: [2, 27] }, { 5: [2, 28] }, { 5: [1, 103] }, { 5: [2, 29] }, { 5: [2, 30] }, { 5: [2, 31] }, { 5: [2, 32] }, { 5: [1, 104] }, { 5: [2, 55] }, { 5: [2, 56] }, { 5: [1, 105] }, { 5: [2, 57] }, { 5: [2, 58] }, { 5: $Vq, 20: 106, 21: $Vr, 24: $Vs, 26: $Vt, 28: $Vu, 30: $Vv }, { 5: $Vq, 20: 107, 21: $Vr, 24: $Vs, 26: $Vt, 28: $Vu, 30: $Vv }, { 5: $Vq, 20: 108, 21: $Vr, 24: $Vs, 26: $Vt, 28: $Vu, 30: $Vv }, { 5: $Vq, 20: 109, 21: $Vr, 24: $Vs, 26: $Vt, 28: $Vu, 30: $Vv }, { 5: $Vw, 30: $Vx, 46: 110, 47: $Vy, 49: $Vz }, { 5: $Vw, 30: $Vx, 46: 111, 47: $Vy, 49: $Vz }, o($VA, [2, 14]), o($VA, [2, 15]), o($VA, [2, 16]), o($VA, [2, 17]), o($VA, [2, 34]), o($VA, [2, 35])],\n defaultActions: { 8: [2, 2], 12: [2, 1], 30: [2, 3], 31: [2, 8], 32: [2, 9], 33: [2, 10], 34: [2, 11], 35: [2, 12], 37: [2, 47], 38: [2, 48], 40: [2, 53], 41: [2, 54], 83: [2, 51], 84: [2, 52], 86: [2, 26], 87: [2, 27], 88: [2, 28], 90: [2, 29], 91: [2, 30], 92: [2, 31], 93: [2, 32], 95: [2, 55], 96: [2, 56], 98: [2, 57], 99: [2, 58] },\n parseError: 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 },\n parse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = \"\", yylineno = 0, yyleng = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer2 = 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 lexer2.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer2;\n sharedState.yy.parser = this;\n if (typeof lexer2.yylloc == \"undefined\") {\n lexer2.yylloc = {};\n }\n var yyloc = lexer2.yylloc;\n lstack.push(yyloc);\n var ranges = lexer2.options && lexer2.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 lex() {\n var token;\n token = tstack.pop() || lexer2.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, state, action, 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 (lexer2.showPosition) {\n errStr = \"Parse error on line \" + (yylineno + 1) + \":\\n\" + lexer2.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: lexer2.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer2.yylineno,\n loc: yyloc,\n 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(lexer2.yytext);\n lstack.push(lexer2.yylloc);\n stack.push(action[1]);\n symbol = null;\n {\n yyleng = lexer2.yyleng;\n yytext = lexer2.yytext;\n yylineno = lexer2.yylineno;\n yyloc = lexer2.yylloc;\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 var lexer = function() {\n var lexer2 = {\n EOF: 1,\n parseError: 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 // resets the lexer, sets new input\n setInput: 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 // consumes and returns one char from the input\n input: 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 this._input = this._input.slice(1);\n return ch;\n },\n // unshifts one char (or a string) into the input\n unput: function(ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - 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 if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\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 ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len\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 // When called from action, caches matched text and appends it on next action\n more: function() {\n this._more = true;\n return this;\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.\n reject: 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 return this;\n },\n // retain first n characters of the match\n less: function(n) {\n this.unput(this.match.slice(n));\n },\n // displays already matched input, i.e. for error messages\n pastInput: 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 // displays upcoming input, i.e. for error messages\n upcomingInput: 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 // displays the character position where the lexing error occurred, i.e. for error messages\n showPosition: function() {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n // test the lexed token: return FALSE when not a match, otherwise return token\n test_match: function(match, indexed_rule) {\n var token, lines, backup;\n if (this.options.backtrack_lexer) {\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 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 ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length : 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 for (var k in backup) {\n this[k] = backup[k];\n }\n return false;\n }\n return false;\n },\n // return next match in input\n next: function() {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n var token, match, tempMatch, 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;\n } else {\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 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 // return next match that has a token\n lex: function lex() {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\n begin: function begin(condition) {\n this.conditionStack.push(condition);\n },\n // pop the previously active lexer condition state off the condition stack\n popState: 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 // 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 // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\n topState: 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 // alias for begin(condition)\n pushState: function pushState(condition) {\n this.begin(condition);\n },\n // return the number of states currently on the stack\n stateStackSize: function stateStackSize() {\n return this.conditionStack.length;\n },\n options: { \"case-insensitive\": true },\n performAction: function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) {\n switch ($avoiding_name_collisions) {\n case 0:\n return \"title\";\n case 1:\n this.begin(\"acc_title\");\n return 9;\n case 2:\n this.popState();\n return \"acc_title_value\";\n case 3:\n this.begin(\"acc_descr\");\n return 11;\n case 4:\n this.popState();\n return \"acc_descr_value\";\n case 5:\n this.begin(\"acc_descr_multiline\");\n break;\n case 6:\n this.popState();\n break;\n case 7:\n return \"acc_descr_multiline_value\";\n case 8:\n return 5;\n case 9:\n break;\n case 10:\n break;\n case 11:\n break;\n case 12:\n return 8;\n case 13:\n return 6;\n case 14:\n return 19;\n case 15:\n return 30;\n case 16:\n return 22;\n case 17:\n return 21;\n case 18:\n return 24;\n case 19:\n return 26;\n case 20:\n return 28;\n case 21:\n return 31;\n case 22:\n return 32;\n case 23:\n return 33;\n case 24:\n return 34;\n case 25:\n return 35;\n case 26:\n return 36;\n case 27:\n return 37;\n case 28:\n return 38;\n case 29:\n return 39;\n case 30:\n return 40;\n case 31:\n return 41;\n case 32:\n return 42;\n case 33:\n return 43;\n case 34:\n return 44;\n case 35:\n return 55;\n case 36:\n return 56;\n case 37:\n return 57;\n case 38:\n return 58;\n case 39:\n return 59;\n case 40:\n return 60;\n case 41:\n return 61;\n case 42:\n return 47;\n case 43:\n return 49;\n case 44:\n return 51;\n case 45:\n return 54;\n case 46:\n return 53;\n case 47:\n this.begin(\"string\");\n break;\n case 48:\n this.popState();\n break;\n case 49:\n return \"qString\";\n case 50:\n yy_.yytext = yy_.yytext.trim();\n return 62;\n }\n },\n rules: [/^(?:title\\s[^#\\n;]+)/i, /^(?:accTitle\\s*:\\s*)/i, /^(?:(?!\\n||)*[^\\n]*)/i, /^(?:accDescr\\s*:\\s*)/i, /^(?:(?!\\n||)*[^\\n]*)/i, /^(?:accDescr\\s*\\{\\s*)/i, /^(?:[\\}])/i, /^(?:[^\\}]*)/i, /^(?:(\\r?\\n)+)/i, /^(?:\\s+)/i, /^(?:#[^\\n]*)/i, /^(?:%[^\\n]*)/i, /^(?:$)/i, /^(?:requirementDiagram\\b)/i, /^(?:\\{)/i, /^(?:\\})/i, /^(?::)/i, /^(?:id\\b)/i, /^(?:text\\b)/i, /^(?:risk\\b)/i, /^(?:verifyMethod\\b)/i, /^(?:requirement\\b)/i, /^(?:functionalRequirement\\b)/i, /^(?:interfaceRequirement\\b)/i, /^(?:performanceRequirement\\b)/i, /^(?:physicalRequirement\\b)/i, /^(?:designConstraint\\b)/i, /^(?:low\\b)/i, /^(?:medium\\b)/i, /^(?:high\\b)/i, /^(?:analysis\\b)/i, /^(?:demonstration\\b)/i, /^(?:inspection\\b)/i, /^(?:test\\b)/i, /^(?:element\\b)/i, /^(?:contains\\b)/i, /^(?:copies\\b)/i, /^(?:derives\\b)/i, /^(?:satisfies\\b)/i, /^(?:verifies\\b)/i, /^(?:refines\\b)/i, /^(?:traces\\b)/i, /^(?:type\\b)/i, /^(?:docref\\b)/i, /^(?:<-)/i, /^(?:->)/i, /^(?:-)/i, /^(?:[\"])/i, /^(?:[\"])/i, /^(?:[^\"]*)/i, /^(?:[\\w][^\\r\\n\\{\\<\\>\\-\\=]*)/i],\n conditions: { \"acc_descr_multiline\": { \"rules\": [6, 7], \"inclusive\": false }, \"acc_descr\": { \"rules\": [4], \"inclusive\": false }, \"acc_title\": { \"rules\": [2], \"inclusive\": false }, \"unqString\": { \"rules\": [], \"inclusive\": false }, \"token\": { \"rules\": [], \"inclusive\": false }, \"string\": { \"rules\": [48, 49], \"inclusive\": false }, \"INITIAL\": { \"rules\": [0, 1, 3, 5, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 50], \"inclusive\": true } }\n };\n return lexer2;\n }();\n parser2.lexer = lexer;\n function Parser() {\n this.yy = {};\n }\n Parser.prototype = parser2;\n parser2.Parser = Parser;\n return new Parser();\n}();\nparser.parser = parser;\nconst parser$1 = parser;\nlet relations = [];\nlet latestRequirement = {};\nlet requirements = {};\nlet latestElement = {};\nlet elements = {};\nconst RequirementType = {\n REQUIREMENT: \"Requirement\",\n FUNCTIONAL_REQUIREMENT: \"Functional Requirement\",\n INTERFACE_REQUIREMENT: \"Interface Requirement\",\n PERFORMANCE_REQUIREMENT: \"Performance Requirement\",\n PHYSICAL_REQUIREMENT: \"Physical Requirement\",\n DESIGN_CONSTRAINT: \"Design Constraint\"\n};\nconst RiskLevel = {\n LOW_RISK: \"Low\",\n MED_RISK: \"Medium\",\n HIGH_RISK: \"High\"\n};\nconst VerifyType = {\n VERIFY_ANALYSIS: \"Analysis\",\n VERIFY_DEMONSTRATION: \"Demonstration\",\n VERIFY_INSPECTION: \"Inspection\",\n VERIFY_TEST: \"Test\"\n};\nconst Relationships = {\n CONTAINS: \"contains\",\n COPIES: \"copies\",\n DERIVES: \"derives\",\n SATISFIES: \"satisfies\",\n VERIFIES: \"verifies\",\n REFINES: \"refines\",\n TRACES: \"traces\"\n};\nconst addRequirement = (name, type) => {\n if (requirements[name] === void 0) {\n requirements[name] = {\n name,\n type,\n id: latestRequirement.id,\n text: latestRequirement.text,\n risk: latestRequirement.risk,\n verifyMethod: latestRequirement.verifyMethod\n };\n }\n latestRequirement = {};\n return requirements[name];\n};\nconst getRequirements = () => requirements;\nconst setNewReqId = (id) => {\n if (latestRequirement !== void 0) {\n latestRequirement.id = id;\n }\n};\nconst setNewReqText = (text) => {\n if (latestRequirement !== void 0) {\n latestRequirement.text = text;\n }\n};\nconst setNewReqRisk = (risk) => {\n if (latestRequirement !== void 0) {\n latestRequirement.risk = risk;\n }\n};\nconst setNewReqVerifyMethod = (verifyMethod) => {\n if (latestRequirement !== void 0) {\n latestRequirement.verifyMethod = verifyMethod;\n }\n};\nconst addElement = (name) => {\n if (elements[name] === void 0) {\n elements[name] = {\n name,\n type: latestElement.type,\n docRef: latestElement.docRef\n };\n log.info(\"Added new requirement: \", name);\n }\n latestElement = {};\n return elements[name];\n};\nconst getElements = () => elements;\nconst setNewElementType = (type) => {\n if (latestElement !== void 0) {\n latestElement.type = type;\n }\n};\nconst setNewElementDocRef = (docRef) => {\n if (latestElement !== void 0) {\n latestElement.docRef = docRef;\n }\n};\nconst addRelationship = (type, src, dst) => {\n relations.push({\n type,\n src,\n dst\n });\n};\nconst getRelationships = () => relations;\nconst clear = () => {\n relations = [];\n latestRequirement = {};\n requirements = {};\n latestElement = {};\n elements = {};\n clear$1();\n};\nconst db = {\n RequirementType,\n RiskLevel,\n VerifyType,\n Relationships,\n getConfig: () => getConfig().req,\n addRequirement,\n getRequirements,\n setNewReqId,\n setNewReqText,\n setNewReqRisk,\n setNewReqVerifyMethod,\n setAccTitle,\n getAccTitle,\n setAccDescription,\n getAccDescription,\n addElement,\n getElements,\n setNewElementType,\n setNewElementDocRef,\n addRelationship,\n getRelationships,\n clear\n};\nconst getStyles = (options) => `\n\n marker {\n fill: ${options.relationColor};\n stroke: ${options.relationColor};\n }\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 .reqBox {\n fill: ${options.requirementBackground};\n fill-opacity: 1.0;\n stroke: ${options.requirementBorderColor};\n stroke-width: ${options.requirementBorderSize};\n }\n \n .reqTitle, .reqLabel{\n fill: ${options.requirementTextColor};\n }\n .reqLabelBox {\n fill: ${options.relationLabelBackground};\n fill-opacity: 1.0;\n }\n\n .req-title-line {\n stroke: ${options.requirementBorderColor};\n stroke-width: ${options.requirementBorderSize};\n }\n .relationshipLine {\n stroke: ${options.relationColor};\n stroke-width: 1;\n }\n .relationshipLabel {\n fill: ${options.relationLabelColor};\n }\n\n`;\nconst styles = getStyles;\nconst ReqMarkers = {\n CONTAINS: \"contains\",\n ARROW: \"arrow\"\n};\nconst insertLineEndings = (parentNode, conf2) => {\n let containsNode = parentNode.append(\"defs\").append(\"marker\").attr(\"id\", ReqMarkers.CONTAINS + \"_line_ending\").attr(\"refX\", 0).attr(\"refY\", conf2.line_height / 2).attr(\"markerWidth\", conf2.line_height).attr(\"markerHeight\", conf2.line_height).attr(\"orient\", \"auto\").append(\"g\");\n containsNode.append(\"circle\").attr(\"cx\", conf2.line_height / 2).attr(\"cy\", conf2.line_height / 2).attr(\"r\", conf2.line_height / 2).attr(\"fill\", \"none\");\n containsNode.append(\"line\").attr(\"x1\", 0).attr(\"x2\", conf2.line_height).attr(\"y1\", conf2.line_height / 2).attr(\"y2\", conf2.line_height / 2).attr(\"stroke-width\", 1);\n containsNode.append(\"line\").attr(\"y1\", 0).attr(\"y2\", conf2.line_height).attr(\"x1\", conf2.line_height / 2).attr(\"x2\", conf2.line_height / 2).attr(\"stroke-width\", 1);\n parentNode.append(\"defs\").append(\"marker\").attr(\"id\", ReqMarkers.ARROW + \"_line_ending\").attr(\"refX\", conf2.line_height).attr(\"refY\", 0.5 * conf2.line_height).attr(\"markerWidth\", conf2.line_height).attr(\"markerHeight\", conf2.line_height).attr(\"orient\", \"auto\").append(\"path\").attr(\n \"d\",\n `M0,0\n L${conf2.line_height},${conf2.line_height / 2}\n M${conf2.line_height},${conf2.line_height / 2}\n L0,${conf2.line_height}`\n ).attr(\"stroke-width\", 1);\n};\nconst markers = {\n ReqMarkers,\n insertLineEndings\n};\nlet conf = {};\nlet relCnt = 0;\nconst newRectNode = (parentNode, id) => {\n return parentNode.insert(\"rect\", \"#\" + id).attr(\"class\", \"req reqBox\").attr(\"x\", 0).attr(\"y\", 0).attr(\"width\", conf.rect_min_width + \"px\").attr(\"height\", conf.rect_min_height + \"px\");\n};\nconst newTitleNode = (parentNode, id, txts) => {\n let x = conf.rect_min_width / 2;\n let title = parentNode.append(\"text\").attr(\"class\", \"req reqLabel reqTitle\").attr(\"id\", id).attr(\"x\", x).attr(\"y\", conf.rect_padding).attr(\"dominant-baseline\", \"hanging\");\n let i = 0;\n txts.forEach((textStr) => {\n if (i == 0) {\n title.append(\"tspan\").attr(\"text-anchor\", \"middle\").attr(\"x\", conf.rect_min_width / 2).attr(\"dy\", 0).text(textStr);\n } else {\n title.append(\"tspan\").attr(\"text-anchor\", \"middle\").attr(\"x\", conf.rect_min_width / 2).attr(\"dy\", conf.line_height * 0.75).text(textStr);\n }\n i++;\n });\n let yPadding = 1.5 * conf.rect_padding;\n let linePadding = i * conf.line_height * 0.75;\n let totalY = yPadding + linePadding;\n parentNode.append(\"line\").attr(\"class\", \"req-title-line\").attr(\"x1\", \"0\").attr(\"x2\", conf.rect_min_width).attr(\"y1\", totalY).attr(\"y2\", totalY);\n return {\n titleNode: title,\n y: totalY\n };\n};\nconst newBodyNode = (parentNode, id, txts, yStart) => {\n let body = parentNode.append(\"text\").attr(\"class\", \"req reqLabel\").attr(\"id\", id).attr(\"x\", conf.rect_padding).attr(\"y\", yStart).attr(\"dominant-baseline\", \"hanging\");\n let currentRow = 0;\n const charLimit = 30;\n let wrappedTxts = [];\n txts.forEach((textStr) => {\n let currentTextLen = textStr.length;\n while (currentTextLen > charLimit && currentRow < 3) {\n let firstPart = textStr.substring(0, charLimit);\n textStr = textStr.substring(charLimit, textStr.length);\n currentTextLen = textStr.length;\n wrappedTxts[wrappedTxts.length] = firstPart;\n currentRow++;\n }\n if (currentRow == 3) {\n let lastStr = wrappedTxts[wrappedTxts.length - 1];\n wrappedTxts[wrappedTxts.length - 1] = lastStr.substring(0, lastStr.length - 4) + \"...\";\n } else {\n wrappedTxts[wrappedTxts.length] = textStr;\n }\n currentRow = 0;\n });\n wrappedTxts.forEach((textStr) => {\n body.append(\"tspan\").attr(\"x\", conf.rect_padding).attr(\"dy\", conf.line_height).text(textStr);\n });\n return body;\n};\nconst addEdgeLabel = (parentNode, svgPath, conf2, txt) => {\n const len = svgPath.node().getTotalLength();\n const labelPoint = svgPath.node().getPointAtLength(len * 0.5);\n const labelId = \"rel\" + relCnt;\n relCnt++;\n const labelNode = parentNode.append(\"text\").attr(\"class\", \"req relationshipLabel\").attr(\"id\", labelId).attr(\"x\", labelPoint.x).attr(\"y\", labelPoint.y).attr(\"text-anchor\", \"middle\").attr(\"dominant-baseline\", \"middle\").text(txt);\n const labelBBox = labelNode.node().getBBox();\n parentNode.insert(\"rect\", \"#\" + labelId).attr(\"class\", \"req reqLabelBox\").attr(\"x\", labelPoint.x - labelBBox.width / 2).attr(\"y\", labelPoint.y - labelBBox.height / 2).attr(\"width\", labelBBox.width).attr(\"height\", labelBBox.height).attr(\"fill\", \"white\").attr(\"fill-opacity\", \"85%\");\n};\nconst drawRelationshipFromLayout = function(svg, rel, g, insert, diagObj) {\n const edge = g.edge(elementString(rel.src), elementString(rel.dst));\n const lineFunction = line().x(function(d) {\n return d.x;\n }).y(function(d) {\n return d.y;\n });\n const svgPath = svg.insert(\"path\", \"#\" + insert).attr(\"class\", \"er relationshipLine\").attr(\"d\", lineFunction(edge.points)).attr(\"fill\", \"none\");\n if (rel.type == diagObj.db.Relationships.CONTAINS) {\n svgPath.attr(\n \"marker-start\",\n \"url(\" + common.getUrl(conf.arrowMarkerAbsolute) + \"#\" + rel.type + \"_line_ending)\"\n );\n } else {\n svgPath.attr(\"stroke-dasharray\", \"10,7\");\n svgPath.attr(\n \"marker-end\",\n \"url(\" + common.getUrl(conf.arrowMarkerAbsolute) + \"#\" + markers.ReqMarkers.ARROW + \"_line_ending)\"\n );\n }\n addEdgeLabel(svg, svgPath, conf, `<<${rel.type}>>`);\n return;\n};\nconst drawReqs = (reqs, graph, svgNode) => {\n Object.keys(reqs).forEach((reqName) => {\n let req = reqs[reqName];\n reqName = elementString(reqName);\n log.info(\"Added new requirement: \", reqName);\n const groupNode = svgNode.append(\"g\").attr(\"id\", reqName);\n const textId = \"req-\" + reqName;\n const rectNode = newRectNode(groupNode, textId);\n let titleNodeInfo = newTitleNode(groupNode, reqName + \"_title\", [\n `<<${req.type}>>`,\n `${req.name}`\n ]);\n newBodyNode(\n groupNode,\n reqName + \"_body\",\n [\n `Id: ${req.id}`,\n `Text: ${req.text}`,\n `Risk: ${req.risk}`,\n `Verification: ${req.verifyMethod}`\n ],\n titleNodeInfo.y\n );\n const rectBBox = rectNode.node().getBBox();\n graph.setNode(reqName, {\n width: rectBBox.width,\n height: rectBBox.height,\n shape: \"rect\",\n id: reqName\n });\n });\n};\nconst drawElements = (els, graph, svgNode) => {\n Object.keys(els).forEach((elName) => {\n let el = els[elName];\n const id = elementString(elName);\n const groupNode = svgNode.append(\"g\").attr(\"id\", id);\n const textId = \"element-\" + id;\n const rectNode = newRectNode(groupNode, textId);\n let titleNodeInfo = newTitleNode(groupNode, textId + \"_title\", [`<<Element>>`, `${elName}`]);\n newBodyNode(\n groupNode,\n textId + \"_body\",\n [`Type: ${el.type || \"Not Specified\"}`, `Doc Ref: ${el.docRef || \"None\"}`],\n titleNodeInfo.y\n );\n const rectBBox = rectNode.node().getBBox();\n graph.setNode(id, {\n width: rectBBox.width,\n height: rectBBox.height,\n shape: \"rect\",\n id\n });\n });\n};\nconst addRelationships = (relationships, g) => {\n relationships.forEach(function(r) {\n let src = elementString(r.src);\n let dst = elementString(r.dst);\n g.setEdge(src, dst, { relationship: r });\n });\n return relationships;\n};\nconst adjustEntities = function(svgNode, graph) {\n graph.nodes().forEach(function(v) {\n if (v !== void 0 && graph.node(v) !== void 0) {\n svgNode.select(\"#\" + v);\n svgNode.select(\"#\" + v).attr(\n \"transform\",\n \"translate(\" + (graph.node(v).x - graph.node(v).width / 2) + \",\" + (graph.node(v).y - graph.node(v).height / 2) + \" )\"\n );\n }\n });\n return;\n};\nconst elementString = (str) => {\n return str.replace(/\\s/g, \"\").replace(/\\./g, \"_\");\n};\nconst draw = (text, id, _version, diagObj) => {\n conf = getConfig().requirement;\n const securityLevel = conf.securityLevel;\n let sandboxElement;\n if (securityLevel === \"sandbox\") {\n sandboxElement = select(\"#i\" + id);\n }\n const root = securityLevel === \"sandbox\" ? select(sandboxElement.nodes()[0].contentDocument.body) : select(\"body\");\n const svg = root.select(`[id='${id}']`);\n markers.insertLineEndings(svg, conf);\n const g = new graphlib.Graph({\n multigraph: false,\n compound: false,\n directed: true\n }).setGraph({\n rankdir: conf.layoutDirection,\n marginx: 20,\n marginy: 20,\n nodesep: 100,\n edgesep: 100,\n ranksep: 100\n }).setDefaultEdgeLabel(function() {\n return {};\n });\n let requirements2 = diagObj.db.getRequirements();\n let elements2 = diagObj.db.getElements();\n let relationships = diagObj.db.getRelationships();\n drawReqs(requirements2, g, svg);\n drawElements(elements2, g, svg);\n addRelationships(relationships, g);\n layout(g);\n adjustEntities(svg, g);\n relationships.forEach(function(rel) {\n drawRelationshipFromLayout(svg, rel, g, id, diagObj);\n });\n const padding = conf.rect_padding;\n const svgBounds = svg.node().getBBox();\n const width = svgBounds.width + padding * 2;\n const height = svgBounds.height + padding * 2;\n configureSvgSize(svg, height, width, conf.useMaxWidth);\n svg.attr(\"viewBox\", `${svgBounds.x - padding} ${svgBounds.y - padding} ${width} ${height}`);\n};\nconst renderer = {\n draw\n};\nconst diagram = {\n parser: parser$1,\n db,\n renderer,\n styles\n};\nexport {\n diagram\n};\n","import { c as getConfig, g as getAccTitle, s as setAccTitle, a as getAccDescription, b as setAccDescription, t as getDiagramTitle, q as setDiagramTitle, v as clear$1, e as common, K as defaultConfig, o as setupGraphViewbox } from \"./mermaid-f47111a7.js\";\nimport { select, scaleOrdinal, schemeTableau10 } from \"d3\";\nimport { sankey, sankeyLinkHorizontal, sankeyLeft, sankeyRight, sankeyCenter, sankeyJustify } from \"d3-sankey\";\nimport \"ts-dedent\";\nimport \"dayjs\";\nimport \"@braintree/sanitize-url\";\nimport \"dompurify\";\nimport \"khroma\";\nimport \"lodash-es/memoize.js\";\nimport \"lodash-es/merge.js\";\nimport \"stylis\";\nimport \"lodash-es/isEmpty.js\";\nvar parser = function() {\n var o = function(k, v, o2, l) {\n for (o2 = o2 || {}, l = k.length; l--; o2[k[l]] = v)\n ;\n return o2;\n }, $V0 = [1, 9], $V1 = [1, 10], $V2 = [1, 5, 10, 12];\n var parser2 = {\n trace: function trace() {\n },\n yy: {},\n symbols_: { \"error\": 2, \"start\": 3, \"SANKEY\": 4, \"NEWLINE\": 5, \"csv\": 6, \"opt_eof\": 7, \"record\": 8, \"csv_tail\": 9, \"EOF\": 10, \"field[source]\": 11, \"COMMA\": 12, \"field[target]\": 13, \"field[value]\": 14, \"field\": 15, \"escaped\": 16, \"non_escaped\": 17, \"DQUOTE\": 18, \"ESCAPED_TEXT\": 19, \"NON_ESCAPED_TEXT\": 20, \"$accept\": 0, \"$end\": 1 },\n terminals_: { 2: \"error\", 4: \"SANKEY\", 5: \"NEWLINE\", 10: \"EOF\", 11: \"field[source]\", 12: \"COMMA\", 13: \"field[target]\", 14: \"field[value]\", 18: \"DQUOTE\", 19: \"ESCAPED_TEXT\", 20: \"NON_ESCAPED_TEXT\" },\n productions_: [0, [3, 4], [6, 2], [9, 2], [9, 0], [7, 1], [7, 0], [8, 5], [15, 1], [15, 1], [16, 3], [17, 1]],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) {\n var $0 = $$.length - 1;\n switch (yystate) {\n case 7:\n const source = yy.findOrCreateNode($$[$0 - 4].trim().replaceAll('\"\"', '\"'));\n const target = yy.findOrCreateNode($$[$0 - 2].trim().replaceAll('\"\"', '\"'));\n const value = parseFloat($$[$0].trim());\n yy.addLink(source, target, value);\n break;\n case 8:\n case 9:\n case 11:\n this.$ = $$[$0];\n break;\n case 10:\n this.$ = $$[$0 - 1];\n break;\n }\n },\n table: [{ 3: 1, 4: [1, 2] }, { 1: [3] }, { 5: [1, 3] }, { 6: 4, 8: 5, 15: 6, 16: 7, 17: 8, 18: $V0, 20: $V1 }, { 1: [2, 6], 7: 11, 10: [1, 12] }, o($V1, [2, 4], { 9: 13, 5: [1, 14] }), { 12: [1, 15] }, o($V2, [2, 8]), o($V2, [2, 9]), { 19: [1, 16] }, o($V2, [2, 11]), { 1: [2, 1] }, { 1: [2, 5] }, o($V1, [2, 2]), { 6: 17, 8: 5, 15: 6, 16: 7, 17: 8, 18: $V0, 20: $V1 }, { 15: 18, 16: 7, 17: 8, 18: $V0, 20: $V1 }, { 18: [1, 19] }, o($V1, [2, 3]), { 12: [1, 20] }, o($V2, [2, 10]), { 15: 21, 16: 7, 17: 8, 18: $V0, 20: $V1 }, o([1, 5, 10], [2, 7])],\n defaultActions: { 11: [2, 1], 12: [2, 5] },\n parseError: 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 },\n parse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = \"\", yylineno = 0, yyleng = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer2 = 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 lexer2.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer2;\n sharedState.yy.parser = this;\n if (typeof lexer2.yylloc == \"undefined\") {\n lexer2.yylloc = {};\n }\n var yyloc = lexer2.yylloc;\n lstack.push(yyloc);\n var ranges = lexer2.options && lexer2.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 lex() {\n var token;\n token = tstack.pop() || lexer2.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, state, action, 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 (lexer2.showPosition) {\n errStr = \"Parse error on line \" + (yylineno + 1) + \":\\n\" + lexer2.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: lexer2.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer2.yylineno,\n loc: yyloc,\n 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(lexer2.yytext);\n lstack.push(lexer2.yylloc);\n stack.push(action[1]);\n symbol = null;\n {\n yyleng = lexer2.yyleng;\n yytext = lexer2.yytext;\n yylineno = lexer2.yylineno;\n yyloc = lexer2.yylloc;\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 var lexer = function() {\n var lexer2 = {\n EOF: 1,\n parseError: 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 // resets the lexer, sets new input\n setInput: 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 // consumes and returns one char from the input\n input: 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 this._input = this._input.slice(1);\n return ch;\n },\n // unshifts one char (or a string) into the input\n unput: function(ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - 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 if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\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 ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len\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 // When called from action, caches matched text and appends it on next action\n more: function() {\n this._more = true;\n return this;\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.\n reject: 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 return this;\n },\n // retain first n characters of the match\n less: function(n) {\n this.unput(this.match.slice(n));\n },\n // displays already matched input, i.e. for error messages\n pastInput: 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 // displays upcoming input, i.e. for error messages\n upcomingInput: 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 // displays the character position where the lexing error occurred, i.e. for error messages\n showPosition: function() {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n // test the lexed token: return FALSE when not a match, otherwise return token\n test_match: function(match, indexed_rule) {\n var token, lines, backup;\n if (this.options.backtrack_lexer) {\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 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 ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length : 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 for (var k in backup) {\n this[k] = backup[k];\n }\n return false;\n }\n return false;\n },\n // return next match in input\n next: function() {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n var token, match, tempMatch, 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;\n } else {\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 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 // return next match that has a token\n lex: function lex() {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\n begin: function begin(condition) {\n this.conditionStack.push(condition);\n },\n // pop the previously active lexer condition state off the condition stack\n popState: 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 // 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 // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\n topState: 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 // alias for begin(condition)\n pushState: function pushState(condition) {\n this.begin(condition);\n },\n // return the number of states currently on the stack\n stateStackSize: function stateStackSize() {\n return this.conditionStack.length;\n },\n options: { \"case-insensitive\": true },\n performAction: function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) {\n switch ($avoiding_name_collisions) {\n case 0:\n this.pushState(\"csv\");\n return 4;\n case 1:\n return 10;\n case 2:\n return 5;\n case 3:\n return 12;\n case 4:\n this.pushState(\"escaped_text\");\n return 18;\n case 5:\n return 20;\n case 6:\n this.popState(\"escaped_text\");\n return 18;\n case 7:\n return 19;\n }\n },\n rules: [/^(?:sankey-beta\\b)/i, /^(?:$)/i, /^(?:((\\u000D\\u000A)|(\\u000A)))/i, /^(?:(\\u002C))/i, /^(?:(\\u0022))/i, /^(?:([\\u0020-\\u0021\\u0023-\\u002B\\u002D-\\u007E])*)/i, /^(?:(\\u0022)(?!(\\u0022)))/i, /^(?:(([\\u0020-\\u0021\\u0023-\\u002B\\u002D-\\u007E])|(\\u002C)|(\\u000D)|(\\u000A)|(\\u0022)(\\u0022))*)/i],\n conditions: { \"csv\": { \"rules\": [1, 2, 3, 4, 5, 6, 7], \"inclusive\": false }, \"escaped_text\": { \"rules\": [6, 7], \"inclusive\": false }, \"INITIAL\": { \"rules\": [0, 1, 2, 3, 4, 5, 6, 7], \"inclusive\": true } }\n };\n return lexer2;\n }();\n parser2.lexer = lexer;\n function Parser() {\n this.yy = {};\n }\n Parser.prototype = parser2;\n parser2.Parser = Parser;\n return new Parser();\n}();\nparser.parser = parser;\nconst parser$1 = parser;\nlet links = [];\nlet nodes = [];\nlet nodesMap = {};\nconst clear = () => {\n links = [];\n nodes = [];\n nodesMap = {};\n clear$1();\n};\nclass SankeyLink {\n constructor(source, target, value = 0) {\n this.source = source;\n this.target = target;\n this.value = value;\n }\n}\nconst addLink = (source, target, value) => {\n links.push(new SankeyLink(source, target, value));\n};\nclass SankeyNode {\n constructor(ID) {\n this.ID = ID;\n }\n}\nconst findOrCreateNode = (ID) => {\n ID = common.sanitizeText(ID, getConfig());\n if (!nodesMap[ID]) {\n nodesMap[ID] = new SankeyNode(ID);\n nodes.push(nodesMap[ID]);\n }\n return nodesMap[ID];\n};\nconst getNodes = () => nodes;\nconst getLinks = () => links;\nconst getGraph = () => ({\n nodes: nodes.map((node) => ({ id: node.ID })),\n links: links.map((link) => ({\n source: link.source.ID,\n target: link.target.ID,\n value: link.value\n }))\n});\nconst db = {\n nodesMap,\n getConfig: () => getConfig().sankey,\n getNodes,\n getLinks,\n getGraph,\n addLink,\n findOrCreateNode,\n getAccTitle,\n setAccTitle,\n getAccDescription,\n setAccDescription,\n getDiagramTitle,\n setDiagramTitle,\n clear\n};\nconst _Uid = class _Uid2 {\n static next(name) {\n return new _Uid2(name + ++_Uid2.count);\n }\n constructor(id) {\n this.id = id;\n this.href = `#${id}`;\n }\n toString() {\n return \"url(\" + this.href + \")\";\n }\n};\n_Uid.count = 0;\nlet Uid = _Uid;\nconst alignmentsMap = {\n left: sankeyLeft,\n right: sankeyRight,\n center: sankeyCenter,\n justify: sankeyJustify\n};\nconst draw = function(text, id, _version, diagObj) {\n const { securityLevel, sankey: conf } = getConfig();\n const defaultSankeyConfig = defaultConfig.sankey;\n let sandboxElement;\n if (securityLevel === \"sandbox\") {\n sandboxElement = select(\"#i\" + id);\n }\n const root = securityLevel === \"sandbox\" ? select(sandboxElement.nodes()[0].contentDocument.body) : select(\"body\");\n const svg = securityLevel === \"sandbox\" ? root.select(`[id=\"${id}\"]`) : select(`[id=\"${id}\"]`);\n const width = (conf == null ? void 0 : conf.width) ?? defaultSankeyConfig.width;\n const height = (conf == null ? void 0 : conf.height) ?? defaultSankeyConfig.width;\n const useMaxWidth = (conf == null ? void 0 : conf.useMaxWidth) ?? defaultSankeyConfig.useMaxWidth;\n const nodeAlignment = (conf == null ? void 0 : conf.nodeAlignment) ?? defaultSankeyConfig.nodeAlignment;\n const prefix = (conf == null ? void 0 : conf.prefix) ?? defaultSankeyConfig.prefix;\n const suffix = (conf == null ? void 0 : conf.suffix) ?? defaultSankeyConfig.suffix;\n const showValues = (conf == null ? void 0 : conf.showValues) ?? defaultSankeyConfig.showValues;\n const graph = diagObj.db.getGraph();\n const nodeAlign = alignmentsMap[nodeAlignment];\n const nodeWidth = 10;\n const sankey$1 = sankey().nodeId((d) => d.id).nodeWidth(nodeWidth).nodePadding(10 + (showValues ? 15 : 0)).nodeAlign(nodeAlign).extent([\n [0, 0],\n [width, height]\n ]);\n sankey$1(graph);\n const colorScheme = scaleOrdinal(schemeTableau10);\n svg.append(\"g\").attr(\"class\", \"nodes\").selectAll(\".node\").data(graph.nodes).join(\"g\").attr(\"class\", \"node\").attr(\"id\", (d) => (d.uid = Uid.next(\"node-\")).id).attr(\"transform\", function(d) {\n return \"translate(\" + d.x0 + \",\" + d.y0 + \")\";\n }).attr(\"x\", (d) => d.x0).attr(\"y\", (d) => d.y0).append(\"rect\").attr(\"height\", (d) => {\n return d.y1 - d.y0;\n }).attr(\"width\", (d) => d.x1 - d.x0).attr(\"fill\", (d) => colorScheme(d.id));\n const getText = ({ id: id2, value }) => {\n if (!showValues) {\n return id2;\n }\n return `${id2}\n${prefix}${Math.round(value * 100) / 100}${suffix}`;\n };\n svg.append(\"g\").attr(\"class\", \"node-labels\").attr(\"font-family\", \"sans-serif\").attr(\"font-size\", 14).selectAll(\"text\").data(graph.nodes).join(\"text\").attr(\"x\", (d) => d.x0 < width / 2 ? d.x1 + 6 : d.x0 - 6).attr(\"y\", (d) => (d.y1 + d.y0) / 2).attr(\"dy\", `${showValues ? \"0\" : \"0.35\"}em`).attr(\"text-anchor\", (d) => d.x0 < width / 2 ? \"start\" : \"end\").text(getText);\n const link = svg.append(\"g\").attr(\"class\", \"links\").attr(\"fill\", \"none\").attr(\"stroke-opacity\", 0.5).selectAll(\".link\").data(graph.links).join(\"g\").attr(\"class\", \"link\").style(\"mix-blend-mode\", \"multiply\");\n const linkColor = (conf == null ? void 0 : conf.linkColor) || \"gradient\";\n if (linkColor === \"gradient\") {\n const gradient = link.append(\"linearGradient\").attr(\"id\", (d) => (d.uid = Uid.next(\"linearGradient-\")).id).attr(\"gradientUnits\", \"userSpaceOnUse\").attr(\"x1\", (d) => d.source.x1).attr(\"x2\", (d) => d.target.x0);\n gradient.append(\"stop\").attr(\"offset\", \"0%\").attr(\"stop-color\", (d) => colorScheme(d.source.id));\n gradient.append(\"stop\").attr(\"offset\", \"100%\").attr(\"stop-color\", (d) => colorScheme(d.target.id));\n }\n let coloring;\n switch (linkColor) {\n case \"gradient\":\n coloring = (d) => d.uid;\n break;\n case \"source\":\n coloring = (d) => colorScheme(d.source.id);\n break;\n case \"target\":\n coloring = (d) => colorScheme(d.target.id);\n break;\n default:\n coloring = linkColor;\n }\n link.append(\"path\").attr(\"d\", sankeyLinkHorizontal()).attr(\"stroke\", coloring).attr(\"stroke-width\", (d) => Math.max(1, d.width));\n setupGraphViewbox(void 0, svg, 0, useMaxWidth);\n};\nconst renderer = {\n draw\n};\nconst prepareTextForParsing = (text) => {\n const textToParse = text.replaceAll(/^[^\\S\\n\\r]+|[^\\S\\n\\r]+$/g, \"\").replaceAll(/([\\n\\r])+/g, \"\\n\").trim();\n return textToParse;\n};\nconst originalParse = parser$1.parse.bind(parser$1);\nparser$1.parse = (text) => originalParse(prepareTextForParsing(text));\nconst diagram = {\n parser: parser$1,\n db,\n renderer\n};\nexport {\n diagram\n};\n","import { g as getAccTitle, t as getDiagramTitle, q as setDiagramTitle, c as getConfig, s as setAccTitle, b as setAccDescription, a as getAccDescription, v as clear$1, l as log, d as sanitizeText, e as common, D as parseFontSize, G as hasKatex, r as renderKatex, F as getConfig$1, Z as ZERO_WIDTH_SPACE, H as calculateMathMLDimensions, f as assignWithDepth, i as configureSvgSize, u as utils } from \"./mermaid-f47111a7.js\";\nimport { select } from \"d3\";\nimport { d as drawRect$1, a as drawBackgroundRect$1, b as drawEmbeddedImage, c as drawImage, e as getTextObj$1, g as getNoteRect$1 } from \"./svgDrawCommon-5ccd53ef.js\";\nimport { sanitizeUrl } from \"@braintree/sanitize-url\";\nimport \"ts-dedent\";\nimport \"dayjs\";\nimport \"dompurify\";\nimport \"khroma\";\nimport \"lodash-es/memoize.js\";\nimport \"lodash-es/merge.js\";\nimport \"stylis\";\nimport \"lodash-es/isEmpty.js\";\nvar parser = function() {\n var o = function(k, v, o2, l) {\n for (o2 = o2 || {}, l = k.length; l--; o2[k[l]] = v)\n ;\n return o2;\n }, $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, 16], $V9 = [1, 17], $Va = [1, 18], $Vb = [1, 24], $Vc = [1, 25], $Vd = [1, 26], $Ve = [1, 27], $Vf = [1, 28], $Vg = [1, 29], $Vh = [1, 30], $Vi = [1, 31], $Vj = [1, 32], $Vk = [1, 33], $Vl = [1, 34], $Vm = [1, 35], $Vn = [1, 36], $Vo = [1, 37], $Vp = [1, 38], $Vq = [1, 39], $Vr = [1, 41], $Vs = [1, 42], $Vt = [1, 43], $Vu = [1, 44], $Vv = [1, 45], $Vw = [1, 46], $Vx = [1, 4, 5, 13, 14, 16, 18, 21, 23, 29, 30, 31, 33, 35, 36, 37, 38, 39, 41, 43, 44, 46, 47, 48, 49, 50, 52, 53, 54, 59, 60, 61, 62, 70], $Vy = [4, 5, 16, 50, 52, 53], $Vz = [4, 5, 13, 14, 16, 18, 21, 23, 29, 30, 31, 33, 35, 36, 37, 38, 39, 41, 43, 44, 46, 50, 52, 53, 54, 59, 60, 61, 62, 70], $VA = [4, 5, 13, 14, 16, 18, 21, 23, 29, 30, 31, 33, 35, 36, 37, 38, 39, 41, 43, 44, 46, 49, 50, 52, 53, 54, 59, 60, 61, 62, 70], $VB = [4, 5, 13, 14, 16, 18, 21, 23, 29, 30, 31, 33, 35, 36, 37, 38, 39, 41, 43, 44, 46, 48, 50, 52, 53, 54, 59, 60, 61, 62, 70], $VC = [4, 5, 13, 14, 16, 18, 21, 23, 29, 30, 31, 33, 35, 36, 37, 38, 39, 41, 43, 44, 46, 47, 50, 52, 53, 54, 59, 60, 61, 62, 70], $VD = [68, 69, 70], $VE = [1, 120];\n var parser2 = {\n trace: function trace() {\n },\n yy: {},\n symbols_: { \"error\": 2, \"start\": 3, \"SPACE\": 4, \"NEWLINE\": 5, \"SD\": 6, \"document\": 7, \"line\": 8, \"statement\": 9, \"box_section\": 10, \"box_line\": 11, \"participant_statement\": 12, \"create\": 13, \"box\": 14, \"restOfLine\": 15, \"end\": 16, \"signal\": 17, \"autonumber\": 18, \"NUM\": 19, \"off\": 20, \"activate\": 21, \"actor\": 22, \"deactivate\": 23, \"note_statement\": 24, \"links_statement\": 25, \"link_statement\": 26, \"properties_statement\": 27, \"details_statement\": 28, \"title\": 29, \"legacy_title\": 30, \"acc_title\": 31, \"acc_title_value\": 32, \"acc_descr\": 33, \"acc_descr_value\": 34, \"acc_descr_multiline_value\": 35, \"loop\": 36, \"rect\": 37, \"opt\": 38, \"alt\": 39, \"else_sections\": 40, \"par\": 41, \"par_sections\": 42, \"par_over\": 43, \"critical\": 44, \"option_sections\": 45, \"break\": 46, \"option\": 47, \"and\": 48, \"else\": 49, \"participant\": 50, \"AS\": 51, \"participant_actor\": 52, \"destroy\": 53, \"note\": 54, \"placement\": 55, \"text2\": 56, \"over\": 57, \"actor_pair\": 58, \"links\": 59, \"link\": 60, \"properties\": 61, \"details\": 62, \"spaceList\": 63, \",\": 64, \"left_of\": 65, \"right_of\": 66, \"signaltype\": 67, \"+\": 68, \"-\": 69, \"ACTOR\": 70, \"SOLID_OPEN_ARROW\": 71, \"DOTTED_OPEN_ARROW\": 72, \"SOLID_ARROW\": 73, \"DOTTED_ARROW\": 74, \"SOLID_CROSS\": 75, \"DOTTED_CROSS\": 76, \"SOLID_POINT\": 77, \"DOTTED_POINT\": 78, \"TXT\": 79, \"$accept\": 0, \"$end\": 1 },\n terminals_: { 2: \"error\", 4: \"SPACE\", 5: \"NEWLINE\", 6: \"SD\", 13: \"create\", 14: \"box\", 15: \"restOfLine\", 16: \"end\", 18: \"autonumber\", 19: \"NUM\", 20: \"off\", 21: \"activate\", 23: \"deactivate\", 29: \"title\", 30: \"legacy_title\", 31: \"acc_title\", 32: \"acc_title_value\", 33: \"acc_descr\", 34: \"acc_descr_value\", 35: \"acc_descr_multiline_value\", 36: \"loop\", 37: \"rect\", 38: \"opt\", 39: \"alt\", 41: \"par\", 43: \"par_over\", 44: \"critical\", 46: \"break\", 47: \"option\", 48: \"and\", 49: \"else\", 50: \"participant\", 51: \"AS\", 52: \"participant_actor\", 53: \"destroy\", 54: \"note\", 57: \"over\", 59: \"links\", 60: \"link\", 61: \"properties\", 62: \"details\", 64: \",\", 65: \"left_of\", 66: \"right_of\", 68: \"+\", 69: \"-\", 70: \"ACTOR\", 71: \"SOLID_OPEN_ARROW\", 72: \"DOTTED_OPEN_ARROW\", 73: \"SOLID_ARROW\", 74: \"DOTTED_ARROW\", 75: \"SOLID_CROSS\", 76: \"DOTTED_CROSS\", 77: \"SOLID_POINT\", 78: \"DOTTED_POINT\", 79: \"TXT\" },\n productions_: [0, [3, 2], [3, 2], [3, 2], [7, 0], [7, 2], [8, 2], [8, 1], [8, 1], [10, 0], [10, 2], [11, 2], [11, 1], [11, 1], [9, 1], [9, 2], [9, 4], [9, 2], [9, 4], [9, 3], [9, 3], [9, 2], [9, 3], [9, 3], [9, 2], [9, 2], [9, 2], [9, 2], [9, 2], [9, 1], [9, 1], [9, 2], [9, 2], [9, 1], [9, 4], [9, 4], [9, 4], [9, 4], [9, 4], [9, 4], [9, 4], [9, 4], [45, 1], [45, 4], [42, 1], [42, 4], [40, 1], [40, 4], [12, 5], [12, 3], [12, 5], [12, 3], [12, 3], [24, 4], [24, 4], [25, 3], [26, 3], [27, 3], [28, 3], [63, 2], [63, 1], [58, 3], [58, 1], [55, 1], [55, 1], [17, 5], [17, 5], [17, 4], [22, 1], [67, 1], [67, 1], [67, 1], [67, 1], [67, 1], [67, 1], [67, 1], [67, 1], [56, 1]],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) {\n var $0 = $$.length - 1;\n switch (yystate) {\n case 3:\n yy.apply($$[$0]);\n return $$[$0];\n case 4:\n case 9:\n this.$ = [];\n break;\n case 5:\n case 10:\n $$[$0 - 1].push($$[$0]);\n this.$ = $$[$0 - 1];\n break;\n case 6:\n case 7:\n case 11:\n case 12:\n this.$ = $$[$0];\n break;\n case 8:\n case 13:\n this.$ = [];\n break;\n case 15:\n $$[$0].type = \"createParticipant\";\n this.$ = $$[$0];\n break;\n case 16:\n $$[$0 - 1].unshift({ type: \"boxStart\", boxData: yy.parseBoxData($$[$0 - 2]) });\n $$[$0 - 1].push({ type: \"boxEnd\", boxText: $$[$0 - 2] });\n this.$ = $$[$0 - 1];\n break;\n case 18:\n this.$ = { type: \"sequenceIndex\", sequenceIndex: Number($$[$0 - 2]), sequenceIndexStep: Number($$[$0 - 1]), sequenceVisible: true, signalType: yy.LINETYPE.AUTONUMBER };\n break;\n case 19:\n this.$ = { type: \"sequenceIndex\", sequenceIndex: Number($$[$0 - 1]), sequenceIndexStep: 1, sequenceVisible: true, signalType: yy.LINETYPE.AUTONUMBER };\n break;\n case 20:\n this.$ = { type: \"sequenceIndex\", sequenceVisible: false, signalType: yy.LINETYPE.AUTONUMBER };\n break;\n case 21:\n this.$ = { type: \"sequenceIndex\", sequenceVisible: true, signalType: yy.LINETYPE.AUTONUMBER };\n break;\n case 22:\n this.$ = { type: \"activeStart\", signalType: yy.LINETYPE.ACTIVE_START, actor: $$[$0 - 1] };\n break;\n case 23:\n this.$ = { type: \"activeEnd\", signalType: yy.LINETYPE.ACTIVE_END, actor: $$[$0 - 1] };\n break;\n case 29:\n yy.setDiagramTitle($$[$0].substring(6));\n this.$ = $$[$0].substring(6);\n break;\n case 30:\n yy.setDiagramTitle($$[$0].substring(7));\n this.$ = $$[$0].substring(7);\n break;\n case 31:\n this.$ = $$[$0].trim();\n yy.setAccTitle(this.$);\n break;\n case 32:\n case 33:\n this.$ = $$[$0].trim();\n yy.setAccDescription(this.$);\n break;\n case 34:\n $$[$0 - 1].unshift({ type: \"loopStart\", loopText: yy.parseMessage($$[$0 - 2]), signalType: yy.LINETYPE.LOOP_START });\n $$[$0 - 1].push({ type: \"loopEnd\", loopText: $$[$0 - 2], signalType: yy.LINETYPE.LOOP_END });\n this.$ = $$[$0 - 1];\n break;\n case 35:\n $$[$0 - 1].unshift({ type: \"rectStart\", color: yy.parseMessage($$[$0 - 2]), signalType: yy.LINETYPE.RECT_START });\n $$[$0 - 1].push({ type: \"rectEnd\", color: yy.parseMessage($$[$0 - 2]), signalType: yy.LINETYPE.RECT_END });\n this.$ = $$[$0 - 1];\n break;\n case 36:\n $$[$0 - 1].unshift({ type: \"optStart\", optText: yy.parseMessage($$[$0 - 2]), signalType: yy.LINETYPE.OPT_START });\n $$[$0 - 1].push({ type: \"optEnd\", optText: yy.parseMessage($$[$0 - 2]), signalType: yy.LINETYPE.OPT_END });\n this.$ = $$[$0 - 1];\n break;\n case 37:\n $$[$0 - 1].unshift({ type: \"altStart\", altText: yy.parseMessage($$[$0 - 2]), signalType: yy.LINETYPE.ALT_START });\n $$[$0 - 1].push({ type: \"altEnd\", signalType: yy.LINETYPE.ALT_END });\n this.$ = $$[$0 - 1];\n break;\n case 38:\n $$[$0 - 1].unshift({ type: \"parStart\", parText: yy.parseMessage($$[$0 - 2]), signalType: yy.LINETYPE.PAR_START });\n $$[$0 - 1].push({ type: \"parEnd\", signalType: yy.LINETYPE.PAR_END });\n this.$ = $$[$0 - 1];\n break;\n case 39:\n $$[$0 - 1].unshift({ type: \"parStart\", parText: yy.parseMessage($$[$0 - 2]), signalType: yy.LINETYPE.PAR_OVER_START });\n $$[$0 - 1].push({ type: \"parEnd\", signalType: yy.LINETYPE.PAR_END });\n this.$ = $$[$0 - 1];\n break;\n case 40:\n $$[$0 - 1].unshift({ type: \"criticalStart\", criticalText: yy.parseMessage($$[$0 - 2]), signalType: yy.LINETYPE.CRITICAL_START });\n $$[$0 - 1].push({ type: \"criticalEnd\", signalType: yy.LINETYPE.CRITICAL_END });\n this.$ = $$[$0 - 1];\n break;\n case 41:\n $$[$0 - 1].unshift({ type: \"breakStart\", breakText: yy.parseMessage($$[$0 - 2]), signalType: yy.LINETYPE.BREAK_START });\n $$[$0 - 1].push({ type: \"breakEnd\", optText: yy.parseMessage($$[$0 - 2]), signalType: yy.LINETYPE.BREAK_END });\n this.$ = $$[$0 - 1];\n break;\n case 43:\n this.$ = $$[$0 - 3].concat([{ type: \"option\", optionText: yy.parseMessage($$[$0 - 1]), signalType: yy.LINETYPE.CRITICAL_OPTION }, $$[$0]]);\n break;\n case 45:\n this.$ = $$[$0 - 3].concat([{ type: \"and\", parText: yy.parseMessage($$[$0 - 1]), signalType: yy.LINETYPE.PAR_AND }, $$[$0]]);\n break;\n case 47:\n this.$ = $$[$0 - 3].concat([{ type: \"else\", altText: yy.parseMessage($$[$0 - 1]), signalType: yy.LINETYPE.ALT_ELSE }, $$[$0]]);\n break;\n case 48:\n $$[$0 - 3].draw = \"participant\";\n $$[$0 - 3].type = \"addParticipant\";\n $$[$0 - 3].description = yy.parseMessage($$[$0 - 1]);\n this.$ = $$[$0 - 3];\n break;\n case 49:\n $$[$0 - 1].draw = \"participant\";\n $$[$0 - 1].type = \"addParticipant\";\n this.$ = $$[$0 - 1];\n break;\n case 50:\n $$[$0 - 3].draw = \"actor\";\n $$[$0 - 3].type = \"addParticipant\";\n $$[$0 - 3].description = yy.parseMessage($$[$0 - 1]);\n this.$ = $$[$0 - 3];\n break;\n case 51:\n $$[$0 - 1].draw = \"actor\";\n $$[$0 - 1].type = \"addParticipant\";\n this.$ = $$[$0 - 1];\n break;\n case 52:\n $$[$0 - 1].type = \"destroyParticipant\";\n this.$ = $$[$0 - 1];\n break;\n case 53:\n this.$ = [$$[$0 - 1], { type: \"addNote\", placement: $$[$0 - 2], actor: $$[$0 - 1].actor, text: $$[$0] }];\n break;\n case 54:\n $$[$0 - 2] = [].concat($$[$0 - 1], $$[$0 - 1]).slice(0, 2);\n $$[$0 - 2][0] = $$[$0 - 2][0].actor;\n $$[$0 - 2][1] = $$[$0 - 2][1].actor;\n this.$ = [$$[$0 - 1], { type: \"addNote\", placement: yy.PLACEMENT.OVER, actor: $$[$0 - 2].slice(0, 2), text: $$[$0] }];\n break;\n case 55:\n this.$ = [$$[$0 - 1], { type: \"addLinks\", actor: $$[$0 - 1].actor, text: $$[$0] }];\n break;\n case 56:\n this.$ = [$$[$0 - 1], { type: \"addALink\", actor: $$[$0 - 1].actor, text: $$[$0] }];\n break;\n case 57:\n this.$ = [$$[$0 - 1], { type: \"addProperties\", actor: $$[$0 - 1].actor, text: $$[$0] }];\n break;\n case 58:\n this.$ = [$$[$0 - 1], { type: \"addDetails\", actor: $$[$0 - 1].actor, text: $$[$0] }];\n break;\n case 61:\n this.$ = [$$[$0 - 2], $$[$0]];\n break;\n case 62:\n this.$ = $$[$0];\n break;\n case 63:\n this.$ = yy.PLACEMENT.LEFTOF;\n break;\n case 64:\n this.$ = yy.PLACEMENT.RIGHTOF;\n break;\n case 65:\n this.$ = [\n $$[$0 - 4],\n $$[$0 - 1],\n { type: \"addMessage\", from: $$[$0 - 4].actor, to: $$[$0 - 1].actor, signalType: $$[$0 - 3], msg: $$[$0], activate: true },\n { type: \"activeStart\", signalType: yy.LINETYPE.ACTIVE_START, actor: $$[$0 - 1] }\n ];\n break;\n case 66:\n this.$ = [\n $$[$0 - 4],\n $$[$0 - 1],\n { type: \"addMessage\", from: $$[$0 - 4].actor, to: $$[$0 - 1].actor, signalType: $$[$0 - 3], msg: $$[$0] },\n { type: \"activeEnd\", signalType: yy.LINETYPE.ACTIVE_END, actor: $$[$0 - 4] }\n ];\n break;\n case 67:\n this.$ = [$$[$0 - 3], $$[$0 - 1], { type: \"addMessage\", from: $$[$0 - 3].actor, to: $$[$0 - 1].actor, signalType: $$[$0 - 2], msg: $$[$0] }];\n break;\n case 68:\n this.$ = { type: \"addParticipant\", actor: $$[$0] };\n break;\n case 69:\n this.$ = yy.LINETYPE.SOLID_OPEN;\n break;\n case 70:\n this.$ = yy.LINETYPE.DOTTED_OPEN;\n break;\n case 71:\n this.$ = yy.LINETYPE.SOLID;\n break;\n case 72:\n this.$ = yy.LINETYPE.DOTTED;\n break;\n case 73:\n this.$ = yy.LINETYPE.SOLID_CROSS;\n break;\n case 74:\n this.$ = yy.LINETYPE.DOTTED_CROSS;\n break;\n case 75:\n this.$ = yy.LINETYPE.SOLID_POINT;\n break;\n case 76:\n this.$ = yy.LINETYPE.DOTTED_POINT;\n break;\n case 77:\n this.$ = yy.parseMessage($$[$0].trim().substring(1));\n break;\n }\n },\n table: [{ 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, 18, 21, 23, 29, 30, 31, 33, 35, 36, 37, 38, 39, 41, 43, 44, 46, 50, 52, 53, 54, 59, 60, 61, 62, 70], $V3, { 7: 7 }), { 1: [2, 1] }, { 1: [2, 2] }, { 1: [2, 3], 4: $V4, 5: $V5, 8: 8, 9: 10, 12: 12, 13: $V6, 14: $V7, 17: 15, 18: $V8, 21: $V9, 22: 40, 23: $Va, 24: 19, 25: 20, 26: 21, 27: 22, 28: 23, 29: $Vb, 30: $Vc, 31: $Vd, 33: $Ve, 35: $Vf, 36: $Vg, 37: $Vh, 38: $Vi, 39: $Vj, 41: $Vk, 43: $Vl, 44: $Vm, 46: $Vn, 50: $Vo, 52: $Vp, 53: $Vq, 54: $Vr, 59: $Vs, 60: $Vt, 61: $Vu, 62: $Vv, 70: $Vw }, o($Vx, [2, 5]), { 9: 47, 12: 12, 13: $V6, 14: $V7, 17: 15, 18: $V8, 21: $V9, 22: 40, 23: $Va, 24: 19, 25: 20, 26: 21, 27: 22, 28: 23, 29: $Vb, 30: $Vc, 31: $Vd, 33: $Ve, 35: $Vf, 36: $Vg, 37: $Vh, 38: $Vi, 39: $Vj, 41: $Vk, 43: $Vl, 44: $Vm, 46: $Vn, 50: $Vo, 52: $Vp, 53: $Vq, 54: $Vr, 59: $Vs, 60: $Vt, 61: $Vu, 62: $Vv, 70: $Vw }, o($Vx, [2, 7]), o($Vx, [2, 8]), o($Vx, [2, 14]), { 12: 48, 50: $Vo, 52: $Vp, 53: $Vq }, { 15: [1, 49] }, { 5: [1, 50] }, { 5: [1, 53], 19: [1, 51], 20: [1, 52] }, { 22: 54, 70: $Vw }, { 22: 55, 70: $Vw }, { 5: [1, 56] }, { 5: [1, 57] }, { 5: [1, 58] }, { 5: [1, 59] }, { 5: [1, 60] }, o($Vx, [2, 29]), o($Vx, [2, 30]), { 32: [1, 61] }, { 34: [1, 62] }, o($Vx, [2, 33]), { 15: [1, 63] }, { 15: [1, 64] }, { 15: [1, 65] }, { 15: [1, 66] }, { 15: [1, 67] }, { 15: [1, 68] }, { 15: [1, 69] }, { 15: [1, 70] }, { 22: 71, 70: $Vw }, { 22: 72, 70: $Vw }, { 22: 73, 70: $Vw }, { 67: 74, 71: [1, 75], 72: [1, 76], 73: [1, 77], 74: [1, 78], 75: [1, 79], 76: [1, 80], 77: [1, 81], 78: [1, 82] }, { 55: 83, 57: [1, 84], 65: [1, 85], 66: [1, 86] }, { 22: 87, 70: $Vw }, { 22: 88, 70: $Vw }, { 22: 89, 70: $Vw }, { 22: 90, 70: $Vw }, o([5, 51, 64, 71, 72, 73, 74, 75, 76, 77, 78, 79], [2, 68]), o($Vx, [2, 6]), o($Vx, [2, 15]), o($Vy, [2, 9], { 10: 91 }), o($Vx, [2, 17]), { 5: [1, 93], 19: [1, 92] }, { 5: [1, 94] }, o($Vx, [2, 21]), { 5: [1, 95] }, { 5: [1, 96] }, o($Vx, [2, 24]), o($Vx, [2, 25]), o($Vx, [2, 26]), o($Vx, [2, 27]), o($Vx, [2, 28]), o($Vx, [2, 31]), o($Vx, [2, 32]), o($Vz, $V3, { 7: 97 }), o($Vz, $V3, { 7: 98 }), o($Vz, $V3, { 7: 99 }), o($VA, $V3, { 40: 100, 7: 101 }), o($VB, $V3, { 42: 102, 7: 103 }), o($VB, $V3, { 7: 103, 42: 104 }), o($VC, $V3, { 45: 105, 7: 106 }), o($Vz, $V3, { 7: 107 }), { 5: [1, 109], 51: [1, 108] }, { 5: [1, 111], 51: [1, 110] }, { 5: [1, 112] }, { 22: 115, 68: [1, 113], 69: [1, 114], 70: $Vw }, o($VD, [2, 69]), o($VD, [2, 70]), o($VD, [2, 71]), o($VD, [2, 72]), o($VD, [2, 73]), o($VD, [2, 74]), o($VD, [2, 75]), o($VD, [2, 76]), { 22: 116, 70: $Vw }, { 22: 118, 58: 117, 70: $Vw }, { 70: [2, 63] }, { 70: [2, 64] }, { 56: 119, 79: $VE }, { 56: 121, 79: $VE }, { 56: 122, 79: $VE }, { 56: 123, 79: $VE }, { 4: [1, 126], 5: [1, 128], 11: 125, 12: 127, 16: [1, 124], 50: $Vo, 52: $Vp, 53: $Vq }, { 5: [1, 129] }, o($Vx, [2, 19]), o($Vx, [2, 20]), o($Vx, [2, 22]), o($Vx, [2, 23]), { 4: $V4, 5: $V5, 8: 8, 9: 10, 12: 12, 13: $V6, 14: $V7, 16: [1, 130], 17: 15, 18: $V8, 21: $V9, 22: 40, 23: $Va, 24: 19, 25: 20, 26: 21, 27: 22, 28: 23, 29: $Vb, 30: $Vc, 31: $Vd, 33: $Ve, 35: $Vf, 36: $Vg, 37: $Vh, 38: $Vi, 39: $Vj, 41: $Vk, 43: $Vl, 44: $Vm, 46: $Vn, 50: $Vo, 52: $Vp, 53: $Vq, 54: $Vr, 59: $Vs, 60: $Vt, 61: $Vu, 62: $Vv, 70: $Vw }, { 4: $V4, 5: $V5, 8: 8, 9: 10, 12: 12, 13: $V6, 14: $V7, 16: [1, 131], 17: 15, 18: $V8, 21: $V9, 22: 40, 23: $Va, 24: 19, 25: 20, 26: 21, 27: 22, 28: 23, 29: $Vb, 30: $Vc, 31: $Vd, 33: $Ve, 35: $Vf, 36: $Vg, 37: $Vh, 38: $Vi, 39: $Vj, 41: $Vk, 43: $Vl, 44: $Vm, 46: $Vn, 50: $Vo, 52: $Vp, 53: $Vq, 54: $Vr, 59: $Vs, 60: $Vt, 61: $Vu, 62: $Vv, 70: $Vw }, { 4: $V4, 5: $V5, 8: 8, 9: 10, 12: 12, 13: $V6, 14: $V7, 16: [1, 132], 17: 15, 18: $V8, 21: $V9, 22: 40, 23: $Va, 24: 19, 25: 20, 26: 21, 27: 22, 28: 23, 29: $Vb, 30: $Vc, 31: $Vd, 33: $Ve, 35: $Vf, 36: $Vg, 37: $Vh, 38: $Vi, 39: $Vj, 41: $Vk, 43: $Vl, 44: $Vm, 46: $Vn, 50: $Vo, 52: $Vp, 53: $Vq, 54: $Vr, 59: $Vs, 60: $Vt, 61: $Vu, 62: $Vv, 70: $Vw }, { 16: [1, 133] }, { 4: $V4, 5: $V5, 8: 8, 9: 10, 12: 12, 13: $V6, 14: $V7, 16: [2, 46], 17: 15, 18: $V8, 21: $V9, 22: 40, 23: $Va, 24: 19, 25: 20, 26: 21, 27: 22, 28: 23, 29: $Vb, 30: $Vc, 31: $Vd, 33: $Ve, 35: $Vf, 36: $Vg, 37: $Vh, 38: $Vi, 39: $Vj, 41: $Vk, 43: $Vl, 44: $Vm, 46: $Vn, 49: [1, 134], 50: $Vo, 52: $Vp, 53: $Vq, 54: $Vr, 59: $Vs, 60: $Vt, 61: $Vu, 62: $Vv, 70: $Vw }, { 16: [1, 135] }, { 4: $V4, 5: $V5, 8: 8, 9: 10, 12: 12, 13: $V6, 14: $V7, 16: [2, 44], 17: 15, 18: $V8, 21: $V9, 22: 40, 23: $Va, 24: 19, 25: 20, 26: 21, 27: 22, 28: 23, 29: $Vb, 30: $Vc, 31: $Vd, 33: $Ve, 35: $Vf, 36: $Vg, 37: $Vh, 38: $Vi, 39: $Vj, 41: $Vk, 43: $Vl, 44: $Vm, 46: $Vn, 48: [1, 136], 50: $Vo, 52: $Vp, 53: $Vq, 54: $Vr, 59: $Vs, 60: $Vt, 61: $Vu, 62: $Vv, 70: $Vw }, { 16: [1, 137] }, { 16: [1, 138] }, { 4: $V4, 5: $V5, 8: 8, 9: 10, 12: 12, 13: $V6, 14: $V7, 16: [2, 42], 17: 15, 18: $V8, 21: $V9, 22: 40, 23: $Va, 24: 19, 25: 20, 26: 21, 27: 22, 28: 23, 29: $Vb, 30: $Vc, 31: $Vd, 33: $Ve, 35: $Vf, 36: $Vg, 37: $Vh, 38: $Vi, 39: $Vj, 41: $Vk, 43: $Vl, 44: $Vm, 46: $Vn, 47: [1, 139], 50: $Vo, 52: $Vp, 53: $Vq, 54: $Vr, 59: $Vs, 60: $Vt, 61: $Vu, 62: $Vv, 70: $Vw }, { 4: $V4, 5: $V5, 8: 8, 9: 10, 12: 12, 13: $V6, 14: $V7, 16: [1, 140], 17: 15, 18: $V8, 21: $V9, 22: 40, 23: $Va, 24: 19, 25: 20, 26: 21, 27: 22, 28: 23, 29: $Vb, 30: $Vc, 31: $Vd, 33: $Ve, 35: $Vf, 36: $Vg, 37: $Vh, 38: $Vi, 39: $Vj, 41: $Vk, 43: $Vl, 44: $Vm, 46: $Vn, 50: $Vo, 52: $Vp, 53: $Vq, 54: $Vr, 59: $Vs, 60: $Vt, 61: $Vu, 62: $Vv, 70: $Vw }, { 15: [1, 141] }, o($Vx, [2, 49]), { 15: [1, 142] }, o($Vx, [2, 51]), o($Vx, [2, 52]), { 22: 143, 70: $Vw }, { 22: 144, 70: $Vw }, { 56: 145, 79: $VE }, { 56: 146, 79: $VE }, { 56: 147, 79: $VE }, { 64: [1, 148], 79: [2, 62] }, { 5: [2, 55] }, { 5: [2, 77] }, { 5: [2, 56] }, { 5: [2, 57] }, { 5: [2, 58] }, o($Vx, [2, 16]), o($Vy, [2, 10]), { 12: 149, 50: $Vo, 52: $Vp, 53: $Vq }, o($Vy, [2, 12]), o($Vy, [2, 13]), o($Vx, [2, 18]), o($Vx, [2, 34]), o($Vx, [2, 35]), o($Vx, [2, 36]), o($Vx, [2, 37]), { 15: [1, 150] }, o($Vx, [2, 38]), { 15: [1, 151] }, o($Vx, [2, 39]), o($Vx, [2, 40]), { 15: [1, 152] }, o($Vx, [2, 41]), { 5: [1, 153] }, { 5: [1, 154] }, { 56: 155, 79: $VE }, { 56: 156, 79: $VE }, { 5: [2, 67] }, { 5: [2, 53] }, { 5: [2, 54] }, { 22: 157, 70: $Vw }, o($Vy, [2, 11]), o($VA, $V3, { 7: 101, 40: 158 }), o($VB, $V3, { 7: 103, 42: 159 }), o($VC, $V3, { 7: 106, 45: 160 }), o($Vx, [2, 48]), o($Vx, [2, 50]), { 5: [2, 65] }, { 5: [2, 66] }, { 79: [2, 61] }, { 16: [2, 47] }, { 16: [2, 45] }, { 16: [2, 43] }],\n defaultActions: { 5: [2, 1], 6: [2, 2], 85: [2, 63], 86: [2, 64], 119: [2, 55], 120: [2, 77], 121: [2, 56], 122: [2, 57], 123: [2, 58], 145: [2, 67], 146: [2, 53], 147: [2, 54], 155: [2, 65], 156: [2, 66], 157: [2, 61], 158: [2, 47], 159: [2, 45], 160: [2, 43] },\n parseError: 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 },\n parse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = \"\", yylineno = 0, yyleng = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer2 = 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 lexer2.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer2;\n sharedState.yy.parser = this;\n if (typeof lexer2.yylloc == \"undefined\") {\n lexer2.yylloc = {};\n }\n var yyloc = lexer2.yylloc;\n lstack.push(yyloc);\n var ranges = lexer2.options && lexer2.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 lex() {\n var token;\n token = tstack.pop() || lexer2.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, state2, action, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state2 = stack[stack.length - 1];\n if (this.defaultActions[state2]) {\n action = this.defaultActions[state2];\n } else {\n if (symbol === null || typeof symbol == \"undefined\") {\n symbol = lex();\n }\n action = table[state2] && table[state2][symbol];\n }\n if (typeof action === \"undefined\" || !action.length || !action[0]) {\n var errStr = \"\";\n expected = [];\n for (p in table[state2]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push(\"'\" + this.terminals_[p] + \"'\");\n }\n }\n if (lexer2.showPosition) {\n errStr = \"Parse error on line \" + (yylineno + 1) + \":\\n\" + lexer2.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: lexer2.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer2.yylineno,\n loc: yyloc,\n expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error(\"Parse Error: multiple actions possible at state: \" + state2 + \", token: \" + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer2.yytext);\n lstack.push(lexer2.yylloc);\n stack.push(action[1]);\n symbol = null;\n {\n yyleng = lexer2.yyleng;\n yytext = lexer2.yytext;\n yylineno = lexer2.yylineno;\n yyloc = lexer2.yylloc;\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 var lexer = function() {\n var lexer2 = {\n EOF: 1,\n parseError: 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 // resets the lexer, sets new input\n setInput: 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 // consumes and returns one char from the input\n input: 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 this._input = this._input.slice(1);\n return ch;\n },\n // unshifts one char (or a string) into the input\n unput: function(ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - 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 if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\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 ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len\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 // When called from action, caches matched text and appends it on next action\n more: function() {\n this._more = true;\n return this;\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.\n reject: 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 return this;\n },\n // retain first n characters of the match\n less: function(n) {\n this.unput(this.match.slice(n));\n },\n // displays already matched input, i.e. for error messages\n pastInput: 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 // displays upcoming input, i.e. for error messages\n upcomingInput: 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 // displays the character position where the lexing error occurred, i.e. for error messages\n showPosition: function() {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n // test the lexed token: return FALSE when not a match, otherwise return token\n test_match: function(match, indexed_rule) {\n var token, lines, backup;\n if (this.options.backtrack_lexer) {\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 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 ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length : 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 for (var k in backup) {\n this[k] = backup[k];\n }\n return false;\n }\n return false;\n },\n // return next match in input\n next: function() {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n var token, match, tempMatch, 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;\n } else {\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 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 // return next match that has a token\n lex: function lex() {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\n begin: function begin(condition) {\n this.conditionStack.push(condition);\n },\n // pop the previously active lexer condition state off the condition stack\n popState: 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 // 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 // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\n topState: 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 // alias for begin(condition)\n pushState: function pushState(condition) {\n this.begin(condition);\n },\n // return the number of states currently on the stack\n stateStackSize: function stateStackSize() {\n return this.conditionStack.length;\n },\n options: { \"case-insensitive\": true },\n performAction: function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) {\n switch ($avoiding_name_collisions) {\n case 0:\n return 5;\n case 1:\n break;\n case 2:\n break;\n case 3:\n break;\n case 4:\n break;\n case 5:\n break;\n case 6:\n return 19;\n case 7:\n this.begin(\"LINE\");\n return 14;\n case 8:\n this.begin(\"ID\");\n return 50;\n case 9:\n this.begin(\"ID\");\n return 52;\n case 10:\n return 13;\n case 11:\n this.begin(\"ID\");\n return 53;\n case 12:\n yy_.yytext = yy_.yytext.trim();\n this.begin(\"ALIAS\");\n return 70;\n case 13:\n this.popState();\n this.popState();\n this.begin(\"LINE\");\n return 51;\n case 14:\n this.popState();\n this.popState();\n return 5;\n case 15:\n this.begin(\"LINE\");\n return 36;\n case 16:\n this.begin(\"LINE\");\n return 37;\n case 17:\n this.begin(\"LINE\");\n return 38;\n case 18:\n this.begin(\"LINE\");\n return 39;\n case 19:\n this.begin(\"LINE\");\n return 49;\n case 20:\n this.begin(\"LINE\");\n return 41;\n case 21:\n this.begin(\"LINE\");\n return 43;\n case 22:\n this.begin(\"LINE\");\n return 48;\n case 23:\n this.begin(\"LINE\");\n return 44;\n case 24:\n this.begin(\"LINE\");\n return 47;\n case 25:\n this.begin(\"LINE\");\n return 46;\n case 26:\n this.popState();\n return 15;\n case 27:\n return 16;\n case 28:\n return 65;\n case 29:\n return 66;\n case 30:\n return 59;\n case 31:\n return 60;\n case 32:\n return 61;\n case 33:\n return 62;\n case 34:\n return 57;\n case 35:\n return 54;\n case 36:\n this.begin(\"ID\");\n return 21;\n case 37:\n this.begin(\"ID\");\n return 23;\n case 38:\n return 29;\n case 39:\n return 30;\n case 40:\n this.begin(\"acc_title\");\n return 31;\n case 41:\n this.popState();\n return \"acc_title_value\";\n case 42:\n this.begin(\"acc_descr\");\n return 33;\n case 43:\n this.popState();\n return \"acc_descr_value\";\n case 44:\n this.begin(\"acc_descr_multiline\");\n break;\n case 45:\n this.popState();\n break;\n case 46:\n return \"acc_descr_multiline_value\";\n case 47:\n return 6;\n case 48:\n return 18;\n case 49:\n return 20;\n case 50:\n return 64;\n case 51:\n return 5;\n case 52:\n yy_.yytext = yy_.yytext.trim();\n return 70;\n case 53:\n return 73;\n case 54:\n return 74;\n case 55:\n return 71;\n case 56:\n return 72;\n case 57:\n return 75;\n case 58:\n return 76;\n case 59:\n return 77;\n case 60:\n return 78;\n case 61:\n return 79;\n case 62:\n return 68;\n case 63:\n return 69;\n case 64:\n return 5;\n case 65:\n return \"INVALID\";\n }\n },\n rules: [/^(?:[\\n]+)/i, /^(?:\\s+)/i, /^(?:((?!\\n)\\s)+)/i, /^(?:#[^\\n]*)/i, /^(?:%(?!\\{)[^\\n]*)/i, /^(?:[^\\}]%%[^\\n]*)/i, /^(?:[0-9]+(?=[ \\n]+))/i, /^(?:box\\b)/i, /^(?:participant\\b)/i, /^(?:actor\\b)/i, /^(?:create\\b)/i, /^(?:destroy\\b)/i, /^(?:[^\\->:\\n,;]+?([\\-]*[^\\->:\\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, /^(?:par_over\\b)/i, /^(?:and\\b)/i, /^(?:critical\\b)/i, /^(?:option\\b)/i, /^(?:break\\b)/i, /^(?:(?:[:]?(?:no)?wrap)?[^#\\n;]*)/i, /^(?:end\\b)/i, /^(?:left of\\b)/i, /^(?:right of\\b)/i, /^(?:links\\b)/i, /^(?:link\\b)/i, /^(?:properties\\b)/i, /^(?:details\\b)/i, /^(?:over\\b)/i, /^(?:note\\b)/i, /^(?:activate\\b)/i, /^(?:deactivate\\b)/i, /^(?:title\\s[^#\\n;]+)/i, /^(?:title:\\s[^#\\n;]+)/i, /^(?:accTitle\\s*:\\s*)/i, /^(?:(?!\\n||)*[^\\n]*)/i, /^(?:accDescr\\s*:\\s*)/i, /^(?:(?!\\n||)*[^\\n]*)/i, /^(?:accDescr\\s*\\{\\s*)/i, /^(?:[\\}])/i, /^(?:[^\\}]*)/i, /^(?:sequenceDiagram\\b)/i, /^(?:autonumber\\b)/i, /^(?:off\\b)/i, /^(?:,)/i, /^(?:;)/i, /^(?:[^\\+\\->:\\n,;]+((?!(-x|--x|-\\)|--\\)))[\\-]*[^\\+\\->:\\n,;]+)*)/i, /^(?:->>)/i, /^(?:-->>)/i, /^(?:->)/i, /^(?:-->)/i, /^(?:-[x])/i, /^(?:--[x])/i, /^(?:-[\\)])/i, /^(?:--[\\)])/i, /^(?::(?:(?:no)?wrap)?[^#\\n;]+)/i, /^(?:\\+)/i, /^(?:-)/i, /^(?:$)/i, /^(?:.)/i],\n conditions: { \"acc_descr_multiline\": { \"rules\": [45, 46], \"inclusive\": false }, \"acc_descr\": { \"rules\": [43], \"inclusive\": false }, \"acc_title\": { \"rules\": [41], \"inclusive\": false }, \"ID\": { \"rules\": [2, 3, 12], \"inclusive\": false }, \"ALIAS\": { \"rules\": [2, 3, 13, 14], \"inclusive\": false }, \"LINE\": { \"rules\": [2, 3, 26], \"inclusive\": false }, \"INITIAL\": { \"rules\": [0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 42, 44, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65], \"inclusive\": true } }\n };\n return lexer2;\n }();\n parser2.lexer = lexer;\n function Parser() {\n this.yy = {};\n }\n Parser.prototype = parser2;\n parser2.Parser = Parser;\n return new Parser();\n}();\nparser.parser = parser;\nconst parser$1 = parser;\nclass ImperativeState {\n /**\n * @param init - Function that creates the default state.\n */\n constructor(init) {\n this.init = init;\n this.records = this.init();\n }\n reset() {\n this.records = this.init();\n }\n}\nconst state = new ImperativeState(() => ({\n prevActor: void 0,\n actors: {},\n createdActors: {},\n destroyedActors: {},\n boxes: [],\n messages: [],\n notes: [],\n sequenceNumbersEnabled: false,\n wrapEnabled: void 0,\n currentBox: void 0,\n lastCreated: void 0,\n lastDestroyed: void 0\n}));\nconst addBox = function(data) {\n state.records.boxes.push({\n name: data.text,\n wrap: data.wrap === void 0 && autoWrap() || !!data.wrap,\n fill: data.color,\n actorKeys: []\n });\n state.records.currentBox = state.records.boxes.slice(-1)[0];\n};\nconst addActor = function(id, name, description, type) {\n let assignedBox = state.records.currentBox;\n const old = state.records.actors[id];\n if (old) {\n if (state.records.currentBox && old.box && state.records.currentBox !== old.box) {\n throw new Error(\n \"A same participant should only be defined in one Box: \" + old.name + \" can't be in '\" + old.box.name + \"' and in '\" + state.records.currentBox.name + \"' at the same time.\"\n );\n }\n assignedBox = old.box ? old.box : state.records.currentBox;\n old.box = assignedBox;\n if (old && name === old.name && description == null) {\n return;\n }\n }\n if (description == null || description.text == null) {\n description = { text: name, wrap: null, type };\n }\n if (type == null || description.text == null) {\n description = { text: name, wrap: null, type };\n }\n state.records.actors[id] = {\n box: assignedBox,\n name,\n description: description.text,\n wrap: description.wrap === void 0 && autoWrap() || !!description.wrap,\n prevActor: state.records.prevActor,\n links: {},\n properties: {},\n actorCnt: null,\n rectData: null,\n type: type || \"participant\"\n };\n if (state.records.prevActor && state.records.actors[state.records.prevActor]) {\n state.records.actors[state.records.prevActor].nextActor = id;\n }\n if (state.records.currentBox) {\n state.records.currentBox.actorKeys.push(id);\n }\n state.records.prevActor = id;\n};\nconst activationCount = (part) => {\n let i;\n let count = 0;\n for (i = 0; i < state.records.messages.length; i++) {\n if (state.records.messages[i].type === LINETYPE.ACTIVE_START && state.records.messages[i].from.actor === part) {\n count++;\n }\n if (state.records.messages[i].type === LINETYPE.ACTIVE_END && state.records.messages[i].from.actor === part) {\n count--;\n }\n }\n return count;\n};\nconst addMessage = function(idFrom, idTo, message, answer) {\n state.records.messages.push({\n from: idFrom,\n to: idTo,\n message: message.text,\n wrap: message.wrap === void 0 && autoWrap() || !!message.wrap,\n answer\n });\n};\nconst addSignal = function(idFrom, idTo, message = { text: void 0, wrap: void 0 }, messageType, activate = false) {\n if (messageType === LINETYPE.ACTIVE_END) {\n const cnt = activationCount(idFrom.actor);\n if (cnt < 1) {\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 state.records.messages.push({\n from: idFrom,\n to: idTo,\n message: message.text,\n wrap: message.wrap === void 0 && autoWrap() || !!message.wrap,\n type: messageType,\n activate\n });\n return true;\n};\nconst hasAtLeastOneBox = function() {\n return state.records.boxes.length > 0;\n};\nconst hasAtLeastOneBoxWithTitle = function() {\n return state.records.boxes.some((b) => b.name);\n};\nconst getMessages = function() {\n return state.records.messages;\n};\nconst getBoxes = function() {\n return state.records.boxes;\n};\nconst getActors = function() {\n return state.records.actors;\n};\nconst getCreatedActors = function() {\n return state.records.createdActors;\n};\nconst getDestroyedActors = function() {\n return state.records.destroyedActors;\n};\nconst getActor = function(id) {\n return state.records.actors[id];\n};\nconst getActorKeys = function() {\n return Object.keys(state.records.actors);\n};\nconst enableSequenceNumbers = function() {\n state.records.sequenceNumbersEnabled = true;\n};\nconst disableSequenceNumbers = function() {\n state.records.sequenceNumbersEnabled = false;\n};\nconst showSequenceNumbers = () => state.records.sequenceNumbersEnabled;\nconst setWrap = function(wrapSetting) {\n state.records.wrapEnabled = wrapSetting;\n};\nconst autoWrap = () => {\n if (state.records.wrapEnabled !== void 0) {\n return state.records.wrapEnabled;\n }\n return getConfig().sequence.wrap;\n};\nconst clear = function() {\n state.reset();\n clear$1();\n};\nconst parseMessage = function(str) {\n const _str = str.trim();\n const message = {\n text: _str.replace(/^:?(?:no)?wrap:/, \"\").trim(),\n wrap: _str.match(/^:?wrap:/) !== null ? true : _str.match(/^:?nowrap:/) !== null ? false : void 0\n };\n log.debug(\"parseMessage:\", message);\n return message;\n};\nconst parseBoxData = function(str) {\n const match = str.match(/^((?:rgba?|hsla?)\\s*\\(.*\\)|\\w*)(.*)$/);\n let color = match != null && match[1] ? match[1].trim() : \"transparent\";\n let title = match != null && match[2] ? match[2].trim() : void 0;\n if (window && window.CSS) {\n if (!window.CSS.supports(\"color\", color)) {\n color = \"transparent\";\n title = str.trim();\n }\n } else {\n const style = new Option().style;\n style.color = color;\n if (style.color !== color) {\n color = \"transparent\";\n title = str.trim();\n }\n }\n return {\n color,\n text: title !== void 0 ? sanitizeText(title.replace(/^:?(?:no)?wrap:/, \"\"), getConfig()) : void 0,\n wrap: title !== void 0 ? title.match(/^:?wrap:/) !== null ? true : title.match(/^:?nowrap:/) !== null ? false : void 0 : void 0\n };\n};\nconst 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 SOLID_POINT: 24,\n DOTTED_POINT: 25,\n AUTONUMBER: 26,\n CRITICAL_START: 27,\n CRITICAL_OPTION: 28,\n CRITICAL_END: 29,\n BREAK_START: 30,\n BREAK_END: 31,\n PAR_OVER_START: 32\n};\nconst ARROWTYPE = {\n FILLED: 0,\n OPEN: 1\n};\nconst PLACEMENT = {\n LEFTOF: 0,\n RIGHTOF: 1,\n OVER: 2\n};\nconst addNote = function(actor, placement, message) {\n const note = {\n actor,\n placement,\n message: message.text,\n wrap: message.wrap === void 0 && autoWrap() || !!message.wrap\n };\n const actors = [].concat(actor, actor);\n state.records.notes.push(note);\n state.records.messages.push({\n from: actors[0],\n to: actors[1],\n message: message.text,\n wrap: message.wrap === void 0 && autoWrap() || !!message.wrap,\n type: LINETYPE.NOTE,\n placement\n });\n};\nconst addLinks = function(actorId, text) {\n const actor = getActor(actorId);\n try {\n let sanitizedText = sanitizeText(text.text, getConfig());\n sanitizedText = sanitizedText.replace(/&/g, \"&\");\n sanitizedText = sanitizedText.replace(/=/g, \"=\");\n const links = JSON.parse(sanitizedText);\n insertLinks(actor, links);\n } catch (e) {\n log.error(\"error while parsing actor link text\", e);\n }\n};\nconst addALink = function(actorId, text) {\n const actor = getActor(actorId);\n try {\n const links = {};\n let sanitizedText = sanitizeText(text.text, getConfig());\n var sep = sanitizedText.indexOf(\"@\");\n sanitizedText = sanitizedText.replace(/&/g, \"&\");\n sanitizedText = sanitizedText.replace(/=/g, \"=\");\n var label = sanitizedText.slice(0, sep - 1).trim();\n var link = sanitizedText.slice(sep + 1).trim();\n links[label] = link;\n insertLinks(actor, links);\n } catch (e) {\n log.error(\"error while parsing actor link text\", e);\n }\n};\nfunction insertLinks(actor, links) {\n if (actor.links == null) {\n actor.links = links;\n } else {\n for (let key in links) {\n actor.links[key] = links[key];\n }\n }\n}\nconst addProperties = function(actorId, text) {\n const actor = getActor(actorId);\n try {\n let sanitizedText = sanitizeText(text.text, getConfig());\n const properties = JSON.parse(sanitizedText);\n insertProperties(actor, properties);\n } catch (e) {\n log.error(\"error while parsing actor properties text\", e);\n }\n};\nfunction insertProperties(actor, properties) {\n if (actor.properties == null) {\n actor.properties = properties;\n } else {\n for (let key in properties) {\n actor.properties[key] = properties[key];\n }\n }\n}\nfunction boxEnd() {\n state.records.currentBox = void 0;\n}\nconst addDetails = function(actorId, text) {\n const actor = getActor(actorId);\n const elem = document.getElementById(text.text);\n try {\n const text2 = elem.innerHTML;\n const details = JSON.parse(text2);\n if (details[\"properties\"]) {\n insertProperties(actor, details[\"properties\"]);\n }\n if (details[\"links\"]) {\n insertLinks(actor, details[\"links\"]);\n }\n } catch (e) {\n log.error(\"error while parsing actor details text\", e);\n }\n};\nconst getActorProperty = function(actor, key) {\n if (actor !== void 0 && actor.properties !== void 0) {\n return actor.properties[key];\n }\n return void 0;\n};\nconst apply = function(param) {\n if (Array.isArray(param)) {\n param.forEach(function(item) {\n apply(item);\n });\n } else {\n switch (param.type) {\n case \"sequenceIndex\":\n state.records.messages.push({\n from: void 0,\n to: void 0,\n message: {\n start: param.sequenceIndex,\n step: param.sequenceIndexStep,\n visible: param.sequenceVisible\n },\n wrap: false,\n type: param.signalType\n });\n break;\n case \"addParticipant\":\n addActor(param.actor, param.actor, param.description, param.draw);\n break;\n case \"createParticipant\":\n if (state.records.actors[param.actor]) {\n throw new Error(\n \"It is not possible to have actors with the same id, even if one is destroyed before the next is created. Use 'AS' aliases to simulate the behavior\"\n );\n }\n state.records.lastCreated = param.actor;\n addActor(param.actor, param.actor, param.description, param.draw);\n state.records.createdActors[param.actor] = state.records.messages.length;\n break;\n case \"destroyParticipant\":\n state.records.lastDestroyed = param.actor;\n state.records.destroyedActors[param.actor] = state.records.messages.length;\n break;\n case \"activeStart\":\n addSignal(param.actor, void 0, void 0, param.signalType);\n break;\n case \"activeEnd\":\n addSignal(param.actor, void 0, void 0, param.signalType);\n break;\n case \"addNote\":\n addNote(param.actor, param.placement, param.text);\n break;\n case \"addLinks\":\n addLinks(param.actor, param.text);\n break;\n case \"addALink\":\n addALink(param.actor, param.text);\n break;\n case \"addProperties\":\n addProperties(param.actor, param.text);\n break;\n case \"addDetails\":\n addDetails(param.actor, param.text);\n break;\n case \"addMessage\":\n if (state.records.lastCreated) {\n if (param.to !== state.records.lastCreated) {\n throw new Error(\n \"The created participant \" + state.records.lastCreated + \" does not have an associated creating message after its declaration. Please check the sequence diagram.\"\n );\n } else {\n state.records.lastCreated = void 0;\n }\n } else if (state.records.lastDestroyed) {\n if (param.to !== state.records.lastDestroyed && param.from !== state.records.lastDestroyed) {\n throw new Error(\n \"The destroyed participant \" + state.records.lastDestroyed + \" does not have an associated destroying message after its declaration. Please check the sequence diagram.\"\n );\n } else {\n state.records.lastDestroyed = void 0;\n }\n }\n addSignal(param.from, param.to, param.msg, param.signalType, param.activate);\n break;\n case \"boxStart\":\n addBox(param.boxData);\n break;\n case \"boxEnd\":\n boxEnd();\n break;\n case \"loopStart\":\n addSignal(void 0, void 0, param.loopText, param.signalType);\n break;\n case \"loopEnd\":\n addSignal(void 0, void 0, void 0, param.signalType);\n break;\n case \"rectStart\":\n addSignal(void 0, void 0, param.color, param.signalType);\n break;\n case \"rectEnd\":\n addSignal(void 0, void 0, void 0, param.signalType);\n break;\n case \"optStart\":\n addSignal(void 0, void 0, param.optText, param.signalType);\n break;\n case \"optEnd\":\n addSignal(void 0, void 0, void 0, param.signalType);\n break;\n case \"altStart\":\n addSignal(void 0, void 0, param.altText, param.signalType);\n break;\n case \"else\":\n addSignal(void 0, void 0, param.altText, param.signalType);\n break;\n case \"altEnd\":\n addSignal(void 0, void 0, void 0, param.signalType);\n break;\n case \"setAccTitle\":\n setAccTitle(param.text);\n break;\n case \"parStart\":\n addSignal(void 0, void 0, param.parText, param.signalType);\n break;\n case \"and\":\n addSignal(void 0, void 0, param.parText, param.signalType);\n break;\n case \"parEnd\":\n addSignal(void 0, void 0, void 0, param.signalType);\n break;\n case \"criticalStart\":\n addSignal(void 0, void 0, param.criticalText, param.signalType);\n break;\n case \"option\":\n addSignal(void 0, void 0, param.optionText, param.signalType);\n break;\n case \"criticalEnd\":\n addSignal(void 0, void 0, void 0, param.signalType);\n break;\n case \"breakStart\":\n addSignal(void 0, void 0, param.breakText, param.signalType);\n break;\n case \"breakEnd\":\n addSignal(void 0, void 0, void 0, param.signalType);\n break;\n }\n }\n};\nconst db = {\n addActor,\n addMessage,\n addSignal,\n addLinks,\n addDetails,\n addProperties,\n autoWrap,\n setWrap,\n enableSequenceNumbers,\n disableSequenceNumbers,\n showSequenceNumbers,\n getMessages,\n getActors,\n getCreatedActors,\n getDestroyedActors,\n getActor,\n getActorKeys,\n getActorProperty,\n getAccTitle,\n getBoxes,\n getDiagramTitle,\n setDiagramTitle,\n getConfig: () => getConfig().sequence,\n clear,\n parseMessage,\n parseBoxData,\n LINETYPE,\n ARROWTYPE,\n PLACEMENT,\n addNote,\n setAccTitle,\n apply,\n setAccDescription,\n getAccDescription,\n hasAtLeastOneBox,\n hasAtLeastOneBoxWithTitle\n};\nconst getStyles = (options) => `.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: none;\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 .actorPopupMenu {\n position: absolute;\n }\n\n .actorPopupMenuPanel {\n position: absolute;\n fill: ${options.actorBkg};\n box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);\n filter: drop-shadow(3px 5px 2px rgb(0 0 0 / 0.4));\n}\n .actor-man line {\n stroke: ${options.actorBorder};\n fill: ${options.actorBkg};\n }\n .actor-man circle, line {\n stroke: ${options.actorBorder};\n fill: ${options.actorBkg};\n stroke-width: 2px;\n }\n`;\nconst styles = getStyles;\nconst ACTOR_TYPE_WIDTH = 18 * 2;\nconst TOP_ACTOR_CLASS = \"actor-top\";\nconst BOTTOM_ACTOR_CLASS = \"actor-bottom\";\nconst drawRect = function(elem, rectData) {\n return drawRect$1(elem, rectData);\n};\nconst drawPopup = function(elem, actor, minMenuWidth, textAttrs, forceMenus) {\n if (actor.links === void 0 || actor.links === null || Object.keys(actor.links).length === 0) {\n return { height: 0, width: 0 };\n }\n const links = actor.links;\n const actorCnt2 = actor.actorCnt;\n const rectData = actor.rectData;\n var displayValue = \"none\";\n if (forceMenus) {\n displayValue = \"block !important\";\n }\n const g = elem.append(\"g\");\n g.attr(\"id\", \"actor\" + actorCnt2 + \"_popup\");\n g.attr(\"class\", \"actorPopupMenu\");\n g.attr(\"display\", displayValue);\n var actorClass = \"\";\n if (rectData.class !== void 0) {\n actorClass = \" \" + rectData.class;\n }\n let menuWidth = rectData.width > minMenuWidth ? rectData.width : minMenuWidth;\n const rectElem = g.append(\"rect\");\n rectElem.attr(\"class\", \"actorPopupMenuPanel\" + actorClass);\n rectElem.attr(\"x\", rectData.x);\n rectElem.attr(\"y\", rectData.height);\n rectElem.attr(\"fill\", rectData.fill);\n rectElem.attr(\"stroke\", rectData.stroke);\n rectElem.attr(\"width\", menuWidth);\n rectElem.attr(\"height\", rectData.height);\n rectElem.attr(\"rx\", rectData.rx);\n rectElem.attr(\"ry\", rectData.ry);\n if (links != null) {\n var linkY = 20;\n for (let key in links) {\n var linkElem = g.append(\"a\");\n var sanitizedLink = sanitizeUrl(links[key]);\n linkElem.attr(\"xlink:href\", sanitizedLink);\n linkElem.attr(\"target\", \"_blank\");\n _drawMenuItemTextCandidateFunc(textAttrs)(\n key,\n linkElem,\n rectData.x + 10,\n rectData.height + linkY,\n menuWidth,\n 20,\n { class: \"actor\" },\n textAttrs\n );\n linkY += 30;\n }\n }\n rectElem.attr(\"height\", linkY);\n return { height: rectData.height + linkY, width: menuWidth };\n};\nconst popupMenuToggle = function(popId) {\n return \"var pu = document.getElementById('\" + popId + \"'); if (pu != null) { pu.style.display = pu.style.display == 'block' ? 'none' : 'block'; }\";\n};\nconst drawKatex = async function(elem, textData, msgModel = null) {\n let textElem = elem.append(\"foreignObject\");\n const lines = await renderKatex(textData.text, getConfig$1());\n const divElem = textElem.append(\"xhtml:div\").attr(\"style\", \"width: fit-content;\").attr(\"xmlns\", \"http://www.w3.org/1999/xhtml\").html(lines);\n const dim = divElem.node().getBoundingClientRect();\n textElem.attr(\"height\", Math.round(dim.height)).attr(\"width\", Math.round(dim.width));\n if (textData.class === \"noteText\") {\n const rectElem = elem.node().firstChild;\n rectElem.setAttribute(\"height\", dim.height + 2 * textData.textMargin);\n const rectDim = rectElem.getBBox();\n textElem.attr(\"x\", Math.round(rectDim.x + rectDim.width / 2 - dim.width / 2)).attr(\"y\", Math.round(rectDim.y + rectDim.height / 2 - dim.height / 2));\n } else if (msgModel) {\n let { startx, stopx, starty } = msgModel;\n if (startx > stopx) {\n const temp = startx;\n startx = stopx;\n stopx = temp;\n }\n textElem.attr(\"x\", Math.round(startx + Math.abs(startx - stopx) / 2 - dim.width / 2));\n if (textData.class === \"loopText\") {\n textElem.attr(\"y\", Math.round(starty));\n } else {\n textElem.attr(\"y\", Math.round(starty - dim.height));\n }\n }\n return [textElem];\n};\nconst drawText = function(elem, textData) {\n let prevTextHeight = 0;\n let textHeight = 0;\n const lines = textData.text.split(common.lineBreakRegex);\n const [_textFontSize, _textFontSizePx] = parseFontSize(textData.fontSize);\n let textElems = [];\n let dy = 0;\n let yfunc = () => textData.y;\n if (textData.valign !== void 0 && textData.textMargin !== void 0 && textData.textMargin > 0) {\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 = () => Math.round(textData.y + (prevTextHeight + textHeight + textData.textMargin) / 2);\n break;\n case \"bottom\":\n case \"end\":\n yfunc = () => Math.round(\n textData.y + (prevTextHeight + textHeight + 2 * textData.textMargin) - textData.textMargin\n );\n break;\n }\n }\n if (textData.anchor !== void 0 && textData.textMargin !== void 0 && textData.width !== void 0) {\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 = \"middle\";\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 = \"middle\";\n textData.alignmentBaseline = \"middle\";\n break;\n }\n }\n for (let [i, line] of lines.entries()) {\n if (textData.textMargin !== void 0 && textData.textMargin === 0 && _textFontSize !== void 0) {\n dy = i * _textFontSize;\n }\n const textElem = elem.append(\"text\");\n textElem.attr(\"x\", textData.x);\n textElem.attr(\"y\", yfunc());\n if (textData.anchor !== void 0) {\n textElem.attr(\"text-anchor\", textData.anchor).attr(\"dominant-baseline\", textData.dominantBaseline).attr(\"alignment-baseline\", textData.alignmentBaseline);\n }\n if (textData.fontFamily !== void 0) {\n textElem.style(\"font-family\", textData.fontFamily);\n }\n if (_textFontSizePx !== void 0) {\n textElem.style(\"font-size\", _textFontSizePx);\n }\n if (textData.fontWeight !== void 0) {\n textElem.style(\"font-weight\", textData.fontWeight);\n }\n if (textData.fill !== void 0) {\n textElem.attr(\"fill\", textData.fill);\n }\n if (textData.class !== void 0) {\n textElem.attr(\"class\", textData.class);\n }\n if (textData.dy !== void 0) {\n textElem.attr(\"dy\", textData.dy);\n } else if (dy !== 0) {\n textElem.attr(\"dy\", dy);\n }\n const text = line || ZERO_WIDTH_SPACE;\n if (textData.tspan) {\n const span = textElem.append(\"tspan\");\n span.attr(\"x\", textData.x);\n if (textData.fill !== void 0) {\n span.attr(\"fill\", textData.fill);\n }\n span.text(text);\n } else {\n textElem.text(text);\n }\n if (textData.valign !== void 0 && textData.textMargin !== void 0 && textData.textMargin > 0) {\n textHeight += (textElem._groups || textElem)[0][0].getBBox().height;\n prevTextHeight = textHeight;\n }\n textElems.push(textElem);\n }\n return textElems;\n};\nconst drawLabel = function(elem, txtObject) {\n function genPoints(x, y, width, height, cut) {\n return x + \",\" + y + \" \" + (x + width) + \",\" + y + \" \" + (x + width) + \",\" + (y + height - cut) + \" \" + (x + width - cut * 1.2) + \",\" + (y + height) + \" \" + x + \",\" + (y + height);\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 txtObject.y = txtObject.y + txtObject.height / 2;\n drawText(elem, txtObject);\n return polygon;\n};\nlet actorCnt = -1;\nconst fixLifeLineHeights = (diagram2, actors, actorKeys, conf2) => {\n if (!diagram2.select) {\n return;\n }\n actorKeys.forEach((actorKey) => {\n const actor = actors[actorKey];\n const actorDOM = diagram2.select(\"#actor\" + actor.actorCnt);\n if (!conf2.mirrorActors && actor.stopy) {\n actorDOM.attr(\"y2\", actor.stopy + actor.height / 2);\n } else if (conf2.mirrorActors) {\n actorDOM.attr(\"y2\", actor.stopy);\n }\n });\n};\nconst drawActorTypeParticipant = async function(elem, actor, conf2, isFooter) {\n const actorY = isFooter ? actor.stopy : actor.starty;\n const center = actor.x + actor.width / 2;\n const centerY = actorY + 5;\n const boxplusLineGroup = elem.append(\"g\").lower();\n var g = boxplusLineGroup;\n if (!isFooter) {\n actorCnt++;\n if (Object.keys(actor.links || {}).length && !conf2.forceMenus) {\n g.attr(\"onclick\", popupMenuToggle(`actor${actorCnt}_popup`)).attr(\"cursor\", \"pointer\");\n }\n g.append(\"line\").attr(\"id\", \"actor\" + actorCnt).attr(\"x1\", center).attr(\"y1\", centerY).attr(\"x2\", center).attr(\"y2\", 2e3).attr(\"class\", \"actor-line\").attr(\"class\", \"200\").attr(\"stroke-width\", \"0.5px\").attr(\"stroke\", \"#999\");\n g = boxplusLineGroup.append(\"g\");\n actor.actorCnt = actorCnt;\n if (actor.links != null) {\n g.attr(\"id\", \"root-\" + actorCnt);\n }\n }\n const rect = getNoteRect$1();\n var cssclass = \"actor\";\n if (actor.properties != null && actor.properties[\"class\"]) {\n cssclass = actor.properties[\"class\"];\n } else {\n rect.fill = \"#eaeaea\";\n }\n if (isFooter) {\n cssclass += ` ${BOTTOM_ACTOR_CLASS}`;\n } else {\n cssclass += ` ${TOP_ACTOR_CLASS}`;\n }\n rect.x = actor.x;\n rect.y = actorY;\n rect.width = actor.width;\n rect.height = actor.height;\n rect.class = cssclass;\n rect.rx = 3;\n rect.ry = 3;\n rect.name = actor.name;\n const rectElem = drawRect(g, rect);\n actor.rectData = rect;\n if (actor.properties != null && actor.properties[\"icon\"]) {\n const iconSrc = actor.properties[\"icon\"].trim();\n if (iconSrc.charAt(0) === \"@\") {\n drawEmbeddedImage(g, rect.x + rect.width - 20, rect.y + 10, iconSrc.substr(1));\n } else {\n drawImage(g, rect.x + rect.width - 20, rect.y + 10, iconSrc);\n }\n }\n await _drawTextCandidateFunc(conf2, hasKatex(actor.description))(\n actor.description,\n g,\n rect.x,\n rect.y,\n rect.width,\n rect.height,\n { class: \"actor\" },\n conf2\n );\n let height = actor.height;\n if (rectElem.node) {\n const bounds2 = rectElem.node().getBBox();\n actor.height = bounds2.height;\n height = bounds2.height;\n }\n return height;\n};\nconst drawActorTypeActor = async function(elem, actor, conf2, isFooter) {\n const actorY = isFooter ? actor.stopy : actor.starty;\n const center = actor.x + actor.width / 2;\n const centerY = actorY + 80;\n elem.lower();\n if (!isFooter) {\n actorCnt++;\n elem.append(\"line\").attr(\"id\", \"actor\" + actorCnt).attr(\"x1\", center).attr(\"y1\", centerY).attr(\"x2\", center).attr(\"y2\", 2e3).attr(\"class\", \"actor-line\").attr(\"class\", \"200\").attr(\"stroke-width\", \"0.5px\").attr(\"stroke\", \"#999\");\n actor.actorCnt = actorCnt;\n }\n const actElem = elem.append(\"g\");\n let cssClass = \"actor-man\";\n if (isFooter) {\n cssClass += ` ${BOTTOM_ACTOR_CLASS}`;\n } else {\n cssClass += ` ${TOP_ACTOR_CLASS}`;\n }\n actElem.attr(\"class\", cssClass);\n actElem.attr(\"name\", actor.name);\n const rect = getNoteRect$1();\n rect.x = actor.x;\n rect.y = actorY;\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 actElem.append(\"line\").attr(\"id\", \"actor-man-torso\" + actorCnt).attr(\"x1\", center).attr(\"y1\", actorY + 25).attr(\"x2\", center).attr(\"y2\", actorY + 45);\n actElem.append(\"line\").attr(\"id\", \"actor-man-arms\" + actorCnt).attr(\"x1\", center - ACTOR_TYPE_WIDTH / 2).attr(\"y1\", actorY + 33).attr(\"x2\", center + ACTOR_TYPE_WIDTH / 2).attr(\"y2\", actorY + 33);\n actElem.append(\"line\").attr(\"x1\", center - ACTOR_TYPE_WIDTH / 2).attr(\"y1\", actorY + 60).attr(\"x2\", center).attr(\"y2\", actorY + 45);\n actElem.append(\"line\").attr(\"x1\", center).attr(\"y1\", actorY + 45).attr(\"x2\", center + ACTOR_TYPE_WIDTH / 2 - 2).attr(\"y2\", actorY + 60);\n const circle = actElem.append(\"circle\");\n circle.attr(\"cx\", actor.x + actor.width / 2);\n circle.attr(\"cy\", actorY + 10);\n circle.attr(\"r\", 15);\n circle.attr(\"width\", actor.width);\n circle.attr(\"height\", actor.height);\n const bounds2 = actElem.node().getBBox();\n actor.height = bounds2.height;\n await _drawTextCandidateFunc(conf2, hasKatex(actor.description))(\n actor.description,\n actElem,\n rect.x,\n rect.y + 35,\n rect.width,\n rect.height,\n { class: \"actor\" },\n conf2\n );\n return actor.height;\n};\nconst drawActor = async function(elem, actor, conf2, isFooter) {\n switch (actor.type) {\n case \"actor\":\n return await drawActorTypeActor(elem, actor, conf2, isFooter);\n case \"participant\":\n return await drawActorTypeParticipant(elem, actor, conf2, isFooter);\n }\n};\nconst drawBox = async function(elem, box, conf2) {\n const boxplusTextGroup = elem.append(\"g\");\n const g = boxplusTextGroup;\n drawBackgroundRect(g, box);\n if (box.name) {\n await _drawTextCandidateFunc(conf2)(\n box.name,\n g,\n box.x,\n box.y + (box.textMaxHeight || 0) / 2,\n box.width,\n 0,\n { class: \"text\" },\n conf2\n );\n }\n g.lower();\n};\nconst anchorElement = function(elem) {\n return elem.append(\"g\");\n};\nconst drawActivation = function(elem, bounds2, verticalPos, conf2, actorActivations2) {\n const rect = getNoteRect$1();\n const g = bounds2.anchored;\n rect.x = bounds2.startx;\n rect.y = bounds2.starty;\n rect.class = \"activation\" + actorActivations2 % 3;\n rect.width = bounds2.stopx - bounds2.startx;\n rect.height = verticalPos - bounds2.starty;\n drawRect(g, rect);\n};\nconst drawLoop = async function(elem, loopModel, labelText, conf2) {\n const {\n boxMargin,\n boxTextMargin,\n labelBoxHeight,\n labelBoxWidth,\n messageFontFamily: fontFamily,\n messageFontSize: fontSize,\n messageFontWeight: fontWeight\n } = conf2;\n const g = elem.append(\"g\");\n const drawLoopLine = function(startx, starty, stopx, stopy) {\n return g.append(\"line\").attr(\"x1\", startx).attr(\"y1\", starty).attr(\"x2\", stopx).attr(\"y2\", stopy).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 (loopModel.sections !== void 0) {\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 let txt = getTextObj$1();\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 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 let textElem = hasKatex(txt.text) ? await drawKatex(g, txt, loopModel) : drawText(g, txt);\n if (loopModel.sectionTitles !== void 0) {\n for (const [idx, item] of Object.entries(loopModel.sectionTitles)) {\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 if (hasKatex(txt.text)) {\n loopModel.starty = loopModel.sections[idx].y;\n await drawKatex(g, txt, loopModel);\n } else {\n drawText(g, txt);\n }\n let sectionHeight = Math.round(\n textElem.map((te) => (te._groups || te)[0][0].getBBox().height).reduce((acc, curr) => acc + curr)\n );\n loopModel.sections[idx].height += sectionHeight - (boxMargin + boxTextMargin);\n }\n }\n }\n loopModel.height = Math.round(loopModel.stopy - loopModel.starty);\n return g;\n};\nconst drawBackgroundRect = function(elem, bounds2) {\n drawBackgroundRect$1(elem, bounds2);\n};\nconst insertDatabaseIcon = function(elem) {\n elem.append(\"defs\").append(\"symbol\").attr(\"id\", \"database\").attr(\"fill-rule\", \"evenodd\").attr(\"clip-rule\", \"evenodd\").append(\"path\").attr(\"transform\", \"scale(.5)\").attr(\n \"d\",\n \"M12.258.001l.256.004.255.005.253.008.251.01.249.012.247.015.246.016.242.019.241.02.239.023.236.024.233.027.231.028.229.031.225.032.223.034.22.036.217.038.214.04.211.041.208.043.205.045.201.046.198.048.194.05.191.051.187.053.183.054.18.056.175.057.172.059.168.06.163.061.16.063.155.064.15.066.074.033.073.033.071.034.07.034.069.035.068.035.067.035.066.035.064.036.064.036.062.036.06.036.06.037.058.037.058.037.055.038.055.038.053.038.052.038.051.039.05.039.048.039.047.039.045.04.044.04.043.04.041.04.04.041.039.041.037.041.036.041.034.041.033.042.032.042.03.042.029.042.027.042.026.043.024.043.023.043.021.043.02.043.018.044.017.043.015.044.013.044.012.044.011.045.009.044.007.045.006.045.004.045.002.045.001.045v17l-.001.045-.002.045-.004.045-.006.045-.007.045-.009.044-.011.045-.012.044-.013.044-.015.044-.017.043-.018.044-.02.043-.021.043-.023.043-.024.043-.026.043-.027.042-.029.042-.03.042-.032.042-.033.042-.034.041-.036.041-.037.041-.039.041-.04.041-.041.04-.043.04-.044.04-.045.04-.047.039-.048.039-.05.039-.051.039-.052.038-.053.038-.055.038-.055.038-.058.037-.058.037-.06.037-.06.036-.062.036-.064.036-.064.036-.066.035-.067.035-.068.035-.069.035-.07.034-.071.034-.073.033-.074.033-.15.066-.155.064-.16.063-.163.061-.168.06-.172.059-.175.057-.18.056-.183.054-.187.053-.191.051-.194.05-.198.048-.201.046-.205.045-.208.043-.211.041-.214.04-.217.038-.22.036-.223.034-.225.032-.229.031-.231.028-.233.027-.236.024-.239.023-.241.02-.242.019-.246.016-.247.015-.249.012-.251.01-.253.008-.255.005-.256.004-.258.001-.258-.001-.256-.004-.255-.005-.253-.008-.251-.01-.249-.012-.247-.015-.245-.016-.243-.019-.241-.02-.238-.023-.236-.024-.234-.027-.231-.028-.228-.031-.226-.032-.223-.034-.22-.036-.217-.038-.214-.04-.211-.041-.208-.043-.204-.045-.201-.046-.198-.048-.195-.05-.19-.051-.187-.053-.184-.054-.179-.056-.176-.057-.172-.059-.167-.06-.164-.061-.159-.063-.155-.064-.151-.066-.074-.033-.072-.033-.072-.034-.07-.034-.069-.035-.068-.035-.067-.035-.066-.035-.064-.036-.063-.036-.062-.036-.061-.036-.06-.037-.058-.037-.057-.037-.056-.038-.055-.038-.053-.038-.052-.038-.051-.039-.049-.039-.049-.039-.046-.039-.046-.04-.044-.04-.043-.04-.041-.04-.04-.041-.039-.041-.037-.041-.036-.041-.034-.041-.033-.042-.032-.042-.03-.042-.029-.042-.027-.042-.026-.043-.024-.043-.023-.043-.021-.043-.02-.043-.018-.044-.017-.043-.015-.044-.013-.044-.012-.044-.011-.045-.009-.044-.007-.045-.006-.045-.004-.045-.002-.045-.001-.045v-17l.001-.045.002-.045.004-.045.006-.045.007-.045.009-.044.011-.045.012-.044.013-.044.015-.044.017-.043.018-.044.02-.043.021-.043.023-.043.024-.043.026-.043.027-.042.029-.042.03-.042.032-.042.033-.042.034-.041.036-.041.037-.041.039-.041.04-.041.041-.04.043-.04.044-.04.046-.04.046-.039.049-.039.049-.039.051-.039.052-.038.053-.038.055-.038.056-.038.057-.037.058-.037.06-.037.061-.036.062-.036.063-.036.064-.036.066-.035.067-.035.068-.035.069-.035.07-.034.072-.034.072-.033.074-.033.151-.066.155-.064.159-.063.164-.061.167-.06.172-.059.176-.057.179-.056.184-.054.187-.053.19-.051.195-.05.198-.048.201-.046.204-.045.208-.043.211-.041.214-.04.217-.038.22-.036.223-.034.226-.032.228-.031.231-.028.234-.027.236-.024.238-.023.241-.02.243-.019.245-.016.247-.015.249-.012.251-.01.253-.008.255-.005.256-.004.258-.001.258.001zm-9.258 20.499v.01l.001.021.003.021.004.022.005.021.006.022.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.023.018.024.019.024.021.024.022.025.023.024.024.025.052.049.056.05.061.051.066.051.07.051.075.051.079.052.084.052.088.052.092.052.097.052.102.051.105.052.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.048.144.049.147.047.152.047.155.047.16.045.163.045.167.043.171.043.176.041.178.041.183.039.187.039.19.037.194.035.197.035.202.033.204.031.209.03.212.029.216.027.219.025.222.024.226.021.23.02.233.018.236.016.24.015.243.012.246.01.249.008.253.005.256.004.259.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.021.224-.024.22-.026.216-.027.212-.028.21-.031.205-.031.202-.034.198-.034.194-.036.191-.037.187-.039.183-.04.179-.04.175-.042.172-.043.168-.044.163-.045.16-.046.155-.046.152-.047.148-.048.143-.049.139-.049.136-.05.131-.05.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.053.083-.051.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.05.023-.024.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.023.01-.022.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.127l-.077.055-.08.053-.083.054-.085.053-.087.052-.09.052-.093.051-.095.05-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.045-.118.044-.12.043-.122.042-.124.042-.126.041-.128.04-.13.04-.132.038-.134.038-.135.037-.138.037-.139.035-.142.035-.143.034-.144.033-.147.032-.148.031-.15.03-.151.03-.153.029-.154.027-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.01-.179.008-.179.008-.181.006-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.006-.179-.008-.179-.008-.178-.01-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.027-.153-.029-.151-.03-.15-.03-.148-.031-.146-.032-.145-.033-.143-.034-.141-.035-.14-.035-.137-.037-.136-.037-.134-.038-.132-.038-.13-.04-.128-.04-.126-.041-.124-.042-.122-.042-.12-.044-.117-.043-.116-.045-.113-.045-.112-.046-.109-.047-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.05-.093-.052-.09-.051-.087-.052-.085-.053-.083-.054-.08-.054-.077-.054v4.127zm0-5.654v.011l.001.021.003.021.004.021.005.022.006.022.007.022.009.022.01.022.011.023.012.023.013.023.015.024.016.023.017.024.018.024.019.024.021.024.022.024.023.025.024.024.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.052.11.051.114.051.119.052.123.05.127.051.131.05.135.049.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.044.171.042.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.022.23.02.233.018.236.016.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.012.241-.015.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.048.139-.05.136-.049.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.051.051-.049.023-.025.023-.024.021-.025.02-.024.019-.024.018-.024.017-.024.015-.023.014-.023.013-.024.012-.022.01-.023.01-.023.008-.022.006-.022.006-.022.004-.021.004-.022.001-.021.001-.021v-4.139l-.077.054-.08.054-.083.054-.085.052-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.044-.118.044-.12.044-.122.042-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.035-.143.033-.144.033-.147.033-.148.031-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.009-.179.009-.179.007-.181.007-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.007-.179-.007-.179-.009-.178-.009-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.031-.146-.033-.145-.033-.143-.033-.141-.035-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.04-.126-.041-.124-.042-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.051-.093-.051-.09-.051-.087-.053-.085-.052-.083-.054-.08-.054-.077-.054v4.139zm0-5.666v.011l.001.02.003.022.004.021.005.022.006.021.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.024.018.023.019.024.021.025.022.024.023.024.024.025.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.051.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.043.171.043.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.021.23.02.233.018.236.017.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.013.241-.014.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.049.139-.049.136-.049.131-.051.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.049.023-.025.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.022.01-.023.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.153l-.077.054-.08.054-.083.053-.085.053-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.048-.105.048-.106.048-.109.046-.111.046-.114.046-.115.044-.118.044-.12.043-.122.043-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.034-.143.034-.144.033-.147.032-.148.032-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.024-.161.024-.162.023-.163.023-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.01-.178.01-.179.009-.179.007-.181.006-.182.006-.182.004-.184.003-.184.001-.185.001-.185-.001-.184-.001-.184-.003-.182-.004-.182-.006-.181-.006-.179-.007-.179-.009-.178-.01-.176-.01-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.023-.162-.023-.161-.024-.159-.024-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.032-.146-.032-.145-.033-.143-.034-.141-.034-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.041-.126-.041-.124-.041-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.048-.105-.048-.102-.048-.1-.05-.097-.049-.095-.051-.093-.051-.09-.052-.087-.052-.085-.053-.083-.053-.08-.054-.077-.054v4.153zm8.74-8.179l-.257.004-.254.005-.25.008-.247.011-.244.012-.241.014-.237.016-.233.018-.231.021-.226.022-.224.023-.22.026-.216.027-.212.028-.21.031-.205.032-.202.033-.198.034-.194.036-.191.038-.187.038-.183.04-.179.041-.175.042-.172.043-.168.043-.163.045-.16.046-.155.046-.152.048-.148.048-.143.048-.139.049-.136.05-.131.05-.126.051-.123.051-.118.051-.114.052-.11.052-.106.052-.101.052-.096.052-.092.052-.088.052-.083.052-.079.052-.074.051-.07.052-.065.051-.06.05-.056.05-.051.05-.023.025-.023.024-.021.024-.02.025-.019.024-.018.024-.017.023-.015.024-.014.023-.013.023-.012.023-.01.023-.01.022-.008.022-.006.023-.006.021-.004.022-.004.021-.001.021-.001.021.001.021.001.021.004.021.004.022.006.021.006.023.008.022.01.022.01.023.012.023.013.023.014.023.015.024.017.023.018.024.019.024.02.025.021.024.023.024.023.025.051.05.056.05.06.05.065.051.07.052.074.051.079.052.083.052.088.052.092.052.096.052.101.052.106.052.11.052.114.052.118.051.123.051.126.051.131.05.136.05.139.049.143.048.148.048.152.048.155.046.16.046.163.045.168.043.172.043.175.042.179.041.183.04.187.038.191.038.194.036.198.034.202.033.205.032.21.031.212.028.216.027.22.026.224.023.226.022.231.021.233.018.237.016.241.014.244.012.247.011.25.008.254.005.257.004.26.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.022.224-.023.22-.026.216-.027.212-.028.21-.031.205-.032.202-.033.198-.034.194-.036.191-.038.187-.038.183-.04.179-.041.175-.042.172-.043.168-.043.163-.045.16-.046.155-.046.152-.048.148-.048.143-.048.139-.049.136-.05.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.05.051-.05.023-.025.023-.024.021-.024.02-.025.019-.024.018-.024.017-.023.015-.024.014-.023.013-.023.012-.023.01-.023.01-.022.008-.022.006-.023.006-.021.004-.022.004-.021.001-.021.001-.021-.001-.021-.001-.021-.004-.021-.004-.022-.006-.021-.006-.023-.008-.022-.01-.022-.01-.023-.012-.023-.013-.023-.014-.023-.015-.024-.017-.023-.018-.024-.019-.024-.02-.025-.021-.024-.023-.024-.023-.025-.051-.05-.056-.05-.06-.05-.065-.051-.07-.052-.074-.051-.079-.052-.083-.052-.088-.052-.092-.052-.096-.052-.101-.052-.106-.052-.11-.052-.114-.052-.118-.051-.123-.051-.126-.051-.131-.05-.136-.05-.139-.049-.143-.048-.148-.048-.152-.048-.155-.046-.16-.046-.163-.045-.168-.043-.172-.043-.175-.042-.179-.041-.183-.04-.187-.038-.191-.038-.194-.036-.198-.034-.202-.033-.205-.032-.21-.031-.212-.028-.216-.027-.22-.026-.224-.023-.226-.022-.231-.021-.233-.018-.237-.016-.241-.014-.244-.012-.247-.011-.25-.008-.254-.005-.257-.004-.26-.001-.26.001z\"\n );\n};\nconst insertComputerIcon = function(elem) {\n elem.append(\"defs\").append(\"symbol\").attr(\"id\", \"computer\").attr(\"width\", \"24\").attr(\"height\", \"24\").append(\"path\").attr(\"transform\", \"scale(.5)\").attr(\n \"d\",\n \"M2 2v13h20v-13h-20zm18 11h-16v-9h16v9zm-10.228 6l.466-1h3.524l.467 1h-4.457zm14.228 3h-24l2-6h2.104l-1.33 4h18.45l-1.297-4h2.073l2 6zm-5-10h-14v-7h14v7z\"\n );\n};\nconst insertClockIcon = function(elem) {\n elem.append(\"defs\").append(\"symbol\").attr(\"id\", \"clock\").attr(\"width\", \"24\").attr(\"height\", \"24\").append(\"path\").attr(\"transform\", \"scale(.5)\").attr(\n \"d\",\n \"M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm5.848 12.459c.202.038.202.333.001.372-1.907.361-6.045 1.111-6.547 1.111-.719 0-1.301-.582-1.301-1.301 0-.512.77-5.447 1.125-7.445.034-.192.312-.181.343.014l.985 6.238 5.394 1.011z\"\n );\n};\nconst insertArrowHead = function(elem) {\n elem.append(\"defs\").append(\"marker\").attr(\"id\", \"arrowhead\").attr(\"refX\", 7.9).attr(\"refY\", 5).attr(\"markerUnits\", \"userSpaceOnUse\").attr(\"markerWidth\", 12).attr(\"markerHeight\", 12).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 0 0 L 10 5 L 0 10 z\");\n};\nconst insertArrowFilledHead = function(elem) {\n elem.append(\"defs\").append(\"marker\").attr(\"id\", \"filled-head\").attr(\"refX\", 15.5).attr(\"refY\", 7).attr(\"markerWidth\", 20).attr(\"markerHeight\", 28).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 18,7 L9,13 L14,7 L9,1 Z\");\n};\nconst insertSequenceNumber = function(elem) {\n elem.append(\"defs\").append(\"marker\").attr(\"id\", \"sequencenumber\").attr(\"refX\", 15).attr(\"refY\", 15).attr(\"markerWidth\", 60).attr(\"markerHeight\", 40).attr(\"orient\", \"auto\").append(\"circle\").attr(\"cx\", 15).attr(\"cy\", 15).attr(\"r\", 6);\n};\nconst insertArrowCrossHead = function(elem) {\n const defs = elem.append(\"defs\");\n const marker = defs.append(\"marker\").attr(\"id\", \"crosshead\").attr(\"markerWidth\", 15).attr(\"markerHeight\", 8).attr(\"orient\", \"auto\").attr(\"refX\", 4).attr(\"refY\", 4.5);\n marker.append(\"path\").attr(\"fill\", \"none\").attr(\"stroke\", \"#000000\").style(\"stroke-dasharray\", \"0, 0\").attr(\"stroke-width\", \"1pt\").attr(\"d\", \"M 1,2 L 6,7 M 6,2 L 1,7\");\n};\nconst getTextObj = function() {\n return {\n x: 0,\n y: 0,\n fill: void 0,\n anchor: void 0,\n style: \"#666\",\n width: void 0,\n height: void 0,\n textMargin: 0,\n rx: 0,\n ry: 0,\n tspan: true,\n valign: void 0\n };\n};\nconst 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};\nconst _drawTextCandidateFunc = function() {\n function byText(content, g, x, y, width, height, textAttrs) {\n const text = g.append(\"text\").attr(\"x\", x + width / 2).attr(\"y\", y + height / 2 + 5).style(\"text-anchor\", \"middle\").text(content);\n _setTextAttrs(text, textAttrs);\n }\n function byTspan(content, g, x, y, width, height, textAttrs, conf2) {\n const { actorFontSize, actorFontFamily, actorFontWeight } = conf2;\n const [_actorFontSize, _actorFontSizePx] = parseFontSize(actorFontSize);\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.append(\"text\").attr(\"x\", x + width / 2).attr(\"y\", y).style(\"text-anchor\", \"middle\").style(\"font-size\", _actorFontSizePx).style(\"font-weight\", actorFontWeight).style(\"font-family\", actorFontFamily);\n text.append(\"tspan\").attr(\"x\", x + width / 2).attr(\"dy\", dy).text(lines[i]);\n text.attr(\"y\", y + height / 2).attr(\"dominant-baseline\", \"central\").attr(\"alignment-baseline\", \"central\");\n _setTextAttrs(text, textAttrs);\n }\n }\n function byFo(content, g, x, y, width, height, textAttrs, conf2) {\n const s = g.append(\"switch\");\n const f = s.append(\"foreignObject\").attr(\"x\", x).attr(\"y\", y).attr(\"width\", width).attr(\"height\", height);\n const text = f.append(\"xhtml:div\").style(\"display\", \"table\").style(\"height\", \"100%\").style(\"width\", \"100%\");\n text.append(\"div\").style(\"display\", \"table-cell\").style(\"text-align\", \"center\").style(\"vertical-align\", \"middle\").text(content);\n byTspan(content, s, x, y, width, height, textAttrs, conf2);\n _setTextAttrs(text, textAttrs);\n }\n async function byKatex(content, g, x, y, width, height, textAttrs, conf2) {\n const dim = await calculateMathMLDimensions(content, getConfig$1());\n const s = g.append(\"switch\");\n const f = s.append(\"foreignObject\").attr(\"x\", x + width / 2 - dim.width / 2).attr(\"y\", y + height / 2 - dim.height / 2).attr(\"width\", dim.width).attr(\"height\", dim.height);\n const text = f.append(\"xhtml:div\").style(\"height\", \"100%\").style(\"width\", \"100%\");\n text.append(\"div\").style(\"text-align\", \"center\").style(\"vertical-align\", \"middle\").html(await renderKatex(content, getConfig$1()));\n byTspan(content, s, x, y, width, height, textAttrs, conf2);\n _setTextAttrs(text, textAttrs);\n }\n function _setTextAttrs(toText, fromTextAttrsDict) {\n for (const key in fromTextAttrsDict) {\n if (fromTextAttrsDict.hasOwnProperty(key)) {\n toText.attr(key, fromTextAttrsDict[key]);\n }\n }\n }\n return function(conf2, hasKatex2 = false) {\n if (hasKatex2) {\n return byKatex;\n }\n return conf2.textPlacement === \"fo\" ? byFo : conf2.textPlacement === \"old\" ? byText : byTspan;\n };\n}();\nconst _drawMenuItemTextCandidateFunc = function() {\n function byText(content, g, x, y, width, height, textAttrs) {\n const text = g.append(\"text\").attr(\"x\", x).attr(\"y\", y).style(\"text-anchor\", \"start\").text(content);\n _setTextAttrs(text, textAttrs);\n }\n function byTspan(content, g, x, y, width, height, textAttrs, conf2) {\n const { actorFontSize, actorFontFamily, actorFontWeight } = conf2;\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.append(\"text\").attr(\"x\", x).attr(\"y\", y).style(\"text-anchor\", \"start\").style(\"font-size\", actorFontSize).style(\"font-weight\", actorFontWeight).style(\"font-family\", actorFontFamily);\n text.append(\"tspan\").attr(\"x\", x).attr(\"dy\", dy).text(lines[i]);\n text.attr(\"y\", y + height / 2).attr(\"dominant-baseline\", \"central\").attr(\"alignment-baseline\", \"central\");\n _setTextAttrs(text, textAttrs);\n }\n }\n function byFo(content, g, x, y, width, height, textAttrs, conf2) {\n const s = g.append(\"switch\");\n const f = s.append(\"foreignObject\").attr(\"x\", x).attr(\"y\", y).attr(\"width\", width).attr(\"height\", height);\n const text = f.append(\"xhtml:div\").style(\"display\", \"table\").style(\"height\", \"100%\").style(\"width\", \"100%\");\n text.append(\"div\").style(\"display\", \"table-cell\").style(\"text-align\", \"center\").style(\"vertical-align\", \"middle\").text(content);\n byTspan(content, s, x, y, width, height, textAttrs, conf2);\n _setTextAttrs(text, textAttrs);\n }\n function _setTextAttrs(toText, fromTextAttrsDict) {\n for (const key in fromTextAttrsDict) {\n if (fromTextAttrsDict.hasOwnProperty(key)) {\n toText.attr(key, fromTextAttrsDict[key]);\n }\n }\n }\n return function(conf2) {\n return conf2.textPlacement === \"fo\" ? byFo : conf2.textPlacement === \"old\" ? byText : byTspan;\n };\n}();\nconst svgDraw = {\n drawRect,\n drawText,\n drawLabel,\n drawActor,\n drawBox,\n drawPopup,\n anchorElement,\n drawActivation,\n drawLoop,\n drawBackgroundRect,\n insertArrowHead,\n insertArrowFilledHead,\n insertSequenceNumber,\n insertArrowCrossHead,\n insertDatabaseIcon,\n insertComputerIcon,\n insertClockIcon,\n getTextObj,\n getNoteRect,\n fixLifeLineHeights,\n sanitizeUrl\n};\nlet conf = {};\nconst bounds = {\n data: {\n startx: void 0,\n stopx: void 0,\n starty: void 0,\n stopy: void 0\n },\n verticalPos: 0,\n sequenceItems: [],\n activations: [],\n models: {\n getHeight: function() {\n return Math.max.apply(\n null,\n this.actors.length === 0 ? [0] : this.actors.map((actor) => actor.height || 0)\n ) + (this.loops.length === 0 ? 0 : this.loops.map((it) => it.height || 0).reduce((acc, h) => acc + h)) + (this.messages.length === 0 ? 0 : this.messages.map((it) => it.height || 0).reduce((acc, h) => acc + h)) + (this.notes.length === 0 ? 0 : this.notes.map((it) => it.height || 0).reduce((acc, h) => acc + h));\n },\n clear: function() {\n this.actors = [];\n this.boxes = [];\n this.loops = [];\n this.messages = [];\n this.notes = [];\n },\n addBox: function(boxModel) {\n this.boxes.push(boxModel);\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 boxes: [],\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: void 0,\n stopx: void 0,\n starty: void 0,\n stopy: void 0\n };\n this.verticalPos = 0;\n setConf(getConfig());\n },\n updateVal: function(obj, key, val, fun) {\n if (obj[key] === void 0) {\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 const n = _self.sequenceItems.length - cnt + 1;\n _self.updateVal(item, \"starty\", starty - n * conf.boxMargin, Math.min);\n _self.updateVal(item, \"stopy\", stopy + n * conf.boxMargin, Math.max);\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 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 _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 this.sequenceItems.forEach(updateFn());\n this.activations.forEach(updateFn(\"activation\"));\n },\n insert: function(startx, starty, stopx, stopy) {\n const _startx = common.getMin(startx, stopx);\n const _stopx = common.getMax(startx, stopx);\n const _starty = common.getMin(starty, stopy);\n const _stopy = common.getMax(starty, stopy);\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 this.updateBounds(_startx, _starty, _stopx, _stopy);\n },\n newActivation: function(message, diagram2, 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: void 0,\n actor: message.from.actor,\n anchored: svgDraw.anchorElement(diagram2)\n });\n },\n endActivation: function(message) {\n const lastActorActivationIdx = this.activations.map(function(activation) {\n return activation.actor;\n }).lastIndexOf(message.from.actor);\n return this.activations.splice(lastActorActivationIdx, 1)[0];\n },\n createLoop: function(title = { message: void 0, wrap: false, width: void 0 }, fill) {\n return {\n startx: void 0,\n starty: this.verticalPos,\n stopx: void 0,\n stopy: void 0,\n title: title.message,\n wrap: title.wrap,\n width: title.width,\n height: 0,\n fill\n };\n },\n newLoop: function(title = { message: void 0, wrap: false, width: void 0 }, fill) {\n this.sequenceItems.push(this.createLoop(title, fill));\n },\n endLoop: function() {\n return this.sequenceItems.pop();\n },\n isLoopOverlap: function() {\n return this.sequenceItems.length ? this.sequenceItems[this.sequenceItems.length - 1].overlap : false;\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 saveVerticalPos: function() {\n if (this.isLoopOverlap()) {\n this.savedVerticalPos = this.verticalPos;\n }\n },\n resetVerticalPos: function() {\n if (this.isLoopOverlap()) {\n this.verticalPos = this.savedVerticalPos;\n }\n },\n bumpVerticalPos: function(bump) {\n this.verticalPos = this.verticalPos + bump;\n this.data.stopy = common.getMax(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};\nconst drawNote = async function(elem, noteModel) {\n bounds.bumpVerticalPos(conf.boxMargin);\n noteModel.height = conf.boxMargin;\n noteModel.starty = bounds.getVerticalPos();\n const rect = getNoteRect$1();\n rect.x = noteModel.startx;\n rect.y = noteModel.starty;\n rect.width = noteModel.width || conf.width;\n rect.class = \"note\";\n const g = elem.append(\"g\");\n const rectElem = svgDraw.drawRect(g, rect);\n const textObj = getTextObj$1();\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 = \"center\";\n const textElem = hasKatex(textObj.text) ? await drawKatex(g, textObj) : drawText(g, textObj);\n const textHeight = Math.round(\n textElem.map((te) => (te._groups || te)[0][0].getBBox().height).reduce((acc, curr) => acc + curr)\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};\nconst messageFont = (cnf) => {\n return {\n fontFamily: cnf.messageFontFamily,\n fontSize: cnf.messageFontSize,\n fontWeight: cnf.messageFontWeight\n };\n};\nconst noteFont = (cnf) => {\n return {\n fontFamily: cnf.noteFontFamily,\n fontSize: cnf.noteFontSize,\n fontWeight: cnf.noteFontWeight\n };\n};\nconst actorFont = (cnf) => {\n return {\n fontFamily: cnf.actorFontFamily,\n fontSize: cnf.actorFontSize,\n fontWeight: cnf.actorFontWeight\n };\n};\nasync function boundMessage(_diagram, msgModel) {\n bounds.bumpVerticalPos(10);\n const { startx, stopx, message } = msgModel;\n const lines = common.splitBreaks(message).length;\n const isKatexMsg = hasKatex(message);\n const textDims = isKatexMsg ? await calculateMathMLDimensions(message, getConfig()) : utils.calculateTextDimensions(message, messageFont(conf));\n if (!isKatexMsg) {\n const lineHeight = textDims.height / lines;\n msgModel.height += lineHeight;\n bounds.bumpVerticalPos(lineHeight);\n }\n let lineStartY;\n let totalOffset = textDims.height - 10;\n const textWidth = textDims.width;\n if (startx === stopx) {\n lineStartY = bounds.getVerticalPos() + totalOffset;\n if (!conf.rightAngles) {\n totalOffset += conf.boxMargin;\n lineStartY = bounds.getVerticalPos() + totalOffset;\n }\n totalOffset += 30;\n const dx = common.getMax(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 bounds.insert(startx, lineStartY - 10, stopx, lineStartY);\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 return lineStartY;\n}\nconst drawMessage = async function(diagram2, msgModel, lineStartY, diagObj) {\n const { startx, stopx, starty, message, type, sequenceIndex, sequenceVisible } = msgModel;\n const textDims = utils.calculateTextDimensions(message, messageFont(conf));\n const textObj = getTextObj$1();\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 = \"center\";\n textObj.textMargin = conf.wrapPadding;\n textObj.tspan = false;\n hasKatex(textObj.text) ? await drawKatex(diagram2, textObj, { startx, stopx, starty: lineStartY }) : drawText(diagram2, textObj);\n const textWidth = textDims.width;\n let line;\n if (startx === stopx) {\n if (conf.rightAngles) {\n line = diagram2.append(\"path\").attr(\n \"d\",\n `M ${startx},${lineStartY} H ${startx + common.getMax(conf.width / 2, textWidth / 2)} V ${lineStartY + 25} H ${startx}`\n );\n } else {\n line = diagram2.append(\"path\").attr(\n \"d\",\n \"M \" + startx + \",\" + lineStartY + \" C \" + (startx + 60) + \",\" + (lineStartY - 10) + \" \" + (startx + 60) + \",\" + (lineStartY + 30) + \" \" + startx + \",\" + (lineStartY + 20)\n );\n }\n } else {\n line = diagram2.append(\"line\");\n line.attr(\"x1\", startx);\n line.attr(\"y1\", lineStartY);\n line.attr(\"x2\", stopx);\n line.attr(\"y2\", lineStartY);\n }\n if (type === diagObj.db.LINETYPE.DOTTED || type === diagObj.db.LINETYPE.DOTTED_CROSS || type === diagObj.db.LINETYPE.DOTTED_POINT || type === diagObj.db.LINETYPE.DOTTED_OPEN) {\n line.style(\"stroke-dasharray\", \"3, 3\");\n line.attr(\"class\", \"messageLine1\");\n } else {\n line.attr(\"class\", \"messageLine0\");\n }\n let url = \"\";\n if (conf.arrowMarkerAbsolute) {\n url = window.location.protocol + \"//\" + window.location.host + window.location.pathname + window.location.search;\n url = url.replace(/\\(/g, \"\\\\(\");\n url = url.replace(/\\)/g, \"\\\\)\");\n }\n line.attr(\"stroke-width\", 2);\n line.attr(\"stroke\", \"none\");\n line.style(\"fill\", \"none\");\n if (type === diagObj.db.LINETYPE.SOLID || type === diagObj.db.LINETYPE.DOTTED) {\n line.attr(\"marker-end\", \"url(\" + url + \"#arrowhead)\");\n }\n if (type === diagObj.db.LINETYPE.SOLID_POINT || type === diagObj.db.LINETYPE.DOTTED_POINT) {\n line.attr(\"marker-end\", \"url(\" + url + \"#filled-head)\");\n }\n if (type === diagObj.db.LINETYPE.SOLID_CROSS || type === diagObj.db.LINETYPE.DOTTED_CROSS) {\n line.attr(\"marker-end\", \"url(\" + url + \"#crosshead)\");\n }\n if (sequenceVisible || conf.showSequenceNumbers) {\n line.attr(\"marker-start\", \"url(\" + url + \"#sequencenumber)\");\n diagram2.append(\"text\").attr(\"x\", startx).attr(\"y\", lineStartY + 4).attr(\"font-family\", \"sans-serif\").attr(\"font-size\", \"12px\").attr(\"text-anchor\", \"middle\").attr(\"class\", \"sequenceNumber\").text(sequenceIndex);\n }\n};\nconst addActorRenderingData = async function(diagram2, actors, createdActors, actorKeys, verticalPos, messages, isFooter) {\n let prevWidth = 0;\n let prevMargin = 0;\n let prevBox = void 0;\n let maxHeight = 0;\n for (const actorKey of actorKeys) {\n const actor = actors[actorKey];\n const box = actor.box;\n if (prevBox && prevBox != box) {\n if (!isFooter) {\n bounds.models.addBox(prevBox);\n }\n prevMargin += conf.boxMargin + prevBox.margin;\n }\n if (box && box != prevBox) {\n if (!isFooter) {\n box.x = prevWidth + prevMargin;\n box.y = verticalPos;\n }\n prevMargin += box.margin;\n }\n actor.width = actor.width || conf.width;\n actor.height = common.getMax(actor.height || conf.height, conf.height);\n actor.margin = actor.margin || conf.actorMargin;\n maxHeight = common.getMax(maxHeight, actor.height);\n if (createdActors[actor.name]) {\n prevMargin += actor.width / 2;\n }\n actor.x = prevWidth + prevMargin;\n actor.starty = bounds.getVerticalPos();\n bounds.insert(actor.x, verticalPos, actor.x + actor.width, actor.height);\n prevWidth += actor.width + prevMargin;\n if (actor.box) {\n actor.box.width = prevWidth + box.margin - actor.box.x;\n }\n prevMargin = actor.margin;\n prevBox = actor.box;\n bounds.models.addActor(actor);\n }\n if (prevBox && !isFooter) {\n bounds.models.addBox(prevBox);\n }\n bounds.bumpVerticalPos(maxHeight);\n};\nconst drawActors = async function(diagram2, actors, actorKeys, isFooter) {\n if (!isFooter) {\n for (const actorKey of actorKeys) {\n const actor = actors[actorKey];\n await svgDraw.drawActor(diagram2, actor, conf, false);\n }\n } else {\n let maxHeight = 0;\n bounds.bumpVerticalPos(conf.boxMargin * 2);\n for (const actorKey of actorKeys) {\n const actor = actors[actorKey];\n if (!actor.stopy) {\n actor.stopy = bounds.getVerticalPos();\n }\n const height = await svgDraw.drawActor(diagram2, actor, conf, true);\n maxHeight = common.getMax(maxHeight, height);\n }\n bounds.bumpVerticalPos(maxHeight + conf.boxMargin);\n }\n};\nconst drawActorsPopup = function(diagram2, actors, actorKeys, doc) {\n let maxHeight = 0;\n let maxWidth = 0;\n for (const actorKey of actorKeys) {\n const actor = actors[actorKey];\n const minMenuWidth = getRequiredPopupWidth(actor);\n const menuDimensions = svgDraw.drawPopup(\n diagram2,\n actor,\n minMenuWidth,\n conf,\n conf.forceMenus,\n doc\n );\n if (menuDimensions.height > maxHeight) {\n maxHeight = menuDimensions.height;\n }\n if (menuDimensions.width + actor.x > maxWidth) {\n maxWidth = menuDimensions.width + actor.x;\n }\n }\n return { maxHeight, maxWidth };\n};\nconst setConf = function(cnf) {\n assignWithDepth(conf, cnf);\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};\nconst actorActivations = function(actor) {\n return bounds.activations.filter(function(activation) {\n return activation.actor === actor;\n });\n};\nconst activationBounds = function(actor, actors) {\n const actorObj = actors[actor];\n const activations = actorActivations(actor);\n const left = activations.reduce(function(acc, activation) {\n return common.getMin(acc, activation.startx);\n }, actorObj.x + actorObj.width / 2 - 1);\n const right = activations.reduce(function(acc, activation) {\n return common.getMax(acc, activation.stopx);\n }, actorObj.x + actorObj.width / 2 + 1);\n return [left, right];\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 const loopWidth = loopWidths[msg.id].width;\n const textConf = messageFont(conf);\n msg.message = utils.wrapLabel(`[${msg.message}]`, loopWidth - 2 * conf.wrapPadding, textConf);\n msg.width = loopWidth;\n msg.wrap = true;\n const textDims = utils.calculateTextDimensions(msg.message, textConf);\n const totalOffset = common.getMax(textDims.height, conf.labelBoxHeight);\n heightAdjust = postMargin + totalOffset;\n log.debug(`${totalOffset} - ${msg.message}`);\n }\n addLoopFn(msg);\n bounds.bumpVerticalPos(heightAdjust);\n}\nfunction adjustCreatedDestroyedData(msg, msgModel, lineStartY, index, actors, createdActors, destroyedActors) {\n function receiverAdjustment(actor, adjustment) {\n if (actor.x < actors[msg.from].x) {\n bounds.insert(\n msgModel.stopx - adjustment,\n msgModel.starty,\n msgModel.startx,\n msgModel.stopy + actor.height / 2 + conf.noteMargin\n );\n msgModel.stopx = msgModel.stopx + adjustment;\n } else {\n bounds.insert(\n msgModel.startx,\n msgModel.starty,\n msgModel.stopx + adjustment,\n msgModel.stopy + actor.height / 2 + conf.noteMargin\n );\n msgModel.stopx = msgModel.stopx - adjustment;\n }\n }\n function senderAdjustment(actor, adjustment) {\n if (actor.x < actors[msg.to].x) {\n bounds.insert(\n msgModel.startx - adjustment,\n msgModel.starty,\n msgModel.stopx,\n msgModel.stopy + actor.height / 2 + conf.noteMargin\n );\n msgModel.startx = msgModel.startx + adjustment;\n } else {\n bounds.insert(\n msgModel.stopx,\n msgModel.starty,\n msgModel.startx + adjustment,\n msgModel.stopy + actor.height / 2 + conf.noteMargin\n );\n msgModel.startx = msgModel.startx - adjustment;\n }\n }\n if (createdActors[msg.to] == index) {\n const actor = actors[msg.to];\n const adjustment = actor.type == \"actor\" ? ACTOR_TYPE_WIDTH / 2 + 3 : actor.width / 2 + 3;\n receiverAdjustment(actor, adjustment);\n actor.starty = lineStartY - actor.height / 2;\n bounds.bumpVerticalPos(actor.height / 2);\n } else if (destroyedActors[msg.from] == index) {\n const actor = actors[msg.from];\n if (conf.mirrorActors) {\n const adjustment = actor.type == \"actor\" ? ACTOR_TYPE_WIDTH / 2 : actor.width / 2;\n senderAdjustment(actor, adjustment);\n }\n actor.stopy = lineStartY - actor.height / 2;\n bounds.bumpVerticalPos(actor.height / 2);\n } else if (destroyedActors[msg.to] == index) {\n const actor = actors[msg.to];\n if (conf.mirrorActors) {\n const adjustment = actor.type == \"actor\" ? ACTOR_TYPE_WIDTH / 2 + 3 : actor.width / 2 + 3;\n receiverAdjustment(actor, adjustment);\n }\n actor.stopy = lineStartY - actor.height / 2;\n bounds.bumpVerticalPos(actor.height / 2);\n }\n}\nconst draw = async function(_text, id, _version, diagObj) {\n const { securityLevel, sequence } = getConfig();\n conf = sequence;\n let sandboxElement;\n if (securityLevel === \"sandbox\") {\n sandboxElement = select(\"#i\" + id);\n }\n const root = securityLevel === \"sandbox\" ? select(sandboxElement.nodes()[0].contentDocument.body) : select(\"body\");\n const doc = securityLevel === \"sandbox\" ? sandboxElement.nodes()[0].contentDocument : document;\n bounds.init();\n log.debug(diagObj.db);\n const diagram2 = securityLevel === \"sandbox\" ? root.select(`[id=\"${id}\"]`) : select(`[id=\"${id}\"]`);\n const actors = diagObj.db.getActors();\n const createdActors = diagObj.db.getCreatedActors();\n const destroyedActors = diagObj.db.getDestroyedActors();\n const boxes = diagObj.db.getBoxes();\n let actorKeys = diagObj.db.getActorKeys();\n const messages = diagObj.db.getMessages();\n const title = diagObj.db.getDiagramTitle();\n const hasBoxes = diagObj.db.hasAtLeastOneBox();\n const hasBoxTitles = diagObj.db.hasAtLeastOneBoxWithTitle();\n const maxMessageWidthPerActor = await getMaxMessageWidthPerActor(actors, messages, diagObj);\n conf.height = await calculateActorMargins(actors, maxMessageWidthPerActor, boxes);\n svgDraw.insertComputerIcon(diagram2);\n svgDraw.insertDatabaseIcon(diagram2);\n svgDraw.insertClockIcon(diagram2);\n if (hasBoxes) {\n bounds.bumpVerticalPos(conf.boxMargin);\n if (hasBoxTitles) {\n bounds.bumpVerticalPos(boxes[0].textMaxHeight);\n }\n }\n if (conf.hideUnusedParticipants === true) {\n const newActors = /* @__PURE__ */ new Set();\n messages.forEach((message) => {\n newActors.add(message.from);\n newActors.add(message.to);\n });\n actorKeys = actorKeys.filter((actorKey) => newActors.has(actorKey));\n }\n await addActorRenderingData(diagram2, actors, createdActors, actorKeys, 0, messages, false);\n const loopWidths = await calculateLoopBounds(messages, actors, maxMessageWidthPerActor, diagObj);\n svgDraw.insertArrowHead(diagram2);\n svgDraw.insertArrowCrossHead(diagram2);\n svgDraw.insertArrowFilledHead(diagram2);\n svgDraw.insertSequenceNumber(diagram2);\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 diagram2,\n activationData,\n verticalPos,\n conf,\n actorActivations(msg.from.actor).length\n );\n bounds.insert(activationData.startx, verticalPos - 10, activationData.stopx, verticalPos);\n }\n let sequenceIndex = 1;\n let sequenceIndexStep = 1;\n const messagesToDraw = [];\n const backgrounds = [];\n let index = 0;\n for (const msg of messages) {\n let loopModel, noteModel, msgModel;\n switch (msg.type) {\n case diagObj.db.LINETYPE.NOTE:\n bounds.resetVerticalPos();\n noteModel = msg.noteModel;\n await drawNote(diagram2, noteModel);\n break;\n case diagObj.db.LINETYPE.ACTIVE_START:\n bounds.newActivation(msg, diagram2, actors);\n break;\n case diagObj.db.LINETYPE.ACTIVE_END:\n activeEnd(msg, bounds.getVerticalPos());\n break;\n case diagObj.db.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 diagObj.db.LINETYPE.LOOP_END:\n loopModel = bounds.endLoop();\n await svgDraw.drawLoop(diagram2, loopModel, \"loop\", conf);\n bounds.bumpVerticalPos(loopModel.stopy - bounds.getVerticalPos());\n bounds.models.addLoop(loopModel);\n break;\n case diagObj.db.LINETYPE.RECT_START:\n adjustLoopHeightForWrap(\n loopWidths,\n msg,\n conf.boxMargin,\n conf.boxMargin,\n (message) => bounds.newLoop(void 0, message.message)\n );\n break;\n case diagObj.db.LINETYPE.RECT_END:\n loopModel = bounds.endLoop();\n backgrounds.push(loopModel);\n bounds.models.addLoop(loopModel);\n bounds.bumpVerticalPos(loopModel.stopy - bounds.getVerticalPos());\n break;\n case diagObj.db.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 diagObj.db.LINETYPE.OPT_END:\n loopModel = bounds.endLoop();\n await svgDraw.drawLoop(diagram2, loopModel, \"opt\", conf);\n bounds.bumpVerticalPos(loopModel.stopy - bounds.getVerticalPos());\n bounds.models.addLoop(loopModel);\n break;\n case diagObj.db.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 diagObj.db.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 diagObj.db.LINETYPE.ALT_END:\n loopModel = bounds.endLoop();\n await svgDraw.drawLoop(diagram2, loopModel, \"alt\", conf);\n bounds.bumpVerticalPos(loopModel.stopy - bounds.getVerticalPos());\n bounds.models.addLoop(loopModel);\n break;\n case diagObj.db.LINETYPE.PAR_START:\n case diagObj.db.LINETYPE.PAR_OVER_START:\n adjustLoopHeightForWrap(\n loopWidths,\n msg,\n conf.boxMargin,\n conf.boxMargin + conf.boxTextMargin,\n (message) => bounds.newLoop(message)\n );\n bounds.saveVerticalPos();\n break;\n case diagObj.db.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 diagObj.db.LINETYPE.PAR_END:\n loopModel = bounds.endLoop();\n await svgDraw.drawLoop(diagram2, loopModel, \"par\", conf);\n bounds.bumpVerticalPos(loopModel.stopy - bounds.getVerticalPos());\n bounds.models.addLoop(loopModel);\n break;\n case diagObj.db.LINETYPE.AUTONUMBER:\n sequenceIndex = msg.message.start || sequenceIndex;\n sequenceIndexStep = msg.message.step || sequenceIndexStep;\n if (msg.message.visible) {\n diagObj.db.enableSequenceNumbers();\n } else {\n diagObj.db.disableSequenceNumbers();\n }\n break;\n case diagObj.db.LINETYPE.CRITICAL_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 diagObj.db.LINETYPE.CRITICAL_OPTION:\n adjustLoopHeightForWrap(\n loopWidths,\n msg,\n conf.boxMargin + conf.boxTextMargin,\n conf.boxMargin,\n (message) => bounds.addSectionToLoop(message)\n );\n break;\n case diagObj.db.LINETYPE.CRITICAL_END:\n loopModel = bounds.endLoop();\n await svgDraw.drawLoop(diagram2, loopModel, \"critical\", conf);\n bounds.bumpVerticalPos(loopModel.stopy - bounds.getVerticalPos());\n bounds.models.addLoop(loopModel);\n break;\n case diagObj.db.LINETYPE.BREAK_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 diagObj.db.LINETYPE.BREAK_END:\n loopModel = bounds.endLoop();\n await svgDraw.drawLoop(diagram2, loopModel, \"break\", conf);\n bounds.bumpVerticalPos(loopModel.stopy - bounds.getVerticalPos());\n bounds.models.addLoop(loopModel);\n break;\n default:\n try {\n msgModel = msg.msgModel;\n msgModel.starty = bounds.getVerticalPos();\n msgModel.sequenceIndex = sequenceIndex;\n msgModel.sequenceVisible = diagObj.db.showSequenceNumbers();\n const lineStartY = await boundMessage(diagram2, msgModel);\n adjustCreatedDestroyedData(\n msg,\n msgModel,\n lineStartY,\n index,\n actors,\n createdActors,\n destroyedActors\n );\n messagesToDraw.push({ messageModel: msgModel, lineStartY });\n bounds.models.addMessage(msgModel);\n } catch (e) {\n log.error(\"error while drawing message\", e);\n }\n }\n if ([\n diagObj.db.LINETYPE.SOLID_OPEN,\n diagObj.db.LINETYPE.DOTTED_OPEN,\n diagObj.db.LINETYPE.SOLID,\n diagObj.db.LINETYPE.DOTTED,\n diagObj.db.LINETYPE.SOLID_CROSS,\n diagObj.db.LINETYPE.DOTTED_CROSS,\n diagObj.db.LINETYPE.SOLID_POINT,\n diagObj.db.LINETYPE.DOTTED_POINT\n ].includes(msg.type)) {\n sequenceIndex = sequenceIndex + sequenceIndexStep;\n }\n index++;\n }\n log.debug(\"createdActors\", createdActors);\n log.debug(\"destroyedActors\", destroyedActors);\n await drawActors(diagram2, actors, actorKeys, false);\n for (const e of messagesToDraw) {\n await drawMessage(diagram2, e.messageModel, e.lineStartY, diagObj);\n }\n if (conf.mirrorActors) {\n await drawActors(diagram2, actors, actorKeys, true);\n }\n backgrounds.forEach((e) => svgDraw.drawBackgroundRect(diagram2, e));\n fixLifeLineHeights(diagram2, actors, actorKeys, conf);\n for (const box2 of bounds.models.boxes) {\n box2.height = bounds.getVerticalPos() - box2.y;\n bounds.insert(box2.x, box2.y, box2.x + box2.width, box2.height);\n box2.startx = box2.x;\n box2.starty = box2.y;\n box2.stopx = box2.startx + box2.width;\n box2.stopy = box2.starty + box2.height;\n box2.stroke = \"rgb(0,0,0, 0.5)\";\n await svgDraw.drawBox(diagram2, box2, conf);\n }\n if (hasBoxes) {\n bounds.bumpVerticalPos(conf.boxMargin);\n }\n const requiredBoxSize = drawActorsPopup(diagram2, actors, actorKeys, doc);\n const { bounds: box } = bounds.getBounds();\n let boxHeight = box.stopy - box.starty;\n if (boxHeight < requiredBoxSize.maxHeight) {\n boxHeight = requiredBoxSize.maxHeight;\n }\n let height = boxHeight + 2 * conf.diagramMarginY;\n if (conf.mirrorActors) {\n height = height - conf.boxMargin + conf.bottomMarginAdj;\n }\n let boxWidth = box.stopx - box.startx;\n if (boxWidth < requiredBoxSize.maxWidth) {\n boxWidth = requiredBoxSize.maxWidth;\n }\n const width = boxWidth + 2 * conf.diagramMarginX;\n if (title) {\n diagram2.append(\"text\").text(title).attr(\"x\", (box.stopx - box.startx) / 2 - 2 * conf.diagramMarginX).attr(\"y\", -25);\n }\n configureSvgSize(diagram2, height, width, conf.useMaxWidth);\n const extraVertForTitle = title ? 40 : 0;\n diagram2.attr(\n \"viewBox\",\n box.startx - conf.diagramMarginX + \" -\" + (conf.diagramMarginY + extraVertForTitle) + \" \" + width + \" \" + (height + extraVertForTitle)\n );\n log.debug(`models:`, bounds.models);\n};\nasync function getMaxMessageWidthPerActor(actors, messages, diagObj) {\n const maxMessageWidthPerActor = {};\n for (const msg of messages) {\n if (actors[msg.to] && actors[msg.from]) {\n const actor = actors[msg.to];\n if (msg.placement === diagObj.db.PLACEMENT.LEFTOF && !actor.prevActor) {\n continue;\n }\n if (msg.placement === diagObj.db.PLACEMENT.RIGHTOF && !actor.nextActor) {\n continue;\n }\n const isNote = msg.placement !== void 0;\n const isMessage = !isNote;\n const textFont = isNote ? noteFont(conf) : messageFont(conf);\n const wrappedMessage = msg.wrap ? utils.wrapLabel(msg.message, conf.width - 2 * conf.wrapPadding, textFont) : msg.message;\n const messageDimensions = hasKatex(wrappedMessage) ? await calculateMathMLDimensions(msg.message, getConfig()) : utils.calculateTextDimensions(wrappedMessage, textFont);\n const messageWidth = messageDimensions.width + 2 * conf.wrapPadding;\n if (isMessage && msg.from === actor.nextActor) {\n maxMessageWidthPerActor[msg.to] = common.getMax(\n maxMessageWidthPerActor[msg.to] || 0,\n messageWidth\n );\n } else if (isMessage && msg.from === actor.prevActor) {\n maxMessageWidthPerActor[msg.from] = common.getMax(\n maxMessageWidthPerActor[msg.from] || 0,\n messageWidth\n );\n } else if (isMessage && msg.from === msg.to) {\n maxMessageWidthPerActor[msg.from] = common.getMax(\n maxMessageWidthPerActor[msg.from] || 0,\n messageWidth / 2\n );\n maxMessageWidthPerActor[msg.to] = common.getMax(\n maxMessageWidthPerActor[msg.to] || 0,\n messageWidth / 2\n );\n } else if (msg.placement === diagObj.db.PLACEMENT.RIGHTOF) {\n maxMessageWidthPerActor[msg.from] = common.getMax(\n maxMessageWidthPerActor[msg.from] || 0,\n messageWidth\n );\n } else if (msg.placement === diagObj.db.PLACEMENT.LEFTOF) {\n maxMessageWidthPerActor[actor.prevActor] = common.getMax(\n maxMessageWidthPerActor[actor.prevActor] || 0,\n messageWidth\n );\n } else if (msg.placement === diagObj.db.PLACEMENT.OVER) {\n if (actor.prevActor) {\n maxMessageWidthPerActor[actor.prevActor] = common.getMax(\n maxMessageWidthPerActor[actor.prevActor] || 0,\n messageWidth / 2\n );\n }\n if (actor.nextActor) {\n maxMessageWidthPerActor[msg.from] = common.getMax(\n maxMessageWidthPerActor[msg.from] || 0,\n messageWidth / 2\n );\n }\n }\n }\n }\n log.debug(\"maxMessageWidthPerActor:\", maxMessageWidthPerActor);\n return maxMessageWidthPerActor;\n}\nconst getRequiredPopupWidth = function(actor) {\n let requiredPopupWidth = 0;\n const textFont = actorFont(conf);\n for (const key in actor.links) {\n const labelDimensions = utils.calculateTextDimensions(key, textFont);\n const labelWidth = labelDimensions.width + 2 * conf.wrapPadding + 2 * conf.boxMargin;\n if (requiredPopupWidth < labelWidth) {\n requiredPopupWidth = labelWidth;\n }\n }\n return requiredPopupWidth;\n};\nasync function calculateActorMargins(actors, actorToMessageWidth, boxes) {\n let maxHeight = 0;\n for (const prop of Object.keys(actors)) {\n const actor = actors[prop];\n if (actor.wrap) {\n actor.description = utils.wrapLabel(\n actor.description,\n conf.width - 2 * conf.wrapPadding,\n actorFont(conf)\n );\n }\n const actDims = hasKatex(actor.description) ? await calculateMathMLDimensions(actor.description, getConfig()) : utils.calculateTextDimensions(actor.description, actorFont(conf));\n actor.width = actor.wrap ? conf.width : common.getMax(conf.width, actDims.width + 2 * conf.wrapPadding);\n actor.height = actor.wrap ? common.getMax(actDims.height, conf.height) : conf.height;\n maxHeight = common.getMax(maxHeight, actor.height);\n }\n for (const actorKey in actorToMessageWidth) {\n const actor = actors[actorKey];\n if (!actor) {\n continue;\n }\n const nextActor = actors[actor.nextActor];\n if (!nextActor) {\n const messageWidth2 = actorToMessageWidth[actorKey];\n const actorWidth2 = messageWidth2 + conf.actorMargin - actor.width / 2;\n actor.margin = common.getMax(actorWidth2, conf.actorMargin);\n continue;\n }\n const messageWidth = actorToMessageWidth[actorKey];\n const actorWidth = messageWidth + conf.actorMargin - actor.width / 2 - nextActor.width / 2;\n actor.margin = common.getMax(actorWidth, conf.actorMargin);\n }\n let maxBoxHeight = 0;\n boxes.forEach((box) => {\n const textFont = messageFont(conf);\n let totalWidth = box.actorKeys.reduce((total, aKey) => {\n return total += actors[aKey].width + (actors[aKey].margin || 0);\n }, 0);\n totalWidth -= 2 * conf.boxTextMargin;\n if (box.wrap) {\n box.name = utils.wrapLabel(box.name, totalWidth - 2 * conf.wrapPadding, textFont);\n }\n const boxMsgDimensions = utils.calculateTextDimensions(box.name, textFont);\n maxBoxHeight = common.getMax(boxMsgDimensions.height, maxBoxHeight);\n const minWidth = common.getMax(totalWidth, boxMsgDimensions.width + 2 * conf.wrapPadding);\n box.margin = conf.boxTextMargin;\n if (totalWidth < minWidth) {\n const missing = (minWidth - totalWidth) / 2;\n box.margin += missing;\n }\n });\n boxes.forEach((box) => box.textMaxHeight = maxBoxHeight);\n return common.getMax(maxHeight, conf.height);\n}\nconst buildNoteModel = async function(msg, actors, diagObj) {\n const startx = actors[msg.from].x;\n const stopx = actors[msg.to].x;\n const shouldWrap = msg.wrap && msg.message;\n let textDimensions = hasKatex(msg.message) ? await calculateMathMLDimensions(msg.message, getConfig()) : utils.calculateTextDimensions(\n shouldWrap ? utils.wrapLabel(msg.message, conf.width, noteFont(conf)) : msg.message,\n noteFont(conf)\n );\n const noteModel = {\n width: shouldWrap ? conf.width : common.getMax(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 === diagObj.db.PLACEMENT.RIGHTOF) {\n noteModel.width = shouldWrap ? common.getMax(conf.width, textDimensions.width) : common.getMax(\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 === diagObj.db.PLACEMENT.LEFTOF) {\n noteModel.width = shouldWrap ? common.getMax(conf.width, textDimensions.width + 2 * conf.noteMargin) : common.getMax(\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 ? utils.wrapLabel(\n msg.message,\n common.getMax(conf.width, actors[msg.from].width),\n noteFont(conf)\n ) : msg.message,\n noteFont(conf)\n );\n noteModel.width = shouldWrap ? common.getMax(conf.width, actors[msg.from].width) : common.getMax(\n actors[msg.from].width,\n conf.width,\n textDimensions.width + 2 * conf.noteMargin\n );\n noteModel.startx = startx + (actors[msg.from].width - noteModel.width) / 2;\n } else {\n noteModel.width = Math.abs(startx + actors[msg.from].width / 2 - (stopx + actors[msg.to].width / 2)) + conf.actorMargin;\n noteModel.startx = startx < stopx ? startx + actors[msg.from].width / 2 - conf.actorMargin / 2 : 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 noteFont(conf)\n );\n }\n log.debug(\n `NM:[${noteModel.startx},${noteModel.stopx},${noteModel.starty},${noteModel.stopy}:${noteModel.width},${noteModel.height}=${msg.message}]`\n );\n return noteModel;\n};\nconst buildMessageModel = function(msg, actors, diagObj) {\n if (![\n diagObj.db.LINETYPE.SOLID_OPEN,\n diagObj.db.LINETYPE.DOTTED_OPEN,\n diagObj.db.LINETYPE.SOLID,\n diagObj.db.LINETYPE.DOTTED,\n diagObj.db.LINETYPE.SOLID_CROSS,\n diagObj.db.LINETYPE.DOTTED_CROSS,\n diagObj.db.LINETYPE.SOLID_POINT,\n diagObj.db.LINETYPE.DOTTED_POINT\n ].includes(msg.type)) {\n return {};\n }\n const [fromLeft, fromRight] = activationBounds(msg.from, actors);\n const [toLeft, toRight] = activationBounds(msg.to, actors);\n const isArrowToRight = fromLeft <= toLeft;\n const startx = isArrowToRight ? fromRight : fromLeft;\n let stopx = isArrowToRight ? toLeft : toRight;\n const isArrowToActivation = Math.abs(toLeft - toRight) > 2;\n const adjustValue = (value) => {\n return isArrowToRight ? -value : value;\n };\n if (msg.from === msg.to) {\n stopx = startx;\n } else {\n if (msg.activate && !isArrowToActivation) {\n stopx += adjustValue(conf.activationWidth / 2 - 1);\n }\n if (![diagObj.db.LINETYPE.SOLID_OPEN, diagObj.db.LINETYPE.DOTTED_OPEN].includes(msg.type)) {\n stopx += adjustValue(3);\n }\n }\n const allBounds = [fromLeft, fromRight, toLeft, toRight];\n const boundedWidth = Math.abs(startx - stopx);\n if (msg.wrap && msg.message) {\n msg.message = utils.wrapLabel(\n msg.message,\n common.getMax(boundedWidth + 2 * conf.wrapPadding, conf.width),\n messageFont(conf)\n );\n }\n const msgDims = utils.calculateTextDimensions(msg.message, messageFont(conf));\n return {\n width: common.getMax(\n msg.wrap ? 0 : msgDims.width + 2 * conf.wrapPadding,\n boundedWidth + 2 * conf.wrapPadding,\n conf.width\n ),\n height: 0,\n startx,\n stopx,\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};\nconst calculateLoopBounds = async function(messages, actors, _maxWidthPerActor, diagObj) {\n const loops = {};\n const stack = [];\n let current, noteModel, msgModel;\n for (const msg of messages) {\n msg.id = utils.random({ length: 10 });\n switch (msg.type) {\n case diagObj.db.LINETYPE.LOOP_START:\n case diagObj.db.LINETYPE.ALT_START:\n case diagObj.db.LINETYPE.OPT_START:\n case diagObj.db.LINETYPE.PAR_START:\n case diagObj.db.LINETYPE.PAR_OVER_START:\n case diagObj.db.LINETYPE.CRITICAL_START:\n case diagObj.db.LINETYPE.BREAK_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 diagObj.db.LINETYPE.ALT_ELSE:\n case diagObj.db.LINETYPE.PAR_AND:\n case diagObj.db.LINETYPE.CRITICAL_OPTION:\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 diagObj.db.LINETYPE.LOOP_END:\n case diagObj.db.LINETYPE.ALT_END:\n case diagObj.db.LINETYPE.OPT_END:\n case diagObj.db.LINETYPE.PAR_END:\n case diagObj.db.LINETYPE.CRITICAL_END:\n case diagObj.db.LINETYPE.BREAK_END:\n current = stack.pop();\n loops[current.id] = current;\n break;\n case diagObj.db.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 = 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 diagObj.db.LINETYPE.ACTIVE_END:\n {\n const lastActorActivationIdx = bounds.activations.map((a) => a.actor).lastIndexOf(msg.from.actor);\n delete bounds.activations.splice(lastActorActivationIdx, 1)[0];\n }\n break;\n }\n const isNote = msg.placement !== void 0;\n if (isNote) {\n noteModel = await buildNoteModel(msg, actors, diagObj);\n msg.noteModel = noteModel;\n stack.forEach((stk) => {\n current = stk;\n current.from = common.getMin(current.from, noteModel.startx);\n current.to = common.getMax(current.to, noteModel.startx + noteModel.width);\n current.width = common.getMax(current.width, Math.abs(current.from - current.to)) - conf.labelBoxWidth;\n });\n } else {\n msgModel = buildMessageModel(msg, actors, diagObj);\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 const from = actors[msg.from];\n const to = actors[msg.to];\n current.from = common.getMin(\n from.x - msgModel.width / 2,\n from.x - from.width / 2,\n current.from\n );\n current.to = common.getMax(\n to.x + msgModel.width / 2,\n to.x + from.width / 2,\n current.to\n );\n current.width = common.getMax(current.width, Math.abs(current.to - current.from)) - conf.labelBoxWidth;\n } else {\n current.from = common.getMin(msgModel.startx, current.from);\n current.to = common.getMax(msgModel.stopx, current.to);\n current.width = common.getMax(current.width, msgModel.width) - conf.labelBoxWidth;\n }\n });\n }\n }\n }\n bounds.activations = [];\n log.debug(\"Loop type widths:\", loops);\n return loops;\n};\nconst renderer = {\n bounds,\n drawActors,\n drawActorsPopup,\n setConf,\n draw\n};\nconst diagram = {\n parser: parser$1,\n db,\n renderer,\n styles,\n init: ({ wrap }) => {\n db.setWrap(wrap);\n }\n};\nexport {\n diagram\n};\n","import { d as db, p as parser, s as styles } from \"./styles-d20c7d72.js\";\nimport { line, curveBasis, select } from \"d3\";\nimport { layout } from \"dagre-d3-es/src/dagre/index.js\";\nimport * as graphlib from \"dagre-d3-es/src/graphlib/index.js\";\nimport { c as getConfig, u as utils, e as common, l as log, i as configureSvgSize } from \"./mermaid-f47111a7.js\";\nimport \"ts-dedent\";\nimport \"dayjs\";\nimport \"@braintree/sanitize-url\";\nimport \"dompurify\";\nimport \"khroma\";\nimport \"lodash-es/memoize.js\";\nimport \"lodash-es/merge.js\";\nimport \"stylis\";\nimport \"lodash-es/isEmpty.js\";\nconst idCache = {};\nconst set = (key, val) => {\n idCache[key] = val;\n};\nconst get = (k) => idCache[k];\nconst keys = () => Object.keys(idCache);\nconst size = () => keys().length;\nconst idCache$1 = {\n get,\n set,\n keys,\n size\n};\nconst drawStartState = (g) => g.append(\"circle\").attr(\"class\", \"start-state\").attr(\"r\", getConfig().state.sizeUnit).attr(\"cx\", getConfig().state.padding + getConfig().state.sizeUnit).attr(\"cy\", getConfig().state.padding + getConfig().state.sizeUnit);\nconst drawDivider = (g) => g.append(\"line\").style(\"stroke\", \"grey\").style(\"stroke-dasharray\", \"3\").attr(\"x1\", getConfig().state.textHeight).attr(\"class\", \"divider\").attr(\"x2\", getConfig().state.textHeight * 2).attr(\"y1\", 0).attr(\"y2\", 0);\nconst drawSimpleState = (g, stateDef) => {\n const state = g.append(\"text\").attr(\"x\", 2 * getConfig().state.padding).attr(\"y\", getConfig().state.textHeight + 2 * getConfig().state.padding).attr(\"font-size\", getConfig().state.fontSize).attr(\"class\", \"state-title\").text(stateDef.id);\n const classBox = state.node().getBBox();\n g.insert(\"rect\", \":first-child\").attr(\"x\", getConfig().state.padding).attr(\"y\", getConfig().state.padding).attr(\"width\", classBox.width + 2 * getConfig().state.padding).attr(\"height\", classBox.height + 2 * getConfig().state.padding).attr(\"rx\", getConfig().state.radius);\n return state;\n};\nconst drawDescrState = (g, stateDef) => {\n const addTspan = function(textEl, txt, isFirst2) {\n const tSpan = textEl.append(\"tspan\").attr(\"x\", 2 * getConfig().state.padding).text(txt);\n if (!isFirst2) {\n tSpan.attr(\"dy\", getConfig().state.textHeight);\n }\n };\n const title = g.append(\"text\").attr(\"x\", 2 * getConfig().state.padding).attr(\"y\", getConfig().state.textHeight + 1.3 * getConfig().state.padding).attr(\"font-size\", getConfig().state.fontSize).attr(\"class\", \"state-title\").text(stateDef.descriptions[0]);\n const titleBox = title.node().getBBox();\n const titleHeight = titleBox.height;\n const description = g.append(\"text\").attr(\"x\", getConfig().state.padding).attr(\n \"y\",\n titleHeight + getConfig().state.padding * 0.4 + getConfig().state.dividerMargin + getConfig().state.textHeight\n ).attr(\"class\", \"state-description\");\n let isFirst = true;\n let isSecond = true;\n stateDef.descriptions.forEach(function(descr) {\n if (!isFirst) {\n addTspan(description, descr, isSecond);\n isSecond = false;\n }\n isFirst = false;\n });\n const descrLine = g.append(\"line\").attr(\"x1\", getConfig().state.padding).attr(\"y1\", getConfig().state.padding + titleHeight + getConfig().state.dividerMargin / 2).attr(\"y2\", getConfig().state.padding + titleHeight + getConfig().state.dividerMargin / 2).attr(\"class\", \"descr-divider\");\n const descrBox = description.node().getBBox();\n const width = Math.max(descrBox.width, titleBox.width);\n descrLine.attr(\"x2\", width + 3 * getConfig().state.padding);\n g.insert(\"rect\", \":first-child\").attr(\"x\", getConfig().state.padding).attr(\"y\", getConfig().state.padding).attr(\"width\", width + 2 * getConfig().state.padding).attr(\"height\", descrBox.height + titleHeight + 2 * getConfig().state.padding).attr(\"rx\", getConfig().state.radius);\n return g;\n};\nconst addTitleAndBox = (g, stateDef, altBkg) => {\n const pad = getConfig().state.padding;\n const dblPad = 2 * getConfig().state.padding;\n const orgBox = g.node().getBBox();\n const orgWidth = orgBox.width;\n const orgX = orgBox.x;\n const title = g.append(\"text\").attr(\"x\", 0).attr(\"y\", getConfig().state.titleShift).attr(\"font-size\", getConfig().state.fontSize).attr(\"class\", \"state-title\").text(stateDef.id);\n const titleBox = title.node().getBBox();\n const titleWidth = titleBox.width + dblPad;\n let width = Math.max(titleWidth, orgWidth);\n if (width === orgWidth) {\n width = width + dblPad;\n }\n let startX;\n const graphBox = g.node().getBBox();\n if (stateDef.doc)\n ;\n startX = orgX - pad;\n if (titleWidth > orgWidth) {\n startX = (orgWidth - width) / 2 + pad;\n }\n if (Math.abs(orgX - graphBox.x) < pad && titleWidth > orgWidth) {\n startX = orgX - (titleWidth - orgWidth) / 2;\n }\n const lineY = 1 - getConfig().state.textHeight;\n g.insert(\"rect\", \":first-child\").attr(\"x\", startX).attr(\"y\", lineY).attr(\"class\", altBkg ? \"alt-composit\" : \"composit\").attr(\"width\", width).attr(\n \"height\",\n graphBox.height + getConfig().state.textHeight + getConfig().state.titleShift + 1\n ).attr(\"rx\", \"0\");\n title.attr(\"x\", startX + pad);\n if (titleWidth <= orgWidth) {\n title.attr(\"x\", orgX + (width - dblPad) / 2 - titleWidth / 2 + pad);\n }\n g.insert(\"rect\", \":first-child\").attr(\"x\", startX).attr(\n \"y\",\n getConfig().state.titleShift - getConfig().state.textHeight - getConfig().state.padding\n ).attr(\"width\", width).attr(\"height\", getConfig().state.textHeight * 3).attr(\"rx\", getConfig().state.radius);\n g.insert(\"rect\", \":first-child\").attr(\"x\", startX).attr(\n \"y\",\n getConfig().state.titleShift - getConfig().state.textHeight - getConfig().state.padding\n ).attr(\"width\", width).attr(\"height\", graphBox.height + 3 + 2 * getConfig().state.textHeight).attr(\"rx\", getConfig().state.radius);\n return g;\n};\nconst drawEndState = (g) => {\n g.append(\"circle\").attr(\"class\", \"end-state-outer\").attr(\"r\", getConfig().state.sizeUnit + getConfig().state.miniPadding).attr(\n \"cx\",\n getConfig().state.padding + getConfig().state.sizeUnit + getConfig().state.miniPadding\n ).attr(\n \"cy\",\n getConfig().state.padding + getConfig().state.sizeUnit + getConfig().state.miniPadding\n );\n return g.append(\"circle\").attr(\"class\", \"end-state-inner\").attr(\"r\", getConfig().state.sizeUnit).attr(\"cx\", getConfig().state.padding + getConfig().state.sizeUnit + 2).attr(\"cy\", getConfig().state.padding + getConfig().state.sizeUnit + 2);\n};\nconst drawForkJoinState = (g, stateDef) => {\n let width = getConfig().state.forkWidth;\n let height = getConfig().state.forkHeight;\n if (stateDef.parentId) {\n let tmp = width;\n width = height;\n height = tmp;\n }\n return g.append(\"rect\").style(\"stroke\", \"black\").style(\"fill\", \"black\").attr(\"width\", width).attr(\"height\", height).attr(\"x\", getConfig().state.padding).attr(\"y\", getConfig().state.padding);\n};\nconst _drawLongText = (_text, x, y, g) => {\n let textHeight = 0;\n const textElem = g.append(\"text\");\n textElem.style(\"text-anchor\", \"start\");\n textElem.attr(\"class\", \"noteText\");\n let text = _text.replace(/\\r\\n/g, \"<br/>\");\n text = text.replace(/\\n/g, \"<br/>\");\n const lines = text.split(common.lineBreakRegex);\n let tHeight = 1.25 * getConfig().state.noteMargin;\n for (const line2 of lines) {\n const txt = line2.trim();\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 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};\nconst drawNote = (text, g) => {\n g.attr(\"class\", \"state-note\");\n const note = g.append(\"rect\").attr(\"x\", 0).attr(\"y\", getConfig().state.padding);\n const rectElem = g.append(\"g\");\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 return note;\n};\nconst drawState = function(elem, stateDef) {\n const id = stateDef.id;\n const stateInfo = {\n id,\n label: stateDef.id,\n width: 0,\n height: 0\n };\n const g = elem.append(\"g\").attr(\"id\", id).attr(\"class\", \"stateGroup\");\n if (stateDef.type === \"start\") {\n drawStartState(g);\n }\n if (stateDef.type === \"end\") {\n drawEndState(g);\n }\n if (stateDef.type === \"fork\" || stateDef.type === \"join\") {\n drawForkJoinState(g, stateDef);\n }\n if (stateDef.type === \"note\") {\n drawNote(stateDef.note.text, g);\n }\n if (stateDef.type === \"divider\") {\n drawDivider(g);\n }\n if (stateDef.type === \"default\" && stateDef.descriptions.length === 0) {\n drawSimpleState(g, stateDef);\n }\n if (stateDef.type === \"default\" && stateDef.descriptions.length > 0) {\n 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 idCache$1.set(id, stateInfo);\n return stateInfo;\n};\nlet edgeCount = 0;\nconst drawEdge = function(elem, path, relation) {\n const getRelationType = function(type) {\n switch (type) {\n case db.relationType.AGGREGATION:\n return \"aggregation\";\n case db.relationType.EXTENSION:\n return \"extension\";\n case db.relationType.COMPOSITION:\n return \"composition\";\n case db.relationType.DEPENDENCY:\n return \"dependency\";\n }\n };\n path.points = path.points.filter((p) => !Number.isNaN(p.y));\n const lineData = path.points;\n const lineFunction = line().x(function(d) {\n return d.x;\n }).y(function(d) {\n return d.y;\n }).curve(curveBasis);\n const svgPath = elem.append(\"path\").attr(\"d\", lineFunction(lineData)).attr(\"id\", \"edge\" + edgeCount).attr(\"class\", \"transition\");\n let url = \"\";\n if (getConfig().state.arrowMarkerAbsolute) {\n url = window.location.protocol + \"//\" + window.location.host + window.location.pathname + window.location.search;\n url = url.replace(/\\(/g, \"\\\\(\");\n url = url.replace(/\\)/g, \"\\\\)\");\n }\n svgPath.attr(\n \"marker-end\",\n \"url(\" + url + \"#\" + getRelationType(db.relationType.DEPENDENCY) + \"End)\"\n );\n if (relation.title !== void 0) {\n const label = elem.append(\"g\").attr(\"class\", \"stateLabel\");\n const { x, y } = utils.calcLabelPosition(path.points);\n const rows = common.getRows(relation.title);\n let titleHeight = 0;\n const titleRows = [];\n let maxWidth = 0;\n let minX = 0;\n for (let i = 0; i <= rows.length; i++) {\n const title = label.append(\"text\").attr(\"text-anchor\", \"middle\").text(rows[i]).attr(\"x\", x).attr(\"y\", y + titleHeight);\n const boundsTmp = title.node().getBBox();\n maxWidth = Math.max(maxWidth, boundsTmp.width);\n minX = Math.min(minX, boundsTmp.x);\n log.info(boundsTmp.x, x, y + titleHeight);\n if (titleHeight === 0) {\n const titleBox = title.node().getBBox();\n titleHeight = titleBox.height;\n log.info(\"Title height\", titleHeight, y);\n }\n titleRows.push(title);\n }\n let boxHeight = titleHeight * rows.length;\n if (rows.length > 1) {\n const heightAdj = (rows.length - 1) * titleHeight * 0.5;\n titleRows.forEach((title, i) => title.attr(\"y\", y + i * titleHeight - heightAdj));\n boxHeight = titleHeight * rows.length;\n }\n const bounds = label.node().getBBox();\n label.insert(\"rect\", \":first-child\").attr(\"class\", \"box\").attr(\"x\", x - maxWidth / 2 - getConfig().state.padding / 2).attr(\"y\", y - boxHeight / 2 - getConfig().state.padding / 2 - 3.5).attr(\"width\", maxWidth + getConfig().state.padding).attr(\"height\", boxHeight + getConfig().state.padding);\n log.info(bounds);\n }\n edgeCount++;\n};\nlet conf;\nconst transformationLog = {};\nconst setConf = function() {\n};\nconst insertMarkers = function(elem) {\n elem.append(\"defs\").append(\"marker\").attr(\"id\", \"dependencyEnd\").attr(\"refX\", 19).attr(\"refY\", 7).attr(\"markerWidth\", 20).attr(\"markerHeight\", 28).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 19,7 L9,13 L14,7 L9,1 Z\");\n};\nconst draw = function(text, id, _version, diagObj) {\n conf = getConfig().state;\n const securityLevel = getConfig().securityLevel;\n let sandboxElement;\n if (securityLevel === \"sandbox\") {\n sandboxElement = select(\"#i\" + id);\n }\n const root = securityLevel === \"sandbox\" ? select(sandboxElement.nodes()[0].contentDocument.body) : select(\"body\");\n const doc = securityLevel === \"sandbox\" ? sandboxElement.nodes()[0].contentDocument : document;\n log.debug(\"Rendering diagram \" + text);\n const diagram2 = root.select(`[id='${id}']`);\n insertMarkers(diagram2);\n const rootDoc = diagObj.db.getRootDoc();\n renderDoc(rootDoc, diagram2, void 0, false, root, doc, diagObj);\n const padding = conf.padding;\n const bounds = diagram2.node().getBBox();\n const width = bounds.width + padding * 2;\n const height = bounds.height + padding * 2;\n const svgWidth = width * 1.75;\n configureSvgSize(diagram2, height, svgWidth, conf.useMaxWidth);\n diagram2.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};\nconst renderDoc = (doc, diagram2, parentId, altBkg, root, domDocument, diagObj) => {\n const graph = new graphlib.Graph({\n compound: true,\n multigraph: true\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 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 graph.setDefaultEdgeLabel(function() {\n return {};\n });\n diagObj.db.extract(doc);\n const states = diagObj.db.getStates();\n const relations = diagObj.db.getRelations();\n const keys2 = Object.keys(states);\n for (const key of keys2) {\n const stateDef = states[key];\n if (parentId) {\n stateDef.parentId = parentId;\n }\n let node;\n if (stateDef.doc) {\n let sub = diagram2.append(\"g\").attr(\"id\", stateDef.id).attr(\"class\", \"stateGroup\");\n node = renderDoc(stateDef.doc, sub, stateDef.id, !altBkg, root, domDocument, diagObj);\n {\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 }\n } else {\n node = drawState(diagram2, stateDef);\n }\n if (stateDef.note) {\n const noteDef = {\n descriptions: [],\n id: stateDef.id + \"-note\",\n note: stateDef.note,\n type: \"note\"\n };\n const note = drawState(diagram2, noteDef);\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.setParent(node.id, node.id + \"-group\");\n graph.setParent(node.id + \"-note\", node.id + \"-group\");\n } else {\n graph.setNode(node.id, node);\n }\n }\n log.debug(\"Count=\", graph.nodeCount(), graph);\n let cnt = 0;\n relations.forEach(function(relation) {\n cnt++;\n log.debug(\"Setting edge\", relation);\n graph.setEdge(\n relation.id1,\n relation.id2,\n {\n 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 layout(graph);\n log.debug(\"Graph after layout\", graph.nodes());\n const svgElem = diagram2.node();\n graph.nodes().forEach(function(v) {\n if (v !== void 0 && graph.node(v) !== void 0) {\n log.warn(\"Node \" + v + \": \" + JSON.stringify(graph.node(v)));\n root.select(\"#\" + svgElem.id + \" #\" + v).attr(\n \"transform\",\n \"translate(\" + (graph.node(v).x - graph.node(v).width / 2) + \",\" + (graph.node(v).y + (transformationLog[v] ? transformationLog[v].y : 0) - graph.node(v).height / 2) + \" )\"\n );\n root.select(\"#\" + svgElem.id + \" #\" + v).attr(\"data-x-shift\", graph.node(v).x - graph.node(v).width / 2);\n const dividers = domDocument.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) {\n pWidth = parent.parentElement.getBBox().width;\n }\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 log.debug(\"No Node \" + v + \": \" + JSON.stringify(graph.node(v)));\n }\n });\n let stateBox = svgElem.getBBox();\n graph.edges().forEach(function(e) {\n if (e !== void 0 && graph.edge(e) !== void 0) {\n log.debug(\"Edge \" + e.v + \" -> \" + e.w + \": \" + JSON.stringify(graph.edge(e)));\n drawEdge(diagram2, graph.edge(e), graph.edge(e).relation);\n }\n });\n stateBox = svgElem.getBBox();\n const stateInfo = {\n id: parentId ? parentId : \"root\",\n label: parentId ? parentId : \"root\",\n width: 0,\n height: 0\n };\n stateInfo.width = stateBox.width + 2 * conf.padding;\n stateInfo.height = stateBox.height + 2 * conf.padding;\n log.debug(\"Doc rendered\", stateInfo, graph);\n return stateInfo;\n};\nconst renderer = {\n setConf,\n draw\n};\nconst diagram = {\n parser,\n db,\n renderer,\n styles,\n init: (cnf) => {\n if (!cnf.state) {\n cnf.state = {};\n }\n cnf.state.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;\n db.clear();\n }\n};\nexport {\n diagram\n};\n","import { D as DEFAULT_STATE_TYPE, a as DIVIDER_TYPE, S as STMT_RELATION, b as STMT_STATE, c as DEFAULT_NESTED_DOC_DIR, p as parser, d as db, s as styles } from \"./styles-d20c7d72.js\";\nimport * as graphlib from \"dagre-d3-es/src/graphlib/index.js\";\nimport { select } from \"d3\";\nimport { l as log, c as getConfig, u as utils, i as configureSvgSize, e as common } from \"./mermaid-f47111a7.js\";\nimport { r as render } from \"./index-fc10efb0.js\";\nimport \"ts-dedent\";\nimport \"dayjs\";\nimport \"@braintree/sanitize-url\";\nimport \"dompurify\";\nimport \"khroma\";\nimport \"lodash-es/memoize.js\";\nimport \"lodash-es/merge.js\";\nimport \"stylis\";\nimport \"lodash-es/isEmpty.js\";\nimport \"dagre-d3-es/src/dagre/index.js\";\nimport \"dagre-d3-es/src/graphlib/json.js\";\nimport \"./edges-d32062c0.js\";\nimport \"./createText-6b48ae7d.js\";\nimport \"mdast-util-from-markdown\";\nconst SHAPE_STATE = \"rect\";\nconst SHAPE_STATE_WITH_DESC = \"rectWithTitle\";\nconst SHAPE_START = \"start\";\nconst SHAPE_END = \"end\";\nconst SHAPE_DIVIDER = \"divider\";\nconst SHAPE_GROUP = \"roundedWithTitle\";\nconst SHAPE_NOTE = \"note\";\nconst SHAPE_NOTEGROUP = \"noteGroup\";\nconst CSS_DIAGRAM = \"statediagram\";\nconst CSS_STATE = \"state\";\nconst CSS_DIAGRAM_STATE = `${CSS_DIAGRAM}-${CSS_STATE}`;\nconst CSS_EDGE = \"transition\";\nconst CSS_NOTE = \"note\";\nconst CSS_NOTE_EDGE = \"note-edge\";\nconst CSS_EDGE_NOTE_EDGE = `${CSS_EDGE} ${CSS_NOTE_EDGE}`;\nconst CSS_DIAGRAM_NOTE = `${CSS_DIAGRAM}-${CSS_NOTE}`;\nconst CSS_CLUSTER = \"cluster\";\nconst CSS_DIAGRAM_CLUSTER = `${CSS_DIAGRAM}-${CSS_CLUSTER}`;\nconst CSS_CLUSTER_ALT = \"cluster-alt\";\nconst CSS_DIAGRAM_CLUSTER_ALT = `${CSS_DIAGRAM}-${CSS_CLUSTER_ALT}`;\nconst PARENT = \"parent\";\nconst NOTE = \"note\";\nconst DOMID_STATE = \"state\";\nconst DOMID_TYPE_SPACER = \"----\";\nconst NOTE_ID = `${DOMID_TYPE_SPACER}${NOTE}`;\nconst PARENT_ID = `${DOMID_TYPE_SPACER}${PARENT}`;\nconst G_EDGE_STYLE = \"fill:none\";\nconst G_EDGE_ARROWHEADSTYLE = \"fill: #333\";\nconst G_EDGE_LABELPOS = \"c\";\nconst G_EDGE_LABELTYPE = \"text\";\nconst G_EDGE_THICKNESS = \"normal\";\nlet nodeDb = {};\nlet graphItemCount = 0;\nconst setConf = function(cnf) {\n const keys = Object.keys(cnf);\n for (const key of keys) {\n cnf[key];\n }\n};\nconst getClasses = function(text, diagramObj) {\n diagramObj.db.extract(diagramObj.db.getRootDocV2());\n return diagramObj.db.getClasses();\n};\nfunction getClassesFromDbInfo(dbInfoItem) {\n if (dbInfoItem === void 0 || dbInfoItem === null) {\n return \"\";\n } else {\n if (dbInfoItem.classes) {\n return dbInfoItem.classes.join(\" \");\n } else {\n return \"\";\n }\n }\n}\nfunction stateDomId(itemId = \"\", counter = 0, type = \"\", typeSpacer = DOMID_TYPE_SPACER) {\n const typeStr = type !== null && type.length > 0 ? `${typeSpacer}${type}` : \"\";\n return `${DOMID_STATE}-${itemId}${typeStr}-${counter}`;\n}\nconst setupNode = (g, parent, parsedItem, diagramStates, diagramDb, altFlag) => {\n const itemId = parsedItem.id;\n const classStr = getClassesFromDbInfo(diagramStates[itemId]);\n if (itemId !== \"root\") {\n let shape = SHAPE_STATE;\n if (parsedItem.start === true) {\n shape = SHAPE_START;\n }\n if (parsedItem.start === false) {\n shape = SHAPE_END;\n }\n if (parsedItem.type !== DEFAULT_STATE_TYPE) {\n shape = parsedItem.type;\n }\n if (!nodeDb[itemId]) {\n nodeDb[itemId] = {\n id: itemId,\n shape,\n description: common.sanitizeText(itemId, getConfig()),\n classes: `${classStr} ${CSS_DIAGRAM_STATE}`\n };\n }\n const newNode = nodeDb[itemId];\n if (parsedItem.description) {\n if (Array.isArray(newNode.description)) {\n newNode.shape = SHAPE_STATE_WITH_DESC;\n newNode.description.push(parsedItem.description);\n } else {\n if (newNode.description.length > 0) {\n newNode.shape = SHAPE_STATE_WITH_DESC;\n if (newNode.description === itemId) {\n newNode.description = [parsedItem.description];\n } else {\n newNode.description = [newNode.description, parsedItem.description];\n }\n } else {\n newNode.shape = SHAPE_STATE;\n newNode.description = parsedItem.description;\n }\n }\n newNode.description = common.sanitizeTextOrArray(newNode.description, getConfig());\n }\n if (newNode.description.length === 1 && newNode.shape === SHAPE_STATE_WITH_DESC) {\n newNode.shape = SHAPE_STATE;\n }\n if (!newNode.type && parsedItem.doc) {\n log.info(\"Setting cluster for \", itemId, getDir(parsedItem));\n newNode.type = \"group\";\n newNode.dir = getDir(parsedItem);\n newNode.shape = parsedItem.type === DIVIDER_TYPE ? SHAPE_DIVIDER : SHAPE_GROUP;\n newNode.classes = newNode.classes + \" \" + CSS_DIAGRAM_CLUSTER + \" \" + (altFlag ? CSS_DIAGRAM_CLUSTER_ALT : \"\");\n }\n const nodeData = {\n labelStyle: \"\",\n shape: newNode.shape,\n labelText: newNode.description,\n // typeof newNode.description === 'object'\n // ? newNode.description[0]\n // : newNode.description,\n classes: newNode.classes,\n style: \"\",\n //styles.style,\n id: itemId,\n dir: newNode.dir,\n domId: stateDomId(itemId, graphItemCount),\n type: newNode.type,\n padding: 15\n //getConfig().flowchart.padding\n };\n nodeData.centerLabel = true;\n if (parsedItem.note) {\n const noteData = {\n labelStyle: \"\",\n shape: SHAPE_NOTE,\n labelText: parsedItem.note.text,\n classes: CSS_DIAGRAM_NOTE,\n // useHtmlLabels: false,\n style: \"\",\n // styles.style,\n id: itemId + NOTE_ID + \"-\" + graphItemCount,\n domId: stateDomId(itemId, graphItemCount, NOTE),\n type: newNode.type,\n padding: 15\n //getConfig().flowchart.padding\n };\n const groupData = {\n labelStyle: \"\",\n shape: SHAPE_NOTEGROUP,\n labelText: parsedItem.note.text,\n classes: newNode.classes,\n style: \"\",\n // styles.style,\n id: itemId + PARENT_ID,\n domId: stateDomId(itemId, graphItemCount, PARENT),\n type: \"group\",\n padding: 0\n //getConfig().flowchart.padding\n };\n graphItemCount++;\n const parentNodeId = itemId + PARENT_ID;\n g.setNode(parentNodeId, groupData);\n g.setNode(noteData.id, noteData);\n g.setNode(itemId, nodeData);\n g.setParent(itemId, parentNodeId);\n g.setParent(noteData.id, parentNodeId);\n let from = itemId;\n let to = noteData.id;\n if (parsedItem.note.position === \"left of\") {\n from = noteData.id;\n to = itemId;\n }\n g.setEdge(from, to, {\n arrowhead: \"none\",\n arrowType: \"\",\n style: G_EDGE_STYLE,\n labelStyle: \"\",\n classes: CSS_EDGE_NOTE_EDGE,\n arrowheadStyle: G_EDGE_ARROWHEADSTYLE,\n labelpos: G_EDGE_LABELPOS,\n labelType: G_EDGE_LABELTYPE,\n thickness: G_EDGE_THICKNESS\n });\n } else {\n g.setNode(itemId, nodeData);\n }\n }\n if (parent && parent.id !== \"root\") {\n log.trace(\"Setting node \", itemId, \" to be child of its parent \", parent.id);\n g.setParent(itemId, parent.id);\n }\n if (parsedItem.doc) {\n log.trace(\"Adding nodes children \");\n setupDoc(g, parsedItem, parsedItem.doc, diagramStates, diagramDb, !altFlag);\n }\n};\nconst setupDoc = (g, parentParsedItem, doc, diagramStates, diagramDb, altFlag) => {\n log.trace(\"items\", doc);\n doc.forEach((item) => {\n switch (item.stmt) {\n case STMT_STATE:\n setupNode(g, parentParsedItem, item, diagramStates, diagramDb, altFlag);\n break;\n case DEFAULT_STATE_TYPE:\n setupNode(g, parentParsedItem, item, diagramStates, diagramDb, altFlag);\n break;\n case STMT_RELATION:\n {\n setupNode(g, parentParsedItem, item.state1, diagramStates, diagramDb, altFlag);\n setupNode(g, parentParsedItem, item.state2, diagramStates, diagramDb, altFlag);\n const edgeData = {\n id: \"edge\" + graphItemCount,\n arrowhead: \"normal\",\n arrowTypeEnd: \"arrow_barb\",\n style: G_EDGE_STYLE,\n labelStyle: \"\",\n label: common.sanitizeText(item.description, getConfig()),\n arrowheadStyle: G_EDGE_ARROWHEADSTYLE,\n labelpos: G_EDGE_LABELPOS,\n labelType: G_EDGE_LABELTYPE,\n thickness: G_EDGE_THICKNESS,\n classes: CSS_EDGE\n };\n g.setEdge(item.state1.id, item.state2.id, edgeData, graphItemCount);\n graphItemCount++;\n }\n break;\n }\n });\n};\nconst getDir = (parsedItem, defaultDir = DEFAULT_NESTED_DOC_DIR) => {\n let dir = defaultDir;\n if (parsedItem.doc) {\n for (let i = 0; i < parsedItem.doc.length; i++) {\n const parsedItemDoc = parsedItem.doc[i];\n if (parsedItemDoc.stmt === \"dir\") {\n dir = parsedItemDoc.value;\n }\n }\n }\n return dir;\n};\nconst draw = async function(text, id, _version, diag) {\n log.info(\"Drawing state diagram (v2)\", id);\n nodeDb = {};\n diag.db.getDirection();\n const { securityLevel, state: conf } = getConfig();\n const nodeSpacing = conf.nodeSpacing || 50;\n const rankSpacing = conf.rankSpacing || 50;\n log.info(diag.db.getRootDocV2());\n diag.db.extract(diag.db.getRootDocV2());\n log.info(diag.db.getRootDocV2());\n const diagramStates = diag.db.getStates();\n const g = new graphlib.Graph({\n multigraph: true,\n compound: true\n }).setGraph({\n rankdir: getDir(diag.db.getRootDocV2()),\n nodesep: nodeSpacing,\n ranksep: rankSpacing,\n marginx: 8,\n marginy: 8\n }).setDefaultEdgeLabel(function() {\n return {};\n });\n setupNode(g, void 0, diag.db.getRootDocV2(), diagramStates, diag.db, true);\n let sandboxElement;\n if (securityLevel === \"sandbox\") {\n sandboxElement = select(\"#i\" + id);\n }\n const root = securityLevel === \"sandbox\" ? select(sandboxElement.nodes()[0].contentDocument.body) : select(\"body\");\n const svg = root.select(`[id=\"${id}\"]`);\n const element = root.select(\"#\" + id + \" g\");\n await render(element, g, [\"barb\"], CSS_DIAGRAM, id);\n const padding = 8;\n utils.insertTitle(svg, \"statediagramTitleText\", conf.titleTopMargin, diag.db.getDiagramTitle());\n const bounds = svg.node().getBBox();\n const width = bounds.width + padding * 2;\n const height = bounds.height + padding * 2;\n svg.attr(\"class\", CSS_DIAGRAM);\n const svgBounds = svg.node().getBBox();\n configureSvgSize(svg, height, width, conf.useMaxWidth);\n const vBox = `${svgBounds.x - padding} ${svgBounds.y - padding} ${width} ${height}`;\n log.debug(`viewBox ${vBox}`);\n svg.attr(\"viewBox\", vBox);\n const labels = document.querySelectorAll('[id=\"' + id + '\"] .edgeLabel .label');\n for (const label of labels) {\n const dim = label.getBBox();\n const rect = document.createElementNS(\"http://www.w3.org/2000/svg\", SHAPE_STATE);\n rect.setAttribute(\"rx\", 0);\n rect.setAttribute(\"ry\", 0);\n rect.setAttribute(\"width\", dim.width);\n rect.setAttribute(\"height\", dim.height);\n label.insertBefore(rect, label.firstChild);\n }\n};\nconst renderer = {\n setConf,\n getClasses,\n draw\n};\nconst diagram = {\n parser,\n db,\n renderer,\n styles,\n init: (cnf) => {\n if (!cnf.state) {\n cnf.state = {};\n }\n cnf.state.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;\n db.clear();\n }\n};\nexport {\n diagram\n};\n","import * as graphlib from \"dagre-d3-es/src/graphlib/index.js\";\nimport { curveLinear, select, selectAll } from \"d3\";\nimport { k as getStylesFromArray, l as log, m as evaluate, c as getConfig, e as common, r as renderKatex, n as interpolateToCurve, u as utils, o as setupGraphViewbox } from \"./mermaid-f47111a7.js\";\nimport { r as render } from \"./index-fc10efb0.js\";\nimport { addHtmlLabel } from \"dagre-d3-es/src/dagre-js/label/add-html-label.js\";\nimport * as khroma from \"khroma\";\nconst conf = {};\nconst setConf = function(cnf) {\n const keys = Object.keys(cnf);\n for (const key of keys) {\n conf[key] = cnf[key];\n }\n};\nconst addVertices = async function(vert, g, svgId, root, doc, diagObj) {\n const svg = root.select(`[id=\"${svgId}\"]`);\n const keys = Object.keys(vert);\n for (const id of keys) {\n const vertex = vert[id];\n let classStr = \"default\";\n if (vertex.classes.length > 0) {\n classStr = vertex.classes.join(\" \");\n }\n classStr = classStr + \" flowchart-label\";\n const styles = getStylesFromArray(vertex.styles);\n let vertexText = vertex.text !== void 0 ? vertex.text : vertex.id;\n let vertexNode;\n log.info(\"vertex\", vertex, vertex.labelType);\n if (vertex.labelType === \"markdown\") {\n log.info(\"vertex\", vertex, vertex.labelType);\n } else {\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n const node = {\n label: vertexText\n };\n vertexNode = addHtmlLabel(svg, node).node();\n vertexNode.parentNode.removeChild(vertexNode);\n } else {\n const svgLabel = doc.createElementNS(\"http://www.w3.org/2000/svg\", \"text\");\n svgLabel.setAttribute(\"style\", styles.labelStyle.replace(\"color:\", \"fill:\"));\n const rows = vertexText.split(common.lineBreakRegex);\n for (const row of rows) {\n const tspan = doc.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 = row;\n svgLabel.appendChild(tspan);\n }\n vertexNode = svgLabel;\n }\n }\n let radius = 0;\n let _shape = \"\";\n switch (vertex.type) {\n case \"round\":\n radius = 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 case \"doublecircle\":\n _shape = \"doublecircle\";\n break;\n default:\n _shape = \"rect\";\n }\n const labelText = await renderKatex(vertexText, getConfig());\n g.setNode(vertex.id, {\n labelStyle: styles.labelStyle,\n shape: _shape,\n labelText,\n labelType: vertex.labelType,\n rx: radius,\n ry: radius,\n class: classStr,\n style: styles.style,\n id: vertex.id,\n link: vertex.link,\n linkTarget: vertex.linkTarget,\n tooltip: diagObj.db.getTooltip(vertex.id) || \"\",\n domId: diagObj.db.lookUpDomId(vertex.id),\n haveCallback: vertex.haveCallback,\n width: vertex.type === \"group\" ? 500 : void 0,\n dir: vertex.dir,\n type: vertex.type,\n props: vertex.props,\n padding: getConfig().flowchart.padding\n });\n log.info(\"setNode\", {\n labelStyle: styles.labelStyle,\n labelType: vertex.labelType,\n shape: _shape,\n labelText,\n rx: radius,\n ry: radius,\n class: classStr,\n style: styles.style,\n id: vertex.id,\n domId: diagObj.db.lookUpDomId(vertex.id),\n width: vertex.type === \"group\" ? 500 : void 0,\n type: vertex.type,\n dir: vertex.dir,\n props: vertex.props,\n padding: getConfig().flowchart.padding\n });\n }\n};\nconst addEdges = async function(edges, g, diagObj) {\n log.info(\"abc78 edges = \", edges);\n let cnt = 0;\n let linkIdCnt = {};\n let defaultStyle;\n let defaultLabelStyle;\n if (edges.defaultStyle !== void 0) {\n const defaultStyles = getStylesFromArray(edges.defaultStyle);\n defaultStyle = defaultStyles.style;\n defaultLabelStyle = defaultStyles.labelStyle;\n }\n for (const edge of edges) {\n cnt++;\n const linkIdBase = \"L-\" + edge.start + \"-\" + edge.end;\n if (linkIdCnt[linkIdBase] === void 0) {\n linkIdCnt[linkIdBase] = 0;\n log.info(\"abc78 new entry\", linkIdBase, linkIdCnt[linkIdBase]);\n } else {\n linkIdCnt[linkIdBase]++;\n log.info(\"abc78 new entry\", linkIdBase, linkIdCnt[linkIdBase]);\n }\n let linkId = linkIdBase + \"-\" + linkIdCnt[linkIdBase];\n log.info(\"abc78 new link id to be used is\", linkIdBase, linkId, linkIdCnt[linkIdBase]);\n const linkNameStart = \"LS-\" + edge.start;\n const linkNameEnd = \"LE-\" + edge.end;\n const edgeData = { style: \"\", labelStyle: \"\" };\n edgeData.minlen = edge.length || 1;\n if (edge.type === \"arrow_open\") {\n edgeData.arrowhead = \"none\";\n } else {\n edgeData.arrowhead = \"normal\";\n }\n edgeData.arrowTypeStart = \"arrow_open\";\n edgeData.arrowTypeEnd = \"arrow_open\";\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 let style = \"\";\n let labelStyle = \"\";\n switch (edge.stroke) {\n case \"normal\":\n style = \"fill:none;\";\n if (defaultStyle !== void 0) {\n style = defaultStyle;\n }\n if (defaultLabelStyle !== void 0) {\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 edgeData.style = \"fill:none;stroke-width:2px;stroke-dasharray:3;\";\n break;\n case \"thick\":\n edgeData.thickness = \"thick\";\n edgeData.pattern = \"solid\";\n edgeData.style = \"stroke-width: 3.5px;fill:none;\";\n break;\n case \"invisible\":\n edgeData.thickness = \"invisible\";\n edgeData.pattern = \"solid\";\n edgeData.style = \"stroke-width: 0;fill:none;\";\n break;\n }\n if (edge.style !== void 0) {\n const styles = getStylesFromArray(edge.style);\n style = styles.style;\n labelStyle = styles.labelStyle;\n }\n edgeData.style = edgeData.style += style;\n edgeData.labelStyle = edgeData.labelStyle += labelStyle;\n if (edge.interpolate !== void 0) {\n edgeData.curve = interpolateToCurve(edge.interpolate, curveLinear);\n } else if (edges.defaultInterpolate !== void 0) {\n edgeData.curve = interpolateToCurve(edges.defaultInterpolate, curveLinear);\n } else {\n edgeData.curve = interpolateToCurve(conf.curve, curveLinear);\n }\n if (edge.text === void 0) {\n if (edge.style !== void 0) {\n edgeData.arrowheadStyle = \"fill: #333\";\n }\n } else {\n edgeData.arrowheadStyle = \"fill: #333\";\n edgeData.labelpos = \"c\";\n }\n edgeData.labelType = edge.labelType;\n edgeData.label = await renderKatex(edge.text.replace(common.lineBreakRegex, \"\\n\"), getConfig());\n if (edge.style === void 0) {\n edgeData.style = edgeData.style || \"stroke: #333; stroke-width: 1.5px;fill:none;\";\n }\n edgeData.labelStyle = edgeData.labelStyle.replace(\"color:\", \"fill:\");\n edgeData.id = linkId;\n edgeData.classes = \"flowchart-link \" + linkNameStart + \" \" + linkNameEnd;\n g.setEdge(edge.start, edge.end, edgeData, cnt);\n }\n};\nconst getClasses = function(text, diagObj) {\n return diagObj.db.getClasses();\n};\nconst draw = async function(text, id, _version, diagObj) {\n log.info(\"Drawing flowchart\");\n let dir = diagObj.db.getDirection();\n if (dir === void 0) {\n dir = \"TD\";\n }\n const { securityLevel, flowchart: conf2 } = getConfig();\n const nodeSpacing = conf2.nodeSpacing || 50;\n const rankSpacing = conf2.rankSpacing || 50;\n let sandboxElement;\n if (securityLevel === \"sandbox\") {\n sandboxElement = select(\"#i\" + id);\n }\n const root = securityLevel === \"sandbox\" ? select(sandboxElement.nodes()[0].contentDocument.body) : select(\"body\");\n const doc = securityLevel === \"sandbox\" ? sandboxElement.nodes()[0].contentDocument : document;\n const g = new graphlib.Graph({\n multigraph: true,\n compound: true\n }).setGraph({\n rankdir: dir,\n nodesep: nodeSpacing,\n ranksep: rankSpacing,\n marginx: 0,\n marginy: 0\n }).setDefaultEdgeLabel(function() {\n return {};\n });\n let subG;\n const subGraphs = diagObj.db.getSubGraphs();\n log.info(\"Subgraphs - \", subGraphs);\n for (let i2 = subGraphs.length - 1; i2 >= 0; i2--) {\n subG = subGraphs[i2];\n log.info(\"Subgraph - \", subG);\n diagObj.db.addVertex(\n subG.id,\n { text: subG.title, type: subG.labelType },\n \"group\",\n void 0,\n subG.classes,\n subG.dir\n );\n }\n const vert = diagObj.db.getVertices();\n const edges = diagObj.db.getEdges();\n log.info(\"Edges\", edges);\n let i = 0;\n for (i = subGraphs.length - 1; i >= 0; i--) {\n subG = subGraphs[i];\n selectAll(\"cluster\").append(\"text\");\n for (let j = 0; j < subG.nodes.length; j++) {\n log.info(\"Setting up subgraphs\", subG.nodes[j], subG.id);\n g.setParent(subG.nodes[j], subG.id);\n }\n }\n await addVertices(vert, g, id, root, doc, diagObj);\n await addEdges(edges, g);\n const svg = root.select(`[id=\"${id}\"]`);\n const element = root.select(\"#\" + id + \" g\");\n await render(element, g, [\"point\", \"circle\", \"cross\"], \"flowchart\", id);\n utils.insertTitle(svg, \"flowchartTitleText\", conf2.titleTopMargin, diagObj.db.getDiagramTitle());\n setupGraphViewbox(g, svg, conf2.diagramPadding, conf2.useMaxWidth);\n diagObj.db.indexNodes(\"subGraph\" + i);\n if (!conf2.htmlLabels) {\n const labels = doc.querySelectorAll('[id=\"' + id + '\"] .edgeLabel .label');\n for (const label of labels) {\n const dim = label.getBBox();\n const rect = doc.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 label.insertBefore(rect, label.firstChild);\n }\n }\n const keys = Object.keys(vert);\n keys.forEach(function(key) {\n const vertex = vert[key];\n if (vertex.link) {\n const node = select(\"#\" + id + ' [id=\"' + key + '\"]');\n if (node) {\n const link = doc.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 if (securityLevel === \"sandbox\") {\n link.setAttributeNS(\"http://www.w3.org/2000/svg\", \"target\", \"_top\");\n } else if (vertex.linkTarget) {\n link.setAttributeNS(\"http://www.w3.org/2000/svg\", \"target\", vertex.linkTarget);\n }\n const linkNode = node.insert(function() {\n return link;\n }, \":first-child\");\n const shape = node.select(\".label-container\");\n if (shape) {\n linkNode.append(function() {\n return shape.node();\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};\nconst flowRendererV2 = {\n setConf,\n addVertices,\n addEdges,\n getClasses,\n draw\n};\nconst fade = (color, opacity) => {\n const channel = khroma.channel;\n const r = channel(color, \"r\");\n const g = channel(color, \"g\");\n const b = channel(color, \"b\");\n return khroma.rgba(r, g, b, opacity);\n};\nconst getStyles = (options) => `.label {\n font-family: ${options.fontFamily};\n color: ${options.nodeTextColor || options.textColor};\n }\n .cluster-label text {\n fill: ${options.titleColor};\n }\n .cluster-label span,p {\n color: ${options.titleColor};\n }\n\n .label text,span,p {\n fill: ${options.nodeTextColor || options.textColor};\n color: ${options.nodeTextColor || 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 .flowchart-label text {\n text-anchor: middle;\n }\n // .flowchart-label .text-outer-tspan {\n // text-anchor: middle;\n // }\n // .flowchart-label .text-inner-tspan {\n // text-anchor: start;\n // }\n\n .node .katex path {\n fill: #000;\n stroke: #000;\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: 2.0px;\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 background-color: ${options.edgeLabelBackground};\n fill: ${options.edgeLabelBackground};\n }\n text-align: center;\n }\n\n /* For html labels only */\n .labelBkg {\n background-color: ${fade(options.edgeLabelBackground, 0.5)};\n // background-color: \n }\n\n .cluster rect {\n fill: ${options.clusterBkg};\n stroke: ${options.clusterBorder};\n stroke-width: 1px;\n }\n\n .cluster text {\n fill: ${options.titleColor};\n }\n\n .cluster span,p {\n color: ${options.titleColor};\n }\n /* .cluster div {\n color: ${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.tertiaryColor};\n border: 1px solid ${options.border2};\n border-radius: 2px;\n pointer-events: none;\n z-index: 100;\n }\n\n .flowchartTitleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${options.textColor};\n }\n`;\nconst flowStyles = getStyles;\nexport {\n flowStyles as a,\n flowRendererV2 as f\n};\n","import { select } from \"d3\";\nimport { d as sanitizeText$1, c as getConfig, x as parseGenericTypes, s as setAccTitle, g as getAccTitle, a as getAccDescription, b as setAccDescription, q as setDiagramTitle, t as getDiagramTitle, e as common, v as clear$1, l as log, u as utils } from \"./mermaid-f47111a7.js\";\nvar parser = function() {\n var o = function(k, v, o2, l) {\n for (o2 = o2 || {}, l = k.length; l--; o2[k[l]] = v)\n ;\n return o2;\n }, $V0 = [1, 17], $V1 = [1, 18], $V2 = [1, 19], $V3 = [1, 39], $V4 = [1, 40], $V5 = [1, 25], $V6 = [1, 23], $V7 = [1, 24], $V8 = [1, 31], $V9 = [1, 32], $Va = [1, 33], $Vb = [1, 34], $Vc = [1, 35], $Vd = [1, 36], $Ve = [1, 26], $Vf = [1, 27], $Vg = [1, 28], $Vh = [1, 29], $Vi = [1, 43], $Vj = [1, 30], $Vk = [1, 42], $Vl = [1, 44], $Vm = [1, 41], $Vn = [1, 45], $Vo = [1, 9], $Vp = [1, 8, 9], $Vq = [1, 56], $Vr = [1, 57], $Vs = [1, 58], $Vt = [1, 59], $Vu = [1, 60], $Vv = [1, 61], $Vw = [1, 62], $Vx = [1, 8, 9, 39], $Vy = [1, 74], $Vz = [1, 8, 9, 12, 13, 21, 37, 39, 42, 59, 60, 61, 62, 63, 64, 65, 70, 72], $VA = [1, 8, 9, 12, 13, 19, 21, 37, 39, 42, 46, 59, 60, 61, 62, 63, 64, 65, 70, 72, 74, 80, 95, 97, 98], $VB = [13, 74, 80, 95, 97, 98], $VC = [13, 64, 65, 74, 80, 95, 97, 98], $VD = [13, 59, 60, 61, 62, 63, 74, 80, 95, 97, 98], $VE = [1, 93], $VF = [1, 110], $VG = [1, 108], $VH = [1, 102], $VI = [1, 103], $VJ = [1, 104], $VK = [1, 105], $VL = [1, 106], $VM = [1, 107], $VN = [1, 109], $VO = [1, 8, 9, 37, 39, 42], $VP = [1, 8, 9, 21], $VQ = [1, 8, 9, 78], $VR = [1, 8, 9, 21, 73, 74, 78, 80, 81, 82, 83, 84, 85];\n var parser2 = {\n trace: function trace() {\n },\n yy: {},\n symbols_: { \"error\": 2, \"start\": 3, \"mermaidDoc\": 4, \"statements\": 5, \"graphConfig\": 6, \"CLASS_DIAGRAM\": 7, \"NEWLINE\": 8, \"EOF\": 9, \"statement\": 10, \"classLabel\": 11, \"SQS\": 12, \"STR\": 13, \"SQE\": 14, \"namespaceName\": 15, \"alphaNumToken\": 16, \"className\": 17, \"classLiteralName\": 18, \"GENERICTYPE\": 19, \"relationStatement\": 20, \"LABEL\": 21, \"namespaceStatement\": 22, \"classStatement\": 23, \"memberStatement\": 24, \"annotationStatement\": 25, \"clickStatement\": 26, \"styleStatement\": 27, \"cssClassStatement\": 28, \"noteStatement\": 29, \"direction\": 30, \"acc_title\": 31, \"acc_title_value\": 32, \"acc_descr\": 33, \"acc_descr_value\": 34, \"acc_descr_multiline_value\": 35, \"namespaceIdentifier\": 36, \"STRUCT_START\": 37, \"classStatements\": 38, \"STRUCT_STOP\": 39, \"NAMESPACE\": 40, \"classIdentifier\": 41, \"STYLE_SEPARATOR\": 42, \"members\": 43, \"CLASS\": 44, \"ANNOTATION_START\": 45, \"ANNOTATION_END\": 46, \"MEMBER\": 47, \"SEPARATOR\": 48, \"relation\": 49, \"NOTE_FOR\": 50, \"noteText\": 51, \"NOTE\": 52, \"direction_tb\": 53, \"direction_bt\": 54, \"direction_rl\": 55, \"direction_lr\": 56, \"relationType\": 57, \"lineType\": 58, \"AGGREGATION\": 59, \"EXTENSION\": 60, \"COMPOSITION\": 61, \"DEPENDENCY\": 62, \"LOLLIPOP\": 63, \"LINE\": 64, \"DOTTED_LINE\": 65, \"CALLBACK\": 66, \"LINK\": 67, \"LINK_TARGET\": 68, \"CLICK\": 69, \"CALLBACK_NAME\": 70, \"CALLBACK_ARGS\": 71, \"HREF\": 72, \"STYLE\": 73, \"ALPHA\": 74, \"stylesOpt\": 75, \"CSSCLASS\": 76, \"style\": 77, \"COMMA\": 78, \"styleComponent\": 79, \"NUM\": 80, \"COLON\": 81, \"UNIT\": 82, \"SPACE\": 83, \"BRKT\": 84, \"PCT\": 85, \"commentToken\": 86, \"textToken\": 87, \"graphCodeTokens\": 88, \"textNoTagsToken\": 89, \"TAGSTART\": 90, \"TAGEND\": 91, \"==\": 92, \"--\": 93, \"DEFAULT\": 94, \"MINUS\": 95, \"keywords\": 96, \"UNICODE_TEXT\": 97, \"BQUOTE_STR\": 98, \"$accept\": 0, \"$end\": 1 },\n terminals_: { 2: \"error\", 7: \"CLASS_DIAGRAM\", 8: \"NEWLINE\", 9: \"EOF\", 12: \"SQS\", 13: \"STR\", 14: \"SQE\", 19: \"GENERICTYPE\", 21: \"LABEL\", 31: \"acc_title\", 32: \"acc_title_value\", 33: \"acc_descr\", 34: \"acc_descr_value\", 35: \"acc_descr_multiline_value\", 37: \"STRUCT_START\", 39: \"STRUCT_STOP\", 40: \"NAMESPACE\", 42: \"STYLE_SEPARATOR\", 44: \"CLASS\", 45: \"ANNOTATION_START\", 46: \"ANNOTATION_END\", 47: \"MEMBER\", 48: \"SEPARATOR\", 50: \"NOTE_FOR\", 52: \"NOTE\", 53: \"direction_tb\", 54: \"direction_bt\", 55: \"direction_rl\", 56: \"direction_lr\", 59: \"AGGREGATION\", 60: \"EXTENSION\", 61: \"COMPOSITION\", 62: \"DEPENDENCY\", 63: \"LOLLIPOP\", 64: \"LINE\", 65: \"DOTTED_LINE\", 66: \"CALLBACK\", 67: \"LINK\", 68: \"LINK_TARGET\", 69: \"CLICK\", 70: \"CALLBACK_NAME\", 71: \"CALLBACK_ARGS\", 72: \"HREF\", 73: \"STYLE\", 74: \"ALPHA\", 76: \"CSSCLASS\", 78: \"COMMA\", 80: \"NUM\", 81: \"COLON\", 82: \"UNIT\", 83: \"SPACE\", 84: \"BRKT\", 85: \"PCT\", 88: \"graphCodeTokens\", 90: \"TAGSTART\", 91: \"TAGEND\", 92: \"==\", 93: \"--\", 94: \"DEFAULT\", 95: \"MINUS\", 96: \"keywords\", 97: \"UNICODE_TEXT\", 98: \"BQUOTE_STR\" },\n productions_: [0, [3, 1], [3, 1], [4, 1], [6, 4], [5, 1], [5, 2], [5, 3], [11, 3], [15, 1], [15, 2], [17, 1], [17, 1], [17, 2], [17, 2], [17, 2], [10, 1], [10, 2], [10, 1], [10, 1], [10, 1], [10, 1], [10, 1], [10, 1], [10, 1], [10, 1], [10, 1], [10, 2], [10, 2], [10, 1], [22, 4], [22, 5], [36, 2], [38, 1], [38, 2], [38, 3], [23, 1], [23, 3], [23, 4], [23, 6], [41, 2], [41, 3], [25, 4], [43, 1], [43, 2], [24, 1], [24, 2], [24, 1], [24, 1], [20, 3], [20, 4], [20, 4], [20, 5], [29, 3], [29, 2], [30, 1], [30, 1], [30, 1], [30, 1], [49, 3], [49, 2], [49, 2], [49, 1], [57, 1], [57, 1], [57, 1], [57, 1], [57, 1], [58, 1], [58, 1], [26, 3], [26, 4], [26, 3], [26, 4], [26, 4], [26, 5], [26, 3], [26, 4], [26, 4], [26, 5], [26, 4], [26, 5], [26, 5], [26, 6], [27, 3], [28, 3], [75, 1], [75, 3], [77, 1], [77, 2], [79, 1], [79, 1], [79, 1], [79, 1], [79, 1], [79, 1], [79, 1], [79, 1], [79, 1], [86, 1], [86, 1], [87, 1], [87, 1], [87, 1], [87, 1], [87, 1], [87, 1], [87, 1], [89, 1], [89, 1], [89, 1], [89, 1], [16, 1], [16, 1], [16, 1], [16, 1], [18, 1], [51, 1]],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) {\n var $0 = $$.length - 1;\n switch (yystate) {\n case 8:\n this.$ = $$[$0 - 1];\n break;\n case 9:\n case 11:\n case 12:\n this.$ = $$[$0];\n break;\n case 10:\n case 13:\n this.$ = $$[$0 - 1] + $$[$0];\n break;\n case 14:\n case 15:\n this.$ = $$[$0 - 1] + \"~\" + $$[$0] + \"~\";\n break;\n case 16:\n yy.addRelation($$[$0]);\n break;\n case 17:\n $$[$0 - 1].title = yy.cleanupLabel($$[$0]);\n yy.addRelation($$[$0 - 1]);\n break;\n case 27:\n this.$ = $$[$0].trim();\n yy.setAccTitle(this.$);\n break;\n case 28:\n case 29:\n this.$ = $$[$0].trim();\n yy.setAccDescription(this.$);\n break;\n case 30:\n yy.addClassesToNamespace($$[$0 - 3], $$[$0 - 1]);\n break;\n case 31:\n yy.addClassesToNamespace($$[$0 - 4], $$[$0 - 1]);\n break;\n case 32:\n this.$ = $$[$0];\n yy.addNamespace($$[$0]);\n break;\n case 33:\n this.$ = [$$[$0]];\n break;\n case 34:\n this.$ = [$$[$0 - 1]];\n break;\n case 35:\n $$[$0].unshift($$[$0 - 2]);\n this.$ = $$[$0];\n break;\n case 37:\n yy.setCssClass($$[$0 - 2], $$[$0]);\n break;\n case 38:\n yy.addMembers($$[$0 - 3], $$[$0 - 1]);\n break;\n case 39:\n yy.setCssClass($$[$0 - 5], $$[$0 - 3]);\n yy.addMembers($$[$0 - 5], $$[$0 - 1]);\n break;\n case 40:\n this.$ = $$[$0];\n yy.addClass($$[$0]);\n break;\n case 41:\n this.$ = $$[$0 - 1];\n yy.addClass($$[$0 - 1]);\n yy.setClassLabel($$[$0 - 1], $$[$0]);\n break;\n case 42:\n yy.addAnnotation($$[$0], $$[$0 - 2]);\n break;\n case 43:\n this.$ = [$$[$0]];\n break;\n case 44:\n $$[$0].push($$[$0 - 1]);\n this.$ = $$[$0];\n break;\n case 45:\n break;\n case 46:\n yy.addMember($$[$0 - 1], yy.cleanupLabel($$[$0]));\n break;\n case 47:\n break;\n case 48:\n break;\n case 49:\n this.$ = { \"id1\": $$[$0 - 2], \"id2\": $$[$0], relation: $$[$0 - 1], relationTitle1: \"none\", relationTitle2: \"none\" };\n break;\n case 50:\n this.$ = { id1: $$[$0 - 3], id2: $$[$0], relation: $$[$0 - 1], relationTitle1: $$[$0 - 2], relationTitle2: \"none\" };\n break;\n case 51:\n this.$ = { id1: $$[$0 - 3], id2: $$[$0], relation: $$[$0 - 2], relationTitle1: \"none\", relationTitle2: $$[$0 - 1] };\n break;\n case 52:\n this.$ = { id1: $$[$0 - 4], id2: $$[$0], relation: $$[$0 - 2], relationTitle1: $$[$0 - 3], relationTitle2: $$[$0 - 1] };\n break;\n case 53:\n yy.addNote($$[$0], $$[$0 - 1]);\n break;\n case 54:\n yy.addNote($$[$0]);\n break;\n case 55:\n yy.setDirection(\"TB\");\n break;\n case 56:\n yy.setDirection(\"BT\");\n break;\n case 57:\n yy.setDirection(\"RL\");\n break;\n case 58:\n yy.setDirection(\"LR\");\n break;\n case 59:\n this.$ = { type1: $$[$0 - 2], type2: $$[$0], lineType: $$[$0 - 1] };\n break;\n case 60:\n this.$ = { type1: \"none\", type2: $$[$0], lineType: $$[$0 - 1] };\n break;\n case 61:\n this.$ = { type1: $$[$0 - 1], type2: \"none\", lineType: $$[$0] };\n break;\n case 62:\n this.$ = { type1: \"none\", type2: \"none\", lineType: $$[$0] };\n break;\n case 63:\n this.$ = yy.relationType.AGGREGATION;\n break;\n case 64:\n this.$ = yy.relationType.EXTENSION;\n break;\n case 65:\n this.$ = yy.relationType.COMPOSITION;\n break;\n case 66:\n this.$ = yy.relationType.DEPENDENCY;\n break;\n case 67:\n this.$ = yy.relationType.LOLLIPOP;\n break;\n case 68:\n this.$ = yy.lineType.LINE;\n break;\n case 69:\n this.$ = yy.lineType.DOTTED_LINE;\n break;\n case 70:\n case 76:\n this.$ = $$[$0 - 2];\n yy.setClickEvent($$[$0 - 1], $$[$0]);\n break;\n case 71:\n case 77:\n this.$ = $$[$0 - 3];\n yy.setClickEvent($$[$0 - 2], $$[$0 - 1]);\n yy.setTooltip($$[$0 - 2], $$[$0]);\n break;\n case 72:\n this.$ = $$[$0 - 2];\n yy.setLink($$[$0 - 1], $$[$0]);\n break;\n case 73:\n this.$ = $$[$0 - 3];\n yy.setLink($$[$0 - 2], $$[$0 - 1], $$[$0]);\n break;\n case 74:\n this.$ = $$[$0 - 3];\n yy.setLink($$[$0 - 2], $$[$0 - 1]);\n yy.setTooltip($$[$0 - 2], $$[$0]);\n break;\n case 75:\n this.$ = $$[$0 - 4];\n yy.setLink($$[$0 - 3], $$[$0 - 2], $$[$0]);\n yy.setTooltip($$[$0 - 3], $$[$0 - 1]);\n break;\n case 78:\n this.$ = $$[$0 - 3];\n yy.setClickEvent($$[$0 - 2], $$[$0 - 1], $$[$0]);\n break;\n case 79:\n this.$ = $$[$0 - 4];\n yy.setClickEvent($$[$0 - 3], $$[$0 - 2], $$[$0 - 1]);\n yy.setTooltip($$[$0 - 3], $$[$0]);\n break;\n case 80:\n this.$ = $$[$0 - 3];\n yy.setLink($$[$0 - 2], $$[$0]);\n break;\n case 81:\n this.$ = $$[$0 - 4];\n yy.setLink($$[$0 - 3], $$[$0 - 1], $$[$0]);\n break;\n case 82:\n this.$ = $$[$0 - 4];\n yy.setLink($$[$0 - 3], $$[$0 - 1]);\n yy.setTooltip($$[$0 - 3], $$[$0]);\n break;\n case 83:\n this.$ = $$[$0 - 5];\n yy.setLink($$[$0 - 4], $$[$0 - 2], $$[$0]);\n yy.setTooltip($$[$0 - 4], $$[$0 - 1]);\n break;\n case 84:\n this.$ = $$[$0 - 2];\n yy.setCssStyle($$[$0 - 1], $$[$0]);\n break;\n case 85:\n yy.setCssClass($$[$0 - 1], $$[$0]);\n break;\n case 86:\n this.$ = [$$[$0]];\n break;\n case 87:\n $$[$0 - 2].push($$[$0]);\n this.$ = $$[$0 - 2];\n break;\n case 89:\n this.$ = $$[$0 - 1] + $$[$0];\n break;\n }\n },\n table: [{ 3: 1, 4: 2, 5: 3, 6: 4, 7: [1, 6], 10: 5, 16: 37, 17: 20, 18: 38, 20: 7, 22: 8, 23: 9, 24: 10, 25: 11, 26: 12, 27: 13, 28: 14, 29: 15, 30: 16, 31: $V0, 33: $V1, 35: $V2, 36: 21, 40: $V3, 41: 22, 44: $V4, 45: $V5, 47: $V6, 48: $V7, 50: $V8, 52: $V9, 53: $Va, 54: $Vb, 55: $Vc, 56: $Vd, 66: $Ve, 67: $Vf, 69: $Vg, 73: $Vh, 74: $Vi, 76: $Vj, 80: $Vk, 95: $Vl, 97: $Vm, 98: $Vn }, { 1: [3] }, { 1: [2, 1] }, { 1: [2, 2] }, { 1: [2, 3] }, o($Vo, [2, 5], { 8: [1, 46] }), { 8: [1, 47] }, o($Vp, [2, 16], { 21: [1, 48] }), o($Vp, [2, 18]), o($Vp, [2, 19]), o($Vp, [2, 20]), o($Vp, [2, 21]), o($Vp, [2, 22]), o($Vp, [2, 23]), o($Vp, [2, 24]), o($Vp, [2, 25]), o($Vp, [2, 26]), { 32: [1, 49] }, { 34: [1, 50] }, o($Vp, [2, 29]), o($Vp, [2, 45], { 49: 51, 57: 54, 58: 55, 13: [1, 52], 21: [1, 53], 59: $Vq, 60: $Vr, 61: $Vs, 62: $Vt, 63: $Vu, 64: $Vv, 65: $Vw }), { 37: [1, 63] }, o($Vx, [2, 36], { 37: [1, 65], 42: [1, 64] }), o($Vp, [2, 47]), o($Vp, [2, 48]), { 16: 66, 74: $Vi, 80: $Vk, 95: $Vl, 97: $Vm }, { 16: 37, 17: 67, 18: 38, 74: $Vi, 80: $Vk, 95: $Vl, 97: $Vm, 98: $Vn }, { 16: 37, 17: 68, 18: 38, 74: $Vi, 80: $Vk, 95: $Vl, 97: $Vm, 98: $Vn }, { 16: 37, 17: 69, 18: 38, 74: $Vi, 80: $Vk, 95: $Vl, 97: $Vm, 98: $Vn }, { 74: [1, 70] }, { 13: [1, 71] }, { 16: 37, 17: 72, 18: 38, 74: $Vi, 80: $Vk, 95: $Vl, 97: $Vm, 98: $Vn }, { 13: $Vy, 51: 73 }, o($Vp, [2, 55]), o($Vp, [2, 56]), o($Vp, [2, 57]), o($Vp, [2, 58]), o($Vz, [2, 11], { 16: 37, 18: 38, 17: 75, 19: [1, 76], 74: $Vi, 80: $Vk, 95: $Vl, 97: $Vm, 98: $Vn }), o($Vz, [2, 12], { 19: [1, 77] }), { 15: 78, 16: 79, 74: $Vi, 80: $Vk, 95: $Vl, 97: $Vm }, { 16: 37, 17: 80, 18: 38, 74: $Vi, 80: $Vk, 95: $Vl, 97: $Vm, 98: $Vn }, o($VA, [2, 112]), o($VA, [2, 113]), o($VA, [2, 114]), o($VA, [2, 115]), o([1, 8, 9, 12, 13, 19, 21, 37, 39, 42, 59, 60, 61, 62, 63, 64, 65, 70, 72], [2, 116]), o($Vo, [2, 6], { 10: 5, 20: 7, 22: 8, 23: 9, 24: 10, 25: 11, 26: 12, 27: 13, 28: 14, 29: 15, 30: 16, 17: 20, 36: 21, 41: 22, 16: 37, 18: 38, 5: 81, 31: $V0, 33: $V1, 35: $V2, 40: $V3, 44: $V4, 45: $V5, 47: $V6, 48: $V7, 50: $V8, 52: $V9, 53: $Va, 54: $Vb, 55: $Vc, 56: $Vd, 66: $Ve, 67: $Vf, 69: $Vg, 73: $Vh, 74: $Vi, 76: $Vj, 80: $Vk, 95: $Vl, 97: $Vm, 98: $Vn }), { 5: 82, 10: 5, 16: 37, 17: 20, 18: 38, 20: 7, 22: 8, 23: 9, 24: 10, 25: 11, 26: 12, 27: 13, 28: 14, 29: 15, 30: 16, 31: $V0, 33: $V1, 35: $V2, 36: 21, 40: $V3, 41: 22, 44: $V4, 45: $V5, 47: $V6, 48: $V7, 50: $V8, 52: $V9, 53: $Va, 54: $Vb, 55: $Vc, 56: $Vd, 66: $Ve, 67: $Vf, 69: $Vg, 73: $Vh, 74: $Vi, 76: $Vj, 80: $Vk, 95: $Vl, 97: $Vm, 98: $Vn }, o($Vp, [2, 17]), o($Vp, [2, 27]), o($Vp, [2, 28]), { 13: [1, 84], 16: 37, 17: 83, 18: 38, 74: $Vi, 80: $Vk, 95: $Vl, 97: $Vm, 98: $Vn }, { 49: 85, 57: 54, 58: 55, 59: $Vq, 60: $Vr, 61: $Vs, 62: $Vt, 63: $Vu, 64: $Vv, 65: $Vw }, o($Vp, [2, 46]), { 58: 86, 64: $Vv, 65: $Vw }, o($VB, [2, 62], { 57: 87, 59: $Vq, 60: $Vr, 61: $Vs, 62: $Vt, 63: $Vu }), o($VC, [2, 63]), o($VC, [2, 64]), o($VC, [2, 65]), o($VC, [2, 66]), o($VC, [2, 67]), o($VD, [2, 68]), o($VD, [2, 69]), { 8: [1, 89], 23: 90, 38: 88, 41: 22, 44: $V4 }, { 16: 91, 74: $Vi, 80: $Vk, 95: $Vl, 97: $Vm }, { 43: 92, 47: $VE }, { 46: [1, 94] }, { 13: [1, 95] }, { 13: [1, 96] }, { 70: [1, 97], 72: [1, 98] }, { 21: $VF, 73: $VG, 74: $VH, 75: 99, 77: 100, 79: 101, 80: $VI, 81: $VJ, 82: $VK, 83: $VL, 84: $VM, 85: $VN }, { 74: [1, 111] }, { 13: $Vy, 51: 112 }, o($Vp, [2, 54]), o($Vp, [2, 117]), o($Vz, [2, 13]), o($Vz, [2, 14]), o($Vz, [2, 15]), { 37: [2, 32] }, { 15: 113, 16: 79, 37: [2, 9], 74: $Vi, 80: $Vk, 95: $Vl, 97: $Vm }, o($VO, [2, 40], { 11: 114, 12: [1, 115] }), o($Vo, [2, 7]), { 9: [1, 116] }, o($VP, [2, 49]), { 16: 37, 17: 117, 18: 38, 74: $Vi, 80: $Vk, 95: $Vl, 97: $Vm, 98: $Vn }, { 13: [1, 119], 16: 37, 17: 118, 18: 38, 74: $Vi, 80: $Vk, 95: $Vl, 97: $Vm, 98: $Vn }, o($VB, [2, 61], { 57: 120, 59: $Vq, 60: $Vr, 61: $Vs, 62: $Vt, 63: $Vu }), o($VB, [2, 60]), { 39: [1, 121] }, { 23: 90, 38: 122, 41: 22, 44: $V4 }, { 8: [1, 123], 39: [2, 33] }, o($Vx, [2, 37], { 37: [1, 124] }), { 39: [1, 125] }, { 39: [2, 43], 43: 126, 47: $VE }, { 16: 37, 17: 127, 18: 38, 74: $Vi, 80: $Vk, 95: $Vl, 97: $Vm, 98: $Vn }, o($Vp, [2, 70], { 13: [1, 128] }), o($Vp, [2, 72], { 13: [1, 130], 68: [1, 129] }), o($Vp, [2, 76], { 13: [1, 131], 71: [1, 132] }), { 13: [1, 133] }, o($Vp, [2, 84], { 78: [1, 134] }), o($VQ, [2, 86], { 79: 135, 21: $VF, 73: $VG, 74: $VH, 80: $VI, 81: $VJ, 82: $VK, 83: $VL, 84: $VM, 85: $VN }), o($VR, [2, 88]), o($VR, [2, 90]), o($VR, [2, 91]), o($VR, [2, 92]), o($VR, [2, 93]), o($VR, [2, 94]), o($VR, [2, 95]), o($VR, [2, 96]), o($VR, [2, 97]), o($VR, [2, 98]), o($Vp, [2, 85]), o($Vp, [2, 53]), { 37: [2, 10] }, o($VO, [2, 41]), { 13: [1, 136] }, { 1: [2, 4] }, o($VP, [2, 51]), o($VP, [2, 50]), { 16: 37, 17: 137, 18: 38, 74: $Vi, 80: $Vk, 95: $Vl, 97: $Vm, 98: $Vn }, o($VB, [2, 59]), o($Vp, [2, 30]), { 39: [1, 138] }, { 23: 90, 38: 139, 39: [2, 34], 41: 22, 44: $V4 }, { 43: 140, 47: $VE }, o($Vx, [2, 38]), { 39: [2, 44] }, o($Vp, [2, 42]), o($Vp, [2, 71]), o($Vp, [2, 73]), o($Vp, [2, 74], { 68: [1, 141] }), o($Vp, [2, 77]), o($Vp, [2, 78], { 13: [1, 142] }), o($Vp, [2, 80], { 13: [1, 144], 68: [1, 143] }), { 21: $VF, 73: $VG, 74: $VH, 77: 145, 79: 101, 80: $VI, 81: $VJ, 82: $VK, 83: $VL, 84: $VM, 85: $VN }, o($VR, [2, 89]), { 14: [1, 146] }, o($VP, [2, 52]), o($Vp, [2, 31]), { 39: [2, 35] }, { 39: [1, 147] }, o($Vp, [2, 75]), o($Vp, [2, 79]), o($Vp, [2, 81]), o($Vp, [2, 82], { 68: [1, 148] }), o($VQ, [2, 87], { 79: 135, 21: $VF, 73: $VG, 74: $VH, 80: $VI, 81: $VJ, 82: $VK, 83: $VL, 84: $VM, 85: $VN }), o($VO, [2, 8]), o($Vx, [2, 39]), o($Vp, [2, 83])],\n defaultActions: { 2: [2, 1], 3: [2, 2], 4: [2, 3], 78: [2, 32], 113: [2, 10], 116: [2, 4], 126: [2, 44], 139: [2, 35] },\n parseError: 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 },\n parse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = \"\", yylineno = 0, yyleng = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer2 = 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 lexer2.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer2;\n sharedState.yy.parser = this;\n if (typeof lexer2.yylloc == \"undefined\") {\n lexer2.yylloc = {};\n }\n var yyloc = lexer2.yylloc;\n lstack.push(yyloc);\n var ranges = lexer2.options && lexer2.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 lex() {\n var token;\n token = tstack.pop() || lexer2.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, state, action, 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 (lexer2.showPosition) {\n errStr = \"Parse error on line \" + (yylineno + 1) + \":\\n\" + lexer2.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: lexer2.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer2.yylineno,\n loc: yyloc,\n 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(lexer2.yytext);\n lstack.push(lexer2.yylloc);\n stack.push(action[1]);\n symbol = null;\n {\n yyleng = lexer2.yyleng;\n yytext = lexer2.yytext;\n yylineno = lexer2.yylineno;\n yyloc = lexer2.yylloc;\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 var lexer = function() {\n var lexer2 = {\n EOF: 1,\n parseError: 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 // resets the lexer, sets new input\n setInput: 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 // consumes and returns one char from the input\n input: 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 this._input = this._input.slice(1);\n return ch;\n },\n // unshifts one char (or a string) into the input\n unput: function(ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - 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 if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\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 ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len\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 // When called from action, caches matched text and appends it on next action\n more: function() {\n this._more = true;\n return this;\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.\n reject: 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 return this;\n },\n // retain first n characters of the match\n less: function(n) {\n this.unput(this.match.slice(n));\n },\n // displays already matched input, i.e. for error messages\n pastInput: 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 // displays upcoming input, i.e. for error messages\n upcomingInput: 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 // displays the character position where the lexing error occurred, i.e. for error messages\n showPosition: function() {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n // test the lexed token: return FALSE when not a match, otherwise return token\n test_match: function(match, indexed_rule) {\n var token, lines, backup;\n if (this.options.backtrack_lexer) {\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 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 ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length : 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 for (var k in backup) {\n this[k] = backup[k];\n }\n return false;\n }\n return false;\n },\n // return next match in input\n next: function() {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n var token, match, tempMatch, 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;\n } else {\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 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 // return next match that has a token\n lex: function lex() {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\n begin: function begin(condition) {\n this.conditionStack.push(condition);\n },\n // pop the previously active lexer condition state off the condition stack\n popState: 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 // 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 // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\n topState: 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 // alias for begin(condition)\n pushState: function pushState(condition) {\n this.begin(condition);\n },\n // return the number of states currently on the stack\n stateStackSize: function stateStackSize() {\n return this.conditionStack.length;\n },\n options: {},\n performAction: function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) {\n switch ($avoiding_name_collisions) {\n case 0:\n return 53;\n case 1:\n return 54;\n case 2:\n return 55;\n case 3:\n return 56;\n case 4:\n break;\n case 5:\n break;\n case 6:\n this.begin(\"acc_title\");\n return 31;\n case 7:\n this.popState();\n return \"acc_title_value\";\n case 8:\n this.begin(\"acc_descr\");\n return 33;\n case 9:\n this.popState();\n return \"acc_descr_value\";\n case 10:\n this.begin(\"acc_descr_multiline\");\n break;\n case 11:\n this.popState();\n break;\n case 12:\n return \"acc_descr_multiline_value\";\n case 13:\n return 8;\n case 14:\n break;\n case 15:\n return 7;\n case 16:\n return 7;\n case 17:\n return \"EDGE_STATE\";\n case 18:\n this.begin(\"callback_name\");\n break;\n case 19:\n this.popState();\n break;\n case 20:\n this.popState();\n this.begin(\"callback_args\");\n break;\n case 21:\n return 70;\n case 22:\n this.popState();\n break;\n case 23:\n return 71;\n case 24:\n this.popState();\n break;\n case 25:\n return \"STR\";\n case 26:\n this.begin(\"string\");\n break;\n case 27:\n return 73;\n case 28:\n this.begin(\"namespace\");\n return 40;\n case 29:\n this.popState();\n return 8;\n case 30:\n break;\n case 31:\n this.begin(\"namespace-body\");\n return 37;\n case 32:\n this.popState();\n return 39;\n case 33:\n return \"EOF_IN_STRUCT\";\n case 34:\n return 8;\n case 35:\n break;\n case 36:\n return \"EDGE_STATE\";\n case 37:\n this.begin(\"class\");\n return 44;\n case 38:\n this.popState();\n return 8;\n case 39:\n break;\n case 40:\n this.popState();\n this.popState();\n return 39;\n case 41:\n this.begin(\"class-body\");\n return 37;\n case 42:\n this.popState();\n return 39;\n case 43:\n return \"EOF_IN_STRUCT\";\n case 44:\n return \"EDGE_STATE\";\n case 45:\n return \"OPEN_IN_STRUCT\";\n case 46:\n break;\n case 47:\n return \"MEMBER\";\n case 48:\n return 76;\n case 49:\n return 66;\n case 50:\n return 67;\n case 51:\n return 69;\n case 52:\n return 50;\n case 53:\n return 52;\n case 54:\n return 45;\n case 55:\n return 46;\n case 56:\n return 72;\n case 57:\n this.popState();\n break;\n case 58:\n return \"GENERICTYPE\";\n case 59:\n this.begin(\"generic\");\n break;\n case 60:\n this.popState();\n break;\n case 61:\n return \"BQUOTE_STR\";\n case 62:\n this.begin(\"bqstring\");\n break;\n case 63:\n return 68;\n case 64:\n return 68;\n case 65:\n return 68;\n case 66:\n return 68;\n case 67:\n return 60;\n case 68:\n return 60;\n case 69:\n return 62;\n case 70:\n return 62;\n case 71:\n return 61;\n case 72:\n return 59;\n case 73:\n return 63;\n case 74:\n return 64;\n case 75:\n return 65;\n case 76:\n return 21;\n case 77:\n return 42;\n case 78:\n return 95;\n case 79:\n return \"DOT\";\n case 80:\n return \"PLUS\";\n case 81:\n return 81;\n case 82:\n return 78;\n case 83:\n return 84;\n case 84:\n return 84;\n case 85:\n return 85;\n case 86:\n return \"EQUALS\";\n case 87:\n return \"EQUALS\";\n case 88:\n return 74;\n case 89:\n return 12;\n case 90:\n return 14;\n case 91:\n return \"PUNCTUATION\";\n case 92:\n return 80;\n case 93:\n return 97;\n case 94:\n return 83;\n case 95:\n return 83;\n case 96:\n return 9;\n }\n },\n rules: [/^(?:.*direction\\s+TB[^\\n]*)/, /^(?:.*direction\\s+BT[^\\n]*)/, /^(?:.*direction\\s+RL[^\\n]*)/, /^(?:.*direction\\s+LR[^\\n]*)/, /^(?:%%(?!\\{)*[^\\n]*(\\r?\\n?)+)/, /^(?:%%[^\\n]*(\\r?\\n)*)/, /^(?:accTitle\\s*:\\s*)/, /^(?:(?!\\n||)*[^\\n]*)/, /^(?:accDescr\\s*:\\s*)/, /^(?:(?!\\n||)*[^\\n]*)/, /^(?:accDescr\\s*\\{\\s*)/, /^(?:[\\}])/, /^(?:[^\\}]*)/, /^(?:\\s*(\\r?\\n)+)/, /^(?:\\s+)/, /^(?:classDiagram-v2\\b)/, /^(?:classDiagram\\b)/, /^(?:\\[\\*\\])/, /^(?:call[\\s]+)/, /^(?:\\([\\s]*\\))/, /^(?:\\()/, /^(?:[^(]*)/, /^(?:\\))/, /^(?:[^)]*)/, /^(?:[\"])/, /^(?:[^\"]*)/, /^(?:[\"])/, /^(?:style\\b)/, /^(?:namespace\\b)/, /^(?:\\s*(\\r?\\n)+)/, /^(?:\\s+)/, /^(?:[{])/, /^(?:[}])/, /^(?:$)/, /^(?:\\s*(\\r?\\n)+)/, /^(?:\\s+)/, /^(?:\\[\\*\\])/, /^(?:class\\b)/, /^(?:\\s*(\\r?\\n)+)/, /^(?:\\s+)/, /^(?:[}])/, /^(?:[{])/, /^(?:[}])/, /^(?:$)/, /^(?:\\[\\*\\])/, /^(?:[{])/, /^(?:[\\n])/, /^(?:[^{}\\n]*)/, /^(?:cssClass\\b)/, /^(?:callback\\b)/, /^(?:link\\b)/, /^(?:click\\b)/, /^(?:note for\\b)/, /^(?:note\\b)/, /^(?:<<)/, /^(?:>>)/, /^(?:href\\b)/, /^(?:[~])/, /^(?:[^~]*)/, /^(?:~)/, /^(?:[`])/, /^(?:[^`]+)/, /^(?:[`])/, /^(?:_self\\b)/, /^(?:_blank\\b)/, /^(?:_parent\\b)/, /^(?:_top\\b)/, /^(?:\\s*<\\|)/, /^(?:\\s*\\|>)/, /^(?:\\s*>)/, /^(?:\\s*<)/, /^(?:\\s*\\*)/, /^(?:\\s*o\\b)/, /^(?:\\s*\\(\\))/, /^(?:--)/, /^(?:\\.\\.)/, /^(?::{1}[^:\\n;]+)/, /^(?::{3})/, /^(?:-)/, /^(?:\\.)/, /^(?:\\+)/, /^(?::)/, /^(?:,)/, /^(?:#)/, /^(?:#)/, /^(?:%)/, /^(?:=)/, /^(?:=)/, /^(?:\\w+)/, /^(?:\\[)/, /^(?:\\])/, /^(?:[!\"#$%&'*+,-.`?\\\\/])/, /^(?:[0-9]+)/, /^(?:[\\u00AA\\u00B5\\u00BA\\u00C0-\\u00D6\\u00D8-\\u00F6]|[\\u00F8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377]|[\\u037A-\\u037D\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5]|[\\u03F7-\\u0481\\u048A-\\u0527\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA]|[\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE]|[\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA]|[\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0]|[\\u08A2-\\u08AC\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0977]|[\\u0979-\\u097F\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2]|[\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A]|[\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39]|[\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8]|[\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C]|[\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C]|[\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99]|[\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0]|[\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C33\\u0C35-\\u0C39\\u0C3D]|[\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3]|[\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10]|[\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1]|[\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81]|[\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3]|[\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6]|[\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A]|[\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081]|[\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D]|[\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0]|[\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310]|[\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C]|[\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u1700-\\u170C\\u170E-\\u1711]|[\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7]|[\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191C]|[\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16]|[\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF]|[\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC]|[\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D]|[\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D]|[\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3]|[\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F]|[\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128]|[\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184]|[\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3]|[\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6]|[\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE]|[\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C]|[\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D]|[\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC]|[\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B]|[\\uA640-\\uA66E\\uA67F-\\uA697\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788]|[\\uA78B-\\uA78E\\uA790-\\uA793\\uA7A0-\\uA7AA\\uA7F8-\\uA801\\uA803-\\uA805]|[\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB]|[\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uAA00-\\uAA28]|[\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA80-\\uAAAF\\uAAB1\\uAAB5]|[\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4]|[\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E]|[\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D]|[\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36]|[\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D]|[\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC]|[\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF]|[\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC])/, /^(?:\\s)/, /^(?:\\s)/, /^(?:$)/],\n conditions: { \"namespace-body\": { \"rules\": [26, 32, 33, 34, 35, 36, 37, 48, 49, 50, 51, 52, 53, 54, 55, 56, 59, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 96], \"inclusive\": false }, \"namespace\": { \"rules\": [26, 28, 29, 30, 31, 48, 49, 50, 51, 52, 53, 54, 55, 56, 59, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 96], \"inclusive\": false }, \"class-body\": { \"rules\": [26, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 59, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 96], \"inclusive\": false }, \"class\": { \"rules\": [26, 38, 39, 40, 41, 48, 49, 50, 51, 52, 53, 54, 55, 56, 59, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 96], \"inclusive\": false }, \"acc_descr_multiline\": { \"rules\": [11, 12, 26, 48, 49, 50, 51, 52, 53, 54, 55, 56, 59, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 96], \"inclusive\": false }, \"acc_descr\": { \"rules\": [9, 26, 48, 49, 50, 51, 52, 53, 54, 55, 56, 59, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 96], \"inclusive\": false }, \"acc_title\": { \"rules\": [7, 26, 48, 49, 50, 51, 52, 53, 54, 55, 56, 59, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 96], \"inclusive\": false }, \"callback_args\": { \"rules\": [22, 23, 26, 48, 49, 50, 51, 52, 53, 54, 55, 56, 59, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 96], \"inclusive\": false }, \"callback_name\": { \"rules\": [19, 20, 21, 26, 48, 49, 50, 51, 52, 53, 54, 55, 56, 59, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 96], \"inclusive\": false }, \"href\": { \"rules\": [26, 48, 49, 50, 51, 52, 53, 54, 55, 56, 59, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 96], \"inclusive\": false }, \"struct\": { \"rules\": [26, 48, 49, 50, 51, 52, 53, 54, 55, 56, 59, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 96], \"inclusive\": false }, \"generic\": { \"rules\": [26, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 96], \"inclusive\": false }, \"bqstring\": { \"rules\": [26, 48, 49, 50, 51, 52, 53, 54, 55, 56, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 96], \"inclusive\": false }, \"string\": { \"rules\": [24, 25, 26, 48, 49, 50, 51, 52, 53, 54, 55, 56, 59, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 96], \"inclusive\": false }, \"INITIAL\": { \"rules\": [0, 1, 2, 3, 4, 5, 6, 8, 10, 13, 14, 15, 16, 17, 18, 26, 27, 28, 37, 48, 49, 50, 51, 52, 53, 54, 55, 56, 59, 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], \"inclusive\": true } }\n };\n return lexer2;\n }();\n parser2.lexer = lexer;\n function Parser() {\n this.yy = {};\n }\n Parser.prototype = parser2;\n parser2.Parser = Parser;\n return new Parser();\n}();\nparser.parser = parser;\nconst parser$1 = parser;\nconst visibilityValues = [\"#\", \"+\", \"~\", \"-\", \"\"];\nclass ClassMember {\n constructor(input, memberType) {\n this.memberType = memberType;\n this.visibility = \"\";\n this.classifier = \"\";\n const sanitizedInput = sanitizeText$1(input, getConfig());\n this.parseMember(sanitizedInput);\n }\n getDisplayDetails() {\n let displayText = this.visibility + parseGenericTypes(this.id);\n if (this.memberType === \"method\") {\n displayText += `(${parseGenericTypes(this.parameters.trim())})`;\n if (this.returnType) {\n displayText += \" : \" + parseGenericTypes(this.returnType);\n }\n }\n displayText = displayText.trim();\n const cssStyle = this.parseClassifier();\n return {\n displayText,\n cssStyle\n };\n }\n parseMember(input) {\n let potentialClassifier = \"\";\n if (this.memberType === \"method\") {\n const methodRegEx = /([#+~-])?(.+)\\((.*)\\)([\\s$*])?(.*)([$*])?/;\n const match = input.match(methodRegEx);\n if (match) {\n const detectedVisibility = match[1] ? match[1].trim() : \"\";\n if (visibilityValues.includes(detectedVisibility)) {\n this.visibility = detectedVisibility;\n }\n this.id = match[2].trim();\n this.parameters = match[3] ? match[3].trim() : \"\";\n potentialClassifier = match[4] ? match[4].trim() : \"\";\n this.returnType = match[5] ? match[5].trim() : \"\";\n if (potentialClassifier === \"\") {\n const lastChar = this.returnType.substring(this.returnType.length - 1);\n if (lastChar.match(/[$*]/)) {\n potentialClassifier = lastChar;\n this.returnType = this.returnType.substring(0, this.returnType.length - 1);\n }\n }\n }\n } else {\n const length = input.length;\n const firstChar = input.substring(0, 1);\n const lastChar = input.substring(length - 1);\n if (visibilityValues.includes(firstChar)) {\n this.visibility = firstChar;\n }\n if (lastChar.match(/[$*]/)) {\n potentialClassifier = lastChar;\n }\n this.id = input.substring(\n this.visibility === \"\" ? 0 : 1,\n potentialClassifier === \"\" ? length : length - 1\n );\n }\n this.classifier = potentialClassifier;\n }\n parseClassifier() {\n switch (this.classifier) {\n case \"*\":\n return \"font-style:italic;\";\n case \"$\":\n return \"text-decoration:underline;\";\n default:\n return \"\";\n }\n }\n}\nconst MERMAID_DOM_ID_PREFIX = \"classId-\";\nlet relations = [];\nlet classes = {};\nlet notes = [];\nlet classCounter = 0;\nlet namespaces = {};\nlet namespaceCounter = 0;\nlet functions = [];\nconst sanitizeText = (txt) => common.sanitizeText(txt, getConfig());\nconst splitClassNameAndType = function(_id) {\n const id = common.sanitizeText(_id, getConfig());\n let genericType = \"\";\n let className = id;\n if (id.indexOf(\"~\") > 0) {\n const split = id.split(\"~\");\n className = sanitizeText(split[0]);\n genericType = sanitizeText(split[1]);\n }\n return { className, type: genericType };\n};\nconst setClassLabel = function(_id, label) {\n const id = common.sanitizeText(_id, getConfig());\n if (label) {\n label = sanitizeText(label);\n }\n const { className } = splitClassNameAndType(id);\n classes[className].label = label;\n};\nconst addClass = function(_id) {\n const id = common.sanitizeText(_id, getConfig());\n const { className, type } = splitClassNameAndType(id);\n if (Object.hasOwn(classes, className)) {\n return;\n }\n const name = common.sanitizeText(className, getConfig());\n classes[name] = {\n id: name,\n type,\n label: name,\n cssClasses: [],\n methods: [],\n members: [],\n annotations: [],\n styles: [],\n domId: MERMAID_DOM_ID_PREFIX + name + \"-\" + classCounter\n };\n classCounter++;\n};\nconst lookUpDomId = function(_id) {\n const id = common.sanitizeText(_id, getConfig());\n if (id in classes) {\n return classes[id].domId;\n }\n throw new Error(\"Class not found: \" + id);\n};\nconst clear = function() {\n relations = [];\n classes = {};\n notes = [];\n functions = [];\n functions.push(setupToolTips);\n namespaces = {};\n namespaceCounter = 0;\n clear$1();\n};\nconst getClass = function(id) {\n return classes[id];\n};\nconst getClasses = function() {\n return classes;\n};\nconst getRelations = function() {\n return relations;\n};\nconst getNotes = function() {\n return notes;\n};\nconst addRelation = function(relation) {\n log.debug(\"Adding relation: \" + JSON.stringify(relation));\n addClass(relation.id1);\n addClass(relation.id2);\n relation.id1 = splitClassNameAndType(relation.id1).className;\n relation.id2 = splitClassNameAndType(relation.id2).className;\n relation.relationTitle1 = common.sanitizeText(relation.relationTitle1.trim(), getConfig());\n relation.relationTitle2 = common.sanitizeText(relation.relationTitle2.trim(), getConfig());\n relations.push(relation);\n};\nconst addAnnotation = function(className, annotation) {\n const validatedClassName = splitClassNameAndType(className).className;\n classes[validatedClassName].annotations.push(annotation);\n};\nconst addMember = function(className, member) {\n addClass(className);\n const validatedClassName = splitClassNameAndType(className).className;\n const theClass = classes[validatedClassName];\n if (typeof member === \"string\") {\n const memberString = member.trim();\n if (memberString.startsWith(\"<<\") && memberString.endsWith(\">>\")) {\n theClass.annotations.push(sanitizeText(memberString.substring(2, memberString.length - 2)));\n } else if (memberString.indexOf(\")\") > 0) {\n theClass.methods.push(new ClassMember(memberString, \"method\"));\n } else if (memberString) {\n theClass.members.push(new ClassMember(memberString, \"attribute\"));\n }\n }\n};\nconst addMembers = function(className, members) {\n if (Array.isArray(members)) {\n members.reverse();\n members.forEach((member) => addMember(className, member));\n }\n};\nconst addNote = function(text, className) {\n const note = {\n id: `note${notes.length}`,\n class: className,\n text\n };\n notes.push(note);\n};\nconst cleanupLabel = function(label) {\n if (label.startsWith(\":\")) {\n label = label.substring(1);\n }\n return sanitizeText(label.trim());\n};\nconst setCssClass = function(ids, className) {\n ids.split(\",\").forEach(function(_id) {\n let id = _id;\n if (_id[0].match(/\\d/)) {\n id = MERMAID_DOM_ID_PREFIX + id;\n }\n if (classes[id] !== void 0) {\n classes[id].cssClasses.push(className);\n }\n });\n};\nconst setTooltip = function(ids, tooltip) {\n ids.split(\",\").forEach(function(id) {\n if (tooltip !== void 0) {\n classes[id].tooltip = sanitizeText(tooltip);\n }\n });\n};\nconst getTooltip = function(id, namespace) {\n if (namespace) {\n return namespaces[namespace].classes[id].tooltip;\n }\n return classes[id].tooltip;\n};\nconst setLink = function(ids, linkStr, target) {\n const config = getConfig();\n ids.split(\",\").forEach(function(_id) {\n let id = _id;\n if (_id[0].match(/\\d/)) {\n id = MERMAID_DOM_ID_PREFIX + id;\n }\n if (classes[id] !== void 0) {\n classes[id].link = utils.formatUrl(linkStr, config);\n if (config.securityLevel === \"sandbox\") {\n classes[id].linkTarget = \"_top\";\n } else if (typeof target === \"string\") {\n classes[id].linkTarget = sanitizeText(target);\n } else {\n classes[id].linkTarget = \"_blank\";\n }\n }\n });\n setCssClass(ids, \"clickable\");\n};\nconst setClickEvent = function(ids, functionName, functionArgs) {\n ids.split(\",\").forEach(function(id) {\n setClickFunc(id, functionName, functionArgs);\n classes[id].haveCallback = true;\n });\n setCssClass(ids, \"clickable\");\n};\nconst setClickFunc = function(_domId, functionName, functionArgs) {\n const domId = common.sanitizeText(_domId, getConfig());\n const config = getConfig();\n if (config.securityLevel !== \"loose\") {\n return;\n }\n if (functionName === void 0) {\n return;\n }\n const id = domId;\n if (classes[id] !== void 0) {\n const elemId = lookUpDomId(id);\n let argList = [];\n if (typeof functionArgs === \"string\") {\n argList = functionArgs.split(/,(?=(?:(?:[^\"]*\"){2})*[^\"]*$)/);\n for (let i = 0; i < argList.length; i++) {\n let item = argList[i].trim();\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 if (argList.length === 0) {\n argList.push(elemId);\n }\n functions.push(function() {\n const elem = document.querySelector(`[id=\"${elemId}\"]`);\n if (elem !== null) {\n elem.addEventListener(\n \"click\",\n function() {\n utils.runFunc(functionName, ...argList);\n },\n false\n );\n }\n });\n }\n};\nconst bindFunctions = function(element) {\n functions.forEach(function(fun) {\n fun(element);\n });\n};\nconst lineType = {\n LINE: 0,\n DOTTED_LINE: 1\n};\nconst relationType = {\n AGGREGATION: 0,\n EXTENSION: 1,\n COMPOSITION: 2,\n DEPENDENCY: 3,\n LOLLIPOP: 4\n};\nconst setupToolTips = function(element) {\n let tooltipElem = select(\".mermaidTooltip\");\n if ((tooltipElem._groups || tooltipElem)[0][0] === null) {\n tooltipElem = select(\"body\").append(\"div\").attr(\"class\", \"mermaidTooltip\").style(\"opacity\", 0);\n }\n const svg = select(element).select(\"svg\");\n const nodes = svg.selectAll(\"g.node\");\n nodes.on(\"mouseover\", function() {\n const el = select(this);\n const title = el.attr(\"title\");\n if (title === null) {\n return;\n }\n const rect = this.getBoundingClientRect();\n tooltipElem.transition().duration(200).style(\"opacity\", \".9\");\n tooltipElem.text(el.attr(\"title\")).style(\"left\", window.scrollX + rect.left + (rect.right - rect.left) / 2 + \"px\").style(\"top\", window.scrollY + rect.top - 14 + document.body.scrollTop + \"px\");\n tooltipElem.html(tooltipElem.html().replace(/<br\\/>/g, \"<br/>\"));\n el.classed(\"hover\", true);\n }).on(\"mouseout\", function() {\n tooltipElem.transition().duration(500).style(\"opacity\", 0);\n const el = select(this);\n el.classed(\"hover\", false);\n });\n};\nfunctions.push(setupToolTips);\nlet direction = \"TB\";\nconst getDirection = () => direction;\nconst setDirection = (dir) => {\n direction = dir;\n};\nconst addNamespace = function(id) {\n if (namespaces[id] !== void 0) {\n return;\n }\n namespaces[id] = {\n id,\n classes: {},\n children: {},\n domId: MERMAID_DOM_ID_PREFIX + id + \"-\" + namespaceCounter\n };\n namespaceCounter++;\n};\nconst getNamespace = function(name) {\n return namespaces[name];\n};\nconst getNamespaces = function() {\n return namespaces;\n};\nconst addClassesToNamespace = function(id, classNames) {\n if (namespaces[id] === void 0) {\n return;\n }\n for (const name of classNames) {\n const { className } = splitClassNameAndType(name);\n classes[className].parent = id;\n namespaces[id].classes[className] = classes[className];\n }\n};\nconst setCssStyle = function(id, styles2) {\n const thisClass = classes[id];\n if (!styles2 || !thisClass) {\n return;\n }\n for (const s of styles2) {\n if (s.includes(\",\")) {\n thisClass.styles.push(...s.split(\",\"));\n } else {\n thisClass.styles.push(s);\n }\n }\n};\nconst db = {\n setAccTitle,\n getAccTitle,\n getAccDescription,\n setAccDescription,\n getConfig: () => getConfig().class,\n addClass,\n bindFunctions,\n clear,\n getClass,\n getClasses,\n getNotes,\n addAnnotation,\n addNote,\n getRelations,\n addRelation,\n getDirection,\n setDirection,\n addMember,\n addMembers,\n cleanupLabel,\n lineType,\n relationType,\n setClickEvent,\n setCssClass,\n setLink,\n getTooltip,\n setTooltip,\n lookUpDomId,\n setDiagramTitle,\n getDiagramTitle,\n setClassLabel,\n addNamespace,\n addClassesToNamespace,\n getNamespace,\n getNamespaces,\n setCssStyle\n};\nconst getStyles = (options) => `g.classGroup text {\n fill: ${options.nodeBorder || options.classText};\n stroke: none;\n font-family: ${options.fontFamily};\n font-size: 10px;\n\n .title {\n font-weight: bolder;\n }\n\n}\n\n.nodeLabel, .edgeLabel {\n color: ${options.classText};\n}\n.edgeLabel .label rect {\n fill: ${options.mainBkg};\n}\n.label text {\n fill: ${options.classText};\n}\n.edgeLabel .label span {\n background: ${options.mainBkg};\n}\n\n.classTitle {\n font-weight: bolder;\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-width: 1;\n}\n\ng.clickable {\n cursor: pointer;\n}\n\ng.classGroup rect {\n fill: ${options.mainBkg};\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.mainBkg};\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.dotted-line{\n stroke-dasharray: 1 2;\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: transparent !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n#extensionEnd, .extension {\n fill: transparent !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n#aggregationStart, .aggregation {\n fill: transparent !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n#aggregationEnd, .aggregation {\n fill: transparent !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n#lollipopStart, .lollipop {\n fill: ${options.mainBkg} !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n#lollipopEnd, .lollipop {\n fill: ${options.mainBkg} !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n.edgeTerminals {\n font-size: 11px;\n line-height: initial;\n}\n\n.classTitleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${options.textColor};\n}\n`;\nconst styles = getStyles;\nexport {\n db as d,\n parser$1 as p,\n styles as s\n};\n","import { c as getConfig, g as getAccTitle, s as setAccTitle, a as getAccDescription, b as setAccDescription, q as setDiagramTitle, t as getDiagramTitle, l as log, e as common, v as clear$1, I as generateId } from \"./mermaid-f47111a7.js\";\nvar parser = function() {\n var o = function(k, v, o2, l) {\n for (o2 = o2 || {}, l = k.length; l--; o2[k[l]] = v)\n ;\n return o2;\n }, $V0 = [1, 2], $V1 = [1, 3], $V2 = [1, 4], $V3 = [2, 4], $V4 = [1, 9], $V5 = [1, 11], $V6 = [1, 15], $V7 = [1, 16], $V8 = [1, 17], $V9 = [1, 18], $Va = [1, 30], $Vb = [1, 19], $Vc = [1, 20], $Vd = [1, 21], $Ve = [1, 22], $Vf = [1, 23], $Vg = [1, 25], $Vh = [1, 26], $Vi = [1, 27], $Vj = [1, 28], $Vk = [1, 29], $Vl = [1, 32], $Vm = [1, 33], $Vn = [1, 34], $Vo = [1, 35], $Vp = [1, 31], $Vq = [1, 4, 5, 15, 16, 18, 20, 21, 23, 24, 25, 26, 27, 28, 32, 34, 36, 37, 41, 44, 45, 46, 47, 50], $Vr = [1, 4, 5, 13, 14, 15, 16, 18, 20, 21, 23, 24, 25, 26, 27, 28, 32, 34, 36, 37, 41, 44, 45, 46, 47, 50], $Vs = [4, 5, 15, 16, 18, 20, 21, 23, 24, 25, 26, 27, 28, 32, 34, 36, 37, 41, 44, 45, 46, 47, 50];\n var parser2 = {\n trace: function trace() {\n },\n yy: {},\n symbols_: { \"error\": 2, \"start\": 3, \"SPACE\": 4, \"NL\": 5, \"SD\": 6, \"document\": 7, \"line\": 8, \"statement\": 9, \"classDefStatement\": 10, \"cssClassStatement\": 11, \"idStatement\": 12, \"DESCR\": 13, \"-->\": 14, \"HIDE_EMPTY\": 15, \"scale\": 16, \"WIDTH\": 17, \"COMPOSIT_STATE\": 18, \"STRUCT_START\": 19, \"STRUCT_STOP\": 20, \"STATE_DESCR\": 21, \"AS\": 22, \"ID\": 23, \"FORK\": 24, \"JOIN\": 25, \"CHOICE\": 26, \"CONCURRENT\": 27, \"note\": 28, \"notePosition\": 29, \"NOTE_TEXT\": 30, \"direction\": 31, \"acc_title\": 32, \"acc_title_value\": 33, \"acc_descr\": 34, \"acc_descr_value\": 35, \"acc_descr_multiline_value\": 36, \"classDef\": 37, \"CLASSDEF_ID\": 38, \"CLASSDEF_STYLEOPTS\": 39, \"DEFAULT\": 40, \"class\": 41, \"CLASSENTITY_IDS\": 42, \"STYLECLASS\": 43, \"direction_tb\": 44, \"direction_bt\": 45, \"direction_rl\": 46, \"direction_lr\": 47, \"eol\": 48, \";\": 49, \"EDGE_STATE\": 50, \"STYLE_SEPARATOR\": 51, \"left_of\": 52, \"right_of\": 53, \"$accept\": 0, \"$end\": 1 },\n terminals_: { 2: \"error\", 4: \"SPACE\", 5: \"NL\", 6: \"SD\", 13: \"DESCR\", 14: \"-->\", 15: \"HIDE_EMPTY\", 16: \"scale\", 17: \"WIDTH\", 18: \"COMPOSIT_STATE\", 19: \"STRUCT_START\", 20: \"STRUCT_STOP\", 21: \"STATE_DESCR\", 22: \"AS\", 23: \"ID\", 24: \"FORK\", 25: \"JOIN\", 26: \"CHOICE\", 27: \"CONCURRENT\", 28: \"note\", 30: \"NOTE_TEXT\", 32: \"acc_title\", 33: \"acc_title_value\", 34: \"acc_descr\", 35: \"acc_descr_value\", 36: \"acc_descr_multiline_value\", 37: \"classDef\", 38: \"CLASSDEF_ID\", 39: \"CLASSDEF_STYLEOPTS\", 40: \"DEFAULT\", 41: \"class\", 42: \"CLASSENTITY_IDS\", 43: \"STYLECLASS\", 44: \"direction_tb\", 45: \"direction_bt\", 46: \"direction_rl\", 47: \"direction_lr\", 49: \";\", 50: \"EDGE_STATE\", 51: \"STYLE_SEPARATOR\", 52: \"left_of\", 53: \"right_of\" },\n productions_: [0, [3, 2], [3, 2], [3, 2], [7, 0], [7, 2], [8, 2], [8, 1], [8, 1], [9, 1], [9, 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, 1], [9, 4], [9, 4], [9, 1], [9, 2], [9, 2], [9, 1], [10, 3], [10, 3], [11, 3], [31, 1], [31, 1], [31, 1], [31, 1], [48, 1], [48, 1], [12, 1], [12, 1], [12, 3], [12, 3], [29, 1], [29, 1]],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) {\n var $0 = $$.length - 1;\n switch (yystate) {\n case 3:\n yy.setRootDoc($$[$0]);\n return $$[$0];\n case 4:\n this.$ = [];\n break;\n case 5:\n if ($$[$0] != \"nl\") {\n $$[$0 - 1].push($$[$0]);\n this.$ = $$[$0 - 1];\n }\n break;\n case 6:\n case 7:\n this.$ = $$[$0];\n break;\n case 8:\n this.$ = \"nl\";\n break;\n case 11:\n this.$ = $$[$0];\n break;\n case 12:\n const stateStmt = $$[$0 - 1];\n stateStmt.description = yy.trimColon($$[$0]);\n this.$ = stateStmt;\n break;\n case 13:\n this.$ = { stmt: \"relation\", state1: $$[$0 - 2], state2: $$[$0] };\n break;\n case 14:\n const relDescription = yy.trimColon($$[$0]);\n this.$ = { stmt: \"relation\", state1: $$[$0 - 3], state2: $$[$0 - 1], description: relDescription };\n break;\n case 18:\n this.$ = { stmt: \"state\", id: $$[$0 - 3], type: \"default\", description: \"\", doc: $$[$0 - 1] };\n break;\n case 19:\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, type: \"default\", description };\n break;\n case 20:\n this.$ = { stmt: \"state\", id: $$[$0 - 3], type: \"default\", description: $$[$0 - 5], doc: $$[$0 - 1] };\n break;\n case 21:\n this.$ = { stmt: \"state\", id: $$[$0], type: \"fork\" };\n break;\n case 22:\n this.$ = { stmt: \"state\", id: $$[$0], type: \"join\" };\n break;\n case 23:\n this.$ = { stmt: \"state\", id: $$[$0], type: \"choice\" };\n break;\n case 24:\n this.$ = { stmt: \"state\", id: yy.getDividerId(), type: \"divider\" };\n break;\n case 25:\n this.$ = { stmt: \"state\", id: $$[$0 - 1].trim(), note: { position: $$[$0 - 2].trim(), text: $$[$0].trim() } };\n break;\n case 28:\n this.$ = $$[$0].trim();\n yy.setAccTitle(this.$);\n break;\n case 29:\n case 30:\n this.$ = $$[$0].trim();\n yy.setAccDescription(this.$);\n break;\n case 31:\n case 32:\n this.$ = { stmt: \"classDef\", id: $$[$0 - 1].trim(), classes: $$[$0].trim() };\n break;\n case 33:\n this.$ = { stmt: \"applyClass\", id: $$[$0 - 1].trim(), styleClass: $$[$0].trim() };\n break;\n case 34:\n yy.setDirection(\"TB\");\n this.$ = { stmt: \"dir\", value: \"TB\" };\n break;\n case 35:\n yy.setDirection(\"BT\");\n this.$ = { stmt: \"dir\", value: \"BT\" };\n break;\n case 36:\n yy.setDirection(\"RL\");\n this.$ = { stmt: \"dir\", value: \"RL\" };\n break;\n case 37:\n yy.setDirection(\"LR\");\n this.$ = { stmt: \"dir\", value: \"LR\" };\n break;\n case 40:\n case 41:\n this.$ = { stmt: \"state\", id: $$[$0].trim(), type: \"default\", description: \"\" };\n break;\n case 42:\n this.$ = { stmt: \"state\", id: $$[$0 - 2].trim(), classes: [$$[$0].trim()], type: \"default\", description: \"\" };\n break;\n case 43:\n this.$ = { stmt: \"state\", id: $$[$0 - 2].trim(), classes: [$$[$0].trim()], type: \"default\", description: \"\" };\n break;\n }\n },\n table: [{ 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, 15, 16, 18, 21, 23, 24, 25, 26, 27, 28, 32, 34, 36, 37, 41, 44, 45, 46, 47, 50], $V3, { 7: 7 }), { 1: [2, 1] }, { 1: [2, 2] }, { 1: [2, 3], 4: $V4, 5: $V5, 8: 8, 9: 10, 10: 12, 11: 13, 12: 14, 15: $V6, 16: $V7, 18: $V8, 21: $V9, 23: $Va, 24: $Vb, 25: $Vc, 26: $Vd, 27: $Ve, 28: $Vf, 31: 24, 32: $Vg, 34: $Vh, 36: $Vi, 37: $Vj, 41: $Vk, 44: $Vl, 45: $Vm, 46: $Vn, 47: $Vo, 50: $Vp }, o($Vq, [2, 5]), { 9: 36, 10: 12, 11: 13, 12: 14, 15: $V6, 16: $V7, 18: $V8, 21: $V9, 23: $Va, 24: $Vb, 25: $Vc, 26: $Vd, 27: $Ve, 28: $Vf, 31: 24, 32: $Vg, 34: $Vh, 36: $Vi, 37: $Vj, 41: $Vk, 44: $Vl, 45: $Vm, 46: $Vn, 47: $Vo, 50: $Vp }, o($Vq, [2, 7]), o($Vq, [2, 8]), o($Vq, [2, 9]), o($Vq, [2, 10]), o($Vq, [2, 11], { 13: [1, 37], 14: [1, 38] }), o($Vq, [2, 15]), { 17: [1, 39] }, o($Vq, [2, 17], { 19: [1, 40] }), { 22: [1, 41] }, o($Vq, [2, 21]), o($Vq, [2, 22]), o($Vq, [2, 23]), o($Vq, [2, 24]), { 29: 42, 30: [1, 43], 52: [1, 44], 53: [1, 45] }, o($Vq, [2, 27]), { 33: [1, 46] }, { 35: [1, 47] }, o($Vq, [2, 30]), { 38: [1, 48], 40: [1, 49] }, { 42: [1, 50] }, o($Vr, [2, 40], { 51: [1, 51] }), o($Vr, [2, 41], { 51: [1, 52] }), o($Vq, [2, 34]), o($Vq, [2, 35]), o($Vq, [2, 36]), o($Vq, [2, 37]), o($Vq, [2, 6]), o($Vq, [2, 12]), { 12: 53, 23: $Va, 50: $Vp }, o($Vq, [2, 16]), o($Vs, $V3, { 7: 54 }), { 23: [1, 55] }, { 23: [1, 56] }, { 22: [1, 57] }, { 23: [2, 44] }, { 23: [2, 45] }, o($Vq, [2, 28]), o($Vq, [2, 29]), { 39: [1, 58] }, { 39: [1, 59] }, { 43: [1, 60] }, { 23: [1, 61] }, { 23: [1, 62] }, o($Vq, [2, 13], { 13: [1, 63] }), { 4: $V4, 5: $V5, 8: 8, 9: 10, 10: 12, 11: 13, 12: 14, 15: $V6, 16: $V7, 18: $V8, 20: [1, 64], 21: $V9, 23: $Va, 24: $Vb, 25: $Vc, 26: $Vd, 27: $Ve, 28: $Vf, 31: 24, 32: $Vg, 34: $Vh, 36: $Vi, 37: $Vj, 41: $Vk, 44: $Vl, 45: $Vm, 46: $Vn, 47: $Vo, 50: $Vp }, o($Vq, [2, 19], { 19: [1, 65] }), { 30: [1, 66] }, { 23: [1, 67] }, o($Vq, [2, 31]), o($Vq, [2, 32]), o($Vq, [2, 33]), o($Vr, [2, 42]), o($Vr, [2, 43]), o($Vq, [2, 14]), o($Vq, [2, 18]), o($Vs, $V3, { 7: 68 }), o($Vq, [2, 25]), o($Vq, [2, 26]), { 4: $V4, 5: $V5, 8: 8, 9: 10, 10: 12, 11: 13, 12: 14, 15: $V6, 16: $V7, 18: $V8, 20: [1, 69], 21: $V9, 23: $Va, 24: $Vb, 25: $Vc, 26: $Vd, 27: $Ve, 28: $Vf, 31: 24, 32: $Vg, 34: $Vh, 36: $Vi, 37: $Vj, 41: $Vk, 44: $Vl, 45: $Vm, 46: $Vn, 47: $Vo, 50: $Vp }, o($Vq, [2, 20])],\n defaultActions: { 5: [2, 1], 6: [2, 2], 44: [2, 44], 45: [2, 45] },\n parseError: 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 },\n parse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = \"\", yylineno = 0, yyleng = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer2 = 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 lexer2.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer2;\n sharedState.yy.parser = this;\n if (typeof lexer2.yylloc == \"undefined\") {\n lexer2.yylloc = {};\n }\n var yyloc = lexer2.yylloc;\n lstack.push(yyloc);\n var ranges = lexer2.options && lexer2.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 lex() {\n var token;\n token = tstack.pop() || lexer2.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, state, action, 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 (lexer2.showPosition) {\n errStr = \"Parse error on line \" + (yylineno + 1) + \":\\n\" + lexer2.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: lexer2.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer2.yylineno,\n loc: yyloc,\n 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(lexer2.yytext);\n lstack.push(lexer2.yylloc);\n stack.push(action[1]);\n symbol = null;\n {\n yyleng = lexer2.yyleng;\n yytext = lexer2.yytext;\n yylineno = lexer2.yylineno;\n yyloc = lexer2.yylloc;\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 var lexer = function() {\n var lexer2 = {\n EOF: 1,\n parseError: 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 // resets the lexer, sets new input\n setInput: 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 // consumes and returns one char from the input\n input: 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 this._input = this._input.slice(1);\n return ch;\n },\n // unshifts one char (or a string) into the input\n unput: function(ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - 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 if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\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 ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len\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 // When called from action, caches matched text and appends it on next action\n more: function() {\n this._more = true;\n return this;\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.\n reject: 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 return this;\n },\n // retain first n characters of the match\n less: function(n) {\n this.unput(this.match.slice(n));\n },\n // displays already matched input, i.e. for error messages\n pastInput: 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 // displays upcoming input, i.e. for error messages\n upcomingInput: 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 // displays the character position where the lexing error occurred, i.e. for error messages\n showPosition: function() {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n // test the lexed token: return FALSE when not a match, otherwise return token\n test_match: function(match, indexed_rule) {\n var token, lines, backup;\n if (this.options.backtrack_lexer) {\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 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 ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length : 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 for (var k in backup) {\n this[k] = backup[k];\n }\n return false;\n }\n return false;\n },\n // return next match in input\n next: function() {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n var token, match, tempMatch, 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;\n } else {\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 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 // return next match that has a token\n lex: function lex() {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\n begin: function begin(condition) {\n this.conditionStack.push(condition);\n },\n // pop the previously active lexer condition state off the condition stack\n popState: 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 // 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 // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\n topState: 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 // alias for begin(condition)\n pushState: function pushState(condition) {\n this.begin(condition);\n },\n // return the number of states currently on the stack\n stateStackSize: function stateStackSize() {\n return this.conditionStack.length;\n },\n options: { \"case-insensitive\": true },\n performAction: function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) {\n switch ($avoiding_name_collisions) {\n case 0:\n return 40;\n case 1:\n return 44;\n case 2:\n return 45;\n case 3:\n return 46;\n case 4:\n return 47;\n case 5:\n break;\n case 6:\n break;\n case 7:\n return 5;\n case 8:\n break;\n case 9:\n break;\n case 10:\n break;\n case 11:\n break;\n case 12:\n this.pushState(\"SCALE\");\n return 16;\n case 13:\n return 17;\n case 14:\n this.popState();\n break;\n case 15:\n this.begin(\"acc_title\");\n return 32;\n case 16:\n this.popState();\n return \"acc_title_value\";\n case 17:\n this.begin(\"acc_descr\");\n return 34;\n case 18:\n this.popState();\n return \"acc_descr_value\";\n case 19:\n this.begin(\"acc_descr_multiline\");\n break;\n case 20:\n this.popState();\n break;\n case 21:\n return \"acc_descr_multiline_value\";\n case 22:\n this.pushState(\"CLASSDEF\");\n return 37;\n case 23:\n this.popState();\n this.pushState(\"CLASSDEFID\");\n return \"DEFAULT_CLASSDEF_ID\";\n case 24:\n this.popState();\n this.pushState(\"CLASSDEFID\");\n return 38;\n case 25:\n this.popState();\n return 39;\n case 26:\n this.pushState(\"CLASS\");\n return 41;\n case 27:\n this.popState();\n this.pushState(\"CLASS_STYLE\");\n return 42;\n case 28:\n this.popState();\n return 43;\n case 29:\n this.pushState(\"SCALE\");\n return 16;\n case 30:\n return 17;\n case 31:\n this.popState();\n break;\n case 32:\n this.pushState(\"STATE\");\n break;\n case 33:\n this.popState();\n yy_.yytext = yy_.yytext.slice(0, -8).trim();\n return 24;\n case 34:\n this.popState();\n yy_.yytext = yy_.yytext.slice(0, -8).trim();\n return 25;\n case 35:\n this.popState();\n yy_.yytext = yy_.yytext.slice(0, -10).trim();\n return 26;\n case 36:\n this.popState();\n yy_.yytext = yy_.yytext.slice(0, -8).trim();\n return 24;\n case 37:\n this.popState();\n yy_.yytext = yy_.yytext.slice(0, -8).trim();\n return 25;\n case 38:\n this.popState();\n yy_.yytext = yy_.yytext.slice(0, -10).trim();\n return 26;\n case 39:\n return 44;\n case 40:\n return 45;\n case 41:\n return 46;\n case 42:\n return 47;\n case 43:\n this.pushState(\"STATE_STRING\");\n break;\n case 44:\n this.pushState(\"STATE_ID\");\n return \"AS\";\n case 45:\n this.popState();\n return \"ID\";\n case 46:\n this.popState();\n break;\n case 47:\n return \"STATE_DESCR\";\n case 48:\n return 18;\n case 49:\n this.popState();\n break;\n case 50:\n this.popState();\n this.pushState(\"struct\");\n return 19;\n case 51:\n break;\n case 52:\n this.popState();\n return 20;\n case 53:\n break;\n case 54:\n this.begin(\"NOTE\");\n return 28;\n case 55:\n this.popState();\n this.pushState(\"NOTE_ID\");\n return 52;\n case 56:\n this.popState();\n this.pushState(\"NOTE_ID\");\n return 53;\n case 57:\n this.popState();\n this.pushState(\"FLOATING_NOTE\");\n break;\n case 58:\n this.popState();\n this.pushState(\"FLOATING_NOTE_ID\");\n return \"AS\";\n case 59:\n break;\n case 60:\n return \"NOTE_TEXT\";\n case 61:\n this.popState();\n return \"ID\";\n case 62:\n this.popState();\n this.pushState(\"NOTE_TEXT\");\n return 23;\n case 63:\n this.popState();\n yy_.yytext = yy_.yytext.substr(2).trim();\n return 30;\n case 64:\n this.popState();\n yy_.yytext = yy_.yytext.slice(0, -8).trim();\n return 30;\n case 65:\n return 6;\n case 66:\n return 6;\n case 67:\n return 15;\n case 68:\n return 50;\n case 69:\n return 23;\n case 70:\n yy_.yytext = yy_.yytext.trim();\n return 13;\n case 71:\n return 14;\n case 72:\n return 27;\n case 73:\n return 51;\n case 74:\n return 5;\n case 75:\n return \"INVALID\";\n }\n },\n rules: [/^(?:default\\b)/i, /^(?:.*direction\\s+TB[^\\n]*)/i, /^(?:.*direction\\s+BT[^\\n]*)/i, /^(?:.*direction\\s+RL[^\\n]*)/i, /^(?:.*direction\\s+LR[^\\n]*)/i, /^(?:%%(?!\\{)[^\\n]*)/i, /^(?:[^\\}]%%[^\\n]*)/i, /^(?:[\\n]+)/i, /^(?:[\\s]+)/i, /^(?:((?!\\n)\\s)+)/i, /^(?:#[^\\n]*)/i, /^(?:%[^\\n]*)/i, /^(?:scale\\s+)/i, /^(?:\\d+)/i, /^(?:\\s+width\\b)/i, /^(?:accTitle\\s*:\\s*)/i, /^(?:(?!\\n||)*[^\\n]*)/i, /^(?:accDescr\\s*:\\s*)/i, /^(?:(?!\\n||)*[^\\n]*)/i, /^(?:accDescr\\s*\\{\\s*)/i, /^(?:[\\}])/i, /^(?:[^\\}]*)/i, /^(?:classDef\\s+)/i, /^(?:DEFAULT\\s+)/i, /^(?:\\w+\\s+)/i, /^(?:[^\\n]*)/i, /^(?:class\\s+)/i, /^(?:(\\w+)+((,\\s*\\w+)*))/i, /^(?:[^\\n]*)/i, /^(?:scale\\s+)/i, /^(?:\\d+)/i, /^(?:\\s+width\\b)/i, /^(?:state\\s+)/i, /^(?:.*<<fork>>)/i, /^(?:.*<<join>>)/i, /^(?:.*<<choice>>)/i, /^(?:.*\\[\\[fork\\]\\])/i, /^(?:.*\\[\\[join\\]\\])/i, /^(?:.*\\[\\[choice\\]\\])/i, /^(?:.*direction\\s+TB[^\\n]*)/i, /^(?:.*direction\\s+BT[^\\n]*)/i, /^(?:.*direction\\s+RL[^\\n]*)/i, /^(?:.*direction\\s+LR[^\\n]*)/i, /^(?:[\"])/i, /^(?:\\s*as\\s+)/i, /^(?:[^\\n\\{]*)/i, /^(?:[\"])/i, /^(?:[^\"]*)/i, /^(?:[^\\n\\s\\{]+)/i, /^(?:\\n)/i, /^(?:\\{)/i, /^(?:%%(?!\\{)[^\\n]*)/i, /^(?:\\})/i, /^(?:[\\n])/i, /^(?:note\\s+)/i, /^(?:left of\\b)/i, /^(?:right of\\b)/i, /^(?:\")/i, /^(?:\\s*as\\s*)/i, /^(?:[\"])/i, /^(?:[^\"]*)/i, /^(?:[^\\n]*)/i, /^(?:\\s*[^:\\n\\s\\-]+)/i, /^(?:\\s*:[^:\\n;]+)/i, /^(?:[\\s\\S]*?end note\\b)/i, /^(?:stateDiagram\\s+)/i, /^(?:stateDiagram-v2\\s+)/i, /^(?:hide empty description\\b)/i, /^(?:\\[\\*\\])/i, /^(?:[^:\\n\\s\\-\\{]+)/i, /^(?:\\s*:[^:\\n;]+)/i, /^(?:-->)/i, /^(?:--)/i, /^(?::::)/i, /^(?:$)/i, /^(?:.)/i],\n conditions: { \"LINE\": { \"rules\": [9, 10], \"inclusive\": false }, \"struct\": { \"rules\": [9, 10, 22, 26, 32, 39, 40, 41, 42, 51, 52, 53, 54, 68, 69, 70, 71, 72], \"inclusive\": false }, \"FLOATING_NOTE_ID\": { \"rules\": [61], \"inclusive\": false }, \"FLOATING_NOTE\": { \"rules\": [58, 59, 60], \"inclusive\": false }, \"NOTE_TEXT\": { \"rules\": [63, 64], \"inclusive\": false }, \"NOTE_ID\": { \"rules\": [62], \"inclusive\": false }, \"NOTE\": { \"rules\": [55, 56, 57], \"inclusive\": false }, \"CLASS_STYLE\": { \"rules\": [28], \"inclusive\": false }, \"CLASS\": { \"rules\": [27], \"inclusive\": false }, \"CLASSDEFID\": { \"rules\": [25], \"inclusive\": false }, \"CLASSDEF\": { \"rules\": [23, 24], \"inclusive\": false }, \"acc_descr_multiline\": { \"rules\": [20, 21], \"inclusive\": false }, \"acc_descr\": { \"rules\": [18], \"inclusive\": false }, \"acc_title\": { \"rules\": [16], \"inclusive\": false }, \"SCALE\": { \"rules\": [13, 14, 30, 31], \"inclusive\": false }, \"ALIAS\": { \"rules\": [], \"inclusive\": false }, \"STATE_ID\": { \"rules\": [45], \"inclusive\": false }, \"STATE_STRING\": { \"rules\": [46, 47], \"inclusive\": false }, \"FORK_STATE\": { \"rules\": [], \"inclusive\": false }, \"STATE\": { \"rules\": [9, 10, 33, 34, 35, 36, 37, 38, 43, 44, 48, 49, 50], \"inclusive\": false }, \"ID\": { \"rules\": [9, 10], \"inclusive\": false }, \"INITIAL\": { \"rules\": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 15, 17, 19, 22, 26, 29, 32, 50, 54, 65, 66, 67, 68, 69, 70, 71, 73, 74, 75], \"inclusive\": true } }\n };\n return lexer2;\n }();\n parser2.lexer = lexer;\n function Parser() {\n this.yy = {};\n }\n Parser.prototype = parser2;\n parser2.Parser = Parser;\n return new Parser();\n}();\nparser.parser = parser;\nconst parser$1 = parser;\nconst DEFAULT_DIAGRAM_DIRECTION = \"LR\";\nconst DEFAULT_NESTED_DOC_DIR = \"TB\";\nconst STMT_STATE = \"state\";\nconst STMT_RELATION = \"relation\";\nconst STMT_CLASSDEF = \"classDef\";\nconst STMT_APPLYCLASS = \"applyClass\";\nconst DEFAULT_STATE_TYPE = \"default\";\nconst DIVIDER_TYPE = \"divider\";\nconst START_NODE = \"[*]\";\nconst START_TYPE = \"start\";\nconst END_NODE = START_NODE;\nconst END_TYPE = \"end\";\nconst COLOR_KEYWORD = \"color\";\nconst FILL_KEYWORD = \"fill\";\nconst BG_FILL = \"bgFill\";\nconst STYLECLASS_SEP = \",\";\nfunction newClassesList() {\n return {};\n}\nlet direction = DEFAULT_DIAGRAM_DIRECTION;\nlet rootDoc = [];\nlet classes = newClassesList();\nconst newDoc = () => {\n return {\n relations: [],\n states: {},\n documents: {}\n };\n};\nlet documents = {\n root: newDoc()\n};\nlet currentDocument = documents.root;\nlet startEndCount = 0;\nlet dividerCnt = 0;\nconst lineType = {\n LINE: 0,\n DOTTED_LINE: 1\n};\nconst relationType = {\n AGGREGATION: 0,\n EXTENSION: 1,\n COMPOSITION: 2,\n DEPENDENCY: 3\n};\nconst clone = (o) => JSON.parse(JSON.stringify(o));\nconst setRootDoc = (o) => {\n log.info(\"Setting root doc\", o);\n rootDoc = o;\n};\nconst getRootDoc = () => rootDoc;\nconst docTranslator = (parent, node, first) => {\n if (node.stmt === STMT_RELATION) {\n docTranslator(parent, node.state1, true);\n docTranslator(parent, node.state2, false);\n } else {\n if (node.stmt === STMT_STATE) {\n if (node.id === \"[*]\") {\n node.id = first ? parent.id + \"_start\" : parent.id + \"_end\";\n node.start = first;\n } else {\n node.id = node.id.trim();\n }\n }\n if (node.doc) {\n const doc = [];\n let currentDoc = [];\n let i;\n for (i = 0; i < node.doc.length; i++) {\n if (node.doc[i].type === DIVIDER_TYPE) {\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 if (doc.length > 0 && currentDoc.length > 0) {\n const newNode = {\n stmt: STMT_STATE,\n id: generateId(),\n type: \"divider\",\n doc: clone(currentDoc)\n };\n doc.push(clone(newNode));\n node.doc = doc;\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};\nconst extract = (_doc) => {\n let doc;\n if (_doc.doc) {\n doc = _doc.doc;\n } else {\n doc = _doc;\n }\n log.info(doc);\n clear(true);\n log.info(\"Extract\", doc);\n doc.forEach((item) => {\n switch (item.stmt) {\n case STMT_STATE:\n addState(\n item.id.trim(),\n item.type,\n item.doc,\n item.description,\n item.note,\n item.classes,\n item.styles,\n item.textStyles\n );\n break;\n case STMT_RELATION:\n addRelation(item.state1, item.state2, item.description);\n break;\n case STMT_CLASSDEF:\n addStyleClass(item.id.trim(), item.classes);\n break;\n case STMT_APPLYCLASS:\n setCssClass(item.id.trim(), item.styleClass);\n break;\n }\n });\n};\nconst addState = function(id, type = DEFAULT_STATE_TYPE, doc = null, descr = null, note = null, classes2 = null, styles2 = null, textStyles = null) {\n const trimmedId = id == null ? void 0 : id.trim();\n if (currentDocument.states[trimmedId] === void 0) {\n log.info(\"Adding state \", trimmedId, descr);\n currentDocument.states[trimmedId] = {\n id: trimmedId,\n descriptions: [],\n type,\n doc,\n note,\n classes: [],\n styles: [],\n textStyles: []\n };\n } else {\n if (!currentDocument.states[trimmedId].doc) {\n currentDocument.states[trimmedId].doc = doc;\n }\n if (!currentDocument.states[trimmedId].type) {\n currentDocument.states[trimmedId].type = type;\n }\n }\n if (descr) {\n log.info(\"Setting state description\", trimmedId, descr);\n if (typeof descr === \"string\") {\n addDescription(trimmedId, descr.trim());\n }\n if (typeof descr === \"object\") {\n descr.forEach((des) => addDescription(trimmedId, des.trim()));\n }\n }\n if (note) {\n currentDocument.states[trimmedId].note = note;\n currentDocument.states[trimmedId].note.text = common.sanitizeText(\n currentDocument.states[trimmedId].note.text,\n getConfig()\n );\n }\n if (classes2) {\n log.info(\"Setting state classes\", trimmedId, classes2);\n const classesList = typeof classes2 === \"string\" ? [classes2] : classes2;\n classesList.forEach((cssClass) => setCssClass(trimmedId, cssClass.trim()));\n }\n if (styles2) {\n log.info(\"Setting state styles\", trimmedId, styles2);\n const stylesList = typeof styles2 === \"string\" ? [styles2] : styles2;\n stylesList.forEach((style) => setStyle(trimmedId, style.trim()));\n }\n if (textStyles) {\n log.info(\"Setting state styles\", trimmedId, styles2);\n const textStylesList = typeof textStyles === \"string\" ? [textStyles] : textStyles;\n textStylesList.forEach((textStyle) => setTextStyle(trimmedId, textStyle.trim()));\n }\n};\nconst clear = function(saveCommon) {\n documents = {\n root: newDoc()\n };\n currentDocument = documents.root;\n startEndCount = 0;\n classes = newClassesList();\n if (!saveCommon) {\n clear$1();\n }\n};\nconst getState = function(id) {\n return currentDocument.states[id];\n};\nconst getStates = function() {\n return currentDocument.states;\n};\nconst logDocuments = function() {\n log.info(\"Documents = \", documents);\n};\nconst getRelations = function() {\n return currentDocument.relations;\n};\nfunction startIdIfNeeded(id = \"\") {\n let fixedId = id;\n if (id === START_NODE) {\n startEndCount++;\n fixedId = `${START_TYPE}${startEndCount}`;\n }\n return fixedId;\n}\nfunction startTypeIfNeeded(id = \"\", type = DEFAULT_STATE_TYPE) {\n return id === START_NODE ? START_TYPE : type;\n}\nfunction endIdIfNeeded(id = \"\") {\n let fixedId = id;\n if (id === END_NODE) {\n startEndCount++;\n fixedId = `${END_TYPE}${startEndCount}`;\n }\n return fixedId;\n}\nfunction endTypeIfNeeded(id = \"\", type = DEFAULT_STATE_TYPE) {\n return id === END_NODE ? END_TYPE : type;\n}\nfunction addRelationObjs(item1, item2, relationTitle) {\n let id1 = startIdIfNeeded(item1.id.trim());\n let type1 = startTypeIfNeeded(item1.id.trim(), item1.type);\n let id2 = startIdIfNeeded(item2.id.trim());\n let type2 = startTypeIfNeeded(item2.id.trim(), item2.type);\n addState(\n id1,\n type1,\n item1.doc,\n item1.description,\n item1.note,\n item1.classes,\n item1.styles,\n item1.textStyles\n );\n addState(\n id2,\n type2,\n item2.doc,\n item2.description,\n item2.note,\n item2.classes,\n item2.styles,\n item2.textStyles\n );\n currentDocument.relations.push({\n id1,\n id2,\n relationTitle: common.sanitizeText(relationTitle, getConfig())\n });\n}\nconst addRelation = function(item1, item2, title) {\n if (typeof item1 === \"object\") {\n addRelationObjs(item1, item2, title);\n } else {\n const id1 = startIdIfNeeded(item1.trim());\n const type1 = startTypeIfNeeded(item1);\n const id2 = endIdIfNeeded(item2.trim());\n const type2 = endTypeIfNeeded(item2);\n addState(id1, type1);\n addState(id2, type2);\n currentDocument.relations.push({\n id1,\n id2,\n title: common.sanitizeText(title, getConfig())\n });\n }\n};\nconst addDescription = function(id, descr) {\n const theState = currentDocument.states[id];\n const _descr = descr.startsWith(\":\") ? descr.replace(\":\", \"\").trim() : descr;\n theState.descriptions.push(common.sanitizeText(_descr, getConfig()));\n};\nconst cleanupLabel = function(label) {\n if (label.substring(0, 1) === \":\") {\n return label.substr(2).trim();\n } else {\n return label.trim();\n }\n};\nconst getDividerId = () => {\n dividerCnt++;\n return \"divider-id-\" + dividerCnt;\n};\nconst addStyleClass = function(id, styleAttributes = \"\") {\n if (classes[id] === void 0) {\n classes[id] = { id, styles: [], textStyles: [] };\n }\n const foundClass = classes[id];\n if (styleAttributes !== void 0 && styleAttributes !== null) {\n styleAttributes.split(STYLECLASS_SEP).forEach((attrib) => {\n const fixedAttrib = attrib.replace(/([^;]*);/, \"$1\").trim();\n if (attrib.match(COLOR_KEYWORD)) {\n const newStyle1 = fixedAttrib.replace(FILL_KEYWORD, BG_FILL);\n const newStyle2 = newStyle1.replace(COLOR_KEYWORD, FILL_KEYWORD);\n foundClass.textStyles.push(newStyle2);\n }\n foundClass.styles.push(fixedAttrib);\n });\n }\n};\nconst getClasses = function() {\n return classes;\n};\nconst setCssClass = function(itemIds, cssClassName) {\n itemIds.split(\",\").forEach(function(id) {\n let foundState = getState(id);\n if (foundState === void 0) {\n const trimmedId = id.trim();\n addState(trimmedId);\n foundState = getState(trimmedId);\n }\n foundState.classes.push(cssClassName);\n });\n};\nconst setStyle = function(itemId, styleText) {\n const item = getState(itemId);\n if (item !== void 0) {\n item.textStyles.push(styleText);\n }\n};\nconst setTextStyle = function(itemId, cssClassName) {\n const item = getState(itemId);\n if (item !== void 0) {\n item.textStyles.push(cssClassName);\n }\n};\nconst getDirection = () => direction;\nconst setDirection = (dir) => {\n direction = dir;\n};\nconst trimColon = (str) => str && str[0] === \":\" ? str.substr(1).trim() : str.trim();\nconst db = {\n getConfig: () => getConfig().state,\n addState,\n clear,\n getState,\n getStates,\n getRelations,\n getClasses,\n getDirection,\n addRelation,\n getDividerId,\n setDirection,\n cleanupLabel,\n lineType,\n relationType,\n logDocuments,\n getRootDoc,\n setRootDoc,\n getRootDocV2,\n extract,\n trimColon,\n getAccTitle,\n setAccTitle,\n getAccDescription,\n setAccDescription,\n addStyleClass,\n setCssClass,\n addDescription,\n setDiagramTitle,\n getDiagramTitle\n};\nconst getStyles = (options) => `\ndefs #statediagram-barbEnd {\n fill: ${options.transitionColor};\n stroke: ${options.transitionColor};\n }\ng.stateGroup text {\n fill: ${options.nodeBorder};\n stroke: none;\n font-size: 10px;\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.stateLabelColor};\n}\n\ng.stateGroup rect {\n fill: ${options.mainBkg};\n stroke: ${options.nodeBorder};\n}\n\ng.stateGroup line {\n stroke: ${options.lineColor};\n stroke-width: 1;\n}\n\n.transition {\n stroke: ${options.transitionColor};\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: ${options.noteTextColor};\n stroke: none;\n font-size: 10px;\n }\n}\n\n.stateLabel .box {\n stroke: none;\n stroke-width: 0;\n fill: ${options.mainBkg};\n opacity: 0.5;\n}\n\n.edgeLabel .label rect {\n fill: ${options.labelBackgroundColor};\n opacity: 0.5;\n}\n.edgeLabel .label text {\n fill: ${options.transitionLabelColor || options.tertiaryTextColor};\n}\n.label div .edgeLabel {\n color: ${options.transitionLabelColor || options.tertiaryTextColor};\n}\n\n.stateLabel text {\n fill: ${options.stateLabelColor};\n font-size: 10px;\n font-weight: bold;\n}\n\n.node circle.state-start {\n fill: ${options.specialStateColor};\n stroke: ${options.specialStateColor};\n}\n\n.node .fork-join {\n fill: ${options.specialStateColor};\n stroke: ${options.specialStateColor};\n}\n\n.node circle.state-end {\n fill: ${options.innerEndBackground};\n stroke: ${options.background};\n stroke-width: 1.5\n}\n.end-state-inner {\n fill: ${options.compositeBackground || options.background};\n // stroke: ${options.background};\n stroke-width: 1.5\n}\n\n.node rect {\n fill: ${options.stateBkg || options.mainBkg};\n stroke: ${options.stateBorder || options.nodeBorder};\n stroke-width: 1px;\n}\n.node polygon {\n fill: ${options.mainBkg};\n stroke: ${options.stateBorder || options.nodeBorder};;\n stroke-width: 1px;\n}\n#statediagram-barbEnd {\n fill: ${options.lineColor};\n}\n\n.statediagram-cluster rect {\n fill: ${options.compositeTitleBackground};\n stroke: ${options.stateBorder || options.nodeBorder};\n stroke-width: 1px;\n}\n\n.cluster-label, .nodeLabel {\n color: ${options.stateLabelColor};\n}\n\n.statediagram-cluster rect.outer {\n rx: 5px;\n ry: 5px;\n}\n.statediagram-state .divider {\n stroke: ${options.stateBorder || 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.compositeBackground || options.background};\n}\n.statediagram-cluster.statediagram-cluster-alt .inner {\n fill: ${options.altBackground ? options.altBackground : \"#efefef\"};\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 text {\n fill: ${options.noteTextColor};\n}\n\n.statediagram-note .nodeLabel {\n color: ${options.noteTextColor};\n}\n.statediagram .edgeLabel {\n color: red; // ${options.noteTextColor};\n}\n\n#dependencyStart, #dependencyEnd {\n fill: ${options.lineColor};\n stroke: ${options.lineColor};\n stroke-width: 1;\n}\n\n.statediagramTitleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${options.textColor};\n}\n`;\nconst styles = getStyles;\nexport {\n DEFAULT_STATE_TYPE as D,\n STMT_RELATION as S,\n DIVIDER_TYPE as a,\n STMT_STATE as b,\n DEFAULT_NESTED_DOC_DIR as c,\n db as d,\n parser$1 as p,\n styles as s\n};\n","import { sanitizeUrl } from \"@braintree/sanitize-url\";\nimport { J as lineBreakRegex } from \"./mermaid-f47111a7.js\";\nconst drawRect = (element, rectData) => {\n const rectElement = element.append(\"rect\");\n rectElement.attr(\"x\", rectData.x);\n rectElement.attr(\"y\", rectData.y);\n rectElement.attr(\"fill\", rectData.fill);\n rectElement.attr(\"stroke\", rectData.stroke);\n rectElement.attr(\"width\", rectData.width);\n rectElement.attr(\"height\", rectData.height);\n if (rectData.name) {\n rectElement.attr(\"name\", rectData.name);\n }\n rectData.rx !== void 0 && rectElement.attr(\"rx\", rectData.rx);\n rectData.ry !== void 0 && rectElement.attr(\"ry\", rectData.ry);\n if (rectData.attrs !== void 0) {\n for (const attrKey in rectData.attrs) {\n rectElement.attr(attrKey, rectData.attrs[attrKey]);\n }\n }\n rectData.class !== void 0 && rectElement.attr(\"class\", rectData.class);\n return rectElement;\n};\nconst drawBackgroundRect = (element, bounds) => {\n const rectData = {\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 stroke: bounds.stroke,\n class: \"rect\"\n };\n const rectElement = drawRect(element, rectData);\n rectElement.lower();\n};\nconst drawText = (element, textData) => {\n const nText = textData.text.replace(lineBreakRegex, \" \");\n const textElem = element.append(\"text\");\n textElem.attr(\"x\", textData.x);\n textElem.attr(\"y\", textData.y);\n textElem.attr(\"class\", \"legend\");\n textElem.style(\"text-anchor\", textData.anchor);\n textData.class !== void 0 && textElem.attr(\"class\", textData.class);\n const tspan = textElem.append(\"tspan\");\n tspan.attr(\"x\", textData.x + textData.textMargin * 2);\n tspan.text(nText);\n return textElem;\n};\nconst drawImage = (elem, x, y, link) => {\n const imageElement = elem.append(\"image\");\n imageElement.attr(\"x\", x);\n imageElement.attr(\"y\", y);\n const sanitizedLink = sanitizeUrl(link);\n imageElement.attr(\"xlink:href\", sanitizedLink);\n};\nconst drawEmbeddedImage = (element, x, y, link) => {\n const imageElement = element.append(\"use\");\n imageElement.attr(\"x\", x);\n imageElement.attr(\"y\", y);\n const sanitizedLink = sanitizeUrl(link);\n imageElement.attr(\"xlink:href\", `#${sanitizedLink}`);\n};\nconst getNoteRect = () => {\n const noteRectData = {\n x: 0,\n y: 0,\n width: 100,\n height: 100,\n fill: \"#EDF2AE\",\n stroke: \"#666\",\n anchor: \"start\",\n rx: 0,\n ry: 0\n };\n return noteRectData;\n};\nconst getTextObj = () => {\n const testObject = {\n x: 0,\n y: 0,\n width: 100,\n height: 100,\n \"text-anchor\": \"start\",\n style: \"#666\",\n textMargin: 0,\n rx: 0,\n ry: 0,\n tspan: true\n };\n return testObject;\n};\nexport {\n drawBackgroundRect as a,\n drawEmbeddedImage as b,\n drawImage as c,\n drawRect as d,\n getTextObj as e,\n drawText as f,\n getNoteRect as g\n};\n","import { L as commonDb, v as clear$1, c as getConfig, l as log, o as setupGraphViewbox } from \"./mermaid-f47111a7.js\";\nimport { select, arc } from \"d3\";\nimport { isDark, lighten, darken } from \"khroma\";\nimport \"ts-dedent\";\nimport \"dayjs\";\nimport \"@braintree/sanitize-url\";\nimport \"dompurify\";\nimport \"lodash-es/memoize.js\";\nimport \"lodash-es/merge.js\";\nimport \"stylis\";\nimport \"lodash-es/isEmpty.js\";\nvar parser = function() {\n var o = function(k, v, o2, l) {\n for (o2 = o2 || {}, l = k.length; l--; o2[k[l]] = v)\n ;\n return o2;\n }, $V0 = [6, 8, 10, 11, 12, 14, 16, 17, 20, 21], $V1 = [1, 9], $V2 = [1, 10], $V3 = [1, 11], $V4 = [1, 12], $V5 = [1, 13], $V6 = [1, 16], $V7 = [1, 17];\n var parser2 = {\n trace: function trace() {\n },\n yy: {},\n symbols_: { \"error\": 2, \"start\": 3, \"timeline\": 4, \"document\": 5, \"EOF\": 6, \"line\": 7, \"SPACE\": 8, \"statement\": 9, \"NEWLINE\": 10, \"title\": 11, \"acc_title\": 12, \"acc_title_value\": 13, \"acc_descr\": 14, \"acc_descr_value\": 15, \"acc_descr_multiline_value\": 16, \"section\": 17, \"period_statement\": 18, \"event_statement\": 19, \"period\": 20, \"event\": 21, \"$accept\": 0, \"$end\": 1 },\n terminals_: { 2: \"error\", 4: \"timeline\", 6: \"EOF\", 8: \"SPACE\", 10: \"NEWLINE\", 11: \"title\", 12: \"acc_title\", 13: \"acc_title_value\", 14: \"acc_descr\", 15: \"acc_descr_value\", 16: \"acc_descr_multiline_value\", 17: \"section\", 20: \"period\", 21: \"event\" },\n productions_: [0, [3, 3], [5, 0], [5, 2], [7, 2], [7, 1], [7, 1], [7, 1], [9, 1], [9, 2], [9, 2], [9, 1], [9, 1], [9, 1], [9, 1], [18, 1], [19, 1]],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) {\n var $0 = $$.length - 1;\n switch (yystate) {\n case 1:\n return $$[$0 - 1];\n case 2:\n this.$ = [];\n break;\n case 3:\n $$[$0 - 1].push($$[$0]);\n this.$ = $$[$0 - 1];\n break;\n case 4:\n case 5:\n this.$ = $$[$0];\n break;\n case 6:\n case 7:\n this.$ = [];\n break;\n case 8:\n yy.getCommonDb().setDiagramTitle($$[$0].substr(6));\n this.$ = $$[$0].substr(6);\n break;\n case 9:\n this.$ = $$[$0].trim();\n yy.getCommonDb().setAccTitle(this.$);\n break;\n case 10:\n case 11:\n this.$ = $$[$0].trim();\n yy.getCommonDb().setAccDescription(this.$);\n break;\n case 12:\n yy.addSection($$[$0].substr(8));\n this.$ = $$[$0].substr(8);\n break;\n case 15:\n yy.addTask($$[$0], 0, \"\");\n this.$ = $$[$0];\n break;\n case 16:\n yy.addEvent($$[$0].substr(2));\n this.$ = $$[$0];\n break;\n }\n },\n table: [{ 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, 14: $V3, 16: $V4, 17: $V5, 18: 14, 19: 15, 20: $V6, 21: $V7 }, o($V0, [2, 7], { 1: [2, 1] }), o($V0, [2, 3]), { 9: 18, 11: $V1, 12: $V2, 14: $V3, 16: $V4, 17: $V5, 18: 14, 19: 15, 20: $V6, 21: $V7 }, o($V0, [2, 5]), o($V0, [2, 6]), o($V0, [2, 8]), { 13: [1, 19] }, { 15: [1, 20] }, o($V0, [2, 11]), o($V0, [2, 12]), o($V0, [2, 13]), o($V0, [2, 14]), o($V0, [2, 15]), o($V0, [2, 16]), o($V0, [2, 4]), o($V0, [2, 9]), o($V0, [2, 10])],\n defaultActions: {},\n parseError: 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 },\n parse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = \"\", yylineno = 0, yyleng = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer2 = 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 lexer2.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer2;\n sharedState.yy.parser = this;\n if (typeof lexer2.yylloc == \"undefined\") {\n lexer2.yylloc = {};\n }\n var yyloc = lexer2.yylloc;\n lstack.push(yyloc);\n var ranges = lexer2.options && lexer2.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 lex() {\n var token;\n token = tstack.pop() || lexer2.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, state, action, 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 (lexer2.showPosition) {\n errStr = \"Parse error on line \" + (yylineno + 1) + \":\\n\" + lexer2.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: lexer2.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer2.yylineno,\n loc: yyloc,\n 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(lexer2.yytext);\n lstack.push(lexer2.yylloc);\n stack.push(action[1]);\n symbol = null;\n {\n yyleng = lexer2.yyleng;\n yytext = lexer2.yytext;\n yylineno = lexer2.yylineno;\n yyloc = lexer2.yylloc;\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 var lexer = function() {\n var lexer2 = {\n EOF: 1,\n parseError: 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 // resets the lexer, sets new input\n setInput: 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 // consumes and returns one char from the input\n input: 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 this._input = this._input.slice(1);\n return ch;\n },\n // unshifts one char (or a string) into the input\n unput: function(ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - 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 if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\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 ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len\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 // When called from action, caches matched text and appends it on next action\n more: function() {\n this._more = true;\n return this;\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.\n reject: 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 return this;\n },\n // retain first n characters of the match\n less: function(n) {\n this.unput(this.match.slice(n));\n },\n // displays already matched input, i.e. for error messages\n pastInput: 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 // displays upcoming input, i.e. for error messages\n upcomingInput: 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 // displays the character position where the lexing error occurred, i.e. for error messages\n showPosition: function() {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n // test the lexed token: return FALSE when not a match, otherwise return token\n test_match: function(match, indexed_rule) {\n var token, lines, backup;\n if (this.options.backtrack_lexer) {\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 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 ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length : 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 for (var k in backup) {\n this[k] = backup[k];\n }\n return false;\n }\n return false;\n },\n // return next match in input\n next: function() {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n var token, match, tempMatch, 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;\n } else {\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 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 // return next match that has a token\n lex: function lex() {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\n begin: function begin(condition) {\n this.conditionStack.push(condition);\n },\n // pop the previously active lexer condition state off the condition stack\n popState: 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 // 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 // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\n topState: 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 // alias for begin(condition)\n pushState: function pushState(condition) {\n this.begin(condition);\n },\n // return the number of states currently on the stack\n stateStackSize: function stateStackSize() {\n return this.conditionStack.length;\n },\n options: { \"case-insensitive\": true },\n performAction: function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) {\n switch ($avoiding_name_collisions) {\n case 0:\n break;\n case 1:\n break;\n case 2:\n return 10;\n case 3:\n break;\n case 4:\n break;\n case 5:\n return 4;\n case 6:\n return 11;\n case 7:\n this.begin(\"acc_title\");\n return 12;\n case 8:\n this.popState();\n return \"acc_title_value\";\n case 9:\n this.begin(\"acc_descr\");\n return 14;\n case 10:\n this.popState();\n return \"acc_descr_value\";\n case 11:\n this.begin(\"acc_descr_multiline\");\n break;\n case 12:\n this.popState();\n break;\n case 13:\n return \"acc_descr_multiline_value\";\n case 14:\n return 17;\n case 15:\n return 21;\n case 16:\n return 20;\n case 17:\n return 6;\n case 18:\n return \"INVALID\";\n }\n },\n rules: [/^(?:%(?!\\{)[^\\n]*)/i, /^(?:[^\\}]%%[^\\n]*)/i, /^(?:[\\n]+)/i, /^(?:\\s+)/i, /^(?:#[^\\n]*)/i, /^(?:timeline\\b)/i, /^(?:title\\s[^#\\n;]+)/i, /^(?:accTitle\\s*:\\s*)/i, /^(?:(?!\\n||)*[^\\n]*)/i, /^(?:accDescr\\s*:\\s*)/i, /^(?:(?!\\n||)*[^\\n]*)/i, /^(?:accDescr\\s*\\{\\s*)/i, /^(?:[\\}])/i, /^(?:[^\\}]*)/i, /^(?:section\\s[^#:\\n;]+)/i, /^(?::\\s[^#:\\n;]+)/i, /^(?:[^#:\\n;]+)/i, /^(?:$)/i, /^(?:.)/i],\n conditions: { \"acc_descr_multiline\": { \"rules\": [12, 13], \"inclusive\": false }, \"acc_descr\": { \"rules\": [10], \"inclusive\": false }, \"acc_title\": { \"rules\": [8], \"inclusive\": false }, \"INITIAL\": { \"rules\": [0, 1, 2, 3, 4, 5, 6, 7, 9, 11, 14, 15, 16, 17, 18], \"inclusive\": true } }\n };\n return lexer2;\n }();\n parser2.lexer = lexer;\n function Parser() {\n this.yy = {};\n }\n Parser.prototype = parser2;\n parser2.Parser = Parser;\n return new Parser();\n}();\nparser.parser = parser;\nconst parser$1 = parser;\nlet currentSection = \"\";\nlet currentTaskId = 0;\nconst sections = [];\nconst tasks = [];\nconst rawTasks = [];\nconst getCommonDb = () => commonDb;\nconst clear = function() {\n sections.length = 0;\n tasks.length = 0;\n currentSection = \"\";\n rawTasks.length = 0;\n clear$1();\n};\nconst addSection = function(txt) {\n currentSection = txt;\n sections.push(txt);\n};\nconst getSections = function() {\n return sections;\n};\nconst 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 tasks.push(...rawTasks);\n return tasks;\n};\nconst addTask = function(period, length, event) {\n const rawTask = {\n id: currentTaskId++,\n section: currentSection,\n type: currentSection,\n task: period,\n score: length ? length : 0,\n //if event is defined, then add it the events array\n events: event ? [event] : []\n };\n rawTasks.push(rawTask);\n};\nconst addEvent = function(event) {\n const currentTask = rawTasks.find((task) => task.id === currentTaskId - 1);\n currentTask.events.push(event);\n};\nconst 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};\nconst compileTasks = function() {\n const compileTask = function(pos) {\n return rawTasks[pos].processed;\n };\n let allProcessed = true;\n for (const [i, rawTask] of rawTasks.entries()) {\n compileTask(i);\n allProcessed = allProcessed && rawTask.processed;\n }\n return allProcessed;\n};\nconst timelineDb = {\n clear,\n getCommonDb,\n addSection,\n getSections,\n getTasks,\n addTask,\n addTaskOrg,\n addEvent\n};\nconst db = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n addEvent,\n addSection,\n addTask,\n addTaskOrg,\n clear,\n default: timelineDb,\n getCommonDb,\n getSections,\n getTasks\n}, Symbol.toStringTag, { value: \"Module\" }));\nconst MAX_SECTIONS = 12;\nconst 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 if (rectData.class !== void 0) {\n rectElem.attr(\"class\", rectData.class);\n }\n return rectElem;\n};\nconst drawFace = function(element, faceData) {\n const radius = 15;\n const circleElement = element.append(\"circle\").attr(\"cx\", faceData.cx).attr(\"cy\", faceData.cy).attr(\"class\", \"face\").attr(\"r\", radius).attr(\"stroke-width\", 2).attr(\"overflow\", \"visible\");\n const face = element.append(\"g\");\n face.append(\"circle\").attr(\"cx\", faceData.cx - radius / 3).attr(\"cy\", faceData.cy - radius / 3).attr(\"r\", 1.5).attr(\"stroke-width\", 2).attr(\"fill\", \"#666\").attr(\"stroke\", \"#666\");\n face.append(\"circle\").attr(\"cx\", faceData.cx + radius / 3).attr(\"cy\", faceData.cy - radius / 3).attr(\"r\", 1.5).attr(\"stroke-width\", 2).attr(\"fill\", \"#666\").attr(\"stroke\", \"#666\");\n function smile(face2) {\n const arc$1 = arc().startAngle(Math.PI / 2).endAngle(3 * (Math.PI / 2)).innerRadius(radius / 2).outerRadius(radius / 2.2);\n face2.append(\"path\").attr(\"class\", \"mouth\").attr(\"d\", arc$1).attr(\"transform\", \"translate(\" + faceData.cx + \",\" + (faceData.cy + 2) + \")\");\n }\n function sad(face2) {\n const arc$1 = arc().startAngle(3 * Math.PI / 2).endAngle(5 * (Math.PI / 2)).innerRadius(radius / 2).outerRadius(radius / 2.2);\n face2.append(\"path\").attr(\"class\", \"mouth\").attr(\"d\", arc$1).attr(\"transform\", \"translate(\" + faceData.cx + \",\" + (faceData.cy + 7) + \")\");\n }\n function ambivalent(face2) {\n face2.append(\"line\").attr(\"class\", \"mouth\").attr(\"stroke\", 2).attr(\"x1\", faceData.cx - 5).attr(\"y1\", faceData.cy + 7).attr(\"x2\", faceData.cx + 5).attr(\"y2\", faceData.cy + 7).attr(\"class\", \"mouth\").attr(\"stroke-width\", \"1px\").attr(\"stroke\", \"#666\");\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 return circleElement;\n};\nconst 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(\"class\", \"actor-\" + circleData.pos);\n circleElement.attr(\"fill\", circleData.fill);\n circleElement.attr(\"stroke\", circleData.stroke);\n circleElement.attr(\"r\", circleData.r);\n if (circleElement.class !== void 0) {\n circleElement.attr(\"class\", circleElement.class);\n }\n if (circleData.title !== void 0) {\n circleElement.append(\"title\").text(circleData.title);\n }\n return circleElement;\n};\nconst drawText = function(elem, textData) {\n const nText = textData.text.replace(/<br\\s*\\/?>/gi, \" \");\n const textElem = elem.append(\"text\");\n textElem.attr(\"x\", textData.x);\n textElem.attr(\"y\", textData.y);\n textElem.attr(\"class\", \"legend\");\n textElem.style(\"text-anchor\", textData.anchor);\n if (textData.class !== void 0) {\n textElem.attr(\"class\", textData.class);\n }\n const span = textElem.append(\"tspan\");\n span.attr(\"x\", textData.x + textData.textMargin * 2);\n span.text(nText);\n return textElem;\n};\nconst drawLabel = function(elem, txtObject) {\n function genPoints(x, y, width, height, cut) {\n return x + \",\" + y + \" \" + (x + width) + \",\" + y + \" \" + (x + width) + \",\" + (y + height - cut) + \" \" + (x + width - cut * 1.2) + \",\" + (y + height) + \" \" + x + \",\" + (y + height);\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 txtObject.y = txtObject.y + txtObject.labelMargin;\n txtObject.x = txtObject.x + 0.5 * txtObject.labelMargin;\n drawText(elem, txtObject);\n};\nconst drawSection = function(elem, section, conf) {\n const g = elem.append(\"g\");\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 _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};\nlet taskCount = -1;\nconst 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\").attr(\"id\", \"task\" + taskCount).attr(\"x1\", center).attr(\"y1\", task.y).attr(\"x2\", center).attr(\"y2\", maxHeight).attr(\"class\", \"task-line\").attr(\"stroke-width\", \"1px\").attr(\"stroke-dasharray\", \"4 2\").attr(\"stroke\", \"#666\");\n drawFace(g, {\n cx: center,\n cy: 300 + (5 - task.score) * 30,\n score: task.score\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 task.x + 14;\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};\nconst 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};\nconst getTextObj = function() {\n return {\n x: 0,\n y: 0,\n fill: void 0,\n \"text-anchor\": \"start\",\n width: 100,\n height: 100,\n textMargin: 0,\n rx: 0,\n ry: 0\n };\n};\nconst 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};\nconst _drawTextCandidateFunc = function() {\n function byText(content, g, x, y, width, height, textAttrs, colour) {\n const text = g.append(\"text\").attr(\"x\", x + width / 2).attr(\"y\", y + height / 2 + 5).style(\"font-color\", colour).style(\"text-anchor\", \"middle\").text(content);\n _setTextAttrs(text, textAttrs);\n }\n function byTspan(content, g, x, y, width, height, textAttrs, conf, colour) {\n const { taskFontSize, taskFontFamily } = conf;\n const lines = content.split(/<br\\s*\\/?>/gi);\n for (let i = 0; i < lines.length; i++) {\n const dy = i * taskFontSize - taskFontSize * (lines.length - 1) / 2;\n const text = g.append(\"text\").attr(\"x\", x + width / 2).attr(\"y\", y).attr(\"fill\", colour).style(\"text-anchor\", \"middle\").style(\"font-size\", taskFontSize).style(\"font-family\", taskFontFamily);\n text.append(\"tspan\").attr(\"x\", x + width / 2).attr(\"dy\", dy).text(lines[i]);\n text.attr(\"y\", y + height / 2).attr(\"dominant-baseline\", \"central\").attr(\"alignment-baseline\", \"central\");\n _setTextAttrs(text, textAttrs);\n }\n }\n function byFo(content, g, x, y, width, height, textAttrs, conf) {\n const body = g.append(\"switch\");\n const f = body.append(\"foreignObject\").attr(\"x\", x).attr(\"y\", y).attr(\"width\", width).attr(\"height\", height).attr(\"position\", \"fixed\");\n const text = f.append(\"xhtml:div\").style(\"display\", \"table\").style(\"height\", \"100%\").style(\"width\", \"100%\");\n text.append(\"div\").attr(\"class\", \"label\").style(\"display\", \"table-cell\").style(\"text-align\", \"center\").style(\"vertical-align\", \"middle\").text(content);\n byTspan(content, body, x, y, width, height, textAttrs, conf);\n _setTextAttrs(text, textAttrs);\n }\n function _setTextAttrs(toText, fromTextAttrsDict) {\n for (const key in fromTextAttrsDict) {\n if (key in fromTextAttrsDict) {\n toText.attr(key, fromTextAttrsDict[key]);\n }\n }\n }\n return function(conf) {\n return conf.textPlacement === \"fo\" ? byFo : conf.textPlacement === \"old\" ? byText : byTspan;\n };\n}();\nconst initGraphics = function(graphics) {\n graphics.append(\"defs\").append(\"marker\").attr(\"id\", \"arrowhead\").attr(\"refX\", 5).attr(\"refY\", 2).attr(\"markerWidth\", 6).attr(\"markerHeight\", 4).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 0,0 V 4 L6,2 Z\");\n};\nfunction wrap(text, width) {\n text.each(function() {\n var text2 = select(this), words = text2.text().split(/(\\s+|<br>)/).reverse(), word, line = [], lineHeight = 1.1, y = text2.attr(\"y\"), dy = parseFloat(text2.attr(\"dy\")), tspan = text2.text(null).append(\"tspan\").attr(\"x\", 0).attr(\"y\", y).attr(\"dy\", dy + \"em\");\n for (let j = 0; j < words.length; j++) {\n word = words[words.length - 1 - j];\n line.push(word);\n tspan.text(line.join(\" \").trim());\n if (tspan.node().getComputedTextLength() > width || word === \"<br>\") {\n line.pop();\n tspan.text(line.join(\" \").trim());\n if (word === \"<br>\") {\n line = [\"\"];\n } else {\n line = [word];\n }\n tspan = text2.append(\"tspan\").attr(\"x\", 0).attr(\"y\", y).attr(\"dy\", lineHeight + \"em\").text(word);\n }\n }\n });\n}\nconst drawNode = function(elem, node, fullSection, conf) {\n const section = fullSection % MAX_SECTIONS - 1;\n const nodeElem = elem.append(\"g\");\n node.section = section;\n nodeElem.attr(\n \"class\",\n (node.class ? node.class + \" \" : \"\") + \"timeline-node \" + (\"section-\" + section)\n );\n const bkgElem = nodeElem.append(\"g\");\n const textElem = nodeElem.append(\"g\");\n const txt = textElem.append(\"text\").text(node.descr).attr(\"dy\", \"1em\").attr(\"alignment-baseline\", \"middle\").attr(\"dominant-baseline\", \"middle\").attr(\"text-anchor\", \"middle\").call(wrap, node.width);\n const bbox = txt.node().getBBox();\n const fontSize = conf.fontSize && conf.fontSize.replace ? conf.fontSize.replace(\"px\", \"\") : conf.fontSize;\n node.height = bbox.height + fontSize * 1.1 * 0.5 + node.padding;\n node.height = Math.max(node.height, node.maxHeight);\n node.width = node.width + 2 * node.padding;\n textElem.attr(\"transform\", \"translate(\" + node.width / 2 + \", \" + node.padding / 2 + \")\");\n defaultBkg(bkgElem, node, section);\n return node;\n};\nconst getVirtualNodeHeight = function(elem, node, conf) {\n const textElem = elem.append(\"g\");\n const txt = textElem.append(\"text\").text(node.descr).attr(\"dy\", \"1em\").attr(\"alignment-baseline\", \"middle\").attr(\"dominant-baseline\", \"middle\").attr(\"text-anchor\", \"middle\").call(wrap, node.width);\n const bbox = txt.node().getBBox();\n const fontSize = conf.fontSize && conf.fontSize.replace ? conf.fontSize.replace(\"px\", \"\") : conf.fontSize;\n textElem.remove();\n return bbox.height + fontSize * 1.1 * 0.5 + node.padding;\n};\nconst defaultBkg = function(elem, node, section) {\n const rd = 5;\n elem.append(\"path\").attr(\"id\", \"node-\" + node.id).attr(\"class\", \"node-bkg node-\" + node.type).attr(\n \"d\",\n `M0 ${node.height - rd} v${-node.height + 2 * rd} q0,-5 5,-5 h${node.width - 2 * rd} q5,0 5,5 v${node.height - rd} H0 Z`\n );\n elem.append(\"line\").attr(\"class\", \"node-line-\" + section).attr(\"x1\", 0).attr(\"y1\", node.height).attr(\"x2\", node.width).attr(\"y2\", node.height);\n};\nconst svgDraw = {\n drawRect,\n drawCircle,\n drawSection,\n drawText,\n drawLabel,\n drawTask,\n drawBackgroundRect,\n getTextObj,\n getNoteRect,\n initGraphics,\n drawNode,\n getVirtualNodeHeight\n};\nconst draw = function(text, id, version, diagObj) {\n var _a, _b;\n const conf = getConfig();\n const LEFT_MARGIN = conf.leftMargin ?? 50;\n log.debug(\"timeline\", diagObj.db);\n const securityLevel = conf.securityLevel;\n let sandboxElement;\n if (securityLevel === \"sandbox\") {\n sandboxElement = select(\"#i\" + id);\n }\n const root = securityLevel === \"sandbox\" ? select(sandboxElement.nodes()[0].contentDocument.body) : select(\"body\");\n const svg = root.select(\"#\" + id);\n svg.append(\"g\");\n const tasks2 = diagObj.db.getTasks();\n const title = diagObj.db.getCommonDb().getDiagramTitle();\n log.debug(\"task\", tasks2);\n svgDraw.initGraphics(svg);\n const sections2 = diagObj.db.getSections();\n log.debug(\"sections\", sections2);\n let maxSectionHeight = 0;\n let maxTaskHeight = 0;\n let depthY = 0;\n let sectionBeginY = 0;\n let masterX = 50 + LEFT_MARGIN;\n let masterY = 50;\n sectionBeginY = 50;\n let sectionNumber = 0;\n let hasSections = true;\n sections2.forEach(function(section) {\n const sectionNode = {\n number: sectionNumber,\n descr: section,\n section: sectionNumber,\n width: 150,\n padding: 20,\n maxHeight: maxSectionHeight\n };\n const sectionHeight = svgDraw.getVirtualNodeHeight(svg, sectionNode, conf);\n log.debug(\"sectionHeight before draw\", sectionHeight);\n maxSectionHeight = Math.max(maxSectionHeight, sectionHeight + 20);\n });\n let maxEventCount = 0;\n let maxEventLineLength = 0;\n log.debug(\"tasks.length\", tasks2.length);\n for (const [i, task] of tasks2.entries()) {\n const taskNode = {\n number: i,\n descr: task,\n section: task.section,\n width: 150,\n padding: 20,\n maxHeight: maxTaskHeight\n };\n const taskHeight = svgDraw.getVirtualNodeHeight(svg, taskNode, conf);\n log.debug(\"taskHeight before draw\", taskHeight);\n maxTaskHeight = Math.max(maxTaskHeight, taskHeight + 20);\n maxEventCount = Math.max(maxEventCount, task.events.length);\n let maxEventLineLengthTemp = 0;\n for (let j = 0; j < task.events.length; j++) {\n const event = task.events[j];\n const eventNode = {\n descr: event,\n section: task.section,\n number: task.section,\n width: 150,\n padding: 20,\n maxHeight: 50\n };\n maxEventLineLengthTemp += svgDraw.getVirtualNodeHeight(svg, eventNode, conf);\n }\n maxEventLineLength = Math.max(maxEventLineLength, maxEventLineLengthTemp);\n }\n log.debug(\"maxSectionHeight before draw\", maxSectionHeight);\n log.debug(\"maxTaskHeight before draw\", maxTaskHeight);\n if (sections2 && sections2.length > 0) {\n sections2.forEach((section) => {\n const tasksForSection = tasks2.filter((task) => task.section === section);\n const sectionNode = {\n number: sectionNumber,\n descr: section,\n section: sectionNumber,\n width: 200 * Math.max(tasksForSection.length, 1) - 50,\n padding: 20,\n maxHeight: maxSectionHeight\n };\n log.debug(\"sectionNode\", sectionNode);\n const sectionNodeWrapper = svg.append(\"g\");\n const node = svgDraw.drawNode(sectionNodeWrapper, sectionNode, sectionNumber, conf);\n log.debug(\"sectionNode output\", node);\n sectionNodeWrapper.attr(\"transform\", `translate(${masterX}, ${sectionBeginY})`);\n masterY += maxSectionHeight + 50;\n if (tasksForSection.length > 0) {\n drawTasks(\n svg,\n tasksForSection,\n sectionNumber,\n masterX,\n masterY,\n maxTaskHeight,\n conf,\n maxEventCount,\n maxEventLineLength,\n maxSectionHeight,\n false\n );\n }\n masterX += 200 * Math.max(tasksForSection.length, 1);\n masterY = sectionBeginY;\n sectionNumber++;\n });\n } else {\n hasSections = false;\n drawTasks(\n svg,\n tasks2,\n sectionNumber,\n masterX,\n masterY,\n maxTaskHeight,\n conf,\n maxEventCount,\n maxEventLineLength,\n maxSectionHeight,\n true\n );\n }\n const box = svg.node().getBBox();\n log.debug(\"bounds\", box);\n if (title) {\n svg.append(\"text\").text(title).attr(\"x\", box.width / 2 - LEFT_MARGIN).attr(\"font-size\", \"4ex\").attr(\"font-weight\", \"bold\").attr(\"y\", 20);\n }\n depthY = hasSections ? maxSectionHeight + maxTaskHeight + 150 : maxTaskHeight + 100;\n const lineWrapper = svg.append(\"g\").attr(\"class\", \"lineWrapper\");\n lineWrapper.append(\"line\").attr(\"x1\", LEFT_MARGIN).attr(\"y1\", depthY).attr(\"x2\", box.width + 3 * LEFT_MARGIN).attr(\"y2\", depthY).attr(\"stroke-width\", 4).attr(\"stroke\", \"black\").attr(\"marker-end\", \"url(#arrowhead)\");\n setupGraphViewbox(\n void 0,\n svg,\n ((_a = conf.timeline) == null ? void 0 : _a.padding) ?? 50,\n ((_b = conf.timeline) == null ? void 0 : _b.useMaxWidth) ?? false\n );\n};\nconst drawTasks = function(diagram2, tasks2, sectionColor, masterX, masterY, maxTaskHeight, conf, maxEventCount, maxEventLineLength, maxSectionHeight, isWithoutSections) {\n var _a;\n for (const task of tasks2) {\n const taskNode = {\n descr: task.task,\n section: sectionColor,\n number: sectionColor,\n width: 150,\n padding: 20,\n maxHeight: maxTaskHeight\n };\n log.debug(\"taskNode\", taskNode);\n const taskWrapper = diagram2.append(\"g\").attr(\"class\", \"taskWrapper\");\n const node = svgDraw.drawNode(taskWrapper, taskNode, sectionColor, conf);\n const taskHeight = node.height;\n log.debug(\"taskHeight after draw\", taskHeight);\n taskWrapper.attr(\"transform\", `translate(${masterX}, ${masterY})`);\n maxTaskHeight = Math.max(maxTaskHeight, taskHeight);\n if (task.events) {\n const lineWrapper = diagram2.append(\"g\").attr(\"class\", \"lineWrapper\");\n let lineLength = maxTaskHeight;\n masterY += 100;\n lineLength = lineLength + drawEvents(diagram2, task.events, sectionColor, masterX, masterY, conf);\n masterY -= 100;\n lineWrapper.append(\"line\").attr(\"x1\", masterX + 190 / 2).attr(\"y1\", masterY + maxTaskHeight).attr(\"x2\", masterX + 190 / 2).attr(\n \"y2\",\n masterY + maxTaskHeight + (isWithoutSections ? maxTaskHeight : maxSectionHeight) + maxEventLineLength + 120\n ).attr(\"stroke-width\", 2).attr(\"stroke\", \"black\").attr(\"marker-end\", \"url(#arrowhead)\").attr(\"stroke-dasharray\", \"5,5\");\n }\n masterX = masterX + 200;\n if (isWithoutSections && !((_a = conf.timeline) == null ? void 0 : _a.disableMulticolor)) {\n sectionColor++;\n }\n }\n masterY = masterY - 10;\n};\nconst drawEvents = function(diagram2, events, sectionColor, masterX, masterY, conf) {\n let maxEventHeight = 0;\n const eventBeginY = masterY;\n masterY = masterY + 100;\n for (const event of events) {\n const eventNode = {\n descr: event,\n section: sectionColor,\n number: sectionColor,\n width: 150,\n padding: 20,\n maxHeight: 50\n };\n log.debug(\"eventNode\", eventNode);\n const eventWrapper = diagram2.append(\"g\").attr(\"class\", \"eventWrapper\");\n const node = svgDraw.drawNode(eventWrapper, eventNode, sectionColor, conf);\n const eventHeight = node.height;\n maxEventHeight = maxEventHeight + eventHeight;\n eventWrapper.attr(\"transform\", `translate(${masterX}, ${masterY})`);\n masterY = masterY + 10 + eventHeight;\n }\n masterY = eventBeginY;\n return maxEventHeight;\n};\nconst renderer = {\n setConf: () => {\n },\n draw\n};\nconst genSections = (options) => {\n let sections2 = \"\";\n for (let i = 0; i < options.THEME_COLOR_LIMIT; i++) {\n options[\"lineColor\" + i] = options[\"lineColor\" + i] || options[\"cScaleInv\" + i];\n if (isDark(options[\"lineColor\" + i])) {\n options[\"lineColor\" + i] = lighten(options[\"lineColor\" + i], 20);\n } else {\n options[\"lineColor\" + i] = darken(options[\"lineColor\" + i], 20);\n }\n }\n for (let i = 0; i < options.THEME_COLOR_LIMIT; i++) {\n const sw = \"\" + (17 - 3 * i);\n sections2 += `\n .section-${i - 1} rect, .section-${i - 1} path, .section-${i - 1} circle, .section-${i - 1} path {\n fill: ${options[\"cScale\" + i]};\n }\n .section-${i - 1} text {\n fill: ${options[\"cScaleLabel\" + i]};\n }\n .node-icon-${i - 1} {\n font-size: 40px;\n color: ${options[\"cScaleLabel\" + i]};\n }\n .section-edge-${i - 1}{\n stroke: ${options[\"cScale\" + i]};\n }\n .edge-depth-${i - 1}{\n stroke-width: ${sw};\n }\n .section-${i - 1} line {\n stroke: ${options[\"cScaleInv\" + i]} ;\n stroke-width: 3;\n }\n\n .lineWrapper line{\n stroke: ${options[\"cScaleLabel\" + i]} ;\n }\n\n .disabled, .disabled circle, .disabled text {\n fill: lightgray;\n }\n .disabled text {\n fill: #efefef;\n }\n `;\n }\n return sections2;\n};\nconst getStyles = (options) => `\n .edge {\n stroke-width: 3;\n }\n ${genSections(options)}\n .section-root rect, .section-root path, .section-root circle {\n fill: ${options.git0};\n }\n .section-root text {\n fill: ${options.gitBranchLabel0};\n }\n .icon-container {\n height:100%;\n display: flex;\n justify-content: center;\n align-items: center;\n }\n .edge {\n fill: none;\n }\n .eventWrapper {\n filter: brightness(120%);\n }\n`;\nconst styles = getStyles;\nconst diagram = {\n db,\n renderer,\n parser: parser$1,\n styles\n};\nexport {\n diagram\n};\n","import { l as log, s as setAccTitle, g as getAccTitle, q as setDiagramTitle, t as getDiagramTitle, a as getAccDescription, b as setAccDescription, E as getThemeVariables, F as getConfig, C as cleanAndMerge, B as defaultConfig, v as clear$1, d as sanitizeText, A as selectSvgElement, i as configureSvgSize } from \"./mermaid-f47111a7.js\";\nimport { c as computeDimensionOfText } from \"./createText-6b48ae7d.js\";\nimport { scaleBand, scaleLinear, line } from \"d3\";\nimport \"ts-dedent\";\nimport \"dayjs\";\nimport \"@braintree/sanitize-url\";\nimport \"dompurify\";\nimport \"khroma\";\nimport \"lodash-es/memoize.js\";\nimport \"lodash-es/merge.js\";\nimport \"stylis\";\nimport \"lodash-es/isEmpty.js\";\nimport \"mdast-util-from-markdown\";\nvar parser = function() {\n var o = function(k, v, o2, l) {\n for (o2 = o2 || {}, l = k.length; l--; o2[k[l]] = v)\n ;\n return o2;\n }, $V0 = [1, 10, 12, 14, 16, 18, 19, 21, 23], $V1 = [2, 6], $V2 = [1, 3], $V3 = [1, 5], $V4 = [1, 6], $V5 = [1, 7], $V6 = [1, 5, 10, 12, 14, 16, 18, 19, 21, 23, 34, 35, 36], $V7 = [1, 25], $V8 = [1, 26], $V9 = [1, 28], $Va = [1, 29], $Vb = [1, 30], $Vc = [1, 31], $Vd = [1, 32], $Ve = [1, 33], $Vf = [1, 34], $Vg = [1, 35], $Vh = [1, 36], $Vi = [1, 37], $Vj = [1, 43], $Vk = [1, 42], $Vl = [1, 47], $Vm = [1, 50], $Vn = [1, 10, 12, 14, 16, 18, 19, 21, 23, 34, 35, 36], $Vo = [1, 10, 12, 14, 16, 18, 19, 21, 23, 24, 26, 27, 28, 34, 35, 36], $Vp = [1, 10, 12, 14, 16, 18, 19, 21, 23, 24, 26, 27, 28, 34, 35, 36, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50], $Vq = [1, 64];\n var parser2 = {\n trace: function trace() {\n },\n yy: {},\n symbols_: { \"error\": 2, \"start\": 3, \"eol\": 4, \"XYCHART\": 5, \"chartConfig\": 6, \"document\": 7, \"CHART_ORIENTATION\": 8, \"statement\": 9, \"title\": 10, \"text\": 11, \"X_AXIS\": 12, \"parseXAxis\": 13, \"Y_AXIS\": 14, \"parseYAxis\": 15, \"LINE\": 16, \"plotData\": 17, \"BAR\": 18, \"acc_title\": 19, \"acc_title_value\": 20, \"acc_descr\": 21, \"acc_descr_value\": 22, \"acc_descr_multiline_value\": 23, \"SQUARE_BRACES_START\": 24, \"commaSeparatedNumbers\": 25, \"SQUARE_BRACES_END\": 26, \"NUMBER_WITH_DECIMAL\": 27, \"COMMA\": 28, \"xAxisData\": 29, \"bandData\": 30, \"ARROW_DELIMITER\": 31, \"commaSeparatedTexts\": 32, \"yAxisData\": 33, \"NEWLINE\": 34, \"SEMI\": 35, \"EOF\": 36, \"alphaNum\": 37, \"STR\": 38, \"MD_STR\": 39, \"alphaNumToken\": 40, \"AMP\": 41, \"NUM\": 42, \"ALPHA\": 43, \"PLUS\": 44, \"EQUALS\": 45, \"MULT\": 46, \"DOT\": 47, \"BRKT\": 48, \"MINUS\": 49, \"UNDERSCORE\": 50, \"$accept\": 0, \"$end\": 1 },\n terminals_: { 2: \"error\", 5: \"XYCHART\", 8: \"CHART_ORIENTATION\", 10: \"title\", 12: \"X_AXIS\", 14: \"Y_AXIS\", 16: \"LINE\", 18: \"BAR\", 19: \"acc_title\", 20: \"acc_title_value\", 21: \"acc_descr\", 22: \"acc_descr_value\", 23: \"acc_descr_multiline_value\", 24: \"SQUARE_BRACES_START\", 26: \"SQUARE_BRACES_END\", 27: \"NUMBER_WITH_DECIMAL\", 28: \"COMMA\", 31: \"ARROW_DELIMITER\", 34: \"NEWLINE\", 35: \"SEMI\", 36: \"EOF\", 38: \"STR\", 39: \"MD_STR\", 41: \"AMP\", 42: \"NUM\", 43: \"ALPHA\", 44: \"PLUS\", 45: \"EQUALS\", 46: \"MULT\", 47: \"DOT\", 48: \"BRKT\", 49: \"MINUS\", 50: \"UNDERSCORE\" },\n productions_: [0, [3, 2], [3, 3], [3, 2], [3, 1], [6, 1], [7, 0], [7, 2], [9, 2], [9, 2], [9, 2], [9, 2], [9, 2], [9, 3], [9, 2], [9, 3], [9, 2], [9, 2], [9, 1], [17, 3], [25, 3], [25, 1], [13, 1], [13, 2], [13, 1], [29, 1], [29, 3], [30, 3], [32, 3], [32, 1], [15, 1], [15, 2], [15, 1], [33, 3], [4, 1], [4, 1], [4, 1], [11, 1], [11, 1], [11, 1], [37, 1], [37, 2], [40, 1], [40, 1], [40, 1], [40, 1], [40, 1], [40, 1], [40, 1], [40, 1], [40, 1], [40, 1]],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) {\n var $0 = $$.length - 1;\n switch (yystate) {\n case 5:\n yy.setOrientation($$[$0]);\n break;\n case 9:\n yy.setDiagramTitle($$[$0].text.trim());\n break;\n case 12:\n yy.setLineData({ text: \"\", type: \"text\" }, $$[$0]);\n break;\n case 13:\n yy.setLineData($$[$0 - 1], $$[$0]);\n break;\n case 14:\n yy.setBarData({ text: \"\", type: \"text\" }, $$[$0]);\n break;\n case 15:\n yy.setBarData($$[$0 - 1], $$[$0]);\n break;\n case 16:\n this.$ = $$[$0].trim();\n yy.setAccTitle(this.$);\n break;\n case 17:\n case 18:\n this.$ = $$[$0].trim();\n yy.setAccDescription(this.$);\n break;\n case 19:\n this.$ = $$[$0 - 1];\n break;\n case 20:\n this.$ = [Number($$[$0 - 2]), ...$$[$0]];\n break;\n case 21:\n this.$ = [Number($$[$0])];\n break;\n case 22:\n yy.setXAxisTitle($$[$0]);\n break;\n case 23:\n yy.setXAxisTitle($$[$0 - 1]);\n break;\n case 24:\n yy.setXAxisTitle({ type: \"text\", text: \"\" });\n break;\n case 25:\n yy.setXAxisBand($$[$0]);\n break;\n case 26:\n yy.setXAxisRangeData(Number($$[$0 - 2]), Number($$[$0]));\n break;\n case 27:\n this.$ = $$[$0 - 1];\n break;\n case 28:\n this.$ = [$$[$0 - 2], ...$$[$0]];\n break;\n case 29:\n this.$ = [$$[$0]];\n break;\n case 30:\n yy.setYAxisTitle($$[$0]);\n break;\n case 31:\n yy.setYAxisTitle($$[$0 - 1]);\n break;\n case 32:\n yy.setYAxisTitle({ type: \"text\", text: \"\" });\n break;\n case 33:\n yy.setYAxisRangeData(Number($$[$0 - 2]), Number($$[$0]));\n break;\n case 37:\n this.$ = { text: $$[$0], type: \"text\" };\n break;\n case 38:\n this.$ = { text: $$[$0], type: \"text\" };\n break;\n case 39:\n this.$ = { text: $$[$0], type: \"markdown\" };\n break;\n case 40:\n this.$ = $$[$0];\n break;\n case 41:\n this.$ = $$[$0 - 1] + \"\" + $$[$0];\n break;\n }\n },\n table: [o($V0, $V1, { 3: 1, 4: 2, 7: 4, 5: $V2, 34: $V3, 35: $V4, 36: $V5 }), { 1: [3] }, o($V0, $V1, { 4: 2, 7: 4, 3: 8, 5: $V2, 34: $V3, 35: $V4, 36: $V5 }), o($V0, $V1, { 4: 2, 7: 4, 6: 9, 3: 10, 5: $V2, 8: [1, 11], 34: $V3, 35: $V4, 36: $V5 }), { 1: [2, 4], 9: 12, 10: [1, 13], 12: [1, 14], 14: [1, 15], 16: [1, 16], 18: [1, 17], 19: [1, 18], 21: [1, 19], 23: [1, 20] }, o($V6, [2, 34]), o($V6, [2, 35]), o($V6, [2, 36]), { 1: [2, 1] }, o($V0, $V1, { 4: 2, 7: 4, 3: 21, 5: $V2, 34: $V3, 35: $V4, 36: $V5 }), { 1: [2, 3] }, o($V6, [2, 5]), o($V0, [2, 7], { 4: 22, 34: $V3, 35: $V4, 36: $V5 }), { 11: 23, 37: 24, 38: $V7, 39: $V8, 40: 27, 41: $V9, 42: $Va, 43: $Vb, 44: $Vc, 45: $Vd, 46: $Ve, 47: $Vf, 48: $Vg, 49: $Vh, 50: $Vi }, { 11: 39, 13: 38, 24: $Vj, 27: $Vk, 29: 40, 30: 41, 37: 24, 38: $V7, 39: $V8, 40: 27, 41: $V9, 42: $Va, 43: $Vb, 44: $Vc, 45: $Vd, 46: $Ve, 47: $Vf, 48: $Vg, 49: $Vh, 50: $Vi }, { 11: 45, 15: 44, 27: $Vl, 33: 46, 37: 24, 38: $V7, 39: $V8, 40: 27, 41: $V9, 42: $Va, 43: $Vb, 44: $Vc, 45: $Vd, 46: $Ve, 47: $Vf, 48: $Vg, 49: $Vh, 50: $Vi }, { 11: 49, 17: 48, 24: $Vm, 37: 24, 38: $V7, 39: $V8, 40: 27, 41: $V9, 42: $Va, 43: $Vb, 44: $Vc, 45: $Vd, 46: $Ve, 47: $Vf, 48: $Vg, 49: $Vh, 50: $Vi }, { 11: 52, 17: 51, 24: $Vm, 37: 24, 38: $V7, 39: $V8, 40: 27, 41: $V9, 42: $Va, 43: $Vb, 44: $Vc, 45: $Vd, 46: $Ve, 47: $Vf, 48: $Vg, 49: $Vh, 50: $Vi }, { 20: [1, 53] }, { 22: [1, 54] }, o($Vn, [2, 18]), { 1: [2, 2] }, o($Vn, [2, 8]), o($Vn, [2, 9]), o($Vo, [2, 37], { 40: 55, 41: $V9, 42: $Va, 43: $Vb, 44: $Vc, 45: $Vd, 46: $Ve, 47: $Vf, 48: $Vg, 49: $Vh, 50: $Vi }), o($Vo, [2, 38]), o($Vo, [2, 39]), o($Vp, [2, 40]), o($Vp, [2, 42]), o($Vp, [2, 43]), o($Vp, [2, 44]), o($Vp, [2, 45]), o($Vp, [2, 46]), o($Vp, [2, 47]), o($Vp, [2, 48]), o($Vp, [2, 49]), o($Vp, [2, 50]), o($Vp, [2, 51]), o($Vn, [2, 10]), o($Vn, [2, 22], { 30: 41, 29: 56, 24: $Vj, 27: $Vk }), o($Vn, [2, 24]), o($Vn, [2, 25]), { 31: [1, 57] }, { 11: 59, 32: 58, 37: 24, 38: $V7, 39: $V8, 40: 27, 41: $V9, 42: $Va, 43: $Vb, 44: $Vc, 45: $Vd, 46: $Ve, 47: $Vf, 48: $Vg, 49: $Vh, 50: $Vi }, o($Vn, [2, 11]), o($Vn, [2, 30], { 33: 60, 27: $Vl }), o($Vn, [2, 32]), { 31: [1, 61] }, o($Vn, [2, 12]), { 17: 62, 24: $Vm }, { 25: 63, 27: $Vq }, o($Vn, [2, 14]), { 17: 65, 24: $Vm }, o($Vn, [2, 16]), o($Vn, [2, 17]), o($Vp, [2, 41]), o($Vn, [2, 23]), { 27: [1, 66] }, { 26: [1, 67] }, { 26: [2, 29], 28: [1, 68] }, o($Vn, [2, 31]), { 27: [1, 69] }, o($Vn, [2, 13]), { 26: [1, 70] }, { 26: [2, 21], 28: [1, 71] }, o($Vn, [2, 15]), o($Vn, [2, 26]), o($Vn, [2, 27]), { 11: 59, 32: 72, 37: 24, 38: $V7, 39: $V8, 40: 27, 41: $V9, 42: $Va, 43: $Vb, 44: $Vc, 45: $Vd, 46: $Ve, 47: $Vf, 48: $Vg, 49: $Vh, 50: $Vi }, o($Vn, [2, 33]), o($Vn, [2, 19]), { 25: 73, 27: $Vq }, { 26: [2, 28] }, { 26: [2, 20] }],\n defaultActions: { 8: [2, 1], 10: [2, 3], 21: [2, 2], 72: [2, 28], 73: [2, 20] },\n parseError: 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 },\n parse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = \"\", yylineno = 0, yyleng = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer2 = 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 lexer2.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer2;\n sharedState.yy.parser = this;\n if (typeof lexer2.yylloc == \"undefined\") {\n lexer2.yylloc = {};\n }\n var yyloc = lexer2.yylloc;\n lstack.push(yyloc);\n var ranges = lexer2.options && lexer2.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 lex() {\n var token;\n token = tstack.pop() || lexer2.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, state, action, 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 (lexer2.showPosition) {\n errStr = \"Parse error on line \" + (yylineno + 1) + \":\\n\" + lexer2.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: lexer2.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer2.yylineno,\n loc: yyloc,\n 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(lexer2.yytext);\n lstack.push(lexer2.yylloc);\n stack.push(action[1]);\n symbol = null;\n {\n yyleng = lexer2.yyleng;\n yytext = lexer2.yytext;\n yylineno = lexer2.yylineno;\n yyloc = lexer2.yylloc;\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 var lexer = function() {\n var lexer2 = {\n EOF: 1,\n parseError: 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 // resets the lexer, sets new input\n setInput: 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 // consumes and returns one char from the input\n input: 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 this._input = this._input.slice(1);\n return ch;\n },\n // unshifts one char (or a string) into the input\n unput: function(ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - 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 if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\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 ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len\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 // When called from action, caches matched text and appends it on next action\n more: function() {\n this._more = true;\n return this;\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.\n reject: 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 return this;\n },\n // retain first n characters of the match\n less: function(n) {\n this.unput(this.match.slice(n));\n },\n // displays already matched input, i.e. for error messages\n pastInput: 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 // displays upcoming input, i.e. for error messages\n upcomingInput: 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 // displays the character position where the lexing error occurred, i.e. for error messages\n showPosition: function() {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n // test the lexed token: return FALSE when not a match, otherwise return token\n test_match: function(match, indexed_rule) {\n var token, lines, backup;\n if (this.options.backtrack_lexer) {\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 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 ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length : 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 for (var k in backup) {\n this[k] = backup[k];\n }\n return false;\n }\n return false;\n },\n // return next match in input\n next: function() {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n var token, match, tempMatch, 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;\n } else {\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 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 // return next match that has a token\n lex: function lex() {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\n begin: function begin(condition) {\n this.conditionStack.push(condition);\n },\n // pop the previously active lexer condition state off the condition stack\n popState: 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 // 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 // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\n topState: 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 // alias for begin(condition)\n pushState: function pushState(condition) {\n this.begin(condition);\n },\n // return the number of states currently on the stack\n stateStackSize: function stateStackSize() {\n return this.conditionStack.length;\n },\n options: { \"case-insensitive\": true },\n performAction: function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) {\n switch ($avoiding_name_collisions) {\n case 0:\n break;\n case 1:\n break;\n case 2:\n this.popState();\n return 34;\n case 3:\n this.popState();\n return 34;\n case 4:\n return 34;\n case 5:\n break;\n case 6:\n return 10;\n case 7:\n this.pushState(\"acc_title\");\n return 19;\n case 8:\n this.popState();\n return \"acc_title_value\";\n case 9:\n this.pushState(\"acc_descr\");\n return 21;\n case 10:\n this.popState();\n return \"acc_descr_value\";\n case 11:\n this.pushState(\"acc_descr_multiline\");\n break;\n case 12:\n this.popState();\n break;\n case 13:\n return \"acc_descr_multiline_value\";\n case 14:\n return 5;\n case 15:\n return 8;\n case 16:\n this.pushState(\"axis_data\");\n return \"X_AXIS\";\n case 17:\n this.pushState(\"axis_data\");\n return \"Y_AXIS\";\n case 18:\n this.pushState(\"axis_band_data\");\n return 24;\n case 19:\n return 31;\n case 20:\n this.pushState(\"data\");\n return 16;\n case 21:\n this.pushState(\"data\");\n return 18;\n case 22:\n this.pushState(\"data_inner\");\n return 24;\n case 23:\n return 27;\n case 24:\n this.popState();\n return 26;\n case 25:\n this.popState();\n break;\n case 26:\n this.pushState(\"string\");\n break;\n case 27:\n this.popState();\n break;\n case 28:\n return \"STR\";\n case 29:\n return 24;\n case 30:\n return 26;\n case 31:\n return 43;\n case 32:\n return \"COLON\";\n case 33:\n return 44;\n case 34:\n return 28;\n case 35:\n return 45;\n case 36:\n return 46;\n case 37:\n return 48;\n case 38:\n return 50;\n case 39:\n return 47;\n case 40:\n return 41;\n case 41:\n return 49;\n case 42:\n return 42;\n case 43:\n break;\n case 44:\n return 35;\n case 45:\n return 36;\n }\n },\n rules: [/^(?:%%(?!\\{)[^\\n]*)/i, /^(?:[^\\}]%%[^\\n]*)/i, /^(?:(\\r?\\n))/i, /^(?:(\\r?\\n))/i, /^(?:[\\n\\r]+)/i, /^(?:%%[^\\n]*)/i, /^(?:title\\b)/i, /^(?:accTitle\\s*:\\s*)/i, /^(?:(?!\\n||)*[^\\n]*)/i, /^(?:accDescr\\s*:\\s*)/i, /^(?:(?!\\n||)*[^\\n]*)/i, /^(?:accDescr\\s*\\{\\s*)/i, /^(?:\\{)/i, /^(?:[^\\}]*)/i, /^(?:xychart-beta\\b)/i, /^(?:(?:vertical|horizontal))/i, /^(?:x-axis\\b)/i, /^(?:y-axis\\b)/i, /^(?:\\[)/i, /^(?:-->)/i, /^(?:line\\b)/i, /^(?:bar\\b)/i, /^(?:\\[)/i, /^(?:[+-]?(?:\\d+(?:\\.\\d+)?|\\.\\d+))/i, /^(?:\\])/i, /^(?:(?:`\\) \\{ this\\.pushState\\(md_string\\); \\}\\n<md_string>\\(\\?:\\(\\?!`\"\\)\\.\\)\\+ \\{ return MD_STR; \\}\\n<md_string>\\(\\?:`))/i, /^(?:[\"])/i, /^(?:[\"])/i, /^(?:[^\"]*)/i, /^(?:\\[)/i, /^(?:\\])/i, /^(?:[A-Za-z]+)/i, /^(?::)/i, /^(?:\\+)/i, /^(?:,)/i, /^(?:=)/i, /^(?:\\*)/i, /^(?:#)/i, /^(?:[\\_])/i, /^(?:\\.)/i, /^(?:&)/i, /^(?:-)/i, /^(?:[0-9]+)/i, /^(?:\\s+)/i, /^(?:;)/i, /^(?:$)/i],\n conditions: { \"data_inner\": { \"rules\": [0, 1, 4, 5, 6, 7, 9, 11, 14, 15, 16, 17, 20, 21, 23, 24, 25, 26, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45], \"inclusive\": true }, \"data\": { \"rules\": [0, 1, 3, 4, 5, 6, 7, 9, 11, 14, 15, 16, 17, 20, 21, 22, 25, 26, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45], \"inclusive\": true }, \"axis_band_data\": { \"rules\": [0, 1, 4, 5, 6, 7, 9, 11, 14, 15, 16, 17, 20, 21, 24, 25, 26, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45], \"inclusive\": true }, \"axis_data\": { \"rules\": [0, 1, 2, 4, 5, 6, 7, 9, 11, 14, 15, 16, 17, 18, 19, 20, 21, 23, 25, 26, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45], \"inclusive\": true }, \"acc_descr_multiline\": { \"rules\": [12, 13], \"inclusive\": false }, \"acc_descr\": { \"rules\": [10], \"inclusive\": false }, \"acc_title\": { \"rules\": [8], \"inclusive\": false }, \"title\": { \"rules\": [], \"inclusive\": false }, \"md_string\": { \"rules\": [], \"inclusive\": false }, \"string\": { \"rules\": [27, 28], \"inclusive\": false }, \"INITIAL\": { \"rules\": [0, 1, 4, 5, 6, 7, 9, 11, 14, 15, 16, 17, 20, 21, 25, 26, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45], \"inclusive\": true } }\n };\n return lexer2;\n }();\n parser2.lexer = lexer;\n function Parser() {\n this.yy = {};\n }\n Parser.prototype = parser2;\n parser2.Parser = Parser;\n return new Parser();\n}();\nparser.parser = parser;\nconst parser$1 = parser;\nfunction isBarPlot(data) {\n return data.type === \"bar\";\n}\nfunction isBandAxisData(data) {\n return data.type === \"band\";\n}\nfunction isLinearAxisData(data) {\n return data.type === \"linear\";\n}\nclass TextDimensionCalculatorWithFont {\n constructor(parentGroup) {\n this.parentGroup = parentGroup;\n }\n getMaxDimension(texts, fontSize) {\n if (!this.parentGroup) {\n return {\n width: texts.reduce((acc, cur) => Math.max(cur.length, acc), 0) * fontSize,\n height: fontSize\n };\n }\n const dimension = {\n width: 0,\n height: 0\n };\n const elem = this.parentGroup.append(\"g\").attr(\"visibility\", \"hidden\").attr(\"font-size\", fontSize);\n for (const t of texts) {\n const bbox = computeDimensionOfText(elem, 1, t);\n const width = bbox ? bbox.width : t.length * fontSize;\n const height = bbox ? bbox.height : fontSize;\n dimension.width = Math.max(dimension.width, width);\n dimension.height = Math.max(dimension.height, height);\n }\n elem.remove();\n return dimension;\n }\n}\nconst BAR_WIDTH_TO_TICK_WIDTH_RATIO = 0.7;\nconst MAX_OUTER_PADDING_PERCENT_FOR_WRT_LABEL = 0.2;\nclass BaseAxis {\n constructor(axisConfig, title, textDimensionCalculator, axisThemeConfig) {\n this.axisConfig = axisConfig;\n this.title = title;\n this.textDimensionCalculator = textDimensionCalculator;\n this.axisThemeConfig = axisThemeConfig;\n this.boundingRect = { x: 0, y: 0, width: 0, height: 0 };\n this.axisPosition = \"left\";\n this.showTitle = false;\n this.showLabel = false;\n this.showTick = false;\n this.showAxisLine = false;\n this.outerPadding = 0;\n this.titleTextHeight = 0;\n this.labelTextHeight = 0;\n this.range = [0, 10];\n this.boundingRect = { x: 0, y: 0, width: 0, height: 0 };\n this.axisPosition = \"left\";\n }\n setRange(range) {\n this.range = range;\n if (this.axisPosition === \"left\" || this.axisPosition === \"right\") {\n this.boundingRect.height = range[1] - range[0];\n } else {\n this.boundingRect.width = range[1] - range[0];\n }\n this.recalculateScale();\n }\n getRange() {\n return [this.range[0] + this.outerPadding, this.range[1] - this.outerPadding];\n }\n setAxisPosition(axisPosition) {\n this.axisPosition = axisPosition;\n this.setRange(this.range);\n }\n getTickDistance() {\n const range = this.getRange();\n return Math.abs(range[0] - range[1]) / this.getTickValues().length;\n }\n getAxisOuterPadding() {\n return this.outerPadding;\n }\n getLabelDimension() {\n return this.textDimensionCalculator.getMaxDimension(\n this.getTickValues().map((tick) => tick.toString()),\n this.axisConfig.labelFontSize\n );\n }\n recalculateOuterPaddingToDrawBar() {\n if (BAR_WIDTH_TO_TICK_WIDTH_RATIO * this.getTickDistance() > this.outerPadding * 2) {\n this.outerPadding = Math.floor(BAR_WIDTH_TO_TICK_WIDTH_RATIO * this.getTickDistance() / 2);\n }\n this.recalculateScale();\n }\n calculateSpaceIfDrawnHorizontally(availableSpace) {\n let availableHeight = availableSpace.height;\n if (this.axisConfig.showAxisLine && availableHeight > this.axisConfig.axisLineWidth) {\n availableHeight -= this.axisConfig.axisLineWidth;\n this.showAxisLine = true;\n }\n if (this.axisConfig.showLabel) {\n const spaceRequired = this.getLabelDimension();\n const maxPadding = MAX_OUTER_PADDING_PERCENT_FOR_WRT_LABEL * availableSpace.width;\n this.outerPadding = Math.min(spaceRequired.width / 2, maxPadding);\n const heightRequired = spaceRequired.height + this.axisConfig.labelPadding * 2;\n this.labelTextHeight = spaceRequired.height;\n if (heightRequired <= availableHeight) {\n availableHeight -= heightRequired;\n this.showLabel = true;\n }\n }\n if (this.axisConfig.showTick && availableHeight >= this.axisConfig.tickLength) {\n this.showTick = true;\n availableHeight -= this.axisConfig.tickLength;\n }\n if (this.axisConfig.showTitle && this.title) {\n const spaceRequired = this.textDimensionCalculator.getMaxDimension(\n [this.title],\n this.axisConfig.titleFontSize\n );\n const heightRequired = spaceRequired.height + this.axisConfig.titlePadding * 2;\n this.titleTextHeight = spaceRequired.height;\n if (heightRequired <= availableHeight) {\n availableHeight -= heightRequired;\n this.showTitle = true;\n }\n }\n this.boundingRect.width = availableSpace.width;\n this.boundingRect.height = availableSpace.height - availableHeight;\n }\n calculateSpaceIfDrawnVertical(availableSpace) {\n let availableWidth = availableSpace.width;\n if (this.axisConfig.showAxisLine && availableWidth > this.axisConfig.axisLineWidth) {\n availableWidth -= this.axisConfig.axisLineWidth;\n this.showAxisLine = true;\n }\n if (this.axisConfig.showLabel) {\n const spaceRequired = this.getLabelDimension();\n const maxPadding = MAX_OUTER_PADDING_PERCENT_FOR_WRT_LABEL * availableSpace.height;\n this.outerPadding = Math.min(spaceRequired.height / 2, maxPadding);\n const widthRequired = spaceRequired.width + this.axisConfig.labelPadding * 2;\n if (widthRequired <= availableWidth) {\n availableWidth -= widthRequired;\n this.showLabel = true;\n }\n }\n if (this.axisConfig.showTick && availableWidth >= this.axisConfig.tickLength) {\n this.showTick = true;\n availableWidth -= this.axisConfig.tickLength;\n }\n if (this.axisConfig.showTitle && this.title) {\n const spaceRequired = this.textDimensionCalculator.getMaxDimension(\n [this.title],\n this.axisConfig.titleFontSize\n );\n const widthRequired = spaceRequired.height + this.axisConfig.titlePadding * 2;\n this.titleTextHeight = spaceRequired.height;\n if (widthRequired <= availableWidth) {\n availableWidth -= widthRequired;\n this.showTitle = true;\n }\n }\n this.boundingRect.width = availableSpace.width - availableWidth;\n this.boundingRect.height = availableSpace.height;\n }\n calculateSpace(availableSpace) {\n if (this.axisPosition === \"left\" || this.axisPosition === \"right\") {\n this.calculateSpaceIfDrawnVertical(availableSpace);\n } else {\n this.calculateSpaceIfDrawnHorizontally(availableSpace);\n }\n this.recalculateScale();\n return {\n width: this.boundingRect.width,\n height: this.boundingRect.height\n };\n }\n setBoundingBoxXY(point) {\n this.boundingRect.x = point.x;\n this.boundingRect.y = point.y;\n }\n getDrawableElementsForLeftAxis() {\n const drawableElement = [];\n if (this.showAxisLine) {\n const x = this.boundingRect.x + this.boundingRect.width - this.axisConfig.axisLineWidth / 2;\n drawableElement.push({\n type: \"path\",\n groupTexts: [\"left-axis\", \"axisl-line\"],\n data: [\n {\n path: `M ${x},${this.boundingRect.y} L ${x},${this.boundingRect.y + this.boundingRect.height} `,\n strokeFill: this.axisThemeConfig.axisLineColor,\n strokeWidth: this.axisConfig.axisLineWidth\n }\n ]\n });\n }\n if (this.showLabel) {\n drawableElement.push({\n type: \"text\",\n groupTexts: [\"left-axis\", \"label\"],\n data: this.getTickValues().map((tick) => ({\n text: tick.toString(),\n x: this.boundingRect.x + this.boundingRect.width - (this.showLabel ? this.axisConfig.labelPadding : 0) - (this.showTick ? this.axisConfig.tickLength : 0) - (this.showAxisLine ? this.axisConfig.axisLineWidth : 0),\n y: this.getScaleValue(tick),\n fill: this.axisThemeConfig.labelColor,\n fontSize: this.axisConfig.labelFontSize,\n rotation: 0,\n verticalPos: \"middle\",\n horizontalPos: \"right\"\n }))\n });\n }\n if (this.showTick) {\n const x = this.boundingRect.x + this.boundingRect.width - (this.showAxisLine ? this.axisConfig.axisLineWidth : 0);\n drawableElement.push({\n type: \"path\",\n groupTexts: [\"left-axis\", \"ticks\"],\n data: this.getTickValues().map((tick) => ({\n path: `M ${x},${this.getScaleValue(tick)} L ${x - this.axisConfig.tickLength},${this.getScaleValue(tick)}`,\n strokeFill: this.axisThemeConfig.tickColor,\n strokeWidth: this.axisConfig.tickWidth\n }))\n });\n }\n if (this.showTitle) {\n drawableElement.push({\n type: \"text\",\n groupTexts: [\"left-axis\", \"title\"],\n data: [\n {\n text: this.title,\n x: this.boundingRect.x + this.axisConfig.titlePadding,\n y: this.boundingRect.y + this.boundingRect.height / 2,\n fill: this.axisThemeConfig.titleColor,\n fontSize: this.axisConfig.titleFontSize,\n rotation: 270,\n verticalPos: \"top\",\n horizontalPos: \"center\"\n }\n ]\n });\n }\n return drawableElement;\n }\n getDrawableElementsForBottomAxis() {\n const drawableElement = [];\n if (this.showAxisLine) {\n const y = this.boundingRect.y + this.axisConfig.axisLineWidth / 2;\n drawableElement.push({\n type: \"path\",\n groupTexts: [\"bottom-axis\", \"axis-line\"],\n data: [\n {\n path: `M ${this.boundingRect.x},${y} L ${this.boundingRect.x + this.boundingRect.width},${y}`,\n strokeFill: this.axisThemeConfig.axisLineColor,\n strokeWidth: this.axisConfig.axisLineWidth\n }\n ]\n });\n }\n if (this.showLabel) {\n drawableElement.push({\n type: \"text\",\n groupTexts: [\"bottom-axis\", \"label\"],\n data: this.getTickValues().map((tick) => ({\n text: tick.toString(),\n x: this.getScaleValue(tick),\n y: this.boundingRect.y + this.axisConfig.labelPadding + (this.showTick ? this.axisConfig.tickLength : 0) + (this.showAxisLine ? this.axisConfig.axisLineWidth : 0),\n fill: this.axisThemeConfig.labelColor,\n fontSize: this.axisConfig.labelFontSize,\n rotation: 0,\n verticalPos: \"top\",\n horizontalPos: \"center\"\n }))\n });\n }\n if (this.showTick) {\n const y = this.boundingRect.y + (this.showAxisLine ? this.axisConfig.axisLineWidth : 0);\n drawableElement.push({\n type: \"path\",\n groupTexts: [\"bottom-axis\", \"ticks\"],\n data: this.getTickValues().map((tick) => ({\n path: `M ${this.getScaleValue(tick)},${y} L ${this.getScaleValue(tick)},${y + this.axisConfig.tickLength}`,\n strokeFill: this.axisThemeConfig.tickColor,\n strokeWidth: this.axisConfig.tickWidth\n }))\n });\n }\n if (this.showTitle) {\n drawableElement.push({\n type: \"text\",\n groupTexts: [\"bottom-axis\", \"title\"],\n data: [\n {\n text: this.title,\n x: this.range[0] + (this.range[1] - this.range[0]) / 2,\n y: this.boundingRect.y + this.boundingRect.height - this.axisConfig.titlePadding - this.titleTextHeight,\n fill: this.axisThemeConfig.titleColor,\n fontSize: this.axisConfig.titleFontSize,\n rotation: 0,\n verticalPos: \"top\",\n horizontalPos: \"center\"\n }\n ]\n });\n }\n return drawableElement;\n }\n getDrawableElementsForTopAxis() {\n const drawableElement = [];\n if (this.showAxisLine) {\n const y = this.boundingRect.y + this.boundingRect.height - this.axisConfig.axisLineWidth / 2;\n drawableElement.push({\n type: \"path\",\n groupTexts: [\"top-axis\", \"axis-line\"],\n data: [\n {\n path: `M ${this.boundingRect.x},${y} L ${this.boundingRect.x + this.boundingRect.width},${y}`,\n strokeFill: this.axisThemeConfig.axisLineColor,\n strokeWidth: this.axisConfig.axisLineWidth\n }\n ]\n });\n }\n if (this.showLabel) {\n drawableElement.push({\n type: \"text\",\n groupTexts: [\"top-axis\", \"label\"],\n data: this.getTickValues().map((tick) => ({\n text: tick.toString(),\n x: this.getScaleValue(tick),\n y: this.boundingRect.y + (this.showTitle ? this.titleTextHeight + this.axisConfig.titlePadding * 2 : 0) + this.axisConfig.labelPadding,\n fill: this.axisThemeConfig.labelColor,\n fontSize: this.axisConfig.labelFontSize,\n rotation: 0,\n verticalPos: \"top\",\n horizontalPos: \"center\"\n }))\n });\n }\n if (this.showTick) {\n const y = this.boundingRect.y;\n drawableElement.push({\n type: \"path\",\n groupTexts: [\"top-axis\", \"ticks\"],\n data: this.getTickValues().map((tick) => ({\n path: `M ${this.getScaleValue(tick)},${y + this.boundingRect.height - (this.showAxisLine ? this.axisConfig.axisLineWidth : 0)} L ${this.getScaleValue(tick)},${y + this.boundingRect.height - this.axisConfig.tickLength - (this.showAxisLine ? this.axisConfig.axisLineWidth : 0)}`,\n strokeFill: this.axisThemeConfig.tickColor,\n strokeWidth: this.axisConfig.tickWidth\n }))\n });\n }\n if (this.showTitle) {\n drawableElement.push({\n type: \"text\",\n groupTexts: [\"top-axis\", \"title\"],\n data: [\n {\n text: this.title,\n x: this.boundingRect.x + this.boundingRect.width / 2,\n y: this.boundingRect.y + this.axisConfig.titlePadding,\n fill: this.axisThemeConfig.titleColor,\n fontSize: this.axisConfig.titleFontSize,\n rotation: 0,\n verticalPos: \"top\",\n horizontalPos: \"center\"\n }\n ]\n });\n }\n return drawableElement;\n }\n getDrawableElements() {\n if (this.axisPosition === \"left\") {\n return this.getDrawableElementsForLeftAxis();\n }\n if (this.axisPosition === \"right\") {\n throw Error(\"Drawing of right axis is not implemented\");\n }\n if (this.axisPosition === \"bottom\") {\n return this.getDrawableElementsForBottomAxis();\n }\n if (this.axisPosition === \"top\") {\n return this.getDrawableElementsForTopAxis();\n }\n return [];\n }\n}\nclass BandAxis extends BaseAxis {\n constructor(axisConfig, axisThemeConfig, categories, title, textDimensionCalculator) {\n super(axisConfig, title, textDimensionCalculator, axisThemeConfig);\n this.categories = categories;\n this.scale = scaleBand().domain(this.categories).range(this.getRange());\n }\n setRange(range) {\n super.setRange(range);\n }\n recalculateScale() {\n this.scale = scaleBand().domain(this.categories).range(this.getRange()).paddingInner(1).paddingOuter(0).align(0.5);\n log.trace(\"BandAxis axis final categories, range: \", this.categories, this.getRange());\n }\n getTickValues() {\n return this.categories;\n }\n getScaleValue(value) {\n return this.scale(value) || this.getRange()[0];\n }\n}\nclass LinearAxis extends BaseAxis {\n constructor(axisConfig, axisThemeConfig, domain, title, textDimensionCalculator) {\n super(axisConfig, title, textDimensionCalculator, axisThemeConfig);\n this.domain = domain;\n this.scale = scaleLinear().domain(this.domain).range(this.getRange());\n }\n getTickValues() {\n return this.scale.ticks();\n }\n recalculateScale() {\n const domain = [...this.domain];\n if (this.axisPosition === \"left\") {\n domain.reverse();\n }\n this.scale = scaleLinear().domain(domain).range(this.getRange());\n }\n getScaleValue(value) {\n return this.scale(value);\n }\n}\nfunction getAxis(data, axisConfig, axisThemeConfig, tmpSVGGroup2) {\n const textDimensionCalculator = new TextDimensionCalculatorWithFont(tmpSVGGroup2);\n if (isBandAxisData(data)) {\n return new BandAxis(\n axisConfig,\n axisThemeConfig,\n data.categories,\n data.title,\n textDimensionCalculator\n );\n }\n return new LinearAxis(\n axisConfig,\n axisThemeConfig,\n [data.min, data.max],\n data.title,\n textDimensionCalculator\n );\n}\nclass ChartTitle {\n constructor(textDimensionCalculator, chartConfig, chartData, chartThemeConfig) {\n this.textDimensionCalculator = textDimensionCalculator;\n this.chartConfig = chartConfig;\n this.chartData = chartData;\n this.chartThemeConfig = chartThemeConfig;\n this.boundingRect = {\n x: 0,\n y: 0,\n width: 0,\n height: 0\n };\n this.showChartTitle = false;\n }\n setBoundingBoxXY(point) {\n this.boundingRect.x = point.x;\n this.boundingRect.y = point.y;\n }\n calculateSpace(availableSpace) {\n const titleDimension = this.textDimensionCalculator.getMaxDimension(\n [this.chartData.title],\n this.chartConfig.titleFontSize\n );\n const widthRequired = Math.max(titleDimension.width, availableSpace.width);\n const heightRequired = titleDimension.height + 2 * this.chartConfig.titlePadding;\n if (titleDimension.width <= widthRequired && titleDimension.height <= heightRequired && this.chartConfig.showTitle && this.chartData.title) {\n this.boundingRect.width = widthRequired;\n this.boundingRect.height = heightRequired;\n this.showChartTitle = true;\n }\n return {\n width: this.boundingRect.width,\n height: this.boundingRect.height\n };\n }\n getDrawableElements() {\n const drawableElem = [];\n if (this.showChartTitle) {\n drawableElem.push({\n groupTexts: [\"chart-title\"],\n type: \"text\",\n data: [\n {\n fontSize: this.chartConfig.titleFontSize,\n text: this.chartData.title,\n verticalPos: \"middle\",\n horizontalPos: \"center\",\n x: this.boundingRect.x + this.boundingRect.width / 2,\n y: this.boundingRect.y + this.boundingRect.height / 2,\n fill: this.chartThemeConfig.titleColor,\n rotation: 0\n }\n ]\n });\n }\n return drawableElem;\n }\n}\nfunction getChartTitleComponent(chartConfig, chartData, chartThemeConfig, tmpSVGGroup2) {\n const textDimensionCalculator = new TextDimensionCalculatorWithFont(tmpSVGGroup2);\n return new ChartTitle(textDimensionCalculator, chartConfig, chartData, chartThemeConfig);\n}\nclass LinePlot {\n constructor(plotData, xAxis, yAxis, orientation, plotIndex2) {\n this.plotData = plotData;\n this.xAxis = xAxis;\n this.yAxis = yAxis;\n this.orientation = orientation;\n this.plotIndex = plotIndex2;\n }\n getDrawableElement() {\n const finalData = this.plotData.data.map((d) => [\n this.xAxis.getScaleValue(d[0]),\n this.yAxis.getScaleValue(d[1])\n ]);\n let path;\n if (this.orientation === \"horizontal\") {\n path = line().y((d) => d[0]).x((d) => d[1])(finalData);\n } else {\n path = line().x((d) => d[0]).y((d) => d[1])(finalData);\n }\n if (!path) {\n return [];\n }\n return [\n {\n groupTexts: [\"plot\", `line-plot-${this.plotIndex}`],\n type: \"path\",\n data: [\n {\n path,\n strokeFill: this.plotData.strokeFill,\n strokeWidth: this.plotData.strokeWidth\n }\n ]\n }\n ];\n }\n}\nclass BarPlot {\n constructor(barData, boundingRect, xAxis, yAxis, orientation, plotIndex2) {\n this.barData = barData;\n this.boundingRect = boundingRect;\n this.xAxis = xAxis;\n this.yAxis = yAxis;\n this.orientation = orientation;\n this.plotIndex = plotIndex2;\n }\n getDrawableElement() {\n const finalData = this.barData.data.map((d) => [\n this.xAxis.getScaleValue(d[0]),\n this.yAxis.getScaleValue(d[1])\n ]);\n const barPaddingPercent = 0.05;\n const barWidth = Math.min(this.xAxis.getAxisOuterPadding() * 2, this.xAxis.getTickDistance()) * (1 - barPaddingPercent);\n const barWidthHalf = barWidth / 2;\n if (this.orientation === \"horizontal\") {\n return [\n {\n groupTexts: [\"plot\", `bar-plot-${this.plotIndex}`],\n type: \"rect\",\n data: finalData.map((data) => ({\n x: this.boundingRect.x,\n y: data[0] - barWidthHalf,\n height: barWidth,\n width: data[1] - this.boundingRect.x,\n fill: this.barData.fill,\n strokeWidth: 0,\n strokeFill: this.barData.fill\n }))\n }\n ];\n }\n return [\n {\n groupTexts: [\"plot\", `bar-plot-${this.plotIndex}`],\n type: \"rect\",\n data: finalData.map((data) => ({\n x: data[0] - barWidthHalf,\n y: data[1],\n width: barWidth,\n height: this.boundingRect.y + this.boundingRect.height - data[1],\n fill: this.barData.fill,\n strokeWidth: 0,\n strokeFill: this.barData.fill\n }))\n }\n ];\n }\n}\nclass BasePlot {\n constructor(chartConfig, chartData, chartThemeConfig) {\n this.chartConfig = chartConfig;\n this.chartData = chartData;\n this.chartThemeConfig = chartThemeConfig;\n this.boundingRect = {\n x: 0,\n y: 0,\n width: 0,\n height: 0\n };\n }\n setAxes(xAxis, yAxis) {\n this.xAxis = xAxis;\n this.yAxis = yAxis;\n }\n setBoundingBoxXY(point) {\n this.boundingRect.x = point.x;\n this.boundingRect.y = point.y;\n }\n calculateSpace(availableSpace) {\n this.boundingRect.width = availableSpace.width;\n this.boundingRect.height = availableSpace.height;\n return {\n width: this.boundingRect.width,\n height: this.boundingRect.height\n };\n }\n getDrawableElements() {\n if (!(this.xAxis && this.yAxis)) {\n throw Error(\"Axes must be passed to render Plots\");\n }\n const drawableElem = [];\n for (const [i, plot] of this.chartData.plots.entries()) {\n switch (plot.type) {\n case \"line\":\n {\n const linePlot = new LinePlot(\n plot,\n this.xAxis,\n this.yAxis,\n this.chartConfig.chartOrientation,\n i\n );\n drawableElem.push(...linePlot.getDrawableElement());\n }\n break;\n case \"bar\":\n {\n const barPlot = new BarPlot(\n plot,\n this.boundingRect,\n this.xAxis,\n this.yAxis,\n this.chartConfig.chartOrientation,\n i\n );\n drawableElem.push(...barPlot.getDrawableElement());\n }\n break;\n }\n }\n return drawableElem;\n }\n}\nfunction getPlotComponent(chartConfig, chartData, chartThemeConfig) {\n return new BasePlot(chartConfig, chartData, chartThemeConfig);\n}\nclass Orchestrator {\n constructor(chartConfig, chartData, chartThemeConfig, tmpSVGGroup2) {\n this.chartConfig = chartConfig;\n this.chartData = chartData;\n this.componentStore = {\n title: getChartTitleComponent(chartConfig, chartData, chartThemeConfig, tmpSVGGroup2),\n plot: getPlotComponent(chartConfig, chartData, chartThemeConfig),\n xAxis: getAxis(\n chartData.xAxis,\n chartConfig.xAxis,\n {\n titleColor: chartThemeConfig.xAxisTitleColor,\n labelColor: chartThemeConfig.xAxisLabelColor,\n tickColor: chartThemeConfig.xAxisTickColor,\n axisLineColor: chartThemeConfig.xAxisLineColor\n },\n tmpSVGGroup2\n ),\n yAxis: getAxis(\n chartData.yAxis,\n chartConfig.yAxis,\n {\n titleColor: chartThemeConfig.yAxisTitleColor,\n labelColor: chartThemeConfig.yAxisLabelColor,\n tickColor: chartThemeConfig.yAxisTickColor,\n axisLineColor: chartThemeConfig.yAxisLineColor\n },\n tmpSVGGroup2\n )\n };\n }\n calculateVerticalSpace() {\n let availableWidth = this.chartConfig.width;\n let availableHeight = this.chartConfig.height;\n let plotX = 0;\n let plotY = 0;\n let chartWidth = Math.floor(availableWidth * this.chartConfig.plotReservedSpacePercent / 100);\n let chartHeight = Math.floor(\n availableHeight * this.chartConfig.plotReservedSpacePercent / 100\n );\n let spaceUsed = this.componentStore.plot.calculateSpace({\n width: chartWidth,\n height: chartHeight\n });\n availableWidth -= spaceUsed.width;\n availableHeight -= spaceUsed.height;\n spaceUsed = this.componentStore.title.calculateSpace({\n width: this.chartConfig.width,\n height: availableHeight\n });\n plotY = spaceUsed.height;\n availableHeight -= spaceUsed.height;\n this.componentStore.xAxis.setAxisPosition(\"bottom\");\n spaceUsed = this.componentStore.xAxis.calculateSpace({\n width: availableWidth,\n height: availableHeight\n });\n availableHeight -= spaceUsed.height;\n this.componentStore.yAxis.setAxisPosition(\"left\");\n spaceUsed = this.componentStore.yAxis.calculateSpace({\n width: availableWidth,\n height: availableHeight\n });\n plotX = spaceUsed.width;\n availableWidth -= spaceUsed.width;\n if (availableWidth > 0) {\n chartWidth += availableWidth;\n availableWidth = 0;\n }\n if (availableHeight > 0) {\n chartHeight += availableHeight;\n availableHeight = 0;\n }\n this.componentStore.plot.calculateSpace({\n width: chartWidth,\n height: chartHeight\n });\n this.componentStore.plot.setBoundingBoxXY({ x: plotX, y: plotY });\n this.componentStore.xAxis.setRange([plotX, plotX + chartWidth]);\n this.componentStore.xAxis.setBoundingBoxXY({ x: plotX, y: plotY + chartHeight });\n this.componentStore.yAxis.setRange([plotY, plotY + chartHeight]);\n this.componentStore.yAxis.setBoundingBoxXY({ x: 0, y: plotY });\n if (this.chartData.plots.some((p) => isBarPlot(p))) {\n this.componentStore.xAxis.recalculateOuterPaddingToDrawBar();\n }\n }\n calculateHorizontalSpace() {\n let availableWidth = this.chartConfig.width;\n let availableHeight = this.chartConfig.height;\n let titleYEnd = 0;\n let plotX = 0;\n let plotY = 0;\n let chartWidth = Math.floor(availableWidth * this.chartConfig.plotReservedSpacePercent / 100);\n let chartHeight = Math.floor(\n availableHeight * this.chartConfig.plotReservedSpacePercent / 100\n );\n let spaceUsed = this.componentStore.plot.calculateSpace({\n width: chartWidth,\n height: chartHeight\n });\n availableWidth -= spaceUsed.width;\n availableHeight -= spaceUsed.height;\n spaceUsed = this.componentStore.title.calculateSpace({\n width: this.chartConfig.width,\n height: availableHeight\n });\n titleYEnd = spaceUsed.height;\n availableHeight -= spaceUsed.height;\n this.componentStore.xAxis.setAxisPosition(\"left\");\n spaceUsed = this.componentStore.xAxis.calculateSpace({\n width: availableWidth,\n height: availableHeight\n });\n availableWidth -= spaceUsed.width;\n plotX = spaceUsed.width;\n this.componentStore.yAxis.setAxisPosition(\"top\");\n spaceUsed = this.componentStore.yAxis.calculateSpace({\n width: availableWidth,\n height: availableHeight\n });\n availableHeight -= spaceUsed.height;\n plotY = titleYEnd + spaceUsed.height;\n if (availableWidth > 0) {\n chartWidth += availableWidth;\n availableWidth = 0;\n }\n if (availableHeight > 0) {\n chartHeight += availableHeight;\n availableHeight = 0;\n }\n this.componentStore.plot.calculateSpace({\n width: chartWidth,\n height: chartHeight\n });\n this.componentStore.plot.setBoundingBoxXY({ x: plotX, y: plotY });\n this.componentStore.yAxis.setRange([plotX, plotX + chartWidth]);\n this.componentStore.yAxis.setBoundingBoxXY({ x: plotX, y: titleYEnd });\n this.componentStore.xAxis.setRange([plotY, plotY + chartHeight]);\n this.componentStore.xAxis.setBoundingBoxXY({ x: 0, y: plotY });\n if (this.chartData.plots.some((p) => isBarPlot(p))) {\n this.componentStore.xAxis.recalculateOuterPaddingToDrawBar();\n }\n }\n calculateSpace() {\n if (this.chartConfig.chartOrientation === \"horizontal\") {\n this.calculateHorizontalSpace();\n } else {\n this.calculateVerticalSpace();\n }\n }\n getDrawableElement() {\n this.calculateSpace();\n const drawableElem = [];\n this.componentStore.plot.setAxes(this.componentStore.xAxis, this.componentStore.yAxis);\n for (const component of Object.values(this.componentStore)) {\n drawableElem.push(...component.getDrawableElements());\n }\n return drawableElem;\n }\n}\nclass XYChartBuilder {\n static build(config, chartData, chartThemeConfig, tmpSVGGroup2) {\n const orchestrator = new Orchestrator(config, chartData, chartThemeConfig, tmpSVGGroup2);\n return orchestrator.getDrawableElement();\n }\n}\nlet plotIndex = 0;\nlet tmpSVGGroup;\nlet xyChartConfig = getChartDefaultConfig();\nlet xyChartThemeConfig = getChartDefaultThemeConfig();\nlet xyChartData = getChartDefaultData();\nlet plotColorPalette = xyChartThemeConfig.plotColorPalette.split(\",\").map((color) => color.trim());\nlet hasSetXAxis = false;\nlet hasSetYAxis = false;\nfunction getChartDefaultThemeConfig() {\n const defaultThemeVariables = getThemeVariables();\n const config = getConfig();\n return cleanAndMerge(defaultThemeVariables.xyChart, config.themeVariables.xyChart);\n}\nfunction getChartDefaultConfig() {\n const config = getConfig();\n return cleanAndMerge(\n defaultConfig.xyChart,\n config.xyChart\n );\n}\nfunction getChartDefaultData() {\n return {\n yAxis: {\n type: \"linear\",\n title: \"\",\n min: Infinity,\n max: -Infinity\n },\n xAxis: {\n type: \"band\",\n title: \"\",\n categories: []\n },\n title: \"\",\n plots: []\n };\n}\nfunction textSanitizer(text) {\n const config = getConfig();\n return sanitizeText(text.trim(), config);\n}\nfunction setTmpSVGG(SVGG) {\n tmpSVGGroup = SVGG;\n}\nfunction setOrientation(orientation) {\n if (orientation === \"horizontal\") {\n xyChartConfig.chartOrientation = \"horizontal\";\n } else {\n xyChartConfig.chartOrientation = \"vertical\";\n }\n}\nfunction setXAxisTitle(title) {\n xyChartData.xAxis.title = textSanitizer(title.text);\n}\nfunction setXAxisRangeData(min, max) {\n xyChartData.xAxis = { type: \"linear\", title: xyChartData.xAxis.title, min, max };\n hasSetXAxis = true;\n}\nfunction setXAxisBand(categories) {\n xyChartData.xAxis = {\n type: \"band\",\n title: xyChartData.xAxis.title,\n categories: categories.map((c) => textSanitizer(c.text))\n };\n hasSetXAxis = true;\n}\nfunction setYAxisTitle(title) {\n xyChartData.yAxis.title = textSanitizer(title.text);\n}\nfunction setYAxisRangeData(min, max) {\n xyChartData.yAxis = { type: \"linear\", title: xyChartData.yAxis.title, min, max };\n hasSetYAxis = true;\n}\nfunction setYAxisRangeFromPlotData(data) {\n const minValue = Math.min(...data);\n const maxValue = Math.max(...data);\n const prevMinValue = isLinearAxisData(xyChartData.yAxis) ? xyChartData.yAxis.min : Infinity;\n const prevMaxValue = isLinearAxisData(xyChartData.yAxis) ? xyChartData.yAxis.max : -Infinity;\n xyChartData.yAxis = {\n type: \"linear\",\n title: xyChartData.yAxis.title,\n min: Math.min(prevMinValue, minValue),\n max: Math.max(prevMaxValue, maxValue)\n };\n}\nfunction transformDataWithoutCategory(data) {\n let retData = [];\n if (data.length === 0) {\n return retData;\n }\n if (!hasSetXAxis) {\n const prevMinValue = isLinearAxisData(xyChartData.xAxis) ? xyChartData.xAxis.min : Infinity;\n const prevMaxValue = isLinearAxisData(xyChartData.xAxis) ? xyChartData.xAxis.max : -Infinity;\n setXAxisRangeData(Math.min(prevMinValue, 1), Math.max(prevMaxValue, data.length));\n }\n if (!hasSetYAxis) {\n setYAxisRangeFromPlotData(data);\n }\n if (isBandAxisData(xyChartData.xAxis)) {\n retData = xyChartData.xAxis.categories.map((c, i) => [c, data[i]]);\n }\n if (isLinearAxisData(xyChartData.xAxis)) {\n const min = xyChartData.xAxis.min;\n const max = xyChartData.xAxis.max;\n const step = (max - min + 1) / data.length;\n const categories = [];\n for (let i = min; i <= max; i += step) {\n categories.push(`${i}`);\n }\n retData = categories.map((c, i) => [c, data[i]]);\n }\n return retData;\n}\nfunction getPlotColorFromPalette(plotIndex2) {\n return plotColorPalette[plotIndex2 === 0 ? 0 : plotIndex2 % plotColorPalette.length];\n}\nfunction setLineData(title, data) {\n const plotData = transformDataWithoutCategory(data);\n xyChartData.plots.push({\n type: \"line\",\n strokeFill: getPlotColorFromPalette(plotIndex),\n strokeWidth: 2,\n data: plotData\n });\n plotIndex++;\n}\nfunction setBarData(title, data) {\n const plotData = transformDataWithoutCategory(data);\n xyChartData.plots.push({\n type: \"bar\",\n fill: getPlotColorFromPalette(plotIndex),\n data: plotData\n });\n plotIndex++;\n}\nfunction getDrawableElem() {\n if (xyChartData.plots.length === 0) {\n throw Error(\"No Plot to render, please provide a plot with some data\");\n }\n xyChartData.title = getDiagramTitle();\n return XYChartBuilder.build(xyChartConfig, xyChartData, xyChartThemeConfig, tmpSVGGroup);\n}\nfunction getChartThemeConfig() {\n return xyChartThemeConfig;\n}\nfunction getChartConfig() {\n return xyChartConfig;\n}\nconst clear = function() {\n clear$1();\n plotIndex = 0;\n xyChartConfig = getChartDefaultConfig();\n xyChartData = getChartDefaultData();\n xyChartThemeConfig = getChartDefaultThemeConfig();\n plotColorPalette = xyChartThemeConfig.plotColorPalette.split(\",\").map((color) => color.trim());\n hasSetXAxis = false;\n hasSetYAxis = false;\n};\nconst db = {\n getDrawableElem,\n clear,\n setAccTitle,\n getAccTitle,\n setDiagramTitle,\n getDiagramTitle,\n getAccDescription,\n setAccDescription,\n setOrientation,\n setXAxisTitle,\n setXAxisRangeData,\n setXAxisBand,\n setYAxisTitle,\n setYAxisRangeData,\n setLineData,\n setBarData,\n setTmpSVGG,\n getChartThemeConfig,\n getChartConfig\n};\nconst draw = (txt, id, _version, diagObj) => {\n const db2 = diagObj.db;\n const themeConfig = db2.getChartThemeConfig();\n const chartConfig = db2.getChartConfig();\n function getDominantBaseLine(horizontalPos) {\n return horizontalPos === \"top\" ? \"text-before-edge\" : \"middle\";\n }\n function getTextAnchor(verticalPos) {\n return verticalPos === \"left\" ? \"start\" : verticalPos === \"right\" ? \"end\" : \"middle\";\n }\n function getTextTransformation(data) {\n return `translate(${data.x}, ${data.y}) rotate(${data.rotation || 0})`;\n }\n log.debug(\"Rendering xychart chart\\n\" + txt);\n const svg = selectSvgElement(id);\n const group = svg.append(\"g\").attr(\"class\", \"main\");\n const background = group.append(\"rect\").attr(\"width\", chartConfig.width).attr(\"height\", chartConfig.height).attr(\"class\", \"background\");\n configureSvgSize(svg, chartConfig.height, chartConfig.width, true);\n svg.attr(\"viewBox\", `0 0 ${chartConfig.width} ${chartConfig.height}`);\n background.attr(\"fill\", themeConfig.backgroundColor);\n db2.setTmpSVGG(svg.append(\"g\").attr(\"class\", \"mermaid-tmp-group\"));\n const shapes = db2.getDrawableElem();\n const groups = {};\n function getGroup(gList) {\n let elem = group;\n let prefix = \"\";\n for (const [i] of gList.entries()) {\n let parent = group;\n if (i > 0 && groups[prefix]) {\n parent = groups[prefix];\n }\n prefix += gList[i];\n elem = groups[prefix];\n if (!elem) {\n elem = groups[prefix] = parent.append(\"g\").attr(\"class\", gList[i]);\n }\n }\n return elem;\n }\n for (const shape of shapes) {\n if (shape.data.length === 0) {\n continue;\n }\n const shapeGroup = getGroup(shape.groupTexts);\n switch (shape.type) {\n case \"rect\":\n shapeGroup.selectAll(\"rect\").data(shape.data).enter().append(\"rect\").attr(\"x\", (data) => data.x).attr(\"y\", (data) => data.y).attr(\"width\", (data) => data.width).attr(\"height\", (data) => data.height).attr(\"fill\", (data) => data.fill).attr(\"stroke\", (data) => data.strokeFill).attr(\"stroke-width\", (data) => data.strokeWidth);\n break;\n case \"text\":\n shapeGroup.selectAll(\"text\").data(shape.data).enter().append(\"text\").attr(\"x\", 0).attr(\"y\", 0).attr(\"fill\", (data) => data.fill).attr(\"font-size\", (data) => data.fontSize).attr(\"dominant-baseline\", (data) => getDominantBaseLine(data.verticalPos)).attr(\"text-anchor\", (data) => getTextAnchor(data.horizontalPos)).attr(\"transform\", (data) => getTextTransformation(data)).text((data) => data.text);\n break;\n case \"path\":\n shapeGroup.selectAll(\"path\").data(shape.data).enter().append(\"path\").attr(\"d\", (data) => data.path).attr(\"fill\", (data) => data.fill ? data.fill : \"none\").attr(\"stroke\", (data) => data.strokeFill).attr(\"stroke-width\", (data) => data.strokeWidth);\n break;\n }\n }\n};\nconst renderer = {\n draw\n};\nconst diagram = {\n parser: parser$1,\n db,\n renderer\n};\nexport {\n diagram\n};\n"],"names":["_a","_b","parser","o","k","v","o2","l","length","$V0","$V1","$V2","$V3","$V4","$V5","$V6","$V7","$V8","$V9","$Va","$Vb","$Vc","$Vd","$Ve","parser2","trace","yy","symbols_","terminals_","productions_","performAction","yytext","yyleng","yylineno","yystate","$$","_$","$0","getLogger","debug","setHierarchy","this","$","concat","edgeTypeStr","label","num","parseInt","spaceId","generateId","id","type","width","children","edgeData","edgeStrToEdgeData","directions","start","end","arrowTypeEnd","arrowTypeStart","typeStr2Type","typeStr","widthInColumns","columns","trim","css","styleClass","stylesStr","table","defaultActions","parseError","str","hash","recoverable","error","Error","parse","input","self","stack","tstack","vstack","lstack","args","slice","call","arguments","lexer2","Object","create","lexer","sharedState","prototype","hasOwnProperty","setInput","yylloc","yyloc","push","ranges","options","getPrototypeOf","symbol","state","action","r","p","len","newState","expected","token","yyval","pop","lex","Array","errStr","showPosition","join","text","match","line","loc","first_line","last_line","first_column","last_column","range","apply","EOF","_input","_more","_backtrack","done","matched","conditionStack","offset","ch","unput","lines","split","substr","oldLines","more","reject","backtrack_lexer","less","n","pastInput","past","replace","upcomingInput","next","pre","c","test_match","indexed_rule","backup","matches","tempMatch","index","rules","_currentRules","i","flex","begin","condition","popState","conditions","topState","Math","abs","pushState","stateStackSize","yy_","$avoiding_name_collisions","YY_START","Parser","parser$1","blockDatabase","edgeList","edgeCount","COLOR_KEYWORD","FILL_KEYWORD","classes","addStyleClass","styleAttributes","styles","textStyles","foundClass","forEach","attrib","fixedAttrib","newStyle2","addStyle2Node","foundBlock","setCssClass","itemIds","cssClassName","trimmedId","populateBlockDatabase","_blockList","parent","blockList","flat","block","newBlock","w","j","newBlock2","blocks","rootBlock","cnt","db$1","getConfig","edgeTypeStr2Type","console","getBlocksFlat","values","getBlocks","getEdges","getBlock","setBlock","getColumns","blockId","getClasses","clear","root","random","toString","fade","color","opacity","channel","g","b","flowStyles","fontFamily","nodeTextColor","textColor","titleColor","mainBkg","nodeBorder","arrowheadColor","lineColor","edgeLabelBackground","clusterBkg","clusterBorder","tertiaryColor","border2","getNodeFromBlock","db2","positioned","_a2","_b2","_c","vertex","classStr","padding2","radius","shape","vertexText","bounds","size","height","x","y","labelStyle","labelText","rx","ry","class","style","intersect","padding","async","calculateBlockSize","elem","node","nodeEl","boundingBox","getBBox","obj","remove","insertBlockPositioned","performOperations","blocks2","operation","calculateBlockPosition","position","Number","isInteger","px","py","floor","getMaxChildSize","maxWidth","maxHeight","child","setBlockSizes","siblingWidth","siblingHeight","_d","_e","_f","_g","_h","_i","_j","_k","childSize","numItems","xSize","ySize","ceil","childWidth","childHeight","max","min","layoutBlocks","_l","_m","_n","_o","_p","_q","widthOfChildren","columnPos","startingPosX","rowPos","width2","halfWidth","findBounds","minX","minY","maxX","maxY","layout","JSON","stringify","diagram","db","renderer","draw","_version","diagObj","securityLevel","conf","sandboxElement","nodes","contentDocument","body","svg","select","bl","blArr","edges","insert","attr","calculateBlockSizes","insertBlocks","multigraph","compound","setGraph","rankdir","nodesep","ranksep","marginx","marginy","setNode","edge","startBlock","endBlock","points","name","originalPath","insertEdges","bounds2","magicFactor","round","useMaxWidth","$Vf","$Vg","$Vh","$Vi","$Vj","$Vk","$Vl","$Vm","$Vn","$Vo","$Vp","$Vq","$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","setDirection","setC4Type","setTitle","substring","setAccDescription","splice","addPersonOrSystemBoundary","addContainerBoundary","addDeploymentNode","popBoundaryParseStack","addPersonOrSystem","addContainer","addComponent","addRel","updateElStyle","updateRelStyle","updateLayoutConfig","unshift","kv","c2","c4ShapeArray","boundaryParseStack","currentBoundaryParse","parentBoundaryParse","boundaries","alias","tags","link","parentBoundary","rels","title","wrapEnabled","c4ShapeInRow$1","c4BoundaryInRow$1","c4Type","getC4ShapeArray","filter","personOrSystem","getBoundaries","boundary","autoWrap","typeC4Shape","descr","sprite","old","find","personOrSystem2","key","value","entries","wrap","boundary2","techn","container","container2","component","component2","nodeType","from","to","rel","rel2","elementName","bgColor","fontColor","borderColor","shadowing","legendText","legendSprite","element","offsetX","offsetY","c4ShapeInRowParam","c4BoundaryInRowParam","c4ShapeInRowValue","c4BoundaryInRowValue","setWrap","wrapSetting","getC4Shape","getC4ShapeKeys","keys","getBoundarys","getCurrentBoundaryParse","getParentBoundaryParse","getRels","getTitle","getC4Type","getC4ShapeInRow","getC4BoundaryInRow","setAccTitle","getAccTitle","getAccDescription","c4","LINETYPE","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","ACTIVE_START","ACTIVE_END","PAR_START","PAR_AND","PAR_END","RECT_START","RECT_END","SOLID_POINT","DOTTED_POINT","ARROWTYPE","FILLED","OPEN","PLACEMENT","LEFTOF","RIGHTOF","OVER","txt","sanitizedText","c4TypeParam","drawRect","rectData","d","drawImage","imageElem","append","sanitizedLink","startsWith","getC4ShapeFont","cnf","fontSize","fontWeight","_drawTextCandidateFunc","byText","content","textAttrs","_setTextAttrs","byTspan","conf2","lineBreakRegex","dy","byFo","s","toText","fromTextAttrsDict","textPlacement","svgDraw","boundaryElem","fillColor","strokeColor","attrsValue","fill","stroke","attrs","boundaryConf","boundaryFont","Y","c4Shape","personImg","c4ShapeElem","rect","replaceAll","c4ShapeFontConf","image","textFontConf","personFont","rels2","relsElem","url","startPoint","endPoint","messageConf","messageFont","messageFontSize","marker","globalBoundaryMaxX","globalBoundaryMaxY","c4ShapeInRow","c4BoundaryInRow","Bounds","constructor","data","startx","stopx","starty","stopy","widthLimit","nextData","setConf","setData","updateVal","val","fun","_startx","margin","_stopx","_starty","_stopy","nextLinePaddingX","init","bumpLastMargin","personFontFamily","systemFontFamily","messageFontFamily","personFontSize","systemFontSize","personFontWeight","systemFontWeight","messageFontWeight","c4ShapeFont","boundaryFontFamily","boundaryFontSize","boundaryFontWeight","calcC4ShapeTextWH","textType","c4ShapeTextWrap","textConf","textLimitWidth","textLines","lineHeight","drawBoundary","diagram2","c4ShapeMargin","boundaryTextWrap","boundaryLabelConf","drawC4ShapeArray","currentBounds","c4ShapeArray2","c4ShapeKeys","c4ShapeKey","c4ShapeTypeConf","c4ShapePadding","c4ShapeLabelConf","rectHeight","rectWidth","Point","getIntersectPoint","fromNode","x1","y1","x2","y2","fromCenterX","fromCenterY","dx","tanDYX","fromDYX","returnPoint","getIntersectPoints","endNode","endIntersectPoint","drawInsideBoundary","parentBoundaryAlias","parentBounds","currentBoundaries","currentBoundary","currentBoundaryTextWrap","currentBoundaryLabelConf","currentBoundaryDescrConf","_x","diagramMarginX","_y","diagramMarginY","currentPersonOrSystemArray","currentPersonOrSystemKeys","nextCurrentBoundaries","drawPersonOrSystemArray","_text","screenBounds","screen","availWidth","title2","getC4ShapeObj","relTextWrap","relConf","drawRels","box","extraVertForTitle","personBorder","personBkg","getClassTitleString","classDef","classTitleString","addTspan","textEl","member","isFirst","displayText","cssStyle","getDisplayDetails","tSpan","textHeight","classInfo","lookUpDomId","linkTarget","annotations","titleText2","classTitle","titleHeight","membersLine","membersBox","methodsLine","members","dividerMargin","methods","method","classBox","cssClassStr","cssClasses","childNodes","setAttribute","tooltip","path","relation","getRelationType","relationType","AGGREGATION","EXTENSION","COMPOSITION","DEPENDENCY","LOLLIPOP","isNaN","lineData","lineFunction","curve","svgPath","arrowMarkerAbsolute","window","location","protocol","host","pathname","search","lineType","type1","type2","p1_card_x","p1_card_y","p2_card_x","p2_card_y","labelPosition","u","calcLabelPosition","cardinality_1_point","calcCardinalityPosition","cardinality_2_point","info","relationTitle1","relationTitle2","note","noteInfo","line2","noteBox","idCache","getGraphId","foundEntry","entry","isMultiGraph","setDefaultEdgeLabel","getRelations","id1","id2","setEdge","getNotes","e","svgBounds","vBox","sanitizeText","addClasses","_id","styles2","classData","domId","getTooltip","haveCallback","flowchart","setParent","getArrowMarker","nodeSpacing","rankSpacing","getDirection","namespaces","getNamespaces","relations","notes","addNamespaces","pattern","arrowhead","startLabelRight","endLabelLeft","arrowheadStyle","labelpos","htmlLabels","labelType","addRelations","startEdgeId","noteData","edgeId","addNotes","insertTitle","titleTopMargin","getDiagramTitle","diagramPadding","doc","document","labels","querySelectorAll","dim","createElementNS","insertBefore","firstChild","markdownToLines","markdown","preprocessedMarkdown","withoutMultipleNewlines","preprocessMarkdown","currentLine","processNode","parentType","textLine","word","contentNode","treeNode","splitWordToFitWidth","checkFit","splitWordToFitWidthRecursion","Intl","Segmenter","segment","map","usedChars","remainingChars","nextChar","rest","newWord","shift","splitLineToFitWidth","some","includes","splitLineToFitWidthRecursion","words","newLine","joiner","nextWord","lineWithNextWord","createTspan","textElement","lineIndex","computeWidthOfText","parentNode","testElement","testSpan","updateTextContentAndStyles","textLength","getComputedTextLength","computeDimensionOfText","textDimension","getBoundingClientRect","tspan","wrappedLine","innerTspan","createText","el","isTitle","useHtmlLabels","isNode","addSvgBackground","htmlText","output","markdownToHTML","vertexNode","addBackground","fo","div","labelClass","dom","styleFn","html","bbox","addHtmlSpan","svgLabel","structuredText","labelGroup","bkg","checkWidth","linesUnderWidth","preparedLine","createFormattedText","markers","extension","composition","aggregation","dependency","lollipop","point","circle","cross","barb","insertMarkers$1","markerArray","markerName","createLabel$1","_vertexText","addHtmlLabel","rows","isArray","row","setAttributeNS","textContent","appendChild","labelHelper","_classes","shapeSvg","textNode","wrappingWidth","halfPadding","dv","images","getElementsByTagName","noImgText","Promise","all","img","res","setupImage","display","flexDirection","bodyFontSize","getComputedStyle","enlargingFactor","minWidth","setTimeout","complete","addEventListener","centerLabel","updateNodeBounds","insertPolygonShape","h","intersectEllipse","point2","cx","cy","det","sqrt","intersectLine","p1","p2","q1","q2","a1","a2","b1","b2","c1","r1","r2","r3","r4","denom","sameSign","intersectRect$1","sx","sy","ellipse","polygon","polyPoints","intersections","POSITIVE_INFINITY","left","top","intersect2","sort","q","pdx","pdy","distp","qdx","qdy","distq","getArrowPoints","duplicatedDirections","uniqueDirections","Set","direction","add","expandAndDeduplicateDirections","midpoint","has","formatClass","getClassesFromNode","otherClasses","question","questionElem","warn","applyNodePropertyBorders","rect2","borders","totalWidth","totalHeight","strokeDashArray","addBorder","skipBorder","forkJoin","dir","shapes","rhombus","composite","props","propKeys","delete","propKey","labelRect","rectWithTitle","innerLine","text2","textRows","titleBox","choice","circle2","doublecircle","circleGroup","outerCircle","innerCircle","gap","stadium","hexagon","m","hex","block_arrow","blockArrow","rect_left_inv_arrow","lean_right","lean_left","trapezoid","inv_trapezoid","rect_right_inv_arrow","cylinder","pos","subroutine","fork","class_box","topLine","bottomLine","labelContainer","verticalPos","hasInterface","interfaceLabelText","interfaceLabel","interfaceBBox","classTitleLabel","classTitleBBox","classAttributes","parsedInfo","parsedText","lbl","classMethods","diffX2","diffX","memberBBox","nodeElems","insertNode","newEl","target","setNodeElem","clear$1","positionNode","diff","clusterNode","getSubGraphTitleMargins","subGraphTitleTopMargin","subGraphTitleMargin","subGraphTitleBottomMargin","bottom","subGraphTitleTotalMargin","markerOffsets","arrow_point","calculateDeltaAndAngle","point1","angle","deltaX","deltaY","pointTransformer","atan","getLineFunctionsWithOffset","hasOwn","cos","sin","addEdgeMarkers","diagramType","addEdgeMarker","arrowTypesMap","arrow_cross","arrow_barb","arrow_circle","arrowType","endMarkerType","suffix","edgeLabels","terminalLabels","insertEdgeLabel","labelElement","edgeLabel","startLabelLeft","startLabelElement","startEdgeLabelLeft","inner","slBox","startLeft","setTerminalWidth","startEdgeLabelRight","startRight","endLabelElement","endEdgeLabelLeft","endLeft","endLabelRight","endEdgeLabelRight","endRight","positionEdgeLabel","paths","updatedPath","siteConfig","calcTerminalLabelPosition","cutPathAtIntersect","_points","boundaryNode","lastPointOutside","isInside","outsideNode","inter","outsidePoint","insidePoint","Q","R","intersection","pointPresent","insertEdge","clusterDb","graph","pointsHasChanged","tail","head","toCluster","fromCluster","reverse","strokeClasses","thickness","addEntity","addRelationship","addAttributes","attributeType","attributeName","attributeKeyTypeList","attributeComment","cardA","relType","cardB","Cardinality","ZERO_OR_ONE","ZERO_OR_MORE","ONE_OR_MORE","ONLY_ONE","MD_PARENT","Identification","NON_IDENTIFYING","IDENTIFYING","erParser","entities","relationships","attributes","erDb","er","entityName","attribs","entity","getEntities","entA","rolA","entB","rSpec","entityA","roleA","entityB","relSpec","getRelationships","setDiagramTitle","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","MD_PARENT_END","MD_PARENT_START","erMarkers","BAD_ID_CHARS_REGEXP","entityNameIds","Map","drawEntities","svgNode","entities2","firstOne","entityId","prefix","simplifiedStr","strWithHyphen","MERMAID_ERDIAGRAM_UUID","set","groupNode","textId","classed","entityWidth","entityHeight","entityTextNode","heightPadding","entityPadding","widthPadding","attrFontSize","labelBBox","attributeNodes","hasKeyType","hasComment","maxTypeWidth","maxNameWidth","maxKeyWidth","maxCommentWidth","cumulativeHeight","attrNum","item","attrPrefix","nodeHeight","typeNode","nameNode","attributeNode","tn","nn","typeBBox","nameBBox","keyTypeNodeText","keyTypeNode","kn","keyTypeBBox","commentNode","cn","commentNodeBBox","widthPaddingFactor","bBox","minEntityWidth","minEntityHeight","spareColumnWidth","heightOffset","attribStyle","alignY","typeRect","nameXOffset","parseFloat","nameRect","keyTypeAndCommentXOffset","keyTypeRect","drawAttributes","rectBBox","getEdgeName","relCnt","directed","layoutDirection","edgesep","firstEntity","relationships2","get","relationship","addRelationships","getTotalLength","labelPoint","getPointAtLength","labelId","drawRelationshipFromLayout","attributeBackgroundColorOdd","attributeBackgroundColorEven","$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","$Vw1","$Vx1","$Vy1","$Vz1","$VA1","$VB1","$VC1","addSubGraph","addLink","stmt","setClass","addVertex","fromEntries","inf","destructLink","addClass","setClickEvent","setTooltip","setLink","updateLink","updateLinkInterpolate","firstGraph","version","vertexCounter","config","vertices","subGraphs","subGraphLookup","tooltips","subCount","firstGraphFlag","funs","vertexKeys","vertexKey","textObj","classes2","assign","addSingleLink","_start","_end","linkTextObj","maxEdges","positions","interp","defaultInterpolate","interpolate","defaultStyle","isSubstringInArray","ids","newStyle","className","linkStr","formatUrl","functionName","functionArgs","argList","charAt","querySelector","runFunc","setClickFun","bindFunctions","getVertices","setupToolTips","tooltipElem","_groups","selectAll","on","transition","duration","scrollX","right","scrollY","ver","setGen","list","_title","nodeList","nl","a","prims","boolean","number","string","objs","dir2","uniq","subGraph","makeUniq","getPosForId","secCount","posCrossRef","indexNodes2","result","count","posCount","childPos","getDepthFirstPos","indexNodes","getSubGraphs","_str","_startStr","dots","char","countChar","destructEndLink","startInfo","destructStartLink","exists","allSgs","sg","indexOf","allSubgraphs","flowDb","defaultConfig","freeze","defineProperty","__proto__","default","Symbol","toStringTag","flowRenderer","f","elk","portPos","nodeDb","getNextPosition","edgeDirection","graphDirection","portPos2","TB","in","north","out","south","west","east","LR","RL","BT","TD","getNextPort","inPosition","outPosition","addEdges","labelsEl","defaultLabelStyle","linkIdCnt","defaultStyles","linkIdBase","linkId","linkNameStart","linkNameEnd","minlen","labelEl","source","sourceId","targetId","startNode","getEdgeStartEndPoint","sources","targets","orgWidth","orgHeight","layoutOptions","calcOffset","src","dest","parentLookupDb","ancestor","treeData","parentById","visited","currentId","findCommonAncestor","ancestorOffset","posX","posY","edgesEl","sections","segPoints","bendPoints","edgePath","edgeG","edgeWithLabel","addMarkersToEdge","insertChildren","nodeArray","childIds","childrenById","childId","drawNodes","relX","relY","subgraphsEl","depth","subgraphEl","labelCentering","labelData","labelNode","renderEl","vert","subG","subGraphsEl","subgraphs","subgraph","addSubGraphs","svgId","ports","_shape","portConstraints","addVertices","nodeId","genSections","setWeekday","setDateFormat","enableInclusiveEndDates","TopAxis","setAxisFormat","setTickInterval","setExcludes","setIncludes","setTodayMarker","addSection","addTask","ganttParser","tickInterval","dateFormat","axisFormat","todayMarker","excludes","links","tasks","currentSection","displayMode","inclusiveEndDates","topAxis","weekday","lastOrder","isInvalidDate","date","dateFormat2","excludes2","includes2","format","isoWeekday","toLowerCase","checkTaskDates","task","manualEndTime","startTime","originalEndTime","Date","endTime","fixedEndTime","renderEndTime","fixTaskDates","toDate","invalid","getStartDate","prevTime","afterStatement","exec","latestTask","groups","findTaskById","today","setHours","mDate","isValid","getTime","getFullYear","parseDuration","statement","NaN","getEndDate","inclusive","untilStatement","earliestTask","parsedDate","durationValue","durationUnit","newEndTime","taskCnt","parseId","idStr","lastTask","lastTaskID","rawTasks","taskDb","compileTasks","compileTask","raw","prevTask","prevTaskId","startData","processed","allProcessed","rawTask","pushFun","callbackFunction","ganttDb","gantt","getDateFormat","endDatesAreInclusive","enableTopAxis","topAxisEnabled","getAxisFormat","getTickInterval","getTodayMarker","setDisplayMode","getDisplayMode","getSections","getTasks","allItemsProcessed","iterationCount","section","taskInfo","dataStr","ds","getTaskTags","parseData","active","crit","milestone","order","addTaskOrg","newTask","description","endTimeData","compileData","getIncludes","getExcludes","_linkStr","open","getLinks","getWeekday","tags2","matchFound","t","regex","RegExp","mapWeekdayToTimeFunction","monday","tuesday","wednesday","thursday","friday","saturday","sunday","getMaxIntersections","tasks2","orderOffset","timeline","Infinity","sorted","maxIntersections","getElementById","parentElement","offsetWidth","useWidth","taskArray","categories","arr","checkUnique","categoryHeights","topPadding","categoryElements","category","categoryHeight","barHeight","barGap","timeScale","domain","rangeRound","leftPadding","rightPadding","taskA","taskB","pageWidth","pageHeight","theGap","theTopPad","theSidePad","w2","h2","minTime","maxTime","excludeRanges","valueOf","enter","d2","gridLineStartPadding","renderEnd","drawExcludeDays","bottomXAxis","tickSize","tickFormat","resultTickInterval","every","interval","weekday2","ticks","topXAxis","makeGrid","theArray","theBarHeight","theColorScale","uniqueTasks","numberSectionStyles","rectangles","links2","secNum","taskClass","startX","endX","textWidth","taskType","sandboxElement2","doc2","each","taskRect","taskText","oldParent","Link","createElement","drawRects","colorScale","prevGap","numOccurrences","sectionFontSize","vertLabels","todayMarker2","todayG","todayLine","drawToday","makeGantt","excludeBkgColor","sectionBkgColor","sectionBkgColor2","altSectionBkgColor","gridColor","todayLineColor","taskTextDarkColor","taskTextClickableColor","taskTextColor","taskBkgColor","taskBorderColor","taskTextOutsideColor","activeTaskBkgColor","activeTaskBorderColor","doneTaskBorderColor","doneTaskBkgColor","critBorderColor","critBkgColor","setOptions","checkout","branch","cherryPick","merge","commit","commitType","NORMAL","REVERSE","HIGHLIGHT","gitGraphParser","mainBranchName","gitGraph","mainBranchOrder","commits","branchesConfig","branches","curBranch","seq","getId","branch2","upsert","newVal","prettyPrintCommitHistory","commitArr","commit2","reduce","commit3","parents","newCommit","nextCommit","fn","recordMap","uniqBy","getCommitsArray","commitType$1","MERGE","CHERRY_PICK","gitGraphDb","rawOptString","message","getOptions","msg","tag","otherBranch","custom_id","override_type","custom_tag","currentCommit","otherCommit","customType","customId","parentCommitId","sourceCommit","sourceCommitBranch","prettyPrint","mainBranch","mainBranchOrder2","getBranchesAsObjArray","branchConfig","getBranches","getCommits","getCurrentBranch","getHead","allCommitsDict","branchPos","commitPos","lanes","maxPos","drawText","drawCommits","commits2","modifyGraph","gitGraphConfig","gBullets","gLabels","sortedKeys","isParallelCommits","parallelCommits","layoutOffset","closestParent","maxPosition","parentPosition","findClosestParent","posWithOffset","typeClass","commitSymbolType","showCommitLabel","wrapper","labelBkg","rotateCommitLabel","r_x","r_y","hole","tagBbox","ly","commitStep","shouldRerouteArrow","commitA","commitB","allCommits","branchToGetCurve","commitX","isOnBranchToGetCurve","findLane","candidate","lane","drawArrows","gArrows","arrowNeedsRerouting","lineDef","arc","arc2","colorClassNum","lineY","lineX","drawArrow","branches2","branchLabel","showBranches","adjustIndexForTheme","drawBranches","options2","commitLabelFontSize","commitLabelColor","commitLabelBackground","tagLabelFontSize","tagLabelColor","tagLabelBackground","tagLabelBorder","primaryColor","descendants","isDescendant","ancestorId","copy","clusterId","newGraph","rootId","data2","edgeInCluster","removeNode","extractDescendants","findNonClusterChild","getAnchorId","externalConnections","extractor","hasChildren","clusterData","clusterGraph","sorter","rectBox","roundedWithTitle","innerRect","noteGroup","divider","clusterElems","recursiveRender","_elem","parentCluster","clusters","edgePaths","sortNodesByHierarchy","insertCluster","render","nonClusterChild","removeEdge","specialId","edge1","structuredClone","edge2","adjustClustersAndEdges","setInfo","DEFAULT_INFO_DB","toggle","getInfo","journey","taskData","pieces","score","peeps","peopleList","people","getActors","tempActors","updateActors","faceColor","fillType0","fillType1","fillType2","fillType3","fillType4","fillType5","fillType6","fillType7","actor0","actor1","actor2","actor3","actor4","actor5","drawCircle","circleData","circleElement","textData","taskCount","colour","taskFontSize","taskFontFamily","center","faceData","face","face2","arc$1","startAngle","PI","endAngle","innerRadius","outerRadius","smile","sad","drawFace","xPos","person","actors","graphics","LEFT_MARGIN","leftMargin","sequenceItems","updateBounds","_self","boxMargin","bumpVerticalPos","bump","getVerticalPos","getBounds","fills","sectionFills","textColours","sectionColours","drawTasks","lastSection","taskPos","sectionNumber","taskInSectionCount","currentSection2","taskIndex","taskMargin","taskActors","acc","actorName","actorNames","actorPos","actorColours","yPos","textMargin","boxTextMargin","drawActorLegend","LEVELS","fatal","log$1","_args","setLogLevel$1","level","numericLevel","bind","log","setupDompurifyHooksIfNotSetup","setup","TEMPORARY_ATTRIBUTE","tagName","hasAttribute","getAttribute","removeAttribute","setupDompurifyHooks","removeScript","sanitizeMore","config2","breakToPlaceholder","placeholderToBreak","sanitizeText$2","dompurifyConfig","FORBID_TAGS","evaluate","String","parseGenericTypes","inputSets","thisSet","previousSet","nextSet","shouldCombineSets","processSet","countOccurrence","prevCount","nextCount","tildeCount","hasStartingTilde","chars","first","last","lastIndexOf","isMathMLSupported","MathMLElement","katexRegex","hasKatex","calculateMathMLDimensions","renderKatex","divElem","innerHTML","visibility","insertAdjacentElement","clientWidth","clientHeight","legacyMathML","katex","_","renderToString","throwOnError","common$1","getRows","sanitizeTextOrArray","hasBreaks","test","splitBreaks","getUrl","useAbsolute","getMax","newValues","getMin","mkBorder","col","darkMode","oldAttributeBackgroundColorOdd","oldAttributeBackgroundColorEven","getThemeVariables$2","userOverrides","theme2","background","secondaryColor","primaryBorderColor","secondaryBorderColor","tertiaryBorderColor","primaryTextColor","secondaryTextColor","tertiaryTextColor","secondBkg","border1","labelBackground","THEME_COLOR_LIMIT","nodeBkg","defaultLinkColor","actorBorder","actorBkg","actorTextColor","actorLineColor","signalColor","signalTextColor","labelBoxBkgColor","labelBoxBorderColor","labelTextColor","loopTextColor","noteBorderColor","noteBkgColor","noteTextColor","activationBorderColor","activationBkgColor","sequenceNumberColor","taskTextLightColor","labelColor","errorBkgColor","errorTextColor","updateColors","cScale0","cScale1","cScale2","cScale3","cScale4","cScale5","cScale6","cScale7","cScale8","cScale9","cScale10","cScale11","scaleLabelColor","cScaleLabel0","cScaleLabel3","transitionColor","transitionLabelColor","stateLabelColor","stateBkg","labelBackgroundColor","compositeBackground","altBackground","compositeTitleBackground","compositeBorder","innerEndBackground","specialStateColor","classText","pie1","pie2","pie3","pie4","pie5","pie6","pie7","pie8","pie9","pie10","pie11","pie12","pieTitleTextSize","pieTitleTextColor","pieSectionTextSize","pieSectionTextColor","pieLegendTextSize","pieLegendTextColor","pieStrokeColor","pieStrokeWidth","pieOuterStrokeWidth","pieOuterStrokeColor","pieOpacity","quadrant1Fill","quadrant2Fill","quadrant3Fill","quadrant4Fill","quadrant1TextFill","quadrant2TextFill","quadrant3TextFill","quadrant4TextFill","quadrantPointFill","quadrantPointTextFill","quadrantXAxisTextFill","quadrantYAxisTextFill","quadrantInternalBorderStrokeFill","quadrantExternalBorderStrokeFill","quadrantTitleFill","xyChart","backgroundColor","xAxisTitleColor","xAxisLabelColor","xAxisTickColor","xAxisLineColor","yAxisTitleColor","yAxisLabelColor","yAxisTickColor","yAxisLineColor","plotColorPalette","requirementBackground","requirementBorderColor","requirementBorderSize","requirementTextColor","relationColor","relationLabelBackground","relationLabelColor","git0","git1","git2","git3","git4","git5","git6","git7","gitInv0","gitInv1","gitInv2","gitInv3","gitInv4","gitInv5","gitInv6","gitInv7","gitBranchLabel0","gitBranchLabel1","gitBranchLabel2","gitBranchLabel3","gitBranchLabel4","gitBranchLabel5","gitBranchLabel6","gitBranchLabel7","tagBorder","calculate","overrides","Theme5","contrast","critical","stateBorder","pie0","branchLabelColor","theme","base","getThemeVariables","multiplier","dark","mainContrastColor","darkTextColor","cScale12","forest","neutral","defaultConfigJson","deterministicIDSeed","themeCSS","themeVariables","sequence","noteFont","noteFontFamily","noteFontSize","noteFontWeight","actorFont","actorFontFamily","actorFontSize","actorFontWeight","external_personFont","external_personFontFamily","external_personFontSize","external_personFontWeight","systemFont","external_systemFont","external_systemFontFamily","external_systemFontSize","external_systemFontWeight","system_dbFont","system_dbFontFamily","system_dbFontSize","system_dbFontWeight","external_system_dbFont","external_system_dbFontFamily","external_system_dbFontSize","external_system_dbFontWeight","system_queueFont","system_queueFontFamily","system_queueFontSize","system_queueFontWeight","external_system_queueFont","external_system_queueFontFamily","external_system_queueFontSize","external_system_queueFontWeight","containerFont","containerFontFamily","containerFontSize","containerFontWeight","external_containerFont","external_containerFontFamily","external_containerFontSize","external_containerFontWeight","container_dbFont","container_dbFontFamily","container_dbFontSize","container_dbFontWeight","external_container_dbFont","external_container_dbFontFamily","external_container_dbFontSize","external_container_dbFontWeight","container_queueFont","container_queueFontFamily","container_queueFontSize","container_queueFontWeight","external_container_queueFont","external_container_queueFontFamily","external_container_queueFontSize","external_container_queueFontWeight","componentFont","componentFontFamily","componentFontSize","componentFontWeight","external_componentFont","external_componentFontFamily","external_componentFontSize","external_componentFontWeight","component_dbFont","component_dbFontFamily","component_dbFontSize","component_dbFontWeight","external_component_dbFont","external_component_dbFontFamily","external_component_dbFontSize","external_component_dbFontWeight","component_queueFont","component_queueFontFamily","component_queueFontSize","component_queueFontWeight","external_component_queueFont","external_component_queueFontFamily","external_component_queueFontSize","external_component_queueFontWeight","pie","requirement","sankey","keyify","configKeys","defaultConfig$2","sanitizeDirective","arg","cssMatchers","cssKey","sanitizeCss","str2","startCnt","endCnt","frontMatterRegex","directiveRegex","anyCommentRegex","UnknownDiagramError","super","detectors","detectType","detector","detector2","registerLazyLoadedDiagrams","diagrams2","loader","loader2","addDetector","assignWithDepth","dst","clobber","assignWithDepth$1","ZERO_WIDTH_SPACE","d3CurveTypes","curveBasis","curveBasisClosed","curveBasisOpen","curveBumpX","curveBumpY","curveBundle","curveCardinalClosed","curveCardinalOpen","curveCardinal","curveCatmullRomClosed","curveCatmullRomOpen","curveCatmullRom","curveLinear","curveLinearClosed","curveMonotoneX","curveMonotoneY","curveNatural","curveStep","curveStepAfter","curveStepBefore","directiveWithoutOpen","detectDirective","commentWithoutDirectives","lastIndex","type22","interpolateToCurve","defaultCurve","curveName","toUpperCase","distance","pow","roundNumber","precision","factor","calculatePoint","distanceToTraverse","prevPoint","remainingDistance","vectorDistance","distanceRatio","getStylesFromArray","characters","makeRandomHex","drawSimpleText","nText","_fontSizePx","parseFontSize","textElem","anchor","span","wrapLabel","joinWith","completedLines","nextLine","wordLength","calculateTextWidth","nextLineLength","hyphenatedStrings","remainingWord","breakString","Boolean","hyphenCharacter","character","currentCharacter","isLastLine","hyphenatedNextLine","calculateTextHeight","calculateTextDimensions","fontFamilies","dims","fontFamily2","cHeight","valign","decoder","isDetailedError","fontSizeNumber","cleanAndMerge","defaultData","utils","detectInit","inits","results","init2","prop","totalDistance","traverseEdge","isRelationTypePresent","initialPosition","atan2","cardinalityPosition","terminalMarkerSize","params","arrPaths","fnName","entityDecode","escape","unescape","cssClass","InitIDGenerator","deterministic","seed","now","decodeEntities","defaultConfig$1","configFromInitialize","directives","currentConfig","updateCurrentConfig","siteCfg","_directives","cfg","sumOfDirectives","sanitize","tmpConfigFromInitialize","checkConfig","getSiteConfig","setConfig$1","getConfig$1","secure","addDirective","directive","reset","ConfigWarning","LAZY_LOAD_DEPRECATED","issuedWarnings","warning","lazyLoadedDiagrams","loadExternalDiagramsAtStartup","id$k","defaultRenderer","id$j","flowchartV2","id$h","git","id$g","id$f","id$d","quadrantChart","id$c","xychart","id$b","id$a","id$9","classDiagram","id$8","classDiagramV2","id$7","id$6","stateV2","id$5","configureSvgSize","svgElem","calculateSvgSizeAttrs","d3Elem","d3Attrs","setupGraphViewbox$1","sWidth","sHeight","themes","getStyles$1","userStyles","diagramStyles","accTitle","diagramTitle","accDescription","sanitizeText$1","commonDb","setLogLevel","setConfig","setupGraphViewbox","diagrams","registerDiagram","diagramTheme","injectUtils","getDiagram","DiagramNotFoundError","selectSvgElement","version2","errorRenderer","errorDiagram","id$4","flowchartElk","id$3","id$2","mindmap","id$1","hasLoadedDiagrams","addDiagrams","trimStart","Diagram","metadata","innerTxt","encodeEntities","detectError","getParser","getType","getDiagramFromText$1","interactionFunctions","SVG_ROLE","cleanupComments","isNothing","subject","common","isObject","toArray","sequence2","repeat","cycle","isNegativeZero","NEGATIVE_INFINITY","extend","sourceKeys","formatError","exception2","compact","where","reason","mark","column","snippet","YAMLException$1","captureStackTrace","exception","getLine","buffer","lineStart","lineEnd","maxLineLength","maxHalfLength","padStart","maxLength","indent","linesBefore","linesAfter","re","lineStarts","lineEnds","foundLineNo","lineNoLength","TYPE_CONSTRUCTOR_OPTIONS","YAML_NODE_KINDS","map2","kind","resolve","construct","instanceOf","predicate","represent","representName","multi","styleAliases","compileList","schema2","currentType","newIndex","previousType","previousIndex","Schema$1","definition","implicit","explicit","type$1","loadKind","compiledImplicit","compiledExplicit","compiledTypeMap","scalar","mapping","fallback","collectType","compileMap","failsafe","_null","object","canonical","lowercase","uppercase","camelcase","empty","bool","isHexCode","isOctCode","isDecCode","int","hasDigits","charCodeAt","sign","binary","octal","decimal","hexadecimal","YAML_FLOAT_PATTERN","SCIENTIFIC_WITHOUT_DOT","float","json","core","YAML_DATE_REGEXP","YAML_TIMESTAMP_REGEXP","timestamp","year","month","day","hour","minute","second","fraction","delta","UTC","setTime","toISOString","BASE64_MAP","code","idx","bitlen","tailbits","bits","Uint8Array","_hasOwnProperty$3","_toString$2","omap","pair","pairKey","pairHasKey","objectKeys","_toString$1","pairs","_hasOwnProperty$2","_default","_hasOwnProperty$1","CONTEXT_FLOW_IN","CONTEXT_FLOW_OUT","CONTEXT_BLOCK_IN","CONTEXT_BLOCK_OUT","CHOMPING_CLIP","CHOMPING_STRIP","CHOMPING_KEEP","PATTERN_NON_PRINTABLE","PATTERN_NON_ASCII_LINE_BREAKS","PATTERN_FLOW_INDICATORS","PATTERN_TAG_HANDLE","PATTERN_TAG_URI","_class","is_EOL","is_WHITE_SPACE","is_WS_OR_EOL","is_FLOW_INDICATOR","fromHexCode","lc","escapedHexLen","fromDecimalCode","simpleEscapeSequence","charFromCodepoint","fromCharCode","simpleEscapeCheck","simpleEscapeMap","State$1","filename","schema","onWarning","legacy","listener","implicitTypes","typeMap","lineIndent","firstTabInLine","documents","generateError","state2","throwError","throwWarning","directiveHandlers","YAML","major","minor","checkLineBreaks","TAG","handle","tagMap","decodeURIComponent","err","captureSegment","checkJson","_position","_length","_character","_result","mergeMappings","destination","overridableKeys","quantity","storeMappingPair","keyTag","keyNode","valueNode","startLine","startLineStart","startPos","configurable","enumerable","writable","readLineBreak","skipSeparationSpace","allowComments","checkIndent","lineBreaks","testDocumentSeparator","writeFoldedLines","readBlockSequence","nodeIndent","_line","_tag","_anchor","detected","anchorMap","composeNode","readTagProperty","tagHandle","isVerbatim","isNamed","readAnchorProperty","parentIndent","nodeContext","allowToSeek","allowCompact","allowBlockStyles","allowBlockScalars","allowBlockCollections","typeIndex","typeQuantity","typeList","flowIndent","blockIndent","indentStatus","atNewLine","hasContent","following","_keyLine","_keyLineStart","_keyPos","atExplicitKey","readBlockMapping","_lineStart","_pos","terminator","isPair","isExplicitPair","isMapping","readNext","readFlowCollection","captureStart","folding","tmp","chomping","didReadContent","detectedIndent","textIndent","emptyLines","atMoreIndented","readBlockScalar","captureEnd","readSingleQuotedScalar","hexLength","hexResult","readDoubleQuotedScalar","readAlias","withinFlowCollection","hasPendingContent","_lineIndent","_kind","readPlainScalar","readDocument","directiveName","directiveArgs","documentStart","hasDirectives","loadDocuments","nullpos","JSON_SCHEMA","load","loadAll","iterator","cleanupText","processFrontmatter","parsed","extractFrontMatter","processDirectives","initDirective","wrapDirectives","preprocessDiagram","cleanedCode","frontMatterResult","directiveResult","DOMPURIFY_TAGS","DOMPURIFY_ATTR","processAndSetConfigs","cssImportantStyles","createUserStyles","graphType","classDefs","userCSSstyles","cssStyles","altFontFamily","cssElements","classId","styleClassDef","cssElement","createCssStyles","allStyles","appendDivSvgG","parentRoot","enclosingDivId","divStyle","svgXlink","enclosingDiv","sandboxedIframe","iFrameId","getDiagramFromText","mermaidAPI","svgContainingElement","maxTextSize","idSelector","iFrameID","iFrameID_selector","enclosingDivID","enclosingDivID_selector","isSandboxed","isLooseSecurityLevel","iframe","divId","removeExistingElements","diag","parseEncounteredException","diagramClassDefs","style1","a11yTitle","a11yDescr","setA11yDiagramInfo","a11yDesc","baseId","descId","titleId","addSVGa11yTitleDescription","addA11yInfo","svgCode","inSandboxMode","useArrowMarkerUrls","cleanedUpSvg","cleanUpSvgCode","svgElement","viewBox","baseVal","btoa","putIntoIFrame","ADD_TAGS","ADD_ATTR","tmpElementSelector","parseOptions","suppressErrors","initialize","setSiteConfig","logLevel","updateSiteConfig","globalReset","handleError","errors","run","runThrowsErrors","mermaid","postRenderCallback","nodesToProcess","startOnLoad","idGenerator","deterministicIds","contentLoaded","catch","executionQueue","executionQueueRunning","executeQueue","rej","then","callback","runOptions","HTMLElement","registerExternalDiagrams","lazyLoad","failed","allSettled","status","loadRegisteredDiagrams","setParseErrorHandler","parseErrorHandler","addNode","decorateNode","icon","DEFAULT","elements","NO_BORDER","ROUNDED_RECT","RECT","CIRCLE","CLOUD","BANG","HEXAGON","maxNodeWidth","getParent","getMindmap","startStr","endStr","setElementForId","decoration","type2Str","fullSection","nodeElem","sectionClass","bkgElem","heightDiff","defaultBkg","roundedRectBkg","rectBkg","circleBkg","cloudBkg","bangBkg","_db","hexagonBkg","drawNode","addNodes","group","layoutMindmap","selector","layoutDimensions","quality","styleEnabled","animate","ready","mm","edgesElem","nodesElem","_private","bodyBounds","rscratch","startY","midX","midY","endY","drawEdges","positionNodes","sw","setShowData","cleanupValue","DEFAULT_PIE_CONFIG","DEFAULT_PIE_DB","showData","getShowData","globalConfig","pieConfig","LEGEND_RECT_SIZE","sections2","outerStrokeWidth","textPosition","arcGenerator","labelArcGenerator","arcs","pieData","d3Section","pie$1","createPieArcs","myGeneratedColors","datum","sum","toFixed","centroid","legend","_datum","pieWidth","addPoint","setXAxisLeftText","setXAxisRightText","setYAxisBottomText","setYAxisTopText","setQuadrant1Text","setQuadrant2Text","setQuadrant3Text","setQuadrant4Text","defaultThemeVariables","textSanitizer","quadrantBuilder","getDefaultConfig","themeConfig","getDefaultThemeConfig","getDefaultData","titleText","quadrant1Text","quadrant2Text","quadrant3Text","quadrant4Text","xAxisLeftText","xAxisRightText","yAxisBottomText","yAxisTopText","_r","showXAxis","showYAxis","showTitle","chartHeight","chartWidth","titlePadding","titleFontSize","quadrantPadding","xAxisLabelPadding","yAxisLabelPadding","xAxisLabelFontSize","yAxisLabelFontSize","quadrantLabelFontSize","quadrantTextTopPadding","pointTextPadding","pointLabelFontSize","pointRadius","xAxisPosition","yAxisPosition","quadrantInternalBorderStrokeWidth","quadrantExternalBorderStrokeWidth","addPoints","setThemeConfig","calculateSpace","xAxisSpaceCalculation","xAxisSpace","yAxisSpaceCalculation","yAxisSpace","titleSpaceCalculation","titleSpace","quadrantLeft","quadrantTop","quadrantWidth","quadrantHeight","quadrantSpace","quadrantHalfWidth","quadrantHalfHeight","getAxisLabels","spaceData","drawXAxisLabelsInMiddle","drawYAxisLabelsInMiddle","axisLabels","horizontalPos","rotation","getQuadrants","quadrants","quadrant","getQuadrantPoints","xAxis","yAxis","getBorders","halfExternalBorderWidth","strokeFill","strokeWidth","build","calculatedSpace","borderLines","setWidth","setHeight","getQuadrantData","quadrantChartConfig","getDominantBaseLine","getTextAnchor","getTransformation","quadrantData","quadrantsGroup","borderGroup","dataPointGroup","titleGroup","dataPoints","addRequirement","setNewReqId","setNewReqText","setNewReqRisk","setNewReqVerifyMethod","RequirementType","REQUIREMENT","FUNCTIONAL_REQUIREMENT","INTERFACE_REQUIREMENT","PERFORMANCE_REQUIREMENT","PHYSICAL_REQUIREMENT","DESIGN_CONSTRAINT","RiskLevel","LOW_RISK","MED_RISK","HIGH_RISK","VerifyType","VERIFY_ANALYSIS","VERIFY_DEMONSTRATION","VERIFY_INSPECTION","VERIFY_TEST","addElement","setNewElementType","setNewElementDocRef","Relationships","CONTAINS","COPIES","DERIVES","SATISFIES","VERIFIES","REFINES","TRACES","latestRequirement","requirements","latestElement","req","risk","verifyMethod","getRequirements","docRef","getElements","ReqMarkers","ARROW","containsNode","line_height","newRectNode","rect_min_width","rect_min_height","newTitleNode","txts","rect_padding","textStr","totalY","titleNode","newBodyNode","yStart","currentRow","wrappedTxts","currentTextLen","firstPart","lastStr","elementString","addEdgeLabel","requirements2","elements2","reqs","reqName","rectNode","titleNodeInfo","els","elName","drawElements","adjustEntities","findOrCreateNode","nodesMap","SankeyLink","SankeyNode","ID","getNodes","getGraph","_Uid","_Uid2","href","Uid","alignmentsMap","justify","defaultSankeyConfig","nodeAlignment","showValues","nodeAlign","nodeWidth","nodePadding","extent","sankey$1","colorScheme","uid","x0","y0","linkColor","gradient","coloring","originalParse","prepareTextForParsing","boxData","parseBoxData","boxText","sequenceIndex","sequenceIndexStep","sequenceVisible","signalType","AUTONUMBER","actor","loopText","parseMessage","optText","altText","parText","PAR_OVER_START","criticalText","CRITICAL_START","CRITICAL_END","breakText","BREAK_START","BREAK_END","optionText","CRITICAL_OPTION","placement","activate","records","prevActor","createdActors","destroyedActors","boxes","messages","sequenceNumbersEnabled","currentBox","lastCreated","lastDestroyed","addActor","assignedBox","properties","actorCnt","nextActor","actorKeys","addSignal","idFrom","idTo","messageType","part","activationCount","getActor","addNote","addLinks","actorId","insertLinks","addProperties","insertProperties","addDetails","details","param","step","visible","sep","addALink","addMessage","answer","enableSequenceNumbers","disableSequenceNumbers","showSequenceNumbers","getMessages","getCreatedActors","getDestroyedActors","getActorKeys","getActorProperty","getBoxes","CSS","supports","Option","hasAtLeastOneBox","hasAtLeastOneBoxWithTitle","TOP_ACTOR_CLASS","BOTTOM_ACTOR_CLASS","drawKatex","msgModel","rectElem","rectDim","temp","prevTextHeight","_textFontSize","_textFontSizePx","textElems","yfunc","dominantBaseline","alignmentBaseline","Z","drawLabel","txtObject","cut","fixLifeLineHeights","actorKey","actorDOM","mirrorActors","drawBackgroundRect","getTextObj","_actorFontSize","_actorFontSizePx","byKatex","hasKatex2","_drawMenuItemTextCandidateFunc","drawActor","isFooter","actorY","centerY","lower","actElem","ACTOR_TYPE_WIDTH","drawActorTypeActor","boxplusLineGroup","popId","forceMenus","cssclass","iconSrc","drawActorTypeParticipant","drawBox","textMaxHeight","drawPopup","minMenuWidth","actorCnt2","displayValue","actorClass","menuWidth","linkY","linkElem","anchorElement","drawActivation","actorActivations2","anchored","drawLoop","loopModel","labelBoxHeight","labelBoxWidth","drawLoopLine","sectionTitles","sectionHeight","te","curr","insertArrowHead","insertArrowFilledHead","insertSequenceNumber","insertArrowCrossHead","insertDatabaseIcon","insertComputerIcon","insertClockIcon","getNoteRect","sanitizeUrl","activations","models","getHeight","loops","it","addBox","boxModel","actorModel","addLoop","noteModel","lastActor","lastLoop","lastMessage","lastNote","updateFn","newActivation","actorRect","stackedSize","actorActivations","activationWidth","endActivation","lastActorActivationIdx","activation","createLoop","newLoop","endLoop","isLoopOverlap","overlap","addSectionToLoop","loop","saveVerticalPos","savedVerticalPos","resetVerticalPos","drawNote","noteAlign","noteMargin","boundMessage","_diagram","isKatexMsg","textDims","lineStartY","totalOffset","rightAngles","fromBounds","toBounds","drawMessage","messageAlign","wrapPadding","drawActors","drawActorsPopup","getRequiredPopupWidth","menuDimensions","activationBounds","actorObj","adjustLoopHeightForWrap","loopWidths","preMargin","postMargin","addLoopFn","heightAdjust","loopWidth","adjustCreatedDestroyedData","receiverAdjustment","adjustment","senderAdjustment","requiredPopupWidth","textFont","labelWidth","buildNoteModel","shouldWrap","textDimensions","actorMargin","buildMessageModel","fromLeft","fromRight","toLeft","toRight","isArrowToRight","isArrowToActivation","adjustValue","allBounds","boundedWidth","msgDims","calculateLoopBounds","_maxWidthPerActor","current","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","toAdd","enabled","stk","hasBoxes","hasBoxTitles","maxMessageWidthPerActor","isNote","isMessage","wrappedMessage","messageWidth","getMaxMessageWidthPerActor","actorToMessageWidth","actDims","actorWidth2","actorWidth","maxBoxHeight","total","aKey","boxMsgDimensions","missing","calculateActorMargins","hideUnusedParticipants","newActors","prevBox","prevWidth","prevMargin","addActorRenderingData","activeEnd","activationData","messagesToDraw","backgrounds","messageModel","box2","requiredBoxSize","boxHeight","bottomMarginAdj","boxWidth","idCache$1","drawDescrState","stateDef","descriptions","isSecond","isFirst2","descrLine","descrBox","addTitleAndBox","altBkg","pad","dblPad","orgBox","orgX","titleShift","titleWidth","graphBox","tHeight","_drawLongText","drawState","stateInfo","sizeUnit","drawStartState","miniPadding","drawEndState","forkWidth","forkHeight","parentId","drawForkJoinState","drawDivider","drawSimpleState","stateBox","transformationLog","renderDoc","domDocument","edgeFreeDoc","ranker","edgeLengthFactor","nodeSep","extract","states","getStates","keys2","sub","boxBounds","compositTitleSize","noteDef","nodeCount","fontSizeFactor","labelHeight","pWidth","pShift","titleRows","boundsTmp","heightAdj","drawEdge","rootDoc","getRootDoc","svgWidth","SHAPE_STATE","SHAPE_STATE_WITH_DESC","CSS_DIAGRAM","CSS_DIAGRAM_STATE","CSS_EDGE","CSS_EDGE_NOTE_EDGE","CSS_DIAGRAM_NOTE","CSS_DIAGRAM_CLUSTER","CSS_DIAGRAM_CLUSTER_ALT","PARENT","DOMID_TYPE_SPACER","NOTE_ID","PARENT_ID","G_EDGE_STYLE","G_EDGE_ARROWHEADSTYLE","G_EDGE_LABELTYPE","G_EDGE_THICKNESS","graphItemCount","stateDomId","itemId","counter","typeSpacer","setupNode","parsedItem","diagramStates","diagramDb","altFlag","dbInfoItem","D","newNode","getDir","nodeData","groupData","parentNodeId","setupDoc","parentParsedItem","S","state1","defaultDir","parsedItemDoc","diagramObj","getRootDocV2","removeChild","flowRendererV2","i2","linkNode","addRelation","cleanupLabel","addClassesToNamespace","addNamespace","addMembers","setClassLabel","addAnnotation","addMember","LINE","DOTTED_LINE","setCssStyle","visibilityValues","ClassMember","memberType","classifier","sanitizedInput","parseMember","parameters","returnType","parseClassifier","potentialClassifier","methodRegEx","detectedVisibility","lastChar","firstChar","MERMAID_DOM_ID_PREFIX","classCounter","namespaceCounter","functions","splitClassNameAndType","genericType","validatedClassName","theClass","memberString","endsWith","setClickFunc","_domId","elemId","scrollTop","getClass","annotation","namespace","classNames","getNamespace","thisClass","setRootDoc","stateStmt","trimColon","relDescription","parts","getDividerId","DEFAULT_NESTED_DOC_DIR","STMT_STATE","STMT_RELATION","DEFAULT_STATE_TYPE","DIVIDER_TYPE","START_NODE","START_TYPE","END_NODE","currentDocument","startEndCount","dividerCnt","clone","docTranslator","currentDoc","docNode","addState","addDescription","des","setStyle","textStyle","setTextStyle","saveCommon","getState","startIdIfNeeded","fixedId","startTypeIfNeeded","item1","item2","relationTitle","addRelationObjs","endIdIfNeeded","endTypeIfNeeded","theState","_descr","foundState","styleText","logDocuments","_doc","rectElement","attrKey","imageElement","drawEmbeddedImage","getCommonDb","addEvent","currentTaskId","period","event","events","timelineDb","sectionColor","masterX","masterY","maxTaskHeight","maxEventCount","maxEventLineLength","maxSectionHeight","isWithoutSections","taskNode","taskWrapper","taskHeight","lineWrapper","lineLength","drawEvents","disableMulticolor","maxEventHeight","eventBeginY","eventNode","eventWrapper","eventHeight","depthY","sectionBeginY","hasSections","maxEventLineLengthTemp","tasksForSection","sectionNode","sectionNodeWrapper","setOrientation","setLineData","setBarData","setXAxisTitle","setXAxisBand","setXAxisRangeData","setYAxisTitle","setYAxisRangeData","isBarPlot","isBandAxisData","isLinearAxisData","TextDimensionCalculatorWithFont","parentGroup","getMaxDimension","texts","cur","dimension","BaseAxis","axisConfig","textDimensionCalculator","axisThemeConfig","boundingRect","axisPosition","showLabel","showTick","showAxisLine","outerPadding","titleTextHeight","labelTextHeight","setRange","recalculateScale","getRange","setAxisPosition","getTickDistance","getTickValues","getAxisOuterPadding","getLabelDimension","tick","labelFontSize","recalculateOuterPaddingToDrawBar","calculateSpaceIfDrawnHorizontally","availableSpace","availableHeight","axisLineWidth","spaceRequired","maxPadding","heightRequired","labelPadding","tickLength","calculateSpaceIfDrawnVertical","availableWidth","widthRequired","setBoundingBoxXY","getDrawableElementsForLeftAxis","drawableElement","groupTexts","axisLineColor","getScaleValue","tickColor","tickWidth","getDrawableElementsForBottomAxis","getDrawableElementsForTopAxis","getDrawableElements","BandAxis","scale","paddingInner","paddingOuter","align","LinearAxis","getAxis","tmpSVGGroup2","ChartTitle","chartConfig","chartData","chartThemeConfig","showChartTitle","titleDimension","drawableElem","getChartTitleComponent","LinePlot","plotData","orientation","plotIndex2","plotIndex","getDrawableElement","finalData","BarPlot","barData","barWidth","barWidthHalf","BasePlot","setAxes","plot","plots","linePlot","chartOrientation","barPlot","getPlotComponent","Orchestrator","componentStore","calculateVerticalSpace","plotX","plotY","plotReservedSpacePercent","spaceUsed","calculateHorizontalSpace","titleYEnd","XYChartBuilder","tmpSVGGroup","xyChartConfig","getChartDefaultConfig","xyChartThemeConfig","getChartDefaultThemeConfig","xyChartData","getChartDefaultData","hasSetXAxis","hasSetYAxis","transformDataWithoutCategory","retData","prevMinValue","prevMaxValue","minValue","maxValue","setYAxisRangeFromPlotData","getPlotColorFromPalette","getDrawableElem","setTmpSVGG","SVGG","getChartThemeConfig","getChartConfig","getTextTransformation","getGroup","gList","shapeGroup"],"sourceRoot":""} |