@kong/markdown 1.3.1 → 1.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (82) hide show
  1. package/dist/{arc-CRNu716j.js → arc-8cjaq9av.js} +2 -2
  2. package/dist/{arc-CRNu716j.js.map → arc-8cjaq9av.js.map} +1 -1
  3. package/dist/{blockDiagram-6b2b5046-D2MkRD_j.js → blockDiagram-6b2b5046-CXMFsTaq.js} +6 -6
  4. package/dist/{blockDiagram-6b2b5046-D2MkRD_j.js.map → blockDiagram-6b2b5046-CXMFsTaq.js.map} +1 -1
  5. package/dist/{c4Diagram-b947cdbb-DCrk3XXk.js → c4Diagram-b947cdbb-vwALH1WH.js} +3 -3
  6. package/dist/{c4Diagram-b947cdbb-DCrk3XXk.js.map → c4Diagram-b947cdbb-vwALH1WH.js.map} +1 -1
  7. package/dist/channel-CiebjdPJ.js +6 -0
  8. package/dist/{channel-AStNV-TO.js.map → channel-CiebjdPJ.js.map} +1 -1
  9. package/dist/{classDiagram-35230388-xHVnplkU.js → classDiagram-35230388-CTxUL5uA.js} +6 -6
  10. package/dist/{classDiagram-35230388-xHVnplkU.js.map → classDiagram-35230388-CTxUL5uA.js.map} +1 -1
  11. package/dist/{classDiagram-v2-412acd34-Df3TOSJO.js → classDiagram-v2-412acd34-BQSUu5Vr.js} +6 -6
  12. package/dist/{classDiagram-v2-412acd34-Df3TOSJO.js.map → classDiagram-v2-412acd34-BQSUu5Vr.js.map} +1 -1
  13. package/dist/clone-AVwa-Pmf.js +9 -0
  14. package/dist/{clone-BEwR0ae8.js.map → clone-AVwa-Pmf.js.map} +1 -1
  15. package/dist/{createText-423428c9-CQXqrQGV.js → createText-423428c9-C_xMZUNE.js} +2 -2
  16. package/dist/{createText-423428c9-CQXqrQGV.js.map → createText-423428c9-C_xMZUNE.js.map} +1 -1
  17. package/dist/{edges-d417c7a0-D2l0zXjx.js → edges-d417c7a0-9M_sA3AX.js} +4 -4
  18. package/dist/{edges-d417c7a0-D2l0zXjx.js.map → edges-d417c7a0-9M_sA3AX.js.map} +1 -1
  19. package/dist/{erDiagram-0ea73325-CGortXf-.js → erDiagram-0ea73325-LCVGPMbf.js} +5 -5
  20. package/dist/{erDiagram-0ea73325-CGortXf-.js.map → erDiagram-0ea73325-LCVGPMbf.js.map} +1 -1
  21. package/dist/{flowDb-d35e309a-B37o2qfF.js → flowDb-d35e309a-EwD5UOTn.js} +2 -2
  22. package/dist/{flowDb-d35e309a-B37o2qfF.js.map → flowDb-d35e309a-EwD5UOTn.js.map} +1 -1
  23. package/dist/{flowDiagram-d949d7c1-CZWR-qRX.js → flowDiagram-d949d7c1-B8fV1Bgb.js} +7 -7
  24. package/dist/{flowDiagram-d949d7c1-CZWR-qRX.js.map → flowDiagram-d949d7c1-B8fV1Bgb.js.map} +1 -1
  25. package/dist/{flowDiagram-v2-49332944-OmkAsRSo.js → flowDiagram-v2-49332944-B1NmgnBY.js} +6 -6
  26. package/dist/{flowDiagram-v2-49332944-OmkAsRSo.js.map → flowDiagram-v2-49332944-B1NmgnBY.js.map} +1 -1
  27. package/dist/{flowchart-elk-definition-27cc417a-DvRAXt5Q.js → flowchart-elk-definition-27cc417a-uJBgGb6w.js} +5 -5
  28. package/dist/{flowchart-elk-definition-27cc417a-DvRAXt5Q.js.map → flowchart-elk-definition-27cc417a-uJBgGb6w.js.map} +1 -1
  29. package/dist/{ganttDiagram-5c869e3b-CFIXQjia.js → ganttDiagram-5c869e3b-CP3jCxVz.js} +3 -3
  30. package/dist/{ganttDiagram-5c869e3b-CFIXQjia.js.map → ganttDiagram-5c869e3b-CP3jCxVz.js.map} +1 -1
  31. package/dist/{gitGraphDiagram-b9d81de9-dYIPtz9A.js → gitGraphDiagram-b9d81de9-C0mDyUJG.js} +2 -2
  32. package/dist/{gitGraphDiagram-b9d81de9-dYIPtz9A.js.map → gitGraphDiagram-b9d81de9-C0mDyUJG.js.map} +1 -1
  33. package/dist/{graph-DnI6iIW-.js → graph-D8osM22K.js} +2 -2
  34. package/dist/{graph-DnI6iIW-.js.map → graph-D8osM22K.js.map} +1 -1
  35. package/dist/{index-8fae9850-BrJpYy1U.js → index-8fae9850-LWne7Y_5.js} +7 -7
  36. package/dist/{index-8fae9850-BrJpYy1U.js.map → index-8fae9850-LWne7Y_5.js.map} +1 -1
  37. package/dist/{index-BdQ-n4gH.js → index-H0_TiiZ2.js} +24 -24
  38. package/dist/{index-BdQ-n4gH.js.map → index-H0_TiiZ2.js.map} +1 -1
  39. package/dist/{infoDiagram-db7b18fc-D02OQKc3.js → infoDiagram-db7b18fc-BUwIw4xq.js} +2 -2
  40. package/dist/{infoDiagram-db7b18fc-D02OQKc3.js.map → infoDiagram-db7b18fc-BUwIw4xq.js.map} +1 -1
  41. package/dist/{journeyDiagram-d5636530-DthrqUFi.js → journeyDiagram-d5636530-BcAzfkwS.js} +4 -4
  42. package/dist/{journeyDiagram-d5636530-DthrqUFi.js.map → journeyDiagram-d5636530-BcAzfkwS.js.map} +1 -1
  43. package/dist/kong-markdown.es.js +1 -1
  44. package/dist/kong-markdown.umd.js +1 -1
  45. package/dist/{layout-OFztbzEY.js → layout-ZVjoo1C9.js} +3 -3
  46. package/dist/{layout-OFztbzEY.js.map → layout-ZVjoo1C9.js.map} +1 -1
  47. package/dist/{line-BSAYYjII.js → line-Cw7WGRye.js} +2 -2
  48. package/dist/{line-BSAYYjII.js.map → line-Cw7WGRye.js.map} +1 -1
  49. package/dist/{linear-D6IIV3ES.js → linear-CM8CQPYx.js} +2 -2
  50. package/dist/{linear-D6IIV3ES.js.map → linear-CM8CQPYx.js.map} +1 -1
  51. package/dist/{mindmap-definition-377f8f1f-CP5Ij5zq.js → mindmap-definition-377f8f1f-CZ-84IMz.js} +3 -3
  52. package/dist/{mindmap-definition-377f8f1f-CP5Ij5zq.js.map → mindmap-definition-377f8f1f-CZ-84IMz.js.map} +1 -1
  53. package/dist/{pieDiagram-b0208e96-CEy_a3qY.js → pieDiagram-b0208e96-DWGdunAA.js} +3 -3
  54. package/dist/{pieDiagram-b0208e96-CEy_a3qY.js.map → pieDiagram-b0208e96-DWGdunAA.js.map} +1 -1
  55. package/dist/{quadrantDiagram-0332be45-D1m3bfLE.js → quadrantDiagram-0332be45-CcjioNyx.js} +3 -3
  56. package/dist/{quadrantDiagram-0332be45-D1m3bfLE.js.map → quadrantDiagram-0332be45-CcjioNyx.js.map} +1 -1
  57. package/dist/{requirementDiagram-bf7890df-BXOuPT18.js → requirementDiagram-bf7890df-Bhse_3cX.js} +5 -5
  58. package/dist/{requirementDiagram-bf7890df-BXOuPT18.js.map → requirementDiagram-bf7890df-Bhse_3cX.js.map} +1 -1
  59. package/dist/{sankeyDiagram-0acdec17-C_WfLS-d.js → sankeyDiagram-0acdec17-mp2WREQF.js} +2 -2
  60. package/dist/{sankeyDiagram-0acdec17-C_WfLS-d.js.map → sankeyDiagram-0acdec17-mp2WREQF.js.map} +1 -1
  61. package/dist/{sequenceDiagram-c18d009d-xoFAj6ID.js → sequenceDiagram-c18d009d-C2BOoE0J.js} +3 -3
  62. package/dist/{sequenceDiagram-c18d009d-xoFAj6ID.js.map → sequenceDiagram-c18d009d-C2BOoE0J.js.map} +1 -1
  63. package/dist/{stateDiagram-43596fc0-Dm1AkWdr.js → stateDiagram-43596fc0-DcFmBqVD.js} +6 -6
  64. package/dist/{stateDiagram-43596fc0-Dm1AkWdr.js.map → stateDiagram-43596fc0-DcFmBqVD.js.map} +1 -1
  65. package/dist/{stateDiagram-v2-2ead4f9c-X0XO1e_0.js → stateDiagram-v2-2ead4f9c-B0kAUaOw.js} +6 -6
  66. package/dist/{stateDiagram-v2-2ead4f9c-X0XO1e_0.js.map → stateDiagram-v2-2ead4f9c-B0kAUaOw.js.map} +1 -1
  67. package/dist/style.css +1 -1
  68. package/dist/{styles-6860f46c-g9ltY6y9.js → styles-6860f46c-CCfIsYmF.js} +2 -2
  69. package/dist/{styles-6860f46c-g9ltY6y9.js.map → styles-6860f46c-CCfIsYmF.js.map} +1 -1
  70. package/dist/{styles-7383a064-D9pZsmll.js → styles-7383a064-Z66HBsPQ.js} +5 -5
  71. package/dist/{styles-7383a064-D9pZsmll.js.map → styles-7383a064-Z66HBsPQ.js.map} +1 -1
  72. package/dist/{styles-b2c874b6-2MSTrrjT.js → styles-b2c874b6-vUP-zip8.js} +2 -2
  73. package/dist/{styles-b2c874b6-2MSTrrjT.js.map → styles-b2c874b6-vUP-zip8.js.map} +1 -1
  74. package/dist/{svgDrawCommon-0ee1b4e9-BiqdHuRv.js → svgDrawCommon-0ee1b4e9-BN89CkAa.js} +2 -2
  75. package/dist/{svgDrawCommon-0ee1b4e9-BiqdHuRv.js.map → svgDrawCommon-0ee1b4e9-BN89CkAa.js.map} +1 -1
  76. package/dist/{timeline-definition-d977decf-J4adcb4f.js → timeline-definition-d977decf-hPFfx-Ol.js} +3 -3
  77. package/dist/{timeline-definition-d977decf-J4adcb4f.js.map → timeline-definition-d977decf-hPFfx-Ol.js.map} +1 -1
  78. package/dist/{xychartDiagram-e50adddc-COrJQ_9O.js → xychartDiagram-e50adddc-rKOcwKj9.js} +5 -5
  79. package/dist/{xychartDiagram-e50adddc-COrJQ_9O.js.map → xychartDiagram-e50adddc-rKOcwKj9.js.map} +1 -1
  80. package/package.json +1 -1
  81. package/dist/channel-AStNV-TO.js +0 -6
  82. package/dist/clone-BEwR0ae8.js +0 -9
@@ -1 +1 @@
1
- {"version":3,"file":"c4Diagram-b947cdbb-DCrk3XXk.js","sources":["../node_modules/.pnpm/mermaid@10.8.0/node_modules/mermaid/dist/c4Diagram-b947cdbb.js"],"sourcesContent":["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-0603ccf8.js\";\nimport { select } from \"d3\";\nimport { d as drawRect$1, g as getNoteRect } from \"./svgDrawCommon-0ee1b4e9.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 boundarys = [\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 = boundarys.find((boundary2) => boundary2.alias === alias);\n if (old && alias === old.alias) {\n boundary = old;\n } else {\n boundary.alias = alias;\n boundarys.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 = boundarys.find((boundary2) => boundary2.alias === alias);\n if (old && alias === old.alias) {\n boundary = old;\n } else {\n boundary.alias = alias;\n boundarys.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 = boundarys.find((boundary2) => boundary2.alias === alias);\n if (old && alias === old.alias) {\n boundary = old;\n } else {\n boundary.alias = alias;\n boundarys.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 = boundarys.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 getBoundarys = function(parentBoundary) {\n if (parentBoundary === void 0 || parentBoundary === null) {\n return boundarys;\n } else {\n return boundarys.filter((boundary) => boundary.parentBoundary === parentBoundary);\n }\n};\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 boundarys = [\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 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 nextCurrentBoundarys = diagObj.db.getBoundarys(parentBoundaryAlias);\n if (nextCurrentBoundarys.length > 0) {\n drawInsideBoundary(\n diagram2,\n parentBoundaryAlias,\n currentBounds,\n nextCurrentBoundarys,\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"],"names":["parser","o","k","v","o2","l","$V0","$V1","$V2","$V3","$V4","$V5","$V6","$V7","$V8","$V9","$Va","$Vb","$Vc","$Vd","$Ve","$Vf","$Vg","$Vh","$Vi","$Vj","$Vk","$Vl","$Vm","$Vn","$Vo","$Vp","$Vq","$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","parser2","yytext","yyleng","yylineno","yy","yystate","$$","_$","$0","kv","str","hash","error","input","self","stack","tstack","vstack","lstack","table","TERROR","EOF","args","lexer2","sharedState","yyloc","ranges","lex","token","symbol","state","action","r","yyval","p","len","newState","expected","errStr","lexer","ch","lines","oldLines","n","past","next","pre","c2","match","indexed_rule","backup","tempMatch","index","rules","i","condition","yy_","$avoiding_name_collisions","YY_START","Parser","parser$1","c4ShapeArray","boundaryParseStack","currentBoundaryParse","parentBoundaryParse","boundarys","rels","title","wrapEnabled","c4ShapeInRow$1","c4BoundaryInRow$1","c4Type","getC4Type","setC4Type","c4TypeParam","sanitizeText","getConfig","addRel","type","from","to","label","techn","descr","sprite","tags","link","rel","old","rel2","key","value","autoWrap","addPersonOrSystem","typeC4Shape","alias","personOrSystem","personOrSystem2","addContainer","container","container2","addComponent","component","component2","addPersonOrSystemBoundary","boundary","boundary2","addContainerBoundary","addDeploymentNode","nodeType","popBoundaryParseStack","updateElStyle","elementName","bgColor","fontColor","borderColor","shadowing","shape","legendText","legendSprite","element","updateRelStyle","textColor","lineColor","offsetX","offsetY","updateLayoutConfig","c4ShapeInRowParam","c4BoundaryInRowParam","c4ShapeInRowValue","c4BoundaryInRowValue","getC4ShapeInRow","getC4BoundaryInRow","getCurrentBoundaryParse","getParentBoundaryParse","getC4ShapeArray","parentBoundary","getC4Shape","getC4ShapeKeys","getBoundarys","getRels","getTitle","setWrap","wrapSetting","clear","LINETYPE","ARROWTYPE","PLACEMENT","setTitle","txt","db","setAccTitle","getAccTitle","getAccDescription","setAccDescription","drawRect","elem","rectData","drawRect$1","drawImage","width","height","x","y","imageElem","sanitizedLink","sanitizeUrl","drawRels$1","rels2","conf2","relsElem","strokeColor","url","line","messageConf","_drawTextCandidateFunc","drawBoundary$1","boundaryElem","fillColor","attrsValue","boundaryConf","drawC4Shape","c4Shape","_a","personImg","c4ShapeElem","rect","getNoteRect","c4ShapeFontConf","getC4ShapeFont","textFontConf","insertDatabaseIcon","insertComputerIcon","insertClockIcon","insertArrowHead","insertArrowEnd","insertArrowFilledHead","insertDynamicNumber","insertArrowCrossHead","marker","cnf","byText","content","g","textAttrs","text","_setTextAttrs","byTspan","fontSize","fontFamily","fontWeight","common","dy","byFo","s","toText","fromTextAttrsDict","svgDraw","globalBoundaryMaxX","globalBoundaryMaxY","c4ShapeInRow","c4BoundaryInRow","conf","Bounds","diagObj","setConf","startx","stopx","starty","stopy","obj","val","fun","_startx","_stopx","_starty","_stopy","margin","assignWithDepth","c4ShapeFont","boundaryFont","messageFont","calcC4ShapeTextWH","textType","c4ShapeTextWrap","textConf","textLimitWidth","wrapLabel","calculateTextHeight","lineHeight","calculateTextWidth","drawBoundary","diagram2","bounds","boundaryTextWrap","boundaryLabelConf","drawC4ShapeArray","currentBounds","c4ShapeArray2","c4ShapeKeys","Y","c4ShapeKey","c4ShapeTypeConf","c4ShapeLabelConf","c4ShapeTypeConf2","c4ShapeTechnConf","rectHeight","rectWidth","c4ShapeDescrConf","Point","getIntersectPoint","fromNode","endPoint","x1","y1","x2","y2","fromCenterX","fromCenterY","dx","tanDYX","fromDYX","returnPoint","getIntersectPoints","endNode","endIntersectPoint","startPoint","drawRels","getC4ShapeObj","relTextWrap","relConf","points","drawInsideBoundary","parentBoundaryAlias","parentBounds","currentBoundaries","currentBoundary","currentBoundaryTextWrap","currentBoundaryLabelConf","currentBoundaryTypeConf","currentBoundaryDescrConf","_x","_y","currentPersonOrSystemArray","currentPersonOrSystemKeys","nextCurrentBoundarys","draw","_text","id","_version","securityLevel","sandboxElement","select","root","db2","log","screenBounds","title2","box","configureSvgSize","extraVertForTitle","renderer","getStyles","options","styles","diagram","c4","wrap"],"mappings":"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IAAI,IAAIC,GAAK,IAAIC,GAAK,IAAIC,GAAK,IAAIC,GAAK,IAAIC,GAAK,IAAIC,GAAK,IAAIC,GAAK,IAAIC,GAAK,IAAIC,GAAK,IAAIC,GAAK,IAAIC,GAAK,IAAIC,GAAK,IAAIC,GAAK,IAAIC,GAAK,IAAIC,IAAK,IAAIC,IAAK,IAAIC,IAAK,IAAIC,IAAK,IAAIC,IAAK,IAAIC,IAAK,IAAIC,IAAK,IAAIC,IAAK,IAAIC,IAAK,IAAIC,IAAK,IAAIC,IAAK,IAAIC,IAAK,IAAIC,IAAK,IAAIC,IAAK,IAAIC,IAAK,IAAIC,IAAK,IAAIC,GAAK,GAAE,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI1C,GAAK,IAAIC,GAAK,IAAIC,GAAK,IAAIC,GAAK,IAAIC,GAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAIC,GAAK,IAAIC,GAAK,IAAIC,GAAK,IAAIC,GAAK,IAAIC,GAAK,IAAIC,GAAK,IAAIC,GAAK,IAAI,IAAI,IAAIC,GAAK,IAAIC,GAAK,IAAIC,GAAK,IAAIC,GAAK,IAAIC,GAAK,IAAIC,GAAK,IAAIC,GAAK,IAAIC,GAAK,IAAIC,GAAK,IAAIC,GAAK,IAAIC,GAAK,IAAIC,GAAK,IAAIC,GAAK,IAAIC,GAAK,IAAIC,IAAK,IAAIC,IAAK,IAAIC,IAAK,IAAIC,IAAK,IAAIC,IAAK,IAAIC,IAAK,IAAIC,IAAK,IAAIC,IAAK,IAAIC,IAAK,IAAIC,IAAK,IAAIC,IAAK,IAAIC,IAAK,IAAIC,IAAK,IAAIC,IAAK,IAAIC,IAAK,IAAIC,IAAK,IAAIC,GAAK,GAAE,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI1C,GAAK,IAAIC,GAAK,IAAIC,GAAK,IAAIC,GAAK,IAAIC,GAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAIC,GAAK,IAAIC,GAAK,IAAIC,GAAK,IAAIC,GAAK,IAAIC,GAAK,IAAIC,GAAK,IAAIC,GAAK,IAAI,IAAI,IAAIC,GAAK,IAAIC,GAAK,IAAIC,GAAK,IAAIC,GAAK,IAAIC,GAAK,IAAIC,GAAK,I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","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"c4Diagram-b947cdbb-vwALH1WH.js","sources":["../node_modules/.pnpm/mermaid@10.8.0/node_modules/mermaid/dist/c4Diagram-b947cdbb.js"],"sourcesContent":["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-0603ccf8.js\";\nimport { select } from \"d3\";\nimport { d as drawRect$1, g as getNoteRect } from \"./svgDrawCommon-0ee1b4e9.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 boundarys = [\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 = boundarys.find((boundary2) => boundary2.alias === alias);\n if (old && alias === old.alias) {\n boundary = old;\n } else {\n boundary.alias = alias;\n boundarys.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 = boundarys.find((boundary2) => boundary2.alias === alias);\n if (old && alias === old.alias) {\n boundary = old;\n } else {\n boundary.alias = alias;\n boundarys.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 = boundarys.find((boundary2) => boundary2.alias === alias);\n if (old && alias === old.alias) {\n boundary = old;\n } else {\n boundary.alias = alias;\n boundarys.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 = boundarys.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 getBoundarys = function(parentBoundary) {\n if (parentBoundary === void 0 || parentBoundary === null) {\n return boundarys;\n } else {\n return boundarys.filter((boundary) => boundary.parentBoundary === parentBoundary);\n }\n};\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 boundarys = [\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 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 nextCurrentBoundarys = diagObj.db.getBoundarys(parentBoundaryAlias);\n if (nextCurrentBoundarys.length > 0) {\n drawInsideBoundary(\n diagram2,\n parentBoundaryAlias,\n currentBounds,\n nextCurrentBoundarys,\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"],"names":["parser","o","k","v","o2","l","$V0","$V1","$V2","$V3","$V4","$V5","$V6","$V7","$V8","$V9","$Va","$Vb","$Vc","$Vd","$Ve","$Vf","$Vg","$Vh","$Vi","$Vj","$Vk","$Vl","$Vm","$Vn","$Vo","$Vp","$Vq","$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","parser2","yytext","yyleng","yylineno","yy","yystate","$$","_$","$0","kv","str","hash","error","input","self","stack","tstack","vstack","lstack","table","TERROR","EOF","args","lexer2","sharedState","yyloc","ranges","lex","token","symbol","state","action","r","yyval","p","len","newState","expected","errStr","lexer","ch","lines","oldLines","n","past","next","pre","c2","match","indexed_rule","backup","tempMatch","index","rules","i","condition","yy_","$avoiding_name_collisions","YY_START","Parser","parser$1","c4ShapeArray","boundaryParseStack","currentBoundaryParse","parentBoundaryParse","boundarys","rels","title","wrapEnabled","c4ShapeInRow$1","c4BoundaryInRow$1","c4Type","getC4Type","setC4Type","c4TypeParam","sanitizeText","getConfig","addRel","type","from","to","label","techn","descr","sprite","tags","link","rel","old","rel2","key","value","autoWrap","addPersonOrSystem","typeC4Shape","alias","personOrSystem","personOrSystem2","addContainer","container","container2","addComponent","component","component2","addPersonOrSystemBoundary","boundary","boundary2","addContainerBoundary","addDeploymentNode","nodeType","popBoundaryParseStack","updateElStyle","elementName","bgColor","fontColor","borderColor","shadowing","shape","legendText","legendSprite","element","updateRelStyle","textColor","lineColor","offsetX","offsetY","updateLayoutConfig","c4ShapeInRowParam","c4BoundaryInRowParam","c4ShapeInRowValue","c4BoundaryInRowValue","getC4ShapeInRow","getC4BoundaryInRow","getCurrentBoundaryParse","getParentBoundaryParse","getC4ShapeArray","parentBoundary","getC4Shape","getC4ShapeKeys","getBoundarys","getRels","getTitle","setWrap","wrapSetting","clear","LINETYPE","ARROWTYPE","PLACEMENT","setTitle","txt","db","setAccTitle","getAccTitle","getAccDescription","setAccDescription","drawRect","elem","rectData","drawRect$1","drawImage","width","height","x","y","imageElem","sanitizedLink","sanitizeUrl","drawRels$1","rels2","conf2","relsElem","strokeColor","url","line","messageConf","_drawTextCandidateFunc","drawBoundary$1","boundaryElem","fillColor","attrsValue","boundaryConf","drawC4Shape","c4Shape","_a","personImg","c4ShapeElem","rect","getNoteRect","c4ShapeFontConf","getC4ShapeFont","textFontConf","insertDatabaseIcon","insertComputerIcon","insertClockIcon","insertArrowHead","insertArrowEnd","insertArrowFilledHead","insertDynamicNumber","insertArrowCrossHead","marker","cnf","byText","content","g","textAttrs","text","_setTextAttrs","byTspan","fontSize","fontFamily","fontWeight","common","dy","byFo","s","toText","fromTextAttrsDict","svgDraw","globalBoundaryMaxX","globalBoundaryMaxY","c4ShapeInRow","c4BoundaryInRow","conf","Bounds","diagObj","setConf","startx","stopx","starty","stopy","obj","val","fun","_startx","_stopx","_starty","_stopy","margin","assignWithDepth","c4ShapeFont","boundaryFont","messageFont","calcC4ShapeTextWH","textType","c4ShapeTextWrap","textConf","textLimitWidth","wrapLabel","calculateTextHeight","lineHeight","calculateTextWidth","drawBoundary","diagram2","bounds","boundaryTextWrap","boundaryLabelConf","drawC4ShapeArray","currentBounds","c4ShapeArray2","c4ShapeKeys","Y","c4ShapeKey","c4ShapeTypeConf","c4ShapeLabelConf","c4ShapeTypeConf2","c4ShapeTechnConf","rectHeight","rectWidth","c4ShapeDescrConf","Point","getIntersectPoint","fromNode","endPoint","x1","y1","x2","y2","fromCenterX","fromCenterY","dx","tanDYX","fromDYX","returnPoint","getIntersectPoints","endNode","endIntersectPoint","startPoint","drawRels","getC4ShapeObj","relTextWrap","relConf","points","drawInsideBoundary","parentBoundaryAlias","parentBounds","currentBoundaries","currentBoundary","currentBoundaryTextWrap","currentBoundaryLabelConf","currentBoundaryTypeConf","currentBoundaryDescrConf","_x","_y","currentPersonOrSystemArray","currentPersonOrSystemKeys","nextCurrentBoundarys","draw","_text","id","_version","securityLevel","sandboxElement","select","root","db2","log","screenBounds","title2","box","configureSvgSize","extraVertForTitle","renderer","getStyles","options","styles","diagram","c4","wrap"],"mappings":"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IAAI,IAAIC,GAAK,IAAIC,GAAK,IAAIC,GAAK,IAAIC,GAAK,IAAIC,GAAK,IAAIC,GAAK,IAAIC,GAAK,IAAIC,GAAK,IAAIC,GAAK,IAAIC,GAAK,IAAIC,GAAK,IAAIC,GAAK,IAAIC,GAAK,IAAIC,GAAK,IAAIC,IAAK,IAAIC,IAAK,IAAIC,IAAK,IAAIC,IAAK,IAAIC,IAAK,IAAIC,IAAK,IAAIC,IAAK,IAAIC,IAAK,IAAIC,IAAK,IAAIC,IAAK,IAAIC,IAAK,IAAIC,IAAK,IAAIC,IAAK,IAAIC,IAAK,IAAIC,IAAK,IAAIC,IAAK,IAAIC,GAAK,GAAE,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI1C,GAAK,IAAIC,GAAK,IAAIC,GAAK,IAAIC,GAAK,IAAIC,GAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAIC,GAAK,IAAIC,GAAK,IAAIC,GAAK,IAAIC,GAAK,IAAIC,GAAK,IAAIC,GAAK,IAAIC,GAAK,IAAI,IAAI,IAAIC,GAAK,IAAIC,GAAK,IAAIC,GAAK,IAAIC,GAAK,IAAIC,GAAK,IAAIC,GAAK,IAAIC,GAAK,IAAIC,GAAK,IAAIC,GAAK,IAAIC,GAAK,IAAIC,GAAK,IAAIC,GAAK,IAAIC,GAAK,IAAIC,GAAK,IAAIC,IAAK,IAAIC,IAAK,IAAIC,IAAK,IAAIC,IAAK,IAAIC,IAAK,IAAIC,IAAK,IAAIC,IAAK,IAAIC,IAAK,IAAIC,IAAK,IAAIC,IAAK,IAAIC,IAAK,IAAIC,IAAK,IAAIC,IAAK,IAAIC,IAAK,IAAIC,IAAK,IAAIC,IAAK,IAAIC,GAAK,GAAE,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI1C,GAAK,IAAIC,GAAK,IAAIC,GAAK,IAAIC,GAAK,IAAIC,GAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAIC,GAAK,IAAIC,GAAK,IAAIC,GAAK,IAAIC,GAAK,IAAIC,GAAK,IAAIC,GAAK,IAAIC,GAAK,IAAI,IAAI,IAAIC,GAAK,IAAIC,GAAK,IAAIC,GAAK,IAAIC,GAAK,IAAIC,GAAK,IAAIC,GAAK,I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","x_google_ignoreList":[0]}