All Downloads are FREE. Search and download functionalities are using the official Maven repository.

webapp.c4Diagram-ae766693.31110a2f.js.map Maven / Gradle / Ivy

{"mappings":"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AG,CAAE,GAAI,CAAC,EAAG,GAAG,AAAC,EAAG,CAAE,EAAG,CAAC,EAAE,AAAC,EAAG,CAAE,EAAG,CAAC,EAAG,EAAE,AAAC,EAAG,CAAE,EAAG,CAAC,EAAG,EAAE,AAAC,EAAG,CAAE,EAAG,CAAC,EAAG,EAAE,AAAC,EAAG,CAAE,EAAG,CAAC,EAAG,EAAE,AAAC,EAAG,CAAE,EAAG,CAAC,EAAG,EAAE,AAAC,EAAG,CAAE,EAAG,CAAC,EAAG,EAAE,AAAC,EAAG,CAAE,EAAG,CAAC,EAAG,EAAE,AAAC,EAAG,CAAE,GAAI,CAAC,EAAG,GAAG,AAAC,EAAG,CAAE,GAAI,CAAC,EAAG,GAAG,AAAC,EAAG,CAAE,GAAI,CAAC,EAAG,GAAG,AAAC,EAAG,CAAE,GAAI,CAAC,EAAG,GAAG,AAAC,EAAG,CAAE,GAAI,CAAC,EAAG,GAAG,AAAC,EAAG,CAAE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,GAAI,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,CAAI,EAAG,CAAE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,GAAI,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,CAAI,EAAG,CAAE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,GAAI,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,CAAI,EAAG,CAAE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,GAAI,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,CAAI,EAAG,CAAE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,GAAI,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,CAAI,EAAG,CAAE,GAAI,CAAC,EAAG,GAAG,AAAC,EAAG,EAAE,EAAK,CAAC,EAAG,GAAG,CAAE,CAAE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,CAAI,GAAI,EAAE,EAAK,CAAC,EAAG,GAAG,EAAG,EAAE,EAAK,CAAC,EAAG,GAAG,CAAE,CAAE,GAAI,CAAC,EAAG,GAAG,AAAC,GAAI,EAAE,EAAK,CAAC,EAAG,GAAG,CAAE,CAAE,GAAI,CAAC,EAAG,GAAG,AAAC,GAAI,EAAE,EAAK,CAAC,EAAG,GAAG,EAAG,EAAE,EAAK,CAAC,EAAG,GAAG,EAAG,CAAE,GAAI,CAAC,EAAG,GAAG,AAAC,EAAG,CAAE,GAAI,CAAC,EAAG,GAAG,AAAC,EAAG,EAAE,EAAK,CAAC,EAAG,GAAG,EAAG,CAAE,GAAI,GAAI,GAAI,GAAI,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,CAAI,EAAG,CAAE,GAAI,GAAI,GAAI,GAAI,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,CAAI,EAAG,CAAE,GAAI,GAAI,GAAI,GAAI,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,CAAI,EAAG,CAAE,GAAI,GAAI,GAAI,GAAI,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,CAAI,EAAG,CAAE,GAAI,GAAI,GAAI,GAAI,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,CAAI,EAAG,CAAE,GAAI,GAAI,GAAI,GAAI,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,CAAI,EAAG,CAAE,GAAI,GAAI,GAAI,GAAI,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,CAAI,EAAG,CAAE,GAAI,GAAI,GAAI,GAAI,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,CAAI,EAAG,CAAE,GAAI,GAAI,GAAI,GAAI,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,CAAI,EAAG,CAAE,GAAI,GAAI,GAAI,GAAI,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,CAAI,EAAG,CAAE,GAAI,GAAI,GAAI,GAAI,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,CAAI,EAAG,CAAE,GAAI,GAAI,GAAI,GAAI,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,CAAI,EAAG,CAAE,GAAI,GAAI,GAAI,GAAI,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,CAAI,EAAG,CAAE,GAAI,GAAI,GAAI,GAAI,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,CAAI,EAAG,CAAE,GAAI,GAAI,GAAI,GAAI,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,CAAI,EAAG,CAAE,GAAI,IAAK,GAAI,GAAI,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,CAAI,EAAG,CAAE,GAAI,IAAK,GAAI,GAAI,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,CAAI,EAAG,CAAE,GAAI,IAAK,GAAI,GAAI,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,CAAI,EAAG,CAAE,GAAI,IAAK,GAAI,GAAI,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,CAAI,EAAG,CAAE,GAAI,IAAK,GAAI,GAAI,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,CAAI,EAAG,EAAE,EAAK,CAAC,EAAG,GAAG,EAAG,CAAE,GAAI,IAAK,GAAI,GAAI,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,CAAI,EAAG,CAAE,GAAI,IAAK,GAAI,GAAI,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,CAAI,EAAG,CAAE,GAAI,IAAK,GAAI,GAAI,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,CAAI,EAAG,CAAE,GAAI,IAAK,GAAI,GAAI,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,CAAI,EAAG,CAAE,GAAI,IAAK,GAAI,GAAI,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,CAAI,EAAG,CAAE,GAAI,IAAK,GAAI,GAAI,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,CAAI,EAAG,CAAE,GAAI,IAAK,GAAI,GAAI,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,CAAI,EAAG,CAAE,GAAI,IAAK,GAAI,GAAI,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,CAAI,EAAG,CAAE,GAAI,IAAK,GAAI,GAAI,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,CAAI,EAAG,CAAE,GAAI,IAAK,GAAI,GAAI,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,CAAI,EAAG,CAAE,GAAI,IAAK,GAAI,GAAI,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,CAAI,EAAG,CAAE,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,GAAI,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,CAAI,EAAG,CAAE,GAAI,CAAC,EAAG,IAAI,CAAE,GAAI,CAAC,EAAG,IAAI,AAAC,EAAG,CAAE,GAAI,IAAK,GAAI,GAAI,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,CAAI,EAAG,CAAE,GAAI,IAAK,GAAI,GAAI,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,CAAI,EAAG,CAAE,GAAI,IAAK,GAAI,GAAI,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,CAAI,EAAG,CAAE,GAAI,IAAK,GAAI,GAAI,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,CAAI,EAAG,CAAE,GAAI,IAAK,GAAI,GAAI,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,CAAI,EAAG,CAAE,GAAI,IAAK,GAAI,GAAI,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,CAAI,EAAG,CAAE,GAAI,IAAK,GAAI,GAAI,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,CAAI,EAAG,CAAE,GAAI,CAAC,EAAG,IAAI,AAAC,EAAG,CAAE,GAAI,CAAC,EAAG,IAAI,AAAC,EAAG,CAAE,GAAI,CAAC,EAAG,IAAI,AA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","sources":["","node_modules/mermaid/dist/c4Diagram-ae766693.js","node_modules/mermaid/dist/svgDrawCommon-5e1cfd1d.js"],"sourcesContent":["\nfunction $parcel$export(e, n, v, s) {\n  Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});\n}\n\n      var $parcel$global = globalThis;\n    var parcelRequire = $parcel$global[\"parcelRequire3bab\"];\nvar parcelRegister = parcelRequire.register;\nparcelRegister(\"4GQge\", function(module, exports) {\n\n$parcel$export(module.exports, \"diagram\", () => $36a39f8f3ab768eb$export$6118d022d940d562);\n\nvar $4jcZX = parcelRequire(\"4jcZX\");\n\nvar $2YFJl = parcelRequire(\"2YFJl\");\n\nvar $2CvUP = parcelRequire(\"2CvUP\");\n\nvar $2ujND = parcelRequire(\"2ujND\");\nparcelRequire(\"eJNXH\");\nparcelRequire(\"gngdn\");\nparcelRequire(\"i8Fxz\");\n\n\n\n\n\nvar $36a39f8f3ab768eb$var$parser = function() {\n    var o = function(k, v, o2, l) {\n        for(o2 = o2 || {}, l = k.length; l--; o2[k[l]] = v);\n        return o2;\n    }, $V0 = [\n        1,\n        24\n    ], $V1 = [\n        1,\n        25\n    ], $V2 = [\n        1,\n        26\n    ], $V3 = [\n        1,\n        27\n    ], $V4 = [\n        1,\n        28\n    ], $V5 = [\n        1,\n        63\n    ], $V6 = [\n        1,\n        64\n    ], $V7 = [\n        1,\n        65\n    ], $V8 = [\n        1,\n        66\n    ], $V9 = [\n        1,\n        67\n    ], $Va = [\n        1,\n        68\n    ], $Vb = [\n        1,\n        69\n    ], $Vc = [\n        1,\n        29\n    ], $Vd = [\n        1,\n        30\n    ], $Ve = [\n        1,\n        31\n    ], $Vf = [\n        1,\n        32\n    ], $Vg = [\n        1,\n        33\n    ], $Vh = [\n        1,\n        34\n    ], $Vi = [\n        1,\n        35\n    ], $Vj = [\n        1,\n        36\n    ], $Vk = [\n        1,\n        37\n    ], $Vl = [\n        1,\n        38\n    ], $Vm = [\n        1,\n        39\n    ], $Vn = [\n        1,\n        40\n    ], $Vo = [\n        1,\n        41\n    ], $Vp = [\n        1,\n        42\n    ], $Vq = [\n        1,\n        43\n    ], $Vr = [\n        1,\n        44\n    ], $Vs = [\n        1,\n        45\n    ], $Vt = [\n        1,\n        46\n    ], $Vu = [\n        1,\n        47\n    ], $Vv = [\n        1,\n        48\n    ], $Vw = [\n        1,\n        50\n    ], $Vx = [\n        1,\n        51\n    ], $Vy = [\n        1,\n        52\n    ], $Vz = [\n        1,\n        53\n    ], $VA = [\n        1,\n        54\n    ], $VB = [\n        1,\n        55\n    ], $VC = [\n        1,\n        56\n    ], $VD = [\n        1,\n        57\n    ], $VE = [\n        1,\n        58\n    ], $VF = [\n        1,\n        59\n    ], $VG = [\n        1,\n        60\n    ], $VH = [\n        14,\n        42\n    ], $VI = [\n        14,\n        34,\n        36,\n        37,\n        38,\n        39,\n        40,\n        41,\n        42,\n        44,\n        45,\n        46,\n        47,\n        48,\n        49,\n        50,\n        51,\n        52,\n        53,\n        54,\n        55,\n        56,\n        57,\n        58,\n        59,\n        60,\n        61,\n        62,\n        63,\n        64,\n        65,\n        66,\n        67,\n        68,\n        69,\n        70,\n        71,\n        72,\n        73,\n        74\n    ], $VJ = [\n        12,\n        14,\n        34,\n        36,\n        37,\n        38,\n        39,\n        40,\n        41,\n        42,\n        44,\n        45,\n        46,\n        47,\n        48,\n        49,\n        50,\n        51,\n        52,\n        53,\n        54,\n        55,\n        56,\n        57,\n        58,\n        59,\n        60,\n        61,\n        62,\n        63,\n        64,\n        65,\n        66,\n        67,\n        68,\n        69,\n        70,\n        71,\n        72,\n        73,\n        74\n    ], $VK = [\n        1,\n        82\n    ], $VL = [\n        1,\n        83\n    ], $VM = [\n        1,\n        84\n    ], $VN = [\n        1,\n        85\n    ], $VO = [\n        12,\n        14,\n        42\n    ], $VP = [\n        12,\n        14,\n        33,\n        42\n    ], $VQ = [\n        12,\n        14,\n        33,\n        42,\n        76,\n        77,\n        79,\n        80\n    ], $VR = [\n        12,\n        33\n    ], $VS = [\n        34,\n        36,\n        37,\n        38,\n        39,\n        40,\n        41,\n        44,\n        45,\n        46,\n        47,\n        48,\n        49,\n        50,\n        51,\n        52,\n        53,\n        54,\n        55,\n        56,\n        57,\n        58,\n        59,\n        60,\n        61,\n        62,\n        63,\n        64,\n        65,\n        66,\n        67,\n        68,\n        69,\n        70,\n        71,\n        72,\n        73,\n        74\n    ];\n    var parser2 = {\n        trace: function trace() {},\n        yy: {},\n        symbols_: {\n            \"error\": 2,\n            \"start\": 3,\n            \"mermaidDoc\": 4,\n            \"direction\": 5,\n            \"direction_tb\": 6,\n            \"direction_bt\": 7,\n            \"direction_rl\": 8,\n            \"direction_lr\": 9,\n            \"graphConfig\": 10,\n            \"C4_CONTEXT\": 11,\n            \"NEWLINE\": 12,\n            \"statements\": 13,\n            \"EOF\": 14,\n            \"C4_CONTAINER\": 15,\n            \"C4_COMPONENT\": 16,\n            \"C4_DYNAMIC\": 17,\n            \"C4_DEPLOYMENT\": 18,\n            \"otherStatements\": 19,\n            \"diagramStatements\": 20,\n            \"otherStatement\": 21,\n            \"title\": 22,\n            \"accDescription\": 23,\n            \"acc_title\": 24,\n            \"acc_title_value\": 25,\n            \"acc_descr\": 26,\n            \"acc_descr_value\": 27,\n            \"acc_descr_multiline_value\": 28,\n            \"boundaryStatement\": 29,\n            \"boundaryStartStatement\": 30,\n            \"boundaryStopStatement\": 31,\n            \"boundaryStart\": 32,\n            \"LBRACE\": 33,\n            \"ENTERPRISE_BOUNDARY\": 34,\n            \"attributes\": 35,\n            \"SYSTEM_BOUNDARY\": 36,\n            \"BOUNDARY\": 37,\n            \"CONTAINER_BOUNDARY\": 38,\n            \"NODE\": 39,\n            \"NODE_L\": 40,\n            \"NODE_R\": 41,\n            \"RBRACE\": 42,\n            \"diagramStatement\": 43,\n            \"PERSON\": 44,\n            \"PERSON_EXT\": 45,\n            \"SYSTEM\": 46,\n            \"SYSTEM_DB\": 47,\n            \"SYSTEM_QUEUE\": 48,\n            \"SYSTEM_EXT\": 49,\n            \"SYSTEM_EXT_DB\": 50,\n            \"SYSTEM_EXT_QUEUE\": 51,\n            \"CONTAINER\": 52,\n            \"CONTAINER_DB\": 53,\n            \"CONTAINER_QUEUE\": 54,\n            \"CONTAINER_EXT\": 55,\n            \"CONTAINER_EXT_DB\": 56,\n            \"CONTAINER_EXT_QUEUE\": 57,\n            \"COMPONENT\": 58,\n            \"COMPONENT_DB\": 59,\n            \"COMPONENT_QUEUE\": 60,\n            \"COMPONENT_EXT\": 61,\n            \"COMPONENT_EXT_DB\": 62,\n            \"COMPONENT_EXT_QUEUE\": 63,\n            \"REL\": 64,\n            \"BIREL\": 65,\n            \"REL_U\": 66,\n            \"REL_D\": 67,\n            \"REL_L\": 68,\n            \"REL_R\": 69,\n            \"REL_B\": 70,\n            \"REL_INDEX\": 71,\n            \"UPDATE_EL_STYLE\": 72,\n            \"UPDATE_REL_STYLE\": 73,\n            \"UPDATE_LAYOUT_CONFIG\": 74,\n            \"attribute\": 75,\n            \"STR\": 76,\n            \"STR_KEY\": 77,\n            \"STR_VALUE\": 78,\n            \"ATTRIBUTE\": 79,\n            \"ATTRIBUTE_EMPTY\": 80,\n            \"$accept\": 0,\n            \"$end\": 1\n        },\n        terminals_: {\n            2: \"error\",\n            6: \"direction_tb\",\n            7: \"direction_bt\",\n            8: \"direction_rl\",\n            9: \"direction_lr\",\n            11: \"C4_CONTEXT\",\n            12: \"NEWLINE\",\n            14: \"EOF\",\n            15: \"C4_CONTAINER\",\n            16: \"C4_COMPONENT\",\n            17: \"C4_DYNAMIC\",\n            18: \"C4_DEPLOYMENT\",\n            22: \"title\",\n            23: \"accDescription\",\n            24: \"acc_title\",\n            25: \"acc_title_value\",\n            26: \"acc_descr\",\n            27: \"acc_descr_value\",\n            28: \"acc_descr_multiline_value\",\n            33: \"LBRACE\",\n            34: \"ENTERPRISE_BOUNDARY\",\n            36: \"SYSTEM_BOUNDARY\",\n            37: \"BOUNDARY\",\n            38: \"CONTAINER_BOUNDARY\",\n            39: \"NODE\",\n            40: \"NODE_L\",\n            41: \"NODE_R\",\n            42: \"RBRACE\",\n            44: \"PERSON\",\n            45: \"PERSON_EXT\",\n            46: \"SYSTEM\",\n            47: \"SYSTEM_DB\",\n            48: \"SYSTEM_QUEUE\",\n            49: \"SYSTEM_EXT\",\n            50: \"SYSTEM_EXT_DB\",\n            51: \"SYSTEM_EXT_QUEUE\",\n            52: \"CONTAINER\",\n            53: \"CONTAINER_DB\",\n            54: \"CONTAINER_QUEUE\",\n            55: \"CONTAINER_EXT\",\n            56: \"CONTAINER_EXT_DB\",\n            57: \"CONTAINER_EXT_QUEUE\",\n            58: \"COMPONENT\",\n            59: \"COMPONENT_DB\",\n            60: \"COMPONENT_QUEUE\",\n            61: \"COMPONENT_EXT\",\n            62: \"COMPONENT_EXT_DB\",\n            63: \"COMPONENT_EXT_QUEUE\",\n            64: \"REL\",\n            65: \"BIREL\",\n            66: \"REL_U\",\n            67: \"REL_D\",\n            68: \"REL_L\",\n            69: \"REL_R\",\n            70: \"REL_B\",\n            71: \"REL_INDEX\",\n            72: \"UPDATE_EL_STYLE\",\n            73: \"UPDATE_REL_STYLE\",\n            74: \"UPDATE_LAYOUT_CONFIG\",\n            76: \"STR\",\n            77: \"STR_KEY\",\n            78: \"STR_VALUE\",\n            79: \"ATTRIBUTE\",\n            80: \"ATTRIBUTE_EMPTY\"\n        },\n        productions_: [\n            0,\n            [\n                3,\n                1\n            ],\n            [\n                3,\n                1\n            ],\n            [\n                5,\n                1\n            ],\n            [\n                5,\n                1\n            ],\n            [\n                5,\n                1\n            ],\n            [\n                5,\n                1\n            ],\n            [\n                4,\n                1\n            ],\n            [\n                10,\n                4\n            ],\n            [\n                10,\n                4\n            ],\n            [\n                10,\n                4\n            ],\n            [\n                10,\n                4\n            ],\n            [\n                10,\n                4\n            ],\n            [\n                13,\n                1\n            ],\n            [\n                13,\n                1\n            ],\n            [\n                13,\n                2\n            ],\n            [\n                19,\n                1\n            ],\n            [\n                19,\n                2\n            ],\n            [\n                19,\n                3\n            ],\n            [\n                21,\n                1\n            ],\n            [\n                21,\n                1\n            ],\n            [\n                21,\n                2\n            ],\n            [\n                21,\n                2\n            ],\n            [\n                21,\n                1\n            ],\n            [\n                29,\n                3\n            ],\n            [\n                30,\n                3\n            ],\n            [\n                30,\n                3\n            ],\n            [\n                30,\n                4\n            ],\n            [\n                32,\n                2\n            ],\n            [\n                32,\n                2\n            ],\n            [\n                32,\n                2\n            ],\n            [\n                32,\n                2\n            ],\n            [\n                32,\n                2\n            ],\n            [\n                32,\n                2\n            ],\n            [\n                32,\n                2\n            ],\n            [\n                31,\n                1\n            ],\n            [\n                20,\n                1\n            ],\n            [\n                20,\n                2\n            ],\n            [\n                20,\n                3\n            ],\n            [\n                43,\n                2\n            ],\n            [\n                43,\n                2\n            ],\n            [\n                43,\n                2\n            ],\n            [\n                43,\n                2\n            ],\n            [\n                43,\n                2\n            ],\n            [\n                43,\n                2\n            ],\n            [\n                43,\n                2\n            ],\n            [\n                43,\n                2\n            ],\n            [\n                43,\n                2\n            ],\n            [\n                43,\n                2\n            ],\n            [\n                43,\n                2\n            ],\n            [\n                43,\n                2\n            ],\n            [\n                43,\n                2\n            ],\n            [\n                43,\n                2\n            ],\n            [\n                43,\n                2\n            ],\n            [\n                43,\n                2\n            ],\n            [\n                43,\n                2\n            ],\n            [\n                43,\n                2\n            ],\n            [\n                43,\n                2\n            ],\n            [\n                43,\n                2\n            ],\n            [\n                43,\n                1\n            ],\n            [\n                43,\n                2\n            ],\n            [\n                43,\n                2\n            ],\n            [\n                43,\n                2\n            ],\n            [\n                43,\n                2\n            ],\n            [\n                43,\n                2\n            ],\n            [\n                43,\n                2\n            ],\n            [\n                43,\n                2\n            ],\n            [\n                43,\n                2\n            ],\n            [\n                43,\n                2\n            ],\n            [\n                43,\n                2\n            ],\n            [\n                43,\n                2\n            ],\n            [\n                35,\n                1\n            ],\n            [\n                35,\n                2\n            ],\n            [\n                75,\n                1\n            ],\n            [\n                75,\n                2\n            ],\n            [\n                75,\n                1\n            ],\n            [\n                75,\n                1\n            ]\n        ],\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.$ = [\n                        $$[$0]\n                    ];\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: [\n            {\n                3: 1,\n                4: 2,\n                5: 3,\n                6: [\n                    1,\n                    5\n                ],\n                7: [\n                    1,\n                    6\n                ],\n                8: [\n                    1,\n                    7\n                ],\n                9: [\n                    1,\n                    8\n                ],\n                10: 4,\n                11: [\n                    1,\n                    9\n                ],\n                15: [\n                    1,\n                    10\n                ],\n                16: [\n                    1,\n                    11\n                ],\n                17: [\n                    1,\n                    12\n                ],\n                18: [\n                    1,\n                    13\n                ]\n            },\n            {\n                1: [\n                    3\n                ]\n            },\n            {\n                1: [\n                    2,\n                    1\n                ]\n            },\n            {\n                1: [\n                    2,\n                    2\n                ]\n            },\n            {\n                1: [\n                    2,\n                    7\n                ]\n            },\n            {\n                1: [\n                    2,\n                    3\n                ]\n            },\n            {\n                1: [\n                    2,\n                    4\n                ]\n            },\n            {\n                1: [\n                    2,\n                    5\n                ]\n            },\n            {\n                1: [\n                    2,\n                    6\n                ]\n            },\n            {\n                12: [\n                    1,\n                    14\n                ]\n            },\n            {\n                12: [\n                    1,\n                    15\n                ]\n            },\n            {\n                12: [\n                    1,\n                    16\n                ]\n            },\n            {\n                12: [\n                    1,\n                    17\n                ]\n            },\n            {\n                12: [\n                    1,\n                    18\n                ]\n            },\n            {\n                13: 19,\n                19: 20,\n                20: 21,\n                21: 22,\n                22: $V0,\n                23: $V1,\n                24: $V2,\n                26: $V3,\n                28: $V4,\n                29: 49,\n                30: 61,\n                32: 62,\n                34: $V5,\n                36: $V6,\n                37: $V7,\n                38: $V8,\n                39: $V9,\n                40: $Va,\n                41: $Vb,\n                43: 23,\n                44: $Vc,\n                45: $Vd,\n                46: $Ve,\n                47: $Vf,\n                48: $Vg,\n                49: $Vh,\n                50: $Vi,\n                51: $Vj,\n                52: $Vk,\n                53: $Vl,\n                54: $Vm,\n                55: $Vn,\n                56: $Vo,\n                57: $Vp,\n                58: $Vq,\n                59: $Vr,\n                60: $Vs,\n                61: $Vt,\n                62: $Vu,\n                63: $Vv,\n                64: $Vw,\n                65: $Vx,\n                66: $Vy,\n                67: $Vz,\n                68: $VA,\n                69: $VB,\n                70: $VC,\n                71: $VD,\n                72: $VE,\n                73: $VF,\n                74: $VG\n            },\n            {\n                13: 70,\n                19: 20,\n                20: 21,\n                21: 22,\n                22: $V0,\n                23: $V1,\n                24: $V2,\n                26: $V3,\n                28: $V4,\n                29: 49,\n                30: 61,\n                32: 62,\n                34: $V5,\n                36: $V6,\n                37: $V7,\n                38: $V8,\n                39: $V9,\n                40: $Va,\n                41: $Vb,\n                43: 23,\n                44: $Vc,\n                45: $Vd,\n                46: $Ve,\n                47: $Vf,\n                48: $Vg,\n                49: $Vh,\n                50: $Vi,\n                51: $Vj,\n                52: $Vk,\n                53: $Vl,\n                54: $Vm,\n                55: $Vn,\n                56: $Vo,\n                57: $Vp,\n                58: $Vq,\n                59: $Vr,\n                60: $Vs,\n                61: $Vt,\n                62: $Vu,\n                63: $Vv,\n                64: $Vw,\n                65: $Vx,\n                66: $Vy,\n                67: $Vz,\n                68: $VA,\n                69: $VB,\n                70: $VC,\n                71: $VD,\n                72: $VE,\n                73: $VF,\n                74: $VG\n            },\n            {\n                13: 71,\n                19: 20,\n                20: 21,\n                21: 22,\n                22: $V0,\n                23: $V1,\n                24: $V2,\n                26: $V3,\n                28: $V4,\n                29: 49,\n                30: 61,\n                32: 62,\n                34: $V5,\n                36: $V6,\n                37: $V7,\n                38: $V8,\n                39: $V9,\n                40: $Va,\n                41: $Vb,\n                43: 23,\n                44: $Vc,\n                45: $Vd,\n                46: $Ve,\n                47: $Vf,\n                48: $Vg,\n                49: $Vh,\n                50: $Vi,\n                51: $Vj,\n                52: $Vk,\n                53: $Vl,\n                54: $Vm,\n                55: $Vn,\n                56: $Vo,\n                57: $Vp,\n                58: $Vq,\n                59: $Vr,\n                60: $Vs,\n                61: $Vt,\n                62: $Vu,\n                63: $Vv,\n                64: $Vw,\n                65: $Vx,\n                66: $Vy,\n                67: $Vz,\n                68: $VA,\n                69: $VB,\n                70: $VC,\n                71: $VD,\n                72: $VE,\n                73: $VF,\n                74: $VG\n            },\n            {\n                13: 72,\n                19: 20,\n                20: 21,\n                21: 22,\n                22: $V0,\n                23: $V1,\n                24: $V2,\n                26: $V3,\n                28: $V4,\n                29: 49,\n                30: 61,\n                32: 62,\n                34: $V5,\n                36: $V6,\n                37: $V7,\n                38: $V8,\n                39: $V9,\n                40: $Va,\n                41: $Vb,\n                43: 23,\n                44: $Vc,\n                45: $Vd,\n                46: $Ve,\n                47: $Vf,\n                48: $Vg,\n                49: $Vh,\n                50: $Vi,\n                51: $Vj,\n                52: $Vk,\n                53: $Vl,\n                54: $Vm,\n                55: $Vn,\n                56: $Vo,\n                57: $Vp,\n                58: $Vq,\n                59: $Vr,\n                60: $Vs,\n                61: $Vt,\n                62: $Vu,\n                63: $Vv,\n                64: $Vw,\n                65: $Vx,\n                66: $Vy,\n                67: $Vz,\n                68: $VA,\n                69: $VB,\n                70: $VC,\n                71: $VD,\n                72: $VE,\n                73: $VF,\n                74: $VG\n            },\n            {\n                13: 73,\n                19: 20,\n                20: 21,\n                21: 22,\n                22: $V0,\n                23: $V1,\n                24: $V2,\n                26: $V3,\n                28: $V4,\n                29: 49,\n                30: 61,\n                32: 62,\n                34: $V5,\n                36: $V6,\n                37: $V7,\n                38: $V8,\n                39: $V9,\n                40: $Va,\n                41: $Vb,\n                43: 23,\n                44: $Vc,\n                45: $Vd,\n                46: $Ve,\n                47: $Vf,\n                48: $Vg,\n                49: $Vh,\n                50: $Vi,\n                51: $Vj,\n                52: $Vk,\n                53: $Vl,\n                54: $Vm,\n                55: $Vn,\n                56: $Vo,\n                57: $Vp,\n                58: $Vq,\n                59: $Vr,\n                60: $Vs,\n                61: $Vt,\n                62: $Vu,\n                63: $Vv,\n                64: $Vw,\n                65: $Vx,\n                66: $Vy,\n                67: $Vz,\n                68: $VA,\n                69: $VB,\n                70: $VC,\n                71: $VD,\n                72: $VE,\n                73: $VF,\n                74: $VG\n            },\n            {\n                14: [\n                    1,\n                    74\n                ]\n            },\n            o($VH, [\n                2,\n                13\n            ], {\n                43: 23,\n                29: 49,\n                30: 61,\n                32: 62,\n                20: 75,\n                34: $V5,\n                36: $V6,\n                37: $V7,\n                38: $V8,\n                39: $V9,\n                40: $Va,\n                41: $Vb,\n                44: $Vc,\n                45: $Vd,\n                46: $Ve,\n                47: $Vf,\n                48: $Vg,\n                49: $Vh,\n                50: $Vi,\n                51: $Vj,\n                52: $Vk,\n                53: $Vl,\n                54: $Vm,\n                55: $Vn,\n                56: $Vo,\n                57: $Vp,\n                58: $Vq,\n                59: $Vr,\n                60: $Vs,\n                61: $Vt,\n                62: $Vu,\n                63: $Vv,\n                64: $Vw,\n                65: $Vx,\n                66: $Vy,\n                67: $Vz,\n                68: $VA,\n                69: $VB,\n                70: $VC,\n                71: $VD,\n                72: $VE,\n                73: $VF,\n                74: $VG\n            }),\n            o($VH, [\n                2,\n                14\n            ]),\n            o($VI, [\n                2,\n                16\n            ], {\n                12: [\n                    1,\n                    76\n                ]\n            }),\n            o($VH, [\n                2,\n                36\n            ], {\n                12: [\n                    1,\n                    77\n                ]\n            }),\n            o($VJ, [\n                2,\n                19\n            ]),\n            o($VJ, [\n                2,\n                20\n            ]),\n            {\n                25: [\n                    1,\n                    78\n                ]\n            },\n            {\n                27: [\n                    1,\n                    79\n                ]\n            },\n            o($VJ, [\n                2,\n                23\n            ]),\n            {\n                35: 80,\n                75: 81,\n                76: $VK,\n                77: $VL,\n                79: $VM,\n                80: $VN\n            },\n            {\n                35: 86,\n                75: 81,\n                76: $VK,\n                77: $VL,\n                79: $VM,\n                80: $VN\n            },\n            {\n                35: 87,\n                75: 81,\n                76: $VK,\n                77: $VL,\n                79: $VM,\n                80: $VN\n            },\n            {\n                35: 88,\n                75: 81,\n                76: $VK,\n                77: $VL,\n                79: $VM,\n                80: $VN\n            },\n            {\n                35: 89,\n                75: 81,\n                76: $VK,\n                77: $VL,\n                79: $VM,\n                80: $VN\n            },\n            {\n                35: 90,\n                75: 81,\n                76: $VK,\n                77: $VL,\n                79: $VM,\n                80: $VN\n            },\n            {\n                35: 91,\n                75: 81,\n                76: $VK,\n                77: $VL,\n                79: $VM,\n                80: $VN\n            },\n            {\n                35: 92,\n                75: 81,\n                76: $VK,\n                77: $VL,\n                79: $VM,\n                80: $VN\n            },\n            {\n                35: 93,\n                75: 81,\n                76: $VK,\n                77: $VL,\n                79: $VM,\n                80: $VN\n            },\n            {\n                35: 94,\n                75: 81,\n                76: $VK,\n                77: $VL,\n                79: $VM,\n                80: $VN\n            },\n            {\n                35: 95,\n                75: 81,\n                76: $VK,\n                77: $VL,\n                79: $VM,\n                80: $VN\n            },\n            {\n                35: 96,\n                75: 81,\n                76: $VK,\n                77: $VL,\n                79: $VM,\n                80: $VN\n            },\n            {\n                35: 97,\n                75: 81,\n                76: $VK,\n                77: $VL,\n                79: $VM,\n                80: $VN\n            },\n            {\n                35: 98,\n                75: 81,\n                76: $VK,\n                77: $VL,\n                79: $VM,\n                80: $VN\n            },\n            {\n                35: 99,\n                75: 81,\n                76: $VK,\n                77: $VL,\n                79: $VM,\n                80: $VN\n            },\n            {\n                35: 100,\n                75: 81,\n                76: $VK,\n                77: $VL,\n                79: $VM,\n                80: $VN\n            },\n            {\n                35: 101,\n                75: 81,\n                76: $VK,\n                77: $VL,\n                79: $VM,\n                80: $VN\n            },\n            {\n                35: 102,\n                75: 81,\n                76: $VK,\n                77: $VL,\n                79: $VM,\n                80: $VN\n            },\n            {\n                35: 103,\n                75: 81,\n                76: $VK,\n                77: $VL,\n                79: $VM,\n                80: $VN\n            },\n            {\n                35: 104,\n                75: 81,\n                76: $VK,\n                77: $VL,\n                79: $VM,\n                80: $VN\n            },\n            o($VO, [\n                2,\n                59\n            ]),\n            {\n                35: 105,\n                75: 81,\n                76: $VK,\n                77: $VL,\n                79: $VM,\n                80: $VN\n            },\n            {\n                35: 106,\n                75: 81,\n                76: $VK,\n                77: $VL,\n                79: $VM,\n                80: $VN\n            },\n            {\n                35: 107,\n                75: 81,\n                76: $VK,\n                77: $VL,\n                79: $VM,\n                80: $VN\n            },\n            {\n                35: 108,\n                75: 81,\n                76: $VK,\n                77: $VL,\n                79: $VM,\n                80: $VN\n            },\n            {\n                35: 109,\n                75: 81,\n                76: $VK,\n                77: $VL,\n                79: $VM,\n                80: $VN\n            },\n            {\n                35: 110,\n                75: 81,\n                76: $VK,\n                77: $VL,\n                79: $VM,\n                80: $VN\n            },\n            {\n                35: 111,\n                75: 81,\n                76: $VK,\n                77: $VL,\n                79: $VM,\n                80: $VN\n            },\n            {\n                35: 112,\n                75: 81,\n                76: $VK,\n                77: $VL,\n                79: $VM,\n                80: $VN\n            },\n            {\n                35: 113,\n                75: 81,\n                76: $VK,\n                77: $VL,\n                79: $VM,\n                80: $VN\n            },\n            {\n                35: 114,\n                75: 81,\n                76: $VK,\n                77: $VL,\n                79: $VM,\n                80: $VN\n            },\n            {\n                35: 115,\n                75: 81,\n                76: $VK,\n                77: $VL,\n                79: $VM,\n                80: $VN\n            },\n            {\n                20: 116,\n                29: 49,\n                30: 61,\n                32: 62,\n                34: $V5,\n                36: $V6,\n                37: $V7,\n                38: $V8,\n                39: $V9,\n                40: $Va,\n                41: $Vb,\n                43: 23,\n                44: $Vc,\n                45: $Vd,\n                46: $Ve,\n                47: $Vf,\n                48: $Vg,\n                49: $Vh,\n                50: $Vi,\n                51: $Vj,\n                52: $Vk,\n                53: $Vl,\n                54: $Vm,\n                55: $Vn,\n                56: $Vo,\n                57: $Vp,\n                58: $Vq,\n                59: $Vr,\n                60: $Vs,\n                61: $Vt,\n                62: $Vu,\n                63: $Vv,\n                64: $Vw,\n                65: $Vx,\n                66: $Vy,\n                67: $Vz,\n                68: $VA,\n                69: $VB,\n                70: $VC,\n                71: $VD,\n                72: $VE,\n                73: $VF,\n                74: $VG\n            },\n            {\n                12: [\n                    1,\n                    118\n                ],\n                33: [\n                    1,\n                    117\n                ]\n            },\n            {\n                35: 119,\n                75: 81,\n                76: $VK,\n                77: $VL,\n                79: $VM,\n                80: $VN\n            },\n            {\n                35: 120,\n                75: 81,\n                76: $VK,\n                77: $VL,\n                79: $VM,\n                80: $VN\n            },\n            {\n                35: 121,\n                75: 81,\n                76: $VK,\n                77: $VL,\n                79: $VM,\n                80: $VN\n            },\n            {\n                35: 122,\n                75: 81,\n                76: $VK,\n                77: $VL,\n                79: $VM,\n                80: $VN\n            },\n            {\n                35: 123,\n                75: 81,\n                76: $VK,\n                77: $VL,\n                79: $VM,\n                80: $VN\n            },\n            {\n                35: 124,\n                75: 81,\n                76: $VK,\n                77: $VL,\n                79: $VM,\n                80: $VN\n            },\n            {\n                35: 125,\n                75: 81,\n                76: $VK,\n                77: $VL,\n                79: $VM,\n                80: $VN\n            },\n            {\n                14: [\n                    1,\n                    126\n                ]\n            },\n            {\n                14: [\n                    1,\n                    127\n                ]\n            },\n            {\n                14: [\n                    1,\n                    128\n                ]\n            },\n            {\n                14: [\n                    1,\n                    129\n                ]\n            },\n            {\n                1: [\n                    2,\n                    8\n                ]\n            },\n            o($VH, [\n                2,\n                15\n            ]),\n            o($VI, [\n                2,\n                17\n            ], {\n                21: 22,\n                19: 130,\n                22: $V0,\n                23: $V1,\n                24: $V2,\n                26: $V3,\n                28: $V4\n            }),\n            o($VH, [\n                2,\n                37\n            ], {\n                19: 20,\n                20: 21,\n                21: 22,\n                43: 23,\n                29: 49,\n                30: 61,\n                32: 62,\n                13: 131,\n                22: $V0,\n                23: $V1,\n                24: $V2,\n                26: $V3,\n                28: $V4,\n                34: $V5,\n                36: $V6,\n                37: $V7,\n                38: $V8,\n                39: $V9,\n                40: $Va,\n                41: $Vb,\n                44: $Vc,\n                45: $Vd,\n                46: $Ve,\n                47: $Vf,\n                48: $Vg,\n                49: $Vh,\n                50: $Vi,\n                51: $Vj,\n                52: $Vk,\n                53: $Vl,\n                54: $Vm,\n                55: $Vn,\n                56: $Vo,\n                57: $Vp,\n                58: $Vq,\n                59: $Vr,\n                60: $Vs,\n                61: $Vt,\n                62: $Vu,\n                63: $Vv,\n                64: $Vw,\n                65: $Vx,\n                66: $Vy,\n                67: $Vz,\n                68: $VA,\n                69: $VB,\n                70: $VC,\n                71: $VD,\n                72: $VE,\n                73: $VF,\n                74: $VG\n            }),\n            o($VJ, [\n                2,\n                21\n            ]),\n            o($VJ, [\n                2,\n                22\n            ]),\n            o($VO, [\n                2,\n                39\n            ]),\n            o($VP, [\n                2,\n                71\n            ], {\n                75: 81,\n                35: 132,\n                76: $VK,\n                77: $VL,\n                79: $VM,\n                80: $VN\n            }),\n            o($VQ, [\n                2,\n                73\n            ]),\n            {\n                78: [\n                    1,\n                    133\n                ]\n            },\n            o($VQ, [\n                2,\n                75\n            ]),\n            o($VQ, [\n                2,\n                76\n            ]),\n            o($VO, [\n                2,\n                40\n            ]),\n            o($VO, [\n                2,\n                41\n            ]),\n            o($VO, [\n                2,\n                42\n            ]),\n            o($VO, [\n                2,\n                43\n            ]),\n            o($VO, [\n                2,\n                44\n            ]),\n            o($VO, [\n                2,\n                45\n            ]),\n            o($VO, [\n                2,\n                46\n            ]),\n            o($VO, [\n                2,\n                47\n            ]),\n            o($VO, [\n                2,\n                48\n            ]),\n            o($VO, [\n                2,\n                49\n            ]),\n            o($VO, [\n                2,\n                50\n            ]),\n            o($VO, [\n                2,\n                51\n            ]),\n            o($VO, [\n                2,\n                52\n            ]),\n            o($VO, [\n                2,\n                53\n            ]),\n            o($VO, [\n                2,\n                54\n            ]),\n            o($VO, [\n                2,\n                55\n            ]),\n            o($VO, [\n                2,\n                56\n            ]),\n            o($VO, [\n                2,\n                57\n            ]),\n            o($VO, [\n                2,\n                58\n            ]),\n            o($VO, [\n                2,\n                60\n            ]),\n            o($VO, [\n                2,\n                61\n            ]),\n            o($VO, [\n                2,\n                62\n            ]),\n            o($VO, [\n                2,\n                63\n            ]),\n            o($VO, [\n                2,\n                64\n            ]),\n            o($VO, [\n                2,\n                65\n            ]),\n            o($VO, [\n                2,\n                66\n            ]),\n            o($VO, [\n                2,\n                67\n            ]),\n            o($VO, [\n                2,\n                68\n            ]),\n            o($VO, [\n                2,\n                69\n            ]),\n            o($VO, [\n                2,\n                70\n            ]),\n            {\n                31: 134,\n                42: [\n                    1,\n                    135\n                ]\n            },\n            {\n                12: [\n                    1,\n                    136\n                ]\n            },\n            {\n                33: [\n                    1,\n                    137\n                ]\n            },\n            o($VR, [\n                2,\n                28\n            ]),\n            o($VR, [\n                2,\n                29\n            ]),\n            o($VR, [\n                2,\n                30\n            ]),\n            o($VR, [\n                2,\n                31\n            ]),\n            o($VR, [\n                2,\n                32\n            ]),\n            o($VR, [\n                2,\n                33\n            ]),\n            o($VR, [\n                2,\n                34\n            ]),\n            {\n                1: [\n                    2,\n                    9\n                ]\n            },\n            {\n                1: [\n                    2,\n                    10\n                ]\n            },\n            {\n                1: [\n                    2,\n                    11\n                ]\n            },\n            {\n                1: [\n                    2,\n                    12\n                ]\n            },\n            o($VI, [\n                2,\n                18\n            ]),\n            o($VH, [\n                2,\n                38\n            ]),\n            o($VP, [\n                2,\n                72\n            ]),\n            o($VQ, [\n                2,\n                74\n            ]),\n            o($VO, [\n                2,\n                24\n            ]),\n            o($VO, [\n                2,\n                35\n            ]),\n            o($VS, [\n                2,\n                25\n            ]),\n            o($VS, [\n                2,\n                26\n            ], {\n                12: [\n                    1,\n                    138\n                ]\n            }),\n            o($VS, [\n                2,\n                27\n            ])\n        ],\n        defaultActions: {\n            2: [\n                2,\n                1\n            ],\n            3: [\n                2,\n                2\n            ],\n            4: [\n                2,\n                7\n            ],\n            5: [\n                2,\n                3\n            ],\n            6: [\n                2,\n                4\n            ],\n            7: [\n                2,\n                5\n            ],\n            8: [\n                2,\n                6\n            ],\n            74: [\n                2,\n                8\n            ],\n            126: [\n                2,\n                9\n            ],\n            127: [\n                2,\n                10\n            ],\n            128: [\n                2,\n                11\n            ],\n            129: [\n                2,\n                12\n            ]\n        },\n        parseError: function parseError(str, hash) {\n            if (hash.recoverable) 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 = [\n                0\n            ], tstack = [], vstack = [\n                null\n            ], 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 = {\n                yy: {}\n            };\n            for(var k in this.yy)if (Object.prototype.hasOwnProperty.call(this.yy, k)) sharedState.yy[k] = this.yy[k];\n            lexer2.setInput(input, sharedState.yy);\n            sharedState.yy.lexer = lexer2;\n            sharedState.yy.parser = this;\n            if (typeof lexer2.yylloc == \"undefined\") lexer2.yylloc = {};\n            var yyloc = lexer2.yylloc;\n            lstack.push(yyloc);\n            var ranges = lexer2.options && lexer2.options.ranges;\n            if (typeof sharedState.yy.parseError === \"function\") this.parseError = sharedState.yy.parseError;\n            else this.parseError = Object.getPrototypeOf(this).parseError;\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]) action = this.defaultActions[state];\n                else {\n                    if (symbol === null || typeof symbol == \"undefined\") symbol = lex();\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])if (this.terminals_[p] && p > TERROR) expected.push(\"'\" + this.terminals_[p] + \"'\");\n                    if (lexer2.showPosition) errStr = \"Parse error on line \" + (yylineno + 1) + \":\\n\" + lexer2.showPosition() + \"\\nExpecting \" + expected.join(\", \") + \", got '\" + (this.terminals_[symbol] || symbol) + \"'\";\n                    else errStr = \"Parse error on line \" + (yylineno + 1) + \": Unexpected \" + (symbol == EOF ? \"end of input\" : \"'\" + (this.terminals_[symbol] || symbol) + \"'\");\n                    this.parseError(errStr, {\n                        text: lexer2.match,\n                        token: this.terminals_[symbol] || symbol,\n                        line: lexer2.yylineno,\n                        loc: yyloc,\n                        expected: expected\n                    });\n                }\n                if (action[0] instanceof Array && action.length > 1) throw new Error(\"Parse Error: multiple actions possible at state: \" + state + \", token: \" + symbol);\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                        yyleng = lexer2.yyleng;\n                        yytext = lexer2.yytext;\n                        yylineno = lexer2.yylineno;\n                        yyloc = lexer2.yylloc;\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) yyval._$.range = [\n                            lstack[lstack.length - (len || 1)].range[0],\n                            lstack[lstack.length - 1].range[1]\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\") return r;\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) this.yy.parser.parseError(str, hash);\n                else throw new Error(str);\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 = [\n                    \"INITIAL\"\n                ];\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) this.yylloc.range = [\n                    0,\n                    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 this.yylloc.last_column++;\n                if (this.options.ranges) this.yylloc.range[1]++;\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) this.yylineno -= lines.length - 1;\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) this.yylloc.range = [\n                    r[0],\n                    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) this._backtrack = true;\n                else 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                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) next += this._input.substr(0, 20 - next.length);\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) backup.yylloc.range = this.yylloc.range.slice(0);\n                }\n                lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n                if (lines) this.yylineno += lines.length;\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) this.yylloc.range = [\n                    this.offset,\n                    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) this.done = false;\n                if (token) return token;\n                else if (this._backtrack) {\n                    for(var k in backup)this[k] = backup[k];\n                    return false;\n                }\n                return false;\n            },\n            // return next match in input\n            next: function() {\n                if (this.done) return this.EOF;\n                if (!this._input) this.done = true;\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) return token;\n                            else if (this._backtrack) {\n                                match = false;\n                                continue;\n                            } else return false;\n                        } else if (!this.options.flex) break;\n                    }\n                }\n                if (match) {\n                    token = this.test_match(match, rules[index]);\n                    if (token !== false) return token;\n                    return false;\n                }\n                if (this._input === \"\") return this.EOF;\n                else 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            // return next match that has a token\n            lex: function lex() {\n                var r = this.next();\n                if (r) return r;\n                else return this.lex();\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) return this.conditionStack.pop();\n                else return this.conditionStack[0];\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]) return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n                else return this.conditions[\"INITIAL\"].rules;\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) return this.conditionStack[n];\n                else return \"INITIAL\";\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: [\n                /^(?:.*direction\\s+TB[^\\n]*)/,\n                /^(?:.*direction\\s+BT[^\\n]*)/,\n                /^(?:.*direction\\s+RL[^\\n]*)/,\n                /^(?:.*direction\\s+LR[^\\n]*)/,\n                /^(?:title\\s[^#\\n;]+)/,\n                /^(?:accDescription\\s[^#\\n;]+)/,\n                /^(?:accTitle\\s*:\\s*)/,\n                /^(?:(?!\\n||)*[^\\n]*)/,\n                /^(?:accDescr\\s*:\\s*)/,\n                /^(?:(?!\\n||)*[^\\n]*)/,\n                /^(?:accDescr\\s*\\{\\s*)/,\n                /^(?:[\\}])/,\n                /^(?:[^\\}]*)/,\n                /^(?:%%(?!\\{)*[^\\n]*(\\r?\\n?)+)/,\n                /^(?:%%[^\\n]*(\\r?\\n)*)/,\n                /^(?:\\s*(\\r?\\n)+)/,\n                /^(?:\\s+)/,\n                /^(?:C4Context\\b)/,\n                /^(?:C4Container\\b)/,\n                /^(?:C4Component\\b)/,\n                /^(?:C4Dynamic\\b)/,\n                /^(?:C4Deployment\\b)/,\n                /^(?:Person_Ext\\b)/,\n                /^(?:Person\\b)/,\n                /^(?:SystemQueue_Ext\\b)/,\n                /^(?:SystemDb_Ext\\b)/,\n                /^(?:System_Ext\\b)/,\n                /^(?:SystemQueue\\b)/,\n                /^(?:SystemDb\\b)/,\n                /^(?:System\\b)/,\n                /^(?:Boundary\\b)/,\n                /^(?:Enterprise_Boundary\\b)/,\n                /^(?:System_Boundary\\b)/,\n                /^(?:ContainerQueue_Ext\\b)/,\n                /^(?:ContainerDb_Ext\\b)/,\n                /^(?:Container_Ext\\b)/,\n                /^(?:ContainerQueue\\b)/,\n                /^(?:ContainerDb\\b)/,\n                /^(?:Container\\b)/,\n                /^(?:Container_Boundary\\b)/,\n                /^(?:ComponentQueue_Ext\\b)/,\n                /^(?:ComponentDb_Ext\\b)/,\n                /^(?:Component_Ext\\b)/,\n                /^(?:ComponentQueue\\b)/,\n                /^(?:ComponentDb\\b)/,\n                /^(?:Component\\b)/,\n                /^(?:Deployment_Node\\b)/,\n                /^(?:Node\\b)/,\n                /^(?:Node_L\\b)/,\n                /^(?:Node_R\\b)/,\n                /^(?:Rel\\b)/,\n                /^(?:BiRel\\b)/,\n                /^(?:Rel_Up\\b)/,\n                /^(?:Rel_U\\b)/,\n                /^(?:Rel_Down\\b)/,\n                /^(?:Rel_D\\b)/,\n                /^(?:Rel_Left\\b)/,\n                /^(?:Rel_L\\b)/,\n                /^(?:Rel_Right\\b)/,\n                /^(?:Rel_R\\b)/,\n                /^(?:Rel_Back\\b)/,\n                /^(?:RelIndex\\b)/,\n                /^(?:UpdateElementStyle\\b)/,\n                /^(?:UpdateRelStyle\\b)/,\n                /^(?:UpdateLayoutConfig\\b)/,\n                /^(?:$)/,\n                /^(?:[(][ ]*[,])/,\n                /^(?:[(])/,\n                /^(?:[)])/,\n                /^(?:,,)/,\n                /^(?:,)/,\n                /^(?:[ ]*[\"][\"])/,\n                /^(?:[ ]*[\"])/,\n                /^(?:[\"])/,\n                /^(?:[^\"]*)/,\n                /^(?:[ ]*[\\$])/,\n                /^(?:[^=]*)/,\n                /^(?:[=][ ]*[\"])/,\n                /^(?:[^\"]+)/,\n                /^(?:[\"])/,\n                /^(?:[^,]+)/,\n                /^(?:\\{)/,\n                /^(?:\\})/,\n                /^(?:[\\s]+)/,\n                /^(?:[\\n\\r]+)/,\n                /^(?:$)/\n            ],\n            conditions: {\n                \"acc_descr_multiline\": {\n                    \"rules\": [\n                        11,\n                        12\n                    ],\n                    \"inclusive\": false\n                },\n                \"acc_descr\": {\n                    \"rules\": [\n                        9\n                    ],\n                    \"inclusive\": false\n                },\n                \"acc_title\": {\n                    \"rules\": [\n                        7\n                    ],\n                    \"inclusive\": false\n                },\n                \"string_kv_value\": {\n                    \"rules\": [\n                        78,\n                        79\n                    ],\n                    \"inclusive\": false\n                },\n                \"string_kv_key\": {\n                    \"rules\": [\n                        77\n                    ],\n                    \"inclusive\": false\n                },\n                \"string_kv\": {\n                    \"rules\": [\n                        76\n                    ],\n                    \"inclusive\": false\n                },\n                \"string\": {\n                    \"rules\": [\n                        73,\n                        74\n                    ],\n                    \"inclusive\": false\n                },\n                \"attribute\": {\n                    \"rules\": [\n                        68,\n                        69,\n                        70,\n                        71,\n                        72,\n                        75,\n                        80\n                    ],\n                    \"inclusive\": false\n                },\n                \"update_layout_config\": {\n                    \"rules\": [\n                        65,\n                        66,\n                        67,\n                        68\n                    ],\n                    \"inclusive\": false\n                },\n                \"update_rel_style\": {\n                    \"rules\": [\n                        65,\n                        66,\n                        67,\n                        68\n                    ],\n                    \"inclusive\": false\n                },\n                \"update_el_style\": {\n                    \"rules\": [\n                        65,\n                        66,\n                        67,\n                        68\n                    ],\n                    \"inclusive\": false\n                },\n                \"rel_b\": {\n                    \"rules\": [\n                        65,\n                        66,\n                        67,\n                        68\n                    ],\n                    \"inclusive\": false\n                },\n                \"rel_r\": {\n                    \"rules\": [\n                        65,\n                        66,\n                        67,\n                        68\n                    ],\n                    \"inclusive\": false\n                },\n                \"rel_l\": {\n                    \"rules\": [\n                        65,\n                        66,\n                        67,\n                        68\n                    ],\n                    \"inclusive\": false\n                },\n                \"rel_d\": {\n                    \"rules\": [\n                        65,\n                        66,\n                        67,\n                        68\n                    ],\n                    \"inclusive\": false\n                },\n                \"rel_u\": {\n                    \"rules\": [\n                        65,\n                        66,\n                        67,\n                        68\n                    ],\n                    \"inclusive\": false\n                },\n                \"rel_bi\": {\n                    \"rules\": [],\n                    \"inclusive\": false\n                },\n                \"rel\": {\n                    \"rules\": [\n                        65,\n                        66,\n                        67,\n                        68\n                    ],\n                    \"inclusive\": false\n                },\n                \"node_r\": {\n                    \"rules\": [\n                        65,\n                        66,\n                        67,\n                        68\n                    ],\n                    \"inclusive\": false\n                },\n                \"node_l\": {\n                    \"rules\": [\n                        65,\n                        66,\n                        67,\n                        68\n                    ],\n                    \"inclusive\": false\n                },\n                \"node\": {\n                    \"rules\": [\n                        65,\n                        66,\n                        67,\n                        68\n                    ],\n                    \"inclusive\": false\n                },\n                \"index\": {\n                    \"rules\": [],\n                    \"inclusive\": false\n                },\n                \"rel_index\": {\n                    \"rules\": [\n                        65,\n                        66,\n                        67,\n                        68\n                    ],\n                    \"inclusive\": false\n                },\n                \"component_ext_queue\": {\n                    \"rules\": [],\n                    \"inclusive\": false\n                },\n                \"component_ext_db\": {\n                    \"rules\": [\n                        65,\n                        66,\n                        67,\n                        68\n                    ],\n                    \"inclusive\": false\n                },\n                \"component_ext\": {\n                    \"rules\": [\n                        65,\n                        66,\n                        67,\n                        68\n                    ],\n                    \"inclusive\": false\n                },\n                \"component_queue\": {\n                    \"rules\": [\n                        65,\n                        66,\n                        67,\n                        68\n                    ],\n                    \"inclusive\": false\n                },\n                \"component_db\": {\n                    \"rules\": [\n                        65,\n                        66,\n                        67,\n                        68\n                    ],\n                    \"inclusive\": false\n                },\n                \"component\": {\n                    \"rules\": [\n                        65,\n                        66,\n                        67,\n                        68\n                    ],\n                    \"inclusive\": false\n                },\n                \"container_boundary\": {\n                    \"rules\": [\n                        65,\n                        66,\n                        67,\n                        68\n                    ],\n                    \"inclusive\": false\n                },\n                \"container_ext_queue\": {\n                    \"rules\": [\n                        65,\n                        66,\n                        67,\n                        68\n                    ],\n                    \"inclusive\": false\n                },\n                \"container_ext_db\": {\n                    \"rules\": [\n                        65,\n                        66,\n                        67,\n                        68\n                    ],\n                    \"inclusive\": false\n                },\n                \"container_ext\": {\n                    \"rules\": [\n                        65,\n                        66,\n                        67,\n                        68\n                    ],\n                    \"inclusive\": false\n                },\n                \"container_queue\": {\n                    \"rules\": [\n                        65,\n                        66,\n                        67,\n                        68\n                    ],\n                    \"inclusive\": false\n                },\n                \"container_db\": {\n                    \"rules\": [\n                        65,\n                        66,\n                        67,\n                        68\n                    ],\n                    \"inclusive\": false\n                },\n                \"container\": {\n                    \"rules\": [\n                        65,\n                        66,\n                        67,\n                        68\n                    ],\n                    \"inclusive\": false\n                },\n                \"birel\": {\n                    \"rules\": [\n                        65,\n                        66,\n                        67,\n                        68\n                    ],\n                    \"inclusive\": false\n                },\n                \"system_boundary\": {\n                    \"rules\": [\n                        65,\n                        66,\n                        67,\n                        68\n                    ],\n                    \"inclusive\": false\n                },\n                \"enterprise_boundary\": {\n                    \"rules\": [\n                        65,\n                        66,\n                        67,\n                        68\n                    ],\n                    \"inclusive\": false\n                },\n                \"boundary\": {\n                    \"rules\": [\n                        65,\n                        66,\n                        67,\n                        68\n                    ],\n                    \"inclusive\": false\n                },\n                \"system_ext_queue\": {\n                    \"rules\": [\n                        65,\n                        66,\n                        67,\n                        68\n                    ],\n                    \"inclusive\": false\n                },\n                \"system_ext_db\": {\n                    \"rules\": [\n                        65,\n                        66,\n                        67,\n                        68\n                    ],\n                    \"inclusive\": false\n                },\n                \"system_ext\": {\n                    \"rules\": [\n                        65,\n                        66,\n                        67,\n                        68\n                    ],\n                    \"inclusive\": false\n                },\n                \"system_queue\": {\n                    \"rules\": [\n                        65,\n                        66,\n                        67,\n                        68\n                    ],\n                    \"inclusive\": false\n                },\n                \"system_db\": {\n                    \"rules\": [\n                        65,\n                        66,\n                        67,\n                        68\n                    ],\n                    \"inclusive\": false\n                },\n                \"system\": {\n                    \"rules\": [\n                        65,\n                        66,\n                        67,\n                        68\n                    ],\n                    \"inclusive\": false\n                },\n                \"person_ext\": {\n                    \"rules\": [\n                        65,\n                        66,\n                        67,\n                        68\n                    ],\n                    \"inclusive\": false\n                },\n                \"person\": {\n                    \"rules\": [\n                        65,\n                        66,\n                        67,\n                        68\n                    ],\n                    \"inclusive\": false\n                },\n                \"INITIAL\": {\n                    \"rules\": [\n                        0,\n                        1,\n                        2,\n                        3,\n                        4,\n                        5,\n                        6,\n                        8,\n                        10,\n                        13,\n                        14,\n                        15,\n                        16,\n                        17,\n                        18,\n                        19,\n                        20,\n                        21,\n                        22,\n                        23,\n                        24,\n                        25,\n                        26,\n                        27,\n                        28,\n                        29,\n                        30,\n                        31,\n                        32,\n                        33,\n                        34,\n                        35,\n                        36,\n                        37,\n                        38,\n                        39,\n                        40,\n                        41,\n                        42,\n                        43,\n                        44,\n                        45,\n                        46,\n                        47,\n                        48,\n                        49,\n                        50,\n                        51,\n                        52,\n                        53,\n                        54,\n                        55,\n                        56,\n                        57,\n                        58,\n                        59,\n                        60,\n                        61,\n                        62,\n                        63,\n                        64,\n                        81,\n                        82,\n                        83,\n                        84,\n                        85\n                    ],\n                    \"inclusive\": true\n                }\n            }\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}();\n$36a39f8f3ab768eb$var$parser.parser = $36a39f8f3ab768eb$var$parser;\nconst $36a39f8f3ab768eb$var$parser$1 = $36a39f8f3ab768eb$var$parser;\nlet $36a39f8f3ab768eb$var$c4ShapeArray = [];\nlet $36a39f8f3ab768eb$var$boundaryParseStack = [\n    \"\"\n];\nlet $36a39f8f3ab768eb$var$currentBoundaryParse = \"global\";\nlet $36a39f8f3ab768eb$var$parentBoundaryParse = \"\";\nlet $36a39f8f3ab768eb$var$boundaries = [\n    {\n        alias: \"global\",\n        label: {\n            text: \"global\"\n        },\n        type: {\n            text: \"global\"\n        },\n        tags: null,\n        link: null,\n        parentBoundary: \"\"\n    }\n];\nlet $36a39f8f3ab768eb$var$rels = [];\nlet $36a39f8f3ab768eb$var$title = \"\";\nlet $36a39f8f3ab768eb$var$wrapEnabled = false;\nlet $36a39f8f3ab768eb$var$c4ShapeInRow$1 = 4;\nlet $36a39f8f3ab768eb$var$c4BoundaryInRow$1 = 2;\nvar $36a39f8f3ab768eb$var$c4Type;\nconst $36a39f8f3ab768eb$var$getC4Type = function() {\n    return $36a39f8f3ab768eb$var$c4Type;\n};\nconst $36a39f8f3ab768eb$var$setC4Type = function(c4TypeParam) {\n    let sanitizedText = (0, $4jcZX.d)(c4TypeParam, (0, $4jcZX.c)());\n    $36a39f8f3ab768eb$var$c4Type = sanitizedText;\n};\nconst $36a39f8f3ab768eb$var$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) return;\n    let rel = {};\n    const old = $36a39f8f3ab768eb$var$rels.find((rel2)=>rel2.from === from && rel2.to === to);\n    if (old) rel = old;\n    else $36a39f8f3ab768eb$var$rels.push(rel);\n    rel.type = type;\n    rel.from = from;\n    rel.to = to;\n    rel.label = {\n        text: label\n    };\n    if (techn === void 0 || techn === null) rel.techn = {\n        text: \"\"\n    };\n    else if (typeof techn === \"object\") {\n        let [key, value] = Object.entries(techn)[0];\n        rel[key] = {\n            text: value\n        };\n    } else rel.techn = {\n        text: techn\n    };\n    if (descr === void 0 || descr === null) rel.descr = {\n        text: \"\"\n    };\n    else if (typeof descr === \"object\") {\n        let [key, value] = Object.entries(descr)[0];\n        rel[key] = {\n            text: value\n        };\n    } else rel.descr = {\n        text: descr\n    };\n    if (typeof sprite === \"object\") {\n        let [key, value] = Object.entries(sprite)[0];\n        rel[key] = value;\n    } else rel.sprite = sprite;\n    if (typeof tags === \"object\") {\n        let [key, value] = Object.entries(tags)[0];\n        rel[key] = value;\n    } else rel.tags = tags;\n    if (typeof link === \"object\") {\n        let [key, value] = Object.entries(link)[0];\n        rel[key] = value;\n    } else rel.link = link;\n    rel.wrap = $36a39f8f3ab768eb$var$autoWrap();\n};\nconst $36a39f8f3ab768eb$var$addPersonOrSystem = function(typeC4Shape, alias, label, descr, sprite, tags, link) {\n    if (alias === null || label === null) return;\n    let personOrSystem = {};\n    const old = $36a39f8f3ab768eb$var$c4ShapeArray.find((personOrSystem2)=>personOrSystem2.alias === alias);\n    if (old && alias === old.alias) personOrSystem = old;\n    else {\n        personOrSystem.alias = alias;\n        $36a39f8f3ab768eb$var$c4ShapeArray.push(personOrSystem);\n    }\n    if (label === void 0 || label === null) personOrSystem.label = {\n        text: \"\"\n    };\n    else personOrSystem.label = {\n        text: label\n    };\n    if (descr === void 0 || descr === null) personOrSystem.descr = {\n        text: \"\"\n    };\n    else if (typeof descr === \"object\") {\n        let [key, value] = Object.entries(descr)[0];\n        personOrSystem[key] = {\n            text: value\n        };\n    } else personOrSystem.descr = {\n        text: descr\n    };\n    if (typeof sprite === \"object\") {\n        let [key, value] = Object.entries(sprite)[0];\n        personOrSystem[key] = value;\n    } else personOrSystem.sprite = sprite;\n    if (typeof tags === \"object\") {\n        let [key, value] = Object.entries(tags)[0];\n        personOrSystem[key] = value;\n    } else personOrSystem.tags = tags;\n    if (typeof link === \"object\") {\n        let [key, value] = Object.entries(link)[0];\n        personOrSystem[key] = value;\n    } else personOrSystem.link = link;\n    personOrSystem.typeC4Shape = {\n        text: typeC4Shape\n    };\n    personOrSystem.parentBoundary = $36a39f8f3ab768eb$var$currentBoundaryParse;\n    personOrSystem.wrap = $36a39f8f3ab768eb$var$autoWrap();\n};\nconst $36a39f8f3ab768eb$var$addContainer = function(typeC4Shape, alias, label, techn, descr, sprite, tags, link) {\n    if (alias === null || label === null) return;\n    let container = {};\n    const old = $36a39f8f3ab768eb$var$c4ShapeArray.find((container2)=>container2.alias === alias);\n    if (old && alias === old.alias) container = old;\n    else {\n        container.alias = alias;\n        $36a39f8f3ab768eb$var$c4ShapeArray.push(container);\n    }\n    if (label === void 0 || label === null) container.label = {\n        text: \"\"\n    };\n    else container.label = {\n        text: label\n    };\n    if (techn === void 0 || techn === null) container.techn = {\n        text: \"\"\n    };\n    else if (typeof techn === \"object\") {\n        let [key, value] = Object.entries(techn)[0];\n        container[key] = {\n            text: value\n        };\n    } else container.techn = {\n        text: techn\n    };\n    if (descr === void 0 || descr === null) container.descr = {\n        text: \"\"\n    };\n    else if (typeof descr === \"object\") {\n        let [key, value] = Object.entries(descr)[0];\n        container[key] = {\n            text: value\n        };\n    } else container.descr = {\n        text: descr\n    };\n    if (typeof sprite === \"object\") {\n        let [key, value] = Object.entries(sprite)[0];\n        container[key] = value;\n    } else container.sprite = sprite;\n    if (typeof tags === \"object\") {\n        let [key, value] = Object.entries(tags)[0];\n        container[key] = value;\n    } else container.tags = tags;\n    if (typeof link === \"object\") {\n        let [key, value] = Object.entries(link)[0];\n        container[key] = value;\n    } else container.link = link;\n    container.wrap = $36a39f8f3ab768eb$var$autoWrap();\n    container.typeC4Shape = {\n        text: typeC4Shape\n    };\n    container.parentBoundary = $36a39f8f3ab768eb$var$currentBoundaryParse;\n};\nconst $36a39f8f3ab768eb$var$addComponent = function(typeC4Shape, alias, label, techn, descr, sprite, tags, link) {\n    if (alias === null || label === null) return;\n    let component = {};\n    const old = $36a39f8f3ab768eb$var$c4ShapeArray.find((component2)=>component2.alias === alias);\n    if (old && alias === old.alias) component = old;\n    else {\n        component.alias = alias;\n        $36a39f8f3ab768eb$var$c4ShapeArray.push(component);\n    }\n    if (label === void 0 || label === null) component.label = {\n        text: \"\"\n    };\n    else component.label = {\n        text: label\n    };\n    if (techn === void 0 || techn === null) component.techn = {\n        text: \"\"\n    };\n    else if (typeof techn === \"object\") {\n        let [key, value] = Object.entries(techn)[0];\n        component[key] = {\n            text: value\n        };\n    } else component.techn = {\n        text: techn\n    };\n    if (descr === void 0 || descr === null) component.descr = {\n        text: \"\"\n    };\n    else if (typeof descr === \"object\") {\n        let [key, value] = Object.entries(descr)[0];\n        component[key] = {\n            text: value\n        };\n    } else component.descr = {\n        text: descr\n    };\n    if (typeof sprite === \"object\") {\n        let [key, value] = Object.entries(sprite)[0];\n        component[key] = value;\n    } else component.sprite = sprite;\n    if (typeof tags === \"object\") {\n        let [key, value] = Object.entries(tags)[0];\n        component[key] = value;\n    } else component.tags = tags;\n    if (typeof link === \"object\") {\n        let [key, value] = Object.entries(link)[0];\n        component[key] = value;\n    } else component.link = link;\n    component.wrap = $36a39f8f3ab768eb$var$autoWrap();\n    component.typeC4Shape = {\n        text: typeC4Shape\n    };\n    component.parentBoundary = $36a39f8f3ab768eb$var$currentBoundaryParse;\n};\nconst $36a39f8f3ab768eb$var$addPersonOrSystemBoundary = function(alias, label, type, tags, link) {\n    if (alias === null || label === null) return;\n    let boundary = {};\n    const old = $36a39f8f3ab768eb$var$boundaries.find((boundary2)=>boundary2.alias === alias);\n    if (old && alias === old.alias) boundary = old;\n    else {\n        boundary.alias = alias;\n        $36a39f8f3ab768eb$var$boundaries.push(boundary);\n    }\n    if (label === void 0 || label === null) boundary.label = {\n        text: \"\"\n    };\n    else boundary.label = {\n        text: label\n    };\n    if (type === void 0 || type === null) boundary.type = {\n        text: \"system\"\n    };\n    else if (typeof type === \"object\") {\n        let [key, value] = Object.entries(type)[0];\n        boundary[key] = {\n            text: value\n        };\n    } else boundary.type = {\n        text: type\n    };\n    if (typeof tags === \"object\") {\n        let [key, value] = Object.entries(tags)[0];\n        boundary[key] = value;\n    } else boundary.tags = tags;\n    if (typeof link === \"object\") {\n        let [key, value] = Object.entries(link)[0];\n        boundary[key] = value;\n    } else boundary.link = link;\n    boundary.parentBoundary = $36a39f8f3ab768eb$var$currentBoundaryParse;\n    boundary.wrap = $36a39f8f3ab768eb$var$autoWrap();\n    $36a39f8f3ab768eb$var$parentBoundaryParse = $36a39f8f3ab768eb$var$currentBoundaryParse;\n    $36a39f8f3ab768eb$var$currentBoundaryParse = alias;\n    $36a39f8f3ab768eb$var$boundaryParseStack.push($36a39f8f3ab768eb$var$parentBoundaryParse);\n};\nconst $36a39f8f3ab768eb$var$addContainerBoundary = function(alias, label, type, tags, link) {\n    if (alias === null || label === null) return;\n    let boundary = {};\n    const old = $36a39f8f3ab768eb$var$boundaries.find((boundary2)=>boundary2.alias === alias);\n    if (old && alias === old.alias) boundary = old;\n    else {\n        boundary.alias = alias;\n        $36a39f8f3ab768eb$var$boundaries.push(boundary);\n    }\n    if (label === void 0 || label === null) boundary.label = {\n        text: \"\"\n    };\n    else boundary.label = {\n        text: label\n    };\n    if (type === void 0 || type === null) boundary.type = {\n        text: \"container\"\n    };\n    else if (typeof type === \"object\") {\n        let [key, value] = Object.entries(type)[0];\n        boundary[key] = {\n            text: value\n        };\n    } else boundary.type = {\n        text: type\n    };\n    if (typeof tags === \"object\") {\n        let [key, value] = Object.entries(tags)[0];\n        boundary[key] = value;\n    } else boundary.tags = tags;\n    if (typeof link === \"object\") {\n        let [key, value] = Object.entries(link)[0];\n        boundary[key] = value;\n    } else boundary.link = link;\n    boundary.parentBoundary = $36a39f8f3ab768eb$var$currentBoundaryParse;\n    boundary.wrap = $36a39f8f3ab768eb$var$autoWrap();\n    $36a39f8f3ab768eb$var$parentBoundaryParse = $36a39f8f3ab768eb$var$currentBoundaryParse;\n    $36a39f8f3ab768eb$var$currentBoundaryParse = alias;\n    $36a39f8f3ab768eb$var$boundaryParseStack.push($36a39f8f3ab768eb$var$parentBoundaryParse);\n};\nconst $36a39f8f3ab768eb$var$addDeploymentNode = function(nodeType, alias, label, type, descr, sprite, tags, link) {\n    if (alias === null || label === null) return;\n    let boundary = {};\n    const old = $36a39f8f3ab768eb$var$boundaries.find((boundary2)=>boundary2.alias === alias);\n    if (old && alias === old.alias) boundary = old;\n    else {\n        boundary.alias = alias;\n        $36a39f8f3ab768eb$var$boundaries.push(boundary);\n    }\n    if (label === void 0 || label === null) boundary.label = {\n        text: \"\"\n    };\n    else boundary.label = {\n        text: label\n    };\n    if (type === void 0 || type === null) boundary.type = {\n        text: \"node\"\n    };\n    else if (typeof type === \"object\") {\n        let [key, value] = Object.entries(type)[0];\n        boundary[key] = {\n            text: value\n        };\n    } else boundary.type = {\n        text: type\n    };\n    if (descr === void 0 || descr === null) boundary.descr = {\n        text: \"\"\n    };\n    else if (typeof descr === \"object\") {\n        let [key, value] = Object.entries(descr)[0];\n        boundary[key] = {\n            text: value\n        };\n    } else boundary.descr = {\n        text: descr\n    };\n    if (typeof tags === \"object\") {\n        let [key, value] = Object.entries(tags)[0];\n        boundary[key] = value;\n    } else boundary.tags = tags;\n    if (typeof link === \"object\") {\n        let [key, value] = Object.entries(link)[0];\n        boundary[key] = value;\n    } else boundary.link = link;\n    boundary.nodeType = nodeType;\n    boundary.parentBoundary = $36a39f8f3ab768eb$var$currentBoundaryParse;\n    boundary.wrap = $36a39f8f3ab768eb$var$autoWrap();\n    $36a39f8f3ab768eb$var$parentBoundaryParse = $36a39f8f3ab768eb$var$currentBoundaryParse;\n    $36a39f8f3ab768eb$var$currentBoundaryParse = alias;\n    $36a39f8f3ab768eb$var$boundaryParseStack.push($36a39f8f3ab768eb$var$parentBoundaryParse);\n};\nconst $36a39f8f3ab768eb$var$popBoundaryParseStack = function() {\n    $36a39f8f3ab768eb$var$currentBoundaryParse = $36a39f8f3ab768eb$var$parentBoundaryParse;\n    $36a39f8f3ab768eb$var$boundaryParseStack.pop();\n    $36a39f8f3ab768eb$var$parentBoundaryParse = $36a39f8f3ab768eb$var$boundaryParseStack.pop();\n    $36a39f8f3ab768eb$var$boundaryParseStack.push($36a39f8f3ab768eb$var$parentBoundaryParse);\n};\nconst $36a39f8f3ab768eb$var$updateElStyle = function(typeC4Shape, elementName, bgColor, fontColor, borderColor, shadowing, shape, sprite, techn, legendText, legendSprite) {\n    let old = $36a39f8f3ab768eb$var$c4ShapeArray.find((element)=>element.alias === elementName);\n    if (old === void 0) {\n        old = $36a39f8f3ab768eb$var$boundaries.find((element)=>element.alias === elementName);\n        if (old === void 0) return;\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 old.bgColor = bgColor;\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 old.fontColor = fontColor;\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 old.borderColor = borderColor;\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 old.shadowing = shadowing;\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 old.shape = shape;\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 old.sprite = sprite;\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 old.techn = techn;\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 old.legendText = legendText;\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 old.legendSprite = legendSprite;\n    }\n};\nconst $36a39f8f3ab768eb$var$updateRelStyle = function(typeC4Shape, from, to, textColor, lineColor, offsetX, offsetY) {\n    const old = $36a39f8f3ab768eb$var$rels.find((rel)=>rel.from === from && rel.to === to);\n    if (old === void 0) return;\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 old.textColor = textColor;\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 old.lineColor = lineColor;\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 old.offsetX = parseInt(offsetX);\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 old.offsetY = parseInt(offsetY);\n    }\n};\nconst $36a39f8f3ab768eb$var$updateLayoutConfig = function(typeC4Shape, c4ShapeInRowParam, c4BoundaryInRowParam) {\n    let c4ShapeInRowValue = $36a39f8f3ab768eb$var$c4ShapeInRow$1;\n    let c4BoundaryInRowValue = $36a39f8f3ab768eb$var$c4BoundaryInRow$1;\n    if (typeof c4ShapeInRowParam === \"object\") {\n        const value = Object.values(c4ShapeInRowParam)[0];\n        c4ShapeInRowValue = parseInt(value);\n    } else c4ShapeInRowValue = parseInt(c4ShapeInRowParam);\n    if (typeof c4BoundaryInRowParam === \"object\") {\n        const value = Object.values(c4BoundaryInRowParam)[0];\n        c4BoundaryInRowValue = parseInt(value);\n    } else c4BoundaryInRowValue = parseInt(c4BoundaryInRowParam);\n    if (c4ShapeInRowValue >= 1) $36a39f8f3ab768eb$var$c4ShapeInRow$1 = c4ShapeInRowValue;\n    if (c4BoundaryInRowValue >= 1) $36a39f8f3ab768eb$var$c4BoundaryInRow$1 = c4BoundaryInRowValue;\n};\nconst $36a39f8f3ab768eb$var$getC4ShapeInRow = function() {\n    return $36a39f8f3ab768eb$var$c4ShapeInRow$1;\n};\nconst $36a39f8f3ab768eb$var$getC4BoundaryInRow = function() {\n    return $36a39f8f3ab768eb$var$c4BoundaryInRow$1;\n};\nconst $36a39f8f3ab768eb$var$getCurrentBoundaryParse = function() {\n    return $36a39f8f3ab768eb$var$currentBoundaryParse;\n};\nconst $36a39f8f3ab768eb$var$getParentBoundaryParse = function() {\n    return $36a39f8f3ab768eb$var$parentBoundaryParse;\n};\nconst $36a39f8f3ab768eb$var$getC4ShapeArray = function(parentBoundary) {\n    if (parentBoundary === void 0 || parentBoundary === null) return $36a39f8f3ab768eb$var$c4ShapeArray;\n    else return $36a39f8f3ab768eb$var$c4ShapeArray.filter((personOrSystem)=>{\n        return personOrSystem.parentBoundary === parentBoundary;\n    });\n};\nconst $36a39f8f3ab768eb$var$getC4Shape = function(alias) {\n    return $36a39f8f3ab768eb$var$c4ShapeArray.find((personOrSystem)=>personOrSystem.alias === alias);\n};\nconst $36a39f8f3ab768eb$var$getC4ShapeKeys = function(parentBoundary) {\n    return Object.keys($36a39f8f3ab768eb$var$getC4ShapeArray(parentBoundary));\n};\nconst $36a39f8f3ab768eb$var$getBoundaries = function(parentBoundary) {\n    if (parentBoundary === void 0 || parentBoundary === null) return $36a39f8f3ab768eb$var$boundaries;\n    else return $36a39f8f3ab768eb$var$boundaries.filter((boundary)=>boundary.parentBoundary === parentBoundary);\n};\nconst $36a39f8f3ab768eb$var$getBoundarys = $36a39f8f3ab768eb$var$getBoundaries;\nconst $36a39f8f3ab768eb$var$getRels = function() {\n    return $36a39f8f3ab768eb$var$rels;\n};\nconst $36a39f8f3ab768eb$var$getTitle = function() {\n    return $36a39f8f3ab768eb$var$title;\n};\nconst $36a39f8f3ab768eb$var$setWrap = function(wrapSetting) {\n    $36a39f8f3ab768eb$var$wrapEnabled = wrapSetting;\n};\nconst $36a39f8f3ab768eb$var$autoWrap = function() {\n    return $36a39f8f3ab768eb$var$wrapEnabled;\n};\nconst $36a39f8f3ab768eb$var$clear = function() {\n    $36a39f8f3ab768eb$var$c4ShapeArray = [];\n    $36a39f8f3ab768eb$var$boundaries = [\n        {\n            alias: \"global\",\n            label: {\n                text: \"global\"\n            },\n            type: {\n                text: \"global\"\n            },\n            tags: null,\n            link: null,\n            parentBoundary: \"\"\n        }\n    ];\n    $36a39f8f3ab768eb$var$parentBoundaryParse = \"\";\n    $36a39f8f3ab768eb$var$currentBoundaryParse = \"global\";\n    $36a39f8f3ab768eb$var$boundaryParseStack = [\n        \"\"\n    ];\n    $36a39f8f3ab768eb$var$rels = [];\n    $36a39f8f3ab768eb$var$boundaryParseStack = [\n        \"\"\n    ];\n    $36a39f8f3ab768eb$var$title = \"\";\n    $36a39f8f3ab768eb$var$wrapEnabled = false;\n    $36a39f8f3ab768eb$var$c4ShapeInRow$1 = 4;\n    $36a39f8f3ab768eb$var$c4BoundaryInRow$1 = 2;\n};\nconst $36a39f8f3ab768eb$var$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 $36a39f8f3ab768eb$var$ARROWTYPE = {\n    FILLED: 0,\n    OPEN: 1\n};\nconst $36a39f8f3ab768eb$var$PLACEMENT = {\n    LEFTOF: 0,\n    RIGHTOF: 1,\n    OVER: 2\n};\nconst $36a39f8f3ab768eb$var$setTitle = function(txt) {\n    let sanitizedText = (0, $4jcZX.d)(txt, (0, $4jcZX.c)());\n    $36a39f8f3ab768eb$var$title = sanitizedText;\n};\nconst $36a39f8f3ab768eb$var$db = {\n    addPersonOrSystem: $36a39f8f3ab768eb$var$addPersonOrSystem,\n    addPersonOrSystemBoundary: $36a39f8f3ab768eb$var$addPersonOrSystemBoundary,\n    addContainer: $36a39f8f3ab768eb$var$addContainer,\n    addContainerBoundary: $36a39f8f3ab768eb$var$addContainerBoundary,\n    addComponent: $36a39f8f3ab768eb$var$addComponent,\n    addDeploymentNode: $36a39f8f3ab768eb$var$addDeploymentNode,\n    popBoundaryParseStack: $36a39f8f3ab768eb$var$popBoundaryParseStack,\n    addRel: $36a39f8f3ab768eb$var$addRel,\n    updateElStyle: $36a39f8f3ab768eb$var$updateElStyle,\n    updateRelStyle: $36a39f8f3ab768eb$var$updateRelStyle,\n    updateLayoutConfig: $36a39f8f3ab768eb$var$updateLayoutConfig,\n    autoWrap: $36a39f8f3ab768eb$var$autoWrap,\n    setWrap: $36a39f8f3ab768eb$var$setWrap,\n    getC4ShapeArray: $36a39f8f3ab768eb$var$getC4ShapeArray,\n    getC4Shape: $36a39f8f3ab768eb$var$getC4Shape,\n    getC4ShapeKeys: $36a39f8f3ab768eb$var$getC4ShapeKeys,\n    getBoundaries: $36a39f8f3ab768eb$var$getBoundaries,\n    getBoundarys: $36a39f8f3ab768eb$var$getBoundarys,\n    getCurrentBoundaryParse: $36a39f8f3ab768eb$var$getCurrentBoundaryParse,\n    getParentBoundaryParse: $36a39f8f3ab768eb$var$getParentBoundaryParse,\n    getRels: $36a39f8f3ab768eb$var$getRels,\n    getTitle: $36a39f8f3ab768eb$var$getTitle,\n    getC4Type: $36a39f8f3ab768eb$var$getC4Type,\n    getC4ShapeInRow: $36a39f8f3ab768eb$var$getC4ShapeInRow,\n    getC4BoundaryInRow: $36a39f8f3ab768eb$var$getC4BoundaryInRow,\n    setAccTitle: $4jcZX.s,\n    getAccTitle: $4jcZX.g,\n    getAccDescription: $4jcZX.a,\n    setAccDescription: $4jcZX.b,\n    getConfig: ()=>(0, $4jcZX.c)().c4,\n    clear: $36a39f8f3ab768eb$var$clear,\n    LINETYPE: $36a39f8f3ab768eb$var$LINETYPE,\n    ARROWTYPE: $36a39f8f3ab768eb$var$ARROWTYPE,\n    PLACEMENT: $36a39f8f3ab768eb$var$PLACEMENT,\n    setTitle: $36a39f8f3ab768eb$var$setTitle,\n    setC4Type: $36a39f8f3ab768eb$var$setC4Type\n};\nconst $36a39f8f3ab768eb$var$drawRect = function(elem, rectData) {\n    return (0, $2CvUP.d)(elem, rectData);\n};\nconst $36a39f8f3ab768eb$var$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 : (0, $2ujND.sanitizeUrl)(link);\n    imageElem.attr(\"xlink:href\", sanitizedLink);\n};\nconst $36a39f8f3ab768eb$var$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\") line.attr(\"marker-end\", \"url(\" + url + \"#arrowhead)\");\n            if (rel.type === \"birel\" || rel.type === \"rel_b\") line.attr(\"marker-start\", \"url(\" + url + \"#arrowend)\");\n            i = -1;\n        } else {\n            let line = relsElem.append(\"path\");\n            line.attr(\"fill\", \"none\").attr(\"stroke-width\", \"1\").attr(\"stroke\", strokeColor).attr(\"d\", \"Mstartx,starty Qcontrolx,controly stopx,stopy \".replaceAll(\"startx\", rel.startPoint.x).replaceAll(\"starty\", rel.startPoint.y).replaceAll(\"controlx\", rel.startPoint.x + (rel.endPoint.x - rel.startPoint.x) / 2 - (rel.endPoint.x - rel.startPoint.x) / 4).replaceAll(\"controly\", rel.startPoint.y + (rel.endPoint.y - rel.startPoint.y) / 2).replaceAll(\"stopx\", rel.endPoint.x).replaceAll(\"stopy\", rel.endPoint.y));\n            if (rel.type !== \"rel_b\") line.attr(\"marker-end\", \"url(\" + url + \"#arrowhead)\");\n            if (rel.type === \"birel\" || rel.type === \"rel_b\") line.attr(\"marker-start\", \"url(\" + url + \"#arrowend)\");\n        }\n        let messageConf = conf2.messageFont();\n        $36a39f8f3ab768eb$var$_drawTextCandidateFunc(conf2)(rel.label.text, relsElem, Math.min(rel.startPoint.x, rel.endPoint.x) + Math.abs(rel.endPoint.x - rel.startPoint.x) / 2 + offsetX, Math.min(rel.startPoint.y, rel.endPoint.y) + Math.abs(rel.endPoint.y - rel.startPoint.y) / 2 + offsetY, rel.label.width, rel.label.height, {\n            fill: textColor\n        }, messageConf);\n        if (rel.techn && rel.techn.text !== \"\") {\n            messageConf = conf2.messageFont();\n            $36a39f8f3ab768eb$var$_drawTextCandidateFunc(conf2)(\"[\" + rel.techn.text + \"]\", relsElem, Math.min(rel.startPoint.x, rel.endPoint.x) + Math.abs(rel.endPoint.x - rel.startPoint.x) / 2 + offsetX, Math.min(rel.startPoint.y, rel.endPoint.y) + Math.abs(rel.endPoint.y - rel.startPoint.y) / 2 + conf2.messageFontSize + 5 + offsetY, Math.max(rel.label.width, rel.techn.width), rel.techn.height, {\n                fill: textColor,\n                \"font-style\": \"italic\"\n            }, messageConf);\n        }\n    }\n};\nconst $36a39f8f3ab768eb$var$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 = {\n        \"stroke-width\": 1,\n        \"stroke-dasharray\": \"7.0,7.0\"\n    };\n    if (boundary.nodeType) attrsValue = {\n        \"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    $36a39f8f3ab768eb$var$drawRect(boundaryElem, rectData);\n    let boundaryConf = conf2.boundaryFont();\n    boundaryConf.fontWeight = \"bold\";\n    boundaryConf.fontSize = boundaryConf.fontSize + 2;\n    boundaryConf.fontColor = fontColor;\n    $36a39f8f3ab768eb$var$_drawTextCandidateFunc(conf2)(boundary.label.text, boundaryElem, boundary.x, boundary.y + boundary.label.Y, boundary.width, boundary.height, {\n        fill: \"#444444\"\n    }, boundaryConf);\n    if (boundary.type && boundary.type.text !== \"\") {\n        boundaryConf = conf2.boundaryFont();\n        boundaryConf.fontColor = fontColor;\n        $36a39f8f3ab768eb$var$_drawTextCandidateFunc(conf2)(boundary.type.text, boundaryElem, boundary.x, boundary.y + boundary.type.Y, boundary.width, boundary.height, {\n            fill: \"#444444\"\n        }, boundaryConf);\n    }\n    if (boundary.descr && boundary.descr.text !== \"\") {\n        boundaryConf = conf2.boundaryFont();\n        boundaryConf.fontSize = boundaryConf.fontSize - 2;\n        boundaryConf.fontColor = fontColor;\n        $36a39f8f3ab768eb$var$_drawTextCandidateFunc(conf2)(boundary.descr.text, boundaryElem, boundary.x, boundary.y + boundary.descr.Y, boundary.width, boundary.height, {\n            fill: \"#444444\"\n        }, boundaryConf);\n    }\n};\nconst $36a39f8f3ab768eb$var$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 = (0, $2CvUP.g)();\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 = {\n                \"stroke-width\": 0.5\n            };\n            $36a39f8f3ab768eb$var$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(\"d\", \"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            c4ShapeElem.append(\"path\").attr(\"fill\", \"none\").attr(\"stroke-width\", \"0.5\").attr(\"stroke\", strokeColor).attr(\"d\", \"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            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(\"d\", \"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            c4ShapeElem.append(\"path\").attr(\"fill\", \"none\").attr(\"stroke-width\", \"0.5\").attr(\"stroke\", strokeColor).attr(\"d\", \"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            break;\n    }\n    let c4ShapeFontConf = $36a39f8f3ab768eb$var$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            $36a39f8f3ab768eb$var$drawImage(c4ShapeElem, 48, 48, c4Shape.x + c4Shape.width / 2 - 24, c4Shape.y + c4Shape.image.Y, personImg);\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    $36a39f8f3ab768eb$var$_drawTextCandidateFunc(conf2)(c4Shape.label.text, c4ShapeElem, c4Shape.x, c4Shape.y + c4Shape.label.Y, c4Shape.width, c4Shape.height, {\n        fill: fontColor\n    }, textFontConf);\n    textFontConf = conf2[c4Shape.typeC4Shape.text + \"Font\"]();\n    textFontConf.fontColor = fontColor;\n    if (c4Shape.techn && ((_a = c4Shape.techn) == null ? void 0 : _a.text) !== \"\") $36a39f8f3ab768eb$var$_drawTextCandidateFunc(conf2)(c4Shape.techn.text, c4ShapeElem, c4Shape.x, c4Shape.y + c4Shape.techn.Y, c4Shape.width, c4Shape.height, {\n        fill: fontColor,\n        \"font-style\": \"italic\"\n    }, textFontConf);\n    else if (c4Shape.type && c4Shape.type.text !== \"\") $36a39f8f3ab768eb$var$_drawTextCandidateFunc(conf2)(c4Shape.type.text, c4ShapeElem, c4Shape.x, c4Shape.y + c4Shape.type.Y, c4Shape.width, c4Shape.height, {\n        fill: fontColor,\n        \"font-style\": \"italic\"\n    }, textFontConf);\n    if (c4Shape.descr && c4Shape.descr.text !== \"\") {\n        textFontConf = conf2.personFont();\n        textFontConf.fontColor = fontColor;\n        $36a39f8f3ab768eb$var$_drawTextCandidateFunc(conf2)(c4Shape.descr.text, c4ShapeElem, c4Shape.x, c4Shape.y + c4Shape.descr.Y, c4Shape.width, c4Shape.height, {\n            fill: fontColor\n        }, textFontConf);\n    }\n    return c4Shape.height;\n};\nconst $36a39f8f3ab768eb$var$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(\"d\", \"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};\nconst $36a39f8f3ab768eb$var$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(\"d\", \"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};\nconst $36a39f8f3ab768eb$var$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(\"d\", \"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};\nconst $36a39f8f3ab768eb$var$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 $36a39f8f3ab768eb$var$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 $36a39f8f3ab768eb$var$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 $36a39f8f3ab768eb$var$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 $36a39f8f3ab768eb$var$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 $36a39f8f3ab768eb$var$getC4ShapeFont = (cnf, typeC4Shape)=>{\n    return {\n        fontFamily: cnf[typeC4Shape + \"FontFamily\"],\n        fontSize: cnf[typeC4Shape + \"FontSize\"],\n        fontWeight: cnf[typeC4Shape + \"FontWeight\"]\n    };\n};\nconst $36a39f8f3ab768eb$var$_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: fontSize, fontFamily: fontFamily, fontWeight: fontWeight } = conf2;\n        const lines = content.split((0, $4jcZX.e).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)if (fromTextAttrsDict.hasOwnProperty(key)) toText.attr(key, fromTextAttrsDict[key]);\n    }\n    return function(conf2) {\n        return conf2.textPlacement === \"fo\" ? byFo : conf2.textPlacement === \"old\" ? byText : byTspan;\n    };\n}();\nconst $36a39f8f3ab768eb$var$svgDraw = {\n    drawRect: $36a39f8f3ab768eb$var$drawRect,\n    drawBoundary: $36a39f8f3ab768eb$var$drawBoundary$1,\n    drawC4Shape: $36a39f8f3ab768eb$var$drawC4Shape,\n    drawRels: $36a39f8f3ab768eb$var$drawRels$1,\n    drawImage: $36a39f8f3ab768eb$var$drawImage,\n    insertArrowHead: $36a39f8f3ab768eb$var$insertArrowHead,\n    insertArrowEnd: $36a39f8f3ab768eb$var$insertArrowEnd,\n    insertArrowFilledHead: $36a39f8f3ab768eb$var$insertArrowFilledHead,\n    insertDynamicNumber: $36a39f8f3ab768eb$var$insertDynamicNumber,\n    insertArrowCrossHead: $36a39f8f3ab768eb$var$insertArrowCrossHead,\n    insertDatabaseIcon: $36a39f8f3ab768eb$var$insertDatabaseIcon,\n    insertComputerIcon: $36a39f8f3ab768eb$var$insertComputerIcon,\n    insertClockIcon: $36a39f8f3ab768eb$var$insertClockIcon\n};\nlet $36a39f8f3ab768eb$var$globalBoundaryMaxX = 0, $36a39f8f3ab768eb$var$globalBoundaryMaxY = 0;\nlet $36a39f8f3ab768eb$var$c4ShapeInRow = 4;\nlet $36a39f8f3ab768eb$var$c4BoundaryInRow = 2;\n$36a39f8f3ab768eb$var$parser.yy = $36a39f8f3ab768eb$var$db;\nlet $36a39f8f3ab768eb$var$conf = {};\nclass $36a39f8f3ab768eb$var$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        $36a39f8f3ab768eb$var$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) obj[key] = val;\n        else obj[key] = fun(val, obj[key]);\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 > $36a39f8f3ab768eb$var$c4ShapeInRow) {\n            _startx = this.nextData.startx + c4Shape.margin + $36a39f8f3ab768eb$var$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        $36a39f8f3ab768eb$var$setConf(diagObj.db.getConfig());\n    }\n    bumpLastMargin(margin) {\n        this.data.stopx += margin;\n        this.data.stopy += margin;\n    }\n}\nconst $36a39f8f3ab768eb$var$setConf = function(cnf) {\n    (0, $4jcZX.f)($36a39f8f3ab768eb$var$conf, cnf);\n    if (cnf.fontFamily) $36a39f8f3ab768eb$var$conf.personFontFamily = $36a39f8f3ab768eb$var$conf.systemFontFamily = $36a39f8f3ab768eb$var$conf.messageFontFamily = cnf.fontFamily;\n    if (cnf.fontSize) $36a39f8f3ab768eb$var$conf.personFontSize = $36a39f8f3ab768eb$var$conf.systemFontSize = $36a39f8f3ab768eb$var$conf.messageFontSize = cnf.fontSize;\n    if (cnf.fontWeight) $36a39f8f3ab768eb$var$conf.personFontWeight = $36a39f8f3ab768eb$var$conf.systemFontWeight = $36a39f8f3ab768eb$var$conf.messageFontWeight = cnf.fontWeight;\n};\nconst $36a39f8f3ab768eb$var$c4ShapeFont = (cnf, typeC4Shape)=>{\n    return {\n        fontFamily: cnf[typeC4Shape + \"FontFamily\"],\n        fontSize: cnf[typeC4Shape + \"FontSize\"],\n        fontWeight: cnf[typeC4Shape + \"FontWeight\"]\n    };\n};\nconst $36a39f8f3ab768eb$var$boundaryFont = (cnf)=>{\n    return {\n        fontFamily: cnf.boundaryFontFamily,\n        fontSize: cnf.boundaryFontSize,\n        fontWeight: cnf.boundaryFontWeight\n    };\n};\nconst $36a39f8f3ab768eb$var$messageFont = (cnf)=>{\n    return {\n        fontFamily: cnf.messageFontFamily,\n        fontSize: cnf.messageFontSize,\n        fontWeight: cnf.messageFontWeight\n    };\n};\nfunction $36a39f8f3ab768eb$var$calcC4ShapeTextWH(textType, c4Shape, c4ShapeTextWrap, textConf, textLimitWidth) {\n    if (!c4Shape[textType].width) {\n        if (c4ShapeTextWrap) {\n            c4Shape[textType].text = (0, $4jcZX.w)(c4Shape[textType].text, textLimitWidth, textConf);\n            c4Shape[textType].textLines = c4Shape[textType].text.split((0, $4jcZX.e).lineBreakRegex).length;\n            c4Shape[textType].width = textLimitWidth;\n            c4Shape[textType].height = (0, $4jcZX.j)(c4Shape[textType].text, textConf);\n        } else {\n            let lines = c4Shape[textType].text.split((0, $4jcZX.e).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((0, $4jcZX.h)(line, textConf), c4Shape[textType].width);\n                lineHeight = (0, $4jcZX.j)(line, textConf);\n                c4Shape[textType].height = c4Shape[textType].height + lineHeight;\n            }\n        }\n    }\n}\nconst $36a39f8f3ab768eb$var$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 = $36a39f8f3ab768eb$var$conf.c4ShapeMargin - 35;\n    let boundaryTextWrap = boundary.wrap && $36a39f8f3ab768eb$var$conf.wrap;\n    let boundaryLabelConf = $36a39f8f3ab768eb$var$boundaryFont($36a39f8f3ab768eb$var$conf);\n    boundaryLabelConf.fontSize = boundaryLabelConf.fontSize + 2;\n    boundaryLabelConf.fontWeight = \"bold\";\n    let textLimitWidth = (0, $4jcZX.h)(boundary.label.text, boundaryLabelConf);\n    $36a39f8f3ab768eb$var$calcC4ShapeTextWH(\"label\", boundary, boundaryTextWrap, boundaryLabelConf, textLimitWidth);\n    $36a39f8f3ab768eb$var$svgDraw.drawBoundary(diagram2, boundary, $36a39f8f3ab768eb$var$conf);\n};\nconst $36a39f8f3ab768eb$var$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 = $36a39f8f3ab768eb$var$c4ShapeFont($36a39f8f3ab768eb$var$conf, c4Shape.typeC4Shape.text);\n        c4ShapeTypeConf.fontSize = c4ShapeTypeConf.fontSize - 2;\n        c4Shape.typeC4Shape.width = (0, $4jcZX.h)(\"\\xab\" + c4Shape.typeC4Shape.text + \"\\xbb\", c4ShapeTypeConf);\n        c4Shape.typeC4Shape.height = c4ShapeTypeConf.fontSize + 2;\n        c4Shape.typeC4Shape.Y = $36a39f8f3ab768eb$var$conf.c4ShapePadding;\n        Y = c4Shape.typeC4Shape.Y + c4Shape.typeC4Shape.height - 4;\n        c4Shape.image = {\n            width: 0,\n            height: 0,\n            Y: 0\n        };\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 && $36a39f8f3ab768eb$var$conf.wrap;\n        let textLimitWidth = $36a39f8f3ab768eb$var$conf.width - $36a39f8f3ab768eb$var$conf.c4ShapePadding * 2;\n        let c4ShapeLabelConf = $36a39f8f3ab768eb$var$c4ShapeFont($36a39f8f3ab768eb$var$conf, c4Shape.typeC4Shape.text);\n        c4ShapeLabelConf.fontSize = c4ShapeLabelConf.fontSize + 2;\n        c4ShapeLabelConf.fontWeight = \"bold\";\n        $36a39f8f3ab768eb$var$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 = $36a39f8f3ab768eb$var$c4ShapeFont($36a39f8f3ab768eb$var$conf, c4Shape.typeC4Shape.text);\n            $36a39f8f3ab768eb$var$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 = $36a39f8f3ab768eb$var$c4ShapeFont($36a39f8f3ab768eb$var$conf, c4Shape.techn.text);\n            $36a39f8f3ab768eb$var$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 = $36a39f8f3ab768eb$var$c4ShapeFont($36a39f8f3ab768eb$var$conf, c4Shape.typeC4Shape.text);\n            $36a39f8f3ab768eb$var$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 + $36a39f8f3ab768eb$var$conf.c4ShapePadding;\n        c4Shape.width = Math.max(c4Shape.width || $36a39f8f3ab768eb$var$conf.width, rectWidth, $36a39f8f3ab768eb$var$conf.width);\n        c4Shape.height = Math.max(c4Shape.height || $36a39f8f3ab768eb$var$conf.height, rectHeight, $36a39f8f3ab768eb$var$conf.height);\n        c4Shape.margin = c4Shape.margin || $36a39f8f3ab768eb$var$conf.c4ShapeMargin;\n        currentBounds.insert(c4Shape);\n        $36a39f8f3ab768eb$var$svgDraw.drawC4Shape(diagram2, c4Shape, $36a39f8f3ab768eb$var$conf);\n    }\n    currentBounds.bumpLastMargin($36a39f8f3ab768eb$var$conf.c4ShapeMargin);\n};\nclass $36a39f8f3ab768eb$var$Point {\n    constructor(x, y){\n        this.x = x;\n        this.y = y;\n    }\n}\nlet $36a39f8f3ab768eb$var$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) returnPoint = new $36a39f8f3ab768eb$var$Point(x1 + fromNode.width, fromCenterY);\n    else if (y1 == y2 && x1 > x2) returnPoint = new $36a39f8f3ab768eb$var$Point(x1, fromCenterY);\n    else if (x1 == x2 && y1 < y2) returnPoint = new $36a39f8f3ab768eb$var$Point(fromCenterX, y1 + fromNode.height);\n    else if (x1 == x2 && y1 > y2) returnPoint = new $36a39f8f3ab768eb$var$Point(fromCenterX, y1);\n    if (x1 > x2 && y1 < y2) {\n        if (fromDYX >= tanDYX) returnPoint = new $36a39f8f3ab768eb$var$Point(x1, fromCenterY + tanDYX * fromNode.width / 2);\n        else returnPoint = new $36a39f8f3ab768eb$var$Point(fromCenterX - dx / dy * fromNode.height / 2, y1 + fromNode.height);\n    } else if (x1 < x2 && y1 < y2) {\n        if (fromDYX >= tanDYX) returnPoint = new $36a39f8f3ab768eb$var$Point(x1 + fromNode.width, fromCenterY + tanDYX * fromNode.width / 2);\n        else returnPoint = new $36a39f8f3ab768eb$var$Point(fromCenterX + dx / dy * fromNode.height / 2, y1 + fromNode.height);\n    } else if (x1 < x2 && y1 > y2) {\n        if (fromDYX >= tanDYX) returnPoint = new $36a39f8f3ab768eb$var$Point(x1 + fromNode.width, fromCenterY - tanDYX * fromNode.width / 2);\n        else returnPoint = new $36a39f8f3ab768eb$var$Point(fromCenterX + fromNode.height / 2 * dx / dy, y1);\n    } else if (x1 > x2 && y1 > y2) {\n        if (fromDYX >= tanDYX) returnPoint = new $36a39f8f3ab768eb$var$Point(x1, fromCenterY - fromNode.width / 2 * tanDYX);\n        else returnPoint = new $36a39f8f3ab768eb$var$Point(fromCenterX - fromNode.height / 2 * dx / dy, y1);\n    }\n    return returnPoint;\n};\nlet $36a39f8f3ab768eb$var$getIntersectPoints = function(fromNode, endNode) {\n    let endIntersectPoint = {\n        x: 0,\n        y: 0\n    };\n    endIntersectPoint.x = endNode.x + endNode.width / 2;\n    endIntersectPoint.y = endNode.y + endNode.height / 2;\n    let startPoint = $36a39f8f3ab768eb$var$getIntersectPoint(fromNode, endIntersectPoint);\n    endIntersectPoint.x = fromNode.x + fromNode.width / 2;\n    endIntersectPoint.y = fromNode.y + fromNode.height / 2;\n    let endPoint = $36a39f8f3ab768eb$var$getIntersectPoint(endNode, endIntersectPoint);\n    return {\n        startPoint: startPoint,\n        endPoint: endPoint\n    };\n};\nconst $36a39f8f3ab768eb$var$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 && $36a39f8f3ab768eb$var$conf.wrap;\n        let relConf = $36a39f8f3ab768eb$var$messageFont($36a39f8f3ab768eb$var$conf);\n        let diagramType = diagObj.db.getC4Type();\n        if (diagramType === \"C4Dynamic\") rel.label.text = i + \": \" + rel.label.text;\n        let textLimitWidth = (0, $4jcZX.h)(rel.label.text, relConf);\n        $36a39f8f3ab768eb$var$calcC4ShapeTextWH(\"label\", rel, relTextWrap, relConf, textLimitWidth);\n        if (rel.techn && rel.techn.text !== \"\") {\n            textLimitWidth = (0, $4jcZX.h)(rel.techn.text, relConf);\n            $36a39f8f3ab768eb$var$calcC4ShapeTextWH(\"techn\", rel, relTextWrap, relConf, textLimitWidth);\n        }\n        if (rel.descr && rel.descr.text !== \"\") {\n            textLimitWidth = (0, $4jcZX.h)(rel.descr.text, relConf);\n            $36a39f8f3ab768eb$var$calcC4ShapeTextWH(\"descr\", rel, relTextWrap, relConf, textLimitWidth);\n        }\n        let fromNode = getC4ShapeObj(rel.from);\n        let endNode = getC4ShapeObj(rel.to);\n        let points = $36a39f8f3ab768eb$var$getIntersectPoints(fromNode, endNode);\n        rel.startPoint = points.startPoint;\n        rel.endPoint = points.endPoint;\n    }\n    $36a39f8f3ab768eb$var$svgDraw.drawRels(diagram2, rels2, $36a39f8f3ab768eb$var$conf);\n};\nfunction $36a39f8f3ab768eb$var$drawInsideBoundary(diagram2, parentBoundaryAlias, parentBounds, currentBoundaries, diagObj) {\n    let currentBounds = new $36a39f8f3ab768eb$var$Bounds(diagObj);\n    currentBounds.data.widthLimit = parentBounds.data.widthLimit / Math.min($36a39f8f3ab768eb$var$c4BoundaryInRow, currentBoundaries.length);\n    for (let [i, currentBoundary] of currentBoundaries.entries()){\n        let Y = 0;\n        currentBoundary.image = {\n            width: 0,\n            height: 0,\n            Y: 0\n        };\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 && $36a39f8f3ab768eb$var$conf.wrap;\n        let currentBoundaryLabelConf = $36a39f8f3ab768eb$var$boundaryFont($36a39f8f3ab768eb$var$conf);\n        currentBoundaryLabelConf.fontSize = currentBoundaryLabelConf.fontSize + 2;\n        currentBoundaryLabelConf.fontWeight = \"bold\";\n        $36a39f8f3ab768eb$var$calcC4ShapeTextWH(\"label\", currentBoundary, currentBoundaryTextWrap, currentBoundaryLabelConf, currentBounds.data.widthLimit);\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 = $36a39f8f3ab768eb$var$boundaryFont($36a39f8f3ab768eb$var$conf);\n            $36a39f8f3ab768eb$var$calcC4ShapeTextWH(\"type\", currentBoundary, currentBoundaryTextWrap, currentBoundaryTypeConf, currentBounds.data.widthLimit);\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 = $36a39f8f3ab768eb$var$boundaryFont($36a39f8f3ab768eb$var$conf);\n            currentBoundaryDescrConf.fontSize = currentBoundaryDescrConf.fontSize - 2;\n            $36a39f8f3ab768eb$var$calcC4ShapeTextWH(\"descr\", currentBoundary, currentBoundaryTextWrap, currentBoundaryDescrConf, currentBounds.data.widthLimit);\n            currentBoundary[\"descr\"].Y = Y + 20;\n            Y = currentBoundary[\"descr\"].Y + currentBoundary[\"descr\"].height;\n        }\n        if (i == 0 || i % $36a39f8f3ab768eb$var$c4BoundaryInRow === 0) {\n            let _x = parentBounds.data.startx + $36a39f8f3ab768eb$var$conf.diagramMarginX;\n            let _y = parentBounds.data.stopy + $36a39f8f3ab768eb$var$conf.diagramMarginY + Y;\n            currentBounds.setData(_x, _x, _y, _y);\n        } else {\n            let _x = currentBounds.data.stopx !== currentBounds.data.startx ? currentBounds.data.stopx + $36a39f8f3ab768eb$var$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) $36a39f8f3ab768eb$var$drawC4ShapeArray(currentBounds, diagram2, currentPersonOrSystemArray, currentPersonOrSystemKeys);\n        parentBoundaryAlias = currentBoundary.alias;\n        let nextCurrentBoundaries = diagObj.db.getBoundarys(parentBoundaryAlias);\n        if (nextCurrentBoundaries.length > 0) $36a39f8f3ab768eb$var$drawInsideBoundary(diagram2, parentBoundaryAlias, currentBounds, nextCurrentBoundaries, diagObj);\n        if (currentBoundary.alias !== \"global\") $36a39f8f3ab768eb$var$drawBoundary(diagram2, currentBoundary, currentBounds);\n        parentBounds.data.stopy = Math.max(currentBounds.data.stopy + $36a39f8f3ab768eb$var$conf.c4ShapeMargin, parentBounds.data.stopy);\n        parentBounds.data.stopx = Math.max(currentBounds.data.stopx + $36a39f8f3ab768eb$var$conf.c4ShapeMargin, parentBounds.data.stopx);\n        $36a39f8f3ab768eb$var$globalBoundaryMaxX = Math.max($36a39f8f3ab768eb$var$globalBoundaryMaxX, parentBounds.data.stopx);\n        $36a39f8f3ab768eb$var$globalBoundaryMaxY = Math.max($36a39f8f3ab768eb$var$globalBoundaryMaxY, parentBounds.data.stopy);\n    }\n}\nconst $36a39f8f3ab768eb$var$draw = function(_text, id, _version, diagObj) {\n    $36a39f8f3ab768eb$var$conf = (0, $4jcZX.c)().c4;\n    const securityLevel = (0, $4jcZX.c)().securityLevel;\n    let sandboxElement;\n    if (securityLevel === \"sandbox\") sandboxElement = (0, $2YFJl.select)(\"#i\" + id);\n    const root = securityLevel === \"sandbox\" ? (0, $2YFJl.select)(sandboxElement.nodes()[0].contentDocument.body) : (0, $2YFJl.select)(\"body\");\n    let db2 = diagObj.db;\n    diagObj.db.setWrap($36a39f8f3ab768eb$var$conf.wrap);\n    $36a39f8f3ab768eb$var$c4ShapeInRow = db2.getC4ShapeInRow();\n    $36a39f8f3ab768eb$var$c4BoundaryInRow = db2.getC4BoundaryInRow();\n    (0, $4jcZX.l).debug(`C:${JSON.stringify($36a39f8f3ab768eb$var$conf, null, 2)}`);\n    const diagram2 = securityLevel === \"sandbox\" ? root.select(`[id=\"${id}\"]`) : (0, $2YFJl.select)(`[id=\"${id}\"]`);\n    $36a39f8f3ab768eb$var$svgDraw.insertComputerIcon(diagram2);\n    $36a39f8f3ab768eb$var$svgDraw.insertDatabaseIcon(diagram2);\n    $36a39f8f3ab768eb$var$svgDraw.insertClockIcon(diagram2);\n    let screenBounds = new $36a39f8f3ab768eb$var$Bounds(diagObj);\n    screenBounds.setData($36a39f8f3ab768eb$var$conf.diagramMarginX, $36a39f8f3ab768eb$var$conf.diagramMarginX, $36a39f8f3ab768eb$var$conf.diagramMarginY, $36a39f8f3ab768eb$var$conf.diagramMarginY);\n    screenBounds.data.widthLimit = screen.availWidth;\n    $36a39f8f3ab768eb$var$globalBoundaryMaxX = $36a39f8f3ab768eb$var$conf.diagramMarginX;\n    $36a39f8f3ab768eb$var$globalBoundaryMaxY = $36a39f8f3ab768eb$var$conf.diagramMarginY;\n    const title2 = diagObj.db.getTitle();\n    let currentBoundaries = diagObj.db.getBoundarys(\"\");\n    $36a39f8f3ab768eb$var$drawInsideBoundary(diagram2, \"\", screenBounds, currentBoundaries, diagObj);\n    $36a39f8f3ab768eb$var$svgDraw.insertArrowHead(diagram2);\n    $36a39f8f3ab768eb$var$svgDraw.insertArrowEnd(diagram2);\n    $36a39f8f3ab768eb$var$svgDraw.insertArrowCrossHead(diagram2);\n    $36a39f8f3ab768eb$var$svgDraw.insertArrowFilledHead(diagram2);\n    $36a39f8f3ab768eb$var$drawRels(diagram2, diagObj.db.getRels(), diagObj.db.getC4Shape, diagObj);\n    screenBounds.data.stopx = $36a39f8f3ab768eb$var$globalBoundaryMaxX;\n    screenBounds.data.stopy = $36a39f8f3ab768eb$var$globalBoundaryMaxY;\n    const box = screenBounds.data;\n    let boxHeight = box.stopy - box.starty;\n    let height = boxHeight + 2 * $36a39f8f3ab768eb$var$conf.diagramMarginY;\n    let boxWidth = box.stopx - box.startx;\n    const width = boxWidth + 2 * $36a39f8f3ab768eb$var$conf.diagramMarginX;\n    if (title2) diagram2.append(\"text\").text(title2).attr(\"x\", (box.stopx - box.startx) / 2 - 4 * $36a39f8f3ab768eb$var$conf.diagramMarginX).attr(\"y\", box.starty + $36a39f8f3ab768eb$var$conf.diagramMarginY);\n    (0, $4jcZX.i)(diagram2, height, width, $36a39f8f3ab768eb$var$conf.useMaxWidth);\n    const extraVertForTitle = title2 ? 60 : 0;\n    diagram2.attr(\"viewBox\", box.startx - $36a39f8f3ab768eb$var$conf.diagramMarginX + \" -\" + ($36a39f8f3ab768eb$var$conf.diagramMarginY + extraVertForTitle) + \" \" + width + \" \" + (height + extraVertForTitle));\n    (0, $4jcZX.l).debug(`models:`, box);\n};\nconst $36a39f8f3ab768eb$var$renderer = {\n    drawPersonOrSystemArray: $36a39f8f3ab768eb$var$drawC4ShapeArray,\n    drawBoundary: $36a39f8f3ab768eb$var$drawBoundary,\n    setConf: $36a39f8f3ab768eb$var$setConf,\n    draw: $36a39f8f3ab768eb$var$draw\n};\nconst $36a39f8f3ab768eb$var$getStyles = (options)=>`.person {\n    stroke: ${options.personBorder};\n    fill: ${options.personBkg};\n  }\n`;\nconst $36a39f8f3ab768eb$var$styles = $36a39f8f3ab768eb$var$getStyles;\nconst $36a39f8f3ab768eb$export$6118d022d940d562 = {\n    parser: $36a39f8f3ab768eb$var$parser$1,\n    db: $36a39f8f3ab768eb$var$db,\n    renderer: $36a39f8f3ab768eb$var$renderer,\n    styles: $36a39f8f3ab768eb$var$styles,\n    init: ({ c4: c4, wrap: wrap })=>{\n        $36a39f8f3ab768eb$var$renderer.setConf(c4);\n        $36a39f8f3ab768eb$var$db.setWrap(wrap);\n    }\n};\n\n});\nparcelRegister(\"2CvUP\", function(module, exports) {\n\n$parcel$export(module.exports, \"d\", () => $1e87e3270b855a4b$export$4368d992c4eafac0);\n$parcel$export(module.exports, \"a\", () => $1e87e3270b855a4b$export$407448d2b89b1813);\n$parcel$export(module.exports, \"f\", () => $1e87e3270b855a4b$export$2d1720544b23b823);\n$parcel$export(module.exports, \"c\", () => $1e87e3270b855a4b$export$db3b6bfb95261072);\n$parcel$export(module.exports, \"b\", () => $1e87e3270b855a4b$export$8b22cf2602fb60ce);\n$parcel$export(module.exports, \"g\", () => $1e87e3270b855a4b$export$39b482c5e57630a8);\n$parcel$export(module.exports, \"e\", () => $1e87e3270b855a4b$export$f1e1789686576879);\n\nvar $2ujND = parcelRequire(\"2ujND\");\n\nvar $4jcZX = parcelRequire(\"4jcZX\");\nconst $1e87e3270b855a4b$export$4368d992c4eafac0 = (element, rectData)=>{\n    const rectElement = element.append(\"rect\");\n    rectElement.attr(\"x\", rectData.x);\n    rectElement.attr(\"y\", rectData.y);\n    rectElement.attr(\"fill\", rectData.fill);\n    rectElement.attr(\"stroke\", rectData.stroke);\n    rectElement.attr(\"width\", rectData.width);\n    rectElement.attr(\"height\", rectData.height);\n    if (rectData.name) rectElement.attr(\"name\", rectData.name);\n    rectData.rx !== void 0 && rectElement.attr(\"rx\", rectData.rx);\n    rectData.ry !== void 0 && rectElement.attr(\"ry\", rectData.ry);\n    if (rectData.attrs !== void 0) for(const attrKey in rectData.attrs)rectElement.attr(attrKey, rectData.attrs[attrKey]);\n    rectData.class !== void 0 && rectElement.attr(\"class\", rectData.class);\n    return rectElement;\n};\nconst $1e87e3270b855a4b$export$407448d2b89b1813 = (element, bounds)=>{\n    const rectData = {\n        x: bounds.startx,\n        y: bounds.starty,\n        width: bounds.stopx - bounds.startx,\n        height: bounds.stopy - bounds.starty,\n        fill: bounds.fill,\n        stroke: bounds.stroke,\n        class: \"rect\"\n    };\n    const rectElement = $1e87e3270b855a4b$export$4368d992c4eafac0(element, rectData);\n    rectElement.lower();\n};\nconst $1e87e3270b855a4b$export$2d1720544b23b823 = (element, textData)=>{\n    const nText = textData.text.replace((0, $4jcZX.J), \" \");\n    const textElem = element.append(\"text\");\n    textElem.attr(\"x\", textData.x);\n    textElem.attr(\"y\", textData.y);\n    textElem.attr(\"class\", \"legend\");\n    textElem.style(\"text-anchor\", textData.anchor);\n    textData.class !== void 0 && textElem.attr(\"class\", textData.class);\n    const tspan = textElem.append(\"tspan\");\n    tspan.attr(\"x\", textData.x + textData.textMargin * 2);\n    tspan.text(nText);\n    return textElem;\n};\nconst $1e87e3270b855a4b$export$db3b6bfb95261072 = (elem, x, y, link)=>{\n    const imageElement = elem.append(\"image\");\n    imageElement.attr(\"x\", x);\n    imageElement.attr(\"y\", y);\n    const sanitizedLink = (0, $2ujND.sanitizeUrl)(link);\n    imageElement.attr(\"xlink:href\", sanitizedLink);\n};\nconst $1e87e3270b855a4b$export$8b22cf2602fb60ce = (element, x, y, link)=>{\n    const imageElement = element.append(\"use\");\n    imageElement.attr(\"x\", x);\n    imageElement.attr(\"y\", y);\n    const sanitizedLink = (0, $2ujND.sanitizeUrl)(link);\n    imageElement.attr(\"xlink:href\", `#${sanitizedLink}`);\n};\nconst $1e87e3270b855a4b$export$39b482c5e57630a8 = ()=>{\n    const noteRectData = {\n        x: 0,\n        y: 0,\n        width: 100,\n        height: 100,\n        fill: \"#EDF2AE\",\n        stroke: \"#666\",\n        anchor: \"start\",\n        rx: 0,\n        ry: 0\n    };\n    return noteRectData;\n};\nconst $1e87e3270b855a4b$export$f1e1789686576879 = ()=>{\n    const testObject = {\n        x: 0,\n        y: 0,\n        width: 100,\n        height: 100,\n        \"text-anchor\": \"start\",\n        style: \"#666\",\n        textMargin: 0,\n        rx: 0,\n        ry: 0,\n        tspan: true\n    };\n    return testObject;\n};\n\n});\n\n\n\n//# sourceMappingURL=c4Diagram-ae766693.31110a2f.js.map\n","import { s as setAccTitle, g as getAccTitle, a as getAccDescription, b as setAccDescription, c as getConfig, d as sanitizeText, e as common, f as assignWithDepth, h as calculateTextWidth, l as log, i as configureSvgSize, w as wrapLabel, j as calculateTextHeight } from \"./mermaid-6dc72991.js\";\nimport { select } from \"d3\";\nimport { d as drawRect$1, g as getNoteRect } from \"./svgDrawCommon-5e1cfd1d.js\";\nimport { sanitizeUrl } from \"@braintree/sanitize-url\";\nimport \"ts-dedent\";\nimport \"dayjs\";\nimport \"dompurify\";\nimport \"khroma\";\nimport \"lodash-es/memoize.js\";\nimport \"lodash-es/merge.js\";\nimport \"stylis\";\nimport \"lodash-es/isEmpty.js\";\nvar parser = function() {\n  var o = function(k, v, o2, l) {\n    for (o2 = o2 || {}, l = k.length; l--; o2[k[l]] = v)\n      ;\n    return o2;\n  }, $V0 = [1, 24], $V1 = [1, 25], $V2 = [1, 26], $V3 = [1, 27], $V4 = [1, 28], $V5 = [1, 63], $V6 = [1, 64], $V7 = [1, 65], $V8 = [1, 66], $V9 = [1, 67], $Va = [1, 68], $Vb = [1, 69], $Vc = [1, 29], $Vd = [1, 30], $Ve = [1, 31], $Vf = [1, 32], $Vg = [1, 33], $Vh = [1, 34], $Vi = [1, 35], $Vj = [1, 36], $Vk = [1, 37], $Vl = [1, 38], $Vm = [1, 39], $Vn = [1, 40], $Vo = [1, 41], $Vp = [1, 42], $Vq = [1, 43], $Vr = [1, 44], $Vs = [1, 45], $Vt = [1, 46], $Vu = [1, 47], $Vv = [1, 48], $Vw = [1, 50], $Vx = [1, 51], $Vy = [1, 52], $Vz = [1, 53], $VA = [1, 54], $VB = [1, 55], $VC = [1, 56], $VD = [1, 57], $VE = [1, 58], $VF = [1, 59], $VG = [1, 60], $VH = [14, 42], $VI = [14, 34, 36, 37, 38, 39, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74], $VJ = [12, 14, 34, 36, 37, 38, 39, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74], $VK = [1, 82], $VL = [1, 83], $VM = [1, 84], $VN = [1, 85], $VO = [12, 14, 42], $VP = [12, 14, 33, 42], $VQ = [12, 14, 33, 42, 76, 77, 79, 80], $VR = [12, 33], $VS = [34, 36, 37, 38, 39, 40, 41, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74];\n  var parser2 = {\n    trace: function trace() {\n    },\n    yy: {},\n    symbols_: { \"error\": 2, \"start\": 3, \"mermaidDoc\": 4, \"direction\": 5, \"direction_tb\": 6, \"direction_bt\": 7, \"direction_rl\": 8, \"direction_lr\": 9, \"graphConfig\": 10, \"C4_CONTEXT\": 11, \"NEWLINE\": 12, \"statements\": 13, \"EOF\": 14, \"C4_CONTAINER\": 15, \"C4_COMPONENT\": 16, \"C4_DYNAMIC\": 17, \"C4_DEPLOYMENT\": 18, \"otherStatements\": 19, \"diagramStatements\": 20, \"otherStatement\": 21, \"title\": 22, \"accDescription\": 23, \"acc_title\": 24, \"acc_title_value\": 25, \"acc_descr\": 26, \"acc_descr_value\": 27, \"acc_descr_multiline_value\": 28, \"boundaryStatement\": 29, \"boundaryStartStatement\": 30, \"boundaryStopStatement\": 31, \"boundaryStart\": 32, \"LBRACE\": 33, \"ENTERPRISE_BOUNDARY\": 34, \"attributes\": 35, \"SYSTEM_BOUNDARY\": 36, \"BOUNDARY\": 37, \"CONTAINER_BOUNDARY\": 38, \"NODE\": 39, \"NODE_L\": 40, \"NODE_R\": 41, \"RBRACE\": 42, \"diagramStatement\": 43, \"PERSON\": 44, \"PERSON_EXT\": 45, \"SYSTEM\": 46, \"SYSTEM_DB\": 47, \"SYSTEM_QUEUE\": 48, \"SYSTEM_EXT\": 49, \"SYSTEM_EXT_DB\": 50, \"SYSTEM_EXT_QUEUE\": 51, \"CONTAINER\": 52, \"CONTAINER_DB\": 53, \"CONTAINER_QUEUE\": 54, \"CONTAINER_EXT\": 55, \"CONTAINER_EXT_DB\": 56, \"CONTAINER_EXT_QUEUE\": 57, \"COMPONENT\": 58, \"COMPONENT_DB\": 59, \"COMPONENT_QUEUE\": 60, \"COMPONENT_EXT\": 61, \"COMPONENT_EXT_DB\": 62, \"COMPONENT_EXT_QUEUE\": 63, \"REL\": 64, \"BIREL\": 65, \"REL_U\": 66, \"REL_D\": 67, \"REL_L\": 68, \"REL_R\": 69, \"REL_B\": 70, \"REL_INDEX\": 71, \"UPDATE_EL_STYLE\": 72, \"UPDATE_REL_STYLE\": 73, \"UPDATE_LAYOUT_CONFIG\": 74, \"attribute\": 75, \"STR\": 76, \"STR_KEY\": 77, \"STR_VALUE\": 78, \"ATTRIBUTE\": 79, \"ATTRIBUTE_EMPTY\": 80, \"$accept\": 0, \"$end\": 1 },\n    terminals_: { 2: \"error\", 6: \"direction_tb\", 7: \"direction_bt\", 8: \"direction_rl\", 9: \"direction_lr\", 11: \"C4_CONTEXT\", 12: \"NEWLINE\", 14: \"EOF\", 15: \"C4_CONTAINER\", 16: \"C4_COMPONENT\", 17: \"C4_DYNAMIC\", 18: \"C4_DEPLOYMENT\", 22: \"title\", 23: \"accDescription\", 24: \"acc_title\", 25: \"acc_title_value\", 26: \"acc_descr\", 27: \"acc_descr_value\", 28: \"acc_descr_multiline_value\", 33: \"LBRACE\", 34: \"ENTERPRISE_BOUNDARY\", 36: \"SYSTEM_BOUNDARY\", 37: \"BOUNDARY\", 38: \"CONTAINER_BOUNDARY\", 39: \"NODE\", 40: \"NODE_L\", 41: \"NODE_R\", 42: \"RBRACE\", 44: \"PERSON\", 45: \"PERSON_EXT\", 46: \"SYSTEM\", 47: \"SYSTEM_DB\", 48: \"SYSTEM_QUEUE\", 49: \"SYSTEM_EXT\", 50: \"SYSTEM_EXT_DB\", 51: \"SYSTEM_EXT_QUEUE\", 52: \"CONTAINER\", 53: \"CONTAINER_DB\", 54: \"CONTAINER_QUEUE\", 55: \"CONTAINER_EXT\", 56: \"CONTAINER_EXT_DB\", 57: \"CONTAINER_EXT_QUEUE\", 58: \"COMPONENT\", 59: \"COMPONENT_DB\", 60: \"COMPONENT_QUEUE\", 61: \"COMPONENT_EXT\", 62: \"COMPONENT_EXT_DB\", 63: \"COMPONENT_EXT_QUEUE\", 64: \"REL\", 65: \"BIREL\", 66: \"REL_U\", 67: \"REL_D\", 68: \"REL_L\", 69: \"REL_R\", 70: \"REL_B\", 71: \"REL_INDEX\", 72: \"UPDATE_EL_STYLE\", 73: \"UPDATE_REL_STYLE\", 74: \"UPDATE_LAYOUT_CONFIG\", 76: \"STR\", 77: \"STR_KEY\", 78: \"STR_VALUE\", 79: \"ATTRIBUTE\", 80: \"ATTRIBUTE_EMPTY\" },\n    productions_: [0, [3, 1], [3, 1], [5, 1], [5, 1], [5, 1], [5, 1], [4, 1], [10, 4], [10, 4], [10, 4], [10, 4], [10, 4], [13, 1], [13, 1], [13, 2], [19, 1], [19, 2], [19, 3], [21, 1], [21, 1], [21, 2], [21, 2], [21, 1], [29, 3], [30, 3], [30, 3], [30, 4], [32, 2], [32, 2], [32, 2], [32, 2], [32, 2], [32, 2], [32, 2], [31, 1], [20, 1], [20, 2], [20, 3], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 1], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [35, 1], [35, 2], [75, 1], [75, 2], [75, 1], [75, 1]],\n    performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) {\n      var $0 = $$.length - 1;\n      switch (yystate) {\n        case 3:\n          yy.setDirection(\"TB\");\n          break;\n        case 4:\n          yy.setDirection(\"BT\");\n          break;\n        case 5:\n          yy.setDirection(\"RL\");\n          break;\n        case 6:\n          yy.setDirection(\"LR\");\n          break;\n        case 8:\n        case 9:\n        case 10:\n        case 11:\n        case 12:\n          yy.setC4Type($$[$0 - 3]);\n          break;\n        case 19:\n          yy.setTitle($$[$0].substring(6));\n          this.$ = $$[$0].substring(6);\n          break;\n        case 20:\n          yy.setAccDescription($$[$0].substring(15));\n          this.$ = $$[$0].substring(15);\n          break;\n        case 21:\n          this.$ = $$[$0].trim();\n          yy.setTitle(this.$);\n          break;\n        case 22:\n        case 23:\n          this.$ = $$[$0].trim();\n          yy.setAccDescription(this.$);\n          break;\n        case 28:\n        case 29:\n          $$[$0].splice(2, 0, \"ENTERPRISE\");\n          yy.addPersonOrSystemBoundary(...$$[$0]);\n          this.$ = $$[$0];\n          break;\n        case 30:\n          yy.addPersonOrSystemBoundary(...$$[$0]);\n          this.$ = $$[$0];\n          break;\n        case 31:\n          $$[$0].splice(2, 0, \"CONTAINER\");\n          yy.addContainerBoundary(...$$[$0]);\n          this.$ = $$[$0];\n          break;\n        case 32:\n          yy.addDeploymentNode(\"node\", ...$$[$0]);\n          this.$ = $$[$0];\n          break;\n        case 33:\n          yy.addDeploymentNode(\"nodeL\", ...$$[$0]);\n          this.$ = $$[$0];\n          break;\n        case 34:\n          yy.addDeploymentNode(\"nodeR\", ...$$[$0]);\n          this.$ = $$[$0];\n          break;\n        case 35:\n          yy.popBoundaryParseStack();\n          break;\n        case 39:\n          yy.addPersonOrSystem(\"person\", ...$$[$0]);\n          this.$ = $$[$0];\n          break;\n        case 40:\n          yy.addPersonOrSystem(\"external_person\", ...$$[$0]);\n          this.$ = $$[$0];\n          break;\n        case 41:\n          yy.addPersonOrSystem(\"system\", ...$$[$0]);\n          this.$ = $$[$0];\n          break;\n        case 42:\n          yy.addPersonOrSystem(\"system_db\", ...$$[$0]);\n          this.$ = $$[$0];\n          break;\n        case 43:\n          yy.addPersonOrSystem(\"system_queue\", ...$$[$0]);\n          this.$ = $$[$0];\n          break;\n        case 44:\n          yy.addPersonOrSystem(\"external_system\", ...$$[$0]);\n          this.$ = $$[$0];\n          break;\n        case 45:\n          yy.addPersonOrSystem(\"external_system_db\", ...$$[$0]);\n          this.$ = $$[$0];\n          break;\n        case 46:\n          yy.addPersonOrSystem(\"external_system_queue\", ...$$[$0]);\n          this.$ = $$[$0];\n          break;\n        case 47:\n          yy.addContainer(\"container\", ...$$[$0]);\n          this.$ = $$[$0];\n          break;\n        case 48:\n          yy.addContainer(\"container_db\", ...$$[$0]);\n          this.$ = $$[$0];\n          break;\n        case 49:\n          yy.addContainer(\"container_queue\", ...$$[$0]);\n          this.$ = $$[$0];\n          break;\n        case 50:\n          yy.addContainer(\"external_container\", ...$$[$0]);\n          this.$ = $$[$0];\n          break;\n        case 51:\n          yy.addContainer(\"external_container_db\", ...$$[$0]);\n          this.$ = $$[$0];\n          break;\n        case 52:\n          yy.addContainer(\"external_container_queue\", ...$$[$0]);\n          this.$ = $$[$0];\n          break;\n        case 53:\n          yy.addComponent(\"component\", ...$$[$0]);\n          this.$ = $$[$0];\n          break;\n        case 54:\n          yy.addComponent(\"component_db\", ...$$[$0]);\n          this.$ = $$[$0];\n          break;\n        case 55:\n          yy.addComponent(\"component_queue\", ...$$[$0]);\n          this.$ = $$[$0];\n          break;\n        case 56:\n          yy.addComponent(\"external_component\", ...$$[$0]);\n          this.$ = $$[$0];\n          break;\n        case 57:\n          yy.addComponent(\"external_component_db\", ...$$[$0]);\n          this.$ = $$[$0];\n          break;\n        case 58:\n          yy.addComponent(\"external_component_queue\", ...$$[$0]);\n          this.$ = $$[$0];\n          break;\n        case 60:\n          yy.addRel(\"rel\", ...$$[$0]);\n          this.$ = $$[$0];\n          break;\n        case 61:\n          yy.addRel(\"birel\", ...$$[$0]);\n          this.$ = $$[$0];\n          break;\n        case 62:\n          yy.addRel(\"rel_u\", ...$$[$0]);\n          this.$ = $$[$0];\n          break;\n        case 63:\n          yy.addRel(\"rel_d\", ...$$[$0]);\n          this.$ = $$[$0];\n          break;\n        case 64:\n          yy.addRel(\"rel_l\", ...$$[$0]);\n          this.$ = $$[$0];\n          break;\n        case 65:\n          yy.addRel(\"rel_r\", ...$$[$0]);\n          this.$ = $$[$0];\n          break;\n        case 66:\n          yy.addRel(\"rel_b\", ...$$[$0]);\n          this.$ = $$[$0];\n          break;\n        case 67:\n          $$[$0].splice(0, 1);\n          yy.addRel(\"rel\", ...$$[$0]);\n          this.$ = $$[$0];\n          break;\n        case 68:\n          yy.updateElStyle(\"update_el_style\", ...$$[$0]);\n          this.$ = $$[$0];\n          break;\n        case 69:\n          yy.updateRelStyle(\"update_rel_style\", ...$$[$0]);\n          this.$ = $$[$0];\n          break;\n        case 70:\n          yy.updateLayoutConfig(\"update_layout_config\", ...$$[$0]);\n          this.$ = $$[$0];\n          break;\n        case 71:\n          this.$ = [$$[$0]];\n          break;\n        case 72:\n          $$[$0].unshift($$[$0 - 1]);\n          this.$ = $$[$0];\n          break;\n        case 73:\n        case 75:\n          this.$ = $$[$0].trim();\n          break;\n        case 74:\n          let kv = {};\n          kv[$$[$0 - 1].trim()] = $$[$0].trim();\n          this.$ = kv;\n          break;\n        case 76:\n          this.$ = \"\";\n          break;\n      }\n    },\n    table: [{ 3: 1, 4: 2, 5: 3, 6: [1, 5], 7: [1, 6], 8: [1, 7], 9: [1, 8], 10: 4, 11: [1, 9], 15: [1, 10], 16: [1, 11], 17: [1, 12], 18: [1, 13] }, { 1: [3] }, { 1: [2, 1] }, { 1: [2, 2] }, { 1: [2, 7] }, { 1: [2, 3] }, { 1: [2, 4] }, { 1: [2, 5] }, { 1: [2, 6] }, { 12: [1, 14] }, { 12: [1, 15] }, { 12: [1, 16] }, { 12: [1, 17] }, { 12: [1, 18] }, { 13: 19, 19: 20, 20: 21, 21: 22, 22: $V0, 23: $V1, 24: $V2, 26: $V3, 28: $V4, 29: 49, 30: 61, 32: 62, 34: $V5, 36: $V6, 37: $V7, 38: $V8, 39: $V9, 40: $Va, 41: $Vb, 43: 23, 44: $Vc, 45: $Vd, 46: $Ve, 47: $Vf, 48: $Vg, 49: $Vh, 50: $Vi, 51: $Vj, 52: $Vk, 53: $Vl, 54: $Vm, 55: $Vn, 56: $Vo, 57: $Vp, 58: $Vq, 59: $Vr, 60: $Vs, 61: $Vt, 62: $Vu, 63: $Vv, 64: $Vw, 65: $Vx, 66: $Vy, 67: $Vz, 68: $VA, 69: $VB, 70: $VC, 71: $VD, 72: $VE, 73: $VF, 74: $VG }, { 13: 70, 19: 20, 20: 21, 21: 22, 22: $V0, 23: $V1, 24: $V2, 26: $V3, 28: $V4, 29: 49, 30: 61, 32: 62, 34: $V5, 36: $V6, 37: $V7, 38: $V8, 39: $V9, 40: $Va, 41: $Vb, 43: 23, 44: $Vc, 45: $Vd, 46: $Ve, 47: $Vf, 48: $Vg, 49: $Vh, 50: $Vi, 51: $Vj, 52: $Vk, 53: $Vl, 54: $Vm, 55: $Vn, 56: $Vo, 57: $Vp, 58: $Vq, 59: $Vr, 60: $Vs, 61: $Vt, 62: $Vu, 63: $Vv, 64: $Vw, 65: $Vx, 66: $Vy, 67: $Vz, 68: $VA, 69: $VB, 70: $VC, 71: $VD, 72: $VE, 73: $VF, 74: $VG }, { 13: 71, 19: 20, 20: 21, 21: 22, 22: $V0, 23: $V1, 24: $V2, 26: $V3, 28: $V4, 29: 49, 30: 61, 32: 62, 34: $V5, 36: $V6, 37: $V7, 38: $V8, 39: $V9, 40: $Va, 41: $Vb, 43: 23, 44: $Vc, 45: $Vd, 46: $Ve, 47: $Vf, 48: $Vg, 49: $Vh, 50: $Vi, 51: $Vj, 52: $Vk, 53: $Vl, 54: $Vm, 55: $Vn, 56: $Vo, 57: $Vp, 58: $Vq, 59: $Vr, 60: $Vs, 61: $Vt, 62: $Vu, 63: $Vv, 64: $Vw, 65: $Vx, 66: $Vy, 67: $Vz, 68: $VA, 69: $VB, 70: $VC, 71: $VD, 72: $VE, 73: $VF, 74: $VG }, { 13: 72, 19: 20, 20: 21, 21: 22, 22: $V0, 23: $V1, 24: $V2, 26: $V3, 28: $V4, 29: 49, 30: 61, 32: 62, 34: $V5, 36: $V6, 37: $V7, 38: $V8, 39: $V9, 40: $Va, 41: $Vb, 43: 23, 44: $Vc, 45: $Vd, 46: $Ve, 47: $Vf, 48: $Vg, 49: $Vh, 50: $Vi, 51: $Vj, 52: $Vk, 53: $Vl, 54: $Vm, 55: $Vn, 56: $Vo, 57: $Vp, 58: $Vq, 59: $Vr, 60: $Vs, 61: $Vt, 62: $Vu, 63: $Vv, 64: $Vw, 65: $Vx, 66: $Vy, 67: $Vz, 68: $VA, 69: $VB, 70: $VC, 71: $VD, 72: $VE, 73: $VF, 74: $VG }, { 13: 73, 19: 20, 20: 21, 21: 22, 22: $V0, 23: $V1, 24: $V2, 26: $V3, 28: $V4, 29: 49, 30: 61, 32: 62, 34: $V5, 36: $V6, 37: $V7, 38: $V8, 39: $V9, 40: $Va, 41: $Vb, 43: 23, 44: $Vc, 45: $Vd, 46: $Ve, 47: $Vf, 48: $Vg, 49: $Vh, 50: $Vi, 51: $Vj, 52: $Vk, 53: $Vl, 54: $Vm, 55: $Vn, 56: $Vo, 57: $Vp, 58: $Vq, 59: $Vr, 60: $Vs, 61: $Vt, 62: $Vu, 63: $Vv, 64: $Vw, 65: $Vx, 66: $Vy, 67: $Vz, 68: $VA, 69: $VB, 70: $VC, 71: $VD, 72: $VE, 73: $VF, 74: $VG }, { 14: [1, 74] }, o($VH, [2, 13], { 43: 23, 29: 49, 30: 61, 32: 62, 20: 75, 34: $V5, 36: $V6, 37: $V7, 38: $V8, 39: $V9, 40: $Va, 41: $Vb, 44: $Vc, 45: $Vd, 46: $Ve, 47: $Vf, 48: $Vg, 49: $Vh, 50: $Vi, 51: $Vj, 52: $Vk, 53: $Vl, 54: $Vm, 55: $Vn, 56: $Vo, 57: $Vp, 58: $Vq, 59: $Vr, 60: $Vs, 61: $Vt, 62: $Vu, 63: $Vv, 64: $Vw, 65: $Vx, 66: $Vy, 67: $Vz, 68: $VA, 69: $VB, 70: $VC, 71: $VD, 72: $VE, 73: $VF, 74: $VG }), o($VH, [2, 14]), o($VI, [2, 16], { 12: [1, 76] }), o($VH, [2, 36], { 12: [1, 77] }), o($VJ, [2, 19]), o($VJ, [2, 20]), { 25: [1, 78] }, { 27: [1, 79] }, o($VJ, [2, 23]), { 35: 80, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 86, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 87, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 88, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 89, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 90, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 91, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 92, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 93, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 94, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 95, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 96, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 97, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 98, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 99, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 100, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 101, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 102, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 103, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 104, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, o($VO, [2, 59]), { 35: 105, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 106, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 107, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 108, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 109, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 110, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 111, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 112, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 113, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 114, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 115, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 20: 116, 29: 49, 30: 61, 32: 62, 34: $V5, 36: $V6, 37: $V7, 38: $V8, 39: $V9, 40: $Va, 41: $Vb, 43: 23, 44: $Vc, 45: $Vd, 46: $Ve, 47: $Vf, 48: $Vg, 49: $Vh, 50: $Vi, 51: $Vj, 52: $Vk, 53: $Vl, 54: $Vm, 55: $Vn, 56: $Vo, 57: $Vp, 58: $Vq, 59: $Vr, 60: $Vs, 61: $Vt, 62: $Vu, 63: $Vv, 64: $Vw, 65: $Vx, 66: $Vy, 67: $Vz, 68: $VA, 69: $VB, 70: $VC, 71: $VD, 72: $VE, 73: $VF, 74: $VG }, { 12: [1, 118], 33: [1, 117] }, { 35: 119, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 120, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 121, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 122, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 123, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 124, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 125, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 14: [1, 126] }, { 14: [1, 127] }, { 14: [1, 128] }, { 14: [1, 129] }, { 1: [2, 8] }, o($VH, [2, 15]), o($VI, [2, 17], { 21: 22, 19: 130, 22: $V0, 23: $V1, 24: $V2, 26: $V3, 28: $V4 }), o($VH, [2, 37], { 19: 20, 20: 21, 21: 22, 43: 23, 29: 49, 30: 61, 32: 62, 13: 131, 22: $V0, 23: $V1, 24: $V2, 26: $V3, 28: $V4, 34: $V5, 36: $V6, 37: $V7, 38: $V8, 39: $V9, 40: $Va, 41: $Vb, 44: $Vc, 45: $Vd, 46: $Ve, 47: $Vf, 48: $Vg, 49: $Vh, 50: $Vi, 51: $Vj, 52: $Vk, 53: $Vl, 54: $Vm, 55: $Vn, 56: $Vo, 57: $Vp, 58: $Vq, 59: $Vr, 60: $Vs, 61: $Vt, 62: $Vu, 63: $Vv, 64: $Vw, 65: $Vx, 66: $Vy, 67: $Vz, 68: $VA, 69: $VB, 70: $VC, 71: $VD, 72: $VE, 73: $VF, 74: $VG }), o($VJ, [2, 21]), o($VJ, [2, 22]), o($VO, [2, 39]), o($VP, [2, 71], { 75: 81, 35: 132, 76: $VK, 77: $VL, 79: $VM, 80: $VN }), o($VQ, [2, 73]), { 78: [1, 133] }, o($VQ, [2, 75]), o($VQ, [2, 76]), o($VO, [2, 40]), o($VO, [2, 41]), o($VO, [2, 42]), o($VO, [2, 43]), o($VO, [2, 44]), o($VO, [2, 45]), o($VO, [2, 46]), o($VO, [2, 47]), o($VO, [2, 48]), o($VO, [2, 49]), o($VO, [2, 50]), o($VO, [2, 51]), o($VO, [2, 52]), o($VO, [2, 53]), o($VO, [2, 54]), o($VO, [2, 55]), o($VO, [2, 56]), o($VO, [2, 57]), o($VO, [2, 58]), o($VO, [2, 60]), o($VO, [2, 61]), o($VO, [2, 62]), o($VO, [2, 63]), o($VO, [2, 64]), o($VO, [2, 65]), o($VO, [2, 66]), o($VO, [2, 67]), o($VO, [2, 68]), o($VO, [2, 69]), o($VO, [2, 70]), { 31: 134, 42: [1, 135] }, { 12: [1, 136] }, { 33: [1, 137] }, o($VR, [2, 28]), o($VR, [2, 29]), o($VR, [2, 30]), o($VR, [2, 31]), o($VR, [2, 32]), o($VR, [2, 33]), o($VR, [2, 34]), { 1: [2, 9] }, { 1: [2, 10] }, { 1: [2, 11] }, { 1: [2, 12] }, o($VI, [2, 18]), o($VH, [2, 38]), o($VP, [2, 72]), o($VQ, [2, 74]), o($VO, [2, 24]), o($VO, [2, 35]), o($VS, [2, 25]), o($VS, [2, 26], { 12: [1, 138] }), o($VS, [2, 27])],\n    defaultActions: { 2: [2, 1], 3: [2, 2], 4: [2, 7], 5: [2, 3], 6: [2, 4], 7: [2, 5], 8: [2, 6], 74: [2, 8], 126: [2, 9], 127: [2, 10], 128: [2, 11], 129: [2, 12] },\n    parseError: function parseError(str, hash) {\n      if (hash.recoverable) {\n        this.trace(str);\n      } else {\n        var error = new Error(str);\n        error.hash = hash;\n        throw error;\n      }\n    },\n    parse: function parse(input) {\n      var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = \"\", yylineno = 0, yyleng = 0, TERROR = 2, EOF = 1;\n      var args = lstack.slice.call(arguments, 1);\n      var lexer2 = Object.create(this.lexer);\n      var sharedState = { yy: {} };\n      for (var k in this.yy) {\n        if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n          sharedState.yy[k] = this.yy[k];\n        }\n      }\n      lexer2.setInput(input, sharedState.yy);\n      sharedState.yy.lexer = lexer2;\n      sharedState.yy.parser = this;\n      if (typeof lexer2.yylloc == \"undefined\") {\n        lexer2.yylloc = {};\n      }\n      var yyloc = lexer2.yylloc;\n      lstack.push(yyloc);\n      var ranges = lexer2.options && lexer2.options.ranges;\n      if (typeof sharedState.yy.parseError === \"function\") {\n        this.parseError = sharedState.yy.parseError;\n      } else {\n        this.parseError = Object.getPrototypeOf(this).parseError;\n      }\n      function lex() {\n        var token;\n        token = tstack.pop() || lexer2.lex() || EOF;\n        if (typeof token !== \"number\") {\n          if (token instanceof Array) {\n            tstack = token;\n            token = tstack.pop();\n          }\n          token = self.symbols_[token] || token;\n        }\n        return token;\n      }\n      var symbol, state, action, r, yyval = {}, p, len, newState, expected;\n      while (true) {\n        state = stack[stack.length - 1];\n        if (this.defaultActions[state]) {\n          action = this.defaultActions[state];\n        } else {\n          if (symbol === null || typeof symbol == \"undefined\") {\n            symbol = lex();\n          }\n          action = table[state] && table[state][symbol];\n        }\n        if (typeof action === \"undefined\" || !action.length || !action[0]) {\n          var errStr = \"\";\n          expected = [];\n          for (p in table[state]) {\n            if (this.terminals_[p] && p > TERROR) {\n              expected.push(\"'\" + this.terminals_[p] + \"'\");\n            }\n          }\n          if (lexer2.showPosition) {\n            errStr = \"Parse error on line \" + (yylineno + 1) + \":\\n\" + lexer2.showPosition() + \"\\nExpecting \" + expected.join(\", \") + \", got '\" + (this.terminals_[symbol] || symbol) + \"'\";\n          } else {\n            errStr = \"Parse error on line \" + (yylineno + 1) + \": Unexpected \" + (symbol == EOF ? \"end of input\" : \"'\" + (this.terminals_[symbol] || symbol) + \"'\");\n          }\n          this.parseError(errStr, {\n            text: lexer2.match,\n            token: this.terminals_[symbol] || symbol,\n            line: lexer2.yylineno,\n            loc: yyloc,\n            expected\n          });\n        }\n        if (action[0] instanceof Array && action.length > 1) {\n          throw new Error(\"Parse Error: multiple actions possible at state: \" + state + \", token: \" + symbol);\n        }\n        switch (action[0]) {\n          case 1:\n            stack.push(symbol);\n            vstack.push(lexer2.yytext);\n            lstack.push(lexer2.yylloc);\n            stack.push(action[1]);\n            symbol = null;\n            {\n              yyleng = lexer2.yyleng;\n              yytext = lexer2.yytext;\n              yylineno = lexer2.yylineno;\n              yyloc = lexer2.yylloc;\n            }\n            break;\n          case 2:\n            len = this.productions_[action[1]][1];\n            yyval.$ = vstack[vstack.length - len];\n            yyval._$ = {\n              first_line: lstack[lstack.length - (len || 1)].first_line,\n              last_line: lstack[lstack.length - 1].last_line,\n              first_column: lstack[lstack.length - (len || 1)].first_column,\n              last_column: lstack[lstack.length - 1].last_column\n            };\n            if (ranges) {\n              yyval._$.range = [\n                lstack[lstack.length - (len || 1)].range[0],\n                lstack[lstack.length - 1].range[1]\n              ];\n            }\n            r = this.performAction.apply(yyval, [\n              yytext,\n              yyleng,\n              yylineno,\n              sharedState.yy,\n              action[1],\n              vstack,\n              lstack\n            ].concat(args));\n            if (typeof r !== \"undefined\") {\n              return r;\n            }\n            if (len) {\n              stack = stack.slice(0, -1 * len * 2);\n              vstack = vstack.slice(0, -1 * len);\n              lstack = lstack.slice(0, -1 * len);\n            }\n            stack.push(this.productions_[action[1]][0]);\n            vstack.push(yyval.$);\n            lstack.push(yyval._$);\n            newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n            stack.push(newState);\n            break;\n          case 3:\n            return true;\n        }\n      }\n      return true;\n    }\n  };\n  var lexer = function() {\n    var lexer2 = {\n      EOF: 1,\n      parseError: function parseError(str, hash) {\n        if (this.yy.parser) {\n          this.yy.parser.parseError(str, hash);\n        } else {\n          throw new Error(str);\n        }\n      },\n      // resets the lexer, sets new input\n      setInput: function(input, yy) {\n        this.yy = yy || this.yy || {};\n        this._input = input;\n        this._more = this._backtrack = this.done = false;\n        this.yylineno = this.yyleng = 0;\n        this.yytext = this.matched = this.match = \"\";\n        this.conditionStack = [\"INITIAL\"];\n        this.yylloc = {\n          first_line: 1,\n          first_column: 0,\n          last_line: 1,\n          last_column: 0\n        };\n        if (this.options.ranges) {\n          this.yylloc.range = [0, 0];\n        }\n        this.offset = 0;\n        return this;\n      },\n      // consumes and returns one char from the input\n      input: function() {\n        var ch = this._input[0];\n        this.yytext += ch;\n        this.yyleng++;\n        this.offset++;\n        this.match += ch;\n        this.matched += ch;\n        var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n        if (lines) {\n          this.yylineno++;\n          this.yylloc.last_line++;\n        } else {\n          this.yylloc.last_column++;\n        }\n        if (this.options.ranges) {\n          this.yylloc.range[1]++;\n        }\n        this._input = this._input.slice(1);\n        return ch;\n      },\n      // unshifts one char (or a string) into the input\n      unput: function(ch) {\n        var len = ch.length;\n        var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n        this._input = ch + this._input;\n        this.yytext = this.yytext.substr(0, this.yytext.length - len);\n        this.offset -= len;\n        var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n        this.match = this.match.substr(0, this.match.length - 1);\n        this.matched = this.matched.substr(0, this.matched.length - 1);\n        if (lines.length - 1) {\n          this.yylineno -= lines.length - 1;\n        }\n        var r = this.yylloc.range;\n        this.yylloc = {\n          first_line: this.yylloc.first_line,\n          last_line: this.yylineno + 1,\n          first_column: this.yylloc.first_column,\n          last_column: lines ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len\n        };\n        if (this.options.ranges) {\n          this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n        }\n        this.yyleng = this.yytext.length;\n        return this;\n      },\n      // When called from action, caches matched text and appends it on next action\n      more: function() {\n        this._more = true;\n        return this;\n      },\n      // When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\n      reject: function() {\n        if (this.options.backtrack_lexer) {\n          this._backtrack = true;\n        } else {\n          return this.parseError(\"Lexical error on line \" + (this.yylineno + 1) + \". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n\" + this.showPosition(), {\n            text: \"\",\n            token: null,\n            line: this.yylineno\n          });\n        }\n        return this;\n      },\n      // retain first n characters of the match\n      less: function(n) {\n        this.unput(this.match.slice(n));\n      },\n      // displays already matched input, i.e. for error messages\n      pastInput: function() {\n        var past = this.matched.substr(0, this.matched.length - this.match.length);\n        return (past.length > 20 ? \"...\" : \"\") + past.substr(-20).replace(/\\n/g, \"\");\n      },\n      // displays upcoming input, i.e. for error messages\n      upcomingInput: function() {\n        var next = this.match;\n        if (next.length < 20) {\n          next += this._input.substr(0, 20 - next.length);\n        }\n        return (next.substr(0, 20) + (next.length > 20 ? \"...\" : \"\")).replace(/\\n/g, \"\");\n      },\n      // displays the character position where the lexing error occurred, i.e. for error messages\n      showPosition: function() {\n        var pre = this.pastInput();\n        var c2 = new Array(pre.length + 1).join(\"-\");\n        return pre + this.upcomingInput() + \"\\n\" + c2 + \"^\";\n      },\n      // test the lexed token: return FALSE when not a match, otherwise return token\n      test_match: function(match, indexed_rule) {\n        var token, lines, backup;\n        if (this.options.backtrack_lexer) {\n          backup = {\n            yylineno: this.yylineno,\n            yylloc: {\n              first_line: this.yylloc.first_line,\n              last_line: this.last_line,\n              first_column: this.yylloc.first_column,\n              last_column: this.yylloc.last_column\n            },\n            yytext: this.yytext,\n            match: this.match,\n            matches: this.matches,\n            matched: this.matched,\n            yyleng: this.yyleng,\n            offset: this.offset,\n            _more: this._more,\n            _input: this._input,\n            yy: this.yy,\n            conditionStack: this.conditionStack.slice(0),\n            done: this.done\n          };\n          if (this.options.ranges) {\n            backup.yylloc.range = this.yylloc.range.slice(0);\n          }\n        }\n        lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n        if (lines) {\n          this.yylineno += lines.length;\n        }\n        this.yylloc = {\n          first_line: this.yylloc.last_line,\n          last_line: this.yylineno + 1,\n          first_column: this.yylloc.last_column,\n          last_column: lines ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length : this.yylloc.last_column + match[0].length\n        };\n        this.yytext += match[0];\n        this.match += match[0];\n        this.matches = match;\n        this.yyleng = this.yytext.length;\n        if (this.options.ranges) {\n          this.yylloc.range = [this.offset, this.offset += this.yyleng];\n        }\n        this._more = false;\n        this._backtrack = false;\n        this._input = this._input.slice(match[0].length);\n        this.matched += match[0];\n        token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n        if (this.done && this._input) {\n          this.done = false;\n        }\n        if (token) {\n          return token;\n        } else if (this._backtrack) {\n          for (var k in backup) {\n            this[k] = backup[k];\n          }\n          return false;\n        }\n        return false;\n      },\n      // return next match in input\n      next: function() {\n        if (this.done) {\n          return this.EOF;\n        }\n        if (!this._input) {\n          this.done = true;\n        }\n        var token, match, tempMatch, index;\n        if (!this._more) {\n          this.yytext = \"\";\n          this.match = \"\";\n        }\n        var rules = this._currentRules();\n        for (var i = 0; i < rules.length; i++) {\n          tempMatch = this._input.match(this.rules[rules[i]]);\n          if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n            match = tempMatch;\n            index = i;\n            if (this.options.backtrack_lexer) {\n              token = this.test_match(tempMatch, rules[i]);\n              if (token !== false) {\n                return token;\n              } else if (this._backtrack) {\n                match = false;\n                continue;\n              } else {\n                return false;\n              }\n            } else if (!this.options.flex) {\n              break;\n            }\n          }\n        }\n        if (match) {\n          token = this.test_match(match, rules[index]);\n          if (token !== false) {\n            return token;\n          }\n          return false;\n        }\n        if (this._input === \"\") {\n          return this.EOF;\n        } else {\n          return this.parseError(\"Lexical error on line \" + (this.yylineno + 1) + \". Unrecognized text.\\n\" + this.showPosition(), {\n            text: \"\",\n            token: null,\n            line: this.yylineno\n          });\n        }\n      },\n      // return next match that has a token\n      lex: function lex() {\n        var r = this.next();\n        if (r) {\n          return r;\n        } else {\n          return this.lex();\n        }\n      },\n      // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\n      begin: function begin(condition) {\n        this.conditionStack.push(condition);\n      },\n      // pop the previously active lexer condition state off the condition stack\n      popState: function popState() {\n        var n = this.conditionStack.length - 1;\n        if (n > 0) {\n          return this.conditionStack.pop();\n        } else {\n          return this.conditionStack[0];\n        }\n      },\n      // produce the lexer rule set which is active for the currently active lexer condition state\n      _currentRules: function _currentRules() {\n        if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n          return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n        } else {\n          return this.conditions[\"INITIAL\"].rules;\n        }\n      },\n      // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\n      topState: function topState(n) {\n        n = this.conditionStack.length - 1 - Math.abs(n || 0);\n        if (n >= 0) {\n          return this.conditionStack[n];\n        } else {\n          return \"INITIAL\";\n        }\n      },\n      // alias for begin(condition)\n      pushState: function pushState(condition) {\n        this.begin(condition);\n      },\n      // return the number of states currently on the stack\n      stateStackSize: function stateStackSize() {\n        return this.conditionStack.length;\n      },\n      options: {},\n      performAction: function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) {\n        switch ($avoiding_name_collisions) {\n          case 0:\n            return 6;\n          case 1:\n            return 7;\n          case 2:\n            return 8;\n          case 3:\n            return 9;\n          case 4:\n            return 22;\n          case 5:\n            return 23;\n          case 6:\n            this.begin(\"acc_title\");\n            return 24;\n          case 7:\n            this.popState();\n            return \"acc_title_value\";\n          case 8:\n            this.begin(\"acc_descr\");\n            return 26;\n          case 9:\n            this.popState();\n            return \"acc_descr_value\";\n          case 10:\n            this.begin(\"acc_descr_multiline\");\n            break;\n          case 11:\n            this.popState();\n            break;\n          case 12:\n            return \"acc_descr_multiline_value\";\n          case 13:\n            break;\n          case 14:\n            c;\n            break;\n          case 15:\n            return 12;\n          case 16:\n            break;\n          case 17:\n            return 11;\n          case 18:\n            return 15;\n          case 19:\n            return 16;\n          case 20:\n            return 17;\n          case 21:\n            return 18;\n          case 22:\n            this.begin(\"person_ext\");\n            return 45;\n          case 23:\n            this.begin(\"person\");\n            return 44;\n          case 24:\n            this.begin(\"system_ext_queue\");\n            return 51;\n          case 25:\n            this.begin(\"system_ext_db\");\n            return 50;\n          case 26:\n            this.begin(\"system_ext\");\n            return 49;\n          case 27:\n            this.begin(\"system_queue\");\n            return 48;\n          case 28:\n            this.begin(\"system_db\");\n            return 47;\n          case 29:\n            this.begin(\"system\");\n            return 46;\n          case 30:\n            this.begin(\"boundary\");\n            return 37;\n          case 31:\n            this.begin(\"enterprise_boundary\");\n            return 34;\n          case 32:\n            this.begin(\"system_boundary\");\n            return 36;\n          case 33:\n            this.begin(\"container_ext_queue\");\n            return 57;\n          case 34:\n            this.begin(\"container_ext_db\");\n            return 56;\n          case 35:\n            this.begin(\"container_ext\");\n            return 55;\n          case 36:\n            this.begin(\"container_queue\");\n            return 54;\n          case 37:\n            this.begin(\"container_db\");\n            return 53;\n          case 38:\n            this.begin(\"container\");\n            return 52;\n          case 39:\n            this.begin(\"container_boundary\");\n            return 38;\n          case 40:\n            this.begin(\"component_ext_queue\");\n            return 63;\n          case 41:\n            this.begin(\"component_ext_db\");\n            return 62;\n          case 42:\n            this.begin(\"component_ext\");\n            return 61;\n          case 43:\n            this.begin(\"component_queue\");\n            return 60;\n          case 44:\n            this.begin(\"component_db\");\n            return 59;\n          case 45:\n            this.begin(\"component\");\n            return 58;\n          case 46:\n            this.begin(\"node\");\n            return 39;\n          case 47:\n            this.begin(\"node\");\n            return 39;\n          case 48:\n            this.begin(\"node_l\");\n            return 40;\n          case 49:\n            this.begin(\"node_r\");\n            return 41;\n          case 50:\n            this.begin(\"rel\");\n            return 64;\n          case 51:\n            this.begin(\"birel\");\n            return 65;\n          case 52:\n            this.begin(\"rel_u\");\n            return 66;\n          case 53:\n            this.begin(\"rel_u\");\n            return 66;\n          case 54:\n            this.begin(\"rel_d\");\n            return 67;\n          case 55:\n            this.begin(\"rel_d\");\n            return 67;\n          case 56:\n            this.begin(\"rel_l\");\n            return 68;\n          case 57:\n            this.begin(\"rel_l\");\n            return 68;\n          case 58:\n            this.begin(\"rel_r\");\n            return 69;\n          case 59:\n            this.begin(\"rel_r\");\n            return 69;\n          case 60:\n            this.begin(\"rel_b\");\n            return 70;\n          case 61:\n            this.begin(\"rel_index\");\n            return 71;\n          case 62:\n            this.begin(\"update_el_style\");\n            return 72;\n          case 63:\n            this.begin(\"update_rel_style\");\n            return 73;\n          case 64:\n            this.begin(\"update_layout_config\");\n            return 74;\n          case 65:\n            return \"EOF_IN_STRUCT\";\n          case 66:\n            this.begin(\"attribute\");\n            return \"ATTRIBUTE_EMPTY\";\n          case 67:\n            this.begin(\"attribute\");\n            break;\n          case 68:\n            this.popState();\n            this.popState();\n            break;\n          case 69:\n            return 80;\n          case 70:\n            break;\n          case 71:\n            return 80;\n          case 72:\n            this.begin(\"string\");\n            break;\n          case 73:\n            this.popState();\n            break;\n          case 74:\n            return \"STR\";\n          case 75:\n            this.begin(\"string_kv\");\n            break;\n          case 76:\n            this.begin(\"string_kv_key\");\n            return \"STR_KEY\";\n          case 77:\n            this.popState();\n            this.begin(\"string_kv_value\");\n            break;\n          case 78:\n            return \"STR_VALUE\";\n          case 79:\n            this.popState();\n            this.popState();\n            break;\n          case 80:\n            return \"STR\";\n          case 81:\n            return \"LBRACE\";\n          case 82:\n            return \"RBRACE\";\n          case 83:\n            return \"SPACE\";\n          case 84:\n            return \"EOL\";\n          case 85:\n            return 14;\n        }\n      },\n      rules: [/^(?:.*direction\\s+TB[^\\n]*)/, /^(?:.*direction\\s+BT[^\\n]*)/, /^(?:.*direction\\s+RL[^\\n]*)/, /^(?:.*direction\\s+LR[^\\n]*)/, /^(?:title\\s[^#\\n;]+)/, /^(?:accDescription\\s[^#\\n;]+)/, /^(?:accTitle\\s*:\\s*)/, /^(?:(?!\\n||)*[^\\n]*)/, /^(?:accDescr\\s*:\\s*)/, /^(?:(?!\\n||)*[^\\n]*)/, /^(?:accDescr\\s*\\{\\s*)/, /^(?:[\\}])/, /^(?:[^\\}]*)/, /^(?:%%(?!\\{)*[^\\n]*(\\r?\\n?)+)/, /^(?:%%[^\\n]*(\\r?\\n)*)/, /^(?:\\s*(\\r?\\n)+)/, /^(?:\\s+)/, /^(?:C4Context\\b)/, /^(?:C4Container\\b)/, /^(?:C4Component\\b)/, /^(?:C4Dynamic\\b)/, /^(?:C4Deployment\\b)/, /^(?:Person_Ext\\b)/, /^(?:Person\\b)/, /^(?:SystemQueue_Ext\\b)/, /^(?:SystemDb_Ext\\b)/, /^(?:System_Ext\\b)/, /^(?:SystemQueue\\b)/, /^(?:SystemDb\\b)/, /^(?:System\\b)/, /^(?:Boundary\\b)/, /^(?:Enterprise_Boundary\\b)/, /^(?:System_Boundary\\b)/, /^(?:ContainerQueue_Ext\\b)/, /^(?:ContainerDb_Ext\\b)/, /^(?:Container_Ext\\b)/, /^(?:ContainerQueue\\b)/, /^(?:ContainerDb\\b)/, /^(?:Container\\b)/, /^(?:Container_Boundary\\b)/, /^(?:ComponentQueue_Ext\\b)/, /^(?:ComponentDb_Ext\\b)/, /^(?:Component_Ext\\b)/, /^(?:ComponentQueue\\b)/, /^(?:ComponentDb\\b)/, /^(?:Component\\b)/, /^(?:Deployment_Node\\b)/, /^(?:Node\\b)/, /^(?:Node_L\\b)/, /^(?:Node_R\\b)/, /^(?:Rel\\b)/, /^(?:BiRel\\b)/, /^(?:Rel_Up\\b)/, /^(?:Rel_U\\b)/, /^(?:Rel_Down\\b)/, /^(?:Rel_D\\b)/, /^(?:Rel_Left\\b)/, /^(?:Rel_L\\b)/, /^(?:Rel_Right\\b)/, /^(?:Rel_R\\b)/, /^(?:Rel_Back\\b)/, /^(?:RelIndex\\b)/, /^(?:UpdateElementStyle\\b)/, /^(?:UpdateRelStyle\\b)/, /^(?:UpdateLayoutConfig\\b)/, /^(?:$)/, /^(?:[(][ ]*[,])/, /^(?:[(])/, /^(?:[)])/, /^(?:,,)/, /^(?:,)/, /^(?:[ ]*[\"][\"])/, /^(?:[ ]*[\"])/, /^(?:[\"])/, /^(?:[^\"]*)/, /^(?:[ ]*[\\$])/, /^(?:[^=]*)/, /^(?:[=][ ]*[\"])/, /^(?:[^\"]+)/, /^(?:[\"])/, /^(?:[^,]+)/, /^(?:\\{)/, /^(?:\\})/, /^(?:[\\s]+)/, /^(?:[\\n\\r]+)/, /^(?:$)/],\n      conditions: { \"acc_descr_multiline\": { \"rules\": [11, 12], \"inclusive\": false }, \"acc_descr\": { \"rules\": [9], \"inclusive\": false }, \"acc_title\": { \"rules\": [7], \"inclusive\": false }, \"string_kv_value\": { \"rules\": [78, 79], \"inclusive\": false }, \"string_kv_key\": { \"rules\": [77], \"inclusive\": false }, \"string_kv\": { \"rules\": [76], \"inclusive\": false }, \"string\": { \"rules\": [73, 74], \"inclusive\": false }, \"attribute\": { \"rules\": [68, 69, 70, 71, 72, 75, 80], \"inclusive\": false }, \"update_layout_config\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"update_rel_style\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"update_el_style\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"rel_b\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"rel_r\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"rel_l\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"rel_d\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"rel_u\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"rel_bi\": { \"rules\": [], \"inclusive\": false }, \"rel\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"node_r\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"node_l\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"node\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"index\": { \"rules\": [], \"inclusive\": false }, \"rel_index\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"component_ext_queue\": { \"rules\": [], \"inclusive\": false }, \"component_ext_db\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"component_ext\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"component_queue\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"component_db\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"component\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"container_boundary\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"container_ext_queue\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"container_ext_db\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"container_ext\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"container_queue\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"container_db\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"container\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"birel\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"system_boundary\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"enterprise_boundary\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"boundary\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"system_ext_queue\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"system_ext_db\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"system_ext\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"system_queue\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"system_db\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"system\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"person_ext\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"person\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"INITIAL\": { \"rules\": [0, 1, 2, 3, 4, 5, 6, 8, 10, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 81, 82, 83, 84, 85], \"inclusive\": true } }\n    };\n    return lexer2;\n  }();\n  parser2.lexer = lexer;\n  function Parser() {\n    this.yy = {};\n  }\n  Parser.prototype = parser2;\n  parser2.Parser = Parser;\n  return new Parser();\n}();\nparser.parser = parser;\nconst parser$1 = parser;\nlet c4ShapeArray = [];\nlet boundaryParseStack = [\"\"];\nlet currentBoundaryParse = \"global\";\nlet parentBoundaryParse = \"\";\nlet boundaries = [\n  {\n    alias: \"global\",\n    label: { text: \"global\" },\n    type: { text: \"global\" },\n    tags: null,\n    link: null,\n    parentBoundary: \"\"\n  }\n];\nlet rels = [];\nlet title = \"\";\nlet wrapEnabled = false;\nlet c4ShapeInRow$1 = 4;\nlet c4BoundaryInRow$1 = 2;\nvar c4Type;\nconst getC4Type = function() {\n  return c4Type;\n};\nconst setC4Type = function(c4TypeParam) {\n  let sanitizedText = sanitizeText(c4TypeParam, getConfig());\n  c4Type = sanitizedText;\n};\nconst addRel = function(type, from, to, label, techn, descr, sprite, tags, link) {\n  if (type === void 0 || type === null || from === void 0 || from === null || to === void 0 || to === null || label === void 0 || label === null) {\n    return;\n  }\n  let rel = {};\n  const old = rels.find((rel2) => rel2.from === from && rel2.to === to);\n  if (old) {\n    rel = old;\n  } else {\n    rels.push(rel);\n  }\n  rel.type = type;\n  rel.from = from;\n  rel.to = to;\n  rel.label = { text: label };\n  if (techn === void 0 || techn === null) {\n    rel.techn = { text: \"\" };\n  } else {\n    if (typeof techn === \"object\") {\n      let [key, value] = Object.entries(techn)[0];\n      rel[key] = { text: value };\n    } else {\n      rel.techn = { text: techn };\n    }\n  }\n  if (descr === void 0 || descr === null) {\n    rel.descr = { text: \"\" };\n  } else {\n    if (typeof descr === \"object\") {\n      let [key, value] = Object.entries(descr)[0];\n      rel[key] = { text: value };\n    } else {\n      rel.descr = { text: descr };\n    }\n  }\n  if (typeof sprite === \"object\") {\n    let [key, value] = Object.entries(sprite)[0];\n    rel[key] = value;\n  } else {\n    rel.sprite = sprite;\n  }\n  if (typeof tags === \"object\") {\n    let [key, value] = Object.entries(tags)[0];\n    rel[key] = value;\n  } else {\n    rel.tags = tags;\n  }\n  if (typeof link === \"object\") {\n    let [key, value] = Object.entries(link)[0];\n    rel[key] = value;\n  } else {\n    rel.link = link;\n  }\n  rel.wrap = autoWrap();\n};\nconst addPersonOrSystem = function(typeC4Shape, alias, label, descr, sprite, tags, link) {\n  if (alias === null || label === null) {\n    return;\n  }\n  let personOrSystem = {};\n  const old = c4ShapeArray.find((personOrSystem2) => personOrSystem2.alias === alias);\n  if (old && alias === old.alias) {\n    personOrSystem = old;\n  } else {\n    personOrSystem.alias = alias;\n    c4ShapeArray.push(personOrSystem);\n  }\n  if (label === void 0 || label === null) {\n    personOrSystem.label = { text: \"\" };\n  } else {\n    personOrSystem.label = { text: label };\n  }\n  if (descr === void 0 || descr === null) {\n    personOrSystem.descr = { text: \"\" };\n  } else {\n    if (typeof descr === \"object\") {\n      let [key, value] = Object.entries(descr)[0];\n      personOrSystem[key] = { text: value };\n    } else {\n      personOrSystem.descr = { text: descr };\n    }\n  }\n  if (typeof sprite === \"object\") {\n    let [key, value] = Object.entries(sprite)[0];\n    personOrSystem[key] = value;\n  } else {\n    personOrSystem.sprite = sprite;\n  }\n  if (typeof tags === \"object\") {\n    let [key, value] = Object.entries(tags)[0];\n    personOrSystem[key] = value;\n  } else {\n    personOrSystem.tags = tags;\n  }\n  if (typeof link === \"object\") {\n    let [key, value] = Object.entries(link)[0];\n    personOrSystem[key] = value;\n  } else {\n    personOrSystem.link = link;\n  }\n  personOrSystem.typeC4Shape = { text: typeC4Shape };\n  personOrSystem.parentBoundary = currentBoundaryParse;\n  personOrSystem.wrap = autoWrap();\n};\nconst addContainer = function(typeC4Shape, alias, label, techn, descr, sprite, tags, link) {\n  if (alias === null || label === null) {\n    return;\n  }\n  let container = {};\n  const old = c4ShapeArray.find((container2) => container2.alias === alias);\n  if (old && alias === old.alias) {\n    container = old;\n  } else {\n    container.alias = alias;\n    c4ShapeArray.push(container);\n  }\n  if (label === void 0 || label === null) {\n    container.label = { text: \"\" };\n  } else {\n    container.label = { text: label };\n  }\n  if (techn === void 0 || techn === null) {\n    container.techn = { text: \"\" };\n  } else {\n    if (typeof techn === \"object\") {\n      let [key, value] = Object.entries(techn)[0];\n      container[key] = { text: value };\n    } else {\n      container.techn = { text: techn };\n    }\n  }\n  if (descr === void 0 || descr === null) {\n    container.descr = { text: \"\" };\n  } else {\n    if (typeof descr === \"object\") {\n      let [key, value] = Object.entries(descr)[0];\n      container[key] = { text: value };\n    } else {\n      container.descr = { text: descr };\n    }\n  }\n  if (typeof sprite === \"object\") {\n    let [key, value] = Object.entries(sprite)[0];\n    container[key] = value;\n  } else {\n    container.sprite = sprite;\n  }\n  if (typeof tags === \"object\") {\n    let [key, value] = Object.entries(tags)[0];\n    container[key] = value;\n  } else {\n    container.tags = tags;\n  }\n  if (typeof link === \"object\") {\n    let [key, value] = Object.entries(link)[0];\n    container[key] = value;\n  } else {\n    container.link = link;\n  }\n  container.wrap = autoWrap();\n  container.typeC4Shape = { text: typeC4Shape };\n  container.parentBoundary = currentBoundaryParse;\n};\nconst addComponent = function(typeC4Shape, alias, label, techn, descr, sprite, tags, link) {\n  if (alias === null || label === null) {\n    return;\n  }\n  let component = {};\n  const old = c4ShapeArray.find((component2) => component2.alias === alias);\n  if (old && alias === old.alias) {\n    component = old;\n  } else {\n    component.alias = alias;\n    c4ShapeArray.push(component);\n  }\n  if (label === void 0 || label === null) {\n    component.label = { text: \"\" };\n  } else {\n    component.label = { text: label };\n  }\n  if (techn === void 0 || techn === null) {\n    component.techn = { text: \"\" };\n  } else {\n    if (typeof techn === \"object\") {\n      let [key, value] = Object.entries(techn)[0];\n      component[key] = { text: value };\n    } else {\n      component.techn = { text: techn };\n    }\n  }\n  if (descr === void 0 || descr === null) {\n    component.descr = { text: \"\" };\n  } else {\n    if (typeof descr === \"object\") {\n      let [key, value] = Object.entries(descr)[0];\n      component[key] = { text: value };\n    } else {\n      component.descr = { text: descr };\n    }\n  }\n  if (typeof sprite === \"object\") {\n    let [key, value] = Object.entries(sprite)[0];\n    component[key] = value;\n  } else {\n    component.sprite = sprite;\n  }\n  if (typeof tags === \"object\") {\n    let [key, value] = Object.entries(tags)[0];\n    component[key] = value;\n  } else {\n    component.tags = tags;\n  }\n  if (typeof link === \"object\") {\n    let [key, value] = Object.entries(link)[0];\n    component[key] = value;\n  } else {\n    component.link = link;\n  }\n  component.wrap = autoWrap();\n  component.typeC4Shape = { text: typeC4Shape };\n  component.parentBoundary = currentBoundaryParse;\n};\nconst addPersonOrSystemBoundary = function(alias, label, type, tags, link) {\n  if (alias === null || label === null) {\n    return;\n  }\n  let boundary = {};\n  const old = boundaries.find((boundary2) => boundary2.alias === alias);\n  if (old && alias === old.alias) {\n    boundary = old;\n  } else {\n    boundary.alias = alias;\n    boundaries.push(boundary);\n  }\n  if (label === void 0 || label === null) {\n    boundary.label = { text: \"\" };\n  } else {\n    boundary.label = { text: label };\n  }\n  if (type === void 0 || type === null) {\n    boundary.type = { text: \"system\" };\n  } else {\n    if (typeof type === \"object\") {\n      let [key, value] = Object.entries(type)[0];\n      boundary[key] = { text: value };\n    } else {\n      boundary.type = { text: type };\n    }\n  }\n  if (typeof tags === \"object\") {\n    let [key, value] = Object.entries(tags)[0];\n    boundary[key] = value;\n  } else {\n    boundary.tags = tags;\n  }\n  if (typeof link === \"object\") {\n    let [key, value] = Object.entries(link)[0];\n    boundary[key] = value;\n  } else {\n    boundary.link = link;\n  }\n  boundary.parentBoundary = currentBoundaryParse;\n  boundary.wrap = autoWrap();\n  parentBoundaryParse = currentBoundaryParse;\n  currentBoundaryParse = alias;\n  boundaryParseStack.push(parentBoundaryParse);\n};\nconst addContainerBoundary = function(alias, label, type, tags, link) {\n  if (alias === null || label === null) {\n    return;\n  }\n  let boundary = {};\n  const old = boundaries.find((boundary2) => boundary2.alias === alias);\n  if (old && alias === old.alias) {\n    boundary = old;\n  } else {\n    boundary.alias = alias;\n    boundaries.push(boundary);\n  }\n  if (label === void 0 || label === null) {\n    boundary.label = { text: \"\" };\n  } else {\n    boundary.label = { text: label };\n  }\n  if (type === void 0 || type === null) {\n    boundary.type = { text: \"container\" };\n  } else {\n    if (typeof type === \"object\") {\n      let [key, value] = Object.entries(type)[0];\n      boundary[key] = { text: value };\n    } else {\n      boundary.type = { text: type };\n    }\n  }\n  if (typeof tags === \"object\") {\n    let [key, value] = Object.entries(tags)[0];\n    boundary[key] = value;\n  } else {\n    boundary.tags = tags;\n  }\n  if (typeof link === \"object\") {\n    let [key, value] = Object.entries(link)[0];\n    boundary[key] = value;\n  } else {\n    boundary.link = link;\n  }\n  boundary.parentBoundary = currentBoundaryParse;\n  boundary.wrap = autoWrap();\n  parentBoundaryParse = currentBoundaryParse;\n  currentBoundaryParse = alias;\n  boundaryParseStack.push(parentBoundaryParse);\n};\nconst addDeploymentNode = function(nodeType, alias, label, type, descr, sprite, tags, link) {\n  if (alias === null || label === null) {\n    return;\n  }\n  let boundary = {};\n  const old = boundaries.find((boundary2) => boundary2.alias === alias);\n  if (old && alias === old.alias) {\n    boundary = old;\n  } else {\n    boundary.alias = alias;\n    boundaries.push(boundary);\n  }\n  if (label === void 0 || label === null) {\n    boundary.label = { text: \"\" };\n  } else {\n    boundary.label = { text: label };\n  }\n  if (type === void 0 || type === null) {\n    boundary.type = { text: \"node\" };\n  } else {\n    if (typeof type === \"object\") {\n      let [key, value] = Object.entries(type)[0];\n      boundary[key] = { text: value };\n    } else {\n      boundary.type = { text: type };\n    }\n  }\n  if (descr === void 0 || descr === null) {\n    boundary.descr = { text: \"\" };\n  } else {\n    if (typeof descr === \"object\") {\n      let [key, value] = Object.entries(descr)[0];\n      boundary[key] = { text: value };\n    } else {\n      boundary.descr = { text: descr };\n    }\n  }\n  if (typeof tags === \"object\") {\n    let [key, value] = Object.entries(tags)[0];\n    boundary[key] = value;\n  } else {\n    boundary.tags = tags;\n  }\n  if (typeof link === \"object\") {\n    let [key, value] = Object.entries(link)[0];\n    boundary[key] = value;\n  } else {\n    boundary.link = link;\n  }\n  boundary.nodeType = nodeType;\n  boundary.parentBoundary = currentBoundaryParse;\n  boundary.wrap = autoWrap();\n  parentBoundaryParse = currentBoundaryParse;\n  currentBoundaryParse = alias;\n  boundaryParseStack.push(parentBoundaryParse);\n};\nconst popBoundaryParseStack = function() {\n  currentBoundaryParse = parentBoundaryParse;\n  boundaryParseStack.pop();\n  parentBoundaryParse = boundaryParseStack.pop();\n  boundaryParseStack.push(parentBoundaryParse);\n};\nconst updateElStyle = function(typeC4Shape, elementName, bgColor, fontColor, borderColor, shadowing, shape, sprite, techn, legendText, legendSprite) {\n  let old = c4ShapeArray.find((element) => element.alias === elementName);\n  if (old === void 0) {\n    old = boundaries.find((element) => element.alias === elementName);\n    if (old === void 0) {\n      return;\n    }\n  }\n  if (bgColor !== void 0 && bgColor !== null) {\n    if (typeof bgColor === \"object\") {\n      let [key, value] = Object.entries(bgColor)[0];\n      old[key] = value;\n    } else {\n      old.bgColor = bgColor;\n    }\n  }\n  if (fontColor !== void 0 && fontColor !== null) {\n    if (typeof fontColor === \"object\") {\n      let [key, value] = Object.entries(fontColor)[0];\n      old[key] = value;\n    } else {\n      old.fontColor = fontColor;\n    }\n  }\n  if (borderColor !== void 0 && borderColor !== null) {\n    if (typeof borderColor === \"object\") {\n      let [key, value] = Object.entries(borderColor)[0];\n      old[key] = value;\n    } else {\n      old.borderColor = borderColor;\n    }\n  }\n  if (shadowing !== void 0 && shadowing !== null) {\n    if (typeof shadowing === \"object\") {\n      let [key, value] = Object.entries(shadowing)[0];\n      old[key] = value;\n    } else {\n      old.shadowing = shadowing;\n    }\n  }\n  if (shape !== void 0 && shape !== null) {\n    if (typeof shape === \"object\") {\n      let [key, value] = Object.entries(shape)[0];\n      old[key] = value;\n    } else {\n      old.shape = shape;\n    }\n  }\n  if (sprite !== void 0 && sprite !== null) {\n    if (typeof sprite === \"object\") {\n      let [key, value] = Object.entries(sprite)[0];\n      old[key] = value;\n    } else {\n      old.sprite = sprite;\n    }\n  }\n  if (techn !== void 0 && techn !== null) {\n    if (typeof techn === \"object\") {\n      let [key, value] = Object.entries(techn)[0];\n      old[key] = value;\n    } else {\n      old.techn = techn;\n    }\n  }\n  if (legendText !== void 0 && legendText !== null) {\n    if (typeof legendText === \"object\") {\n      let [key, value] = Object.entries(legendText)[0];\n      old[key] = value;\n    } else {\n      old.legendText = legendText;\n    }\n  }\n  if (legendSprite !== void 0 && legendSprite !== null) {\n    if (typeof legendSprite === \"object\") {\n      let [key, value] = Object.entries(legendSprite)[0];\n      old[key] = value;\n    } else {\n      old.legendSprite = legendSprite;\n    }\n  }\n};\nconst updateRelStyle = function(typeC4Shape, from, to, textColor, lineColor, offsetX, offsetY) {\n  const old = rels.find((rel) => rel.from === from && rel.to === to);\n  if (old === void 0) {\n    return;\n  }\n  if (textColor !== void 0 && textColor !== null) {\n    if (typeof textColor === \"object\") {\n      let [key, value] = Object.entries(textColor)[0];\n      old[key] = value;\n    } else {\n      old.textColor = textColor;\n    }\n  }\n  if (lineColor !== void 0 && lineColor !== null) {\n    if (typeof lineColor === \"object\") {\n      let [key, value] = Object.entries(lineColor)[0];\n      old[key] = value;\n    } else {\n      old.lineColor = lineColor;\n    }\n  }\n  if (offsetX !== void 0 && offsetX !== null) {\n    if (typeof offsetX === \"object\") {\n      let [key, value] = Object.entries(offsetX)[0];\n      old[key] = parseInt(value);\n    } else {\n      old.offsetX = parseInt(offsetX);\n    }\n  }\n  if (offsetY !== void 0 && offsetY !== null) {\n    if (typeof offsetY === \"object\") {\n      let [key, value] = Object.entries(offsetY)[0];\n      old[key] = parseInt(value);\n    } else {\n      old.offsetY = parseInt(offsetY);\n    }\n  }\n};\nconst updateLayoutConfig = function(typeC4Shape, c4ShapeInRowParam, c4BoundaryInRowParam) {\n  let c4ShapeInRowValue = c4ShapeInRow$1;\n  let c4BoundaryInRowValue = c4BoundaryInRow$1;\n  if (typeof c4ShapeInRowParam === \"object\") {\n    const value = Object.values(c4ShapeInRowParam)[0];\n    c4ShapeInRowValue = parseInt(value);\n  } else {\n    c4ShapeInRowValue = parseInt(c4ShapeInRowParam);\n  }\n  if (typeof c4BoundaryInRowParam === \"object\") {\n    const value = Object.values(c4BoundaryInRowParam)[0];\n    c4BoundaryInRowValue = parseInt(value);\n  } else {\n    c4BoundaryInRowValue = parseInt(c4BoundaryInRowParam);\n  }\n  if (c4ShapeInRowValue >= 1) {\n    c4ShapeInRow$1 = c4ShapeInRowValue;\n  }\n  if (c4BoundaryInRowValue >= 1) {\n    c4BoundaryInRow$1 = c4BoundaryInRowValue;\n  }\n};\nconst getC4ShapeInRow = function() {\n  return c4ShapeInRow$1;\n};\nconst getC4BoundaryInRow = function() {\n  return c4BoundaryInRow$1;\n};\nconst getCurrentBoundaryParse = function() {\n  return currentBoundaryParse;\n};\nconst getParentBoundaryParse = function() {\n  return parentBoundaryParse;\n};\nconst getC4ShapeArray = function(parentBoundary) {\n  if (parentBoundary === void 0 || parentBoundary === null) {\n    return c4ShapeArray;\n  } else {\n    return c4ShapeArray.filter((personOrSystem) => {\n      return personOrSystem.parentBoundary === parentBoundary;\n    });\n  }\n};\nconst getC4Shape = function(alias) {\n  return c4ShapeArray.find((personOrSystem) => personOrSystem.alias === alias);\n};\nconst getC4ShapeKeys = function(parentBoundary) {\n  return Object.keys(getC4ShapeArray(parentBoundary));\n};\nconst getBoundaries = function(parentBoundary) {\n  if (parentBoundary === void 0 || parentBoundary === null) {\n    return boundaries;\n  } else {\n    return boundaries.filter((boundary) => boundary.parentBoundary === parentBoundary);\n  }\n};\nconst getBoundarys = getBoundaries;\nconst getRels = function() {\n  return rels;\n};\nconst getTitle = function() {\n  return title;\n};\nconst setWrap = function(wrapSetting) {\n  wrapEnabled = wrapSetting;\n};\nconst autoWrap = function() {\n  return wrapEnabled;\n};\nconst clear = function() {\n  c4ShapeArray = [];\n  boundaries = [\n    {\n      alias: \"global\",\n      label: { text: \"global\" },\n      type: { text: \"global\" },\n      tags: null,\n      link: null,\n      parentBoundary: \"\"\n    }\n  ];\n  parentBoundaryParse = \"\";\n  currentBoundaryParse = \"global\";\n  boundaryParseStack = [\"\"];\n  rels = [];\n  boundaryParseStack = [\"\"];\n  title = \"\";\n  wrapEnabled = false;\n  c4ShapeInRow$1 = 4;\n  c4BoundaryInRow$1 = 2;\n};\nconst LINETYPE = {\n  SOLID: 0,\n  DOTTED: 1,\n  NOTE: 2,\n  SOLID_CROSS: 3,\n  DOTTED_CROSS: 4,\n  SOLID_OPEN: 5,\n  DOTTED_OPEN: 6,\n  LOOP_START: 10,\n  LOOP_END: 11,\n  ALT_START: 12,\n  ALT_ELSE: 13,\n  ALT_END: 14,\n  OPT_START: 15,\n  OPT_END: 16,\n  ACTIVE_START: 17,\n  ACTIVE_END: 18,\n  PAR_START: 19,\n  PAR_AND: 20,\n  PAR_END: 21,\n  RECT_START: 22,\n  RECT_END: 23,\n  SOLID_POINT: 24,\n  DOTTED_POINT: 25\n};\nconst ARROWTYPE = {\n  FILLED: 0,\n  OPEN: 1\n};\nconst PLACEMENT = {\n  LEFTOF: 0,\n  RIGHTOF: 1,\n  OVER: 2\n};\nconst setTitle = function(txt) {\n  let sanitizedText = sanitizeText(txt, getConfig());\n  title = sanitizedText;\n};\nconst db = {\n  addPersonOrSystem,\n  addPersonOrSystemBoundary,\n  addContainer,\n  addContainerBoundary,\n  addComponent,\n  addDeploymentNode,\n  popBoundaryParseStack,\n  addRel,\n  updateElStyle,\n  updateRelStyle,\n  updateLayoutConfig,\n  autoWrap,\n  setWrap,\n  getC4ShapeArray,\n  getC4Shape,\n  getC4ShapeKeys,\n  getBoundaries,\n  getBoundarys,\n  getCurrentBoundaryParse,\n  getParentBoundaryParse,\n  getRels,\n  getTitle,\n  getC4Type,\n  getC4ShapeInRow,\n  getC4BoundaryInRow,\n  setAccTitle,\n  getAccTitle,\n  getAccDescription,\n  setAccDescription,\n  getConfig: () => getConfig().c4,\n  clear,\n  LINETYPE,\n  ARROWTYPE,\n  PLACEMENT,\n  setTitle,\n  setC4Type\n  // apply,\n};\nconst drawRect = function(elem, rectData) {\n  return drawRect$1(elem, rectData);\n};\nconst drawImage = function(elem, width, height, x, y, link) {\n  const imageElem = elem.append(\"image\");\n  imageElem.attr(\"width\", width);\n  imageElem.attr(\"height\", height);\n  imageElem.attr(\"x\", x);\n  imageElem.attr(\"y\", y);\n  let sanitizedLink = link.startsWith(\"data:image/png;base64\") ? link : sanitizeUrl(link);\n  imageElem.attr(\"xlink:href\", sanitizedLink);\n};\nconst drawRels$1 = (elem, rels2, conf2) => {\n  const relsElem = elem.append(\"g\");\n  let i = 0;\n  for (let rel of rels2) {\n    let textColor = rel.textColor ? rel.textColor : \"#444444\";\n    let strokeColor = rel.lineColor ? rel.lineColor : \"#444444\";\n    let offsetX = rel.offsetX ? parseInt(rel.offsetX) : 0;\n    let offsetY = rel.offsetY ? parseInt(rel.offsetY) : 0;\n    let url = \"\";\n    if (i === 0) {\n      let line = relsElem.append(\"line\");\n      line.attr(\"x1\", rel.startPoint.x);\n      line.attr(\"y1\", rel.startPoint.y);\n      line.attr(\"x2\", rel.endPoint.x);\n      line.attr(\"y2\", rel.endPoint.y);\n      line.attr(\"stroke-width\", \"1\");\n      line.attr(\"stroke\", strokeColor);\n      line.style(\"fill\", \"none\");\n      if (rel.type !== \"rel_b\") {\n        line.attr(\"marker-end\", \"url(\" + url + \"#arrowhead)\");\n      }\n      if (rel.type === \"birel\" || rel.type === \"rel_b\") {\n        line.attr(\"marker-start\", \"url(\" + url + \"#arrowend)\");\n      }\n      i = -1;\n    } else {\n      let line = relsElem.append(\"path\");\n      line.attr(\"fill\", \"none\").attr(\"stroke-width\", \"1\").attr(\"stroke\", strokeColor).attr(\n        \"d\",\n        \"Mstartx,starty Qcontrolx,controly stopx,stopy \".replaceAll(\"startx\", rel.startPoint.x).replaceAll(\"starty\", rel.startPoint.y).replaceAll(\n          \"controlx\",\n          rel.startPoint.x + (rel.endPoint.x - rel.startPoint.x) / 2 - (rel.endPoint.x - rel.startPoint.x) / 4\n        ).replaceAll(\"controly\", rel.startPoint.y + (rel.endPoint.y - rel.startPoint.y) / 2).replaceAll(\"stopx\", rel.endPoint.x).replaceAll(\"stopy\", rel.endPoint.y)\n      );\n      if (rel.type !== \"rel_b\") {\n        line.attr(\"marker-end\", \"url(\" + url + \"#arrowhead)\");\n      }\n      if (rel.type === \"birel\" || rel.type === \"rel_b\") {\n        line.attr(\"marker-start\", \"url(\" + url + \"#arrowend)\");\n      }\n    }\n    let messageConf = conf2.messageFont();\n    _drawTextCandidateFunc(conf2)(\n      rel.label.text,\n      relsElem,\n      Math.min(rel.startPoint.x, rel.endPoint.x) + Math.abs(rel.endPoint.x - rel.startPoint.x) / 2 + offsetX,\n      Math.min(rel.startPoint.y, rel.endPoint.y) + Math.abs(rel.endPoint.y - rel.startPoint.y) / 2 + offsetY,\n      rel.label.width,\n      rel.label.height,\n      { fill: textColor },\n      messageConf\n    );\n    if (rel.techn && rel.techn.text !== \"\") {\n      messageConf = conf2.messageFont();\n      _drawTextCandidateFunc(conf2)(\n        \"[\" + rel.techn.text + \"]\",\n        relsElem,\n        Math.min(rel.startPoint.x, rel.endPoint.x) + Math.abs(rel.endPoint.x - rel.startPoint.x) / 2 + offsetX,\n        Math.min(rel.startPoint.y, rel.endPoint.y) + Math.abs(rel.endPoint.y - rel.startPoint.y) / 2 + conf2.messageFontSize + 5 + offsetY,\n        Math.max(rel.label.width, rel.techn.width),\n        rel.techn.height,\n        { fill: textColor, \"font-style\": \"italic\" },\n        messageConf\n      );\n    }\n  }\n};\nconst drawBoundary$1 = function(elem, boundary, conf2) {\n  const boundaryElem = elem.append(\"g\");\n  let fillColor = boundary.bgColor ? boundary.bgColor : \"none\";\n  let strokeColor = boundary.borderColor ? boundary.borderColor : \"#444444\";\n  let fontColor = boundary.fontColor ? boundary.fontColor : \"black\";\n  let attrsValue = { \"stroke-width\": 1, \"stroke-dasharray\": \"7.0,7.0\" };\n  if (boundary.nodeType) {\n    attrsValue = { \"stroke-width\": 1 };\n  }\n  let rectData = {\n    x: boundary.x,\n    y: boundary.y,\n    fill: fillColor,\n    stroke: strokeColor,\n    width: boundary.width,\n    height: boundary.height,\n    rx: 2.5,\n    ry: 2.5,\n    attrs: attrsValue\n  };\n  drawRect(boundaryElem, rectData);\n  let boundaryConf = conf2.boundaryFont();\n  boundaryConf.fontWeight = \"bold\";\n  boundaryConf.fontSize = boundaryConf.fontSize + 2;\n  boundaryConf.fontColor = fontColor;\n  _drawTextCandidateFunc(conf2)(\n    boundary.label.text,\n    boundaryElem,\n    boundary.x,\n    boundary.y + boundary.label.Y,\n    boundary.width,\n    boundary.height,\n    { fill: \"#444444\" },\n    boundaryConf\n  );\n  if (boundary.type && boundary.type.text !== \"\") {\n    boundaryConf = conf2.boundaryFont();\n    boundaryConf.fontColor = fontColor;\n    _drawTextCandidateFunc(conf2)(\n      boundary.type.text,\n      boundaryElem,\n      boundary.x,\n      boundary.y + boundary.type.Y,\n      boundary.width,\n      boundary.height,\n      { fill: \"#444444\" },\n      boundaryConf\n    );\n  }\n  if (boundary.descr && boundary.descr.text !== \"\") {\n    boundaryConf = conf2.boundaryFont();\n    boundaryConf.fontSize = boundaryConf.fontSize - 2;\n    boundaryConf.fontColor = fontColor;\n    _drawTextCandidateFunc(conf2)(\n      boundary.descr.text,\n      boundaryElem,\n      boundary.x,\n      boundary.y + boundary.descr.Y,\n      boundary.width,\n      boundary.height,\n      { fill: \"#444444\" },\n      boundaryConf\n    );\n  }\n};\nconst drawC4Shape = function(elem, c4Shape, conf2) {\n  var _a;\n  let fillColor = c4Shape.bgColor ? c4Shape.bgColor : conf2[c4Shape.typeC4Shape.text + \"_bg_color\"];\n  let strokeColor = c4Shape.borderColor ? c4Shape.borderColor : conf2[c4Shape.typeC4Shape.text + \"_border_color\"];\n  let fontColor = c4Shape.fontColor ? c4Shape.fontColor : \"#FFFFFF\";\n  let personImg = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAACD0lEQVR4Xu2YoU4EMRCGT+4j8Ai8AhaH4QHgAUjQuFMECUgMIUgwJAgMhgQsAYUiJCiQIBBY+EITsjfTdme6V24v4c8vyGbb+ZjOtN0bNcvjQXmkH83WvYBWto6PLm6v7p7uH1/w2fXD+PBycX1Pv2l3IdDm/vn7x+dXQiAubRzoURa7gRZWd0iGRIiJbOnhnfYBQZNJjNbuyY2eJG8fkDE3bbG4ep6MHUAsgYxmE3nVs6VsBWJSGccsOlFPmLIViMzLOB7pCVO2AtHJMohH7Fh6zqitQK7m0rJvAVYgGcEpe//PLdDz65sM4pF9N7ICcXDKIB5Nv6j7tD0NoSdM2QrU9Gg0ewE1LqBhHR3BBdvj2vapnidjHxD/q6vd7Pvhr31AwcY8eXMTXAKECZZJFXuEq27aLgQK5uLMohCenGGuGewOxSjBvYBqeG6B+Nqiblggdjnc+ZXDy+FNFpFzw76O3UBAROuXh6FoiAcf5g9eTvUgzy0nWg6I8cXHRUpg5bOVBCo+KDpFajOf23GgPme7RSQ+lacIENUgJ6gg1k6HjgOlqnLqip4tEuhv0hNEMXUD0clyXE3p6pZA0S2nnvTlXwLJEZWlb7cTQH1+USgTN4VhAenm/wea1OCAOmqo6fE1WCb9WSKBah+rbUWPWAmE2Rvk0ApiB45eOyNAzU8xcTvj8KvkKEoOaIYeHNA3ZuygAvFMUO0AAAAASUVORK5CYII=\";\n  switch (c4Shape.typeC4Shape.text) {\n    case \"person\":\n      personImg = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAACD0lEQVR4Xu2YoU4EMRCGT+4j8Ai8AhaH4QHgAUjQuFMECUgMIUgwJAgMhgQsAYUiJCiQIBBY+EITsjfTdme6V24v4c8vyGbb+ZjOtN0bNcvjQXmkH83WvYBWto6PLm6v7p7uH1/w2fXD+PBycX1Pv2l3IdDm/vn7x+dXQiAubRzoURa7gRZWd0iGRIiJbOnhnfYBQZNJjNbuyY2eJG8fkDE3bbG4ep6MHUAsgYxmE3nVs6VsBWJSGccsOlFPmLIViMzLOB7pCVO2AtHJMohH7Fh6zqitQK7m0rJvAVYgGcEpe//PLdDz65sM4pF9N7ICcXDKIB5Nv6j7tD0NoSdM2QrU9Gg0ewE1LqBhHR3BBdvj2vapnidjHxD/q6vd7Pvhr31AwcY8eXMTXAKECZZJFXuEq27aLgQK5uLMohCenGGuGewOxSjBvYBqeG6B+Nqiblggdjnc+ZXDy+FNFpFzw76O3UBAROuXh6FoiAcf5g9eTvUgzy0nWg6I8cXHRUpg5bOVBCo+KDpFajOf23GgPme7RSQ+lacIENUgJ6gg1k6HjgOlqnLqip4tEuhv0hNEMXUD0clyXE3p6pZA0S2nnvTlXwLJEZWlb7cTQH1+USgTN4VhAenm/wea1OCAOmqo6fE1WCb9WSKBah+rbUWPWAmE2Rvk0ApiB45eOyNAzU8xcTvj8KvkKEoOaIYeHNA3ZuygAvFMUO0AAAAASUVORK5CYII=\";\n      break;\n    case \"external_person\":\n      personImg = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAAB6ElEQVR4Xu2YLY+EMBCG9+dWr0aj0Wg0Go1Go0+j8Xdv2uTCvv1gpt0ebHKPuhDaeW4605Z9mJvx4AdXUyTUdd08z+u6flmWZRnHsWkafk9DptAwDPu+f0eAYtu2PEaGWuj5fCIZrBAC2eLBAnRCsEkkxmeaJp7iDJ2QMDdHsLg8SxKFEJaAo8lAXnmuOFIhTMpxxKATebo4UiFknuNo4OniSIXQyRxEA3YsnjGCVEjVXD7yLUAqxBGUyPv/Y4W2beMgGuS7kVQIBycH0fD+oi5pezQETxdHKmQKGk1eQEYldK+jw5GxPfZ9z7Mk0Qnhf1W1m3w//EUn5BDmSZsbR44QQLBEqrBHqOrmSKaQAxdnLArCrxZcM7A7ZKs4ioRq8LFC+NpC3WCBJsvpVw5edm9iEXFuyNfxXAgSwfrFQ1c0iNda8AdejvUgnktOtJQQxmcfFzGglc5WVCj7oDgFqU18boeFSs52CUh8LE8BIVQDT1ABrB0HtgSEYlX5doJnCwv9TXocKCaKbnwhdDKPq4lf3SwU3HLq4V/+WYhHVMa/3b4IlfyikAduCkcBc7mQ3/z/Qq/cTuikhkzB12Ae/mcJC9U+Vo8Ej1gWAtgbeGgFsAMHr50BIWOLCbezvhpBFUdY6EJuJ/QDW0XoMX60zZ0AAAAASUVORK5CYII=\";\n      break;\n  }\n  const c4ShapeElem = elem.append(\"g\");\n  c4ShapeElem.attr(\"class\", \"person-man\");\n  const rect = getNoteRect();\n  switch (c4Shape.typeC4Shape.text) {\n    case \"person\":\n    case \"external_person\":\n    case \"system\":\n    case \"external_system\":\n    case \"container\":\n    case \"external_container\":\n    case \"component\":\n    case \"external_component\":\n      rect.x = c4Shape.x;\n      rect.y = c4Shape.y;\n      rect.fill = fillColor;\n      rect.width = c4Shape.width;\n      rect.height = c4Shape.height;\n      rect.stroke = strokeColor;\n      rect.rx = 2.5;\n      rect.ry = 2.5;\n      rect.attrs = { \"stroke-width\": 0.5 };\n      drawRect(c4ShapeElem, rect);\n      break;\n    case \"system_db\":\n    case \"external_system_db\":\n    case \"container_db\":\n    case \"external_container_db\":\n    case \"component_db\":\n    case \"external_component_db\":\n      c4ShapeElem.append(\"path\").attr(\"fill\", fillColor).attr(\"stroke-width\", \"0.5\").attr(\"stroke\", strokeColor).attr(\n        \"d\",\n        \"Mstartx,startyc0,-10 half,-10 half,-10c0,0 half,0 half,10l0,heightc0,10 -half,10 -half,10c0,0 -half,0 -half,-10l0,-height\".replaceAll(\"startx\", c4Shape.x).replaceAll(\"starty\", c4Shape.y).replaceAll(\"half\", c4Shape.width / 2).replaceAll(\"height\", c4Shape.height)\n      );\n      c4ShapeElem.append(\"path\").attr(\"fill\", \"none\").attr(\"stroke-width\", \"0.5\").attr(\"stroke\", strokeColor).attr(\n        \"d\",\n        \"Mstartx,startyc0,10 half,10 half,10c0,0 half,0 half,-10\".replaceAll(\"startx\", c4Shape.x).replaceAll(\"starty\", c4Shape.y).replaceAll(\"half\", c4Shape.width / 2)\n      );\n      break;\n    case \"system_queue\":\n    case \"external_system_queue\":\n    case \"container_queue\":\n    case \"external_container_queue\":\n    case \"component_queue\":\n    case \"external_component_queue\":\n      c4ShapeElem.append(\"path\").attr(\"fill\", fillColor).attr(\"stroke-width\", \"0.5\").attr(\"stroke\", strokeColor).attr(\n        \"d\",\n        \"Mstartx,startylwidth,0c5,0 5,half 5,halfc0,0 0,half -5,halfl-width,0c-5,0 -5,-half -5,-halfc0,0 0,-half 5,-half\".replaceAll(\"startx\", c4Shape.x).replaceAll(\"starty\", c4Shape.y).replaceAll(\"width\", c4Shape.width).replaceAll(\"half\", c4Shape.height / 2)\n      );\n      c4ShapeElem.append(\"path\").attr(\"fill\", \"none\").attr(\"stroke-width\", \"0.5\").attr(\"stroke\", strokeColor).attr(\n        \"d\",\n        \"Mstartx,startyc-5,0 -5,half -5,halfc0,half 5,half 5,half\".replaceAll(\"startx\", c4Shape.x + c4Shape.width).replaceAll(\"starty\", c4Shape.y).replaceAll(\"half\", c4Shape.height / 2)\n      );\n      break;\n  }\n  let c4ShapeFontConf = getC4ShapeFont(conf2, c4Shape.typeC4Shape.text);\n  c4ShapeElem.append(\"text\").attr(\"fill\", fontColor).attr(\"font-family\", c4ShapeFontConf.fontFamily).attr(\"font-size\", c4ShapeFontConf.fontSize - 2).attr(\"font-style\", \"italic\").attr(\"lengthAdjust\", \"spacing\").attr(\"textLength\", c4Shape.typeC4Shape.width).attr(\"x\", c4Shape.x + c4Shape.width / 2 - c4Shape.typeC4Shape.width / 2).attr(\"y\", c4Shape.y + c4Shape.typeC4Shape.Y).text(\"<<\" + c4Shape.typeC4Shape.text + \">>\");\n  switch (c4Shape.typeC4Shape.text) {\n    case \"person\":\n    case \"external_person\":\n      drawImage(\n        c4ShapeElem,\n        48,\n        48,\n        c4Shape.x + c4Shape.width / 2 - 24,\n        c4Shape.y + c4Shape.image.Y,\n        personImg\n      );\n      break;\n  }\n  let textFontConf = conf2[c4Shape.typeC4Shape.text + \"Font\"]();\n  textFontConf.fontWeight = \"bold\";\n  textFontConf.fontSize = textFontConf.fontSize + 2;\n  textFontConf.fontColor = fontColor;\n  _drawTextCandidateFunc(conf2)(\n    c4Shape.label.text,\n    c4ShapeElem,\n    c4Shape.x,\n    c4Shape.y + c4Shape.label.Y,\n    c4Shape.width,\n    c4Shape.height,\n    { fill: fontColor },\n    textFontConf\n  );\n  textFontConf = conf2[c4Shape.typeC4Shape.text + \"Font\"]();\n  textFontConf.fontColor = fontColor;\n  if (c4Shape.techn && ((_a = c4Shape.techn) == null ? void 0 : _a.text) !== \"\") {\n    _drawTextCandidateFunc(conf2)(\n      c4Shape.techn.text,\n      c4ShapeElem,\n      c4Shape.x,\n      c4Shape.y + c4Shape.techn.Y,\n      c4Shape.width,\n      c4Shape.height,\n      { fill: fontColor, \"font-style\": \"italic\" },\n      textFontConf\n    );\n  } else if (c4Shape.type && c4Shape.type.text !== \"\") {\n    _drawTextCandidateFunc(conf2)(\n      c4Shape.type.text,\n      c4ShapeElem,\n      c4Shape.x,\n      c4Shape.y + c4Shape.type.Y,\n      c4Shape.width,\n      c4Shape.height,\n      { fill: fontColor, \"font-style\": \"italic\" },\n      textFontConf\n    );\n  }\n  if (c4Shape.descr && c4Shape.descr.text !== \"\") {\n    textFontConf = conf2.personFont();\n    textFontConf.fontColor = fontColor;\n    _drawTextCandidateFunc(conf2)(\n      c4Shape.descr.text,\n      c4ShapeElem,\n      c4Shape.x,\n      c4Shape.y + c4Shape.descr.Y,\n      c4Shape.width,\n      c4Shape.height,\n      { fill: fontColor },\n      textFontConf\n    );\n  }\n  return c4Shape.height;\n};\nconst insertDatabaseIcon = function(elem) {\n  elem.append(\"defs\").append(\"symbol\").attr(\"id\", \"database\").attr(\"fill-rule\", \"evenodd\").attr(\"clip-rule\", \"evenodd\").append(\"path\").attr(\"transform\", \"scale(.5)\").attr(\n    \"d\",\n    \"M12.258.001l.256.004.255.005.253.008.251.01.249.012.247.015.246.016.242.019.241.02.239.023.236.024.233.027.231.028.229.031.225.032.223.034.22.036.217.038.214.04.211.041.208.043.205.045.201.046.198.048.194.05.191.051.187.053.183.054.18.056.175.057.172.059.168.06.163.061.16.063.155.064.15.066.074.033.073.033.071.034.07.034.069.035.068.035.067.035.066.035.064.036.064.036.062.036.06.036.06.037.058.037.058.037.055.038.055.038.053.038.052.038.051.039.05.039.048.039.047.039.045.04.044.04.043.04.041.04.04.041.039.041.037.041.036.041.034.041.033.042.032.042.03.042.029.042.027.042.026.043.024.043.023.043.021.043.02.043.018.044.017.043.015.044.013.044.012.044.011.045.009.044.007.045.006.045.004.045.002.045.001.045v17l-.001.045-.002.045-.004.045-.006.045-.007.045-.009.044-.011.045-.012.044-.013.044-.015.044-.017.043-.018.044-.02.043-.021.043-.023.043-.024.043-.026.043-.027.042-.029.042-.03.042-.032.042-.033.042-.034.041-.036.041-.037.041-.039.041-.04.041-.041.04-.043.04-.044.04-.045.04-.047.039-.048.039-.05.039-.051.039-.052.038-.053.038-.055.038-.055.038-.058.037-.058.037-.06.037-.06.036-.062.036-.064.036-.064.036-.066.035-.067.035-.068.035-.069.035-.07.034-.071.034-.073.033-.074.033-.15.066-.155.064-.16.063-.163.061-.168.06-.172.059-.175.057-.18.056-.183.054-.187.053-.191.051-.194.05-.198.048-.201.046-.205.045-.208.043-.211.041-.214.04-.217.038-.22.036-.223.034-.225.032-.229.031-.231.028-.233.027-.236.024-.239.023-.241.02-.242.019-.246.016-.247.015-.249.012-.251.01-.253.008-.255.005-.256.004-.258.001-.258-.001-.256-.004-.255-.005-.253-.008-.251-.01-.249-.012-.247-.015-.245-.016-.243-.019-.241-.02-.238-.023-.236-.024-.234-.027-.231-.028-.228-.031-.226-.032-.223-.034-.22-.036-.217-.038-.214-.04-.211-.041-.208-.043-.204-.045-.201-.046-.198-.048-.195-.05-.19-.051-.187-.053-.184-.054-.179-.056-.176-.057-.172-.059-.167-.06-.164-.061-.159-.063-.155-.064-.151-.066-.074-.033-.072-.033-.072-.034-.07-.034-.069-.035-.068-.035-.067-.035-.066-.035-.064-.036-.063-.036-.062-.036-.061-.036-.06-.037-.058-.037-.057-.037-.056-.038-.055-.038-.053-.038-.052-.038-.051-.039-.049-.039-.049-.039-.046-.039-.046-.04-.044-.04-.043-.04-.041-.04-.04-.041-.039-.041-.037-.041-.036-.041-.034-.041-.033-.042-.032-.042-.03-.042-.029-.042-.027-.042-.026-.043-.024-.043-.023-.043-.021-.043-.02-.043-.018-.044-.017-.043-.015-.044-.013-.044-.012-.044-.011-.045-.009-.044-.007-.045-.006-.045-.004-.045-.002-.045-.001-.045v-17l.001-.045.002-.045.004-.045.006-.045.007-.045.009-.044.011-.045.012-.044.013-.044.015-.044.017-.043.018-.044.02-.043.021-.043.023-.043.024-.043.026-.043.027-.042.029-.042.03-.042.032-.042.033-.042.034-.041.036-.041.037-.041.039-.041.04-.041.041-.04.043-.04.044-.04.046-.04.046-.039.049-.039.049-.039.051-.039.052-.038.053-.038.055-.038.056-.038.057-.037.058-.037.06-.037.061-.036.062-.036.063-.036.064-.036.066-.035.067-.035.068-.035.069-.035.07-.034.072-.034.072-.033.074-.033.151-.066.155-.064.159-.063.164-.061.167-.06.172-.059.176-.057.179-.056.184-.054.187-.053.19-.051.195-.05.198-.048.201-.046.204-.045.208-.043.211-.041.214-.04.217-.038.22-.036.223-.034.226-.032.228-.031.231-.028.234-.027.236-.024.238-.023.241-.02.243-.019.245-.016.247-.015.249-.012.251-.01.253-.008.255-.005.256-.004.258-.001.258.001zm-9.258 20.499v.01l.001.021.003.021.004.022.005.021.006.022.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.023.018.024.019.024.021.024.022.025.023.024.024.025.052.049.056.05.061.051.066.051.07.051.075.051.079.052.084.052.088.052.092.052.097.052.102.051.105.052.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.048.144.049.147.047.152.047.155.047.16.045.163.045.167.043.171.043.176.041.178.041.183.039.187.039.19.037.194.035.197.035.202.033.204.031.209.03.212.029.216.027.219.025.222.024.226.021.23.02.233.018.236.016.24.015.243.012.246.01.249.008.253.005.256.004.259.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.021.224-.024.22-.026.216-.027.212-.028.21-.031.205-.031.202-.034.198-.034.194-.036.191-.037.187-.039.183-.04.179-.04.175-.042.172-.043.168-.044.163-.045.16-.046.155-.046.152-.047.148-.048.143-.049.139-.049.136-.05.131-.05.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.053.083-.051.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.05.023-.024.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.023.01-.022.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.127l-.077.055-.08.053-.083.054-.085.053-.087.052-.09.052-.093.051-.095.05-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.045-.118.044-.12.043-.122.042-.124.042-.126.041-.128.04-.13.04-.132.038-.134.038-.135.037-.138.037-.139.035-.142.035-.143.034-.144.033-.147.032-.148.031-.15.03-.151.03-.153.029-.154.027-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.01-.179.008-.179.008-.181.006-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.006-.179-.008-.179-.008-.178-.01-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.027-.153-.029-.151-.03-.15-.03-.148-.031-.146-.032-.145-.033-.143-.034-.141-.035-.14-.035-.137-.037-.136-.037-.134-.038-.132-.038-.13-.04-.128-.04-.126-.041-.124-.042-.122-.042-.12-.044-.117-.043-.116-.045-.113-.045-.112-.046-.109-.047-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.05-.093-.052-.09-.051-.087-.052-.085-.053-.083-.054-.08-.054-.077-.054v4.127zm0-5.654v.011l.001.021.003.021.004.021.005.022.006.022.007.022.009.022.01.022.011.023.012.023.013.023.015.024.016.023.017.024.018.024.019.024.021.024.022.024.023.025.024.024.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.052.11.051.114.051.119.052.123.05.127.051.131.05.135.049.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.044.171.042.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.022.23.02.233.018.236.016.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.012.241-.015.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.048.139-.05.136-.049.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.051.051-.049.023-.025.023-.024.021-.025.02-.024.019-.024.018-.024.017-.024.015-.023.014-.023.013-.024.012-.022.01-.023.01-.023.008-.022.006-.022.006-.022.004-.021.004-.022.001-.021.001-.021v-4.139l-.077.054-.08.054-.083.054-.085.052-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.044-.118.044-.12.044-.122.042-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.035-.143.033-.144.033-.147.033-.148.031-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.009-.179.009-.179.007-.181.007-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.007-.179-.007-.179-.009-.178-.009-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.031-.146-.033-.145-.033-.143-.033-.141-.035-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.04-.126-.041-.124-.042-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.051-.093-.051-.09-.051-.087-.053-.085-.052-.083-.054-.08-.054-.077-.054v4.139zm0-5.666v.011l.001.02.003.022.004.021.005.022.006.021.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.024.018.023.019.024.021.025.022.024.023.024.024.025.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.051.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.043.171.043.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.021.23.02.233.018.236.017.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.013.241-.014.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.049.139-.049.136-.049.131-.051.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.049.023-.025.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.022.01-.023.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.153l-.077.054-.08.054-.083.053-.085.053-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.048-.105.048-.106.048-.109.046-.111.046-.114.046-.115.044-.118.044-.12.043-.122.043-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.034-.143.034-.144.033-.147.032-.148.032-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.024-.161.024-.162.023-.163.023-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.01-.178.01-.179.009-.179.007-.181.006-.182.006-.182.004-.184.003-.184.001-.185.001-.185-.001-.184-.001-.184-.003-.182-.004-.182-.006-.181-.006-.179-.007-.179-.009-.178-.01-.176-.01-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.023-.162-.023-.161-.024-.159-.024-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.032-.146-.032-.145-.033-.143-.034-.141-.034-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.041-.126-.041-.124-.041-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.048-.105-.048-.102-.048-.1-.05-.097-.049-.095-.051-.093-.051-.09-.052-.087-.052-.085-.053-.083-.053-.08-.054-.077-.054v4.153zm8.74-8.179l-.257.004-.254.005-.25.008-.247.011-.244.012-.241.014-.237.016-.233.018-.231.021-.226.022-.224.023-.22.026-.216.027-.212.028-.21.031-.205.032-.202.033-.198.034-.194.036-.191.038-.187.038-.183.04-.179.041-.175.042-.172.043-.168.043-.163.045-.16.046-.155.046-.152.048-.148.048-.143.048-.139.049-.136.05-.131.05-.126.051-.123.051-.118.051-.114.052-.11.052-.106.052-.101.052-.096.052-.092.052-.088.052-.083.052-.079.052-.074.051-.07.052-.065.051-.06.05-.056.05-.051.05-.023.025-.023.024-.021.024-.02.025-.019.024-.018.024-.017.023-.015.024-.014.023-.013.023-.012.023-.01.023-.01.022-.008.022-.006.023-.006.021-.004.022-.004.021-.001.021-.001.021.001.021.001.021.004.021.004.022.006.021.006.023.008.022.01.022.01.023.012.023.013.023.014.023.015.024.017.023.018.024.019.024.02.025.021.024.023.024.023.025.051.05.056.05.06.05.065.051.07.052.074.051.079.052.083.052.088.052.092.052.096.052.101.052.106.052.11.052.114.052.118.051.123.051.126.051.131.05.136.05.139.049.143.048.148.048.152.048.155.046.16.046.163.045.168.043.172.043.175.042.179.041.183.04.187.038.191.038.194.036.198.034.202.033.205.032.21.031.212.028.216.027.22.026.224.023.226.022.231.021.233.018.237.016.241.014.244.012.247.011.25.008.254.005.257.004.26.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.022.224-.023.22-.026.216-.027.212-.028.21-.031.205-.032.202-.033.198-.034.194-.036.191-.038.187-.038.183-.04.179-.041.175-.042.172-.043.168-.043.163-.045.16-.046.155-.046.152-.048.148-.048.143-.048.139-.049.136-.05.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.05.051-.05.023-.025.023-.024.021-.024.02-.025.019-.024.018-.024.017-.023.015-.024.014-.023.013-.023.012-.023.01-.023.01-.022.008-.022.006-.023.006-.021.004-.022.004-.021.001-.021.001-.021-.001-.021-.001-.021-.004-.021-.004-.022-.006-.021-.006-.023-.008-.022-.01-.022-.01-.023-.012-.023-.013-.023-.014-.023-.015-.024-.017-.023-.018-.024-.019-.024-.02-.025-.021-.024-.023-.024-.023-.025-.051-.05-.056-.05-.06-.05-.065-.051-.07-.052-.074-.051-.079-.052-.083-.052-.088-.052-.092-.052-.096-.052-.101-.052-.106-.052-.11-.052-.114-.052-.118-.051-.123-.051-.126-.051-.131-.05-.136-.05-.139-.049-.143-.048-.148-.048-.152-.048-.155-.046-.16-.046-.163-.045-.168-.043-.172-.043-.175-.042-.179-.041-.183-.04-.187-.038-.191-.038-.194-.036-.198-.034-.202-.033-.205-.032-.21-.031-.212-.028-.216-.027-.22-.026-.224-.023-.226-.022-.231-.021-.233-.018-.237-.016-.241-.014-.244-.012-.247-.011-.25-.008-.254-.005-.257-.004-.26-.001-.26.001z\"\n  );\n};\nconst insertComputerIcon = function(elem) {\n  elem.append(\"defs\").append(\"symbol\").attr(\"id\", \"computer\").attr(\"width\", \"24\").attr(\"height\", \"24\").append(\"path\").attr(\"transform\", \"scale(.5)\").attr(\n    \"d\",\n    \"M2 2v13h20v-13h-20zm18 11h-16v-9h16v9zm-10.228 6l.466-1h3.524l.467 1h-4.457zm14.228 3h-24l2-6h2.104l-1.33 4h18.45l-1.297-4h2.073l2 6zm-5-10h-14v-7h14v7z\"\n  );\n};\nconst insertClockIcon = function(elem) {\n  elem.append(\"defs\").append(\"symbol\").attr(\"id\", \"clock\").attr(\"width\", \"24\").attr(\"height\", \"24\").append(\"path\").attr(\"transform\", \"scale(.5)\").attr(\n    \"d\",\n    \"M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm5.848 12.459c.202.038.202.333.001.372-1.907.361-6.045 1.111-6.547 1.111-.719 0-1.301-.582-1.301-1.301 0-.512.77-5.447 1.125-7.445.034-.192.312-.181.343.014l.985 6.238 5.394 1.011z\"\n  );\n};\nconst insertArrowHead = function(elem) {\n  elem.append(\"defs\").append(\"marker\").attr(\"id\", \"arrowhead\").attr(\"refX\", 9).attr(\"refY\", 5).attr(\"markerUnits\", \"userSpaceOnUse\").attr(\"markerWidth\", 12).attr(\"markerHeight\", 12).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 0 0 L 10 5 L 0 10 z\");\n};\nconst insertArrowEnd = function(elem) {\n  elem.append(\"defs\").append(\"marker\").attr(\"id\", \"arrowend\").attr(\"refX\", 1).attr(\"refY\", 5).attr(\"markerUnits\", \"userSpaceOnUse\").attr(\"markerWidth\", 12).attr(\"markerHeight\", 12).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 10 0 L 0 5 L 10 10 z\");\n};\nconst insertArrowFilledHead = function(elem) {\n  elem.append(\"defs\").append(\"marker\").attr(\"id\", \"filled-head\").attr(\"refX\", 18).attr(\"refY\", 7).attr(\"markerWidth\", 20).attr(\"markerHeight\", 28).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 18,7 L9,13 L14,7 L9,1 Z\");\n};\nconst insertDynamicNumber = function(elem) {\n  elem.append(\"defs\").append(\"marker\").attr(\"id\", \"sequencenumber\").attr(\"refX\", 15).attr(\"refY\", 15).attr(\"markerWidth\", 60).attr(\"markerHeight\", 40).attr(\"orient\", \"auto\").append(\"circle\").attr(\"cx\", 15).attr(\"cy\", 15).attr(\"r\", 6);\n};\nconst insertArrowCrossHead = function(elem) {\n  const defs = elem.append(\"defs\");\n  const marker = defs.append(\"marker\").attr(\"id\", \"crosshead\").attr(\"markerWidth\", 15).attr(\"markerHeight\", 8).attr(\"orient\", \"auto\").attr(\"refX\", 16).attr(\"refY\", 4);\n  marker.append(\"path\").attr(\"fill\", \"black\").attr(\"stroke\", \"#000000\").style(\"stroke-dasharray\", \"0, 0\").attr(\"stroke-width\", \"1px\").attr(\"d\", \"M 9,2 V 6 L16,4 Z\");\n  marker.append(\"path\").attr(\"fill\", \"none\").attr(\"stroke\", \"#000000\").style(\"stroke-dasharray\", \"0, 0\").attr(\"stroke-width\", \"1px\").attr(\"d\", \"M 0,1 L 6,7 M 6,1 L 0,7\");\n};\nconst getC4ShapeFont = (cnf, typeC4Shape) => {\n  return {\n    fontFamily: cnf[typeC4Shape + \"FontFamily\"],\n    fontSize: cnf[typeC4Shape + \"FontSize\"],\n    fontWeight: cnf[typeC4Shape + \"FontWeight\"]\n  };\n};\nconst _drawTextCandidateFunc = function() {\n  function byText(content, g, x, y, width, height, textAttrs) {\n    const text = g.append(\"text\").attr(\"x\", x + width / 2).attr(\"y\", y + height / 2 + 5).style(\"text-anchor\", \"middle\").text(content);\n    _setTextAttrs(text, textAttrs);\n  }\n  function byTspan(content, g, x, y, width, height, textAttrs, conf2) {\n    const { fontSize, fontFamily, fontWeight } = conf2;\n    const lines = content.split(common.lineBreakRegex);\n    for (let i = 0; i < lines.length; i++) {\n      const dy = i * fontSize - fontSize * (lines.length - 1) / 2;\n      const text = g.append(\"text\").attr(\"x\", x + width / 2).attr(\"y\", y).style(\"text-anchor\", \"middle\").attr(\"dominant-baseline\", \"middle\").style(\"font-size\", fontSize).style(\"font-weight\", fontWeight).style(\"font-family\", fontFamily);\n      text.append(\"tspan\").attr(\"dy\", dy).text(lines[i]).attr(\"alignment-baseline\", \"mathematical\");\n      _setTextAttrs(text, textAttrs);\n    }\n  }\n  function byFo(content, g, x, y, width, height, textAttrs, conf2) {\n    const s = g.append(\"switch\");\n    const f = s.append(\"foreignObject\").attr(\"x\", x).attr(\"y\", y).attr(\"width\", width).attr(\"height\", height);\n    const text = f.append(\"xhtml:div\").style(\"display\", \"table\").style(\"height\", \"100%\").style(\"width\", \"100%\");\n    text.append(\"div\").style(\"display\", \"table-cell\").style(\"text-align\", \"center\").style(\"vertical-align\", \"middle\").text(content);\n    byTspan(content, s, x, y, width, height, textAttrs, conf2);\n    _setTextAttrs(text, textAttrs);\n  }\n  function _setTextAttrs(toText, fromTextAttrsDict) {\n    for (const key in fromTextAttrsDict) {\n      if (fromTextAttrsDict.hasOwnProperty(key)) {\n        toText.attr(key, fromTextAttrsDict[key]);\n      }\n    }\n  }\n  return function(conf2) {\n    return conf2.textPlacement === \"fo\" ? byFo : conf2.textPlacement === \"old\" ? byText : byTspan;\n  };\n}();\nconst svgDraw = {\n  drawRect,\n  drawBoundary: drawBoundary$1,\n  drawC4Shape,\n  drawRels: drawRels$1,\n  drawImage,\n  insertArrowHead,\n  insertArrowEnd,\n  insertArrowFilledHead,\n  insertDynamicNumber,\n  insertArrowCrossHead,\n  insertDatabaseIcon,\n  insertComputerIcon,\n  insertClockIcon\n};\nlet globalBoundaryMaxX = 0, globalBoundaryMaxY = 0;\nlet c4ShapeInRow = 4;\nlet c4BoundaryInRow = 2;\nparser.yy = db;\nlet conf = {};\nclass Bounds {\n  constructor(diagObj) {\n    this.name = \"\";\n    this.data = {};\n    this.data.startx = void 0;\n    this.data.stopx = void 0;\n    this.data.starty = void 0;\n    this.data.stopy = void 0;\n    this.data.widthLimit = void 0;\n    this.nextData = {};\n    this.nextData.startx = void 0;\n    this.nextData.stopx = void 0;\n    this.nextData.starty = void 0;\n    this.nextData.stopy = void 0;\n    this.nextData.cnt = 0;\n    setConf(diagObj.db.getConfig());\n  }\n  setData(startx, stopx, starty, stopy) {\n    this.nextData.startx = this.data.startx = startx;\n    this.nextData.stopx = this.data.stopx = stopx;\n    this.nextData.starty = this.data.starty = starty;\n    this.nextData.stopy = this.data.stopy = stopy;\n  }\n  updateVal(obj, key, val, fun) {\n    if (obj[key] === void 0) {\n      obj[key] = val;\n    } else {\n      obj[key] = fun(val, obj[key]);\n    }\n  }\n  insert(c4Shape) {\n    this.nextData.cnt = this.nextData.cnt + 1;\n    let _startx = this.nextData.startx === this.nextData.stopx ? this.nextData.stopx + c4Shape.margin : this.nextData.stopx + c4Shape.margin * 2;\n    let _stopx = _startx + c4Shape.width;\n    let _starty = this.nextData.starty + c4Shape.margin * 2;\n    let _stopy = _starty + c4Shape.height;\n    if (_startx >= this.data.widthLimit || _stopx >= this.data.widthLimit || this.nextData.cnt > c4ShapeInRow) {\n      _startx = this.nextData.startx + c4Shape.margin + conf.nextLinePaddingX;\n      _starty = this.nextData.stopy + c4Shape.margin * 2;\n      this.nextData.stopx = _stopx = _startx + c4Shape.width;\n      this.nextData.starty = this.nextData.stopy;\n      this.nextData.stopy = _stopy = _starty + c4Shape.height;\n      this.nextData.cnt = 1;\n    }\n    c4Shape.x = _startx;\n    c4Shape.y = _starty;\n    this.updateVal(this.data, \"startx\", _startx, Math.min);\n    this.updateVal(this.data, \"starty\", _starty, Math.min);\n    this.updateVal(this.data, \"stopx\", _stopx, Math.max);\n    this.updateVal(this.data, \"stopy\", _stopy, Math.max);\n    this.updateVal(this.nextData, \"startx\", _startx, Math.min);\n    this.updateVal(this.nextData, \"starty\", _starty, Math.min);\n    this.updateVal(this.nextData, \"stopx\", _stopx, Math.max);\n    this.updateVal(this.nextData, \"stopy\", _stopy, Math.max);\n  }\n  init(diagObj) {\n    this.name = \"\";\n    this.data = {\n      startx: void 0,\n      stopx: void 0,\n      starty: void 0,\n      stopy: void 0,\n      widthLimit: void 0\n    };\n    this.nextData = {\n      startx: void 0,\n      stopx: void 0,\n      starty: void 0,\n      stopy: void 0,\n      cnt: 0\n    };\n    setConf(diagObj.db.getConfig());\n  }\n  bumpLastMargin(margin) {\n    this.data.stopx += margin;\n    this.data.stopy += margin;\n  }\n}\nconst setConf = function(cnf) {\n  assignWithDepth(conf, cnf);\n  if (cnf.fontFamily) {\n    conf.personFontFamily = conf.systemFontFamily = conf.messageFontFamily = cnf.fontFamily;\n  }\n  if (cnf.fontSize) {\n    conf.personFontSize = conf.systemFontSize = conf.messageFontSize = cnf.fontSize;\n  }\n  if (cnf.fontWeight) {\n    conf.personFontWeight = conf.systemFontWeight = conf.messageFontWeight = cnf.fontWeight;\n  }\n};\nconst c4ShapeFont = (cnf, typeC4Shape) => {\n  return {\n    fontFamily: cnf[typeC4Shape + \"FontFamily\"],\n    fontSize: cnf[typeC4Shape + \"FontSize\"],\n    fontWeight: cnf[typeC4Shape + \"FontWeight\"]\n  };\n};\nconst boundaryFont = (cnf) => {\n  return {\n    fontFamily: cnf.boundaryFontFamily,\n    fontSize: cnf.boundaryFontSize,\n    fontWeight: cnf.boundaryFontWeight\n  };\n};\nconst messageFont = (cnf) => {\n  return {\n    fontFamily: cnf.messageFontFamily,\n    fontSize: cnf.messageFontSize,\n    fontWeight: cnf.messageFontWeight\n  };\n};\nfunction calcC4ShapeTextWH(textType, c4Shape, c4ShapeTextWrap, textConf, textLimitWidth) {\n  if (!c4Shape[textType].width) {\n    if (c4ShapeTextWrap) {\n      c4Shape[textType].text = wrapLabel(c4Shape[textType].text, textLimitWidth, textConf);\n      c4Shape[textType].textLines = c4Shape[textType].text.split(common.lineBreakRegex).length;\n      c4Shape[textType].width = textLimitWidth;\n      c4Shape[textType].height = calculateTextHeight(c4Shape[textType].text, textConf);\n    } else {\n      let lines = c4Shape[textType].text.split(common.lineBreakRegex);\n      c4Shape[textType].textLines = lines.length;\n      let lineHeight = 0;\n      c4Shape[textType].height = 0;\n      c4Shape[textType].width = 0;\n      for (const line of lines) {\n        c4Shape[textType].width = Math.max(\n          calculateTextWidth(line, textConf),\n          c4Shape[textType].width\n        );\n        lineHeight = calculateTextHeight(line, textConf);\n        c4Shape[textType].height = c4Shape[textType].height + lineHeight;\n      }\n    }\n  }\n}\nconst drawBoundary = function(diagram2, boundary, bounds) {\n  boundary.x = bounds.data.startx;\n  boundary.y = bounds.data.starty;\n  boundary.width = bounds.data.stopx - bounds.data.startx;\n  boundary.height = bounds.data.stopy - bounds.data.starty;\n  boundary.label.y = conf.c4ShapeMargin - 35;\n  let boundaryTextWrap = boundary.wrap && conf.wrap;\n  let boundaryLabelConf = boundaryFont(conf);\n  boundaryLabelConf.fontSize = boundaryLabelConf.fontSize + 2;\n  boundaryLabelConf.fontWeight = \"bold\";\n  let textLimitWidth = calculateTextWidth(boundary.label.text, boundaryLabelConf);\n  calcC4ShapeTextWH(\"label\", boundary, boundaryTextWrap, boundaryLabelConf, textLimitWidth);\n  svgDraw.drawBoundary(diagram2, boundary, conf);\n};\nconst drawC4ShapeArray = function(currentBounds, diagram2, c4ShapeArray2, c4ShapeKeys) {\n  let Y = 0;\n  for (const c4ShapeKey of c4ShapeKeys) {\n    Y = 0;\n    const c4Shape = c4ShapeArray2[c4ShapeKey];\n    let c4ShapeTypeConf = c4ShapeFont(conf, c4Shape.typeC4Shape.text);\n    c4ShapeTypeConf.fontSize = c4ShapeTypeConf.fontSize - 2;\n    c4Shape.typeC4Shape.width = calculateTextWidth(\n      \"«\" + c4Shape.typeC4Shape.text + \"»\",\n      c4ShapeTypeConf\n    );\n    c4Shape.typeC4Shape.height = c4ShapeTypeConf.fontSize + 2;\n    c4Shape.typeC4Shape.Y = conf.c4ShapePadding;\n    Y = c4Shape.typeC4Shape.Y + c4Shape.typeC4Shape.height - 4;\n    c4Shape.image = { width: 0, height: 0, Y: 0 };\n    switch (c4Shape.typeC4Shape.text) {\n      case \"person\":\n      case \"external_person\":\n        c4Shape.image.width = 48;\n        c4Shape.image.height = 48;\n        c4Shape.image.Y = Y;\n        Y = c4Shape.image.Y + c4Shape.image.height;\n        break;\n    }\n    if (c4Shape.sprite) {\n      c4Shape.image.width = 48;\n      c4Shape.image.height = 48;\n      c4Shape.image.Y = Y;\n      Y = c4Shape.image.Y + c4Shape.image.height;\n    }\n    let c4ShapeTextWrap = c4Shape.wrap && conf.wrap;\n    let textLimitWidth = conf.width - conf.c4ShapePadding * 2;\n    let c4ShapeLabelConf = c4ShapeFont(conf, c4Shape.typeC4Shape.text);\n    c4ShapeLabelConf.fontSize = c4ShapeLabelConf.fontSize + 2;\n    c4ShapeLabelConf.fontWeight = \"bold\";\n    calcC4ShapeTextWH(\"label\", c4Shape, c4ShapeTextWrap, c4ShapeLabelConf, textLimitWidth);\n    c4Shape[\"label\"].Y = Y + 8;\n    Y = c4Shape[\"label\"].Y + c4Shape[\"label\"].height;\n    if (c4Shape.type && c4Shape.type.text !== \"\") {\n      c4Shape.type.text = \"[\" + c4Shape.type.text + \"]\";\n      let c4ShapeTypeConf2 = c4ShapeFont(conf, c4Shape.typeC4Shape.text);\n      calcC4ShapeTextWH(\"type\", c4Shape, c4ShapeTextWrap, c4ShapeTypeConf2, textLimitWidth);\n      c4Shape[\"type\"].Y = Y + 5;\n      Y = c4Shape[\"type\"].Y + c4Shape[\"type\"].height;\n    } else if (c4Shape.techn && c4Shape.techn.text !== \"\") {\n      c4Shape.techn.text = \"[\" + c4Shape.techn.text + \"]\";\n      let c4ShapeTechnConf = c4ShapeFont(conf, c4Shape.techn.text);\n      calcC4ShapeTextWH(\"techn\", c4Shape, c4ShapeTextWrap, c4ShapeTechnConf, textLimitWidth);\n      c4Shape[\"techn\"].Y = Y + 5;\n      Y = c4Shape[\"techn\"].Y + c4Shape[\"techn\"].height;\n    }\n    let rectHeight = Y;\n    let rectWidth = c4Shape.label.width;\n    if (c4Shape.descr && c4Shape.descr.text !== \"\") {\n      let c4ShapeDescrConf = c4ShapeFont(conf, c4Shape.typeC4Shape.text);\n      calcC4ShapeTextWH(\"descr\", c4Shape, c4ShapeTextWrap, c4ShapeDescrConf, textLimitWidth);\n      c4Shape[\"descr\"].Y = Y + 20;\n      Y = c4Shape[\"descr\"].Y + c4Shape[\"descr\"].height;\n      rectWidth = Math.max(c4Shape.label.width, c4Shape.descr.width);\n      rectHeight = Y - c4Shape[\"descr\"].textLines * 5;\n    }\n    rectWidth = rectWidth + conf.c4ShapePadding;\n    c4Shape.width = Math.max(c4Shape.width || conf.width, rectWidth, conf.width);\n    c4Shape.height = Math.max(c4Shape.height || conf.height, rectHeight, conf.height);\n    c4Shape.margin = c4Shape.margin || conf.c4ShapeMargin;\n    currentBounds.insert(c4Shape);\n    svgDraw.drawC4Shape(diagram2, c4Shape, conf);\n  }\n  currentBounds.bumpLastMargin(conf.c4ShapeMargin);\n};\nclass Point {\n  constructor(x, y) {\n    this.x = x;\n    this.y = y;\n  }\n}\nlet getIntersectPoint = function(fromNode, endPoint) {\n  let x1 = fromNode.x;\n  let y1 = fromNode.y;\n  let x2 = endPoint.x;\n  let y2 = endPoint.y;\n  let fromCenterX = x1 + fromNode.width / 2;\n  let fromCenterY = y1 + fromNode.height / 2;\n  let dx = Math.abs(x1 - x2);\n  let dy = Math.abs(y1 - y2);\n  let tanDYX = dy / dx;\n  let fromDYX = fromNode.height / fromNode.width;\n  let returnPoint = null;\n  if (y1 == y2 && x1 < x2) {\n    returnPoint = new Point(x1 + fromNode.width, fromCenterY);\n  } else if (y1 == y2 && x1 > x2) {\n    returnPoint = new Point(x1, fromCenterY);\n  } else if (x1 == x2 && y1 < y2) {\n    returnPoint = new Point(fromCenterX, y1 + fromNode.height);\n  } else if (x1 == x2 && y1 > y2) {\n    returnPoint = new Point(fromCenterX, y1);\n  }\n  if (x1 > x2 && y1 < y2) {\n    if (fromDYX >= tanDYX) {\n      returnPoint = new Point(x1, fromCenterY + tanDYX * fromNode.width / 2);\n    } else {\n      returnPoint = new Point(\n        fromCenterX - dx / dy * fromNode.height / 2,\n        y1 + fromNode.height\n      );\n    }\n  } else if (x1 < x2 && y1 < y2) {\n    if (fromDYX >= tanDYX) {\n      returnPoint = new Point(x1 + fromNode.width, fromCenterY + tanDYX * fromNode.width / 2);\n    } else {\n      returnPoint = new Point(\n        fromCenterX + dx / dy * fromNode.height / 2,\n        y1 + fromNode.height\n      );\n    }\n  } else if (x1 < x2 && y1 > y2) {\n    if (fromDYX >= tanDYX) {\n      returnPoint = new Point(x1 + fromNode.width, fromCenterY - tanDYX * fromNode.width / 2);\n    } else {\n      returnPoint = new Point(fromCenterX + fromNode.height / 2 * dx / dy, y1);\n    }\n  } else if (x1 > x2 && y1 > y2) {\n    if (fromDYX >= tanDYX) {\n      returnPoint = new Point(x1, fromCenterY - fromNode.width / 2 * tanDYX);\n    } else {\n      returnPoint = new Point(fromCenterX - fromNode.height / 2 * dx / dy, y1);\n    }\n  }\n  return returnPoint;\n};\nlet getIntersectPoints = function(fromNode, endNode) {\n  let endIntersectPoint = { x: 0, y: 0 };\n  endIntersectPoint.x = endNode.x + endNode.width / 2;\n  endIntersectPoint.y = endNode.y + endNode.height / 2;\n  let startPoint = getIntersectPoint(fromNode, endIntersectPoint);\n  endIntersectPoint.x = fromNode.x + fromNode.width / 2;\n  endIntersectPoint.y = fromNode.y + fromNode.height / 2;\n  let endPoint = getIntersectPoint(endNode, endIntersectPoint);\n  return { startPoint, endPoint };\n};\nconst drawRels = function(diagram2, rels2, getC4ShapeObj, diagObj) {\n  let i = 0;\n  for (let rel of rels2) {\n    i = i + 1;\n    let relTextWrap = rel.wrap && conf.wrap;\n    let relConf = messageFont(conf);\n    let diagramType = diagObj.db.getC4Type();\n    if (diagramType === \"C4Dynamic\") {\n      rel.label.text = i + \": \" + rel.label.text;\n    }\n    let textLimitWidth = calculateTextWidth(rel.label.text, relConf);\n    calcC4ShapeTextWH(\"label\", rel, relTextWrap, relConf, textLimitWidth);\n    if (rel.techn && rel.techn.text !== \"\") {\n      textLimitWidth = calculateTextWidth(rel.techn.text, relConf);\n      calcC4ShapeTextWH(\"techn\", rel, relTextWrap, relConf, textLimitWidth);\n    }\n    if (rel.descr && rel.descr.text !== \"\") {\n      textLimitWidth = calculateTextWidth(rel.descr.text, relConf);\n      calcC4ShapeTextWH(\"descr\", rel, relTextWrap, relConf, textLimitWidth);\n    }\n    let fromNode = getC4ShapeObj(rel.from);\n    let endNode = getC4ShapeObj(rel.to);\n    let points = getIntersectPoints(fromNode, endNode);\n    rel.startPoint = points.startPoint;\n    rel.endPoint = points.endPoint;\n  }\n  svgDraw.drawRels(diagram2, rels2, conf);\n};\nfunction drawInsideBoundary(diagram2, parentBoundaryAlias, parentBounds, currentBoundaries, diagObj) {\n  let currentBounds = new Bounds(diagObj);\n  currentBounds.data.widthLimit = parentBounds.data.widthLimit / Math.min(c4BoundaryInRow, currentBoundaries.length);\n  for (let [i, currentBoundary] of currentBoundaries.entries()) {\n    let Y = 0;\n    currentBoundary.image = { width: 0, height: 0, Y: 0 };\n    if (currentBoundary.sprite) {\n      currentBoundary.image.width = 48;\n      currentBoundary.image.height = 48;\n      currentBoundary.image.Y = Y;\n      Y = currentBoundary.image.Y + currentBoundary.image.height;\n    }\n    let currentBoundaryTextWrap = currentBoundary.wrap && conf.wrap;\n    let currentBoundaryLabelConf = boundaryFont(conf);\n    currentBoundaryLabelConf.fontSize = currentBoundaryLabelConf.fontSize + 2;\n    currentBoundaryLabelConf.fontWeight = \"bold\";\n    calcC4ShapeTextWH(\n      \"label\",\n      currentBoundary,\n      currentBoundaryTextWrap,\n      currentBoundaryLabelConf,\n      currentBounds.data.widthLimit\n    );\n    currentBoundary[\"label\"].Y = Y + 8;\n    Y = currentBoundary[\"label\"].Y + currentBoundary[\"label\"].height;\n    if (currentBoundary.type && currentBoundary.type.text !== \"\") {\n      currentBoundary.type.text = \"[\" + currentBoundary.type.text + \"]\";\n      let currentBoundaryTypeConf = boundaryFont(conf);\n      calcC4ShapeTextWH(\n        \"type\",\n        currentBoundary,\n        currentBoundaryTextWrap,\n        currentBoundaryTypeConf,\n        currentBounds.data.widthLimit\n      );\n      currentBoundary[\"type\"].Y = Y + 5;\n      Y = currentBoundary[\"type\"].Y + currentBoundary[\"type\"].height;\n    }\n    if (currentBoundary.descr && currentBoundary.descr.text !== \"\") {\n      let currentBoundaryDescrConf = boundaryFont(conf);\n      currentBoundaryDescrConf.fontSize = currentBoundaryDescrConf.fontSize - 2;\n      calcC4ShapeTextWH(\n        \"descr\",\n        currentBoundary,\n        currentBoundaryTextWrap,\n        currentBoundaryDescrConf,\n        currentBounds.data.widthLimit\n      );\n      currentBoundary[\"descr\"].Y = Y + 20;\n      Y = currentBoundary[\"descr\"].Y + currentBoundary[\"descr\"].height;\n    }\n    if (i == 0 || i % c4BoundaryInRow === 0) {\n      let _x = parentBounds.data.startx + conf.diagramMarginX;\n      let _y = parentBounds.data.stopy + conf.diagramMarginY + Y;\n      currentBounds.setData(_x, _x, _y, _y);\n    } else {\n      let _x = currentBounds.data.stopx !== currentBounds.data.startx ? currentBounds.data.stopx + conf.diagramMarginX : currentBounds.data.startx;\n      let _y = currentBounds.data.starty;\n      currentBounds.setData(_x, _x, _y, _y);\n    }\n    currentBounds.name = currentBoundary.alias;\n    let currentPersonOrSystemArray = diagObj.db.getC4ShapeArray(currentBoundary.alias);\n    let currentPersonOrSystemKeys = diagObj.db.getC4ShapeKeys(currentBoundary.alias);\n    if (currentPersonOrSystemKeys.length > 0) {\n      drawC4ShapeArray(\n        currentBounds,\n        diagram2,\n        currentPersonOrSystemArray,\n        currentPersonOrSystemKeys\n      );\n    }\n    parentBoundaryAlias = currentBoundary.alias;\n    let nextCurrentBoundaries = diagObj.db.getBoundarys(parentBoundaryAlias);\n    if (nextCurrentBoundaries.length > 0) {\n      drawInsideBoundary(\n        diagram2,\n        parentBoundaryAlias,\n        currentBounds,\n        nextCurrentBoundaries,\n        diagObj\n      );\n    }\n    if (currentBoundary.alias !== \"global\") {\n      drawBoundary(diagram2, currentBoundary, currentBounds);\n    }\n    parentBounds.data.stopy = Math.max(\n      currentBounds.data.stopy + conf.c4ShapeMargin,\n      parentBounds.data.stopy\n    );\n    parentBounds.data.stopx = Math.max(\n      currentBounds.data.stopx + conf.c4ShapeMargin,\n      parentBounds.data.stopx\n    );\n    globalBoundaryMaxX = Math.max(globalBoundaryMaxX, parentBounds.data.stopx);\n    globalBoundaryMaxY = Math.max(globalBoundaryMaxY, parentBounds.data.stopy);\n  }\n}\nconst draw = function(_text, id, _version, diagObj) {\n  conf = getConfig().c4;\n  const securityLevel = getConfig().securityLevel;\n  let sandboxElement;\n  if (securityLevel === \"sandbox\") {\n    sandboxElement = select(\"#i\" + id);\n  }\n  const root = securityLevel === \"sandbox\" ? select(sandboxElement.nodes()[0].contentDocument.body) : select(\"body\");\n  let db2 = diagObj.db;\n  diagObj.db.setWrap(conf.wrap);\n  c4ShapeInRow = db2.getC4ShapeInRow();\n  c4BoundaryInRow = db2.getC4BoundaryInRow();\n  log.debug(`C:${JSON.stringify(conf, null, 2)}`);\n  const diagram2 = securityLevel === \"sandbox\" ? root.select(`[id=\"${id}\"]`) : select(`[id=\"${id}\"]`);\n  svgDraw.insertComputerIcon(diagram2);\n  svgDraw.insertDatabaseIcon(diagram2);\n  svgDraw.insertClockIcon(diagram2);\n  let screenBounds = new Bounds(diagObj);\n  screenBounds.setData(\n    conf.diagramMarginX,\n    conf.diagramMarginX,\n    conf.diagramMarginY,\n    conf.diagramMarginY\n  );\n  screenBounds.data.widthLimit = screen.availWidth;\n  globalBoundaryMaxX = conf.diagramMarginX;\n  globalBoundaryMaxY = conf.diagramMarginY;\n  const title2 = diagObj.db.getTitle();\n  let currentBoundaries = diagObj.db.getBoundarys(\"\");\n  drawInsideBoundary(diagram2, \"\", screenBounds, currentBoundaries, diagObj);\n  svgDraw.insertArrowHead(diagram2);\n  svgDraw.insertArrowEnd(diagram2);\n  svgDraw.insertArrowCrossHead(diagram2);\n  svgDraw.insertArrowFilledHead(diagram2);\n  drawRels(diagram2, diagObj.db.getRels(), diagObj.db.getC4Shape, diagObj);\n  screenBounds.data.stopx = globalBoundaryMaxX;\n  screenBounds.data.stopy = globalBoundaryMaxY;\n  const box = screenBounds.data;\n  let boxHeight = box.stopy - box.starty;\n  let height = boxHeight + 2 * conf.diagramMarginY;\n  let boxWidth = box.stopx - box.startx;\n  const width = boxWidth + 2 * conf.diagramMarginX;\n  if (title2) {\n    diagram2.append(\"text\").text(title2).attr(\"x\", (box.stopx - box.startx) / 2 - 4 * conf.diagramMarginX).attr(\"y\", box.starty + conf.diagramMarginY);\n  }\n  configureSvgSize(diagram2, height, width, conf.useMaxWidth);\n  const extraVertForTitle = title2 ? 60 : 0;\n  diagram2.attr(\n    \"viewBox\",\n    box.startx - conf.diagramMarginX + \" -\" + (conf.diagramMarginY + extraVertForTitle) + \" \" + width + \" \" + (height + extraVertForTitle)\n  );\n  log.debug(`models:`, box);\n};\nconst renderer = {\n  drawPersonOrSystemArray: drawC4ShapeArray,\n  drawBoundary,\n  setConf,\n  draw\n};\nconst getStyles = (options) => `.person {\n    stroke: ${options.personBorder};\n    fill: ${options.personBkg};\n  }\n`;\nconst styles = getStyles;\nconst diagram = {\n  parser: parser$1,\n  db,\n  renderer,\n  styles,\n  init: ({ c4, wrap }) => {\n    renderer.setConf(c4);\n    db.setWrap(wrap);\n  }\n};\nexport {\n  diagram\n};\n","import { sanitizeUrl } from \"@braintree/sanitize-url\";\nimport { J as lineBreakRegex } from \"./mermaid-6dc72991.js\";\nconst drawRect = (element, rectData) => {\n  const rectElement = element.append(\"rect\");\n  rectElement.attr(\"x\", rectData.x);\n  rectElement.attr(\"y\", rectData.y);\n  rectElement.attr(\"fill\", rectData.fill);\n  rectElement.attr(\"stroke\", rectData.stroke);\n  rectElement.attr(\"width\", rectData.width);\n  rectElement.attr(\"height\", rectData.height);\n  if (rectData.name) {\n    rectElement.attr(\"name\", rectData.name);\n  }\n  rectData.rx !== void 0 && rectElement.attr(\"rx\", rectData.rx);\n  rectData.ry !== void 0 && rectElement.attr(\"ry\", rectData.ry);\n  if (rectData.attrs !== void 0) {\n    for (const attrKey in rectData.attrs) {\n      rectElement.attr(attrKey, rectData.attrs[attrKey]);\n    }\n  }\n  rectData.class !== void 0 && rectElement.attr(\"class\", rectData.class);\n  return rectElement;\n};\nconst drawBackgroundRect = (element, bounds) => {\n  const rectData = {\n    x: bounds.startx,\n    y: bounds.starty,\n    width: bounds.stopx - bounds.startx,\n    height: bounds.stopy - bounds.starty,\n    fill: bounds.fill,\n    stroke: bounds.stroke,\n    class: \"rect\"\n  };\n  const rectElement = drawRect(element, rectData);\n  rectElement.lower();\n};\nconst drawText = (element, textData) => {\n  const nText = textData.text.replace(lineBreakRegex, \" \");\n  const textElem = element.append(\"text\");\n  textElem.attr(\"x\", textData.x);\n  textElem.attr(\"y\", textData.y);\n  textElem.attr(\"class\", \"legend\");\n  textElem.style(\"text-anchor\", textData.anchor);\n  textData.class !== void 0 && textElem.attr(\"class\", textData.class);\n  const tspan = textElem.append(\"tspan\");\n  tspan.attr(\"x\", textData.x + textData.textMargin * 2);\n  tspan.text(nText);\n  return textElem;\n};\nconst drawImage = (elem, x, y, link) => {\n  const imageElement = elem.append(\"image\");\n  imageElement.attr(\"x\", x);\n  imageElement.attr(\"y\", y);\n  const sanitizedLink = sanitizeUrl(link);\n  imageElement.attr(\"xlink:href\", sanitizedLink);\n};\nconst drawEmbeddedImage = (element, x, y, link) => {\n  const imageElement = element.append(\"use\");\n  imageElement.attr(\"x\", x);\n  imageElement.attr(\"y\", y);\n  const sanitizedLink = sanitizeUrl(link);\n  imageElement.attr(\"xlink:href\", `#${sanitizedLink}`);\n};\nconst getNoteRect = () => {\n  const noteRectData = {\n    x: 0,\n    y: 0,\n    width: 100,\n    height: 100,\n    fill: \"#EDF2AE\",\n    stroke: \"#666\",\n    anchor: \"start\",\n    rx: 0,\n    ry: 0\n  };\n  return noteRectData;\n};\nconst getTextObj = () => {\n  const testObject = {\n    x: 0,\n    y: 0,\n    width: 100,\n    height: 100,\n    \"text-anchor\": \"start\",\n    style: \"#666\",\n    textMargin: 0,\n    rx: 0,\n    ry: 0,\n    tspan: true\n  };\n  return testObject;\n};\nexport {\n  drawBackgroundRect as a,\n  drawEmbeddedImage as b,\n  drawImage as c,\n  drawRect as d,\n  getTextObj as e,\n  drawText as f,\n  getNoteRect as g\n};\n"],"names":["$parcel$export","e","n","v","s","Object","defineProperty","get","set","enumerable","configurable","parcelRequire","$parcel$global","globalThis","parcelRegister","register","module","exports","$36a39f8f3ab768eb$export$6118d022d940d562","$36a39f8f3ab768eb$var$c4Type","$4jcZX","$2YFJl","$2CvUP","$2ujND","$36a39f8f3ab768eb$var$parser","o","k","o2","l","length","$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","trace","yy","symbols_","terminals_","productions_","performAction","yytext","yyleng","yylineno","yystate","$$","_$","$0","setDirection","setC4Type","setTitle","substring","$","setAccDescription","trim","splice","addPersonOrSystemBoundary","addContainerBoundary","addDeploymentNode","popBoundaryParseStack","addPersonOrSystem","addContainer","addComponent","addRel","updateElStyle","updateRelStyle","updateLayoutConfig","unshift","kv","table","defaultActions","parseError","str","hash","recoverable","error","Error","parse","input","self","stack","tstack","vstack","lstack","args","slice","call","arguments","lexer2","create","lexer","sharedState","prototype","hasOwnProperty","setInput","parser","yylloc","yyloc","push","ranges","options","getPrototypeOf","symbol","state","action","r","p","len","newState","expected","yyval","lex","token","pop","Array","errStr","showPosition","join","text","match","line","loc","first_line","last_line","first_column","last_column","range","apply","concat","Parser","EOF","_input","_more","_backtrack","done","matched","conditionStack","offset","ch","unput","lines","split","substr","oldLines","more","reject","backtrack_lexer","less","pastInput","past","replace","upcomingInput","next","pre","c2","test_match","indexed_rule","backup","matches","tempMatch","index","rules","_currentRules","i","flex","begin","condition","popState","conditions","topState","Math","abs","pushState","stateStackSize","yy_","$avoiding_name_collisions","YY_START","c","$36a39f8f3ab768eb$var$c4ShapeArray","$36a39f8f3ab768eb$var$boundaryParseStack","$36a39f8f3ab768eb$var$currentBoundaryParse","$36a39f8f3ab768eb$var$parentBoundaryParse","$36a39f8f3ab768eb$var$boundaries","alias","label","type","tags","link","parentBoundary","$36a39f8f3ab768eb$var$rels","$36a39f8f3ab768eb$var$title","$36a39f8f3ab768eb$var$wrapEnabled","$36a39f8f3ab768eb$var$c4ShapeInRow$1","$36a39f8f3ab768eb$var$c4BoundaryInRow$1","$36a39f8f3ab768eb$var$getC4ShapeArray","filter","personOrSystem","$36a39f8f3ab768eb$var$getBoundaries","boundary","$36a39f8f3ab768eb$var$autoWrap","$36a39f8f3ab768eb$var$db","typeC4Shape","descr","sprite","old","find","personOrSystem2","key","value","entries","wrap","boundary2","techn","container","container2","component","component2","nodeType","from","to","rel","rel2","elementName","bgColor","fontColor","borderColor","shadowing","shape","legendText","legendSprite","element","textColor","lineColor","offsetX","offsetY","parseInt","c4ShapeInRowParam","c4BoundaryInRowParam","c4ShapeInRowValue","c4BoundaryInRowValue","values","autoWrap","setWrap","wrapSetting","getC4ShapeArray","getC4Shape","getC4ShapeKeys","keys","getBoundaries","getBoundarys","getCurrentBoundaryParse","getParentBoundaryParse","getRels","getTitle","getC4Type","getC4ShapeInRow","getC4BoundaryInRow","setAccTitle","getAccTitle","g","getAccDescription","a","b","getConfig","c4","clear","LINETYPE","SOLID","DOTTED","NOTE","SOLID_CROSS","DOTTED_CROSS","SOLID_OPEN","DOTTED_OPEN","LOOP_START","LOOP_END","ALT_START","ALT_ELSE","ALT_END","OPT_START","OPT_END","ACTIVE_START","ACTIVE_END","PAR_START","PAR_AND","PAR_END","RECT_START","RECT_END","SOLID_POINT","DOTTED_POINT","ARROWTYPE","FILLED","OPEN","PLACEMENT","LEFTOF","RIGHTOF","OVER","txt","d","c4TypeParam","$36a39f8f3ab768eb$var$drawRect","elem","rectData","$36a39f8f3ab768eb$var$drawImage","width","height","x","y","imageElem","append","attr","sanitizedLink","startsWith","sanitizeUrl","$36a39f8f3ab768eb$var$getC4ShapeFont","cnf","fontFamily","fontSize","fontWeight","$36a39f8f3ab768eb$var$_drawTextCandidateFunc","byText","content","textAttrs","_setTextAttrs","style","byTspan","conf2","lineBreakRegex","dy","byFo","f","toText","fromTextAttrsDict","textPlacement","$36a39f8f3ab768eb$var$svgDraw","drawBoundary","boundaryElem","fillColor","strokeColor","attrsValue","fill","stroke","rx","ry","attrs","boundaryConf","boundaryFont","Y","drawC4Shape","c4Shape","_a","personImg","c4ShapeElem","rect","replaceAll","c4ShapeFontConf","image","textFontConf","personFont","drawRels","rels2","relsElem","startPoint","endPoint","messageConf","messageFont","min","messageFontSize","max","insertArrowHead","insertArrowEnd","insertArrowFilledHead","insertArrowCrossHead","marker","defs","insertDatabaseIcon","insertComputerIcon","insertClockIcon","$36a39f8f3ab768eb$var$globalBoundaryMaxX","$36a39f8f3ab768eb$var$globalBoundaryMaxY","$36a39f8f3ab768eb$var$c4ShapeInRow","$36a39f8f3ab768eb$var$c4BoundaryInRow","$36a39f8f3ab768eb$var$conf","$36a39f8f3ab768eb$var$Bounds","constructor","diagObj","name","data","startx","stopx","starty","stopy","widthLimit","nextData","cnt","$36a39f8f3ab768eb$var$setConf","db","setData","updateVal","obj","val","fun","insert","_startx","margin","_stopx","_starty","_stopy","nextLinePaddingX","init","bumpLastMargin","personFontFamily","systemFontFamily","messageFontFamily","personFontSize","systemFontSize","personFontWeight","systemFontWeight","messageFontWeight","$36a39f8f3ab768eb$var$c4ShapeFont","$36a39f8f3ab768eb$var$boundaryFont","boundaryFontFamily","boundaryFontSize","boundaryFontWeight","$36a39f8f3ab768eb$var$messageFont","$36a39f8f3ab768eb$var$calcC4ShapeTextWH","textType","c4ShapeTextWrap","textConf","textLimitWidth","w","textLines","j","lineHeight","h","$36a39f8f3ab768eb$var$drawBoundary","diagram2","bounds","c4ShapeMargin","boundaryTextWrap","boundaryLabelConf","$36a39f8f3ab768eb$var$drawC4ShapeArray","currentBounds","c4ShapeArray2","c4ShapeKeys","c4ShapeKey","c4ShapeTypeConf","c4ShapePadding","c4ShapeLabelConf","c4ShapeTypeConf2","c4ShapeTechnConf","rectHeight","rectWidth","c4ShapeDescrConf","$36a39f8f3ab768eb$var$Point","$36a39f8f3ab768eb$var$getIntersectPoint","fromNode","x1","y1","x2","y2","fromCenterX","fromCenterY","dx","tanDYX","fromDYX","returnPoint","$36a39f8f3ab768eb$var$getIntersectPoints","endNode","endIntersectPoint","$36a39f8f3ab768eb$var$drawRels","getC4ShapeObj","relTextWrap","relConf","points","$36a39f8f3ab768eb$var$renderer","drawPersonOrSystemArray","setConf","draw","_text","id","_version","sandboxElement","securityLevel","select","root","nodes","contentDocument","body","db2","debug","JSON","stringify","screenBounds","diagramMarginX","diagramMarginY","screen","availWidth","title2","$36a39f8f3ab768eb$var$drawInsideBoundary","parentBoundaryAlias","parentBounds","currentBoundaries","currentBoundary","currentBoundaryTextWrap","currentBoundaryLabelConf","currentBoundaryDescrConf","_x","_y","currentPersonOrSystemArray","currentPersonOrSystemKeys","nextCurrentBoundaries","box","boxHeight","boxWidth","useMaxWidth","extraVertForTitle","renderer","styles","personBorder","personBkg","$1e87e3270b855a4b$export$4368d992c4eafac0","$1e87e3270b855a4b$export$407448d2b89b1813","$1e87e3270b855a4b$export$2d1720544b23b823","$1e87e3270b855a4b$export$db3b6bfb95261072","$1e87e3270b855a4b$export$8b22cf2602fb60ce","$1e87e3270b855a4b$export$39b482c5e57630a8","$1e87e3270b855a4b$export$f1e1789686576879","rectElement","attrKey","class","lower","textData","nText","J","textElem","anchor","tspan","textMargin","imageElement"],"version":3,"file":"c4Diagram-ae766693.31110a2f.js.map"}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy